summaryrefslogtreecommitdiffstats
path: root/video_in_hal/hal_api/video_in_hal.h
blob: 20b45a04ce7ad0c3696bfb9435a33754c5edc366 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
/*
 * @copyright Copyright (c) 2017-2020 TOYOTA MOTOR CORPORATION.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef HAL_API_VIDEO_IN_HAL_H_
#define HAL_API_VIDEO_IN_HAL_H_

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @file  video_in_hal.h
 * @brief API definition of the function to control video
 */

/** @addtogroup graphics_service
 *  @{
 */
/** @addtogroup video_in_hal
 *  @ingroup graphics_service
 *  @{
 */


/* Monitor state */
#define VIH_DISP_MONITOR_ON      (0)  //!< \~english Monitor on
#define VIH_DISP_MONITOR_OFF     (1)  //!< \~english Monitor Off

/* Illumination */
#define VIH_DISP_ILLUMI_INIT     (0)  //!< \~english Not configured
#define VIH_DISP_ILLUMI_DAY      (1)  //!< \~english Day screen
#define VIH_DISP_ILLUMI_NIGHT     (2)  //!< \~english Night screen
#define VIH_DISP_ILLUMI_FOURCE_DAY    (3)  //!< \~english Force day screen
#define VIH_DISP_ILLUMI_FOURCE_NIGHT   (4)  //!< \~english Force night screen

/* Auto dimmer */
#define VIH_DISP_AUTO_DIMMER_OFF    (0)  //!< \~english Auto dimmer off
#define VIH_DISP_AUTO_DIMMER_ON     (1)  //!< \~english Auto dimmer on

/* MUTE */
#define VIH_DISP_MUTE_OFF      (0)  //!< \~english Mute off
#define VIH_DISP_MUTE_ON      (1)  //!< \~english Mute on

/* Back light */
#define VIH_DISP_BACKLIGHT_OFF     (0)  //!< \~english Back light off
#define VIH_DISP_BACKLIGHT_ON     (1)  //!< \~english Back light on

/* Type of video source */
#define VIH_VIDEO_SOURCE_R_CAMERA    (0x00)  //!< \~english Rear video camera
#define VIH_VIDEO_SOURCE_F_CAMERA    (0x01)  //!< \~english Front video camera
#define VIH_VIDEO_SOURCE_S_CAMERA    (0x02)  //!< \~english Side video camera
#define VIH_VIDEO_SOURCE_STOP     (0x03)  //!< \~english Stop the video
#define VIH_VIDEO_SOURCE_DVD     (0x04)  //!< \~english DVD video
#define VIH_VIDEO_SOURCE_BD      (0x05)  //!< \~english BD video
#define VIH_VIDEO_SOURCE_DTV     (0x06)  //!< \~english DTV(Built-in)
#define VIH_VIDEO_SOURCE_EXT_DTV    (0x07)  //!< \~english DTV(External)
#define VIH_VIDEO_SOURCE_SD_VIDEO    (0x08)  //!< \~english SD video
#define VIH_VIDEO_SOURCE_VTR     (0x09)  //!< \~english VTR(Built-in)
#define VIH_VIDEO_SOURCE_VTR2     (0x0A)  //!< \~english VTR2(Built-in)
#define VIH_VIDEO_SOURCE_EXT_VTR    (0x0B)  //!< \~english VTR(External)
#define VIH_VIDEO_SOURCE_EXT_NAVI    (0x0C)  //!< \~english NAVI(External)
#define VIH_VIDEO_SOURCE_EXT     (0x0D)  //!< \~english Extension box
#define VIH_VIDEO_SOURCE__CWORD57__VIDEO    (0x0E)  //!< \~english _CWORD57_(Video)
#define VIH_VIDEO_SOURCE__CWORD57__OUT    (0x0F)  //!< \~english _CWORD57_(Out)
#define VIH_VIDEO_SOURCE__CWORD57__NAVI    (0x10)  //!< \~english _CWORD57_(Navi)
#define VIH_VIDEO_SOURCE_MIRRORLINK    (0x11)  //!< \~english Mirror link
#define VIH_VIDEO_SOURCE_USB_VIDEO    (0x12)  //!< \~english USB video
#define VIH_VIDEO_SOURCE_MIRACAST    (0x16)  //!< \~english Miracast
#define VIH_VIDEO_SOURCE__CWORD27_    (0x17)  //!< \~english _CWORD111_
#define VIH_VIDEO_SOURCE_SD_VIDEO_CPRM   (0x18)  //!< \~english SD source(CPRM)
#define VIH_VIDEO_SOURCE_SD_VIDEO_AVCHD   (0x19)  //!< \~english SD source(AVCHD)
#define VIH_VIDEO_SOURCE_DIAG_CAMERA    (0x1A)  //!< \~english Camera diagnosis
#define VIH_VIDEO_SOURCE_BLANK     (0xFE)  //!< \~english Blank

/* Type of TV system */
#define VIH_VIDEO_TVTYPE_NONE     (0)  //!< \~english Not configured
#define VIH_VIDEO_TVTYPE_NTSC     (1)  //!< \~english NTSC
#define VIH_VIDEO_TVTYPE_PAL     (2)  //!< \~english PAL
#define VIH_VIDEO_TVTYPE_SECAM     (3)  //!< \~english SECAM
#define VIH_VIDEO_TVTYPE_AUTO     (255)  //!< \~english Auto

/* de-interlace */
#define VIH_VIDEO_INTERLACE_DEFAULT    (0)  //!< \~english Interlaced(Default)
#define VIH_VIDEO_INTERLACE_REPLICATE   (1)  //!< \~english Interlaced(Reprica)
#define VIH_VIDEO_INTERLACE_WEAVE    (2)  //!< \~english Interlaced(Weave)
#define VIH_VIDEO_INTERLACE_BOB     (3)  //!< \~english Interlaced(Bob)
#define VIH_VIDEO_INTERLACE_AUTO    (4)  //!< \~english Interlaces(Auto)
#define VIH_VIDEO_INTERLACE_LINE    (5)  //!< \~english Interlaces(Line)

/* Aspect */
#define VIH_VIDEO_ASPECT_NORMAL     (0)  //!< \~english Normal
#define VIH_VIDEO_ASPECT_WIDE     (1)  //!< \~english Wide
#define VIH_VIDEO_ASPECT_FULL     (2)  //!< \~english Full
#define VIH_VIDEO_ASPECT_ZOOM     (3)  //!< \~english Zoom

/* Aspect Ratio */
#define VIH_VIDEO_ASPECT_RATIO_DEFAULT   (0)  //!< \~english Default
#define VIH_VIDEO_ASPECT_RATIO_4_3    (1)  //!< \~english 4:3
#define VIH_VIDEO_ASPECT_RATIO_16_9    (2)  //!< \~english 16:9
#define VIH_VIDEO_ASPECT_RATIO_4_3_LB   (3)  //!< \~english 4:3(Letter box)

/* Enable or disable */
#define VIH_ENABLE      (1)  //!< \~english Enable
#define VIH_DISABLE     (0)  //!< \~english Disable

/* Send information: Control module */
#define VIH_DISP_SEQ_CTRL       0x0003  //!< \~english Sequence control
#define VIH_DISP_VCAP1_CTRL     0x0005  //!< \~english Video capture1 control
#define VIH_DISP_VCAP2_CTRL     0x0006  //!< \~english Video capture2 control

/* Message ID: Put or delete diagnosis code */
#define VIH_DISP_MAIN_IND_PUTDIAG   (0x5200)  //!< \~english Put diagnosis code
#define VIH_DISP_MAIN_IND_DELDIAG   (0x5201)  //!< \~english Delete diagnosis code

/**
 * \~english  Event ID
 */
typedef enum TagVideoInHalEventID {
    VIH_EVENT_ID_SOURCE,           //!< \~english Display source change
    VIH_EVENT_ID_QUALITY,          //!< \~english Set quality(display)
    VIH_EVENT_ID_VIDEOQUALITY,     //!< \~english Set quality(video)
    VIH_EVENT_ID_ASPECT,           //!< \~english Set aspect
    VIH_EVENT_ID_MONITOR,          //!< \~english Set monitor(display)
    VIH_EVENT_ID_VIDEOVISIBLE,     //!< \~english Set video visible(video)
    VIH_EVENT_ID_MUTE,             //!< \~english Set mute
    VIH_EVENT_ID_BACKLIGHT,        //!< \~english Set backlight
    VIH_EVENT_ID_NUM_MAX
} VIH_EVENTID;

/**
 * \~english  Control ID
 */
typedef enum TagVideoInHalControlID {
    VIH_CONTROL_ID_SOURCE,         //!< \~english Display source change
    VIH_CONTROL_ID_QUALITY,        //!< \~english Set quality(display)
    VIH_CONTROL_ID_VIDEOQUALITY,   //!< \~english Set quality(video)
    VIH_CONTROL_ID_ASPECT,         //!< \~english Set aspect
    VIH_CONTROL_ID_MONITOR,        //!< \~english Set monitor(display)
    VIH_CONTROL_ID_VIDEOVISIBLE,   //!< \~english Set video visible(video)
    VIH_CONTROL_ID_START_CAPTURE,  //!< \~english Start capture
    VIH_CONTROL_ID_STOP_CAPTURE,   //!< \~english Stop capture
    VIH_CONTROL_ID_TVTYPE,         //!< \~english Set TV type
    VIH_CONTROL_ID_DEINTERLACE,    //!< \~english Set de-interlace
    VIH_CONTROL_ID_VMUTE,          //!< \~english Set mute
    VIH_CONTROL_ID_BACKLIGHT,      //!< \~english Set backlight
    VIH_CONTROL_ID_NUM_MAX
} VIH_CONTROLID;

/**
 * \~english  Type of video device's return value
 */
typedef enum TagVideoInHalRet {
    VIH_RET_SUCCESS,               //!< \~english OK
    VIH_RET_INVALID_PARAMETER,     //!< \~english Invalid parameter
    VIH_RET_INTERNAL_ERROR,        //!< \~english Internal error
    VIH_RET_NUM_MAX
} VIH_RET;

/**
 * \~english  context kind
 */
typedef enum TagVideoInHalContext {
    VIH_CONTEXT_DISP = 0,  //!< \~english Display
    VIH_CONTEXT_VIDEO,  //!< \~english Video
    VIH_CONTEXT_NUM_MAX
} VIH_CONTEXT;

/**
 * \~english  Display ID
 */
typedef enum TagVideoInHalDispIdx {
    VIH_DISP_IDX_MONITOR0,  //!< \~english Monitor0 (Front monitor)
    VIH_DISP_IDX_MONITOR1,  //!< \~english Monitor1 (Rear monitor)
    VIH_DISP_IDX_MONITOR2,  //!< \~english Monitor2
    VIH_DISP_IDX_MONITOR3,  //!< \~english Monitor3
    VIH_DISP_IDX_MONITOR4,  //!< \~english Monitor4
    VIH_DISP_IDX_MONITOR5,  //!< \~english Monitor5
    VIH_DISP_IDX_NUM_MAX
} VIH_DISP_IDX;

/**
 * \~english  Video ID
 */
typedef enum TagVideoInHalVideoOut {
    VIH_VIDEO_OUT_MONITOR0 = 0,  //!< \~english Monitor0 (Front monitor)
    VIH_VIDEO_OUT_MONITOR1,  //!< \~english Monitor1 (Rear monitor)
    VIH_VIDEO_OUT_MONITOR2,  //!< \~english Monitor2
    VIH_VIDEO_OUT_MONITOR3,  //!< \~english Monitor3
    VIH_VIDEO_OUT_MONITOR4,  //!< \~english Monitor4
    VIH_VIDEO_OUT_MONITOR5,  //!< \~english Monitor5
    VIH_VIDEO_OUT_NONE,  //!< \~english Monitor none
    VIH_VIDEO_OUT_NUM_MAX
} VIH_VIDEO_OUT;

/**
 * \~english  Structure for display tone color
 */
typedef struct TagVideoInHalDispTone {
    int16_t day;   //!< \~english Day screen
    int16_t night;   //!< \~english Night screen
    int16_t force_day;   //!< \~english Force day screen
    int16_t force_night;   //!< \~english Force night screen
} VIH_DISPTONE;

/**
 * \~english  Structure for display tone hue
 */
typedef struct TagVideoInHalDispHue {
    int16_t day;  //!< \~english Day screen
    int16_t night;  //!< \~english Night screen
    int16_t force_day;  //!< \~english Force day screen
    int16_t force_night;  //!< \~english Force night screen
} VIH_DISPHUE;

/**
 * \~english  Structure for display tone contrast
 */
typedef struct TagVideoInHalDispContrast {
    int16_t day;  //!< \~english Day screen
    int16_t night;  //!< \~english Night screen
    int16_t force_day;  //!< \~english Force day screen
    int16_t force_night;  //!< \~english Force night screen
} VIH_DISPCONTRAST;

/**
 * \~english  Structure for display tone brightness
 */
typedef struct TagVideoInHalDispBrightness {
    int16_t day;  //!< \~english Day screen
    int16_t night;  //!< \~english Night screen
    int16_t force_day;  //!< \~english Force day screen
    int16_t force_night;  //!< \~english Force night screen
} VIH_DISPBRIGHTNESS;

/**
 * \~english  Structure for display image quality parameters
 */
typedef struct TagVideoInHalDispParamSetUp {
    u_int8_t source;  //!< \~english Source type for quality setting
    u_int8_t reserved[3];  //!< \~english Reserved
    VIH_DISPTONE tone;  //!< \~english Tone
    VIH_DISPHUE hue;  //!< \~english Hue
    VIH_DISPCONTRAST contrast;  //!< \~english Contrast
    VIH_DISPBRIGHTNESS brightness;  //!< \~english Brightness
} VIH_DISP_PARAM_SETUP;

/**
 * \~english  Structure for display parameters
 */
typedef struct TagVideoInHalDispParam {
    u_int8_t monitor;  //!< \~english Monitor state
    u_int8_t reserve[3];  //!< \~english Reserve
    VIH_DISP_PARAM_SETUP setup;  //!< \~english Quality setting
    u_int8_t illumi;  //!< \~english Illumination
    u_int8_t dimmer;  //!< \~english Auto dimmer
    u_int8_t mute;  //!< \~english Mute
    u_int8_t backlight;  //!< \~english Back light
} VIH_DISPPARAM;

/**
 * \~english  Structure for video tone color
 */
typedef struct TagVideoInHalVideoTone {
    int16_t day;  //!< \~english Day screen
    int16_t night;  //!< \~english Night screen
    int16_t force_day;  //!< \~english Force day screen
    int16_t force_night;  //!< \~english Force night screen
} VIH_VIDEOTONE;

/**
 * \~english  Structure for video tone hue
 */
typedef struct TagVideoInHalVideoHue {
    int16_t day;  //!< \~english Day screen
    int16_t night;  //!< \~english Night screen
    int16_t force_day;  //!< \~english Force day screen
    int16_t force_night;  //!< \~english Force night screen
} VIH_VIDEOHUE;

/**
 * \~english  Structure for video tone contrast
 */
typedef struct TagVideoInHalVideoContrast {
    int16_t day;  //!< \~english Day screen
    int16_t night;  //!< \~english Night screen
    int16_t force_day;  //!< \~english Force day screen
    int16_t force_night;  //!< \~english Force night screen
} VIH_VIDEOCONTRAST;

/**
 * \~english  Structure for video tone brightness
 */
typedef struct TagVideoInHalVideoBrightness {
    int16_t day;  //!< \~english Day screen
    int16_t night;  //!< \~english Night screen
    int16_t force_day;  //!< \~english Force day screen
    int16_t force_night;  //!< \~english Force night screen
} VIH_VIDEOBRIGHTNESS;

/**
 * \~english  Structure for video image quality parameters
 */
typedef struct TagVideoInHalVideoParamSetUp {
    u_int8_t source;  //!< \~english Source type for quality setting
    u_int8_t reserve[3];  //!< \~english reserve
    VIH_VIDEOTONE tone;  //!< \~english Tone
    VIH_VIDEOHUE hue;  //!< \~english Hue
    VIH_VIDEOCONTRAST contrast;  //!< \~english Contrast
    VIH_VIDEOBRIGHTNESS brightness;  //!< \~english Brightness
} VIH_VIDEO_PARAM_SETUP;

/**
 * \~english  Structure for video position and angle
 */
typedef struct TagVideoInHalVideoPos {
    u_int32_t aspect_x;  //!< \~english Display position x
    u_int32_t aspect_y;  //!< \~english Display position y
    u_int32_t aspect_w;  //!< \~english Display width
    u_int32_t aspect_h;  //!< \~english Display height
} VIH_VIDEOPOS;

/**
 * \~english  Structure for video parameters
 */
typedef struct TagVideoInHalVideoParam {
    u_int8_t source;  //!< \~english Video Source
    u_int8_t type;  //!< \~english TV type
    u_int8_t interlace;  //!< \~english De-interlace
    u_int8_t aspect;  //!< \~english Aspect Value
    VIH_VIDEOPOS angle;  //!< \~english Angle
    VIH_VIDEO_PARAM_SETUP setup;  //!< \~english Quality setting
    u_int8_t monitor;  //!< \~english Monitor
    u_int8_t mute;  //!< \~english Mute
    u_int8_t aspect_ratio;  //!< \~english Aspect ratio
    u_int8_t reserve;  //!< \~english Reserve
    u_int32_t window_priority;  //!< \~english Window priority
} VIH_VIDEOPARAM;

/**
 * \~english  Structure for display identify
 */
typedef struct TagVideoInHalDispVideoID {
    VIH_CONTEXT kind;  //!< \~english Context type
    struct timespec tp;  //!< \~english Context create time
} VIH_DISPVIDEOID;

/**
 * \~english  Structure for display information
 */
typedef struct TagVideoInHalDispVideoInfo {
    VIH_DISPVIDEOID context_id;  //!< \~english Context identify
    u_int32_t dsp_idx;  //!< \~english Display index
    u_int32_t chgflg;  //!< \~english Setting change flag
} VIH_DISPVIDEOINFO;

/**
 * \~english  Structure for display context
 */
typedef struct TagVideoInHalDispMngCtx {
    VIH_DISPVIDEOINFO info;  //!< \~english Display information
    VIH_DISPPARAM disp_param[VIH_DISP_IDX_NUM_MAX];  //!< \~english Display parameter
    VIH_VIDEOPARAM video_param[VIH_VIDEO_OUT_NUM_MAX];  //!< \~english Video parameter
} VIH_DISPMNGCTX;

/**
 * \~english  Structure for diagnosis code data
 */
typedef struct TagVideoInHalGRMainReqDiagData {
  uint64_t err_id;  //!< \~english Error ID
  uint16_t videoinhal_code;  //!< \~english Code
  uint8_t reserve1[2];  //!< \~english Reserve
} VIH_GR_MAIN_REQ_DIAGDATA;


/**
 * \ingroup SendDiagCodeCallBack
 * \~english @par Brief
 *        Send diagnosis code call back.
 * \~english @param [in] snd_info
 *        u_int16_t - Send information
 * \~english @param [in] msg_id
 *        u_int32_t - Message ID
 * \~english @param [in] diag_data
 *        VIH_GR_MAIN_REQ_DIAGDATA* - Diagnosis code data
 * \~english @par
 *      u_int16_t snd_info
 * \~english @code
 *      VIH_DISP_SEQ_CTRL      0x0003  // Sequence control
 *      VIH_DISP_VCAP1_CTRL    0x0005  // Video capture1 control
 *      VIH_DISP_VCAP2_CTRL    0x0006  // Video capture2 control
 *          @endcode
 * \~english @par
 *      u_int32_t msg_id
 * \~english @code
 *      VIH_DISP_MAIN_IND_PUTDIAG   (0x5200)  // Put diagnosis code
 *      VIH_DISP_MAIN_IND_DELDIAG   (0x5201)  // Delete diagnosis code
 *          @endcode
 * \~english @par
 *      VIH_GR_MAIN_REQ_DIAGDATA struct
 * \~english @code
 *      typedef struct TagVideoInHalGRMainReqDiagData
 *      {
 *          uint64_t err_id;      // Error ID
 *          uint16_t videoinhal_code;   // Videoinhal code
 *          uint8_t reserve1[2];  // Reserve
 *      } VIH_GR_MAIN_REQ_DIAGDATA;
 *          @endcode
 * \~english @retval 0                           :  OK
 * \~english @retval -1                          :  Invalid parameter
 * \~english @par Detail
 *        - Notify diagnosis code request to graphics_service.
 * \~english @par Prerequisite
 *        - None
 * \~english @par Conditions of processing failure
 *        - When input parameter diag_data is NULL, return with error. [-1]
 * \~english @par Classification
 *        Public
 * \~english @par Type
 *        Sync
 * \~english @see
 *        None
 */
typedef int (*SendDiagCodeCallBack)(u_int16_t snd_info, u_int32_t msg_id, VIH_GR_MAIN_REQ_DIAGDATA* diag_data);

/**
 * \ingroup InitVideo
 * \~english @par Brief
 *         API to display device initialize.
 * \~english @param [in] call_back
 *        SendDiagCodeCallBack - Send diagnosis trace code call back function
 * \~english @retval VIH_RET_SUCCESS             :  OK
 * \~english @retval VIH_RET_INVALID_PARAMETER   :  Invalid parameter
 * \~english @par Detail
 *        - Display device initialize, init parameter and threads.
 *        - The API can only be used by 1 process.
 * \~english @par Prerequisite
 *        - None
 * \~english @par Conditions of processing failure
 *        - When display device driver can not be found, return with error. [VIH_RET_INVALID_PARAMETER]
 * \~english @par Classification
 *        Public
 * \~english @par Type
 *        Sync
 * \~english @see
 *        None
 */
VIH_RET InitVideo(SendDiagCodeCallBack call_back);

/**
 * \ingroup ControlVideo
 * \~english @par Brief
 *         API to Control display device.
 * \~english @param [in] pctx
 *        VIH_DISPMNGCTX* - Point of parameter used by control display device
 * \~english @param [in] event_id
 *        VIH_EVENTID - Event ID
 * \~english @param [in] control_id
 *        VIH_CONTROLID - Control ID
 * \~english @par
 *      VIH_DISPMNGCTX struct 
 * \~english @code
 *      typedef struct TagVideoInHalDispMngCtx
 *      {
 *          VIH_DISPVIDEOINFO info;                                // Information of display
 *          VIH_DISPPARAM disp_param[VIH_DISP_IDX_NUM_MAX];        // Paramter of diaplay
 *          VIH_VIDEOPARAM video_param[VIH_VIDEO_OUT_NUM_MAX];     // Paramter of video
 *      } VIH_DISPMNGCTX;
 *          @endcode
 * \~english @par
 *      VIH_EVENTID enum
 * \~english @code
 *      typedef enum TagVideoInHalEventID
 *      {
 *          VIH_EVENT_ID_SOURCE,                // Display source change
 *          VIH_EVENT_ID_QUALITY,               // Set quality(display)
 *          VIH_EVENT_ID_VIDEOQUALITY,          // Set quality(video)
 *          VIH_EVENT_ID_ASPECT,                // Set aspect
 *          VIH_EVENT_ID_MONITOR,               // Set monitor(display)
 *          VIH_EVENT_ID_VIDEOVISIBLE,          // Set video visible(video)
 *          VIH_EVENT_ID_MUTE,                  // Set mute
 *          VIH_EVENT_ID_BACKLIGHT,             // Set backlight
 *          VIH_EVENT_ID_NUM_MAX
 *      } VIH_EVENTID;
 *          @endcode
 * \~english @par
 *      VIH_CONTROLID enum
 * \~english @code
 *      typedef enum TagVideoInHalControlID
 *      {
 *          VIH_CONTROL_ID_SOURCE,              // Display source change
 *          VIH_CONTROL_ID_QUALITY,             // Set quality(display) 
 *          VIH_CONTROL_ID_VIDEOQUALITY,        // Set quality(video)
 *          VIH_CONTROL_ID_ASPECT,              // Set aspect   
 *          VIH_CONTROL_ID_MONITOR,             // Set monitor(display) 
 *          VIH_CONTROL_ID_VIDEOVISIBLE,        // Set video visible(video) 
 *          VIH_CONTROL_ID_START_CAPTURE,       // Start capture
 *          VIH_CONTROL_ID_STOP_CAPTURE,        // Stop capture 
 *          VIH_CONTROL_ID_TVTYPE,              // Set TV type
 *          VIH_CONTROL_ID_DEINTERLACE,         // Set de-interlace
 *          VIH_CONTROL_ID_VMUTE,               // Set mute
 *          VIH_CONTROL_ID_BACKLIGHT,           // Set backlight
 *          VIH_CONTROL_ID_NUM_MAX
 *      } VIH_CONTROLID;
 *          @endcode
 * \~english @retval VIH_RET_SUCCESS             :  OK
 * \~english @retval VIH_RET_INVALID_PARAMETER   :  Invalid parameter
 * \~english @retval VIH_RET_INTERNAL_ERROR      :  Internal error
 * \~english @par Detail
 *        - Control display device. Include display source, quality(display), quality(video), aspect , monitor, video visible, start capture, stop capture, mute, backlight, TV type, de-interlace.
 *        - The API can only be used by 1 process.
 * \~english @par Prerequisite
 *        - Call InitVideo() 
 * \~english @par Conditions of processing failure
 *        - The point param is null [VIH_RET_INVALID_PARAMETER]
 *        - The display driver return error [VIH_RET_INTERNAL_ERROR]
 * \~english @par Classification
 *        Public
 * \~english @par Type
 *        Fire and Forget
 * \~english @see
 *        None
 */
VIH_RET ControlVideo(VIH_DISPMNGCTX* pctx, VIH_EVENTID event_id, VIH_CONTROLID control_id);

/**
 * \ingroup TerminateVideo
 * \~english @par Brief
 *         API to display device Terminate.
 * \~english @param None
 * \~english @retval VIH_RET_SUCCESS             :  OK
 * \~english @par Detail
 *        - Display device Terminate, init parameter.
 *        - The API can only be used by 1 process.
 * \~english @par Prerequisite
 *        - Call InitVideo().
 * \~english @par Conditions of processing failure
 *        - None
 * \~english @par Classification
 *        Public
 * \~english @par Type
 *        Sync
 * \~english @see
 *        None
 */
VIH_RET TerminateVideo();

#ifdef __cplusplus
}
#endif

/** @}*/  //!< end of video_in_hal
/** @}*/  //!< end of graphics_service

#endif  // HAL_API_VIDEO_IN_HAL_H_