]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/internal.h
avcodec/avcodec: Store whether AVCodec->close needs to be called
[ffmpeg] / libavcodec / internal.h
index 141f3fb88e0d439ade1db2b18e8b2d7611edfd7b..60f65d3f2cd693fcbfe5375a3fb9f423074b3c78 100644 (file)
@@ -28,6 +28,7 @@
 
 #include "libavutil/buffer.h"
 #include "libavutil/channel_layout.h"
+#include "libavutil/fifo.h"
 #include "libavutil/mathematics.h"
 #include "libavutil/pixfmt.h"
 #include "avcodec.h"
  * uses ff_thread_report/await_progress().
  */
 #define FF_CODEC_CAP_ALLOCATE_PROGRESS      (1 << 6)
+/**
+ * Codec handles avctx->thread_count == 0 (auto) internally.
+ */
+#define FF_CODEC_CAP_AUTO_THREADS           (1 << 7)
 
 /**
  * AVCodec.codec_tags termination value
@@ -131,8 +136,6 @@ typedef struct AVCodecInternal {
      */
     int last_audio_frame;
 
-    AVFrame *to_free;
-
     AVBufferRef *pool;
 
     void *thread_ctx;
@@ -145,8 +148,7 @@ typedef struct AVCodecInternal {
      * for decoding.
      */
     AVPacket *last_pkt_props;
-    AVPacketList *pkt_props;
-    AVPacketList *pkt_props_tail;
+    AVFifoBuffer *pkt_props;
 
     /**
      * temporary buffer used for encoders to store their bitstream
@@ -158,6 +160,12 @@ typedef struct AVCodecInternal {
 
     EncodeSimpleContext es;
 
+    /**
+     * If this is set, then AVCodec->close (if existing) needs to be called
+     * for the parent AVCodecContext.
+     */
+    int needs_close;
+
     /**
      * Number of audio samples to skip at the start of the next decoded frame
      */
@@ -179,15 +187,6 @@ typedef struct AVCodecInternal {
     AVPacket *buffer_pkt;
     AVFrame *buffer_frame;
     int draining_done;
-    int compat_decode_warned;
-    /* this variable is set by the decoder internals to signal to the old
-     * API compat wrappers the amount of data consumed from the last packet */
-    size_t compat_decode_consumed;
-    /* when a partial packet has been consumed, this stores the remaining size
-     * of the packet (that should be submitted in the next decode call */
-    size_t compat_decode_partial_size;
-    AVFrame *compat_decode_frame;
-    AVPacket *compat_encode_packet;
 
     int showed_multi_packet_warning;