00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef VP8CX_H
00011 #define VP8CX_H
00012
00018 #include "vp8.h"
00019
00025 #ifdef __cplusplus
00026 extern "C" {
00027 #endif
00028
00035 extern vpx_codec_iface_t vpx_codec_vp8_cx_algo;
00036 extern vpx_codec_iface_t *vpx_codec_vp8_cx(void);
00037
00038
00039 extern vpx_codec_iface_t vpx_codec_vp9_cx_algo;
00040 extern vpx_codec_iface_t *vpx_codec_vp9_cx(void);
00041 extern vpx_codec_iface_t vpx_codec_vp9x_cx_algo;
00042 extern vpx_codec_iface_t *vpx_codec_vp9x_cx(void);
00043
00047
00048
00049
00050
00057 #define VP8_EFLAG_NO_REF_LAST (1<<16)
00058
00059
00066 #define VP8_EFLAG_NO_REF_GF (1<<17)
00067
00068
00075 #define VP8_EFLAG_NO_REF_ARF (1<<21)
00076
00077
00083 #define VP8_EFLAG_NO_UPD_LAST (1<<18)
00084
00085
00091 #define VP8_EFLAG_NO_UPD_GF (1<<22)
00092
00093
00099 #define VP8_EFLAG_NO_UPD_ARF (1<<23)
00100
00101
00107 #define VP8_EFLAG_FORCE_GF (1<<19)
00108
00109
00115 #define VP8_EFLAG_FORCE_ARF (1<<24)
00116
00117
00123 #define VP8_EFLAG_NO_UPD_ENTROPY (1<<20)
00124
00125
00133 enum vp8e_enc_control_id {
00134 VP8E_UPD_ENTROPY = 5,
00135 VP8E_UPD_REFERENCE,
00136 VP8E_USE_REFERENCE,
00137 VP8E_SET_ROI_MAP,
00138 VP8E_SET_ACTIVEMAP,
00139 VP8E_SET_SCALEMODE = 11,
00151 VP8E_SET_CPUUSED = 13,
00152 VP8E_SET_ENABLEAUTOALTREF,
00153 VP8E_SET_NOISE_SENSITIVITY,
00154 VP8E_SET_SHARPNESS,
00155 VP8E_SET_STATIC_THRESHOLD,
00156 VP8E_SET_TOKEN_PARTITIONS,
00157 VP8E_GET_LAST_QUANTIZER,
00160 VP8E_GET_LAST_QUANTIZER_64,
00164 VP8E_SET_ARNR_MAXFRAMES,
00165 VP8E_SET_ARNR_STRENGTH,
00166 VP8E_SET_ARNR_TYPE,
00167 VP8E_SET_TUNING,
00174 VP8E_SET_CQ_LEVEL,
00175
00188 VP8E_SET_MAX_INTRA_BITRATE_PCT,
00189
00190
00191
00192 VP9E_SET_LOSSLESS,
00193 VP9E_SET_TILE_COLUMNS,
00194 VP9E_SET_TILE_ROWS,
00195 VP9E_SET_FRAME_PARALLEL_DECODING,
00196 VP9E_SET_AQ_MODE,
00197
00198 VP9E_SET_SVC,
00199 VP9E_SET_SVC_PARAMETERS
00200 };
00201
00206 typedef enum vpx_scaling_mode_1d {
00207 VP8E_NORMAL = 0,
00208 VP8E_FOURFIVE = 1,
00209 VP8E_THREEFIVE = 2,
00210 VP8E_ONETWO = 3
00211 } VPX_SCALING_MODE;
00212
00213
00220 typedef struct vpx_roi_map {
00222 unsigned char *roi_map;
00223 unsigned int rows;
00224 unsigned int cols;
00225
00226
00227
00228 int delta_q[4];
00229 int delta_lf[4];
00231 unsigned int static_threshold[4];
00232 } vpx_roi_map_t;
00233
00241 typedef struct vpx_active_map {
00242 unsigned char *active_map;
00243 unsigned int rows;
00244 unsigned int cols;
00245 } vpx_active_map_t;
00246
00252 typedef struct vpx_scaling_mode {
00253 VPX_SCALING_MODE h_scaling_mode;
00254 VPX_SCALING_MODE v_scaling_mode;
00255 } vpx_scaling_mode_t;
00256
00264 typedef enum {
00265 VP8_ONE_TOKENPARTITION = 0,
00266 VP8_TWO_TOKENPARTITION = 1,
00267 VP8_FOUR_TOKENPARTITION = 2,
00268 VP8_EIGHT_TOKENPARTITION = 3
00269 } vp8e_token_partitions;
00270
00271
00277 typedef enum {
00278 VP8_TUNE_PSNR,
00279 VP8_TUNE_SSIM
00280 } vp8e_tuning;
00281
00287 typedef struct vpx_svc_parameters {
00288 unsigned int width;
00289 unsigned int height;
00290 int layer;
00291 int flags;
00292 int max_quantizer;
00293 int min_quantizer;
00294 int distance_from_i_frame;
00295 int lst_fb_idx;
00296 int gld_fb_idx;
00297 int alt_fb_idx;
00298 } vpx_svc_parameters_t;
00299
00308
00309
00310
00311 VPX_CTRL_USE_TYPE_DEPRECATED(VP8E_UPD_ENTROPY, int)
00312 VPX_CTRL_USE_TYPE_DEPRECATED(VP8E_UPD_REFERENCE, int)
00313 VPX_CTRL_USE_TYPE_DEPRECATED(VP8E_USE_REFERENCE, int)
00314
00315 VPX_CTRL_USE_TYPE(VP8E_SET_ROI_MAP, vpx_roi_map_t *)
00316 VPX_CTRL_USE_TYPE(VP8E_SET_ACTIVEMAP, vpx_active_map_t *)
00317 VPX_CTRL_USE_TYPE(VP8E_SET_SCALEMODE, vpx_scaling_mode_t *)
00318
00319 VPX_CTRL_USE_TYPE(VP9E_SET_SVC, int)
00320 VPX_CTRL_USE_TYPE(VP9E_SET_SVC_PARAMETERS, vpx_svc_parameters_t *)
00321
00322 VPX_CTRL_USE_TYPE(VP8E_SET_CPUUSED, int)
00323 VPX_CTRL_USE_TYPE(VP8E_SET_ENABLEAUTOALTREF, unsigned int)
00324 VPX_CTRL_USE_TYPE(VP8E_SET_NOISE_SENSITIVITY, unsigned int)
00325 VPX_CTRL_USE_TYPE(VP8E_SET_SHARPNESS, unsigned int)
00326 VPX_CTRL_USE_TYPE(VP8E_SET_STATIC_THRESHOLD, unsigned int)
00327 VPX_CTRL_USE_TYPE(VP8E_SET_TOKEN_PARTITIONS, int)
00328
00329 VPX_CTRL_USE_TYPE(VP8E_SET_ARNR_MAXFRAMES, unsigned int)
00330 VPX_CTRL_USE_TYPE(VP8E_SET_ARNR_STRENGTH, unsigned int)
00331 VPX_CTRL_USE_TYPE(VP8E_SET_ARNR_TYPE, unsigned int)
00332 VPX_CTRL_USE_TYPE(VP8E_SET_TUNING, int)
00333 VPX_CTRL_USE_TYPE(VP8E_SET_CQ_LEVEL, unsigned int)
00334
00335 VPX_CTRL_USE_TYPE(VP9E_SET_TILE_COLUMNS, int)
00336 VPX_CTRL_USE_TYPE(VP9E_SET_TILE_ROWS, int)
00337
00338 VPX_CTRL_USE_TYPE(VP8E_GET_LAST_QUANTIZER, int *)
00339 VPX_CTRL_USE_TYPE(VP8E_GET_LAST_QUANTIZER_64, int *)
00340
00341 VPX_CTRL_USE_TYPE(VP8E_SET_MAX_INTRA_BITRATE_PCT, unsigned int)
00342
00343 VPX_CTRL_USE_TYPE(VP9E_SET_LOSSLESS, unsigned int)
00344
00345 VPX_CTRL_USE_TYPE(VP9E_SET_FRAME_PARALLEL_DECODING, unsigned int)
00346
00347 VPX_CTRL_USE_TYPE(VP9E_SET_AQ_MODE, unsigned int)
00348
00350 #ifdef __cplusplus
00351 }
00352 #endif
00353
00354 #endif