summaryrefslogtreecommitdiff
path: root/libavcodec/aacdec.c
diff options
context:
space:
mode:
authorGian-Carlo Pascutto <gcp@sjeng.org>2013-11-03 12:42:47 +0200
committerAnton Khirnov <anton@khirnov.net>2013-11-04 08:51:26 +0100
commit454959a5aa73b585e2937b948178310c74bfc297 (patch)
tree153e31ea0c5680bc38f22e745ffab2f304e087fe /libavcodec/aacdec.c
parentda6506c607eda585ba4b15430cf3c9a2ce09c3a9 (diff)
aacdec: Set the profile during decoding
Previously the profile would not be set if the bitstream needs to be decoded to know the profile. Signed-off-by: Anton Khirnov <anton@khirnov.net>
Diffstat (limited to 'libavcodec/aacdec.c')
-rw-r--r--libavcodec/aacdec.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c
index ae22e67595..6a05938281 100644
--- a/libavcodec/aacdec.c
+++ b/libavcodec/aacdec.c
@@ -2185,10 +2185,12 @@ static int decode_extension_payload(AACContext *ac, GetBitContext *gb, int cnt,
} else if (ac->oc[1].m4ac.ps == -1 && ac->oc[1].status < OC_LOCKED && ac->avctx->channels == 1) {
ac->oc[1].m4ac.sbr = 1;
ac->oc[1].m4ac.ps = 1;
+ ac->avctx->profile = FF_PROFILE_AAC_HE_V2;
output_configure(ac, ac->oc[1].layout_map, ac->oc[1].layout_map_tags,
ac->oc[1].status, 1);
} else {
ac->oc[1].m4ac.sbr = 1;
+ ac->avctx->profile = FF_PROFILE_AAC_HE;
}
res = ff_decode_sbr_extension(ac, &che->sbr, gb, crc_flag, cnt, elem_type);
break;
@@ -2704,6 +2706,10 @@ static int aac_decode_er_frame(AVCodecContext *avctx, void *data,
if ((err = frame_configure_elements(avctx)) < 0)
return err;
+ // The FF_PROFILE_AAC_* defines are all object_type - 1
+ // This may lead to an undefined profile being signaled
+ ac->avctx->profile = ac->oc[1].m4ac.object_type - 1;
+
ac->tags_mapped = 0;
if (chan_config < 0 || chan_config >= 8) {
@@ -2772,6 +2778,10 @@ static int aac_decode_frame_int(AVCodecContext *avctx, void *data,
if ((err = frame_configure_elements(avctx)) < 0)
goto fail;
+ // The FF_PROFILE_AAC_* defines are all object_type - 1
+ // This may lead to an undefined profile being signaled
+ ac->avctx->profile = ac->oc[1].m4ac.object_type - 1;
+
ac->tags_mapped = 0;
// parse
while ((elem_type = get_bits(gb, 3)) != TYPE_END) {