ArDrone SDK 1.8 added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / ARDroneLib / VLIB / video_codec.h
1 #ifndef _VLIB_H_
2 #define _VLIB_H_
3
4 #include <VLIB/video_controller.h>
5
6 #define VLIB_DEFAULT_BITRATE          (0) /* In bytes/frame, 0 means bitrate control disabled*/
7
8 struct _video_codec_t {
9   encode_blockline_fc encode_blockline;
10   decode_blockline_fc decode_blockline;
11   update_fc           update;
12   cache_stream_fc     cache_stream;
13 };
14
15 /******** Available codecs ********/
16 typedef enum _codec_type_t {
17   NULL_CODEC    = 0,
18   UVLC_CODEC    = 0x20,       // codec_type value is used for START_CODE
19   MJPEG_CODEC,                // not used
20   P263_CODEC,                 // not used
21   P264_CODEC    = 0x40
22 } codec_type_t;
23
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 );
27
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 );
31
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 )
34 {
35   return controller->video_codec->encode_blockline( controller, blockline, picture_complete );
36 }
37
38 C_RESULT video_decode_blockline( video_controller_t* controller, vp_api_picture_t* blockline, bool_t* got_image );
39
40 #endif // _VLIB_H_