diff mbox series

[FFmpeg-devel,2/3] avcodec/ffv1: Store and reuse sx/sy

Message ID 20231007001444.31861-2-michael@niedermayer.cc
State New
Headers show
Series [FFmpeg-devel,1/3] avcodec/ffv1enc: Slice combination is unsupported | expand

Commit Message

Michael Niedermayer Oct. 7, 2023, 12:14 a.m. UTC
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/ffv1.c    | 2 ++
 libavcodec/ffv1.h    | 1 +
 libavcodec/ffv1enc.c | 4 ++--
 3 files changed, 5 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/libavcodec/ffv1.c b/libavcodec/ffv1.c
index b6204740edb..f44fead350b 100644
--- a/libavcodec/ffv1.c
+++ b/libavcodec/ffv1.c
@@ -129,6 +129,8 @@  av_cold int ff_ffv1_init_slice_contexts(FFV1Context *f)
         fs->slice_height = sye - sys;
         fs->slice_x      = sxs;
         fs->slice_y      = sys;
+        fs->sx           = sx;
+        fs->sy           = sy;
 
         fs->sample_buffer = av_malloc_array((fs->width + 6), 3 * MAX_PLANES *
                                       sizeof(*fs->sample_buffer));
diff --git a/libavcodec/ffv1.h b/libavcodec/ffv1.h
index 04869da5c9a..14e40936065 100644
--- a/libavcodec/ffv1.h
+++ b/libavcodec/ffv1.h
@@ -129,6 +129,7 @@  typedef struct FFV1Context {
     int slice_height;
     int slice_x;
     int slice_y;
+    int sx, sy;
     int slice_reset_contexts;
     int slice_coding_mode;
     int slice_rct_by_coef;
diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c
index 4d0ddc167ae..11be7fe32ea 100644
--- a/libavcodec/ffv1enc.c
+++ b/libavcodec/ffv1enc.c
@@ -912,8 +912,8 @@  static void encode_slice_header(FFV1Context *f, FFV1Context *fs)
     int j;
     memset(state, 128, sizeof(state));
 
-    put_symbol(c, state, (fs->slice_x     +1)*f->num_h_slices / f->width   , 0);
-    put_symbol(c, state, (fs->slice_y     +1)*f->num_v_slices / f->height  , 0);
+    put_symbol(c, state, fs->sx, 0);
+    put_symbol(c, state, fs->sy, 0);
     put_symbol(c, state, 0, 0);
     put_symbol(c, state, 0, 0);
     for (j=0; j<f->plane_count; j++) {