Merge changes from topic 'missing-proto'

* changes:
  onyxd_int.h: add missing prototypes
  onyxd.h: add vp8dx_references_buffer prototype
  vp[89],vpx_dsp: add missing includes
  vp8,encodeframe.h: correct prototypes
  vp8: add temporal_filter.h
  add picklpf.h
  add ethreading.h
  vp8,bitstream.h: add missing prototypes
  vp8: remove vp8_fast_quantize_b_mmx
  vp8,loopfilter_filters: make some functions static
  vp9_ratectrl: make adjust_gf_boost_lag_one_pass_vbr static
  vp9_encodeframe: make scale_part_thresh_sumdiff static
  vp9_alt_ref_aq: correct vp9_alt_ref_aq_create proto
  tiny_ssim: make some functions static
This commit is contained in:
James Zern 2017-06-23 05:44:24 +00:00 committed by Gerrit Code Review
commit 88a302e743
31 changed files with 226 additions and 430 deletions

View File

@ -17,9 +17,9 @@
#include "vpx/vpx_integer.h"
#include "./y4minput.h"
void vp8_ssim_parms_8x8_c(unsigned char *s, int sp, unsigned char *r, int rp,
uint32_t *sum_s, uint32_t *sum_r, uint32_t *sum_sq_s,
uint32_t *sum_sq_r, uint32_t *sum_sxr) {
static void ssim_parms_8x8(unsigned char *s, int sp, unsigned char *r, int rp,
uint32_t *sum_s, uint32_t *sum_r, uint32_t *sum_sq_s,
uint32_t *sum_sq_r, uint32_t *sum_sxr) {
int i, j;
for (i = 0; i < 8; i++, s += sp, r += rp) {
for (j = 0; j < 8; j++) {
@ -56,16 +56,15 @@ static double similarity(uint32_t sum_s, uint32_t sum_r, uint32_t sum_sq_s,
static double ssim_8x8(unsigned char *s, int sp, unsigned char *r, int rp) {
uint32_t sum_s = 0, sum_r = 0, sum_sq_s = 0, sum_sq_r = 0, sum_sxr = 0;
vp8_ssim_parms_8x8_c(s, sp, r, rp, &sum_s, &sum_r, &sum_sq_s, &sum_sq_r,
&sum_sxr);
ssim_parms_8x8(s, sp, r, rp, &sum_s, &sum_r, &sum_sq_s, &sum_sq_r, &sum_sxr);
return similarity(sum_s, sum_r, sum_sq_s, sum_sq_r, sum_sxr, 64);
}
// We are using a 8x8 moving window with starting location of each 8x8 window
// on the 4x4 pixel grid. Such arrangement allows the windows to overlap
// block boundaries to penalize blocking artifacts.
double vp8_ssim2(unsigned char *img1, unsigned char *img2, int stride_img1,
int stride_img2, int width, int height) {
static double ssim2(unsigned char *img1, unsigned char *img2, int stride_img1,
int stride_img2, int width, int height) {
int i, j;
int samples = 0;
double ssim_total = 0;
@ -103,7 +102,7 @@ static uint64_t calc_plane_error(uint8_t *orig, int orig_stride, uint8_t *recon,
}
#define MAX_PSNR 100
double vp9_mse2psnr(double samples, double peak, double mse) {
static double mse2psnr(double samples, double peak, double mse) {
double psnr;
if (mse > 0.0)
@ -129,7 +128,8 @@ typedef struct input_file {
} input_file_t;
// Open a file and determine if its y4m or raw. If y4m get the header.
int open_input_file(const char *file_name, input_file_t *input, int w, int h) {
static int open_input_file(const char *file_name, input_file_t *input, int w,
int h) {
char y4m_buf[4];
size_t r1;
input->type = RAW_YUV;
@ -159,7 +159,7 @@ int open_input_file(const char *file_name, input_file_t *input, int w, int h) {
return 0;
}
void close_input_file(input_file_t *in) {
static void close_input_file(input_file_t *in) {
if (in->file) fclose(in->file);
if (in->type == Y4M) {
vpx_img_free(&in->img);
@ -168,8 +168,8 @@ void close_input_file(input_file_t *in) {
}
}
size_t read_input_file(input_file_t *in, unsigned char **y, unsigned char **u,
unsigned char **v) {
static size_t read_input_file(input_file_t *in, unsigned char **y,
unsigned char **u, unsigned char **v) {
size_t r1 = 0;
switch (in->type) {
case Y4M:
@ -287,7 +287,7 @@ int main(int argc, char *argv[]) {
break;
}
#define psnr_and_ssim(ssim, psnr, buf0, buf1, w, h) \
ssim = vp8_ssim2(buf0, buf1, w, w, w, h); \
ssim = ssim2(buf0, buf1, w, w, w, h); \
psnr = calc_plane_error(buf0, w, buf1, w, w, h);
if (n_frames == allocated_frames) {
@ -321,11 +321,11 @@ int main(int argc, char *argv[]) {
ssimuavg += ssimu[i];
ssimvavg += ssimv[i];
frame_psnr = vp9_mse2psnr(w * h * 6 / 4, 255.0,
(double)psnry[i] + psnru[i] + psnrv[i]);
frame_psnry = vp9_mse2psnr(w * h * 4 / 4, 255.0, (double)psnry[i]);
frame_psnru = vp9_mse2psnr(w * h * 1 / 4, 255.0, (double)psnru[i]);
frame_psnrv = vp9_mse2psnr(w * h * 1 / 4, 255.0, (double)psnrv[i]);
frame_psnr =
mse2psnr(w * h * 6 / 4, 255.0, (double)psnry[i] + psnru[i] + psnrv[i]);
frame_psnry = mse2psnr(w * h * 4 / 4, 255.0, (double)psnry[i]);
frame_psnru = mse2psnr(w * h * 1 / 4, 255.0, (double)psnru[i]);
frame_psnrv = mse2psnr(w * h * 1 / 4, 255.0, (double)psnrv[i]);
psnravg += frame_psnr;
psnryavg += frame_psnry;
@ -367,10 +367,10 @@ int main(int argc, char *argv[]) {
puts("");
psnrglb = psnryglb + psnruglb + psnrvglb;
psnrglb = vp9_mse2psnr((double)n_frames * w * h * 6 / 4, 255.0, psnrglb);
psnryglb = vp9_mse2psnr((double)n_frames * w * h * 4 / 4, 255.0, psnryglb);
psnruglb = vp9_mse2psnr((double)n_frames * w * h * 1 / 4, 255.0, psnruglb);
psnrvglb = vp9_mse2psnr((double)n_frames * w * h * 1 / 4, 255.0, psnrvglb);
psnrglb = mse2psnr((double)n_frames * w * h * 6 / 4, 255.0, psnrglb);
psnryglb = mse2psnr((double)n_frames * w * h * 4 / 4, 255.0, psnryglb);
psnruglb = mse2psnr((double)n_frames * w * h * 1 / 4, 255.0, psnruglb);
psnrvglb = mse2psnr((double)n_frames * w * h * 1 / 4, 255.0, psnrvglb);
printf("GlbPSNR: %lf\n", psnrglb);
printf("GlbPSNR-Y: %lf\n", psnryglb);

View File

@ -86,10 +86,12 @@ static void vp8_filter(signed char mask, uc hev, uc *op1, uc *op0, uc *oq0,
u = vp8_signed_char_clamp(ps1 + filter_value);
*op1 = u ^ 0x80;
}
void vp8_loop_filter_horizontal_edge_c(unsigned char *s, int p, /* pitch */
const unsigned char *blimit,
const unsigned char *limit,
const unsigned char *thresh, int count) {
static void loop_filter_horizontal_edge_c(unsigned char *s, int p, /* pitch */
const unsigned char *blimit,
const unsigned char *limit,
const unsigned char *thresh,
int count) {
int hev = 0; /* high edge variance */
signed char mask = 0;
int i = 0;
@ -109,10 +111,11 @@ void vp8_loop_filter_horizontal_edge_c(unsigned char *s, int p, /* pitch */
} while (++i < count * 8);
}
void vp8_loop_filter_vertical_edge_c(unsigned char *s, int p,
const unsigned char *blimit,
const unsigned char *limit,
const unsigned char *thresh, int count) {
static void loop_filter_vertical_edge_c(unsigned char *s, int p,
const unsigned char *blimit,
const unsigned char *limit,
const unsigned char *thresh,
int count) {
int hev = 0; /* high edge variance */
signed char mask = 0;
int i = 0;
@ -185,11 +188,11 @@ static void vp8_mbfilter(signed char mask, uc hev, uc *op2, uc *op1, uc *op0,
*op2 = s ^ 0x80;
}
void vp8_mbloop_filter_horizontal_edge_c(unsigned char *s, int p,
const unsigned char *blimit,
const unsigned char *limit,
const unsigned char *thresh,
int count) {
static void mbloop_filter_horizontal_edge_c(unsigned char *s, int p,
const unsigned char *blimit,
const unsigned char *limit,
const unsigned char *thresh,
int count) {
signed char hev = 0; /* high edge variance */
signed char mask = 0;
int i = 0;
@ -210,10 +213,11 @@ void vp8_mbloop_filter_horizontal_edge_c(unsigned char *s, int p,
} while (++i < count * 8);
}
void vp8_mbloop_filter_vertical_edge_c(unsigned char *s, int p,
const unsigned char *blimit,
const unsigned char *limit,
const unsigned char *thresh, int count) {
static void mbloop_filter_vertical_edge_c(unsigned char *s, int p,
const unsigned char *blimit,
const unsigned char *limit,
const unsigned char *thresh,
int count) {
signed char hev = 0; /* high edge variance */
signed char mask = 0;
int i = 0;
@ -295,17 +299,17 @@ void vp8_loop_filter_simple_vertical_edge_c(unsigned char *s, int p,
void vp8_loop_filter_mbh_c(unsigned char *y_ptr, unsigned char *u_ptr,
unsigned char *v_ptr, int y_stride, int uv_stride,
loop_filter_info *lfi) {
vp8_mbloop_filter_horizontal_edge_c(y_ptr, y_stride, lfi->mblim, lfi->lim,
lfi->hev_thr, 2);
mbloop_filter_horizontal_edge_c(y_ptr, y_stride, lfi->mblim, lfi->lim,
lfi->hev_thr, 2);
if (u_ptr) {
vp8_mbloop_filter_horizontal_edge_c(u_ptr, uv_stride, lfi->mblim, lfi->lim,
lfi->hev_thr, 1);
mbloop_filter_horizontal_edge_c(u_ptr, uv_stride, lfi->mblim, lfi->lim,
lfi->hev_thr, 1);
}
if (v_ptr) {
vp8_mbloop_filter_horizontal_edge_c(v_ptr, uv_stride, lfi->mblim, lfi->lim,
lfi->hev_thr, 1);
mbloop_filter_horizontal_edge_c(v_ptr, uv_stride, lfi->mblim, lfi->lim,
lfi->hev_thr, 1);
}
}
@ -313,17 +317,17 @@ void vp8_loop_filter_mbh_c(unsigned char *y_ptr, unsigned char *u_ptr,
void vp8_loop_filter_mbv_c(unsigned char *y_ptr, unsigned char *u_ptr,
unsigned char *v_ptr, int y_stride, int uv_stride,
loop_filter_info *lfi) {
vp8_mbloop_filter_vertical_edge_c(y_ptr, y_stride, lfi->mblim, lfi->lim,
lfi->hev_thr, 2);
mbloop_filter_vertical_edge_c(y_ptr, y_stride, lfi->mblim, lfi->lim,
lfi->hev_thr, 2);
if (u_ptr) {
vp8_mbloop_filter_vertical_edge_c(u_ptr, uv_stride, lfi->mblim, lfi->lim,
lfi->hev_thr, 1);
mbloop_filter_vertical_edge_c(u_ptr, uv_stride, lfi->mblim, lfi->lim,
lfi->hev_thr, 1);
}
if (v_ptr) {
vp8_mbloop_filter_vertical_edge_c(v_ptr, uv_stride, lfi->mblim, lfi->lim,
lfi->hev_thr, 1);
mbloop_filter_vertical_edge_c(v_ptr, uv_stride, lfi->mblim, lfi->lim,
lfi->hev_thr, 1);
}
}
@ -331,21 +335,21 @@ void vp8_loop_filter_mbv_c(unsigned char *y_ptr, unsigned char *u_ptr,
void vp8_loop_filter_bh_c(unsigned char *y_ptr, unsigned char *u_ptr,
unsigned char *v_ptr, int y_stride, int uv_stride,
loop_filter_info *lfi) {
vp8_loop_filter_horizontal_edge_c(y_ptr + 4 * y_stride, y_stride, lfi->blim,
lfi->lim, lfi->hev_thr, 2);
vp8_loop_filter_horizontal_edge_c(y_ptr + 8 * y_stride, y_stride, lfi->blim,
lfi->lim, lfi->hev_thr, 2);
vp8_loop_filter_horizontal_edge_c(y_ptr + 12 * y_stride, y_stride, lfi->blim,
lfi->lim, lfi->hev_thr, 2);
loop_filter_horizontal_edge_c(y_ptr + 4 * y_stride, y_stride, lfi->blim,
lfi->lim, lfi->hev_thr, 2);
loop_filter_horizontal_edge_c(y_ptr + 8 * y_stride, y_stride, lfi->blim,
lfi->lim, lfi->hev_thr, 2);
loop_filter_horizontal_edge_c(y_ptr + 12 * y_stride, y_stride, lfi->blim,
lfi->lim, lfi->hev_thr, 2);
if (u_ptr) {
vp8_loop_filter_horizontal_edge_c(u_ptr + 4 * uv_stride, uv_stride,
lfi->blim, lfi->lim, lfi->hev_thr, 1);
loop_filter_horizontal_edge_c(u_ptr + 4 * uv_stride, uv_stride, lfi->blim,
lfi->lim, lfi->hev_thr, 1);
}
if (v_ptr) {
vp8_loop_filter_horizontal_edge_c(v_ptr + 4 * uv_stride, uv_stride,
lfi->blim, lfi->lim, lfi->hev_thr, 1);
loop_filter_horizontal_edge_c(v_ptr + 4 * uv_stride, uv_stride, lfi->blim,
lfi->lim, lfi->hev_thr, 1);
}
}
@ -363,21 +367,21 @@ void vp8_loop_filter_bhs_c(unsigned char *y_ptr, int y_stride,
void vp8_loop_filter_bv_c(unsigned char *y_ptr, unsigned char *u_ptr,
unsigned char *v_ptr, int y_stride, int uv_stride,
loop_filter_info *lfi) {
vp8_loop_filter_vertical_edge_c(y_ptr + 4, y_stride, lfi->blim, lfi->lim,
lfi->hev_thr, 2);
vp8_loop_filter_vertical_edge_c(y_ptr + 8, y_stride, lfi->blim, lfi->lim,
lfi->hev_thr, 2);
vp8_loop_filter_vertical_edge_c(y_ptr + 12, y_stride, lfi->blim, lfi->lim,
lfi->hev_thr, 2);
loop_filter_vertical_edge_c(y_ptr + 4, y_stride, lfi->blim, lfi->lim,
lfi->hev_thr, 2);
loop_filter_vertical_edge_c(y_ptr + 8, y_stride, lfi->blim, lfi->lim,
lfi->hev_thr, 2);
loop_filter_vertical_edge_c(y_ptr + 12, y_stride, lfi->blim, lfi->lim,
lfi->hev_thr, 2);
if (u_ptr) {
vp8_loop_filter_vertical_edge_c(u_ptr + 4, uv_stride, lfi->blim, lfi->lim,
lfi->hev_thr, 1);
loop_filter_vertical_edge_c(u_ptr + 4, uv_stride, lfi->blim, lfi->lim,
lfi->hev_thr, 1);
}
if (v_ptr) {
vp8_loop_filter_vertical_edge_c(v_ptr + 4, uv_stride, lfi->blim, lfi->lim,
lfi->hev_thr, 1);
loop_filter_vertical_edge_c(v_ptr + 4, uv_stride, lfi->blim, lfi->lim,
lfi->hev_thr, 1);
}
}

View File

@ -22,6 +22,7 @@ extern "C" {
#include "vpx/vp8.h"
struct VP8D_COMP;
struct VP8Common;
typedef struct {
int Width;
@ -45,6 +46,7 @@ int vp8dx_receive_compressed_data(struct VP8D_COMP *comp, size_t size,
int vp8dx_get_raw_frame(struct VP8D_COMP *comp, YV12_BUFFER_CONFIG *sd,
int64_t *time_stamp, int64_t *time_end_stamp,
vp8_ppflags_t *flags);
int vp8dx_references_buffer(struct VP8Common *oci, int ref_frame);
vpx_codec_err_t vp8dx_get_reference(struct VP8D_COMP *comp,
enum vpx_ref_frame_type ref_frame_flag,

View File

@ -8,6 +8,7 @@
* be found in the AUTHORS file in the root of the source tree.
*/
#include "decodemv.h"
#include "treereader.h"
#include "vp8/common/entropymv.h"
#include "vp8/common/entropymode.h"

View File

@ -41,7 +41,6 @@
#endif
extern void vp8_init_loop_filter(VP8_COMMON *cm);
extern void vp8cx_init_de_quantizer(VP8D_COMP *pbi);
static int get_free_fb(VP8_COMMON *cm);
static void ref_cnt_fb(int *buf, int *idx, int new_idx);

View File

@ -119,6 +119,8 @@ typedef struct VP8D_COMP {
void *decrypt_state;
} VP8D_COMP;
void vp8cx_init_de_quantizer(VP8D_COMP *pbi);
void vp8_mb_init_dequantizer(VP8D_COMP *pbi, MACROBLOCKD *xd);
int vp8_decode_frame(VP8D_COMP *cpi);
int vp8_create_decoder_instances(struct frame_buffers *fb, VP8D_CONFIG *oxcf);

View File

@ -20,6 +20,7 @@
#include "vp8/common/loopfilter.h"
#include "vp8/common/extend.h"
#include "vpx_ports/vpx_timer.h"
#include "decoderthreading.h"
#include "detokenize.h"
#include "vp8/common/reconintra4x4.h"
#include "vp8/common/reconinter.h"
@ -36,8 +37,6 @@
memset((p), 0, (n) * sizeof(*(p))); \
} while (0)
void vp8_mb_init_dequantizer(VP8D_COMP *pbi, MACROBLOCKD *xd);
static void setup_decoding_thread_data(VP8D_COMP *pbi, MACROBLOCKD *xd,
MB_ROW_DEC *mbrd, int count) {
VP8_COMMON *const pc = &pbi->common;

View File

@ -15,7 +15,15 @@
extern "C" {
#endif
#include "vp8/encoder/treewriter.h"
#include "vp8/encoder/tokenize.h"
void vp8_pack_tokens(vp8_writer *w, const TOKENEXTRA *p, int xcount);
void vp8_convert_rfct_to_prob(struct VP8_COMP *const cpi);
void vp8_calc_ref_frame_costs(int *ref_frame_cost, int prob_intra,
int prob_last, int prob_garf);
int vp8_estimate_entropy_savings(struct VP8_COMP *cpi);
void vp8_update_coef_probs(struct VP8_COMP *cpi);
#ifdef __cplusplus
} // extern "C"

View File

@ -11,8 +11,12 @@
#include "vpx_config.h"
#include "vp8_rtcd.h"
#include "./vpx_dsp_rtcd.h"
#include "bitstream.h"
#include "encodemb.h"
#include "encodemv.h"
#if CONFIG_MULTITHREAD
#include "ethreading.h"
#endif
#include "vp8/common/common.h"
#include "onyx_int.h"
#include "vp8/common/extend.h"
@ -35,13 +39,6 @@
#include "encodeframe.h"
extern void vp8_stuff_mb(VP8_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t);
extern void vp8_calc_ref_frame_costs(int *ref_frame_cost, int prob_intra,
int prob_last, int prob_garf);
extern void vp8_convert_rfct_to_prob(VP8_COMP *const cpi);
extern void vp8cx_initialize_me_consts(VP8_COMP *cpi, int QIndex);
extern void vp8_auto_select_speed(VP8_COMP *cpi);
extern void vp8cx_init_mbrthread_data(VP8_COMP *cpi, MACROBLOCK *x,
MB_ROW_COMP *mbr_ei, int count);
static void adjust_act_zbin(VP8_COMP *cpi, MACROBLOCK *x);
#ifdef MODE_STATS

View File

@ -10,24 +10,29 @@
#ifndef VP8_ENCODER_ENCODEFRAME_H_
#define VP8_ENCODER_ENCODEFRAME_H_
#include "vp8/encoder/tokenize.h"
#ifdef __cplusplus
extern "C" {
#endif
extern void vp8_activity_masking(VP8_COMP *cpi, MACROBLOCK *x);
extern void vp8_build_block_offsets(MACROBLOCK *x);
struct VP8_COMP;
struct macroblock;
extern void vp8_setup_block_ptrs(MACROBLOCK *x);
void vp8_activity_masking(struct VP8_COMP *cpi, MACROBLOCK *x);
extern void vp8_encode_frame(VP8_COMP *cpi);
void vp8_build_block_offsets(struct macroblock *x);
extern int vp8cx_encode_inter_macroblock(VP8_COMP *cpi, MACROBLOCK *x,
TOKENEXTRA **t, int recon_yoffset,
int recon_uvoffset, int mb_row,
int mb_col);
void vp8_setup_block_ptrs(struct macroblock *x);
extern int vp8cx_encode_intra_macroblock(VP8_COMP *cpi, MACROBLOCK *x,
TOKENEXTRA **t);
void vp8_encode_frame(struct VP8_COMP *cpi);
int vp8cx_encode_inter_macroblock(struct VP8_COMP *cpi, struct macroblock *x,
TOKENEXTRA **t, int recon_yoffset,
int recon_uvoffset, int mb_row, int mb_col);
int vp8cx_encode_intra_macroblock(struct VP8_COMP *cpi, struct macroblock *x,
TOKENEXTRA **t);
#ifdef __cplusplus
} // extern "C"
#endif

View File

@ -14,6 +14,7 @@
#include "vp8/common/extend.h"
#include "bitstream.h"
#include "encodeframe.h"
#include "ethreading.h"
#if CONFIG_MULTITHREAD

32
vp8/encoder/ethreading.h Normal file
View File

@ -0,0 +1,32 @@
/*
* Copyright (c) 2017 The WebM project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef VP8_ENCODER_ETHREADING_H_
#define VP8_ENCODER_ETHREADING_H_
#include "vp8/encoder/onyx_int.h"
#ifdef __cplusplus
extern "C" {
#endif
struct VP8_COMP;
struct macroblock;
void vp8cx_init_mbrthread_data(struct VP8_COMP *cpi, struct macroblock *x,
MB_ROW_COMP *mbr_ei, int count);
int vp8cx_create_encoder_threads(struct VP8_COMP *cpi);
void vp8cx_remove_encoder_threads(struct VP8_COMP *cpi);
#ifdef __cplusplus
}
#endif
#endif // VP8_ENCODER_ETHREADING_H_

View File

@ -12,6 +12,7 @@
#include "./vpx_scale_rtcd.h"
#include "./vpx_dsp_rtcd.h"
#include "./vp8_rtcd.h"
#include "bitstream.h"
#include "vp8/common/onyxc_int.h"
#include "vp8/common/blockd.h"
#include "onyx_int.h"
@ -43,6 +44,13 @@
#include "mr_dissim.h"
#endif
#include "encodeframe.h"
#if CONFIG_MULTITHREAD
#include "ethreading.h"
#endif
#include "picklpf.h"
#if !CONFIG_REALTIME_ONLY
#include "temporal_filter.h"
#endif
#include <assert.h>
#include <math.h>
@ -51,28 +59,17 @@
#if CONFIG_REALTIME_ONLY & CONFIG_ONTHEFLY_BITPACKING
extern int vp8_update_coef_context(VP8_COMP *cpi);
extern void vp8_update_coef_probs(VP8_COMP *cpi);
#endif
extern void vp8cx_pick_filter_level_fast(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi);
extern void vp8cx_set_alt_lf_level(VP8_COMP *cpi, int filt_val);
extern void vp8cx_pick_filter_level(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi);
extern void vp8_deblock_frame(YV12_BUFFER_CONFIG *source,
YV12_BUFFER_CONFIG *post, int filt_lvl,
int low_var_thresh, int flag);
extern void print_parms(VP8_CONFIG *ocf, char *filenam);
extern unsigned int vp8_get_processor_freq();
extern void print_tree_update_probs();
extern int vp8cx_create_encoder_threads(VP8_COMP *cpi);
extern void vp8cx_remove_encoder_threads(VP8_COMP *cpi);
int vp8_estimate_entropy_savings(VP8_COMP *cpi);
int vp8_calc_ss_err(YV12_BUFFER_CONFIG *source, YV12_BUFFER_CONFIG *dest);
extern void vp8_temporal_filter_prepare_c(VP8_COMP *cpi, int distance);
static void set_default_lf_deltas(VP8_COMP *cpi);
extern const int vp8_gf_interval_table[101];

View File

@ -12,6 +12,7 @@
#include "./vpx_scale_rtcd.h"
#include "vp8/common/onyxc_int.h"
#include "onyx_int.h"
#include "vp8/encoder/picklpf.h"
#include "vp8/encoder/quantize.h"
#include "vpx_mem/vpx_mem.h"
#include "vpx_scale/vpx_scale.h"

30
vp8/encoder/picklpf.h Normal file
View File

@ -0,0 +1,30 @@
/*
* Copyright (c) 2017 The WebM project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef VP8_ENCODER_PICKLPF_H_
#define VP8_ENCODER_PICKLPF_H_
#ifdef __cplusplus
extern "C" {
#endif
struct VP8_COMP;
struct yv12_buffer_config;
void vp8cx_pick_filter_level_fast(struct yv12_buffer_config *sd,
struct VP8_COMP *cpi);
void vp8cx_set_alt_lf_level(struct VP8_COMP *cpi, int filt_val);
void vp8cx_pick_filter_level(struct yv12_buffer_config *sd, VP8_COMP *cpi);
#ifdef __cplusplus
}
#endif
#endif // VP8_ENCODER_PICKLPF_H_

View File

@ -16,6 +16,7 @@
#include "vpx_config.h"
#include "vp8_rtcd.h"
#include "./vpx_dsp_rtcd.h"
#include "encodeframe.h"
#include "tokenize.h"
#include "treewriter.h"
#include "onyx_int.h"

View File

@ -19,6 +19,9 @@ extern "C" {
#define RDCOST(RM, DM, R, D) (((128 + (R) * (RM)) >> 8) + (DM) * (D))
void vp8cx_initialize_me_consts(VP8_COMP *cpi, int QIndex);
void vp8_auto_select_speed(VP8_COMP *cpi);
static INLINE void insertsortmv(int arr[], int len) {
int i, j, k;

View File

@ -20,6 +20,7 @@
#include "ratectrl.h"
#include "vp8/common/quant_common.h"
#include "segmentation.h"
#include "temporal_filter.h"
#include "vpx_mem/vpx_mem.h"
#include "vp8/common/swapyv12buffer.h"
#include "vp8/common/threading.h"

View File

@ -0,0 +1,26 @@
/*
* Copyright (c) 2017 The WebM project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef VP8_ENCODER_TEMPORAL_FILTER_H_
#define VP8_ENCODER_TEMPORAL_FILTER_H_
#ifdef __cplusplus
extern "C" {
#endif
struct VP8_COMP;
void vp8_temporal_filter_prepare_c(struct VP8_COMP *cpi, int distance);
#ifdef __cplusplus
}
#endif
#endif // VP8_ENCODER_TEMPORAL_FILTER_H_

View File

@ -1,286 +0,0 @@
;
; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
;
; Use of this source code is governed by a BSD-style license
; that can be found in the LICENSE file in the root of the source
; tree. An additional intellectual property rights grant can be found
; in the file PATENTS. All contributing project authors may
; be found in the AUTHORS file in the root of the source tree.
;
%include "vpx_ports/x86_abi_support.asm"
;int vp8_fast_quantize_b_impl_mmx(short *coeff_ptr, short *zbin_ptr,
; short *qcoeff_ptr,short *dequant_ptr,
; short *scan_mask, short *round_ptr,
; short *quant_ptr, short *dqcoeff_ptr);
global sym(vp8_fast_quantize_b_impl_mmx) PRIVATE
sym(vp8_fast_quantize_b_impl_mmx):
push rbp
mov rbp, rsp
SHADOW_ARGS_TO_STACK 8
push rsi
push rdi
; end prolog
mov rsi, arg(0) ;coeff_ptr
movq mm0, [rsi]
mov rax, arg(1) ;zbin_ptr
movq mm1, [rax]
movq mm3, mm0
psraw mm0, 15
pxor mm3, mm0
psubw mm3, mm0 ; abs
movq mm2, mm3
pcmpgtw mm1, mm2
pandn mm1, mm2
movq mm3, mm1
mov rdx, arg(6) ;quant_ptr
movq mm1, [rdx]
mov rcx, arg(5) ;round_ptr
movq mm2, [rcx]
paddw mm3, mm2
pmulhuw mm3, mm1
pxor mm3, mm0
psubw mm3, mm0 ;gain the sign back
mov rdi, arg(2) ;qcoeff_ptr
movq mm0, mm3
movq [rdi], mm3
mov rax, arg(3) ;dequant_ptr
movq mm2, [rax]
pmullw mm3, mm2
mov rax, arg(7) ;dqcoeff_ptr
movq [rax], mm3
; next 8
movq mm4, [rsi+8]
mov rax, arg(1) ;zbin_ptr
movq mm5, [rax+8]
movq mm7, mm4
psraw mm4, 15
pxor mm7, mm4
psubw mm7, mm4 ; abs
movq mm6, mm7
pcmpgtw mm5, mm6
pandn mm5, mm6
movq mm7, mm5
movq mm5, [rdx+8]
movq mm6, [rcx+8]
paddw mm7, mm6
pmulhuw mm7, mm5
pxor mm7, mm4
psubw mm7, mm4;gain the sign back
mov rdi, arg(2) ;qcoeff_ptr
movq mm1, mm7
movq [rdi+8], mm7
mov rax, arg(3) ;dequant_ptr
movq mm6, [rax+8]
pmullw mm7, mm6
mov rax, arg(7) ;dqcoeff_ptr
movq [rax+8], mm7
; next 8
movq mm4, [rsi+16]
mov rax, arg(1) ;zbin_ptr
movq mm5, [rax+16]
movq mm7, mm4
psraw mm4, 15
pxor mm7, mm4
psubw mm7, mm4 ; abs
movq mm6, mm7
pcmpgtw mm5, mm6
pandn mm5, mm6
movq mm7, mm5
movq mm5, [rdx+16]
movq mm6, [rcx+16]
paddw mm7, mm6
pmulhuw mm7, mm5
pxor mm7, mm4
psubw mm7, mm4;gain the sign back
mov rdi, arg(2) ;qcoeff_ptr
movq mm1, mm7
movq [rdi+16], mm7
mov rax, arg(3) ;dequant_ptr
movq mm6, [rax+16]
pmullw mm7, mm6
mov rax, arg(7) ;dqcoeff_ptr
movq [rax+16], mm7
; next 8
movq mm4, [rsi+24]
mov rax, arg(1) ;zbin_ptr
movq mm5, [rax+24]
movq mm7, mm4
psraw mm4, 15
pxor mm7, mm4
psubw mm7, mm4 ; abs
movq mm6, mm7
pcmpgtw mm5, mm6
pandn mm5, mm6
movq mm7, mm5
movq mm5, [rdx+24]
movq mm6, [rcx+24]
paddw mm7, mm6
pmulhuw mm7, mm5
pxor mm7, mm4
psubw mm7, mm4;gain the sign back
mov rdi, arg(2) ;qcoeff_ptr
movq mm1, mm7
movq [rdi+24], mm7
mov rax, arg(3) ;dequant_ptr
movq mm6, [rax+24]
pmullw mm7, mm6
mov rax, arg(7) ;dqcoeff_ptr
movq [rax+24], mm7
mov rdi, arg(4) ;scan_mask
mov rsi, arg(2) ;qcoeff_ptr
pxor mm5, mm5
pxor mm7, mm7
movq mm0, [rsi]
movq mm1, [rsi+8]
movq mm2, [rdi]
movq mm3, [rdi+8];
pcmpeqw mm0, mm7
pcmpeqw mm1, mm7
pcmpeqw mm6, mm6
pxor mm0, mm6
pxor mm1, mm6
psrlw mm0, 15
psrlw mm1, 15
pmaddwd mm0, mm2
pmaddwd mm1, mm3
movq mm5, mm0
paddd mm5, mm1
movq mm0, [rsi+16]
movq mm1, [rsi+24]
movq mm2, [rdi+16]
movq mm3, [rdi+24];
pcmpeqw mm0, mm7
pcmpeqw mm1, mm7
pcmpeqw mm6, mm6
pxor mm0, mm6
pxor mm1, mm6
psrlw mm0, 15
psrlw mm1, 15
pmaddwd mm0, mm2
pmaddwd mm1, mm3
paddd mm5, mm0
paddd mm5, mm1
movq mm0, mm5
psrlq mm5, 32
paddd mm0, mm5
; eob adjustment begins here
movq rcx, mm0
and rcx, 0xffff
xor rdx, rdx
sub rdx, rcx ; rdx=-rcx
bsr rax, rcx
inc rax
sar rdx, 31
and rax, rdx
; Substitute the sse assembly for the old mmx mixed assembly/C. The
; following is kept as reference
; movq rcx, mm0
; bsr rax, rcx
;
; mov eob, rax
; mov eee, rcx
;
;if(eee==0)
;{
; eob=-1;
;}
;else if(eee<0)
;{
; eob=15;
;}
;d->eob = eob+1;
; begin epilog
pop rdi
pop rsi
UNSHADOW_ARGS
pop rbp
ret

View File

@ -10,6 +10,7 @@
#include <tmmintrin.h> /* SSSE3 */
#include "./vp8_rtcd.h"
#include "vp8/encoder/block.h"
/* bitscan reverse (bsr) */

View File

@ -1,34 +0,0 @@
/*
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include "vpx_config.h"
#include "vp8_rtcd.h"
#include "vpx_ports/x86.h"
#include "vp8/encoder/block.h"
int vp8_fast_quantize_b_impl_mmx(short *coeff_ptr, short *zbin_ptr,
short *qcoeff_ptr, short *dequant_ptr,
const short *scan_mask, short *round_ptr,
short *quant_ptr, short *dqcoeff_ptr);
void vp8_fast_quantize_b_mmx(BLOCK *b, BLOCKD *d) {
const short *scan_mask = vp8_default_zig_zag_mask;
short *coeff_ptr = b->coeff;
short *zbin_ptr = b->zbin;
short *round_ptr = b->round;
short *quant_ptr = b->quant_fast;
short *qcoeff_ptr = d->qcoeff;
short *dqcoeff_ptr = d->dqcoeff;
short *dequant_ptr = d->dequant;
*d->eob = (char)vp8_fast_quantize_b_impl_mmx(
coeff_ptr, zbin_ptr, qcoeff_ptr, dequant_ptr, scan_mask,
round_ptr, quant_ptr, dqcoeff_ptr);
}

View File

@ -581,7 +581,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,
va_list args) {
int *ref_info = va_arg(args, int *);

View File

@ -30,6 +30,7 @@ VP8_CX_SRCS-yes += encoder/encodeintra.c
VP8_CX_SRCS-yes += encoder/encodemb.c
VP8_CX_SRCS-yes += encoder/encodemv.c
VP8_CX_SRCS-$(CONFIG_MULTITHREAD) += encoder/ethreading.c
VP8_CX_SRCS-$(CONFIG_MULTITHREAD) += encoder/ethreading.h
VP8_CX_SRCS-yes += encoder/firstpass.c
VP8_CX_SRCS-yes += encoder/block.h
VP8_CX_SRCS-yes += encoder/boolhuff.h
@ -56,6 +57,7 @@ VP8_CX_SRCS-yes += encoder/modecosts.c
VP8_CX_SRCS-yes += encoder/onyx_if.c
VP8_CX_SRCS-yes += encoder/pickinter.c
VP8_CX_SRCS-yes += encoder/picklpf.c
VP8_CX_SRCS-yes += encoder/picklpf.h
VP8_CX_SRCS-yes += encoder/vp8_quantize.c
VP8_CX_SRCS-yes += encoder/ratectrl.c
VP8_CX_SRCS-yes += encoder/rdopt.c
@ -70,15 +72,16 @@ VP8_CX_SRCS-yes += encoder/treewriter.c
VP8_CX_SRCS-$(CONFIG_INTERNAL_STATS) += common/postproc.h
VP8_CX_SRCS-$(CONFIG_INTERNAL_STATS) += common/postproc.c
VP8_CX_SRCS-yes += encoder/temporal_filter.c
VP8_CX_SRCS-yes += encoder/temporal_filter.h
VP8_CX_SRCS-$(CONFIG_MULTI_RES_ENCODING) += encoder/mr_dissim.c
VP8_CX_SRCS-$(CONFIG_MULTI_RES_ENCODING) += encoder/mr_dissim.h
ifeq ($(CONFIG_REALTIME_ONLY),yes)
VP8_CX_SRCS_REMOVE-yes += encoder/firstpass.c
VP8_CX_SRCS_REMOVE-yes += encoder/temporal_filter.c
VP8_CX_SRCS_REMOVE-yes += encoder/temporal_filter.h
endif
VP8_CX_SRCS-$(HAVE_MMX) += encoder/x86/vp8_enc_stubs_mmx.c
VP8_CX_SRCS-$(HAVE_SSE2) += encoder/x86/dct_sse2.asm
VP8_CX_SRCS-$(HAVE_SSE2) += encoder/x86/fwalsh_sse2.asm
VP8_CX_SRCS-$(HAVE_SSE2) += encoder/x86/vp8_quantize_sse2.c
@ -91,7 +94,6 @@ endif
VP8_CX_SRCS-$(HAVE_SSE2) += encoder/x86/temporal_filter_apply_sse2.asm
VP8_CX_SRCS-$(HAVE_SSE2) += encoder/x86/vp8_enc_stubs_sse2.c
VP8_CX_SRCS-$(ARCH_X86)$(ARCH_X86_64) += encoder/x86/quantize_mmx.asm
VP8_CX_SRCS-$(ARCH_X86)$(ARCH_X86_64) += encoder/x86/encodeopt.asm
ifeq ($(CONFIG_REALTIME_ONLY),yes)

View File

@ -15,7 +15,7 @@ struct ALT_REF_AQ {
int dummy;
};
struct ALT_REF_AQ *vp9_alt_ref_aq_create() {
struct ALT_REF_AQ *vp9_alt_ref_aq_create(void) {
return (struct ALT_REF_AQ *)vpx_malloc(sizeof(struct ALT_REF_AQ));
}

View File

@ -54,7 +54,7 @@ struct ALT_REF_AQ;
*
* \return Instance of the class
*/
struct ALT_REF_AQ *vp9_alt_ref_aq_create();
struct ALT_REF_AQ *vp9_alt_ref_aq_create(void);
/*!\brief Upload segmentation_map to self object
*

View File

@ -489,8 +489,9 @@ static int set_vt_partitioning(VP9_COMP *cpi, MACROBLOCK *const x,
return 0;
}
int64_t scale_part_thresh_sumdiff(int64_t threshold_base, int speed, int width,
int height, int content_state) {
static int64_t scale_part_thresh_sumdiff(int64_t threshold_base, int speed,
int width, int height,
int content_state) {
if (speed >= 8) {
if (width <= 640 && height <= 480)
return (5 * threshold_base) >> 2;

View File

@ -2070,7 +2070,8 @@ int vp9_resize_one_pass_cbr(VP9_COMP *cpi) {
return resize_action;
}
void adjust_gf_boost_lag_one_pass_vbr(VP9_COMP *cpi, uint64_t avg_sad_current) {
static void adjust_gf_boost_lag_one_pass_vbr(VP9_COMP *cpi,
uint64_t avg_sad_current) {
VP9_COMMON *const cm = &cpi->common;
RATE_CONTROL *const rc = &cpi->rc;
int target;

View File

@ -11,6 +11,7 @@
#include <assert.h>
#include <smmintrin.h>
#include "./vp9_rtcd.h"
#include "./vpx_config.h"
#include "vpx/vpx_integer.h"

View File

@ -15,6 +15,7 @@
#include "./vpx_dsp_rtcd.h"
#include "vpx/vpx_integer.h"
#include "vpx_dsp/postproc.h"
#include "vpx_ports/mem.h"
void vpx_plane_add_noise_c(uint8_t *start, const int8_t *noise, int blackclamp,

View File

@ -9,6 +9,7 @@
*/
#include <assert.h>
#include <stdlib.h>
#include "./vpx_dsp_rtcd.h"
#include "vpx/vpx_integer.h"
const int16_t vpx_rv[] = {