]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/ffv1.c
avformat: Switch AVChapter.id to 64bits
[ffmpeg] / libavcodec / ffv1.c
index a14dd2aab24594eee0ff7a33e5a3a40dbae798c1..1c580c3b49f16a409754b37a8c2b05010d8f89a7 100644 (file)
@@ -31,7 +31,6 @@
 #include "libavutil/opt.h"
 #include "libavutil/imgutils.h"
 #include "libavutil/pixdesc.h"
-#include "libavutil/timer.h"
 
 #include "avcodec.h"
 #include "internal.h"
@@ -116,12 +115,11 @@ av_cold int ff_ffv1_init_slices_state(FFV1Context *f)
 
 av_cold int ff_ffv1_init_slice_contexts(FFV1Context *f)
 {
-    int i;
+    int i, max_slice_count = f->num_h_slices * f->num_v_slices;
 
-    f->max_slice_count = f->num_h_slices * f->num_v_slices;
-    av_assert0(f->max_slice_count > 0);
+    av_assert0(max_slice_count > 0);
 
-    for (i = 0; i < f->max_slice_count; i++) {
+    for (i = 0; i < max_slice_count;) {
         int sx          = i % f->num_h_slices;
         int sy          = i / f->num_h_slices;
         int sxs         = f->avctx->width  *  sx      / f->num_h_slices;
@@ -133,7 +131,7 @@ av_cold int ff_ffv1_init_slice_contexts(FFV1Context *f)
         if (!fs)
             goto memfail;
 
-        f->slice_context[i] = fs;
+        f->slice_context[i++] = fs;
         memcpy(fs, f, sizeof(*fs));
         memset(fs->rc_stat2, 0, sizeof(fs->rc_stat2));
 
@@ -146,21 +144,14 @@ av_cold int ff_ffv1_init_slice_contexts(FFV1Context *f)
                                       sizeof(*fs->sample_buffer));
         fs->sample_buffer32 = av_malloc_array((fs->width + 6), 3 * MAX_PLANES *
                                         sizeof(*fs->sample_buffer32));
-        if (!fs->sample_buffer || !fs->sample_buffer32) {
-            av_freep(&fs->sample_buffer);
-            av_freep(&fs->sample_buffer32);
-            av_freep(&f->slice_context[i]);
+        if (!fs->sample_buffer || !fs->sample_buffer32)
             goto memfail;
-        }
     }
+    f->max_slice_count = max_slice_count;
     return 0;
 
 memfail:
-    while(--i >= 0) {
-        av_freep(&f->slice_context[i]->sample_buffer);
-        av_freep(&f->slice_context[i]->sample_buffer32);
-        av_freep(&f->slice_context[i]);
-    }
+    f->max_slice_count = i;
     return AVERROR(ENOMEM);
 }