コード例 #1
0
HI_S32 SAMPLE_COMM_VO_HdmiStart(VO_INTF_SYNC_E enIntfSync)
{
    HI_HDMI_INIT_PARA_S stHdmiPara;
    HI_HDMI_ATTR_S      stAttr;
    HI_HDMI_VIDEO_FMT_E enVideoFmt;

    SAMPLE_COMM_VO_HdmiConvertSync(enIntfSync, &enVideoFmt);

    stHdmiPara.enForceMode = HI_HDMI_FORCE_HDMI;
    stHdmiPara.pCallBackArgs = NULL;
    stHdmiPara.pfnHdmiEventCallback = NULL;
    HI_MPI_HDMI_Init(&stHdmiPara);

    HI_MPI_HDMI_Open(HI_HDMI_ID_0);

    HI_MPI_HDMI_GetAttr(HI_HDMI_ID_0, &stAttr);

    stAttr.bEnableHdmi = HI_TRUE;
    
    stAttr.bEnableVideo = HI_TRUE;
    stAttr.enVideoFmt = enVideoFmt;

    stAttr.enVidOutMode = HI_HDMI_VIDEO_MODE_YCBCR444;
    stAttr.enDeepColorMode = HI_HDMI_DEEP_COLOR_OFF;
    stAttr.bxvYCCMode = HI_FALSE;

    stAttr.bEnableAudio = HI_FALSE;
    stAttr.enSoundIntf = HI_HDMI_SND_INTERFACE_I2S;
    stAttr.bIsMultiChannel = HI_FALSE;

    stAttr.enBitDepth = HI_HDMI_BIT_DEPTH_16;

    stAttr.bEnableAviInfoFrame = HI_TRUE;
    stAttr.bEnableAudInfoFrame = HI_TRUE;
    stAttr.bEnableSpdInfoFrame = HI_FALSE;
    stAttr.bEnableMpegInfoFrame = HI_FALSE;

    stAttr.bDebugFlag = HI_FALSE;          
    stAttr.bHDCPEnable = HI_FALSE;

    stAttr.b3DEnable = HI_FALSE;

    /* It's recommended to use DVI transmission for VESA standard Timing */
    if (enIntfSync > VO_OUTPUT_480P60)
    {
        stAttr.bEnableHdmi = HI_FALSE;
        stAttr.bEnableAudInfoFrame = HI_FALSE;
        stAttr.enVidOutMode = HI_HDMI_VIDEO_MODE_RGB444;
        stAttr.bEnableAviInfoFrame = HI_FALSE;
    }
    
    HI_MPI_HDMI_SetAttr(HI_HDMI_ID_0, &stAttr);

    HI_MPI_HDMI_Start(HI_HDMI_ID_0);
    
    printf("HDMI start success.\n");
    return HI_SUCCESS;
}
コード例 #2
0
HI_S32 SAMPLE_COMM_AUDIO_StartHdmi(AIO_ATTR_S *pstAioAttr)
{
    HI_S32 s32Ret;
    HI_HDMI_ATTR_S stHdmiAttr;
    HI_HDMI_ID_E enHdmi = HI_HDMI_ID_0;
    VO_PUB_ATTR_S stPubAttr;
    VO_DEV VoDev = 0;
    
    stPubAttr.u32BgColor = 0x0000ff00;
    stPubAttr.enIntfType = VO_INTF_HDMI|VO_INTF_VGA;
    stPubAttr.bDoubleFrame = HI_FALSE;
    stPubAttr.enIntfSync = VO_OUTPUT_1080P30;

    if(HI_SUCCESS != SAMPLE_COMM_VO_StartDevLayer(VoDev, &stPubAttr, 25))
    {
        printf("[Func]:%s [Line]:%d [Info]:%s\n", __FUNCTION__, __LINE__, "failed");
        return HI_FAILURE;
    }

    s32Ret = SAMPLE_COMM_VO_HdmiStart(stPubAttr.enIntfSync);
    if(HI_SUCCESS != s32Ret)
    {
        printf("[Func]:%s [Line]:%d [Info]:%s\n", __FUNCTION__, __LINE__, "failed");
        return HI_FAILURE;
    }

    HI_MPI_HDMI_SetAVMute(enHdmi, HI_TRUE);
    
    s32Ret = HI_MPI_HDMI_GetAttr(enHdmi, &stHdmiAttr);
    if(HI_SUCCESS != s32Ret)
    {
        printf("[Func]:%s [Line]:%d [Info]:%s\n", __FUNCTION__, __LINE__, "failed");
        return HI_FAILURE;
    }
    stHdmiAttr.bEnableAudio = HI_TRUE;        /**< \CAǷ\F1Enable\D2\F4Ƶ */
    stHdmiAttr.enSoundIntf = HI_HDMI_SND_INTERFACE_I2S; /**< HDMI\D2\F4Ƶ\C0\B4Դ, \BD\A8\D2\E9HI_HDMI_SND_INTERFACE_I2S,\B4˲\CE\CA\FD\D0\E8Ҫ\D3\EBAO\CA\E4\C8뱣\B3\D6һ\D6\C2 */
    stHdmiAttr.enSampleRate = (HI_HDMI_SAMPLE_RATE_E)pstAioAttr->enSamplerate;        /**< PCM\D2\F4Ƶ\B2\C9\D1\F9\C2\CA,\B4˲\CE\CA\FD\D0\E8Ҫ\D3\EBAO\B5\C4\C5\E4\D6ñ\A3\B3\D6һ\D6\C2 */
    stHdmiAttr.u8DownSampleParm = HI_FALSE;    /**< PCM\D2\F4Ƶ\CF\F2\CF\C2downsample\B2\C9\D1\F9\C2ʵIJ\CE\CA\FD\A3\ACĬ\C8\CFΪ0 */
    
    stHdmiAttr.enBitDepth = 8 * (pstAioAttr->enBitwidth+1);   /**< \D2\F4Ƶλ\BF\ED\A3\ACĬ\C8\CFΪ16,\B4˲\CE\CA\FD\D0\E8Ҫ\D3\EBAO\B5\C4\C5\E4\D6ñ\A3\B3\D6һ\D6\C2 */
    stHdmiAttr.u8I2SCtlVbit = 0;        /**< \B1\A3\C1\F4\A3\AC\C7\EB\C5\E4\D6\C3Ϊ0, I2S control (0x7A:0x1D) */
    
    stHdmiAttr.bEnableAviInfoFrame = HI_TRUE; /**< \CAǷ\F1ʹ\C4\DC AVI InfoFrame\A3\AC\BD\A8\D2\E9ʹ\C4\DC */
    stHdmiAttr.bEnableAudInfoFrame = HI_TRUE;; /**< \CAǷ\F1ʹ\C4\DC AUDIO InfoFrame\A3\AC\BD\A8\D2\E9ʹ\C4\DC */

    s32Ret = HI_MPI_HDMI_SetAttr(enHdmi, &stHdmiAttr);
    if(HI_SUCCESS != s32Ret)
    {
        printf("[Func]:%s [Line]:%d [Info]:%s\n", __FUNCTION__, __LINE__, "failed");
        return HI_FAILURE;
    }
    HI_MPI_HDMI_SetAVMute(enHdmi, HI_FALSE);
    
    return HI_SUCCESS;
}
コード例 #3
0
ファイル: sample_comm_audio.c プロジェクト: dulton/d3100
HI_S32 SAMPLE_COMM_AUDIO_StartHdmi(AIO_ATTR_S *pstAioAttr)
{
    HI_S32 s32Ret;
    HI_HDMI_ATTR_S stHdmiAttr;
    HI_HDMI_ID_E enHdmi = HI_HDMI_ID_0;
    VO_PUB_ATTR_S stPubAttr;
    VO_DEV VoDev = 0;
    
    stPubAttr.u32BgColor = 0x000000ff;
    stPubAttr.enIntfType = VO_INTF_HDMI;
    stPubAttr.bDoubleFrame = HI_FALSE;
    stPubAttr.enIntfSync = VO_OUTPUT_1080P30;

    if(HI_SUCCESS != SAMPLE_COMM_VO_StartDevLayer(VoDev, &stPubAttr, 25))
    {
        printf("[Func]:%s [Line]:%d [Info]:%s\n", __FUNCTION__, __LINE__, "failed");
        return HI_FAILURE;
    }

    s32Ret = SAMPLE_COMM_VO_HdmiStart(stPubAttr.enIntfSync);
    if(HI_SUCCESS != s32Ret)
    {
        printf("[Func]:%s [Line]:%d [Info]:%s\n", __FUNCTION__, __LINE__, "failed");
        return HI_FAILURE;
    }

    HI_MPI_HDMI_SetAVMute(enHdmi, HI_TRUE);
    
    s32Ret = HI_MPI_HDMI_GetAttr(enHdmi, &stHdmiAttr);
    if(HI_SUCCESS != s32Ret)
    {
        printf("[Func]:%s [Line]:%d [Info]:%s\n", __FUNCTION__, __LINE__, "failed");
        return HI_FAILURE;
    }
    stHdmiAttr.bEnableAudio = HI_TRUE;        /**< 是否Enable音频 */
    stHdmiAttr.enSoundIntf = HI_HDMI_SND_INTERFACE_I2S; /**< HDMI音频来源, 建议HI_HDMI_SND_INTERFACE_I2S,此参数需要与AO输入保持一致 */
    stHdmiAttr.enSampleRate = pstAioAttr->enSamplerate;        /**< PCM音频采样率,此参数需要与AO的配置保持一致 */
    stHdmiAttr.u8DownSampleParm = HI_FALSE;    /**< PCM音频向下downsample采样率的参数,默认为0 */
    
    stHdmiAttr.enBitDepth = 8 * (pstAioAttr->enBitwidth+1);   /**< 音频位宽,默认为16,此参数需要与AO的配置保持一致 */
    stHdmiAttr.u8I2SCtlVbit = 0;        /**< 保留,请配置为0, I2S control (0x7A:0x1D) */
    
    stHdmiAttr.bEnableAviInfoFrame = HI_TRUE; /**< 是否使能 AVI InfoFrame,建议使能 */
    stHdmiAttr.bEnableAudInfoFrame = HI_TRUE;; /**< 是否使能 AUDIO InfoFrame,建议使能 */

    s32Ret = HI_MPI_HDMI_SetAttr(enHdmi, &stHdmiAttr);
    if(HI_SUCCESS != s32Ret)
    {
        printf("[Func]:%s [Line]:%d [Info]:%s\n", __FUNCTION__, __LINE__, "failed");
        return HI_FAILURE;
    }
    HI_MPI_HDMI_SetAVMute(enHdmi, HI_FALSE);
    
    return HI_SUCCESS;
}
コード例 #4
0
ファイル: sdk_fix.c プロジェクト: Hi-Spy/hidvr-git
HI_S32 HI_VO_HdmiStart(VO_INTF_SYNC_E enIntfSync)
{
    int ii = 0;
    while (HDMI_CONVTBL[ii][0] != enIntfSync) {
        if(ii >= ARRAY_SIZE(HDMI_CONVTBL)) {
            return -1;
        }
        ii ++;
    }

    HI_MPI_HDMI_Stop(HI_HDMI_ID_0);
    HI_MPI_HDMI_Close(HI_HDMI_ID_0);
    HI_MPI_HDMI_DeInit();

    {
        HI_HDMI_INIT_PARA_S stHdmiPara;
        stHdmiPara.enForceMode          = HI_HDMI_FORCE_HDMI;
        stHdmiPara.pCallBackArgs        = NULL;
        stHdmiPara.pfnHdmiEventCallback = NULL;
        HI_MPI_HDMI_Init(&stHdmiPara);
    }

    {
        HI_HDMI_ATTR_S      stAttr;
        HI_MPI_HDMI_Open(HI_HDMI_ID_0);
        HI_MPI_HDMI_GetAttr(HI_HDMI_ID_0, &stAttr);

        stAttr.bEnableHdmi          = HI_TRUE;
        stAttr.bEnableVideo         = HI_TRUE;
        stAttr.enVideoFmt           = HDMI_CONVTBL[ii][1];
        stAttr.enVidOutMode         = HI_HDMI_VIDEO_MODE_RGB444;
        stAttr.enDeepColorMode      = HI_HDMI_DEEP_COLOR_24BIT;
        stAttr.bxvYCCMode           = HI_FALSE;
        stAttr.bEnableAudio         = HI_TRUE;
        stAttr.enSoundIntf          = HI_HDMI_SND_INTERFACE_I2S;
        stAttr.bIsMultiChannel      = HI_FALSE;
        stAttr.enBitDepth           = HI_HDMI_BIT_DEPTH_16;
		stAttr.enSampleRate         = HI_HDMI_SAMPLE_RATE_8K;
		stAttr.u8DownSampleParm     = HI_FALSE;
		stAttr.u8I2SCtlVbit         = 0;
        stAttr.bEnableAviInfoFrame  = HI_TRUE;
        stAttr.bEnableAudInfoFrame  = HI_TRUE;
        stAttr.bEnableSpdInfoFrame  = HI_FALSE;
        stAttr.bEnableMpegInfoFrame = HI_FALSE;
        stAttr.bDebugFlag           = HI_FALSE;
        stAttr.bHDCPEnable          = HI_FALSE;
        stAttr.b3DEnable            = HI_FALSE;

        HI_MPI_HDMI_SetAttr(HI_HDMI_ID_0, &stAttr);
        HI_MPI_HDMI_Start(HI_HDMI_ID_0);
    }

    return HI_SUCCESS;
}