Originally committed as revision 12888 to svn://svn.ffmpeg.org/ffmpeg/trunktags/v0.5
| @@ -29,7 +29,6 @@ int ff_aac_ac3_parse(AVCodecParserContext *s1, | |||||
| const uint8_t *buf, int buf_size) | const uint8_t *buf, int buf_size) | ||||
| { | { | ||||
| AACAC3ParseContext *s = s1->priv_data; | AACAC3ParseContext *s = s1->priv_data; | ||||
| AACAC3FrameFlag frame_flag; | |||||
| const uint8_t *buf_ptr; | const uint8_t *buf_ptr; | ||||
| int len; | int len; | ||||
| @@ -51,7 +50,7 @@ int ff_aac_ac3_parse(AVCodecParserContext *s1, | |||||
| if (s->frame_size == 0) { | if (s->frame_size == 0) { | ||||
| if ((s->inbuf_ptr - s->inbuf) == s->header_size) { | if ((s->inbuf_ptr - s->inbuf) == s->header_size) { | ||||
| len = s->sync(s, &frame_flag); | |||||
| len = s->sync(s); | |||||
| if (len == 0) { | if (len == 0) { | ||||
| /* no sync found : move by one byte (inefficient, but simple!) */ | /* no sync found : move by one byte (inefficient, but simple!) */ | ||||
| memmove(s->inbuf, s->inbuf + 1, s->header_size - 1); | memmove(s->inbuf, s->inbuf + 1, s->header_size - 1); | ||||
| @@ -26,17 +26,11 @@ | |||||
| #include <stdint.h> | #include <stdint.h> | ||||
| #include "avcodec.h" | #include "avcodec.h" | ||||
| typedef enum{ | |||||
| FRAME_COMPLETE, ///< Complete frame, ends previous frame | |||||
| FRAME_START, ///< Frame start, ends previous frame | |||||
| FRAME_CONTINUATION ///< Part of the previous frame | |||||
| }AACAC3FrameFlag; | |||||
| typedef struct AACAC3ParseContext { | typedef struct AACAC3ParseContext { | ||||
| uint8_t *inbuf_ptr; | uint8_t *inbuf_ptr; | ||||
| int frame_size; | int frame_size; | ||||
| int header_size; | int header_size; | ||||
| int (*sync)(struct AACAC3ParseContext *hdr_info, AACAC3FrameFlag *flag); | |||||
| int (*sync)(struct AACAC3ParseContext *hdr_info); | |||||
| uint8_t inbuf[8192]; /* input buffer */ | uint8_t inbuf[8192]; /* input buffer */ | ||||
| int channels; | int channels; | ||||
| @@ -27,7 +27,7 @@ | |||||
| #define AAC_HEADER_SIZE 7 | #define AAC_HEADER_SIZE 7 | ||||
| static int aac_sync(AACAC3ParseContext *hdr_info, AACAC3FrameFlag *flag) | |||||
| static int aac_sync(AACAC3ParseContext *hdr_info) | |||||
| { | { | ||||
| GetBitContext bits; | GetBitContext bits; | ||||
| int size, rdb, ch, sr; | int size, rdb, ch, sr; | ||||
| @@ -65,7 +65,6 @@ static int aac_sync(AACAC3ParseContext *hdr_info, AACAC3FrameFlag *flag) | |||||
| hdr_info->sample_rate = ff_mpeg4audio_sample_rates[sr]; | hdr_info->sample_rate = ff_mpeg4audio_sample_rates[sr]; | ||||
| hdr_info->samples = (rdb + 1) * 1024; | hdr_info->samples = (rdb + 1) * 1024; | ||||
| hdr_info->bit_rate = size * 8 * hdr_info->sample_rate / hdr_info->samples; | hdr_info->bit_rate = size * 8 * hdr_info->sample_rate / hdr_info->samples; | ||||
| *flag = FRAME_COMPLETE; | |||||
| return size; | return size; | ||||
| } | } | ||||
| @@ -123,7 +123,7 @@ int ff_ac3_parse_header(const uint8_t buf[7], AC3HeaderInfo *hdr) | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| static int ac3_sync(AACAC3ParseContext *hdr_info, AACAC3FrameFlag *flag) | |||||
| static int ac3_sync(AACAC3ParseContext *hdr_info) | |||||
| { | { | ||||
| int err; | int err; | ||||
| AC3HeaderInfo hdr; | AC3HeaderInfo hdr; | ||||
| @@ -138,17 +138,6 @@ static int ac3_sync(AACAC3ParseContext *hdr_info, AACAC3FrameFlag *flag) | |||||
| hdr_info->channels = hdr.channels; | hdr_info->channels = hdr.channels; | ||||
| hdr_info->samples = AC3_FRAME_SIZE; | hdr_info->samples = AC3_FRAME_SIZE; | ||||
| switch(hdr.frame_type){ | |||||
| case EAC3_FRAME_TYPE_INDEPENDENT: | |||||
| *flag = FRAME_START; | |||||
| break; | |||||
| case EAC3_FRAME_TYPE_DEPENDENT: | |||||
| *flag = FRAME_CONTINUATION; | |||||
| break; | |||||
| case EAC3_FRAME_TYPE_AC3_CONVERT: | |||||
| *flag = FRAME_COMPLETE; | |||||
| break; | |||||
| } | |||||
| return hdr.frame_size; | return hdr.frame_size; | ||||
| } | } | ||||