1/* 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 12typedef struct core_codec *codec_ptr; 13typedef struct interface_table *interface_ptr; 14 15typedef struct 16{ 17 void (*Initialize)(); 18 void (*Shutdown)(); 19 codec_ptr(*Create)(); 20 int (*compress_frame)(codec_ptr, unsigned int *frame_flags, YV12_BUFFER_CONFIG *sd, unsigned long *size, char *dest, INT64 time_stamp); 21 int (*show_frame)(codec_ptr , YV12_BUFFER_CONFIG *dest, int deblock_level, int noise_level, int flags); 22 void (*Remove)(codec_ptr *comp); 23 interface_ptr(*get_interface)(unsigned int id); 24 25} core_codec; 26 27typedef struct 28{ 29 int (*set_bitrate)(codec_ptr, END_USAGE usage, int Datarate); 30 int (*get_bitrate)(codec_ptr, END_USAGE *usage, int *Datarate); 31 int (*set_mode)(codec_ptr, MODE mode, int Speed, char *File); 32 int (*get_mode)(codec_ptr, MODE *mode, int *Speed, char **File); 33} codec_settings_basic; 34 35typedef struct 36{ 37 int (*set_bitrate)(codec_ptr, END_USAGE usage, int Datarate); 38 int (*get_bitrate)(codec_ptr, END_USAGE *usage, int *Datarate); 39 int (*set_mode)(codec_ptr, MODE mode, int Speed, char *File); 40 int (*get_mode)(codec_ptr, MODE *mode, int *Speed, char **File); 41 int (*set_denoise)(codec_ptr, int Level); 42 int (*get_denoise)(codec_ptr, int *Level); 43 int (*set_sharpness)(codec_ptr, int sharpness); 44 int (*get_sharpness)(codec_ptr, int *sharpness); 45 int (*set_keyframing)(codec_ptr, int Auto, int max_distance); 46 int (*get_keyframing)(codec_ptr, int *Auto, int *max_distance); 47 int (*set_buffering)(codec_ptr, int buffer_level, int max_buffer_level); 48 int (*get_buffering)(codec_ptr, int *buffer_level, int *max_buffer_level); 49 int (*set_adjust_frame_rate)(codec_ptr, int Allowed, int at_buffer_level_pct); 50 int (*get_adjust_frame_rate)(codec_ptr, int *Allowed, int *at_buffer_level_pct); 51 int (*set_adjust_frame_size)(codec_ptr, int Allowed, int down_at_buffer_level_pct, int up_at_buffer_level_pct); 52 int (*get_adjust_frame_size)(codec_ptr, int *Allowed, int *down_at_buffer_level_pct, int *up_at_buffer_level_pct); 53 int (*set_adjust_quality)(codec_ptr, int Allowed, int min_quantizer, int max_quantizer); 54 int (*get_adjust_quality)(codec_ptr, int *Allowed, int *min_quantizer, int *max_quantizer); 55 int (*set_vbrparms)(codec_ptr, int Bias, int Min, int Max); 56 int (*get_vbrparms)(codec_ptr, int *Bias, int *Min, int *Max); 57 58} codec_settings_v1; 59 60typedef struct 61{ 62 int (*request_recovery)(codec_ptr); 63 int (*request_droppable)(codec_ptr); 64 int (*internal_size)(codec_ptr, VPX_SCALING Vertical, VPX_SCALING Horizontal); 65 int (*update_last)(codec_ptr); 66 int (*update_gold)(codec_ptr); 67 int (*use_only_last)(codec_ptr); 68 int (*use_only_gold)(codec_ptr); 69 int (*update_entropy)(codec_ptr); 70 71} codec_realtime_requests; 72