Commit 85af60df authored by Aleksandr Slobodeniuk's avatar Aleksandr Slobodeniuk Committed by Michael Niedermayer

avcodec: fix wrong duration of packets (dvd, bluray)

Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
parent b197d83c
......@@ -1808,13 +1808,13 @@ static int get_audio_frame_duration(enum AVCodecID id, int sr, int ch, int ba,
/* calc from frame_bytes, channels, and bits_per_coded_sample */
switch (id) {
case AV_CODEC_ID_PCM_DVD:
if(bps<4)
if(bps<4 || frame_bytes<3)
return 0;
return 2 * (frame_bytes / ((bps * 2 / 8) * ch));
return 2 * ((frame_bytes - 3) / ((bps * 2 / 8) * ch));
case AV_CODEC_ID_PCM_BLURAY:
if(bps<4)
if(bps<4 || frame_bytes<4)
return 0;
return frame_bytes / ((FFALIGN(ch, 2) * bps) / 8);
return (frame_bytes - 4) / ((FFALIGN(ch, 2) * bps) / 8);
case AV_CODEC_ID_S302M:
return 2 * (frame_bytes / ((bps + 4) / 4)) / ch;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment