21 #ifndef AVCODEC_AVCODEC_H
22 #define AVCODEC_AVCODEC_H
442 #define CodecID AVCodecID
473 #define AV_CODEC_PROP_INTRA_ONLY (1 << 0)
479 #define AV_CODEC_PROP_LOSSY (1 << 1)
483 #define AV_CODEC_PROP_LOSSLESS (1 << 2)
485 #if FF_API_OLD_DECODE_AUDIO
487 #define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio
498 #define FF_INPUT_BUFFER_PADDING_SIZE 8
505 #define FF_MIN_BUFFER_SIZE 16384
617 #define FF_MAX_B_FRAMES 16
624 #define CODEC_FLAG_QSCALE 0x0002
625 #define CODEC_FLAG_4MV 0x0004
626 #define CODEC_FLAG_QPEL 0x0010
627 #define CODEC_FLAG_GMC 0x0020
628 #define CODEC_FLAG_MV0 0x0040
634 #define CODEC_FLAG_INPUT_PRESERVED 0x0100
635 #define CODEC_FLAG_PASS1 0x0200
636 #define CODEC_FLAG_PASS2 0x0400
637 #define CODEC_FLAG_GRAY 0x2000
638 #define CODEC_FLAG_EMU_EDGE 0x4000
639 #define CODEC_FLAG_PSNR 0x8000
640 #define CODEC_FLAG_TRUNCATED 0x00010000
642 #define CODEC_FLAG_NORMALIZE_AQP 0x00020000
643 #define CODEC_FLAG_INTERLACED_DCT 0x00040000
644 #define CODEC_FLAG_LOW_DELAY 0x00080000
645 #define CODEC_FLAG_GLOBAL_HEADER 0x00400000
646 #define CODEC_FLAG_BITEXACT 0x00800000
648 #define CODEC_FLAG_AC_PRED 0x01000000
649 #define CODEC_FLAG_LOOP_FILTER 0x00000800
650 #define CODEC_FLAG_INTERLACED_ME 0x20000000
651 #define CODEC_FLAG_CLOSED_GOP 0x80000000
652 #define CODEC_FLAG2_FAST 0x00000001
653 #define CODEC_FLAG2_NO_OUTPUT 0x00000004
654 #define CODEC_FLAG2_LOCAL_HEADER 0x00000008
655 #if FF_API_MPV_GLOBAL_OPTS
656 #define CODEC_FLAG_CBP_RD 0x04000000
657 #define CODEC_FLAG_QP_RD 0x08000000
658 #define CODEC_FLAG2_STRICT_GOP 0x00000002
659 #define CODEC_FLAG2_SKIP_RD 0x00004000
661 #define CODEC_FLAG2_CHUNKS 0x00008000
670 #define CODEC_CAP_DRAW_HORIZ_BAND 0x0001
676 #define CODEC_CAP_DR1 0x0002
677 #define CODEC_CAP_TRUNCATED 0x0008
679 #define CODEC_CAP_HWACCEL 0x0010
703 #define CODEC_CAP_DELAY 0x0020
708 #define CODEC_CAP_SMALL_LAST_FRAME 0x0040
712 #define CODEC_CAP_HWACCEL_VDPAU 0x0080
724 #define CODEC_CAP_SUBFRAMES 0x0100
729 #define CODEC_CAP_EXPERIMENTAL 0x0200
733 #define CODEC_CAP_CHANNEL_CONF 0x0400
737 #define CODEC_CAP_NEG_LINESIZES 0x0800
741 #define CODEC_CAP_FRAME_THREADS 0x1000
745 #define CODEC_CAP_SLICE_THREADS 0x2000
749 #define CODEC_CAP_PARAM_CHANGE 0x4000
753 #define CODEC_CAP_AUTO_THREADS 0x8000
757 #define CODEC_CAP_VARIABLE_FRAME_SIZE 0x10000
760 #define MB_TYPE_INTRA4x4 0x0001
761 #define MB_TYPE_INTRA16x16 0x0002 //FIXME H.264-specific
762 #define MB_TYPE_INTRA_PCM 0x0004 //FIXME H.264-specific
763 #define MB_TYPE_16x16 0x0008
764 #define MB_TYPE_16x8 0x0010
765 #define MB_TYPE_8x16 0x0020
766 #define MB_TYPE_8x8 0x0040
767 #define MB_TYPE_INTERLACED 0x0080
768 #define MB_TYPE_DIRECT2 0x0100 //FIXME
769 #define MB_TYPE_ACPRED 0x0200
770 #define MB_TYPE_GMC 0x0400
771 #define MB_TYPE_SKIP 0x0800
772 #define MB_TYPE_P0L0 0x1000
773 #define MB_TYPE_P1L0 0x2000
774 #define MB_TYPE_P0L1 0x4000
775 #define MB_TYPE_P1L1 0x8000
776 #define MB_TYPE_L0 (MB_TYPE_P0L0 | MB_TYPE_P1L0)
777 #define MB_TYPE_L1 (MB_TYPE_P0L1 | MB_TYPE_P1L1)
778 #define MB_TYPE_L0L1 (MB_TYPE_L0 | MB_TYPE_L1)
779 #define MB_TYPE_QUANT 0x00010000
780 #define MB_TYPE_CBP 0x00020000
812 #define FF_QSCALE_TYPE_MPEG1 0
813 #define FF_QSCALE_TYPE_MPEG2 1
814 #define FF_QSCALE_TYPE_H264 2
815 #define FF_QSCALE_TYPE_VP56 3
817 #define FF_BUFFER_TYPE_INTERNAL 1
818 #define FF_BUFFER_TYPE_USER 2
819 #define FF_BUFFER_TYPE_SHARED 4
820 #define FF_BUFFER_TYPE_COPY 8
822 #define FF_BUFFER_HINTS_VALID 0x01 // Buffer hints value is meaningful (if 0 ignore).
823 #define FF_BUFFER_HINTS_READABLE 0x02 // Codec will read from buffer.
824 #define FF_BUFFER_HINTS_PRESERVE 0x04 // User must not alter buffer content.
825 #define FF_BUFFER_HINTS_REUSABLE 0x08 // Codec will reuse the buffer (update).
961 #define AV_PKT_FLAG_KEY 0x0001
962 #define AV_PKT_FLAG_CORRUPT 0x0002
990 #define AV_NUM_DATA_POINTERS 8
1427 #define FF_COMPRESSION_DEFAULT -1
1517 #define FF_ASPECT_EXTENDED 15
1569 int y,
int type,
int height);
1601 #define FF_RC_STRATEGY_XVID 1
1605 #if FF_API_MPV_GLOBAL_OPTS
1706 #define FF_PRED_LEFT 0
1707 #define FF_PRED_PLANE 1
1708 #define FF_PRED_MEDIAN 2
1750 #define FF_CMP_SAD 0
1751 #define FF_CMP_SSE 1
1752 #define FF_CMP_SATD 2
1753 #define FF_CMP_DCT 3
1754 #define FF_CMP_PSNR 4
1755 #define FF_CMP_BIT 5
1757 #define FF_CMP_ZERO 7
1758 #define FF_CMP_VSAD 8
1759 #define FF_CMP_VSSE 9
1760 #define FF_CMP_NSSE 10
1761 #define FF_CMP_W53 11
1762 #define FF_CMP_W97 12
1763 #define FF_CMP_DCTMAX 13
1764 #define FF_CMP_DCT264 14
1765 #define FF_CMP_CHROMA 256
1818 #define FF_DTG_AFD_SAME 8
1819 #define FF_DTG_AFD_4_3 9
1820 #define FF_DTG_AFD_16_9 10
1821 #define FF_DTG_AFD_14_9 11
1822 #define FF_DTG_AFD_4_3_SP_14_9 13
1823 #define FF_DTG_AFD_16_9_SP_14_9 14
1824 #define FF_DTG_AFD_SP_4_3 15
1841 #define FF_DEFAULT_QUANT_BIAS 999999
1850 #if FF_API_COLOR_TABLE_ID
1866 #define SLICE_FLAG_CODED_ORDER 0x0001
1867 #define SLICE_FLAG_ALLOW_FIELD 0x0002
1868 #define SLICE_FLAG_ALLOW_PLANE 0x0004
1883 #define FF_MB_DECISION_SIMPLE 0
1884 #define FF_MB_DECISION_BITS 1
1885 #define FF_MB_DECISION_RD 2
1916 #if FF_API_INTER_THRESHOLD
1923 #if FF_API_MPV_GLOBAL_OPTS
2150 #if FF_API_REQUEST_CHANNELS
2157 int request_channels;
2378 #define FF_CODER_TYPE_VLC 0
2379 #define FF_CODER_TYPE_AC 1
2380 #define FF_CODER_TYPE_RAW 2
2381 #define FF_CODER_TYPE_RLE 3
2382 #define FF_CODER_TYPE_DEFLATE 4
2518 #define FF_BUG_AUTODETECT 1
2519 #define FF_BUG_OLD_MSMPEG4 2
2520 #define FF_BUG_XVID_ILACE 4
2521 #define FF_BUG_UMP4 8
2522 #define FF_BUG_NO_PADDING 16
2523 #define FF_BUG_AMV 32
2524 #define FF_BUG_AC_VLC 0
2525 #define FF_BUG_QPEL_CHROMA 64
2526 #define FF_BUG_STD_QPEL 128
2527 #define FF_BUG_QPEL_CHROMA2 256
2528 #define FF_BUG_DIRECT_BLOCKSIZE 512
2529 #define FF_BUG_EDGE 1024
2530 #define FF_BUG_HPEL_CHROMA 2048
2531 #define FF_BUG_DC_CLIP 4096
2532 #define FF_BUG_MS 8192
2533 #define FF_BUG_TRUNCATED 16384
2548 #define FF_COMPLIANCE_VERY_STRICT 2
2549 #define FF_COMPLIANCE_STRICT 1
2550 #define FF_COMPLIANCE_NORMAL 0
2551 #define FF_COMPLIANCE_UNOFFICIAL -1
2552 #define FF_COMPLIANCE_EXPERIMENTAL -2
2560 #define FF_EC_GUESS_MVS 1
2561 #define FF_EC_DEBLOCK 2
2569 #define FF_DEBUG_PICT_INFO 1
2570 #define FF_DEBUG_RC 2
2571 #define FF_DEBUG_BITSTREAM 4
2572 #define FF_DEBUG_MB_TYPE 8
2573 #define FF_DEBUG_QP 16
2574 #define FF_DEBUG_MV 32
2575 #define FF_DEBUG_DCT_COEFF 0x00000040
2576 #define FF_DEBUG_SKIP 0x00000080
2577 #define FF_DEBUG_STARTCODE 0x00000100
2578 #define FF_DEBUG_PTS 0x00000200
2579 #define FF_DEBUG_ER 0x00000400
2580 #define FF_DEBUG_MMCO 0x00000800
2581 #define FF_DEBUG_BUGS 0x00001000
2582 #define FF_DEBUG_VIS_QP 0x00002000
2583 #define FF_DEBUG_VIS_MB_TYPE 0x00004000
2584 #define FF_DEBUG_BUFFERS 0x00008000
2585 #define FF_DEBUG_THREADS 0x00010000
2593 #define FF_DEBUG_VIS_MV_P_FOR 0x00000001 //visualize forward predicted MVs of P frames
2594 #define FF_DEBUG_VIS_MV_B_FOR 0x00000002 //visualize forward predicted MVs of B frames
2595 #define FF_DEBUG_VIS_MV_B_BACK 0x00000004 //visualize backward predicted MVs of B frames
2603 #define AV_EF_CRCCHECK (1<<0)
2604 #define AV_EF_BITSTREAM (1<<1)
2605 #define AV_EF_BUFFER (1<<2)
2606 #define AV_EF_EXPLODE (1<<3)
2649 #define FF_DCT_AUTO 0
2650 #define FF_DCT_FASTINT 1
2651 #define FF_DCT_INT 2
2652 #define FF_DCT_MMX 3
2653 #define FF_DCT_ALTIVEC 5
2654 #define FF_DCT_FAAN 6
2662 #define FF_IDCT_AUTO 0
2663 #define FF_IDCT_INT 1
2664 #define FF_IDCT_SIMPLE 2
2665 #define FF_IDCT_SIMPLEMMX 3
2667 #define FF_IDCT_LIBMPEG2MMX 4
2670 #define FF_IDCT_MMI 5
2672 #define FF_IDCT_ARM 7
2673 #define FF_IDCT_ALTIVEC 8
2674 #define FF_IDCT_SH4 9
2675 #define FF_IDCT_SIMPLEARM 10
2676 #define FF_IDCT_H264 11
2677 #define FF_IDCT_VP3 12
2678 #define FF_IDCT_IPP 13
2679 #define FF_IDCT_XVIDMMX 14
2680 #define FF_IDCT_CAVS 15
2681 #define FF_IDCT_SIMPLEARMV5TE 16
2682 #define FF_IDCT_SIMPLEARMV6 17
2683 #define FF_IDCT_SIMPLEVIS 18
2684 #define FF_IDCT_WMV2 19
2685 #define FF_IDCT_FAAN 20
2686 #define FF_IDCT_EA 21
2687 #define FF_IDCT_SIMPLENEON 22
2688 #define FF_IDCT_SIMPLEALPHA 23
2689 #define FF_IDCT_BINK 24
2744 #define FF_THREAD_FRAME 1
2745 #define FF_THREAD_SLICE 2
2816 #define FF_PROFILE_UNKNOWN -99
2817 #define FF_PROFILE_RESERVED -100
2819 #define FF_PROFILE_AAC_MAIN 0
2820 #define FF_PROFILE_AAC_LOW 1
2821 #define FF_PROFILE_AAC_SSR 2
2822 #define FF_PROFILE_AAC_LTP 3
2823 #define FF_PROFILE_AAC_HE 4
2824 #define FF_PROFILE_AAC_HE_V2 28
2825 #define FF_PROFILE_AAC_LD 22
2826 #define FF_PROFILE_AAC_ELD 38
2828 #define FF_PROFILE_DTS 20
2829 #define FF_PROFILE_DTS_ES 30
2830 #define FF_PROFILE_DTS_96_24 40
2831 #define FF_PROFILE_DTS_HD_HRA 50
2832 #define FF_PROFILE_DTS_HD_MA 60
2834 #define FF_PROFILE_MPEG2_422 0
2835 #define FF_PROFILE_MPEG2_HIGH 1
2836 #define FF_PROFILE_MPEG2_SS 2
2837 #define FF_PROFILE_MPEG2_SNR_SCALABLE 3
2838 #define FF_PROFILE_MPEG2_MAIN 4
2839 #define FF_PROFILE_MPEG2_SIMPLE 5
2841 #define FF_PROFILE_H264_CONSTRAINED (1<<9) // 8+1; constraint_set1_flag
2842 #define FF_PROFILE_H264_INTRA (1<<11) // 8+3; constraint_set3_flag
2844 #define FF_PROFILE_H264_BASELINE 66
2845 #define FF_PROFILE_H264_CONSTRAINED_BASELINE (66|FF_PROFILE_H264_CONSTRAINED)
2846 #define FF_PROFILE_H264_MAIN 77
2847 #define FF_PROFILE_H264_EXTENDED 88
2848 #define FF_PROFILE_H264_HIGH 100
2849 #define FF_PROFILE_H264_HIGH_10 110
2850 #define FF_PROFILE_H264_HIGH_10_INTRA (110|FF_PROFILE_H264_INTRA)
2851 #define FF_PROFILE_H264_HIGH_422 122
2852 #define FF_PROFILE_H264_HIGH_422_INTRA (122|FF_PROFILE_H264_INTRA)
2853 #define FF_PROFILE_H264_HIGH_444 144
2854 #define FF_PROFILE_H264_HIGH_444_PREDICTIVE 244
2855 #define FF_PROFILE_H264_HIGH_444_INTRA (244|FF_PROFILE_H264_INTRA)
2856 #define FF_PROFILE_H264_CAVLC_444 44
2858 #define FF_PROFILE_VC1_SIMPLE 0
2859 #define FF_PROFILE_VC1_MAIN 1
2860 #define FF_PROFILE_VC1_COMPLEX 2
2861 #define FF_PROFILE_VC1_ADVANCED 3
2863 #define FF_PROFILE_MPEG4_SIMPLE 0
2864 #define FF_PROFILE_MPEG4_SIMPLE_SCALABLE 1
2865 #define FF_PROFILE_MPEG4_CORE 2
2866 #define FF_PROFILE_MPEG4_MAIN 3
2867 #define FF_PROFILE_MPEG4_N_BIT 4
2868 #define FF_PROFILE_MPEG4_SCALABLE_TEXTURE 5
2869 #define FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION 6
2870 #define FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE 7
2871 #define FF_PROFILE_MPEG4_HYBRID 8
2872 #define FF_PROFILE_MPEG4_ADVANCED_REAL_TIME 9
2873 #define FF_PROFILE_MPEG4_CORE_SCALABLE 10
2874 #define FF_PROFILE_MPEG4_ADVANCED_CODING 11
2875 #define FF_PROFILE_MPEG4_ADVANCED_CORE 12
2876 #define FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE 13
2877 #define FF_PROFILE_MPEG4_SIMPLE_STUDIO 14
2878 #define FF_PROFILE_MPEG4_ADVANCED_SIMPLE 15
2886 #define FF_LEVEL_UNKNOWN -99
3042 int *got_packet_ptr);
3162 #define AVPALETTE_SIZE 1024
3163 #define AVPALETTE_COUNT 256
3183 #define AV_SUBTITLE_FLAG_FORCED 0x00000001
3553 #if FF_API_OLD_DECODE_AUDIO
3609 int *frame_size_ptr,
3647 int *got_frame_ptr,
AVPacket *avpkt);
3691 int *got_picture_ptr,
3746 #define AV_PARSER_PTS_NB 4
3753 #define PARSER_FLAG_COMPLETE_FRAMES 0x0001
3754 #define PARSER_FLAG_ONCE 0x0002
3755 #define PARSER_FLAG_FETCHED_OFFSET 0x0004
3860 const uint8_t **poutbuf,
int *poutbuf_size,
3861 const uint8_t *buf,
int buf_size);
3902 uint8_t **poutbuf,
int *poutbuf_size,
3903 const uint8_t *buf,
int buf_size,
3904 int64_t pts, int64_t dts,
3913 uint8_t **poutbuf,
int *poutbuf_size,
3914 const uint8_t *buf,
int buf_size,
int keyframe);
3943 #if FF_API_OLD_ENCODE_AUDIO
4012 const AVFrame *frame,
int *got_packet_ptr);
4014 #if FF_API_OLD_ENCODE_VIDEO
4069 const AVFrame *frame,
int *got_packet_ptr);
4079 #if FF_API_AVCODEC_RESAMPLE
4087 struct ReSampleContext;
4088 struct AVResampleContext;
4090 typedef struct ReSampleContext ReSampleContext;
4109 ReSampleContext *av_audio_resample_init(
int output_channels,
int input_channels,
4110 int output_rate,
int input_rate,
4113 int filter_length,
int log2_phase_count,
4114 int linear,
double cutoff);
4117 int audio_resample(ReSampleContext *s,
short *output,
short *input,
int nb_samples);
4126 void audio_resample_close(ReSampleContext *s);
4139 struct AVResampleContext *av_resample_init(
int out_rate,
int in_rate,
int filter_length,
int log2_phase_count,
int linear,
double cutoff);
4151 int av_resample(
struct AVResampleContext *c,
short *dst,
short *src,
int *consumed,
int src_size,
int dst_size,
int update_ctx);
4167 void av_resample_compensate(
struct AVResampleContext *c,
int sample_delta,
int compensation_distance);
4169 void av_resample_close(
struct AVResampleContext *c);
4243 unsigned char *dest,
int dest_size);
4280 int padtop,
int padbottom,
int padleft,
int padright,
int *
color);
4315 #define FF_LOSS_RESOLUTION 0x0001
4316 #define FF_LOSS_DEPTH 0x0002
4317 #define FF_LOSS_COLORSPACE 0x0004
4318 #define FF_LOSS_ALPHA 0x0008
4319 #define FF_LOSS_COLORQUANT 0x0010
4320 #define FF_LOSS_CHROMA 0x0020
4339 int avcodec_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt,
4342 #if FF_API_FIND_BEST_PIX_FMT
4369 int has_alpha,
int *loss_ptr);
4391 int has_alpha,
int *loss_ptr);
4443 int buf_size,
int align);
4494 uint8_t **poutbuf,
int *poutbuf_size,
4495 const uint8_t *buf,
int buf_size,
int keyframe);
4504 uint8_t **poutbuf,
int *poutbuf_size,
4505 const uint8_t *buf,
int buf_size,
int keyframe);
4549 unsigned int av_xiphlacing(
unsigned char *s,
unsigned int v);