Mercurial > libavcodec.hg
comparison aac_parser.c @ 8360:850b735daef8 libavcodec
AAC: fix strict aliasing violation in parser
author | mru |
---|---|
date | Wed, 17 Dec 2008 02:30:22 +0000 |
parents | e381bf921a88 |
children | 2cbfa4cd4670 |
comparison
equal
deleted
inserted
replaced
8359:9281a8a9387a | 8360:850b735daef8 |
---|---|
30 static int aac_sync(uint64_t state, AACAC3ParseContext *hdr_info, | 30 static int aac_sync(uint64_t state, AACAC3ParseContext *hdr_info, |
31 int *need_next_header, int *new_frame_start) | 31 int *need_next_header, int *new_frame_start) |
32 { | 32 { |
33 GetBitContext bits; | 33 GetBitContext bits; |
34 int size, rdb, ch, sr; | 34 int size, rdb, ch, sr; |
35 uint8_t tmp[8]; | 35 union { |
36 uint64_t u64; | |
37 uint8_t u8[8]; | |
38 } tmp; | |
36 | 39 |
37 AV_WB64(tmp, state); | 40 tmp.u64 = be2me_64(state); |
38 init_get_bits(&bits, tmp+8-AAC_HEADER_SIZE, AAC_HEADER_SIZE * 8); | 41 init_get_bits(&bits, tmp.u8+8-AAC_HEADER_SIZE, AAC_HEADER_SIZE * 8); |
39 | 42 |
40 if(get_bits(&bits, 12) != 0xfff) | 43 if(get_bits(&bits, 12) != 0xfff) |
41 return 0; | 44 return 0; |
42 | 45 |
43 skip_bits1(&bits); /* id */ | 46 skip_bits1(&bits); /* id */ |