X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=x264.h;h=26ac421ccea7ab8a1351b889934a49bda367c865;hb=82aef940468385dbff6e32b77477a0c80124aca9;hp=538e9a74e9f0dff340f559430076165daaed7408;hpb=9ccd80faeec2b8baa565b5f2d577cf3f79efd2e7;p=x264 diff --git a/x264.h b/x264.h index 538e9a74..26ac421c 100644 --- a/x264.h +++ b/x264.h @@ -35,7 +35,7 @@ #include -#define X264_BUILD 61 +#define X264_BUILD 67 /* x264_t: * opaque handler for encoder */ @@ -57,9 +57,12 @@ typedef struct x264_t x264_t; #define X264_CPU_SSE2_IS_FAST 0x000100 /* a few functions are only faster on Core2 and Phenom */ #define X264_CPU_SSE3 0x000200 #define X264_CPU_SSSE3 0x000400 -#define X264_CPU_PHADD_IS_FAST 0x000800 /* pre-Penryn Core2 have a uselessly slow PHADD instruction */ -#define X264_CPU_SSE4 0x001000 /* SSE4.1 */ -#define X264_CPU_STACK_MOD4 0x002000 /* if stack is only mod4 and not mod16 */ +#define X264_CPU_SHUFFLE_IS_FAST 0x000800 /* Penryn, Nehalem, and Phenom have fast shuffle units */ +#define X264_CPU_STACK_MOD4 0x001000 /* if stack is only mod4 and not mod16 */ +#define X264_CPU_SSE4 0x002000 /* SSE4.1 */ +#define X264_CPU_SSE42 0x004000 /* SSE4.2 */ +#define X264_CPU_SSE_MISALIGN 0x008000 /* Phenom support for misaligned SSE instruction arguments */ +#define X264_CPU_LZCNT 0x010000 /* Phenom support for "leading zero count" instruction. */ /* Analyse flags */ @@ -85,8 +88,10 @@ typedef struct x264_t x264_t; #define X264_RC_CRF 1 #define X264_RC_ABR 2 #define X264_AQ_NONE 0 -#define X264_AQ_LOCAL 1 -#define X264_AQ_GLOBAL 2 +#define X264_AQ_VARIANCE 1 +#define X264_B_ADAPT_NONE 0 +#define X264_B_ADAPT_FAST 1 +#define X264_B_ADAPT_TRELLIS 2 static const char * const x264_direct_pred_names[] = { "none", "spatial", "temporal", "auto", 0 }; static const char * const x264_motion_est_names[] = { "dia", "hex", "umh", "esa", "tesa", 0 }; @@ -183,9 +188,8 @@ typedef struct x264_param_t int i_keyint_max; /* Force an IDR keyframe at this interval */ int i_keyint_min; /* Scenecuts closer together than this are coded as I, not IDR. */ int i_scenecut_threshold; /* how aggressively to insert extra I frames */ - int b_pre_scenecut; /* compute scenecut on lowres frames */ int i_bframe; /* how many b-frame between 2 references pictures */ - int b_bframe_adaptive; + int i_bframe_adaptive; int i_bframe_bias; int b_bframe_pyramid; /* Keep some B-frames as references */ @@ -223,7 +227,6 @@ typedef struct x264_param_t int b_transform_8x8; int b_weighted_bipred; /* implicit weighting for B-frames */ int i_direct_mv_pred; /* spatial vs temporal mv prediction */ - int i_direct_8x8_inference; /* forbid 4x4 direct partitions. -1 = auto, based on level */ int i_chroma_qp_offset; int i_me_method; /* motion estimation algorithm to use (X264_ME_*) */ @@ -231,14 +234,14 @@ typedef struct x264_param_t int i_mv_range; /* maximum length of a mv (in pixels). -1 = auto, based on level */ int i_mv_range_thread; /* minimum space between threads. -1 = auto, based on number of threads. */ int i_subpel_refine; /* subpixel motion estimation quality */ - int b_bidir_me; /* jointly optimize both MVs in B-frames */ int b_chroma_me; /* chroma ME for subpel and mode decision in P-frames */ - int b_bframe_rdo; /* RD based mode decision for B-frames */ int b_mixed_references; /* allow each mb partition in P-frames to have it's own reference number */ int i_trellis; /* trellis RD quantization */ int b_fast_pskip; /* early SKIP detection on P-frames */ int b_dct_decimate; /* transform coefficient thresholding on P-frames */ int i_noise_reduction; /* adaptive pseudo-deadzone */ + float f_psy_rd; /* Psy RD strength */ + float f_psy_trellis; /* Psy trellis strength */ /* the deadzone size that will be used in luma quantization */ int i_luma_deadzone[2]; /* {inter, intra} */ @@ -337,7 +340,11 @@ typedef struct typedef struct { - /* In: force picture type (if not auto) XXX: ignored for now + /* In: force picture type (if not auto) + * If x264 encoding parameters are violated in the forcing of picture types, + * x264 will correct the input picture type and log a warning. + * The quality of frametype decisions may suffer if a great deal of fine-grained + * mixing of auto and forced frametypes is done. * Out: type of the picture encoded */ int i_type; /* In: force quantizer for > 0 */ @@ -400,10 +407,6 @@ typedef struct * XXX: it currently doesn't check for overflow */ int x264_nal_encode( void *, int *, int b_annexeb, x264_nal_t *nal ); -/* x264_nal_decode: - * decode a buffer nal into a x264_nal_t */ -int x264_nal_decode( x264_nal_t *nal, void *, int ); - /**************************************************************************** * Encoder functions: ****************************************************************************/