onyx_int.h revision 79f15823c34ae1e423108295e416213200bb280f
1893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project/* 2893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project * 4893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project * Use of this source code is governed by a BSD-style license 5893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project * that can be found in the LICENSE file in the root of the source 6893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project * tree. An additional intellectual property rights grant can be found 7893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project * in the file PATENTS. All contributing project authors may 8893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project * be found in the AUTHORS file in the root of the source tree. 9893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project */ 10893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 11893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 12893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#ifndef __INC_VP8_INT_H 13893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#define __INC_VP8_INT_H 14893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#include <stdio.h> 16893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#include "vpx_ports/config.h" 17893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#include "vp8/common/onyx.h" 18893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#include "treewriter.h" 19893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#include "tokenize.h" 20893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#include "vp8/common/onyxc_int.h" 21893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#include "variance.h" 22893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#include "dct.h" 23893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#include "encodemb.h" 24893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#include "quantize.h" 25893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#include "vp8/common/entropy.h" 26893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#include "vp8/common/threading.h" 27893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#include "vpx_ports/mem.h" 28893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#include "vpx/internal/vpx_codec_internal.h" 29893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#include "mcomp.h" 30893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#include "temporal_filter.h" 31893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#include "vp8/common/findnearmv.h" 32893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 33893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project//#define SPEEDSTATS 1 34893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#define MIN_GF_INTERVAL 4 35893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#define DEFAULT_GF_INTERVAL 7 36893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 37893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#define KEY_FRAME_CONTEXT 5 38893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 39893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#define MAX_LAG_BUFFERS (CONFIG_REALTIME_ONLY? 1 : 25) 40893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 41893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#define AF_THRESH 25 42893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#define AF_THRESH2 100 43893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#define ARF_DECAY_THRESH 12 44893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#define MAX_MODES 20 45893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#define MIN_THRESHMULT 32 47893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#define MAX_THRESHMULT 512 48893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 49893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#define GF_ZEROMV_ZBIN_BOOST 24 50893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#define LF_ZEROMV_ZBIN_BOOST 12 51893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#define MV_ZBIN_BOOST 4 52893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#define ZBIN_OQ_MAX 192 53893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 54893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#if !(CONFIG_REALTIME_ONLY) 55893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#define VP8_TEMPORAL_ALT_REF 1 56893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#endif 57893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 58893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttypedef struct 59893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 60893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int kf_indicated; 61893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int frames_since_key; 62893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int frames_since_golden; 63893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int filter_level; 64893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int frames_till_gf_update_due; 65893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int recent_ref_frame_usage[MAX_REF_FRAMES]; 66893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 67893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project MV_CONTEXT mvc[2]; 68893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int mvcosts[2][MVvals+1]; 69893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 70893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#ifdef MODE_STATS 71893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project // Stats 72893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int y_modes[5]; 73893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int uv_modes[4]; 74893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int b_modes[10]; 75893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int inter_y_modes[10]; 76893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int inter_uv_modes[4]; 77893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int inter_b_modes[10]; 78893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#endif 79893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 80893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project vp8_prob ymode_prob[4], uv_mode_prob[3]; /* interframe intra mode probs */ 81893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project vp8_prob kf_ymode_prob[4], kf_uv_mode_prob[3]; /* keyframe "" */ 82893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 83893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int ymode_count[5], uv_mode_count[4]; /* intra MB type cts this frame */ 84893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 85893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int count_mb_ref_frame_usage[MAX_REF_FRAMES]; 86893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 87893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int this_frame_percent_intra; 88893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int last_frame_percent_intra; 89893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 90893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 91893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} CODING_CONTEXT; 92893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 93893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttypedef struct 94893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 95893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double frame; 96893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double intra_error; 97893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double coded_error; 98893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double ssim_weighted_pred_err; 99893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double pcnt_inter; 100893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double pcnt_motion; 101893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double pcnt_second_ref; 102893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double pcnt_neutral; 103893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double MVr; 104893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double mvr_abs; 105893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double MVc; 106893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double mvc_abs; 107893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double MVrv; 108893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double MVcv; 109893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double mv_in_out_count; 110893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double duration; 111893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double count; 112893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} 113893912bfc2683463dc3e2c445336752d012563d3The Android Open Source ProjectFIRSTPASS_STATS; 114893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 115893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttypedef struct 116893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 117893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int frames_so_far; 118893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double frame_intra_error; 119893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double frame_coded_error; 120893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double frame_pcnt_inter; 121893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double frame_pcnt_motion; 122893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double frame_mvr; 123893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double frame_mvr_abs; 124893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double frame_mvc; 125893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double frame_mvc_abs; 126893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 127893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} ONEPASS_FRAMESTATS; 128893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 129893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 130893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttypedef enum 131893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 132893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_ZEROMV = 0, 133893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_DC = 1, 134893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 135893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_NEARESTMV = 2, 136893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_NEARMV = 3, 137893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 138893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_ZEROG = 4, 139893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_NEARESTG = 5, 140893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 141893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_ZEROA = 6, 142893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_NEARESTA = 7, 143893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 144893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_NEARG = 8, 145893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_NEARA = 9, 146893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 147893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_V_PRED = 10, 148893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_H_PRED = 11, 149893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_TM = 12, 150893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 151893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_NEWMV = 13, 152893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_NEWG = 14, 153893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_NEWA = 15, 154893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 155893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_SPLITMV = 16, 156893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_SPLITG = 17, 157893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_SPLITA = 18, 158893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 159893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project THR_B_PRED = 19, 160893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} 161893912bfc2683463dc3e2c445336752d012563d3The Android Open Source ProjectTHR_MODES; 162893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 163893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttypedef enum 164893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 165893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DIAMOND = 0, 166893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project NSTEP = 1, 167893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project HEX = 2 168893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} SEARCH_METHODS; 169893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 170893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttypedef struct 171893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 172893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int RD; 173893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project SEARCH_METHODS search_method; 174893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int improved_quant; 175893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int improved_dct; 176893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int auto_filter; 177893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int recode_loop; 178893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int iterative_sub_pixel; 179893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int half_pixel_search; 180893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int quarter_pixel_search; 181893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int thresh_mult[MAX_MODES]; 182893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int full_freq[2]; 183893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int min_fs_radius; 184893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int max_fs_radius; 185893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int max_step_search_steps; 186893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int first_step; 187893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int optimize_coefficients; 188893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 189893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int use_fastquant_for_pick; 190893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int no_skip_block4x4_search; 191893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int improved_mv_pred; 192893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 193893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} SPEED_FEATURES; 194893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 195893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttypedef struct 196893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 197893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project MACROBLOCK mb; 198893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int segment_counts[MAX_MB_SEGMENTS]; 199893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int totalrate; 200893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} MB_ROW_COMP; 201893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 202893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttypedef struct 203893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 204893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project TOKENEXTRA *start; 205893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project TOKENEXTRA *stop; 206893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} TOKENLIST; 207893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 208893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttypedef struct 209893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 210893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int ithread; 211893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project void *ptr1; 212893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project void *ptr2; 213893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} ENCODETHREAD_DATA; 214893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttypedef struct 215893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 216893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int ithread; 217893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project void *ptr1; 218893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} LPFTHREAD_DATA; 219893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 220893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttypedef struct 221893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 222893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project INT64 source_time_stamp; 223893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project INT64 source_end_time_stamp; 224893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 225893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DECLARE_ALIGNED(16, YV12_BUFFER_CONFIG, source_buffer); 226893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int source_frame_flags; 227893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} SOURCE_SAMPLE; 228893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 229893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttypedef struct VP8_ENCODER_RTCD 230893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 231893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project VP8_COMMON_RTCD *common; 232893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project vp8_variance_rtcd_vtable_t variance; 233893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project vp8_fdct_rtcd_vtable_t fdct; 234893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project vp8_encodemb_rtcd_vtable_t encodemb; 235893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project vp8_quantize_rtcd_vtable_t quantize; 236893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project vp8_search_rtcd_vtable_t search; 237893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project vp8_temporal_rtcd_vtable_t temporal; 238893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} VP8_ENCODER_RTCD; 239893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 240893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectenum 241893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 242893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project BLOCK_16X8, 243893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project BLOCK_8X16, 244893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project BLOCK_8X8, 245893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project BLOCK_4X4, 246893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project BLOCK_16X16, 247893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project BLOCK_MAX_SEGMENTS 248893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project}; 249893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 250893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttypedef struct 251893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 252893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 253893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DECLARE_ALIGNED(16, short, Y1quant[QINDEX_RANGE][16]); 254893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DECLARE_ALIGNED(16, short, Y1quant_shift[QINDEX_RANGE][16]); 255893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DECLARE_ALIGNED(16, short, Y1zbin[QINDEX_RANGE][16]); 256893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DECLARE_ALIGNED(16, short, Y1round[QINDEX_RANGE][16]); 257893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 258893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DECLARE_ALIGNED(16, short, Y2quant[QINDEX_RANGE][16]); 259893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DECLARE_ALIGNED(16, short, Y2quant_shift[QINDEX_RANGE][16]); 260893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DECLARE_ALIGNED(16, short, Y2zbin[QINDEX_RANGE][16]); 261893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DECLARE_ALIGNED(16, short, Y2round[QINDEX_RANGE][16]); 262893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 263893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DECLARE_ALIGNED(16, short, UVquant[QINDEX_RANGE][16]); 264893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DECLARE_ALIGNED(16, short, UVquant_shift[QINDEX_RANGE][16]); 265893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DECLARE_ALIGNED(16, short, UVzbin[QINDEX_RANGE][16]); 266893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DECLARE_ALIGNED(16, short, UVround[QINDEX_RANGE][16]); 267893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 268893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DECLARE_ALIGNED(16, short, zrun_zbin_boost_y1[QINDEX_RANGE][16]); 269893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DECLARE_ALIGNED(16, short, zrun_zbin_boost_y2[QINDEX_RANGE][16]); 270893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DECLARE_ALIGNED(16, short, zrun_zbin_boost_uv[QINDEX_RANGE][16]); 271893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DECLARE_ALIGNED(16, short, Y1quant_fast[QINDEX_RANGE][16]); 272893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DECLARE_ALIGNED(16, short, Y2quant_fast[QINDEX_RANGE][16]); 273893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project DECLARE_ALIGNED(16, short, UVquant_fast[QINDEX_RANGE][16]); 274893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 275893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 276893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project MACROBLOCK mb; 277893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project VP8_COMMON common; 278893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project vp8_writer bc, bc2; 279893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project // bool_writer *bc2; 280893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 281893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project VP8_CONFIG oxcf; 282893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 283893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project YV12_BUFFER_CONFIG *Source; 284893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project YV12_BUFFER_CONFIG *un_scaled_source; 285893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project INT64 source_time_stamp; 286893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project INT64 source_end_time_stamp; 287893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int source_frame_flags; 288893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project YV12_BUFFER_CONFIG scaled_source; 289893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 290893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int source_buffer_count; // number of src_buffers in use for lagged encoding 291893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int source_encode_index; // index of buffer in src_buffer to encode 292893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int source_alt_ref_pending; // frame in src_buffers has been identified to be encoded as an alt ref 293893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int source_alt_ref_active; // an alt ref frame has been encoded and is usable 294893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 295893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int last_alt_ref_sei; // index into src_buffers of frame used as alt reference 296893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int is_src_frame_alt_ref; // source of frame to encode is an exact copy of an alt ref frame 297893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int is_next_src_alt_ref; // source of next frame to encode is an exact copy of an alt ref frame 298893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 299893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int gold_is_last; // golden frame same as last frame ( short circuit gold searches) 300893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int alt_is_last; // Alt reference frame same as last ( short circuit altref search) 301893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int gold_is_alt; // don't do both alt and gold search ( just do gold). 302893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 303893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project //int refresh_alt_ref_frame; 304893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project SOURCE_SAMPLE src_buffer[MAX_LAG_BUFFERS]; 305893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 306893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project YV12_BUFFER_CONFIG last_frame_uf; 307893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 308893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project TOKENEXTRA *tok; 309893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int tok_count; 310893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 311893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 312893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int frames_since_key; 313893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int key_frame_frequency; 314893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int this_key_frame_forced; 315893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int next_key_frame_forced; 316893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 317893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project // Ambient reconstruction err target for force key frames 318893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int ambient_err; 319893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 320893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int mode_check_freq[MAX_MODES]; 321893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int mode_test_hit_counts[MAX_MODES]; 322893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int mode_chosen_counts[MAX_MODES]; 323893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int mbs_tested_so_far; 324893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 325893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int check_freq[2]; 326893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int do_full[2]; 327893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 328893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int rd_thresh_mult[MAX_MODES]; 329893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int rd_baseline_thresh[MAX_MODES]; 330893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int rd_threshes[MAX_MODES]; 331893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int mvcostbase; 332893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int mvcostmultiplier; 333893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int subseqblockweight; 334893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int errthresh; 335893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int activity_avg; 336893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 337893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int RDMULT; 338893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int RDDIV ; 339893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 340893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project CODING_CONTEXT coding_context; 341893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 342893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project // Rate targetting variables 343893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project long long prediction_error; 344893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project long long last_prediction_error; 345893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project long long intra_error; 346893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project long long last_intra_error; 347893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 348893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#if 0 349893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project // Experimental RD code 350893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project long long frame_distortion; 351893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project long long last_frame_distortion; 352893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#endif 353893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 354893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int last_mb_distortion; 355893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 356893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int frames_since_auto_filter; 357893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 358893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int this_frame_target; 359893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int projected_frame_size; 360893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int last_q[2]; // Separate values for Intra/Inter 361893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 362893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double rate_correction_factor; 363893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double key_frame_rate_correction_factor; 364893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double gf_rate_correction_factor; 365893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double est_max_qcorrection_factor; 366893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 367893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int frames_till_gf_update_due; // Count down till next GF 368893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int current_gf_interval; // GF interval chosen when we coded the last GF 369893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 370893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int gf_overspend_bits; // Total bits overspent becasue of GF boost (cumulative) 371893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 372893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int gf_group_bits; // Projected Bits available for a group of frames including 1 GF or ARF 373893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int gf_bits; // Bits for the golden frame or ARF - 2 pass only 374893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int mid_gf_extra_bits; // A few extra bits for the frame half way between two gfs. 375893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 376893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project // Projected total bits available for a key frame group of frames 377893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project long long kf_group_bits; 378893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 379893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project // Error score of frames still to be coded in kf group 380893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project long long kf_group_error_left; 381893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 382893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project // Bits for the key frame in a key frame group - 2 pass only 383893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int kf_bits; 384893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 385893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int non_gf_bitrate_adjustment; // Used in the few frames following a GF to recover the extra bits spent in that GF 386893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int initial_gf_use; // percentage use of gf 2 frames after gf 387893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 388893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int gf_group_error_left; // Remaining error from uncoded frames in a gf group. Two pass use only 389893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 390893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int kf_overspend_bits; // Extra bits spent on key frames that need to be recovered on inter frames 391893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int kf_bitrate_adjustment; // Current number of bit s to try and recover on each inter frame. 392893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int max_gf_interval; 393893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int static_scene_max_gf_interval; 394893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int baseline_gf_interval; 395893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int gf_decay_rate; 396893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int active_arnr_frames; // <= cpi->oxcf.arnr_max_frames 397893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 398893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project INT64 key_frame_count; 399893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project INT64 tot_key_frame_bits; 400893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int prior_key_frame_size[KEY_FRAME_CONTEXT]; 401893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int prior_key_frame_distance[KEY_FRAME_CONTEXT]; 402893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int per_frame_bandwidth; // Current section per frame bandwidth target 403893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int av_per_frame_bandwidth; // Average frame size target for clip 404893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int min_frame_bandwidth; // Minimum allocation that should be used for any frame 405893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int last_key_frame_size; 406893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int intra_frame_target; 407893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int inter_frame_target; 408893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double output_frame_rate; 409893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project long long last_time_stamp_seen; 410893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project long long last_end_time_stamp_seen; 411893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project long long first_time_stamp_ever; 412893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 413893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int ni_av_qi; 414893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int ni_tot_qi; 415893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int ni_frames; 416893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int avg_frame_qindex; 417893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 418893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int zbin_over_quant; 419893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int zbin_mode_boost; 420893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int zbin_mode_boost_enabled; 421893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 422893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project INT64 total_byte_count; 423893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 424893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int buffered_mode; 425893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 426893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int buffer_level; 427893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int bits_off_target; 428893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 429893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int rolling_target_bits; 430893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int rolling_actual_bits; 431893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 432893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int long_rolling_target_bits; 433893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int long_rolling_actual_bits; 434893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 435893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project long long total_actual_bits; 436893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int total_target_vs_actual; // debug stats 437893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 438893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int worst_quality; 439893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int active_worst_quality; 440893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int best_quality; 441893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int active_best_quality; 442893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 443893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int cq_target_quality; 444893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int maxq_max_limit; 445893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int maxq_min_limit; 446893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 447893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int drop_frames_allowed; // Are we permitted to drop frames? 448893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int drop_frame; // Drop this frame? 449893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int drop_count; // How many frames have we dropped? 450893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int max_drop_count; // How many frames should we drop? 451893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int max_consec_dropped_frames; // Limit number of consecutive frames that can be dropped. 452893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 453893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 454893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int ymode_count [VP8_YMODES]; /* intra MB type cts this frame */ 455893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int uv_mode_count[VP8_UV_MODES]; /* intra MB type cts this frame */ 456893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 457893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int MVcount [2] [MVvals]; /* (row,col) MV cts this frame */ 458893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 459893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int coef_counts [BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [vp8_coef_tokens]; /* for this frame */ 460893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project //DECLARE_ALIGNED(16, int, coef_counts_backup [BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [vp8_coef_tokens]); //not used any more 461893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project //save vp8_tree_probs_from_distribution result for each frame to avoid repeat calculation 462893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project vp8_prob frame_coef_probs [BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [vp8_coef_tokens-1]; 463893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int frame_branch_ct [BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [vp8_coef_tokens-1][2]; 464893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 465893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project /* Second compressed data partition contains coefficient data. */ 466893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 467893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned char *output_partition2; 468893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project size_t output_partition2size; 469893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 470893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int frames_to_key; 471893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int gfu_boost; 472893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int kf_boost; 473893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int last_boost; 474893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double total_error_left; 475893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double total_intra_error_left; 476893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double total_coded_error_left; 477893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double start_tot_err_left; 478893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double min_error; 479893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double kf_intra_err_min; 480893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double gf_intra_err_min; 481893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 482893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double modified_error_total; 483893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double modified_error_used; 484893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double modified_error_left; 485893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double clip_bpe; 486893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double observed_bpe; 487893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 488893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double avg_iiratio; 489893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 490893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int target_bandwidth; 491893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project long long bits_left; 492893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project long long clip_bits_total; 493893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project FIRSTPASS_STATS *total_stats; 494893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project FIRSTPASS_STATS *this_frame_stats; 495893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project FIRSTPASS_STATS *stats_in, *stats_in_end; 496893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project struct vpx_codec_pkt_list *output_pkt_list; 497893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int first_pass_done; 498893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 499893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#if 0 500893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project // Experimental code for lagged and one pass 501893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ONEPASS_FRAMESTATS one_pass_frame_stats[MAX_LAG_BUFFERS]; 502893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int one_pass_frame_index; 503893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#endif 504893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 505893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int decimation_factor; 506893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int decimation_count; 507893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 508893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project // for real time encoding 509893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int avg_encode_time; //microsecond 510893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int avg_pick_mode_time; //microsecond 511893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int Speed; 512893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int cpu_freq; //Mhz 513893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int compressor_speed; 514893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 515893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int interquantizer; 516893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int auto_gold; 517893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int auto_adjust_gold_quantizer; 518893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int goldquantizer; 519893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int goldfreq; 520893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int auto_adjust_key_quantizer; 521893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int keyquantizer; 522893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int auto_worst_q; 523893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int filter_type; 524893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int cpu_used; 525893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int chroma_boost; 526893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int horiz_scale; 527893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int vert_scale; 528893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int pass; 529893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 530893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 531893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int prob_intra_coded; 532893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int prob_last_coded; 533893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int prob_gf_coded; 534893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int prob_skip_false; 535893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int last_skip_false_probs[3]; 536893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int last_skip_probs_q[3]; 537893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int recent_ref_frame_usage[MAX_REF_FRAMES]; 538893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 539893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int count_mb_ref_frame_usage[MAX_REF_FRAMES]; 540893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int this_frame_percent_intra; 541893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int last_frame_percent_intra; 542893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 543893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int last_key_frame_q; 544893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int last_kffilt_lvl; 545893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 546893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int ref_frame_flags; 547893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 548893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project SPEED_FEATURES sf; 549893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int error_bins[1024]; 550893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 551893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int inter_lvl; 552893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int intra_lvl; 553893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int motion_lvl; 554893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int motion_speed; 555893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int motion_var; 556893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int next_iiratio; 557893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int this_iiratio; 558893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int this_frame_modified_error; 559893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 560893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double norm_intra_err_per_mb; 561893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double norm_inter_err_per_mb; 562893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double norm_iidiff_per_mb; 563893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 564893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int last_best_mode_index; // Record of mode index chosen for previous macro block. 565893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int last_auto_filt_val; 566893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int last_auto_filt_q; 567893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 568893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project // Data used for real time conferencing mode to help determine if it would be good to update the gf 569893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int inter_zz_count; 570893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int gf_bad_count; 571893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int gf_update_recommended; 572893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int skip_true_count; 573893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int skip_false_count; 574893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 575893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int alt_qcount; 576893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 577893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int ready_for_new_frame; 578893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 579893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned char *segmentation_map; 580893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project signed char segment_feature_data[MB_LVL_MAX][MAX_MB_SEGMENTS]; // Segment data (can be deltas or absolute values) 581893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int segment_encode_breakout[MAX_MB_SEGMENTS]; // segment threashold for encode breakout 582893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 583893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned char *active_map; 584893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int active_map_enabled; 585893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project // Video conferencing cyclic refresh mode flags etc 586893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project // This is a mode designed to clean up the background over time in live encoding scenarious. It uses segmentation 587893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int cyclic_refresh_mode_enabled; 588893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int cyclic_refresh_mode_max_mbs_perframe; 589893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int cyclic_refresh_mode_index; 590893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int cyclic_refresh_q; 591893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project signed char *cyclic_refresh_map; 592893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 593893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#if CONFIG_MULTITHREAD 594893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project // multithread data 595893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int * mt_current_mb_col; 596893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int mt_sync_range; 597893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int processor_core_count; 598893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int b_multi_threaded; 599893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int encoding_thread_count; 600893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 601893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project pthread_t *h_encoding_thread; 602893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project pthread_t h_filter_thread; 603893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 604893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project MB_ROW_COMP *mb_row_ei; 605893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ENCODETHREAD_DATA *en_thread_data; 606893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project LPFTHREAD_DATA lpf_thread_data; 607893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 608893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project //events 609893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project sem_t *h_event_start_encoding; 610893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project sem_t h_event_end_encoding; 611893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project sem_t h_event_start_lpf; 612893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project sem_t h_event_end_lpf; 613893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#endif 614893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 615893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project TOKENLIST *tplist; 616893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project // end of multithread data 617893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 618893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 619893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fractional_mv_step_fp *find_fractional_mv_step; 620893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project vp8_full_search_fn_t full_search_sad; 621893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project vp8_diamond_search_fn_t diamond_search_sad; 622893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project vp8_variance_fn_ptr_t fn_ptr[BLOCK_MAX_SEGMENTS]; 623893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int time_receive_data; 624893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int time_compress_data; 625893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int time_pick_lpf; 626893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int time_encode_mb_row; 627893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 628893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int tempdata1; 629893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int tempdata2; 630893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 631893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int base_skip_false_prob[128]; 632893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int section_intra_rating; 633893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 634893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double section_max_qfactor; 635893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 636893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 637893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#if CONFIG_RUNTIME_CPU_DETECT 638893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project VP8_ENCODER_RTCD rtcd; 639893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#endif 640893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#if VP8_TEMPORAL_ALT_REF 641893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project SOURCE_SAMPLE alt_ref_buffer; 642893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project YV12_BUFFER_CONFIG *frames[MAX_LAG_BUFFERS]; 643893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int fixed_divide[512]; 644893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#endif 645893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 646893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#if CONFIG_PSNR 647893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int count; 648893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double total_y; 649893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double total_u; 650893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double total_v; 651893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double total ; 652893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double total_sq_error; 653893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double totalp_y; 654893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double totalp_u; 655893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double totalp_v; 656893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double totalp; 657893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double total_sq_error2; 658893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int bytes; 659893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double summed_quality; 660893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double summed_weights; 661893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned int tot_recode_hits; 662893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 663893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 664893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double total_ssimg_y; 665893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double total_ssimg_u; 666893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double total_ssimg_v; 667893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project double total_ssimg_all; 668893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 669893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int b_calculate_ssimg; 670893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#endif 671893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int b_calculate_psnr; 672893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 673893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 674893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project unsigned char *gf_active_flags; // Record of which MBs still refer to last golden frame either directly or through 0,0 675893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int gf_active_count; 676893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 677893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project //Store last frame's MV info for next frame MV prediction 678893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int_mv *lfmv; 679893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int *lf_ref_frame_sign_bias; 680893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int *lf_ref_frame; 681893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 682893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#if CONFIG_REALTIME_ONLY 683893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project int force_next_frame_intra; /* force next frame to intra when kf_auto says so */ 684893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#endif 685893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} VP8_COMP; 686893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 687893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectvoid control_data_rate(VP8_COMP *cpi); 688893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 689893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectvoid vp8_encode_frame(VP8_COMP *cpi); 690893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 691893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectvoid vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned long *size); 692893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 693893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectunsigned int vp8_activity_masking(VP8_COMP *cpi, MACROBLOCK *x); 694893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 695893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectint rd_cost_intra_mb(MACROBLOCKD *x); 696893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 697893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectvoid vp8_tokenize_mb(VP8_COMP *, MACROBLOCKD *, TOKENEXTRA **); 698893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 699893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectvoid vp8_set_speed_features(VP8_COMP *cpi); 700893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 701893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#if CONFIG_DEBUG 702893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#define CHECK_MEM_ERROR(lval,expr) do {\ 703893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project lval = (expr); \ 704893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if(!lval) \ 705893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project vpx_internal_error(&cpi->common.error, VPX_CODEC_MEM_ERROR,\ 706893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project "Failed to allocate "#lval" at %s:%d", \ 707893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project __FILE__,__LINE__);\ 708893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project } while(0) 709893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#else 710893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#define CHECK_MEM_ERROR(lval,expr) do {\ 711893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project lval = (expr); \ 712893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if(!lval) \ 713893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project vpx_internal_error(&cpi->common.error, VPX_CODEC_MEM_ERROR,\ 714893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project "Failed to allocate "#lval);\ 715893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project } while(0) 716893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#endif 717893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project#endif 718893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project