ArDrone SDK 1.8 added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / ARDroneLib / VLIB / video_codec.h
diff --git a/mardrone/ARDrone_SDK_Version_1_8_20110726/ARDroneLib/VLIB/video_codec.h b/mardrone/ARDrone_SDK_Version_1_8_20110726/ARDroneLib/VLIB/video_codec.h
new file mode 100644 (file)
index 0000000..8664ffb
--- /dev/null
@@ -0,0 +1,40 @@
+#ifndef _VLIB_H_
+#define _VLIB_H_
+
+#include <VLIB/video_controller.h>
+
+#define VLIB_DEFAULT_BITRATE          (0) /* In bytes/frame, 0 means bitrate control disabled*/
+
+struct _video_codec_t {
+  encode_blockline_fc encode_blockline;
+  decode_blockline_fc decode_blockline;
+  update_fc           update;
+  cache_stream_fc     cache_stream;
+};
+
+/******** Available codecs ********/
+typedef enum _codec_type_t {
+  NULL_CODEC    = 0,
+  UVLC_CODEC    = 0x20,       // codec_type value is used for START_CODE
+  MJPEG_CODEC,                // not used
+  P263_CODEC,                 // not used
+  P264_CODEC    = 0x40
+} codec_type_t;
+
+/******** API ********/
+C_RESULT video_codec_open( video_controller_t* controller, codec_type_t codec_type );
+C_RESULT video_codec_close( video_controller_t* controller );
+
+// Encode/Decode a complete picture given
+C_RESULT video_encode_picture( video_controller_t* controller, const vp_api_picture_t* picture, bool_t* got_image );
+C_RESULT video_decode_picture( video_controller_t* controller, vp_api_picture_t* picture, video_stream_t* ex_stream, bool_t* got_image );
+
+// Encode/Decode a blockline
+static INLINE C_RESULT video_encode_blockline( video_controller_t* controller, const vp_api_picture_t* blockline, bool_t picture_complete )
+{
+  return controller->video_codec->encode_blockline( controller, blockline, picture_complete );
+}
+
+C_RESULT video_decode_blockline( video_controller_t* controller, vp_api_picture_t* blockline, bool_t* got_image );
+
+#endif // _VLIB_H_