diff mbox series

[FFmpeg-devel,2/5] mlpenc: fix huff offset calculation

Message ID 20200124103334.110855-3-me@jailuthra.in
State Accepted
Headers show
Series mlpenc: fix lossless check failures for 16-bit encoding
Related show

Checks

Context Check Description
andriy/ffmpeg-patchwork pending
andriy/ffmpeg-patchwork success Applied patch
andriy/ffmpeg-patchwork success Configure finished
andriy/ffmpeg-patchwork success Make finished
andriy/ffmpeg-patchwork success Make fate finished

Commit Message

Jai Luthra Jan. 24, 2020, 10:33 a.m. UTC
huff offset wasn't always within the bounds before, which lead to
corrupt encoding that didn't always trigger lossless check failures

Signed-off-by: Jai Luthra <me@jailuthra.in>
---
 libavcodec/mlpenc.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)
diff mbox series

Patch

diff --git a/libavcodec/mlpenc.c b/libavcodec/mlpenc.c
index f4948451f1..1cee38c82f 100644
--- a/libavcodec/mlpenc.c
+++ b/libavcodec/mlpenc.c
@@ -1699,7 +1699,7 @@  static inline void codebook_bits(MLPEncodeContext *ctx,
     offset_min = FFMAX(min, HUFF_OFFSET_MIN);
     offset_max = FFMIN(max, HUFF_OFFSET_MAX);
 
-    for (;;) {
+    while (offset <= offset_max && offset >= offset_min) {
         BestOffset temp_bo;
 
         codebook_bits_offset(ctx, channel, codebook,
@@ -1718,12 +1718,8 @@  static inline void codebook_bits(MLPEncodeContext *ctx,
 
         if (direction) {
             offset = temp_bo.max + 1;
-            if (offset > offset_max)
-                break;
         } else {
             offset = temp_bo.min - 1;
-            if (offset < offset_min)
-                break;
         }
     }
 }