ffmpeg | branch: master | Aleksandr Slobodeniuk <alen...@yandex.ru> | Fri Nov 
10 13:51:07 2017 +0300| [85af60df89ed92c60fb1641cd01c6095eba6576e] | committer: 
Michael Niedermayer

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

Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=85af60df89ed92c60fb1641cd01c6095eba6576e
---

 libavcodec/utils.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 965b6c6276..b3a578110b 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -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;
                 }

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

Reply via email to