X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=x264.h;h=bde985c538545cb088868c634732754689723bec;hb=396133936510d57bc2054dd1c1d3d92fa0eb5495;hp=8d61ad6cb87bed4ebdb50d32a405c95cfa3dbc51;hpb=7d35ba6bf080610d8f144f4270e961c69ba14f1c;p=x264 diff --git a/x264.h b/x264.h index 8d61ad6c..bde985c5 100644 --- a/x264.h +++ b/x264.h @@ -26,7 +26,7 @@ #include -#define X264_BUILD 23 +#define X264_BUILD 31 /* x264_t: * opaque handler for decoder and encoder */ @@ -48,6 +48,7 @@ typedef struct x264_t x264_t; /* Analyse flags */ #define X264_ANALYSE_I4x4 0x0001 /* Analyse i4x4 */ +#define X264_ANALYSE_I8x8 0x0002 /* Analyse i8x8 (requires 8x8 transform) */ #define X264_ANALYSE_PSUB16x16 0x0010 /* Analyse p16x8, p8x16 and p8x8 */ #define X264_ANALYSE_PSUB8x8 0x0020 /* Analyse p8x4, p4x8, p4x4 */ #define X264_ANALYSE_BSUB16x16 0x0100 /* Analyse b16x8, b8x16 and b8x8 */ @@ -56,7 +57,8 @@ typedef struct x264_t x264_t; #define X264_DIRECT_PRED_TEMPORAL 2 #define X264_ME_DIA 0 #define X264_ME_HEX 1 -#define X264_ME_ESA 2 +#define X264_ME_UMH 2 +#define X264_ME_ESA 3 /* Colorspace type */ @@ -91,10 +93,19 @@ typedef struct x264_t x264_t; #define X264_LOG_INFO 2 #define X264_LOG_DEBUG 3 +typedef struct +{ + int i_start, i_end; + int b_force_qp; + int i_qp; + float f_bitrate_factor; +} x264_zone_t; + typedef struct { /* CPU flags */ unsigned int cpu; + int i_threads; /* divide each frame into multiple slices, encode in parallel */ /* Video Properties */ int i_width; @@ -111,7 +122,6 @@ typedef struct int i_fps_num; int i_fps_den; - int i_maxframes; /* Maximum number of frames to read from input file and encode, 0=unlimited */ /* Bitstream parameters */ int i_frame_reference; /* Maximum number of reference frames */ @@ -135,12 +145,15 @@ typedef struct void (*pf_log)( void *, int i_level, const char *psz, va_list ); void *p_log_private; int i_log_level; + int b_visualize; /* Encoder analyser parameters */ struct { - unsigned int intra; /* intra flags */ - unsigned int inter; /* inter flags */ + unsigned int intra; /* intra partitions */ + unsigned int inter; /* inter partitions */ + + int b_transform_8x8; int i_direct_mv_pred; /* spatial vs temporal mv prediction */ int i_me_method; /* motion estimation algorithm to use (X264_ME_*) */ @@ -164,11 +177,12 @@ typedef struct int i_qp_max; /* max allowed QP value */ int i_qp_step; /* max QP step between frames */ - int b_cbr; /* constant bitrate */ + int b_cbr; /* use bitrate instead of CQP */ int i_bitrate; - int i_rc_buffer_size; - int i_rc_init_buffer; - int i_rc_sens; /* rate control sensitivity */ + float f_rate_tolerance; + int i_vbv_max_bitrate; + int i_vbv_buffer_size; + float f_vbv_buffer_init; float f_ip_factor; float f_pb_factor; @@ -178,11 +192,14 @@ typedef struct int b_stat_read; /* Read stat from psz_stat_in and use it */ char *psz_stat_in; - /* 2pass params (same than ffmpeg ones) */ + /* 2pass params (same as ffmpeg ones) */ char *psz_rc_eq; /* 2 pass rate control equation */ float f_qcompress; /* 0.0 => cbr, 1.0 => constant qp */ float f_qblur; /* temporally blur quants */ float f_complexity_blur; /* temporally blur complexity */ + x264_zone_t *zones; /* ratecontrol overrides */ + int i_zones; /* sumber of zone_t's */ + char *psz_zones; /* alternate method of specifying zones */ } rc; int b_aud; /* generate access unit delimiters */ @@ -280,6 +297,10 @@ int x264_nal_decode( x264_nal_t *nal, void *, int ); /* x264_encoder_open: * create a new encoder handler, all parameters from x264_param_t are copied */ x264_t *x264_encoder_open ( x264_param_t * ); +/* x264_encoder_reconfig: + * change encoder options while encoding, + * analysis-related parameters from x264_param_t are copied */ +int x264_encoder_reconfig( x264_t *, x264_param_t * ); /* x264_encoder_headers: * return the SPS and PPS that will be used for the whole stream */ int x264_encoder_headers( x264_t *, x264_nal_t **, int * );