21 #ifndef AVCODEC_AVCODEC_H
22 #define AVCODEC_AVCODEC_H
539 #define AV_CODEC_PROP_INTRA_ONLY (1 << 0)
545 #define AV_CODEC_PROP_LOSSY (1 << 1)
549 #define AV_CODEC_PROP_LOSSLESS (1 << 2)
554 #define AV_CODEC_PROP_BITMAP_SUB (1 << 16)
559 #define AV_CODEC_PROP_TEXT_SUB (1 << 17)
569 #define FF_INPUT_BUFFER_PADDING_SIZE 16
576 #define FF_MIN_BUFFER_SIZE 16384
641 #define AVCOL_SPC_YCGCO AVCOL_SPC_YCOCG
689 #define FF_MAX_B_FRAMES 16
700 #define CODEC_FLAG_UNALIGNED 0x0001
701 #define CODEC_FLAG_QSCALE 0x0002
702 #define CODEC_FLAG_4MV 0x0004
703 #define CODEC_FLAG_QPEL 0x0010
704 #define CODEC_FLAG_GMC 0x0020
705 #define CODEC_FLAG_MV0 0x0040
711 #define CODEC_FLAG_INPUT_PRESERVED 0x0100
712 #define CODEC_FLAG_PASS1 0x0200
713 #define CODEC_FLAG_PASS2 0x0400
714 #define CODEC_FLAG_GRAY 0x2000
715 #define CODEC_FLAG_EMU_EDGE 0x4000
716 #define CODEC_FLAG_PSNR 0x8000
717 #define CODEC_FLAG_TRUNCATED 0x00010000
719 #define CODEC_FLAG_NORMALIZE_AQP 0x00020000
720 #define CODEC_FLAG_INTERLACED_DCT 0x00040000
721 #define CODEC_FLAG_LOW_DELAY 0x00080000
722 #define CODEC_FLAG_GLOBAL_HEADER 0x00400000
723 #define CODEC_FLAG_BITEXACT 0x00800000
725 #define CODEC_FLAG_AC_PRED 0x01000000
726 #define CODEC_FLAG_LOOP_FILTER 0x00000800
727 #define CODEC_FLAG_INTERLACED_ME 0x20000000
728 #define CODEC_FLAG_CLOSED_GOP 0x80000000
729 #define CODEC_FLAG2_FAST 0x00000001
730 #define CODEC_FLAG2_NO_OUTPUT 0x00000004
731 #define CODEC_FLAG2_LOCAL_HEADER 0x00000008
732 #define CODEC_FLAG2_DROP_FRAME_TIMECODE 0x00002000
733 #define CODEC_FLAG2_IGNORE_CROP 0x00010000
735 #define CODEC_FLAG2_CHUNKS 0x00008000
736 #define CODEC_FLAG2_SHOW_ALL 0x00400000
745 #define CODEC_CAP_DRAW_HORIZ_BAND 0x0001
751 #define CODEC_CAP_DR1 0x0002
752 #define CODEC_CAP_TRUNCATED 0x0008
754 #define CODEC_CAP_HWACCEL 0x0010
778 #define CODEC_CAP_DELAY 0x0020
783 #define CODEC_CAP_SMALL_LAST_FRAME 0x0040
787 #define CODEC_CAP_HWACCEL_VDPAU 0x0080
799 #define CODEC_CAP_SUBFRAMES 0x0100
804 #define CODEC_CAP_EXPERIMENTAL 0x0200
808 #define CODEC_CAP_CHANNEL_CONF 0x0400
813 #define CODEC_CAP_NEG_LINESIZES 0x0800
818 #define CODEC_CAP_FRAME_THREADS 0x1000
822 #define CODEC_CAP_SLICE_THREADS 0x2000
826 #define CODEC_CAP_PARAM_CHANGE 0x4000
830 #define CODEC_CAP_AUTO_THREADS 0x8000
834 #define CODEC_CAP_VARIABLE_FRAME_SIZE 0x10000
838 #define CODEC_CAP_INTRA_ONLY 0x40000000
842 #define CODEC_CAP_LOSSLESS 0x80000000
845 #define MB_TYPE_INTRA4x4 0x0001
846 #define MB_TYPE_INTRA16x16 0x0002 //FIXME H.264-specific
847 #define MB_TYPE_INTRA_PCM 0x0004 //FIXME H.264-specific
848 #define MB_TYPE_16x16 0x0008
849 #define MB_TYPE_16x8 0x0010
850 #define MB_TYPE_8x16 0x0020
851 #define MB_TYPE_8x8 0x0040
852 #define MB_TYPE_INTERLACED 0x0080
853 #define MB_TYPE_DIRECT2 0x0100 //FIXME
854 #define MB_TYPE_ACPRED 0x0200
855 #define MB_TYPE_GMC 0x0400
856 #define MB_TYPE_SKIP 0x0800
857 #define MB_TYPE_P0L0 0x1000
858 #define MB_TYPE_P1L0 0x2000
859 #define MB_TYPE_P0L1 0x4000
860 #define MB_TYPE_P1L1 0x8000
861 #define MB_TYPE_L0 (MB_TYPE_P0L0 | MB_TYPE_P1L0)
862 #define MB_TYPE_L1 (MB_TYPE_P0L1 | MB_TYPE_P1L1)
863 #define MB_TYPE_L0L1 (MB_TYPE_L0 | MB_TYPE_L1)
864 #define MB_TYPE_QUANT 0x00010000
865 #define MB_TYPE_CBP 0x00020000
897 #define FF_QSCALE_TYPE_MPEG1 0
898 #define FF_QSCALE_TYPE_MPEG2 1
899 #define FF_QSCALE_TYPE_H264 2
900 #define FF_QSCALE_TYPE_VP56 3
902 #if FF_API_GET_BUFFER
903 #define FF_BUFFER_TYPE_INTERNAL 1
904 #define FF_BUFFER_TYPE_USER 2
905 #define FF_BUFFER_TYPE_SHARED 4
906 #define FF_BUFFER_TYPE_COPY 8
908 #define FF_BUFFER_HINTS_VALID 0x01 // Buffer hints value is meaningful (if 0 ignore).
909 #define FF_BUFFER_HINTS_READABLE 0x02 // Codec will read from buffer.
910 #define FF_BUFFER_HINTS_PRESERVE 0x04 // User must not alter buffer content.
911 #define FF_BUFFER_HINTS_REUSABLE 0x08 // Codec will reuse the buffer (update).
917 #define AV_GET_BUFFER_FLAG_REF (1 << 0)
1093 #if FF_API_DESTRUCT_PACKET
1120 #define AV_PKT_FLAG_KEY 0x0001
1121 #define AV_PKT_FLAG_CORRUPT 0x0002
1234 #define FF_COMPRESSION_DEFAULT -1
1333 #define FF_ASPECT_EXTENDED 15
1417 #define FF_RC_STRATEGY_XVID 1
1506 #define FF_PRED_LEFT 0
1507 #define FF_PRED_PLANE 1
1508 #define FF_PRED_MEDIAN 2
1550 #define FF_CMP_SAD 0
1551 #define FF_CMP_SSE 1
1552 #define FF_CMP_SATD 2
1553 #define FF_CMP_DCT 3
1554 #define FF_CMP_PSNR 4
1555 #define FF_CMP_BIT 5
1557 #define FF_CMP_ZERO 7
1558 #define FF_CMP_VSAD 8
1559 #define FF_CMP_VSSE 9
1560 #define FF_CMP_NSSE 10
1561 #define FF_CMP_W53 11
1562 #define FF_CMP_W97 12
1563 #define FF_CMP_DCTMAX 13
1564 #define FF_CMP_DCT264 14
1565 #define FF_CMP_CHROMA 256
1618 #define FF_DTG_AFD_SAME 8
1619 #define FF_DTG_AFD_4_3 9
1620 #define FF_DTG_AFD_16_9 10
1621 #define FF_DTG_AFD_14_9 11
1622 #define FF_DTG_AFD_4_3_SP_14_9 13
1623 #define FF_DTG_AFD_16_9_SP_14_9 14
1624 #define FF_DTG_AFD_SP_4_3 15
1641 #define FF_DEFAULT_QUANT_BIAS 999999
1656 #define SLICE_FLAG_CODED_ORDER 0x0001
1657 #define SLICE_FLAG_ALLOW_FIELD 0x0002
1658 #define SLICE_FLAG_ALLOW_PLANE 0x0004
1673 #define FF_MB_DECISION_SIMPLE 0
1674 #define FF_MB_DECISION_BITS 1
1675 #define FF_MB_DECISION_RD 2
1926 #if FF_API_REQUEST_CHANNELS
1933 int request_channels;
1965 #if FF_API_GET_BUFFER
2259 #define FF_CODER_TYPE_VLC 0
2260 #define FF_CODER_TYPE_AC 1
2261 #define FF_CODER_TYPE_RAW 2
2262 #define FF_CODER_TYPE_RLE 3
2263 #define FF_CODER_TYPE_DEFLATE 4
2399 #define FF_BUG_AUTODETECT 1
2400 #define FF_BUG_OLD_MSMPEG4 2
2401 #define FF_BUG_XVID_ILACE 4
2402 #define FF_BUG_UMP4 8
2403 #define FF_BUG_NO_PADDING 16
2404 #define FF_BUG_AMV 32
2405 #define FF_BUG_AC_VLC 0
2406 #define FF_BUG_QPEL_CHROMA 64
2407 #define FF_BUG_STD_QPEL 128
2408 #define FF_BUG_QPEL_CHROMA2 256
2409 #define FF_BUG_DIRECT_BLOCKSIZE 512
2410 #define FF_BUG_EDGE 1024
2411 #define FF_BUG_HPEL_CHROMA 2048
2412 #define FF_BUG_DC_CLIP 4096
2413 #define FF_BUG_MS 8192
2414 #define FF_BUG_TRUNCATED 16384
2429 #define FF_COMPLIANCE_VERY_STRICT 2
2430 #define FF_COMPLIANCE_STRICT 1
2431 #define FF_COMPLIANCE_NORMAL 0
2432 #define FF_COMPLIANCE_UNOFFICIAL -1
2433 #define FF_COMPLIANCE_EXPERIMENTAL -2
2441 #define FF_EC_GUESS_MVS 1
2442 #define FF_EC_DEBLOCK 2
2450 #define FF_DEBUG_PICT_INFO 1
2451 #define FF_DEBUG_RC 2
2452 #define FF_DEBUG_BITSTREAM 4
2453 #define FF_DEBUG_MB_TYPE 8
2454 #define FF_DEBUG_QP 16
2455 #define FF_DEBUG_MV 32
2456 #define FF_DEBUG_DCT_COEFF 0x00000040
2457 #define FF_DEBUG_SKIP 0x00000080
2458 #define FF_DEBUG_STARTCODE 0x00000100
2459 #define FF_DEBUG_PTS 0x00000200
2460 #define FF_DEBUG_ER 0x00000400
2461 #define FF_DEBUG_MMCO 0x00000800
2462 #define FF_DEBUG_BUGS 0x00001000
2463 #define FF_DEBUG_VIS_QP 0x00002000
2464 #define FF_DEBUG_VIS_MB_TYPE 0x00004000
2465 #define FF_DEBUG_BUFFERS 0x00008000
2466 #define FF_DEBUG_THREADS 0x00010000
2474 #define FF_DEBUG_VIS_MV_P_FOR 0x00000001 //visualize forward predicted MVs of P frames
2475 #define FF_DEBUG_VIS_MV_B_FOR 0x00000002 //visualize forward predicted MVs of B frames
2476 #define FF_DEBUG_VIS_MV_B_BACK 0x00000004 //visualize backward predicted MVs of B frames
2484 #define AV_EF_CRCCHECK (1<<0)
2485 #define AV_EF_BITSTREAM (1<<1)
2486 #define AV_EF_BUFFER (1<<2)
2487 #define AV_EF_EXPLODE (1<<3)
2489 #define AV_EF_CAREFUL (1<<16)
2490 #define AV_EF_COMPLIANT (1<<17)
2491 #define AV_EF_AGGRESSIVE (1<<18)
2535 #define FF_DCT_AUTO 0
2536 #define FF_DCT_FASTINT 1
2537 #define FF_DCT_INT 2
2538 #define FF_DCT_MMX 3
2539 #define FF_DCT_ALTIVEC 5
2540 #define FF_DCT_FAAN 6
2548 #define FF_IDCT_AUTO 0
2549 #define FF_IDCT_INT 1
2550 #define FF_IDCT_SIMPLE 2
2551 #define FF_IDCT_SIMPLEMMX 3
2552 #define FF_IDCT_ARM 7
2553 #define FF_IDCT_ALTIVEC 8
2554 #define FF_IDCT_SH4 9
2555 #define FF_IDCT_SIMPLEARM 10
2556 #define FF_IDCT_IPP 13
2557 #define FF_IDCT_XVIDMMX 14
2558 #define FF_IDCT_SIMPLEARMV5TE 16
2559 #define FF_IDCT_SIMPLEARMV6 17
2560 #define FF_IDCT_SIMPLEVIS 18
2561 #define FF_IDCT_FAAN 20
2562 #define FF_IDCT_SIMPLENEON 22
2563 #define FF_IDCT_SIMPLEALPHA 23
2614 #define FF_THREAD_FRAME 1
2615 #define FF_THREAD_SLICE 2
2686 #define FF_PROFILE_UNKNOWN -99
2687 #define FF_PROFILE_RESERVED -100
2689 #define FF_PROFILE_AAC_MAIN 0
2690 #define FF_PROFILE_AAC_LOW 1
2691 #define FF_PROFILE_AAC_SSR 2
2692 #define FF_PROFILE_AAC_LTP 3
2693 #define FF_PROFILE_AAC_HE 4
2694 #define FF_PROFILE_AAC_HE_V2 28
2695 #define FF_PROFILE_AAC_LD 22
2696 #define FF_PROFILE_AAC_ELD 38
2697 #define FF_PROFILE_MPEG2_AAC_LOW 128
2698 #define FF_PROFILE_MPEG2_AAC_HE 131
2700 #define FF_PROFILE_DTS 20
2701 #define FF_PROFILE_DTS_ES 30
2702 #define FF_PROFILE_DTS_96_24 40
2703 #define FF_PROFILE_DTS_HD_HRA 50
2704 #define FF_PROFILE_DTS_HD_MA 60
2706 #define FF_PROFILE_MPEG2_422 0
2707 #define FF_PROFILE_MPEG2_HIGH 1
2708 #define FF_PROFILE_MPEG2_SS 2
2709 #define FF_PROFILE_MPEG2_SNR_SCALABLE 3
2710 #define FF_PROFILE_MPEG2_MAIN 4
2711 #define FF_PROFILE_MPEG2_SIMPLE 5
2713 #define FF_PROFILE_H264_CONSTRAINED (1<<9) // 8+1; constraint_set1_flag
2714 #define FF_PROFILE_H264_INTRA (1<<11) // 8+3; constraint_set3_flag
2716 #define FF_PROFILE_H264_BASELINE 66
2717 #define FF_PROFILE_H264_CONSTRAINED_BASELINE (66|FF_PROFILE_H264_CONSTRAINED)
2718 #define FF_PROFILE_H264_MAIN 77
2719 #define FF_PROFILE_H264_EXTENDED 88
2720 #define FF_PROFILE_H264_HIGH 100
2721 #define FF_PROFILE_H264_HIGH_10 110
2722 #define FF_PROFILE_H264_HIGH_10_INTRA (110|FF_PROFILE_H264_INTRA)
2723 #define FF_PROFILE_H264_HIGH_422 122
2724 #define FF_PROFILE_H264_HIGH_422_INTRA (122|FF_PROFILE_H264_INTRA)
2725 #define FF_PROFILE_H264_HIGH_444 144
2726 #define FF_PROFILE_H264_HIGH_444_PREDICTIVE 244
2727 #define FF_PROFILE_H264_HIGH_444_INTRA (244|FF_PROFILE_H264_INTRA)
2728 #define FF_PROFILE_H264_CAVLC_444 44
2730 #define FF_PROFILE_VC1_SIMPLE 0
2731 #define FF_PROFILE_VC1_MAIN 1
2732 #define FF_PROFILE_VC1_COMPLEX 2
2733 #define FF_PROFILE_VC1_ADVANCED 3
2735 #define FF_PROFILE_MPEG4_SIMPLE 0
2736 #define FF_PROFILE_MPEG4_SIMPLE_SCALABLE 1
2737 #define FF_PROFILE_MPEG4_CORE 2
2738 #define FF_PROFILE_MPEG4_MAIN 3
2739 #define FF_PROFILE_MPEG4_N_BIT 4
2740 #define FF_PROFILE_MPEG4_SCALABLE_TEXTURE 5
2741 #define FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION 6
2742 #define FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE 7
2743 #define FF_PROFILE_MPEG4_HYBRID 8
2744 #define FF_PROFILE_MPEG4_ADVANCED_REAL_TIME 9
2745 #define FF_PROFILE_MPEG4_CORE_SCALABLE 10
2746 #define FF_PROFILE_MPEG4_ADVANCED_CODING 11
2747 #define FF_PROFILE_MPEG4_ADVANCED_CORE 12
2748 #define FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE 13
2749 #define FF_PROFILE_MPEG4_SIMPLE_STUDIO 14
2750 #define FF_PROFILE_MPEG4_ADVANCED_SIMPLE 15
2752 #define FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_0 0
2753 #define FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_1 1
2754 #define FF_PROFILE_JPEG2000_CSTREAM_NO_RESTRICTION 2
2755 #define FF_PROFILE_JPEG2000_DCINEMA_2K 3
2756 #define FF_PROFILE_JPEG2000_DCINEMA_4K 4
2764 #define FF_LEVEL_UNKNOWN -99
2875 #define FF_SUB_CHARENC_MODE_DO_NOTHING -1
2876 #define FF_SUB_CHARENC_MODE_AUTOMATIC 0
2877 #define FF_SUB_CHARENC_MODE_PRE_DECODER 1
2987 int *got_packet_ptr);
3125 #define AV_SUBTITLE_FLAG_FORCED 0x00000001
3207 #if FF_API_ALLOC_CONTEXT
3333 #if FF_API_AVCODEC_OPEN
3432 #if FF_API_DESTRUCT_PACKET
3582 #if FF_API_GET_BUFFER
3627 #if FF_API_OLD_DECODE_AUDIO
3683 int *frame_size_ptr,
3727 int *got_frame_ptr,
const AVPacket *avpkt);
3777 int *got_picture_ptr,
3839 #define AV_PARSER_PTS_NB 4
3846 #define PARSER_FLAG_COMPLETE_FRAMES 0x0001
3847 #define PARSER_FLAG_ONCE 0x0002
3849 #define PARSER_FLAG_FETCHED_OFFSET 0x0004
3850 #define PARSER_FLAG_USE_CODEC_TS 0x1000
3966 const uint8_t **poutbuf,
int *poutbuf_size,
4008 uint8_t **poutbuf,
int *poutbuf_size,
4010 int64_t pts, int64_t dts,
4019 uint8_t **poutbuf,
int *poutbuf_size,
4020 const uint8_t *
buf,
int buf_size,
int keyframe);
4049 #if FF_API_OLD_ENCODE_AUDIO
4076 const short *samples);
4121 #if FF_API_OLD_ENCODE_VIDEO
4186 #if FF_API_AVCODEC_RESAMPLE
4194 struct ReSampleContext;
4195 struct AVResampleContext;
4197 typedef struct ReSampleContext ReSampleContext;
4216 ReSampleContext *av_audio_resample_init(
int output_channels,
int input_channels,
4217 int output_rate,
int input_rate,
4220 int filter_length,
int log2_phase_count,
4221 int linear,
double cutoff);
4224 int audio_resample(ReSampleContext *
s,
short *output,
short *input,
int nb_samples);
4233 void audio_resample_close(ReSampleContext *
s);
4246 struct AVResampleContext *av_resample_init(
int out_rate,
int in_rate,
int filter_length,
int log2_phase_count,
int linear,
double cutoff);
4258 int av_resample(
struct AVResampleContext *
c,
short *dst,
short *
src,
int *consumed,
int src_size,
int dst_size,
int update_ctx);
4274 void av_resample_compensate(
struct AVResampleContext *
c,
int sample_delta,
int compensation_distance);
4276 void av_resample_close(
struct AVResampleContext *
c);
4327 unsigned char *dest,
int dest_size);
4338 #if FF_API_DEINTERLACE
4364 int padtop,
int padbottom,
int padleft,
int padright,
int *
color);
4410 #define FF_LOSS_RESOLUTION 0x0001
4411 #define FF_LOSS_DEPTH 0x0002
4412 #define FF_LOSS_COLORSPACE 0x0004
4413 #define FF_LOSS_ALPHA 0x0008
4414 #define FF_LOSS_COLORQUANT 0x0010
4415 #define FF_LOSS_CHROMA 0x0020
4457 int has_alpha,
int *loss_ptr);
4490 enum AVPixelFormat src_pix_fmt,
int has_alpha,
int *loss_ptr);
4493 #if AV_HAVE_INCOMPATIBLE_LIBAV_ABI
4496 int has_alpha,
int *loss_ptr);
4499 enum AVPixelFormat src_pix_fmt,
int has_alpha,
int *loss_ptr);
4560 int buf_size,
int align);
4617 uint8_t **poutbuf,
int *poutbuf_size,
4676 uint8_t **poutbuf,
int *poutbuf_size,
4677 const uint8_t *
buf,
int buf_size,
int keyframe);
4744 #if FF_API_MISSING_SAMPLE
4759 void av_log_missing_feature(
void *avc,
const char *feature,
int want_sample);
4771 void av_log_ask_for_sample(
void *avc,
const char *msg, ...)
av_printf_format(2, 3);