2 * @copyright Copyright (c) 2017-2020 TOYOTA MOTOR CORPORATION.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #ifndef HAL_API_VIDEO_IN_HAL_H_
18 #define HAL_API_VIDEO_IN_HAL_H_
25 * @file video_in_hal.h
26 * @brief API definition of the function to control video
29 /** @addtogroup graphics_service
32 /** @addtogroup video_in_hal
33 * @ingroup graphics_service
39 #define VIH_DISP_MONITOR_ON (0) //!< \~english Monitor on
40 #define VIH_DISP_MONITOR_OFF (1) //!< \~english Monitor Off
43 #define VIH_DISP_ILLUMI_INIT (0) //!< \~english Not configured
44 #define VIH_DISP_ILLUMI_DAY (1) //!< \~english Day screen
45 #define VIH_DISP_ILLUMI_NIGHT (2) //!< \~english Night screen
46 #define VIH_DISP_ILLUMI_FOURCE_DAY (3) //!< \~english Force day screen
47 #define VIH_DISP_ILLUMI_FOURCE_NIGHT (4) //!< \~english Force night screen
50 #define VIH_DISP_AUTO_DIMMER_OFF (0) //!< \~english Auto dimmer off
51 #define VIH_DISP_AUTO_DIMMER_ON (1) //!< \~english Auto dimmer on
54 #define VIH_DISP_MUTE_OFF (0) //!< \~english Mute off
55 #define VIH_DISP_MUTE_ON (1) //!< \~english Mute on
58 #define VIH_DISP_BACKLIGHT_OFF (0) //!< \~english Back light off
59 #define VIH_DISP_BACKLIGHT_ON (1) //!< \~english Back light on
61 /* Type of video source */
62 #define VIH_VIDEO_SOURCE_R_CAMERA (0x00) //!< \~english Rear video camera
63 #define VIH_VIDEO_SOURCE_F_CAMERA (0x01) //!< \~english Front video camera
64 #define VIH_VIDEO_SOURCE_S_CAMERA (0x02) //!< \~english Side video camera
65 #define VIH_VIDEO_SOURCE_STOP (0x03) //!< \~english Stop the video
66 #define VIH_VIDEO_SOURCE_DVD (0x04) //!< \~english DVD video
67 #define VIH_VIDEO_SOURCE_BD (0x05) //!< \~english BD video
68 #define VIH_VIDEO_SOURCE_DTV (0x06) //!< \~english DTV(Built-in)
69 #define VIH_VIDEO_SOURCE_EXT_DTV (0x07) //!< \~english DTV(External)
70 #define VIH_VIDEO_SOURCE_SD_VIDEO (0x08) //!< \~english SD video
71 #define VIH_VIDEO_SOURCE_VTR (0x09) //!< \~english VTR(Built-in)
72 #define VIH_VIDEO_SOURCE_VTR2 (0x0A) //!< \~english VTR2(Built-in)
73 #define VIH_VIDEO_SOURCE_EXT_VTR (0x0B) //!< \~english VTR(External)
74 #define VIH_VIDEO_SOURCE_EXT_NAVI (0x0C) //!< \~english NAVI(External)
75 #define VIH_VIDEO_SOURCE_EXT (0x0D) //!< \~english Extension box
76 #define VIH_VIDEO_SOURCE__CWORD57__VIDEO (0x0E) //!< \~english _CWORD57_(Video)
77 #define VIH_VIDEO_SOURCE__CWORD57__OUT (0x0F) //!< \~english _CWORD57_(Out)
78 #define VIH_VIDEO_SOURCE__CWORD57__NAVI (0x10) //!< \~english _CWORD57_(Navi)
79 #define VIH_VIDEO_SOURCE_MIRRORLINK (0x11) //!< \~english Mirror link
80 #define VIH_VIDEO_SOURCE_USB_VIDEO (0x12) //!< \~english USB video
81 #define VIH_VIDEO_SOURCE_MIRACAST (0x16) //!< \~english Miracast
82 #define VIH_VIDEO_SOURCE__CWORD27_ (0x17) //!< \~english _CWORD111_
83 #define VIH_VIDEO_SOURCE_SD_VIDEO_CPRM (0x18) //!< \~english SD source(CPRM)
84 #define VIH_VIDEO_SOURCE_SD_VIDEO_AVCHD (0x19) //!< \~english SD source(AVCHD)
85 #define VIH_VIDEO_SOURCE_DIAG_CAMERA (0x1A) //!< \~english Camera diagnosis
86 #define VIH_VIDEO_SOURCE_BLANK (0xFE) //!< \~english Blank
88 /* Type of TV system */
89 #define VIH_VIDEO_TVTYPE_NONE (0) //!< \~english Not configured
90 #define VIH_VIDEO_TVTYPE_NTSC (1) //!< \~english NTSC
91 #define VIH_VIDEO_TVTYPE_PAL (2) //!< \~english PAL
92 #define VIH_VIDEO_TVTYPE_SECAM (3) //!< \~english SECAM
93 #define VIH_VIDEO_TVTYPE_AUTO (255) //!< \~english Auto
96 #define VIH_VIDEO_INTERLACE_DEFAULT (0) //!< \~english Interlaced(Default)
97 #define VIH_VIDEO_INTERLACE_REPLICATE (1) //!< \~english Interlaced(Reprica)
98 #define VIH_VIDEO_INTERLACE_WEAVE (2) //!< \~english Interlaced(Weave)
99 #define VIH_VIDEO_INTERLACE_BOB (3) //!< \~english Interlaced(Bob)
100 #define VIH_VIDEO_INTERLACE_AUTO (4) //!< \~english Interlaces(Auto)
101 #define VIH_VIDEO_INTERLACE_LINE (5) //!< \~english Interlaces(Line)
104 #define VIH_VIDEO_ASPECT_NORMAL (0) //!< \~english Normal
105 #define VIH_VIDEO_ASPECT_WIDE (1) //!< \~english Wide
106 #define VIH_VIDEO_ASPECT_FULL (2) //!< \~english Full
107 #define VIH_VIDEO_ASPECT_ZOOM (3) //!< \~english Zoom
110 #define VIH_VIDEO_ASPECT_RATIO_DEFAULT (0) //!< \~english Default
111 #define VIH_VIDEO_ASPECT_RATIO_4_3 (1) //!< \~english 4:3
112 #define VIH_VIDEO_ASPECT_RATIO_16_9 (2) //!< \~english 16:9
113 #define VIH_VIDEO_ASPECT_RATIO_4_3_LB (3) //!< \~english 4:3(Letter box)
115 /* Enable or disable */
116 #define VIH_ENABLE (1) //!< \~english Enable
117 #define VIH_DISABLE (0) //!< \~english Disable
119 /* Send information: Control module */
120 #define VIH_DISP_SEQ_CTRL 0x0003 //!< \~english Sequence control
121 #define VIH_DISP_VCAP1_CTRL 0x0005 //!< \~english Video capture1 control
122 #define VIH_DISP_VCAP2_CTRL 0x0006 //!< \~english Video capture2 control
124 /* Message ID: Put or delete diagnosis code */
125 #define VIH_DISP_MAIN_IND_PUTDIAG (0x5200) //!< \~english Put diagnosis code
126 #define VIH_DISP_MAIN_IND_DELDIAG (0x5201) //!< \~english Delete diagnosis code
131 typedef enum TagVideoInHalEventID {
132 VIH_EVENT_ID_SOURCE, //!< \~english Display source change
133 VIH_EVENT_ID_QUALITY, //!< \~english Set quality(display)
134 VIH_EVENT_ID_VIDEOQUALITY, //!< \~english Set quality(video)
135 VIH_EVENT_ID_ASPECT, //!< \~english Set aspect
136 VIH_EVENT_ID_MONITOR, //!< \~english Set monitor(display)
137 VIH_EVENT_ID_VIDEOVISIBLE, //!< \~english Set video visible(video)
138 VIH_EVENT_ID_MUTE, //!< \~english Set mute
139 VIH_EVENT_ID_BACKLIGHT, //!< \~english Set backlight
144 * \~english Control ID
146 typedef enum TagVideoInHalControlID {
147 VIH_CONTROL_ID_SOURCE, //!< \~english Display source change
148 VIH_CONTROL_ID_QUALITY, //!< \~english Set quality(display)
149 VIH_CONTROL_ID_VIDEOQUALITY, //!< \~english Set quality(video)
150 VIH_CONTROL_ID_ASPECT, //!< \~english Set aspect
151 VIH_CONTROL_ID_MONITOR, //!< \~english Set monitor(display)
152 VIH_CONTROL_ID_VIDEOVISIBLE, //!< \~english Set video visible(video)
153 VIH_CONTROL_ID_START_CAPTURE, //!< \~english Start capture
154 VIH_CONTROL_ID_STOP_CAPTURE, //!< \~english Stop capture
155 VIH_CONTROL_ID_TVTYPE, //!< \~english Set TV type
156 VIH_CONTROL_ID_DEINTERLACE, //!< \~english Set de-interlace
157 VIH_CONTROL_ID_VMUTE, //!< \~english Set mute
158 VIH_CONTROL_ID_BACKLIGHT, //!< \~english Set backlight
159 VIH_CONTROL_ID_NUM_MAX
163 * \~english Type of video device's return value
165 typedef enum TagVideoInHalRet {
166 VIH_RET_SUCCESS, //!< \~english OK
167 VIH_RET_INVALID_PARAMETER, //!< \~english Invalid parameter
168 VIH_RET_INTERNAL_ERROR, //!< \~english Internal error
173 * \~english context kind
175 typedef enum TagVideoInHalContext {
176 VIH_CONTEXT_DISP = 0, //!< \~english Display
177 VIH_CONTEXT_VIDEO, //!< \~english Video
182 * \~english Display ID
184 typedef enum TagVideoInHalDispIdx {
185 VIH_DISP_IDX_MONITOR0, //!< \~english Monitor0 (Front monitor)
186 VIH_DISP_IDX_MONITOR1, //!< \~english Monitor1 (Rear monitor)
187 VIH_DISP_IDX_MONITOR2, //!< \~english Monitor2
188 VIH_DISP_IDX_MONITOR3, //!< \~english Monitor3
189 VIH_DISP_IDX_MONITOR4, //!< \~english Monitor4
190 VIH_DISP_IDX_MONITOR5, //!< \~english Monitor5
197 typedef enum TagVideoInHalVideoOut {
198 VIH_VIDEO_OUT_MONITOR0 = 0, //!< \~english Monitor0 (Front monitor)
199 VIH_VIDEO_OUT_MONITOR1, //!< \~english Monitor1 (Rear monitor)
200 VIH_VIDEO_OUT_MONITOR2, //!< \~english Monitor2
201 VIH_VIDEO_OUT_MONITOR3, //!< \~english Monitor3
202 VIH_VIDEO_OUT_MONITOR4, //!< \~english Monitor4
203 VIH_VIDEO_OUT_MONITOR5, //!< \~english Monitor5
204 VIH_VIDEO_OUT_NONE, //!< \~english Monitor none
205 VIH_VIDEO_OUT_NUM_MAX
209 * \~english Structure for display tone color
211 typedef struct TagVideoInHalDispTone {
212 int16_t day; //!< \~english Day screen
213 int16_t night; //!< \~english Night screen
214 int16_t force_day; //!< \~english Force day screen
215 int16_t force_night; //!< \~english Force night screen
219 * \~english Structure for display tone hue
221 typedef struct TagVideoInHalDispHue {
222 int16_t day; //!< \~english Day screen
223 int16_t night; //!< \~english Night screen
224 int16_t force_day; //!< \~english Force day screen
225 int16_t force_night; //!< \~english Force night screen
229 * \~english Structure for display tone contrast
231 typedef struct TagVideoInHalDispContrast {
232 int16_t day; //!< \~english Day screen
233 int16_t night; //!< \~english Night screen
234 int16_t force_day; //!< \~english Force day screen
235 int16_t force_night; //!< \~english Force night screen
239 * \~english Structure for display tone brightness
241 typedef struct TagVideoInHalDispBrightness {
242 int16_t day; //!< \~english Day screen
243 int16_t night; //!< \~english Night screen
244 int16_t force_day; //!< \~english Force day screen
245 int16_t force_night; //!< \~english Force night screen
246 } VIH_DISPBRIGHTNESS;
249 * \~english Structure for display image quality parameters
251 typedef struct TagVideoInHalDispParamSetUp {
252 u_int8_t source; //!< \~english Source type for quality setting
253 u_int8_t reserved[3]; //!< \~english Reserved
254 VIH_DISPTONE tone; //!< \~english Tone
255 VIH_DISPHUE hue; //!< \~english Hue
256 VIH_DISPCONTRAST contrast; //!< \~english Contrast
257 VIH_DISPBRIGHTNESS brightness; //!< \~english Brightness
258 } VIH_DISP_PARAM_SETUP;
261 * \~english Structure for display parameters
263 typedef struct TagVideoInHalDispParam {
264 u_int8_t monitor; //!< \~english Monitor state
265 u_int8_t reserve[3]; //!< \~english Reserve
266 VIH_DISP_PARAM_SETUP setup; //!< \~english Quality setting
267 u_int8_t illumi; //!< \~english Illumination
268 u_int8_t dimmer; //!< \~english Auto dimmer
269 u_int8_t mute; //!< \~english Mute
270 u_int8_t backlight; //!< \~english Back light
274 * \~english Structure for video tone color
276 typedef struct TagVideoInHalVideoTone {
277 int16_t day; //!< \~english Day screen
278 int16_t night; //!< \~english Night screen
279 int16_t force_day; //!< \~english Force day screen
280 int16_t force_night; //!< \~english Force night screen
284 * \~english Structure for video tone hue
286 typedef struct TagVideoInHalVideoHue {
287 int16_t day; //!< \~english Day screen
288 int16_t night; //!< \~english Night screen
289 int16_t force_day; //!< \~english Force day screen
290 int16_t force_night; //!< \~english Force night screen
294 * \~english Structure for video tone contrast
296 typedef struct TagVideoInHalVideoContrast {
297 int16_t day; //!< \~english Day screen
298 int16_t night; //!< \~english Night screen
299 int16_t force_day; //!< \~english Force day screen
300 int16_t force_night; //!< \~english Force night screen
304 * \~english Structure for video tone brightness
306 typedef struct TagVideoInHalVideoBrightness {
307 int16_t day; //!< \~english Day screen
308 int16_t night; //!< \~english Night screen
309 int16_t force_day; //!< \~english Force day screen
310 int16_t force_night; //!< \~english Force night screen
311 } VIH_VIDEOBRIGHTNESS;
314 * \~english Structure for video image quality parameters
316 typedef struct TagVideoInHalVideoParamSetUp {
317 u_int8_t source; //!< \~english Source type for quality setting
318 u_int8_t reserve[3]; //!< \~english reserve
319 VIH_VIDEOTONE tone; //!< \~english Tone
320 VIH_VIDEOHUE hue; //!< \~english Hue
321 VIH_VIDEOCONTRAST contrast; //!< \~english Contrast
322 VIH_VIDEOBRIGHTNESS brightness; //!< \~english Brightness
323 } VIH_VIDEO_PARAM_SETUP;
326 * \~english Structure for video position and angle
328 typedef struct TagVideoInHalVideoPos {
329 u_int32_t aspect_x; //!< \~english Display position x
330 u_int32_t aspect_y; //!< \~english Display position y
331 u_int32_t aspect_w; //!< \~english Display width
332 u_int32_t aspect_h; //!< \~english Display height
336 * \~english Structure for video parameters
338 typedef struct TagVideoInHalVideoParam {
339 u_int8_t source; //!< \~english Video Source
340 u_int8_t type; //!< \~english TV type
341 u_int8_t interlace; //!< \~english De-interlace
342 u_int8_t aspect; //!< \~english Aspect Value
343 VIH_VIDEOPOS angle; //!< \~english Angle
344 VIH_VIDEO_PARAM_SETUP setup; //!< \~english Quality setting
345 u_int8_t monitor; //!< \~english Monitor
346 u_int8_t mute; //!< \~english Mute
347 u_int8_t aspect_ratio; //!< \~english Aspect ratio
348 u_int8_t reserve; //!< \~english Reserve
349 u_int32_t window_priority; //!< \~english Window priority
353 * \~english Structure for display identify
355 typedef struct TagVideoInHalDispVideoID {
356 VIH_CONTEXT kind; //!< \~english Context type
357 struct timespec tp; //!< \~english Context create time
361 * \~english Structure for display information
363 typedef struct TagVideoInHalDispVideoInfo {
364 VIH_DISPVIDEOID context_id; //!< \~english Context identify
365 u_int32_t dsp_idx; //!< \~english Display index
366 u_int32_t chgflg; //!< \~english Setting change flag
370 * \~english Structure for display context
372 typedef struct TagVideoInHalDispMngCtx {
373 VIH_DISPVIDEOINFO info; //!< \~english Display information
374 VIH_DISPPARAM disp_param[VIH_DISP_IDX_NUM_MAX]; //!< \~english Display parameter
375 VIH_VIDEOPARAM video_param[VIH_VIDEO_OUT_NUM_MAX]; //!< \~english Video parameter
379 * \~english Structure for diagnosis code data
381 typedef struct TagVideoInHalGRMainReqDiagData {
382 uint64_t err_id; //!< \~english Error ID
383 uint16_t videoinhal_code; //!< \~english Code
384 uint8_t reserve1[2]; //!< \~english Reserve
385 } VIH_GR_MAIN_REQ_DIAGDATA;
389 * \ingroup SendDiagCodeCallBack
390 * \~english @par Brief
391 * Send diagnosis code call back.
392 * \~english @param [in] snd_info
393 * u_int16_t - Send information
394 * \~english @param [in] msg_id
395 * u_int32_t - Message ID
396 * \~english @param [in] diag_data
397 * VIH_GR_MAIN_REQ_DIAGDATA* - Diagnosis code data
401 * VIH_DISP_SEQ_CTRL 0x0003 // Sequence control
402 * VIH_DISP_VCAP1_CTRL 0x0005 // Video capture1 control
403 * VIH_DISP_VCAP2_CTRL 0x0006 // Video capture2 control
408 * VIH_DISP_MAIN_IND_PUTDIAG (0x5200) // Put diagnosis code
409 * VIH_DISP_MAIN_IND_DELDIAG (0x5201) // Delete diagnosis code
412 * VIH_GR_MAIN_REQ_DIAGDATA struct
414 * typedef struct TagVideoInHalGRMainReqDiagData
416 * uint64_t err_id; // Error ID
417 * uint16_t videoinhal_code; // Videoinhal code
418 * uint8_t reserve1[2]; // Reserve
419 * } VIH_GR_MAIN_REQ_DIAGDATA;
421 * \~english @retval 0 : OK
422 * \~english @retval -1 : Invalid parameter
423 * \~english @par Detail
424 * - Notify diagnosis code request to graphics_service.
425 * \~english @par Prerequisite
427 * \~english @par Conditions of processing failure
428 * - When input parameter diag_data is NULL, return with error. [-1]
429 * \~english @par Classification
431 * \~english @par Type
436 typedef int (*SendDiagCodeCallBack)(u_int16_t snd_info, u_int32_t msg_id, VIH_GR_MAIN_REQ_DIAGDATA* diag_data);
440 * \~english @par Brief
441 * API to display device initialize.
442 * \~english @param [in] call_back
443 * SendDiagCodeCallBack - Send diagnosis trace code call back function
444 * \~english @retval VIH_RET_SUCCESS : OK
445 * \~english @retval VIH_RET_INVALID_PARAMETER : Invalid parameter
446 * \~english @par Detail
447 * - Display device initialize, init parameter and threads.
448 * - The API can only be used by 1 process.
449 * \~english @par Prerequisite
451 * \~english @par Conditions of processing failure
452 * - When display device driver can not be found, return with error. [VIH_RET_INVALID_PARAMETER]
453 * \~english @par Classification
455 * \~english @par Type
460 VIH_RET InitVideo(SendDiagCodeCallBack call_back);
463 * \ingroup ControlVideo
464 * \~english @par Brief
465 * API to Control display device.
466 * \~english @param [in] pctx
467 * VIH_DISPMNGCTX* - Point of parameter used by control display device
468 * \~english @param [in] event_id
469 * VIH_EVENTID - Event ID
470 * \~english @param [in] control_id
471 * VIH_CONTROLID - Control ID
473 * VIH_DISPMNGCTX struct
475 * typedef struct TagVideoInHalDispMngCtx
477 * VIH_DISPVIDEOINFO info; // Information of display
478 * VIH_DISPPARAM disp_param[VIH_DISP_IDX_NUM_MAX]; // Paramter of diaplay
479 * VIH_VIDEOPARAM video_param[VIH_VIDEO_OUT_NUM_MAX]; // Paramter of video
485 * typedef enum TagVideoInHalEventID
487 * VIH_EVENT_ID_SOURCE, // Display source change
488 * VIH_EVENT_ID_QUALITY, // Set quality(display)
489 * VIH_EVENT_ID_VIDEOQUALITY, // Set quality(video)
490 * VIH_EVENT_ID_ASPECT, // Set aspect
491 * VIH_EVENT_ID_MONITOR, // Set monitor(display)
492 * VIH_EVENT_ID_VIDEOVISIBLE, // Set video visible(video)
493 * VIH_EVENT_ID_MUTE, // Set mute
494 * VIH_EVENT_ID_BACKLIGHT, // Set backlight
495 * VIH_EVENT_ID_NUM_MAX
501 * typedef enum TagVideoInHalControlID
503 * VIH_CONTROL_ID_SOURCE, // Display source change
504 * VIH_CONTROL_ID_QUALITY, // Set quality(display)
505 * VIH_CONTROL_ID_VIDEOQUALITY, // Set quality(video)
506 * VIH_CONTROL_ID_ASPECT, // Set aspect
507 * VIH_CONTROL_ID_MONITOR, // Set monitor(display)
508 * VIH_CONTROL_ID_VIDEOVISIBLE, // Set video visible(video)
509 * VIH_CONTROL_ID_START_CAPTURE, // Start capture
510 * VIH_CONTROL_ID_STOP_CAPTURE, // Stop capture
511 * VIH_CONTROL_ID_TVTYPE, // Set TV type
512 * VIH_CONTROL_ID_DEINTERLACE, // Set de-interlace
513 * VIH_CONTROL_ID_VMUTE, // Set mute
514 * VIH_CONTROL_ID_BACKLIGHT, // Set backlight
515 * VIH_CONTROL_ID_NUM_MAX
518 * \~english @retval VIH_RET_SUCCESS : OK
519 * \~english @retval VIH_RET_INVALID_PARAMETER : Invalid parameter
520 * \~english @retval VIH_RET_INTERNAL_ERROR : Internal error
521 * \~english @par Detail
522 * - Control display device. Include display source, quality(display), quality(video), aspect , monitor, video visible, start capture, stop capture, mute, backlight, TV type, de-interlace.
523 * - The API can only be used by 1 process.
524 * \~english @par Prerequisite
526 * \~english @par Conditions of processing failure
527 * - The point param is null [VIH_RET_INVALID_PARAMETER]
528 * - The display driver return error [VIH_RET_INTERNAL_ERROR]
529 * \~english @par Classification
531 * \~english @par Type
536 VIH_RET ControlVideo(VIH_DISPMNGCTX* pctx, VIH_EVENTID event_id, VIH_CONTROLID control_id);
539 * \ingroup TerminateVideo
540 * \~english @par Brief
541 * API to display device Terminate.
542 * \~english @param None
543 * \~english @retval VIH_RET_SUCCESS : OK
544 * \~english @par Detail
545 * - Display device Terminate, init parameter.
546 * - The API can only be used by 1 process.
547 * \~english @par Prerequisite
548 * - Call InitVideo().
549 * \~english @par Conditions of processing failure
551 * \~english @par Classification
553 * \~english @par Type
558 VIH_RET TerminateVideo();
564 /** @}*/ //!< end of video_in_hal
565 /** @}*/ //!< end of graphics_service
567 #endif // HAL_API_VIDEO_IN_HAL_H_