Merge "Removing ctrl_id parameter from vpx_codec_control_fn_t."
This commit is contained in:
Коммит
0becfe42bb
|
@ -472,70 +472,128 @@ static vpx_codec_err_t vp8e_set_config(vpx_codec_alg_priv_t *ctx,
|
|||
return res;
|
||||
}
|
||||
|
||||
|
||||
int vp8_reverse_trans(int);
|
||||
|
||||
|
||||
static vpx_codec_err_t get_param(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id,
|
||||
va_list args)
|
||||
static vpx_codec_err_t get_quantizer(vpx_codec_alg_priv_t *ctx, va_list args)
|
||||
{
|
||||
void *arg = va_arg(args, void *);
|
||||
|
||||
#define MAP(id, var) case id: *(RECAST(id, arg)) = var; break
|
||||
|
||||
if (!arg)
|
||||
int *const arg = va_arg(args, int *);
|
||||
if (arg == NULL)
|
||||
return VPX_CODEC_INVALID_PARAM;
|
||||
|
||||
switch (ctrl_id)
|
||||
{
|
||||
MAP(VP8E_GET_LAST_QUANTIZER, vp8_get_quantizer(ctx->cpi));
|
||||
MAP(VP8E_GET_LAST_QUANTIZER_64, vp8_reverse_trans(vp8_get_quantizer(ctx->cpi)));
|
||||
}
|
||||
|
||||
*arg = vp8_get_quantizer(ctx->cpi);
|
||||
return VPX_CODEC_OK;
|
||||
#undef MAP
|
||||
}
|
||||
|
||||
|
||||
static vpx_codec_err_t set_param(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id,
|
||||
va_list args)
|
||||
static vpx_codec_err_t get_quantizer64(vpx_codec_alg_priv_t *ctx, va_list args)
|
||||
{
|
||||
vpx_codec_err_t res = VPX_CODEC_OK;
|
||||
struct vp8_extracfg xcfg = ctx->vp8_cfg;
|
||||
int *const arg = va_arg(args, int *);
|
||||
if (arg == NULL)
|
||||
return VPX_CODEC_INVALID_PARAM;
|
||||
*arg = vp8_reverse_trans(vp8_get_quantizer(ctx->cpi));
|
||||
return VPX_CODEC_OK;
|
||||
}
|
||||
|
||||
#define MAP(id, var) case id: var = CAST(id, args); break;
|
||||
|
||||
switch (ctrl_id)
|
||||
{
|
||||
MAP(VP8E_SET_CPUUSED, xcfg.cpu_used);
|
||||
MAP(VP8E_SET_ENABLEAUTOALTREF, xcfg.enable_auto_alt_ref);
|
||||
MAP(VP8E_SET_NOISE_SENSITIVITY, xcfg.noise_sensitivity);
|
||||
MAP(VP8E_SET_SHARPNESS, xcfg.Sharpness);
|
||||
MAP(VP8E_SET_STATIC_THRESHOLD, xcfg.static_thresh);
|
||||
MAP(VP8E_SET_TOKEN_PARTITIONS, xcfg.token_partitions);
|
||||
|
||||
MAP(VP8E_SET_ARNR_MAXFRAMES, xcfg.arnr_max_frames);
|
||||
MAP(VP8E_SET_ARNR_STRENGTH , xcfg.arnr_strength);
|
||||
MAP(VP8E_SET_ARNR_TYPE , xcfg.arnr_type);
|
||||
MAP(VP8E_SET_TUNING, xcfg.tuning);
|
||||
MAP(VP8E_SET_CQ_LEVEL, xcfg.cq_level);
|
||||
MAP(VP8E_SET_MAX_INTRA_BITRATE_PCT, xcfg.rc_max_intra_bitrate_pct);
|
||||
|
||||
}
|
||||
|
||||
res = validate_config(ctx, &ctx->cfg, &xcfg, 0);
|
||||
|
||||
if (!res)
|
||||
{
|
||||
ctx->vp8_cfg = xcfg;
|
||||
static vpx_codec_err_t update_extracfg(vpx_codec_alg_priv_t *ctx,
|
||||
const struct vp8_extracfg *extra_cfg)
|
||||
{
|
||||
const vpx_codec_err_t res = validate_config(ctx, &ctx->cfg, extra_cfg, 0);
|
||||
if (res == VPX_CODEC_OK) {
|
||||
ctx->vp8_cfg = *extra_cfg;
|
||||
set_vp8e_config(&ctx->oxcf, ctx->cfg, ctx->vp8_cfg, NULL);
|
||||
vp8_change_config(ctx->cpi, &ctx->oxcf);
|
||||
}
|
||||
|
||||
return res;
|
||||
#undef MAP
|
||||
}
|
||||
|
||||
static vpx_codec_err_t set_cpu_used(vpx_codec_alg_priv_t *ctx, va_list args)
|
||||
{
|
||||
struct vp8_extracfg extra_cfg = ctx->vp8_cfg;
|
||||
extra_cfg.cpu_used = CAST(VP8E_SET_CPUUSED, args);
|
||||
return update_extracfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t set_enable_auto_alt_ref(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args)
|
||||
{
|
||||
struct vp8_extracfg extra_cfg = ctx->vp8_cfg;
|
||||
extra_cfg.enable_auto_alt_ref = CAST(VP8E_SET_ENABLEAUTOALTREF, args);
|
||||
return update_extracfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t set_noise_sensitivity(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args)
|
||||
{
|
||||
struct vp8_extracfg extra_cfg = ctx->vp8_cfg;
|
||||
extra_cfg.noise_sensitivity = CAST(VP8E_SET_NOISE_SENSITIVITY, args);
|
||||
return update_extracfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t set_sharpness(vpx_codec_alg_priv_t *ctx, va_list args)
|
||||
{
|
||||
struct vp8_extracfg extra_cfg = ctx->vp8_cfg;
|
||||
extra_cfg.Sharpness = CAST(VP8E_SET_SHARPNESS, args);
|
||||
return update_extracfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t set_static_thresh(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args)
|
||||
{
|
||||
struct vp8_extracfg extra_cfg = ctx->vp8_cfg;
|
||||
extra_cfg.static_thresh = CAST(VP8E_SET_STATIC_THRESHOLD, args);
|
||||
return update_extracfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t set_token_partitions(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args)
|
||||
{
|
||||
struct vp8_extracfg extra_cfg = ctx->vp8_cfg;
|
||||
extra_cfg.token_partitions = CAST(VP8E_SET_TOKEN_PARTITIONS, args);
|
||||
return update_extracfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t set_arnr_max_frames(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args)
|
||||
{
|
||||
struct vp8_extracfg extra_cfg = ctx->vp8_cfg;
|
||||
extra_cfg.arnr_max_frames = CAST(VP8E_SET_ARNR_MAXFRAMES, args);
|
||||
return update_extracfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t set_arnr_strength(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args)
|
||||
{
|
||||
struct vp8_extracfg extra_cfg = ctx->vp8_cfg;
|
||||
extra_cfg.arnr_strength = CAST(VP8E_SET_ARNR_STRENGTH, args);
|
||||
return update_extracfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t set_arnr_type(vpx_codec_alg_priv_t *ctx, va_list args)
|
||||
{
|
||||
struct vp8_extracfg extra_cfg = ctx->vp8_cfg;
|
||||
extra_cfg.arnr_type = CAST(VP8E_SET_ARNR_TYPE, args);
|
||||
return update_extracfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t set_tuning(vpx_codec_alg_priv_t *ctx, va_list args)
|
||||
{
|
||||
struct vp8_extracfg extra_cfg = ctx->vp8_cfg;
|
||||
extra_cfg.tuning = CAST(VP8E_SET_TUNING, args);
|
||||
return update_extracfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t set_cq_level(vpx_codec_alg_priv_t *ctx, va_list args)
|
||||
{
|
||||
struct vp8_extracfg extra_cfg = ctx->vp8_cfg;
|
||||
extra_cfg.cq_level = CAST(VP8E_SET_CQ_LEVEL, args);
|
||||
return update_extracfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t set_rc_max_intra_bitrate_pct(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args)
|
||||
{
|
||||
struct vp8_extracfg extra_cfg = ctx->vp8_cfg;
|
||||
extra_cfg.rc_max_intra_bitrate_pct =
|
||||
CAST(VP8E_SET_MAX_INTRA_BITRATE_PCT, args);
|
||||
return update_extracfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t vp8e_mr_alloc_mem(const vpx_codec_enc_cfg_t *cfg,
|
||||
|
@ -976,7 +1034,6 @@ static const vpx_codec_cx_pkt_t *vp8e_get_cxdata(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t vp8e_set_reference(vpx_codec_alg_priv_t *ctx,
|
||||
int ctr_id,
|
||||
va_list args)
|
||||
{
|
||||
vpx_ref_frame_t *data = va_arg(args, vpx_ref_frame_t *);
|
||||
|
@ -996,7 +1053,6 @@ static vpx_codec_err_t vp8e_set_reference(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t vp8e_get_reference(vpx_codec_alg_priv_t *ctx,
|
||||
int ctr_id,
|
||||
va_list args)
|
||||
{
|
||||
|
||||
|
@ -1016,12 +1072,10 @@ static vpx_codec_err_t vp8e_get_reference(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t vp8e_set_previewpp(vpx_codec_alg_priv_t *ctx,
|
||||
int ctr_id,
|
||||
va_list args)
|
||||
{
|
||||
#if CONFIG_POSTPROC
|
||||
vp8_postproc_cfg_t *data = va_arg(args, vp8_postproc_cfg_t *);
|
||||
(void)ctr_id;
|
||||
|
||||
if (data)
|
||||
{
|
||||
|
@ -1032,7 +1086,6 @@ static vpx_codec_err_t vp8e_set_previewpp(vpx_codec_alg_priv_t *ctx,
|
|||
return VPX_CODEC_INVALID_PARAM;
|
||||
#else
|
||||
(void)ctx;
|
||||
(void)ctr_id;
|
||||
(void)args;
|
||||
return VPX_CODEC_INCAPABLE;
|
||||
#endif
|
||||
|
@ -1090,7 +1143,6 @@ static vpx_image_t *vp8e_get_preview(vpx_codec_alg_priv_t *ctx)
|
|||
}
|
||||
|
||||
static vpx_codec_err_t vp8e_update_entropy(vpx_codec_alg_priv_t *ctx,
|
||||
int ctr_id,
|
||||
va_list args)
|
||||
{
|
||||
int update = va_arg(args, int);
|
||||
|
@ -1100,7 +1152,6 @@ static vpx_codec_err_t vp8e_update_entropy(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t vp8e_update_reference(vpx_codec_alg_priv_t *ctx,
|
||||
int ctr_id,
|
||||
va_list args)
|
||||
{
|
||||
int update = va_arg(args, int);
|
||||
|
@ -1109,7 +1160,6 @@ static vpx_codec_err_t vp8e_update_reference(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t vp8e_use_reference(vpx_codec_alg_priv_t *ctx,
|
||||
int ctr_id,
|
||||
va_list args)
|
||||
{
|
||||
int reference_flag = va_arg(args, int);
|
||||
|
@ -1118,7 +1168,6 @@ static vpx_codec_err_t vp8e_use_reference(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t vp8e_set_roi_map(vpx_codec_alg_priv_t *ctx,
|
||||
int ctr_id,
|
||||
va_list args)
|
||||
{
|
||||
vpx_roi_map_t *data = va_arg(args, vpx_roi_map_t *);
|
||||
|
@ -1138,7 +1187,6 @@ static vpx_codec_err_t vp8e_set_roi_map(vpx_codec_alg_priv_t *ctx,
|
|||
|
||||
|
||||
static vpx_codec_err_t vp8e_set_activemap(vpx_codec_alg_priv_t *ctx,
|
||||
int ctr_id,
|
||||
va_list args)
|
||||
{
|
||||
vpx_active_map_t *data = va_arg(args, vpx_active_map_t *);
|
||||
|
@ -1158,7 +1206,6 @@ static vpx_codec_err_t vp8e_set_activemap(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t vp8e_set_scalemode(vpx_codec_alg_priv_t *ctx,
|
||||
int ctr_id,
|
||||
va_list args)
|
||||
{
|
||||
|
||||
|
@ -1197,20 +1244,20 @@ static vpx_codec_ctrl_fn_map_t vp8e_ctf_maps[] =
|
|||
{VP8E_SET_ROI_MAP, vp8e_set_roi_map},
|
||||
{VP8E_SET_ACTIVEMAP, vp8e_set_activemap},
|
||||
{VP8E_SET_SCALEMODE, vp8e_set_scalemode},
|
||||
{VP8E_SET_CPUUSED, set_param},
|
||||
{VP8E_SET_NOISE_SENSITIVITY, set_param},
|
||||
{VP8E_SET_ENABLEAUTOALTREF, set_param},
|
||||
{VP8E_SET_SHARPNESS, set_param},
|
||||
{VP8E_SET_STATIC_THRESHOLD, set_param},
|
||||
{VP8E_SET_TOKEN_PARTITIONS, set_param},
|
||||
{VP8E_GET_LAST_QUANTIZER, get_param},
|
||||
{VP8E_GET_LAST_QUANTIZER_64, get_param},
|
||||
{VP8E_SET_ARNR_MAXFRAMES, set_param},
|
||||
{VP8E_SET_ARNR_STRENGTH , set_param},
|
||||
{VP8E_SET_ARNR_TYPE , set_param},
|
||||
{VP8E_SET_TUNING, set_param},
|
||||
{VP8E_SET_CQ_LEVEL, set_param},
|
||||
{VP8E_SET_MAX_INTRA_BITRATE_PCT, set_param},
|
||||
{VP8E_SET_CPUUSED, set_cpu_used},
|
||||
{VP8E_SET_NOISE_SENSITIVITY, set_noise_sensitivity},
|
||||
{VP8E_SET_ENABLEAUTOALTREF, set_enable_auto_alt_ref},
|
||||
{VP8E_SET_SHARPNESS, set_sharpness},
|
||||
{VP8E_SET_STATIC_THRESHOLD, set_static_thresh},
|
||||
{VP8E_SET_TOKEN_PARTITIONS, set_token_partitions},
|
||||
{VP8E_GET_LAST_QUANTIZER, get_quantizer},
|
||||
{VP8E_GET_LAST_QUANTIZER_64, get_quantizer64},
|
||||
{VP8E_SET_ARNR_MAXFRAMES, set_arnr_max_frames},
|
||||
{VP8E_SET_ARNR_STRENGTH , set_arnr_strength},
|
||||
{VP8E_SET_ARNR_TYPE , set_arnr_type},
|
||||
{VP8E_SET_TUNING, set_tuning},
|
||||
{VP8E_SET_CQ_LEVEL, set_cq_level},
|
||||
{VP8E_SET_MAX_INTRA_BITRATE_PCT, set_rc_max_intra_bitrate_pct},
|
||||
{ -1, NULL},
|
||||
};
|
||||
|
||||
|
|
|
@ -576,7 +576,6 @@ static vpx_codec_err_t image2yuvconfig(const vpx_image_t *img,
|
|||
|
||||
|
||||
static vpx_codec_err_t vp8_set_reference(vpx_codec_alg_priv_t *ctx,
|
||||
int ctr_id,
|
||||
va_list args)
|
||||
{
|
||||
|
||||
|
@ -598,7 +597,6 @@ static vpx_codec_err_t vp8_set_reference(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t vp8_get_reference(vpx_codec_alg_priv_t *ctx,
|
||||
int ctr_id,
|
||||
va_list args)
|
||||
{
|
||||
|
||||
|
@ -620,7 +618,6 @@ static vpx_codec_err_t vp8_get_reference(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t vp8_set_postproc(vpx_codec_alg_priv_t *ctx,
|
||||
int ctr_id,
|
||||
va_list args)
|
||||
{
|
||||
#if CONFIG_POSTPROC
|
||||
|
@ -640,31 +637,56 @@ static vpx_codec_err_t vp8_set_postproc(vpx_codec_alg_priv_t *ctx,
|
|||
#endif
|
||||
}
|
||||
|
||||
static vpx_codec_err_t vp8_set_dbg_options(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id,
|
||||
va_list args)
|
||||
{
|
||||
|
||||
static vpx_codec_err_t vp8_set_dbg_color_ref_frame(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
#if CONFIG_POSTPROC_VISUALIZER && CONFIG_POSTPROC
|
||||
int data = va_arg(args, int);
|
||||
|
||||
#define MAP(id, var) case id: var = data; break;
|
||||
|
||||
switch (ctrl_id)
|
||||
{
|
||||
MAP (VP8_SET_DBG_COLOR_REF_FRAME, ctx->dbg_color_ref_frame_flag);
|
||||
MAP (VP8_SET_DBG_COLOR_MB_MODES, ctx->dbg_color_mb_modes_flag);
|
||||
MAP (VP8_SET_DBG_COLOR_B_MODES, ctx->dbg_color_b_modes_flag);
|
||||
MAP (VP8_SET_DBG_DISPLAY_MV, ctx->dbg_display_mv_flag);
|
||||
}
|
||||
|
||||
ctx->dbg_color_ref_frame_flag = va_arg(args, int);
|
||||
return VPX_CODEC_OK;
|
||||
#else
|
||||
(void)ctx;
|
||||
(void)args;
|
||||
return VPX_CODEC_INCAPABLE;
|
||||
#endif
|
||||
}
|
||||
|
||||
static vpx_codec_err_t vp8_set_dbg_color_mb_modes(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
#if CONFIG_POSTPROC_VISUALIZER && CONFIG_POSTPROC
|
||||
ctx->dbg_color_mb_modes_flag = va_arg(args, int);
|
||||
return VPX_CODEC_OK;
|
||||
#else
|
||||
(void)ctx;
|
||||
(void)args;
|
||||
return VPX_CODEC_INCAPABLE;
|
||||
#endif
|
||||
}
|
||||
|
||||
static vpx_codec_err_t vp8_set_dbg_color_b_modes(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
#if CONFIG_POSTPROC_VISUALIZER && CONFIG_POSTPROC
|
||||
ctx->dbg_color_b_modes_flag = va_arg(args, int);
|
||||
return VPX_CODEC_OK;
|
||||
#else
|
||||
(void)ctx;
|
||||
(void)args;
|
||||
return VPX_CODEC_INCAPABLE;
|
||||
#endif
|
||||
}
|
||||
|
||||
static vpx_codec_err_t vp8_set_dbg_display_mv(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
#if CONFIG_POSTPROC_VISUALIZER && CONFIG_POSTPROC
|
||||
ctx->dbg_display_mv_flag = va_arg(args, int);
|
||||
return VPX_CODEC_OK;
|
||||
#else
|
||||
(void)ctx;
|
||||
(void)args;
|
||||
return VPX_CODEC_INCAPABLE;
|
||||
#endif
|
||||
}
|
||||
|
||||
static vpx_codec_err_t vp8_get_last_ref_updates(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id,
|
||||
va_list args)
|
||||
{
|
||||
int *update_info = va_arg(args, int *);
|
||||
|
@ -685,7 +707,6 @@ static vpx_codec_err_t vp8_get_last_ref_updates(vpx_codec_alg_priv_t *ctx,
|
|||
|
||||
extern int vp8dx_references_buffer( VP8_COMMON *oci, int ref_frame );
|
||||
static vpx_codec_err_t vp8_get_last_ref_frame(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id,
|
||||
va_list args)
|
||||
{
|
||||
int *ref_info = va_arg(args, int *);
|
||||
|
@ -706,7 +727,6 @@ static vpx_codec_err_t vp8_get_last_ref_frame(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t vp8_get_frame_corrupted(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id,
|
||||
va_list args)
|
||||
{
|
||||
|
||||
|
@ -725,7 +745,6 @@ static vpx_codec_err_t vp8_get_frame_corrupted(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t vp8_set_decryptor(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id,
|
||||
va_list args)
|
||||
{
|
||||
vpx_decrypt_init *init = va_arg(args, vpx_decrypt_init *);
|
||||
|
@ -748,10 +767,10 @@ vpx_codec_ctrl_fn_map_t vp8_ctf_maps[] =
|
|||
{VP8_SET_REFERENCE, vp8_set_reference},
|
||||
{VP8_COPY_REFERENCE, vp8_get_reference},
|
||||
{VP8_SET_POSTPROC, vp8_set_postproc},
|
||||
{VP8_SET_DBG_COLOR_REF_FRAME, vp8_set_dbg_options},
|
||||
{VP8_SET_DBG_COLOR_MB_MODES, vp8_set_dbg_options},
|
||||
{VP8_SET_DBG_COLOR_B_MODES, vp8_set_dbg_options},
|
||||
{VP8_SET_DBG_DISPLAY_MV, vp8_set_dbg_options},
|
||||
{VP8_SET_DBG_COLOR_REF_FRAME, vp8_set_dbg_color_ref_frame},
|
||||
{VP8_SET_DBG_COLOR_MB_MODES, vp8_set_dbg_color_mb_modes},
|
||||
{VP8_SET_DBG_COLOR_B_MODES, vp8_set_dbg_color_b_modes},
|
||||
{VP8_SET_DBG_DISPLAY_MV, vp8_set_dbg_display_mv},
|
||||
{VP8D_GET_LAST_REF_UPDATES, vp8_get_last_ref_updates},
|
||||
{VP8D_GET_FRAME_CORRUPTED, vp8_get_frame_corrupted},
|
||||
{VP8D_GET_LAST_REF_USED, vp8_get_last_ref_frame},
|
||||
|
|
|
@ -468,64 +468,154 @@ static vpx_codec_err_t encoder_set_config(vpx_codec_alg_priv_t *ctx,
|
|||
return res;
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_get_param(vpx_codec_alg_priv_t *ctx, int ctrl_id,
|
||||
static vpx_codec_err_t ctrl_get_quantizer(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
void *const arg = va_arg(args, void *);
|
||||
|
||||
#define MAP(id, var) case id: *(RECAST(id, arg)) = var; break
|
||||
|
||||
int *const arg = va_arg(args, int *);
|
||||
if (arg == NULL)
|
||||
return VPX_CODEC_INVALID_PARAM;
|
||||
|
||||
switch (ctrl_id) {
|
||||
MAP(VP8E_GET_LAST_QUANTIZER, vp9_get_quantizer(ctx->cpi));
|
||||
MAP(VP8E_GET_LAST_QUANTIZER_64,
|
||||
vp9_qindex_to_quantizer(vp9_get_quantizer(ctx->cpi)));
|
||||
}
|
||||
|
||||
*arg = vp9_get_quantizer(ctx->cpi);
|
||||
return VPX_CODEC_OK;
|
||||
#undef MAP
|
||||
}
|
||||
|
||||
|
||||
static vpx_codec_err_t ctrl_set_param(vpx_codec_alg_priv_t *ctx, int ctrl_id,
|
||||
static vpx_codec_err_t ctrl_get_quantizer64(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
vpx_codec_err_t res = VPX_CODEC_OK;
|
||||
struct vp9_extracfg extra_cfg = ctx->extra_cfg;
|
||||
|
||||
#define MAP(id, var) case id: var = CAST(id, args); break;
|
||||
|
||||
switch (ctrl_id) {
|
||||
MAP(VP8E_SET_CPUUSED, extra_cfg.cpu_used);
|
||||
MAP(VP8E_SET_ENABLEAUTOALTREF, extra_cfg.enable_auto_alt_ref);
|
||||
MAP(VP8E_SET_NOISE_SENSITIVITY, extra_cfg.noise_sensitivity);
|
||||
MAP(VP8E_SET_SHARPNESS, extra_cfg.sharpness);
|
||||
MAP(VP8E_SET_STATIC_THRESHOLD, extra_cfg.static_thresh);
|
||||
MAP(VP9E_SET_TILE_COLUMNS, extra_cfg.tile_columns);
|
||||
MAP(VP9E_SET_TILE_ROWS, extra_cfg.tile_rows);
|
||||
MAP(VP8E_SET_ARNR_MAXFRAMES, extra_cfg.arnr_max_frames);
|
||||
MAP(VP8E_SET_ARNR_STRENGTH, extra_cfg.arnr_strength);
|
||||
MAP(VP8E_SET_ARNR_TYPE, extra_cfg.arnr_type);
|
||||
MAP(VP8E_SET_TUNING, extra_cfg.tuning);
|
||||
MAP(VP8E_SET_CQ_LEVEL, extra_cfg.cq_level);
|
||||
MAP(VP8E_SET_MAX_INTRA_BITRATE_PCT, extra_cfg.rc_max_intra_bitrate_pct);
|
||||
MAP(VP9E_SET_LOSSLESS, extra_cfg.lossless);
|
||||
MAP(VP9E_SET_FRAME_PARALLEL_DECODING,
|
||||
extra_cfg.frame_parallel_decoding_mode);
|
||||
MAP(VP9E_SET_AQ_MODE, extra_cfg.aq_mode);
|
||||
MAP(VP9E_SET_FRAME_PERIODIC_BOOST, extra_cfg.frame_periodic_boost);
|
||||
}
|
||||
|
||||
res = validate_config(ctx, &ctx->cfg, &extra_cfg);
|
||||
int *const arg = va_arg(args, int *);
|
||||
if (arg == NULL)
|
||||
return VPX_CODEC_INVALID_PARAM;
|
||||
*arg = vp9_qindex_to_quantizer(vp9_get_quantizer(ctx->cpi));
|
||||
return VPX_CODEC_OK;
|
||||
}
|
||||
|
||||
static vpx_codec_err_t update_extra_cfg(vpx_codec_alg_priv_t *ctx,
|
||||
const struct vp9_extracfg *extra_cfg) {
|
||||
const vpx_codec_err_t res = validate_config(ctx, &ctx->cfg, extra_cfg);
|
||||
if (res == VPX_CODEC_OK) {
|
||||
ctx->extra_cfg = extra_cfg;
|
||||
ctx->extra_cfg = *extra_cfg;
|
||||
set_encoder_config(&ctx->oxcf, &ctx->cfg, &ctx->extra_cfg);
|
||||
vp9_change_config(ctx->cpi, &ctx->oxcf);
|
||||
}
|
||||
|
||||
return res;
|
||||
#undef MAP
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_cpuused(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
struct vp9_extracfg extra_cfg = ctx->extra_cfg;
|
||||
extra_cfg.cpu_used = CAST(VP8E_SET_CPUUSED, args);
|
||||
return update_extra_cfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_enable_auto_alt_ref(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
struct vp9_extracfg extra_cfg = ctx->extra_cfg;
|
||||
extra_cfg.enable_auto_alt_ref = CAST(VP8E_SET_ENABLEAUTOALTREF, args);
|
||||
return update_extra_cfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_noise_sensitivity(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
struct vp9_extracfg extra_cfg = ctx->extra_cfg;
|
||||
extra_cfg.noise_sensitivity = CAST(VP8E_SET_NOISE_SENSITIVITY, args);
|
||||
return update_extra_cfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_sharpness(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
struct vp9_extracfg extra_cfg = ctx->extra_cfg;
|
||||
extra_cfg.sharpness = CAST(VP8E_SET_SHARPNESS, args);
|
||||
return update_extra_cfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_static_thresh(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
struct vp9_extracfg extra_cfg = ctx->extra_cfg;
|
||||
extra_cfg.static_thresh = CAST(VP8E_SET_STATIC_THRESHOLD, args);
|
||||
return update_extra_cfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_tile_columns(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
struct vp9_extracfg extra_cfg = ctx->extra_cfg;
|
||||
extra_cfg.tile_columns = CAST(VP9E_SET_TILE_COLUMNS, args);
|
||||
return update_extra_cfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_tile_rows(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
struct vp9_extracfg extra_cfg = ctx->extra_cfg;
|
||||
extra_cfg.tile_rows = CAST(VP9E_SET_TILE_ROWS, args);
|
||||
return update_extra_cfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_arnr_max_frames(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
struct vp9_extracfg extra_cfg = ctx->extra_cfg;
|
||||
extra_cfg.arnr_max_frames = CAST(VP8E_SET_ARNR_MAXFRAMES, args);
|
||||
return update_extra_cfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_arnr_strength(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
struct vp9_extracfg extra_cfg = ctx->extra_cfg;
|
||||
extra_cfg.arnr_strength = CAST(VP8E_SET_ARNR_STRENGTH, args);
|
||||
return update_extra_cfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_arnr_type(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
struct vp9_extracfg extra_cfg = ctx->extra_cfg;
|
||||
extra_cfg.arnr_type = CAST(VP8E_SET_ARNR_TYPE, args);
|
||||
return update_extra_cfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_tuning(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
struct vp9_extracfg extra_cfg = ctx->extra_cfg;
|
||||
extra_cfg.tuning = CAST(VP8E_SET_TUNING, args);
|
||||
return update_extra_cfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_cq_level(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
struct vp9_extracfg extra_cfg = ctx->extra_cfg;
|
||||
extra_cfg.cq_level = CAST(VP8E_SET_CQ_LEVEL, args);
|
||||
return update_extra_cfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_rc_max_intra_bitrate_pct(
|
||||
vpx_codec_alg_priv_t *ctx, va_list args) {
|
||||
struct vp9_extracfg extra_cfg = ctx->extra_cfg;
|
||||
extra_cfg.rc_max_intra_bitrate_pct =
|
||||
CAST(VP8E_SET_MAX_INTRA_BITRATE_PCT, args);
|
||||
return update_extra_cfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_lossless(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
struct vp9_extracfg extra_cfg = ctx->extra_cfg;
|
||||
extra_cfg.lossless = CAST(VP9E_SET_LOSSLESS, args);
|
||||
return update_extra_cfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_frame_parallel_decoding_mode(
|
||||
vpx_codec_alg_priv_t *ctx, va_list args) {
|
||||
struct vp9_extracfg extra_cfg = ctx->extra_cfg;
|
||||
extra_cfg.frame_parallel_decoding_mode =
|
||||
CAST(VP9E_SET_FRAME_PARALLEL_DECODING, args);
|
||||
return update_extra_cfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_aq_mode(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
struct vp9_extracfg extra_cfg = ctx->extra_cfg;
|
||||
extra_cfg.aq_mode = CAST(VP9E_SET_AQ_MODE, args);
|
||||
return update_extra_cfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_frame_periodic_boost(vpx_codec_alg_priv_t *ctx,
|
||||
va_list args) {
|
||||
struct vp9_extracfg extra_cfg = ctx->extra_cfg;
|
||||
extra_cfg.frame_periodic_boost = CAST(VP9E_SET_FRAME_PERIODIC_BOOST, args);
|
||||
return update_extra_cfg(ctx, &extra_cfg);
|
||||
}
|
||||
|
||||
static vpx_codec_err_t encoder_init(vpx_codec_ctx_t *ctx,
|
||||
|
@ -893,9 +983,8 @@ static const vpx_codec_cx_pkt_t *encoder_get_cxdata(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_reference(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id, va_list args) {
|
||||
va_list args) {
|
||||
vpx_ref_frame_t *const frame = va_arg(args, vpx_ref_frame_t *);
|
||||
(void)ctrl_id;
|
||||
|
||||
if (frame != NULL) {
|
||||
YV12_BUFFER_CONFIG sd;
|
||||
|
@ -910,9 +999,8 @@ static vpx_codec_err_t ctrl_set_reference(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_copy_reference(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id, va_list args) {
|
||||
va_list args) {
|
||||
vpx_ref_frame_t *const frame = va_arg(args, vpx_ref_frame_t *);
|
||||
(void)ctrl_id;
|
||||
|
||||
if (frame != NULL) {
|
||||
YV12_BUFFER_CONFIG sd;
|
||||
|
@ -927,9 +1015,8 @@ static vpx_codec_err_t ctrl_copy_reference(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_get_reference(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id, va_list args) {
|
||||
va_list args) {
|
||||
vp9_ref_frame_t *const frame = va_arg(args, vp9_ref_frame_t *);
|
||||
(void)ctrl_id;
|
||||
|
||||
if (frame != NULL) {
|
||||
YV12_BUFFER_CONFIG *fb;
|
||||
|
@ -943,7 +1030,7 @@ static vpx_codec_err_t ctrl_get_reference(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_previewpp(vpx_codec_alg_priv_t *ctx,
|
||||
int ctr_id, va_list args) {
|
||||
va_list args) {
|
||||
#if CONFIG_VP9_POSTPROC
|
||||
vp8_postproc_cfg_t *config = va_arg(args, vp8_postproc_cfg_t *);
|
||||
(void)ctr_id;
|
||||
|
@ -956,7 +1043,6 @@ static vpx_codec_err_t ctrl_set_previewpp(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
#else
|
||||
(void)ctx;
|
||||
(void)ctr_id;
|
||||
(void)args;
|
||||
return VPX_CODEC_INCAPABLE;
|
||||
#endif
|
||||
|
@ -983,36 +1069,32 @@ static vpx_image_t *encoder_get_preview(vpx_codec_alg_priv_t *ctx) {
|
|||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_update_entropy(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id, va_list args) {
|
||||
va_list args) {
|
||||
const int update = va_arg(args, int);
|
||||
(void)ctrl_id;
|
||||
|
||||
vp9_update_entropy(ctx->cpi, update);
|
||||
return VPX_CODEC_OK;
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_update_reference(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id, va_list args) {
|
||||
va_list args) {
|
||||
const int ref_frame_flags = va_arg(args, int);
|
||||
(void)ctrl_id;
|
||||
|
||||
vp9_update_reference(ctx->cpi, ref_frame_flags);
|
||||
return VPX_CODEC_OK;
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_use_reference(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id, va_list args) {
|
||||
va_list args) {
|
||||
const int reference_flag = va_arg(args, int);
|
||||
(void)ctrl_id;
|
||||
|
||||
vp9_use_as_reference(ctx->cpi, reference_flag);
|
||||
return VPX_CODEC_OK;
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_roi_map(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id, va_list args) {
|
||||
va_list args) {
|
||||
(void)ctx;
|
||||
(void)ctrl_id;
|
||||
(void)args;
|
||||
|
||||
// TODO(yaowu): Need to re-implement and test for VP9.
|
||||
|
@ -1021,9 +1103,8 @@ static vpx_codec_err_t ctrl_set_roi_map(vpx_codec_alg_priv_t *ctx,
|
|||
|
||||
|
||||
static vpx_codec_err_t ctrl_set_active_map(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id, va_list args) {
|
||||
va_list args) {
|
||||
vpx_active_map_t *const map = va_arg(args, vpx_active_map_t *);
|
||||
(void)ctrl_id;
|
||||
|
||||
if (map) {
|
||||
if (!vp9_set_active_map(ctx->cpi, map->active_map,
|
||||
|
@ -1037,9 +1118,8 @@ static vpx_codec_err_t ctrl_set_active_map(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_scale_mode(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id, va_list args) {
|
||||
va_list args) {
|
||||
vpx_scaling_mode_t *const mode = va_arg(args, vpx_scaling_mode_t *);
|
||||
(void)ctrl_id;
|
||||
|
||||
if (mode) {
|
||||
const int res = vp9_set_internal_size(ctx->cpi,
|
||||
|
@ -1051,11 +1131,9 @@ static vpx_codec_err_t ctrl_set_scale_mode(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_svc(vpx_codec_alg_priv_t *ctx, int ctrl_id,
|
||||
va_list args) {
|
||||
static vpx_codec_err_t ctrl_set_svc(vpx_codec_alg_priv_t *ctx, va_list args) {
|
||||
int data = va_arg(args, int);
|
||||
const vpx_codec_enc_cfg_t *cfg = &ctx->cfg;
|
||||
(void)ctrl_id;
|
||||
|
||||
vp9_set_svc(ctx->cpi, data);
|
||||
// CBR or two pass mode for SVC with both temporal and spatial layers
|
||||
|
@ -1072,11 +1150,10 @@ static vpx_codec_err_t ctrl_set_svc(vpx_codec_alg_priv_t *ctx, int ctrl_id,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_svc_layer_id(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id, va_list args) {
|
||||
va_list args) {
|
||||
vpx_svc_layer_id_t *const data = va_arg(args, vpx_svc_layer_id_t *);
|
||||
VP9_COMP *const cpi = (VP9_COMP *)ctx->cpi;
|
||||
SVC *const svc = &cpi->svc;
|
||||
(void)ctrl_id;
|
||||
|
||||
svc->spatial_layer_id = data->spatial_layer_id;
|
||||
svc->temporal_layer_id = data->temporal_layer_id;
|
||||
|
@ -1093,10 +1170,9 @@ static vpx_codec_err_t ctrl_set_svc_layer_id(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_svc_parameters(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id, va_list args) {
|
||||
va_list args) {
|
||||
VP9_COMP *const cpi = ctx->cpi;
|
||||
vpx_svc_parameters_t *const params = va_arg(args, vpx_svc_parameters_t *);
|
||||
(void)ctrl_id;
|
||||
|
||||
if (params == NULL)
|
||||
return VPX_CODEC_INVALID_PARAM;
|
||||
|
@ -1132,30 +1208,30 @@ static vpx_codec_ctrl_fn_map_t encoder_ctrl_maps[] = {
|
|||
{VP8E_SET_ROI_MAP, ctrl_set_roi_map},
|
||||
{VP8E_SET_ACTIVEMAP, ctrl_set_active_map},
|
||||
{VP8E_SET_SCALEMODE, ctrl_set_scale_mode},
|
||||
{VP8E_SET_CPUUSED, ctrl_set_param},
|
||||
{VP8E_SET_NOISE_SENSITIVITY, ctrl_set_param},
|
||||
{VP8E_SET_ENABLEAUTOALTREF, ctrl_set_param},
|
||||
{VP8E_SET_SHARPNESS, ctrl_set_param},
|
||||
{VP8E_SET_STATIC_THRESHOLD, ctrl_set_param},
|
||||
{VP9E_SET_TILE_COLUMNS, ctrl_set_param},
|
||||
{VP9E_SET_TILE_ROWS, ctrl_set_param},
|
||||
{VP8E_SET_ARNR_MAXFRAMES, ctrl_set_param},
|
||||
{VP8E_SET_ARNR_STRENGTH, ctrl_set_param},
|
||||
{VP8E_SET_ARNR_TYPE, ctrl_set_param},
|
||||
{VP8E_SET_TUNING, ctrl_set_param},
|
||||
{VP8E_SET_CQ_LEVEL, ctrl_set_param},
|
||||
{VP8E_SET_MAX_INTRA_BITRATE_PCT, ctrl_set_param},
|
||||
{VP9E_SET_LOSSLESS, ctrl_set_param},
|
||||
{VP9E_SET_FRAME_PARALLEL_DECODING, ctrl_set_param},
|
||||
{VP9E_SET_AQ_MODE, ctrl_set_param},
|
||||
{VP9E_SET_FRAME_PERIODIC_BOOST, ctrl_set_param},
|
||||
{VP8E_SET_CPUUSED, ctrl_set_cpuused},
|
||||
{VP8E_SET_NOISE_SENSITIVITY, ctrl_set_noise_sensitivity},
|
||||
{VP8E_SET_ENABLEAUTOALTREF, ctrl_set_enable_auto_alt_ref},
|
||||
{VP8E_SET_SHARPNESS, ctrl_set_sharpness},
|
||||
{VP8E_SET_STATIC_THRESHOLD, ctrl_set_static_thresh},
|
||||
{VP9E_SET_TILE_COLUMNS, ctrl_set_tile_columns},
|
||||
{VP9E_SET_TILE_ROWS, ctrl_set_tile_rows},
|
||||
{VP8E_SET_ARNR_MAXFRAMES, ctrl_set_arnr_max_frames},
|
||||
{VP8E_SET_ARNR_STRENGTH, ctrl_set_arnr_strength},
|
||||
{VP8E_SET_ARNR_TYPE, ctrl_set_arnr_type},
|
||||
{VP8E_SET_TUNING, ctrl_set_tuning},
|
||||
{VP8E_SET_CQ_LEVEL, ctrl_set_cq_level},
|
||||
{VP8E_SET_MAX_INTRA_BITRATE_PCT, ctrl_set_rc_max_intra_bitrate_pct},
|
||||
{VP9E_SET_LOSSLESS, ctrl_set_lossless},
|
||||
{VP9E_SET_FRAME_PARALLEL_DECODING, ctrl_set_frame_parallel_decoding_mode},
|
||||
{VP9E_SET_AQ_MODE, ctrl_set_aq_mode},
|
||||
{VP9E_SET_FRAME_PERIODIC_BOOST, ctrl_set_frame_periodic_boost},
|
||||
{VP9E_SET_SVC, ctrl_set_svc},
|
||||
{VP9E_SET_SVC_PARAMETERS, ctrl_set_svc_parameters},
|
||||
{VP9E_SET_SVC_LAYER_ID, ctrl_set_svc_layer_id},
|
||||
|
||||
// Getters
|
||||
{VP8E_GET_LAST_QUANTIZER, ctrl_get_param},
|
||||
{VP8E_GET_LAST_QUANTIZER_64, ctrl_get_param},
|
||||
{VP8E_GET_LAST_QUANTIZER, ctrl_get_quantizer},
|
||||
{VP8E_GET_LAST_QUANTIZER_64, ctrl_get_quantizer64},
|
||||
{VP9_GET_REFERENCE, ctrl_get_reference},
|
||||
|
||||
{ -1, NULL},
|
||||
|
|
|
@ -452,7 +452,7 @@ static vpx_codec_err_t decoder_set_fb_fn(
|
|||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_reference(vpx_codec_alg_priv_t *ctx,
|
||||
int ctr_id, va_list args) {
|
||||
va_list args) {
|
||||
vpx_ref_frame_t *const data = va_arg(args, vpx_ref_frame_t *);
|
||||
|
||||
if (data) {
|
||||
|
@ -468,7 +468,7 @@ static vpx_codec_err_t ctrl_set_reference(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_copy_reference(vpx_codec_alg_priv_t *ctx,
|
||||
int ctr_id, va_list args) {
|
||||
va_list args) {
|
||||
vpx_ref_frame_t *data = va_arg(args, vpx_ref_frame_t *);
|
||||
|
||||
if (data) {
|
||||
|
@ -485,7 +485,7 @@ static vpx_codec_err_t ctrl_copy_reference(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_get_reference(vpx_codec_alg_priv_t *ctx,
|
||||
int ctr_id, va_list args) {
|
||||
va_list args) {
|
||||
vp9_ref_frame_t *data = va_arg(args, vp9_ref_frame_t *);
|
||||
|
||||
if (data) {
|
||||
|
@ -500,7 +500,7 @@ static vpx_codec_err_t ctrl_get_reference(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_postproc(vpx_codec_alg_priv_t *ctx,
|
||||
int ctr_id, va_list args) {
|
||||
va_list args) {
|
||||
#if CONFIG_VP9_POSTPROC
|
||||
vp8_postproc_cfg_t *data = va_arg(args, vp8_postproc_cfg_t *);
|
||||
|
||||
|
@ -512,17 +512,21 @@ static vpx_codec_err_t ctrl_set_postproc(vpx_codec_alg_priv_t *ctx,
|
|||
return VPX_CODEC_INVALID_PARAM;
|
||||
}
|
||||
#else
|
||||
(void)ctx;
|
||||
(void)args;
|
||||
return VPX_CODEC_INCAPABLE;
|
||||
#endif
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_dbg_options(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id, va_list args) {
|
||||
va_list args) {
|
||||
(void)ctx;
|
||||
(void)args;
|
||||
return VPX_CODEC_INCAPABLE;
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_get_last_ref_updates(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id, va_list args) {
|
||||
va_list args) {
|
||||
int *const update_info = va_arg(args, int *);
|
||||
|
||||
if (update_info) {
|
||||
|
@ -538,7 +542,7 @@ static vpx_codec_err_t ctrl_get_last_ref_updates(vpx_codec_alg_priv_t *ctx,
|
|||
|
||||
|
||||
static vpx_codec_err_t ctrl_get_frame_corrupted(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id, va_list args) {
|
||||
va_list args) {
|
||||
int *corrupted = va_arg(args, int *);
|
||||
|
||||
if (corrupted) {
|
||||
|
@ -553,7 +557,7 @@ static vpx_codec_err_t ctrl_get_frame_corrupted(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_get_display_size(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id, va_list args) {
|
||||
va_list args) {
|
||||
int *const display_size = va_arg(args, int *);
|
||||
|
||||
if (display_size) {
|
||||
|
@ -571,13 +575,12 @@ static vpx_codec_err_t ctrl_get_display_size(vpx_codec_alg_priv_t *ctx,
|
|||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_invert_tile_order(vpx_codec_alg_priv_t *ctx,
|
||||
int ctr_id, va_list args) {
|
||||
va_list args) {
|
||||
ctx->invert_tile_order = va_arg(args, int);
|
||||
return VPX_CODEC_OK;
|
||||
}
|
||||
|
||||
static vpx_codec_err_t ctrl_set_decryptor(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id,
|
||||
va_list args) {
|
||||
vpx_decrypt_init *init = va_arg(args, vpx_decrypt_init *);
|
||||
ctx->decrypt_cb = init ? init->decrypt_cb : NULL;
|
||||
|
|
|
@ -155,7 +155,6 @@ typedef vpx_codec_err_t (*vpx_codec_get_si_fn_t)(vpx_codec_alg_priv_t *ctx,
|
|||
* The internal state data was deserialized.
|
||||
*/
|
||||
typedef vpx_codec_err_t (*vpx_codec_control_fn_t)(vpx_codec_alg_priv_t *ctx,
|
||||
int ctrl_id,
|
||||
va_list ap);
|
||||
|
||||
/*!\brief control function pointer mapping
|
||||
|
@ -403,35 +402,12 @@ struct vpx_codec_priv_enc_mr_cfg
|
|||
#undef VPX_CTRL_USE_TYPE
|
||||
#define VPX_CTRL_USE_TYPE(id, typ) \
|
||||
static typ id##__value(va_list args) {return va_arg(args, typ);} \
|
||||
static typ id##__convert(void *x)\
|
||||
{\
|
||||
union\
|
||||
{\
|
||||
void *x;\
|
||||
typ d;\
|
||||
} u;\
|
||||
u.x = x;\
|
||||
return u.d;\
|
||||
}
|
||||
|
||||
|
||||
#undef VPX_CTRL_USE_TYPE_DEPRECATED
|
||||
#define VPX_CTRL_USE_TYPE_DEPRECATED(id, typ) \
|
||||
static typ id##__value(va_list args) {return va_arg(args, typ);} \
|
||||
static typ id##__convert(void *x)\
|
||||
{\
|
||||
union\
|
||||
{\
|
||||
void *x;\
|
||||
typ d;\
|
||||
} u;\
|
||||
u.x = x;\
|
||||
return u.d;\
|
||||
}
|
||||
|
||||
#define CAST(id, arg) id##__value(arg)
|
||||
#define RECAST(id, x) id##__convert(x)
|
||||
|
||||
|
||||
/* CODEC_INTERFACE convenience macro
|
||||
*
|
||||
|
|
|
@ -125,7 +125,7 @@ vpx_codec_err_t vpx_codec_control_(vpx_codec_ctx_t *ctx,
|
|||
va_list ap;
|
||||
|
||||
va_start(ap, ctrl_id);
|
||||
res = entry->fn(ctx->priv->alg_priv, ctrl_id, ap);
|
||||
res = entry->fn(ctx->priv->alg_priv, ap);
|
||||
va_end(ap);
|
||||
break;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче