* Audio encoder supports receiving a different number of samples in each call.
*/
#define AV_CODEC_CAP_VARIABLE_FRAME_SIZE (1 << 16)
+/**
+ * Decoder is not a preferred choice for probing.
+ * This indicates that the decoder is not a good choice for probing.
+ * It could for example be an expensive to spin up hardware decoder,
+ * or it could simply not provide a lot of useful information about
+ * the stream.
+ * A decoder marked with this flag should only be used as last resort
+ * choice for probing.
+ */
+#define AV_CODEC_CAP_AVOID_PROBING (1 << 17)
+/**
+ * Codec is intra only.
+ */
+#define AV_CODEC_CAP_INTRA_ONLY 0x40000000
+/**
+ * Codec is lossless.
+ */
+#define AV_CODEC_CAP_LOSSLESS 0x80000000
-
- #if FF_API_WITHOUT_PREFIX
- /**
- * Allow decoders to produce frames with data planes that are not aligned
- * to CPU requirements (e.g. due to cropping).
- */
- #define CODEC_FLAG_UNALIGNED AV_CODEC_FLAG_UNALIGNED
- #define CODEC_FLAG_QSCALE AV_CODEC_FLAG_QSCALE
- #define CODEC_FLAG_4MV AV_CODEC_FLAG_4MV
- #define CODEC_FLAG_OUTPUT_CORRUPT AV_CODEC_FLAG_OUTPUT_CORRUPT
- #define CODEC_FLAG_QPEL AV_CODEC_FLAG_QPEL
- #if FF_API_GMC
- /**
- * @deprecated use the "gmc" private option of the libxvid encoder
- */
- #define CODEC_FLAG_GMC 0x0020 ///< Use GMC.
- #endif
- #if FF_API_MV0
- /**
- * @deprecated use the flag "mv0" in the "mpv_flags" private option of the
- * mpegvideo encoders
- */
- #define CODEC_FLAG_MV0 0x0040
- #endif
- #if FF_API_INPUT_PRESERVED
- /**
- * @deprecated passing reference-counted frames to the encoders replaces this
- * flag
- */
- #define CODEC_FLAG_INPUT_PRESERVED 0x0100
- #endif
- #define CODEC_FLAG_PASS1 AV_CODEC_FLAG_PASS1
- #define CODEC_FLAG_PASS2 AV_CODEC_FLAG_PASS2
- #define CODEC_FLAG_GRAY AV_CODEC_FLAG_GRAY
- #define CODEC_FLAG_PSNR AV_CODEC_FLAG_PSNR
- #define CODEC_FLAG_TRUNCATED AV_CODEC_FLAG_TRUNCATED
-
- #if FF_API_NORMALIZE_AQP
- /**
- * @deprecated use the flag "naq" in the "mpv_flags" private option of the
- * mpegvideo encoders
- */
- #define CODEC_FLAG_NORMALIZE_AQP 0x00020000
- #endif
- #define CODEC_FLAG_INTERLACED_DCT AV_CODEC_FLAG_INTERLACED_DCT
- #define CODEC_FLAG_LOW_DELAY AV_CODEC_FLAG_LOW_DELAY
- #define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
- #define CODEC_FLAG_BITEXACT AV_CODEC_FLAG_BITEXACT
- #define CODEC_FLAG_AC_PRED AV_CODEC_FLAG_AC_PRED
- #define CODEC_FLAG_LOOP_FILTER AV_CODEC_FLAG_LOOP_FILTER
- #define CODEC_FLAG_INTERLACED_ME AV_CODEC_FLAG_INTERLACED_ME
- #define CODEC_FLAG_CLOSED_GOP AV_CODEC_FLAG_CLOSED_GOP
- #define CODEC_FLAG2_FAST AV_CODEC_FLAG2_FAST
- #define CODEC_FLAG2_NO_OUTPUT AV_CODEC_FLAG2_NO_OUTPUT
- #define CODEC_FLAG2_LOCAL_HEADER AV_CODEC_FLAG2_LOCAL_HEADER
- #define CODEC_FLAG2_DROP_FRAME_TIMECODE AV_CODEC_FLAG2_DROP_FRAME_TIMECODE
- #define CODEC_FLAG2_IGNORE_CROP AV_CODEC_FLAG2_IGNORE_CROP
-
- #define CODEC_FLAG2_CHUNKS AV_CODEC_FLAG2_CHUNKS
- #define CODEC_FLAG2_SHOW_ALL AV_CODEC_FLAG2_SHOW_ALL
- #define CODEC_FLAG2_EXPORT_MVS AV_CODEC_FLAG2_EXPORT_MVS
- #define CODEC_FLAG2_SKIP_MANUAL AV_CODEC_FLAG2_SKIP_MANUAL
-
- /* Unsupported options :
- * Syntax Arithmetic coding (SAC)
- * Reference Picture Selection
- * Independent Segment Decoding */
- /* /Fx */
- /* codec capabilities */
-
- #define CODEC_CAP_DRAW_HORIZ_BAND AV_CODEC_CAP_DRAW_HORIZ_BAND ///< Decoder can use draw_horiz_band callback.
- /**
- * Codec uses get_buffer() for allocating buffers and supports custom allocators.
- * If not set, it might not use get_buffer() at all or use operations that
- * assume the buffer was allocated by avcodec_default_get_buffer.
- */
- #define CODEC_CAP_DR1 AV_CODEC_CAP_DR1
- #define CODEC_CAP_TRUNCATED AV_CODEC_CAP_TRUNCATED
- /**
- * Encoder or decoder requires flushing with NULL input at the end in order to
- * give the complete and correct output.
- *
- * NOTE: If this flag is not set, the codec is guaranteed to never be fed with
- * with NULL data. The user can still send NULL data to the public encode
- * or decode function, but libavcodec will not pass it along to the codec
- * unless this flag is set.
- *
- * Decoders:
- * The decoder has a non-zero delay and needs to be fed with avpkt->data=NULL,
- * avpkt->size=0 at the end to get the delayed data until the decoder no longer
- * returns frames.
- *
- * Encoders:
- * The encoder needs to be fed with NULL data at the end of encoding until the
- * encoder no longer returns data.
- *
- * NOTE: For encoders implementing the AVCodec.encode2() function, setting this
- * flag also means that the encoder must set the pts and duration for
- * each output packet. If this flag is not set, the pts and duration will
- * be determined by libavcodec from the input frame.
- */
- #define CODEC_CAP_DELAY AV_CODEC_CAP_DELAY
- /**
- * Codec can be fed a final frame with a smaller size.
- * This can be used to prevent truncation of the last audio samples.
- */
- #define CODEC_CAP_SMALL_LAST_FRAME AV_CODEC_CAP_SMALL_LAST_FRAME
-
- /**
- * Codec can output multiple frames per AVPacket
- * Normally demuxers return one frame at a time, demuxers which do not do
- * are connected to a parser to split what they return into proper frames.
- * This flag is reserved to the very rare category of codecs which have a
- * bitstream that cannot be split into frames without timeconsuming
- * operations like full decoding. Demuxers carrying such bitstreams thus
- * may return multiple frames in a packet. This has many disadvantages like
- * prohibiting stream copy in many cases thus it should only be considered
- * as a last resort.
- */
- #define CODEC_CAP_SUBFRAMES AV_CODEC_CAP_SUBFRAMES
- /**
- * Codec is experimental and is thus avoided in favor of non experimental
- * encoders
- */
- #define CODEC_CAP_EXPERIMENTAL AV_CODEC_CAP_EXPERIMENTAL
- /**
- * Codec should fill in channel configuration and samplerate instead of container
- */
- #define CODEC_CAP_CHANNEL_CONF AV_CODEC_CAP_CHANNEL_CONF
- /**
- * Codec supports frame-level multithreading.
- */
- #define CODEC_CAP_FRAME_THREADS AV_CODEC_CAP_FRAME_THREADS
- /**
- * Codec supports slice-based (or partition-based) multithreading.
- */
- #define CODEC_CAP_SLICE_THREADS AV_CODEC_CAP_SLICE_THREADS
- /**
- * Codec supports changed parameters at any point.
- */
- #define CODEC_CAP_PARAM_CHANGE AV_CODEC_CAP_PARAM_CHANGE
- /**
- * Codec supports avctx->thread_count == 0 (auto).
- */
- #define CODEC_CAP_AUTO_THREADS AV_CODEC_CAP_AUTO_THREADS
- /**
- * Audio encoder supports receiving a different number of samples in each call.
- */
- #define CODEC_CAP_VARIABLE_FRAME_SIZE AV_CODEC_CAP_VARIABLE_FRAME_SIZE
- /**
- * Codec is intra only.
- */
- #define CODEC_CAP_INTRA_ONLY AV_CODEC_CAP_INTRA_ONLY
- /**
- * Codec is lossless.
- */
- #define CODEC_CAP_LOSSLESS AV_CODEC_CAP_LOSSLESS
-
- /**
- * HWAccel is experimental and is thus avoided in favor of non experimental
- * codecs
- */
- #define HWACCEL_CODEC_CAP_EXPERIMENTAL 0x0200
- #endif /* FF_API_WITHOUT_PREFIX */
-
/**
* Pan Scan area.
* This specifies the area which should be displayed.
{"pass2", "use internal 2-pass ratecontrol in second pass mode", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG_PASS2 }, INT_MIN, INT_MAX, 0, "flags"},
{"gray", "only decode/encode grayscale", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG_GRAY }, INT_MIN, INT_MAX, V|E|D, "flags"},
{"psnr", "error[?] variables will be set during encoding", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG_PSNR }, INT_MIN, INT_MAX, V|E, "flags"},
-{"truncated", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG_TRUNCATED }, INT_MIN, INT_MAX, 0, "flags"},
+{"truncated", "Input bitstream might be randomly truncated", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG_TRUNCATED }, INT_MIN, INT_MAX, V|D, "flags"},
- #if FF_API_NORMALIZE_AQP
- {"naq", "normalize adaptive quantization", 0, AV_OPT_TYPE_CONST, {.i64 = CODEC_FLAG_NORMALIZE_AQP }, INT_MIN, INT_MAX, V|E, "flags"},
- #endif
{"ildct", "use interlaced DCT", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG_INTERLACED_DCT }, INT_MIN, INT_MAX, V|E, "flags"},
{"low_delay", "force low delay", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG_LOW_DELAY }, INT_MIN, INT_MAX, V|D|E, "flags"},
{"global_header", "place global headers in extradata instead of every keyframe", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG_GLOBAL_HEADER }, INT_MIN, INT_MAX, V|A|E, "flags"},