summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorJoakim Plate <elupus@ecce.se>2009-02-19 00:28:19 +0000
committerJustin Ruggles <justin.ruggles@gmail.com>2009-02-19 00:28:19 +0000
commit4cff8dc88fb9932ad797e03e6df9aef91272b46e (patch)
treed5e05430d4218e7669ab007ac4ec27786d9f87cd /libavcodec
parent3899eb2f65ddcda27e352edb760e181cb11cbc76 (diff)
Allow AC-3 parser to modify codec_id.
Patch by Joakim Plate (elupus A ecce D se). Originally committed as revision 17447 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/aac_ac3_parser.c3
-rw-r--r--libavcodec/aac_ac3_parser.h1
-rw-r--r--libavcodec/ac3_parser.c4
3 files changed, 8 insertions, 0 deletions
diff --git a/libavcodec/aac_ac3_parser.c b/libavcodec/aac_ac3_parser.c
index fedabdf815..ab3269f2db 100644
--- a/libavcodec/aac_ac3_parser.c
+++ b/libavcodec/aac_ac3_parser.c
@@ -72,6 +72,9 @@ get_next:
/* update codec info */
avctx->sample_rate = s->sample_rate;
+ if(s->codec_id)
+ avctx->codec_id = s->codec_id;
+
/* allow downmixing to stereo (or mono for AC-3) */
if(avctx->request_channels > 0 &&
avctx->request_channels < s->channels &&
diff --git a/libavcodec/aac_ac3_parser.h b/libavcodec/aac_ac3_parser.h
index c4b81a86c6..04fd8f1974 100644
--- a/libavcodec/aac_ac3_parser.h
+++ b/libavcodec/aac_ac3_parser.h
@@ -53,6 +53,7 @@ typedef struct AACAC3ParseContext {
uint64_t state;
int need_next_header;
+ enum CodecID codec_id;
} AACAC3ParseContext;
int ff_aac_ac3_parse(AVCodecParserContext *s1,
diff --git a/libavcodec/ac3_parser.c b/libavcodec/ac3_parser.c
index 63c0a48c3a..e78deb20eb 100644
--- a/libavcodec/ac3_parser.c
+++ b/libavcodec/ac3_parser.c
@@ -175,6 +175,10 @@ static int ac3_sync(uint64_t state, AACAC3ParseContext *hdr_info,
hdr_info->bit_rate = hdr.bit_rate;
hdr_info->channels = hdr.channels;
hdr_info->samples = AC3_FRAME_SIZE;
+ if(hdr.bitstream_id>10)
+ hdr_info->codec_id = CODEC_ID_EAC3;
+ else
+ hdr_info->codec_id = CODEC_ID_AC3;
*need_next_header = (hdr.frame_type != EAC3_FRAME_TYPE_AC3_CONVERT);
*new_frame_start = (hdr.frame_type != EAC3_FRAME_TYPE_DEPENDENT);