uint8_t* payload;
} x265_nal;
-/* Stores inter (motion estimation) analysis data for a single frame */
-typedef struct x265_inter_data
-{
- uint32_t zOrder;
- int ref[2];
- int costZero[2];
- int16_t mvx[2];
- int16_t mvy[2];
- uint32_t depth;
- int poc;
- uint32_t cuAddr;
-} x265_inter_data;
-
-/* Stores intra (motion estimation) analysis data for a single frame */
-typedef struct x265_intra_data
-{
- uint8_t* depth;
- uint8_t* modes;
- char* partSizes;
- int* poc;
- uint32_t* cuAddr;
-} x265_intra_data;
-
/* Stores all analysis data for a single frame */
typedef struct x265_analysis_data
{
- x265_inter_data* interData;
- x265_intra_data* intraData;
+ uint32_t frameRecordSize;
+ int32_t poc;
+ int32_t sliceType;
uint32_t numCUsInFrame;
uint32_t numPartitions;
+ void* interData;
+ void* intraData;
} x265_analysis_data;
/* Used to pass pictures into the encoder, and to get picture data back out of
#define X265_ANALYSIS_OFF 0
#define X265_ANALYSIS_SAVE 1
#define X265_ANALYSIS_LOAD 2
-
typedef struct
{
int planes;
* per-slice statistics to this log file in encode order. Otherwise the
* encoder will emit per-stream statistics into the log file when
* x265_encoder_log is called (presumably at the end of the encode) */
- const char *csvfn;
+ char *csvfn;
/* Enable the generation of SEI messages for each encoded frame containing
* the hashes of the three reconstructed picture planes. Most decoders will
/* The additional depth the residual quadtree is allowed to recurse beyond
* the coding quadtree, for inter coded blocks. This must be between 1 and
- * 3. The higher the value the more efficiently the residual can be
+ * 4. The higher the value the more efficiently the residual can be
* compressed by the DCT transforms, at the expense of much more compute */
uint32_t tuQTMaxInterDepth;
/* The additional depth the residual quadtree is allowed to recurse beyond
* the coding quadtree, for intra coded blocks. This must be between 1 and
- * 3. The higher the value the more efficiently the residual can be
+ * 4. The higher the value the more efficiently the residual can be
* compressed by the DCT transforms, at the expense of much more compute */
uint32_t tuQTMaxIntraDepth;
/* Enable the use of `coded block flags` (flags set to true when a residual
* has been coded for a given block) to avoid intra analysis in likely skip
- * blocks. Default is disabled */
+ * blocks. Only applicable in RD levels 5 and 6. Default is disabled */
int bEnableCbfFastMode;
/* Enable early skip decisions to avoid intra and inter analysis in likely
* buffer and use this analysis information to reduce the amount of work
* the encoder must perform. Default X265_ANALYSIS_OFF */
int analysisMode;
+ /* Filename for analysisMode save/load. Default name is "x265_analysis.dat" */
+ char* analysisFileName;
/*== Coding tools ==*/
-
/* Enable the implicit signaling of the sign bit of the last coefficient of
* each transform unit. This saves one bit per TU at the expense of figuring
* out which coefficient can be toggled with the least distortion.
/* Enable the deblocking loop filter, which improves visual quality by
* reducing blocking effects at block edges, particularly at lower bitrates
* or higher QP. When enabled it adds another CU row of reference lag,
- * reducing frame parallelism effectiveness. Default is enabled */
+ * reducing frame parallelism effectiveness. Default is enabled */
int bEnableLoopFilter;
+ /* deblocking filter tC offset [-6, 6] -6 light filter, 6 strong.
+ * This is the coded div2 value, actual offset is doubled at use */
+ int deblockingFilterTCOffset;
+
+ /* deblocking filter Beta offset [-6, 6] -6 light filter, 6 strong
+ * This is the coded div2 value, actual offset is doubled at use */
+ int deblockingFilterBetaOffset;
+
/* Enable the Sample Adaptive Offset loop filter, which reduces distortion
* effects by adjusting reconstructed sample values based on histogram
* analysis to better approximate the original samples. When enabled it adds
* regardless of this setting. */
int bIntraInBFrames;
- /* An integer value in range of 100 to 1000, which denotes strength of noise
- * reduction */
- int noiseReduction;
+ /* An integer value in range of 0 to 2000, which denotes strength of noise
+ * reduction in intra CUs. 0 means disabled */
+ int noiseReductionIntra;
+
+ /* An integer value in range of 0 to 2000, which denotes strength of noise
+ * reduction in inter CUs. 0 means disabled */
+ int noiseReductionInter;
/* The lossless flag enables true lossless coding, by bypassing scaling,
* transform, quantization and in-loop filter processes. This is used for
int bitrate;
/* The degree of rate fluctuation that x265 tolerates. Rate tolerance is used
- * alongwith overflow (difference between actual and target bitrate), to adjust
+ * along with overflow (difference between actual and target bitrate), to adjust
* qp. Default is 1.0 */
double rateTolerance;
double rfConstant;
/* Enable adaptive quantization. This mode distributes available bits between all
- * macroblocks of a frame, assigning more bits to low complexity areas. Turning
+ * CTUs of a frame, assigning more bits to low complexity areas. Turning
* this ON will usually affect PSNR negatively, however SSIM and visual quality
- * generally improves. Default: X265_AQ_AUTO_VARIANCE */
+ * generally improves. Default: X265_AQ_VARIANCE */
int aqMode;
- /* Sets the strength of AQ bias towards low detail macroblocks. Valid only if
+ /* Sets the strength of AQ bias towards low detail CTUs. Valid only if
* AQ is enabled. Default value: 1.0. Acceptable values between 0.0 and 3.0 */
double aqStrength;
/* In CRF mode, minimum CRF as caused by VBV */
double rfConstantMin;
- /* Two pass (INCOMPLETE) */
+ /* Multi-pass encoding */
/* Enable writing the stats in a multipass encode to the stat output file */
int bStatWrite;
/* Enable loading data from the stat input file in a multi pass encode */
int bStatRead;
- /* Filename of the 2pass output/input stats file */
+ /* Filename of the 2pass output/input stats file, if unspecified the
+ * encoder will default to using x265_2pass.log */
char* statFileName;
/* temporally blur quants */
* special in any way, but using this method together with x265_param_free()
* and x265_param_parse() to set values by name allows the application to treat
* x265_param as an opaque data struct for version safety */
-x265_param *x265_param_alloc();
+x265_param *x265_param_alloc(void);
/* x265_param_free:
* Use x265_param_free() to release storage for an x265_param instance
* 100 times faster than placebo!
*
* Currently available tunings are: */
-static const char * const x265_tune_names[] = { "psnr", "ssim", "zerolatency", "fastdecode", 0 };
+static const char * const x265_tune_names[] = { "psnr", "ssim", "grain", "zerolatency", "fastdecode", "cbr", 0 };
/* returns 0 on success, negative on failure (e.g. invalid preset/tune name). */
int x265_param_default_preset(x265_param *, const char *preset, const char *tune);
* special in any way, but using this method together with x265_picture_free()
* and x265_picture_init() allows some version safety. New picture fields will
* always be added to the end of x265_picture */
-x265_picture *x265_picture_alloc();
+x265_picture *x265_picture_alloc(void);
/* x265_picture_free:
* Use x265_picture_free() to release storage for an x265_picture instance
* allocated by x265_picture_alloc() */
void x265_picture_free(x265_picture *);
-
-/* x265_alloc_analysis_data:
- * Allocate memory to hold analysis data, returns 0 on success else negative */
-int x265_alloc_analysis_data(x265_picture*);
-
-/* x265_free_analysis_data:
- * Use x265_free_analysis_data to release storage of members allocated by
- * x265_alloc_analysis_data */
-void x265_free_analysis_data(x265_picture*);
-
/***
* Initialize an x265_picture structure to default values. It sets the pixel
* depth and color space to the encoder's internal values and sets the slice