]> git.sesse.net Git - x264/blobdiff - x264.h
Oops, increment API number.
[x264] / x264.h
diff --git a/x264.h b/x264.h
index b6a7830e1f5e8288fac193fc1533363a6e06251b..3b878c286bcda8e6f39a54984da0f66d600aa6be 100644 (file)
--- a/x264.h
+++ b/x264.h
@@ -24,7 +24,9 @@
 #ifndef _X264_H
 #define _X264_H 1
 
-#define X264_BUILD 0x0009
+#include <stdarg.h>
+
+#define X264_BUILD 0x0011
 
 /* x264_t:
  *      opaque handler for decoder and encoder */
@@ -48,6 +50,10 @@ typedef struct x264_t x264_t;
 #define X264_ANALYSE_I4x4       0x0001  /* Analyse i4x4 */
 #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 */
+#define X264_DIRECT_PRED_NONE        0
+#define X264_DIRECT_PRED_SPATIAL     1
+#define X264_DIRECT_PRED_TEMPORAL    2
 
 /* Colorspace type
  */
@@ -88,6 +94,7 @@ typedef struct
     int         i_width;
     int         i_height;
     int         i_csp;  /* CSP of encoded bitstream, only i420 supported */
+    int         i_level_idc; 
 
     struct
     {
@@ -98,11 +105,13 @@ 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 */
-    int         i_idrframe; /* every i_idrframe I frame are marked as IDR */
-    int         i_iframe;   /* every i_iframe are intra */
+    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         i_bframe;   /* how many b-frame between 2 references pictures */
 
     int         b_deblocking_filter;
@@ -112,18 +121,6 @@ typedef struct
     int         b_cabac;
     int         i_cabac_init_idc;
 
-    int         i_qp_constant;  /* 1-51 */
-    int         i_qp_min;       /* min allowed QP value */
-    int         i_qp_max;       /* max allowed QP value */
-    int         i_qp_step;      /* max QP step between frames */
-
-    int         b_cbr;          /* constant bitrate */
-    int         i_bitrate;
-    int         i_rc_buffer_size;
-    int         i_rc_init_buffer;
-    int         i_rc_sens;      /* rate control sensitivity */
-    float       f_ip_factor;
-    float       f_pb_factor;
 
     /* Log */
     void        (*pf_log)( void *, int i_level, const char *psz, va_list );
@@ -136,9 +133,44 @@ typedef struct
         unsigned int intra;     /* intra flags */
         unsigned int inter;     /* inter flags */
 
+        int          i_direct_mv_pred; /* spatial vs temporal mv prediction */
+
+        int          i_subpel_refine; /* subpixel motion estimation quality */
+
+        int          i_mv_range; /* maximum length of a mv (in pixels) */
+
         int          b_psnr;    /* Do we compute PSNR stats (save a few % of cpu) */
     } analyse;
 
+    /* Rate control parameters */
+    struct
+    {
+        int         i_qp_constant;  /* 1-51 */
+        int         i_qp_min;       /* min allowed QP value */
+        int         i_qp_max;       /* max allowed QP value */
+        int         i_qp_step;      /* max QP step between frames */
+
+        int         b_cbr;          /* constant bitrate */
+        int         i_bitrate;
+        int         i_rc_buffer_size;
+        int         i_rc_init_buffer;
+        int         i_rc_sens;      /* rate control sensitivity */
+        float       f_ip_factor;
+        float       f_pb_factor;
+
+        /* 2pass */
+        int         b_stat_write;   /* Enable stat writing in psz_stat_out */
+        char        *psz_stat_out;
+        int         b_stat_read;    /* Read stat from psz_stat_in and use it */
+        char        *psz_stat_in;
+
+        /* 2pass params (same than 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 */
+    } rc;
+
 } x264_param_t;
 
 /* x264_param_default: