#include <limits.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "./vpx_config.h"
#include "./vp8_rtcd.h"
#include "./vpx_dsp_rtcd.h"
#include "./vpx_scale_rtcd.h"
#include "vpx/vpx_encoder.h"
#include "vpx/internal/vpx_codec_internal.h"
#include "vpx_version.h"
#include "vpx_mem/vpx_mem.h"
#include "vpx_ports/static_assert.h"
#include "vpx_ports/system_state.h"
#include "vpx_util/vpx_timestamp.h"
#if CONFIG_MULTITHREAD
#include "vp8/encoder/ethreading.h"
#endif
#include "vp8/encoder/onyx_int.h"
#include "vpx/vp8cx.h"
#include "vp8/encoder/firstpass.h"
#include "vp8/common/onyx.h"
#include "vp8/common/common.h"
struct vp8_extracfg { … };
static struct vp8_extracfg default_extracfg = …;
struct vpx_codec_alg_priv { … };
static vpx_codec_err_t update_error_state(
vpx_codec_alg_priv_t *ctx, const struct vpx_internal_error_info *error) { … }
#undef ERROR
#define ERROR(str) …
#define RANGE_CHECK(p, memb, lo, hi) …
#define RANGE_CHECK_HI(p, memb, hi) …
#define RANGE_CHECK_LO(p, memb, lo) …
#define RANGE_CHECK_BOOL(p, memb) …
static vpx_codec_err_t validate_config(vpx_codec_alg_priv_t *ctx,
const vpx_codec_enc_cfg_t *cfg,
const struct vp8_extracfg *vp8_cfg,
int finalize) { … }
static vpx_codec_err_t validate_img(vpx_codec_alg_priv_t *ctx,
const vpx_image_t *img) { … }
static vpx_codec_err_t set_vp8e_config(VP8_CONFIG *oxcf,
vpx_codec_enc_cfg_t cfg,
struct vp8_extracfg vp8_cfg,
vpx_codec_priv_enc_mr_cfg_t *mr_cfg) { … }
static vpx_codec_err_t vp8e_set_config(vpx_codec_alg_priv_t *ctx,
const vpx_codec_enc_cfg_t *cfg) { … }
static vpx_codec_err_t get_quantizer(vpx_codec_alg_priv_t *ctx, va_list args) { … }
static vpx_codec_err_t get_quantizer64(vpx_codec_alg_priv_t *ctx,
va_list args) { … }
static vpx_codec_err_t update_extracfg(vpx_codec_alg_priv_t *ctx,
const struct vp8_extracfg *extra_cfg) { … }
static vpx_codec_err_t set_cpu_used(vpx_codec_alg_priv_t *ctx, va_list args) { … }
static vpx_codec_err_t set_enable_auto_alt_ref(vpx_codec_alg_priv_t *ctx,
va_list args) { … }
static vpx_codec_err_t set_noise_sensitivity(vpx_codec_alg_priv_t *ctx,
va_list args) { … }
static vpx_codec_err_t set_sharpness(vpx_codec_alg_priv_t *ctx, va_list args) { … }
static vpx_codec_err_t set_static_thresh(vpx_codec_alg_priv_t *ctx,
va_list args) { … }
static vpx_codec_err_t set_token_partitions(vpx_codec_alg_priv_t *ctx,
va_list args) { … }
static vpx_codec_err_t set_arnr_max_frames(vpx_codec_alg_priv_t *ctx,
va_list args) { … }
static vpx_codec_err_t set_arnr_strength(vpx_codec_alg_priv_t *ctx,
va_list args) { … }
static vpx_codec_err_t set_arnr_type(vpx_codec_alg_priv_t *ctx, va_list args) { … }
static vpx_codec_err_t set_tuning(vpx_codec_alg_priv_t *ctx, va_list args) { … }
static vpx_codec_err_t set_cq_level(vpx_codec_alg_priv_t *ctx, va_list args) { … }
static vpx_codec_err_t set_rc_max_intra_bitrate_pct(vpx_codec_alg_priv_t *ctx,
va_list args) { … }
static vpx_codec_err_t ctrl_set_rc_gf_cbr_boost_pct(vpx_codec_alg_priv_t *ctx,
va_list args) { … }
static vpx_codec_err_t set_screen_content_mode(vpx_codec_alg_priv_t *ctx,
va_list args) { … }
static vpx_codec_err_t ctrl_set_rtc_external_ratectrl(vpx_codec_alg_priv_t *ctx,
va_list args) { … }
static vpx_codec_err_t vp8e_mr_alloc_mem(const vpx_codec_enc_cfg_t *cfg,
void **mem_loc) { … }
static vpx_codec_err_t vp8e_init(vpx_codec_ctx_t *ctx,
vpx_codec_priv_enc_mr_cfg_t *mr_cfg) { … }
static vpx_codec_err_t vp8e_destroy(vpx_codec_alg_priv_t *ctx) { … }
static vpx_codec_err_t image2yuvconfig(const vpx_image_t *img,
YV12_BUFFER_CONFIG *yv12) { … }
static vpx_codec_err_t pick_quickcompress_mode(vpx_codec_alg_priv_t *ctx,
unsigned long duration,
vpx_enc_deadline_t deadline) { … }
static vpx_codec_err_t set_reference_and_update(vpx_codec_alg_priv_t *ctx,
vpx_enc_frame_flags_t flags) { … }
static vpx_codec_err_t vp8e_encode(vpx_codec_alg_priv_t *ctx,
const vpx_image_t *img, vpx_codec_pts_t pts,
unsigned long duration,
vpx_enc_frame_flags_t enc_flags,
vpx_enc_deadline_t deadline) { … }
static const vpx_codec_cx_pkt_t *vp8e_get_cxdata(vpx_codec_alg_priv_t *ctx,
vpx_codec_iter_t *iter) { … }
static vpx_codec_err_t vp8e_set_reference(vpx_codec_alg_priv_t *ctx,
va_list args) { … }
static vpx_codec_err_t vp8e_get_reference(vpx_codec_alg_priv_t *ctx,
va_list args) { … }
static vpx_codec_err_t vp8e_set_previewpp(vpx_codec_alg_priv_t *ctx,
va_list args) { … }
static vpx_image_t *vp8e_get_preview(vpx_codec_alg_priv_t *ctx) { … }
static vpx_codec_err_t vp8e_set_frame_flags(vpx_codec_alg_priv_t *ctx,
va_list args) { … }
static vpx_codec_err_t vp8e_set_temporal_layer_id(vpx_codec_alg_priv_t *ctx,
va_list args) { … }
static vpx_codec_err_t vp8e_set_roi_map(vpx_codec_alg_priv_t *ctx,
va_list args) { … }
static vpx_codec_err_t vp8e_set_activemap(vpx_codec_alg_priv_t *ctx,
va_list args) { … }
static vpx_codec_err_t vp8e_set_scalemode(vpx_codec_alg_priv_t *ctx,
va_list args) { … }
static vpx_codec_ctrl_fn_map_t vp8e_ctf_maps[] = …;
static vpx_codec_enc_cfg_map_t vp8e_usage_cfg_map[] = …;
#ifndef VERSION_STRING
#define VERSION_STRING
#endif
CODEC_INTERFACE(vpx_codec_vp8_cx) = …;