Mercurial > libavcodec.hg
comparison ac3_parser.c @ 8361:c34d5e164b22 libavcodec
AC3: fix strict aliasing violation in parser
author | mru |
---|---|
date | Wed, 17 Dec 2008 02:30:26 +0000 |
parents | e5f7a43f63ae |
children | a5402e89a80c |
comparison
equal
deleted
inserted
replaced
8360:850b735daef8 | 8361:c34d5e164b22 |
---|---|
156 | 156 |
157 static int ac3_sync(uint64_t state, AACAC3ParseContext *hdr_info, | 157 static int ac3_sync(uint64_t state, AACAC3ParseContext *hdr_info, |
158 int *need_next_header, int *new_frame_start) | 158 int *need_next_header, int *new_frame_start) |
159 { | 159 { |
160 int err; | 160 int err; |
161 uint64_t tmp = be2me_64(state); | 161 union { |
162 uint64_t u64; | |
163 uint8_t u8[8]; | |
164 } tmp = { be2me_64(state) }; | |
162 AC3HeaderInfo hdr; | 165 AC3HeaderInfo hdr; |
163 GetBitContext gbc; | 166 GetBitContext gbc; |
164 | 167 |
165 init_get_bits(&gbc, ((uint8_t *)&tmp)+8-AC3_HEADER_SIZE, 54); | 168 init_get_bits(&gbc, tmp.u8+8-AC3_HEADER_SIZE, 54); |
166 err = ff_ac3_parse_header(&gbc, &hdr); | 169 err = ff_ac3_parse_header(&gbc, &hdr); |
167 | 170 |
168 if(err < 0) | 171 if(err < 0) |
169 return 0; | 172 return 0; |
170 | 173 |