/**
 * @brief           VIA Manager Header
 * @author          AXELL CORPORATION
 * @description     VIA Manager Layer.
 * @note            none
 * @history         2017_02_22  初版
 * @history         2017_10_26  Ver2.0
 * @history         2019_03_08  [SDK2.2] VIAにビデオ入力の信号が有効であることを検出する関数を追加 (#2454)
*/
/* DOM-IGNORE-BEGIN */
/*
 * This program was created by AXELL CORPORATION.
 * Copyright (C) 2017-2019 AXELL CORPORATION, all rights reserved.
 */

#ifndef VIAMGR_H
#define VIAMGR_H
/* DOM-IGNORE-END */

#ifdef __cplusplus
extern "C" {
#endif

#include <stdint.h>
#include <stdbool.h>
#include "AG903_errno.h"

/** アナログビデオ入力ポート数 */
#define AG903_VIA_MGR_MAX_PORTS             (4)

/** アナログビデオ入力ハンドルを識別するユニークなID */
#define AG903_VIA_MGR_INPUT_HANDLE_ID       (0xA1234AAA)

/** 入力フォーマット NTSC/ITU-BT.601 */
#define AG903_VIA_MGR_FORMAT_NTSC_BT        (0)
/** 入力フォーマット NTSC/SquarePixel */
#define AG903_VIA_MGR_FORMAT_NTSC_SQ        (1)
/** 入力フォーマット NTSC/3Fsc */
#define AG903_VIA_MGR_FORMAT_NTSC_4F        (2)
/** 入力フォーマット PAL/ITU-BT.601 */
#define AG903_VIA_MGR_FORMAT_PAL_BT         (3)
/** 入力フォーマット PAL/SquarePixel */
#define AG903_VIA_MGR_FORMAT_PAL_SQ         (4)
/** 入力フォーマット数 */
#define AG903_VIA_MGR_FORMAT_MAX            (5)

/** カラーモード カラー */
#define AG903_VIA_MGR_MODE_COLOR            (0)
/** カラーモード モノクロ */
#define AG903_VIA_MGR_MODE_MONOCHROME       (1)
/** カラーモード数 */
#define AG903_VIA_MGR_MODE_MAX              (2)

/**
 * アナログビデオ入力ハンドル
 */
typedef struct _AG903_ViaMgrInputHandle {
    uint32_t id;                /** アナログビデオ入力ポートハンドルを識別するためのID */
    uint32_t port_no;           /** 入力ポートの物理No */
} AG903_ViaMgrInputHandle;

int32_t AG903_ViaMgrInit(void);
int32_t AG903_ViaMgrGetInputHandle(int32_t *ports, int32_t num_ports, AG903_ViaMgrInputHandle **handles);
int32_t AG903_ViaMgrReleaseInputHandle(AG903_ViaMgrInputHandle *handle);
int32_t AG903_ViaMgrSetInputParameter(AG903_ViaMgrInputHandle *handle, uint32_t format, uint32_t mode);
int32_t AG903_ViaMgrIsInputValid(AG903_ViaMgrInputHandle *handle);

#ifdef __cplusplus
}
#endif

#endif
