diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2016-04-15 14:50:11 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2016-04-15 15:03:27 +0200 |
commit | a7fa1e38ca76a24ad8e8edc32ccfd2f15c1cf03b (patch) | |
tree | 12bcc60d1a0aa73f6ba6d902323f4e13beb69370 /libavcodec/utils.c | |
parent | 0cfe16437fce4c2090d39552cf63d559c139f06d (diff) | |
download | ffmpeg-a7fa1e38ca76a24ad8e8edc32ccfd2f15c1cf03b.tar.gz |
avcodec/utils: Fix duration of ATRAC3 packets
Fixes ticket1680
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/utils.c')
-rw-r--r-- | libavcodec/utils.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/libavcodec/utils.c b/libavcodec/utils.c index e0edce3d70..8afcb0360f 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -3157,6 +3157,7 @@ static int get_audio_frame_duration(enum AVCodecID id, int sr, int ch, int ba, uint8_t * extradata, int frame_size, int frame_bytes) { int bps = av_get_exact_bits_per_sample(id); + int framecount = ba>0 && frame_bytes / ba>0 ? frame_bytes / ba : 1; /* codecs with an exact constant bits per sample */ if (bps > 0 && ch > 0 && frame_bytes > 0 && ch < 32768 && bps < 32768) @@ -3177,7 +3178,7 @@ static int get_audio_frame_duration(enum AVCodecID id, int sr, int ch, int ba, case AV_CODEC_ID_GSM_MS: return 320; case AV_CODEC_ID_MP1: return 384; case AV_CODEC_ID_ATRAC1: return 512; - case AV_CODEC_ID_ATRAC3: return 1024; + case AV_CODEC_ID_ATRAC3: return 1024 * framecount; case AV_CODEC_ID_ATRAC3P: return 2048; case AV_CODEC_ID_MP2: case AV_CODEC_ID_MUSEPACK7: return 1152; |