11b362b15af34006e6a11974088a46d42b903418eJohann/* 21b362b15af34006e6a11974088a46d42b903418eJohann * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 31b362b15af34006e6a11974088a46d42b903418eJohann * 41b362b15af34006e6a11974088a46d42b903418eJohann * Use of this source code is governed by a BSD-style license 51b362b15af34006e6a11974088a46d42b903418eJohann * that can be found in the LICENSE file in the root of the source 61b362b15af34006e6a11974088a46d42b903418eJohann * tree. An additional intellectual property rights grant can be found 71b362b15af34006e6a11974088a46d42b903418eJohann * in the file PATENTS. All contributing project authors may 81b362b15af34006e6a11974088a46d42b903418eJohann * be found in the AUTHORS file in the root of the source tree. 91b362b15af34006e6a11974088a46d42b903418eJohann */ 101b362b15af34006e6a11974088a46d42b903418eJohann 111b362b15af34006e6a11974088a46d42b903418eJohann 122ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian#ifndef VP8_COMMON_ONYX_H_ 132ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian#define VP8_COMMON_ONYX_H_ 141b362b15af34006e6a11974088a46d42b903418eJohann 151b362b15af34006e6a11974088a46d42b903418eJohann#ifdef __cplusplus 161b362b15af34006e6a11974088a46d42b903418eJohannextern "C" 171b362b15af34006e6a11974088a46d42b903418eJohann{ 181b362b15af34006e6a11974088a46d42b903418eJohann#endif 191b362b15af34006e6a11974088a46d42b903418eJohann 201b362b15af34006e6a11974088a46d42b903418eJohann#include "vpx_config.h" 211b362b15af34006e6a11974088a46d42b903418eJohann#include "vpx/internal/vpx_codec_internal.h" 221b362b15af34006e6a11974088a46d42b903418eJohann#include "vpx/vp8cx.h" 231b362b15af34006e6a11974088a46d42b903418eJohann#include "vpx/vpx_encoder.h" 241b362b15af34006e6a11974088a46d42b903418eJohann#include "vpx_scale/yv12config.h" 251b362b15af34006e6a11974088a46d42b903418eJohann#include "ppflags.h" 261b362b15af34006e6a11974088a46d42b903418eJohann 271b362b15af34006e6a11974088a46d42b903418eJohann struct VP8_COMP; 281b362b15af34006e6a11974088a46d42b903418eJohann 291b362b15af34006e6a11974088a46d42b903418eJohann /* Create/destroy static data structures. */ 301b362b15af34006e6a11974088a46d42b903418eJohann 311b362b15af34006e6a11974088a46d42b903418eJohann typedef enum 321b362b15af34006e6a11974088a46d42b903418eJohann { 331b362b15af34006e6a11974088a46d42b903418eJohann NORMAL = 0, 341b362b15af34006e6a11974088a46d42b903418eJohann FOURFIVE = 1, 351b362b15af34006e6a11974088a46d42b903418eJohann THREEFIVE = 2, 361b362b15af34006e6a11974088a46d42b903418eJohann ONETWO = 3 371b362b15af34006e6a11974088a46d42b903418eJohann 381b362b15af34006e6a11974088a46d42b903418eJohann } VPX_SCALING; 391b362b15af34006e6a11974088a46d42b903418eJohann 401b362b15af34006e6a11974088a46d42b903418eJohann typedef enum 411b362b15af34006e6a11974088a46d42b903418eJohann { 422ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian USAGE_LOCAL_FILE_PLAYBACK = 0x0, 432ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian USAGE_STREAM_FROM_SERVER = 0x1, 441184aebb761cbeac9124c37189a80a1a58f04b6bhkuang USAGE_CONSTRAINED_QUALITY = 0x2, 451184aebb761cbeac9124c37189a80a1a58f04b6bhkuang USAGE_CONSTANT_QUALITY = 0x3 461b362b15af34006e6a11974088a46d42b903418eJohann } END_USAGE; 471b362b15af34006e6a11974088a46d42b903418eJohann 481b362b15af34006e6a11974088a46d42b903418eJohann 491b362b15af34006e6a11974088a46d42b903418eJohann typedef enum 501b362b15af34006e6a11974088a46d42b903418eJohann { 511b362b15af34006e6a11974088a46d42b903418eJohann MODE_REALTIME = 0x0, 521b362b15af34006e6a11974088a46d42b903418eJohann MODE_GOODQUALITY = 0x1, 531b362b15af34006e6a11974088a46d42b903418eJohann MODE_BESTQUALITY = 0x2, 541b362b15af34006e6a11974088a46d42b903418eJohann MODE_FIRSTPASS = 0x3, 551b362b15af34006e6a11974088a46d42b903418eJohann MODE_SECONDPASS = 0x4, 561b362b15af34006e6a11974088a46d42b903418eJohann MODE_SECONDPASS_BEST = 0x5 571b362b15af34006e6a11974088a46d42b903418eJohann } MODE; 581b362b15af34006e6a11974088a46d42b903418eJohann 591b362b15af34006e6a11974088a46d42b903418eJohann typedef enum 601b362b15af34006e6a11974088a46d42b903418eJohann { 611b362b15af34006e6a11974088a46d42b903418eJohann FRAMEFLAGS_KEY = 1, 621b362b15af34006e6a11974088a46d42b903418eJohann FRAMEFLAGS_GOLDEN = 2, 631b362b15af34006e6a11974088a46d42b903418eJohann FRAMEFLAGS_ALTREF = 4 641b362b15af34006e6a11974088a46d42b903418eJohann } FRAMETYPE_FLAGS; 651b362b15af34006e6a11974088a46d42b903418eJohann 661b362b15af34006e6a11974088a46d42b903418eJohann 671b362b15af34006e6a11974088a46d42b903418eJohann#include <assert.h> 682263fc984bdc858ee931d3e35c87c404de923950Johann static INLINE void Scale2Ratio(int mode, int *hr, int *hs) 691b362b15af34006e6a11974088a46d42b903418eJohann { 701b362b15af34006e6a11974088a46d42b903418eJohann switch (mode) 711b362b15af34006e6a11974088a46d42b903418eJohann { 721b362b15af34006e6a11974088a46d42b903418eJohann case NORMAL: 731b362b15af34006e6a11974088a46d42b903418eJohann *hr = 1; 741b362b15af34006e6a11974088a46d42b903418eJohann *hs = 1; 751b362b15af34006e6a11974088a46d42b903418eJohann break; 761b362b15af34006e6a11974088a46d42b903418eJohann case FOURFIVE: 771b362b15af34006e6a11974088a46d42b903418eJohann *hr = 4; 781b362b15af34006e6a11974088a46d42b903418eJohann *hs = 5; 791b362b15af34006e6a11974088a46d42b903418eJohann break; 801b362b15af34006e6a11974088a46d42b903418eJohann case THREEFIVE: 811b362b15af34006e6a11974088a46d42b903418eJohann *hr = 3; 821b362b15af34006e6a11974088a46d42b903418eJohann *hs = 5; 831b362b15af34006e6a11974088a46d42b903418eJohann break; 841b362b15af34006e6a11974088a46d42b903418eJohann case ONETWO: 851b362b15af34006e6a11974088a46d42b903418eJohann *hr = 1; 861b362b15af34006e6a11974088a46d42b903418eJohann *hs = 2; 871b362b15af34006e6a11974088a46d42b903418eJohann break; 881b362b15af34006e6a11974088a46d42b903418eJohann default: 891b362b15af34006e6a11974088a46d42b903418eJohann *hr = 1; 901b362b15af34006e6a11974088a46d42b903418eJohann *hs = 1; 911b362b15af34006e6a11974088a46d42b903418eJohann assert(0); 921b362b15af34006e6a11974088a46d42b903418eJohann break; 931b362b15af34006e6a11974088a46d42b903418eJohann } 941b362b15af34006e6a11974088a46d42b903418eJohann } 951b362b15af34006e6a11974088a46d42b903418eJohann 961b362b15af34006e6a11974088a46d42b903418eJohann typedef struct 971b362b15af34006e6a11974088a46d42b903418eJohann { 981b362b15af34006e6a11974088a46d42b903418eJohann /* 4 versions of bitstream defined: 991b362b15af34006e6a11974088a46d42b903418eJohann * 0 best quality/slowest decode, 3 lowest quality/fastest decode 1001b362b15af34006e6a11974088a46d42b903418eJohann */ 1011b362b15af34006e6a11974088a46d42b903418eJohann int Version; 1021b362b15af34006e6a11974088a46d42b903418eJohann int Width; 1031b362b15af34006e6a11974088a46d42b903418eJohann int Height; 1041b362b15af34006e6a11974088a46d42b903418eJohann struct vpx_rational timebase; 1051b362b15af34006e6a11974088a46d42b903418eJohann unsigned int target_bandwidth; /* kilobits per second */ 1061b362b15af34006e6a11974088a46d42b903418eJohann 107ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian /* Parameter used for applying denoiser. 108ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * For temporal denoiser: noise_sensitivity = 0 means off, 109ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * noise_sensitivity = 1 means temporal denoiser on for Y channel only, 110ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * noise_sensitivity = 2 means temporal denoiser on for all channels. 111da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * noise_sensitivity = 3 means aggressive denoising mode. 112da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * noise_sensitivity >= 4 means adaptive denoising mode. 113ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * Temporal denoiser is enabled via the configuration option: 114ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * CONFIG_TEMPORAL_DENOISING. 115ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * For spatial denoiser: noise_sensitivity controls the amount of 116ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * pre-processing blur: noise_sensitivity = 0 means off. 117ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian * Spatial denoiser invoked under !CONFIG_TEMPORAL_DENOISING. 118ba6c59e9d7d7013b3906b6f4230b663422681848Vignesh Venkatasubramanian */ 1191b362b15af34006e6a11974088a46d42b903418eJohann int noise_sensitivity; 1201b362b15af34006e6a11974088a46d42b903418eJohann 1211b362b15af34006e6a11974088a46d42b903418eJohann /* parameter used for sharpening output: recommendation 0: */ 1221b362b15af34006e6a11974088a46d42b903418eJohann int Sharpness; 1231b362b15af34006e6a11974088a46d42b903418eJohann int cpu_used; 1241b362b15af34006e6a11974088a46d42b903418eJohann unsigned int rc_max_intra_bitrate_pct; 125da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian unsigned int screen_content_mode; 1261b362b15af34006e6a11974088a46d42b903418eJohann 1271b362b15af34006e6a11974088a46d42b903418eJohann /* mode -> 1281b362b15af34006e6a11974088a46d42b903418eJohann *(0)=Realtime/Live Encoding. This mode is optimized for realtim 1291b362b15af34006e6a11974088a46d42b903418eJohann * encoding (for example, capturing a television signal or feed 1301b362b15af34006e6a11974088a46d42b903418eJohann * from a live camera). ( speed setting controls how fast ) 1311b362b15af34006e6a11974088a46d42b903418eJohann *(1)=Good Quality Fast Encoding. The encoder balances quality with 1321b362b15af34006e6a11974088a46d42b903418eJohann * the amount of time it takes to encode the output. ( speed 1331b362b15af34006e6a11974088a46d42b903418eJohann * setting controls how fast ) 1341b362b15af34006e6a11974088a46d42b903418eJohann *(2)=One Pass - Best Quality. The encoder places priority on the 1351b362b15af34006e6a11974088a46d42b903418eJohann * quality of the output over encoding speed. The output is 1361b362b15af34006e6a11974088a46d42b903418eJohann * compressed at the highest possible quality. This option takes 1371b362b15af34006e6a11974088a46d42b903418eJohann * the longest amount of time to encode. ( speed setting ignored 1381b362b15af34006e6a11974088a46d42b903418eJohann * ) 1391b362b15af34006e6a11974088a46d42b903418eJohann *(3)=Two Pass - First Pass. The encoder generates a file of 1401b362b15af34006e6a11974088a46d42b903418eJohann * statistics for use in the second encoding pass. ( speed 1411b362b15af34006e6a11974088a46d42b903418eJohann * setting controls how fast ) 1421b362b15af34006e6a11974088a46d42b903418eJohann *(4)=Two Pass - Second Pass. The encoder uses the statistics that 1431b362b15af34006e6a11974088a46d42b903418eJohann * were generated in the first encoding pass to create the 1441b362b15af34006e6a11974088a46d42b903418eJohann * compressed output. ( speed setting controls how fast ) 1451b362b15af34006e6a11974088a46d42b903418eJohann *(5)=Two Pass - Second Pass Best. The encoder uses the statistics 1461b362b15af34006e6a11974088a46d42b903418eJohann * that were generated in the first encoding pass to create the 1471b362b15af34006e6a11974088a46d42b903418eJohann * compressed output using the highest possible quality, and 1481b362b15af34006e6a11974088a46d42b903418eJohann * taking a longer amount of time to encode.. ( speed setting 1491b362b15af34006e6a11974088a46d42b903418eJohann * ignored ) 1501b362b15af34006e6a11974088a46d42b903418eJohann */ 1511b362b15af34006e6a11974088a46d42b903418eJohann int Mode; 1521b362b15af34006e6a11974088a46d42b903418eJohann 1531b362b15af34006e6a11974088a46d42b903418eJohann /* Key Framing Operations */ 1541b362b15af34006e6a11974088a46d42b903418eJohann int auto_key; /* automatically detect cut scenes */ 1551b362b15af34006e6a11974088a46d42b903418eJohann int key_freq; /* maximum distance to key frame. */ 1561b362b15af34006e6a11974088a46d42b903418eJohann 1571b362b15af34006e6a11974088a46d42b903418eJohann /* lagged compression (if allow_lag == 0 lag_in_frames is ignored) */ 1581b362b15af34006e6a11974088a46d42b903418eJohann int allow_lag; 1591b362b15af34006e6a11974088a46d42b903418eJohann int lag_in_frames; /* how many frames lag before we start encoding */ 1601b362b15af34006e6a11974088a46d42b903418eJohann 1611b362b15af34006e6a11974088a46d42b903418eJohann /* 1621b362b15af34006e6a11974088a46d42b903418eJohann * DATARATE CONTROL OPTIONS 1631b362b15af34006e6a11974088a46d42b903418eJohann */ 1641b362b15af34006e6a11974088a46d42b903418eJohann 1651b362b15af34006e6a11974088a46d42b903418eJohann int end_usage; /* vbr or cbr */ 1661b362b15af34006e6a11974088a46d42b903418eJohann 1671b362b15af34006e6a11974088a46d42b903418eJohann /* buffer targeting aggressiveness */ 1681b362b15af34006e6a11974088a46d42b903418eJohann int under_shoot_pct; 1691b362b15af34006e6a11974088a46d42b903418eJohann int over_shoot_pct; 1701b362b15af34006e6a11974088a46d42b903418eJohann 1711b362b15af34006e6a11974088a46d42b903418eJohann /* buffering parameters */ 1721b362b15af34006e6a11974088a46d42b903418eJohann int64_t starting_buffer_level; 1731b362b15af34006e6a11974088a46d42b903418eJohann int64_t optimal_buffer_level; 1741b362b15af34006e6a11974088a46d42b903418eJohann int64_t maximum_buffer_size; 1751b362b15af34006e6a11974088a46d42b903418eJohann 1761b362b15af34006e6a11974088a46d42b903418eJohann int64_t starting_buffer_level_in_ms; 1771b362b15af34006e6a11974088a46d42b903418eJohann int64_t optimal_buffer_level_in_ms; 1781b362b15af34006e6a11974088a46d42b903418eJohann int64_t maximum_buffer_size_in_ms; 1791b362b15af34006e6a11974088a46d42b903418eJohann 1801b362b15af34006e6a11974088a46d42b903418eJohann /* controlling quality */ 1811b362b15af34006e6a11974088a46d42b903418eJohann int fixed_q; 1821b362b15af34006e6a11974088a46d42b903418eJohann int worst_allowed_q; 1831b362b15af34006e6a11974088a46d42b903418eJohann int best_allowed_q; 1841b362b15af34006e6a11974088a46d42b903418eJohann int cq_level; 1851b362b15af34006e6a11974088a46d42b903418eJohann 1861b362b15af34006e6a11974088a46d42b903418eJohann /* allow internal resizing */ 1871b362b15af34006e6a11974088a46d42b903418eJohann int allow_spatial_resampling; 1881b362b15af34006e6a11974088a46d42b903418eJohann int resample_down_water_mark; 1891b362b15af34006e6a11974088a46d42b903418eJohann int resample_up_water_mark; 1901b362b15af34006e6a11974088a46d42b903418eJohann 1911b362b15af34006e6a11974088a46d42b903418eJohann /* allow internal frame rate alterations */ 1921b362b15af34006e6a11974088a46d42b903418eJohann int allow_df; 1931b362b15af34006e6a11974088a46d42b903418eJohann int drop_frames_water_mark; 1941b362b15af34006e6a11974088a46d42b903418eJohann 1951b362b15af34006e6a11974088a46d42b903418eJohann /* two pass datarate control */ 1961b362b15af34006e6a11974088a46d42b903418eJohann int two_pass_vbrbias; 1971b362b15af34006e6a11974088a46d42b903418eJohann int two_pass_vbrmin_section; 1981b362b15af34006e6a11974088a46d42b903418eJohann int two_pass_vbrmax_section; 1991b362b15af34006e6a11974088a46d42b903418eJohann 2001b362b15af34006e6a11974088a46d42b903418eJohann /* 2011b362b15af34006e6a11974088a46d42b903418eJohann * END DATARATE CONTROL OPTIONS 2021b362b15af34006e6a11974088a46d42b903418eJohann */ 2031b362b15af34006e6a11974088a46d42b903418eJohann 2041b362b15af34006e6a11974088a46d42b903418eJohann /* these parameters aren't to be used in final build don't use!!! */ 2051b362b15af34006e6a11974088a46d42b903418eJohann int play_alternate; 2061b362b15af34006e6a11974088a46d42b903418eJohann int alt_freq; 2071b362b15af34006e6a11974088a46d42b903418eJohann int alt_q; 2081b362b15af34006e6a11974088a46d42b903418eJohann int key_q; 2091b362b15af34006e6a11974088a46d42b903418eJohann int gold_q; 2101b362b15af34006e6a11974088a46d42b903418eJohann 2111b362b15af34006e6a11974088a46d42b903418eJohann 2121b362b15af34006e6a11974088a46d42b903418eJohann int multi_threaded; /* how many threads to run the encoder on */ 2131b362b15af34006e6a11974088a46d42b903418eJohann int token_partitions; /* how many token partitions to create */ 2141b362b15af34006e6a11974088a46d42b903418eJohann 2151b362b15af34006e6a11974088a46d42b903418eJohann /* early breakout threshold: for video conf recommend 800 */ 2161b362b15af34006e6a11974088a46d42b903418eJohann int encode_breakout; 2171b362b15af34006e6a11974088a46d42b903418eJohann 2181b362b15af34006e6a11974088a46d42b903418eJohann /* Bitfield defining the error resiliency features to enable. 2191b362b15af34006e6a11974088a46d42b903418eJohann * Can provide decodable frames after losses in previous 2201b362b15af34006e6a11974088a46d42b903418eJohann * frames and decodable partitions after losses in the same frame. 2211b362b15af34006e6a11974088a46d42b903418eJohann */ 2221b362b15af34006e6a11974088a46d42b903418eJohann unsigned int error_resilient_mode; 2231b362b15af34006e6a11974088a46d42b903418eJohann 2241b362b15af34006e6a11974088a46d42b903418eJohann int arnr_max_frames; 2251b362b15af34006e6a11974088a46d42b903418eJohann int arnr_strength; 2261b362b15af34006e6a11974088a46d42b903418eJohann int arnr_type; 2271b362b15af34006e6a11974088a46d42b903418eJohann 228da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian vpx_fixed_buf_t two_pass_stats_in; 2291b362b15af34006e6a11974088a46d42b903418eJohann struct vpx_codec_pkt_list *output_pkt_list; 2301b362b15af34006e6a11974088a46d42b903418eJohann 2311b362b15af34006e6a11974088a46d42b903418eJohann vp8e_tuning tuning; 2321b362b15af34006e6a11974088a46d42b903418eJohann 2331b362b15af34006e6a11974088a46d42b903418eJohann /* Temporal scaling parameters */ 2341b362b15af34006e6a11974088a46d42b903418eJohann unsigned int number_of_layers; 2351b362b15af34006e6a11974088a46d42b903418eJohann unsigned int target_bitrate[VPX_TS_MAX_PERIODICITY]; 2361b362b15af34006e6a11974088a46d42b903418eJohann unsigned int rate_decimator[VPX_TS_MAX_PERIODICITY]; 2371b362b15af34006e6a11974088a46d42b903418eJohann unsigned int periodicity; 2381b362b15af34006e6a11974088a46d42b903418eJohann unsigned int layer_id[VPX_TS_MAX_PERIODICITY]; 2391b362b15af34006e6a11974088a46d42b903418eJohann 2401b362b15af34006e6a11974088a46d42b903418eJohann#if CONFIG_MULTI_RES_ENCODING 2411b362b15af34006e6a11974088a46d42b903418eJohann /* Number of total resolutions encoded */ 2421b362b15af34006e6a11974088a46d42b903418eJohann unsigned int mr_total_resolutions; 2431b362b15af34006e6a11974088a46d42b903418eJohann 2441b362b15af34006e6a11974088a46d42b903418eJohann /* Current encoder ID */ 2451b362b15af34006e6a11974088a46d42b903418eJohann unsigned int mr_encoder_id; 2461b362b15af34006e6a11974088a46d42b903418eJohann 2471b362b15af34006e6a11974088a46d42b903418eJohann /* Down-sampling factor */ 2481b362b15af34006e6a11974088a46d42b903418eJohann vpx_rational_t mr_down_sampling_factor; 2491b362b15af34006e6a11974088a46d42b903418eJohann 2501b362b15af34006e6a11974088a46d42b903418eJohann /* Memory location to store low-resolution encoder's mode info */ 2511b362b15af34006e6a11974088a46d42b903418eJohann void* mr_low_res_mode_info; 2521b362b15af34006e6a11974088a46d42b903418eJohann#endif 2531b362b15af34006e6a11974088a46d42b903418eJohann } VP8_CONFIG; 2541b362b15af34006e6a11974088a46d42b903418eJohann 2551b362b15af34006e6a11974088a46d42b903418eJohann 2561b362b15af34006e6a11974088a46d42b903418eJohann void vp8_initialize(); 2571b362b15af34006e6a11974088a46d42b903418eJohann 2581b362b15af34006e6a11974088a46d42b903418eJohann struct VP8_COMP* vp8_create_compressor(VP8_CONFIG *oxcf); 2591b362b15af34006e6a11974088a46d42b903418eJohann void vp8_remove_compressor(struct VP8_COMP* *comp); 2601b362b15af34006e6a11974088a46d42b903418eJohann 2611b362b15af34006e6a11974088a46d42b903418eJohann void vp8_init_config(struct VP8_COMP* onyx, VP8_CONFIG *oxcf); 2621b362b15af34006e6a11974088a46d42b903418eJohann void vp8_change_config(struct VP8_COMP* onyx, VP8_CONFIG *oxcf); 2631b362b15af34006e6a11974088a46d42b903418eJohann 2641b362b15af34006e6a11974088a46d42b903418eJohann int vp8_receive_raw_frame(struct VP8_COMP* comp, unsigned int frame_flags, YV12_BUFFER_CONFIG *sd, int64_t time_stamp, int64_t end_time_stamp); 2651b362b15af34006e6a11974088a46d42b903418eJohann int vp8_get_compressed_data(struct VP8_COMP* comp, unsigned int *frame_flags, unsigned long *size, unsigned char *dest, unsigned char *dest_end, int64_t *time_stamp, int64_t *time_end, int flush); 2661b362b15af34006e6a11974088a46d42b903418eJohann int vp8_get_preview_raw_frame(struct VP8_COMP* comp, YV12_BUFFER_CONFIG *dest, vp8_ppflags_t *flags); 2671b362b15af34006e6a11974088a46d42b903418eJohann 2681b362b15af34006e6a11974088a46d42b903418eJohann int vp8_use_as_reference(struct VP8_COMP* comp, int ref_frame_flags); 2691b362b15af34006e6a11974088a46d42b903418eJohann int vp8_update_reference(struct VP8_COMP* comp, int ref_frame_flags); 2701b362b15af34006e6a11974088a46d42b903418eJohann int vp8_get_reference(struct VP8_COMP* comp, enum vpx_ref_frame_type ref_frame_flag, YV12_BUFFER_CONFIG *sd); 2711b362b15af34006e6a11974088a46d42b903418eJohann int vp8_set_reference(struct VP8_COMP* comp, enum vpx_ref_frame_type ref_frame_flag, YV12_BUFFER_CONFIG *sd); 2721b362b15af34006e6a11974088a46d42b903418eJohann int vp8_update_entropy(struct VP8_COMP* comp, int update); 2731b362b15af34006e6a11974088a46d42b903418eJohann int vp8_set_roimap(struct VP8_COMP* comp, unsigned char *map, unsigned int rows, unsigned int cols, int delta_q[4], int delta_lf[4], unsigned int threshold[4]); 2741b362b15af34006e6a11974088a46d42b903418eJohann int vp8_set_active_map(struct VP8_COMP* comp, unsigned char *map, unsigned int rows, unsigned int cols); 2751b362b15af34006e6a11974088a46d42b903418eJohann int vp8_set_internal_size(struct VP8_COMP* comp, VPX_SCALING horiz_mode, VPX_SCALING vert_mode); 2761b362b15af34006e6a11974088a46d42b903418eJohann int vp8_get_quantizer(struct VP8_COMP* c); 2771b362b15af34006e6a11974088a46d42b903418eJohann 2781b362b15af34006e6a11974088a46d42b903418eJohann#ifdef __cplusplus 2791b362b15af34006e6a11974088a46d42b903418eJohann} 2801b362b15af34006e6a11974088a46d42b903418eJohann#endif 2811b362b15af34006e6a11974088a46d42b903418eJohann 2822ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian#endif // VP8_COMMON_ONYX_H_ 283