]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/libx264.c
lavf: move TLS-related ifdeffery to library specific files
[ffmpeg] / libavcodec / libx264.c
index 72a07169afe7a12354e2b6459751cc745e7971ce..82c4f2e2f84a7c2ce2792c659afbc32744bd8d65 100644 (file)
@@ -307,8 +307,10 @@ static av_cold int X264_close(AVCodecContext *avctx)
     av_freep(&avctx->extradata);
     av_freep(&x4->sei);
 
-    if (x4->enc)
+    if (x4->enc) {
         x264_encoder_close(x4->enc);
+        x4->enc = NULL;
+    }
 
     av_frame_free(&avctx->coded_frame);
 
@@ -701,7 +703,7 @@ static av_cold int X264_init(AVCodecContext *avctx)
         s = x264_encoder_headers(x4->enc, &nal, &nnal);
         avctx->extradata = p = av_malloc(s);
         if (!p)
-            goto nomem;
+            return AVERROR(ENOMEM);
 
         for (i = 0; i < nnal; i++) {
             /* Don't put the SEI in extradata. */
@@ -710,7 +712,7 @@ static av_cold int X264_init(AVCodecContext *avctx)
                 x4->sei_size = nal[i].i_payload;
                 x4->sei      = av_malloc(x4->sei_size);
                 if (!x4->sei)
-                    goto nomem;
+                    return AVERROR(ENOMEM);
                 memcpy(x4->sei, nal[i].p_payload, nal[i].i_payload);
                 continue;
             }
@@ -721,9 +723,6 @@ static av_cold int X264_init(AVCodecContext *avctx)
     }
 
     return 0;
-nomem:
-    X264_close(avctx);
-    return AVERROR(ENOMEM);
 }
 
 static const enum AVPixelFormat pix_fmts_8bit[] = {
@@ -889,6 +888,8 @@ AVCodec ff_libx264_encoder = {
     .priv_class       = &x264_class,
     .defaults         = x264_defaults,
     .init_static_data = X264_init_static,
+    .caps_internal    = FF_CODEC_CAP_INIT_THREADSAFE |
+                        FF_CODEC_CAP_INIT_CLEANUP,
 };
 
 AVCodec ff_libx264rgb_encoder = {