xref: /OK3568_Linux_fs/external/rockit/mpi/example/common/test_comm_vo.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Copyright 2021 Rockchip Electronics Co. LTD
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Licensed under the Apache License, Version 2.0 (the "License");
5*4882a593Smuzhiyun  * you may not use this file except in compliance with the License.
6*4882a593Smuzhiyun  * You may obtain a copy of the License at
7*4882a593Smuzhiyun  *
8*4882a593Smuzhiyun  *      http://www.apache.org/licenses/LICENSE-2.0
9*4882a593Smuzhiyun  *
10*4882a593Smuzhiyun  * Unless required by applicable law or agreed to in writing, software
11*4882a593Smuzhiyun  * distributed under the License is distributed on an "AS IS" BASIS,
12*4882a593Smuzhiyun  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*4882a593Smuzhiyun  * See the License for the specific language governing permissions and
14*4882a593Smuzhiyun  * limitations under the License.
15*4882a593Smuzhiyun  */
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun #include "rk_mpi_vo.h"
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun #ifdef __cplusplus
20*4882a593Smuzhiyun #if __cplusplus
21*4882a593Smuzhiyun extern "C" {
22*4882a593Smuzhiyun #endif
23*4882a593Smuzhiyun #endif /* End of #ifdef __cplusplus */
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun #ifndef ARRAY_LENGTH
26*4882a593Smuzhiyun #define ARRAY_LENGTH(a) (sizeof (a) / sizeof (a)[0])
27*4882a593Smuzhiyun #endif
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun typedef struct rkVO_Timing_S {
30*4882a593Smuzhiyun     RK_S32  enIntfSync;
31*4882a593Smuzhiyun     RK_U32  u32Width;
32*4882a593Smuzhiyun     RK_U32  u32Height;
33*4882a593Smuzhiyun } VO_Timing_S;
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun static VO_Timing_S stVoTimings[] = {
36*4882a593Smuzhiyun     {VO_OUTPUT_640x480_60, 640, 480},
37*4882a593Smuzhiyun     {VO_OUTPUT_800x600_60, 800, 600},
38*4882a593Smuzhiyun     {VO_OUTPUT_1024x768_60, 1024, 768},
39*4882a593Smuzhiyun     {VO_OUTPUT_1280x1024_60, 1280, 1024},
40*4882a593Smuzhiyun     {VO_OUTPUT_1366x768_60, 1366, 768},
41*4882a593Smuzhiyun     {VO_OUTPUT_1440x900_60, 1440, 900},
42*4882a593Smuzhiyun     {VO_OUTPUT_1280x800_60, 1280, 800},
43*4882a593Smuzhiyun     {VO_OUTPUT_1600x1200_60, 1600, 1200},
44*4882a593Smuzhiyun     {VO_OUTPUT_1680x1050_60, 1680, 1050},
45*4882a593Smuzhiyun     {VO_OUTPUT_1920x1200_60, 1920, 1200},
46*4882a593Smuzhiyun };
47*4882a593Smuzhiyun 
TEST_VO_GetDisplaySize(RK_S32 enIntfSync,RK_U32 * s32W,RK_U32 * s32H)48*4882a593Smuzhiyun void TEST_VO_GetDisplaySize(RK_S32 enIntfSync, RK_U32 *s32W, RK_U32 *s32H) {
49*4882a593Smuzhiyun     switch (enIntfSync) {
50*4882a593Smuzhiyun         case VO_OUTPUT_PAL:
51*4882a593Smuzhiyun         case VO_OUTPUT_576P50:
52*4882a593Smuzhiyun             *s32W = 720;
53*4882a593Smuzhiyun             *s32H = 576;
54*4882a593Smuzhiyun             break;
55*4882a593Smuzhiyun         case VO_OUTPUT_NTSC:
56*4882a593Smuzhiyun         case VO_OUTPUT_480P60:
57*4882a593Smuzhiyun             *s32W = 720;
58*4882a593Smuzhiyun             *s32H = 480;
59*4882a593Smuzhiyun             break;
60*4882a593Smuzhiyun         case VO_OUTPUT_720P50:
61*4882a593Smuzhiyun         case VO_OUTPUT_720P60:
62*4882a593Smuzhiyun             *s32W = 1280;
63*4882a593Smuzhiyun             *s32H = 720;
64*4882a593Smuzhiyun             break;
65*4882a593Smuzhiyun         case VO_OUTPUT_1080P24:
66*4882a593Smuzhiyun         case VO_OUTPUT_1080P25:
67*4882a593Smuzhiyun         case VO_OUTPUT_1080P30:
68*4882a593Smuzhiyun         case VO_OUTPUT_1080I50:
69*4882a593Smuzhiyun         case VO_OUTPUT_1080I60:
70*4882a593Smuzhiyun         case VO_OUTPUT_1080P50:
71*4882a593Smuzhiyun         case VO_OUTPUT_1080P60:
72*4882a593Smuzhiyun             *s32W = 1920;
73*4882a593Smuzhiyun             *s32H = 1080;
74*4882a593Smuzhiyun             break;
75*4882a593Smuzhiyun         case VO_OUTPUT_3840x2160_24:
76*4882a593Smuzhiyun         case VO_OUTPUT_3840x2160_25:
77*4882a593Smuzhiyun         case VO_OUTPUT_3840x2160_30:
78*4882a593Smuzhiyun         case VO_OUTPUT_3840x2160_50:
79*4882a593Smuzhiyun         case VO_OUTPUT_3840x2160_60:
80*4882a593Smuzhiyun             *s32W = 3840;
81*4882a593Smuzhiyun             *s32H = 2160;
82*4882a593Smuzhiyun             break;
83*4882a593Smuzhiyun         case VO_OUTPUT_4096x2160_24:
84*4882a593Smuzhiyun         case VO_OUTPUT_4096x2160_25:
85*4882a593Smuzhiyun         case VO_OUTPUT_4096x2160_30:
86*4882a593Smuzhiyun         case VO_OUTPUT_4096x2160_50:
87*4882a593Smuzhiyun         case VO_OUTPUT_4096x2160_60:
88*4882a593Smuzhiyun             *s32W = 4096;
89*4882a593Smuzhiyun             *s32H = 2160;
90*4882a593Smuzhiyun             break;
91*4882a593Smuzhiyun         default:
92*4882a593Smuzhiyun             for (RK_S32 i = 0; i < ARRAY_LENGTH(stVoTimings); i++) {
93*4882a593Smuzhiyun                 if (stVoTimings[i].enIntfSync == enIntfSync) {
94*4882a593Smuzhiyun                     *s32W = stVoTimings[i].u32Width;
95*4882a593Smuzhiyun                     *s32H = stVoTimings[i].u32Height;
96*4882a593Smuzhiyun                     break;
97*4882a593Smuzhiyun                 }
98*4882a593Smuzhiyun             }
99*4882a593Smuzhiyun             break;
100*4882a593Smuzhiyun     }
101*4882a593Smuzhiyun }
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun #ifdef __cplusplus
104*4882a593Smuzhiyun #if __cplusplus
105*4882a593Smuzhiyun }
106*4882a593Smuzhiyun #endif
107*4882a593Smuzhiyun #endif /* End of #ifdef __cplusplus */
108