#include <stdarg.h>
-#define X264_BUILD 36
+#define X264_BUILD 41
/* x264_t:
* opaque handler for decoder and encoder */
int i_height;
int i_csp; /* CSP of encoded bitstream, only i420 supported */
int i_level_idc;
+ int i_frame_total; /* number of frames to encode if known, else 0 */
struct
{
int i_mv_range; /* maximum length of a mv (in pixels) */
int i_subpel_refine; /* subpixel motion estimation quality */
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_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_constant; /* 0-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; /* use bitrate instead of CQP */
int i_bitrate;
+ int i_rf_constant; /* 1pass VBR, nominal QP */
float f_rate_tolerance;
int i_vbv_max_bitrate;
int i_vbv_buffer_size;
} rc;
int b_aud; /* generate access unit delimiters */
+ int b_repeat_headers; /* put SPS/PPS before each keyframe */
} x264_param_t;
+typedef struct {
+ int level_idc;
+ int mbps; // max macroblock processing rate (macroblocks/sec)
+ int frame_size; // max frame size (macroblocks)
+ int dpb; // max decoded picture buffer (bytes)
+ int bitrate; // max bitrate (kbit/sec)
+ int cpb; // max vbv buffer (kbit)
+ int mv_range; // max vertical mv component range (pixels)
+ int mvs_per_2mb; // max mvs per 2 consecutive mbs.
+ int slice_rate; // ??
+ int bipred8x8; // limit bipred to >=8x8
+ int direct8x8; // limit b_direct to >=8x8
+ int frame_only; // forbid interlacing
+} x264_level_t;
+
+/* all of the levels defined in the standard, terminated by .level_idc=0 */
+extern const x264_level_t x264_levels[];
+
/* x264_param_default:
* fill x264_param_t with default values and do CPU detection */
void x264_param_default( x264_param_t * );
# ifdef _MSC_VER
# define inline __inline
# define DECLARE_ALIGNED( type, var, n ) __declspec(align(n)) type var
+# define strncasecmp(s1, s2, n) strnicmp(s1, s2, n)
# else
# define DECLARE_ALIGNED( type, var, n ) type var __attribute__((aligned(n)))
# endif