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