ArDrone SDK 1.8 added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / ARDroneLib / VLIB / P264 / p264_codec.h
1
2 #include <VP_Os/vp_os_types.h>
3
4 #include <VLIB/video_codec.h>
5 #include "p264_layers.h"
6
7 typedef struct _p264_codec_t {
8   // Compatibility with video_codec_t structure
9   encode_blockline_fc encode_blockline;
10   decode_blockline_fc decode_blockline;
11   update_fc           update;
12   cache_stream_fc     cache_stream;
13
14   // Private data (see video source coding algorithm p.9)
15   p264_picture_layer_t  picture_layer;
16   vp_api_picture_t ref_picture;      // contains the reference picture used to decode inter frames
17   vp_api_picture_t decoded_picture;  // contains the current decoded picture
18   uint32_t         ip_counter;       // counter used to switch between P&I frames
19   uint32_t         last_I_size;
20   uint32_t         last_P_size;
21 } p264_codec_t;
22
23 void p264_codec_alloc( video_controller_t* controller );
24 void p264_codec_free( video_controller_t* controller );
25
26 C_RESULT p264_pack_controller( video_controller_t* controller );
27 C_RESULT p264_unpack_controller( video_controller_t* controller );
28
29 C_RESULT p264_encode_blockline( video_controller_t* controller, const vp_api_picture_t* blockline, bool_t picture_complete );
30 C_RESULT p264_decode_blockline( video_controller_t* controller, vp_api_picture_t* picture, bool_t* got_image );
31 C_RESULT p264_update( video_controller_t* controller );
32 C_RESULT p264_cache( video_controller_t* controller, video_stream_t* ex_stream);