1 #include <VLIB/video_controller.h>
2 #include <VLIB/video_packetizer.h>
4 #include "uvlc_codec.h"
5 #include "uvlc_layers.h"
7 C_RESULT uvlc_write_picture_layer( video_controller_t* controller, video_stream_t* stream )
9 uint32_t format = 0, resolution = 0, width, height;
11 uvlc_codec_t* uvlc_codec = (uvlc_codec_t*) controller->video_codec;
12 uvlc_picture_layer_t* picture_layer = &uvlc_codec->picture_layer;
14 width = controller->width;
15 height = controller->height;
19 if( width == QQCIF_WIDTH )
20 format = UVLC_FORMAT_CIF;
22 if( width == QQVGA_WIDTH )
23 format = UVLC_FORMAT_VGA;
31 picture_layer->format = format;
32 picture_layer->resolution = resolution;
34 video_write_data( stream, picture_layer->format, 2 );
35 video_write_data( stream, picture_layer->resolution, 3 );
36 video_write_data( stream, picture_layer->picture_type, 3 );
37 video_write_data( stream, picture_layer->quant, 5 );
38 video_write_data( stream, controller->num_frames, 32 );
43 C_RESULT uvlc_read_picture_layer( video_controller_t* controller, video_stream_t* stream )
45 uint32_t width, height;
47 uvlc_codec_t* uvlc_codec = (uvlc_codec_t*) controller->video_codec;
48 uvlc_picture_layer_t* picture_layer = &uvlc_codec->picture_layer;
50 picture_layer->format = 0;
51 picture_layer->resolution = 0;
52 picture_layer->picture_type = 0;
53 picture_layer->quant = 0;
55 video_read_data( stream, &picture_layer->format, 2 );
56 video_read_data( stream, &picture_layer->resolution, 3 );
57 video_read_data( stream, &picture_layer->picture_type, 3 );
58 video_read_data( stream, &picture_layer->quant, 5 );
59 video_read_data( stream, &controller->num_frames, 32 );
61 switch( picture_layer->format )
64 width = QQCIF_WIDTH << (picture_layer->resolution-1);
65 height = QQCIF_HEIGHT << (picture_layer->resolution-1);
69 width = QQVGA_WIDTH << (picture_layer->resolution-1);
70 height = QQVGA_HEIGHT << (picture_layer->resolution-1);
79 video_controller_set_format( controller, width, height );