ffv1: split init_slice_state() out so individual slices can be inited
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 20 Apr 2012 12:50:07 +0000 (14:50 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 20 Apr 2012 13:37:23 +0000 (15:37 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/ffv1.c

index 860c007..2bad0f2 100644 (file)
@@ -696,11 +696,9 @@ static av_cold int common_init(AVCodecContext *avctx){
     return 0;
 }
 
-static int init_slice_state(FFV1Context *f){
-    int i, j;
+static int init_slice_state(FFV1Context *f, FFV1Context *fs){
+    int j;
 
-    for(i=0; i<f->slice_count; i++){
-        FFV1Context *fs= f->slice_context[i];
         fs->plane_count= f->plane_count;
         fs->transparency= f->transparency;
         for(j=0; j<f->plane_count; j++){
@@ -724,11 +722,20 @@ static int init_slice_state(FFV1Context *f){
                 fs->c.zero_state[256-j]= 256-fs->c.one_state [j];
             }
         }
-    }
 
     return 0;
 }
 
+static int init_slices_state(FFV1Context *f){
+    int i;
+    for(i=0; i<f->slice_count; i++){
+        FFV1Context *fs= f->slice_context[i];
+        if(init_slice_state(f, fs) < 0)
+            return -1;
+    }
+    return 0;
+}
+
 static av_cold int init_slice_contexts(FFV1Context *f){
     int i;
 
@@ -1089,7 +1096,7 @@ static av_cold int encode_init(AVCodecContext *avctx)
 
     if(init_slice_contexts(s) < 0)
         return -1;
-    if(init_slice_state(s) < 0)
+    if(init_slices_state(s) < 0)
         return -1;
 
 #define STATS_OUT_SIZE 1024*1024*6
@@ -1824,7 +1831,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
         p->key_frame= 1;
         if(read_header(f) < 0)
             return -1;
-        if(init_slice_state(f) < 0)
+        if(init_slices_state(f) < 0)
             return -1;
 
         clear_state(f);