190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber/* 2f71323e297a928af368937089d3ed71239786f86Andreas Huber * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * 4f71323e297a928af368937089d3ed71239786f86Andreas Huber * Use of this source code is governed by a BSD-style license 5f71323e297a928af368937089d3ed71239786f86Andreas Huber * that can be found in the LICENSE file in the root of the source 6f71323e297a928af368937089d3ed71239786f86Andreas Huber * tree. An additional intellectual property rights grant can be found 7f71323e297a928af368937089d3ed71239786f86Andreas Huber * in the file PATENTS. All contributing project authors may 8f71323e297a928af368937089d3ed71239786f86Andreas Huber * be found in the AUTHORS file in the root of the source tree. 990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber */ 1090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#ifndef __INC_VP8_H 1390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#define __INC_VP8_H 1490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#ifdef __cplusplus 1690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern "C" 1790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber{ 1890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#endif 1990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 20f71323e297a928af368937089d3ed71239786f86Andreas Huber#include "vpx/internal/vpx_codec_internal.h" 2179f15823c34ae1e423108295e416213200bb280fAndreas Huber#include "vpx/vp8cx.h" 2290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "vpx_scale/yv12config.h" 2390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "type_aliases.h" 2490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "ppflags.h" 2590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber typedef int *VP8_PTR; 2690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 2790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber /* Create/destroy static data structures. */ 2890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 2990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber typedef enum 3090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 3190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber NORMAL = 0, 3290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber FOURFIVE = 1, 3390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber THREEFIVE = 2, 3490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ONETWO = 3 3590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 3690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } VPX_SCALING; 3790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 3890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber typedef enum 3990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 4090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber VP8_LAST_FLAG = 1, 4190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber VP8_GOLD_FLAG = 2, 4290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber VP8_ALT_FLAG = 4 4390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } VP8_REFFRAME; 4490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber typedef enum 4790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 4890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber USAGE_STREAM_FROM_SERVER = 0x0, 4979f15823c34ae1e423108295e416213200bb280fAndreas Huber USAGE_LOCAL_FILE_PLAYBACK = 0x1, 5079f15823c34ae1e423108295e416213200bb280fAndreas Huber USAGE_CONSTRAINED_QUALITY = 0x2 5190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } END_USAGE; 5290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber typedef enum 5590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 5690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber MODE_REALTIME = 0x0, 5790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber MODE_GOODQUALITY = 0x1, 5890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber MODE_BESTQUALITY = 0x2, 5990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber MODE_FIRSTPASS = 0x3, 6090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber MODE_SECONDPASS = 0x4, 6190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber MODE_SECONDPASS_BEST = 0x5, 6290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } MODE; 6390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 6490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber typedef enum 6590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 6690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber FRAMEFLAGS_KEY = 1, 6790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber FRAMEFLAGS_GOLDEN = 2, 6890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber FRAMEFLAGS_ALTREF = 4, 6990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } FRAMETYPE_FLAGS; 7090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 7190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 7290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include <assert.h> 7390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber static __inline void Scale2Ratio(int mode, int *hr, int *hs) 7490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 7590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber switch (mode) 7690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 7790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case NORMAL: 7890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *hr = 1; 7990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *hs = 1; 8090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber break; 8190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case FOURFIVE: 8290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *hr = 4; 8390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *hs = 5; 8490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber break; 8590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case THREEFIVE: 8690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *hr = 3; 8790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *hs = 5; 8890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber break; 8990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case ONETWO: 9090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *hr = 1; 9190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *hs = 2; 9290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber break; 9390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber default: 9490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *hr = 1; 9590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *hs = 1; 9690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber assert(0); 9790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber break; 9890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 9990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 10090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber typedef struct 10290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 10390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int Version; // 4 versions of bitstream defined 0 best quality/slowest decode, 3 lowest quality/fastest decode 10490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int Width; // width of data passed to the compressor 10590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int Height; // height of data passed to the compressor 10690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber double frame_rate; // set to passed in framerate 10790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int target_bandwidth; // bandwidth to be used in kilobits per second 10890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int noise_sensitivity; // parameter used for applying pre processing blur: recommendation 0 11090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int Sharpness; // parameter used for sharpening output: recommendation 0: 11190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int cpu_used; 11290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 11390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // mode -> 11490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber //(0)=Realtime/Live Encoding. This mode is optimized for realtim encoding (for example, capturing 11590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // a television signal or feed from a live camera). ( speed setting controls how fast ) 11690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber //(1)=Good Quality Fast Encoding. The encoder balances quality with the amount of time it takes to 11790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // encode the output. ( speed setting controls how fast ) 11890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber //(2)=One Pass - Best Quality. The encoder places priority on the quality of the output over encoding 11990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // speed. The output is compressed at the highest possible quality. This option takes the longest 12090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // amount of time to encode. ( speed setting ignored ) 12190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber //(3)=Two Pass - First Pass. The encoder generates a file of statistics for use in the second encoding 12290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // pass. ( speed setting controls how fast ) 12390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber //(4)=Two Pass - Second Pass. The encoder uses the statistics that were generated in the first encoding 12490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // pass to create the compressed output. ( speed setting controls how fast ) 12590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber //(5)=Two Pass - Second Pass Best. The encoder uses the statistics that were generated in the first 12690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // encoding pass to create the compressed output using the highest possible quality, and taking a 12790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // longer amount of time to encode.. ( speed setting ignored ) 12890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int Mode; // 12990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 13090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // Key Framing Operations 13190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int auto_key; // automatically detect cut scenes and set the keyframes 13290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int key_freq; // maximum distance to key frame. 13390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 13490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int allow_lag; // allow lagged compression (if 0 lagin frames is ignored) 13590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int lag_in_frames; // how many frames lag before we start encoding 13690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 13790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber //---------------------------------------------------------------- 13890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // DATARATE CONTROL OPTIONS 13990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 14090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int end_usage; // vbr or cbr 14190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 14290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // shoot to keep buffer full at all times by undershooting a bit 95 recommended 14390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int under_shoot_pct; 14490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 14590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // buffering parameters 14690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int starting_buffer_level; // in seconds 14790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int optimal_buffer_level; 14890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int maximum_buffer_size; 14990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 15090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // controlling quality 15190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int fixed_q; 15290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int worst_allowed_q; 15390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int best_allowed_q; 15479f15823c34ae1e423108295e416213200bb280fAndreas Huber int cq_level; 15590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 15690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // allow internal resizing ( currently disabled in the build !!!!!) 15790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int allow_spatial_resampling; 15890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int resample_down_water_mark; 15990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int resample_up_water_mark; 16090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 16190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // allow internal frame rate alterations 16290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int allow_df; 16390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int drop_frames_water_mark; 16490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 16590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // two pass datarate control 16690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int two_pass_vbrbias; // two pass datarate control tweaks 16790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int two_pass_vbrmin_section; 16890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int two_pass_vbrmax_section; 16990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // END DATARATE CONTROL OPTIONS 17090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber //---------------------------------------------------------------- 17190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 17290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 17390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // these parameters aren't to be used in final build don't use!!! 17490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int play_alternate; 17590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int alt_freq; 17690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int alt_q; 17790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int key_q; 17890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int gold_q; 17990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 18090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 18190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int multi_threaded; // how many threads to run the encoder on 18290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int token_partitions; // how many token partitions to create for multi core decoding 18390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int encode_breakout; // early breakout encode threshold : for video conf recommend 800 18490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 18590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int error_resilient_mode; // if running over udp networks provides decodable frames after a 18690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber // dropped packet 18790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 18890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int arnr_max_frames; 18990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int arnr_strength ; 19090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int arnr_type ; 19190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 19290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber struct vpx_fixed_buf two_pass_stats_in; 19390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber struct vpx_codec_pkt_list *output_pkt_list; 19479f15823c34ae1e423108295e416213200bb280fAndreas Huber 19579f15823c34ae1e423108295e416213200bb280fAndreas Huber vp8e_tuning tuning; 19690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } VP8_CONFIG; 19790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 19890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 19990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber void vp8_initialize(); 20090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 20190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber VP8_PTR vp8_create_compressor(VP8_CONFIG *oxcf); 20290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber void vp8_remove_compressor(VP8_PTR *comp); 20390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 20490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber void vp8_init_config(VP8_PTR onyx, VP8_CONFIG *oxcf); 20590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber void vp8_change_config(VP8_PTR onyx, VP8_CONFIG *oxcf); 20690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 20790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber// receive a frames worth of data caller can assume that a copy of this frame is made 20890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber// and not just a copy of the pointer.. 20990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int vp8_receive_raw_frame(VP8_PTR comp, unsigned int frame_flags, YV12_BUFFER_CONFIG *sd, INT64 time_stamp, INT64 end_time_stamp); 21090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int vp8_get_compressed_data(VP8_PTR comp, unsigned int *frame_flags, unsigned long *size, unsigned char *dest, INT64 *time_stamp, INT64 *time_end, int flush); 21179f15823c34ae1e423108295e416213200bb280fAndreas Huber int vp8_get_preview_raw_frame(VP8_PTR comp, YV12_BUFFER_CONFIG *dest, vp8_ppflags_t *flags); 21290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 21390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int vp8_use_as_reference(VP8_PTR comp, int ref_frame_flags); 21490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int vp8_update_reference(VP8_PTR comp, int ref_frame_flags); 21590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int vp8_get_reference(VP8_PTR comp, VP8_REFFRAME ref_frame_flag, YV12_BUFFER_CONFIG *sd); 21690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int vp8_set_reference(VP8_PTR comp, VP8_REFFRAME ref_frame_flag, YV12_BUFFER_CONFIG *sd); 21790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int vp8_update_entropy(VP8_PTR comp, int update); 21890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int vp8_set_roimap(VP8_PTR comp, unsigned char *map, unsigned int rows, unsigned int cols, int delta_q[4], int delta_lf[4], unsigned int threshold[4]); 21990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int vp8_set_active_map(VP8_PTR comp, unsigned char *map, unsigned int rows, unsigned int cols); 22090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int vp8_set_internal_size(VP8_PTR comp, VPX_SCALING horiz_mode, VPX_SCALING vert_mode); 22190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int vp8_get_quantizer(VP8_PTR c); 22290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 22390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#ifdef __cplusplus 22490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 22590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#endif 22690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 22790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#endif 228