summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRodger Combs <rodger.combs@gmail.com>2015-11-24 03:20:09 -0600
committerRodger Combs <rodger.combs@gmail.com>2016-02-27 16:31:46 -0600
commit9f5baf90856f8afa0d94c2bf1dc31f485ef72a13 (patch)
treeee080ae046a32410075a73d4291a77ff04942ffc
parenta21a3c25dc7930e8317ddec4d147f1f8cebc2e4e (diff)
lavc/aac_ac3_parser: avoid zeroing codec parameters if we haven't read a frame
This caused issues when seeking in some unusual MPEGTS files
-rw-r--r--libavcodec/aac_ac3_parser.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libavcodec/aac_ac3_parser.c b/libavcodec/aac_ac3_parser.c
index 2f7d56807c..6a76eb8ec2 100644
--- a/libavcodec/aac_ac3_parser.c
+++ b/libavcodec/aac_ac3_parser.c
@@ -34,6 +34,7 @@ int ff_aac_ac3_parse(AVCodecParserContext *s1,
ParseContext *pc = &s->pc;
int len, i;
int new_frame_start;
+ int got_frame = 0;
get_next:
i=END_NOT_FOUND;
@@ -51,6 +52,7 @@ get_next:
if(len<=0){
i=END_NOT_FOUND;
}else{
+ got_frame = 1;
s->state=0;
i-= s->header_size -1;
s->remaining_size = len;
@@ -76,6 +78,7 @@ get_next:
if(s->codec_id)
avctx->codec_id = s->codec_id;
+ if (got_frame) {
/* Due to backwards compatible HE-AAC the sample rate, channel count,
and total number of samples found in an AAC ADTS header are not
reliable. Bit rate is still accurate because the total frame duration in
@@ -101,6 +104,7 @@ get_next:
}
avctx->bit_rate = s->bit_rate;
+ }
return i;
}