12948 lines
445 KiB
Plaintext
12948 lines
445 KiB
Plaintext
//
|
||
// This file was auto-generated using the following command:
|
||
//
|
||
// jai generate.jai
|
||
//
|
||
|
||
AV_NOPTS_VALUE :: 0x8000000000000000;
|
||
|
||
AVERROR_BSF_NOT_FOUND :: 0xb9acbd08; // -1179861752
|
||
AVERROR_BUG :: 0xdeb8aabe; // -558323010
|
||
AVERROR_BUFFER_TOO_SMALL :: 0xacb9aabe; // -1397118274
|
||
AVERROR_DECODER_NOT_FOUND :: 0xbcbabb08; // -1128613112
|
||
AVERROR_DEMUXER_NOT_FOUND :: 0xb2babb08; // -1296385272
|
||
AVERROR_ENCODER_NOT_FOUND :: 0xbcb1ba08; // -1129203192
|
||
AVERROR_EOF :: 0xdfb9b0bb; // -541478725
|
||
AVERROR_EXIT :: 0xabb6a7bb; // -1414092869
|
||
AVERROR_EXTERNAL :: 0xdfaba7bb; // -542398533
|
||
AVERROR_FILTER_NOT_FOUND :: 0xb3b6b908; // -1279870712
|
||
AVERROR_INVALIDDATA :: 0xbebbb1b7; // -1094995529
|
||
AVERROR_MUXER_NOT_FOUND :: 0xa7aab208; // -1481985528
|
||
AVERROR_OPTION_NOT_FOUND :: 0xabafb008; // -1414549496
|
||
AVERROR_PATCHWELCOME :: 0xbaa8beb0; // -1163346256
|
||
AVERROR_PROTOCOL_NOT_FOUND :: 0xb0adaf08; // -1330794744
|
||
AVERROR_STREAM_NOT_FOUND :: 0xadabac08; // -1381258232
|
||
AVERROR_BUG2 :: 0xdfb8aabe; // -541545794
|
||
AVERROR_UNKNOWN :: 0xb1b4b1ab; // -1313558101
|
||
AVERROR_HTTP_BAD_REQUEST :: 0xcfcfcb08; // -808465656
|
||
AVERROR_HTTP_UNAUTHORIZED :: 0xcecfcb08; // -825242872
|
||
AVERROR_HTTP_FORBIDDEN :: 0xcccfcb08; // -858797304
|
||
AVERROR_HTTP_NOT_FOUND :: 0xcbcfcb08; // -875574520
|
||
AVERROR_HTTP_OTHER_4XX :: 0xa7a7cb08; // -1482175736
|
||
AVERROR_HTTP_SERVER_ERROR :: 0xa7a7ca08; // -1482175992
|
||
|
||
|
||
|
||
FF_LAMBDA_SHIFT :: 7;
|
||
FF_LAMBDA_SCALE :: 1<<FF_LAMBDA_SHIFT;
|
||
FF_QP2LAMBDA :: 118;
|
||
FF_LAMBDA_MAX :: 256*128-1;
|
||
|
||
FF_QUALITY_SCALE :: FF_LAMBDA_SCALE;
|
||
|
||
AV_TIME_BASE :: 1000000;
|
||
|
||
AV_HAVE_BIGENDIAN :: 0;
|
||
AV_HAVE_FAST_UNALIGNED :: 1;
|
||
|
||
LIBAVUTIL_VERSION_MAJOR :: 58;
|
||
LIBAVUTIL_VERSION_MINOR :: 2;
|
||
LIBAVUTIL_VERSION_MICRO :: 100;
|
||
|
||
FF_API_FIFO_PEEK2 :: LIBAVUTIL_VERSION_MAJOR < 59;
|
||
FF_API_FIFO_OLD_API :: LIBAVUTIL_VERSION_MAJOR < 59;
|
||
FF_API_XVMC :: LIBAVUTIL_VERSION_MAJOR < 59;
|
||
FF_API_OLD_CHANNEL_LAYOUT :: LIBAVUTIL_VERSION_MAJOR < 59;
|
||
FF_API_AV_FOPEN_UTF8 :: LIBAVUTIL_VERSION_MAJOR < 59;
|
||
FF_API_PKT_DURATION :: LIBAVUTIL_VERSION_MAJOR < 59;
|
||
FF_API_REORDERED_OPAQUE :: LIBAVUTIL_VERSION_MAJOR < 59;
|
||
FF_API_FRAME_PICTURE_NUMBER :: LIBAVUTIL_VERSION_MAJOR < 59;
|
||
|
||
AVERROR_EXPERIMENTAL :: -0x2bb2afa8;
|
||
AVERROR_INPUT_CHANGED :: -0x636e6701;
|
||
AVERROR_OUTPUT_CHANGED :: -0x636e6702;
|
||
|
||
AV_ERROR_MAX_STRING_SIZE :: 64;
|
||
|
||
M_LOG2_10 :: 3.32192809488736234787;
|
||
|
||
M_PHI :: 1.61803398874989484820;
|
||
|
||
AV_LOG_QUIET :: -8;
|
||
|
||
AV_LOG_PANIC :: 0;
|
||
|
||
AV_LOG_FATAL :: 8;
|
||
|
||
AV_LOG_ERROR :: 16;
|
||
|
||
AV_LOG_WARNING :: 24;
|
||
|
||
AV_LOG_INFO :: 32;
|
||
|
||
AV_LOG_VERBOSE :: 40;
|
||
|
||
AV_LOG_DEBUG :: 48;
|
||
|
||
AV_LOG_TRACE :: 56;
|
||
|
||
AV_LOG_MAX_OFFSET :: AV_LOG_TRACE - AV_LOG_QUIET;
|
||
|
||
AV_LOG_SKIP_REPEATED :: 1;
|
||
|
||
AV_LOG_PRINT_LEVEL :: 2;
|
||
|
||
AVPALETTE_SIZE :: 1024;
|
||
AVPALETTE_COUNT :: 256;
|
||
|
||
AV_FOURCC_MAX_STRING_SIZE :: 32;
|
||
|
||
AV_BUFFER_FLAG_READONLY :: 1 << 0;
|
||
|
||
AV_DICT_MATCH_CASE :: 1;
|
||
AV_DICT_IGNORE_SUFFIX :: 2;
|
||
|
||
AV_DICT_DONT_STRDUP_KEY :: 4;
|
||
|
||
AV_DICT_DONT_STRDUP_VAL :: 8;
|
||
|
||
AV_DICT_DONT_OVERWRITE :: 16;
|
||
AV_DICT_APPEND :: 32;
|
||
|
||
AV_DICT_MULTIKEY :: 64;
|
||
|
||
AV_CH_LAYOUT_NATIVE :: 0x8000000000000000;
|
||
|
||
AV_NUM_DATA_POINTERS :: 8;
|
||
|
||
AV_FRAME_FLAG_CORRUPT :: 1 << 0;
|
||
|
||
AV_FRAME_FLAG_DISCARD :: 1 << 2;
|
||
|
||
FF_DECODE_ERROR_INVALID_BITSTREAM :: 1;
|
||
FF_DECODE_ERROR_MISSING_REFERENCE :: 2;
|
||
FF_DECODE_ERROR_CONCEALMENT_ACTIVE :: 4;
|
||
FF_DECODE_ERROR_DECODE_SLICES :: 8;
|
||
|
||
LIBAVCODEC_VERSION_MAJOR :: 60;
|
||
|
||
FF_API_INIT_PACKET :: LIBAVCODEC_VERSION_MAJOR < 61;
|
||
FF_API_IDCT_NONE :: LIBAVCODEC_VERSION_MAJOR < 61;
|
||
FF_API_SVTAV1_OPTS :: LIBAVCODEC_VERSION_MAJOR < 61;
|
||
FF_API_AYUV_CODECID :: LIBAVCODEC_VERSION_MAJOR < 61;
|
||
FF_API_VT_OUTPUT_CALLBACK :: LIBAVCODEC_VERSION_MAJOR < 61;
|
||
FF_API_AVCODEC_CHROMA_POS :: LIBAVCODEC_VERSION_MAJOR < 61;
|
||
FF_API_VT_HWACCEL_CONTEXT :: LIBAVCODEC_VERSION_MAJOR < 61;
|
||
FF_API_AVCTX_FRAME_NUMBER :: LIBAVCODEC_VERSION_MAJOR < 61;
|
||
|
||
FF_CODEC_CRYSTAL_HD :: LIBAVCODEC_VERSION_MAJOR < 61;
|
||
|
||
AV_CODEC_CAP_DRAW_HORIZ_BAND :: 1 << 0;
|
||
|
||
AV_CODEC_CAP_DR1 :: 1 << 1;
|
||
|
||
AV_CODEC_CAP_DELAY :: 1 << 5;
|
||
|
||
AV_CODEC_CAP_SMALL_LAST_FRAME :: 1 << 6;
|
||
|
||
AV_CODEC_CAP_SUBFRAMES :: 1 << 8;
|
||
|
||
AV_CODEC_CAP_EXPERIMENTAL :: 1 << 9;
|
||
|
||
AV_CODEC_CAP_CHANNEL_CONF :: 1 << 10;
|
||
|
||
AV_CODEC_CAP_FRAME_THREADS :: 1 << 12;
|
||
|
||
AV_CODEC_CAP_SLICE_THREADS :: 1 << 13;
|
||
|
||
AV_CODEC_CAP_PARAM_CHANGE :: 1 << 14;
|
||
|
||
AV_CODEC_CAP_OTHER_THREADS :: 1 << 15;
|
||
|
||
AV_CODEC_CAP_VARIABLE_FRAME_SIZE :: 1 << 16;
|
||
|
||
AV_CODEC_CAP_AVOID_PROBING :: 1 << 17;
|
||
|
||
AV_CODEC_CAP_HARDWARE :: 1 << 18;
|
||
|
||
AV_CODEC_CAP_HYBRID :: 1 << 19;
|
||
|
||
AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE :: 1 << 20;
|
||
|
||
AV_CODEC_CAP_ENCODER_FLUSH :: 1 << 21;
|
||
|
||
AV_CODEC_CAP_ENCODER_RECON_FRAME :: 1 << 22;
|
||
|
||
AV_CODEC_PROP_INTRA_ONLY :: 1 << 0;
|
||
|
||
AV_CODEC_PROP_LOSSY :: 1 << 1;
|
||
|
||
AV_CODEC_PROP_LOSSLESS :: 1 << 2;
|
||
|
||
AV_CODEC_PROP_REORDER :: 1 << 3;
|
||
|
||
AV_CODEC_PROP_BITMAP_SUB :: 1 << 16;
|
||
|
||
AV_CODEC_PROP_TEXT_SUB :: 1 << 17;
|
||
|
||
AV_INPUT_BUFFER_PADDING_SIZE :: 64;
|
||
|
||
AV_EF_CRCCHECK :: 1<<0;
|
||
AV_EF_BITSTREAM :: 1<<1;
|
||
AV_EF_BUFFER :: 1<<2;
|
||
AV_EF_EXPLODE :: 1<<3;
|
||
|
||
AV_EF_IGNORE_ERR :: 1<<15;
|
||
AV_EF_CAREFUL :: 1<<16;
|
||
AV_EF_COMPLIANT :: 1<<17;
|
||
AV_EF_AGGRESSIVE :: 1<<18;
|
||
|
||
FF_COMPLIANCE_VERY_STRICT :: 2;
|
||
FF_COMPLIANCE_STRICT :: 1;
|
||
FF_COMPLIANCE_NORMAL :: 0;
|
||
FF_COMPLIANCE_UNOFFICIAL :: -1;
|
||
FF_COMPLIANCE_EXPERIMENTAL :: -2;
|
||
|
||
AV_PKT_FLAG_KEY :: 0x0001;
|
||
AV_PKT_FLAG_CORRUPT :: 0x0002;
|
||
|
||
AV_PKT_FLAG_DISCARD :: 0x0004;
|
||
|
||
AV_PKT_FLAG_TRUSTED :: 0x0008;
|
||
|
||
AV_PKT_FLAG_DISPOSABLE :: 0x0010;
|
||
|
||
LIBAVCODEC_VERSION_MINOR :: 3;
|
||
LIBAVCODEC_VERSION_MICRO :: 100;
|
||
|
||
AV_INPUT_BUFFER_MIN_SIZE :: 16384;
|
||
|
||
AV_CODEC_FLAG_UNALIGNED :: 1 << 0;
|
||
|
||
AV_CODEC_FLAG_QSCALE :: 1 << 1;
|
||
|
||
AV_CODEC_FLAG_4MV :: 1 << 2;
|
||
|
||
AV_CODEC_FLAG_OUTPUT_CORRUPT :: 1 << 3;
|
||
|
||
AV_CODEC_FLAG_QPEL :: 1 << 4;
|
||
|
||
AV_CODEC_FLAG_DROPCHANGED :: 1 << 5;
|
||
|
||
AV_CODEC_FLAG_RECON_FRAME :: 1 << 6;
|
||
|
||
AV_CODEC_FLAG_COPY_OPAQUE :: 1 << 7;
|
||
|
||
AV_CODEC_FLAG_FRAME_DURATION :: 1 << 8;
|
||
|
||
AV_CODEC_FLAG_PASS1 :: 1 << 9;
|
||
|
||
AV_CODEC_FLAG_PASS2 :: 1 << 10;
|
||
|
||
AV_CODEC_FLAG_LOOP_FILTER :: 1 << 11;
|
||
|
||
AV_CODEC_FLAG_GRAY :: 1 << 13;
|
||
|
||
AV_CODEC_FLAG_PSNR :: 1 << 15;
|
||
|
||
AV_CODEC_FLAG_INTERLACED_DCT :: 1 << 18;
|
||
|
||
AV_CODEC_FLAG_LOW_DELAY :: 1 << 19;
|
||
|
||
AV_CODEC_FLAG_GLOBAL_HEADER :: 1 << 22;
|
||
|
||
AV_CODEC_FLAG_BITEXACT :: 1 << 23;
|
||
|
||
AV_CODEC_FLAG_AC_PRED :: 1 << 24;
|
||
|
||
AV_CODEC_FLAG_INTERLACED_ME :: 1 << 29;
|
||
AV_CODEC_FLAG_CLOSED_GOP :: 1 << 31;
|
||
|
||
AV_CODEC_FLAG2_FAST :: 1 << 0;
|
||
|
||
AV_CODEC_FLAG2_NO_OUTPUT :: 1 << 2;
|
||
|
||
AV_CODEC_FLAG2_LOCAL_HEADER :: 1 << 3;
|
||
|
||
AV_CODEC_FLAG2_CHUNKS :: 1 << 15;
|
||
|
||
AV_CODEC_FLAG2_IGNORE_CROP :: 1 << 16;
|
||
|
||
AV_CODEC_FLAG2_SHOW_ALL :: 1 << 22;
|
||
|
||
AV_CODEC_FLAG2_EXPORT_MVS :: 1 << 28;
|
||
|
||
AV_CODEC_FLAG2_SKIP_MANUAL :: 1 << 29;
|
||
|
||
AV_CODEC_FLAG2_RO_FLUSH_NOOP :: 1 << 30;
|
||
|
||
AV_CODEC_FLAG2_ICC_PROFILES :: 1 << 31;
|
||
|
||
AV_CODEC_EXPORT_DATA_MVS :: 1 << 0;
|
||
|
||
AV_CODEC_EXPORT_DATA_PRFT :: 1 << 1;
|
||
|
||
AV_CODEC_EXPORT_DATA_VIDEO_ENC_PARAMS :: 1 << 2;
|
||
|
||
AV_CODEC_EXPORT_DATA_FILM_GRAIN :: 1 << 3;
|
||
|
||
AV_GET_BUFFER_FLAG_REF :: 1 << 0;
|
||
|
||
AV_GET_ENCODE_BUFFER_FLAG_REF :: 1 << 0;
|
||
|
||
FF_COMPRESSION_DEFAULT :: -1;
|
||
|
||
FF_CMP_SAD :: 0;
|
||
FF_CMP_SSE :: 1;
|
||
FF_CMP_SATD :: 2;
|
||
FF_CMP_DCT :: 3;
|
||
FF_CMP_PSNR :: 4;
|
||
FF_CMP_BIT :: 5;
|
||
FF_CMP_RD :: 6;
|
||
FF_CMP_ZERO :: 7;
|
||
FF_CMP_VSAD :: 8;
|
||
FF_CMP_VSSE :: 9;
|
||
FF_CMP_NSSE :: 10;
|
||
FF_CMP_W53 :: 11;
|
||
FF_CMP_W97 :: 12;
|
||
FF_CMP_DCTMAX :: 13;
|
||
FF_CMP_DCT264 :: 14;
|
||
FF_CMP_MEDIAN_SAD :: 15;
|
||
FF_CMP_CHROMA :: 256;
|
||
|
||
SLICE_FLAG_CODED_ORDER :: 0x0001;
|
||
SLICE_FLAG_ALLOW_FIELD :: 0x0002;
|
||
SLICE_FLAG_ALLOW_PLANE :: 0x0004;
|
||
|
||
FF_MB_DECISION_SIMPLE :: 0;
|
||
FF_MB_DECISION_BITS :: 1;
|
||
FF_MB_DECISION_RD :: 2;
|
||
|
||
FF_BUG_AUTODETECT :: 1;
|
||
FF_BUG_XVID_ILACE :: 4;
|
||
FF_BUG_UMP4 :: 8;
|
||
FF_BUG_NO_PADDING :: 16;
|
||
FF_BUG_AMV :: 32;
|
||
FF_BUG_QPEL_CHROMA :: 64;
|
||
FF_BUG_STD_QPEL :: 128;
|
||
FF_BUG_QPEL_CHROMA2 :: 256;
|
||
FF_BUG_DIRECT_BLOCKSIZE :: 512;
|
||
FF_BUG_EDGE :: 1024;
|
||
FF_BUG_HPEL_CHROMA :: 2048;
|
||
FF_BUG_DC_CLIP :: 4096;
|
||
FF_BUG_MS :: 8192;
|
||
FF_BUG_TRUNCATED :: 16384;
|
||
FF_BUG_IEDGE :: 32768;
|
||
|
||
FF_EC_GUESS_MVS :: 1;
|
||
FF_EC_DEBLOCK :: 2;
|
||
FF_EC_FAVOR_INTER :: 256;
|
||
|
||
FF_DEBUG_PICT_INFO :: 1;
|
||
FF_DEBUG_RC :: 2;
|
||
FF_DEBUG_BITSTREAM :: 4;
|
||
FF_DEBUG_MB_TYPE :: 8;
|
||
FF_DEBUG_QP :: 16;
|
||
FF_DEBUG_DCT_COEFF :: 0x00000040;
|
||
FF_DEBUG_SKIP :: 0x00000080;
|
||
FF_DEBUG_STARTCODE :: 0x00000100;
|
||
FF_DEBUG_ER :: 0x00000400;
|
||
FF_DEBUG_MMCO :: 0x00000800;
|
||
FF_DEBUG_BUGS :: 0x00001000;
|
||
FF_DEBUG_BUFFERS :: 0x00008000;
|
||
FF_DEBUG_THREADS :: 0x00010000;
|
||
FF_DEBUG_GREEN_MD :: 0x00800000;
|
||
FF_DEBUG_NOMC :: 0x01000000;
|
||
|
||
FF_DCT_AUTO :: 0;
|
||
FF_DCT_FASTINT :: 1;
|
||
FF_DCT_INT :: 2;
|
||
FF_DCT_MMX :: 3;
|
||
FF_DCT_ALTIVEC :: 5;
|
||
FF_DCT_FAAN :: 6;
|
||
|
||
FF_IDCT_AUTO :: 0;
|
||
FF_IDCT_INT :: 1;
|
||
FF_IDCT_SIMPLE :: 2;
|
||
FF_IDCT_SIMPLEMMX :: 3;
|
||
FF_IDCT_ARM :: 7;
|
||
FF_IDCT_ALTIVEC :: 8;
|
||
FF_IDCT_SIMPLEARM :: 10;
|
||
FF_IDCT_XVID :: 14;
|
||
FF_IDCT_SIMPLEARMV5TE :: 16;
|
||
FF_IDCT_SIMPLEARMV6 :: 17;
|
||
FF_IDCT_FAAN :: 20;
|
||
FF_IDCT_SIMPLENEON :: 22;
|
||
|
||
FF_IDCT_NONE :: 24;
|
||
|
||
FF_IDCT_SIMPLEAUTO :: 128;
|
||
|
||
FF_THREAD_FRAME :: 1;
|
||
FF_THREAD_SLICE :: 2;
|
||
|
||
FF_PROFILE_UNKNOWN :: -99;
|
||
FF_PROFILE_RESERVED :: -100;
|
||
|
||
FF_PROFILE_AAC_MAIN :: 0;
|
||
FF_PROFILE_AAC_LOW :: 1;
|
||
FF_PROFILE_AAC_SSR :: 2;
|
||
FF_PROFILE_AAC_LTP :: 3;
|
||
FF_PROFILE_AAC_HE :: 4;
|
||
FF_PROFILE_AAC_HE_V2 :: 28;
|
||
FF_PROFILE_AAC_LD :: 22;
|
||
FF_PROFILE_AAC_ELD :: 38;
|
||
FF_PROFILE_MPEG2_AAC_LOW :: 128;
|
||
FF_PROFILE_MPEG2_AAC_HE :: 131;
|
||
|
||
FF_PROFILE_DNXHD :: 0;
|
||
FF_PROFILE_DNXHR_LB :: 1;
|
||
FF_PROFILE_DNXHR_SQ :: 2;
|
||
FF_PROFILE_DNXHR_HQ :: 3;
|
||
FF_PROFILE_DNXHR_HQX :: 4;
|
||
FF_PROFILE_DNXHR_444 :: 5;
|
||
|
||
FF_PROFILE_DTS :: 20;
|
||
FF_PROFILE_DTS_ES :: 30;
|
||
FF_PROFILE_DTS_96_24 :: 40;
|
||
FF_PROFILE_DTS_HD_HRA :: 50;
|
||
FF_PROFILE_DTS_HD_MA :: 60;
|
||
FF_PROFILE_DTS_EXPRESS :: 70;
|
||
|
||
FF_PROFILE_MPEG2_422 :: 0;
|
||
FF_PROFILE_MPEG2_HIGH :: 1;
|
||
FF_PROFILE_MPEG2_SS :: 2;
|
||
FF_PROFILE_MPEG2_SNR_SCALABLE :: 3;
|
||
FF_PROFILE_MPEG2_MAIN :: 4;
|
||
FF_PROFILE_MPEG2_SIMPLE :: 5;
|
||
|
||
FF_PROFILE_H264_CONSTRAINED :: 1<<9;
|
||
FF_PROFILE_H264_INTRA :: 1<<11;
|
||
|
||
FF_PROFILE_H264_BASELINE :: 66;
|
||
FF_PROFILE_H264_CONSTRAINED_BASELINE :: 66|FF_PROFILE_H264_CONSTRAINED;
|
||
FF_PROFILE_H264_MAIN :: 77;
|
||
FF_PROFILE_H264_EXTENDED :: 88;
|
||
FF_PROFILE_H264_HIGH :: 100;
|
||
FF_PROFILE_H264_HIGH_10 :: 110;
|
||
FF_PROFILE_H264_HIGH_10_INTRA :: 110|FF_PROFILE_H264_INTRA;
|
||
FF_PROFILE_H264_MULTIVIEW_HIGH :: 118;
|
||
FF_PROFILE_H264_HIGH_422 :: 122;
|
||
FF_PROFILE_H264_HIGH_422_INTRA :: 122|FF_PROFILE_H264_INTRA;
|
||
FF_PROFILE_H264_STEREO_HIGH :: 128;
|
||
FF_PROFILE_H264_HIGH_444 :: 144;
|
||
FF_PROFILE_H264_HIGH_444_PREDICTIVE :: 244;
|
||
FF_PROFILE_H264_HIGH_444_INTRA :: 244|FF_PROFILE_H264_INTRA;
|
||
FF_PROFILE_H264_CAVLC_444 :: 44;
|
||
|
||
FF_PROFILE_VC1_SIMPLE :: 0;
|
||
FF_PROFILE_VC1_MAIN :: 1;
|
||
FF_PROFILE_VC1_COMPLEX :: 2;
|
||
FF_PROFILE_VC1_ADVANCED :: 3;
|
||
|
||
FF_PROFILE_MPEG4_SIMPLE :: 0;
|
||
FF_PROFILE_MPEG4_SIMPLE_SCALABLE :: 1;
|
||
FF_PROFILE_MPEG4_CORE :: 2;
|
||
FF_PROFILE_MPEG4_MAIN :: 3;
|
||
FF_PROFILE_MPEG4_N_BIT :: 4;
|
||
FF_PROFILE_MPEG4_SCALABLE_TEXTURE :: 5;
|
||
FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION :: 6;
|
||
FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE :: 7;
|
||
FF_PROFILE_MPEG4_HYBRID :: 8;
|
||
FF_PROFILE_MPEG4_ADVANCED_REAL_TIME :: 9;
|
||
FF_PROFILE_MPEG4_CORE_SCALABLE :: 10;
|
||
FF_PROFILE_MPEG4_ADVANCED_CODING :: 11;
|
||
FF_PROFILE_MPEG4_ADVANCED_CORE :: 12;
|
||
FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE :: 13;
|
||
FF_PROFILE_MPEG4_SIMPLE_STUDIO :: 14;
|
||
FF_PROFILE_MPEG4_ADVANCED_SIMPLE :: 15;
|
||
|
||
FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_0 :: 1;
|
||
FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_1 :: 2;
|
||
FF_PROFILE_JPEG2000_CSTREAM_NO_RESTRICTION :: 32768;
|
||
FF_PROFILE_JPEG2000_DCINEMA_2K :: 3;
|
||
FF_PROFILE_JPEG2000_DCINEMA_4K :: 4;
|
||
|
||
FF_PROFILE_VP9_0 :: 0;
|
||
FF_PROFILE_VP9_1 :: 1;
|
||
FF_PROFILE_VP9_2 :: 2;
|
||
FF_PROFILE_VP9_3 :: 3;
|
||
|
||
FF_PROFILE_HEVC_MAIN :: 1;
|
||
FF_PROFILE_HEVC_MAIN_10 :: 2;
|
||
FF_PROFILE_HEVC_MAIN_STILL_PICTURE :: 3;
|
||
FF_PROFILE_HEVC_REXT :: 4;
|
||
|
||
FF_PROFILE_VVC_MAIN_10 :: 1;
|
||
FF_PROFILE_VVC_MAIN_10_444 :: 33;
|
||
|
||
FF_PROFILE_AV1_MAIN :: 0;
|
||
FF_PROFILE_AV1_HIGH :: 1;
|
||
FF_PROFILE_AV1_PROFESSIONAL :: 2;
|
||
|
||
FF_PROFILE_MJPEG_HUFFMAN_BASELINE_DCT :: 0xc0;
|
||
FF_PROFILE_MJPEG_HUFFMAN_EXTENDED_SEQUENTIAL_DCT :: 0xc1;
|
||
FF_PROFILE_MJPEG_HUFFMAN_PROGRESSIVE_DCT :: 0xc2;
|
||
FF_PROFILE_MJPEG_HUFFMAN_LOSSLESS :: 0xc3;
|
||
FF_PROFILE_MJPEG_JPEG_LS :: 0xf7;
|
||
|
||
FF_PROFILE_SBC_MSBC :: 1;
|
||
|
||
FF_PROFILE_PRORES_PROXY :: 0;
|
||
FF_PROFILE_PRORES_LT :: 1;
|
||
FF_PROFILE_PRORES_STANDARD :: 2;
|
||
FF_PROFILE_PRORES_HQ :: 3;
|
||
FF_PROFILE_PRORES_4444 :: 4;
|
||
FF_PROFILE_PRORES_XQ :: 5;
|
||
|
||
FF_PROFILE_ARIB_PROFILE_A :: 0;
|
||
FF_PROFILE_ARIB_PROFILE_C :: 1;
|
||
|
||
FF_PROFILE_KLVA_SYNC :: 0;
|
||
FF_PROFILE_KLVA_ASYNC :: 1;
|
||
|
||
FF_LEVEL_UNKNOWN :: -99;
|
||
|
||
FF_SUB_CHARENC_MODE_DO_NOTHING :: -1;
|
||
FF_SUB_CHARENC_MODE_AUTOMATIC :: 0;
|
||
FF_SUB_CHARENC_MODE_PRE_DECODER :: 1;
|
||
FF_SUB_CHARENC_MODE_IGNORE :: 2;
|
||
|
||
FF_CODEC_PROPERTY_LOSSLESS :: 0x00000001;
|
||
FF_CODEC_PROPERTY_CLOSED_CAPTIONS :: 0x00000002;
|
||
FF_CODEC_PROPERTY_FILM_GRAIN :: 0x00000004;
|
||
|
||
AV_HWACCEL_CODEC_CAP_EXPERIMENTAL :: 0x0200;
|
||
|
||
AV_HWACCEL_FLAG_IGNORE_LEVEL :: 1 << 0;
|
||
|
||
AV_HWACCEL_FLAG_ALLOW_HIGH_DEPTH :: 1 << 1;
|
||
|
||
AV_HWACCEL_FLAG_ALLOW_PROFILE_MISMATCH :: 1 << 2;
|
||
|
||
AV_HWACCEL_FLAG_UNSAFE_OUTPUT :: 1 << 3;
|
||
|
||
AV_SUBTITLE_FLAG_FORCED :: 0x00000001;
|
||
|
||
AV_PARSER_PTS_NB :: 4;
|
||
|
||
PARSER_FLAG_COMPLETE_FRAMES :: 0x0001;
|
||
PARSER_FLAG_ONCE :: 0x0002;
|
||
|
||
PARSER_FLAG_FETCHED_OFFSET :: 0x0004;
|
||
PARSER_FLAG_USE_CODEC_TS :: 0x1000;
|
||
|
||
LIBAVFORMAT_VERSION_MAJOR :: 60;
|
||
|
||
FF_API_COMPUTE_PKT_FIELDS2 :: LIBAVFORMAT_VERSION_MAJOR < 61;
|
||
FF_API_GET_END_PTS :: LIBAVFORMAT_VERSION_MAJOR < 61;
|
||
FF_API_AVIODIRCONTEXT :: LIBAVFORMAT_VERSION_MAJOR < 61;
|
||
FF_API_AVFORMAT_IO_CLOSE :: LIBAVFORMAT_VERSION_MAJOR < 61;
|
||
|
||
FF_API_R_FRAME_RATE :: 1;
|
||
|
||
AVIO_SEEKABLE_NORMAL :: 1 << 0;
|
||
|
||
AVIO_SEEKABLE_TIME :: 1 << 1;
|
||
|
||
AVSEEK_SIZE :: 0x10000;
|
||
|
||
AVSEEK_FORCE :: 0x20000;
|
||
|
||
AVIO_FLAG_READ :: 1;
|
||
AVIO_FLAG_WRITE :: 2;
|
||
AVIO_FLAG_READ_WRITE :: AVIO_FLAG_READ|AVIO_FLAG_WRITE;
|
||
|
||
AVIO_FLAG_NONBLOCK :: 8;
|
||
|
||
AVIO_FLAG_DIRECT :: 0x8000;
|
||
|
||
LIBAVFORMAT_VERSION_MINOR :: 3;
|
||
LIBAVFORMAT_VERSION_MICRO :: 100;
|
||
|
||
AVPROBE_SCORE_RETRY :: AVPROBE_SCORE_MAX/4;
|
||
AVPROBE_SCORE_STREAM_RETRY :: AVPROBE_SCORE_MAX/4-1;
|
||
|
||
AVPROBE_SCORE_EXTENSION :: 50;
|
||
AVPROBE_SCORE_MIME :: 75;
|
||
AVPROBE_SCORE_MAX :: 100;
|
||
|
||
AVPROBE_PADDING_SIZE :: 32;
|
||
|
||
AVFMT_NOFILE :: 0x0001;
|
||
AVFMT_NEEDNUMBER :: 0x0002;
|
||
|
||
AVFMT_EXPERIMENTAL :: 0x0004;
|
||
AVFMT_SHOW_IDS :: 0x0008;
|
||
AVFMT_GLOBALHEADER :: 0x0040;
|
||
AVFMT_NOTIMESTAMPS :: 0x0080;
|
||
AVFMT_GENERIC_INDEX :: 0x0100;
|
||
AVFMT_TS_DISCONT :: 0x0200;
|
||
AVFMT_VARIABLE_FPS :: 0x0400;
|
||
AVFMT_NODIMENSIONS :: 0x0800;
|
||
AVFMT_NOSTREAMS :: 0x1000;
|
||
AVFMT_NOBINSEARCH :: 0x2000;
|
||
AVFMT_NOGENSEARCH :: 0x4000;
|
||
AVFMT_NO_BYTE_SEEK :: 0x8000;
|
||
AVFMT_ALLOW_FLUSH :: 0x10000;
|
||
AVFMT_TS_NONSTRICT :: 0x20000;
|
||
|
||
AVFMT_TS_NEGATIVE :: 0x40000;
|
||
|
||
AVFMT_SEEK_TO_PTS :: 0x4000000;
|
||
|
||
AVINDEX_KEYFRAME :: 0x0001;
|
||
AVINDEX_DISCARD_FRAME :: 0x0002;
|
||
|
||
AV_DISPOSITION_DEFAULT :: 1 << 0;
|
||
|
||
AV_DISPOSITION_DUB :: 1 << 1;
|
||
|
||
AV_DISPOSITION_ORIGINAL :: 1 << 2;
|
||
|
||
AV_DISPOSITION_COMMENT :: 1 << 3;
|
||
|
||
AV_DISPOSITION_LYRICS :: 1 << 4;
|
||
|
||
AV_DISPOSITION_KARAOKE :: 1 << 5;
|
||
|
||
AV_DISPOSITION_FORCED :: 1 << 6;
|
||
|
||
AV_DISPOSITION_HEARING_IMPAIRED :: 1 << 7;
|
||
|
||
AV_DISPOSITION_VISUAL_IMPAIRED :: 1 << 8;
|
||
|
||
AV_DISPOSITION_CLEAN_EFFECTS :: 1 << 9;
|
||
|
||
AV_DISPOSITION_ATTACHED_PIC :: 1 << 10;
|
||
|
||
AV_DISPOSITION_TIMED_THUMBNAILS :: 1 << 11;
|
||
|
||
AV_DISPOSITION_NON_DIEGETIC :: 1 << 12;
|
||
|
||
AV_DISPOSITION_CAPTIONS :: 1 << 16;
|
||
|
||
AV_DISPOSITION_DESCRIPTIONS :: 1 << 17;
|
||
|
||
AV_DISPOSITION_METADATA :: 1 << 18;
|
||
|
||
AV_DISPOSITION_DEPENDENT :: 1 << 19;
|
||
|
||
AV_DISPOSITION_STILL_IMAGE :: 1 << 20;
|
||
|
||
AV_PTS_WRAP_IGNORE :: 0;
|
||
AV_PTS_WRAP_ADD_OFFSET :: 1;
|
||
AV_PTS_WRAP_SUB_OFFSET :: -1;
|
||
|
||
AVSTREAM_EVENT_FLAG_METADATA_UPDATED :: 0x0001;
|
||
|
||
AVSTREAM_EVENT_FLAG_NEW_PACKETS :: 1 << 1;
|
||
|
||
AV_PROGRAM_RUNNING :: 1;
|
||
|
||
AVFMTCTX_NOHEADER :: 0x0001;
|
||
|
||
AVFMTCTX_UNSEEKABLE :: 0x0002;
|
||
|
||
AVFMT_FLAG_GENPTS :: 0x0001;
|
||
AVFMT_FLAG_IGNIDX :: 0x0002;
|
||
AVFMT_FLAG_NONBLOCK :: 0x0004;
|
||
AVFMT_FLAG_IGNDTS :: 0x0008;
|
||
AVFMT_FLAG_NOFILLIN :: 0x0010;
|
||
AVFMT_FLAG_NOPARSE :: 0x0020;
|
||
AVFMT_FLAG_NOBUFFER :: 0x0040;
|
||
AVFMT_FLAG_CUSTOM_IO :: 0x0080;
|
||
AVFMT_FLAG_DISCARD_CORRUPT :: 0x0100;
|
||
AVFMT_FLAG_FLUSH_PACKETS :: 0x0200;
|
||
|
||
AVFMT_FLAG_BITEXACT :: 0x0400;
|
||
AVFMT_FLAG_SORT_DTS :: 0x10000;
|
||
AVFMT_FLAG_FAST_SEEK :: 0x80000;
|
||
AVFMT_FLAG_SHORTEST :: 0x100000;
|
||
AVFMT_FLAG_AUTO_BSF :: 0x200000;
|
||
|
||
FF_FDEBUG_TS :: 0x0001;
|
||
|
||
AVFMT_EVENT_FLAG_METADATA_UPDATED :: 0x0001;
|
||
|
||
AVFMT_AVOID_NEG_TS_AUTO :: -1;
|
||
AVFMT_AVOID_NEG_TS_DISABLED :: 0;
|
||
AVFMT_AVOID_NEG_TS_MAKE_NON_NEGATIVE :: 1;
|
||
AVFMT_AVOID_NEG_TS_MAKE_ZERO :: 2;
|
||
|
||
AVSEEK_FLAG_BACKWARD :: 1;
|
||
AVSEEK_FLAG_BYTE :: 2;
|
||
AVSEEK_FLAG_ANY :: 4;
|
||
AVSEEK_FLAG_FRAME :: 8;
|
||
|
||
AVSTREAM_INIT_IN_WRITE_HEADER :: 0;
|
||
AVSTREAM_INIT_IN_INIT_OUTPUT :: 1;
|
||
|
||
AV_FRAME_FILENAME_FLAGS_MULTIPLE :: 1;
|
||
|
||
LIBSWSCALE_VERSION_MAJOR :: 7;
|
||
|
||
LIBSWSCALE_VERSION_MINOR :: 1;
|
||
LIBSWSCALE_VERSION_MICRO :: 100;
|
||
|
||
SWS_FAST_BILINEAR :: 1;
|
||
SWS_BILINEAR :: 2;
|
||
SWS_BICUBIC :: 4;
|
||
SWS_X :: 8;
|
||
SWS_POINT :: 0x10;
|
||
SWS_AREA :: 0x20;
|
||
SWS_BICUBLIN :: 0x40;
|
||
SWS_GAUSS :: 0x80;
|
||
SWS_SINC :: 0x100;
|
||
SWS_LANCZOS :: 0x200;
|
||
SWS_SPLINE :: 0x400;
|
||
|
||
SWS_SRC_V_CHR_DROP_MASK :: 0x30000;
|
||
SWS_SRC_V_CHR_DROP_SHIFT :: 16;
|
||
|
||
SWS_PARAM_DEFAULT :: 123456;
|
||
|
||
SWS_PRINT_INFO :: 0x1000;
|
||
|
||
SWS_FULL_CHR_H_INT :: 0x2000;
|
||
|
||
SWS_FULL_CHR_H_INP :: 0x4000;
|
||
SWS_DIRECT_BGR :: 0x8000;
|
||
SWS_ACCURATE_RND :: 0x40000;
|
||
SWS_BITEXACT :: 0x80000;
|
||
SWS_ERROR_DIFFUSION :: 0x800000;
|
||
|
||
SWS_MAX_REDUCE_CUTOFF :: 0.002;
|
||
|
||
SWS_CS_ITU709 :: 1;
|
||
SWS_CS_FCC :: 4;
|
||
SWS_CS_ITU601 :: 5;
|
||
SWS_CS_ITU624 :: 5;
|
||
SWS_CS_SMPTE170M :: 5;
|
||
SWS_CS_SMPTE240M :: 7;
|
||
SWS_CS_DEFAULT :: 5;
|
||
SWS_CS_BT2020 :: 9;
|
||
|
||
/**
|
||
* Audio sample formats
|
||
*
|
||
* - The data described by the sample format is always in native-endian order.
|
||
* Sample values can be expressed by native C types, hence the lack of a signed
|
||
* 24-bit sample format even though it is a common raw audio data format.
|
||
*
|
||
* - The floating-point formats are based on full volume being in the range
|
||
* [-1.0, 1.0]. Any values outside this range are beyond full volume level.
|
||
*
|
||
* - The data layout as used in av_samples_fill_arrays() and elsewhere in FFmpeg
|
||
* (such as AVFrame in libavcodec) is as follows:
|
||
*
|
||
* @par
|
||
* For planar sample formats, each audio channel is in a separate data plane,
|
||
* and linesize is the buffer size, in bytes, for a single plane. All data
|
||
* planes must be the same size. For packed sample formats, only the first data
|
||
* plane is used, and samples for each channel are interleaved. In this case,
|
||
* linesize is the buffer size, in bytes, for the 1 plane.
|
||
*
|
||
*/
|
||
AVSampleFormat :: enum s32 {
|
||
NONE :: -1;
|
||
U8 :: 0;
|
||
S16 :: 1;
|
||
S32 :: 2;
|
||
FLT :: 3;
|
||
DBL :: 4;
|
||
|
||
U8P :: 5;
|
||
S16P :: 6;
|
||
S32P :: 7;
|
||
FLTP :: 8;
|
||
DBLP :: 9;
|
||
S64 :: 10;
|
||
S64P :: 11;
|
||
|
||
NB :: 12;
|
||
|
||
AV_SAMPLE_FMT_NONE :: NONE;
|
||
AV_SAMPLE_FMT_U8 :: U8;
|
||
AV_SAMPLE_FMT_S16 :: S16;
|
||
AV_SAMPLE_FMT_S32 :: S32;
|
||
AV_SAMPLE_FMT_FLT :: FLT;
|
||
AV_SAMPLE_FMT_DBL :: DBL;
|
||
|
||
AV_SAMPLE_FMT_U8P :: U8P;
|
||
AV_SAMPLE_FMT_S16P :: S16P;
|
||
AV_SAMPLE_FMT_S32P :: S32P;
|
||
AV_SAMPLE_FMT_FLTP :: FLTP;
|
||
AV_SAMPLE_FMT_DBLP :: DBLP;
|
||
AV_SAMPLE_FMT_S64 :: S64;
|
||
AV_SAMPLE_FMT_S64P :: S64P;
|
||
|
||
AV_SAMPLE_FMT_NB :: NB;
|
||
}
|
||
|
||
/**
|
||
* Return the name of sample_fmt, or NULL if sample_fmt is not
|
||
* recognized.
|
||
*/
|
||
av_get_sample_fmt_name :: (sample_fmt: AVSampleFormat) -> *u8 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Return a sample format corresponding to name, or AV_SAMPLE_FMT_NONE
|
||
* on error.
|
||
*/
|
||
av_get_sample_fmt :: (name: *u8) -> AVSampleFormat #foreign libavutil_58;
|
||
|
||
/**
|
||
* Return the planar<->packed alternative form of the given sample format, or
|
||
* AV_SAMPLE_FMT_NONE on error. If the passed sample_fmt is already in the
|
||
* requested planar/packed format, the format returned is the same as the
|
||
* input.
|
||
*/
|
||
av_get_alt_sample_fmt :: (sample_fmt: AVSampleFormat, planar: s32) -> AVSampleFormat #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get the packed alternative form of the given sample format.
|
||
*
|
||
* If the passed sample_fmt is already in packed format, the format returned is
|
||
* the same as the input.
|
||
*
|
||
* @return the packed alternative form of the given sample format or
|
||
AV_SAMPLE_FMT_NONE on error.
|
||
*/
|
||
av_get_packed_sample_fmt :: (sample_fmt: AVSampleFormat) -> AVSampleFormat #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get the planar alternative form of the given sample format.
|
||
*
|
||
* If the passed sample_fmt is already in planar format, the format returned is
|
||
* the same as the input.
|
||
*
|
||
* @return the planar alternative form of the given sample format or
|
||
AV_SAMPLE_FMT_NONE on error.
|
||
*/
|
||
av_get_planar_sample_fmt :: (sample_fmt: AVSampleFormat) -> AVSampleFormat #foreign libavutil_58;
|
||
|
||
/**
|
||
* Generate a string corresponding to the sample format with
|
||
* sample_fmt, or a header if sample_fmt is negative.
|
||
*
|
||
* @param buf the buffer where to write the string
|
||
* @param buf_size the size of buf
|
||
* @param sample_fmt the number of the sample format to print the
|
||
* corresponding info string, or a negative value to print the
|
||
* corresponding header.
|
||
* @return the pointer to the filled buffer or NULL if sample_fmt is
|
||
* unknown or in case of other errors
|
||
*/
|
||
av_get_sample_fmt_string :: (buf: *u8, buf_size: s32, sample_fmt: AVSampleFormat) -> *u8 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Return number of bytes per sample.
|
||
*
|
||
* @param sample_fmt the sample format
|
||
* @return number of bytes per sample or zero if unknown for the given
|
||
* sample format
|
||
*/
|
||
av_get_bytes_per_sample :: (sample_fmt: AVSampleFormat) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Check if the sample format is planar.
|
||
*
|
||
* @param sample_fmt the sample format to inspect
|
||
* @return 1 if the sample format is planar, 0 if it is interleaved
|
||
*/
|
||
av_sample_fmt_is_planar :: (sample_fmt: AVSampleFormat) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get the required buffer size for the given audio parameters.
|
||
*
|
||
* @param[out] linesize calculated linesize, may be NULL
|
||
* @param nb_channels the number of channels
|
||
* @param nb_samples the number of samples in a single channel
|
||
* @param sample_fmt the sample format
|
||
* @param align buffer size alignment (0 = default, 1 = no alignment)
|
||
* @return required buffer size, or negative error code on failure
|
||
*/
|
||
av_samples_get_buffer_size :: (linesize: *s32, nb_channels: s32, nb_samples: s32, sample_fmt: AVSampleFormat, align: s32) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Fill plane data pointers and linesize for samples with sample
|
||
* format sample_fmt.
|
||
*
|
||
* The audio_data array is filled with the pointers to the samples data planes:
|
||
* for planar, set the start point of each channel's data within the buffer,
|
||
* for packed, set the start point of the entire buffer only.
|
||
*
|
||
* The value pointed to by linesize is set to the aligned size of each
|
||
* channel's data buffer for planar layout, or to the aligned size of the
|
||
* buffer for all channels for packed layout.
|
||
*
|
||
* The buffer in buf must be big enough to contain all the samples
|
||
* (use av_samples_get_buffer_size() to compute its minimum size),
|
||
* otherwise the audio_data pointers will point to invalid data.
|
||
*
|
||
* @see enum AVSampleFormat
|
||
* The documentation for AVSampleFormat describes the data layout.
|
||
*
|
||
* @param[out] audio_data array to be filled with the pointer for each channel
|
||
* @param[out] linesize calculated linesize, may be NULL
|
||
* @param buf the pointer to a buffer containing the samples
|
||
* @param nb_channels the number of channels
|
||
* @param nb_samples the number of samples in a single channel
|
||
* @param sample_fmt the sample format
|
||
* @param align buffer size alignment (0 = default, 1 = no alignment)
|
||
* @return minimum size in bytes required for the buffer on success,
|
||
* or a negative error code on failure
|
||
*/
|
||
av_samples_fill_arrays :: (audio_data: **u8, linesize: *s32, buf: *u8, nb_channels: s32, nb_samples: s32, sample_fmt: AVSampleFormat, align: s32) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Allocate a samples buffer for nb_samples samples, and fill data pointers and
|
||
* linesize accordingly.
|
||
* The allocated samples buffer can be freed by using av_freep(&audio_data[0])
|
||
* Allocated data will be initialized to silence.
|
||
*
|
||
* @see enum AVSampleFormat
|
||
* The documentation for AVSampleFormat describes the data layout.
|
||
*
|
||
* @param[out] audio_data array to be filled with the pointer for each channel
|
||
* @param[out] linesize aligned size for audio buffer(s), may be NULL
|
||
* @param nb_channels number of audio channels
|
||
* @param nb_samples number of samples per channel
|
||
* @param sample_fmt the sample format
|
||
* @param align buffer size alignment (0 = default, 1 = no alignment)
|
||
* @return >=0 on success or a negative error code on failure
|
||
* @todo return the size of the allocated buffer in case of success at the next bump
|
||
* @see av_samples_fill_arrays()
|
||
* @see av_samples_alloc_array_and_samples()
|
||
*/
|
||
av_samples_alloc :: (audio_data: **u8, linesize: *s32, nb_channels: s32, nb_samples: s32, sample_fmt: AVSampleFormat, align: s32) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Allocate a data pointers array, samples buffer for nb_samples
|
||
* samples, and fill data pointers and linesize accordingly.
|
||
*
|
||
* This is the same as av_samples_alloc(), but also allocates the data
|
||
* pointers array.
|
||
*
|
||
* @see av_samples_alloc()
|
||
*/
|
||
av_samples_alloc_array_and_samples :: (audio_data: ***u8, linesize: *s32, nb_channels: s32, nb_samples: s32, sample_fmt: AVSampleFormat, align: s32) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Copy samples from src to dst.
|
||
*
|
||
* @param dst destination array of pointers to data planes
|
||
* @param src source array of pointers to data planes
|
||
* @param dst_offset offset in samples at which the data will be written to dst
|
||
* @param src_offset offset in samples at which the data will be read from src
|
||
* @param nb_samples number of samples to be copied
|
||
* @param nb_channels number of audio channels
|
||
* @param sample_fmt audio sample format
|
||
*/
|
||
av_samples_copy :: (dst: **u8, src: **u8, dst_offset: s32, src_offset: s32, nb_samples: s32, nb_channels: s32, sample_fmt: AVSampleFormat) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Fill an audio buffer with silence.
|
||
*
|
||
* @param audio_data array of pointers to data planes
|
||
* @param offset offset in samples at which to start filling
|
||
* @param nb_samples number of samples to fill
|
||
* @param nb_channels number of audio channels
|
||
* @param sample_fmt audio sample format
|
||
*/
|
||
av_samples_set_silence :: (audio_data: **u8, offset: s32, nb_samples: s32, nb_channels: s32, sample_fmt: AVSampleFormat) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Return the LIBAVUTIL_VERSION_INT constant.
|
||
*/
|
||
avutil_version :: () -> u32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Return an informative version string. This usually is the actual release
|
||
* version number or a git commit description. This string has no fixed format
|
||
* and can change any time. It should never be parsed by code.
|
||
*/
|
||
av_version_info :: () -> *u8 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Return the libavutil build-time configuration.
|
||
*/
|
||
avutil_configuration :: () -> *u8 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Return the libavutil license.
|
||
*/
|
||
avutil_license :: () -> *u8 #foreign libavutil_58;
|
||
|
||
/**
|
||
* @addtogroup lavu_media Media Type
|
||
* @brief Media Type
|
||
*/
|
||
AVMediaType :: enum s32 {
|
||
UNKNOWN :: -1;
|
||
VIDEO :: 0;
|
||
AUDIO :: 1;
|
||
DATA :: 2;
|
||
SUBTITLE :: 3;
|
||
ATTACHMENT :: 4;
|
||
NB :: 5;
|
||
|
||
AVMEDIA_TYPE_UNKNOWN :: UNKNOWN;
|
||
AVMEDIA_TYPE_VIDEO :: VIDEO;
|
||
AVMEDIA_TYPE_AUDIO :: AUDIO;
|
||
AVMEDIA_TYPE_DATA :: DATA;
|
||
AVMEDIA_TYPE_SUBTITLE :: SUBTITLE;
|
||
AVMEDIA_TYPE_ATTACHMENT :: ATTACHMENT;
|
||
AVMEDIA_TYPE_NB :: NB;
|
||
}
|
||
|
||
/**
|
||
* Return a string describing the media_type enum, NULL if media_type
|
||
* is unknown.
|
||
*/
|
||
av_get_media_type_string :: (media_type: AVMediaType) -> *u8 #foreign libavutil_58;
|
||
|
||
/**
|
||
* @}
|
||
* @}
|
||
* @defgroup lavu_picture Image related
|
||
*
|
||
* AVPicture types, pixel formats and basic image planes manipulation.
|
||
*
|
||
* @{
|
||
*/
|
||
AVPictureType :: enum u32 {
|
||
NONE :: 0;
|
||
I :: 1;
|
||
P :: 2;
|
||
B :: 3;
|
||
S :: 4;
|
||
SI :: 5;
|
||
SP :: 6;
|
||
BI :: 7;
|
||
|
||
AV_PICTURE_TYPE_NONE :: NONE;
|
||
AV_PICTURE_TYPE_I :: I;
|
||
AV_PICTURE_TYPE_P :: P;
|
||
AV_PICTURE_TYPE_B :: B;
|
||
AV_PICTURE_TYPE_S :: S;
|
||
AV_PICTURE_TYPE_SI :: SI;
|
||
AV_PICTURE_TYPE_SP :: SP;
|
||
AV_PICTURE_TYPE_BI :: BI;
|
||
}
|
||
|
||
/**
|
||
* Return a single letter to describe the given picture type
|
||
* pict_type.
|
||
*
|
||
* @param[in] pict_type the picture type @return a single character
|
||
* representing the picture type, '?' if pict_type is unknown
|
||
*/
|
||
av_get_picture_type_char :: (pict_type: AVPictureType) -> u8 #foreign libavutil_58;
|
||
|
||
av_log2 :: (v: u32) -> s32 #foreign libavutil_58;
|
||
|
||
av_log2_16bit :: (v: u32) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Allocate a memory block with alignment suitable for all memory accesses
|
||
* (including vectors if available on the CPU).
|
||
*
|
||
* @param size Size in bytes for the memory block to be allocated
|
||
* @return Pointer to the allocated block, or `NULL` if the block cannot
|
||
* be allocated
|
||
* @see av_mallocz()
|
||
*/
|
||
av_malloc :: (size: u64) -> *void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Allocate a memory block with alignment suitable for all memory accesses
|
||
* (including vectors if available on the CPU) and zero all the bytes of the
|
||
* block.
|
||
*
|
||
* @param size Size in bytes for the memory block to be allocated
|
||
* @return Pointer to the allocated block, or `NULL` if it cannot be allocated
|
||
* @see av_malloc()
|
||
*/
|
||
av_mallocz :: (size: u64) -> *void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Allocate a memory block for an array with av_malloc().
|
||
*
|
||
* The allocated memory will have size `size * nmemb` bytes.
|
||
*
|
||
* @param nmemb Number of element
|
||
* @param size Size of a single element
|
||
* @return Pointer to the allocated block, or `NULL` if the block cannot
|
||
* be allocated
|
||
* @see av_malloc()
|
||
*/
|
||
av_malloc_array :: (nmemb: u64, size: u64) -> *void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Allocate a memory block for an array with av_mallocz().
|
||
*
|
||
* The allocated memory will have size `size * nmemb` bytes.
|
||
*
|
||
* @param nmemb Number of elements
|
||
* @param size Size of the single element
|
||
* @return Pointer to the allocated block, or `NULL` if the block cannot
|
||
* be allocated
|
||
*
|
||
* @see av_mallocz()
|
||
* @see av_malloc_array()
|
||
*/
|
||
av_calloc :: (nmemb: u64, size: u64) -> *void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Allocate, reallocate, or free a block of memory.
|
||
*
|
||
* If `ptr` is `NULL` and `size` > 0, allocate a new block. Otherwise, expand or
|
||
* shrink that block of memory according to `size`.
|
||
*
|
||
* @param ptr Pointer to a memory block already allocated with
|
||
* av_realloc() or `NULL`
|
||
* @param size Size in bytes of the memory block to be allocated or
|
||
* reallocated
|
||
*
|
||
* @return Pointer to a newly-reallocated block or `NULL` if the block
|
||
* cannot be reallocated
|
||
*
|
||
* @warning Unlike av_malloc(), the returned pointer is not guaranteed to be
|
||
* correctly aligned. The returned pointer must be freed after even
|
||
* if size is zero.
|
||
* @see av_fast_realloc()
|
||
* @see av_reallocp()
|
||
*/
|
||
av_realloc :: (ptr: *void, size: u64) -> *void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Allocate, reallocate, or free a block of memory through a pointer to a
|
||
* pointer.
|
||
*
|
||
* If `*ptr` is `NULL` and `size` > 0, allocate a new block. If `size` is
|
||
* zero, free the memory block pointed to by `*ptr`. Otherwise, expand or
|
||
* shrink that block of memory according to `size`.
|
||
*
|
||
* @param[in,out] ptr Pointer to a pointer to a memory block already allocated
|
||
* with av_realloc(), or a pointer to `NULL`. The pointer
|
||
* is updated on success, or freed on failure.
|
||
* @param[in] size Size in bytes for the memory block to be allocated or
|
||
* reallocated
|
||
*
|
||
* @return Zero on success, an AVERROR error code on failure
|
||
*
|
||
* @warning Unlike av_malloc(), the allocated memory is not guaranteed to be
|
||
* correctly aligned.
|
||
*/
|
||
av_reallocp :: (ptr: *void, size: u64) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Allocate, reallocate, or free a block of memory.
|
||
*
|
||
* This function does the same thing as av_realloc(), except:
|
||
* - It takes two size arguments and allocates `nelem * elsize` bytes,
|
||
* after checking the result of the multiplication for integer overflow.
|
||
* - It frees the input block in case of failure, thus avoiding the memory
|
||
* leak with the classic
|
||
* @code{.c}
|
||
* buf = realloc(buf);
|
||
* if (!buf)
|
||
* return -1;
|
||
* @endcode
|
||
* pattern.
|
||
*/
|
||
av_realloc_f :: (ptr: *void, nelem: u64, elsize: u64) -> *void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Allocate, reallocate, or free an array.
|
||
*
|
||
* If `ptr` is `NULL` and `nmemb` > 0, allocate a new block.
|
||
*
|
||
* @param ptr Pointer to a memory block already allocated with
|
||
* av_realloc() or `NULL`
|
||
* @param nmemb Number of elements in the array
|
||
* @param size Size of the single element of the array
|
||
*
|
||
* @return Pointer to a newly-reallocated block or NULL if the block
|
||
* cannot be reallocated
|
||
*
|
||
* @warning Unlike av_malloc(), the allocated memory is not guaranteed to be
|
||
* correctly aligned. The returned pointer must be freed after even if
|
||
* nmemb is zero.
|
||
* @see av_reallocp_array()
|
||
*/
|
||
av_realloc_array :: (ptr: *void, nmemb: u64, size: u64) -> *void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Allocate, reallocate an array through a pointer to a pointer.
|
||
*
|
||
* If `*ptr` is `NULL` and `nmemb` > 0, allocate a new block.
|
||
*
|
||
* @param[in,out] ptr Pointer to a pointer to a memory block already
|
||
* allocated with av_realloc(), or a pointer to `NULL`.
|
||
* The pointer is updated on success, or freed on failure.
|
||
* @param[in] nmemb Number of elements
|
||
* @param[in] size Size of the single element
|
||
*
|
||
* @return Zero on success, an AVERROR error code on failure
|
||
*
|
||
* @warning Unlike av_malloc(), the allocated memory is not guaranteed to be
|
||
* correctly aligned. *ptr must be freed after even if nmemb is zero.
|
||
*/
|
||
av_reallocp_array :: (ptr: *void, nmemb: u64, size: u64) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Reallocate the given buffer if it is not large enough, otherwise do nothing.
|
||
*
|
||
* If the given buffer is `NULL`, then a new uninitialized buffer is allocated.
|
||
*
|
||
* If the given buffer is not large enough, and reallocation fails, `NULL` is
|
||
* returned and `*size` is set to 0, but the original buffer is not changed or
|
||
* freed.
|
||
*
|
||
* A typical use pattern follows:
|
||
*
|
||
* @code{.c}
|
||
* uint8_t *buf = ...;
|
||
* uint8_t *new_buf = av_fast_realloc(buf, ¤t_size, size_needed);
|
||
* if (!new_buf) {
|
||
* // Allocation failed; clean up original buffer
|
||
* av_freep(&buf);
|
||
* return AVERROR(ENOMEM);
|
||
* }
|
||
* @endcode
|
||
*
|
||
* @param[in,out] ptr Already allocated buffer, or `NULL`
|
||
* @param[in,out] size Pointer to the size of buffer `ptr`. `*size` is
|
||
* updated to the new allocated size, in particular 0
|
||
* in case of failure.
|
||
* @param[in] min_size Desired minimal size of buffer `ptr`
|
||
* @return `ptr` if the buffer is large enough, a pointer to newly reallocated
|
||
* buffer if the buffer was not large enough, or `NULL` in case of
|
||
* error
|
||
* @see av_realloc()
|
||
* @see av_fast_malloc()
|
||
*/
|
||
av_fast_realloc :: (ptr: *void, size: *u32, min_size: u64) -> *void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Allocate a buffer, reusing the given one if large enough.
|
||
*
|
||
* Contrary to av_fast_realloc(), the current buffer contents might not be
|
||
* preserved and on error the old buffer is freed, thus no special handling to
|
||
* avoid memleaks is necessary.
|
||
*
|
||
* `*ptr` is allowed to be `NULL`, in which case allocation always happens if
|
||
* `size_needed` is greater than 0.
|
||
*
|
||
* @code{.c}
|
||
* uint8_t *buf = ...;
|
||
* av_fast_malloc(&buf, ¤t_size, size_needed);
|
||
* if (!buf) {
|
||
* // Allocation failed; buf already freed
|
||
* return AVERROR(ENOMEM);
|
||
* }
|
||
* @endcode
|
||
*
|
||
* @param[in,out] ptr Pointer to pointer to an already allocated buffer.
|
||
* `*ptr` will be overwritten with pointer to new
|
||
* buffer on success or `NULL` on failure
|
||
* @param[in,out] size Pointer to the size of buffer `*ptr`. `*size` is
|
||
* updated to the new allocated size, in particular 0
|
||
* in case of failure.
|
||
* @param[in] min_size Desired minimal size of buffer `*ptr`
|
||
* @see av_realloc()
|
||
* @see av_fast_mallocz()
|
||
*/
|
||
av_fast_malloc :: (ptr: *void, size: *u32, min_size: u64) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Allocate and clear a buffer, reusing the given one if large enough.
|
||
*
|
||
* Like av_fast_malloc(), but all newly allocated space is initially cleared.
|
||
* Reused buffer is not cleared.
|
||
*
|
||
* `*ptr` is allowed to be `NULL`, in which case allocation always happens if
|
||
* `size_needed` is greater than 0.
|
||
*
|
||
* @param[in,out] ptr Pointer to pointer to an already allocated buffer.
|
||
* `*ptr` will be overwritten with pointer to new
|
||
* buffer on success or `NULL` on failure
|
||
* @param[in,out] size Pointer to the size of buffer `*ptr`. `*size` is
|
||
* updated to the new allocated size, in particular 0
|
||
* in case of failure.
|
||
* @param[in] min_size Desired minimal size of buffer `*ptr`
|
||
* @see av_fast_malloc()
|
||
*/
|
||
av_fast_mallocz :: (ptr: *void, size: *u32, min_size: u64) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Free a memory block which has been allocated with a function of av_malloc()
|
||
* or av_realloc() family.
|
||
*
|
||
* @param ptr Pointer to the memory block which should be freed.
|
||
*
|
||
* @note `ptr = NULL` is explicitly allowed.
|
||
* @note It is recommended that you use av_freep() instead, to prevent leaving
|
||
* behind dangling pointers.
|
||
* @see av_freep()
|
||
*/
|
||
av_free :: (ptr: *void) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Free a memory block which has been allocated with a function of av_malloc()
|
||
* or av_realloc() family, and set the pointer pointing to it to `NULL`.
|
||
*
|
||
* @code{.c}
|
||
* uint8_t *buf = av_malloc(16);
|
||
* av_free(buf);
|
||
* // buf now contains a dangling pointer to freed memory, and accidental
|
||
* // dereference of buf will result in a use-after-free, which may be a
|
||
* // security risk.
|
||
*
|
||
* uint8_t *buf = av_malloc(16);
|
||
* av_freep(&buf);
|
||
* // buf is now NULL, and accidental dereference will only result in a
|
||
* // NULL-pointer dereference.
|
||
* @endcode
|
||
*
|
||
* @param ptr Pointer to the pointer to the memory block which should be freed
|
||
* @note `*ptr = NULL` is safe and leads to no action.
|
||
* @see av_free()
|
||
*/
|
||
av_freep :: (ptr: *void) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Duplicate a string.
|
||
*
|
||
* @param s String to be duplicated
|
||
* @return Pointer to a newly-allocated string containing a
|
||
* copy of `s` or `NULL` if the string cannot be allocated
|
||
* @see av_strndup()
|
||
*/
|
||
av_strdup :: (s: *u8) -> *u8 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Duplicate a substring of a string.
|
||
*
|
||
* @param s String to be duplicated
|
||
* @param len Maximum length of the resulting string (not counting the
|
||
* terminating byte)
|
||
* @return Pointer to a newly-allocated string containing a
|
||
* substring of `s` or `NULL` if the string cannot be allocated
|
||
*/
|
||
av_strndup :: (s: *u8, len: u64) -> *u8 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Duplicate a buffer with av_malloc().
|
||
*
|
||
* @param p Buffer to be duplicated
|
||
* @param size Size in bytes of the buffer copied
|
||
* @return Pointer to a newly allocated buffer containing a
|
||
* copy of `p` or `NULL` if the buffer cannot be allocated
|
||
*/
|
||
av_memdup :: (p: *void, size: u64) -> *void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Overlapping memcpy() implementation.
|
||
*
|
||
* @param dst Destination buffer
|
||
* @param back Number of bytes back to start copying (i.e. the initial size of
|
||
* the overlapping window); must be > 0
|
||
* @param cnt Number of bytes to copy; must be >= 0
|
||
*
|
||
* @note `cnt > back` is valid, this will copy the bytes we just copied,
|
||
* thus creating a repeating pattern with a period length of `back`.
|
||
*/
|
||
av_memcpy_backptr :: (dst: *u8, back: s32, cnt: s32) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Add the pointer to an element to a dynamic array.
|
||
*
|
||
* The array to grow is supposed to be an array of pointers to
|
||
* structures, and the element to add must be a pointer to an already
|
||
* allocated structure.
|
||
*
|
||
* The array is reallocated when its size reaches powers of 2.
|
||
* Therefore, the amortized cost of adding an element is constant.
|
||
*
|
||
* In case of success, the pointer to the array is updated in order to
|
||
* point to the new grown array, and the number pointed to by `nb_ptr`
|
||
* is incremented.
|
||
* In case of failure, the array is freed, `*tab_ptr` is set to `NULL` and
|
||
* `*nb_ptr` is set to 0.
|
||
*
|
||
* @param[in,out] tab_ptr Pointer to the array to grow
|
||
* @param[in,out] nb_ptr Pointer to the number of elements in the array
|
||
* @param[in] elem Element to add
|
||
* @see av_dynarray_add_nofree(), av_dynarray2_add()
|
||
*/
|
||
av_dynarray_add :: (tab_ptr: *void, nb_ptr: *s32, elem: *void) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Add an element to a dynamic array.
|
||
*
|
||
* Function has the same functionality as av_dynarray_add(),
|
||
* but it doesn't free memory on fails. It returns error code
|
||
* instead and leave current buffer untouched.
|
||
*
|
||
* @return >=0 on success, negative otherwise
|
||
* @see av_dynarray_add(), av_dynarray2_add()
|
||
*/
|
||
av_dynarray_add_nofree :: (tab_ptr: *void, nb_ptr: *s32, elem: *void) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Add an element of size `elem_size` to a dynamic array.
|
||
*
|
||
* The array is reallocated when its number of elements reaches powers of 2.
|
||
* Therefore, the amortized cost of adding an element is constant.
|
||
*
|
||
* In case of success, the pointer to the array is updated in order to
|
||
* point to the new grown array, and the number pointed to by `nb_ptr`
|
||
* is incremented.
|
||
* In case of failure, the array is freed, `*tab_ptr` is set to `NULL` and
|
||
* `*nb_ptr` is set to 0.
|
||
*
|
||
* @param[in,out] tab_ptr Pointer to the array to grow
|
||
* @param[in,out] nb_ptr Pointer to the number of elements in the array
|
||
* @param[in] elem_size Size in bytes of an element in the array
|
||
* @param[in] elem_data Pointer to the data of the element to add. If
|
||
* `NULL`, the space of the newly added element is
|
||
* allocated but left uninitialized.
|
||
*
|
||
* @return Pointer to the data of the element to copy in the newly allocated
|
||
* space
|
||
* @see av_dynarray_add(), av_dynarray_add_nofree()
|
||
*/
|
||
av_dynarray2_add :: (tab_ptr: **void, nb_ptr: *s32, elem_size: u64, elem_data: *u8) -> *void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Multiply two `size_t` values checking for overflow.
|
||
*
|
||
* @param[in] a Operand of multiplication
|
||
* @param[in] b Operand of multiplication
|
||
* @param[out] r Pointer to the result of the operation
|
||
* @return 0 on success, AVERROR(EINVAL) on overflow
|
||
*/
|
||
av_size_mult :: (a: u64, b: u64, r: *u64) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Set the maximum size that may be allocated in one block.
|
||
*
|
||
* The value specified with this function is effective for all libavutil's @ref
|
||
* lavu_mem_funcs "heap management functions."
|
||
*
|
||
* By default, the max value is defined as `INT_MAX`.
|
||
*
|
||
* @param max Value to be set as the new maximum size
|
||
*
|
||
* @warning Exercise extreme caution when using this function. Don't touch
|
||
* this if you do not understand the full consequence of doing so.
|
||
*/
|
||
av_max_alloc :: (max: u64) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Put a description of the AVERROR code errnum in errbuf.
|
||
* In case of failure the global variable errno is set to indicate the
|
||
* error. Even in case of failure av_strerror() will print a generic
|
||
* error message indicating the errnum provided to errbuf.
|
||
*
|
||
* @param errnum error code to describe
|
||
* @param errbuf buffer to which description is written
|
||
* @param errbuf_size the size in bytes of errbuf
|
||
* @return 0 on success, a negative value if a description for errnum
|
||
* cannot be found
|
||
*/
|
||
av_strerror :: (errnum: s32, errbuf: *u8, errbuf_size: u64) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Rational number (pair of numerator and denominator).
|
||
*/
|
||
AVRational :: struct {
|
||
num: s32; ///< Numerator
|
||
den: s32; ///< Denominator
|
||
}
|
||
|
||
/**
|
||
* Reduce a fraction.
|
||
*
|
||
* This is useful for framerate calculations.
|
||
*
|
||
* @param[out] dst_num Destination numerator
|
||
* @param[out] dst_den Destination denominator
|
||
* @param[in] num Source numerator
|
||
* @param[in] den Source denominator
|
||
* @param[in] max Maximum allowed values for `dst_num` & `dst_den`
|
||
* @return 1 if the operation is exact, 0 otherwise
|
||
*/
|
||
av_reduce :: (dst_num: *s32, dst_den: *s32, num: s64, den: s64, max: s64) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Multiply two rationals.
|
||
* @param b First rational
|
||
* @param c Second rational
|
||
* @return b*c
|
||
*/
|
||
av_mul_q :: (b: AVRational, c: AVRational) -> AVRational #foreign libavutil_58;
|
||
|
||
/**
|
||
* Divide one rational by another.
|
||
* @param b First rational
|
||
* @param c Second rational
|
||
* @return b/c
|
||
*/
|
||
av_div_q :: (b: AVRational, c: AVRational) -> AVRational #foreign libavutil_58;
|
||
|
||
/**
|
||
* Add two rationals.
|
||
* @param b First rational
|
||
* @param c Second rational
|
||
* @return b+c
|
||
*/
|
||
av_add_q :: (b: AVRational, c: AVRational) -> AVRational #foreign libavutil_58;
|
||
|
||
/**
|
||
* Subtract one rational from another.
|
||
* @param b First rational
|
||
* @param c Second rational
|
||
* @return b-c
|
||
*/
|
||
av_sub_q :: (b: AVRational, c: AVRational) -> AVRational #foreign libavutil_58;
|
||
|
||
/**
|
||
* Convert a double precision floating point number to a rational.
|
||
*
|
||
* In case of infinity, the returned value is expressed as `{1, 0}` or
|
||
* `{-1, 0}` depending on the sign.
|
||
*
|
||
* @param d `double` to convert
|
||
* @param max Maximum allowed numerator and denominator
|
||
* @return `d` in AVRational form
|
||
* @see av_q2d()
|
||
*/
|
||
av_d2q :: (d: float64, max: s32) -> AVRational #foreign libavutil_58;
|
||
|
||
/**
|
||
* Find which of the two rationals is closer to another rational.
|
||
*
|
||
* @param q Rational to be compared against
|
||
* @param q1 Rational to be tested
|
||
* @param q2 Rational to be tested
|
||
* @return One of the following values:
|
||
* - 1 if `q1` is nearer to `q` than `q2`
|
||
* - -1 if `q2` is nearer to `q` than `q1`
|
||
* - 0 if they have the same distance
|
||
*/
|
||
av_nearer_q :: (q: AVRational, q1: AVRational, q2: AVRational) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Find the value in a list of rationals nearest a given reference rational.
|
||
*
|
||
* @param q Reference rational
|
||
* @param q_list Array of rationals terminated by `{0, 0}`
|
||
* @return Index of the nearest value found in the array
|
||
*/
|
||
av_find_nearest_q_idx :: (q: AVRational, q_list: *AVRational) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Convert an AVRational to a IEEE 32-bit `float` expressed in fixed-point
|
||
* format.
|
||
*
|
||
* @param q Rational to be converted
|
||
* @return Equivalent floating-point value, expressed as an unsigned 32-bit
|
||
* integer.
|
||
* @note The returned value is platform-indepedant.
|
||
*/
|
||
av_q2intfloat :: (q: AVRational) -> u32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Return the best rational so that a and b are multiple of it.
|
||
* If the resulting denominator is larger than max_den, return def.
|
||
*/
|
||
av_gcd_q :: (a: AVRational, b: AVRational, max_den: s32, def: AVRational) -> AVRational #foreign libavutil_58;
|
||
|
||
av_intfloat32 :: struct {
|
||
i: u32;
|
||
|
||
#overlay (i) f: float;
|
||
}
|
||
|
||
av_intfloat64 :: struct {
|
||
i: u64;
|
||
|
||
#overlay (i) f: float64;
|
||
}
|
||
|
||
/**
|
||
* Rounding methods.
|
||
*/
|
||
AVRounding :: enum u32 {
|
||
ZERO :: 0;
|
||
INF :: 1;
|
||
DOWN :: 2;
|
||
UP :: 3;
|
||
NEAR_INF :: 5;
|
||
|
||
PASS_MINMAX :: 8192;
|
||
|
||
AV_ROUND_ZERO :: ZERO;
|
||
AV_ROUND_INF :: INF;
|
||
AV_ROUND_DOWN :: DOWN;
|
||
AV_ROUND_UP :: UP;
|
||
AV_ROUND_NEAR_INF :: NEAR_INF;
|
||
|
||
AV_ROUND_PASS_MINMAX :: PASS_MINMAX;
|
||
}
|
||
|
||
/**
|
||
* Compute the greatest common divisor of two integer operands.
|
||
*
|
||
* @param a Operand
|
||
* @param b Operand
|
||
* @return GCD of a and b up to sign; if a >= 0 and b >= 0, return value is >= 0;
|
||
* if a == 0 and b == 0, returns 0.
|
||
*/
|
||
av_gcd :: (a: s64, b: s64) -> s64 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Rescale a 64-bit integer with rounding to nearest.
|
||
*
|
||
* The operation is mathematically equivalent to `a * b / c`, but writing that
|
||
* directly can overflow.
|
||
*
|
||
* This function is equivalent to av_rescale_rnd() with #AV_ROUND_NEAR_INF.
|
||
*
|
||
* @see av_rescale_rnd(), av_rescale_q(), av_rescale_q_rnd()
|
||
*/
|
||
av_rescale :: (a: s64, b: s64, c: s64) -> s64 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Rescale a 64-bit integer with specified rounding.
|
||
*
|
||
* The operation is mathematically equivalent to `a * b / c`, but writing that
|
||
* directly can overflow, and does not support different rounding methods.
|
||
* If the result is not representable then INT64_MIN is returned.
|
||
*
|
||
* @see av_rescale(), av_rescale_q(), av_rescale_q_rnd()
|
||
*/
|
||
av_rescale_rnd :: (a: s64, b: s64, c: s64, rnd: AVRounding) -> s64 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Rescale a 64-bit integer by 2 rational numbers.
|
||
*
|
||
* The operation is mathematically equivalent to `a * bq / cq`.
|
||
*
|
||
* This function is equivalent to av_rescale_q_rnd() with #AV_ROUND_NEAR_INF.
|
||
*
|
||
* @see av_rescale(), av_rescale_rnd(), av_rescale_q_rnd()
|
||
*/
|
||
av_rescale_q :: (a: s64, bq: AVRational, cq: AVRational) -> s64 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Rescale a 64-bit integer by 2 rational numbers with specified rounding.
|
||
*
|
||
* The operation is mathematically equivalent to `a * bq / cq`.
|
||
*
|
||
* @see av_rescale(), av_rescale_rnd(), av_rescale_q()
|
||
*/
|
||
av_rescale_q_rnd :: (a: s64, bq: AVRational, cq: AVRational, rnd: AVRounding) -> s64 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Compare two timestamps each in its own time base.
|
||
*
|
||
* @return One of the following values:
|
||
* - -1 if `ts_a` is before `ts_b`
|
||
* - 1 if `ts_a` is after `ts_b`
|
||
* - 0 if they represent the same position
|
||
*
|
||
* @warning
|
||
* The result of the function is undefined if one of the timestamps is outside
|
||
* the `int64_t` range when represented in the other's timebase.
|
||
*/
|
||
av_compare_ts :: (ts_a: s64, tb_a: AVRational, ts_b: s64, tb_b: AVRational) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Compare the remainders of two integer operands divided by a common divisor.
|
||
*
|
||
* In other words, compare the least significant `log2(mod)` bits of integers
|
||
* `a` and `b`.
|
||
*
|
||
* @code{.c}
|
||
* av_compare_mod(0x11, 0x02, 0x10) < 0 // since 0x11 % 0x10 (0x1) < 0x02 % 0x10 (0x2)
|
||
* av_compare_mod(0x11, 0x02, 0x20) > 0 // since 0x11 % 0x20 (0x11) > 0x02 % 0x20 (0x02)
|
||
* @endcode
|
||
*
|
||
* @param a Operand
|
||
* @param b Operand
|
||
* @param mod Divisor; must be a power of 2
|
||
* @return
|
||
* - a negative value if `a % mod < b % mod`
|
||
* - a positive value if `a % mod > b % mod`
|
||
* - zero if `a % mod == b % mod`
|
||
*/
|
||
av_compare_mod :: (a: u64, b: u64, mod: u64) -> s64 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Rescale a timestamp while preserving known durations.
|
||
*
|
||
* This function is designed to be called per audio packet to scale the input
|
||
* timestamp to a different time base. Compared to a simple av_rescale_q()
|
||
* call, this function is robust against possible inconsistent frame durations.
|
||
*
|
||
* The `last` parameter is a state variable that must be preserved for all
|
||
* subsequent calls for the same stream. For the first call, `*last` should be
|
||
* initialized to #AV_NOPTS_VALUE.
|
||
*
|
||
* @param[in] in_tb Input time base
|
||
* @param[in] in_ts Input timestamp
|
||
* @param[in] fs_tb Duration time base; typically this is finer-grained
|
||
* (greater) than `in_tb` and `out_tb`
|
||
* @param[in] duration Duration till the next call to this function (i.e.
|
||
* duration of the current packet/frame)
|
||
* @param[in,out] last Pointer to a timestamp expressed in terms of
|
||
* `fs_tb`, acting as a state variable
|
||
* @param[in] out_tb Output timebase
|
||
* @return Timestamp expressed in terms of `out_tb`
|
||
*
|
||
* @note In the context of this function, "duration" is in term of samples, not
|
||
* seconds.
|
||
*/
|
||
av_rescale_delta :: (in_tb: AVRational, in_ts: s64, fs_tb: AVRational, duration: s32, last: *s64, out_tb: AVRational) -> s64 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Add a value to a timestamp.
|
||
*
|
||
* This function guarantees that when the same value is repeatly added that
|
||
* no accumulation of rounding errors occurs.
|
||
*
|
||
* @param[in] ts Input timestamp
|
||
* @param[in] ts_tb Input timestamp time base
|
||
* @param[in] inc Value to be added
|
||
* @param[in] inc_tb Time base of `inc`
|
||
*/
|
||
av_add_stable :: (ts_tb: AVRational, ts: s64, inc_tb: AVRational, inc: s64) -> s64 #foreign libavutil_58;
|
||
|
||
AVClassCategory :: enum u32 {
|
||
NA :: 0;
|
||
INPUT :: 1;
|
||
OUTPUT :: 2;
|
||
MUXER :: 3;
|
||
DEMUXER :: 4;
|
||
ENCODER :: 5;
|
||
DECODER :: 6;
|
||
FILTER :: 7;
|
||
BITSTREAM_FILTER :: 8;
|
||
SWSCALER :: 9;
|
||
SWRESAMPLER :: 10;
|
||
DEVICE_VIDEO_OUTPUT :: 40;
|
||
DEVICE_VIDEO_INPUT :: 41;
|
||
DEVICE_AUDIO_OUTPUT :: 42;
|
||
DEVICE_AUDIO_INPUT :: 43;
|
||
DEVICE_OUTPUT :: 44;
|
||
DEVICE_INPUT :: 45;
|
||
NB :: 46;
|
||
|
||
AV_CLASS_CATEGORY_NA :: NA;
|
||
AV_CLASS_CATEGORY_INPUT :: INPUT;
|
||
AV_CLASS_CATEGORY_OUTPUT :: OUTPUT;
|
||
AV_CLASS_CATEGORY_MUXER :: MUXER;
|
||
AV_CLASS_CATEGORY_DEMUXER :: DEMUXER;
|
||
AV_CLASS_CATEGORY_ENCODER :: ENCODER;
|
||
AV_CLASS_CATEGORY_DECODER :: DECODER;
|
||
AV_CLASS_CATEGORY_FILTER :: FILTER;
|
||
AV_CLASS_CATEGORY_BITSTREAM_FILTER :: BITSTREAM_FILTER;
|
||
AV_CLASS_CATEGORY_SWSCALER :: SWSCALER;
|
||
AV_CLASS_CATEGORY_SWRESAMPLER :: SWRESAMPLER;
|
||
AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT :: DEVICE_VIDEO_OUTPUT;
|
||
AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT :: DEVICE_VIDEO_INPUT;
|
||
AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT :: DEVICE_AUDIO_OUTPUT;
|
||
AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT :: DEVICE_AUDIO_INPUT;
|
||
AV_CLASS_CATEGORY_DEVICE_OUTPUT :: DEVICE_OUTPUT;
|
||
AV_CLASS_CATEGORY_DEVICE_INPUT :: DEVICE_INPUT;
|
||
AV_CLASS_CATEGORY_NB :: NB;
|
||
}
|
||
|
||
AVOptionRanges :: struct {}
|
||
|
||
/**
|
||
* Describe the class of an AVClass context structure. That is an
|
||
* arbitrary struct of which the first field is a pointer to an
|
||
* AVClass struct (e.g. AVCodecContext, AVFormatContext etc.).
|
||
*/
|
||
AVClass :: struct {
|
||
/**
|
||
* The name of the class; usually it is the same name as the
|
||
* context structure type to which the AVClass is associated.
|
||
*/
|
||
class_name: *u8;
|
||
|
||
/**
|
||
* A pointer to a function which returns the name of a context
|
||
* instance ctx associated with the class.
|
||
*/
|
||
item_name: #type (ctx: *void) -> *u8 #c_call;
|
||
|
||
AVOption :: struct {}
|
||
/**
|
||
* a pointer to the first option specified in the class if any or NULL
|
||
*
|
||
* @see av_set_default_options()
|
||
*/
|
||
option: *AVOption;
|
||
|
||
/**
|
||
* LIBAVUTIL_VERSION with which this structure was created.
|
||
* This is used to allow fields to be added without requiring major
|
||
* version bumps everywhere.
|
||
*/
|
||
version: s32;
|
||
|
||
/**
|
||
* Offset in the structure where log_level_offset is stored.
|
||
* 0 means there is no such variable
|
||
*/
|
||
log_level_offset_offset: s32;
|
||
|
||
/**
|
||
* Offset in the structure where a pointer to the parent context for
|
||
* logging is stored. For example a decoder could pass its AVCodecContext
|
||
* to eval as such a parent context, which an av_log() implementation
|
||
* could then leverage to display the parent context.
|
||
* The offset can be NULL.
|
||
*/
|
||
parent_log_context_offset: s32;
|
||
|
||
/**
|
||
* Category used for visualization (like color)
|
||
* This is only set if the category is equal for all objects using this class.
|
||
* available since version (51 << 16 | 56 << 8 | 100)
|
||
*/
|
||
category: AVClassCategory;
|
||
|
||
/**
|
||
* Callback to return the category.
|
||
* available since version (51 << 16 | 59 << 8 | 100)
|
||
*/
|
||
get_category: #type (ctx: *void) -> AVClassCategory #c_call;
|
||
|
||
/**
|
||
* Callback to return the supported/allowed ranges.
|
||
* available since version (52.12)
|
||
*/
|
||
query_ranges: #type (unknown0: **AVOptionRanges, obj: *void, key: *u8, flags: s32) -> s32 #c_call;
|
||
|
||
/**
|
||
* Return next AVOptions-enabled child or NULL
|
||
*/
|
||
child_next: #type (obj: *void, prev: *void) -> *void #c_call;
|
||
|
||
/**
|
||
* Iterate over the AVClasses corresponding to potential AVOptions-enabled
|
||
* children.
|
||
*
|
||
* @param iter pointer to opaque iteration state. The caller must initialize
|
||
* *iter to NULL before the first call.
|
||
* @return AVClass for the next AVOptions-enabled child or NULL if there are
|
||
* no more such children.
|
||
*
|
||
* @note The difference between child_next and this is that child_next
|
||
* iterates over _already existing_ objects, while child_class_iterate
|
||
* iterates over _all possible_ children.
|
||
*/
|
||
child_class_iterate: #type (iter: **void) -> *AVClass #c_call;
|
||
}
|
||
|
||
/**
|
||
* Send the specified message to the log if the level is less than or equal
|
||
* to the current av_log_level. By default, all logging messages are sent to
|
||
* stderr. This behavior can be altered by setting a different logging callback
|
||
* function.
|
||
* @see av_log_set_callback
|
||
*
|
||
* @param avcl A pointer to an arbitrary struct of which the first field is a
|
||
* pointer to an AVClass struct or NULL if general log.
|
||
* @param level The importance level of the message expressed using a @ref
|
||
* lavu_log_constants "Logging Constant".
|
||
* @param fmt The format string (printf-compatible) that specifies how
|
||
* subsequent arguments are converted to output.
|
||
*/
|
||
av_log_CFormat :: (avcl: *void, level: s32, fmt: *u8, __args: ..Any) -> void #foreign libavutil_58 "av_log";
|
||
av_log :: (avcl: *void, level: s32, fmt: string, __args: ..Any) {
|
||
push_allocator(temp);
|
||
formatted_text_builder: String_Builder;
|
||
print_to_builder(*formatted_text_builder, fmt, ..__args);
|
||
append(*formatted_text_builder, "\0");
|
||
formatted_text := builder_to_string(*formatted_text_builder);
|
||
av_log_CFormat(avcl, level, "%s", formatted_text.data);
|
||
} @PrintLike
|
||
|
||
/**
|
||
* Send the specified message to the log once with the initial_level and then with
|
||
* the subsequent_level. By default, all logging messages are sent to
|
||
* stderr. This behavior can be altered by setting a different logging callback
|
||
* function.
|
||
* @see av_log
|
||
*
|
||
* @param avcl A pointer to an arbitrary struct of which the first field is a
|
||
* pointer to an AVClass struct or NULL if general log.
|
||
* @param initial_level importance level of the message expressed using a @ref
|
||
* lavu_log_constants "Logging Constant" for the first occurance.
|
||
* @param subsequent_level importance level of the message expressed using a @ref
|
||
* lavu_log_constants "Logging Constant" after the first occurance.
|
||
* @param fmt The format string (printf-compatible) that specifies how
|
||
* subsequent arguments are converted to output.
|
||
* @param state a variable to keep trak of if a message has already been printed
|
||
* this must be initialized to 0 before the first use. The same state
|
||
* must not be accessed by 2 Threads simultaneously.
|
||
*/
|
||
av_log_once_CFormat :: (avcl: *void, initial_level: s32, subsequent_level: s32, state: *s32, fmt: *u8, __args: ..Any) -> void #foreign libavutil_58 "av_log_once";
|
||
av_log_once :: (avcl: *void, initial_level: s32, subsequent_level: s32, state: *s32, fmt: string, __args: ..Any) {
|
||
push_allocator(temp);
|
||
formatted_text_builder: String_Builder;
|
||
print_to_builder(*formatted_text_builder, fmt, ..__args);
|
||
append(*formatted_text_builder, "\0");
|
||
formatted_text := builder_to_string(*formatted_text_builder);
|
||
av_log_once_CFormat(avcl, initial_level, subsequent_level, state, "%s", formatted_text.data);
|
||
} @PrintLike
|
||
|
||
/**
|
||
* Get the current log level
|
||
*
|
||
* @see lavu_log_constants
|
||
*
|
||
* @return Current log level
|
||
*/
|
||
av_log_get_level :: () -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Set the log level
|
||
*
|
||
* @see lavu_log_constants
|
||
*
|
||
* @param level Logging level
|
||
*/
|
||
av_log_set_level :: (level: s32) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Return the context name
|
||
*
|
||
* @param ctx The AVClass context
|
||
*
|
||
* @return The AVClass class_name
|
||
*/
|
||
av_default_item_name :: (ctx: *void) -> *u8 #foreign libavutil_58;
|
||
av_default_get_category :: (ptr: *void) -> AVClassCategory #foreign libavutil_58;
|
||
|
||
av_log_set_flags :: (arg: s32) -> void #foreign libavutil_58;
|
||
av_log_get_flags :: () -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Pixel format.
|
||
*
|
||
* @note
|
||
* AV_PIX_FMT_RGB32 is handled in an endian-specific manner. An RGBA
|
||
* color is put together as:
|
||
* (A << 24) | (R << 16) | (G << 8) | B
|
||
* This is stored as BGRA on little-endian CPU architectures and ARGB on
|
||
* big-endian CPUs.
|
||
*
|
||
* @note
|
||
* If the resolution is not a multiple of the chroma subsampling factor
|
||
* then the chroma plane resolution must be rounded up.
|
||
*
|
||
* @par
|
||
* When the pixel format is palettized RGB32 (AV_PIX_FMT_PAL8), the palettized
|
||
* image data is stored in AVFrame.data[0]. The palette is transported in
|
||
* AVFrame.data[1], is 1024 bytes long (256 4-byte entries) and is
|
||
* formatted the same as in AV_PIX_FMT_RGB32 described above (i.e., it is
|
||
* also endian-specific). Note also that the individual RGB32 palette
|
||
* components stored in AVFrame.data[1] should be in the range 0..255.
|
||
* This is important as many custom PAL8 video codecs that were designed
|
||
* to run on the IBM VGA graphics adapter use 6-bit palette components.
|
||
*
|
||
* @par
|
||
* For all the 8 bits per pixel formats, an RGB32 palette is in data[1] like
|
||
* for pal8. This palette is filled in automatically by the function
|
||
* allocating the picture.
|
||
*/
|
||
AVPixelFormat :: enum s32 {
|
||
NONE :: -1;
|
||
YUV420P :: 0;
|
||
YUYV422 :: 1;
|
||
RGB24 :: 2;
|
||
BGR24 :: 3;
|
||
YUV422P :: 4;
|
||
YUV444P :: 5;
|
||
YUV410P :: 6;
|
||
YUV411P :: 7;
|
||
GRAY8 :: 8;
|
||
MONOWHITE :: 9;
|
||
MONOBLACK :: 10;
|
||
PAL8 :: 11;
|
||
YUVJ420P :: 12;
|
||
YUVJ422P :: 13;
|
||
YUVJ444P :: 14;
|
||
UYVY422 :: 15;
|
||
UYYVYY411 :: 16;
|
||
BGR8 :: 17;
|
||
BGR4 :: 18;
|
||
BGR4_BYTE :: 19;
|
||
RGB8 :: 20;
|
||
RGB4 :: 21;
|
||
RGB4_BYTE :: 22;
|
||
NV12 :: 23;
|
||
NV21 :: 24;
|
||
|
||
ARGB :: 25;
|
||
RGBA :: 26;
|
||
ABGR :: 27;
|
||
BGRA :: 28;
|
||
|
||
GRAY16BE :: 29;
|
||
GRAY16LE :: 30;
|
||
YUV440P :: 31;
|
||
YUVJ440P :: 32;
|
||
YUVA420P :: 33;
|
||
RGB48BE :: 34;
|
||
RGB48LE :: 35;
|
||
|
||
RGB565BE :: 36;
|
||
RGB565LE :: 37;
|
||
RGB555BE :: 38;
|
||
RGB555LE :: 39;
|
||
|
||
BGR565BE :: 40;
|
||
BGR565LE :: 41;
|
||
BGR555BE :: 42;
|
||
BGR555LE :: 43;
|
||
|
||
VAAPI :: 44;
|
||
|
||
YUV420P16LE :: 45;
|
||
YUV420P16BE :: 46;
|
||
YUV422P16LE :: 47;
|
||
YUV422P16BE :: 48;
|
||
YUV444P16LE :: 49;
|
||
YUV444P16BE :: 50;
|
||
DXVA2_VLD :: 51;
|
||
|
||
RGB444LE :: 52;
|
||
RGB444BE :: 53;
|
||
BGR444LE :: 54;
|
||
BGR444BE :: 55;
|
||
YA8 :: 56;
|
||
|
||
Y400A :: 56;
|
||
GRAY8A :: 56;
|
||
|
||
BGR48BE :: 57;
|
||
BGR48LE :: 58;
|
||
|
||
YUV420P9BE :: 59;
|
||
YUV420P9LE :: 60;
|
||
YUV420P10BE :: 61;
|
||
YUV420P10LE :: 62;
|
||
YUV422P10BE :: 63;
|
||
YUV422P10LE :: 64;
|
||
YUV444P9BE :: 65;
|
||
YUV444P9LE :: 66;
|
||
YUV444P10BE :: 67;
|
||
YUV444P10LE :: 68;
|
||
YUV422P9BE :: 69;
|
||
YUV422P9LE :: 70;
|
||
GBRP :: 71;
|
||
GBR24P :: 71;
|
||
GBRP9BE :: 72;
|
||
GBRP9LE :: 73;
|
||
GBRP10BE :: 74;
|
||
GBRP10LE :: 75;
|
||
GBRP16BE :: 76;
|
||
GBRP16LE :: 77;
|
||
YUVA422P :: 78;
|
||
YUVA444P :: 79;
|
||
YUVA420P9BE :: 80;
|
||
YUVA420P9LE :: 81;
|
||
YUVA422P9BE :: 82;
|
||
YUVA422P9LE :: 83;
|
||
YUVA444P9BE :: 84;
|
||
YUVA444P9LE :: 85;
|
||
YUVA420P10BE :: 86;
|
||
YUVA420P10LE :: 87;
|
||
YUVA422P10BE :: 88;
|
||
YUVA422P10LE :: 89;
|
||
YUVA444P10BE :: 90;
|
||
YUVA444P10LE :: 91;
|
||
YUVA420P16BE :: 92;
|
||
YUVA420P16LE :: 93;
|
||
YUVA422P16BE :: 94;
|
||
YUVA422P16LE :: 95;
|
||
YUVA444P16BE :: 96;
|
||
YUVA444P16LE :: 97;
|
||
|
||
VDPAU :: 98;
|
||
|
||
XYZ12LE :: 99;
|
||
XYZ12BE :: 100;
|
||
NV16 :: 101;
|
||
NV20LE :: 102;
|
||
NV20BE :: 103;
|
||
|
||
RGBA64BE :: 104;
|
||
RGBA64LE :: 105;
|
||
BGRA64BE :: 106;
|
||
BGRA64LE :: 107;
|
||
|
||
YVYU422 :: 108;
|
||
|
||
YA16BE :: 109;
|
||
YA16LE :: 110;
|
||
|
||
GBRAP :: 111;
|
||
GBRAP16BE :: 112;
|
||
GBRAP16LE :: 113;
|
||
|
||
QSV :: 114;
|
||
|
||
MMAL :: 115;
|
||
|
||
D3D11VA_VLD :: 116;
|
||
|
||
CUDA :: 117;
|
||
|
||
_0RGB :: 118;
|
||
RGB0 :: 119;
|
||
_0BGR :: 120;
|
||
BGR0 :: 121;
|
||
|
||
YUV420P12BE :: 122;
|
||
YUV420P12LE :: 123;
|
||
YUV420P14BE :: 124;
|
||
YUV420P14LE :: 125;
|
||
YUV422P12BE :: 126;
|
||
YUV422P12LE :: 127;
|
||
YUV422P14BE :: 128;
|
||
YUV422P14LE :: 129;
|
||
YUV444P12BE :: 130;
|
||
YUV444P12LE :: 131;
|
||
YUV444P14BE :: 132;
|
||
YUV444P14LE :: 133;
|
||
GBRP12BE :: 134;
|
||
GBRP12LE :: 135;
|
||
GBRP14BE :: 136;
|
||
GBRP14LE :: 137;
|
||
YUVJ411P :: 138;
|
||
|
||
BAYER_BGGR8 :: 139;
|
||
BAYER_RGGB8 :: 140;
|
||
BAYER_GBRG8 :: 141;
|
||
BAYER_GRBG8 :: 142;
|
||
BAYER_BGGR16LE :: 143;
|
||
BAYER_BGGR16BE :: 144;
|
||
BAYER_RGGB16LE :: 145;
|
||
BAYER_RGGB16BE :: 146;
|
||
BAYER_GBRG16LE :: 147;
|
||
BAYER_GBRG16BE :: 148;
|
||
BAYER_GRBG16LE :: 149;
|
||
BAYER_GRBG16BE :: 150;
|
||
|
||
XVMC :: 151;
|
||
|
||
YUV440P10LE :: 152;
|
||
YUV440P10BE :: 153;
|
||
YUV440P12LE :: 154;
|
||
YUV440P12BE :: 155;
|
||
AYUV64LE :: 156;
|
||
AYUV64BE :: 157;
|
||
|
||
VIDEOTOOLBOX :: 158;
|
||
|
||
P010LE :: 159;
|
||
P010BE :: 160;
|
||
|
||
GBRAP12BE :: 161;
|
||
GBRAP12LE :: 162;
|
||
|
||
GBRAP10BE :: 163;
|
||
GBRAP10LE :: 164;
|
||
|
||
MEDIACODEC :: 165;
|
||
|
||
GRAY12BE :: 166;
|
||
GRAY12LE :: 167;
|
||
GRAY10BE :: 168;
|
||
GRAY10LE :: 169;
|
||
|
||
P016LE :: 170;
|
||
P016BE :: 171;
|
||
|
||
D3D11 :: 172;
|
||
|
||
GRAY9BE :: 173;
|
||
GRAY9LE :: 174;
|
||
|
||
GBRPF32BE :: 175;
|
||
GBRPF32LE :: 176;
|
||
GBRAPF32BE :: 177;
|
||
GBRAPF32LE :: 178;
|
||
|
||
DRM_PRIME :: 179;
|
||
|
||
OPENCL :: 180;
|
||
|
||
GRAY14BE :: 181;
|
||
GRAY14LE :: 182;
|
||
|
||
GRAYF32BE :: 183;
|
||
GRAYF32LE :: 184;
|
||
|
||
YUVA422P12BE :: 185;
|
||
YUVA422P12LE :: 186;
|
||
YUVA444P12BE :: 187;
|
||
YUVA444P12LE :: 188;
|
||
|
||
NV24 :: 189;
|
||
NV42 :: 190;
|
||
|
||
VULKAN :: 191;
|
||
|
||
Y210BE :: 192;
|
||
Y210LE :: 193;
|
||
|
||
X2RGB10LE :: 194;
|
||
X2RGB10BE :: 195;
|
||
X2BGR10LE :: 196;
|
||
X2BGR10BE :: 197;
|
||
|
||
P210BE :: 198;
|
||
P210LE :: 199;
|
||
|
||
P410BE :: 200;
|
||
P410LE :: 201;
|
||
|
||
P216BE :: 202;
|
||
P216LE :: 203;
|
||
|
||
P416BE :: 204;
|
||
P416LE :: 205;
|
||
|
||
VUYA :: 206;
|
||
|
||
RGBAF16BE :: 207;
|
||
RGBAF16LE :: 208;
|
||
|
||
VUYX :: 209;
|
||
|
||
P012LE :: 210;
|
||
P012BE :: 211;
|
||
|
||
Y212BE :: 212;
|
||
Y212LE :: 213;
|
||
|
||
XV30BE :: 214;
|
||
XV30LE :: 215;
|
||
|
||
XV36BE :: 216;
|
||
XV36LE :: 217;
|
||
|
||
RGBF32BE :: 218;
|
||
RGBF32LE :: 219;
|
||
|
||
RGBAF32BE :: 220;
|
||
RGBAF32LE :: 221;
|
||
|
||
NB :: 222;
|
||
|
||
AV_PIX_FMT_NONE :: NONE;
|
||
AV_PIX_FMT_YUV420P :: YUV420P;
|
||
AV_PIX_FMT_YUYV422 :: YUYV422;
|
||
AV_PIX_FMT_RGB24 :: RGB24;
|
||
AV_PIX_FMT_BGR24 :: BGR24;
|
||
AV_PIX_FMT_YUV422P :: YUV422P;
|
||
AV_PIX_FMT_YUV444P :: YUV444P;
|
||
AV_PIX_FMT_YUV410P :: YUV410P;
|
||
AV_PIX_FMT_YUV411P :: YUV411P;
|
||
AV_PIX_FMT_GRAY8 :: GRAY8;
|
||
AV_PIX_FMT_MONOWHITE :: MONOWHITE;
|
||
AV_PIX_FMT_MONOBLACK :: MONOBLACK;
|
||
AV_PIX_FMT_PAL8 :: PAL8;
|
||
AV_PIX_FMT_YUVJ420P :: YUVJ420P;
|
||
AV_PIX_FMT_YUVJ422P :: YUVJ422P;
|
||
AV_PIX_FMT_YUVJ444P :: YUVJ444P;
|
||
AV_PIX_FMT_UYVY422 :: UYVY422;
|
||
AV_PIX_FMT_UYYVYY411 :: UYYVYY411;
|
||
AV_PIX_FMT_BGR8 :: BGR8;
|
||
AV_PIX_FMT_BGR4 :: BGR4;
|
||
AV_PIX_FMT_BGR4_BYTE :: BGR4_BYTE;
|
||
AV_PIX_FMT_RGB8 :: RGB8;
|
||
AV_PIX_FMT_RGB4 :: RGB4;
|
||
AV_PIX_FMT_RGB4_BYTE :: RGB4_BYTE;
|
||
AV_PIX_FMT_NV12 :: NV12;
|
||
AV_PIX_FMT_NV21 :: NV21;
|
||
|
||
AV_PIX_FMT_ARGB :: ARGB;
|
||
AV_PIX_FMT_RGBA :: RGBA;
|
||
AV_PIX_FMT_ABGR :: ABGR;
|
||
AV_PIX_FMT_BGRA :: BGRA;
|
||
|
||
AV_PIX_FMT_GRAY16BE :: GRAY16BE;
|
||
AV_PIX_FMT_GRAY16LE :: GRAY16LE;
|
||
AV_PIX_FMT_YUV440P :: YUV440P;
|
||
AV_PIX_FMT_YUVJ440P :: YUVJ440P;
|
||
AV_PIX_FMT_YUVA420P :: YUVA420P;
|
||
AV_PIX_FMT_RGB48BE :: RGB48BE;
|
||
AV_PIX_FMT_RGB48LE :: RGB48LE;
|
||
|
||
AV_PIX_FMT_RGB565BE :: RGB565BE;
|
||
AV_PIX_FMT_RGB565LE :: RGB565LE;
|
||
AV_PIX_FMT_RGB555BE :: RGB555BE;
|
||
AV_PIX_FMT_RGB555LE :: RGB555LE;
|
||
|
||
AV_PIX_FMT_BGR565BE :: BGR565BE;
|
||
AV_PIX_FMT_BGR565LE :: BGR565LE;
|
||
AV_PIX_FMT_BGR555BE :: BGR555BE;
|
||
AV_PIX_FMT_BGR555LE :: BGR555LE;
|
||
|
||
AV_PIX_FMT_VAAPI :: VAAPI;
|
||
|
||
AV_PIX_FMT_YUV420P16LE :: YUV420P16LE;
|
||
AV_PIX_FMT_YUV420P16BE :: YUV420P16BE;
|
||
AV_PIX_FMT_YUV422P16LE :: YUV422P16LE;
|
||
AV_PIX_FMT_YUV422P16BE :: YUV422P16BE;
|
||
AV_PIX_FMT_YUV444P16LE :: YUV444P16LE;
|
||
AV_PIX_FMT_YUV444P16BE :: YUV444P16BE;
|
||
AV_PIX_FMT_DXVA2_VLD :: DXVA2_VLD;
|
||
|
||
AV_PIX_FMT_RGB444LE :: RGB444LE;
|
||
AV_PIX_FMT_RGB444BE :: RGB444BE;
|
||
AV_PIX_FMT_BGR444LE :: BGR444LE;
|
||
AV_PIX_FMT_BGR444BE :: BGR444BE;
|
||
AV_PIX_FMT_YA8 :: YA8;
|
||
|
||
AV_PIX_FMT_Y400A :: Y400A;
|
||
AV_PIX_FMT_GRAY8A :: GRAY8A;
|
||
|
||
AV_PIX_FMT_BGR48BE :: BGR48BE;
|
||
AV_PIX_FMT_BGR48LE :: BGR48LE;
|
||
|
||
AV_PIX_FMT_YUV420P9BE :: YUV420P9BE;
|
||
AV_PIX_FMT_YUV420P9LE :: YUV420P9LE;
|
||
AV_PIX_FMT_YUV420P10BE :: YUV420P10BE;
|
||
AV_PIX_FMT_YUV420P10LE :: YUV420P10LE;
|
||
AV_PIX_FMT_YUV422P10BE :: YUV422P10BE;
|
||
AV_PIX_FMT_YUV422P10LE :: YUV422P10LE;
|
||
AV_PIX_FMT_YUV444P9BE :: YUV444P9BE;
|
||
AV_PIX_FMT_YUV444P9LE :: YUV444P9LE;
|
||
AV_PIX_FMT_YUV444P10BE :: YUV444P10BE;
|
||
AV_PIX_FMT_YUV444P10LE :: YUV444P10LE;
|
||
AV_PIX_FMT_YUV422P9BE :: YUV422P9BE;
|
||
AV_PIX_FMT_YUV422P9LE :: YUV422P9LE;
|
||
AV_PIX_FMT_GBRP :: GBRP;
|
||
AV_PIX_FMT_GBR24P :: GBR24P;
|
||
AV_PIX_FMT_GBRP9BE :: GBRP9BE;
|
||
AV_PIX_FMT_GBRP9LE :: GBRP9LE;
|
||
AV_PIX_FMT_GBRP10BE :: GBRP10BE;
|
||
AV_PIX_FMT_GBRP10LE :: GBRP10LE;
|
||
AV_PIX_FMT_GBRP16BE :: GBRP16BE;
|
||
AV_PIX_FMT_GBRP16LE :: GBRP16LE;
|
||
AV_PIX_FMT_YUVA422P :: YUVA422P;
|
||
AV_PIX_FMT_YUVA444P :: YUVA444P;
|
||
AV_PIX_FMT_YUVA420P9BE :: YUVA420P9BE;
|
||
AV_PIX_FMT_YUVA420P9LE :: YUVA420P9LE;
|
||
AV_PIX_FMT_YUVA422P9BE :: YUVA422P9BE;
|
||
AV_PIX_FMT_YUVA422P9LE :: YUVA422P9LE;
|
||
AV_PIX_FMT_YUVA444P9BE :: YUVA444P9BE;
|
||
AV_PIX_FMT_YUVA444P9LE :: YUVA444P9LE;
|
||
AV_PIX_FMT_YUVA420P10BE :: YUVA420P10BE;
|
||
AV_PIX_FMT_YUVA420P10LE :: YUVA420P10LE;
|
||
AV_PIX_FMT_YUVA422P10BE :: YUVA422P10BE;
|
||
AV_PIX_FMT_YUVA422P10LE :: YUVA422P10LE;
|
||
AV_PIX_FMT_YUVA444P10BE :: YUVA444P10BE;
|
||
AV_PIX_FMT_YUVA444P10LE :: YUVA444P10LE;
|
||
AV_PIX_FMT_YUVA420P16BE :: YUVA420P16BE;
|
||
AV_PIX_FMT_YUVA420P16LE :: YUVA420P16LE;
|
||
AV_PIX_FMT_YUVA422P16BE :: YUVA422P16BE;
|
||
AV_PIX_FMT_YUVA422P16LE :: YUVA422P16LE;
|
||
AV_PIX_FMT_YUVA444P16BE :: YUVA444P16BE;
|
||
AV_PIX_FMT_YUVA444P16LE :: YUVA444P16LE;
|
||
|
||
AV_PIX_FMT_VDPAU :: VDPAU;
|
||
|
||
AV_PIX_FMT_XYZ12LE :: XYZ12LE;
|
||
AV_PIX_FMT_XYZ12BE :: XYZ12BE;
|
||
AV_PIX_FMT_NV16 :: NV16;
|
||
AV_PIX_FMT_NV20LE :: NV20LE;
|
||
AV_PIX_FMT_NV20BE :: NV20BE;
|
||
|
||
AV_PIX_FMT_RGBA64BE :: RGBA64BE;
|
||
AV_PIX_FMT_RGBA64LE :: RGBA64LE;
|
||
AV_PIX_FMT_BGRA64BE :: BGRA64BE;
|
||
AV_PIX_FMT_BGRA64LE :: BGRA64LE;
|
||
|
||
AV_PIX_FMT_YVYU422 :: YVYU422;
|
||
|
||
AV_PIX_FMT_YA16BE :: YA16BE;
|
||
AV_PIX_FMT_YA16LE :: YA16LE;
|
||
|
||
AV_PIX_FMT_GBRAP :: GBRAP;
|
||
AV_PIX_FMT_GBRAP16BE :: GBRAP16BE;
|
||
AV_PIX_FMT_GBRAP16LE :: GBRAP16LE;
|
||
|
||
AV_PIX_FMT_QSV :: QSV;
|
||
|
||
AV_PIX_FMT_MMAL :: MMAL;
|
||
|
||
AV_PIX_FMT_D3D11VA_VLD :: D3D11VA_VLD;
|
||
|
||
AV_PIX_FMT_CUDA :: CUDA;
|
||
|
||
AV_PIX_FMT_0RGB :: _0RGB;
|
||
AV_PIX_FMT_RGB0 :: RGB0;
|
||
AV_PIX_FMT_0BGR :: _0BGR;
|
||
AV_PIX_FMT_BGR0 :: BGR0;
|
||
|
||
AV_PIX_FMT_YUV420P12BE :: YUV420P12BE;
|
||
AV_PIX_FMT_YUV420P12LE :: YUV420P12LE;
|
||
AV_PIX_FMT_YUV420P14BE :: YUV420P14BE;
|
||
AV_PIX_FMT_YUV420P14LE :: YUV420P14LE;
|
||
AV_PIX_FMT_YUV422P12BE :: YUV422P12BE;
|
||
AV_PIX_FMT_YUV422P12LE :: YUV422P12LE;
|
||
AV_PIX_FMT_YUV422P14BE :: YUV422P14BE;
|
||
AV_PIX_FMT_YUV422P14LE :: YUV422P14LE;
|
||
AV_PIX_FMT_YUV444P12BE :: YUV444P12BE;
|
||
AV_PIX_FMT_YUV444P12LE :: YUV444P12LE;
|
||
AV_PIX_FMT_YUV444P14BE :: YUV444P14BE;
|
||
AV_PIX_FMT_YUV444P14LE :: YUV444P14LE;
|
||
AV_PIX_FMT_GBRP12BE :: GBRP12BE;
|
||
AV_PIX_FMT_GBRP12LE :: GBRP12LE;
|
||
AV_PIX_FMT_GBRP14BE :: GBRP14BE;
|
||
AV_PIX_FMT_GBRP14LE :: GBRP14LE;
|
||
AV_PIX_FMT_YUVJ411P :: YUVJ411P;
|
||
|
||
AV_PIX_FMT_BAYER_BGGR8 :: BAYER_BGGR8;
|
||
AV_PIX_FMT_BAYER_RGGB8 :: BAYER_RGGB8;
|
||
AV_PIX_FMT_BAYER_GBRG8 :: BAYER_GBRG8;
|
||
AV_PIX_FMT_BAYER_GRBG8 :: BAYER_GRBG8;
|
||
AV_PIX_FMT_BAYER_BGGR16LE :: BAYER_BGGR16LE;
|
||
AV_PIX_FMT_BAYER_BGGR16BE :: BAYER_BGGR16BE;
|
||
AV_PIX_FMT_BAYER_RGGB16LE :: BAYER_RGGB16LE;
|
||
AV_PIX_FMT_BAYER_RGGB16BE :: BAYER_RGGB16BE;
|
||
AV_PIX_FMT_BAYER_GBRG16LE :: BAYER_GBRG16LE;
|
||
AV_PIX_FMT_BAYER_GBRG16BE :: BAYER_GBRG16BE;
|
||
AV_PIX_FMT_BAYER_GRBG16LE :: BAYER_GRBG16LE;
|
||
AV_PIX_FMT_BAYER_GRBG16BE :: BAYER_GRBG16BE;
|
||
|
||
AV_PIX_FMT_XVMC :: XVMC;
|
||
|
||
AV_PIX_FMT_YUV440P10LE :: YUV440P10LE;
|
||
AV_PIX_FMT_YUV440P10BE :: YUV440P10BE;
|
||
AV_PIX_FMT_YUV440P12LE :: YUV440P12LE;
|
||
AV_PIX_FMT_YUV440P12BE :: YUV440P12BE;
|
||
AV_PIX_FMT_AYUV64LE :: AYUV64LE;
|
||
AV_PIX_FMT_AYUV64BE :: AYUV64BE;
|
||
|
||
AV_PIX_FMT_VIDEOTOOLBOX :: VIDEOTOOLBOX;
|
||
|
||
AV_PIX_FMT_P010LE :: P010LE;
|
||
AV_PIX_FMT_P010BE :: P010BE;
|
||
|
||
AV_PIX_FMT_GBRAP12BE :: GBRAP12BE;
|
||
AV_PIX_FMT_GBRAP12LE :: GBRAP12LE;
|
||
|
||
AV_PIX_FMT_GBRAP10BE :: GBRAP10BE;
|
||
AV_PIX_FMT_GBRAP10LE :: GBRAP10LE;
|
||
|
||
AV_PIX_FMT_MEDIACODEC :: MEDIACODEC;
|
||
|
||
AV_PIX_FMT_GRAY12BE :: GRAY12BE;
|
||
AV_PIX_FMT_GRAY12LE :: GRAY12LE;
|
||
AV_PIX_FMT_GRAY10BE :: GRAY10BE;
|
||
AV_PIX_FMT_GRAY10LE :: GRAY10LE;
|
||
|
||
AV_PIX_FMT_P016LE :: P016LE;
|
||
AV_PIX_FMT_P016BE :: P016BE;
|
||
|
||
AV_PIX_FMT_D3D11 :: D3D11;
|
||
|
||
AV_PIX_FMT_GRAY9BE :: GRAY9BE;
|
||
AV_PIX_FMT_GRAY9LE :: GRAY9LE;
|
||
|
||
AV_PIX_FMT_GBRPF32BE :: GBRPF32BE;
|
||
AV_PIX_FMT_GBRPF32LE :: GBRPF32LE;
|
||
AV_PIX_FMT_GBRAPF32BE :: GBRAPF32BE;
|
||
AV_PIX_FMT_GBRAPF32LE :: GBRAPF32LE;
|
||
|
||
AV_PIX_FMT_DRM_PRIME :: DRM_PRIME;
|
||
|
||
AV_PIX_FMT_OPENCL :: OPENCL;
|
||
|
||
AV_PIX_FMT_GRAY14BE :: GRAY14BE;
|
||
AV_PIX_FMT_GRAY14LE :: GRAY14LE;
|
||
|
||
AV_PIX_FMT_GRAYF32BE :: GRAYF32BE;
|
||
AV_PIX_FMT_GRAYF32LE :: GRAYF32LE;
|
||
|
||
AV_PIX_FMT_YUVA422P12BE :: YUVA422P12BE;
|
||
AV_PIX_FMT_YUVA422P12LE :: YUVA422P12LE;
|
||
AV_PIX_FMT_YUVA444P12BE :: YUVA444P12BE;
|
||
AV_PIX_FMT_YUVA444P12LE :: YUVA444P12LE;
|
||
|
||
AV_PIX_FMT_NV24 :: NV24;
|
||
AV_PIX_FMT_NV42 :: NV42;
|
||
|
||
AV_PIX_FMT_VULKAN :: VULKAN;
|
||
|
||
AV_PIX_FMT_Y210BE :: Y210BE;
|
||
AV_PIX_FMT_Y210LE :: Y210LE;
|
||
|
||
AV_PIX_FMT_X2RGB10LE :: X2RGB10LE;
|
||
AV_PIX_FMT_X2RGB10BE :: X2RGB10BE;
|
||
AV_PIX_FMT_X2BGR10LE :: X2BGR10LE;
|
||
AV_PIX_FMT_X2BGR10BE :: X2BGR10BE;
|
||
|
||
AV_PIX_FMT_P210BE :: P210BE;
|
||
AV_PIX_FMT_P210LE :: P210LE;
|
||
|
||
AV_PIX_FMT_P410BE :: P410BE;
|
||
AV_PIX_FMT_P410LE :: P410LE;
|
||
|
||
AV_PIX_FMT_P216BE :: P216BE;
|
||
AV_PIX_FMT_P216LE :: P216LE;
|
||
|
||
AV_PIX_FMT_P416BE :: P416BE;
|
||
AV_PIX_FMT_P416LE :: P416LE;
|
||
|
||
AV_PIX_FMT_VUYA :: VUYA;
|
||
|
||
AV_PIX_FMT_RGBAF16BE :: RGBAF16BE;
|
||
AV_PIX_FMT_RGBAF16LE :: RGBAF16LE;
|
||
|
||
AV_PIX_FMT_VUYX :: VUYX;
|
||
|
||
AV_PIX_FMT_P012LE :: P012LE;
|
||
AV_PIX_FMT_P012BE :: P012BE;
|
||
|
||
AV_PIX_FMT_Y212BE :: Y212BE;
|
||
AV_PIX_FMT_Y212LE :: Y212LE;
|
||
|
||
AV_PIX_FMT_XV30BE :: XV30BE;
|
||
AV_PIX_FMT_XV30LE :: XV30LE;
|
||
|
||
AV_PIX_FMT_XV36BE :: XV36BE;
|
||
AV_PIX_FMT_XV36LE :: XV36LE;
|
||
|
||
AV_PIX_FMT_RGBF32BE :: RGBF32BE;
|
||
AV_PIX_FMT_RGBF32LE :: RGBF32LE;
|
||
|
||
AV_PIX_FMT_RGBAF32BE :: RGBAF32BE;
|
||
AV_PIX_FMT_RGBAF32LE :: RGBAF32LE;
|
||
|
||
AV_PIX_FMT_NB :: NB;
|
||
}
|
||
|
||
/**
|
||
* Chromaticity coordinates of the source primaries.
|
||
* These values match the ones defined by ISO/IEC 23091-2_2019 subclause 8.1 and ITU-T H.273.
|
||
*/
|
||
AVColorPrimaries :: enum u32 {
|
||
RESERVED0 :: 0;
|
||
BT709 :: 1;
|
||
UNSPECIFIED :: 2;
|
||
RESERVED :: 3;
|
||
BT470M :: 4;
|
||
|
||
BT470BG :: 5;
|
||
SMPTE170M :: 6;
|
||
SMPTE240M :: 7;
|
||
FILM :: 8;
|
||
BT2020 :: 9;
|
||
SMPTE428 :: 10;
|
||
SMPTEST428_1 :: 10;
|
||
SMPTE431 :: 11;
|
||
SMPTE432 :: 12;
|
||
EBU3213 :: 22;
|
||
JEDEC_P22 :: 22;
|
||
NB :: 23;
|
||
|
||
AVCOL_PRI_RESERVED0 :: RESERVED0;
|
||
AVCOL_PRI_BT709 :: BT709;
|
||
AVCOL_PRI_UNSPECIFIED :: UNSPECIFIED;
|
||
AVCOL_PRI_RESERVED :: RESERVED;
|
||
AVCOL_PRI_BT470M :: BT470M;
|
||
|
||
AVCOL_PRI_BT470BG :: BT470BG;
|
||
AVCOL_PRI_SMPTE170M :: SMPTE170M;
|
||
AVCOL_PRI_SMPTE240M :: SMPTE240M;
|
||
AVCOL_PRI_FILM :: FILM;
|
||
AVCOL_PRI_BT2020 :: BT2020;
|
||
AVCOL_PRI_SMPTE428 :: SMPTE428;
|
||
AVCOL_PRI_SMPTEST428_1 :: SMPTEST428_1;
|
||
AVCOL_PRI_SMPTE431 :: SMPTE431;
|
||
AVCOL_PRI_SMPTE432 :: SMPTE432;
|
||
AVCOL_PRI_EBU3213 :: EBU3213;
|
||
AVCOL_PRI_JEDEC_P22 :: JEDEC_P22;
|
||
AVCOL_PRI_NB :: NB;
|
||
}
|
||
|
||
/**
|
||
* Color Transfer Characteristic.
|
||
* These values match the ones defined by ISO/IEC 23091-2_2019 subclause 8.2.
|
||
*/
|
||
AVColorTransferCharacteristic :: enum u32 {
|
||
RESERVED0 :: 0;
|
||
BT709 :: 1;
|
||
UNSPECIFIED :: 2;
|
||
RESERVED :: 3;
|
||
GAMMA22 :: 4;
|
||
GAMMA28 :: 5;
|
||
SMPTE170M :: 6;
|
||
SMPTE240M :: 7;
|
||
LINEAR :: 8;
|
||
LOG :: 9;
|
||
LOG_SQRT :: 10;
|
||
IEC61966_2_4 :: 11;
|
||
BT1361_ECG :: 12;
|
||
IEC61966_2_1 :: 13;
|
||
BT2020_10 :: 14;
|
||
BT2020_12 :: 15;
|
||
SMPTE2084 :: 16;
|
||
SMPTEST2084 :: 16;
|
||
SMPTE428 :: 17;
|
||
SMPTEST428_1 :: 17;
|
||
ARIB_STD_B67 :: 18;
|
||
NB :: 19;
|
||
|
||
AVCOL_TRC_RESERVED0 :: RESERVED0;
|
||
AVCOL_TRC_BT709 :: BT709;
|
||
AVCOL_TRC_UNSPECIFIED :: UNSPECIFIED;
|
||
AVCOL_TRC_RESERVED :: RESERVED;
|
||
AVCOL_TRC_GAMMA22 :: GAMMA22;
|
||
AVCOL_TRC_GAMMA28 :: GAMMA28;
|
||
AVCOL_TRC_SMPTE170M :: SMPTE170M;
|
||
AVCOL_TRC_SMPTE240M :: SMPTE240M;
|
||
AVCOL_TRC_LINEAR :: LINEAR;
|
||
AVCOL_TRC_LOG :: LOG;
|
||
AVCOL_TRC_LOG_SQRT :: LOG_SQRT;
|
||
AVCOL_TRC_IEC61966_2_4 :: IEC61966_2_4;
|
||
AVCOL_TRC_BT1361_ECG :: BT1361_ECG;
|
||
AVCOL_TRC_IEC61966_2_1 :: IEC61966_2_1;
|
||
AVCOL_TRC_BT2020_10 :: BT2020_10;
|
||
AVCOL_TRC_BT2020_12 :: BT2020_12;
|
||
AVCOL_TRC_SMPTE2084 :: SMPTE2084;
|
||
AVCOL_TRC_SMPTEST2084 :: SMPTEST2084;
|
||
AVCOL_TRC_SMPTE428 :: SMPTE428;
|
||
AVCOL_TRC_SMPTEST428_1 :: SMPTEST428_1;
|
||
AVCOL_TRC_ARIB_STD_B67 :: ARIB_STD_B67;
|
||
AVCOL_TRC_NB :: NB;
|
||
}
|
||
|
||
/**
|
||
* YUV colorspace type.
|
||
* These values match the ones defined by ISO/IEC 23091-2_2019 subclause 8.3.
|
||
*/
|
||
AVColorSpace :: enum u32 {
|
||
RGB :: 0;
|
||
BT709 :: 1;
|
||
UNSPECIFIED :: 2;
|
||
RESERVED :: 3;
|
||
FCC :: 4;
|
||
BT470BG :: 5;
|
||
SMPTE170M :: 6;
|
||
SMPTE240M :: 7;
|
||
YCGCO :: 8;
|
||
YCOCG :: 8;
|
||
BT2020_NCL :: 9;
|
||
BT2020_CL :: 10;
|
||
SMPTE2085 :: 11;
|
||
CHROMA_DERIVED_NCL :: 12;
|
||
CHROMA_DERIVED_CL :: 13;
|
||
ICTCP :: 14;
|
||
NB :: 15;
|
||
|
||
AVCOL_SPC_RGB :: RGB;
|
||
AVCOL_SPC_BT709 :: BT709;
|
||
AVCOL_SPC_UNSPECIFIED :: UNSPECIFIED;
|
||
AVCOL_SPC_RESERVED :: RESERVED;
|
||
AVCOL_SPC_FCC :: FCC;
|
||
AVCOL_SPC_BT470BG :: BT470BG;
|
||
AVCOL_SPC_SMPTE170M :: SMPTE170M;
|
||
AVCOL_SPC_SMPTE240M :: SMPTE240M;
|
||
AVCOL_SPC_YCGCO :: YCGCO;
|
||
AVCOL_SPC_YCOCG :: YCOCG;
|
||
AVCOL_SPC_BT2020_NCL :: BT2020_NCL;
|
||
AVCOL_SPC_BT2020_CL :: BT2020_CL;
|
||
AVCOL_SPC_SMPTE2085 :: SMPTE2085;
|
||
AVCOL_SPC_CHROMA_DERIVED_NCL :: CHROMA_DERIVED_NCL;
|
||
AVCOL_SPC_CHROMA_DERIVED_CL :: CHROMA_DERIVED_CL;
|
||
AVCOL_SPC_ICTCP :: ICTCP;
|
||
AVCOL_SPC_NB :: NB;
|
||
}
|
||
|
||
/**
|
||
* Visual content value range.
|
||
*
|
||
* These values are based on definitions that can be found in multiple
|
||
* specifications, such as ITU-T BT.709 (3.4 - Quantization of RGB, luminance
|
||
* and colour-difference signals), ITU-T BT.2020 (Table 5 - Digital
|
||
* Representation) as well as ITU-T BT.2100 (Table 9 - Digital 10- and 12-bit
|
||
* integer representation). At the time of writing, the BT.2100 one is
|
||
* recommended, as it also defines the full range representation.
|
||
*
|
||
* Common definitions:
|
||
* - For RGB and luma planes such as Y in YCbCr and I in ICtCp,
|
||
* 'E' is the original value in range of 0.0 to 1.0.
|
||
* - For chroma planes such as Cb,Cr and Ct,Cp, 'E' is the original
|
||
* value in range of -0.5 to 0.5.
|
||
* - 'n' is the output bit depth.
|
||
* - For additional definitions such as rounding and clipping to valid n
|
||
* bit unsigned integer range, please refer to BT.2100 (Table 9).
|
||
*/
|
||
AVColorRange :: enum u32 {
|
||
UNSPECIFIED :: 0;
|
||
|
||
MPEG :: 1;
|
||
|
||
JPEG :: 2;
|
||
NB :: 3;
|
||
|
||
AVCOL_RANGE_UNSPECIFIED :: UNSPECIFIED;
|
||
|
||
AVCOL_RANGE_MPEG :: MPEG;
|
||
|
||
AVCOL_RANGE_JPEG :: JPEG;
|
||
AVCOL_RANGE_NB :: NB;
|
||
}
|
||
|
||
/**
|
||
* Location of chroma samples.
|
||
*
|
||
* Illustration showing the location of the first (top left) chroma sample of the
|
||
* image, the left shows only luma, the right
|
||
* shows the location of the chroma sample, the 2 could be imagined to overlay
|
||
* each other but are drawn separately due to limitations of ASCII
|
||
*
|
||
* 1st 2nd 1st 2nd horizontal luma sample positions
|
||
* v v v v
|
||
* ______ ______
|
||
*1st luma line > |X X ... |3 4 X ... X are luma samples,
|
||
* | |1 2 1-6 are possible chroma positions
|
||
*2nd luma line > |X X ... |5 6 X ... 0 is undefined/unknown position
|
||
*/
|
||
AVChromaLocation :: enum u32 {
|
||
UNSPECIFIED :: 0;
|
||
LEFT :: 1;
|
||
CENTER :: 2;
|
||
TOPLEFT :: 3;
|
||
TOP :: 4;
|
||
BOTTOMLEFT :: 5;
|
||
BOTTOM :: 6;
|
||
NB :: 7;
|
||
|
||
AVCHROMA_LOC_UNSPECIFIED :: UNSPECIFIED;
|
||
AVCHROMA_LOC_LEFT :: LEFT;
|
||
AVCHROMA_LOC_CENTER :: CENTER;
|
||
AVCHROMA_LOC_TOPLEFT :: TOPLEFT;
|
||
AVCHROMA_LOC_TOP :: TOP;
|
||
AVCHROMA_LOC_BOTTOMLEFT :: BOTTOMLEFT;
|
||
AVCHROMA_LOC_BOTTOM :: BOTTOM;
|
||
AVCHROMA_LOC_NB :: NB;
|
||
}
|
||
|
||
/**
|
||
* Compute the length of an integer list.
|
||
*
|
||
* @param elsize size in bytes of each list element (only 1, 2, 4 or 8)
|
||
* @param term list terminator (usually 0 or -1)
|
||
* @param list pointer to the list
|
||
* @return length of the list, in elements, not counting the terminator
|
||
*/
|
||
av_int_list_length_for_size :: (elsize: u32, list: *void, term: u64) -> u32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Return the fractional representation of the internal time base.
|
||
*/
|
||
av_get_time_base_q :: () -> AVRational #foreign libavutil_58;
|
||
|
||
/**
|
||
* Fill the provided buffer with a string containing a FourCC (four-character
|
||
* code) representation.
|
||
*
|
||
* @param buf a buffer with size in bytes of at least AV_FOURCC_MAX_STRING_SIZE
|
||
* @param fourcc the fourcc to represent
|
||
* @return the buffer in input
|
||
*/
|
||
av_fourcc_make_string :: (buf: *u8, fourcc: u32) -> *u8 #foreign libavutil_58;
|
||
|
||
AVBuffer :: struct {}
|
||
|
||
/**
|
||
* A reference to a data buffer.
|
||
*
|
||
* The size of this struct is not a part of the public ABI and it is not meant
|
||
* to be allocated directly.
|
||
*/
|
||
AVBufferRef :: struct {
|
||
buffer: *AVBuffer;
|
||
|
||
/**
|
||
* The data buffer. It is considered writable if and only if
|
||
* this is the only reference to the buffer, in which case
|
||
* av_buffer_is_writable() returns 1.
|
||
*/
|
||
data: *u8;
|
||
|
||
/**
|
||
* Size of data in bytes.
|
||
*/
|
||
size: u64;
|
||
}
|
||
|
||
/**
|
||
* Allocate an AVBuffer of the given size using av_malloc().
|
||
*
|
||
* @return an AVBufferRef of given size or NULL when out of memory
|
||
*/
|
||
av_buffer_alloc :: (size: u64) -> *AVBufferRef #foreign libavutil_58;
|
||
|
||
/**
|
||
* Same as av_buffer_alloc(), except the returned buffer will be initialized
|
||
* to zero.
|
||
*/
|
||
av_buffer_allocz :: (size: u64) -> *AVBufferRef #foreign libavutil_58;
|
||
|
||
/**
|
||
* Create an AVBuffer from an existing array.
|
||
*
|
||
* If this function is successful, data is owned by the AVBuffer. The caller may
|
||
* only access data through the returned AVBufferRef and references derived from
|
||
* it.
|
||
* If this function fails, data is left untouched.
|
||
* @param data data array
|
||
* @param size size of data in bytes
|
||
* @param free a callback for freeing this buffer's data
|
||
* @param opaque parameter to be got for processing or passed to free
|
||
* @param flags a combination of AV_BUFFER_FLAG_*
|
||
*
|
||
* @return an AVBufferRef referring to data on success, NULL on failure.
|
||
*/
|
||
av_buffer_create :: (data: *u8, size: u64, free: #type (opaque: *void, data: *u8) -> void #c_call, opaque: *void, flags: s32) -> *AVBufferRef #foreign libavutil_58;
|
||
|
||
/**
|
||
* Default free callback, which calls av_free() on the buffer data.
|
||
* This function is meant to be passed to av_buffer_create(), not called
|
||
* directly.
|
||
*/
|
||
av_buffer_default_free :: (opaque: *void, data: *u8) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Create a new reference to an AVBuffer.
|
||
*
|
||
* @return a new AVBufferRef referring to the same AVBuffer as buf or NULL on
|
||
* failure.
|
||
*/
|
||
av_buffer_ref :: (buf: *AVBufferRef) -> *AVBufferRef #foreign libavutil_58;
|
||
|
||
/**
|
||
* Free a given reference and automatically free the buffer if there are no more
|
||
* references to it.
|
||
*
|
||
* @param buf the reference to be freed. The pointer is set to NULL on return.
|
||
*/
|
||
av_buffer_unref :: (buf: **AVBufferRef) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* @return 1 if the caller may write to the data referred to by buf (which is
|
||
* true if and only if buf is the only reference to the underlying AVBuffer).
|
||
* Return 0 otherwise.
|
||
* A positive answer is valid until av_buffer_ref() is called on buf.
|
||
*/
|
||
av_buffer_is_writable :: (buf: *AVBufferRef) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* @return the opaque parameter set by av_buffer_create.
|
||
*/
|
||
av_buffer_get_opaque :: (buf: *AVBufferRef) -> *void #foreign libavutil_58;
|
||
|
||
av_buffer_get_ref_count :: (buf: *AVBufferRef) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Create a writable reference from a given buffer reference, avoiding data copy
|
||
* if possible.
|
||
*
|
||
* @param buf buffer reference to make writable. On success, buf is either left
|
||
* untouched, or it is unreferenced and a new writable AVBufferRef is
|
||
* written in its place. On failure, buf is left untouched.
|
||
* @return 0 on success, a negative AVERROR on failure.
|
||
*/
|
||
av_buffer_make_writable :: (buf: **AVBufferRef) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Reallocate a given buffer.
|
||
*
|
||
* @param buf a buffer reference to reallocate. On success, buf will be
|
||
* unreferenced and a new reference with the required size will be
|
||
* written in its place. On failure buf will be left untouched. *buf
|
||
* may be NULL, then a new buffer is allocated.
|
||
* @param size required new buffer size.
|
||
* @return 0 on success, a negative AVERROR on failure.
|
||
*
|
||
* @note the buffer is actually reallocated with av_realloc() only if it was
|
||
* initially allocated through av_buffer_realloc(NULL) and there is only one
|
||
* reference to it (i.e. the one passed to this function). In all other cases
|
||
* a new buffer is allocated and the data is copied.
|
||
*/
|
||
av_buffer_realloc :: (buf: **AVBufferRef, size: u64) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Ensure dst refers to the same data as src.
|
||
*
|
||
* When *dst is already equivalent to src, do nothing. Otherwise unreference dst
|
||
* and replace it with a new reference to src.
|
||
*
|
||
* @param dst Pointer to either a valid buffer reference or NULL. On success,
|
||
* this will point to a buffer reference equivalent to src. On
|
||
* failure, dst will be left untouched.
|
||
* @param src A buffer reference to replace dst with. May be NULL, then this
|
||
* function is equivalent to av_buffer_unref(dst).
|
||
* @return 0 on success
|
||
* AVERROR(ENOMEM) on memory allocation failure.
|
||
*/
|
||
av_buffer_replace :: (dst: **AVBufferRef, src: *AVBufferRef) -> s32 #foreign libavutil_58;
|
||
|
||
AVBufferPool :: struct {}
|
||
|
||
/**
|
||
* Allocate and initialize a buffer pool.
|
||
*
|
||
* @param size size of each buffer in this pool
|
||
* @param alloc a function that will be used to allocate new buffers when the
|
||
* pool is empty. May be NULL, then the default allocator will be used
|
||
* (av_buffer_alloc()).
|
||
* @return newly created buffer pool on success, NULL on error.
|
||
*/
|
||
av_buffer_pool_init :: (size: u64, alloc: #type (size: u64) -> *AVBufferRef #c_call) -> *AVBufferPool #foreign libavutil_58;
|
||
|
||
/**
|
||
* Allocate and initialize a buffer pool with a more complex allocator.
|
||
*
|
||
* @param size size of each buffer in this pool
|
||
* @param opaque arbitrary user data used by the allocator
|
||
* @param alloc a function that will be used to allocate new buffers when the
|
||
* pool is empty. May be NULL, then the default allocator will be
|
||
* used (av_buffer_alloc()).
|
||
* @param pool_free a function that will be called immediately before the pool
|
||
* is freed. I.e. after av_buffer_pool_uninit() is called
|
||
* by the caller and all the frames are returned to the pool
|
||
* and freed. It is intended to uninitialize the user opaque
|
||
* data. May be NULL.
|
||
* @return newly created buffer pool on success, NULL on error.
|
||
*/
|
||
av_buffer_pool_init2 :: (size: u64, opaque: *void, alloc: #type (opaque: *void, size: u64) -> *AVBufferRef #c_call, pool_free: #type (opaque: *void) -> void #c_call) -> *AVBufferPool #foreign libavutil_58;
|
||
|
||
/**
|
||
* Mark the pool as being available for freeing. It will actually be freed only
|
||
* once all the allocated buffers associated with the pool are released. Thus it
|
||
* is safe to call this function while some of the allocated buffers are still
|
||
* in use.
|
||
*
|
||
* @param pool pointer to the pool to be freed. It will be set to NULL.
|
||
*/
|
||
av_buffer_pool_uninit :: (pool: **AVBufferPool) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Allocate a new AVBuffer, reusing an old buffer from the pool when available.
|
||
* This function may be called simultaneously from multiple threads.
|
||
*
|
||
* @return a reference to the new buffer on success, NULL on error.
|
||
*/
|
||
av_buffer_pool_get :: (pool: *AVBufferPool) -> *AVBufferRef #foreign libavutil_58;
|
||
|
||
/**
|
||
* Query the original opaque parameter of an allocated buffer in the pool.
|
||
*
|
||
* @param ref a buffer reference to a buffer returned by av_buffer_pool_get.
|
||
* @return the opaque parameter set by the buffer allocator function of the
|
||
* buffer pool.
|
||
*
|
||
* @note the opaque parameter of ref is used by the buffer pool implementation,
|
||
* therefore you have to use this function to access the original opaque
|
||
* parameter of an allocated buffer.
|
||
*/
|
||
av_buffer_pool_buffer_get_opaque :: (ref: *AVBufferRef) -> *void #foreign libavutil_58;
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
AVDictionaryEntry :: struct {
|
||
key: *u8;
|
||
value: *u8;
|
||
}
|
||
|
||
AVDictionary :: struct {}
|
||
|
||
/**
|
||
* Get a dictionary entry with matching key.
|
||
*
|
||
* The returned entry key or value must not be changed, or it will
|
||
* cause undefined behavior.
|
||
*
|
||
* @param prev Set to the previous matching element to find the next.
|
||
* If set to NULL the first matching element is returned.
|
||
* @param key Matching key
|
||
* @param flags A collection of AV_DICT_* flags controlling how the
|
||
* entry is retrieved
|
||
*
|
||
* @return Found entry or NULL in case no matching entry was found in the dictionary
|
||
*/
|
||
av_dict_get :: (m: *AVDictionary, key: *u8, prev: *AVDictionaryEntry, flags: s32) -> *AVDictionaryEntry #foreign libavutil_58;
|
||
|
||
/**
|
||
* Iterate over a dictionary
|
||
*
|
||
* Iterates through all entries in the dictionary.
|
||
*
|
||
* @warning The returned AVDictionaryEntry key/value must not be changed.
|
||
*
|
||
* @warning As av_dict_set() invalidates all previous entries returned
|
||
* by this function, it must not be called while iterating over the dict.
|
||
*
|
||
* Typical usage:
|
||
* @code
|
||
* const AVDictionaryEntry *e = NULL;
|
||
* while ((e = av_dict_iterate(m, e))) {
|
||
* // ...
|
||
* }
|
||
* @endcode
|
||
*
|
||
* @param m The dictionary to iterate over
|
||
* @param prev Pointer to the previous AVDictionaryEntry, NULL initially
|
||
*
|
||
* @retval AVDictionaryEntry* The next element in the dictionary
|
||
* @retval NULL No more elements in the dictionary
|
||
*/
|
||
av_dict_iterate :: (m: *AVDictionary, prev: *AVDictionaryEntry) -> *AVDictionaryEntry #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get number of entries in dictionary.
|
||
*
|
||
* @param m dictionary
|
||
* @return number of entries in dictionary
|
||
*/
|
||
av_dict_count :: (m: *AVDictionary) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Set the given entry in *pm, overwriting an existing entry.
|
||
*
|
||
* Note: If AV_DICT_DONT_STRDUP_KEY or AV_DICT_DONT_STRDUP_VAL is set,
|
||
* these arguments will be freed on error.
|
||
*
|
||
* @warning Adding a new entry to a dictionary invalidates all existing entries
|
||
* previously returned with av_dict_get() or av_dict_iterate().
|
||
*
|
||
* @param pm Pointer to a pointer to a dictionary struct. If *pm is NULL
|
||
* a dictionary struct is allocated and put in *pm.
|
||
* @param key Entry key to add to *pm (will either be av_strduped or added as a new key depending on flags)
|
||
* @param value Entry value to add to *pm (will be av_strduped or added as a new key depending on flags).
|
||
* Passing a NULL value will cause an existing entry to be deleted.
|
||
*
|
||
* @return >= 0 on success otherwise an error code <0
|
||
*/
|
||
av_dict_set :: (pm: **AVDictionary, key: *u8, value: *u8, flags: s32) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Convenience wrapper for av_dict_set() that converts the value to a string
|
||
* and stores it.
|
||
*
|
||
* Note: If ::AV_DICT_DONT_STRDUP_KEY is set, key will be freed on error.
|
||
*/
|
||
av_dict_set_int :: (pm: **AVDictionary, key: *u8, value: s64, flags: s32) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Parse the key/value pairs list and add the parsed entries to a dictionary.
|
||
*
|
||
* In case of failure, all the successfully set entries are stored in
|
||
* *pm. You may need to manually free the created dictionary.
|
||
*
|
||
* @param key_val_sep A 0-terminated list of characters used to separate
|
||
* key from value
|
||
* @param pairs_sep A 0-terminated list of characters used to separate
|
||
* two pairs from each other
|
||
* @param flags Flags to use when adding to the dictionary.
|
||
* ::AV_DICT_DONT_STRDUP_KEY and ::AV_DICT_DONT_STRDUP_VAL
|
||
* are ignored since the key/value tokens will always
|
||
* be duplicated.
|
||
*
|
||
* @return 0 on success, negative AVERROR code on failure
|
||
*/
|
||
av_dict_parse_string :: (pm: **AVDictionary, str: *u8, key_val_sep: *u8, pairs_sep: *u8, flags: s32) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Copy entries from one AVDictionary struct into another.
|
||
*
|
||
* @note Metadata is read using the ::AV_DICT_IGNORE_SUFFIX flag
|
||
*
|
||
* @param dst Pointer to a pointer to a AVDictionary struct to copy into. If *dst is NULL,
|
||
* this function will allocate a struct for you and put it in *dst
|
||
* @param src Pointer to the source AVDictionary struct to copy items from.
|
||
* @param flags Flags to use when setting entries in *dst
|
||
*
|
||
* @return 0 on success, negative AVERROR code on failure. If dst was allocated
|
||
* by this function, callers should free the associated memory.
|
||
*/
|
||
av_dict_copy :: (dst: **AVDictionary, src: *AVDictionary, flags: s32) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Free all the memory allocated for an AVDictionary struct
|
||
* and all keys and values.
|
||
*/
|
||
av_dict_free :: (m: **AVDictionary) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get dictionary entries as a string.
|
||
*
|
||
* Create a string containing dictionary's entries.
|
||
* Such string may be passed back to av_dict_parse_string().
|
||
* @note String is escaped with backslashes ('\').
|
||
*
|
||
* @warning Separators cannot be neither '\\' nor '\0'. They also cannot be the same.
|
||
*
|
||
* @param[in] m The dictionary
|
||
* @param[out] buffer Pointer to buffer that will be allocated with string containg entries.
|
||
* Buffer must be freed by the caller when is no longer needed.
|
||
* @param[in] key_val_sep Character used to separate key from value
|
||
* @param[in] pairs_sep Character used to separate two pairs from each other
|
||
*
|
||
* @return >= 0 on success, negative on error
|
||
*/
|
||
av_dict_get_string :: (m: *AVDictionary, buffer: **u8, key_val_sep: u8, pairs_sep: u8) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* @defgroup lavu_audio_channels Audio channels
|
||
* @ingroup lavu_audio
|
||
*
|
||
* Audio channel layout utility functions
|
||
*
|
||
* @{
|
||
*/
|
||
AVChannel :: enum s32 {
|
||
NONE :: -1;
|
||
FRONT_LEFT :: 0;
|
||
FRONT_RIGHT :: 1;
|
||
FRONT_CENTER :: 2;
|
||
LOW_FREQUENCY :: 3;
|
||
BACK_LEFT :: 4;
|
||
BACK_RIGHT :: 5;
|
||
FRONT_LEFT_OF_CENTER :: 6;
|
||
FRONT_RIGHT_OF_CENTER :: 7;
|
||
BACK_CENTER :: 8;
|
||
SIDE_LEFT :: 9;
|
||
SIDE_RIGHT :: 10;
|
||
TOP_CENTER :: 11;
|
||
TOP_FRONT_LEFT :: 12;
|
||
TOP_FRONT_CENTER :: 13;
|
||
TOP_FRONT_RIGHT :: 14;
|
||
TOP_BACK_LEFT :: 15;
|
||
TOP_BACK_CENTER :: 16;
|
||
TOP_BACK_RIGHT :: 17;
|
||
|
||
STEREO_LEFT :: 29;
|
||
|
||
STEREO_RIGHT :: 30;
|
||
WIDE_LEFT :: 31;
|
||
WIDE_RIGHT :: 32;
|
||
SURROUND_DIRECT_LEFT :: 33;
|
||
SURROUND_DIRECT_RIGHT :: 34;
|
||
LOW_FREQUENCY_2 :: 35;
|
||
TOP_SIDE_LEFT :: 36;
|
||
TOP_SIDE_RIGHT :: 37;
|
||
BOTTOM_FRONT_CENTER :: 38;
|
||
BOTTOM_FRONT_LEFT :: 39;
|
||
BOTTOM_FRONT_RIGHT :: 40;
|
||
|
||
UNUSED :: 512;
|
||
|
||
UNKNOWN :: 768;
|
||
|
||
AMBISONIC_BASE :: 1024;
|
||
|
||
AMBISONIC_END :: 2047;
|
||
|
||
AV_CHAN_NONE :: NONE;
|
||
AV_CHAN_FRONT_LEFT :: FRONT_LEFT;
|
||
AV_CHAN_FRONT_RIGHT :: FRONT_RIGHT;
|
||
AV_CHAN_FRONT_CENTER :: FRONT_CENTER;
|
||
AV_CHAN_LOW_FREQUENCY :: LOW_FREQUENCY;
|
||
AV_CHAN_BACK_LEFT :: BACK_LEFT;
|
||
AV_CHAN_BACK_RIGHT :: BACK_RIGHT;
|
||
AV_CHAN_FRONT_LEFT_OF_CENTER :: FRONT_LEFT_OF_CENTER;
|
||
AV_CHAN_FRONT_RIGHT_OF_CENTER :: FRONT_RIGHT_OF_CENTER;
|
||
AV_CHAN_BACK_CENTER :: BACK_CENTER;
|
||
AV_CHAN_SIDE_LEFT :: SIDE_LEFT;
|
||
AV_CHAN_SIDE_RIGHT :: SIDE_RIGHT;
|
||
AV_CHAN_TOP_CENTER :: TOP_CENTER;
|
||
AV_CHAN_TOP_FRONT_LEFT :: TOP_FRONT_LEFT;
|
||
AV_CHAN_TOP_FRONT_CENTER :: TOP_FRONT_CENTER;
|
||
AV_CHAN_TOP_FRONT_RIGHT :: TOP_FRONT_RIGHT;
|
||
AV_CHAN_TOP_BACK_LEFT :: TOP_BACK_LEFT;
|
||
AV_CHAN_TOP_BACK_CENTER :: TOP_BACK_CENTER;
|
||
AV_CHAN_TOP_BACK_RIGHT :: TOP_BACK_RIGHT;
|
||
|
||
AV_CHAN_STEREO_LEFT :: STEREO_LEFT;
|
||
|
||
AV_CHAN_STEREO_RIGHT :: STEREO_RIGHT;
|
||
AV_CHAN_WIDE_LEFT :: WIDE_LEFT;
|
||
AV_CHAN_WIDE_RIGHT :: WIDE_RIGHT;
|
||
AV_CHAN_SURROUND_DIRECT_LEFT :: SURROUND_DIRECT_LEFT;
|
||
AV_CHAN_SURROUND_DIRECT_RIGHT :: SURROUND_DIRECT_RIGHT;
|
||
AV_CHAN_LOW_FREQUENCY_2 :: LOW_FREQUENCY_2;
|
||
AV_CHAN_TOP_SIDE_LEFT :: TOP_SIDE_LEFT;
|
||
AV_CHAN_TOP_SIDE_RIGHT :: TOP_SIDE_RIGHT;
|
||
AV_CHAN_BOTTOM_FRONT_CENTER :: BOTTOM_FRONT_CENTER;
|
||
AV_CHAN_BOTTOM_FRONT_LEFT :: BOTTOM_FRONT_LEFT;
|
||
AV_CHAN_BOTTOM_FRONT_RIGHT :: BOTTOM_FRONT_RIGHT;
|
||
|
||
AV_CHAN_UNUSED :: UNUSED;
|
||
|
||
AV_CHAN_UNKNOWN :: UNKNOWN;
|
||
|
||
AV_CHAN_AMBISONIC_BASE :: AMBISONIC_BASE;
|
||
|
||
AV_CHAN_AMBISONIC_END :: AMBISONIC_END;
|
||
}
|
||
|
||
AVChannelOrder :: enum u32 {
|
||
UNSPEC :: 0;
|
||
|
||
NATIVE :: 1;
|
||
|
||
CUSTOM :: 2;
|
||
|
||
AMBISONIC :: 3;
|
||
|
||
AV_CHANNEL_ORDER_UNSPEC :: UNSPEC;
|
||
|
||
AV_CHANNEL_ORDER_NATIVE :: NATIVE;
|
||
|
||
AV_CHANNEL_ORDER_CUSTOM :: CUSTOM;
|
||
|
||
AV_CHANNEL_ORDER_AMBISONIC :: AMBISONIC;
|
||
}
|
||
|
||
AVMatrixEncoding :: enum u32 {
|
||
NONE :: 0;
|
||
DOLBY :: 1;
|
||
DPLII :: 2;
|
||
DPLIIX :: 3;
|
||
DPLIIZ :: 4;
|
||
DOLBYEX :: 5;
|
||
DOLBYHEADPHONE :: 6;
|
||
NB :: 7;
|
||
|
||
AV_MATRIX_ENCODING_NONE :: NONE;
|
||
AV_MATRIX_ENCODING_DOLBY :: DOLBY;
|
||
AV_MATRIX_ENCODING_DPLII :: DPLII;
|
||
AV_MATRIX_ENCODING_DPLIIX :: DPLIIX;
|
||
AV_MATRIX_ENCODING_DPLIIZ :: DPLIIZ;
|
||
AV_MATRIX_ENCODING_DOLBYEX :: DOLBYEX;
|
||
AV_MATRIX_ENCODING_DOLBYHEADPHONE :: DOLBYHEADPHONE;
|
||
AV_MATRIX_ENCODING_NB :: NB;
|
||
}
|
||
|
||
/**
|
||
* An AVChannelCustom defines a single channel within a custom order layout
|
||
*
|
||
* Unlike most structures in FFmpeg, sizeof(AVChannelCustom) is a part of the
|
||
* public ABI.
|
||
*
|
||
* No new fields may be added to it without a major version bump.
|
||
*/
|
||
AVChannelCustom :: struct {
|
||
id: AVChannel;
|
||
name: [16] u8;
|
||
opaque: *void;
|
||
}
|
||
|
||
/**
|
||
* An AVChannelLayout holds information about the channel layout of audio data.
|
||
*
|
||
* A channel layout here is defined as a set of channels ordered in a specific
|
||
* way (unless the channel order is AV_CHANNEL_ORDER_UNSPEC, in which case an
|
||
* AVChannelLayout carries only the channel count).
|
||
* All orders may be treated as if they were AV_CHANNEL_ORDER_UNSPEC by
|
||
* ignoring everything but the channel count, as long as av_channel_layout_check()
|
||
* considers they are valid.
|
||
*
|
||
* Unlike most structures in FFmpeg, sizeof(AVChannelLayout) is a part of the
|
||
* public ABI and may be used by the caller. E.g. it may be allocated on stack
|
||
* or embedded in caller-defined structs.
|
||
*
|
||
* AVChannelLayout can be initialized as follows:
|
||
* - default initialization with {0}, followed by setting all used fields
|
||
* correctly;
|
||
* - by assigning one of the predefined AV_CHANNEL_LAYOUT_* initializers;
|
||
* - with a constructor function, such as av_channel_layout_default(),
|
||
* av_channel_layout_from_mask() or av_channel_layout_from_string().
|
||
*
|
||
* The channel layout must be unitialized with av_channel_layout_uninit()
|
||
*
|
||
* Copying an AVChannelLayout via assigning is forbidden,
|
||
* av_channel_layout_copy() must be used instead (and its return value should
|
||
* be checked)
|
||
*
|
||
* No new fields may be added to it without a major version bump, except for
|
||
* new elements of the union fitting in sizeof(uint64_t).
|
||
*/
|
||
AVChannelLayout :: struct {
|
||
/**
|
||
* Channel order used in this layout.
|
||
* This is a mandatory field.
|
||
*/
|
||
order: AVChannelOrder;
|
||
|
||
/**
|
||
* Number of channels in this layout. Mandatory field.
|
||
*/
|
||
nb_channels: s32;
|
||
|
||
u: struct {
|
||
/**
|
||
* This member must be used for AV_CHANNEL_ORDER_NATIVE, and may be used
|
||
* for AV_CHANNEL_ORDER_AMBISONIC to signal non-diegetic channels.
|
||
* It is a bitmask, where the position of each set bit means that the
|
||
* AVChannel with the corresponding value is present.
|
||
*
|
||
* I.e. when (mask & (1 << AV_CHAN_FOO)) is non-zero, then AV_CHAN_FOO
|
||
* is present in the layout. Otherwise it is not present.
|
||
*
|
||
* @note when a channel layout using a bitmask is constructed or
|
||
* modified manually (i.e. not using any of the av_channel_layout_*
|
||
* functions), the code doing it must ensure that the number of set bits
|
||
* is equal to nb_channels.
|
||
*/
|
||
mask: u64;
|
||
|
||
#overlay (mask) /**
|
||
* This member must be used when the channel order is
|
||
* AV_CHANNEL_ORDER_CUSTOM. It is a nb_channels-sized array, with each
|
||
* element signalling the presence of the AVChannel with the
|
||
* corresponding value in map[i].id.
|
||
*
|
||
* I.e. when map[i].id is equal to AV_CHAN_FOO, then AV_CH_FOO is the
|
||
* i-th channel in the audio data.
|
||
*
|
||
* When map[i].id is in the range between AV_CHAN_AMBISONIC_BASE and
|
||
* AV_CHAN_AMBISONIC_END (inclusive), the channel contains an ambisonic
|
||
* component with ACN index (as defined above)
|
||
* n = map[i].id - AV_CHAN_AMBISONIC_BASE.
|
||
*
|
||
* map[i].name may be filled with a 0-terminated string, in which case
|
||
* it will be used for the purpose of identifying the channel with the
|
||
* convenience functions below. Otherise it must be zeroed.
|
||
*/
|
||
map: *AVChannelCustom;
|
||
};
|
||
|
||
/**
|
||
* For some private data of the user.
|
||
*/
|
||
opaque: *void;
|
||
}
|
||
|
||
/** @} */
|
||
AVBPrint :: struct {}
|
||
|
||
/**
|
||
* Return a channel layout id that matches name, or 0 if no match is found.
|
||
*
|
||
* name can be one or several of the following notations,
|
||
* separated by '+' or '|':
|
||
* - the name of an usual channel layout (mono, stereo, 4.0, quad, 5.0,
|
||
* 5.0(side), 5.1, 5.1(side), 7.1, 7.1(wide), downmix);
|
||
* - the name of a single channel (FL, FR, FC, LFE, BL, BR, FLC, FRC, BC,
|
||
* SL, SR, TC, TFL, TFC, TFR, TBL, TBC, TBR, DL, DR);
|
||
* - a number of channels, in decimal, followed by 'c', yielding
|
||
* the default channel layout for that number of channels (@see
|
||
* av_get_default_channel_layout);
|
||
* - a channel layout mask, in hexadecimal starting with "0x" (see the
|
||
* AV_CH_* macros).
|
||
*
|
||
* Example: "stereo+FC" = "2c+FC" = "2c+1c" = "0x7"
|
||
*
|
||
* @deprecated use av_channel_layout_from_string()
|
||
*/
|
||
av_get_channel_layout :: (name: *u8) -> u64 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Return a channel layout and the number of channels based on the specified name.
|
||
*
|
||
* This function is similar to (@see av_get_channel_layout), but can also parse
|
||
* unknown channel layout specifications.
|
||
*
|
||
* @param[in] name channel layout specification string
|
||
* @param[out] channel_layout parsed channel layout (0 if unknown)
|
||
* @param[out] nb_channels number of channels
|
||
*
|
||
* @return 0 on success, AVERROR(EINVAL) if the parsing fails.
|
||
* @deprecated use av_channel_layout_from_string()
|
||
*/
|
||
av_get_extended_channel_layout :: (name: *u8, channel_layout: *u64, nb_channels: *s32) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Return a description of a channel layout.
|
||
* If nb_channels is <= 0, it is guessed from the channel_layout.
|
||
*
|
||
* @param buf put here the string containing the channel layout
|
||
* @param buf_size size in bytes of the buffer
|
||
* @param nb_channels number of channels
|
||
* @param channel_layout channel layout bitset
|
||
* @deprecated use av_channel_layout_describe()
|
||
*/
|
||
av_get_channel_layout_string :: (buf: *u8, buf_size: s32, nb_channels: s32, channel_layout: u64) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Append a description of a channel layout to a bprint buffer.
|
||
* @deprecated use av_channel_layout_describe()
|
||
*/
|
||
av_bprint_channel_layout :: (bp: *AVBPrint, nb_channels: s32, channel_layout: u64) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Return the number of channels in the channel layout.
|
||
* @deprecated use AVChannelLayout.nb_channels
|
||
*/
|
||
av_get_channel_layout_nb_channels :: (channel_layout: u64) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Return default channel layout for a given number of channels.
|
||
*
|
||
* @deprecated use av_channel_layout_default()
|
||
*/
|
||
av_get_default_channel_layout :: (nb_channels: s32) -> s64 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get the index of a channel in channel_layout.
|
||
*
|
||
* @param channel_layout channel layout bitset
|
||
* @param channel a channel layout describing exactly one channel which must be
|
||
* present in channel_layout.
|
||
*
|
||
* @return index of channel in channel_layout on success, a negative AVERROR
|
||
* on error.
|
||
*
|
||
* @deprecated use av_channel_layout_index_from_channel()
|
||
*/
|
||
av_get_channel_layout_channel_index :: (channel_layout: u64, channel: u64) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get the channel with the given index in channel_layout.
|
||
* @deprecated use av_channel_layout_channel_from_index()
|
||
*/
|
||
av_channel_layout_extract_channel :: (channel_layout: u64, index: s32) -> u64 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get the name of a given channel.
|
||
*
|
||
* @return channel name on success, NULL on error.
|
||
*
|
||
* @deprecated use av_channel_name()
|
||
*/
|
||
av_get_channel_name :: (channel: u64) -> *u8 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get the description of a given channel.
|
||
*
|
||
* @param channel a channel layout with a single channel
|
||
* @return channel description on success, NULL on error
|
||
* @deprecated use av_channel_description()
|
||
*/
|
||
av_get_channel_description :: (channel: u64) -> *u8 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get the value and name of a standard channel layout.
|
||
*
|
||
* @param[in] index index in an internal list, starting at 0
|
||
* @param[out] layout channel layout mask
|
||
* @param[out] name name of the layout
|
||
* @return 0 if the layout exists,
|
||
* <0 if index is beyond the limits
|
||
* @deprecated use av_channel_layout_standard()
|
||
*/
|
||
av_get_standard_channel_layout :: (index: u32, layout: *u64, name: **u8) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get a human readable string in an abbreviated form describing a given channel.
|
||
* This is the inverse function of @ref av_channel_from_string().
|
||
*
|
||
* @param buf pre-allocated buffer where to put the generated string
|
||
* @param buf_size size in bytes of the buffer.
|
||
* @param channel the AVChannel whose name to get
|
||
* @return amount of bytes needed to hold the output string, or a negative AVERROR
|
||
* on failure. If the returned value is bigger than buf_size, then the
|
||
* string was truncated.
|
||
*/
|
||
av_channel_name :: (buf: *u8, buf_size: u64, channel: AVChannel) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* bprint variant of av_channel_name().
|
||
*
|
||
* @note the string will be appended to the bprint buffer.
|
||
*/
|
||
av_channel_name_bprint :: (bp: *AVBPrint, channel_id: AVChannel) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get a human readable string describing a given channel.
|
||
*
|
||
* @param buf pre-allocated buffer where to put the generated string
|
||
* @param buf_size size in bytes of the buffer.
|
||
* @param channel the AVChannel whose description to get
|
||
* @return amount of bytes needed to hold the output string, or a negative AVERROR
|
||
* on failure. If the returned value is bigger than buf_size, then the
|
||
* string was truncated.
|
||
*/
|
||
av_channel_description :: (buf: *u8, buf_size: u64, channel: AVChannel) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* bprint variant of av_channel_description().
|
||
*
|
||
* @note the string will be appended to the bprint buffer.
|
||
*/
|
||
av_channel_description_bprint :: (bp: *AVBPrint, channel_id: AVChannel) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* This is the inverse function of @ref av_channel_name().
|
||
*
|
||
* @return the channel with the given name
|
||
* AV_CHAN_NONE when name does not identify a known channel
|
||
*/
|
||
av_channel_from_string :: (name: *u8) -> AVChannel #foreign libavutil_58;
|
||
|
||
/**
|
||
* Initialize a native channel layout from a bitmask indicating which channels
|
||
* are present.
|
||
*
|
||
* @param channel_layout the layout structure to be initialized
|
||
* @param mask bitmask describing the channel layout
|
||
*
|
||
* @return 0 on success
|
||
* AVERROR(EINVAL) for invalid mask values
|
||
*/
|
||
av_channel_layout_from_mask :: (channel_layout: *AVChannelLayout, mask: u64) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Initialize a channel layout from a given string description.
|
||
* The input string can be represented by:
|
||
* - the formal channel layout name (returned by av_channel_layout_describe())
|
||
* - single or multiple channel names (returned by av_channel_name(), eg. "FL",
|
||
* or concatenated with "+", each optionally containing a custom name after
|
||
* a "@", eg. "FL@Left+FR@Right+LFE")
|
||
* - a decimal or hexadecimal value of a native channel layout (eg. "4" or "0x4")
|
||
* - the number of channels with default layout (eg. "4c")
|
||
* - the number of unordered channels (eg. "4C" or "4 channels")
|
||
* - the ambisonic order followed by optional non-diegetic channels (eg.
|
||
* "ambisonic 2+stereo")
|
||
*
|
||
* @param channel_layout input channel layout
|
||
* @param str string describing the channel layout
|
||
* @return 0 channel layout was detected, AVERROR_INVALIDATATA otherwise
|
||
*/
|
||
av_channel_layout_from_string :: (channel_layout: *AVChannelLayout, str: *u8) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get the default channel layout for a given number of channels.
|
||
*
|
||
* @param ch_layout the layout structure to be initialized
|
||
* @param nb_channels number of channels
|
||
*/
|
||
av_channel_layout_default :: (ch_layout: *AVChannelLayout, nb_channels: s32) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Iterate over all standard channel layouts.
|
||
*
|
||
* @param opaque a pointer where libavutil will store the iteration state. Must
|
||
* point to NULL to start the iteration.
|
||
*
|
||
* @return the standard channel layout or NULL when the iteration is
|
||
* finished
|
||
*/
|
||
av_channel_layout_standard :: (opaque: **void) -> *AVChannelLayout #foreign libavutil_58;
|
||
|
||
/**
|
||
* Free any allocated data in the channel layout and reset the channel
|
||
* count to 0.
|
||
*
|
||
* @param channel_layout the layout structure to be uninitialized
|
||
*/
|
||
av_channel_layout_uninit :: (channel_layout: *AVChannelLayout) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Make a copy of a channel layout. This differs from just assigning src to dst
|
||
* in that it allocates and copies the map for AV_CHANNEL_ORDER_CUSTOM.
|
||
*
|
||
* @note the destination channel_layout will be always uninitialized before copy.
|
||
*
|
||
* @param dst destination channel layout
|
||
* @param src source channel layout
|
||
* @return 0 on success, a negative AVERROR on error.
|
||
*/
|
||
av_channel_layout_copy :: (dst: *AVChannelLayout, src: *AVChannelLayout) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get a human-readable string describing the channel layout properties.
|
||
* The string will be in the same format that is accepted by
|
||
* @ref av_channel_layout_from_string(), allowing to rebuild the same
|
||
* channel layout, except for opaque pointers.
|
||
*
|
||
* @param channel_layout channel layout to be described
|
||
* @param buf pre-allocated buffer where to put the generated string
|
||
* @param buf_size size in bytes of the buffer.
|
||
* @return amount of bytes needed to hold the output string, or a negative AVERROR
|
||
* on failure. If the returned value is bigger than buf_size, then the
|
||
* string was truncated.
|
||
*/
|
||
av_channel_layout_describe :: (channel_layout: *AVChannelLayout, buf: *u8, buf_size: u64) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* bprint variant of av_channel_layout_describe().
|
||
*
|
||
* @note the string will be appended to the bprint buffer.
|
||
* @return 0 on success, or a negative AVERROR value on failure.
|
||
*/
|
||
av_channel_layout_describe_bprint :: (channel_layout: *AVChannelLayout, bp: *AVBPrint) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get the channel with the given index in a channel layout.
|
||
*
|
||
* @param channel_layout input channel layout
|
||
* @param idx index of the channel
|
||
* @return channel with the index idx in channel_layout on success or
|
||
* AV_CHAN_NONE on failure (if idx is not valid or the channel order is
|
||
* unspecified)
|
||
*/
|
||
av_channel_layout_channel_from_index :: (channel_layout: *AVChannelLayout, idx: u32) -> AVChannel #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get the index of a given channel in a channel layout. In case multiple
|
||
* channels are found, only the first match will be returned.
|
||
*
|
||
* @param channel_layout input channel layout
|
||
* @param channel the channel whose index to obtain
|
||
* @return index of channel in channel_layout on success or a negative number if
|
||
* channel is not present in channel_layout.
|
||
*/
|
||
av_channel_layout_index_from_channel :: (channel_layout: *AVChannelLayout, channel: AVChannel) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get the index in a channel layout of a channel described by the given string.
|
||
* In case multiple channels are found, only the first match will be returned.
|
||
*
|
||
* This function accepts channel names in the same format as
|
||
* @ref av_channel_from_string().
|
||
*
|
||
* @param channel_layout input channel layout
|
||
* @param name string describing the channel whose index to obtain
|
||
* @return a channel index described by the given string, or a negative AVERROR
|
||
* value.
|
||
*/
|
||
av_channel_layout_index_from_string :: (channel_layout: *AVChannelLayout, name: *u8) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get a channel described by the given string.
|
||
*
|
||
* This function accepts channel names in the same format as
|
||
* @ref av_channel_from_string().
|
||
*
|
||
* @param channel_layout input channel layout
|
||
* @param name string describing the channel to obtain
|
||
* @return a channel described by the given string in channel_layout on success
|
||
* or AV_CHAN_NONE on failure (if the string is not valid or the channel
|
||
* order is unspecified)
|
||
*/
|
||
av_channel_layout_channel_from_string :: (channel_layout: *AVChannelLayout, name: *u8) -> AVChannel #foreign libavutil_58;
|
||
|
||
/**
|
||
* Find out what channels from a given set are present in a channel layout,
|
||
* without regard for their positions.
|
||
*
|
||
* @param channel_layout input channel layout
|
||
* @param mask a combination of AV_CH_* representing a set of channels
|
||
* @return a bitfield representing all the channels from mask that are present
|
||
* in channel_layout
|
||
*/
|
||
av_channel_layout_subset :: (channel_layout: *AVChannelLayout, mask: u64) -> u64 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Check whether a channel layout is valid, i.e. can possibly describe audio
|
||
* data.
|
||
*
|
||
* @param channel_layout input channel layout
|
||
* @return 1 if channel_layout is valid, 0 otherwise.
|
||
*/
|
||
av_channel_layout_check :: (channel_layout: *AVChannelLayout) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Check whether two channel layouts are semantically the same, i.e. the same
|
||
* channels are present on the same positions in both.
|
||
*
|
||
* If one of the channel layouts is AV_CHANNEL_ORDER_UNSPEC, while the other is
|
||
* not, they are considered to be unequal. If both are AV_CHANNEL_ORDER_UNSPEC,
|
||
* they are considered equal iff the channel counts are the same in both.
|
||
*
|
||
* @param chl input channel layout
|
||
* @param chl1 input channel layout
|
||
* @return 0 if chl and chl1 are equal, 1 if they are not equal. A negative
|
||
* AVERROR code if one or both are invalid.
|
||
*/
|
||
av_channel_layout_compare :: (chl: *AVChannelLayout, chl1: *AVChannelLayout) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* @defgroup lavu_frame AVFrame
|
||
* @ingroup lavu_data
|
||
*
|
||
* @{
|
||
* AVFrame is an abstraction for reference-counted raw multimedia data.
|
||
*/
|
||
AVFrameSideDataType :: enum u32 {
|
||
PANSCAN :: 0;
|
||
|
||
A53_CC :: 1;
|
||
|
||
STEREO3D :: 2;
|
||
|
||
MATRIXENCODING :: 3;
|
||
|
||
DOWNMIX_INFO :: 4;
|
||
|
||
REPLAYGAIN :: 5;
|
||
|
||
DISPLAYMATRIX :: 6;
|
||
|
||
AFD :: 7;
|
||
|
||
MOTION_VECTORS :: 8;
|
||
|
||
SKIP_SAMPLES :: 9;
|
||
|
||
AUDIO_SERVICE_TYPE :: 10;
|
||
|
||
MASTERING_DISPLAY_METADATA :: 11;
|
||
|
||
GOP_TIMECODE :: 12;
|
||
|
||
SPHERICAL :: 13;
|
||
|
||
CONTENT_LIGHT_LEVEL :: 14;
|
||
|
||
ICC_PROFILE :: 15;
|
||
|
||
S12M_TIMECODE :: 16;
|
||
|
||
DYNAMIC_HDR_PLUS :: 17;
|
||
|
||
REGIONS_OF_INTEREST :: 18;
|
||
|
||
VIDEO_ENC_PARAMS :: 19;
|
||
|
||
SEI_UNREGISTERED :: 20;
|
||
|
||
FILM_GRAIN_PARAMS :: 21;
|
||
|
||
DETECTION_BBOXES :: 22;
|
||
|
||
DOVI_RPU_BUFFER :: 23;
|
||
|
||
DOVI_METADATA :: 24;
|
||
|
||
DYNAMIC_HDR_VIVID :: 25;
|
||
|
||
AMBIENT_VIEWING_ENVIRONMENT :: 26;
|
||
|
||
AV_FRAME_DATA_PANSCAN :: PANSCAN;
|
||
|
||
AV_FRAME_DATA_A53_CC :: A53_CC;
|
||
|
||
AV_FRAME_DATA_STEREO3D :: STEREO3D;
|
||
|
||
AV_FRAME_DATA_MATRIXENCODING :: MATRIXENCODING;
|
||
|
||
AV_FRAME_DATA_DOWNMIX_INFO :: DOWNMIX_INFO;
|
||
|
||
AV_FRAME_DATA_REPLAYGAIN :: REPLAYGAIN;
|
||
|
||
AV_FRAME_DATA_DISPLAYMATRIX :: DISPLAYMATRIX;
|
||
|
||
AV_FRAME_DATA_AFD :: AFD;
|
||
|
||
AV_FRAME_DATA_MOTION_VECTORS :: MOTION_VECTORS;
|
||
|
||
AV_FRAME_DATA_SKIP_SAMPLES :: SKIP_SAMPLES;
|
||
|
||
AV_FRAME_DATA_AUDIO_SERVICE_TYPE :: AUDIO_SERVICE_TYPE;
|
||
|
||
AV_FRAME_DATA_MASTERING_DISPLAY_METADATA :: MASTERING_DISPLAY_METADATA;
|
||
|
||
AV_FRAME_DATA_GOP_TIMECODE :: GOP_TIMECODE;
|
||
|
||
AV_FRAME_DATA_SPHERICAL :: SPHERICAL;
|
||
|
||
AV_FRAME_DATA_CONTENT_LIGHT_LEVEL :: CONTENT_LIGHT_LEVEL;
|
||
|
||
AV_FRAME_DATA_ICC_PROFILE :: ICC_PROFILE;
|
||
|
||
AV_FRAME_DATA_S12M_TIMECODE :: S12M_TIMECODE;
|
||
|
||
AV_FRAME_DATA_DYNAMIC_HDR_PLUS :: DYNAMIC_HDR_PLUS;
|
||
|
||
AV_FRAME_DATA_REGIONS_OF_INTEREST :: REGIONS_OF_INTEREST;
|
||
|
||
AV_FRAME_DATA_VIDEO_ENC_PARAMS :: VIDEO_ENC_PARAMS;
|
||
|
||
AV_FRAME_DATA_SEI_UNREGISTERED :: SEI_UNREGISTERED;
|
||
|
||
AV_FRAME_DATA_FILM_GRAIN_PARAMS :: FILM_GRAIN_PARAMS;
|
||
|
||
AV_FRAME_DATA_DETECTION_BBOXES :: DETECTION_BBOXES;
|
||
|
||
AV_FRAME_DATA_DOVI_RPU_BUFFER :: DOVI_RPU_BUFFER;
|
||
|
||
AV_FRAME_DATA_DOVI_METADATA :: DOVI_METADATA;
|
||
|
||
AV_FRAME_DATA_DYNAMIC_HDR_VIVID :: DYNAMIC_HDR_VIVID;
|
||
|
||
AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT :: AMBIENT_VIEWING_ENVIRONMENT;
|
||
}
|
||
|
||
AVActiveFormatDescription :: enum u32 {
|
||
SAME :: 8;
|
||
_4_3 :: 9;
|
||
_16_9 :: 10;
|
||
_14_9 :: 11;
|
||
_4_3_SP_14_9 :: 13;
|
||
_16_9_SP_14_9 :: 14;
|
||
SP_4_3 :: 15;
|
||
|
||
AV_AFD_SAME :: SAME;
|
||
AV_AFD_4_3 :: _4_3;
|
||
AV_AFD_16_9 :: _16_9;
|
||
AV_AFD_14_9 :: _14_9;
|
||
AV_AFD_4_3_SP_14_9 :: _4_3_SP_14_9;
|
||
AV_AFD_16_9_SP_14_9 :: _16_9_SP_14_9;
|
||
AV_AFD_SP_4_3 :: SP_4_3;
|
||
}
|
||
|
||
/**
|
||
* Structure to hold side data for an AVFrame.
|
||
*
|
||
* sizeof(AVFrameSideData) is not a part of the public ABI, so new fields may be added
|
||
* to the end with a minor bump.
|
||
*/
|
||
AVFrameSideData :: struct {
|
||
type: AVFrameSideDataType;
|
||
data: *u8;
|
||
size: u64;
|
||
metadata: *AVDictionary;
|
||
buf: *AVBufferRef;
|
||
}
|
||
|
||
/**
|
||
* Structure describing a single Region Of Interest.
|
||
*
|
||
* When multiple regions are defined in a single side-data block, they
|
||
* should be ordered from most to least important - some encoders are only
|
||
* capable of supporting a limited number of distinct regions, so will have
|
||
* to truncate the list.
|
||
*
|
||
* When overlapping regions are defined, the first region containing a given
|
||
* area of the frame applies.
|
||
*/
|
||
AVRegionOfInterest :: struct {
|
||
/**
|
||
* Must be set to the size of this data structure (that is,
|
||
* sizeof(AVRegionOfInterest)).
|
||
*/
|
||
self_size: u32;
|
||
|
||
/**
|
||
* Distance in pixels from the top edge of the frame to the top and
|
||
* bottom edges and from the left edge of the frame to the left and
|
||
* right edges of the rectangle defining this region of interest.
|
||
*
|
||
* The constraints on a region are encoder dependent, so the region
|
||
* actually affected may be slightly larger for alignment or other
|
||
* reasons.
|
||
*/
|
||
top: s32;
|
||
bottom: s32;
|
||
left: s32;
|
||
right: s32;
|
||
|
||
/**
|
||
* Quantisation offset.
|
||
*
|
||
* Must be in the range -1 to +1. A value of zero indicates no quality
|
||
* change. A negative value asks for better quality (less quantisation),
|
||
* while a positive value asks for worse quality (greater quantisation).
|
||
*
|
||
* The range is calibrated so that the extreme values indicate the
|
||
* largest possible offset - if the rest of the frame is encoded with the
|
||
* worst possible quality, an offset of -1 indicates that this region
|
||
* should be encoded with the best possible quality anyway. Intermediate
|
||
* values are then interpolated in some codec-dependent way.
|
||
*
|
||
* For example, in 10-bit H.264 the quantisation parameter varies between
|
||
* -12 and 51. A typical qoffset value of -1/10 therefore indicates that
|
||
* this region should be encoded with a QP around one-tenth of the full
|
||
* range better than the rest of the frame. So, if most of the frame
|
||
* were to be encoded with a QP of around 30, this region would get a QP
|
||
* of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3).
|
||
* An extreme value of -1 would indicate that this region should be
|
||
* encoded with the best possible quality regardless of the treatment of
|
||
* the rest of the frame - that is, should be encoded at a QP of -12.
|
||
*/
|
||
qoffset: AVRational;
|
||
}
|
||
|
||
/**
|
||
* This structure describes decoded (raw) audio or video data.
|
||
*
|
||
* AVFrame must be allocated using av_frame_alloc(). Note that this only
|
||
* allocates the AVFrame itself, the buffers for the data must be managed
|
||
* through other means (see below).
|
||
* AVFrame must be freed with av_frame_free().
|
||
*
|
||
* AVFrame is typically allocated once and then reused multiple times to hold
|
||
* different data (e.g. a single AVFrame to hold frames received from a
|
||
* decoder). In such a case, av_frame_unref() will free any references held by
|
||
* the frame and reset it to its original clean state before it
|
||
* is reused again.
|
||
*
|
||
* The data described by an AVFrame is usually reference counted through the
|
||
* AVBuffer API. The underlying buffer references are stored in AVFrame.buf /
|
||
* AVFrame.extended_buf. An AVFrame is considered to be reference counted if at
|
||
* least one reference is set, i.e. if AVFrame.buf[0] != NULL. In such a case,
|
||
* every single data plane must be contained in one of the buffers in
|
||
* AVFrame.buf or AVFrame.extended_buf.
|
||
* There may be a single buffer for all the data, or one separate buffer for
|
||
* each plane, or anything in between.
|
||
*
|
||
* sizeof(AVFrame) is not a part of the public ABI, so new fields may be added
|
||
* to the end with a minor bump.
|
||
*
|
||
* Fields can be accessed through AVOptions, the name string used, matches the
|
||
* C structure field name for fields accessible through AVOptions. The AVClass
|
||
* for AVFrame can be obtained from avcodec_get_frame_class()
|
||
*/
|
||
AVFrame :: struct {
|
||
/**
|
||
* pointer to the picture/channel planes.
|
||
* This might be different from the first allocated byte. For video,
|
||
* it could even point to the end of the image data.
|
||
*
|
||
* All pointers in data and extended_data must point into one of the
|
||
* AVBufferRef in buf or extended_buf.
|
||
*
|
||
* Some decoders access areas outside 0,0 - width,height, please
|
||
* see avcodec_align_dimensions2(). Some filters and swscale can read
|
||
* up to 16 bytes beyond the planes, if these filters are to be used,
|
||
* then 16 extra bytes must be allocated.
|
||
*
|
||
* NOTE: Pointers not needed by the format MUST be set to NULL.
|
||
*
|
||
* @attention In case of video, the data[] pointers can point to the
|
||
* end of image data in order to reverse line order, when used in
|
||
* combination with negative values in the linesize[] array.
|
||
*/
|
||
data: [8] *u8;
|
||
|
||
/**
|
||
* For video, a positive or negative value, which is typically indicating
|
||
* the size in bytes of each picture line, but it can also be:
|
||
* - the negative byte size of lines for vertical flipping
|
||
* (with data[n] pointing to the end of the data
|
||
* - a positive or negative multiple of the byte size as for accessing
|
||
* even and odd fields of a frame (possibly flipped)
|
||
*
|
||
* For audio, only linesize[0] may be set. For planar audio, each channel
|
||
* plane must be the same size.
|
||
*
|
||
* For video the linesizes should be multiples of the CPUs alignment
|
||
* preference, this is 16 or 32 for modern desktop CPUs.
|
||
* Some code requires such alignment other code can be slower without
|
||
* correct alignment, for yet other it makes no difference.
|
||
*
|
||
* @note The linesize may be larger than the size of usable data -- there
|
||
* may be extra padding present for performance reasons.
|
||
*
|
||
* @attention In case of video, line size values can be negative to achieve
|
||
* a vertically inverted iteration over image lines.
|
||
*/
|
||
linesize: [8] s32;
|
||
|
||
/**
|
||
* pointers to the data planes/channels.
|
||
*
|
||
* For video, this should simply point to data[].
|
||
*
|
||
* For planar audio, each channel has a separate data pointer, and
|
||
* linesize[0] contains the size of each channel buffer.
|
||
* For packed audio, there is just one data pointer, and linesize[0]
|
||
* contains the total size of the buffer for all channels.
|
||
*
|
||
* Note: Both data and extended_data should always be set in a valid frame,
|
||
* but for planar audio with more channels that can fit in data,
|
||
* extended_data must be used in order to access all channels.
|
||
*/
|
||
extended_data: **u8;
|
||
|
||
/**
|
||
* @name Video dimensions
|
||
* Video frames only. The coded dimensions (in pixels) of the video frame,
|
||
* i.e. the size of the rectangle that contains some well-defined values.
|
||
*
|
||
* @note The part of the frame intended for display/presentation is further
|
||
* restricted by the @ref cropping "Cropping rectangle".
|
||
* @{
|
||
*/
|
||
width: s32;
|
||
/**
|
||
* @name Video dimensions
|
||
* Video frames only. The coded dimensions (in pixels) of the video frame,
|
||
* i.e. the size of the rectangle that contains some well-defined values.
|
||
*
|
||
* @note The part of the frame intended for display/presentation is further
|
||
* restricted by the @ref cropping "Cropping rectangle".
|
||
* @{
|
||
*/
|
||
height: s32;
|
||
|
||
/**
|
||
* number of audio samples (per channel) described by this frame
|
||
*/
|
||
nb_samples: s32;
|
||
|
||
/**
|
||
* format of the frame, -1 if unknown or unset
|
||
* Values correspond to enum AVPixelFormat for video frames,
|
||
* enum AVSampleFormat for audio)
|
||
*/
|
||
format: s32;
|
||
|
||
/**
|
||
* 1 -> keyframe, 0-> not
|
||
*/
|
||
key_frame: s32;
|
||
|
||
/**
|
||
* Picture type of the frame.
|
||
*/
|
||
pict_type: AVPictureType;
|
||
|
||
/**
|
||
* Sample aspect ratio for the video frame, 0/1 if unknown/unspecified.
|
||
*/
|
||
sample_aspect_ratio: AVRational;
|
||
|
||
/**
|
||
* Presentation timestamp in time_base units (time when frame should be shown to user).
|
||
*/
|
||
pts: s64;
|
||
|
||
/**
|
||
* DTS copied from the AVPacket that triggered returning this frame. (if frame threading isn't used)
|
||
* This is also the Presentation time of this AVFrame calculated from
|
||
* only AVPacket.dts values without pts values.
|
||
*/
|
||
pkt_dts: s64;
|
||
|
||
/**
|
||
* Time base for the timestamps in this frame.
|
||
* In the future, this field may be set on frames output by decoders or
|
||
* filters, but its value will be by default ignored on input to encoders
|
||
* or filters.
|
||
*/
|
||
time_base: AVRational;
|
||
|
||
/**
|
||
* picture number in bitstream order
|
||
*/
|
||
coded_picture_number: s32;
|
||
|
||
/**
|
||
* picture number in display order
|
||
*/
|
||
display_picture_number: s32;
|
||
|
||
/**
|
||
* quality (between 1 (good) and FF_LAMBDA_MAX (bad))
|
||
*/
|
||
quality: s32;
|
||
|
||
/**
|
||
* for some private data of the user
|
||
*/
|
||
opaque: *void;
|
||
|
||
/**
|
||
* When decoding, this signals how much the picture must be delayed.
|
||
* extra_delay = repeat_pict / (2*fps)
|
||
*/
|
||
repeat_pict: s32;
|
||
|
||
/**
|
||
* The content of the picture is interlaced.
|
||
*/
|
||
interlaced_frame: s32;
|
||
|
||
/**
|
||
* If the content is interlaced, is top field displayed first.
|
||
*/
|
||
top_field_first: s32;
|
||
|
||
/**
|
||
* Tell user application that palette has changed from previous frame.
|
||
*/
|
||
palette_has_changed: s32;
|
||
|
||
/**
|
||
* reordered opaque 64 bits (generally an integer or a double precision float
|
||
* PTS but can be anything).
|
||
* The user sets AVCodecContext.reordered_opaque to represent the input at
|
||
* that time,
|
||
* the decoder reorders values as needed and sets AVFrame.reordered_opaque
|
||
* to exactly one of the values provided by the user through AVCodecContext.reordered_opaque
|
||
*
|
||
* @deprecated Use AV_CODEC_FLAG_COPY_OPAQUE instead
|
||
*/
|
||
reordered_opaque: s64;
|
||
|
||
/**
|
||
* Sample rate of the audio data.
|
||
*/
|
||
sample_rate: s32;
|
||
|
||
/**
|
||
* Channel layout of the audio data.
|
||
* @deprecated use ch_layout instead
|
||
*/
|
||
channel_layout: u64;
|
||
|
||
/**
|
||
* AVBuffer references backing the data for this frame. All the pointers in
|
||
* data and extended_data must point inside one of the buffers in buf or
|
||
* extended_buf. This array must be filled contiguously -- if buf[i] is
|
||
* non-NULL then buf[j] must also be non-NULL for all j < i.
|
||
*
|
||
* There may be at most one AVBuffer per data plane, so for video this array
|
||
* always contains all the references. For planar audio with more than
|
||
* AV_NUM_DATA_POINTERS channels, there may be more buffers than can fit in
|
||
* this array. Then the extra AVBufferRef pointers are stored in the
|
||
* extended_buf array.
|
||
*/
|
||
buf: [8] *AVBufferRef;
|
||
|
||
/**
|
||
* For planar audio which requires more than AV_NUM_DATA_POINTERS
|
||
* AVBufferRef pointers, this array will hold all the references which
|
||
* cannot fit into AVFrame.buf.
|
||
*
|
||
* Note that this is different from AVFrame.extended_data, which always
|
||
* contains all the pointers. This array only contains the extra pointers,
|
||
* which cannot fit into AVFrame.buf.
|
||
*
|
||
* This array is always allocated using av_malloc() by whoever constructs
|
||
* the frame. It is freed in av_frame_unref().
|
||
*/
|
||
extended_buf: **AVBufferRef;
|
||
|
||
/**
|
||
* Number of elements in extended_buf.
|
||
*/
|
||
nb_extended_buf: s32;
|
||
|
||
side_data: **AVFrameSideData;
|
||
nb_side_data: s32;
|
||
|
||
/**
|
||
* Frame flags, a combination of @ref lavu_frame_flags
|
||
*/
|
||
flags: s32;
|
||
|
||
/**
|
||
* MPEG vs JPEG YUV range.
|
||
* - encoding: Set by user
|
||
* - decoding: Set by libavcodec
|
||
*/
|
||
color_range: AVColorRange;
|
||
|
||
color_primaries: AVColorPrimaries;
|
||
|
||
color_trc: AVColorTransferCharacteristic;
|
||
|
||
/**
|
||
* YUV colorspace type.
|
||
* - encoding: Set by user
|
||
* - decoding: Set by libavcodec
|
||
*/
|
||
colorspace: AVColorSpace;
|
||
|
||
chroma_location: AVChromaLocation;
|
||
|
||
/**
|
||
* frame timestamp estimated using various heuristics, in stream time base
|
||
* - encoding: unused
|
||
* - decoding: set by libavcodec, read by user.
|
||
*/
|
||
best_effort_timestamp: s64;
|
||
|
||
/**
|
||
* reordered pos from the last AVPacket that has been input into the decoder
|
||
* - encoding: unused
|
||
* - decoding: Read by user.
|
||
*/
|
||
pkt_pos: s64;
|
||
|
||
/**
|
||
* duration of the corresponding packet, expressed in
|
||
* AVStream->time_base units, 0 if unknown.
|
||
* - encoding: unused
|
||
* - decoding: Read by user.
|
||
*
|
||
* @deprecated use duration instead
|
||
*/
|
||
pkt_duration: s64;
|
||
|
||
/**
|
||
* metadata.
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by libavcodec.
|
||
*/
|
||
metadata: *AVDictionary;
|
||
|
||
/**
|
||
* decode error flags of the frame, set to a combination of
|
||
* FF_DECODE_ERROR_xxx flags if the decoder produced a frame, but there
|
||
* were errors during the decoding.
|
||
* - encoding: unused
|
||
* - decoding: set by libavcodec, read by user.
|
||
*/
|
||
decode_error_flags: s32;
|
||
|
||
/**
|
||
* number of audio channels, only used for audio.
|
||
* - encoding: unused
|
||
* - decoding: Read by user.
|
||
* @deprecated use ch_layout instead
|
||
*/
|
||
channels: s32;
|
||
|
||
/**
|
||
* size of the corresponding packet containing the compressed
|
||
* frame.
|
||
* It is set to a negative value if unknown.
|
||
* - encoding: unused
|
||
* - decoding: set by libavcodec, read by user.
|
||
*/
|
||
pkt_size: s32;
|
||
|
||
/**
|
||
* For hwaccel-format frames, this should be a reference to the
|
||
* AVHWFramesContext describing the frame.
|
||
*/
|
||
hw_frames_ctx: *AVBufferRef;
|
||
|
||
/**
|
||
* AVBufferRef for free use by the API user. FFmpeg will never check the
|
||
* contents of the buffer ref. FFmpeg calls av_buffer_unref() on it when
|
||
* the frame is unreferenced. av_frame_copy_props() calls create a new
|
||
* reference with av_buffer_ref() for the target frame's opaque_ref field.
|
||
*
|
||
* This is unrelated to the opaque field, although it serves a similar
|
||
* purpose.
|
||
*/
|
||
opaque_ref: *AVBufferRef;
|
||
|
||
/**
|
||
* @anchor cropping
|
||
* @name Cropping
|
||
* Video frames only. The number of pixels to discard from the the
|
||
* top/bottom/left/right border of the frame to obtain the sub-rectangle of
|
||
* the frame intended for presentation.
|
||
* @{
|
||
*/
|
||
crop_top: u64;
|
||
crop_bottom: u64;
|
||
crop_left: u64;
|
||
crop_right: u64;
|
||
|
||
/**
|
||
* AVBufferRef for internal use by a single libav* library.
|
||
* Must not be used to transfer data between libraries.
|
||
* Has to be NULL when ownership of the frame leaves the respective library.
|
||
*
|
||
* Code outside the FFmpeg libs should never check or change the contents of the buffer ref.
|
||
*
|
||
* FFmpeg calls av_buffer_unref() on it when the frame is unreferenced.
|
||
* av_frame_copy_props() calls create a new reference with av_buffer_ref()
|
||
* for the target frame's private_ref field.
|
||
*/
|
||
private_ref: *AVBufferRef;
|
||
|
||
/**
|
||
* Channel layout of the audio data.
|
||
*/
|
||
ch_layout: AVChannelLayout;
|
||
|
||
/**
|
||
* Duration of the frame, in the same units as pts. 0 if unknown.
|
||
*/
|
||
duration: s64;
|
||
}
|
||
|
||
/**
|
||
* Allocate an AVFrame and set its fields to default values. The resulting
|
||
* struct must be freed using av_frame_free().
|
||
*
|
||
* @return An AVFrame filled with default values or NULL on failure.
|
||
*
|
||
* @note this only allocates the AVFrame itself, not the data buffers. Those
|
||
* must be allocated through other means, e.g. with av_frame_get_buffer() or
|
||
* manually.
|
||
*/
|
||
av_frame_alloc :: () -> *AVFrame #foreign libavutil_58;
|
||
|
||
/**
|
||
* Free the frame and any dynamically allocated objects in it,
|
||
* e.g. extended_data. If the frame is reference counted, it will be
|
||
* unreferenced first.
|
||
*
|
||
* @param frame frame to be freed. The pointer will be set to NULL.
|
||
*/
|
||
av_frame_free :: (frame: **AVFrame) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Set up a new reference to the data described by the source frame.
|
||
*
|
||
* Copy frame properties from src to dst and create a new reference for each
|
||
* AVBufferRef from src.
|
||
*
|
||
* If src is not reference counted, new buffers are allocated and the data is
|
||
* copied.
|
||
*
|
||
* @warning: dst MUST have been either unreferenced with av_frame_unref(dst),
|
||
* or newly allocated with av_frame_alloc() before calling this
|
||
* function, or undefined behavior will occur.
|
||
*
|
||
* @return 0 on success, a negative AVERROR on error
|
||
*/
|
||
av_frame_ref :: (dst: *AVFrame, src: *AVFrame) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Create a new frame that references the same data as src.
|
||
*
|
||
* This is a shortcut for av_frame_alloc()+av_frame_ref().
|
||
*
|
||
* @return newly created AVFrame on success, NULL on error.
|
||
*/
|
||
av_frame_clone :: (src: *AVFrame) -> *AVFrame #foreign libavutil_58;
|
||
|
||
/**
|
||
* Unreference all the buffers referenced by frame and reset the frame fields.
|
||
*/
|
||
av_frame_unref :: (frame: *AVFrame) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Move everything contained in src to dst and reset src.
|
||
*
|
||
* @warning: dst is not unreferenced, but directly overwritten without reading
|
||
* or deallocating its contents. Call av_frame_unref(dst) manually
|
||
* before calling this function to ensure that no memory is leaked.
|
||
*/
|
||
av_frame_move_ref :: (dst: *AVFrame, src: *AVFrame) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Allocate new buffer(s) for audio or video data.
|
||
*
|
||
* The following fields must be set on frame before calling this function:
|
||
* - format (pixel format for video, sample format for audio)
|
||
* - width and height for video
|
||
* - nb_samples and ch_layout for audio
|
||
*
|
||
* This function will fill AVFrame.data and AVFrame.buf arrays and, if
|
||
* necessary, allocate and fill AVFrame.extended_data and AVFrame.extended_buf.
|
||
* For planar formats, one buffer will be allocated for each plane.
|
||
*
|
||
* @warning: if frame already has been allocated, calling this function will
|
||
* leak memory. In addition, undefined behavior can occur in certain
|
||
* cases.
|
||
*
|
||
* @param frame frame in which to store the new buffers.
|
||
* @param align Required buffer size alignment. If equal to 0, alignment will be
|
||
* chosen automatically for the current CPU. It is highly
|
||
* recommended to pass 0 here unless you know what you are doing.
|
||
*
|
||
* @return 0 on success, a negative AVERROR on error.
|
||
*/
|
||
av_frame_get_buffer :: (frame: *AVFrame, align: s32) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Check if the frame data is writable.
|
||
*
|
||
* @return A positive value if the frame data is writable (which is true if and
|
||
* only if each of the underlying buffers has only one reference, namely the one
|
||
* stored in this frame). Return 0 otherwise.
|
||
*
|
||
* If 1 is returned the answer is valid until av_buffer_ref() is called on any
|
||
* of the underlying AVBufferRefs (e.g. through av_frame_ref() or directly).
|
||
*
|
||
* @see av_frame_make_writable(), av_buffer_is_writable()
|
||
*/
|
||
av_frame_is_writable :: (frame: *AVFrame) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Ensure that the frame data is writable, avoiding data copy if possible.
|
||
*
|
||
* Do nothing if the frame is writable, allocate new buffers and copy the data
|
||
* if it is not. Non-refcounted frames behave as non-writable, i.e. a copy
|
||
* is always made.
|
||
*
|
||
* @return 0 on success, a negative AVERROR on error.
|
||
*
|
||
* @see av_frame_is_writable(), av_buffer_is_writable(),
|
||
* av_buffer_make_writable()
|
||
*/
|
||
av_frame_make_writable :: (frame: *AVFrame) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Copy the frame data from src to dst.
|
||
*
|
||
* This function does not allocate anything, dst must be already initialized and
|
||
* allocated with the same parameters as src.
|
||
*
|
||
* This function only copies the frame data (i.e. the contents of the data /
|
||
* extended data arrays), not any other properties.
|
||
*
|
||
* @return >= 0 on success, a negative AVERROR on error.
|
||
*/
|
||
av_frame_copy :: (dst: *AVFrame, src: *AVFrame) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Copy only "metadata" fields from src to dst.
|
||
*
|
||
* Metadata for the purpose of this function are those fields that do not affect
|
||
* the data layout in the buffers. E.g. pts, sample rate (for audio) or sample
|
||
* aspect ratio (for video), but not width/height or channel layout.
|
||
* Side data is also copied.
|
||
*/
|
||
av_frame_copy_props :: (dst: *AVFrame, src: *AVFrame) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get the buffer reference a given data plane is stored in.
|
||
*
|
||
* @param frame the frame to get the plane's buffer from
|
||
* @param plane index of the data plane of interest in frame->extended_data.
|
||
*
|
||
* @return the buffer reference that contains the plane or NULL if the input
|
||
* frame is not valid.
|
||
*/
|
||
av_frame_get_plane_buffer :: (frame: *AVFrame, plane: s32) -> *AVBufferRef #foreign libavutil_58;
|
||
|
||
/**
|
||
* Add a new side data to a frame.
|
||
*
|
||
* @param frame a frame to which the side data should be added
|
||
* @param type type of the added side data
|
||
* @param size size of the side data
|
||
*
|
||
* @return newly added side data on success, NULL on error
|
||
*/
|
||
av_frame_new_side_data :: (frame: *AVFrame, type: AVFrameSideDataType, size: u64) -> *AVFrameSideData #foreign libavutil_58;
|
||
|
||
/**
|
||
* Add a new side data to a frame from an existing AVBufferRef
|
||
*
|
||
* @param frame a frame to which the side data should be added
|
||
* @param type the type of the added side data
|
||
* @param buf an AVBufferRef to add as side data. The ownership of
|
||
* the reference is transferred to the frame.
|
||
*
|
||
* @return newly added side data on success, NULL on error. On failure
|
||
* the frame is unchanged and the AVBufferRef remains owned by
|
||
* the caller.
|
||
*/
|
||
av_frame_new_side_data_from_buf :: (frame: *AVFrame, type: AVFrameSideDataType, buf: *AVBufferRef) -> *AVFrameSideData #foreign libavutil_58;
|
||
|
||
/**
|
||
* @return a pointer to the side data of a given type on success, NULL if there
|
||
* is no side data with such type in this frame.
|
||
*/
|
||
av_frame_get_side_data :: (frame: *AVFrame, type: AVFrameSideDataType) -> *AVFrameSideData #foreign libavutil_58;
|
||
|
||
/**
|
||
* Remove and free all side data instances of the given type.
|
||
*/
|
||
av_frame_remove_side_data :: (frame: *AVFrame, type: AVFrameSideDataType) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Flags for frame cropping.
|
||
*/
|
||
anon_enum :: enum u32 {
|
||
AV_FRAME_CROP_UNALIGNED :: 1;
|
||
}
|
||
|
||
/**
|
||
* Crop the given video AVFrame according to its crop_left/crop_top/crop_right/
|
||
* crop_bottom fields. If cropping is successful, the function will adjust the
|
||
* data pointers and the width/height fields, and set the crop fields to 0.
|
||
*
|
||
* In all cases, the cropping boundaries will be rounded to the inherent
|
||
* alignment of the pixel format. In some cases, such as for opaque hwaccel
|
||
* formats, the left/top cropping is ignored. The crop fields are set to 0 even
|
||
* if the cropping was rounded or ignored.
|
||
*
|
||
* @param frame the frame which should be cropped
|
||
* @param flags Some combination of AV_FRAME_CROP_* flags, or 0.
|
||
*
|
||
* @return >= 0 on success, a negative AVERROR on error. If the cropping fields
|
||
* were invalid, AVERROR(ERANGE) is returned, and nothing is changed.
|
||
*/
|
||
av_frame_apply_cropping :: (frame: *AVFrame, flags: s32) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* @return a string identifying the side data type
|
||
*/
|
||
av_frame_side_data_name :: (type: AVFrameSideDataType) -> *u8 #foreign libavutil_58;
|
||
|
||
AVHWDeviceType :: enum u32 {
|
||
NONE :: 0;
|
||
VDPAU :: 1;
|
||
CUDA :: 2;
|
||
VAAPI :: 3;
|
||
DXVA2 :: 4;
|
||
QSV :: 5;
|
||
VIDEOTOOLBOX :: 6;
|
||
D3D11VA :: 7;
|
||
DRM :: 8;
|
||
OPENCL :: 9;
|
||
MEDIACODEC :: 10;
|
||
VULKAN :: 11;
|
||
|
||
AV_HWDEVICE_TYPE_NONE :: NONE;
|
||
AV_HWDEVICE_TYPE_VDPAU :: VDPAU;
|
||
AV_HWDEVICE_TYPE_CUDA :: CUDA;
|
||
AV_HWDEVICE_TYPE_VAAPI :: VAAPI;
|
||
AV_HWDEVICE_TYPE_DXVA2 :: DXVA2;
|
||
AV_HWDEVICE_TYPE_QSV :: QSV;
|
||
AV_HWDEVICE_TYPE_VIDEOTOOLBOX :: VIDEOTOOLBOX;
|
||
AV_HWDEVICE_TYPE_D3D11VA :: D3D11VA;
|
||
AV_HWDEVICE_TYPE_DRM :: DRM;
|
||
AV_HWDEVICE_TYPE_OPENCL :: OPENCL;
|
||
AV_HWDEVICE_TYPE_MEDIACODEC :: MEDIACODEC;
|
||
AV_HWDEVICE_TYPE_VULKAN :: VULKAN;
|
||
}
|
||
|
||
AVHWDeviceInternal :: struct {}
|
||
|
||
/**
|
||
* This struct aggregates all the (hardware/vendor-specific) "high-level" state,
|
||
* i.e. state that is not tied to a concrete processing configuration.
|
||
* E.g., in an API that supports hardware-accelerated encoding and decoding,
|
||
* this struct will (if possible) wrap the state that is common to both encoding
|
||
* and decoding and from which specific instances of encoders or decoders can be
|
||
* derived.
|
||
*
|
||
* This struct is reference-counted with the AVBuffer mechanism. The
|
||
* av_hwdevice_ctx_alloc() constructor yields a reference, whose data field
|
||
* points to the actual AVHWDeviceContext. Further objects derived from
|
||
* AVHWDeviceContext (such as AVHWFramesContext, describing a frame pool with
|
||
* specific properties) will hold an internal reference to it. After all the
|
||
* references are released, the AVHWDeviceContext itself will be freed,
|
||
* optionally invoking a user-specified callback for uninitializing the hardware
|
||
* state.
|
||
*/
|
||
AVHWDeviceContext :: struct {
|
||
/**
|
||
* A class for logging. Set by av_hwdevice_ctx_alloc().
|
||
*/
|
||
av_class: *AVClass;
|
||
|
||
/**
|
||
* Private data used internally by libavutil. Must not be accessed in any
|
||
* way by the caller.
|
||
*/
|
||
internal: *AVHWDeviceInternal;
|
||
|
||
/**
|
||
* This field identifies the underlying API used for hardware access.
|
||
*
|
||
* This field is set when this struct is allocated and never changed
|
||
* afterwards.
|
||
*/
|
||
type: AVHWDeviceType;
|
||
|
||
/**
|
||
* The format-specific data, allocated and freed by libavutil along with
|
||
* this context.
|
||
*
|
||
* Should be cast by the user to the format-specific context defined in the
|
||
* corresponding header (hwcontext_*.h) and filled as described in the
|
||
* documentation before calling av_hwdevice_ctx_init().
|
||
*
|
||
* After calling av_hwdevice_ctx_init() this struct should not be modified
|
||
* by the caller.
|
||
*/
|
||
hwctx: *void;
|
||
|
||
/**
|
||
* This field may be set by the caller before calling av_hwdevice_ctx_init().
|
||
*
|
||
* If non-NULL, this callback will be called when the last reference to
|
||
* this context is unreferenced, immediately before it is freed.
|
||
*
|
||
* @note when other objects (e.g an AVHWFramesContext) are derived from this
|
||
* struct, this callback will be invoked after all such child objects
|
||
* are fully uninitialized and their respective destructors invoked.
|
||
*/
|
||
free: #type (ctx: *AVHWDeviceContext) -> void #c_call;
|
||
|
||
/**
|
||
* Arbitrary user data, to be used e.g. by the free() callback.
|
||
*/
|
||
user_opaque: *void;
|
||
}
|
||
|
||
AVHWFramesInternal :: struct {}
|
||
|
||
/**
|
||
* This struct describes a set or pool of "hardware" frames (i.e. those with
|
||
* data not located in normal system memory). All the frames in the pool are
|
||
* assumed to be allocated in the same way and interchangeable.
|
||
*
|
||
* This struct is reference-counted with the AVBuffer mechanism and tied to a
|
||
* given AVHWDeviceContext instance. The av_hwframe_ctx_alloc() constructor
|
||
* yields a reference, whose data field points to the actual AVHWFramesContext
|
||
* struct.
|
||
*/
|
||
AVHWFramesContext :: struct {
|
||
/**
|
||
* A class for logging.
|
||
*/
|
||
av_class: *AVClass;
|
||
|
||
/**
|
||
* Private data used internally by libavutil. Must not be accessed in any
|
||
* way by the caller.
|
||
*/
|
||
internal: *AVHWFramesInternal;
|
||
|
||
/**
|
||
* A reference to the parent AVHWDeviceContext. This reference is owned and
|
||
* managed by the enclosing AVHWFramesContext, but the caller may derive
|
||
* additional references from it.
|
||
*/
|
||
device_ref: *AVBufferRef;
|
||
|
||
/**
|
||
* The parent AVHWDeviceContext. This is simply a pointer to
|
||
* device_ref->data provided for convenience.
|
||
*
|
||
* Set by libavutil in av_hwframe_ctx_init().
|
||
*/
|
||
device_ctx: *AVHWDeviceContext;
|
||
|
||
/**
|
||
* The format-specific data, allocated and freed automatically along with
|
||
* this context.
|
||
*
|
||
* Should be cast by the user to the format-specific context defined in the
|
||
* corresponding header (hwframe_*.h) and filled as described in the
|
||
* documentation before calling av_hwframe_ctx_init().
|
||
*
|
||
* After any frames using this context are created, the contents of this
|
||
* struct should not be modified by the caller.
|
||
*/
|
||
hwctx: *void;
|
||
|
||
/**
|
||
* This field may be set by the caller before calling av_hwframe_ctx_init().
|
||
*
|
||
* If non-NULL, this callback will be called when the last reference to
|
||
* this context is unreferenced, immediately before it is freed.
|
||
*/
|
||
free: #type (ctx: *AVHWFramesContext) -> void #c_call;
|
||
|
||
/**
|
||
* Arbitrary user data, to be used e.g. by the free() callback.
|
||
*/
|
||
user_opaque: *void;
|
||
|
||
/**
|
||
* A pool from which the frames are allocated by av_hwframe_get_buffer().
|
||
* This field may be set by the caller before calling av_hwframe_ctx_init().
|
||
* The buffers returned by calling av_buffer_pool_get() on this pool must
|
||
* have the properties described in the documentation in the corresponding hw
|
||
* type's header (hwcontext_*.h). The pool will be freed strictly before
|
||
* this struct's free() callback is invoked.
|
||
*
|
||
* This field may be NULL, then libavutil will attempt to allocate a pool
|
||
* internally. Note that certain device types enforce pools allocated at
|
||
* fixed size (frame count), which cannot be extended dynamically. In such a
|
||
* case, initial_pool_size must be set appropriately.
|
||
*/
|
||
pool: *AVBufferPool;
|
||
|
||
/**
|
||
* Initial size of the frame pool. If a device type does not support
|
||
* dynamically resizing the pool, then this is also the maximum pool size.
|
||
*
|
||
* May be set by the caller before calling av_hwframe_ctx_init(). Must be
|
||
* set if pool is NULL and the device type does not support dynamic pools.
|
||
*/
|
||
initial_pool_size: s32;
|
||
|
||
/**
|
||
* The pixel format identifying the underlying HW surface type.
|
||
*
|
||
* Must be a hwaccel format, i.e. the corresponding descriptor must have the
|
||
* AV_PIX_FMT_FLAG_HWACCEL flag set.
|
||
*
|
||
* Must be set by the user before calling av_hwframe_ctx_init().
|
||
*/
|
||
format: AVPixelFormat;
|
||
|
||
/**
|
||
* The pixel format identifying the actual data layout of the hardware
|
||
* frames.
|
||
*
|
||
* Must be set by the caller before calling av_hwframe_ctx_init().
|
||
*
|
||
* @note when the underlying API does not provide the exact data layout, but
|
||
* only the colorspace/bit depth, this field should be set to the fully
|
||
* planar version of that format (e.g. for 8-bit 420 YUV it should be
|
||
* AV_PIX_FMT_YUV420P, not AV_PIX_FMT_NV12 or anything else).
|
||
*/
|
||
sw_format: AVPixelFormat;
|
||
|
||
/**
|
||
* The allocated dimensions of the frames in this pool.
|
||
*
|
||
* Must be set by the user before calling av_hwframe_ctx_init().
|
||
*/
|
||
width: s32;
|
||
/**
|
||
* The allocated dimensions of the frames in this pool.
|
||
*
|
||
* Must be set by the user before calling av_hwframe_ctx_init().
|
||
*/
|
||
height: s32;
|
||
}
|
||
|
||
/**
|
||
* Look up an AVHWDeviceType by name.
|
||
*
|
||
* @param name String name of the device type (case-insensitive).
|
||
* @return The type from enum AVHWDeviceType, or AV_HWDEVICE_TYPE_NONE if
|
||
* not found.
|
||
*/
|
||
av_hwdevice_find_type_by_name :: (name: *u8) -> AVHWDeviceType #foreign libavutil_58;
|
||
|
||
/** Get the string name of an AVHWDeviceType.
|
||
*
|
||
* @param type Type from enum AVHWDeviceType.
|
||
* @return Pointer to a static string containing the name, or NULL if the type
|
||
* is not valid.
|
||
*/
|
||
av_hwdevice_get_type_name :: (type: AVHWDeviceType) -> *u8 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Iterate over supported device types.
|
||
*
|
||
* @param prev AV_HWDEVICE_TYPE_NONE initially, then the previous type
|
||
* returned by this function in subsequent iterations.
|
||
* @return The next usable device type from enum AVHWDeviceType, or
|
||
* AV_HWDEVICE_TYPE_NONE if there are no more.
|
||
*/
|
||
av_hwdevice_iterate_types :: (prev: AVHWDeviceType) -> AVHWDeviceType #foreign libavutil_58;
|
||
|
||
/**
|
||
* Allocate an AVHWDeviceContext for a given hardware type.
|
||
*
|
||
* @param type the type of the hardware device to allocate.
|
||
* @return a reference to the newly created AVHWDeviceContext on success or NULL
|
||
* on failure.
|
||
*/
|
||
av_hwdevice_ctx_alloc :: (type: AVHWDeviceType) -> *AVBufferRef #foreign libavutil_58;
|
||
|
||
/**
|
||
* Finalize the device context before use. This function must be called after
|
||
* the context is filled with all the required information and before it is
|
||
* used in any way.
|
||
*
|
||
* @param ref a reference to the AVHWDeviceContext
|
||
* @return 0 on success, a negative AVERROR code on failure
|
||
*/
|
||
av_hwdevice_ctx_init :: (ref: *AVBufferRef) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Open a device of the specified type and create an AVHWDeviceContext for it.
|
||
*
|
||
* This is a convenience function intended to cover the simple cases. Callers
|
||
* who need to fine-tune device creation/management should open the device
|
||
* manually and then wrap it in an AVHWDeviceContext using
|
||
* av_hwdevice_ctx_alloc()/av_hwdevice_ctx_init().
|
||
*
|
||
* The returned context is already initialized and ready for use, the caller
|
||
* should not call av_hwdevice_ctx_init() on it. The user_opaque/free fields of
|
||
* the created AVHWDeviceContext are set by this function and should not be
|
||
* touched by the caller.
|
||
*
|
||
* @param device_ctx On success, a reference to the newly-created device context
|
||
* will be written here. The reference is owned by the caller
|
||
* and must be released with av_buffer_unref() when no longer
|
||
* needed. On failure, NULL will be written to this pointer.
|
||
* @param type The type of the device to create.
|
||
* @param device A type-specific string identifying the device to open.
|
||
* @param opts A dictionary of additional (type-specific) options to use in
|
||
* opening the device. The dictionary remains owned by the caller.
|
||
* @param flags currently unused
|
||
*
|
||
* @return 0 on success, a negative AVERROR code on failure.
|
||
*/
|
||
av_hwdevice_ctx_create :: (device_ctx: **AVBufferRef, type: AVHWDeviceType, device: *u8, opts: *AVDictionary, flags: s32) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Create a new device of the specified type from an existing device.
|
||
*
|
||
* If the source device is a device of the target type or was originally
|
||
* derived from such a device (possibly through one or more intermediate
|
||
* devices of other types), then this will return a reference to the
|
||
* existing device of the same type as is requested.
|
||
*
|
||
* Otherwise, it will attempt to derive a new device from the given source
|
||
* device. If direct derivation to the new type is not implemented, it will
|
||
* attempt the same derivation from each ancestor of the source device in
|
||
* turn looking for an implemented derivation method.
|
||
*
|
||
* @param dst_ctx On success, a reference to the newly-created
|
||
* AVHWDeviceContext.
|
||
* @param type The type of the new device to create.
|
||
* @param src_ctx A reference to an existing AVHWDeviceContext which will be
|
||
* used to create the new device.
|
||
* @param flags Currently unused; should be set to zero.
|
||
* @return Zero on success, a negative AVERROR code on failure.
|
||
*/
|
||
av_hwdevice_ctx_create_derived :: (dst_ctx: **AVBufferRef, type: AVHWDeviceType, src_ctx: *AVBufferRef, flags: s32) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Create a new device of the specified type from an existing device.
|
||
*
|
||
* This function performs the same action as av_hwdevice_ctx_create_derived,
|
||
* however, it is able to set options for the new device to be derived.
|
||
*
|
||
* @param dst_ctx On success, a reference to the newly-created
|
||
* AVHWDeviceContext.
|
||
* @param type The type of the new device to create.
|
||
* @param src_ctx A reference to an existing AVHWDeviceContext which will be
|
||
* used to create the new device.
|
||
* @param options Options for the new device to create, same format as in
|
||
* av_hwdevice_ctx_create.
|
||
* @param flags Currently unused; should be set to zero.
|
||
* @return Zero on success, a negative AVERROR code on failure.
|
||
*/
|
||
av_hwdevice_ctx_create_derived_opts :: (dst_ctx: **AVBufferRef, type: AVHWDeviceType, src_ctx: *AVBufferRef, options: *AVDictionary, flags: s32) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Allocate an AVHWFramesContext tied to a given device context.
|
||
*
|
||
* @param device_ctx a reference to a AVHWDeviceContext. This function will make
|
||
* a new reference for internal use, the one passed to the
|
||
* function remains owned by the caller.
|
||
* @return a reference to the newly created AVHWFramesContext on success or NULL
|
||
* on failure.
|
||
*/
|
||
av_hwframe_ctx_alloc :: (device_ctx: *AVBufferRef) -> *AVBufferRef #foreign libavutil_58;
|
||
|
||
/**
|
||
* Finalize the context before use. This function must be called after the
|
||
* context is filled with all the required information and before it is attached
|
||
* to any frames.
|
||
*
|
||
* @param ref a reference to the AVHWFramesContext
|
||
* @return 0 on success, a negative AVERROR code on failure
|
||
*/
|
||
av_hwframe_ctx_init :: (ref: *AVBufferRef) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Allocate a new frame attached to the given AVHWFramesContext.
|
||
*
|
||
* @param hwframe_ctx a reference to an AVHWFramesContext
|
||
* @param frame an empty (freshly allocated or unreffed) frame to be filled with
|
||
* newly allocated buffers.
|
||
* @param flags currently unused, should be set to zero
|
||
* @return 0 on success, a negative AVERROR code on failure
|
||
*/
|
||
av_hwframe_get_buffer :: (hwframe_ctx: *AVBufferRef, frame: *AVFrame, flags: s32) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Copy data to or from a hw surface. At least one of dst/src must have an
|
||
* AVHWFramesContext attached.
|
||
*
|
||
* If src has an AVHWFramesContext attached, then the format of dst (if set)
|
||
* must use one of the formats returned by av_hwframe_transfer_get_formats(src,
|
||
* AV_HWFRAME_TRANSFER_DIRECTION_FROM).
|
||
* If dst has an AVHWFramesContext attached, then the format of src must use one
|
||
* of the formats returned by av_hwframe_transfer_get_formats(dst,
|
||
* AV_HWFRAME_TRANSFER_DIRECTION_TO)
|
||
*
|
||
* dst may be "clean" (i.e. with data/buf pointers unset), in which case the
|
||
* data buffers will be allocated by this function using av_frame_get_buffer().
|
||
* If dst->format is set, then this format will be used, otherwise (when
|
||
* dst->format is AV_PIX_FMT_NONE) the first acceptable format will be chosen.
|
||
*
|
||
* The two frames must have matching allocated dimensions (i.e. equal to
|
||
* AVHWFramesContext.width/height), since not all device types support
|
||
* transferring a sub-rectangle of the whole surface. The display dimensions
|
||
* (i.e. AVFrame.width/height) may be smaller than the allocated dimensions, but
|
||
* also have to be equal for both frames. When the display dimensions are
|
||
* smaller than the allocated dimensions, the content of the padding in the
|
||
* destination frame is unspecified.
|
||
*
|
||
* @param dst the destination frame. dst is not touched on failure.
|
||
* @param src the source frame.
|
||
* @param flags currently unused, should be set to zero
|
||
* @return 0 on success, a negative AVERROR error code on failure.
|
||
*/
|
||
av_hwframe_transfer_data :: (dst: *AVFrame, src: *AVFrame, flags: s32) -> s32 #foreign libavutil_58;
|
||
|
||
AVHWFrameTransferDirection :: enum u32 {
|
||
FROM :: 0;
|
||
|
||
TO :: 1;
|
||
|
||
AV_HWFRAME_TRANSFER_DIRECTION_FROM :: FROM;
|
||
|
||
AV_HWFRAME_TRANSFER_DIRECTION_TO :: TO;
|
||
}
|
||
|
||
/**
|
||
* Get a list of possible source or target formats usable in
|
||
* av_hwframe_transfer_data().
|
||
*
|
||
* @param hwframe_ctx the frame context to obtain the information for
|
||
* @param dir the direction of the transfer
|
||
* @param formats the pointer to the output format list will be written here.
|
||
* The list is terminated with AV_PIX_FMT_NONE and must be freed
|
||
* by the caller when no longer needed using av_free().
|
||
* If this function returns successfully, the format list will
|
||
* have at least one item (not counting the terminator).
|
||
* On failure, the contents of this pointer are unspecified.
|
||
* @param flags currently unused, should be set to zero
|
||
* @return 0 on success, a negative AVERROR code on failure.
|
||
*/
|
||
av_hwframe_transfer_get_formats :: (hwframe_ctx: *AVBufferRef, dir: AVHWFrameTransferDirection, formats: **AVPixelFormat, flags: s32) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* This struct describes the constraints on hardware frames attached to
|
||
* a given device with a hardware-specific configuration. This is returned
|
||
* by av_hwdevice_get_hwframe_constraints() and must be freed by
|
||
* av_hwframe_constraints_free() after use.
|
||
*/
|
||
AVHWFramesConstraints :: struct {
|
||
/**
|
||
* A list of possible values for format in the hw_frames_ctx,
|
||
* terminated by AV_PIX_FMT_NONE. This member will always be filled.
|
||
*/
|
||
valid_hw_formats: *AVPixelFormat;
|
||
|
||
/**
|
||
* A list of possible values for sw_format in the hw_frames_ctx,
|
||
* terminated by AV_PIX_FMT_NONE. Can be NULL if this information is
|
||
* not known.
|
||
*/
|
||
valid_sw_formats: *AVPixelFormat;
|
||
|
||
/**
|
||
* The minimum size of frames in this hw_frames_ctx.
|
||
* (Zero if not known.)
|
||
*/
|
||
min_width: s32;
|
||
min_height: s32;
|
||
|
||
/**
|
||
* The maximum size of frames in this hw_frames_ctx.
|
||
* (INT_MAX if not known / no limit.)
|
||
*/
|
||
max_width: s32;
|
||
max_height: s32;
|
||
}
|
||
|
||
/**
|
||
* Allocate a HW-specific configuration structure for a given HW device.
|
||
* After use, the user must free all members as required by the specific
|
||
* hardware structure being used, then free the structure itself with
|
||
* av_free().
|
||
*
|
||
* @param device_ctx a reference to the associated AVHWDeviceContext.
|
||
* @return The newly created HW-specific configuration structure on
|
||
* success or NULL on failure.
|
||
*/
|
||
av_hwdevice_hwconfig_alloc :: (device_ctx: *AVBufferRef) -> *void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Get the constraints on HW frames given a device and the HW-specific
|
||
* configuration to be used with that device. If no HW-specific
|
||
* configuration is provided, returns the maximum possible capabilities
|
||
* of the device.
|
||
*
|
||
* @param ref a reference to the associated AVHWDeviceContext.
|
||
* @param hwconfig a filled HW-specific configuration structure, or NULL
|
||
* to return the maximum possible capabilities of the device.
|
||
* @return AVHWFramesConstraints structure describing the constraints
|
||
* on the device, or NULL if not available.
|
||
*/
|
||
av_hwdevice_get_hwframe_constraints :: (ref: *AVBufferRef, hwconfig: *void) -> *AVHWFramesConstraints #foreign libavutil_58;
|
||
|
||
/**
|
||
* Free an AVHWFrameConstraints structure.
|
||
*
|
||
* @param constraints The (filled or unfilled) AVHWFrameConstraints structure.
|
||
*/
|
||
av_hwframe_constraints_free :: (constraints: **AVHWFramesConstraints) -> void #foreign libavutil_58;
|
||
|
||
/**
|
||
* Flags to apply to frame mappings.
|
||
*/
|
||
AV_HWFRAME_MAP :: enum u32 {
|
||
READ :: 1;
|
||
|
||
WRITE :: 2;
|
||
|
||
OVERWRITE :: 4;
|
||
|
||
DIRECT :: 8;
|
||
|
||
AV_HWFRAME_MAP_READ :: READ;
|
||
|
||
AV_HWFRAME_MAP_WRITE :: WRITE;
|
||
|
||
AV_HWFRAME_MAP_OVERWRITE :: OVERWRITE;
|
||
|
||
AV_HWFRAME_MAP_DIRECT :: DIRECT;
|
||
}
|
||
|
||
/**
|
||
* Map a hardware frame.
|
||
*
|
||
* This has a number of different possible effects, depending on the format
|
||
* and origin of the src and dst frames. On input, src should be a usable
|
||
* frame with valid buffers and dst should be blank (typically as just created
|
||
* by av_frame_alloc()). src should have an associated hwframe context, and
|
||
* dst may optionally have a format and associated hwframe context.
|
||
*
|
||
* If src was created by mapping a frame from the hwframe context of dst,
|
||
* then this function undoes the mapping - dst is replaced by a reference to
|
||
* the frame that src was originally mapped from.
|
||
*
|
||
* If both src and dst have an associated hwframe context, then this function
|
||
* attempts to map the src frame from its hardware context to that of dst and
|
||
* then fill dst with appropriate data to be usable there. This will only be
|
||
* possible if the hwframe contexts and associated devices are compatible -
|
||
* given compatible devices, av_hwframe_ctx_create_derived() can be used to
|
||
* create a hwframe context for dst in which mapping should be possible.
|
||
*
|
||
* If src has a hwframe context but dst does not, then the src frame is
|
||
* mapped to normal memory and should thereafter be usable as a normal frame.
|
||
* If the format is set on dst, then the mapping will attempt to create dst
|
||
* with that format and fail if it is not possible. If format is unset (is
|
||
* AV_PIX_FMT_NONE) then dst will be mapped with whatever the most appropriate
|
||
* format to use is (probably the sw_format of the src hwframe context).
|
||
*
|
||
* A return value of AVERROR(ENOSYS) indicates that the mapping is not
|
||
* possible with the given arguments and hwframe setup, while other return
|
||
* values indicate that it failed somehow.
|
||
*
|
||
* On failure, the destination frame will be left blank, except for the
|
||
* hw_frames_ctx/format fields thay may have been set by the caller - those will
|
||
* be preserved as they were.
|
||
*
|
||
* @param dst Destination frame, to contain the mapping.
|
||
* @param src Source frame, to be mapped.
|
||
* @param flags Some combination of AV_HWFRAME_MAP_* flags.
|
||
* @return Zero on success, negative AVERROR code on failure.
|
||
*/
|
||
av_hwframe_map :: (dst: *AVFrame, src: *AVFrame, flags: s32) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Create and initialise an AVHWFramesContext as a mapping of another existing
|
||
* AVHWFramesContext on a different device.
|
||
*
|
||
* av_hwframe_ctx_init() should not be called after this.
|
||
*
|
||
* @param derived_frame_ctx On success, a reference to the newly created
|
||
* AVHWFramesContext.
|
||
* @param format The AVPixelFormat for the derived context.
|
||
* @param derived_device_ctx A reference to the device to create the new
|
||
* AVHWFramesContext on.
|
||
* @param source_frame_ctx A reference to an existing AVHWFramesContext
|
||
* which will be mapped to the derived context.
|
||
* @param flags Some combination of AV_HWFRAME_MAP_* flags, defining the
|
||
* mapping parameters to apply to frames which are allocated
|
||
* in the derived device.
|
||
* @return Zero on success, negative AVERROR code on failure.
|
||
*/
|
||
av_hwframe_ctx_create_derived :: (derived_frame_ctx: **AVBufferRef, format: AVPixelFormat, derived_device_ctx: *AVBufferRef, source_frame_ctx: *AVBufferRef, flags: s32) -> s32 #foreign libavutil_58;
|
||
|
||
/**
|
||
* Identify the syntax and semantics of the bitstream.
|
||
* The principle is roughly:
|
||
* Two decoders with the same ID can decode the same streams.
|
||
* Two encoders with the same ID can encode compatible streams.
|
||
* There may be slight deviations from the principle due to implementation
|
||
* details.
|
||
*
|
||
* If you add a codec ID to this list, add it so that
|
||
* 1. no value of an existing codec ID changes (that would break ABI),
|
||
* 2. it is as close as possible to similar codecs
|
||
*
|
||
* After adding new codec IDs, do not forget to add an entry to the codec
|
||
* descriptor list and bump libavcodec minor version.
|
||
*/
|
||
AVCodecID :: enum u32 {
|
||
NONE :: 0;
|
||
|
||
MPEG1VIDEO :: 1;
|
||
MPEG2VIDEO :: 2;
|
||
H261 :: 3;
|
||
H263 :: 4;
|
||
RV10 :: 5;
|
||
RV20 :: 6;
|
||
MJPEG :: 7;
|
||
MJPEGB :: 8;
|
||
LJPEG :: 9;
|
||
SP5X :: 10;
|
||
JPEGLS :: 11;
|
||
MPEG4 :: 12;
|
||
RAWVIDEO :: 13;
|
||
MSMPEG4V1 :: 14;
|
||
MSMPEG4V2 :: 15;
|
||
MSMPEG4V3 :: 16;
|
||
WMV1 :: 17;
|
||
WMV2 :: 18;
|
||
H263P :: 19;
|
||
H263I :: 20;
|
||
FLV1 :: 21;
|
||
SVQ1 :: 22;
|
||
SVQ3 :: 23;
|
||
DVVIDEO :: 24;
|
||
HUFFYUV :: 25;
|
||
CYUV :: 26;
|
||
H264 :: 27;
|
||
INDEO3 :: 28;
|
||
VP3 :: 29;
|
||
THEORA :: 30;
|
||
ASV1 :: 31;
|
||
ASV2 :: 32;
|
||
FFV1 :: 33;
|
||
_4XM :: 34;
|
||
VCR1 :: 35;
|
||
CLJR :: 36;
|
||
MDEC :: 37;
|
||
ROQ :: 38;
|
||
INTERPLAY_VIDEO :: 39;
|
||
XAN_WC3 :: 40;
|
||
XAN_WC4 :: 41;
|
||
RPZA :: 42;
|
||
CINEPAK :: 43;
|
||
WS_VQA :: 44;
|
||
MSRLE :: 45;
|
||
MSVIDEO1 :: 46;
|
||
IDCIN :: 47;
|
||
_8BPS :: 48;
|
||
SMC :: 49;
|
||
FLIC :: 50;
|
||
TRUEMOTION1 :: 51;
|
||
VMDVIDEO :: 52;
|
||
MSZH :: 53;
|
||
ZLIB :: 54;
|
||
QTRLE :: 55;
|
||
TSCC :: 56;
|
||
ULTI :: 57;
|
||
QDRAW :: 58;
|
||
VIXL :: 59;
|
||
QPEG :: 60;
|
||
PNG :: 61;
|
||
PPM :: 62;
|
||
PBM :: 63;
|
||
PGM :: 64;
|
||
PGMYUV :: 65;
|
||
PAM :: 66;
|
||
FFVHUFF :: 67;
|
||
RV30 :: 68;
|
||
RV40 :: 69;
|
||
VC1 :: 70;
|
||
WMV3 :: 71;
|
||
LOCO :: 72;
|
||
WNV1 :: 73;
|
||
AASC :: 74;
|
||
INDEO2 :: 75;
|
||
FRAPS :: 76;
|
||
TRUEMOTION2 :: 77;
|
||
BMP :: 78;
|
||
CSCD :: 79;
|
||
MMVIDEO :: 80;
|
||
ZMBV :: 81;
|
||
AVS :: 82;
|
||
SMACKVIDEO :: 83;
|
||
NUV :: 84;
|
||
KMVC :: 85;
|
||
FLASHSV :: 86;
|
||
CAVS :: 87;
|
||
JPEG2000 :: 88;
|
||
VMNC :: 89;
|
||
VP5 :: 90;
|
||
VP6 :: 91;
|
||
VP6F :: 92;
|
||
TARGA :: 93;
|
||
DSICINVIDEO :: 94;
|
||
TIERTEXSEQVIDEO :: 95;
|
||
TIFF :: 96;
|
||
GIF :: 97;
|
||
DXA :: 98;
|
||
DNXHD :: 99;
|
||
THP :: 100;
|
||
SGI :: 101;
|
||
C93 :: 102;
|
||
BETHSOFTVID :: 103;
|
||
PTX :: 104;
|
||
TXD :: 105;
|
||
VP6A :: 106;
|
||
AMV :: 107;
|
||
VB :: 108;
|
||
PCX :: 109;
|
||
SUNRAST :: 110;
|
||
INDEO4 :: 111;
|
||
INDEO5 :: 112;
|
||
MIMIC :: 113;
|
||
RL2 :: 114;
|
||
ESCAPE124 :: 115;
|
||
DIRAC :: 116;
|
||
BFI :: 117;
|
||
CMV :: 118;
|
||
MOTIONPIXELS :: 119;
|
||
TGV :: 120;
|
||
TGQ :: 121;
|
||
TQI :: 122;
|
||
AURA :: 123;
|
||
AURA2 :: 124;
|
||
V210X :: 125;
|
||
TMV :: 126;
|
||
V210 :: 127;
|
||
DPX :: 128;
|
||
MAD :: 129;
|
||
FRWU :: 130;
|
||
FLASHSV2 :: 131;
|
||
CDGRAPHICS :: 132;
|
||
R210 :: 133;
|
||
ANM :: 134;
|
||
BINKVIDEO :: 135;
|
||
IFF_ILBM :: 136;
|
||
|
||
KGV1 :: 137;
|
||
YOP :: 138;
|
||
VP8 :: 139;
|
||
PICTOR :: 140;
|
||
ANSI :: 141;
|
||
A64_MULTI :: 142;
|
||
A64_MULTI5 :: 143;
|
||
R10K :: 144;
|
||
MXPEG :: 145;
|
||
LAGARITH :: 146;
|
||
PRORES :: 147;
|
||
JV :: 148;
|
||
DFA :: 149;
|
||
WMV3IMAGE :: 150;
|
||
VC1IMAGE :: 151;
|
||
UTVIDEO :: 152;
|
||
BMV_VIDEO :: 153;
|
||
VBLE :: 154;
|
||
DXTORY :: 155;
|
||
V410 :: 156;
|
||
XWD :: 157;
|
||
CDXL :: 158;
|
||
XBM :: 159;
|
||
ZEROCODEC :: 160;
|
||
MSS1 :: 161;
|
||
MSA1 :: 162;
|
||
TSCC2 :: 163;
|
||
MTS2 :: 164;
|
||
CLLC :: 165;
|
||
MSS2 :: 166;
|
||
VP9 :: 167;
|
||
AIC :: 168;
|
||
ESCAPE130 :: 169;
|
||
G2M :: 170;
|
||
WEBP :: 171;
|
||
HNM4_VIDEO :: 172;
|
||
HEVC :: 173;
|
||
|
||
FIC :: 174;
|
||
ALIAS_PIX :: 175;
|
||
BRENDER_PIX :: 176;
|
||
PAF_VIDEO :: 177;
|
||
EXR :: 178;
|
||
VP7 :: 179;
|
||
SANM :: 180;
|
||
SGIRLE :: 181;
|
||
MVC1 :: 182;
|
||
MVC2 :: 183;
|
||
HQX :: 184;
|
||
TDSC :: 185;
|
||
HQ_HQA :: 186;
|
||
HAP :: 187;
|
||
DDS :: 188;
|
||
DXV :: 189;
|
||
SCREENPRESSO :: 190;
|
||
RSCC :: 191;
|
||
AVS2 :: 192;
|
||
PGX :: 193;
|
||
AVS3 :: 194;
|
||
MSP2 :: 195;
|
||
VVC :: 196;
|
||
|
||
Y41P :: 197;
|
||
AVRP :: 198;
|
||
_012V :: 199;
|
||
AVUI :: 200;
|
||
|
||
AYUV :: 201;
|
||
|
||
TARGA_Y216 :: 202;
|
||
V308 :: 203;
|
||
V408 :: 204;
|
||
YUV4 :: 205;
|
||
AVRN :: 206;
|
||
CPIA :: 207;
|
||
XFACE :: 208;
|
||
SNOW :: 209;
|
||
SMVJPEG :: 210;
|
||
APNG :: 211;
|
||
DAALA :: 212;
|
||
CFHD :: 213;
|
||
TRUEMOTION2RT :: 214;
|
||
M101 :: 215;
|
||
MAGICYUV :: 216;
|
||
SHEERVIDEO :: 217;
|
||
YLC :: 218;
|
||
PSD :: 219;
|
||
PIXLET :: 220;
|
||
SPEEDHQ :: 221;
|
||
FMVC :: 222;
|
||
SCPR :: 223;
|
||
CLEARVIDEO :: 224;
|
||
XPM :: 225;
|
||
AV1 :: 226;
|
||
BITPACKED :: 227;
|
||
MSCC :: 228;
|
||
SRGC :: 229;
|
||
SVG :: 230;
|
||
GDV :: 231;
|
||
FITS :: 232;
|
||
IMM4 :: 233;
|
||
PROSUMER :: 234;
|
||
MWSC :: 235;
|
||
WCMV :: 236;
|
||
RASC :: 237;
|
||
HYMT :: 238;
|
||
ARBC :: 239;
|
||
AGM :: 240;
|
||
LSCR :: 241;
|
||
VP4 :: 242;
|
||
IMM5 :: 243;
|
||
MVDV :: 244;
|
||
MVHA :: 245;
|
||
CDTOONS :: 246;
|
||
MV30 :: 247;
|
||
NOTCHLC :: 248;
|
||
PFM :: 249;
|
||
MOBICLIP :: 250;
|
||
PHOTOCD :: 251;
|
||
IPU :: 252;
|
||
ARGO :: 253;
|
||
CRI :: 254;
|
||
SIMBIOSIS_IMX :: 255;
|
||
SGA_VIDEO :: 256;
|
||
GEM :: 257;
|
||
VBN :: 258;
|
||
JPEGXL :: 259;
|
||
QOI :: 260;
|
||
PHM :: 261;
|
||
RADIANCE_HDR :: 262;
|
||
WBMP :: 263;
|
||
MEDIA100 :: 264;
|
||
VQC :: 265;
|
||
|
||
FIRST_AUDIO :: 65536;
|
||
PCM_S16LE :: 65536;
|
||
PCM_S16BE :: 65537;
|
||
PCM_U16LE :: 65538;
|
||
PCM_U16BE :: 65539;
|
||
PCM_S8 :: 65540;
|
||
PCM_U8 :: 65541;
|
||
PCM_MULAW :: 65542;
|
||
PCM_ALAW :: 65543;
|
||
PCM_S32LE :: 65544;
|
||
PCM_S32BE :: 65545;
|
||
PCM_U32LE :: 65546;
|
||
PCM_U32BE :: 65547;
|
||
PCM_S24LE :: 65548;
|
||
PCM_S24BE :: 65549;
|
||
PCM_U24LE :: 65550;
|
||
PCM_U24BE :: 65551;
|
||
PCM_S24DAUD :: 65552;
|
||
PCM_ZORK :: 65553;
|
||
PCM_S16LE_PLANAR :: 65554;
|
||
PCM_DVD :: 65555;
|
||
PCM_F32BE :: 65556;
|
||
PCM_F32LE :: 65557;
|
||
PCM_F64BE :: 65558;
|
||
PCM_F64LE :: 65559;
|
||
PCM_BLURAY :: 65560;
|
||
PCM_LXF :: 65561;
|
||
S302M :: 65562;
|
||
PCM_S8_PLANAR :: 65563;
|
||
PCM_S24LE_PLANAR :: 65564;
|
||
PCM_S32LE_PLANAR :: 65565;
|
||
PCM_S16BE_PLANAR :: 65566;
|
||
PCM_S64LE :: 65567;
|
||
PCM_S64BE :: 65568;
|
||
PCM_F16LE :: 65569;
|
||
PCM_F24LE :: 65570;
|
||
PCM_VIDC :: 65571;
|
||
PCM_SGA :: 65572;
|
||
|
||
ADPCM_IMA_QT :: 69632;
|
||
ADPCM_IMA_WAV :: 69633;
|
||
ADPCM_IMA_DK3 :: 69634;
|
||
ADPCM_IMA_DK4 :: 69635;
|
||
ADPCM_IMA_WS :: 69636;
|
||
ADPCM_IMA_SMJPEG :: 69637;
|
||
ADPCM_MS :: 69638;
|
||
ADPCM_4XM :: 69639;
|
||
ADPCM_XA :: 69640;
|
||
ADPCM_ADX :: 69641;
|
||
ADPCM_EA :: 69642;
|
||
ADPCM_G726 :: 69643;
|
||
ADPCM_CT :: 69644;
|
||
ADPCM_SWF :: 69645;
|
||
ADPCM_YAMAHA :: 69646;
|
||
ADPCM_SBPRO_4 :: 69647;
|
||
ADPCM_SBPRO_3 :: 69648;
|
||
ADPCM_SBPRO_2 :: 69649;
|
||
ADPCM_THP :: 69650;
|
||
ADPCM_IMA_AMV :: 69651;
|
||
ADPCM_EA_R1 :: 69652;
|
||
ADPCM_EA_R3 :: 69653;
|
||
ADPCM_EA_R2 :: 69654;
|
||
ADPCM_IMA_EA_SEAD :: 69655;
|
||
ADPCM_IMA_EA_EACS :: 69656;
|
||
ADPCM_EA_XAS :: 69657;
|
||
ADPCM_EA_MAXIS_XA :: 69658;
|
||
ADPCM_IMA_ISS :: 69659;
|
||
ADPCM_G722 :: 69660;
|
||
ADPCM_IMA_APC :: 69661;
|
||
ADPCM_VIMA :: 69662;
|
||
ADPCM_AFC :: 69663;
|
||
ADPCM_IMA_OKI :: 69664;
|
||
ADPCM_DTK :: 69665;
|
||
ADPCM_IMA_RAD :: 69666;
|
||
ADPCM_G726LE :: 69667;
|
||
ADPCM_THP_LE :: 69668;
|
||
ADPCM_PSX :: 69669;
|
||
ADPCM_AICA :: 69670;
|
||
ADPCM_IMA_DAT4 :: 69671;
|
||
ADPCM_MTAF :: 69672;
|
||
ADPCM_AGM :: 69673;
|
||
ADPCM_ARGO :: 69674;
|
||
ADPCM_IMA_SSI :: 69675;
|
||
ADPCM_ZORK :: 69676;
|
||
ADPCM_IMA_APM :: 69677;
|
||
ADPCM_IMA_ALP :: 69678;
|
||
ADPCM_IMA_MTF :: 69679;
|
||
ADPCM_IMA_CUNNING :: 69680;
|
||
ADPCM_IMA_MOFLEX :: 69681;
|
||
ADPCM_IMA_ACORN :: 69682;
|
||
ADPCM_XMD :: 69683;
|
||
|
||
AMR_NB :: 73728;
|
||
AMR_WB :: 73729;
|
||
|
||
RA_144 :: 77824;
|
||
RA_288 :: 77825;
|
||
|
||
ROQ_DPCM :: 81920;
|
||
INTERPLAY_DPCM :: 81921;
|
||
XAN_DPCM :: 81922;
|
||
SOL_DPCM :: 81923;
|
||
SDX2_DPCM :: 81924;
|
||
GREMLIN_DPCM :: 81925;
|
||
DERF_DPCM :: 81926;
|
||
WADY_DPCM :: 81927;
|
||
CBD2_DPCM :: 81928;
|
||
|
||
MP2 :: 86016;
|
||
MP3 :: 86017;
|
||
AAC :: 86018;
|
||
AC3 :: 86019;
|
||
DTS :: 86020;
|
||
VORBIS :: 86021;
|
||
DVAUDIO :: 86022;
|
||
WMAV1 :: 86023;
|
||
WMAV2 :: 86024;
|
||
MACE3 :: 86025;
|
||
MACE6 :: 86026;
|
||
VMDAUDIO :: 86027;
|
||
FLAC :: 86028;
|
||
MP3ADU :: 86029;
|
||
MP3ON4 :: 86030;
|
||
SHORTEN :: 86031;
|
||
ALAC :: 86032;
|
||
WESTWOOD_SND1 :: 86033;
|
||
GSM :: 86034;
|
||
QDM2 :: 86035;
|
||
COOK :: 86036;
|
||
TRUESPEECH :: 86037;
|
||
TTA :: 86038;
|
||
SMACKAUDIO :: 86039;
|
||
QCELP :: 86040;
|
||
WAVPACK :: 86041;
|
||
DSICINAUDIO :: 86042;
|
||
IMC :: 86043;
|
||
MUSEPACK7 :: 86044;
|
||
MLP :: 86045;
|
||
GSM_MS :: 86046;
|
||
ATRAC3 :: 86047;
|
||
APE :: 86048;
|
||
NELLYMOSER :: 86049;
|
||
MUSEPACK8 :: 86050;
|
||
SPEEX :: 86051;
|
||
WMAVOICE :: 86052;
|
||
WMAPRO :: 86053;
|
||
WMALOSSLESS :: 86054;
|
||
ATRAC3P :: 86055;
|
||
EAC3 :: 86056;
|
||
SIPR :: 86057;
|
||
MP1 :: 86058;
|
||
TWINVQ :: 86059;
|
||
TRUEHD :: 86060;
|
||
MP4ALS :: 86061;
|
||
ATRAC1 :: 86062;
|
||
BINKAUDIO_RDFT :: 86063;
|
||
BINKAUDIO_DCT :: 86064;
|
||
AAC_LATM :: 86065;
|
||
QDMC :: 86066;
|
||
CELT :: 86067;
|
||
G723_1 :: 86068;
|
||
G729 :: 86069;
|
||
_8SVX_EXP :: 86070;
|
||
_8SVX_FIB :: 86071;
|
||
BMV_AUDIO :: 86072;
|
||
RALF :: 86073;
|
||
IAC :: 86074;
|
||
ILBC :: 86075;
|
||
OPUS :: 86076;
|
||
COMFORT_NOISE :: 86077;
|
||
TAK :: 86078;
|
||
METASOUND :: 86079;
|
||
PAF_AUDIO :: 86080;
|
||
ON2AVC :: 86081;
|
||
DSS_SP :: 86082;
|
||
CODEC2 :: 86083;
|
||
FFWAVESYNTH :: 86084;
|
||
SONIC :: 86085;
|
||
SONIC_LS :: 86086;
|
||
EVRC :: 86087;
|
||
SMV :: 86088;
|
||
DSD_LSBF :: 86089;
|
||
DSD_MSBF :: 86090;
|
||
DSD_LSBF_PLANAR :: 86091;
|
||
DSD_MSBF_PLANAR :: 86092;
|
||
_4GV :: 86093;
|
||
INTERPLAY_ACM :: 86094;
|
||
XMA1 :: 86095;
|
||
XMA2 :: 86096;
|
||
DST :: 86097;
|
||
ATRAC3AL :: 86098;
|
||
ATRAC3PAL :: 86099;
|
||
DOLBY_E :: 86100;
|
||
APTX :: 86101;
|
||
APTX_HD :: 86102;
|
||
SBC :: 86103;
|
||
ATRAC9 :: 86104;
|
||
HCOM :: 86105;
|
||
ACELP_KELVIN :: 86106;
|
||
MPEGH_3D_AUDIO :: 86107;
|
||
SIREN :: 86108;
|
||
HCA :: 86109;
|
||
FASTAUDIO :: 86110;
|
||
MSNSIREN :: 86111;
|
||
DFPWM :: 86112;
|
||
BONK :: 86113;
|
||
MISC4 :: 86114;
|
||
APAC :: 86115;
|
||
FTR :: 86116;
|
||
WAVARC :: 86117;
|
||
RKA :: 86118;
|
||
|
||
FIRST_SUBTITLE :: 94208;
|
||
DVD_SUBTITLE :: 94208;
|
||
DVB_SUBTITLE :: 94209;
|
||
TEXT :: 94210;
|
||
XSUB :: 94211;
|
||
SSA :: 94212;
|
||
MOV_TEXT :: 94213;
|
||
HDMV_PGS_SUBTITLE :: 94214;
|
||
DVB_TELETEXT :: 94215;
|
||
SRT :: 94216;
|
||
MICRODVD :: 94217;
|
||
EIA_608 :: 94218;
|
||
JACOSUB :: 94219;
|
||
SAMI :: 94220;
|
||
REALTEXT :: 94221;
|
||
STL :: 94222;
|
||
SUBVIEWER1 :: 94223;
|
||
SUBVIEWER :: 94224;
|
||
SUBRIP :: 94225;
|
||
WEBVTT :: 94226;
|
||
MPL2 :: 94227;
|
||
VPLAYER :: 94228;
|
||
PJS :: 94229;
|
||
ASS :: 94230;
|
||
HDMV_TEXT_SUBTITLE :: 94231;
|
||
TTML :: 94232;
|
||
ARIB_CAPTION :: 94233;
|
||
|
||
FIRST_UNKNOWN :: 98304;
|
||
TTF :: 98304;
|
||
|
||
SCTE_35 :: 98305;
|
||
EPG :: 98306;
|
||
BINTEXT :: 98307;
|
||
XBIN :: 98308;
|
||
IDF :: 98309;
|
||
OTF :: 98310;
|
||
SMPTE_KLV :: 98311;
|
||
DVD_NAV :: 98312;
|
||
TIMED_ID3 :: 98313;
|
||
BIN_DATA :: 98314;
|
||
|
||
PROBE :: 102400;
|
||
|
||
MPEG2TS :: 131072;
|
||
|
||
MPEG4SYSTEMS :: 131073;
|
||
|
||
FFMETADATA :: 135168;
|
||
WRAPPED_AVFRAME :: 135169;
|
||
|
||
VNULL :: 135170;
|
||
|
||
ANULL :: 135171;
|
||
|
||
AV_CODEC_ID_NONE :: NONE;
|
||
|
||
AV_CODEC_ID_MPEG1VIDEO :: MPEG1VIDEO;
|
||
AV_CODEC_ID_MPEG2VIDEO :: MPEG2VIDEO;
|
||
AV_CODEC_ID_H261 :: H261;
|
||
AV_CODEC_ID_H263 :: H263;
|
||
AV_CODEC_ID_RV10 :: RV10;
|
||
AV_CODEC_ID_RV20 :: RV20;
|
||
AV_CODEC_ID_MJPEG :: MJPEG;
|
||
AV_CODEC_ID_MJPEGB :: MJPEGB;
|
||
AV_CODEC_ID_LJPEG :: LJPEG;
|
||
AV_CODEC_ID_SP5X :: SP5X;
|
||
AV_CODEC_ID_JPEGLS :: JPEGLS;
|
||
AV_CODEC_ID_MPEG4 :: MPEG4;
|
||
AV_CODEC_ID_RAWVIDEO :: RAWVIDEO;
|
||
AV_CODEC_ID_MSMPEG4V1 :: MSMPEG4V1;
|
||
AV_CODEC_ID_MSMPEG4V2 :: MSMPEG4V2;
|
||
AV_CODEC_ID_MSMPEG4V3 :: MSMPEG4V3;
|
||
AV_CODEC_ID_WMV1 :: WMV1;
|
||
AV_CODEC_ID_WMV2 :: WMV2;
|
||
AV_CODEC_ID_H263P :: H263P;
|
||
AV_CODEC_ID_H263I :: H263I;
|
||
AV_CODEC_ID_FLV1 :: FLV1;
|
||
AV_CODEC_ID_SVQ1 :: SVQ1;
|
||
AV_CODEC_ID_SVQ3 :: SVQ3;
|
||
AV_CODEC_ID_DVVIDEO :: DVVIDEO;
|
||
AV_CODEC_ID_HUFFYUV :: HUFFYUV;
|
||
AV_CODEC_ID_CYUV :: CYUV;
|
||
AV_CODEC_ID_H264 :: H264;
|
||
AV_CODEC_ID_INDEO3 :: INDEO3;
|
||
AV_CODEC_ID_VP3 :: VP3;
|
||
AV_CODEC_ID_THEORA :: THEORA;
|
||
AV_CODEC_ID_ASV1 :: ASV1;
|
||
AV_CODEC_ID_ASV2 :: ASV2;
|
||
AV_CODEC_ID_FFV1 :: FFV1;
|
||
AV_CODEC_ID_4XM :: _4XM;
|
||
AV_CODEC_ID_VCR1 :: VCR1;
|
||
AV_CODEC_ID_CLJR :: CLJR;
|
||
AV_CODEC_ID_MDEC :: MDEC;
|
||
AV_CODEC_ID_ROQ :: ROQ;
|
||
AV_CODEC_ID_INTERPLAY_VIDEO :: INTERPLAY_VIDEO;
|
||
AV_CODEC_ID_XAN_WC3 :: XAN_WC3;
|
||
AV_CODEC_ID_XAN_WC4 :: XAN_WC4;
|
||
AV_CODEC_ID_RPZA :: RPZA;
|
||
AV_CODEC_ID_CINEPAK :: CINEPAK;
|
||
AV_CODEC_ID_WS_VQA :: WS_VQA;
|
||
AV_CODEC_ID_MSRLE :: MSRLE;
|
||
AV_CODEC_ID_MSVIDEO1 :: MSVIDEO1;
|
||
AV_CODEC_ID_IDCIN :: IDCIN;
|
||
AV_CODEC_ID_8BPS :: _8BPS;
|
||
AV_CODEC_ID_SMC :: SMC;
|
||
AV_CODEC_ID_FLIC :: FLIC;
|
||
AV_CODEC_ID_TRUEMOTION1 :: TRUEMOTION1;
|
||
AV_CODEC_ID_VMDVIDEO :: VMDVIDEO;
|
||
AV_CODEC_ID_MSZH :: MSZH;
|
||
AV_CODEC_ID_ZLIB :: ZLIB;
|
||
AV_CODEC_ID_QTRLE :: QTRLE;
|
||
AV_CODEC_ID_TSCC :: TSCC;
|
||
AV_CODEC_ID_ULTI :: ULTI;
|
||
AV_CODEC_ID_QDRAW :: QDRAW;
|
||
AV_CODEC_ID_VIXL :: VIXL;
|
||
AV_CODEC_ID_QPEG :: QPEG;
|
||
AV_CODEC_ID_PNG :: PNG;
|
||
AV_CODEC_ID_PPM :: PPM;
|
||
AV_CODEC_ID_PBM :: PBM;
|
||
AV_CODEC_ID_PGM :: PGM;
|
||
AV_CODEC_ID_PGMYUV :: PGMYUV;
|
||
AV_CODEC_ID_PAM :: PAM;
|
||
AV_CODEC_ID_FFVHUFF :: FFVHUFF;
|
||
AV_CODEC_ID_RV30 :: RV30;
|
||
AV_CODEC_ID_RV40 :: RV40;
|
||
AV_CODEC_ID_VC1 :: VC1;
|
||
AV_CODEC_ID_WMV3 :: WMV3;
|
||
AV_CODEC_ID_LOCO :: LOCO;
|
||
AV_CODEC_ID_WNV1 :: WNV1;
|
||
AV_CODEC_ID_AASC :: AASC;
|
||
AV_CODEC_ID_INDEO2 :: INDEO2;
|
||
AV_CODEC_ID_FRAPS :: FRAPS;
|
||
AV_CODEC_ID_TRUEMOTION2 :: TRUEMOTION2;
|
||
AV_CODEC_ID_BMP :: BMP;
|
||
AV_CODEC_ID_CSCD :: CSCD;
|
||
AV_CODEC_ID_MMVIDEO :: MMVIDEO;
|
||
AV_CODEC_ID_ZMBV :: ZMBV;
|
||
AV_CODEC_ID_AVS :: AVS;
|
||
AV_CODEC_ID_SMACKVIDEO :: SMACKVIDEO;
|
||
AV_CODEC_ID_NUV :: NUV;
|
||
AV_CODEC_ID_KMVC :: KMVC;
|
||
AV_CODEC_ID_FLASHSV :: FLASHSV;
|
||
AV_CODEC_ID_CAVS :: CAVS;
|
||
AV_CODEC_ID_JPEG2000 :: JPEG2000;
|
||
AV_CODEC_ID_VMNC :: VMNC;
|
||
AV_CODEC_ID_VP5 :: VP5;
|
||
AV_CODEC_ID_VP6 :: VP6;
|
||
AV_CODEC_ID_VP6F :: VP6F;
|
||
AV_CODEC_ID_TARGA :: TARGA;
|
||
AV_CODEC_ID_DSICINVIDEO :: DSICINVIDEO;
|
||
AV_CODEC_ID_TIERTEXSEQVIDEO :: TIERTEXSEQVIDEO;
|
||
AV_CODEC_ID_TIFF :: TIFF;
|
||
AV_CODEC_ID_GIF :: GIF;
|
||
AV_CODEC_ID_DXA :: DXA;
|
||
AV_CODEC_ID_DNXHD :: DNXHD;
|
||
AV_CODEC_ID_THP :: THP;
|
||
AV_CODEC_ID_SGI :: SGI;
|
||
AV_CODEC_ID_C93 :: C93;
|
||
AV_CODEC_ID_BETHSOFTVID :: BETHSOFTVID;
|
||
AV_CODEC_ID_PTX :: PTX;
|
||
AV_CODEC_ID_TXD :: TXD;
|
||
AV_CODEC_ID_VP6A :: VP6A;
|
||
AV_CODEC_ID_AMV :: AMV;
|
||
AV_CODEC_ID_VB :: VB;
|
||
AV_CODEC_ID_PCX :: PCX;
|
||
AV_CODEC_ID_SUNRAST :: SUNRAST;
|
||
AV_CODEC_ID_INDEO4 :: INDEO4;
|
||
AV_CODEC_ID_INDEO5 :: INDEO5;
|
||
AV_CODEC_ID_MIMIC :: MIMIC;
|
||
AV_CODEC_ID_RL2 :: RL2;
|
||
AV_CODEC_ID_ESCAPE124 :: ESCAPE124;
|
||
AV_CODEC_ID_DIRAC :: DIRAC;
|
||
AV_CODEC_ID_BFI :: BFI;
|
||
AV_CODEC_ID_CMV :: CMV;
|
||
AV_CODEC_ID_MOTIONPIXELS :: MOTIONPIXELS;
|
||
AV_CODEC_ID_TGV :: TGV;
|
||
AV_CODEC_ID_TGQ :: TGQ;
|
||
AV_CODEC_ID_TQI :: TQI;
|
||
AV_CODEC_ID_AURA :: AURA;
|
||
AV_CODEC_ID_AURA2 :: AURA2;
|
||
AV_CODEC_ID_V210X :: V210X;
|
||
AV_CODEC_ID_TMV :: TMV;
|
||
AV_CODEC_ID_V210 :: V210;
|
||
AV_CODEC_ID_DPX :: DPX;
|
||
AV_CODEC_ID_MAD :: MAD;
|
||
AV_CODEC_ID_FRWU :: FRWU;
|
||
AV_CODEC_ID_FLASHSV2 :: FLASHSV2;
|
||
AV_CODEC_ID_CDGRAPHICS :: CDGRAPHICS;
|
||
AV_CODEC_ID_R210 :: R210;
|
||
AV_CODEC_ID_ANM :: ANM;
|
||
AV_CODEC_ID_BINKVIDEO :: BINKVIDEO;
|
||
AV_CODEC_ID_IFF_ILBM :: IFF_ILBM;
|
||
|
||
AV_CODEC_ID_KGV1 :: KGV1;
|
||
AV_CODEC_ID_YOP :: YOP;
|
||
AV_CODEC_ID_VP8 :: VP8;
|
||
AV_CODEC_ID_PICTOR :: PICTOR;
|
||
AV_CODEC_ID_ANSI :: ANSI;
|
||
AV_CODEC_ID_A64_MULTI :: A64_MULTI;
|
||
AV_CODEC_ID_A64_MULTI5 :: A64_MULTI5;
|
||
AV_CODEC_ID_R10K :: R10K;
|
||
AV_CODEC_ID_MXPEG :: MXPEG;
|
||
AV_CODEC_ID_LAGARITH :: LAGARITH;
|
||
AV_CODEC_ID_PRORES :: PRORES;
|
||
AV_CODEC_ID_JV :: JV;
|
||
AV_CODEC_ID_DFA :: DFA;
|
||
AV_CODEC_ID_WMV3IMAGE :: WMV3IMAGE;
|
||
AV_CODEC_ID_VC1IMAGE :: VC1IMAGE;
|
||
AV_CODEC_ID_UTVIDEO :: UTVIDEO;
|
||
AV_CODEC_ID_BMV_VIDEO :: BMV_VIDEO;
|
||
AV_CODEC_ID_VBLE :: VBLE;
|
||
AV_CODEC_ID_DXTORY :: DXTORY;
|
||
AV_CODEC_ID_V410 :: V410;
|
||
AV_CODEC_ID_XWD :: XWD;
|
||
AV_CODEC_ID_CDXL :: CDXL;
|
||
AV_CODEC_ID_XBM :: XBM;
|
||
AV_CODEC_ID_ZEROCODEC :: ZEROCODEC;
|
||
AV_CODEC_ID_MSS1 :: MSS1;
|
||
AV_CODEC_ID_MSA1 :: MSA1;
|
||
AV_CODEC_ID_TSCC2 :: TSCC2;
|
||
AV_CODEC_ID_MTS2 :: MTS2;
|
||
AV_CODEC_ID_CLLC :: CLLC;
|
||
AV_CODEC_ID_MSS2 :: MSS2;
|
||
AV_CODEC_ID_VP9 :: VP9;
|
||
AV_CODEC_ID_AIC :: AIC;
|
||
AV_CODEC_ID_ESCAPE130 :: ESCAPE130;
|
||
AV_CODEC_ID_G2M :: G2M;
|
||
AV_CODEC_ID_WEBP :: WEBP;
|
||
AV_CODEC_ID_HNM4_VIDEO :: HNM4_VIDEO;
|
||
AV_CODEC_ID_HEVC :: HEVC;
|
||
|
||
AV_CODEC_ID_FIC :: FIC;
|
||
AV_CODEC_ID_ALIAS_PIX :: ALIAS_PIX;
|
||
AV_CODEC_ID_BRENDER_PIX :: BRENDER_PIX;
|
||
AV_CODEC_ID_PAF_VIDEO :: PAF_VIDEO;
|
||
AV_CODEC_ID_EXR :: EXR;
|
||
AV_CODEC_ID_VP7 :: VP7;
|
||
AV_CODEC_ID_SANM :: SANM;
|
||
AV_CODEC_ID_SGIRLE :: SGIRLE;
|
||
AV_CODEC_ID_MVC1 :: MVC1;
|
||
AV_CODEC_ID_MVC2 :: MVC2;
|
||
AV_CODEC_ID_HQX :: HQX;
|
||
AV_CODEC_ID_TDSC :: TDSC;
|
||
AV_CODEC_ID_HQ_HQA :: HQ_HQA;
|
||
AV_CODEC_ID_HAP :: HAP;
|
||
AV_CODEC_ID_DDS :: DDS;
|
||
AV_CODEC_ID_DXV :: DXV;
|
||
AV_CODEC_ID_SCREENPRESSO :: SCREENPRESSO;
|
||
AV_CODEC_ID_RSCC :: RSCC;
|
||
AV_CODEC_ID_AVS2 :: AVS2;
|
||
AV_CODEC_ID_PGX :: PGX;
|
||
AV_CODEC_ID_AVS3 :: AVS3;
|
||
AV_CODEC_ID_MSP2 :: MSP2;
|
||
AV_CODEC_ID_VVC :: VVC;
|
||
|
||
AV_CODEC_ID_Y41P :: Y41P;
|
||
AV_CODEC_ID_AVRP :: AVRP;
|
||
AV_CODEC_ID_012V :: _012V;
|
||
AV_CODEC_ID_AVUI :: AVUI;
|
||
|
||
AV_CODEC_ID_AYUV :: AYUV;
|
||
|
||
AV_CODEC_ID_TARGA_Y216 :: TARGA_Y216;
|
||
AV_CODEC_ID_V308 :: V308;
|
||
AV_CODEC_ID_V408 :: V408;
|
||
AV_CODEC_ID_YUV4 :: YUV4;
|
||
AV_CODEC_ID_AVRN :: AVRN;
|
||
AV_CODEC_ID_CPIA :: CPIA;
|
||
AV_CODEC_ID_XFACE :: XFACE;
|
||
AV_CODEC_ID_SNOW :: SNOW;
|
||
AV_CODEC_ID_SMVJPEG :: SMVJPEG;
|
||
AV_CODEC_ID_APNG :: APNG;
|
||
AV_CODEC_ID_DAALA :: DAALA;
|
||
AV_CODEC_ID_CFHD :: CFHD;
|
||
AV_CODEC_ID_TRUEMOTION2RT :: TRUEMOTION2RT;
|
||
AV_CODEC_ID_M101 :: M101;
|
||
AV_CODEC_ID_MAGICYUV :: MAGICYUV;
|
||
AV_CODEC_ID_SHEERVIDEO :: SHEERVIDEO;
|
||
AV_CODEC_ID_YLC :: YLC;
|
||
AV_CODEC_ID_PSD :: PSD;
|
||
AV_CODEC_ID_PIXLET :: PIXLET;
|
||
AV_CODEC_ID_SPEEDHQ :: SPEEDHQ;
|
||
AV_CODEC_ID_FMVC :: FMVC;
|
||
AV_CODEC_ID_SCPR :: SCPR;
|
||
AV_CODEC_ID_CLEARVIDEO :: CLEARVIDEO;
|
||
AV_CODEC_ID_XPM :: XPM;
|
||
AV_CODEC_ID_AV1 :: AV1;
|
||
AV_CODEC_ID_BITPACKED :: BITPACKED;
|
||
AV_CODEC_ID_MSCC :: MSCC;
|
||
AV_CODEC_ID_SRGC :: SRGC;
|
||
AV_CODEC_ID_SVG :: SVG;
|
||
AV_CODEC_ID_GDV :: GDV;
|
||
AV_CODEC_ID_FITS :: FITS;
|
||
AV_CODEC_ID_IMM4 :: IMM4;
|
||
AV_CODEC_ID_PROSUMER :: PROSUMER;
|
||
AV_CODEC_ID_MWSC :: MWSC;
|
||
AV_CODEC_ID_WCMV :: WCMV;
|
||
AV_CODEC_ID_RASC :: RASC;
|
||
AV_CODEC_ID_HYMT :: HYMT;
|
||
AV_CODEC_ID_ARBC :: ARBC;
|
||
AV_CODEC_ID_AGM :: AGM;
|
||
AV_CODEC_ID_LSCR :: LSCR;
|
||
AV_CODEC_ID_VP4 :: VP4;
|
||
AV_CODEC_ID_IMM5 :: IMM5;
|
||
AV_CODEC_ID_MVDV :: MVDV;
|
||
AV_CODEC_ID_MVHA :: MVHA;
|
||
AV_CODEC_ID_CDTOONS :: CDTOONS;
|
||
AV_CODEC_ID_MV30 :: MV30;
|
||
AV_CODEC_ID_NOTCHLC :: NOTCHLC;
|
||
AV_CODEC_ID_PFM :: PFM;
|
||
AV_CODEC_ID_MOBICLIP :: MOBICLIP;
|
||
AV_CODEC_ID_PHOTOCD :: PHOTOCD;
|
||
AV_CODEC_ID_IPU :: IPU;
|
||
AV_CODEC_ID_ARGO :: ARGO;
|
||
AV_CODEC_ID_CRI :: CRI;
|
||
AV_CODEC_ID_SIMBIOSIS_IMX :: SIMBIOSIS_IMX;
|
||
AV_CODEC_ID_SGA_VIDEO :: SGA_VIDEO;
|
||
AV_CODEC_ID_GEM :: GEM;
|
||
AV_CODEC_ID_VBN :: VBN;
|
||
AV_CODEC_ID_JPEGXL :: JPEGXL;
|
||
AV_CODEC_ID_QOI :: QOI;
|
||
AV_CODEC_ID_PHM :: PHM;
|
||
AV_CODEC_ID_RADIANCE_HDR :: RADIANCE_HDR;
|
||
AV_CODEC_ID_WBMP :: WBMP;
|
||
AV_CODEC_ID_MEDIA100 :: MEDIA100;
|
||
AV_CODEC_ID_VQC :: VQC;
|
||
|
||
AV_CODEC_ID_FIRST_AUDIO :: FIRST_AUDIO;
|
||
AV_CODEC_ID_PCM_S16LE :: PCM_S16LE;
|
||
AV_CODEC_ID_PCM_S16BE :: PCM_S16BE;
|
||
AV_CODEC_ID_PCM_U16LE :: PCM_U16LE;
|
||
AV_CODEC_ID_PCM_U16BE :: PCM_U16BE;
|
||
AV_CODEC_ID_PCM_S8 :: PCM_S8;
|
||
AV_CODEC_ID_PCM_U8 :: PCM_U8;
|
||
AV_CODEC_ID_PCM_MULAW :: PCM_MULAW;
|
||
AV_CODEC_ID_PCM_ALAW :: PCM_ALAW;
|
||
AV_CODEC_ID_PCM_S32LE :: PCM_S32LE;
|
||
AV_CODEC_ID_PCM_S32BE :: PCM_S32BE;
|
||
AV_CODEC_ID_PCM_U32LE :: PCM_U32LE;
|
||
AV_CODEC_ID_PCM_U32BE :: PCM_U32BE;
|
||
AV_CODEC_ID_PCM_S24LE :: PCM_S24LE;
|
||
AV_CODEC_ID_PCM_S24BE :: PCM_S24BE;
|
||
AV_CODEC_ID_PCM_U24LE :: PCM_U24LE;
|
||
AV_CODEC_ID_PCM_U24BE :: PCM_U24BE;
|
||
AV_CODEC_ID_PCM_S24DAUD :: PCM_S24DAUD;
|
||
AV_CODEC_ID_PCM_ZORK :: PCM_ZORK;
|
||
AV_CODEC_ID_PCM_S16LE_PLANAR :: PCM_S16LE_PLANAR;
|
||
AV_CODEC_ID_PCM_DVD :: PCM_DVD;
|
||
AV_CODEC_ID_PCM_F32BE :: PCM_F32BE;
|
||
AV_CODEC_ID_PCM_F32LE :: PCM_F32LE;
|
||
AV_CODEC_ID_PCM_F64BE :: PCM_F64BE;
|
||
AV_CODEC_ID_PCM_F64LE :: PCM_F64LE;
|
||
AV_CODEC_ID_PCM_BLURAY :: PCM_BLURAY;
|
||
AV_CODEC_ID_PCM_LXF :: PCM_LXF;
|
||
AV_CODEC_ID_S302M :: S302M;
|
||
AV_CODEC_ID_PCM_S8_PLANAR :: PCM_S8_PLANAR;
|
||
AV_CODEC_ID_PCM_S24LE_PLANAR :: PCM_S24LE_PLANAR;
|
||
AV_CODEC_ID_PCM_S32LE_PLANAR :: PCM_S32LE_PLANAR;
|
||
AV_CODEC_ID_PCM_S16BE_PLANAR :: PCM_S16BE_PLANAR;
|
||
AV_CODEC_ID_PCM_S64LE :: PCM_S64LE;
|
||
AV_CODEC_ID_PCM_S64BE :: PCM_S64BE;
|
||
AV_CODEC_ID_PCM_F16LE :: PCM_F16LE;
|
||
AV_CODEC_ID_PCM_F24LE :: PCM_F24LE;
|
||
AV_CODEC_ID_PCM_VIDC :: PCM_VIDC;
|
||
AV_CODEC_ID_PCM_SGA :: PCM_SGA;
|
||
|
||
AV_CODEC_ID_ADPCM_IMA_QT :: ADPCM_IMA_QT;
|
||
AV_CODEC_ID_ADPCM_IMA_WAV :: ADPCM_IMA_WAV;
|
||
AV_CODEC_ID_ADPCM_IMA_DK3 :: ADPCM_IMA_DK3;
|
||
AV_CODEC_ID_ADPCM_IMA_DK4 :: ADPCM_IMA_DK4;
|
||
AV_CODEC_ID_ADPCM_IMA_WS :: ADPCM_IMA_WS;
|
||
AV_CODEC_ID_ADPCM_IMA_SMJPEG :: ADPCM_IMA_SMJPEG;
|
||
AV_CODEC_ID_ADPCM_MS :: ADPCM_MS;
|
||
AV_CODEC_ID_ADPCM_4XM :: ADPCM_4XM;
|
||
AV_CODEC_ID_ADPCM_XA :: ADPCM_XA;
|
||
AV_CODEC_ID_ADPCM_ADX :: ADPCM_ADX;
|
||
AV_CODEC_ID_ADPCM_EA :: ADPCM_EA;
|
||
AV_CODEC_ID_ADPCM_G726 :: ADPCM_G726;
|
||
AV_CODEC_ID_ADPCM_CT :: ADPCM_CT;
|
||
AV_CODEC_ID_ADPCM_SWF :: ADPCM_SWF;
|
||
AV_CODEC_ID_ADPCM_YAMAHA :: ADPCM_YAMAHA;
|
||
AV_CODEC_ID_ADPCM_SBPRO_4 :: ADPCM_SBPRO_4;
|
||
AV_CODEC_ID_ADPCM_SBPRO_3 :: ADPCM_SBPRO_3;
|
||
AV_CODEC_ID_ADPCM_SBPRO_2 :: ADPCM_SBPRO_2;
|
||
AV_CODEC_ID_ADPCM_THP :: ADPCM_THP;
|
||
AV_CODEC_ID_ADPCM_IMA_AMV :: ADPCM_IMA_AMV;
|
||
AV_CODEC_ID_ADPCM_EA_R1 :: ADPCM_EA_R1;
|
||
AV_CODEC_ID_ADPCM_EA_R3 :: ADPCM_EA_R3;
|
||
AV_CODEC_ID_ADPCM_EA_R2 :: ADPCM_EA_R2;
|
||
AV_CODEC_ID_ADPCM_IMA_EA_SEAD :: ADPCM_IMA_EA_SEAD;
|
||
AV_CODEC_ID_ADPCM_IMA_EA_EACS :: ADPCM_IMA_EA_EACS;
|
||
AV_CODEC_ID_ADPCM_EA_XAS :: ADPCM_EA_XAS;
|
||
AV_CODEC_ID_ADPCM_EA_MAXIS_XA :: ADPCM_EA_MAXIS_XA;
|
||
AV_CODEC_ID_ADPCM_IMA_ISS :: ADPCM_IMA_ISS;
|
||
AV_CODEC_ID_ADPCM_G722 :: ADPCM_G722;
|
||
AV_CODEC_ID_ADPCM_IMA_APC :: ADPCM_IMA_APC;
|
||
AV_CODEC_ID_ADPCM_VIMA :: ADPCM_VIMA;
|
||
AV_CODEC_ID_ADPCM_AFC :: ADPCM_AFC;
|
||
AV_CODEC_ID_ADPCM_IMA_OKI :: ADPCM_IMA_OKI;
|
||
AV_CODEC_ID_ADPCM_DTK :: ADPCM_DTK;
|
||
AV_CODEC_ID_ADPCM_IMA_RAD :: ADPCM_IMA_RAD;
|
||
AV_CODEC_ID_ADPCM_G726LE :: ADPCM_G726LE;
|
||
AV_CODEC_ID_ADPCM_THP_LE :: ADPCM_THP_LE;
|
||
AV_CODEC_ID_ADPCM_PSX :: ADPCM_PSX;
|
||
AV_CODEC_ID_ADPCM_AICA :: ADPCM_AICA;
|
||
AV_CODEC_ID_ADPCM_IMA_DAT4 :: ADPCM_IMA_DAT4;
|
||
AV_CODEC_ID_ADPCM_MTAF :: ADPCM_MTAF;
|
||
AV_CODEC_ID_ADPCM_AGM :: ADPCM_AGM;
|
||
AV_CODEC_ID_ADPCM_ARGO :: ADPCM_ARGO;
|
||
AV_CODEC_ID_ADPCM_IMA_SSI :: ADPCM_IMA_SSI;
|
||
AV_CODEC_ID_ADPCM_ZORK :: ADPCM_ZORK;
|
||
AV_CODEC_ID_ADPCM_IMA_APM :: ADPCM_IMA_APM;
|
||
AV_CODEC_ID_ADPCM_IMA_ALP :: ADPCM_IMA_ALP;
|
||
AV_CODEC_ID_ADPCM_IMA_MTF :: ADPCM_IMA_MTF;
|
||
AV_CODEC_ID_ADPCM_IMA_CUNNING :: ADPCM_IMA_CUNNING;
|
||
AV_CODEC_ID_ADPCM_IMA_MOFLEX :: ADPCM_IMA_MOFLEX;
|
||
AV_CODEC_ID_ADPCM_IMA_ACORN :: ADPCM_IMA_ACORN;
|
||
AV_CODEC_ID_ADPCM_XMD :: ADPCM_XMD;
|
||
|
||
AV_CODEC_ID_AMR_NB :: AMR_NB;
|
||
AV_CODEC_ID_AMR_WB :: AMR_WB;
|
||
|
||
AV_CODEC_ID_RA_144 :: RA_144;
|
||
AV_CODEC_ID_RA_288 :: RA_288;
|
||
|
||
AV_CODEC_ID_ROQ_DPCM :: ROQ_DPCM;
|
||
AV_CODEC_ID_INTERPLAY_DPCM :: INTERPLAY_DPCM;
|
||
AV_CODEC_ID_XAN_DPCM :: XAN_DPCM;
|
||
AV_CODEC_ID_SOL_DPCM :: SOL_DPCM;
|
||
AV_CODEC_ID_SDX2_DPCM :: SDX2_DPCM;
|
||
AV_CODEC_ID_GREMLIN_DPCM :: GREMLIN_DPCM;
|
||
AV_CODEC_ID_DERF_DPCM :: DERF_DPCM;
|
||
AV_CODEC_ID_WADY_DPCM :: WADY_DPCM;
|
||
AV_CODEC_ID_CBD2_DPCM :: CBD2_DPCM;
|
||
|
||
AV_CODEC_ID_MP2 :: MP2;
|
||
AV_CODEC_ID_MP3 :: MP3;
|
||
AV_CODEC_ID_AAC :: AAC;
|
||
AV_CODEC_ID_AC3 :: AC3;
|
||
AV_CODEC_ID_DTS :: DTS;
|
||
AV_CODEC_ID_VORBIS :: VORBIS;
|
||
AV_CODEC_ID_DVAUDIO :: DVAUDIO;
|
||
AV_CODEC_ID_WMAV1 :: WMAV1;
|
||
AV_CODEC_ID_WMAV2 :: WMAV2;
|
||
AV_CODEC_ID_MACE3 :: MACE3;
|
||
AV_CODEC_ID_MACE6 :: MACE6;
|
||
AV_CODEC_ID_VMDAUDIO :: VMDAUDIO;
|
||
AV_CODEC_ID_FLAC :: FLAC;
|
||
AV_CODEC_ID_MP3ADU :: MP3ADU;
|
||
AV_CODEC_ID_MP3ON4 :: MP3ON4;
|
||
AV_CODEC_ID_SHORTEN :: SHORTEN;
|
||
AV_CODEC_ID_ALAC :: ALAC;
|
||
AV_CODEC_ID_WESTWOOD_SND1 :: WESTWOOD_SND1;
|
||
AV_CODEC_ID_GSM :: GSM;
|
||
AV_CODEC_ID_QDM2 :: QDM2;
|
||
AV_CODEC_ID_COOK :: COOK;
|
||
AV_CODEC_ID_TRUESPEECH :: TRUESPEECH;
|
||
AV_CODEC_ID_TTA :: TTA;
|
||
AV_CODEC_ID_SMACKAUDIO :: SMACKAUDIO;
|
||
AV_CODEC_ID_QCELP :: QCELP;
|
||
AV_CODEC_ID_WAVPACK :: WAVPACK;
|
||
AV_CODEC_ID_DSICINAUDIO :: DSICINAUDIO;
|
||
AV_CODEC_ID_IMC :: IMC;
|
||
AV_CODEC_ID_MUSEPACK7 :: MUSEPACK7;
|
||
AV_CODEC_ID_MLP :: MLP;
|
||
AV_CODEC_ID_GSM_MS :: GSM_MS;
|
||
AV_CODEC_ID_ATRAC3 :: ATRAC3;
|
||
AV_CODEC_ID_APE :: APE;
|
||
AV_CODEC_ID_NELLYMOSER :: NELLYMOSER;
|
||
AV_CODEC_ID_MUSEPACK8 :: MUSEPACK8;
|
||
AV_CODEC_ID_SPEEX :: SPEEX;
|
||
AV_CODEC_ID_WMAVOICE :: WMAVOICE;
|
||
AV_CODEC_ID_WMAPRO :: WMAPRO;
|
||
AV_CODEC_ID_WMALOSSLESS :: WMALOSSLESS;
|
||
AV_CODEC_ID_ATRAC3P :: ATRAC3P;
|
||
AV_CODEC_ID_EAC3 :: EAC3;
|
||
AV_CODEC_ID_SIPR :: SIPR;
|
||
AV_CODEC_ID_MP1 :: MP1;
|
||
AV_CODEC_ID_TWINVQ :: TWINVQ;
|
||
AV_CODEC_ID_TRUEHD :: TRUEHD;
|
||
AV_CODEC_ID_MP4ALS :: MP4ALS;
|
||
AV_CODEC_ID_ATRAC1 :: ATRAC1;
|
||
AV_CODEC_ID_BINKAUDIO_RDFT :: BINKAUDIO_RDFT;
|
||
AV_CODEC_ID_BINKAUDIO_DCT :: BINKAUDIO_DCT;
|
||
AV_CODEC_ID_AAC_LATM :: AAC_LATM;
|
||
AV_CODEC_ID_QDMC :: QDMC;
|
||
AV_CODEC_ID_CELT :: CELT;
|
||
AV_CODEC_ID_G723_1 :: G723_1;
|
||
AV_CODEC_ID_G729 :: G729;
|
||
AV_CODEC_ID_8SVX_EXP :: _8SVX_EXP;
|
||
AV_CODEC_ID_8SVX_FIB :: _8SVX_FIB;
|
||
AV_CODEC_ID_BMV_AUDIO :: BMV_AUDIO;
|
||
AV_CODEC_ID_RALF :: RALF;
|
||
AV_CODEC_ID_IAC :: IAC;
|
||
AV_CODEC_ID_ILBC :: ILBC;
|
||
AV_CODEC_ID_OPUS :: OPUS;
|
||
AV_CODEC_ID_COMFORT_NOISE :: COMFORT_NOISE;
|
||
AV_CODEC_ID_TAK :: TAK;
|
||
AV_CODEC_ID_METASOUND :: METASOUND;
|
||
AV_CODEC_ID_PAF_AUDIO :: PAF_AUDIO;
|
||
AV_CODEC_ID_ON2AVC :: ON2AVC;
|
||
AV_CODEC_ID_DSS_SP :: DSS_SP;
|
||
AV_CODEC_ID_CODEC2 :: CODEC2;
|
||
AV_CODEC_ID_FFWAVESYNTH :: FFWAVESYNTH;
|
||
AV_CODEC_ID_SONIC :: SONIC;
|
||
AV_CODEC_ID_SONIC_LS :: SONIC_LS;
|
||
AV_CODEC_ID_EVRC :: EVRC;
|
||
AV_CODEC_ID_SMV :: SMV;
|
||
AV_CODEC_ID_DSD_LSBF :: DSD_LSBF;
|
||
AV_CODEC_ID_DSD_MSBF :: DSD_MSBF;
|
||
AV_CODEC_ID_DSD_LSBF_PLANAR :: DSD_LSBF_PLANAR;
|
||
AV_CODEC_ID_DSD_MSBF_PLANAR :: DSD_MSBF_PLANAR;
|
||
AV_CODEC_ID_4GV :: _4GV;
|
||
AV_CODEC_ID_INTERPLAY_ACM :: INTERPLAY_ACM;
|
||
AV_CODEC_ID_XMA1 :: XMA1;
|
||
AV_CODEC_ID_XMA2 :: XMA2;
|
||
AV_CODEC_ID_DST :: DST;
|
||
AV_CODEC_ID_ATRAC3AL :: ATRAC3AL;
|
||
AV_CODEC_ID_ATRAC3PAL :: ATRAC3PAL;
|
||
AV_CODEC_ID_DOLBY_E :: DOLBY_E;
|
||
AV_CODEC_ID_APTX :: APTX;
|
||
AV_CODEC_ID_APTX_HD :: APTX_HD;
|
||
AV_CODEC_ID_SBC :: SBC;
|
||
AV_CODEC_ID_ATRAC9 :: ATRAC9;
|
||
AV_CODEC_ID_HCOM :: HCOM;
|
||
AV_CODEC_ID_ACELP_KELVIN :: ACELP_KELVIN;
|
||
AV_CODEC_ID_MPEGH_3D_AUDIO :: MPEGH_3D_AUDIO;
|
||
AV_CODEC_ID_SIREN :: SIREN;
|
||
AV_CODEC_ID_HCA :: HCA;
|
||
AV_CODEC_ID_FASTAUDIO :: FASTAUDIO;
|
||
AV_CODEC_ID_MSNSIREN :: MSNSIREN;
|
||
AV_CODEC_ID_DFPWM :: DFPWM;
|
||
AV_CODEC_ID_BONK :: BONK;
|
||
AV_CODEC_ID_MISC4 :: MISC4;
|
||
AV_CODEC_ID_APAC :: APAC;
|
||
AV_CODEC_ID_FTR :: FTR;
|
||
AV_CODEC_ID_WAVARC :: WAVARC;
|
||
AV_CODEC_ID_RKA :: RKA;
|
||
|
||
AV_CODEC_ID_FIRST_SUBTITLE :: FIRST_SUBTITLE;
|
||
AV_CODEC_ID_DVD_SUBTITLE :: DVD_SUBTITLE;
|
||
AV_CODEC_ID_DVB_SUBTITLE :: DVB_SUBTITLE;
|
||
AV_CODEC_ID_TEXT :: TEXT;
|
||
AV_CODEC_ID_XSUB :: XSUB;
|
||
AV_CODEC_ID_SSA :: SSA;
|
||
AV_CODEC_ID_MOV_TEXT :: MOV_TEXT;
|
||
AV_CODEC_ID_HDMV_PGS_SUBTITLE :: HDMV_PGS_SUBTITLE;
|
||
AV_CODEC_ID_DVB_TELETEXT :: DVB_TELETEXT;
|
||
AV_CODEC_ID_SRT :: SRT;
|
||
AV_CODEC_ID_MICRODVD :: MICRODVD;
|
||
AV_CODEC_ID_EIA_608 :: EIA_608;
|
||
AV_CODEC_ID_JACOSUB :: JACOSUB;
|
||
AV_CODEC_ID_SAMI :: SAMI;
|
||
AV_CODEC_ID_REALTEXT :: REALTEXT;
|
||
AV_CODEC_ID_STL :: STL;
|
||
AV_CODEC_ID_SUBVIEWER1 :: SUBVIEWER1;
|
||
AV_CODEC_ID_SUBVIEWER :: SUBVIEWER;
|
||
AV_CODEC_ID_SUBRIP :: SUBRIP;
|
||
AV_CODEC_ID_WEBVTT :: WEBVTT;
|
||
AV_CODEC_ID_MPL2 :: MPL2;
|
||
AV_CODEC_ID_VPLAYER :: VPLAYER;
|
||
AV_CODEC_ID_PJS :: PJS;
|
||
AV_CODEC_ID_ASS :: ASS;
|
||
AV_CODEC_ID_HDMV_TEXT_SUBTITLE :: HDMV_TEXT_SUBTITLE;
|
||
AV_CODEC_ID_TTML :: TTML;
|
||
AV_CODEC_ID_ARIB_CAPTION :: ARIB_CAPTION;
|
||
|
||
AV_CODEC_ID_FIRST_UNKNOWN :: FIRST_UNKNOWN;
|
||
AV_CODEC_ID_TTF :: TTF;
|
||
|
||
AV_CODEC_ID_SCTE_35 :: SCTE_35;
|
||
AV_CODEC_ID_EPG :: EPG;
|
||
AV_CODEC_ID_BINTEXT :: BINTEXT;
|
||
AV_CODEC_ID_XBIN :: XBIN;
|
||
AV_CODEC_ID_IDF :: IDF;
|
||
AV_CODEC_ID_OTF :: OTF;
|
||
AV_CODEC_ID_SMPTE_KLV :: SMPTE_KLV;
|
||
AV_CODEC_ID_DVD_NAV :: DVD_NAV;
|
||
AV_CODEC_ID_TIMED_ID3 :: TIMED_ID3;
|
||
AV_CODEC_ID_BIN_DATA :: BIN_DATA;
|
||
|
||
AV_CODEC_ID_PROBE :: PROBE;
|
||
|
||
AV_CODEC_ID_MPEG2TS :: MPEG2TS;
|
||
|
||
AV_CODEC_ID_MPEG4SYSTEMS :: MPEG4SYSTEMS;
|
||
|
||
AV_CODEC_ID_FFMETADATA :: FFMETADATA;
|
||
AV_CODEC_ID_WRAPPED_AVFRAME :: WRAPPED_AVFRAME;
|
||
|
||
AV_CODEC_ID_VNULL :: VNULL;
|
||
|
||
AV_CODEC_ID_ANULL :: ANULL;
|
||
}
|
||
|
||
/**
|
||
* Get the type of the given codec.
|
||
*/
|
||
avcodec_get_type :: (codec_id: AVCodecID) -> AVMediaType #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Get the name of a codec.
|
||
* @return a static string identifying the codec; never NULL
|
||
*/
|
||
avcodec_get_name :: (id: AVCodecID) -> *u8 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Return codec bits per sample.
|
||
*
|
||
* @param[in] codec_id the codec
|
||
* @return Number of bits per sample or zero if unknown for the given codec.
|
||
*/
|
||
av_get_bits_per_sample :: (codec_id: AVCodecID) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Return codec bits per sample.
|
||
* Only return non-zero if the bits per sample is exactly correct, not an
|
||
* approximation.
|
||
*
|
||
* @param[in] codec_id the codec
|
||
* @return Number of bits per sample or zero if unknown for the given codec.
|
||
*/
|
||
av_get_exact_bits_per_sample :: (codec_id: AVCodecID) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Return a name for the specified profile, if available.
|
||
*
|
||
* @param codec_id the ID of the codec to which the requested profile belongs
|
||
* @param profile the profile value for which a name is requested
|
||
* @return A name for the profile if found, NULL otherwise.
|
||
*
|
||
* @note unlike av_get_profile_name(), which searches a list of profiles
|
||
* supported by a specific decoder or encoder implementation, this
|
||
* function searches the list of profiles from the AVCodecDescriptor
|
||
*/
|
||
avcodec_profile_name :: (codec_id: AVCodecID, profile: s32) -> *u8 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Return the PCM codec associated with a sample format.
|
||
* @param be endianness, 0 for little, 1 for big,
|
||
* -1 (or anything else) for native
|
||
* @return AV_CODEC_ID_PCM_* or AV_CODEC_ID_NONE
|
||
*/
|
||
av_get_pcm_codec :: (fmt: AVSampleFormat, be: s32) -> AVCodecID #foreign libavcodec_60;
|
||
|
||
/**
|
||
* AVProfile.
|
||
*/
|
||
AVProfile :: struct {
|
||
profile: s32;
|
||
name: *u8; ///< short name for the profile
|
||
}
|
||
|
||
/**
|
||
* AVCodec.
|
||
*/
|
||
AVCodec :: struct {
|
||
/**
|
||
* Name of the codec implementation.
|
||
* The name is globally unique among encoders and among decoders (but an
|
||
* encoder and a decoder can share the same name).
|
||
* This is the primary way to find a codec from the user perspective.
|
||
*/
|
||
name: *u8;
|
||
|
||
/**
|
||
* Descriptive name for the codec, meant to be more human readable than name.
|
||
* You should use the NULL_IF_CONFIG_SMALL() macro to define it.
|
||
*/
|
||
long_name: *u8;
|
||
type: AVMediaType;
|
||
id: AVCodecID;
|
||
|
||
/**
|
||
* Codec capabilities.
|
||
* see AV_CODEC_CAP_*
|
||
*/
|
||
capabilities: s32;
|
||
max_lowres: u8; ///< maximum value for lowres supported by the decoder
|
||
supported_framerates: *AVRational; ///< array of supported framerates, or NULL if any, array is terminated by {0,0}
|
||
pix_fmts: *AVPixelFormat; ///< array of supported pixel formats, or NULL if unknown, array is terminated by -1
|
||
supported_samplerates: *s32; ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0
|
||
sample_fmts: *AVSampleFormat; ///< array of supported sample formats, or NULL if unknown, array is terminated by -1
|
||
|
||
channel_layouts: *u64; ///< array of support channel layouts, or NULL if unknown. array is terminated by 0
|
||
|
||
priv_class: *AVClass; ///< AVClass for the private context
|
||
profiles: *AVProfile; ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN}
|
||
|
||
/**
|
||
* Group name of the codec implementation.
|
||
* This is a short symbolic name of the wrapper backing this codec. A
|
||
* wrapper uses some kind of external implementation for the codec, such
|
||
* as an external library, or a codec implementation provided by the OS or
|
||
* the hardware.
|
||
* If this field is NULL, this is a builtin, libavcodec native codec.
|
||
* If non-NULL, this will be the suffix in AVCodec.name in most cases
|
||
* (usually AVCodec.name will be of the form "<codec_name>_<wrapper_name>").
|
||
*/
|
||
wrapper_name: *u8;
|
||
|
||
/**
|
||
* Array of supported channel layouts, terminated with a zeroed layout.
|
||
*/
|
||
ch_layouts: *AVChannelLayout;
|
||
}
|
||
|
||
/**
|
||
* Iterate over all registered codecs.
|
||
*
|
||
* @param opaque a pointer where libavcodec will store the iteration state. Must
|
||
* point to NULL to start the iteration.
|
||
*
|
||
* @return the next registered codec or NULL when the iteration is
|
||
* finished
|
||
*/
|
||
av_codec_iterate :: (opaque: **void) -> *AVCodec #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Find a registered decoder with a matching codec ID.
|
||
*
|
||
* @param id AVCodecID of the requested decoder
|
||
* @return A decoder if one was found, NULL otherwise.
|
||
*/
|
||
avcodec_find_decoder :: (id: AVCodecID) -> *AVCodec #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Find a registered decoder with the specified name.
|
||
*
|
||
* @param name name of the requested decoder
|
||
* @return A decoder if one was found, NULL otherwise.
|
||
*/
|
||
avcodec_find_decoder_by_name :: (name: *u8) -> *AVCodec #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Find a registered encoder with a matching codec ID.
|
||
*
|
||
* @param id AVCodecID of the requested encoder
|
||
* @return An encoder if one was found, NULL otherwise.
|
||
*/
|
||
avcodec_find_encoder :: (id: AVCodecID) -> *AVCodec #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Find a registered encoder with the specified name.
|
||
*
|
||
* @param name name of the requested encoder
|
||
* @return An encoder if one was found, NULL otherwise.
|
||
*/
|
||
avcodec_find_encoder_by_name :: (name: *u8) -> *AVCodec #foreign libavcodec_60;
|
||
|
||
/**
|
||
* @return a non-zero number if codec is an encoder, zero otherwise
|
||
*/
|
||
av_codec_is_encoder :: (codec: *AVCodec) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* @return a non-zero number if codec is a decoder, zero otherwise
|
||
*/
|
||
av_codec_is_decoder :: (codec: *AVCodec) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Return a name for the specified profile, if available.
|
||
*
|
||
* @param codec the codec that is searched for the given profile
|
||
* @param profile the profile value for which a name is requested
|
||
* @return A name for the profile if found, NULL otherwise.
|
||
*/
|
||
av_get_profile_name :: (codec: *AVCodec, profile: s32) -> *u8 #foreign libavcodec_60;
|
||
|
||
AV_CODEC_HW_CONFIG_METHOD :: enum u32 {
|
||
HW_DEVICE_CTX :: 1;
|
||
|
||
HW_FRAMES_CTX :: 2;
|
||
|
||
INTERNAL :: 4;
|
||
|
||
AD_HOC :: 8;
|
||
|
||
AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX :: HW_DEVICE_CTX;
|
||
|
||
AV_CODEC_HW_CONFIG_METHOD_HW_FRAMES_CTX :: HW_FRAMES_CTX;
|
||
|
||
AV_CODEC_HW_CONFIG_METHOD_INTERNAL :: INTERNAL;
|
||
|
||
AV_CODEC_HW_CONFIG_METHOD_AD_HOC :: AD_HOC;
|
||
}
|
||
|
||
AVCodecHWConfig :: struct {
|
||
/**
|
||
* For decoders, a hardware pixel format which that decoder may be
|
||
* able to decode to if suitable hardware is available.
|
||
*
|
||
* For encoders, a pixel format which the encoder may be able to
|
||
* accept. If set to AV_PIX_FMT_NONE, this applies to all pixel
|
||
* formats supported by the codec.
|
||
*/
|
||
pix_fmt: AVPixelFormat;
|
||
|
||
/**
|
||
* Bit set of AV_CODEC_HW_CONFIG_METHOD_* flags, describing the possible
|
||
* setup methods which can be used with this configuration.
|
||
*/
|
||
methods: s32;
|
||
|
||
/**
|
||
* The device type associated with the configuration.
|
||
*
|
||
* Must be set for AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX and
|
||
* AV_CODEC_HW_CONFIG_METHOD_HW_FRAMES_CTX, otherwise unused.
|
||
*/
|
||
device_type: AVHWDeviceType;
|
||
}
|
||
|
||
/**
|
||
* Retrieve supported hardware configurations for a codec.
|
||
*
|
||
* Values of index from zero to some maximum return the indexed configuration
|
||
* descriptor; all other values return NULL. If the codec does not support
|
||
* any hardware configurations then it will always return NULL.
|
||
*/
|
||
avcodec_get_hw_config :: (codec: *AVCodec, index: s32) -> *AVCodecHWConfig #foreign libavcodec_60;
|
||
|
||
/**
|
||
* This struct describes the properties of a single codec described by an
|
||
* AVCodecID.
|
||
* @see avcodec_descriptor_get()
|
||
*/
|
||
AVCodecDescriptor :: struct {
|
||
id: AVCodecID;
|
||
type: AVMediaType;
|
||
|
||
/**
|
||
* Name of the codec described by this descriptor. It is non-empty and
|
||
* unique for each codec descriptor. It should contain alphanumeric
|
||
* characters and '_' only.
|
||
*/
|
||
name: *u8;
|
||
|
||
/**
|
||
* A more descriptive name for this codec. May be NULL.
|
||
*/
|
||
long_name: *u8;
|
||
|
||
/**
|
||
* Codec properties, a combination of AV_CODEC_PROP_* flags.
|
||
*/
|
||
props: s32;
|
||
|
||
/**
|
||
* MIME type(s) associated with the codec.
|
||
* May be NULL; if not, a NULL-terminated array of MIME types.
|
||
* The first item is always non-NULL and is the preferred MIME type.
|
||
*/
|
||
mime_types: **u8;
|
||
|
||
/**
|
||
* If non-NULL, an array of profiles recognized for this codec.
|
||
* Terminated with FF_PROFILE_UNKNOWN.
|
||
*/
|
||
profiles: *AVProfile;
|
||
}
|
||
|
||
/**
|
||
* @return descriptor for given codec ID or NULL if no descriptor exists.
|
||
*/
|
||
avcodec_descriptor_get :: (id: AVCodecID) -> *AVCodecDescriptor #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Iterate over all codec descriptors known to libavcodec.
|
||
*
|
||
* @param prev previous descriptor. NULL to get the first descriptor.
|
||
*
|
||
* @return next descriptor or NULL after the last descriptor
|
||
*/
|
||
avcodec_descriptor_next :: (prev: *AVCodecDescriptor) -> *AVCodecDescriptor #foreign libavcodec_60;
|
||
|
||
/**
|
||
* @return codec descriptor with the given name or NULL if no such descriptor
|
||
* exists.
|
||
*/
|
||
avcodec_descriptor_get_by_name :: (name: *u8) -> *AVCodecDescriptor #foreign libavcodec_60;
|
||
|
||
/**
|
||
* @addtogroup lavc_core
|
||
* @{
|
||
*/
|
||
AVFieldOrder :: enum u32 {
|
||
UNKNOWN :: 0;
|
||
PROGRESSIVE :: 1;
|
||
TT :: 2;
|
||
BB :: 3;
|
||
TB :: 4;
|
||
BT :: 5;
|
||
|
||
AV_FIELD_UNKNOWN :: UNKNOWN;
|
||
AV_FIELD_PROGRESSIVE :: PROGRESSIVE;
|
||
AV_FIELD_TT :: TT;
|
||
AV_FIELD_BB :: BB;
|
||
AV_FIELD_TB :: TB;
|
||
AV_FIELD_BT :: BT;
|
||
}
|
||
|
||
/**
|
||
* This struct describes the properties of an encoded stream.
|
||
*
|
||
* sizeof(AVCodecParameters) is not a part of the public ABI, this struct must
|
||
* be allocated with avcodec_parameters_alloc() and freed with
|
||
* avcodec_parameters_free().
|
||
*/
|
||
AVCodecParameters :: struct {
|
||
/**
|
||
* General type of the encoded data.
|
||
*/
|
||
codec_type: AVMediaType;
|
||
|
||
/**
|
||
* Specific type of the encoded data (the codec used).
|
||
*/
|
||
codec_id: AVCodecID;
|
||
|
||
/**
|
||
* Additional information about the codec (corresponds to the AVI FOURCC).
|
||
*/
|
||
codec_tag: u32;
|
||
|
||
/**
|
||
* Extra binary data needed for initializing the decoder, codec-dependent.
|
||
*
|
||
* Must be allocated with av_malloc() and will be freed by
|
||
* avcodec_parameters_free(). The allocated size of extradata must be at
|
||
* least extradata_size + AV_INPUT_BUFFER_PADDING_SIZE, with the padding
|
||
* bytes zeroed.
|
||
*/
|
||
extradata: *u8;
|
||
|
||
/**
|
||
* Size of the extradata content in bytes.
|
||
*/
|
||
extradata_size: s32;
|
||
|
||
/**
|
||
* - video: the pixel format, the value corresponds to enum AVPixelFormat.
|
||
* - audio: the sample format, the value corresponds to enum AVSampleFormat.
|
||
*/
|
||
format: s32;
|
||
|
||
/**
|
||
* The average bitrate of the encoded data (in bits per second).
|
||
*/
|
||
bit_rate: s64;
|
||
|
||
/**
|
||
* The number of bits per sample in the codedwords.
|
||
*
|
||
* This is basically the bitrate per sample. It is mandatory for a bunch of
|
||
* formats to actually decode them. It's the number of bits for one sample in
|
||
* the actual coded bitstream.
|
||
*
|
||
* This could be for example 4 for ADPCM
|
||
* For PCM formats this matches bits_per_raw_sample
|
||
* Can be 0
|
||
*/
|
||
bits_per_coded_sample: s32;
|
||
|
||
/**
|
||
* This is the number of valid bits in each output sample. If the
|
||
* sample format has more bits, the least significant bits are additional
|
||
* padding bits, which are always 0. Use right shifts to reduce the sample
|
||
* to its actual size. For example, audio formats with 24 bit samples will
|
||
* have bits_per_raw_sample set to 24, and format set to AV_SAMPLE_FMT_S32.
|
||
* To get the original sample use "(int32_t)sample >> 8"."
|
||
*
|
||
* For ADPCM this might be 12 or 16 or similar
|
||
* Can be 0
|
||
*/
|
||
bits_per_raw_sample: s32;
|
||
|
||
/**
|
||
* Codec-specific bitstream restrictions that the stream conforms to.
|
||
*/
|
||
profile: s32;
|
||
level: s32;
|
||
|
||
/**
|
||
* Video only. The dimensions of the video frame in pixels.
|
||
*/
|
||
width: s32;
|
||
height: s32;
|
||
|
||
/**
|
||
* Video only. The aspect ratio (width / height) which a single pixel
|
||
* should have when displayed.
|
||
*
|
||
* When the aspect ratio is unknown / undefined, the numerator should be
|
||
* set to 0 (the denominator may have any value).
|
||
*/
|
||
sample_aspect_ratio: AVRational;
|
||
|
||
/**
|
||
* Video only. The order of the fields in interlaced video.
|
||
*/
|
||
field_order: AVFieldOrder;
|
||
|
||
/**
|
||
* Video only. Additional colorspace characteristics.
|
||
*/
|
||
color_range: AVColorRange;
|
||
color_primaries: AVColorPrimaries;
|
||
color_trc: AVColorTransferCharacteristic;
|
||
color_space: AVColorSpace;
|
||
chroma_location: AVChromaLocation;
|
||
|
||
/**
|
||
* Video only. Number of delayed frames.
|
||
*/
|
||
video_delay: s32;
|
||
|
||
/**
|
||
* Audio only. The channel layout bitmask. May be 0 if the channel layout is
|
||
* unknown or unspecified, otherwise the number of bits set must be equal to
|
||
* the channels field.
|
||
* @deprecated use ch_layout
|
||
*/
|
||
channel_layout: u64;
|
||
|
||
/**
|
||
* Audio only. The number of audio channels.
|
||
* @deprecated use ch_layout.nb_channels
|
||
*/
|
||
channels: s32;
|
||
|
||
/**
|
||
* Audio only. The number of audio samples per second.
|
||
*/
|
||
sample_rate: s32;
|
||
|
||
/**
|
||
* Audio only. The number of bytes per coded audio frame, required by some
|
||
* formats.
|
||
*
|
||
* Corresponds to nBlockAlign in WAVEFORMATEX.
|
||
*/
|
||
block_align: s32;
|
||
|
||
/**
|
||
* Audio only. Audio frame size, if known. Required by some formats to be static.
|
||
*/
|
||
frame_size: s32;
|
||
|
||
/**
|
||
* Audio only. The amount of padding (in samples) inserted by the encoder at
|
||
* the beginning of the audio. I.e. this number of leading decoded samples
|
||
* must be discarded by the caller to get the original audio without leading
|
||
* padding.
|
||
*/
|
||
initial_padding: s32;
|
||
|
||
/**
|
||
* Audio only. The amount of padding (in samples) appended by the encoder to
|
||
* the end of the audio. I.e. this number of decoded samples must be
|
||
* discarded by the caller from the end of the stream to get the original
|
||
* audio without any trailing padding.
|
||
*/
|
||
trailing_padding: s32;
|
||
|
||
/**
|
||
* Audio only. Number of samples to skip after a discontinuity.
|
||
*/
|
||
seek_preroll: s32;
|
||
|
||
/**
|
||
* Audio only. The channel layout and number of channels.
|
||
*/
|
||
ch_layout: AVChannelLayout;
|
||
}
|
||
|
||
/**
|
||
* Allocate a new AVCodecParameters and set its fields to default values
|
||
* (unknown/invalid/0). The returned struct must be freed with
|
||
* avcodec_parameters_free().
|
||
*/
|
||
avcodec_parameters_alloc :: () -> *AVCodecParameters #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Free an AVCodecParameters instance and everything associated with it and
|
||
* write NULL to the supplied pointer.
|
||
*/
|
||
avcodec_parameters_free :: (par: **AVCodecParameters) -> void #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Copy the contents of src to dst. Any allocated fields in dst are freed and
|
||
* replaced with newly allocated duplicates of the corresponding fields in src.
|
||
*
|
||
* @return >= 0 on success, a negative AVERROR code on failure.
|
||
*/
|
||
avcodec_parameters_copy :: (dst: *AVCodecParameters, src: *AVCodecParameters) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* This function is the same as av_get_audio_frame_duration(), except it works
|
||
* with AVCodecParameters instead of an AVCodecContext.
|
||
*/
|
||
av_get_audio_frame_duration2 :: (par: *AVCodecParameters, frame_bytes: s32) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* @ingroup lavc_decoding
|
||
*/
|
||
AVDiscard :: enum s32 {
|
||
NONE :: -16;
|
||
DEFAULT :: 0;
|
||
NONREF :: 8;
|
||
BIDIR :: 16;
|
||
NONINTRA :: 24;
|
||
NONKEY :: 32;
|
||
ALL :: 48;
|
||
|
||
AVDISCARD_NONE :: NONE;
|
||
AVDISCARD_DEFAULT :: DEFAULT;
|
||
AVDISCARD_NONREF :: NONREF;
|
||
AVDISCARD_BIDIR :: BIDIR;
|
||
AVDISCARD_NONINTRA :: NONINTRA;
|
||
AVDISCARD_NONKEY :: NONKEY;
|
||
AVDISCARD_ALL :: ALL;
|
||
}
|
||
|
||
AVAudioServiceType :: enum u32 {
|
||
MAIN :: 0;
|
||
EFFECTS :: 1;
|
||
VISUALLY_IMPAIRED :: 2;
|
||
HEARING_IMPAIRED :: 3;
|
||
DIALOGUE :: 4;
|
||
COMMENTARY :: 5;
|
||
EMERGENCY :: 6;
|
||
VOICE_OVER :: 7;
|
||
KARAOKE :: 8;
|
||
NB :: 9;
|
||
|
||
AV_AUDIO_SERVICE_TYPE_MAIN :: MAIN;
|
||
AV_AUDIO_SERVICE_TYPE_EFFECTS :: EFFECTS;
|
||
AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED :: VISUALLY_IMPAIRED;
|
||
AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED :: HEARING_IMPAIRED;
|
||
AV_AUDIO_SERVICE_TYPE_DIALOGUE :: DIALOGUE;
|
||
AV_AUDIO_SERVICE_TYPE_COMMENTARY :: COMMENTARY;
|
||
AV_AUDIO_SERVICE_TYPE_EMERGENCY :: EMERGENCY;
|
||
AV_AUDIO_SERVICE_TYPE_VOICE_OVER :: VOICE_OVER;
|
||
AV_AUDIO_SERVICE_TYPE_KARAOKE :: KARAOKE;
|
||
AV_AUDIO_SERVICE_TYPE_NB :: NB;
|
||
}
|
||
|
||
/**
|
||
* Pan Scan area.
|
||
* This specifies the area which should be displayed.
|
||
* Note there may be multiple such areas for one frame.
|
||
*/
|
||
AVPanScan :: struct {
|
||
/**
|
||
* id
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by libavcodec.
|
||
*/
|
||
id: s32;
|
||
|
||
/**
|
||
* width and height in 1/16 pel
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by libavcodec.
|
||
*/
|
||
width: s32;
|
||
height: s32;
|
||
|
||
/**
|
||
* position of the top left corner in 1/16 pel for up to 3 fields/frames
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by libavcodec.
|
||
*/
|
||
position: [3] [2] s16;
|
||
}
|
||
|
||
/**
|
||
* This structure describes the bitrate properties of an encoded bitstream. It
|
||
* roughly corresponds to a subset the VBV parameters for MPEG-2 or HRD
|
||
* parameters for H.264/HEVC.
|
||
*/
|
||
AVCPBProperties :: struct {
|
||
/**
|
||
* Maximum bitrate of the stream, in bits per second.
|
||
* Zero if unknown or unspecified.
|
||
*/
|
||
max_bitrate: s64;
|
||
|
||
/**
|
||
* Minimum bitrate of the stream, in bits per second.
|
||
* Zero if unknown or unspecified.
|
||
*/
|
||
min_bitrate: s64;
|
||
|
||
/**
|
||
* Average bitrate of the stream, in bits per second.
|
||
* Zero if unknown or unspecified.
|
||
*/
|
||
avg_bitrate: s64;
|
||
|
||
/**
|
||
* The size of the buffer to which the ratecontrol is applied, in bits.
|
||
* Zero if unknown or unspecified.
|
||
*/
|
||
buffer_size: s64;
|
||
|
||
/**
|
||
* The delay between the time the packet this structure is associated with
|
||
* is received and the time when it should be decoded, in periods of a 27MHz
|
||
* clock.
|
||
*
|
||
* UINT64_MAX when unknown or unspecified.
|
||
*/
|
||
vbv_delay: u64;
|
||
}
|
||
|
||
/**
|
||
* Allocate a CPB properties structure and initialize its fields to default
|
||
* values.
|
||
*
|
||
* @param size if non-NULL, the size of the allocated struct will be written
|
||
* here. This is useful for embedding it in side data.
|
||
*
|
||
* @return the newly allocated struct or NULL on failure
|
||
*/
|
||
av_cpb_properties_alloc :: (size: *u64) -> *AVCPBProperties #foreign libavcodec_60;
|
||
|
||
/**
|
||
* This structure supplies correlation between a packet timestamp and a wall clock
|
||
* production time. The definition follows the Producer Reference Time ('prft')
|
||
* as defined in ISO/IEC 14496-12
|
||
*/
|
||
AVProducerReferenceTime :: struct {
|
||
/**
|
||
* A UTC timestamp, in microseconds, since Unix epoch (e.g, av_gettime()).
|
||
*/
|
||
wallclock: s64;
|
||
flags: s32;
|
||
}
|
||
|
||
/**
|
||
* Encode extradata length to a buffer. Used by xiph codecs.
|
||
*
|
||
* @param s buffer to write to; must be at least (v/255+1) bytes long
|
||
* @param v size of extradata in bytes
|
||
* @return number of bytes written to the buffer.
|
||
*/
|
||
av_xiphlacing :: (s: *u8, v: u32) -> u32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* @defgroup lavc_packet AVPacket
|
||
*
|
||
* Types and functions for working with AVPacket.
|
||
* @{
|
||
*/
|
||
AVPacketSideDataType :: enum u32 {
|
||
PALETTE :: 0;
|
||
|
||
NEW_EXTRADATA :: 1;
|
||
|
||
PARAM_CHANGE :: 2;
|
||
|
||
H263_MB_INFO :: 3;
|
||
|
||
REPLAYGAIN :: 4;
|
||
|
||
DISPLAYMATRIX :: 5;
|
||
|
||
STEREO3D :: 6;
|
||
|
||
AUDIO_SERVICE_TYPE :: 7;
|
||
|
||
QUALITY_STATS :: 8;
|
||
|
||
FALLBACK_TRACK :: 9;
|
||
|
||
CPB_PROPERTIES :: 10;
|
||
|
||
SKIP_SAMPLES :: 11;
|
||
|
||
JP_DUALMONO :: 12;
|
||
|
||
STRINGS_METADATA :: 13;
|
||
|
||
SUBTITLE_POSITION :: 14;
|
||
|
||
MATROSKA_BLOCKADDITIONAL :: 15;
|
||
|
||
WEBVTT_IDENTIFIER :: 16;
|
||
|
||
WEBVTT_SETTINGS :: 17;
|
||
|
||
METADATA_UPDATE :: 18;
|
||
|
||
MPEGTS_STREAM_ID :: 19;
|
||
|
||
MASTERING_DISPLAY_METADATA :: 20;
|
||
|
||
SPHERICAL :: 21;
|
||
|
||
CONTENT_LIGHT_LEVEL :: 22;
|
||
|
||
A53_CC :: 23;
|
||
|
||
ENCRYPTION_INIT_INFO :: 24;
|
||
|
||
ENCRYPTION_INFO :: 25;
|
||
|
||
AFD :: 26;
|
||
|
||
PRFT :: 27;
|
||
|
||
ICC_PROFILE :: 28;
|
||
|
||
DOVI_CONF :: 29;
|
||
|
||
S12M_TIMECODE :: 30;
|
||
|
||
DYNAMIC_HDR10_PLUS :: 31;
|
||
|
||
NB :: 32;
|
||
|
||
AV_PKT_DATA_PALETTE :: PALETTE;
|
||
|
||
AV_PKT_DATA_NEW_EXTRADATA :: NEW_EXTRADATA;
|
||
|
||
AV_PKT_DATA_PARAM_CHANGE :: PARAM_CHANGE;
|
||
|
||
AV_PKT_DATA_H263_MB_INFO :: H263_MB_INFO;
|
||
|
||
AV_PKT_DATA_REPLAYGAIN :: REPLAYGAIN;
|
||
|
||
AV_PKT_DATA_DISPLAYMATRIX :: DISPLAYMATRIX;
|
||
|
||
AV_PKT_DATA_STEREO3D :: STEREO3D;
|
||
|
||
AV_PKT_DATA_AUDIO_SERVICE_TYPE :: AUDIO_SERVICE_TYPE;
|
||
|
||
AV_PKT_DATA_QUALITY_STATS :: QUALITY_STATS;
|
||
|
||
AV_PKT_DATA_FALLBACK_TRACK :: FALLBACK_TRACK;
|
||
|
||
AV_PKT_DATA_CPB_PROPERTIES :: CPB_PROPERTIES;
|
||
|
||
AV_PKT_DATA_SKIP_SAMPLES :: SKIP_SAMPLES;
|
||
|
||
AV_PKT_DATA_JP_DUALMONO :: JP_DUALMONO;
|
||
|
||
AV_PKT_DATA_STRINGS_METADATA :: STRINGS_METADATA;
|
||
|
||
AV_PKT_DATA_SUBTITLE_POSITION :: SUBTITLE_POSITION;
|
||
|
||
AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL :: MATROSKA_BLOCKADDITIONAL;
|
||
|
||
AV_PKT_DATA_WEBVTT_IDENTIFIER :: WEBVTT_IDENTIFIER;
|
||
|
||
AV_PKT_DATA_WEBVTT_SETTINGS :: WEBVTT_SETTINGS;
|
||
|
||
AV_PKT_DATA_METADATA_UPDATE :: METADATA_UPDATE;
|
||
|
||
AV_PKT_DATA_MPEGTS_STREAM_ID :: MPEGTS_STREAM_ID;
|
||
|
||
AV_PKT_DATA_MASTERING_DISPLAY_METADATA :: MASTERING_DISPLAY_METADATA;
|
||
|
||
AV_PKT_DATA_SPHERICAL :: SPHERICAL;
|
||
|
||
AV_PKT_DATA_CONTENT_LIGHT_LEVEL :: CONTENT_LIGHT_LEVEL;
|
||
|
||
AV_PKT_DATA_A53_CC :: A53_CC;
|
||
|
||
AV_PKT_DATA_ENCRYPTION_INIT_INFO :: ENCRYPTION_INIT_INFO;
|
||
|
||
AV_PKT_DATA_ENCRYPTION_INFO :: ENCRYPTION_INFO;
|
||
|
||
AV_PKT_DATA_AFD :: AFD;
|
||
|
||
AV_PKT_DATA_PRFT :: PRFT;
|
||
|
||
AV_PKT_DATA_ICC_PROFILE :: ICC_PROFILE;
|
||
|
||
AV_PKT_DATA_DOVI_CONF :: DOVI_CONF;
|
||
|
||
AV_PKT_DATA_S12M_TIMECODE :: S12M_TIMECODE;
|
||
|
||
AV_PKT_DATA_DYNAMIC_HDR10_PLUS :: DYNAMIC_HDR10_PLUS;
|
||
|
||
AV_PKT_DATA_NB :: NB;
|
||
}
|
||
|
||
AVPacketSideData :: struct {
|
||
data: *u8;
|
||
size: u64;
|
||
type: AVPacketSideDataType;
|
||
}
|
||
|
||
/**
|
||
* This structure stores compressed data. It is typically exported by demuxers
|
||
* and then passed as input to decoders, or received as output from encoders and
|
||
* then passed to muxers.
|
||
*
|
||
* For video, it should typically contain one compressed frame. For audio it may
|
||
* contain several compressed frames. Encoders are allowed to output empty
|
||
* packets, with no compressed data, containing only side data
|
||
* (e.g. to update some stream parameters at the end of encoding).
|
||
*
|
||
* The semantics of data ownership depends on the buf field.
|
||
* If it is set, the packet data is dynamically allocated and is
|
||
* valid indefinitely until a call to av_packet_unref() reduces the
|
||
* reference count to 0.
|
||
*
|
||
* If the buf field is not set av_packet_ref() would make a copy instead
|
||
* of increasing the reference count.
|
||
*
|
||
* The side data is always allocated with av_malloc(), copied by
|
||
* av_packet_ref() and freed by av_packet_unref().
|
||
*
|
||
* sizeof(AVPacket) being a part of the public ABI is deprecated. once
|
||
* av_init_packet() is removed, new packets will only be able to be allocated
|
||
* with av_packet_alloc(), and new fields may be added to the end of the struct
|
||
* with a minor bump.
|
||
*
|
||
* @see av_packet_alloc
|
||
* @see av_packet_ref
|
||
* @see av_packet_unref
|
||
*/
|
||
AVPacket :: struct {
|
||
/**
|
||
* A reference to the reference-counted buffer where the packet data is
|
||
* stored.
|
||
* May be NULL, then the packet data is not reference-counted.
|
||
*/
|
||
buf: *AVBufferRef;
|
||
|
||
/**
|
||
* Presentation timestamp in AVStream->time_base units; the time at which
|
||
* the decompressed packet will be presented to the user.
|
||
* Can be AV_NOPTS_VALUE if it is not stored in the file.
|
||
* pts MUST be larger or equal to dts as presentation cannot happen before
|
||
* decompression, unless one wants to view hex dumps. Some formats misuse
|
||
* the terms dts and pts/cts to mean something different. Such timestamps
|
||
* must be converted to true pts/dts before they are stored in AVPacket.
|
||
*/
|
||
pts: s64;
|
||
|
||
/**
|
||
* Decompression timestamp in AVStream->time_base units; the time at which
|
||
* the packet is decompressed.
|
||
* Can be AV_NOPTS_VALUE if it is not stored in the file.
|
||
*/
|
||
dts: s64;
|
||
data: *u8;
|
||
size: s32;
|
||
stream_index: s32;
|
||
|
||
/**
|
||
* A combination of AV_PKT_FLAG values
|
||
*/
|
||
flags: s32;
|
||
|
||
/**
|
||
* Additional packet data that can be provided by the container.
|
||
* Packet can contain several types of side information.
|
||
*/
|
||
side_data: *AVPacketSideData;
|
||
side_data_elems: s32;
|
||
|
||
/**
|
||
* Duration of this packet in AVStream->time_base units, 0 if unknown.
|
||
* Equals next_pts - this_pts in presentation order.
|
||
*/
|
||
duration: s64;
|
||
|
||
pos: s64; ///< byte position in stream, -1 if unknown
|
||
|
||
/**
|
||
* for some private data of the user
|
||
*/
|
||
opaque: *void;
|
||
|
||
/**
|
||
* AVBufferRef for free use by the API user. FFmpeg will never check the
|
||
* contents of the buffer ref. FFmpeg calls av_buffer_unref() on it when
|
||
* the packet is unreferenced. av_packet_copy_props() calls create a new
|
||
* reference with av_buffer_ref() for the target packet's opaque_ref field.
|
||
*
|
||
* This is unrelated to the opaque field, although it serves a similar
|
||
* purpose.
|
||
*/
|
||
opaque_ref: *AVBufferRef;
|
||
|
||
/**
|
||
* Time base of the packet's timestamps.
|
||
* In the future, this field may be set on packets output by encoders or
|
||
* demuxers, but its value will be by default ignored on input to decoders
|
||
* or muxers.
|
||
*/
|
||
time_base: AVRational;
|
||
}
|
||
|
||
AVPacketList :: struct {
|
||
pkt: AVPacket;
|
||
next: *AVPacketList;
|
||
}
|
||
|
||
AVSideDataParamChangeFlags :: enum u32 {
|
||
CHANNEL_COUNT :: 1;
|
||
CHANNEL_LAYOUT :: 2;
|
||
|
||
SAMPLE_RATE :: 4;
|
||
DIMENSIONS :: 8;
|
||
|
||
AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT :: CHANNEL_COUNT;
|
||
AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT :: CHANNEL_LAYOUT;
|
||
|
||
AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE :: SAMPLE_RATE;
|
||
AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS :: DIMENSIONS;
|
||
}
|
||
|
||
/**
|
||
* Allocate an AVPacket and set its fields to default values. The resulting
|
||
* struct must be freed using av_packet_free().
|
||
*
|
||
* @return An AVPacket filled with default values or NULL on failure.
|
||
*
|
||
* @note this only allocates the AVPacket itself, not the data buffers. Those
|
||
* must be allocated through other means such as av_new_packet.
|
||
*
|
||
* @see av_new_packet
|
||
*/
|
||
av_packet_alloc :: () -> *AVPacket #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Create a new packet that references the same data as src.
|
||
*
|
||
* This is a shortcut for av_packet_alloc()+av_packet_ref().
|
||
*
|
||
* @return newly created AVPacket on success, NULL on error.
|
||
*
|
||
* @see av_packet_alloc
|
||
* @see av_packet_ref
|
||
*/
|
||
av_packet_clone :: (src: *AVPacket) -> *AVPacket #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Free the packet, if the packet is reference counted, it will be
|
||
* unreferenced first.
|
||
*
|
||
* @param pkt packet to be freed. The pointer will be set to NULL.
|
||
* @note passing NULL is a no-op.
|
||
*/
|
||
av_packet_free :: (pkt: **AVPacket) -> void #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Initialize optional fields of a packet with default values.
|
||
*
|
||
* Note, this does not touch the data and size members, which have to be
|
||
* initialized separately.
|
||
*
|
||
* @param pkt packet
|
||
*
|
||
* @see av_packet_alloc
|
||
* @see av_packet_unref
|
||
*
|
||
* @deprecated This function is deprecated. Once it's removed,
|
||
sizeof(AVPacket) will not be a part of the ABI anymore.
|
||
*/
|
||
av_init_packet :: (pkt: *AVPacket) -> void #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Allocate the payload of a packet and initialize its fields with
|
||
* default values.
|
||
*
|
||
* @param pkt packet
|
||
* @param size wanted payload size
|
||
* @return 0 if OK, AVERROR_xxx otherwise
|
||
*/
|
||
av_new_packet :: (pkt: *AVPacket, size: s32) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Reduce packet size, correctly zeroing padding
|
||
*
|
||
* @param pkt packet
|
||
* @param size new size
|
||
*/
|
||
av_shrink_packet :: (pkt: *AVPacket, size: s32) -> void #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Increase packet size, correctly zeroing padding
|
||
*
|
||
* @param pkt packet
|
||
* @param grow_by number of bytes by which to increase the size of the packet
|
||
*/
|
||
av_grow_packet :: (pkt: *AVPacket, grow_by: s32) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Initialize a reference-counted packet from av_malloc()ed data.
|
||
*
|
||
* @param pkt packet to be initialized. This function will set the data, size,
|
||
* and buf fields, all others are left untouched.
|
||
* @param data Data allocated by av_malloc() to be used as packet data. If this
|
||
* function returns successfully, the data is owned by the underlying AVBuffer.
|
||
* The caller may not access the data through other means.
|
||
* @param size size of data in bytes, without the padding. I.e. the full buffer
|
||
* size is assumed to be size + AV_INPUT_BUFFER_PADDING_SIZE.
|
||
*
|
||
* @return 0 on success, a negative AVERROR on error
|
||
*/
|
||
av_packet_from_data :: (pkt: *AVPacket, data: *u8, size: s32) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Allocate new information of a packet.
|
||
*
|
||
* @param pkt packet
|
||
* @param type side information type
|
||
* @param size side information size
|
||
* @return pointer to fresh allocated data or NULL otherwise
|
||
*/
|
||
av_packet_new_side_data :: (pkt: *AVPacket, type: AVPacketSideDataType, size: u64) -> *u8 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Wrap an existing array as a packet side data.
|
||
*
|
||
* @param pkt packet
|
||
* @param type side information type
|
||
* @param data the side data array. It must be allocated with the av_malloc()
|
||
* family of functions. The ownership of the data is transferred to
|
||
* pkt.
|
||
* @param size side information size
|
||
* @return a non-negative number on success, a negative AVERROR code on
|
||
* failure. On failure, the packet is unchanged and the data remains
|
||
* owned by the caller.
|
||
*/
|
||
av_packet_add_side_data :: (pkt: *AVPacket, type: AVPacketSideDataType, data: *u8, size: u64) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Shrink the already allocated side data buffer
|
||
*
|
||
* @param pkt packet
|
||
* @param type side information type
|
||
* @param size new side information size
|
||
* @return 0 on success, < 0 on failure
|
||
*/
|
||
av_packet_shrink_side_data :: (pkt: *AVPacket, type: AVPacketSideDataType, size: u64) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Get side information from packet.
|
||
*
|
||
* @param pkt packet
|
||
* @param type desired side information type
|
||
* @param size If supplied, *size will be set to the size of the side data
|
||
* or to zero if the desired side data is not present.
|
||
* @return pointer to data if present or NULL otherwise
|
||
*/
|
||
av_packet_get_side_data :: (pkt: *AVPacket, type: AVPacketSideDataType, size: *u64) -> *u8 #foreign libavcodec_60;
|
||
|
||
av_packet_side_data_name :: (type: AVPacketSideDataType) -> *u8 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Pack a dictionary for use in side_data.
|
||
*
|
||
* @param dict The dictionary to pack.
|
||
* @param size pointer to store the size of the returned data
|
||
* @return pointer to data if successful, NULL otherwise
|
||
*/
|
||
av_packet_pack_dictionary :: (dict: *AVDictionary, size: *u64) -> *u8 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Unpack a dictionary from side_data.
|
||
*
|
||
* @param data data from side_data
|
||
* @param size size of the data
|
||
* @param dict the metadata storage dictionary
|
||
* @return 0 on success, < 0 on failure
|
||
*/
|
||
av_packet_unpack_dictionary :: (data: *u8, size: u64, dict: **AVDictionary) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Convenience function to free all the side data stored.
|
||
* All the other fields stay untouched.
|
||
*
|
||
* @param pkt packet
|
||
*/
|
||
av_packet_free_side_data :: (pkt: *AVPacket) -> void #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Setup a new reference to the data described by a given packet
|
||
*
|
||
* If src is reference-counted, setup dst as a new reference to the
|
||
* buffer in src. Otherwise allocate a new buffer in dst and copy the
|
||
* data from src into it.
|
||
*
|
||
* All the other fields are copied from src.
|
||
*
|
||
* @see av_packet_unref
|
||
*
|
||
* @param dst Destination packet. Will be completely overwritten.
|
||
* @param src Source packet
|
||
*
|
||
* @return 0 on success, a negative AVERROR on error. On error, dst
|
||
* will be blank (as if returned by av_packet_alloc()).
|
||
*/
|
||
av_packet_ref :: (dst: *AVPacket, src: *AVPacket) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Wipe the packet.
|
||
*
|
||
* Unreference the buffer referenced by the packet and reset the
|
||
* remaining packet fields to their default values.
|
||
*
|
||
* @param pkt The packet to be unreferenced.
|
||
*/
|
||
av_packet_unref :: (pkt: *AVPacket) -> void #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Move every field in src to dst and reset src.
|
||
*
|
||
* @see av_packet_unref
|
||
*
|
||
* @param src Source packet, will be reset
|
||
* @param dst Destination packet
|
||
*/
|
||
av_packet_move_ref :: (dst: *AVPacket, src: *AVPacket) -> void #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Copy only "properties" fields from src to dst.
|
||
*
|
||
* Properties for the purpose of this function are all the fields
|
||
* beside those related to the packet data (buf, data, size)
|
||
*
|
||
* @param dst Destination packet
|
||
* @param src Source packet
|
||
*
|
||
* @return 0 on success AVERROR on failure.
|
||
*/
|
||
av_packet_copy_props :: (dst: *AVPacket, src: *AVPacket) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Ensure the data described by a given packet is reference counted.
|
||
*
|
||
* @note This function does not ensure that the reference will be writable.
|
||
* Use av_packet_make_writable instead for that purpose.
|
||
*
|
||
* @see av_packet_ref
|
||
* @see av_packet_make_writable
|
||
*
|
||
* @param pkt packet whose data should be made reference counted.
|
||
*
|
||
* @return 0 on success, a negative AVERROR on error. On failure, the
|
||
* packet is unchanged.
|
||
*/
|
||
av_packet_make_refcounted :: (pkt: *AVPacket) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Create a writable reference for the data described by a given packet,
|
||
* avoiding data copy if possible.
|
||
*
|
||
* @param pkt Packet whose data should be made writable.
|
||
*
|
||
* @return 0 on success, a negative AVERROR on failure. On failure, the
|
||
* packet is unchanged.
|
||
*/
|
||
av_packet_make_writable :: (pkt: *AVPacket) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Convert valid timing fields (timestamps / durations) in a packet from one
|
||
* timebase to another. Timestamps with unknown values (AV_NOPTS_VALUE) will be
|
||
* ignored.
|
||
*
|
||
* @param pkt packet on which the conversion will be performed
|
||
* @param tb_src source timebase, in which the timing fields in pkt are
|
||
* expressed
|
||
* @param tb_dst destination timebase, to which the timing fields will be
|
||
* converted
|
||
*/
|
||
av_packet_rescale_ts :: (pkt: *AVPacket, tb_src: AVRational, tb_dst: AVRational) -> void #foreign libavcodec_60;
|
||
|
||
/**
|
||
* @ingroup lavc_encoding
|
||
*/
|
||
RcOverride :: struct {
|
||
start_frame: s32;
|
||
end_frame: s32;
|
||
qscale: s32; // If this is 0 then quality_factor will be used instead.
|
||
quality_factor: float;
|
||
}
|
||
|
||
AVCodecInternal :: struct {}
|
||
|
||
/**
|
||
* main external API structure.
|
||
* New fields can be added to the end with minor version bumps.
|
||
* Removal, reordering and changes to existing fields require a major
|
||
* version bump.
|
||
* You can use AVOptions (av_opt* / av_set/get*()) to access these fields from user
|
||
* applications.
|
||
* The name string for AVOptions options matches the associated command line
|
||
* parameter name and can be found in libavcodec/options_table.h
|
||
* The AVOption/command line parameter names differ in some cases from the C
|
||
* structure field names for historic reasons or brevity.
|
||
* sizeof(AVCodecContext) must not be used outside libav*.
|
||
*/
|
||
AVCodecContext :: struct #type_info_none {
|
||
/**
|
||
* information on struct for av_log
|
||
* - set by avcodec_alloc_context3
|
||
*/
|
||
av_class: *AVClass;
|
||
log_level_offset: s32;
|
||
|
||
codec_type: AVMediaType; /* see AVMEDIA_TYPE_xxx */
|
||
codec: *AVCodec;
|
||
codec_id: AVCodecID; /* see AV_CODEC_ID_xxx */
|
||
|
||
/**
|
||
* fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').
|
||
* This is used to work around some encoder bugs.
|
||
* A demuxer should set this to what is stored in the field used to identify the codec.
|
||
* If there are multiple such fields in a container then the demuxer should choose the one
|
||
* which maximizes the information about the used codec.
|
||
* If the codec tag field in a container is larger than 32 bits then the demuxer should
|
||
* remap the longer ID to 32 bits with a table or other structure. Alternatively a new
|
||
* extra_codec_tag + size could be added but for this a clear advantage must be demonstrated
|
||
* first.
|
||
* - encoding: Set by user, if not then the default based on codec_id will be used.
|
||
* - decoding: Set by user, will be converted to uppercase by libavcodec during init.
|
||
*/
|
||
codec_tag: u32;
|
||
|
||
priv_data: *void;
|
||
|
||
/**
|
||
* Private context used for internal data.
|
||
*
|
||
* Unlike priv_data, this is not codec-specific. It is used in general
|
||
* libavcodec functions.
|
||
*/
|
||
internal: *AVCodecInternal;
|
||
|
||
/**
|
||
* Private data of the user, can be used to carry app specific stuff.
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by user.
|
||
*/
|
||
opaque: *void;
|
||
|
||
/**
|
||
* the average bitrate
|
||
* - encoding: Set by user; unused for constant quantizer encoding.
|
||
* - decoding: Set by user, may be overwritten by libavcodec
|
||
* if this info is available in the stream
|
||
*/
|
||
bit_rate: s64;
|
||
|
||
/**
|
||
* number of bits the bitstream is allowed to diverge from the reference.
|
||
* the reference can be CBR (for CBR pass1) or VBR (for pass2)
|
||
* - encoding: Set by user; unused for constant quantizer encoding.
|
||
* - decoding: unused
|
||
*/
|
||
bit_rate_tolerance: s32;
|
||
|
||
/**
|
||
* Global quality for codecs which cannot change it per frame.
|
||
* This should be proportional to MPEG-1/2/4 qscale.
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
global_quality: s32;
|
||
|
||
/**
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
compression_level: s32;
|
||
|
||
/**
|
||
* AV_CODEC_FLAG_*.
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by user.
|
||
*/
|
||
flags: s32;
|
||
|
||
/**
|
||
* AV_CODEC_FLAG2_*
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by user.
|
||
*/
|
||
flags2: s32;
|
||
|
||
/**
|
||
* some codecs need / can use extradata like Huffman tables.
|
||
* MJPEG: Huffman tables
|
||
* rv10: additional flags
|
||
* MPEG-4: global headers (they can be in the bitstream or here)
|
||
* The allocated memory should be AV_INPUT_BUFFER_PADDING_SIZE bytes larger
|
||
* than extradata_size to avoid problems if it is read with the bitstream reader.
|
||
* The bytewise contents of extradata must not depend on the architecture or CPU endianness.
|
||
* Must be allocated with the av_malloc() family of functions.
|
||
* - encoding: Set/allocated/freed by libavcodec.
|
||
* - decoding: Set/allocated/freed by user.
|
||
*/
|
||
extradata: *u8;
|
||
extradata_size: s32;
|
||
|
||
/**
|
||
* This is the fundamental unit of time (in seconds) in terms
|
||
* of which frame timestamps are represented. For fixed-fps content,
|
||
* timebase should be 1/framerate and timestamp increments should be
|
||
* identically 1.
|
||
* This often, but not always is the inverse of the frame rate or field rate
|
||
* for video. 1/time_base is not the average frame rate if the frame rate is not
|
||
* constant.
|
||
*
|
||
* Like containers, elementary streams also can store timestamps, 1/time_base
|
||
* is the unit in which these timestamps are specified.
|
||
* As example of such codec time base see ISO/IEC 14496-2:2001(E)
|
||
* vop_time_increment_resolution and fixed_vop_rate
|
||
* (fixed_vop_rate == 0 implies that it is different from the framerate)
|
||
*
|
||
* - encoding: MUST be set by user.
|
||
* - decoding: unused.
|
||
*/
|
||
time_base: AVRational;
|
||
|
||
/**
|
||
* For some codecs, the time base is closer to the field rate than the frame rate.
|
||
* Most notably, H.264 and MPEG-2 specify time_base as half of frame duration
|
||
* if no telecine is used ...
|
||
*
|
||
* Set to time_base ticks per frame. Default 1, e.g., H.264/MPEG-2 set it to 2.
|
||
*/
|
||
ticks_per_frame: s32;
|
||
|
||
/**
|
||
* Codec delay.
|
||
*
|
||
* Encoding: Number of frames delay there will be from the encoder input to
|
||
* the decoder output. (we assume the decoder matches the spec)
|
||
* Decoding: Number of frames delay in addition to what a standard decoder
|
||
* as specified in the spec would produce.
|
||
*
|
||
* Video:
|
||
* Number of frames the decoded output will be delayed relative to the
|
||
* encoded input.
|
||
*
|
||
* Audio:
|
||
* For encoding, this field is unused (see initial_padding).
|
||
*
|
||
* For decoding, this is the number of samples the decoder needs to
|
||
* output before the decoder's output is valid. When seeking, you should
|
||
* start decoding this many samples prior to your desired seek point.
|
||
*
|
||
* - encoding: Set by libavcodec.
|
||
* - decoding: Set by libavcodec.
|
||
*/
|
||
delay: s32;
|
||
|
||
/* video only */
|
||
/**
|
||
* picture width / height.
|
||
*
|
||
* @note Those fields may not match the values of the last
|
||
* AVFrame output by avcodec_receive_frame() due frame
|
||
* reordering.
|
||
*
|
||
* - encoding: MUST be set by user.
|
||
* - decoding: May be set by the user before opening the decoder if known e.g.
|
||
* from the container. Some decoders will require the dimensions
|
||
* to be set by the caller. During decoding, the decoder may
|
||
* overwrite those values as required while parsing the data.
|
||
*/
|
||
width: s32;
|
||
/* video only */
|
||
/**
|
||
* picture width / height.
|
||
*
|
||
* @note Those fields may not match the values of the last
|
||
* AVFrame output by avcodec_receive_frame() due frame
|
||
* reordering.
|
||
*
|
||
* - encoding: MUST be set by user.
|
||
* - decoding: May be set by the user before opening the decoder if known e.g.
|
||
* from the container. Some decoders will require the dimensions
|
||
* to be set by the caller. During decoding, the decoder may
|
||
* overwrite those values as required while parsing the data.
|
||
*/
|
||
height: s32;
|
||
|
||
/**
|
||
* Bitstream width / height, may be different from width/height e.g. when
|
||
* the decoded frame is cropped before being output or lowres is enabled.
|
||
*
|
||
* @note Those field may not match the value of the last
|
||
* AVFrame output by avcodec_receive_frame() due frame
|
||
* reordering.
|
||
*
|
||
* - encoding: unused
|
||
* - decoding: May be set by the user before opening the decoder if known
|
||
* e.g. from the container. During decoding, the decoder may
|
||
* overwrite those values as required while parsing the data.
|
||
*/
|
||
coded_width: s32;
|
||
/**
|
||
* Bitstream width / height, may be different from width/height e.g. when
|
||
* the decoded frame is cropped before being output or lowres is enabled.
|
||
*
|
||
* @note Those field may not match the value of the last
|
||
* AVFrame output by avcodec_receive_frame() due frame
|
||
* reordering.
|
||
*
|
||
* - encoding: unused
|
||
* - decoding: May be set by the user before opening the decoder if known
|
||
* e.g. from the container. During decoding, the decoder may
|
||
* overwrite those values as required while parsing the data.
|
||
*/
|
||
coded_height: s32;
|
||
|
||
/**
|
||
* the number of pictures in a group of pictures, or 0 for intra_only
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
gop_size: s32;
|
||
|
||
/**
|
||
* Pixel format, see AV_PIX_FMT_xxx.
|
||
* May be set by the demuxer if known from headers.
|
||
* May be overridden by the decoder if it knows better.
|
||
*
|
||
* @note This field may not match the value of the last
|
||
* AVFrame output by avcodec_receive_frame() due frame
|
||
* reordering.
|
||
*
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by user if known, overridden by libavcodec while
|
||
* parsing the data.
|
||
*/
|
||
pix_fmt: AVPixelFormat;
|
||
|
||
/**
|
||
* If non NULL, 'draw_horiz_band' is called by the libavcodec
|
||
* decoder to draw a horizontal band. It improves cache usage. Not
|
||
* all codecs can do that. You must check the codec capabilities
|
||
* beforehand.
|
||
* When multithreading is used, it may be called from multiple threads
|
||
* at the same time; threads might draw different parts of the same AVFrame,
|
||
* or multiple AVFrames, and there is no guarantee that slices will be drawn
|
||
* in order.
|
||
* The function is also used by hardware acceleration APIs.
|
||
* It is called at least once during frame decoding to pass
|
||
* the data needed for hardware render.
|
||
* In that mode instead of pixel data, AVFrame points to
|
||
* a structure specific to the acceleration API. The application
|
||
* reads the structure and can change some fields to indicate progress
|
||
* or mark state.
|
||
* - encoding: unused
|
||
* - decoding: Set by user.
|
||
* @param height the height of the slice
|
||
* @param y the y position of the slice
|
||
* @param type 1->top field, 2->bottom field, 3->frame
|
||
* @param offset offset into the AVFrame.data from which the slice should be read
|
||
*/
|
||
draw_horiz_band: #type (s: *AVCodecContext, src: *AVFrame, offset: *[8] s32, y: s32, type: s32, height: s32) -> void #c_call;
|
||
|
||
/**
|
||
* Callback to negotiate the pixel format. Decoding only, may be set by the
|
||
* caller before avcodec_open2().
|
||
*
|
||
* Called by some decoders to select the pixel format that will be used for
|
||
* the output frames. This is mainly used to set up hardware acceleration,
|
||
* then the provided format list contains the corresponding hwaccel pixel
|
||
* formats alongside the "software" one. The software pixel format may also
|
||
* be retrieved from \ref sw_pix_fmt.
|
||
*
|
||
* This callback will be called when the coded frame properties (such as
|
||
* resolution, pixel format, etc.) change and more than one output format is
|
||
* supported for those new properties. If a hardware pixel format is chosen
|
||
* and initialization for it fails, the callback may be called again
|
||
* immediately.
|
||
*
|
||
* This callback may be called from different threads if the decoder is
|
||
* multi-threaded, but not from more than one thread simultaneously.
|
||
*
|
||
* @param fmt list of formats which may be used in the current
|
||
* configuration, terminated by AV_PIX_FMT_NONE.
|
||
* @warning Behavior is undefined if the callback returns a value other
|
||
* than one of the formats in fmt or AV_PIX_FMT_NONE.
|
||
* @return the chosen format or AV_PIX_FMT_NONE
|
||
*/
|
||
get_format: #type (s: *AVCodecContext, fmt: *AVPixelFormat) -> AVPixelFormat #c_call;
|
||
|
||
/**
|
||
* maximum number of B-frames between non-B-frames
|
||
* Note: The output will be delayed by max_b_frames+1 relative to the input.
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
max_b_frames: s32;
|
||
|
||
/**
|
||
* qscale factor between IP and B-frames
|
||
* If > 0 then the last P-frame quantizer will be used (q= lastp_q*factor+offset).
|
||
* If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset).
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
b_quant_factor: float;
|
||
|
||
/**
|
||
* qscale offset between IP and B-frames
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
b_quant_offset: float;
|
||
|
||
/**
|
||
* Size of the frame reordering buffer in the decoder.
|
||
* For MPEG-2 it is 1 IPB or 0 low delay IP.
|
||
* - encoding: Set by libavcodec.
|
||
* - decoding: Set by libavcodec.
|
||
*/
|
||
has_b_frames: s32;
|
||
|
||
/**
|
||
* qscale factor between P- and I-frames
|
||
* If > 0 then the last P-frame quantizer will be used (q = lastp_q * factor + offset).
|
||
* If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset).
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
i_quant_factor: float;
|
||
|
||
/**
|
||
* qscale offset between P and I-frames
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
i_quant_offset: float;
|
||
|
||
/**
|
||
* luminance masking (0-> disabled)
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
lumi_masking: float;
|
||
|
||
/**
|
||
* temporary complexity masking (0-> disabled)
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
temporal_cplx_masking: float;
|
||
|
||
/**
|
||
* spatial complexity masking (0-> disabled)
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
spatial_cplx_masking: float;
|
||
|
||
/**
|
||
* p block masking (0-> disabled)
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
p_masking: float;
|
||
|
||
/**
|
||
* darkness masking (0-> disabled)
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
dark_masking: float;
|
||
|
||
/**
|
||
* slice count
|
||
* - encoding: Set by libavcodec.
|
||
* - decoding: Set by user (or 0).
|
||
*/
|
||
slice_count: s32;
|
||
|
||
/**
|
||
* slice offsets in the frame in bytes
|
||
* - encoding: Set/allocated by libavcodec.
|
||
* - decoding: Set/allocated by user (or NULL).
|
||
*/
|
||
slice_offset: *s32;
|
||
|
||
/**
|
||
* sample aspect ratio (0 if unknown)
|
||
* That is the width of a pixel divided by the height of the pixel.
|
||
* Numerator and denominator must be relatively prime and smaller than 256 for some video standards.
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by libavcodec.
|
||
*/
|
||
sample_aspect_ratio: AVRational;
|
||
|
||
/**
|
||
* motion estimation comparison function
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
me_cmp: s32;
|
||
|
||
/**
|
||
* subpixel motion estimation comparison function
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
me_sub_cmp: s32;
|
||
|
||
/**
|
||
* macroblock comparison function (not supported yet)
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
mb_cmp: s32;
|
||
|
||
/**
|
||
* interlaced DCT comparison function
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
ildct_cmp: s32;
|
||
|
||
/**
|
||
* ME diamond size & shape
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
dia_size: s32;
|
||
|
||
/**
|
||
* amount of previous MV predictors (2a+1 x 2a+1 square)
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
last_predictor_count: s32;
|
||
|
||
/**
|
||
* motion estimation prepass comparison function
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
me_pre_cmp: s32;
|
||
|
||
/**
|
||
* ME prepass diamond size & shape
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
pre_dia_size: s32;
|
||
|
||
/**
|
||
* subpel ME quality
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
me_subpel_quality: s32;
|
||
|
||
/**
|
||
* maximum motion estimation search range in subpel units
|
||
* If 0 then no limit.
|
||
*
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
me_range: s32;
|
||
|
||
/**
|
||
* slice flags
|
||
* - encoding: unused
|
||
* - decoding: Set by user.
|
||
*/
|
||
slice_flags: s32;
|
||
|
||
/**
|
||
* macroblock decision mode
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
mb_decision: s32;
|
||
|
||
/**
|
||
* custom intra quantization matrix
|
||
* Must be allocated with the av_malloc() family of functions, and will be freed in
|
||
* avcodec_free_context().
|
||
* - encoding: Set/allocated by user, freed by libavcodec. Can be NULL.
|
||
* - decoding: Set/allocated/freed by libavcodec.
|
||
*/
|
||
intra_matrix: *u16;
|
||
|
||
/**
|
||
* custom inter quantization matrix
|
||
* Must be allocated with the av_malloc() family of functions, and will be freed in
|
||
* avcodec_free_context().
|
||
* - encoding: Set/allocated by user, freed by libavcodec. Can be NULL.
|
||
* - decoding: Set/allocated/freed by libavcodec.
|
||
*/
|
||
inter_matrix: *u16;
|
||
|
||
/**
|
||
* precision of the intra DC coefficient - 8
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by libavcodec
|
||
*/
|
||
intra_dc_precision: s32;
|
||
|
||
/**
|
||
* Number of macroblock rows at the top which are skipped.
|
||
* - encoding: unused
|
||
* - decoding: Set by user.
|
||
*/
|
||
skip_top: s32;
|
||
|
||
/**
|
||
* Number of macroblock rows at the bottom which are skipped.
|
||
* - encoding: unused
|
||
* - decoding: Set by user.
|
||
*/
|
||
skip_bottom: s32;
|
||
|
||
/**
|
||
* minimum MB Lagrange multiplier
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
mb_lmin: s32;
|
||
|
||
/**
|
||
* maximum MB Lagrange multiplier
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
mb_lmax: s32;
|
||
|
||
/**
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
bidir_refine: s32;
|
||
|
||
/**
|
||
* minimum GOP size
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
keyint_min: s32;
|
||
|
||
/**
|
||
* number of reference frames
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by lavc.
|
||
*/
|
||
refs: s32;
|
||
|
||
/**
|
||
* Note: Value depends upon the compare function used for fullpel ME.
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
mv0_threshold: s32;
|
||
|
||
/**
|
||
* Chromaticity coordinates of the source primaries.
|
||
* - encoding: Set by user
|
||
* - decoding: Set by libavcodec
|
||
*/
|
||
color_primaries: AVColorPrimaries;
|
||
|
||
/**
|
||
* Color Transfer Characteristic.
|
||
* - encoding: Set by user
|
||
* - decoding: Set by libavcodec
|
||
*/
|
||
color_trc: AVColorTransferCharacteristic;
|
||
|
||
/**
|
||
* YUV colorspace type.
|
||
* - encoding: Set by user
|
||
* - decoding: Set by libavcodec
|
||
*/
|
||
colorspace: AVColorSpace;
|
||
|
||
/**
|
||
* MPEG vs JPEG YUV range.
|
||
* - encoding: Set by user
|
||
* - decoding: Set by libavcodec
|
||
*/
|
||
color_range: AVColorRange;
|
||
|
||
/**
|
||
* This defines the location of chroma samples.
|
||
* - encoding: Set by user
|
||
* - decoding: Set by libavcodec
|
||
*/
|
||
chroma_sample_location: AVChromaLocation;
|
||
|
||
/**
|
||
* Number of slices.
|
||
* Indicates number of picture subdivisions. Used for parallelized
|
||
* decoding.
|
||
* - encoding: Set by user
|
||
* - decoding: unused
|
||
*/
|
||
slices: s32;
|
||
|
||
/** Field order
|
||
* - encoding: set by libavcodec
|
||
* - decoding: Set by user.
|
||
*/
|
||
field_order: AVFieldOrder;
|
||
|
||
sample_rate: s32; ///< samples per second
|
||
|
||
/**
|
||
* number of audio channels
|
||
* @deprecated use ch_layout.nb_channels
|
||
*/
|
||
channels: s32;
|
||
|
||
sample_fmt: AVSampleFormat; ///< sample format
|
||
|
||
/* The following data should not be initialized. */
|
||
/**
|
||
* Number of samples per channel in an audio frame.
|
||
*
|
||
* - encoding: set by libavcodec in avcodec_open2(). Each submitted frame
|
||
* except the last must contain exactly frame_size samples per channel.
|
||
* May be 0 when the codec has AV_CODEC_CAP_VARIABLE_FRAME_SIZE set, then the
|
||
* frame size is not restricted.
|
||
* - decoding: may be set by some decoders to indicate constant frame size
|
||
*/
|
||
frame_size: s32;
|
||
|
||
/**
|
||
* Frame counter, set by libavcodec.
|
||
*
|
||
* - decoding: total number of frames returned from the decoder so far.
|
||
* - encoding: total number of frames passed to the encoder so far.
|
||
*
|
||
* @note the counter is not incremented if encoding/decoding resulted in
|
||
* an error.
|
||
* @deprecated use frame_num instead
|
||
*/
|
||
frame_number: s32;
|
||
|
||
/**
|
||
* number of bytes per packet if constant and known or 0
|
||
* Used by some WAV based audio codecs.
|
||
*/
|
||
block_align: s32;
|
||
|
||
/**
|
||
* Audio cutoff bandwidth (0 means "automatic")
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
cutoff: s32;
|
||
|
||
/**
|
||
* Audio channel layout.
|
||
* - encoding: set by user.
|
||
* - decoding: set by user, may be overwritten by libavcodec.
|
||
* @deprecated use ch_layout
|
||
*/
|
||
channel_layout: u64;
|
||
|
||
/**
|
||
* Request decoder to use this channel layout if it can (0 for default)
|
||
* - encoding: unused
|
||
* - decoding: Set by user.
|
||
* @deprecated use "downmix" codec private option
|
||
*/
|
||
request_channel_layout: u64;
|
||
|
||
/**
|
||
* Type of service that the audio stream conveys.
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by libavcodec.
|
||
*/
|
||
audio_service_type: AVAudioServiceType;
|
||
|
||
/**
|
||
* desired sample format
|
||
* - encoding: Not used.
|
||
* - decoding: Set by user.
|
||
* Decoder will decode to this format if it can.
|
||
*/
|
||
request_sample_fmt: AVSampleFormat;
|
||
|
||
/**
|
||
* This callback is called at the beginning of each frame to get data
|
||
* buffer(s) for it. There may be one contiguous buffer for all the data or
|
||
* there may be a buffer per each data plane or anything in between. What
|
||
* this means is, you may set however many entries in buf[] you feel necessary.
|
||
* Each buffer must be reference-counted using the AVBuffer API (see description
|
||
* of buf[] below).
|
||
*
|
||
* The following fields will be set in the frame before this callback is
|
||
* called:
|
||
* - format
|
||
* - width, height (video only)
|
||
* - sample_rate, channel_layout, nb_samples (audio only)
|
||
* Their values may differ from the corresponding values in
|
||
* AVCodecContext. This callback must use the frame values, not the codec
|
||
* context values, to calculate the required buffer size.
|
||
*
|
||
* This callback must fill the following fields in the frame:
|
||
* - data[]
|
||
* - linesize[]
|
||
* - extended_data:
|
||
* * if the data is planar audio with more than 8 channels, then this
|
||
* callback must allocate and fill extended_data to contain all pointers
|
||
* to all data planes. data[] must hold as many pointers as it can.
|
||
* extended_data must be allocated with av_malloc() and will be freed in
|
||
* av_frame_unref().
|
||
* * otherwise extended_data must point to data
|
||
* - buf[] must contain one or more pointers to AVBufferRef structures. Each of
|
||
* the frame's data and extended_data pointers must be contained in these. That
|
||
* is, one AVBufferRef for each allocated chunk of memory, not necessarily one
|
||
* AVBufferRef per data[] entry. See: av_buffer_create(), av_buffer_alloc(),
|
||
* and av_buffer_ref().
|
||
* - extended_buf and nb_extended_buf must be allocated with av_malloc() by
|
||
* this callback and filled with the extra buffers if there are more
|
||
* buffers than buf[] can hold. extended_buf will be freed in
|
||
* av_frame_unref().
|
||
*
|
||
* If AV_CODEC_CAP_DR1 is not set then get_buffer2() must call
|
||
* avcodec_default_get_buffer2() instead of providing buffers allocated by
|
||
* some other means.
|
||
*
|
||
* Each data plane must be aligned to the maximum required by the target
|
||
* CPU.
|
||
*
|
||
* @see avcodec_default_get_buffer2()
|
||
*
|
||
* Video:
|
||
*
|
||
* If AV_GET_BUFFER_FLAG_REF is set in flags then the frame may be reused
|
||
* (read and/or written to if it is writable) later by libavcodec.
|
||
*
|
||
* avcodec_align_dimensions2() should be used to find the required width and
|
||
* height, as they normally need to be rounded up to the next multiple of 16.
|
||
*
|
||
* Some decoders do not support linesizes changing between frames.
|
||
*
|
||
* If frame multithreading is used, this callback may be called from a
|
||
* different thread, but not from more than one at once. Does not need to be
|
||
* reentrant.
|
||
*
|
||
* @see avcodec_align_dimensions2()
|
||
*
|
||
* Audio:
|
||
*
|
||
* Decoders request a buffer of a particular size by setting
|
||
* AVFrame.nb_samples prior to calling get_buffer2(). The decoder may,
|
||
* however, utilize only part of the buffer by setting AVFrame.nb_samples
|
||
* to a smaller value in the output frame.
|
||
*
|
||
* As a convenience, av_samples_get_buffer_size() and
|
||
* av_samples_fill_arrays() in libavutil may be used by custom get_buffer2()
|
||
* functions to find the required data size and to fill data pointers and
|
||
* linesize. In AVFrame.linesize, only linesize[0] may be set for audio
|
||
* since all planes must be the same size.
|
||
*
|
||
* @see av_samples_get_buffer_size(), av_samples_fill_arrays()
|
||
*
|
||
* - encoding: unused
|
||
* - decoding: Set by libavcodec, user can override.
|
||
*/
|
||
get_buffer2: #type (s: *AVCodecContext, frame: *AVFrame, flags: s32) -> s32 #c_call;
|
||
|
||
qcompress: float; ///< amount of qscale change between easy & hard scenes (0.0-1.0)
|
||
qblur: float; ///< amount of qscale smoothing over time (0.0-1.0)
|
||
|
||
/**
|
||
* minimum quantizer
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
qmin: s32;
|
||
|
||
/**
|
||
* maximum quantizer
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
qmax: s32;
|
||
|
||
/**
|
||
* maximum quantizer difference between frames
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
max_qdiff: s32;
|
||
|
||
/**
|
||
* decoder bitstream buffer size
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
rc_buffer_size: s32;
|
||
|
||
/**
|
||
* ratecontrol override, see RcOverride
|
||
* - encoding: Allocated/set/freed by user.
|
||
* - decoding: unused
|
||
*/
|
||
rc_override_count: s32;
|
||
rc_override: *RcOverride;
|
||
|
||
/**
|
||
* maximum bitrate
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by user, may be overwritten by libavcodec.
|
||
*/
|
||
rc_max_rate: s64;
|
||
|
||
/**
|
||
* minimum bitrate
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
rc_min_rate: s64;
|
||
|
||
/**
|
||
* Ratecontrol attempt to use, at maximum, <value> of what can be used without an underflow.
|
||
* - encoding: Set by user.
|
||
* - decoding: unused.
|
||
*/
|
||
rc_max_available_vbv_use: float;
|
||
|
||
/**
|
||
* Ratecontrol attempt to use, at least, <value> times the amount needed to prevent a vbv overflow.
|
||
* - encoding: Set by user.
|
||
* - decoding: unused.
|
||
*/
|
||
rc_min_vbv_overflow_use: float;
|
||
|
||
/**
|
||
* Number of bits which should be loaded into the rc buffer before decoding starts.
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
rc_initial_buffer_occupancy: s32;
|
||
|
||
/**
|
||
* trellis RD quantization
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
trellis: s32;
|
||
|
||
/**
|
||
* pass1 encoding statistics output buffer
|
||
* - encoding: Set by libavcodec.
|
||
* - decoding: unused
|
||
*/
|
||
stats_out: *u8;
|
||
|
||
/**
|
||
* pass2 encoding statistics input buffer
|
||
* Concatenated stuff from stats_out of pass1 should be placed here.
|
||
* - encoding: Allocated/set/freed by user.
|
||
* - decoding: unused
|
||
*/
|
||
stats_in: *u8;
|
||
|
||
/**
|
||
* Work around bugs in encoders which sometimes cannot be detected automatically.
|
||
* - encoding: Set by user
|
||
* - decoding: Set by user
|
||
*/
|
||
workaround_bugs: s32;
|
||
|
||
/**
|
||
* strictly follow the standard (MPEG-4, ...).
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by user.
|
||
* Setting this to STRICT or higher means the encoder and decoder will
|
||
* generally do stupid things, whereas setting it to unofficial or lower
|
||
* will mean the encoder might produce output that is not supported by all
|
||
* spec-compliant decoders. Decoders don't differentiate between normal,
|
||
* unofficial and experimental (that is, they always try to decode things
|
||
* when they can) unless they are explicitly asked to behave stupidly
|
||
* (=strictly conform to the specs)
|
||
* This may only be set to one of the FF_COMPLIANCE_* values in defs.h.
|
||
*/
|
||
strict_std_compliance: s32;
|
||
|
||
/**
|
||
* error concealment flags
|
||
* - encoding: unused
|
||
* - decoding: Set by user.
|
||
*/
|
||
error_concealment: s32;
|
||
|
||
/**
|
||
* debug
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by user.
|
||
*/
|
||
debug: s32;
|
||
|
||
/**
|
||
* Error recognition; may misdetect some more or less valid parts as errors.
|
||
* This is a bitfield of the AV_EF_* values defined in defs.h.
|
||
*
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by user.
|
||
*/
|
||
err_recognition: s32;
|
||
|
||
/**
|
||
* opaque 64-bit number (generally a PTS) that will be reordered and
|
||
* output in AVFrame.reordered_opaque
|
||
* - encoding: Set by libavcodec to the reordered_opaque of the input
|
||
* frame corresponding to the last returned packet. Only
|
||
* supported by encoders with the
|
||
* AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE capability.
|
||
* - decoding: Set by user.
|
||
*
|
||
* @deprecated Use AV_CODEC_FLAG_COPY_OPAQUE instead
|
||
*/
|
||
reordered_opaque: s64;
|
||
|
||
/**
|
||
* Hardware accelerator in use
|
||
* - encoding: unused.
|
||
* - decoding: Set by libavcodec
|
||
*/
|
||
hwaccel: *AVHWAccel;
|
||
|
||
/**
|
||
* Legacy hardware accelerator context.
|
||
*
|
||
* For some hardware acceleration methods, the caller may use this field to
|
||
* signal hwaccel-specific data to the codec. The struct pointed to by this
|
||
* pointer is hwaccel-dependent and defined in the respective header. Please
|
||
* refer to the FFmpeg HW accelerator documentation to know how to fill
|
||
* this.
|
||
*
|
||
* In most cases this field is optional - the necessary information may also
|
||
* be provided to libavcodec through @ref hw_frames_ctx or @ref
|
||
* hw_device_ctx (see avcodec_get_hw_config()). However, in some cases it
|
||
* may be the only method of signalling some (optional) information.
|
||
*
|
||
* The struct and its contents are owned by the caller.
|
||
*
|
||
* - encoding: May be set by the caller before avcodec_open2(). Must remain
|
||
* valid until avcodec_free_context().
|
||
* - decoding: May be set by the caller in the get_format() callback.
|
||
* Must remain valid until the next get_format() call,
|
||
* or avcodec_free_context() (whichever comes first).
|
||
*/
|
||
hwaccel_context: *void;
|
||
|
||
/**
|
||
* error
|
||
* - encoding: Set by libavcodec if flags & AV_CODEC_FLAG_PSNR.
|
||
* - decoding: unused
|
||
*/
|
||
error: [8] u64;
|
||
|
||
/**
|
||
* DCT algorithm, see FF_DCT_* below
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
dct_algo: s32;
|
||
|
||
/**
|
||
* IDCT algorithm, see FF_IDCT_* below.
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by user.
|
||
*/
|
||
idct_algo: s32;
|
||
|
||
/**
|
||
* bits per sample/pixel from the demuxer (needed for huffyuv).
|
||
* - encoding: Set by libavcodec.
|
||
* - decoding: Set by user.
|
||
*/
|
||
bits_per_coded_sample: s32;
|
||
|
||
/**
|
||
* Bits per sample/pixel of internal libavcodec pixel/sample format.
|
||
* - encoding: set by user.
|
||
* - decoding: set by libavcodec.
|
||
*/
|
||
bits_per_raw_sample: s32;
|
||
|
||
/**
|
||
* low resolution decoding, 1-> 1/2 size, 2->1/4 size
|
||
* - encoding: unused
|
||
* - decoding: Set by user.
|
||
*/
|
||
lowres: s32;
|
||
|
||
/**
|
||
* thread count
|
||
* is used to decide how many independent tasks should be passed to execute()
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by user.
|
||
*/
|
||
thread_count: s32;
|
||
|
||
/**
|
||
* Which multithreading methods to use.
|
||
* Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread,
|
||
* so clients which cannot provide future frames should not use it.
|
||
*
|
||
* - encoding: Set by user, otherwise the default is used.
|
||
* - decoding: Set by user, otherwise the default is used.
|
||
*/
|
||
thread_type: s32;
|
||
|
||
/**
|
||
* Which multithreading methods are in use by the codec.
|
||
* - encoding: Set by libavcodec.
|
||
* - decoding: Set by libavcodec.
|
||
*/
|
||
active_thread_type: s32;
|
||
|
||
/**
|
||
* The codec may call this to execute several independent things.
|
||
* It will return only after finishing all tasks.
|
||
* The user may replace this with some multithreaded implementation,
|
||
* the default implementation will execute the parts serially.
|
||
* @param count the number of things to execute
|
||
* - encoding: Set by libavcodec, user can override.
|
||
* - decoding: Set by libavcodec, user can override.
|
||
*/
|
||
execute: #type (c: *AVCodecContext, func: #type (c2: *AVCodecContext, arg: *void) -> s32 #c_call, arg2: *void, ret: *s32, count: s32, size: s32) -> s32 #c_call;
|
||
|
||
/**
|
||
* The codec may call this to execute several independent things.
|
||
* It will return only after finishing all tasks.
|
||
* The user may replace this with some multithreaded implementation,
|
||
* the default implementation will execute the parts serially.
|
||
* @param c context passed also to func
|
||
* @param count the number of things to execute
|
||
* @param arg2 argument passed unchanged to func
|
||
* @param ret return values of executed functions, must have space for "count" values. May be NULL.
|
||
* @param func function that will be called count times, with jobnr from 0 to count-1.
|
||
* threadnr will be in the range 0 to c->thread_count-1 < MAX_THREADS and so that no
|
||
* two instances of func executing at the same time will have the same threadnr.
|
||
* @return always 0 currently, but code should handle a future improvement where when any call to func
|
||
* returns < 0 no further calls to func may be done and < 0 is returned.
|
||
* - encoding: Set by libavcodec, user can override.
|
||
* - decoding: Set by libavcodec, user can override.
|
||
*/
|
||
execute2: #type (c: *AVCodecContext, func: #type (c2: *AVCodecContext, arg: *void, jobnr: s32, threadnr: s32) -> s32 #c_call, arg2: *void, ret: *s32, count: s32) -> s32 #c_call;
|
||
|
||
/**
|
||
* noise vs. sse weight for the nsse comparison function
|
||
* - encoding: Set by user.
|
||
* - decoding: unused
|
||
*/
|
||
nsse_weight: s32;
|
||
|
||
/**
|
||
* profile
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by libavcodec.
|
||
*/
|
||
profile: s32;
|
||
|
||
/**
|
||
* level
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by libavcodec.
|
||
*/
|
||
level: s32;
|
||
|
||
/**
|
||
* Skip loop filtering for selected frames.
|
||
* - encoding: unused
|
||
* - decoding: Set by user.
|
||
*/
|
||
skip_loop_filter: AVDiscard;
|
||
|
||
/**
|
||
* Skip IDCT/dequantization for selected frames.
|
||
* - encoding: unused
|
||
* - decoding: Set by user.
|
||
*/
|
||
skip_idct: AVDiscard;
|
||
|
||
/**
|
||
* Skip decoding for selected frames.
|
||
* - encoding: unused
|
||
* - decoding: Set by user.
|
||
*/
|
||
skip_frame: AVDiscard;
|
||
|
||
/**
|
||
* Header containing style information for text subtitles.
|
||
* For SUBTITLE_ASS subtitle type, it should contain the whole ASS
|
||
* [Script Info] and [V4+ Styles] section, plus the [Events] line and
|
||
* the Format line following. It shouldn't include any Dialogue line.
|
||
* - encoding: Set/allocated/freed by user (before avcodec_open2())
|
||
* - decoding: Set/allocated/freed by libavcodec (by avcodec_open2())
|
||
*/
|
||
subtitle_header: *u8;
|
||
subtitle_header_size: s32;
|
||
|
||
/**
|
||
* Audio only. The number of "priming" samples (padding) inserted by the
|
||
* encoder at the beginning of the audio. I.e. this number of leading
|
||
* decoded samples must be discarded by the caller to get the original audio
|
||
* without leading padding.
|
||
*
|
||
* - decoding: unused
|
||
* - encoding: Set by libavcodec. The timestamps on the output packets are
|
||
* adjusted by the encoder so that they always refer to the
|
||
* first sample of the data actually contained in the packet,
|
||
* including any added padding. E.g. if the timebase is
|
||
* 1/samplerate and the timestamp of the first input sample is
|
||
* 0, the timestamp of the first output packet will be
|
||
* -initial_padding.
|
||
*/
|
||
initial_padding: s32;
|
||
|
||
/**
|
||
* - decoding: For codecs that store a framerate value in the compressed
|
||
* bitstream, the decoder may export it here. { 0, 1} when
|
||
* unknown.
|
||
* - encoding: May be used to signal the framerate of CFR content to an
|
||
* encoder.
|
||
*/
|
||
framerate: AVRational;
|
||
|
||
/**
|
||
* Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx.
|
||
* - encoding: unused.
|
||
* - decoding: Set by libavcodec before calling get_format()
|
||
*/
|
||
sw_pix_fmt: AVPixelFormat;
|
||
|
||
/**
|
||
* Timebase in which pkt_dts/pts and AVPacket.dts/pts are.
|
||
* - encoding unused.
|
||
* - decoding set by user.
|
||
*/
|
||
pkt_timebase: AVRational;
|
||
|
||
/**
|
||
* AVCodecDescriptor
|
||
* - encoding: unused.
|
||
* - decoding: set by libavcodec.
|
||
*/
|
||
codec_descriptor: *AVCodecDescriptor;
|
||
|
||
/**
|
||
* Current statistics for PTS correction.
|
||
* - decoding: maintained and used by libavcodec, not intended to be used by user apps
|
||
* - encoding: unused
|
||
*/
|
||
pts_correction_num_faulty_pts: s64;
|
||
/// Number of incorrect PTS values so far
|
||
pts_correction_num_faulty_dts: s64;
|
||
/// Number of incorrect DTS values so far
|
||
pts_correction_last_pts: s64;
|
||
/// PTS of the last frame
|
||
pts_correction_last_dts: s64;
|
||
|
||
/**
|
||
* Character encoding of the input subtitles file.
|
||
* - decoding: set by user
|
||
* - encoding: unused
|
||
*/
|
||
sub_charenc: *u8;
|
||
|
||
/**
|
||
* Subtitles character encoding mode. Formats or codecs might be adjusting
|
||
* this setting (if they are doing the conversion themselves for instance).
|
||
* - decoding: set by libavcodec
|
||
* - encoding: unused
|
||
*/
|
||
sub_charenc_mode: s32;
|
||
|
||
/**
|
||
* Skip processing alpha if supported by codec.
|
||
* Note that if the format uses pre-multiplied alpha (common with VP6,
|
||
* and recommended due to better video quality/compression)
|
||
* the image will look as if alpha-blended onto a black background.
|
||
* However for formats that do not use pre-multiplied alpha
|
||
* there might be serious artefacts (though e.g. libswscale currently
|
||
* assumes pre-multiplied alpha anyway).
|
||
*
|
||
* - decoding: set by user
|
||
* - encoding: unused
|
||
*/
|
||
skip_alpha: s32;
|
||
|
||
/**
|
||
* Number of samples to skip after a discontinuity
|
||
* - decoding: unused
|
||
* - encoding: set by libavcodec
|
||
*/
|
||
seek_preroll: s32;
|
||
|
||
/**
|
||
* custom intra quantization matrix
|
||
* - encoding: Set by user, can be NULL.
|
||
* - decoding: unused.
|
||
*/
|
||
chroma_intra_matrix: *u16;
|
||
|
||
/**
|
||
* dump format separator.
|
||
* can be ", " or "\n " or anything else
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by user.
|
||
*/
|
||
dump_separator: *u8;
|
||
|
||
/**
|
||
* ',' separated list of allowed decoders.
|
||
* If NULL then all are allowed
|
||
* - encoding: unused
|
||
* - decoding: set by user
|
||
*/
|
||
codec_whitelist: *u8;
|
||
|
||
/**
|
||
* Properties of the stream that gets decoded
|
||
* - encoding: unused
|
||
* - decoding: set by libavcodec
|
||
*/
|
||
properties: u32;
|
||
|
||
/**
|
||
* Additional data associated with the entire coded stream.
|
||
*
|
||
* - decoding: unused
|
||
* - encoding: may be set by libavcodec after avcodec_open2().
|
||
*/
|
||
coded_side_data: *AVPacketSideData;
|
||
nb_coded_side_data: s32;
|
||
|
||
/**
|
||
* A reference to the AVHWFramesContext describing the input (for encoding)
|
||
* or output (decoding) frames. The reference is set by the caller and
|
||
* afterwards owned (and freed) by libavcodec - it should never be read by
|
||
* the caller after being set.
|
||
*
|
||
* - decoding: This field should be set by the caller from the get_format()
|
||
* callback. The previous reference (if any) will always be
|
||
* unreffed by libavcodec before the get_format() call.
|
||
*
|
||
* If the default get_buffer2() is used with a hwaccel pixel
|
||
* format, then this AVHWFramesContext will be used for
|
||
* allocating the frame buffers.
|
||
*
|
||
* - encoding: For hardware encoders configured to use a hwaccel pixel
|
||
* format, this field should be set by the caller to a reference
|
||
* to the AVHWFramesContext describing input frames.
|
||
* AVHWFramesContext.format must be equal to
|
||
* AVCodecContext.pix_fmt.
|
||
*
|
||
* This field should be set before avcodec_open2() is called.
|
||
*/
|
||
hw_frames_ctx: *AVBufferRef;
|
||
|
||
/**
|
||
* Audio only. The amount of padding (in samples) appended by the encoder to
|
||
* the end of the audio. I.e. this number of decoded samples must be
|
||
* discarded by the caller from the end of the stream to get the original
|
||
* audio without any trailing padding.
|
||
*
|
||
* - decoding: unused
|
||
* - encoding: unused
|
||
*/
|
||
trailing_padding: s32;
|
||
|
||
/**
|
||
* The number of pixels per image to maximally accept.
|
||
*
|
||
* - decoding: set by user
|
||
* - encoding: set by user
|
||
*/
|
||
max_pixels: s64;
|
||
|
||
/**
|
||
* A reference to the AVHWDeviceContext describing the device which will
|
||
* be used by a hardware encoder/decoder. The reference is set by the
|
||
* caller and afterwards owned (and freed) by libavcodec.
|
||
*
|
||
* This should be used if either the codec device does not require
|
||
* hardware frames or any that are used are to be allocated internally by
|
||
* libavcodec. If the user wishes to supply any of the frames used as
|
||
* encoder input or decoder output then hw_frames_ctx should be used
|
||
* instead. When hw_frames_ctx is set in get_format() for a decoder, this
|
||
* field will be ignored while decoding the associated stream segment, but
|
||
* may again be used on a following one after another get_format() call.
|
||
*
|
||
* For both encoders and decoders this field should be set before
|
||
* avcodec_open2() is called and must not be written to thereafter.
|
||
*
|
||
* Note that some decoders may require this field to be set initially in
|
||
* order to support hw_frames_ctx at all - in that case, all frames
|
||
* contexts used must be created on the same device.
|
||
*/
|
||
hw_device_ctx: *AVBufferRef;
|
||
|
||
/**
|
||
* Bit set of AV_HWACCEL_FLAG_* flags, which affect hardware accelerated
|
||
* decoding (if active).
|
||
* - encoding: unused
|
||
* - decoding: Set by user (either before avcodec_open2(), or in the
|
||
* AVCodecContext.get_format callback)
|
||
*/
|
||
hwaccel_flags: s32;
|
||
|
||
/**
|
||
* Video decoding only. Certain video codecs support cropping, meaning that
|
||
* only a sub-rectangle of the decoded frame is intended for display. This
|
||
* option controls how cropping is handled by libavcodec.
|
||
*
|
||
* When set to 1 (the default), libavcodec will apply cropping internally.
|
||
* I.e. it will modify the output frame width/height fields and offset the
|
||
* data pointers (only by as much as possible while preserving alignment, or
|
||
* by the full amount if the AV_CODEC_FLAG_UNALIGNED flag is set) so that
|
||
* the frames output by the decoder refer only to the cropped area. The
|
||
* crop_* fields of the output frames will be zero.
|
||
*
|
||
* When set to 0, the width/height fields of the output frames will be set
|
||
* to the coded dimensions and the crop_* fields will describe the cropping
|
||
* rectangle. Applying the cropping is left to the caller.
|
||
*
|
||
* @warning When hardware acceleration with opaque output frames is used,
|
||
* libavcodec is unable to apply cropping from the top/left border.
|
||
*
|
||
* @note when this option is set to zero, the width/height fields of the
|
||
* AVCodecContext and output AVFrames have different meanings. The codec
|
||
* context fields store display dimensions (with the coded dimensions in
|
||
* coded_width/height), while the frame fields store the coded dimensions
|
||
* (with the display dimensions being determined by the crop_* fields).
|
||
*/
|
||
apply_cropping: s32;
|
||
|
||
/*
|
||
* Video decoding only. Sets the number of extra hardware frames which
|
||
* the decoder will allocate for use by the caller. This must be set
|
||
* before avcodec_open2() is called.
|
||
*
|
||
* Some hardware decoders require all frames that they will use for
|
||
* output to be defined in advance before decoding starts. For such
|
||
* decoders, the hardware frame pool must therefore be of a fixed size.
|
||
* The extra frames set here are on top of any number that the decoder
|
||
* needs internally in order to operate normally (for example, frames
|
||
* used as reference pictures).
|
||
*/
|
||
extra_hw_frames: s32;
|
||
|
||
/**
|
||
* The percentage of damaged samples to discard a frame.
|
||
*
|
||
* - decoding: set by user
|
||
* - encoding: unused
|
||
*/
|
||
discard_damaged_percentage: s32;
|
||
|
||
/**
|
||
* The number of samples per frame to maximally accept.
|
||
*
|
||
* - decoding: set by user
|
||
* - encoding: set by user
|
||
*/
|
||
max_samples: s64;
|
||
|
||
/**
|
||
* Bit set of AV_CODEC_EXPORT_DATA_* flags, which affects the kind of
|
||
* metadata exported in frame, packet, or coded stream side data by
|
||
* decoders and encoders.
|
||
*
|
||
* - decoding: set by user
|
||
* - encoding: set by user
|
||
*/
|
||
export_side_data: s32;
|
||
|
||
/**
|
||
* This callback is called at the beginning of each packet to get a data
|
||
* buffer for it.
|
||
*
|
||
* The following field will be set in the packet before this callback is
|
||
* called:
|
||
* - size
|
||
* This callback must use the above value to calculate the required buffer size,
|
||
* which must padded by at least AV_INPUT_BUFFER_PADDING_SIZE bytes.
|
||
*
|
||
* In some specific cases, the encoder may not use the entire buffer allocated by this
|
||
* callback. This will be reflected in the size value in the packet once returned by
|
||
* avcodec_receive_packet().
|
||
*
|
||
* This callback must fill the following fields in the packet:
|
||
* - data: alignment requirements for AVPacket apply, if any. Some architectures and
|
||
* encoders may benefit from having aligned data.
|
||
* - buf: must contain a pointer to an AVBufferRef structure. The packet's
|
||
* data pointer must be contained in it. See: av_buffer_create(), av_buffer_alloc(),
|
||
* and av_buffer_ref().
|
||
*
|
||
* If AV_CODEC_CAP_DR1 is not set then get_encode_buffer() must call
|
||
* avcodec_default_get_encode_buffer() instead of providing a buffer allocated by
|
||
* some other means.
|
||
*
|
||
* The flags field may contain a combination of AV_GET_ENCODE_BUFFER_FLAG_ flags.
|
||
* They may be used for example to hint what use the buffer may get after being
|
||
* created.
|
||
* Implementations of this callback may ignore flags they don't understand.
|
||
* If AV_GET_ENCODE_BUFFER_FLAG_REF is set in flags then the packet may be reused
|
||
* (read and/or written to if it is writable) later by libavcodec.
|
||
*
|
||
* This callback must be thread-safe, as when frame threading is used, it may
|
||
* be called from multiple threads simultaneously.
|
||
*
|
||
* @see avcodec_default_get_encode_buffer()
|
||
*
|
||
* - encoding: Set by libavcodec, user can override.
|
||
* - decoding: unused
|
||
*/
|
||
get_encode_buffer: #type (s: *AVCodecContext, pkt: *AVPacket, flags: s32) -> s32 #c_call;
|
||
|
||
/**
|
||
* Audio channel layout.
|
||
* - encoding: must be set by the caller, to one of AVCodec.ch_layouts.
|
||
* - decoding: may be set by the caller if known e.g. from the container.
|
||
* The decoder can then override during decoding as needed.
|
||
*/
|
||
ch_layout: AVChannelLayout;
|
||
|
||
/**
|
||
* Frame counter, set by libavcodec.
|
||
*
|
||
* - decoding: total number of frames returned from the decoder so far.
|
||
* - encoding: total number of frames passed to the encoder so far.
|
||
*
|
||
* @note the counter is not incremented if encoding/decoding resulted in
|
||
* an error.
|
||
*/
|
||
frame_num: s64;
|
||
}
|
||
|
||
/**
|
||
* @defgroup lavc_hwaccel AVHWAccel
|
||
*
|
||
* @note Nothing in this structure should be accessed by the user. At some
|
||
* point in future it will not be externally visible at all.
|
||
*
|
||
* @{
|
||
*/
|
||
AVHWAccel :: struct {
|
||
/**
|
||
* Name of the hardware accelerated codec.
|
||
* The name is globally unique among encoders and among decoders (but an
|
||
* encoder and a decoder can share the same name).
|
||
*/
|
||
name: *u8;
|
||
|
||
/**
|
||
* Type of codec implemented by the hardware accelerator.
|
||
*
|
||
* See AVMEDIA_TYPE_xxx
|
||
*/
|
||
type: AVMediaType;
|
||
|
||
/**
|
||
* Codec implemented by the hardware accelerator.
|
||
*
|
||
* See AV_CODEC_ID_xxx
|
||
*/
|
||
id: AVCodecID;
|
||
|
||
/**
|
||
* Supported pixel format.
|
||
*
|
||
* Only hardware accelerated formats are supported here.
|
||
*/
|
||
pix_fmt: AVPixelFormat;
|
||
|
||
/**
|
||
* Hardware accelerated codec capabilities.
|
||
* see AV_HWACCEL_CODEC_CAP_*
|
||
*/
|
||
capabilities: s32;
|
||
|
||
/**
|
||
* Allocate a custom buffer
|
||
*/
|
||
alloc_frame: #type (avctx: *AVCodecContext, frame: *AVFrame) -> s32 #c_call;
|
||
|
||
/**
|
||
* Called at the beginning of each frame or field picture.
|
||
*
|
||
* Meaningful frame information (codec specific) is guaranteed to
|
||
* be parsed at this point. This function is mandatory.
|
||
*
|
||
* Note that buf can be NULL along with buf_size set to 0.
|
||
* Otherwise, this means the whole frame is available at this point.
|
||
*
|
||
* @param avctx the codec context
|
||
* @param buf the frame data buffer base
|
||
* @param buf_size the size of the frame in bytes
|
||
* @return zero if successful, a negative value otherwise
|
||
*/
|
||
start_frame: #type (avctx: *AVCodecContext, buf: *u8, buf_size: u32) -> s32 #c_call;
|
||
|
||
/**
|
||
* Callback for parameter data (SPS/PPS/VPS etc).
|
||
*
|
||
* Useful for hardware decoders which keep persistent state about the
|
||
* video parameters, and need to receive any changes to update that state.
|
||
*
|
||
* @param avctx the codec context
|
||
* @param type the nal unit type
|
||
* @param buf the nal unit data buffer
|
||
* @param buf_size the size of the nal unit in bytes
|
||
* @return zero if successful, a negative value otherwise
|
||
*/
|
||
decode_params: #type (avctx: *AVCodecContext, type: s32, buf: *u8, buf_size: u32) -> s32 #c_call;
|
||
|
||
/**
|
||
* Callback for each slice.
|
||
*
|
||
* Meaningful slice information (codec specific) is guaranteed to
|
||
* be parsed at this point. This function is mandatory.
|
||
*
|
||
* @param avctx the codec context
|
||
* @param buf the slice data buffer base
|
||
* @param buf_size the size of the slice in bytes
|
||
* @return zero if successful, a negative value otherwise
|
||
*/
|
||
decode_slice: #type (avctx: *AVCodecContext, buf: *u8, buf_size: u32) -> s32 #c_call;
|
||
|
||
/**
|
||
* Called at the end of each frame or field picture.
|
||
*
|
||
* The whole picture is parsed at this point and can now be sent
|
||
* to the hardware accelerator. This function is mandatory.
|
||
*
|
||
* @param avctx the codec context
|
||
* @return zero if successful, a negative value otherwise
|
||
*/
|
||
end_frame: #type (avctx: *AVCodecContext) -> s32 #c_call;
|
||
|
||
/**
|
||
* Size of per-frame hardware accelerator private data.
|
||
*
|
||
* Private data is allocated with av_mallocz() before
|
||
* AVCodecContext.get_buffer() and deallocated after
|
||
* AVCodecContext.release_buffer().
|
||
*/
|
||
frame_priv_data_size: s32;
|
||
|
||
/**
|
||
* Initialize the hwaccel private data.
|
||
*
|
||
* This will be called from ff_get_format(), after hwaccel and
|
||
* hwaccel_context are set and the hwaccel private data in AVCodecInternal
|
||
* is allocated.
|
||
*/
|
||
init: #type (avctx: *AVCodecContext) -> s32 #c_call;
|
||
|
||
/**
|
||
* Uninitialize the hwaccel private data.
|
||
*
|
||
* This will be called from get_format() or avcodec_close(), after hwaccel
|
||
* and hwaccel_context are already uninitialized.
|
||
*/
|
||
uninit: #type (avctx: *AVCodecContext) -> s32 #c_call;
|
||
|
||
/**
|
||
* Size of the private data to allocate in
|
||
* AVCodecInternal.hwaccel_priv_data.
|
||
*/
|
||
priv_data_size: s32;
|
||
|
||
/**
|
||
* Internal hwaccel capabilities.
|
||
*/
|
||
caps_internal: s32;
|
||
|
||
/**
|
||
* Fill the given hw_frames context with current codec parameters. Called
|
||
* from get_format. Refer to avcodec_get_hw_frames_parameters() for
|
||
* details.
|
||
*
|
||
* This CAN be called before AVHWAccel.init is called, and you must assume
|
||
* that avctx->hwaccel_priv_data is invalid.
|
||
*/
|
||
frame_params: #type (avctx: *AVCodecContext, hw_frames_ctx: *AVBufferRef) -> s32 #c_call;
|
||
}
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
AVSubtitleType :: enum u32 {
|
||
NONE :: 0;
|
||
|
||
BITMAP :: 1;
|
||
|
||
TEXT :: 2;
|
||
|
||
ASS :: 3;
|
||
|
||
SUBTITLE_NONE :: NONE;
|
||
|
||
SUBTITLE_BITMAP :: BITMAP;
|
||
|
||
SUBTITLE_TEXT :: TEXT;
|
||
|
||
SUBTITLE_ASS :: ASS;
|
||
}
|
||
|
||
AVSubtitleRect :: struct {
|
||
x: s32; ///< top left corner of pict, undefined when pict is not set
|
||
y: s32; ///< top left corner of pict, undefined when pict is not set
|
||
w: s32; ///< width of pict, undefined when pict is not set
|
||
h: s32; ///< height of pict, undefined when pict is not set
|
||
nb_colors: s32; ///< number of colors in pict, undefined when pict is not set
|
||
|
||
/**
|
||
* data+linesize for the bitmap of this subtitle.
|
||
* Can be set for text/ass as well once they are rendered.
|
||
*/
|
||
data: [4] *u8;
|
||
linesize: [4] s32;
|
||
|
||
type: AVSubtitleType;
|
||
|
||
text: *u8; ///< 0 terminated plain UTF-8 text
|
||
|
||
/**
|
||
* 0 terminated ASS/SSA compatible event line.
|
||
* The presentation of this is unaffected by the other values in this
|
||
* struct.
|
||
*/
|
||
ass: *u8;
|
||
|
||
flags: s32;
|
||
}
|
||
|
||
AVSubtitle :: struct {
|
||
format: u16; /* 0 = graphics */
|
||
start_display_time: u32; /* relative to packet pts, in ms */
|
||
end_display_time: u32; /* relative to packet pts, in ms */
|
||
num_rects: u32;
|
||
rects: **AVSubtitleRect;
|
||
pts: s64; ///< Same as packet pts, in AV_TIME_BASE
|
||
}
|
||
|
||
/**
|
||
* Return the LIBAVCODEC_VERSION_INT constant.
|
||
*/
|
||
avcodec_version :: () -> u32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Return the libavcodec build-time configuration.
|
||
*/
|
||
avcodec_configuration :: () -> *u8 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Return the libavcodec license.
|
||
*/
|
||
avcodec_license :: () -> *u8 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Allocate an AVCodecContext and set its fields to default values. The
|
||
* resulting struct should be freed with avcodec_free_context().
|
||
*
|
||
* @param codec if non-NULL, allocate private data and initialize defaults
|
||
* for the given codec. It is illegal to then call avcodec_open2()
|
||
* with a different codec.
|
||
* If NULL, then the codec-specific defaults won't be initialized,
|
||
* which may result in suboptimal default settings (this is
|
||
* important mainly for encoders, e.g. libx264).
|
||
*
|
||
* @return An AVCodecContext filled with default values or NULL on failure.
|
||
*/
|
||
avcodec_alloc_context3 :: (codec: *AVCodec) -> *AVCodecContext #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Free the codec context and everything associated with it and write NULL to
|
||
* the provided pointer.
|
||
*/
|
||
avcodec_free_context :: (avctx: **AVCodecContext) -> void #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Get the AVClass for AVCodecContext. It can be used in combination with
|
||
* AV_OPT_SEARCH_FAKE_OBJ for examining options.
|
||
*
|
||
* @see av_opt_find().
|
||
*/
|
||
avcodec_get_class :: () -> *AVClass #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Get the AVClass for AVSubtitleRect. It can be used in combination with
|
||
* AV_OPT_SEARCH_FAKE_OBJ for examining options.
|
||
*
|
||
* @see av_opt_find().
|
||
*/
|
||
avcodec_get_subtitle_rect_class :: () -> *AVClass #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Fill the parameters struct based on the values from the supplied codec
|
||
* context. Any allocated fields in par are freed and replaced with duplicates
|
||
* of the corresponding fields in codec.
|
||
*
|
||
* @return >= 0 on success, a negative AVERROR code on failure
|
||
*/
|
||
avcodec_parameters_from_context :: (par: *AVCodecParameters, codec: *AVCodecContext) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Fill the codec context based on the values from the supplied codec
|
||
* parameters. Any allocated fields in codec that have a corresponding field in
|
||
* par are freed and replaced with duplicates of the corresponding field in par.
|
||
* Fields in codec that do not have a counterpart in par are not touched.
|
||
*
|
||
* @return >= 0 on success, a negative AVERROR code on failure.
|
||
*/
|
||
avcodec_parameters_to_context :: (codec: *AVCodecContext, par: *AVCodecParameters) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Initialize the AVCodecContext to use the given AVCodec. Prior to using this
|
||
* function the context has to be allocated with avcodec_alloc_context3().
|
||
*
|
||
* The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(),
|
||
* avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for
|
||
* retrieving a codec.
|
||
*
|
||
* @note Always call this function before using decoding routines (such as
|
||
* @ref avcodec_receive_frame()).
|
||
*
|
||
* @code
|
||
* av_dict_set(&opts, "b", "2.5M", 0);
|
||
* codec = avcodec_find_decoder(AV_CODEC_ID_H264);
|
||
* if (!codec)
|
||
* exit(1);
|
||
*
|
||
* context = avcodec_alloc_context3(codec);
|
||
*
|
||
* if (avcodec_open2(context, codec, opts) < 0)
|
||
* exit(1);
|
||
* @endcode
|
||
*
|
||
* @param avctx The context to initialize.
|
||
* @param codec The codec to open this context for. If a non-NULL codec has been
|
||
* previously passed to avcodec_alloc_context3() or
|
||
* for this context, then this parameter MUST be either NULL or
|
||
* equal to the previously passed codec.
|
||
* @param options A dictionary filled with AVCodecContext and codec-private options.
|
||
* On return this object will be filled with options that were not found.
|
||
*
|
||
* @return zero on success, a negative value on error
|
||
* @see avcodec_alloc_context3(), avcodec_find_decoder(), avcodec_find_encoder(),
|
||
* av_dict_set(), av_opt_find().
|
||
*/
|
||
avcodec_open2 :: (avctx: *AVCodecContext, codec: *AVCodec, options: **AVDictionary) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Close a given AVCodecContext and free all the data associated with it
|
||
* (but not the AVCodecContext itself).
|
||
*
|
||
* Calling this function on an AVCodecContext that hasn't been opened will free
|
||
* the codec-specific data allocated in avcodec_alloc_context3() with a non-NULL
|
||
* codec. Subsequent calls will do nothing.
|
||
*
|
||
* @note Do not use this function. Use avcodec_free_context() to destroy a
|
||
* codec context (either open or closed). Opening and closing a codec context
|
||
* multiple times is not supported anymore -- use multiple codec contexts
|
||
* instead.
|
||
*/
|
||
avcodec_close :: (avctx: *AVCodecContext) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Free all allocated data in the given subtitle struct.
|
||
*
|
||
* @param sub AVSubtitle to free.
|
||
*/
|
||
avsubtitle_free :: (sub: *AVSubtitle) -> void #foreign libavcodec_60;
|
||
|
||
/**
|
||
* The default callback for AVCodecContext.get_buffer2(). It is made public so
|
||
* it can be called by custom get_buffer2() implementations for decoders without
|
||
* AV_CODEC_CAP_DR1 set.
|
||
*/
|
||
avcodec_default_get_buffer2 :: (s: *AVCodecContext, frame: *AVFrame, flags: s32) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* The default callback for AVCodecContext.get_encode_buffer(). It is made public so
|
||
* it can be called by custom get_encode_buffer() implementations for encoders without
|
||
* AV_CODEC_CAP_DR1 set.
|
||
*/
|
||
avcodec_default_get_encode_buffer :: (s: *AVCodecContext, pkt: *AVPacket, flags: s32) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Modify width and height values so that they will result in a memory
|
||
* buffer that is acceptable for the codec if you do not use any horizontal
|
||
* padding.
|
||
*
|
||
* May only be used if a codec with AV_CODEC_CAP_DR1 has been opened.
|
||
*/
|
||
avcodec_align_dimensions :: (s: *AVCodecContext, width: *s32, height: *s32) -> void #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Modify width and height values so that they will result in a memory
|
||
* buffer that is acceptable for the codec if you also ensure that all
|
||
* line sizes are a multiple of the respective linesize_align[i].
|
||
*
|
||
* May only be used if a codec with AV_CODEC_CAP_DR1 has been opened.
|
||
*/
|
||
avcodec_align_dimensions2 :: (s: *AVCodecContext, width: *s32, height: *s32, linesize_align: *[8] s32) -> void #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Converts AVChromaLocation to swscale x/y chroma position.
|
||
*
|
||
* The positions represent the chroma (0,0) position in a coordinates system
|
||
* with luma (0,0) representing the origin and luma(1,1) representing 256,256
|
||
*
|
||
* @param xpos horizontal chroma sample position
|
||
* @param ypos vertical chroma sample position
|
||
* @deprecated Use av_chroma_location_enum_to_pos() instead.
|
||
*/
|
||
avcodec_enum_to_chroma_pos :: (xpos: *s32, ypos: *s32, pos: AVChromaLocation) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Converts swscale x/y chroma position to AVChromaLocation.
|
||
*
|
||
* The positions represent the chroma (0,0) position in a coordinates system
|
||
* with luma (0,0) representing the origin and luma(1,1) representing 256,256
|
||
*
|
||
* @param xpos horizontal chroma sample position
|
||
* @param ypos vertical chroma sample position
|
||
* @deprecated Use av_chroma_location_pos_to_enum() instead.
|
||
*/
|
||
avcodec_chroma_pos_to_enum :: (xpos: s32, ypos: s32) -> AVChromaLocation #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Decode a subtitle message.
|
||
* Return a negative value on error, otherwise return the number of bytes used.
|
||
* If no subtitle could be decompressed, got_sub_ptr is zero.
|
||
* Otherwise, the subtitle is stored in *sub.
|
||
* Note that AV_CODEC_CAP_DR1 is not available for subtitle codecs. This is for
|
||
* simplicity, because the performance difference is expected to be negligible
|
||
* and reusing a get_buffer written for video codecs would probably perform badly
|
||
* due to a potentially very different allocation pattern.
|
||
*
|
||
* Some decoders (those marked with AV_CODEC_CAP_DELAY) have a delay between input
|
||
* and output. This means that for some packets they will not immediately
|
||
* produce decoded output and need to be flushed at the end of decoding to get
|
||
* all the decoded data. Flushing is done by calling this function with packets
|
||
* with avpkt->data set to NULL and avpkt->size set to 0 until it stops
|
||
* returning subtitles. It is safe to flush even those decoders that are not
|
||
* marked with AV_CODEC_CAP_DELAY, then no subtitles will be returned.
|
||
*
|
||
* @note The AVCodecContext MUST have been opened with @ref avcodec_open2()
|
||
* before packets may be fed to the decoder.
|
||
*
|
||
* @param avctx the codec context
|
||
* @param[out] sub The preallocated AVSubtitle in which the decoded subtitle will be stored,
|
||
* must be freed with avsubtitle_free if *got_sub_ptr is set.
|
||
* @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero.
|
||
* @param[in] avpkt The input AVPacket containing the input buffer.
|
||
*/
|
||
avcodec_decode_subtitle2 :: (avctx: *AVCodecContext, sub: *AVSubtitle, got_sub_ptr: *s32, avpkt: *AVPacket) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Supply raw packet data as input to a decoder.
|
||
*
|
||
* Internally, this call will copy relevant AVCodecContext fields, which can
|
||
* influence decoding per-packet, and apply them when the packet is actually
|
||
* decoded. (For example AVCodecContext.skip_frame, which might direct the
|
||
* decoder to drop the frame contained by the packet sent with this function.)
|
||
*
|
||
* @warning The input buffer, avpkt->data must be AV_INPUT_BUFFER_PADDING_SIZE
|
||
* larger than the actual read bytes because some optimized bitstream
|
||
* readers read 32 or 64 bits at once and could read over the end.
|
||
*
|
||
* @note The AVCodecContext MUST have been opened with @ref avcodec_open2()
|
||
* before packets may be fed to the decoder.
|
||
*
|
||
* @param avctx codec context
|
||
* @param[in] avpkt The input AVPacket. Usually, this will be a single video
|
||
* frame, or several complete audio frames.
|
||
* Ownership of the packet remains with the caller, and the
|
||
* decoder will not write to the packet. The decoder may create
|
||
* a reference to the packet data (or copy it if the packet is
|
||
* not reference-counted).
|
||
* Unlike with older APIs, the packet is always fully consumed,
|
||
* and if it contains multiple frames (e.g. some audio codecs),
|
||
* will require you to call avcodec_receive_frame() multiple
|
||
* times afterwards before you can send a new packet.
|
||
* It can be NULL (or an AVPacket with data set to NULL and
|
||
* size set to 0); in this case, it is considered a flush
|
||
* packet, which signals the end of the stream. Sending the
|
||
* first flush packet will return success. Subsequent ones are
|
||
* unnecessary and will return AVERROR_EOF. If the decoder
|
||
* still has frames buffered, it will return them after sending
|
||
* a flush packet.
|
||
*
|
||
* @retval 0 success
|
||
* @retval AVERROR(EAGAIN) input is not accepted in the current state - user
|
||
* must read output with avcodec_receive_frame() (once
|
||
* all output is read, the packet should be resent,
|
||
* and the call will not fail with EAGAIN).
|
||
* @retval AVERROR_EOF the decoder has been flushed, and no new packets can be
|
||
* sent to it (also returned if more than 1 flush
|
||
* packet is sent)
|
||
* @retval AVERROR(EINVAL) codec not opened, it is an encoder, or requires flush
|
||
* @retval AVERROR(ENOMEM) failed to add packet to internal queue, or similar
|
||
* @retval "another negative error code" legitimate decoding errors
|
||
*/
|
||
avcodec_send_packet :: (avctx: *AVCodecContext, avpkt: *AVPacket) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Return decoded output data from a decoder or encoder (when the
|
||
* AV_CODEC_FLAG_RECON_FRAME flag is used).
|
||
*
|
||
* @param avctx codec context
|
||
* @param frame This will be set to a reference-counted video or audio
|
||
* frame (depending on the decoder type) allocated by the
|
||
* codec. Note that the function will always call
|
||
* av_frame_unref(frame) before doing anything else.
|
||
*
|
||
* @retval 0 success, a frame was returned
|
||
* @retval AVERROR(EAGAIN) output is not available in this state - user must
|
||
* try to send new input
|
||
* @retval AVERROR_EOF the codec has been fully flushed, and there will be
|
||
* no more output frames
|
||
* @retval AVERROR(EINVAL) codec not opened, or it is an encoder without the
|
||
* AV_CODEC_FLAG_RECON_FRAME flag enabled
|
||
* @retval AVERROR_INPUT_CHANGED current decoded frame has changed parameters with
|
||
* respect to first decoded frame. Applicable when flag
|
||
* AV_CODEC_FLAG_DROPCHANGED is set.
|
||
* @retval "other negative error code" legitimate decoding errors
|
||
*/
|
||
avcodec_receive_frame :: (avctx: *AVCodecContext, frame: *AVFrame) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Supply a raw video or audio frame to the encoder. Use avcodec_receive_packet()
|
||
* to retrieve buffered output packets.
|
||
*
|
||
* @param avctx codec context
|
||
* @param[in] frame AVFrame containing the raw audio or video frame to be encoded.
|
||
* Ownership of the frame remains with the caller, and the
|
||
* encoder will not write to the frame. The encoder may create
|
||
* a reference to the frame data (or copy it if the frame is
|
||
* not reference-counted).
|
||
* It can be NULL, in which case it is considered a flush
|
||
* packet. This signals the end of the stream. If the encoder
|
||
* still has packets buffered, it will return them after this
|
||
* call. Once flushing mode has been entered, additional flush
|
||
* packets are ignored, and sending frames will return
|
||
* AVERROR_EOF.
|
||
*
|
||
* For audio:
|
||
* If AV_CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame
|
||
* can have any number of samples.
|
||
* If it is not set, frame->nb_samples must be equal to
|
||
* avctx->frame_size for all frames except the last.
|
||
* The final frame may be smaller than avctx->frame_size.
|
||
* @retval 0 success
|
||
* @retval AVERROR(EAGAIN) input is not accepted in the current state - user must
|
||
* read output with avcodec_receive_packet() (once all
|
||
* output is read, the packet should be resent, and the
|
||
* call will not fail with EAGAIN).
|
||
* @retval AVERROR_EOF the encoder has been flushed, and no new frames can
|
||
* be sent to it
|
||
* @retval AVERROR(EINVAL) codec not opened, it is a decoder, or requires flush
|
||
* @retval AVERROR(ENOMEM) failed to add packet to internal queue, or similar
|
||
* @retval "another negative error code" legitimate encoding errors
|
||
*/
|
||
avcodec_send_frame :: (avctx: *AVCodecContext, frame: *AVFrame) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Read encoded data from the encoder.
|
||
*
|
||
* @param avctx codec context
|
||
* @param avpkt This will be set to a reference-counted packet allocated by the
|
||
* encoder. Note that the function will always call
|
||
* av_packet_unref(avpkt) before doing anything else.
|
||
* @retval 0 success
|
||
* @retval AVERROR(EAGAIN) output is not available in the current state - user must
|
||
* try to send input
|
||
* @retval AVERROR_EOF the encoder has been fully flushed, and there will be no
|
||
* more output packets
|
||
* @retval AVERROR(EINVAL) codec not opened, or it is a decoder
|
||
* @retval "another negative error code" legitimate encoding errors
|
||
*/
|
||
avcodec_receive_packet :: (avctx: *AVCodecContext, avpkt: *AVPacket) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Create and return a AVHWFramesContext with values adequate for hardware
|
||
* decoding. This is meant to get called from the get_format callback, and is
|
||
* a helper for preparing a AVHWFramesContext for AVCodecContext.hw_frames_ctx.
|
||
* This API is for decoding with certain hardware acceleration modes/APIs only.
|
||
*
|
||
* The returned AVHWFramesContext is not initialized. The caller must do this
|
||
* with av_hwframe_ctx_init().
|
||
*
|
||
* Calling this function is not a requirement, but makes it simpler to avoid
|
||
* codec or hardware API specific details when manually allocating frames.
|
||
*
|
||
* Alternatively to this, an API user can set AVCodecContext.hw_device_ctx,
|
||
* which sets up AVCodecContext.hw_frames_ctx fully automatically, and makes
|
||
* it unnecessary to call this function or having to care about
|
||
* AVHWFramesContext initialization at all.
|
||
*
|
||
* There are a number of requirements for calling this function:
|
||
*
|
||
* - It must be called from get_format with the same avctx parameter that was
|
||
* passed to get_format. Calling it outside of get_format is not allowed, and
|
||
* can trigger undefined behavior.
|
||
* - The function is not always supported (see description of return values).
|
||
* Even if this function returns successfully, hwaccel initialization could
|
||
* fail later. (The degree to which implementations check whether the stream
|
||
* is actually supported varies. Some do this check only after the user's
|
||
* get_format callback returns.)
|
||
* - The hw_pix_fmt must be one of the choices suggested by get_format. If the
|
||
* user decides to use a AVHWFramesContext prepared with this API function,
|
||
* the user must return the same hw_pix_fmt from get_format.
|
||
* - The device_ref passed to this function must support the given hw_pix_fmt.
|
||
* - After calling this API function, it is the user's responsibility to
|
||
* initialize the AVHWFramesContext (returned by the out_frames_ref parameter),
|
||
* and to set AVCodecContext.hw_frames_ctx to it. If done, this must be done
|
||
* before returning from get_format (this is implied by the normal
|
||
* AVCodecContext.hw_frames_ctx API rules).
|
||
* - The AVHWFramesContext parameters may change every time time get_format is
|
||
* called. Also, AVCodecContext.hw_frames_ctx is reset before get_format. So
|
||
* you are inherently required to go through this process again on every
|
||
* get_format call.
|
||
* - It is perfectly possible to call this function without actually using
|
||
* the resulting AVHWFramesContext. One use-case might be trying to reuse a
|
||
* previously initialized AVHWFramesContext, and calling this API function
|
||
* only to test whether the required frame parameters have changed.
|
||
* - Fields that use dynamically allocated values of any kind must not be set
|
||
* by the user unless setting them is explicitly allowed by the documentation.
|
||
* If the user sets AVHWFramesContext.free and AVHWFramesContext.user_opaque,
|
||
* the new free callback must call the potentially set previous free callback.
|
||
* This API call may set any dynamically allocated fields, including the free
|
||
* callback.
|
||
*
|
||
* The function will set at least the following fields on AVHWFramesContext
|
||
* (potentially more, depending on hwaccel API):
|
||
*
|
||
* - All fields set by av_hwframe_ctx_alloc().
|
||
* - Set the format field to hw_pix_fmt.
|
||
* - Set the sw_format field to the most suited and most versatile format. (An
|
||
* implication is that this will prefer generic formats over opaque formats
|
||
* with arbitrary restrictions, if possible.)
|
||
* - Set the width/height fields to the coded frame size, rounded up to the
|
||
* API-specific minimum alignment.
|
||
* - Only _if_ the hwaccel requires a pre-allocated pool: set the initial_pool_size
|
||
* field to the number of maximum reference surfaces possible with the codec,
|
||
* plus 1 surface for the user to work (meaning the user can safely reference
|
||
* at most 1 decoded surface at a time), plus additional buffering introduced
|
||
* by frame threading. If the hwaccel does not require pre-allocation, the
|
||
* field is left to 0, and the decoder will allocate new surfaces on demand
|
||
* during decoding.
|
||
* - Possibly AVHWFramesContext.hwctx fields, depending on the underlying
|
||
* hardware API.
|
||
*
|
||
* Essentially, out_frames_ref returns the same as av_hwframe_ctx_alloc(), but
|
||
* with basic frame parameters set.
|
||
*
|
||
* The function is stateless, and does not change the AVCodecContext or the
|
||
* device_ref AVHWDeviceContext.
|
||
*
|
||
* @param avctx The context which is currently calling get_format, and which
|
||
* implicitly contains all state needed for filling the returned
|
||
* AVHWFramesContext properly.
|
||
* @param device_ref A reference to the AVHWDeviceContext describing the device
|
||
* which will be used by the hardware decoder.
|
||
* @param hw_pix_fmt The hwaccel format you are going to return from get_format.
|
||
* @param out_frames_ref On success, set to a reference to an _uninitialized_
|
||
* AVHWFramesContext, created from the given device_ref.
|
||
* Fields will be set to values required for decoding.
|
||
* Not changed if an error is returned.
|
||
* @return zero on success, a negative value on error. The following error codes
|
||
* have special semantics:
|
||
* AVERROR(ENOENT): the decoder does not support this functionality. Setup
|
||
* is always manual, or it is a decoder which does not
|
||
* support setting AVCodecContext.hw_frames_ctx at all,
|
||
* or it is a software format.
|
||
* AVERROR(EINVAL): it is known that hardware decoding is not supported for
|
||
* this configuration, or the device_ref is not supported
|
||
* for the hwaccel referenced by hw_pix_fmt.
|
||
*/
|
||
avcodec_get_hw_frames_parameters :: (avctx: *AVCodecContext, device_ref: *AVBufferRef, hw_pix_fmt: AVPixelFormat, out_frames_ref: **AVBufferRef) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* @defgroup lavc_parsing Frame parsing
|
||
* @{
|
||
*/
|
||
AVPictureStructure :: enum u32 {
|
||
UNKNOWN :: 0;
|
||
TOP_FIELD :: 1;
|
||
BOTTOM_FIELD :: 2;
|
||
FRAME :: 3;
|
||
|
||
AV_PICTURE_STRUCTURE_UNKNOWN :: UNKNOWN;
|
||
AV_PICTURE_STRUCTURE_TOP_FIELD :: TOP_FIELD;
|
||
AV_PICTURE_STRUCTURE_BOTTOM_FIELD :: BOTTOM_FIELD;
|
||
AV_PICTURE_STRUCTURE_FRAME :: FRAME;
|
||
}
|
||
|
||
AVCodecParserContext :: struct {
|
||
priv_data: *void;
|
||
parser: *AVCodecParser;
|
||
frame_offset: s64; /* offset of the current frame */
|
||
/* current offset
|
||
(incremented by each av_parser_parse()) */
|
||
cur_offset: s64;
|
||
|
||
next_frame_offset: s64; /* offset of the next frame */
|
||
|
||
pict_type: s32; /* XXX: Put it back in AVCodecContext. */
|
||
|
||
repeat_pict: s32; /* XXX: Put it back in AVCodecContext. */
|
||
pts: s64; /* pts of the current frame */
|
||
dts: s64; /* dts of the current frame */
|
||
|
||
/* private data */
|
||
last_pts: s64;
|
||
last_dts: s64;
|
||
fetch_timestamp: s32;
|
||
|
||
cur_frame_start_index: s32;
|
||
cur_frame_offset: [4] s64;
|
||
cur_frame_pts: [4] s64;
|
||
cur_frame_dts: [4] s64;
|
||
|
||
flags: s32;
|
||
|
||
offset: s64; ///< byte offset from starting packet start
|
||
cur_frame_end: [4] s64;
|
||
|
||
/**
|
||
* Set by parser to 1 for key frames and 0 for non-key frames.
|
||
* It is initialized to -1, so if the parser doesn't set this flag,
|
||
* old-style fallback using AV_PICTURE_TYPE_I picture type as key frames
|
||
* will be used.
|
||
*/
|
||
key_frame: s32;
|
||
|
||
// Timestamp generation support:
|
||
/**
|
||
* Synchronization point for start of timestamp generation.
|
||
*
|
||
* Set to >0 for sync point, 0 for no sync point and <0 for undefined
|
||
* (default).
|
||
*
|
||
* For example, this corresponds to presence of H.264 buffering period
|
||
* SEI message.
|
||
*/
|
||
dts_sync_point: s32;
|
||
|
||
/**
|
||
* Offset of the current timestamp against last timestamp sync point in
|
||
* units of AVCodecContext.time_base.
|
||
*
|
||
* Set to INT_MIN when dts_sync_point unused. Otherwise, it must
|
||
* contain a valid timestamp offset.
|
||
*
|
||
* Note that the timestamp of sync point has usually a nonzero
|
||
* dts_ref_dts_delta, which refers to the previous sync point. Offset of
|
||
* the next frame after timestamp sync point will be usually 1.
|
||
*
|
||
* For example, this corresponds to H.264 cpb_removal_delay.
|
||
*/
|
||
dts_ref_dts_delta: s32;
|
||
|
||
/**
|
||
* Presentation delay of current frame in units of AVCodecContext.time_base.
|
||
*
|
||
* Set to INT_MIN when dts_sync_point unused. Otherwise, it must
|
||
* contain valid non-negative timestamp delta (presentation time of a frame
|
||
* must not lie in the past).
|
||
*
|
||
* This delay represents the difference between decoding and presentation
|
||
* time of the frame.
|
||
*
|
||
* For example, this corresponds to H.264 dpb_output_delay.
|
||
*/
|
||
pts_dts_delta: s32;
|
||
|
||
/**
|
||
* Position of the packet in file.
|
||
*
|
||
* Analogous to cur_frame_pts/dts
|
||
*/
|
||
cur_frame_pos: [4] s64;
|
||
|
||
/**
|
||
* Byte position of currently parsed frame in stream.
|
||
*/
|
||
pos: s64;
|
||
|
||
/**
|
||
* Previous frame byte position.
|
||
*/
|
||
last_pos: s64;
|
||
|
||
/**
|
||
* Duration of the current frame.
|
||
* For audio, this is in units of 1 / AVCodecContext.sample_rate.
|
||
* For all other types, this is in units of AVCodecContext.time_base.
|
||
*/
|
||
duration: s32;
|
||
|
||
field_order: AVFieldOrder;
|
||
|
||
/**
|
||
* Indicate whether a picture is coded as a frame, top field or bottom field.
|
||
*
|
||
* For example, H.264 field_pic_flag equal to 0 corresponds to
|
||
* AV_PICTURE_STRUCTURE_FRAME. An H.264 picture with field_pic_flag
|
||
* equal to 1 and bottom_field_flag equal to 0 corresponds to
|
||
* AV_PICTURE_STRUCTURE_TOP_FIELD.
|
||
*/
|
||
picture_structure: AVPictureStructure;
|
||
|
||
/**
|
||
* Picture number incremented in presentation or output order.
|
||
* This field may be reinitialized at the first picture of a new sequence.
|
||
*
|
||
* For example, this corresponds to H.264 PicOrderCnt.
|
||
*/
|
||
output_picture_number: s32;
|
||
|
||
/**
|
||
* Dimensions of the decoded video intended for presentation.
|
||
*/
|
||
width: s32;
|
||
height: s32;
|
||
|
||
/**
|
||
* Dimensions of the coded video.
|
||
*/
|
||
coded_width: s32;
|
||
coded_height: s32;
|
||
|
||
/**
|
||
* The format of the coded data, corresponds to enum AVPixelFormat for video
|
||
* and for enum AVSampleFormat for audio.
|
||
*
|
||
* Note that a decoder can have considerable freedom in how exactly it
|
||
* decodes the data, so the format reported here might be different from the
|
||
* one returned by a decoder.
|
||
*/
|
||
format: s32;
|
||
}
|
||
|
||
AVCodecParser :: struct {
|
||
codec_ids: [7] s32; /* several codec IDs are permitted */
|
||
priv_data_size: s32;
|
||
parser_init: #type (s: *AVCodecParserContext) -> s32 #c_call;
|
||
|
||
/* This callback never returns an error, a negative value means that
|
||
* the frame start was in a previous packet. */
|
||
parser_parse: #type (s: *AVCodecParserContext, avctx: *AVCodecContext, poutbuf: **u8, poutbuf_size: *s32, buf: *u8, buf_size: s32) -> s32 #c_call;
|
||
|
||
parser_close: #type (s: *AVCodecParserContext) -> void #c_call;
|
||
split: #type (avctx: *AVCodecContext, buf: *u8, buf_size: s32) -> s32 #c_call;
|
||
}
|
||
|
||
/**
|
||
* Iterate over all registered codec parsers.
|
||
*
|
||
* @param opaque a pointer where libavcodec will store the iteration state. Must
|
||
* point to NULL to start the iteration.
|
||
*
|
||
* @return the next registered codec parser or NULL when the iteration is
|
||
* finished
|
||
*/
|
||
av_parser_iterate :: (opaque: **void) -> *AVCodecParser #foreign libavcodec_60;
|
||
|
||
av_parser_init :: (codec_id: s32) -> *AVCodecParserContext #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Parse a packet.
|
||
*
|
||
* @param s parser context.
|
||
* @param avctx codec context.
|
||
* @param poutbuf set to pointer to parsed buffer or NULL if not yet finished.
|
||
* @param poutbuf_size set to size of parsed buffer or zero if not yet finished.
|
||
* @param buf input buffer.
|
||
* @param buf_size buffer size in bytes without the padding. I.e. the full buffer
|
||
size is assumed to be buf_size + AV_INPUT_BUFFER_PADDING_SIZE.
|
||
To signal EOF, this should be 0 (so that the last frame
|
||
can be output).
|
||
* @param pts input presentation timestamp.
|
||
* @param dts input decoding timestamp.
|
||
* @param pos input byte position in stream.
|
||
* @return the number of bytes of the input bitstream used.
|
||
*
|
||
* Example:
|
||
* @code
|
||
* while(in_len){
|
||
* len = av_parser_parse2(myparser, AVCodecContext, &data, &size,
|
||
* in_data, in_len,
|
||
* pts, dts, pos);
|
||
* in_data += len;
|
||
* in_len -= len;
|
||
*
|
||
* if(size)
|
||
* decode_frame(data, size);
|
||
* }
|
||
* @endcode
|
||
*/
|
||
av_parser_parse2 :: (s: *AVCodecParserContext, avctx: *AVCodecContext, poutbuf: **u8, poutbuf_size: *s32, buf: *u8, buf_size: s32, pts: s64, dts: s64, pos: s64) -> s32 #foreign libavcodec_60;
|
||
|
||
av_parser_close :: (s: *AVCodecParserContext) -> void #foreign libavcodec_60;
|
||
|
||
/**
|
||
* @addtogroup lavc_encoding
|
||
* @{
|
||
*/
|
||
avcodec_encode_subtitle :: (avctx: *AVCodecContext, buf: *u8, buf_size: s32, sub: *AVSubtitle) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Return a value representing the fourCC code associated to the
|
||
* pixel format pix_fmt, or 0 if no associated fourCC code can be
|
||
* found.
|
||
*/
|
||
avcodec_pix_fmt_to_codec_tag :: (pix_fmt: AVPixelFormat) -> u32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Find the best pixel format to convert to given a certain source pixel
|
||
* format. When converting from one pixel format to another, information loss
|
||
* may occur. For example, when converting from RGB24 to GRAY, the color
|
||
* information will be lost. Similarly, other losses occur when converting from
|
||
* some formats to other formats. avcodec_find_best_pix_fmt_of_2() searches which of
|
||
* the given pixel formats should be used to suffer the least amount of loss.
|
||
* The pixel formats from which it chooses one, are determined by the
|
||
* pix_fmt_list parameter.
|
||
*
|
||
*
|
||
* @param[in] pix_fmt_list AV_PIX_FMT_NONE terminated array of pixel formats to choose from
|
||
* @param[in] src_pix_fmt source pixel format
|
||
* @param[in] has_alpha Whether the source pixel format alpha channel is used.
|
||
* @param[out] loss_ptr Combination of flags informing you what kind of losses will occur.
|
||
* @return The best pixel format to convert to or -1 if none was found.
|
||
*/
|
||
avcodec_find_best_pix_fmt_of_list :: (pix_fmt_list: *AVPixelFormat, src_pix_fmt: AVPixelFormat, has_alpha: s32, loss_ptr: *s32) -> AVPixelFormat #foreign libavcodec_60;
|
||
|
||
avcodec_default_get_format :: (s: *AVCodecContext, fmt: *AVPixelFormat) -> AVPixelFormat #foreign libavcodec_60;
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
avcodec_string :: (buf: *u8, buf_size: s32, enc: *AVCodecContext, encode: s32) -> void #foreign libavcodec_60;
|
||
|
||
avcodec_default_execute :: (c: *AVCodecContext, func: #type (c2: *AVCodecContext, arg2: *void) -> s32 #c_call, arg: *void, ret: *s32, count: s32, size: s32) -> s32 #foreign libavcodec_60;
|
||
avcodec_default_execute2 :: (c: *AVCodecContext, func: #type (c2: *AVCodecContext, arg2: *void, unknown0: s32, unknown1: s32) -> s32 #c_call, arg: *void, ret: *s32, count: s32) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Fill AVFrame audio data and linesize pointers.
|
||
*
|
||
* The buffer buf must be a preallocated buffer with a size big enough
|
||
* to contain the specified samples amount. The filled AVFrame data
|
||
* pointers will point to this buffer.
|
||
*
|
||
* AVFrame extended_data channel pointers are allocated if necessary for
|
||
* planar audio.
|
||
*
|
||
* @param frame the AVFrame
|
||
* frame->nb_samples must be set prior to calling the
|
||
* function. This function fills in frame->data,
|
||
* frame->extended_data, frame->linesize[0].
|
||
* @param nb_channels channel count
|
||
* @param sample_fmt sample format
|
||
* @param buf buffer to use for frame data
|
||
* @param buf_size size of buffer
|
||
* @param align plane size sample alignment (0 = default)
|
||
* @return >=0 on success, negative error code on failure
|
||
* @todo return the size in bytes required to store the samples in
|
||
* case of success, at the next libavutil bump
|
||
*/
|
||
avcodec_fill_audio_frame :: (frame: *AVFrame, nb_channels: s32, sample_fmt: AVSampleFormat, buf: *u8, buf_size: s32, align: s32) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Reset the internal codec state / flush internal buffers. Should be called
|
||
* e.g. when seeking or when switching to a different stream.
|
||
*
|
||
* @note for decoders, this function just releases any references the decoder
|
||
* might keep internally, but the caller's references remain valid.
|
||
*
|
||
* @note for encoders, this function will only do something if the encoder
|
||
* declares support for AV_CODEC_CAP_ENCODER_FLUSH. When called, the encoder
|
||
* will drain any remaining packets, and can then be re-used for a different
|
||
* stream (as opposed to sending a null frame which will leave the encoder
|
||
* in a permanent EOF state after draining). This can be desirable if the
|
||
* cost of tearing down and replacing the encoder instance is high.
|
||
*/
|
||
avcodec_flush_buffers :: (avctx: *AVCodecContext) -> void #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Return audio frame duration.
|
||
*
|
||
* @param avctx codec context
|
||
* @param frame_bytes size of the frame, or 0 if unknown
|
||
* @return frame duration, in samples, if known. 0 if not able to
|
||
* determine.
|
||
*/
|
||
av_get_audio_frame_duration :: (avctx: *AVCodecContext, frame_bytes: s32) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Same behaviour av_fast_malloc but the buffer has additional
|
||
* AV_INPUT_BUFFER_PADDING_SIZE at the end which will always be 0.
|
||
*
|
||
* In addition the whole buffer will initially and after resizes
|
||
* be 0-initialized so that no uninitialized data will ever appear.
|
||
*/
|
||
av_fast_padded_malloc :: (ptr: *void, size: *u32, min_size: u64) -> void #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Same behaviour av_fast_padded_malloc except that buffer will always
|
||
* be 0-initialized after call.
|
||
*/
|
||
av_fast_padded_mallocz :: (ptr: *void, size: *u32, min_size: u64) -> void #foreign libavcodec_60;
|
||
|
||
/**
|
||
* @return a positive value if s is open (i.e. avcodec_open2() was called on it
|
||
* with no corresponding avcodec_close()), 0 otherwise.
|
||
*/
|
||
avcodec_is_open :: (s: *AVCodecContext) -> s32 #foreign libavcodec_60;
|
||
|
||
/**
|
||
* Callback for checking whether to abort blocking functions.
|
||
* AVERROR_EXIT is returned in this case by the interrupted
|
||
* function. During blocking operations, callback is called with
|
||
* opaque as parameter. If the callback returns 1, the
|
||
* blocking operation will be aborted.
|
||
*
|
||
* No members can be added to this struct without a major bump, if
|
||
* new elements have been added after this struct in AVFormatContext
|
||
* or AVIOContext.
|
||
*/
|
||
AVIOInterruptCB :: struct {
|
||
callback: #type (unknown0: *void) -> s32 #c_call;
|
||
opaque: *void;
|
||
}
|
||
|
||
/**
|
||
* Directory entry types.
|
||
*/
|
||
AVIODirEntryType :: enum u32 {
|
||
UNKNOWN :: 0;
|
||
BLOCK_DEVICE :: 1;
|
||
CHARACTER_DEVICE :: 2;
|
||
DIRECTORY :: 3;
|
||
NAMED_PIPE :: 4;
|
||
SYMBOLIC_LINK :: 5;
|
||
SOCKET :: 6;
|
||
FILE :: 7;
|
||
SERVER :: 8;
|
||
SHARE :: 9;
|
||
WORKGROUP :: 10;
|
||
|
||
AVIO_ENTRY_UNKNOWN :: UNKNOWN;
|
||
AVIO_ENTRY_BLOCK_DEVICE :: BLOCK_DEVICE;
|
||
AVIO_ENTRY_CHARACTER_DEVICE :: CHARACTER_DEVICE;
|
||
AVIO_ENTRY_DIRECTORY :: DIRECTORY;
|
||
AVIO_ENTRY_NAMED_PIPE :: NAMED_PIPE;
|
||
AVIO_ENTRY_SYMBOLIC_LINK :: SYMBOLIC_LINK;
|
||
AVIO_ENTRY_SOCKET :: SOCKET;
|
||
AVIO_ENTRY_FILE :: FILE;
|
||
AVIO_ENTRY_SERVER :: SERVER;
|
||
AVIO_ENTRY_SHARE :: SHARE;
|
||
AVIO_ENTRY_WORKGROUP :: WORKGROUP;
|
||
}
|
||
|
||
/**
|
||
* Describes single entry of the directory.
|
||
*
|
||
* Only name and type fields are guaranteed be set.
|
||
* Rest of fields are protocol or/and platform dependent and might be unknown.
|
||
*/
|
||
AVIODirEntry :: struct {
|
||
name: *u8; /**< Filename */
|
||
type: s32; /**< Type of the entry */
|
||
/**< Set to 1 when name is encoded with UTF-8, 0 otherwise.
|
||
Name can be encoded with UTF-8 even though 0 is set. */
|
||
utf8: s32;
|
||
|
||
size: s64; /**< File size in bytes, -1 if unknown. */
|
||
/**< Time of last modification in microseconds since unix
|
||
epoch, -1 if unknown. */
|
||
modification_timestamp: s64;
|
||
|
||
/**< Time of last access in microseconds since unix epoch,
|
||
-1 if unknown. */
|
||
access_timestamp: s64;
|
||
|
||
/**< Time of last status change in microseconds since unix
|
||
epoch, -1 if unknown. */
|
||
status_change_timestamp: s64;
|
||
|
||
user_id: s64; /**< User ID of owner, -1 if unknown. */
|
||
group_id: s64; /**< Group ID of owner, -1 if unknown. */
|
||
filemode: s64; /**< Unix file mode, -1 if unknown. */
|
||
}
|
||
|
||
AVIODirContext :: struct {
|
||
URLContext :: struct {}
|
||
url_context: *URLContext;
|
||
}
|
||
|
||
/**
|
||
* Different data types that can be returned via the AVIO
|
||
* write_data_type callback.
|
||
*/
|
||
AVIODataMarkerType :: enum u32 {
|
||
HEADER :: 0;
|
||
|
||
SYNC_POINT :: 1;
|
||
|
||
BOUNDARY_POINT :: 2;
|
||
|
||
UNKNOWN :: 3;
|
||
|
||
TRAILER :: 4;
|
||
|
||
FLUSH_POINT :: 5;
|
||
|
||
AVIO_DATA_MARKER_HEADER :: HEADER;
|
||
|
||
AVIO_DATA_MARKER_SYNC_POINT :: SYNC_POINT;
|
||
|
||
AVIO_DATA_MARKER_BOUNDARY_POINT :: BOUNDARY_POINT;
|
||
|
||
AVIO_DATA_MARKER_UNKNOWN :: UNKNOWN;
|
||
|
||
AVIO_DATA_MARKER_TRAILER :: TRAILER;
|
||
|
||
AVIO_DATA_MARKER_FLUSH_POINT :: FLUSH_POINT;
|
||
}
|
||
|
||
/**
|
||
* Bytestream IO Context.
|
||
* New public fields can be added with minor version bumps.
|
||
* Removal, reordering and changes to existing public fields require
|
||
* a major version bump.
|
||
* sizeof(AVIOContext) must not be used outside libav*.
|
||
*
|
||
* @note None of the function pointers in AVIOContext should be called
|
||
* directly, they should only be set by the client application
|
||
* when implementing custom I/O. Normally these are set to the
|
||
* function pointers specified in avio_alloc_context()
|
||
*/
|
||
AVIOContext :: struct {
|
||
/**
|
||
* A class for private options.
|
||
*
|
||
* If this AVIOContext is created by avio_open2(), av_class is set and
|
||
* passes the options down to protocols.
|
||
*
|
||
* If this AVIOContext is manually allocated, then av_class may be set by
|
||
* the caller.
|
||
*
|
||
* warning -- this field can be NULL, be sure to not pass this AVIOContext
|
||
* to any av_opt_* functions in that case.
|
||
*/
|
||
av_class: *AVClass;
|
||
|
||
buffer: *u8; /**< Start of the buffer. */
|
||
buffer_size: s32; /**< Maximum buffer size */
|
||
buf_ptr: *u8; /**< Current position in the buffer */
|
||
/**< End of the data, may be less than
|
||
buffer+buffer_size if the read function returned
|
||
less data than requested, e.g. for streams where
|
||
no more data has been received yet. */
|
||
buf_end: *u8;
|
||
|
||
/**< A private pointer, passed to the read/write/seek/...
|
||
functions. */
|
||
opaque: *void;
|
||
|
||
read_packet: #type (opaque: *void, buf: *u8, buf_size: s32) -> s32 #c_call;
|
||
write_packet: #type (opaque: *void, buf: *u8, buf_size: s32) -> s32 #c_call;
|
||
seek: #type (opaque: *void, offset: s64, whence: s32) -> s64 #c_call;
|
||
pos: s64; /**< position in the file of the current buffer */
|
||
eof_reached: s32; /**< true if was unable to read due to error or eof */
|
||
error: s32; /**< contains the error code or 0 if no error happened */
|
||
write_flag: s32; /**< true if open for writing */
|
||
max_packet_size: s32;
|
||
/**< Try to buffer at least this amount of data
|
||
before flushing it. */
|
||
min_packet_size: s32;
|
||
|
||
checksum: u64;
|
||
checksum_ptr: *u8;
|
||
update_checksum: #type (checksum: u64, buf: *u8, size: u32) -> u64 #c_call;
|
||
|
||
/**
|
||
* Pause or resume playback for network streaming protocols - e.g. MMS.
|
||
*/
|
||
read_pause: #type (opaque: *void, pause: s32) -> s32 #c_call;
|
||
|
||
/**
|
||
* Seek to a given timestamp in stream with the specified stream_index.
|
||
* Needed for some network streaming protocols which don't support seeking
|
||
* to byte position.
|
||
*/
|
||
read_seek: #type (opaque: *void, stream_index: s32, timestamp: s64, flags: s32) -> s64 #c_call;
|
||
|
||
/**
|
||
* A combination of AVIO_SEEKABLE_ flags or 0 when the stream is not seekable.
|
||
*/
|
||
seekable: s32;
|
||
|
||
/**
|
||
* avio_read and avio_write should if possible be satisfied directly
|
||
* instead of going through a buffer, and avio_seek will always
|
||
* call the underlying seek function directly.
|
||
*/
|
||
direct: s32;
|
||
|
||
/**
|
||
* ',' separated list of allowed protocols.
|
||
*/
|
||
protocol_whitelist: *u8;
|
||
|
||
/**
|
||
* ',' separated list of disallowed protocols.
|
||
*/
|
||
protocol_blacklist: *u8;
|
||
|
||
/**
|
||
* A callback that is used instead of write_packet.
|
||
*/
|
||
write_data_type: #type (opaque: *void, buf: *u8, buf_size: s32, type: AVIODataMarkerType, time: s64) -> s32 #c_call;
|
||
|
||
/**
|
||
* If set, don't call write_data_type separately for AVIO_DATA_MARKER_BOUNDARY_POINT,
|
||
* but ignore them and treat them as AVIO_DATA_MARKER_UNKNOWN (to avoid needlessly
|
||
* small chunks of data returned from the callback).
|
||
*/
|
||
ignore_boundary_point: s32;
|
||
|
||
/**
|
||
* Maximum reached position before a backward seek in the write buffer,
|
||
* used keeping track of already written data for a later flush.
|
||
*/
|
||
buf_ptr_max: *u8;
|
||
|
||
/**
|
||
* Read-only statistic of bytes read for this AVIOContext.
|
||
*/
|
||
bytes_read: s64;
|
||
|
||
/**
|
||
* Read-only statistic of bytes written for this AVIOContext.
|
||
*/
|
||
bytes_written: s64;
|
||
}
|
||
|
||
/**
|
||
* Return the name of the protocol that will handle the passed URL.
|
||
*
|
||
* NULL is returned if no protocol could be found for the given URL.
|
||
*
|
||
* @return Name of the protocol or NULL.
|
||
*/
|
||
avio_find_protocol_name :: (url: *u8) -> *u8 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Return AVIO_FLAG_* access flags corresponding to the access permissions
|
||
* of the resource in url, or a negative value corresponding to an
|
||
* AVERROR code in case of failure. The returned access flags are
|
||
* masked by the value in flags.
|
||
*
|
||
* @note This function is intrinsically unsafe, in the sense that the
|
||
* checked resource may change its existence or permission status from
|
||
* one call to another. Thus you should not trust the returned value,
|
||
* unless you are sure that no other processes are accessing the
|
||
* checked resource.
|
||
*/
|
||
avio_check :: (url: *u8, flags: s32) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Open directory for reading.
|
||
*
|
||
* @param s directory read context. Pointer to a NULL pointer must be passed.
|
||
* @param url directory to be listed.
|
||
* @param options A dictionary filled with protocol-private options. On return
|
||
* this parameter will be destroyed and replaced with a dictionary
|
||
* containing options that were not found. May be NULL.
|
||
* @return >=0 on success or negative on error.
|
||
*/
|
||
avio_open_dir :: (s: **AVIODirContext, url: *u8, options: **AVDictionary) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Get next directory entry.
|
||
*
|
||
* Returned entry must be freed with avio_free_directory_entry(). In particular
|
||
* it may outlive AVIODirContext.
|
||
*
|
||
* @param s directory read context.
|
||
* @param[out] next next entry or NULL when no more entries.
|
||
* @return >=0 on success or negative on error. End of list is not considered an
|
||
* error.
|
||
*/
|
||
avio_read_dir :: (s: *AVIODirContext, next: **AVIODirEntry) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Close directory.
|
||
*
|
||
* @note Entries created using avio_read_dir() are not deleted and must be
|
||
* freeded with avio_free_directory_entry().
|
||
*
|
||
* @param s directory read context.
|
||
* @return >=0 on success or negative on error.
|
||
*/
|
||
avio_close_dir :: (s: **AVIODirContext) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Free entry allocated by avio_read_dir().
|
||
*
|
||
* @param entry entry to be freed.
|
||
*/
|
||
avio_free_directory_entry :: (entry: **AVIODirEntry) -> void #foreign libavformat_60;
|
||
|
||
/**
|
||
* Allocate and initialize an AVIOContext for buffered I/O. It must be later
|
||
* freed with avio_context_free().
|
||
*
|
||
* @param buffer Memory block for input/output operations via AVIOContext.
|
||
* The buffer must be allocated with av_malloc() and friends.
|
||
* It may be freed and replaced with a new buffer by libavformat.
|
||
* AVIOContext.buffer holds the buffer currently in use,
|
||
* which must be later freed with av_free().
|
||
* @param buffer_size The buffer size is very important for performance.
|
||
* For protocols with fixed blocksize it should be set to this blocksize.
|
||
* For others a typical size is a cache page, e.g. 4kb.
|
||
* @param write_flag Set to 1 if the buffer should be writable, 0 otherwise.
|
||
* @param opaque An opaque pointer to user-specific data.
|
||
* @param read_packet A function for refilling the buffer, may be NULL.
|
||
* For stream protocols, must never return 0 but rather
|
||
* a proper AVERROR code.
|
||
* @param write_packet A function for writing the buffer contents, may be NULL.
|
||
* The function may not change the input buffers content.
|
||
* @param seek A function for seeking to specified byte position, may be NULL.
|
||
*
|
||
* @return Allocated AVIOContext or NULL on failure.
|
||
*/
|
||
avio_alloc_context :: (buffer: *u8, buffer_size: s32, write_flag: s32, opaque: *void, read_packet: #type (opaque: *void, buf: *u8, buf_size: s32) -> s32 #c_call, write_packet: #type (opaque: *void, buf: *u8, buf_size: s32) -> s32 #c_call, seek: #type (opaque: *void, offset: s64, whence: s32) -> s64 #c_call) -> *AVIOContext #foreign libavformat_60;
|
||
|
||
/**
|
||
* Free the supplied IO context and everything associated with it.
|
||
*
|
||
* @param s Double pointer to the IO context. This function will write NULL
|
||
* into s.
|
||
*/
|
||
avio_context_free :: (s: **AVIOContext) -> void #foreign libavformat_60;
|
||
|
||
avio_w8 :: (s: *AVIOContext, b: s32) -> void #foreign libavformat_60;
|
||
avio_write :: (s: *AVIOContext, buf: *u8, size: s32) -> void #foreign libavformat_60;
|
||
avio_wl64 :: (s: *AVIOContext, val: u64) -> void #foreign libavformat_60;
|
||
avio_wb64 :: (s: *AVIOContext, val: u64) -> void #foreign libavformat_60;
|
||
avio_wl32 :: (s: *AVIOContext, val: u32) -> void #foreign libavformat_60;
|
||
avio_wb32 :: (s: *AVIOContext, val: u32) -> void #foreign libavformat_60;
|
||
avio_wl24 :: (s: *AVIOContext, val: u32) -> void #foreign libavformat_60;
|
||
avio_wb24 :: (s: *AVIOContext, val: u32) -> void #foreign libavformat_60;
|
||
avio_wl16 :: (s: *AVIOContext, val: u32) -> void #foreign libavformat_60;
|
||
avio_wb16 :: (s: *AVIOContext, val: u32) -> void #foreign libavformat_60;
|
||
|
||
/**
|
||
* Write a NULL-terminated string.
|
||
* @return number of bytes written.
|
||
*/
|
||
avio_put_str :: (s: *AVIOContext, str: *u8) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Convert an UTF-8 string to UTF-16LE and write it.
|
||
* @param s the AVIOContext
|
||
* @param str NULL-terminated UTF-8 string
|
||
*
|
||
* @return number of bytes written.
|
||
*/
|
||
avio_put_str16le :: (s: *AVIOContext, str: *u8) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Convert an UTF-8 string to UTF-16BE and write it.
|
||
* @param s the AVIOContext
|
||
* @param str NULL-terminated UTF-8 string
|
||
*
|
||
* @return number of bytes written.
|
||
*/
|
||
avio_put_str16be :: (s: *AVIOContext, str: *u8) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Mark the written bytestream as a specific type.
|
||
*
|
||
* Zero-length ranges are omitted from the output.
|
||
*
|
||
* @param s the AVIOContext
|
||
* @param time the stream time the current bytestream pos corresponds to
|
||
* (in AV_TIME_BASE units), or AV_NOPTS_VALUE if unknown or not
|
||
* applicable
|
||
* @param type the kind of data written starting at the current pos
|
||
*/
|
||
avio_write_marker :: (s: *AVIOContext, time: s64, type: AVIODataMarkerType) -> void #foreign libavformat_60;
|
||
|
||
/**
|
||
* fseek() equivalent for AVIOContext.
|
||
* @return new position or AVERROR.
|
||
*/
|
||
avio_seek :: (s: *AVIOContext, offset: s64, whence: s32) -> s64 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Skip given number of bytes forward
|
||
* @return new position or AVERROR.
|
||
*/
|
||
avio_skip :: (s: *AVIOContext, offset: s64) -> s64 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Get the filesize.
|
||
* @return filesize or AVERROR
|
||
*/
|
||
avio_size :: (s: *AVIOContext) -> s64 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Similar to feof() but also returns nonzero on read errors.
|
||
* @return non zero if and only if at end of file or a read error happened when reading.
|
||
*/
|
||
avio_feof :: (s: *AVIOContext) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Writes a formatted string to the context.
|
||
* @return number of bytes written, < 0 on error.
|
||
*/
|
||
avio_printf_CFormat :: (s: *AVIOContext, fmt: *u8, __args: ..Any) -> s32 #foreign libavformat_60 "avio_printf";
|
||
avio_printf :: (s: *AVIOContext, fmt: string, __args: ..Any) -> s32 {
|
||
push_allocator(temp);
|
||
formatted_text_builder: String_Builder;
|
||
print_to_builder(*formatted_text_builder, fmt, ..__args);
|
||
append(*formatted_text_builder, "\0");
|
||
formatted_text := builder_to_string(*formatted_text_builder);
|
||
return avio_printf_CFormat(s, "%s", formatted_text.data);
|
||
} @PrintLike
|
||
|
||
/**
|
||
* Write a NULL terminated array of strings to the context.
|
||
* Usually you don't need to use this function directly but its macro wrapper,
|
||
* avio_print.
|
||
*/
|
||
avio_print_string_array :: (s: *AVIOContext, strings: **u8) -> void #foreign libavformat_60;
|
||
|
||
/**
|
||
* Force flushing of buffered data.
|
||
*
|
||
* For write streams, force the buffered data to be immediately written to the output,
|
||
* without to wait to fill the internal buffer.
|
||
*
|
||
* For read streams, discard all currently buffered data, and advance the
|
||
* reported file position to that of the underlying stream. This does not
|
||
* read new data, and does not perform any seeks.
|
||
*/
|
||
avio_flush :: (s: *AVIOContext) -> void #foreign libavformat_60;
|
||
|
||
/**
|
||
* Read size bytes from AVIOContext into buf.
|
||
* @return number of bytes read or AVERROR
|
||
*/
|
||
avio_read :: (s: *AVIOContext, buf: *u8, size: s32) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Read size bytes from AVIOContext into buf. Unlike avio_read(), this is allowed
|
||
* to read fewer bytes than requested. The missing bytes can be read in the next
|
||
* call. This always tries to read at least 1 byte.
|
||
* Useful to reduce latency in certain cases.
|
||
* @return number of bytes read or AVERROR
|
||
*/
|
||
avio_read_partial :: (s: *AVIOContext, buf: *u8, size: s32) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* @name Functions for reading from AVIOContext
|
||
* @{
|
||
*
|
||
* @note return 0 if EOF, so you cannot use it if EOF handling is
|
||
* necessary
|
||
*/
|
||
avio_r8 :: (s: *AVIOContext) -> s32 #foreign libavformat_60;
|
||
avio_rl16 :: (s: *AVIOContext) -> u32 #foreign libavformat_60;
|
||
avio_rl24 :: (s: *AVIOContext) -> u32 #foreign libavformat_60;
|
||
avio_rl32 :: (s: *AVIOContext) -> u32 #foreign libavformat_60;
|
||
avio_rl64 :: (s: *AVIOContext) -> u64 #foreign libavformat_60;
|
||
avio_rb16 :: (s: *AVIOContext) -> u32 #foreign libavformat_60;
|
||
avio_rb24 :: (s: *AVIOContext) -> u32 #foreign libavformat_60;
|
||
avio_rb32 :: (s: *AVIOContext) -> u32 #foreign libavformat_60;
|
||
avio_rb64 :: (s: *AVIOContext) -> u64 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Read a string from pb into buf. The reading will terminate when either
|
||
* a NULL character was encountered, maxlen bytes have been read, or nothing
|
||
* more can be read from pb. The result is guaranteed to be NULL-terminated, it
|
||
* will be truncated if buf is too small.
|
||
* Note that the string is not interpreted or validated in any way, it
|
||
* might get truncated in the middle of a sequence for multi-byte encodings.
|
||
*
|
||
* @return number of bytes read (is always <= maxlen).
|
||
* If reading ends on EOF or error, the return value will be one more than
|
||
* bytes actually read.
|
||
*/
|
||
avio_get_str :: (pb: *AVIOContext, maxlen: s32, buf: *u8, buflen: s32) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Read a UTF-16 string from pb and convert it to UTF-8.
|
||
* The reading will terminate when either a null or invalid character was
|
||
* encountered or maxlen bytes have been read.
|
||
* @return number of bytes read (is always <= maxlen)
|
||
*/
|
||
avio_get_str16le :: (pb: *AVIOContext, maxlen: s32, buf: *u8, buflen: s32) -> s32 #foreign libavformat_60;
|
||
avio_get_str16be :: (pb: *AVIOContext, maxlen: s32, buf: *u8, buflen: s32) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Create and initialize a AVIOContext for accessing the
|
||
* resource indicated by url.
|
||
* @note When the resource indicated by url has been opened in
|
||
* read+write mode, the AVIOContext can be used only for writing.
|
||
*
|
||
* @param s Used to return the pointer to the created AVIOContext.
|
||
* In case of failure the pointed to value is set to NULL.
|
||
* @param url resource to access
|
||
* @param flags flags which control how the resource indicated by url
|
||
* is to be opened
|
||
* @return >= 0 in case of success, a negative value corresponding to an
|
||
* AVERROR code in case of failure
|
||
*/
|
||
avio_open :: (s: **AVIOContext, url: *u8, flags: s32) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Create and initialize a AVIOContext for accessing the
|
||
* resource indicated by url.
|
||
* @note When the resource indicated by url has been opened in
|
||
* read+write mode, the AVIOContext can be used only for writing.
|
||
*
|
||
* @param s Used to return the pointer to the created AVIOContext.
|
||
* In case of failure the pointed to value is set to NULL.
|
||
* @param url resource to access
|
||
* @param flags flags which control how the resource indicated by url
|
||
* is to be opened
|
||
* @param int_cb an interrupt callback to be used at the protocols level
|
||
* @param options A dictionary filled with protocol-private options. On return
|
||
* this parameter will be destroyed and replaced with a dict containing options
|
||
* that were not found. May be NULL.
|
||
* @return >= 0 in case of success, a negative value corresponding to an
|
||
* AVERROR code in case of failure
|
||
*/
|
||
avio_open2 :: (s: **AVIOContext, url: *u8, flags: s32, int_cb: *AVIOInterruptCB, options: **AVDictionary) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Close the resource accessed by the AVIOContext s and free it.
|
||
* This function can only be used if s was opened by avio_open().
|
||
*
|
||
* The internal buffer is automatically flushed before closing the
|
||
* resource.
|
||
*
|
||
* @return 0 on success, an AVERROR < 0 on error.
|
||
* @see avio_closep
|
||
*/
|
||
avio_close :: (s: *AVIOContext) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Close the resource accessed by the AVIOContext *s, free it
|
||
* and set the pointer pointing to it to NULL.
|
||
* This function can only be used if s was opened by avio_open().
|
||
*
|
||
* The internal buffer is automatically flushed before closing the
|
||
* resource.
|
||
*
|
||
* @return 0 on success, an AVERROR < 0 on error.
|
||
* @see avio_close
|
||
*/
|
||
avio_closep :: (s: **AVIOContext) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Open a write only memory stream.
|
||
*
|
||
* @param s new IO context
|
||
* @return zero if no error.
|
||
*/
|
||
avio_open_dyn_buf :: (s: **AVIOContext) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Return the written size and a pointer to the buffer.
|
||
* The AVIOContext stream is left intact.
|
||
* The buffer must NOT be freed.
|
||
* No padding is added to the buffer.
|
||
*
|
||
* @param s IO context
|
||
* @param pbuffer pointer to a byte buffer
|
||
* @return the length of the byte buffer
|
||
*/
|
||
avio_get_dyn_buf :: (s: *AVIOContext, pbuffer: **u8) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Return the written size and a pointer to the buffer. The buffer
|
||
* must be freed with av_free().
|
||
* Padding of AV_INPUT_BUFFER_PADDING_SIZE is added to the buffer.
|
||
*
|
||
* @param s IO context
|
||
* @param pbuffer pointer to a byte buffer
|
||
* @return the length of the byte buffer
|
||
*/
|
||
avio_close_dyn_buf :: (s: *AVIOContext, pbuffer: **u8) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Iterate through names of available protocols.
|
||
*
|
||
* @param opaque A private pointer representing current protocol.
|
||
* It must be a pointer to NULL on first iteration and will
|
||
* be updated by successive calls to avio_enum_protocols.
|
||
* @param output If set to 1, iterate over output protocols,
|
||
* otherwise over input protocols.
|
||
*
|
||
* @return A static string containing the name of current protocol or NULL
|
||
*/
|
||
avio_enum_protocols :: (opaque: **void, output: s32) -> *u8 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Get AVClass by names of available protocols.
|
||
*
|
||
* @return A AVClass of input protocol name or NULL
|
||
*/
|
||
avio_protocol_get_class :: (name: *u8) -> *AVClass #foreign libavformat_60;
|
||
|
||
/**
|
||
* Pause and resume playing - only meaningful if using a network streaming
|
||
* protocol (e.g. MMS).
|
||
*
|
||
* @param h IO context from which to call the read_pause function pointer
|
||
* @param pause 1 for pause, 0 for resume
|
||
*/
|
||
avio_pause :: (h: *AVIOContext, pause: s32) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Seek to a given timestamp relative to some component stream.
|
||
* Only meaningful if using a network streaming protocol (e.g. MMS.).
|
||
*
|
||
* @param h IO context from which to call the seek function pointers
|
||
* @param stream_index The stream index that the timestamp is relative to.
|
||
* If stream_index is (-1) the timestamp should be in AV_TIME_BASE
|
||
* units from the beginning of the presentation.
|
||
* If a stream_index >= 0 is used and the protocol does not support
|
||
* seeking based on component streams, the call will fail.
|
||
* @param timestamp timestamp in AVStream.time_base units
|
||
* or if there is no stream specified then in AV_TIME_BASE units.
|
||
* @param flags Optional combination of AVSEEK_FLAG_BACKWARD, AVSEEK_FLAG_BYTE
|
||
* and AVSEEK_FLAG_ANY. The protocol may silently ignore
|
||
* AVSEEK_FLAG_BACKWARD and AVSEEK_FLAG_ANY, but AVSEEK_FLAG_BYTE will
|
||
* fail if used and not supported.
|
||
* @return >= 0 on success
|
||
* @see AVInputFormat::read_seek
|
||
*/
|
||
avio_seek_time :: (h: *AVIOContext, stream_index: s32, timestamp: s64, flags: s32) -> s64 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Read contents of h into print buffer, up to max_size bytes, or up to EOF.
|
||
*
|
||
* @return 0 for success (max_size bytes read or EOF reached), negative error
|
||
* code otherwise
|
||
*/
|
||
avio_read_to_bprint :: (h: *AVIOContext, pb: *AVBPrint, max_size: u64) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Accept and allocate a client context on a server context.
|
||
* @param s the server context
|
||
* @param c the client context, must be unallocated
|
||
* @return >= 0 on success or a negative value corresponding
|
||
* to an AVERROR on failure
|
||
*/
|
||
avio_accept :: (s: *AVIOContext, c: **AVIOContext) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Perform one step of the protocol handshake to accept a new client.
|
||
* This function must be called on a client returned by avio_accept() before
|
||
* using it as a read/write context.
|
||
* It is separate from avio_accept() because it may block.
|
||
* A step of the handshake is defined by places where the application may
|
||
* decide to change the proceedings.
|
||
* For example, on a protocol with a request header and a reply header, each
|
||
* one can constitute a step because the application may use the parameters
|
||
* from the request to change parameters in the reply; or each individual
|
||
* chunk of the request can constitute a step.
|
||
* If the handshake is already finished, avio_handshake() does nothing and
|
||
* returns 0 immediately.
|
||
*
|
||
* @param c the client context to perform the handshake on
|
||
* @return 0 on a complete and successful handshake
|
||
* > 0 if the handshake progressed, but is not complete
|
||
* < 0 for an AVERROR code
|
||
*/
|
||
avio_handshake :: (c: *AVIOContext) -> s32 #foreign libavformat_60;
|
||
|
||
AVDeviceInfoList :: struct {}
|
||
|
||
/**
|
||
* Allocate and read the payload of a packet and initialize its
|
||
* fields with default values.
|
||
*
|
||
* @param s associated IO context
|
||
* @param pkt packet
|
||
* @param size desired payload size
|
||
* @return >0 (read size) if OK, AVERROR_xxx otherwise
|
||
*/
|
||
av_get_packet :: (s: *AVIOContext, pkt: *AVPacket, size: s32) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Read data and append it to the current content of the AVPacket.
|
||
* If pkt->size is 0 this is identical to av_get_packet.
|
||
* Note that this uses av_grow_packet and thus involves a realloc
|
||
* which is inefficient. Thus this function should only be used
|
||
* when there is no reasonable way to know (an upper bound of)
|
||
* the final size.
|
||
*
|
||
* @param s associated IO context
|
||
* @param pkt packet
|
||
* @param size amount of data to read
|
||
* @return >0 (read size) if OK, AVERROR_xxx otherwise, previous data
|
||
* will not be lost even if an error occurs.
|
||
*/
|
||
av_append_packet :: (s: *AVIOContext, pkt: *AVPacket, size: s32) -> s32 #foreign libavformat_60;
|
||
|
||
/*************************************************/
|
||
/* input/output formats */
|
||
AVCodecTag :: struct {}
|
||
|
||
/**
|
||
* This structure contains the data a format has to probe a file.
|
||
*/
|
||
AVProbeData :: struct {
|
||
filename: *u8;
|
||
buf: *u8; /**< Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero. */
|
||
buf_size: s32; /**< Size of buf except extra allocated bytes */
|
||
mime_type: *u8; /**< mime_type, when known. */
|
||
}
|
||
|
||
/**
|
||
* @addtogroup lavf_encoding
|
||
* @{
|
||
*/
|
||
AVOutputFormat :: struct {
|
||
name: *u8;
|
||
|
||
/**
|
||
* Descriptive name for the format, meant to be more human-readable
|
||
* than name. You should use the NULL_IF_CONFIG_SMALL() macro
|
||
* to define it.
|
||
*/
|
||
long_name: *u8;
|
||
mime_type: *u8;
|
||
extensions: *u8; /**< comma-separated filename extensions */
|
||
|
||
audio_codec: AVCodecID; /**< default audio codec */
|
||
video_codec: AVCodecID; /**< default video codec */
|
||
subtitle_codec: AVCodecID; /**< default subtitle codec */
|
||
|
||
/**
|
||
* can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER,
|
||
* AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS,
|
||
* AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH,
|
||
* AVFMT_TS_NONSTRICT, AVFMT_TS_NEGATIVE
|
||
*/
|
||
flags: s32;
|
||
|
||
/**
|
||
* List of supported codec_id-codec_tag pairs, ordered by "better
|
||
* choice first". The arrays are all terminated by AV_CODEC_ID_NONE.
|
||
*/
|
||
codec_tag: **AVCodecTag;
|
||
|
||
priv_class: *AVClass; ///< AVClass for the private context
|
||
}
|
||
|
||
/**
|
||
* @addtogroup lavf_decoding
|
||
* @{
|
||
*/
|
||
AVInputFormat :: struct {
|
||
/**
|
||
* A comma separated list of short names for the format. New names
|
||
* may be appended with a minor bump.
|
||
*/
|
||
name: *u8;
|
||
|
||
/**
|
||
* Descriptive name for the format, meant to be more human-readable
|
||
* than name. You should use the NULL_IF_CONFIG_SMALL() macro
|
||
* to define it.
|
||
*/
|
||
long_name: *u8;
|
||
|
||
/**
|
||
* Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_SHOW_IDS,
|
||
* AVFMT_NOTIMESTAMPS, AVFMT_GENERIC_INDEX, AVFMT_TS_DISCONT, AVFMT_NOBINSEARCH,
|
||
* AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK, AVFMT_SEEK_TO_PTS.
|
||
*/
|
||
flags: s32;
|
||
|
||
/**
|
||
* If extensions are defined, then no probe is done. You should
|
||
* usually not use extension format guessing because it is not
|
||
* reliable enough
|
||
*/
|
||
extensions: *u8;
|
||
|
||
codec_tag: **AVCodecTag;
|
||
|
||
priv_class: *AVClass; ///< AVClass for the private context
|
||
|
||
/**
|
||
* Comma-separated list of mime types.
|
||
* It is used check for matching mime types while probing.
|
||
* @see av_probe_input_format2
|
||
*/
|
||
mime_type: *u8;
|
||
|
||
/*****************************************************************
|
||
* No fields below this line are part of the public API. They
|
||
* may not be used outside of libavformat and can be changed and
|
||
* removed at will.
|
||
* New public fields should be added right above.
|
||
*****************************************************************
|
||
*/
|
||
/**
|
||
* Raw demuxers store their codec ID here.
|
||
*/
|
||
raw_codec_id: s32;
|
||
|
||
/**
|
||
* Size of private data so that it can be allocated in the wrapper.
|
||
*/
|
||
priv_data_size: s32;
|
||
|
||
/**
|
||
* Internal flags. See FF_FMT_FLAG_* in internal.h.
|
||
*/
|
||
flags_internal: s32;
|
||
|
||
/**
|
||
* Tell if a given file has a chance of being parsed as this format.
|
||
* The buffer provided is guaranteed to be AVPROBE_PADDING_SIZE bytes
|
||
* big so you do not have to check for that unless you need more.
|
||
*/
|
||
read_probe: #type (unknown0: *AVProbeData) -> s32 #c_call;
|
||
|
||
/**
|
||
* Read the format header and initialize the AVFormatContext
|
||
* structure. Return 0 if OK. 'avformat_new_stream' should be
|
||
* called to create new streams.
|
||
*/
|
||
read_header: #type (unknown0: *AVFormatContext) -> s32 #c_call;
|
||
|
||
/**
|
||
* Read one packet and put it in 'pkt'. pts and flags are also
|
||
* set. 'avformat_new_stream' can be called only if the flag
|
||
* AVFMTCTX_NOHEADER is used and only in the calling thread (not in a
|
||
* background thread).
|
||
* @return 0 on success, < 0 on error.
|
||
* Upon returning an error, pkt must be unreferenced by the caller.
|
||
*/
|
||
read_packet: #type (unknown0: *AVFormatContext, pkt: *AVPacket) -> s32 #c_call;
|
||
|
||
/**
|
||
* Close the stream. The AVFormatContext and AVStreams are not
|
||
* freed by this function
|
||
*/
|
||
read_close: #type (unknown0: *AVFormatContext) -> s32 #c_call;
|
||
|
||
/**
|
||
* Seek to a given timestamp relative to the frames in
|
||
* stream component stream_index.
|
||
* @param stream_index Must not be -1.
|
||
* @param flags Selects which direction should be preferred if no exact
|
||
* match is available.
|
||
* @return >= 0 on success (but not necessarily the new offset)
|
||
*/
|
||
read_seek: #type (unknown0: *AVFormatContext, stream_index: s32, timestamp: s64, flags: s32) -> s32 #c_call;
|
||
|
||
/**
|
||
* Get the next timestamp in stream[stream_index].time_base units.
|
||
* @return the timestamp or AV_NOPTS_VALUE if an error occurred
|
||
*/
|
||
read_timestamp: #type (s: *AVFormatContext, stream_index: s32, pos: *s64, pos_limit: s64) -> s64 #c_call;
|
||
|
||
/**
|
||
* Start/resume playing - only meaningful if using a network-based format
|
||
* (RTSP).
|
||
*/
|
||
read_play: #type (unknown0: *AVFormatContext) -> s32 #c_call;
|
||
|
||
/**
|
||
* Pause playing - only meaningful if using a network-based format
|
||
* (RTSP).
|
||
*/
|
||
read_pause: #type (unknown0: *AVFormatContext) -> s32 #c_call;
|
||
|
||
/**
|
||
* Seek to timestamp ts.
|
||
* Seeking will be done so that the point from which all active streams
|
||
* can be presented successfully will be closest to ts and within min/max_ts.
|
||
* Active streams are all streams that have AVStream.discard < AVDISCARD_ALL.
|
||
*/
|
||
read_seek2: #type (s: *AVFormatContext, stream_index: s32, min_ts: s64, ts: s64, max_ts: s64, flags: s32) -> s32 #c_call;
|
||
|
||
/**
|
||
* Returns device list with it properties.
|
||
* @see avdevice_list_devices() for more details.
|
||
*/
|
||
get_device_list: #type (s: *AVFormatContext, device_list: *AVDeviceInfoList) -> s32 #c_call;
|
||
}
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
AVStreamParseType :: enum u32 {
|
||
NONE :: 0;
|
||
FULL :: 1;
|
||
HEADERS :: 2;
|
||
TIMESTAMPS :: 3;
|
||
FULL_ONCE :: 4;
|
||
FULL_RAW :: 5;
|
||
|
||
AVSTREAM_PARSE_NONE :: NONE;
|
||
AVSTREAM_PARSE_FULL :: FULL;
|
||
AVSTREAM_PARSE_HEADERS :: HEADERS;
|
||
AVSTREAM_PARSE_TIMESTAMPS :: TIMESTAMPS;
|
||
AVSTREAM_PARSE_FULL_ONCE :: FULL_ONCE;
|
||
AVSTREAM_PARSE_FULL_RAW :: FULL_RAW;
|
||
}
|
||
|
||
AVIndexEntry :: struct {
|
||
pos: s64;
|
||
/**<
|
||
* Timestamp in AVStream.time_base units, preferably the time from which on correctly decoded frames are available
|
||
* when seeking to this entry. That means preferable PTS on keyframe based formats.
|
||
* But demuxers can choose to store a different timestamp, if it is more convenient for the implementation or nothing better
|
||
* is known
|
||
*/
|
||
timestamp: s64;
|
||
|
||
__bitfield: s32;
|
||
/*
|
||
/**
|
||
* Flag is used to indicate which frame should be discarded after decoding.
|
||
*/
|
||
flags: s32; /* 2 bits */
|
||
size: s32; /* 30 bits */ //Yeah, trying to keep the size of this small to reduce memory requirements (it is 24 vs. 32 bytes due to possible 8-byte alignment).;
|
||
*/
|
||
|
||
min_distance: s32; /**< Minimum distance between this and the previous keyframe, used to avoid unneeded searching. */
|
||
}
|
||
|
||
set_flags :: (fields: *AVIndexEntry, value: s32) {
|
||
MASK0: s32 : 0b11;
|
||
fields.__bitfield = (fields.__bitfield & ~MASK0) | (value & MASK0);
|
||
}
|
||
get_flags :: (fields: AVIndexEntry) -> s32 {
|
||
return (fields.__bitfield & 0b11);
|
||
}
|
||
|
||
set_size :: (fields: *AVIndexEntry, value: s32) {
|
||
MASK0: s32 : (0b11_1111_1111_1111_1111_1111_1111_1111 << 2);
|
||
fields.__bitfield = (fields.__bitfield & ~MASK0) | ((value << 2) & MASK0);
|
||
}
|
||
get_size :: (fields: AVIndexEntry) -> s32 {
|
||
return ((fields.__bitfield & (0b11_1111_1111_1111_1111_1111_1111_1111 << 2)) >> 2);
|
||
}
|
||
|
||
|
||
/**
|
||
* @return The AV_DISPOSITION_* flag corresponding to disp or a negative error
|
||
* code if disp does not correspond to a known stream disposition.
|
||
*/
|
||
av_disposition_from_string :: (disp: *u8) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* @param disposition a combination of AV_DISPOSITION_* values
|
||
* @return The string description corresponding to the lowest set bit in
|
||
* disposition. NULL when the lowest set bit does not correspond
|
||
* to a known disposition or when disposition is 0.
|
||
*/
|
||
av_disposition_to_string :: (disposition: s32) -> *u8 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Stream structure.
|
||
* New fields can be added to the end with minor version bumps.
|
||
* Removal, reordering and changes to existing fields require a major
|
||
* version bump.
|
||
* sizeof(AVStream) must not be used outside libav*.
|
||
*/
|
||
AVStream :: struct {
|
||
/**
|
||
* A class for @ref avoptions. Set on stream creation.
|
||
*/
|
||
av_class: *AVClass;
|
||
|
||
index: s32; /**< stream index in AVFormatContext */
|
||
|
||
/**
|
||
* Format-specific stream ID.
|
||
* decoding: set by libavformat
|
||
* encoding: set by the user, replaced by libavformat if left unset
|
||
*/
|
||
id: s32;
|
||
|
||
/**
|
||
* Codec parameters associated with this stream. Allocated and freed by
|
||
* libavformat in avformat_new_stream() and avformat_free_context()
|
||
* respectively.
|
||
*
|
||
* - demuxing: filled by libavformat on stream creation or in
|
||
* avformat_find_stream_info()
|
||
* - muxing: filled by the caller before avformat_write_header()
|
||
*/
|
||
codecpar: *AVCodecParameters;
|
||
|
||
priv_data: *void;
|
||
|
||
/**
|
||
* This is the fundamental unit of time (in seconds) in terms
|
||
* of which frame timestamps are represented.
|
||
*
|
||
* decoding: set by libavformat
|
||
* encoding: May be set by the caller before avformat_write_header() to
|
||
* provide a hint to the muxer about the desired timebase. In
|
||
* avformat_write_header(), the muxer will overwrite this field
|
||
* with the timebase that will actually be used for the timestamps
|
||
* written into the file (which may or may not be related to the
|
||
* user-provided one, depending on the format).
|
||
*/
|
||
time_base: AVRational;
|
||
|
||
/**
|
||
* Decoding: pts of the first frame of the stream in presentation order, in stream time base.
|
||
* Only set this if you are absolutely 100% sure that the value you set
|
||
* it to really is the pts of the first frame.
|
||
* This may be undefined (AV_NOPTS_VALUE).
|
||
* @note The ASF header does NOT contain a correct start_time the ASF
|
||
* demuxer must NOT set this.
|
||
*/
|
||
start_time: s64;
|
||
|
||
/**
|
||
* Decoding: duration of the stream, in stream time base.
|
||
* If a source file does not specify a duration, but does specify
|
||
* a bitrate, this value will be estimated from bitrate and file size.
|
||
*
|
||
* Encoding: May be set by the caller before avformat_write_header() to
|
||
* provide a hint to the muxer about the estimated duration.
|
||
*/
|
||
duration: s64;
|
||
|
||
nb_frames: s64; ///< number of frames in this stream if known or 0
|
||
|
||
/**
|
||
* Stream disposition - a combination of AV_DISPOSITION_* flags.
|
||
* - demuxing: set by libavformat when creating the stream or in
|
||
* avformat_find_stream_info().
|
||
* - muxing: may be set by the caller before avformat_write_header().
|
||
*/
|
||
disposition: s32;
|
||
|
||
discard: AVDiscard; ///< Selects which packets can be discarded at will and do not need to be demuxed.
|
||
|
||
/**
|
||
* sample aspect ratio (0 if unknown)
|
||
* - encoding: Set by user.
|
||
* - decoding: Set by libavformat.
|
||
*/
|
||
sample_aspect_ratio: AVRational;
|
||
|
||
metadata: *AVDictionary;
|
||
|
||
/**
|
||
* Average framerate
|
||
*
|
||
* - demuxing: May be set by libavformat when creating the stream or in
|
||
* avformat_find_stream_info().
|
||
* - muxing: May be set by the caller before avformat_write_header().
|
||
*/
|
||
avg_frame_rate: AVRational;
|
||
|
||
/**
|
||
* For streams with AV_DISPOSITION_ATTACHED_PIC disposition, this packet
|
||
* will contain the attached picture.
|
||
*
|
||
* decoding: set by libavformat, must not be modified by the caller.
|
||
* encoding: unused
|
||
*/
|
||
attached_pic: AVPacket;
|
||
|
||
/**
|
||
* An array of side data that applies to the whole stream (i.e. the
|
||
* container does not allow it to change between packets).
|
||
*
|
||
* There may be no overlap between the side data in this array and side data
|
||
* in the packets. I.e. a given side data is either exported by the muxer
|
||
* (demuxing) / set by the caller (muxing) in this array, then it never
|
||
* appears in the packets, or the side data is exported / sent through
|
||
* the packets (always in the first packet where the value becomes known or
|
||
* changes), then it does not appear in this array.
|
||
*
|
||
* - demuxing: Set by libavformat when the stream is created.
|
||
* - muxing: May be set by the caller before avformat_write_header().
|
||
*
|
||
* Freed by libavformat in avformat_free_context().
|
||
*
|
||
* @see av_format_inject_global_side_data()
|
||
*/
|
||
side_data: *AVPacketSideData;
|
||
|
||
/**
|
||
* The number of elements in the AVStream.side_data array.
|
||
*/
|
||
nb_side_data: s32;
|
||
|
||
/**
|
||
* Flags indicating events happening on the stream, a combination of
|
||
* AVSTREAM_EVENT_FLAG_*.
|
||
*
|
||
* - demuxing: may be set by the demuxer in avformat_open_input(),
|
||
* avformat_find_stream_info() and av_read_frame(). Flags must be cleared
|
||
* by the user once the event has been handled.
|
||
* - muxing: may be set by the user after avformat_write_header(). to
|
||
* indicate a user-triggered event. The muxer will clear the flags for
|
||
* events it has handled in av_[interleaved]_write_frame().
|
||
*/
|
||
event_flags: s32;
|
||
|
||
/**
|
||
* Real base framerate of the stream.
|
||
* This is the lowest framerate with which all timestamps can be
|
||
* represented accurately (it is the least common multiple of all
|
||
* framerates in the stream). Note, this value is just a guess!
|
||
* For example, if the time base is 1/90000 and all frames have either
|
||
* approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1.
|
||
*/
|
||
r_frame_rate: AVRational;
|
||
|
||
/**
|
||
* Number of bits in timestamps. Used for wrapping control.
|
||
*
|
||
* - demuxing: set by libavformat
|
||
* - muxing: set by libavformat
|
||
*
|
||
*/
|
||
pts_wrap_bits: s32;
|
||
}
|
||
|
||
av_stream_get_parser :: (s: *AVStream) -> *AVCodecParserContext #foreign libavformat_60;
|
||
|
||
/**
|
||
* Returns the pts of the last muxed packet + its duration
|
||
*
|
||
* the retuned value is undefined when used with a demuxer.
|
||
*/
|
||
av_stream_get_end_pts :: (st: *AVStream) -> s64 #foreign libavformat_60;
|
||
|
||
/**
|
||
* New fields can be added to the end with minor version bumps.
|
||
* Removal, reordering and changes to existing fields require a major
|
||
* version bump.
|
||
* sizeof(AVProgram) must not be used outside libav*.
|
||
*/
|
||
AVProgram :: struct {
|
||
id: s32;
|
||
flags: s32;
|
||
discard: AVDiscard; ///< selects which program to discard and which to feed to the caller
|
||
stream_index: *u32;
|
||
nb_stream_indexes: u32;
|
||
metadata: *AVDictionary;
|
||
|
||
program_num: s32;
|
||
pmt_pid: s32;
|
||
pcr_pid: s32;
|
||
pmt_version: s32;
|
||
|
||
/*****************************************************************
|
||
* All fields below this line are not part of the public API. They
|
||
* may not be used outside of libavformat and can be changed and
|
||
* removed at will.
|
||
* New public fields should be added right above.
|
||
*****************************************************************
|
||
*/
|
||
start_time: s64;
|
||
end_time: s64;
|
||
|
||
pts_wrap_reference: s64; ///< reference dts for wrap detection
|
||
pts_wrap_behavior: s32; ///< behavior on wrap detection
|
||
}
|
||
|
||
AVChapter :: struct {
|
||
id: s64; ///< unique ID to identify the chapter
|
||
time_base: AVRational; ///< time base in which the start/end timestamps are specified
|
||
start: s64; ///< chapter start/end time in time_base units
|
||
end: s64; ///< chapter start/end time in time_base units
|
||
metadata: *AVDictionary;
|
||
}
|
||
|
||
/**
|
||
* Callback used by devices to communicate with application.
|
||
*/
|
||
av_format_control_message :: #type (s: *AVFormatContext, type: s32, data: *void, data_size: u64) -> s32 #c_call;
|
||
|
||
AVOpenCallback :: #type (s: *AVFormatContext, pb: **AVIOContext, url: *u8, flags: s32, int_cb: *AVIOInterruptCB, options: **AVDictionary) -> s32 #c_call;
|
||
|
||
/**
|
||
* The duration of a video can be estimated through various ways, and this enum can be used
|
||
* to know how the duration was estimated.
|
||
*/
|
||
AVDurationEstimationMethod :: enum u32 {
|
||
PTS :: 0;
|
||
STREAM :: 1;
|
||
BITRATE :: 2;
|
||
|
||
AVFMT_DURATION_FROM_PTS :: PTS;
|
||
AVFMT_DURATION_FROM_STREAM :: STREAM;
|
||
AVFMT_DURATION_FROM_BITRATE :: BITRATE;
|
||
}
|
||
|
||
/**
|
||
* Format I/O context.
|
||
* New fields can be added to the end with minor version bumps.
|
||
* Removal, reordering and changes to existing fields require a major
|
||
* version bump.
|
||
* sizeof(AVFormatContext) must not be used outside libav*, use
|
||
* avformat_alloc_context() to create an AVFormatContext.
|
||
*
|
||
* Fields can be accessed through AVOptions (av_opt*),
|
||
* the name string used matches the associated command line parameter name and
|
||
* can be found in libavformat/options_table.h.
|
||
* The AVOption/command line parameter names differ in some cases from the C
|
||
* structure field names for historic reasons or brevity.
|
||
*/
|
||
AVFormatContext :: struct {
|
||
/**
|
||
* A class for logging and @ref avoptions. Set by avformat_alloc_context().
|
||
* Exports (de)muxer private options if they exist.
|
||
*/
|
||
av_class: *AVClass;
|
||
|
||
/**
|
||
* The input container format.
|
||
*
|
||
* Demuxing only, set by avformat_open_input().
|
||
*/
|
||
iformat: *AVInputFormat;
|
||
|
||
/**
|
||
* The output container format.
|
||
*
|
||
* Muxing only, must be set by the caller before avformat_write_header().
|
||
*/
|
||
oformat: *AVOutputFormat;
|
||
|
||
/**
|
||
* Format private data. This is an AVOptions-enabled struct
|
||
* if and only if iformat/oformat.priv_class is not NULL.
|
||
*
|
||
* - muxing: set by avformat_write_header()
|
||
* - demuxing: set by avformat_open_input()
|
||
*/
|
||
priv_data: *void;
|
||
|
||
/**
|
||
* I/O context.
|
||
*
|
||
* - demuxing: either set by the user before avformat_open_input() (then
|
||
* the user must close it manually) or set by avformat_open_input().
|
||
* - muxing: set by the user before avformat_write_header(). The caller must
|
||
* take care of closing / freeing the IO context.
|
||
*
|
||
* Do NOT set this field if AVFMT_NOFILE flag is set in
|
||
* iformat/oformat.flags. In such a case, the (de)muxer will handle
|
||
* I/O in some other way and this field will be NULL.
|
||
*/
|
||
pb: *AVIOContext;
|
||
|
||
/* stream info */
|
||
/**
|
||
* Flags signalling stream properties. A combination of AVFMTCTX_*.
|
||
* Set by libavformat.
|
||
*/
|
||
ctx_flags: s32;
|
||
|
||
/**
|
||
* Number of elements in AVFormatContext.streams.
|
||
*
|
||
* Set by avformat_new_stream(), must not be modified by any other code.
|
||
*/
|
||
nb_streams: u32;
|
||
|
||
/**
|
||
* A list of all streams in the file. New streams are created with
|
||
* avformat_new_stream().
|
||
*
|
||
* - demuxing: streams are created by libavformat in avformat_open_input().
|
||
* If AVFMTCTX_NOHEADER is set in ctx_flags, then new streams may also
|
||
* appear in av_read_frame().
|
||
* - muxing: streams are created by the user before avformat_write_header().
|
||
*
|
||
* Freed by libavformat in avformat_free_context().
|
||
*/
|
||
streams: **AVStream;
|
||
|
||
/**
|
||
* input or output URL. Unlike the old filename field, this field has no
|
||
* length restriction.
|
||
*
|
||
* - demuxing: set by avformat_open_input(), initialized to an empty
|
||
* string if url parameter was NULL in avformat_open_input().
|
||
* - muxing: may be set by the caller before calling avformat_write_header()
|
||
* (or avformat_init_output() if that is called first) to a string
|
||
* which is freeable by av_free(). Set to an empty string if it
|
||
* was NULL in avformat_init_output().
|
||
*
|
||
* Freed by libavformat in avformat_free_context().
|
||
*/
|
||
url: *u8;
|
||
|
||
/**
|
||
* Position of the first frame of the component, in
|
||
* AV_TIME_BASE fractional seconds. NEVER set this value directly:
|
||
* It is deduced from the AVStream values.
|
||
*
|
||
* Demuxing only, set by libavformat.
|
||
*/
|
||
start_time: s64;
|
||
|
||
/**
|
||
* Duration of the stream, in AV_TIME_BASE fractional
|
||
* seconds. Only set this value if you know none of the individual stream
|
||
* durations and also do not set any of them. This is deduced from the
|
||
* AVStream values if not set.
|
||
*
|
||
* Demuxing only, set by libavformat.
|
||
*/
|
||
duration: s64;
|
||
|
||
/**
|
||
* Total stream bitrate in bit/s, 0 if not
|
||
* available. Never set it directly if the file_size and the
|
||
* duration are known as FFmpeg can compute it automatically.
|
||
*/
|
||
bit_rate: s64;
|
||
|
||
packet_size: u32;
|
||
max_delay: s32;
|
||
|
||
/**
|
||
* Flags modifying the (de)muxer behaviour. A combination of AVFMT_FLAG_*.
|
||
* Set by the user before avformat_open_input() / avformat_write_header().
|
||
*/
|
||
flags: s32;
|
||
|
||
/**
|
||
* Maximum number of bytes read from input in order to determine stream
|
||
* properties. Used when reading the global header and in
|
||
* avformat_find_stream_info().
|
||
*
|
||
* Demuxing only, set by the caller before avformat_open_input().
|
||
*
|
||
* @note this is \e not used for determining the \ref AVInputFormat
|
||
* "input format"
|
||
* @sa format_probesize
|
||
*/
|
||
probesize: s64;
|
||
|
||
/**
|
||
* Maximum duration (in AV_TIME_BASE units) of the data read
|
||
* from input in avformat_find_stream_info().
|
||
* Demuxing only, set by the caller before avformat_find_stream_info().
|
||
* Can be set to 0 to let avformat choose using a heuristic.
|
||
*/
|
||
max_analyze_duration: s64;
|
||
|
||
key: *u8;
|
||
keylen: s32;
|
||
|
||
nb_programs: u32;
|
||
programs: **AVProgram;
|
||
|
||
/**
|
||
* Forced video codec_id.
|
||
* Demuxing: Set by user.
|
||
*/
|
||
video_codec_id: AVCodecID;
|
||
|
||
/**
|
||
* Forced audio codec_id.
|
||
* Demuxing: Set by user.
|
||
*/
|
||
audio_codec_id: AVCodecID;
|
||
|
||
/**
|
||
* Forced subtitle codec_id.
|
||
* Demuxing: Set by user.
|
||
*/
|
||
subtitle_codec_id: AVCodecID;
|
||
|
||
/**
|
||
* Maximum amount of memory in bytes to use for the index of each stream.
|
||
* If the index exceeds this size, entries will be discarded as
|
||
* needed to maintain a smaller size. This can lead to slower or less
|
||
* accurate seeking (depends on demuxer).
|
||
* Demuxers for which a full in-memory index is mandatory will ignore
|
||
* this.
|
||
* - muxing: unused
|
||
* - demuxing: set by user
|
||
*/
|
||
max_index_size: u32;
|
||
|
||
/**
|
||
* Maximum amount of memory in bytes to use for buffering frames
|
||
* obtained from realtime capture devices.
|
||
*/
|
||
max_picture_buffer: u32;
|
||
|
||
/**
|
||
* Number of chapters in AVChapter array.
|
||
* When muxing, chapters are normally written in the file header,
|
||
* so nb_chapters should normally be initialized before write_header
|
||
* is called. Some muxers (e.g. mov and mkv) can also write chapters
|
||
* in the trailer. To write chapters in the trailer, nb_chapters
|
||
* must be zero when write_header is called and non-zero when
|
||
* write_trailer is called.
|
||
* - muxing: set by user
|
||
* - demuxing: set by libavformat
|
||
*/
|
||
nb_chapters: u32;
|
||
chapters: **AVChapter;
|
||
|
||
/**
|
||
* Metadata that applies to the whole file.
|
||
*
|
||
* - demuxing: set by libavformat in avformat_open_input()
|
||
* - muxing: may be set by the caller before avformat_write_header()
|
||
*
|
||
* Freed by libavformat in avformat_free_context().
|
||
*/
|
||
metadata: *AVDictionary;
|
||
|
||
/**
|
||
* Start time of the stream in real world time, in microseconds
|
||
* since the Unix epoch (00:00 1st January 1970). That is, pts=0 in the
|
||
* stream was captured at this real world time.
|
||
* - muxing: Set by the caller before avformat_write_header(). If set to
|
||
* either 0 or AV_NOPTS_VALUE, then the current wall-time will
|
||
* be used.
|
||
* - demuxing: Set by libavformat. AV_NOPTS_VALUE if unknown. Note that
|
||
* the value may become known after some number of frames
|
||
* have been received.
|
||
*/
|
||
start_time_realtime: s64;
|
||
|
||
/**
|
||
* The number of frames used for determining the framerate in
|
||
* avformat_find_stream_info().
|
||
* Demuxing only, set by the caller before avformat_find_stream_info().
|
||
*/
|
||
fps_probe_size: s32;
|
||
|
||
/**
|
||
* Error recognition; higher values will detect more errors but may
|
||
* misdetect some more or less valid parts as errors.
|
||
* Demuxing only, set by the caller before avformat_open_input().
|
||
*/
|
||
error_recognition: s32;
|
||
|
||
/**
|
||
* Custom interrupt callbacks for the I/O layer.
|
||
*
|
||
* demuxing: set by the user before avformat_open_input().
|
||
* muxing: set by the user before avformat_write_header()
|
||
* (mainly useful for AVFMT_NOFILE formats). The callback
|
||
* should also be passed to avio_open2() if it's used to
|
||
* open the file.
|
||
*/
|
||
interrupt_callback: AVIOInterruptCB;
|
||
|
||
/**
|
||
* Flags to enable debugging.
|
||
*/
|
||
debug: s32;
|
||
|
||
/**
|
||
* Maximum buffering duration for interleaving.
|
||
*
|
||
* To ensure all the streams are interleaved correctly,
|
||
* av_interleaved_write_frame() will wait until it has at least one packet
|
||
* for each stream before actually writing any packets to the output file.
|
||
* When some streams are "sparse" (i.e. there are large gaps between
|
||
* successive packets), this can result in excessive buffering.
|
||
*
|
||
* This field specifies the maximum difference between the timestamps of the
|
||
* first and the last packet in the muxing queue, above which libavformat
|
||
* will output a packet regardless of whether it has queued a packet for all
|
||
* the streams.
|
||
*
|
||
* Muxing only, set by the caller before avformat_write_header().
|
||
*/
|
||
max_interleave_delta: s64;
|
||
|
||
/**
|
||
* Allow non-standard and experimental extension
|
||
* @see AVCodecContext.strict_std_compliance
|
||
*/
|
||
strict_std_compliance: s32;
|
||
|
||
/**
|
||
* Flags indicating events happening on the file, a combination of
|
||
* AVFMT_EVENT_FLAG_*.
|
||
*
|
||
* - demuxing: may be set by the demuxer in avformat_open_input(),
|
||
* avformat_find_stream_info() and av_read_frame(). Flags must be cleared
|
||
* by the user once the event has been handled.
|
||
* - muxing: may be set by the user after avformat_write_header() to
|
||
* indicate a user-triggered event. The muxer will clear the flags for
|
||
* events it has handled in av_[interleaved]_write_frame().
|
||
*/
|
||
event_flags: s32;
|
||
|
||
/**
|
||
* Maximum number of packets to read while waiting for the first timestamp.
|
||
* Decoding only.
|
||
*/
|
||
max_ts_probe: s32;
|
||
|
||
/**
|
||
* Avoid negative timestamps during muxing.
|
||
* Any value of the AVFMT_AVOID_NEG_TS_* constants.
|
||
* Note, this works better when using av_interleaved_write_frame().
|
||
* - muxing: Set by user
|
||
* - demuxing: unused
|
||
*/
|
||
avoid_negative_ts: s32;
|
||
|
||
/**
|
||
* Transport stream id.
|
||
* This will be moved into demuxer private options. Thus no API/ABI compatibility
|
||
*/
|
||
ts_id: s32;
|
||
|
||
/**
|
||
* Audio preload in microseconds.
|
||
* Note, not all formats support this and unpredictable things may happen if it is used when not supported.
|
||
* - encoding: Set by user
|
||
* - decoding: unused
|
||
*/
|
||
audio_preload: s32;
|
||
|
||
/**
|
||
* Max chunk time in microseconds.
|
||
* Note, not all formats support this and unpredictable things may happen if it is used when not supported.
|
||
* - encoding: Set by user
|
||
* - decoding: unused
|
||
*/
|
||
max_chunk_duration: s32;
|
||
|
||
/**
|
||
* Max chunk size in bytes
|
||
* Note, not all formats support this and unpredictable things may happen if it is used when not supported.
|
||
* - encoding: Set by user
|
||
* - decoding: unused
|
||
*/
|
||
max_chunk_size: s32;
|
||
|
||
/**
|
||
* forces the use of wallclock timestamps as pts/dts of packets
|
||
* This has undefined results in the presence of B frames.
|
||
* - encoding: unused
|
||
* - decoding: Set by user
|
||
*/
|
||
use_wallclock_as_timestamps: s32;
|
||
|
||
/**
|
||
* avio flags, used to force AVIO_FLAG_DIRECT.
|
||
* - encoding: unused
|
||
* - decoding: Set by user
|
||
*/
|
||
avio_flags: s32;
|
||
|
||
/**
|
||
* The duration field can be estimated through various ways, and this field can be used
|
||
* to know how the duration was estimated.
|
||
* - encoding: unused
|
||
* - decoding: Read by user
|
||
*/
|
||
duration_estimation_method: AVDurationEstimationMethod;
|
||
|
||
/**
|
||
* Skip initial bytes when opening stream
|
||
* - encoding: unused
|
||
* - decoding: Set by user
|
||
*/
|
||
skip_initial_bytes: s64;
|
||
|
||
/**
|
||
* Correct single timestamp overflows
|
||
* - encoding: unused
|
||
* - decoding: Set by user
|
||
*/
|
||
correct_ts_overflow: u32;
|
||
|
||
/**
|
||
* Force seeking to any (also non key) frames.
|
||
* - encoding: unused
|
||
* - decoding: Set by user
|
||
*/
|
||
seek2any: s32;
|
||
|
||
/**
|
||
* Flush the I/O context after each packet.
|
||
* - encoding: Set by user
|
||
* - decoding: unused
|
||
*/
|
||
flush_packets: s32;
|
||
|
||
/**
|
||
* format probing score.
|
||
* The maximal score is AVPROBE_SCORE_MAX, its set when the demuxer probes
|
||
* the format.
|
||
* - encoding: unused
|
||
* - decoding: set by avformat, read by user
|
||
*/
|
||
probe_score: s32;
|
||
|
||
/**
|
||
* Maximum number of bytes read from input in order to identify the
|
||
* \ref AVInputFormat "input format". Only used when the format is not set
|
||
* explicitly by the caller.
|
||
*
|
||
* Demuxing only, set by the caller before avformat_open_input().
|
||
*
|
||
* @sa probesize
|
||
*/
|
||
format_probesize: s32;
|
||
|
||
/**
|
||
* ',' separated list of allowed decoders.
|
||
* If NULL then all are allowed
|
||
* - encoding: unused
|
||
* - decoding: set by user
|
||
*/
|
||
codec_whitelist: *u8;
|
||
|
||
/**
|
||
* ',' separated list of allowed demuxers.
|
||
* If NULL then all are allowed
|
||
* - encoding: unused
|
||
* - decoding: set by user
|
||
*/
|
||
format_whitelist: *u8;
|
||
|
||
/**
|
||
* IO repositioned flag.
|
||
* This is set by avformat when the underlaying IO context read pointer
|
||
* is repositioned, for example when doing byte based seeking.
|
||
* Demuxers can use the flag to detect such changes.
|
||
*/
|
||
io_repositioned: s32;
|
||
|
||
/**
|
||
* Forced video codec.
|
||
* This allows forcing a specific decoder, even when there are multiple with
|
||
* the same codec_id.
|
||
* Demuxing: Set by user
|
||
*/
|
||
video_codec: *AVCodec;
|
||
|
||
/**
|
||
* Forced audio codec.
|
||
* This allows forcing a specific decoder, even when there are multiple with
|
||
* the same codec_id.
|
||
* Demuxing: Set by user
|
||
*/
|
||
audio_codec: *AVCodec;
|
||
|
||
/**
|
||
* Forced subtitle codec.
|
||
* This allows forcing a specific decoder, even when there are multiple with
|
||
* the same codec_id.
|
||
* Demuxing: Set by user
|
||
*/
|
||
subtitle_codec: *AVCodec;
|
||
|
||
/**
|
||
* Forced data codec.
|
||
* This allows forcing a specific decoder, even when there are multiple with
|
||
* the same codec_id.
|
||
* Demuxing: Set by user
|
||
*/
|
||
data_codec: *AVCodec;
|
||
|
||
/**
|
||
* Number of bytes to be written as padding in a metadata header.
|
||
* Demuxing: Unused.
|
||
* Muxing: Set by user via av_format_set_metadata_header_padding.
|
||
*/
|
||
metadata_header_padding: s32;
|
||
|
||
/**
|
||
* User data.
|
||
* This is a place for some private data of the user.
|
||
*/
|
||
opaque: *void;
|
||
|
||
/**
|
||
* Callback used by devices to communicate with application.
|
||
*/
|
||
control_message_cb: av_format_control_message;
|
||
|
||
/**
|
||
* Output timestamp offset, in microseconds.
|
||
* Muxing: set by user
|
||
*/
|
||
output_ts_offset: s64;
|
||
|
||
/**
|
||
* dump format separator.
|
||
* can be ", " or "\n " or anything else
|
||
* - muxing: Set by user.
|
||
* - demuxing: Set by user.
|
||
*/
|
||
dump_separator: *u8;
|
||
|
||
/**
|
||
* Forced Data codec_id.
|
||
* Demuxing: Set by user.
|
||
*/
|
||
data_codec_id: AVCodecID;
|
||
|
||
/**
|
||
* ',' separated list of allowed protocols.
|
||
* - encoding: unused
|
||
* - decoding: set by user
|
||
*/
|
||
protocol_whitelist: *u8;
|
||
|
||
/**
|
||
* A callback for opening new IO streams.
|
||
*
|
||
* Whenever a muxer or a demuxer needs to open an IO stream (typically from
|
||
* avformat_open_input() for demuxers, but for certain formats can happen at
|
||
* other times as well), it will call this callback to obtain an IO context.
|
||
*
|
||
* @param s the format context
|
||
* @param pb on success, the newly opened IO context should be returned here
|
||
* @param url the url to open
|
||
* @param flags a combination of AVIO_FLAG_*
|
||
* @param options a dictionary of additional options, with the same
|
||
* semantics as in avio_open2()
|
||
* @return 0 on success, a negative AVERROR code on failure
|
||
*
|
||
* @note Certain muxers and demuxers do nesting, i.e. they open one or more
|
||
* additional internal format contexts. Thus the AVFormatContext pointer
|
||
* passed to this callback may be different from the one facing the caller.
|
||
* It will, however, have the same 'opaque' field.
|
||
*/
|
||
io_open: #type (s: *AVFormatContext, pb: **AVIOContext, url: *u8, flags: s32, options: **AVDictionary) -> s32 #c_call;
|
||
|
||
/**
|
||
* A callback for closing the streams opened with AVFormatContext.io_open().
|
||
*
|
||
* @deprecated use io_close2
|
||
*/
|
||
io_close: #type (s: *AVFormatContext, pb: *AVIOContext) -> void #c_call;
|
||
|
||
/**
|
||
* ',' separated list of disallowed protocols.
|
||
* - encoding: unused
|
||
* - decoding: set by user
|
||
*/
|
||
protocol_blacklist: *u8;
|
||
|
||
/**
|
||
* The maximum number of streams.
|
||
* - encoding: unused
|
||
* - decoding: set by user
|
||
*/
|
||
max_streams: s32;
|
||
|
||
/**
|
||
* Skip duration calcuation in estimate_timings_from_pts.
|
||
* - encoding: unused
|
||
* - decoding: set by user
|
||
*/
|
||
skip_estimate_duration_from_pts: s32;
|
||
|
||
/**
|
||
* Maximum number of packets that can be probed
|
||
* - encoding: unused
|
||
* - decoding: set by user
|
||
*/
|
||
max_probe_packets: s32;
|
||
|
||
/**
|
||
* A callback for closing the streams opened with AVFormatContext.io_open().
|
||
*
|
||
* Using this is preferred over io_close, because this can return an error.
|
||
* Therefore this callback is used instead of io_close by the generic
|
||
* libavformat code if io_close is NULL or the default.
|
||
*
|
||
* @param s the format context
|
||
* @param pb IO context to be closed and freed
|
||
* @return 0 on success, a negative AVERROR code on failure
|
||
*/
|
||
io_close2: #type (s: *AVFormatContext, pb: *AVIOContext) -> s32 #c_call;
|
||
}
|
||
|
||
/**
|
||
* This function will cause global side data to be injected in the next packet
|
||
* of each stream as well as after any subsequent seek.
|
||
*/
|
||
av_format_inject_global_side_data :: (s: *AVFormatContext) -> void #foreign libavformat_60;
|
||
|
||
/**
|
||
* Returns the method used to set ctx->duration.
|
||
*
|
||
* @return AVFMT_DURATION_FROM_PTS, AVFMT_DURATION_FROM_STREAM, or AVFMT_DURATION_FROM_BITRATE.
|
||
*/
|
||
av_fmt_ctx_get_duration_estimation_method :: (ctx: *AVFormatContext) -> AVDurationEstimationMethod #foreign libavformat_60;
|
||
|
||
/**
|
||
* Return the LIBAVFORMAT_VERSION_INT constant.
|
||
*/
|
||
avformat_version :: () -> u32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Return the libavformat build-time configuration.
|
||
*/
|
||
avformat_configuration :: () -> *u8 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Return the libavformat license.
|
||
*/
|
||
avformat_license :: () -> *u8 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Do global initialization of network libraries. This is optional,
|
||
* and not recommended anymore.
|
||
*
|
||
* This functions only exists to work around thread-safety issues
|
||
* with older GnuTLS or OpenSSL libraries. If libavformat is linked
|
||
* to newer versions of those libraries, or if you do not use them,
|
||
* calling this function is unnecessary. Otherwise, you need to call
|
||
* this function before any other threads using them are started.
|
||
*
|
||
* This function will be deprecated once support for older GnuTLS and
|
||
* OpenSSL libraries is removed, and this function has no purpose
|
||
* anymore.
|
||
*/
|
||
avformat_network_init :: () -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Undo the initialization done by avformat_network_init. Call it only
|
||
* once for each time you called avformat_network_init.
|
||
*/
|
||
avformat_network_deinit :: () -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Iterate over all registered muxers.
|
||
*
|
||
* @param opaque a pointer where libavformat will store the iteration state. Must
|
||
* point to NULL to start the iteration.
|
||
*
|
||
* @return the next registered muxer or NULL when the iteration is
|
||
* finished
|
||
*/
|
||
av_muxer_iterate :: (opaque: **void) -> *AVOutputFormat #foreign libavformat_60;
|
||
|
||
/**
|
||
* Iterate over all registered demuxers.
|
||
*
|
||
* @param opaque a pointer where libavformat will store the iteration state.
|
||
* Must point to NULL to start the iteration.
|
||
*
|
||
* @return the next registered demuxer or NULL when the iteration is
|
||
* finished
|
||
*/
|
||
av_demuxer_iterate :: (opaque: **void) -> *AVInputFormat #foreign libavformat_60;
|
||
|
||
/**
|
||
* Allocate an AVFormatContext.
|
||
* avformat_free_context() can be used to free the context and everything
|
||
* allocated by the framework within it.
|
||
*/
|
||
avformat_alloc_context :: () -> *AVFormatContext #foreign libavformat_60;
|
||
|
||
/**
|
||
* Free an AVFormatContext and all its streams.
|
||
* @param s context to free
|
||
*/
|
||
avformat_free_context :: (s: *AVFormatContext) -> void #foreign libavformat_60;
|
||
|
||
/**
|
||
* Get the AVClass for AVFormatContext. It can be used in combination with
|
||
* AV_OPT_SEARCH_FAKE_OBJ for examining options.
|
||
*
|
||
* @see av_opt_find().
|
||
*/
|
||
avformat_get_class :: () -> *AVClass #foreign libavformat_60;
|
||
|
||
/**
|
||
* Get the AVClass for AVStream. It can be used in combination with
|
||
* AV_OPT_SEARCH_FAKE_OBJ for examining options.
|
||
*
|
||
* @see av_opt_find().
|
||
*/
|
||
av_stream_get_class :: () -> *AVClass #foreign libavformat_60;
|
||
|
||
/**
|
||
* Add a new stream to a media file.
|
||
*
|
||
* When demuxing, it is called by the demuxer in read_header(). If the
|
||
* flag AVFMTCTX_NOHEADER is set in s.ctx_flags, then it may also
|
||
* be called in read_packet().
|
||
*
|
||
* When muxing, should be called by the user before avformat_write_header().
|
||
*
|
||
* User is required to call avformat_free_context() to clean up the allocation
|
||
* by avformat_new_stream().
|
||
*
|
||
* @param s media file handle
|
||
* @param c unused, does nothing
|
||
*
|
||
* @return newly created stream or NULL on error.
|
||
*/
|
||
avformat_new_stream :: (s: *AVFormatContext, c: *AVCodec) -> *AVStream #foreign libavformat_60;
|
||
|
||
/**
|
||
* Wrap an existing array as stream side data.
|
||
*
|
||
* @param st stream
|
||
* @param type side information type
|
||
* @param data the side data array. It must be allocated with the av_malloc()
|
||
* family of functions. The ownership of the data is transferred to
|
||
* st.
|
||
* @param size side information size
|
||
*
|
||
* @return zero on success, a negative AVERROR code on failure. On failure,
|
||
* the stream is unchanged and the data remains owned by the caller.
|
||
*/
|
||
av_stream_add_side_data :: (st: *AVStream, type: AVPacketSideDataType, data: *u8, size: u64) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Allocate new information from stream.
|
||
*
|
||
* @param stream stream
|
||
* @param type desired side information type
|
||
* @param size side information size
|
||
*
|
||
* @return pointer to fresh allocated data or NULL otherwise
|
||
*/
|
||
av_stream_new_side_data :: (stream: *AVStream, type: AVPacketSideDataType, size: u64) -> *u8 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Get side information from stream.
|
||
*
|
||
* @param stream stream
|
||
* @param type desired side information type
|
||
* @param size If supplied, *size will be set to the size of the side data
|
||
* or to zero if the desired side data is not present.
|
||
*
|
||
* @return pointer to data if present or NULL otherwise
|
||
*/
|
||
av_stream_get_side_data :: (stream: *AVStream, type: AVPacketSideDataType, size: *u64) -> *u8 #foreign libavformat_60;
|
||
|
||
av_new_program :: (s: *AVFormatContext, id: s32) -> *AVProgram #foreign libavformat_60;
|
||
|
||
/**
|
||
* Allocate an AVFormatContext for an output format.
|
||
* avformat_free_context() can be used to free the context and
|
||
* everything allocated by the framework within it.
|
||
*
|
||
* @param ctx pointee is set to the created format context,
|
||
* or to NULL in case of failure
|
||
* @param oformat format to use for allocating the context, if NULL
|
||
* format_name and filename are used instead
|
||
* @param format_name the name of output format to use for allocating the
|
||
* context, if NULL filename is used instead
|
||
* @param filename the name of the filename to use for allocating the
|
||
* context, may be NULL
|
||
*
|
||
* @return >= 0 in case of success, a negative AVERROR code in case of
|
||
* failure
|
||
*/
|
||
avformat_alloc_output_context2 :: (ctx: **AVFormatContext, oformat: *AVOutputFormat, format_name: *u8, filename: *u8) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Find AVInputFormat based on the short name of the input format.
|
||
*/
|
||
av_find_input_format :: (short_name: *u8) -> *AVInputFormat #foreign libavformat_60;
|
||
|
||
/**
|
||
* Guess the file format.
|
||
*
|
||
* @param pd data to be probed
|
||
* @param is_opened Whether the file is already opened; determines whether
|
||
* demuxers with or without AVFMT_NOFILE are probed.
|
||
*/
|
||
av_probe_input_format :: (pd: *AVProbeData, is_opened: s32) -> *AVInputFormat #foreign libavformat_60;
|
||
|
||
/**
|
||
* Guess the file format.
|
||
*
|
||
* @param pd data to be probed
|
||
* @param is_opened Whether the file is already opened; determines whether
|
||
* demuxers with or without AVFMT_NOFILE are probed.
|
||
* @param score_max A probe score larger that this is required to accept a
|
||
* detection, the variable is set to the actual detection
|
||
* score afterwards.
|
||
* If the score is <= AVPROBE_SCORE_MAX / 4 it is recommended
|
||
* to retry with a larger probe buffer.
|
||
*/
|
||
av_probe_input_format2 :: (pd: *AVProbeData, is_opened: s32, score_max: *s32) -> *AVInputFormat #foreign libavformat_60;
|
||
|
||
/**
|
||
* Guess the file format.
|
||
*
|
||
* @param is_opened Whether the file is already opened; determines whether
|
||
* demuxers with or without AVFMT_NOFILE are probed.
|
||
* @param score_ret The score of the best detection.
|
||
*/
|
||
av_probe_input_format3 :: (pd: *AVProbeData, is_opened: s32, score_ret: *s32) -> *AVInputFormat #foreign libavformat_60;
|
||
|
||
/**
|
||
* Probe a bytestream to determine the input format. Each time a probe returns
|
||
* with a score that is too low, the probe buffer size is increased and another
|
||
* attempt is made. When the maximum probe size is reached, the input format
|
||
* with the highest score is returned.
|
||
*
|
||
* @param pb the bytestream to probe
|
||
* @param fmt the input format is put here
|
||
* @param url the url of the stream
|
||
* @param logctx the log context
|
||
* @param offset the offset within the bytestream to probe from
|
||
* @param max_probe_size the maximum probe buffer size (zero for default)
|
||
*
|
||
* @return the score in case of success, a negative value corresponding to an
|
||
* the maximal score is AVPROBE_SCORE_MAX
|
||
* AVERROR code otherwise
|
||
*/
|
||
av_probe_input_buffer2 :: (pb: *AVIOContext, fmt: **AVInputFormat, url: *u8, logctx: *void, offset: u32, max_probe_size: u32) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Like av_probe_input_buffer2() but returns 0 on success
|
||
*/
|
||
av_probe_input_buffer :: (pb: *AVIOContext, fmt: **AVInputFormat, url: *u8, logctx: *void, offset: u32, max_probe_size: u32) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Open an input stream and read the header. The codecs are not opened.
|
||
* The stream must be closed with avformat_close_input().
|
||
*
|
||
* @param ps Pointer to user-supplied AVFormatContext (allocated by
|
||
* avformat_alloc_context). May be a pointer to NULL, in
|
||
* which case an AVFormatContext is allocated by this
|
||
* function and written into ps.
|
||
* Note that a user-supplied AVFormatContext will be freed
|
||
* on failure.
|
||
* @param url URL of the stream to open.
|
||
* @param fmt If non-NULL, this parameter forces a specific input format.
|
||
* Otherwise the format is autodetected.
|
||
* @param options A dictionary filled with AVFormatContext and demuxer-private
|
||
* options.
|
||
* On return this parameter will be destroyed and replaced with
|
||
* a dict containing options that were not found. May be NULL.
|
||
*
|
||
* @return 0 on success, a negative AVERROR on failure.
|
||
*
|
||
* @note If you want to use custom IO, preallocate the format context and set its pb field.
|
||
*/
|
||
avformat_open_input :: (ps: **AVFormatContext, url: *u8, fmt: *AVInputFormat, options: **AVDictionary) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Read packets of a media file to get stream information. This
|
||
* is useful for file formats with no headers such as MPEG. This
|
||
* function also computes the real framerate in case of MPEG-2 repeat
|
||
* frame mode.
|
||
* The logical file position is not changed by this function;
|
||
* examined packets may be buffered for later processing.
|
||
*
|
||
* @param ic media file handle
|
||
* @param options If non-NULL, an ic.nb_streams long array of pointers to
|
||
* dictionaries, where i-th member contains options for
|
||
* codec corresponding to i-th stream.
|
||
* On return each dictionary will be filled with options that were not found.
|
||
* @return >=0 if OK, AVERROR_xxx on error
|
||
*
|
||
* @note this function isn't guaranteed to open all the codecs, so
|
||
* options being non-empty at return is a perfectly normal behavior.
|
||
*
|
||
* @todo Let the user decide somehow what information is needed so that
|
||
* we do not waste time getting stuff the user does not need.
|
||
*/
|
||
avformat_find_stream_info :: (ic: *AVFormatContext, options: **AVDictionary) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Find the programs which belong to a given stream.
|
||
*
|
||
* @param ic media file handle
|
||
* @param last the last found program, the search will start after this
|
||
* program, or from the beginning if it is NULL
|
||
* @param s stream index
|
||
*
|
||
* @return the next program which belongs to s, NULL if no program is found or
|
||
* the last program is not among the programs of ic.
|
||
*/
|
||
av_find_program_from_stream :: (ic: *AVFormatContext, last: *AVProgram, s: s32) -> *AVProgram #foreign libavformat_60;
|
||
|
||
av_program_add_stream_index :: (ac: *AVFormatContext, progid: s32, idx: u32) -> void #foreign libavformat_60;
|
||
|
||
/**
|
||
* Find the "best" stream in the file.
|
||
* The best stream is determined according to various heuristics as the most
|
||
* likely to be what the user expects.
|
||
* If the decoder parameter is non-NULL, av_find_best_stream will find the
|
||
* default decoder for the stream's codec; streams for which no decoder can
|
||
* be found are ignored.
|
||
*
|
||
* @param ic media file handle
|
||
* @param type stream type: video, audio, subtitles, etc.
|
||
* @param wanted_stream_nb user-requested stream number,
|
||
* or -1 for automatic selection
|
||
* @param related_stream try to find a stream related (eg. in the same
|
||
* program) to this one, or -1 if none
|
||
* @param decoder_ret if non-NULL, returns the decoder for the
|
||
* selected stream
|
||
* @param flags flags; none are currently defined
|
||
*
|
||
* @return the non-negative stream number in case of success,
|
||
* AVERROR_STREAM_NOT_FOUND if no stream with the requested type
|
||
* could be found,
|
||
* AVERROR_DECODER_NOT_FOUND if streams were found but no decoder
|
||
*
|
||
* @note If av_find_best_stream returns successfully and decoder_ret is not
|
||
* NULL, then *decoder_ret is guaranteed to be set to a valid AVCodec.
|
||
*/
|
||
av_find_best_stream :: (ic: *AVFormatContext, type: AVMediaType, wanted_stream_nb: s32, related_stream: s32, decoder_ret: **AVCodec, flags: s32) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Return the next frame of a stream.
|
||
* This function returns what is stored in the file, and does not validate
|
||
* that what is there are valid frames for the decoder. It will split what is
|
||
* stored in the file into frames and return one for each call. It will not
|
||
* omit invalid data between valid frames so as to give the decoder the maximum
|
||
* information possible for decoding.
|
||
*
|
||
* On success, the returned packet is reference-counted (pkt->buf is set) and
|
||
* valid indefinitely. The packet must be freed with av_packet_unref() when
|
||
* it is no longer needed. For video, the packet contains exactly one frame.
|
||
* For audio, it contains an integer number of frames if each frame has
|
||
* a known fixed size (e.g. PCM or ADPCM data). If the audio frames have
|
||
* a variable size (e.g. MPEG audio), then it contains one frame.
|
||
*
|
||
* pkt->pts, pkt->dts and pkt->duration are always set to correct
|
||
* values in AVStream.time_base units (and guessed if the format cannot
|
||
* provide them). pkt->pts can be AV_NOPTS_VALUE if the video format
|
||
* has B-frames, so it is better to rely on pkt->dts if you do not
|
||
* decompress the payload.
|
||
*
|
||
* @return 0 if OK, < 0 on error or end of file. On error, pkt will be blank
|
||
* (as if it came from av_packet_alloc()).
|
||
*
|
||
* @note pkt will be initialized, so it may be uninitialized, but it must not
|
||
* contain data that needs to be freed.
|
||
*/
|
||
av_read_frame :: (s: *AVFormatContext, pkt: *AVPacket) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Seek to the keyframe at timestamp.
|
||
* 'timestamp' in 'stream_index'.
|
||
*
|
||
* @param s media file handle
|
||
* @param stream_index If stream_index is (-1), a default stream is selected,
|
||
* and timestamp is automatically converted from
|
||
* AV_TIME_BASE units to the stream specific time_base.
|
||
* @param timestamp Timestamp in AVStream.time_base units or, if no stream
|
||
* is specified, in AV_TIME_BASE units.
|
||
* @param flags flags which select direction and seeking mode
|
||
*
|
||
* @return >= 0 on success
|
||
*/
|
||
av_seek_frame :: (s: *AVFormatContext, stream_index: s32, timestamp: s64, flags: s32) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Seek to timestamp ts.
|
||
* Seeking will be done so that the point from which all active streams
|
||
* can be presented successfully will be closest to ts and within min/max_ts.
|
||
* Active streams are all streams that have AVStream.discard < AVDISCARD_ALL.
|
||
*
|
||
* If flags contain AVSEEK_FLAG_BYTE, then all timestamps are in bytes and
|
||
* are the file position (this may not be supported by all demuxers).
|
||
* If flags contain AVSEEK_FLAG_FRAME, then all timestamps are in frames
|
||
* in the stream with stream_index (this may not be supported by all demuxers).
|
||
* Otherwise all timestamps are in units of the stream selected by stream_index
|
||
* or if stream_index is -1, in AV_TIME_BASE units.
|
||
* If flags contain AVSEEK_FLAG_ANY, then non-keyframes are treated as
|
||
* keyframes (this may not be supported by all demuxers).
|
||
* If flags contain AVSEEK_FLAG_BACKWARD, it is ignored.
|
||
*
|
||
* @param s media file handle
|
||
* @param stream_index index of the stream which is used as time base reference
|
||
* @param min_ts smallest acceptable timestamp
|
||
* @param ts target timestamp
|
||
* @param max_ts largest acceptable timestamp
|
||
* @param flags flags
|
||
* @return >=0 on success, error code otherwise
|
||
*
|
||
* @note This is part of the new seek API which is still under construction.
|
||
*/
|
||
avformat_seek_file :: (s: *AVFormatContext, stream_index: s32, min_ts: s64, ts: s64, max_ts: s64, flags: s32) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Discard all internally buffered data. This can be useful when dealing with
|
||
* discontinuities in the byte stream. Generally works only with formats that
|
||
* can resync. This includes headerless formats like MPEG-TS/TS but should also
|
||
* work with NUT, Ogg and in a limited way AVI for example.
|
||
*
|
||
* The set of streams, the detected duration, stream parameters and codecs do
|
||
* not change when calling this function. If you want a complete reset, it's
|
||
* better to open a new AVFormatContext.
|
||
*
|
||
* This does not flush the AVIOContext (s->pb). If necessary, call
|
||
* avio_flush(s->pb) before calling this function.
|
||
*
|
||
* @param s media file handle
|
||
* @return >=0 on success, error code otherwise
|
||
*/
|
||
avformat_flush :: (s: *AVFormatContext) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Start playing a network-based stream (e.g. RTSP stream) at the
|
||
* current position.
|
||
*/
|
||
av_read_play :: (s: *AVFormatContext) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Pause a network-based stream (e.g. RTSP stream).
|
||
*
|
||
* Use av_read_play() to resume it.
|
||
*/
|
||
av_read_pause :: (s: *AVFormatContext) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Close an opened input AVFormatContext. Free it and all its contents
|
||
* and set *s to NULL.
|
||
*/
|
||
avformat_close_input :: (s: **AVFormatContext) -> void #foreign libavformat_60;
|
||
|
||
/**
|
||
* Allocate the stream private data and write the stream header to
|
||
* an output media file.
|
||
*
|
||
* @param s Media file handle, must be allocated with
|
||
* avformat_alloc_context().
|
||
* Its \ref AVFormatContext.oformat "oformat" field must be set
|
||
* to the desired output format;
|
||
* Its \ref AVFormatContext.pb "pb" field must be set to an
|
||
* already opened ::AVIOContext.
|
||
* @param options An ::AVDictionary filled with AVFormatContext and
|
||
* muxer-private options.
|
||
* On return this parameter will be destroyed and replaced with
|
||
* a dict containing options that were not found. May be NULL.
|
||
*
|
||
* @retval AVSTREAM_INIT_IN_WRITE_HEADER On success, if the codec had not already been
|
||
* fully initialized in avformat_init_output().
|
||
* @retval AVSTREAM_INIT_IN_INIT_OUTPUT On success, if the codec had already been fully
|
||
* initialized in avformat_init_output().
|
||
* @retval AVERROR A negative AVERROR on failure.
|
||
*
|
||
* @see av_opt_find, av_dict_set, avio_open, av_oformat_next, avformat_init_output.
|
||
*/
|
||
avformat_write_header :: (s: *AVFormatContext, options: **AVDictionary) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Allocate the stream private data and initialize the codec, but do not write the header.
|
||
* May optionally be used before avformat_write_header() to initialize stream parameters
|
||
* before actually writing the header.
|
||
* If using this function, do not pass the same options to avformat_write_header().
|
||
*
|
||
* @param s Media file handle, must be allocated with
|
||
* avformat_alloc_context().
|
||
* Its \ref AVFormatContext.oformat "oformat" field must be set
|
||
* to the desired output format;
|
||
* Its \ref AVFormatContext.pb "pb" field must be set to an
|
||
* already opened ::AVIOContext.
|
||
* @param options An ::AVDictionary filled with AVFormatContext and
|
||
* muxer-private options.
|
||
* On return this parameter will be destroyed and replaced with
|
||
* a dict containing options that were not found. May be NULL.
|
||
*
|
||
* @retval AVSTREAM_INIT_IN_WRITE_HEADER On success, if the codec requires
|
||
* avformat_write_header to fully initialize.
|
||
* @retval AVSTREAM_INIT_IN_INIT_OUTPUT On success, if the codec has been fully
|
||
* initialized.
|
||
* @retval AVERROR Anegative AVERROR on failure.
|
||
*
|
||
* @see av_opt_find, av_dict_set, avio_open, av_oformat_next, avformat_write_header.
|
||
*/
|
||
avformat_init_output :: (s: *AVFormatContext, options: **AVDictionary) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Write a packet to an output media file.
|
||
*
|
||
* This function passes the packet directly to the muxer, without any buffering
|
||
* or reordering. The caller is responsible for correctly interleaving the
|
||
* packets if the format requires it. Callers that want libavformat to handle
|
||
* the interleaving should call av_interleaved_write_frame() instead of this
|
||
* function.
|
||
*
|
||
* @param s media file handle
|
||
* @param pkt The packet containing the data to be written. Note that unlike
|
||
* av_interleaved_write_frame(), this function does not take
|
||
* ownership of the packet passed to it (though some muxers may make
|
||
* an internal reference to the input packet).
|
||
* <br>
|
||
* This parameter can be NULL (at any time, not just at the end), in
|
||
* order to immediately flush data buffered within the muxer, for
|
||
* muxers that buffer up data internally before writing it to the
|
||
* output.
|
||
* <br>
|
||
* Packet's @ref AVPacket.stream_index "stream_index" field must be
|
||
* set to the index of the corresponding stream in @ref
|
||
* AVFormatContext.streams "s->streams".
|
||
* <br>
|
||
* The timestamps (@ref AVPacket.pts "pts", @ref AVPacket.dts "dts")
|
||
* must be set to correct values in the stream's timebase (unless the
|
||
* output format is flagged with the AVFMT_NOTIMESTAMPS flag, then
|
||
* they can be set to AV_NOPTS_VALUE).
|
||
* The dts for subsequent packets passed to this function must be strictly
|
||
* increasing when compared in their respective timebases (unless the
|
||
* output format is flagged with the AVFMT_TS_NONSTRICT, then they
|
||
* merely have to be nondecreasing). @ref AVPacket.duration
|
||
* "duration") should also be set if known.
|
||
* @return < 0 on error, = 0 if OK, 1 if flushed and there is no more data to flush
|
||
*
|
||
* @see av_interleaved_write_frame()
|
||
*/
|
||
av_write_frame :: (s: *AVFormatContext, pkt: *AVPacket) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Write a packet to an output media file ensuring correct interleaving.
|
||
*
|
||
* This function will buffer the packets internally as needed to make sure the
|
||
* packets in the output file are properly interleaved, usually ordered by
|
||
* increasing dts. Callers doing their own interleaving should call
|
||
* av_write_frame() instead of this function.
|
||
*
|
||
* Using this function instead of av_write_frame() can give muxers advance
|
||
* knowledge of future packets, improving e.g. the behaviour of the mp4
|
||
* muxer for VFR content in fragmenting mode.
|
||
*
|
||
* @param s media file handle
|
||
* @param pkt The packet containing the data to be written.
|
||
* <br>
|
||
* If the packet is reference-counted, this function will take
|
||
* ownership of this reference and unreference it later when it sees
|
||
* fit. If the packet is not reference-counted, libavformat will
|
||
* make a copy.
|
||
* The returned packet will be blank (as if returned from
|
||
* av_packet_alloc()), even on error.
|
||
* <br>
|
||
* This parameter can be NULL (at any time, not just at the end), to
|
||
* flush the interleaving queues.
|
||
* <br>
|
||
* Packet's @ref AVPacket.stream_index "stream_index" field must be
|
||
* set to the index of the corresponding stream in @ref
|
||
* AVFormatContext.streams "s->streams".
|
||
* <br>
|
||
* The timestamps (@ref AVPacket.pts "pts", @ref AVPacket.dts "dts")
|
||
* must be set to correct values in the stream's timebase (unless the
|
||
* output format is flagged with the AVFMT_NOTIMESTAMPS flag, then
|
||
* they can be set to AV_NOPTS_VALUE).
|
||
* The dts for subsequent packets in one stream must be strictly
|
||
* increasing (unless the output format is flagged with the
|
||
* AVFMT_TS_NONSTRICT, then they merely have to be nondecreasing).
|
||
* @ref AVPacket.duration "duration" should also be set if known.
|
||
*
|
||
* @return 0 on success, a negative AVERROR on error.
|
||
*
|
||
* @see av_write_frame(), AVFormatContext.max_interleave_delta
|
||
*/
|
||
av_interleaved_write_frame :: (s: *AVFormatContext, pkt: *AVPacket) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Write an uncoded frame to an output media file.
|
||
*
|
||
* The frame must be correctly interleaved according to the container
|
||
* specification; if not, av_interleaved_write_uncoded_frame() must be used.
|
||
*
|
||
* See av_interleaved_write_uncoded_frame() for details.
|
||
*/
|
||
av_write_uncoded_frame :: (s: *AVFormatContext, stream_index: s32, frame: *AVFrame) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Write an uncoded frame to an output media file.
|
||
*
|
||
* If the muxer supports it, this function makes it possible to write an AVFrame
|
||
* structure directly, without encoding it into a packet.
|
||
* It is mostly useful for devices and similar special muxers that use raw
|
||
* video or PCM data and will not serialize it into a byte stream.
|
||
*
|
||
* To test whether it is possible to use it with a given muxer and stream,
|
||
* use av_write_uncoded_frame_query().
|
||
*
|
||
* The caller gives up ownership of the frame and must not access it
|
||
* afterwards.
|
||
*
|
||
* @return >=0 for success, a negative code on error
|
||
*/
|
||
av_interleaved_write_uncoded_frame :: (s: *AVFormatContext, stream_index: s32, frame: *AVFrame) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Test whether a muxer supports uncoded frame.
|
||
*
|
||
* @return >=0 if an uncoded frame can be written to that muxer and stream,
|
||
* <0 if not
|
||
*/
|
||
av_write_uncoded_frame_query :: (s: *AVFormatContext, stream_index: s32) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Write the stream trailer to an output media file and free the
|
||
* file private data.
|
||
*
|
||
* May only be called after a successful call to avformat_write_header.
|
||
*
|
||
* @param s media file handle
|
||
* @return 0 if OK, AVERROR_xxx on error
|
||
*/
|
||
av_write_trailer :: (s: *AVFormatContext) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Return the output format in the list of registered output formats
|
||
* which best matches the provided parameters, or return NULL if
|
||
* there is no match.
|
||
*
|
||
* @param short_name if non-NULL checks if short_name matches with the
|
||
* names of the registered formats
|
||
* @param filename if non-NULL checks if filename terminates with the
|
||
* extensions of the registered formats
|
||
* @param mime_type if non-NULL checks if mime_type matches with the
|
||
* MIME type of the registered formats
|
||
*/
|
||
av_guess_format :: (short_name: *u8, filename: *u8, mime_type: *u8) -> *AVOutputFormat #foreign libavformat_60;
|
||
|
||
/**
|
||
* Guess the codec ID based upon muxer and filename.
|
||
*/
|
||
av_guess_codec :: (fmt: *AVOutputFormat, short_name: *u8, filename: *u8, mime_type: *u8, type: AVMediaType) -> AVCodecID #foreign libavformat_60;
|
||
|
||
/**
|
||
* Get timing information for the data currently output.
|
||
* The exact meaning of "currently output" depends on the format.
|
||
* It is mostly relevant for devices that have an internal buffer and/or
|
||
* work in real time.
|
||
* @param s media file handle
|
||
* @param stream stream in the media file
|
||
* @param[out] dts DTS of the last packet output for the stream, in stream
|
||
* time_base units
|
||
* @param[out] wall absolute time when that packet whas output,
|
||
* in microsecond
|
||
* @retval 0 Success
|
||
* @retval AVERROR(ENOSYS) The format does not support it
|
||
*
|
||
* @note Some formats or devices may not allow to measure dts and wall
|
||
* atomically.
|
||
*/
|
||
av_get_output_timestamp :: (s: *AVFormatContext, stream: s32, dts: *s64, wall: *s64) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Send a nice hexadecimal dump of a buffer to the log.
|
||
*
|
||
* @param avcl A pointer to an arbitrary struct of which the first field is a
|
||
* pointer to an AVClass struct.
|
||
* @param level The importance level of the message, lower values signifying
|
||
* higher importance.
|
||
* @param buf buffer
|
||
* @param size buffer size
|
||
*
|
||
* @see av_hex_dump, av_pkt_dump2, av_pkt_dump_log2
|
||
*/
|
||
av_hex_dump_log :: (avcl: *void, level: s32, buf: *u8, size: s32) -> void #foreign libavformat_60;
|
||
|
||
/**
|
||
* Send a nice dump of a packet to the log.
|
||
*
|
||
* @param avcl A pointer to an arbitrary struct of which the first field is a
|
||
* pointer to an AVClass struct.
|
||
* @param level The importance level of the message, lower values signifying
|
||
* higher importance.
|
||
* @param pkt packet to dump
|
||
* @param dump_payload True if the payload must be displayed, too.
|
||
* @param st AVStream that the packet belongs to
|
||
*/
|
||
av_pkt_dump_log2 :: (avcl: *void, level: s32, pkt: *AVPacket, dump_payload: s32, st: *AVStream) -> void #foreign libavformat_60;
|
||
|
||
/**
|
||
* Get the AVCodecID for the given codec tag tag.
|
||
* If no codec id is found returns AV_CODEC_ID_NONE.
|
||
*
|
||
* @param tags list of supported codec_id-codec_tag pairs, as stored
|
||
* in AVInputFormat.codec_tag and AVOutputFormat.codec_tag
|
||
* @param tag codec tag to match to a codec ID
|
||
*/
|
||
av_codec_get_id :: (tags: **AVCodecTag, tag: u32) -> AVCodecID #foreign libavformat_60;
|
||
|
||
/**
|
||
* Get the codec tag for the given codec id id.
|
||
* If no codec tag is found returns 0.
|
||
*
|
||
* @param tags list of supported codec_id-codec_tag pairs, as stored
|
||
* in AVInputFormat.codec_tag and AVOutputFormat.codec_tag
|
||
* @param id codec ID to match to a codec tag
|
||
*/
|
||
av_codec_get_tag :: (tags: **AVCodecTag, id: AVCodecID) -> u32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Get the codec tag for the given codec id.
|
||
*
|
||
* @param tags list of supported codec_id - codec_tag pairs, as stored
|
||
* in AVInputFormat.codec_tag and AVOutputFormat.codec_tag
|
||
* @param id codec id that should be searched for in the list
|
||
* @param tag A pointer to the found tag
|
||
* @return 0 if id was not found in tags, > 0 if it was found
|
||
*/
|
||
av_codec_get_tag2 :: (tags: **AVCodecTag, id: AVCodecID, tag: *u32) -> s32 #foreign libavformat_60;
|
||
|
||
av_find_default_stream_index :: (s: *AVFormatContext) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Get the index for a specific timestamp.
|
||
*
|
||
* @param st stream that the timestamp belongs to
|
||
* @param timestamp timestamp to retrieve the index for
|
||
* @param flags if AVSEEK_FLAG_BACKWARD then the returned index will correspond
|
||
* to the timestamp which is <= the requested one, if backward
|
||
* is 0, then it will be >=
|
||
* if AVSEEK_FLAG_ANY seek to any frame, only keyframes otherwise
|
||
* @return < 0 if no such timestamp could be found
|
||
*/
|
||
av_index_search_timestamp :: (st: *AVStream, timestamp: s64, flags: s32) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Get the index entry count for the given AVStream.
|
||
*
|
||
* @param st stream
|
||
* @return the number of index entries in the stream
|
||
*/
|
||
avformat_index_get_entries_count :: (st: *AVStream) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Get the AVIndexEntry corresponding to the given index.
|
||
*
|
||
* @param st Stream containing the requested AVIndexEntry.
|
||
* @param idx The desired index.
|
||
* @return A pointer to the requested AVIndexEntry if it exists, NULL otherwise.
|
||
*
|
||
* @note The pointer returned by this function is only guaranteed to be valid
|
||
* until any function that takes the stream or the parent AVFormatContext
|
||
* as input argument is called.
|
||
*/
|
||
avformat_index_get_entry :: (st: *AVStream, idx: s32) -> *AVIndexEntry #foreign libavformat_60;
|
||
|
||
/**
|
||
* Get the AVIndexEntry corresponding to the given timestamp.
|
||
*
|
||
* @param st Stream containing the requested AVIndexEntry.
|
||
* @param wanted_timestamp Timestamp to retrieve the index entry for.
|
||
* @param flags If AVSEEK_FLAG_BACKWARD then the returned entry will correspond
|
||
* to the timestamp which is <= the requested one, if backward
|
||
* is 0, then it will be >=
|
||
* if AVSEEK_FLAG_ANY seek to any frame, only keyframes otherwise.
|
||
* @return A pointer to the requested AVIndexEntry if it exists, NULL otherwise.
|
||
*
|
||
* @note The pointer returned by this function is only guaranteed to be valid
|
||
* until any function that takes the stream or the parent AVFormatContext
|
||
* as input argument is called.
|
||
*/
|
||
avformat_index_get_entry_from_timestamp :: (st: *AVStream, wanted_timestamp: s64, flags: s32) -> *AVIndexEntry #foreign libavformat_60;
|
||
|
||
/**
|
||
* Add an index entry into a sorted list. Update the entry if the list
|
||
* already contains it.
|
||
*
|
||
* @param timestamp timestamp in the time base of the given stream
|
||
*/
|
||
av_add_index_entry :: (st: *AVStream, pos: s64, timestamp: s64, size: s32, distance: s32, flags: s32) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Split a URL string into components.
|
||
*
|
||
* The pointers to buffers for storing individual components may be null,
|
||
* in order to ignore that component. Buffers for components not found are
|
||
* set to empty strings. If the port is not found, it is set to a negative
|
||
* value.
|
||
*
|
||
* @param proto the buffer for the protocol
|
||
* @param proto_size the size of the proto buffer
|
||
* @param authorization the buffer for the authorization
|
||
* @param authorization_size the size of the authorization buffer
|
||
* @param hostname the buffer for the host name
|
||
* @param hostname_size the size of the hostname buffer
|
||
* @param port_ptr a pointer to store the port number in
|
||
* @param path the buffer for the path
|
||
* @param path_size the size of the path buffer
|
||
* @param url the URL to split
|
||
*/
|
||
av_url_split :: (proto: *u8, proto_size: s32, authorization: *u8, authorization_size: s32, hostname: *u8, hostname_size: s32, port_ptr: *s32, path: *u8, path_size: s32, url: *u8) -> void #foreign libavformat_60;
|
||
|
||
/**
|
||
* Print detailed information about the input or output format, such as
|
||
* duration, bitrate, streams, container, programs, metadata, side data,
|
||
* codec and time base.
|
||
*
|
||
* @param ic the context to analyze
|
||
* @param index index of the stream to dump information about
|
||
* @param url the URL to print, such as source or destination file
|
||
* @param is_output Select whether the specified context is an input(0) or output(1)
|
||
*/
|
||
av_dump_format :: (ic: *AVFormatContext, index: s32, url: *u8, is_output: s32) -> void #foreign libavformat_60;
|
||
|
||
/**
|
||
* Return in 'buf' the path with '%d' replaced by a number.
|
||
*
|
||
* Also handles the '%0nd' format where 'n' is the total number
|
||
* of digits and '%%'.
|
||
*
|
||
* @param buf destination buffer
|
||
* @param buf_size destination buffer size
|
||
* @param path numbered sequence string
|
||
* @param number frame number
|
||
* @param flags AV_FRAME_FILENAME_FLAGS_*
|
||
* @return 0 if OK, -1 on format error
|
||
*/
|
||
av_get_frame_filename2 :: (buf: *u8, buf_size: s32, path: *u8, number: s32, flags: s32) -> s32 #foreign libavformat_60;
|
||
|
||
av_get_frame_filename :: (buf: *u8, buf_size: s32, path: *u8, number: s32) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Check whether filename actually is a numbered sequence generator.
|
||
*
|
||
* @param filename possible numbered sequence string
|
||
* @return 1 if a valid numbered sequence string, 0 otherwise
|
||
*/
|
||
av_filename_number_test :: (filename: *u8) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Generate an SDP for an RTP session.
|
||
*
|
||
* Note, this overwrites the id values of AVStreams in the muxer contexts
|
||
* for getting unique dynamic payload types.
|
||
*
|
||
* @param ac array of AVFormatContexts describing the RTP streams. If the
|
||
* array is composed by only one context, such context can contain
|
||
* multiple AVStreams (one AVStream per RTP stream). Otherwise,
|
||
* all the contexts in the array (an AVCodecContext per RTP stream)
|
||
* must contain only one AVStream.
|
||
* @param n_files number of AVCodecContexts contained in ac
|
||
* @param buf buffer where the SDP will be stored (must be allocated by
|
||
* the caller)
|
||
* @param size the size of the buffer
|
||
* @return 0 if OK, AVERROR_xxx on error
|
||
*/
|
||
av_sdp_create :: (ac: **AVFormatContext, n_files: s32, buf: *u8, size: s32) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Return a positive value if the given filename has one of the given
|
||
* extensions, 0 otherwise.
|
||
*
|
||
* @param filename file name to check against the given extensions
|
||
* @param extensions a comma-separated list of filename extensions
|
||
*/
|
||
av_match_ext :: (filename: *u8, extensions: *u8) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Test if the given container can store a codec.
|
||
*
|
||
* @param ofmt container to check for compatibility
|
||
* @param codec_id codec to potentially store in container
|
||
* @param std_compliance standards compliance level, one of FF_COMPLIANCE_*
|
||
*
|
||
* @return 1 if codec with ID codec_id can be stored in ofmt, 0 if it cannot.
|
||
* A negative number if this information is not available.
|
||
*/
|
||
avformat_query_codec :: (ofmt: *AVOutputFormat, codec_id: AVCodecID, std_compliance: s32) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* @defgroup riff_fourcc RIFF FourCCs
|
||
* @{
|
||
* Get the tables mapping RIFF FourCCs to libavcodec AVCodecIDs. The tables are
|
||
* meant to be passed to av_codec_get_id()/av_codec_get_tag() as in the
|
||
* following code:
|
||
* @code
|
||
* uint32_t tag = MKTAG('H', '2', '6', '4');
|
||
* const struct AVCodecTag *table[] = { avformat_get_riff_video_tags(), 0 };
|
||
* enum AVCodecID id = av_codec_get_id(table, tag);
|
||
* @endcode
|
||
*/
|
||
/**
|
||
* @return the table mapping RIFF FourCCs for video to libavcodec AVCodecID.
|
||
*/
|
||
avformat_get_riff_video_tags :: () -> *AVCodecTag #foreign libavformat_60;
|
||
|
||
/**
|
||
* @return the table mapping RIFF FourCCs for audio to AVCodecID.
|
||
*/
|
||
avformat_get_riff_audio_tags :: () -> *AVCodecTag #foreign libavformat_60;
|
||
|
||
/**
|
||
* @return the table mapping MOV FourCCs for video to libavcodec AVCodecID.
|
||
*/
|
||
avformat_get_mov_video_tags :: () -> *AVCodecTag #foreign libavformat_60;
|
||
|
||
/**
|
||
* @return the table mapping MOV FourCCs for audio to AVCodecID.
|
||
*/
|
||
avformat_get_mov_audio_tags :: () -> *AVCodecTag #foreign libavformat_60;
|
||
|
||
/**
|
||
* Guess the sample aspect ratio of a frame, based on both the stream and the
|
||
* frame aspect ratio.
|
||
*
|
||
* Since the frame aspect ratio is set by the codec but the stream aspect ratio
|
||
* is set by the demuxer, these two may not be equal. This function tries to
|
||
* return the value that you should use if you would like to display the frame.
|
||
*
|
||
* Basic logic is to use the stream aspect ratio if it is set to something sane
|
||
* otherwise use the frame aspect ratio. This way a container setting, which is
|
||
* usually easy to modify can override the coded value in the frames.
|
||
*
|
||
* @param format the format context which the stream is part of
|
||
* @param stream the stream which the frame is part of
|
||
* @param frame the frame with the aspect ratio to be determined
|
||
* @return the guessed (valid) sample_aspect_ratio, 0/1 if no idea
|
||
*/
|
||
av_guess_sample_aspect_ratio :: (format: *AVFormatContext, stream: *AVStream, frame: *AVFrame) -> AVRational #foreign libavformat_60;
|
||
|
||
/**
|
||
* Guess the frame rate, based on both the container and codec information.
|
||
*
|
||
* @param ctx the format context which the stream is part of
|
||
* @param stream the stream which the frame is part of
|
||
* @param frame the frame for which the frame rate should be determined, may be NULL
|
||
* @return the guessed (valid) frame rate, 0/1 if no idea
|
||
*/
|
||
av_guess_frame_rate :: (ctx: *AVFormatContext, stream: *AVStream, frame: *AVFrame) -> AVRational #foreign libavformat_60;
|
||
|
||
/**
|
||
* Check if the stream st contained in s is matched by the stream specifier
|
||
* spec.
|
||
*
|
||
* See the "stream specifiers" chapter in the documentation for the syntax
|
||
* of spec.
|
||
*
|
||
* @return >0 if st is matched by spec;
|
||
* 0 if st is not matched by spec;
|
||
* AVERROR code if spec is invalid
|
||
*
|
||
* @note A stream specifier can match several streams in the format.
|
||
*/
|
||
avformat_match_stream_specifier :: (s: *AVFormatContext, st: *AVStream, spec: *u8) -> s32 #foreign libavformat_60;
|
||
|
||
avformat_queue_attached_pictures :: (s: *AVFormatContext) -> s32 #foreign libavformat_60;
|
||
|
||
AVTimebaseSource :: enum s32 {
|
||
AUTO :: -1;
|
||
DECODER :: 0;
|
||
DEMUXER :: 1;
|
||
|
||
R_FRAMERATE :: 2;
|
||
|
||
AVFMT_TBCF_AUTO :: AUTO;
|
||
AVFMT_TBCF_DECODER :: DECODER;
|
||
AVFMT_TBCF_DEMUXER :: DEMUXER;
|
||
|
||
AVFMT_TBCF_R_FRAMERATE :: R_FRAMERATE;
|
||
}
|
||
|
||
/**
|
||
* Transfer internal timing information from one stream to another.
|
||
*
|
||
* This function is useful when doing stream copy.
|
||
*
|
||
* @param ofmt target output format for ost
|
||
* @param ost output stream which needs timings copy and adjustments
|
||
* @param ist reference input stream to copy timings from
|
||
* @param copy_tb define from where the stream codec timebase needs to be imported
|
||
*/
|
||
avformat_transfer_internal_stream_timing_info :: (ofmt: *AVOutputFormat, ost: *AVStream, ist: *AVStream, copy_tb: AVTimebaseSource) -> s32 #foreign libavformat_60;
|
||
|
||
/**
|
||
* Get the internal codec timebase from a stream.
|
||
*
|
||
* @param st input stream to extract the timebase from
|
||
*/
|
||
av_stream_get_codec_timebase :: (st: *AVStream) -> AVRational #foreign libavformat_60;
|
||
|
||
/**
|
||
* @defgroup libsws libswscale
|
||
* Color conversion and scaling library.
|
||
*
|
||
* @{
|
||
*
|
||
* Return the LIBSWSCALE_VERSION_INT constant.
|
||
*/
|
||
swscale_version :: () -> u32 #foreign libswscale_7;
|
||
|
||
/**
|
||
* Return the libswscale build-time configuration.
|
||
*/
|
||
swscale_configuration :: () -> *u8 #foreign libswscale_7;
|
||
|
||
/**
|
||
* Return the libswscale license.
|
||
*/
|
||
swscale_license :: () -> *u8 #foreign libswscale_7;
|
||
|
||
/**
|
||
* Return a pointer to yuv<->rgb coefficients for the given colorspace
|
||
* suitable for sws_setColorspaceDetails().
|
||
*
|
||
* @param colorspace One of the SWS_CS_* macros. If invalid,
|
||
* SWS_CS_DEFAULT is used.
|
||
*/
|
||
sws_getCoefficients :: (colorspace: s32) -> *s32 #foreign libswscale_7;
|
||
|
||
// when used for filters they must have an odd number of elements
|
||
// coeffs cannot be shared between vectors
|
||
SwsVector :: struct {
|
||
coeff: *float64; ///< pointer to the list of coefficients
|
||
length: s32; ///< number of coefficients in the vector
|
||
}
|
||
|
||
// vectors can be shared
|
||
SwsFilter :: struct {
|
||
lumH: *SwsVector;
|
||
lumV: *SwsVector;
|
||
chrH: *SwsVector;
|
||
chrV: *SwsVector;
|
||
}
|
||
|
||
SwsContext :: struct {}
|
||
|
||
/**
|
||
* Return a positive value if pix_fmt is a supported input format, 0
|
||
* otherwise.
|
||
*/
|
||
sws_isSupportedInput :: (pix_fmt: AVPixelFormat) -> s32 #foreign libswscale_7;
|
||
|
||
/**
|
||
* Return a positive value if pix_fmt is a supported output format, 0
|
||
* otherwise.
|
||
*/
|
||
sws_isSupportedOutput :: (pix_fmt: AVPixelFormat) -> s32 #foreign libswscale_7;
|
||
|
||
/**
|
||
* @param[in] pix_fmt the pixel format
|
||
* @return a positive value if an endianness conversion for pix_fmt is
|
||
* supported, 0 otherwise.
|
||
*/
|
||
sws_isSupportedEndiannessConversion :: (pix_fmt: AVPixelFormat) -> s32 #foreign libswscale_7;
|
||
|
||
/**
|
||
* Allocate an empty SwsContext. This must be filled and passed to
|
||
* sws_init_context(). For filling see AVOptions, options.c and
|
||
* sws_setColorspaceDetails().
|
||
*/
|
||
sws_alloc_context :: () -> *SwsContext #foreign libswscale_7;
|
||
|
||
/**
|
||
* Initialize the swscaler context sws_context.
|
||
*
|
||
* @return zero or positive value on success, a negative value on
|
||
* error
|
||
*/
|
||
sws_init_context :: (sws_context: *SwsContext, srcFilter: *SwsFilter, dstFilter: *SwsFilter) -> s32 #foreign libswscale_7;
|
||
|
||
/**
|
||
* Free the swscaler context swsContext.
|
||
* If swsContext is NULL, then does nothing.
|
||
*/
|
||
sws_freeContext :: (swsContext: *SwsContext) -> void #foreign libswscale_7;
|
||
|
||
/**
|
||
* Allocate and return an SwsContext. You need it to perform
|
||
* scaling/conversion operations using sws_scale().
|
||
*
|
||
* @param srcW the width of the source image
|
||
* @param srcH the height of the source image
|
||
* @param srcFormat the source image format
|
||
* @param dstW the width of the destination image
|
||
* @param dstH the height of the destination image
|
||
* @param dstFormat the destination image format
|
||
* @param flags specify which algorithm and options to use for rescaling
|
||
* @param param extra parameters to tune the used scaler
|
||
* For SWS_BICUBIC param[0] and [1] tune the shape of the basis
|
||
* function, param[0] tunes f(1) and param[1] f´(1)
|
||
* For SWS_GAUSS param[0] tunes the exponent and thus cutoff
|
||
* frequency
|
||
* For SWS_LANCZOS param[0] tunes the width of the window function
|
||
* @return a pointer to an allocated context, or NULL in case of error
|
||
* @note this function is to be removed after a saner alternative is
|
||
* written
|
||
*/
|
||
sws_getContext :: (srcW: s32, srcH: s32, srcFormat: AVPixelFormat, dstW: s32, dstH: s32, dstFormat: AVPixelFormat, flags: s32, srcFilter: *SwsFilter, dstFilter: *SwsFilter, param: *float64) -> *SwsContext #foreign libswscale_7;
|
||
|
||
/**
|
||
* Scale the image slice in srcSlice and put the resulting scaled
|
||
* slice in the image in dst. A slice is a sequence of consecutive
|
||
* rows in an image.
|
||
*
|
||
* Slices have to be provided in sequential order, either in
|
||
* top-bottom or bottom-top order. If slices are provided in
|
||
* non-sequential order the behavior of the function is undefined.
|
||
*
|
||
* @param c the scaling context previously created with
|
||
* sws_getContext()
|
||
* @param srcSlice the array containing the pointers to the planes of
|
||
* the source slice
|
||
* @param srcStride the array containing the strides for each plane of
|
||
* the source image
|
||
* @param srcSliceY the position in the source image of the slice to
|
||
* process, that is the number (counted starting from
|
||
* zero) in the image of the first row of the slice
|
||
* @param srcSliceH the height of the source slice, that is the number
|
||
* of rows in the slice
|
||
* @param dst the array containing the pointers to the planes of
|
||
* the destination image
|
||
* @param dstStride the array containing the strides for each plane of
|
||
* the destination image
|
||
* @return the height of the output slice
|
||
*/
|
||
sws_scale :: (c: *SwsContext, srcSlice: **u8, srcStride: *s32, srcSliceY: s32, srcSliceH: s32, dst: **u8, dstStride: *s32) -> s32 #foreign libswscale_7;
|
||
|
||
/**
|
||
* Scale source data from src and write the output to dst.
|
||
*
|
||
* This is merely a convenience wrapper around
|
||
* - sws_frame_start()
|
||
* - sws_send_slice(0, src->height)
|
||
* - sws_receive_slice(0, dst->height)
|
||
* - sws_frame_end()
|
||
*
|
||
* @param c The scaling context
|
||
* @param dst The destination frame. See documentation for sws_frame_start() for
|
||
* more details.
|
||
* @param src The source frame.
|
||
*
|
||
* @return 0 on success, a negative AVERROR code on failure
|
||
*/
|
||
sws_scale_frame :: (c: *SwsContext, dst: *AVFrame, src: *AVFrame) -> s32 #foreign libswscale_7;
|
||
|
||
/**
|
||
* Initialize the scaling process for a given pair of source/destination frames.
|
||
* Must be called before any calls to sws_send_slice() and sws_receive_slice().
|
||
*
|
||
* This function will retain references to src and dst, so they must both use
|
||
* refcounted buffers (if allocated by the caller, in case of dst).
|
||
*
|
||
* @param c The scaling context
|
||
* @param dst The destination frame.
|
||
*
|
||
* The data buffers may either be already allocated by the caller or
|
||
* left clear, in which case they will be allocated by the scaler.
|
||
* The latter may have performance advantages - e.g. in certain cases
|
||
* some output planes may be references to input planes, rather than
|
||
* copies.
|
||
*
|
||
* Output data will be written into this frame in successful
|
||
* sws_receive_slice() calls.
|
||
* @param src The source frame. The data buffers must be allocated, but the
|
||
* frame data does not have to be ready at this point. Data
|
||
* availability is then signalled by sws_send_slice().
|
||
* @return 0 on success, a negative AVERROR code on failure
|
||
*
|
||
* @see sws_frame_end()
|
||
*/
|
||
sws_frame_start :: (c: *SwsContext, dst: *AVFrame, src: *AVFrame) -> s32 #foreign libswscale_7;
|
||
|
||
/**
|
||
* Finish the scaling process for a pair of source/destination frames previously
|
||
* submitted with sws_frame_start(). Must be called after all sws_send_slice()
|
||
* and sws_receive_slice() calls are done, before any new sws_frame_start()
|
||
* calls.
|
||
*
|
||
* @param c The scaling context
|
||
*/
|
||
sws_frame_end :: (c: *SwsContext) -> void #foreign libswscale_7;
|
||
|
||
/**
|
||
* Indicate that a horizontal slice of input data is available in the source
|
||
* frame previously provided to sws_frame_start(). The slices may be provided in
|
||
* any order, but may not overlap. For vertically subsampled pixel formats, the
|
||
* slices must be aligned according to subsampling.
|
||
*
|
||
* @param c The scaling context
|
||
* @param slice_start first row of the slice
|
||
* @param slice_height number of rows in the slice
|
||
*
|
||
* @return a non-negative number on success, a negative AVERROR code on failure.
|
||
*/
|
||
sws_send_slice :: (c: *SwsContext, slice_start: u32, slice_height: u32) -> s32 #foreign libswscale_7;
|
||
|
||
/**
|
||
* Request a horizontal slice of the output data to be written into the frame
|
||
* previously provided to sws_frame_start().
|
||
*
|
||
* @param c The scaling context
|
||
* @param slice_start first row of the slice; must be a multiple of
|
||
* sws_receive_slice_alignment()
|
||
* @param slice_height number of rows in the slice; must be a multiple of
|
||
* sws_receive_slice_alignment(), except for the last slice
|
||
* (i.e. when slice_start+slice_height is equal to output
|
||
* frame height)
|
||
*
|
||
* @return a non-negative number if the data was successfully written into the output
|
||
* AVERROR(EAGAIN) if more input data needs to be provided before the
|
||
* output can be produced
|
||
* another negative AVERROR code on other kinds of scaling failure
|
||
*/
|
||
sws_receive_slice :: (c: *SwsContext, slice_start: u32, slice_height: u32) -> s32 #foreign libswscale_7;
|
||
|
||
/**
|
||
* Get the alignment required for slices
|
||
*
|
||
* @param c The scaling context
|
||
* @return alignment required for output slices requested with sws_receive_slice().
|
||
* Slice offsets and sizes passed to sws_receive_slice() must be
|
||
* multiples of the value returned from this function.
|
||
*/
|
||
sws_receive_slice_alignment :: (c: *SwsContext) -> u32 #foreign libswscale_7;
|
||
|
||
/**
|
||
* @param c the scaling context
|
||
* @param dstRange flag indicating the while-black range of the output (1=jpeg / 0=mpeg)
|
||
* @param srcRange flag indicating the while-black range of the input (1=jpeg / 0=mpeg)
|
||
* @param table the yuv2rgb coefficients describing the output yuv space, normally ff_yuv2rgb_coeffs[x]
|
||
* @param inv_table the yuv2rgb coefficients describing the input yuv space, normally ff_yuv2rgb_coeffs[x]
|
||
* @param brightness 16.16 fixed point brightness correction
|
||
* @param contrast 16.16 fixed point contrast correction
|
||
* @param saturation 16.16 fixed point saturation correction
|
||
*
|
||
* @return A negative error code on error, non negative otherwise.
|
||
* If `LIBSWSCALE_VERSION_MAJOR < 7`, returns -1 if not supported.
|
||
*/
|
||
sws_setColorspaceDetails :: (c: *SwsContext, inv_table: *[4] s32, srcRange: s32, table: *[4] s32, dstRange: s32, brightness: s32, contrast: s32, saturation: s32) -> s32 #foreign libswscale_7;
|
||
|
||
/**
|
||
* @return A negative error code on error, non negative otherwise.
|
||
* If `LIBSWSCALE_VERSION_MAJOR < 7`, returns -1 if not supported.
|
||
*/
|
||
sws_getColorspaceDetails :: (c: *SwsContext, inv_table: **s32, srcRange: *s32, table: **s32, dstRange: *s32, brightness: *s32, contrast: *s32, saturation: *s32) -> s32 #foreign libswscale_7;
|
||
|
||
/**
|
||
* Allocate and return an uninitialized vector with length coefficients.
|
||
*/
|
||
sws_allocVec :: (length: s32) -> *SwsVector #foreign libswscale_7;
|
||
|
||
/**
|
||
* Return a normalized Gaussian curve used to filter stuff
|
||
* quality = 3 is high quality, lower is lower quality.
|
||
*/
|
||
sws_getGaussianVec :: (variance: float64, quality: float64) -> *SwsVector #foreign libswscale_7;
|
||
|
||
/**
|
||
* Scale all the coefficients of a by the scalar value.
|
||
*/
|
||
sws_scaleVec :: (a: *SwsVector, scalar: float64) -> void #foreign libswscale_7;
|
||
|
||
/**
|
||
* Scale all the coefficients of a so that their sum equals height.
|
||
*/
|
||
sws_normalizeVec :: (a: *SwsVector, height: float64) -> void #foreign libswscale_7;
|
||
|
||
sws_freeVec :: (a: *SwsVector) -> void #foreign libswscale_7;
|
||
|
||
sws_getDefaultFilter :: (lumaGBlur: float, chromaGBlur: float, lumaSharpen: float, chromaSharpen: float, chromaHShift: float, chromaVShift: float, verbose: s32) -> *SwsFilter #foreign libswscale_7;
|
||
|
||
sws_freeFilter :: (filter: *SwsFilter) -> void #foreign libswscale_7;
|
||
|
||
/**
|
||
* Check if context can be reused, otherwise reallocate a new one.
|
||
*
|
||
* If context is NULL, just calls sws_getContext() to get a new
|
||
* context. Otherwise, checks if the parameters are the ones already
|
||
* saved in context. If that is the case, returns the current
|
||
* context. Otherwise, frees context and gets a new context with
|
||
* the new parameters.
|
||
*
|
||
* Be warned that srcFilter and dstFilter are not checked, they
|
||
* are assumed to remain the same.
|
||
*/
|
||
sws_getCachedContext :: (_context: *SwsContext, srcW: s32, srcH: s32, srcFormat: AVPixelFormat, dstW: s32, dstH: s32, dstFormat: AVPixelFormat, flags: s32, srcFilter: *SwsFilter, dstFilter: *SwsFilter, param: *float64) -> *SwsContext #foreign libswscale_7;
|
||
|
||
/**
|
||
* Convert an 8-bit paletted frame into a frame with a color depth of 32 bits.
|
||
*
|
||
* The output frame will have the same packed format as the palette.
|
||
*
|
||
* @param src source frame buffer
|
||
* @param dst destination frame buffer
|
||
* @param num_pixels number of pixels to convert
|
||
* @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src
|
||
*/
|
||
sws_convertPalette8ToPacked32 :: (src: *u8, dst: *u8, num_pixels: s32, palette: *u8) -> void #foreign libswscale_7;
|
||
|
||
/**
|
||
* Convert an 8-bit paletted frame into a frame with a color depth of 24 bits.
|
||
*
|
||
* With the palette format "ABCD", the destination frame ends up with the format "ABC".
|
||
*
|
||
* @param src source frame buffer
|
||
* @param dst destination frame buffer
|
||
* @param num_pixels number of pixels to convert
|
||
* @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src
|
||
*/
|
||
sws_convertPalette8ToPacked24 :: (src: *u8, dst: *u8, num_pixels: s32, palette: *u8) -> void #foreign libswscale_7;
|
||
|
||
/**
|
||
* Get the AVClass for swsContext. It can be used in combination with
|
||
* AV_OPT_SEARCH_FAKE_OBJ for examining options.
|
||
*
|
||
* @see av_opt_find().
|
||
*/
|
||
sws_get_class :: () -> *AVClass #foreign libswscale_7;
|
||
|
||
#scope_file
|
||
|
||
#import "Basic"; // For print_to_builder
|
||
|
||
libavcodec_60 :: #library,no_dll "macos/libavcodec.60";
|
||
libavformat_60 :: #library,no_dll "macos/libavformat.60";
|
||
libavutil_58 :: #library,no_dll "macos/libavutil.58";
|
||
libswresample_4 :: #library,no_dll "macos/libswresample.4";
|
||
libswscale_7 :: #library,no_dll "macos/libswscale.7";
|
||
|
||
// Bindings generator stopped generating this for some reason?
|
||
// Looks like it only adds the Basic import if you have the struct checks on, but it is also
|
||
// needed for print like functions.
|
||
// @TODO: Test and report if so.
|
||
//
|
||
// Needed to compile print like log functions (although not sure you'll ever really want the av log functions?).
|
||
#import "Basic";
|
||
|