4 #include <VLIB/video_controller.h>
6 #define VLIB_DEFAULT_BITRATE (0) /* In bytes/frame, 0 means bitrate control disabled*/
8 struct _video_codec_t {
9 encode_blockline_fc encode_blockline;
10 decode_blockline_fc decode_blockline;
12 cache_stream_fc cache_stream;
15 /******** Available codecs ********/
16 typedef enum _codec_type_t {
18 UVLC_CODEC = 0x20, // codec_type value is used for START_CODE
19 MJPEG_CODEC, // not used
20 P263_CODEC, // not used
24 /******** API ********/
25 C_RESULT video_codec_open( video_controller_t* controller, codec_type_t codec_type );
26 C_RESULT video_codec_close( video_controller_t* controller );
28 // Encode/Decode a complete picture given
29 C_RESULT video_encode_picture( video_controller_t* controller, const vp_api_picture_t* picture, bool_t* got_image );
30 C_RESULT video_decode_picture( video_controller_t* controller, vp_api_picture_t* picture, video_stream_t* ex_stream, bool_t* got_image );
32 // Encode/Decode a blockline
33 static INLINE C_RESULT video_encode_blockline( video_controller_t* controller, const vp_api_picture_t* blockline, bool_t picture_complete )
35 return controller->video_codec->encode_blockline( controller, blockline, picture_complete );
38 C_RESULT video_decode_blockline( video_controller_t* controller, vp_api_picture_t* blockline, bool_t* got_image );