ArDrone SDK 1.8 added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / ARDroneLib / VLIB / Platform / arm9_P6 / video_utils.c
1 #include <VLIB/video_controller.h>
2 #include <VLIB/video_picture.h>
3
4 #include <VLIB/Platform/video_config.h>
5 #include <VLIB/Platform/video_utils.h>
6 #include <VLIB/video_codec.h>
7
8 #include <VLIB/Platform/arm9_P6/video_dct_p6.h>
9 #include <VLIB/Platform/arm9_P6/video_p264_p6.h>
10
11 #include <VP_Os/vp_os_print.h>
12
13 static uint32_t num_references = 0;
14
15 C_RESULT video_utils_init( video_controller_t* controller )
16 {
17   if( num_references == 0 )
18   {
19     switch(controller->codec_type)
20     {
21       case UVLC_CODEC :
22         video_dct_p6_init();
23         break;
24       case P264_CODEC :
25         video_p264_p6_init();
26         break;
27       default :
28         PRINT ("%s unknown codec %d\n",__FUNCTION__,controller->codec_type);
29         return C_FAIL;
30     }
31   }
32
33   num_references ++;
34
35   return C_OK;
36 }
37
38 C_RESULT video_utils_close( video_controller_t* controller )
39 {
40   if( num_references > 0 )
41   {
42     switch(controller->codec_type)
43     {
44       case UVLC_CODEC :
45         video_dct_p6_close();
46         break;
47       case P264_CODEC :
48         video_p264_p6_close();
49         break;
50       default :
51         PRINT ("%s unknown codec %d\n",__FUNCTION__,controller->codec_type);
52         return C_FAIL;
53     }
54     num_references --;
55   }
56
57   return C_OK;
58 }
59
60 uint32_t ramcode_format_shifter_op_imm(uint32_t imm)
61 {
62   uint32_t shifter, imm8;
63
64   shifter = 32/2;
65   imm8    = imm;
66
67   while( (imm8 & 0xFF) != imm8 )
68   {
69     imm8 >>= 2;
70     shifter --;
71   }
72
73   if( (imm8 << (32-shifter*2)) != imm )
74     return 0xFFFFFFFF;
75
76   if( shifter == 16 )
77     shifter = 0;
78
79   return (shifter << 8 | imm8);
80 }
81
82 C_RESULT video_utils_set_format( uint32_t width, uint32_t height )
83 {
84   return C_OK;
85 }