生活随笔
收集整理的這篇文章主要介紹了
FFMPEG结构体分析:AVCodecContext(转)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
注:寫了一系列的結構體的分析的文章,在這里列一個列表:
FFMPEG結構體分析:AVFrame
FFMPEG結構體分析:AVFormatContext
FFMPEG結構體分析:AVCodecContext
FFMPEG結構體分析:AVIOContext
FFMPEG結構體分析:AVCodec
FFMPEG結構體分析:AVStream
FFMPEG結構體分析:AVPacket
?
?
FFMPEG有幾個最重要的結構體,包含了解協議,解封裝,解碼操作,此前已經進行過分析:
FFMPEG中最關鍵的結構體之間的關系
在此不再詳述,其中AVCodecContext是包含變量較多的結構體(感覺差不多是變量最多的結構體)。本文將會大概分析一下該結構體里每個變量的含義和作用。因為如果每個變量都分析的話,工作量太大,實在來不及。
首先看一下結構體的定義(位于avcodec.h):
?
[cpp]?view plaincopy
typedef?struct?AVCodecContext?{??????????const?AVClass?*av_class;??????int?log_level_offset;????????enum?AVMediaType?codec_type;?????const?struct?AVCodec??*codec;??????char?????????????codec_name[32];??????enum?AVCodecID?????codec_id;???????????unsigned?int?codec_tag;????????????unsigned?int?stream_codec_tag;????#if?FF_API_SUB_ID??????????attribute_deprecated?int?sub_id;??#endif????????void?*priv_data;????????????struct?AVCodecInternal?*internal;????????????void?*opaque;????????????int?bit_rate;????????????int?bit_rate_tolerance;????????????int?global_quality;????????????int?compression_level;??#define?FF_COMPRESSION_DEFAULT?-1????????????int?flags;????????????int?flags2;????????????uint8_t?*extradata;??????int?extradata_size;????????????AVRational?time_base;????????????int?ticks_per_frame;????????????int?delay;??????????????????int?width,?height;????????????int?coded_width,?coded_height;????#define?FF_ASPECT_EXTENDED?15????????????int?gop_size;????????????enum?AVPixelFormat?pix_fmt;????????????int?me_method;????????????void?(*draw_horiz_band)(struct?AVCodecContext?*s,??????????????????????????????const?AVFrame?*src,?int?offset[AV_NUM_DATA_POINTERS],??????????????????????????????int?y,?int?type,?int?height);????????????enum?AVPixelFormat?(*get_format)(struct?AVCodecContext?*s,?const?enum?AVPixelFormat?*?fmt);????????????int?max_b_frames;????????????float?b_quant_factor;????????????int?rc_strategy;??#define?FF_RC_STRATEGY_XVID?1????????int?b_frame_strategy;????#if?FF_API_MPV_GLOBAL_OPTS??????????attribute_deprecated?int?luma_elim_threshold;????????????attribute_deprecated?int?chroma_elim_threshold;??#endif????????????float?b_quant_offset;????????????int?has_b_frames;????????????int?mpeg_quant;????????????float?i_quant_factor;????????????float?i_quant_offset;????????????float?lumi_masking;????????????float?temporal_cplx_masking;????????????float?spatial_cplx_masking;????????????float?p_masking;????????????float?dark_masking;????????????int?slice_count;???????????int?prediction_method;??#define?FF_PRED_LEFT???0??#define?FF_PRED_PLANE??1??#define?FF_PRED_MEDIAN?2????????????int?*slice_offset;????????????AVRational?sample_aspect_ratio;????????????int?me_cmp;??????????int?me_sub_cmp;??????????int?mb_cmp;??????????int?ildct_cmp;??#define?FF_CMP_SAD????0??#define?FF_CMP_SSE????1??#define?FF_CMP_SATD???2??#define?FF_CMP_DCT????3??#define?FF_CMP_PSNR???4??#define?FF_CMP_BIT????5??#define?FF_CMP_RD?????6??#define?FF_CMP_ZERO???7??#define?FF_CMP_VSAD???8??#define?FF_CMP_VSSE???9??#define?FF_CMP_NSSE???10??#define?FF_CMP_W53????11??#define?FF_CMP_W97????12??#define?FF_CMP_DCTMAX?13??#define?FF_CMP_DCT264?14??#define?FF_CMP_CHROMA?256????????????int?dia_size;????????????int?last_predictor_count;????????????int?pre_me;????????????int?me_pre_cmp;????????????int?pre_dia_size;????????????int?me_subpel_quality;????????????int?dtg_active_format;??#define?FF_DTG_AFD_SAME?????????8??#define?FF_DTG_AFD_4_3??????????9??#define?FF_DTG_AFD_16_9?????????10??#define?FF_DTG_AFD_14_9?????????11??#define?FF_DTG_AFD_4_3_SP_14_9??13??#define?FF_DTG_AFD_16_9_SP_14_9?14??#define?FF_DTG_AFD_SP_4_3???????15????????????int?me_range;????????????int?intra_quant_bias;??#define?FF_DEFAULT_QUANT_BIAS?999999????????????int?inter_quant_bias;????#if?FF_API_COLOR_TABLE_ID??????????attribute_deprecated?int?color_table_id;??#endif????????????int?slice_flags;??#define?SLICE_FLAG_CODED_ORDER????0x0001?///<?draw_horiz_band()?is?called?in?coded?order?instead?of?display??#define?SLICE_FLAG_ALLOW_FIELD????0x0002?///<?allow?draw_horiz_band()?with?field?slices?(MPEG2?field?pics)??#define?SLICE_FLAG_ALLOW_PLANE????0x0004?///<?allow?draw_horiz_band()?with?1?component?at?a?time?(SVQ1)????????????int?xvmc_acceleration;????????????int?mb_decision;??#define?FF_MB_DECISION_SIMPLE?0????????///<?uses?mb_cmp??#define?FF_MB_DECISION_BITS???1????????///<?chooses?the?one?which?needs?the?fewest?bits??#define?FF_MB_DECISION_RD?????2????????///<?rate?distortion????????????uint16_t?*intra_matrix;????????????uint16_t?*inter_matrix;????????????int?scenechange_threshold;????????????int?noise_reduction;????#if?FF_API_INTER_THRESHOLD??????????attribute_deprecated?int?inter_threshold;??#endif????#if?FF_API_MPV_GLOBAL_OPTS??????????attribute_deprecated?int?quantizer_noise_shaping;??#endif????????????int?me_threshold;????????????int?mb_threshold;????????????int?intra_dc_precision;????????????int?skip_top;????????????int?skip_bottom;????????????float?border_masking;????????????int?mb_lmin;????????????int?mb_lmax;????????????int?me_penalty_compensation;????????????int?bidir_refine;????????????int?brd_scale;????????????int?keyint_min;????????????int?refs;????????????int?chromaoffset;????????????int?scenechange_factor;????????????int?mv0_threshold;????????????int?b_sensitivity;????????????enum?AVColorPrimaries?color_primaries;????????????enum?AVColorTransferCharacteristic?color_trc;????????????enum?AVColorSpace?colorspace;????????????enum?AVColorRange?color_range;????????????enum?AVChromaLocation?chroma_sample_location;????????????int?slices;????????????enum?AVFieldOrder?field_order;????????????int?sample_rate;?????int?channels;??????????????enum?AVSampleFormat?sample_fmt;????????????????int?frame_size;????????????int?frame_number;????????????int?block_align;????????????int?cutoff;????#if?FF_API_REQUEST_CHANNELS??????????int?request_channels;??#endif????????????uint64_t?channel_layout;????????????uint64_t?request_channel_layout;????????????enum?AVAudioServiceType?audio_service_type;????????????enum?AVSampleFormat?request_sample_fmt;????????????int?(*get_buffer)(struct?AVCodecContext?*c,?AVFrame?*pic);????????????void?(*release_buffer)(struct?AVCodecContext?*c,?AVFrame?*pic);????????????int?(*reget_buffer)(struct?AVCodecContext?*c,?AVFrame?*pic);??????????????float?qcompress;??????float?qblur;????????????????int?qmin;????????????int?qmax;????????????int?max_qdiff;????????????float?rc_qsquish;????????float?rc_qmod_amp;??????int?rc_qmod_freq;????????????int?rc_buffer_size;????????????int?rc_override_count;??????RcOverride?*rc_override;????????????const?char?*rc_eq;????????????int?rc_max_rate;????????????int?rc_min_rate;????????float?rc_buffer_aggressivity;????????????float?rc_initial_cplx;????????????float?rc_max_available_vbv_use;????????????float?rc_min_vbv_overflow_use;????????????int?rc_initial_buffer_occupancy;????#define?FF_CODER_TYPE_VLC???????0??#define?FF_CODER_TYPE_AC????????1??#define?FF_CODER_TYPE_RAW???????2??#define?FF_CODER_TYPE_RLE???????3??#define?FF_CODER_TYPE_DEFLATE???4??????????int?coder_type;????????????int?context_model;????????????int?lmin;????????????int?lmax;????????????int?frame_skip_threshold;????????????int?frame_skip_factor;????????????int?frame_skip_exp;????????????int?frame_skip_cmp;????????????int?trellis;????????????int?min_prediction_order;????????????int?max_prediction_order;????????????int64_t?timecode_frame_start;????????????????????????????????void?(*rtp_callback)(struct?AVCodecContext?*avctx,?void?*data,?int?size,?int?mb_nb);????????int?rtp_payload_size;?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????int?mv_bits;??????int?header_bits;??????int?i_tex_bits;??????int?p_tex_bits;??????int?i_count;??????int?p_count;??????int?skip_count;??????int?misc_bits;????????????int?frame_bits;????????????char?*stats_out;????????????char?*stats_in;????????????int?workaround_bugs;??#define?FF_BUG_AUTODETECT???????1??///<?autodetection??#define?FF_BUG_OLD_MSMPEG4??????2??#define?FF_BUG_XVID_ILACE???????4??#define?FF_BUG_UMP4?????????????8??#define?FF_BUG_NO_PADDING???????16??#define?FF_BUG_AMV??????????????32??#define?FF_BUG_AC_VLC???????????0??///<?Will?be?removed,?libavcodec?can?now?handle?these?non-compliant?files?by?default.??#define?FF_BUG_QPEL_CHROMA??????64??#define?FF_BUG_STD_QPEL?????????128??#define?FF_BUG_QPEL_CHROMA2?????256??#define?FF_BUG_DIRECT_BLOCKSIZE?512??#define?FF_BUG_EDGE?????????????1024??#define?FF_BUG_HPEL_CHROMA??????2048??#define?FF_BUG_DC_CLIP??????????4096??#define?FF_BUG_MS???????????????8192?///<?Work?around?various?bugs?in?Microsoft's?broken?decoders.??#define?FF_BUG_TRUNCATED???????16384????????????int?strict_std_compliance;??#define?FF_COMPLIANCE_VERY_STRICT???2?///<?Strictly?conform?to?an?older?more?strict?version?of?the?spec?or?reference?software.??#define?FF_COMPLIANCE_STRICT????????1?///<?Strictly?conform?to?all?the?things?in?the?spec?no?matter?what?consequences.??#define?FF_COMPLIANCE_NORMAL????????0??#define?FF_COMPLIANCE_UNOFFICIAL???-1?///<?Allow?unofficial?extensions??#define?FF_COMPLIANCE_EXPERIMENTAL?-2?///<?Allow?nonstandardized?experimental?things.????????????int?error_concealment;??#define?FF_EC_GUESS_MVS???1??#define?FF_EC_DEBLOCK?????2????????????int?debug;??#define?FF_DEBUG_PICT_INFO???1??#define?FF_DEBUG_RC??????????2??#define?FF_DEBUG_BITSTREAM???4??#define?FF_DEBUG_MB_TYPE?????8??#define?FF_DEBUG_QP??????????16??#define?FF_DEBUG_MV??????????32??#define?FF_DEBUG_DCT_COEFF???0x00000040??#define?FF_DEBUG_SKIP????????0x00000080??#define?FF_DEBUG_STARTCODE???0x00000100??#define?FF_DEBUG_PTS?????????0x00000200??#define?FF_DEBUG_ER??????????0x00000400??#define?FF_DEBUG_MMCO????????0x00000800??#define?FF_DEBUG_BUGS????????0x00001000??#define?FF_DEBUG_VIS_QP??????0x00002000??#define?FF_DEBUG_VIS_MB_TYPE?0x00004000??#define?FF_DEBUG_BUFFERS?????0x00008000??#define?FF_DEBUG_THREADS?????0x00010000????????????int?debug_mv;??#define?FF_DEBUG_VIS_MV_P_FOR??0x00000001?//visualize?forward?predicted?MVs?of?P?frames??#define?FF_DEBUG_VIS_MV_B_FOR??0x00000002?//visualize?forward?predicted?MVs?of?B?frames??#define?FF_DEBUG_VIS_MV_B_BACK?0x00000004?//visualize?backward?predicted?MVs?of?B?frames????????????int?err_recognition;??#define?AV_EF_CRCCHECK??(1<<0)??#define?AV_EF_BITSTREAM?(1<<1)??#define?AV_EF_BUFFER????(1<<2)??#define?AV_EF_EXPLODE???(1<<3)????#define?AV_EF_CAREFUL????(1<<16)??#define?AV_EF_COMPLIANT??(1<<17)??#define?AV_EF_AGGRESSIVE?(1<<18)??????????????int64_t?reordered_opaque;????????????struct?AVHWAccel?*hwaccel;????????????void?*hwaccel_context;????????????uint64_t?error[AV_NUM_DATA_POINTERS];????????????int?dct_algo;??#define?FF_DCT_AUTO????0??#define?FF_DCT_FASTINT?1??#define?FF_DCT_INT?????2??#define?FF_DCT_MMX?????3??#define?FF_DCT_ALTIVEC?5??#define?FF_DCT_FAAN????6????????????int?idct_algo;??#define?FF_IDCT_AUTO??????????0??#define?FF_IDCT_INT???????????1??#define?FF_IDCT_SIMPLE????????2??#define?FF_IDCT_SIMPLEMMX?????3??#define?FF_IDCT_LIBMPEG2MMX???4??#define?FF_IDCT_MMI???????????5??#define?FF_IDCT_ARM???????????7??#define?FF_IDCT_ALTIVEC???????8??#define?FF_IDCT_SH4???????????9??#define?FF_IDCT_SIMPLEARM?????10??#define?FF_IDCT_H264??????????11??#define?FF_IDCT_VP3???????????12??#define?FF_IDCT_IPP???????????13??#define?FF_IDCT_XVIDMMX???????14??#define?FF_IDCT_CAVS??????????15??#define?FF_IDCT_SIMPLEARMV5TE?16??#define?FF_IDCT_SIMPLEARMV6???17??#define?FF_IDCT_SIMPLEVIS?????18??#define?FF_IDCT_WMV2??????????19??#define?FF_IDCT_FAAN??????????20??#define?FF_IDCT_EA????????????21??#define?FF_IDCT_SIMPLENEON????22??#define?FF_IDCT_SIMPLEALPHA???23??#define?FF_IDCT_BINK??????????24????#if?FF_API_DSP_MASK??????????attribute_deprecated?unsigned?dsp_mask;??#endif?????????????int?bits_per_coded_sample;????????????int?bits_per_raw_sample;?????????????int?lowres;????????????AVFrame?*coded_frame;????????????int?thread_count;????????????int?thread_type;??#define?FF_THREAD_FRAME???1?///<?Decode?more?than?one?frame?at?once??#define?FF_THREAD_SLICE???2?///<?Decode?more?than?one?part?of?a?single?frame?at?once????????????int?active_thread_type;????????????int?thread_safe_callbacks;????????????int?(*execute)(struct?AVCodecContext?*c,?int?(*func)(struct?AVCodecContext?*c2,?void?*arg),?void?*arg2,?int?*ret,?int?count,?int?size);????????????int?(*execute2)(struct?AVCodecContext?*c,?int?(*func)(struct?AVCodecContext?*c2,?void?*arg,?int?jobnr,?int?threadnr),?void?*arg2,?int?*ret,?int?count);????????????void?*thread_opaque;?????????????int?nsse_weight;?????????????int?profile;??#define?FF_PROFILE_UNKNOWN?-99??#define?FF_PROFILE_RESERVED?-100????#define?FF_PROFILE_AAC_MAIN?0??#define?FF_PROFILE_AAC_LOW??1??#define?FF_PROFILE_AAC_SSR??2??#define?FF_PROFILE_AAC_LTP??3??#define?FF_PROFILE_AAC_HE???4??#define?FF_PROFILE_AAC_HE_V2?28??#define?FF_PROFILE_AAC_LD???22??#define?FF_PROFILE_AAC_ELD??38????#define?FF_PROFILE_DTS?????????20??#define?FF_PROFILE_DTS_ES??????30??#define?FF_PROFILE_DTS_96_24???40??#define?FF_PROFILE_DTS_HD_HRA??50??#define?FF_PROFILE_DTS_HD_MA???60????#define?FF_PROFILE_MPEG2_422????0??#define?FF_PROFILE_MPEG2_HIGH???1??#define?FF_PROFILE_MPEG2_SS?????2??#define?FF_PROFILE_MPEG2_SNR_SCALABLE??3??#define?FF_PROFILE_MPEG2_MAIN???4??#define?FF_PROFILE_MPEG2_SIMPLE?5????#define?FF_PROFILE_H264_CONSTRAINED??(1<<9)??//?8+1;?constraint_set1_flag??#define?FF_PROFILE_H264_INTRA????????(1<<11)?//?8+3;?constraint_set3_flag????#define?FF_PROFILE_H264_BASELINE?????????????66??#define?FF_PROFILE_H264_CONSTRAINED_BASELINE?(66|FF_PROFILE_H264_CONSTRAINED)??#define?FF_PROFILE_H264_MAIN?????????????????77??#define?FF_PROFILE_H264_EXTENDED?????????????88??#define?FF_PROFILE_H264_HIGH?????????????????100??#define?FF_PROFILE_H264_HIGH_10??????????????110??#define?FF_PROFILE_H264_HIGH_10_INTRA????????(110|FF_PROFILE_H264_INTRA)??#define?FF_PROFILE_H264_HIGH_422?????????????122??#define?FF_PROFILE_H264_HIGH_422_INTRA???????(122|FF_PROFILE_H264_INTRA)??#define?FF_PROFILE_H264_HIGH_444?????????????144??#define?FF_PROFILE_H264_HIGH_444_PREDICTIVE??244??#define?FF_PROFILE_H264_HIGH_444_INTRA???????(244|FF_PROFILE_H264_INTRA)??#define?FF_PROFILE_H264_CAVLC_444????????????44????#define?FF_PROFILE_VC1_SIMPLE???0??#define?FF_PROFILE_VC1_MAIN?????1??#define?FF_PROFILE_VC1_COMPLEX??2??#define?FF_PROFILE_VC1_ADVANCED?3????#define?FF_PROFILE_MPEG4_SIMPLE?????????????????????0??#define?FF_PROFILE_MPEG4_SIMPLE_SCALABLE????????????1??#define?FF_PROFILE_MPEG4_CORE???????????????????????2??#define?FF_PROFILE_MPEG4_MAIN???????????????????????3??#define?FF_PROFILE_MPEG4_N_BIT??????????????????????4??#define?FF_PROFILE_MPEG4_SCALABLE_TEXTURE???????????5??#define?FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION??????6??#define?FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE?????7??#define?FF_PROFILE_MPEG4_HYBRID?????????????????????8??#define?FF_PROFILE_MPEG4_ADVANCED_REAL_TIME?????????9??#define?FF_PROFILE_MPEG4_CORE_SCALABLE?????????????10??#define?FF_PROFILE_MPEG4_ADVANCED_CODING???????????11??#define?FF_PROFILE_MPEG4_ADVANCED_CORE?????????????12??#define?FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE?13??#define?FF_PROFILE_MPEG4_SIMPLE_STUDIO?????????????14??#define?FF_PROFILE_MPEG4_ADVANCED_SIMPLE???????????15?????????????int?level;??#define?FF_LEVEL_UNKNOWN?-99????????????enum?AVDiscard?skip_loop_filter;????????????enum?AVDiscard?skip_idct;????????????enum?AVDiscard?skip_frame;????????????uint8_t?*subtitle_header;??????int?subtitle_header_size;????????????int?error_rate;????????????AVPacket?*pkt;????????????uint64_t?vbv_delay;????????????AVRational?pkt_timebase;????????????const?AVCodecDescriptor?*codec_descriptor;????????????int64_t?pts_correction_num_faulty_pts;?????int64_t?pts_correction_num_faulty_dts;?????int64_t?pts_correction_last_pts;???????????int64_t?pts_correction_last_dts;???????}?AVCodecContext;??
光定義就真是夠多的。下面挑一些關鍵的變量來看看(這里只考慮解碼)。
?
enum AVMediaType codec_type:編解碼器的類型(視頻,音頻...)
struct AVCodec ?*codec:采用的解碼器AVCodec(H.264,MPEG2...)
int bit_rate:平均比特率
uint8_t *extradata;?int extradata_size:針對特定編碼器包含的附加信息(例如對于H.264解碼器來說,存儲SPS,PPS等)
AVRational time_base:根據該參數,可以把PTS轉化為實際的時間(單位為秒s)
int width, height:如果是視頻的話,代表寬和高
int refs:運動估計參考幀的個數(H.264的話會有多幀,MPEG2這類的一般就沒有了)
int sample_rate:采樣率(音頻)
int channels:聲道數(音頻)
enum AVSampleFormat sample_fmt:采樣格式
int profile:型(H.264里面就有,其他編碼標準應該也有)
int level:級(和profile差不太多)
在這里需要注意:AVCodecContext中很多的參數是編碼的時候使用的,而不是解碼的時候使用的。
其實這些參數都比較容易理解。就不多費篇幅了。在這里看一下以下幾個參數:
1.codec_type
編解碼器類型有以下幾種:
?
[cpp]?view plaincopy
enum?AVMediaType?{??????AVMEDIA_TYPE_UNKNOWN?=?-1,??????AVMEDIA_TYPE_VIDEO,??????AVMEDIA_TYPE_AUDIO,??????AVMEDIA_TYPE_DATA,??????????????AVMEDIA_TYPE_SUBTITLE,??????AVMEDIA_TYPE_ATTACHMENT,????????AVMEDIA_TYPE_NB??};?? ?
?
2.sample_fmt
在FFMPEG中音頻采樣格式有以下幾種:
?
[cpp]?view plaincopy
enum?AVSampleFormat?{??????AV_SAMPLE_FMT_NONE?=?-1,??????AV_SAMPLE_FMT_U8,??????????????AV_SAMPLE_FMT_S16,?????????????AV_SAMPLE_FMT_S32,?????????????AV_SAMPLE_FMT_FLT,?????????????AV_SAMPLE_FMT_DBL,???????????????AV_SAMPLE_FMT_U8P,?????????????AV_SAMPLE_FMT_S16P,????????????AV_SAMPLE_FMT_S32P,????????????AV_SAMPLE_FMT_FLTP,????????????AV_SAMPLE_FMT_DBLP,??????????????AV_SAMPLE_FMT_NB???????????};??
3.profile
?
在FFMPEG中型有以下幾種,可以看出AAC,MPEG2,H.264,VC-1,MPEG4都有型的概念。
?
[cpp]?view plaincopy
#define?FF_PROFILE_UNKNOWN?-99??#define?FF_PROFILE_RESERVED?-100????#define?FF_PROFILE_AAC_MAIN?0??#define?FF_PROFILE_AAC_LOW??1??#define?FF_PROFILE_AAC_SSR??2??#define?FF_PROFILE_AAC_LTP??3??#define?FF_PROFILE_AAC_HE???4??#define?FF_PROFILE_AAC_HE_V2?28??#define?FF_PROFILE_AAC_LD???22??#define?FF_PROFILE_AAC_ELD??38????#define?FF_PROFILE_DTS?????????20??#define?FF_PROFILE_DTS_ES??????30??#define?FF_PROFILE_DTS_96_24???40??#define?FF_PROFILE_DTS_HD_HRA??50??#define?FF_PROFILE_DTS_HD_MA???60????#define?FF_PROFILE_MPEG2_422????0??#define?FF_PROFILE_MPEG2_HIGH???1??#define?FF_PROFILE_MPEG2_SS?????2??#define?FF_PROFILE_MPEG2_SNR_SCALABLE??3??#define?FF_PROFILE_MPEG2_MAIN???4??#define?FF_PROFILE_MPEG2_SIMPLE?5????#define?FF_PROFILE_H264_CONSTRAINED??(1<<9)??//?8+1;?constraint_set1_flag??#define?FF_PROFILE_H264_INTRA????????(1<<11)?//?8+3;?constraint_set3_flag????#define?FF_PROFILE_H264_BASELINE?????????????66??#define?FF_PROFILE_H264_CONSTRAINED_BASELINE?(66|FF_PROFILE_H264_CONSTRAINED)??#define?FF_PROFILE_H264_MAIN?????????????????77??#define?FF_PROFILE_H264_EXTENDED?????????????88??#define?FF_PROFILE_H264_HIGH?????????????????100??#define?FF_PROFILE_H264_HIGH_10??????????????110??#define?FF_PROFILE_H264_HIGH_10_INTRA????????(110|FF_PROFILE_H264_INTRA)??#define?FF_PROFILE_H264_HIGH_422?????????????122??#define?FF_PROFILE_H264_HIGH_422_INTRA???????(122|FF_PROFILE_H264_INTRA)??#define?FF_PROFILE_H264_HIGH_444?????????????144??#define?FF_PROFILE_H264_HIGH_444_PREDICTIVE??244??#define?FF_PROFILE_H264_HIGH_444_INTRA???????(244|FF_PROFILE_H264_INTRA)??#define?FF_PROFILE_H264_CAVLC_444????????????44????#define?FF_PROFILE_VC1_SIMPLE???0??#define?FF_PROFILE_VC1_MAIN?????1??#define?FF_PROFILE_VC1_COMPLEX??2??#define?FF_PROFILE_VC1_ADVANCED?3????#define?FF_PROFILE_MPEG4_SIMPLE?????????????????????0??#define?FF_PROFILE_MPEG4_SIMPLE_SCALABLE????????????1??#define?FF_PROFILE_MPEG4_CORE???????????????????????2??#define?FF_PROFILE_MPEG4_MAIN???????????????????????3??#define?FF_PROFILE_MPEG4_N_BIT??????????????????????4??#define?FF_PROFILE_MPEG4_SCALABLE_TEXTURE???????????5??#define?FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION??????6??#define?FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE?????7??#define?FF_PROFILE_MPEG4_HYBRID?????????????????????8??#define?FF_PROFILE_MPEG4_ADVANCED_REAL_TIME?????????9??#define?FF_PROFILE_MPEG4_CORE_SCALABLE?????????????10??#define?FF_PROFILE_MPEG4_ADVANCED_CODING???????????11??#define?FF_PROFILE_MPEG4_ADVANCED_CORE?????????????12??#define?FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE?13??#define?FF_PROFILE_MPEG4_SIMPLE_STUDIO?????????????14??#define?FF_PROFILE_MPEG4_ADVANCED_SIMPLE???????????15??
轉載于:https://www.cnblogs.com/xihong2014/p/6707867.html
總結
以上是生活随笔為你收集整理的FFMPEG结构体分析:AVCodecContext(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。