00001
00002
00003
00004
00005 #ifndef __SHCODECS_ENCODER_H__
00006 #define __SHCODECS_ENCODER_H__
00007
00008 #include <shcodecs/shcodecs_common.h>
00009
00018 struct SHCodecs_Encoder;
00019 typedef struct SHCodecs_Encoder SHCodecs_Encoder;
00020
00029 typedef int (*SHCodecs_Encoder_Input) (SHCodecs_Encoder * encoder, void * user_data);
00030
00040 typedef int (*SHCodecs_Encoder_Input_Release) (SHCodecs_Encoder * encoder,
00041 unsigned char * y_input,
00042 unsigned char * c_input,
00043 void * user_data);
00044
00055 typedef int (*SHCodecs_Encoder_Output) (SHCodecs_Encoder * encoder,
00056 unsigned char * data, int length,
00057 void * user_data);
00058
00066 SHCodecs_Encoder *
00067 shcodecs_encoder_init(int width, int height, SHCodecs_Format format);
00068
00074 void
00075 shcodecs_encoder_close (SHCodecs_Encoder * encoder);
00076
00083 int
00084 shcodecs_encoder_set_output_callback (SHCodecs_Encoder * encoder,
00085 SHCodecs_Encoder_Output output_cb,
00086 void * user_data);
00087
00094 int
00095 shcodecs_encoder_set_input_callback (SHCodecs_Encoder * encoder,
00096 SHCodecs_Encoder_Input input_cb,
00097 void * user_data);
00098
00106 int
00107 shcodecs_encoder_set_input_release_callback (SHCodecs_Encoder * encoder,
00108 SHCodecs_Encoder_Input_Release release_cb,
00109 void * user_data);
00110
00111 void *
00112 shcodecs_encoder_get_input_user_data(SHCodecs_Encoder *encoder);
00113
00114
00127 int
00128 shcodecs_encoder_input_provide (SHCodecs_Encoder * encoder,
00129 void *y_input, void *c_input);
00130
00131
00142 int
00143 shcodecs_encoder_run (SHCodecs_Encoder * encoder);
00144
00157 int
00158 shcodecs_encoder_encode_1frame(SHCodecs_Encoder * encoder,
00159 void *y_input, void *c_input, void *user_data);
00160
00166 int
00167 shcodecs_encoder_finish(SHCodecs_Encoder * encoder);
00168
00175 int shcodecs_encoder_get_width (SHCodecs_Encoder * encoder);
00176
00183 int shcodecs_encoder_get_height (SHCodecs_Encoder * encoder);
00184
00193 int
00194 shcodecs_encoder_get_frame_num_delta(SHCodecs_Encoder *encoder);
00195
00205 int
00206 shcodecs_encoder_get_min_input_frames(SHCodecs_Encoder *encoder);
00207
00208 #include <shcodecs/encode_general.h>
00209 #include <shcodecs/encode_properties.h>
00210 #include <shcodecs/encode_h264.h>
00211 #include <shcodecs/encode_mpeg4.h>
00212
00213 #endif