亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? saa7113.c

?? SAA7113在psos下的驅動程序,及7113的硬件datasheet
?? C
?? 第 1 頁 / 共 3 頁
字號:
        return (tmLibdevErr_t) lastI2cError;               /* Switch input mode (line) */
    SetReg(pVD, AnalogInputControl1, ucVal & ~0x0f | (num & 0x0f));

    return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7113GetAnalogInput(pboardVIDec_t pVD, unsigned int *num)
{ 
    /* Similar to Video DecHAL VideoDecGetVideoSource */

    UInt8 ucVal;

    /* Read video input source from decoder */
    if (!GetReg(pVD, AnalogInputControl1, &ucVal))
        return (tmLibdevErr_t) lastI2cError;               

    *num = ucVal & 0x0F;;
    
    return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7113SetStandard(pboardVIDec_t pVD, tmVideoAnalogStandard_t standard)
{ 
    /* Equivalent to Video DecHAL SetVideoStandard */

    UInt8 ucVal;
                                                 /* Only check first access */
    if (GetReg(pVD, ChromaControl, &ucVal))      /* Read old value */
    {
        ucVal &= ~0x73;                          /* Delete video standard bits; */
        switch (standard)
        {
            case vasNTSC:
            case vasPAL:
                SetReg(pVD, ChromaControl, ucVal | 0x01);
                
                GetReg(pVD, LuminanceControl, &ucVal);
                SetReg(pVD, LuminanceControl, (ucVal & ~0x03) | 0x01);  /* Aperture factor */
                
                break;
            case vasSECAM:
                SetReg(pVD, ChromaControl, ucVal | 0x50);    
        
                                GetReg(pVD, LuminanceControl, &ucVal);
                SetReg(pVD, LuminanceControl, (ucVal & ~0x03) | 0x00);  /* Aperture factor */
                
                GetReg(pVD, ChromaGainControl, &ucVal);
                SetReg(pVD, ChromaGainControl, (ucVal & ~0x80) | 0x80); /* Set ACGC=1                */
                break;
            default:
                return BOARD_ERR_VAL_OUT_OF_RANGE;
        }
    }
    else
        return (tmLibdevErr_t) lastI2cError;

    return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7113SetSourceType(pboardVIDec_t pVD, tmVideoSourceType_t type)
{
    /* Equivalent to Video DecHAL VideoDecSetSourceType */

    UInt8 ucVal;
                                                /* Check only forst access */
    if (GetReg(pVD, SyncControl, &ucVal))       /* Read old value */
    {
        if (type == vsoVCR)
            SetReg(pVD, SyncControl, ucVal & ~0x18 | 0x18);/* Set bit, if VCR */
        else
            SetReg(pVD, SyncControl, ucVal & ~0x18 | 0x00);/* else, clear bit */
    }
    else
        return (tmLibdevErr_t) lastI2cError;

    return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7113GetSourceType(pboardVIDec_t pVD, tmVideoSourceType_t *type)
{
    /* Equivalent to Video DecHAL VideoDecGetSourceType */

    UInt8 ucVal;
                                                /* Check only forst access */
    if (GetReg(pVD, SyncControl, &ucVal))            /* Read old value */
    {
        if (ucVal & 0x18 == 0x18)
            *type = vsoVCR;
        else     
            *type = vsoTV;
    }
    else
        return (tmLibdevErr_t) lastI2cError;

    return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7113SetOutputFormat(pboardVIDec_t pVD, tmVideoRGBYUVFormat_t format)
{ 
    /* Equivalent to Video DecHAL VideoDecSetVideoFormat */

    UInt8 ucVal;                                 /* Old value */

    UInt8 ucFormat = 0;                          /* Format bits */

    switch (format)
    {
        case vdfYUV422Sequence : /* VD_D1_CCIR656: */
            ucFormat = 0x00;
            break;
        default:
            return BOARD_ERR_VAL_OUT_OF_RANGE;
    }

    if (GetReg(pVD, FormatDelayControl, &ucVal))
        SetReg(pVD, FormatDelayControl, ucVal & ~0x80 | ucFormat);
    else
        return (tmLibdevErr_t) lastI2cError;

  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7113GetOutputFormat(pboardVIDec_t pVD, tmVideoRGBYUVFormat_t *format)
{
    /* Equivalent to Video DecHAL VideoDecGetVideoFormat */

    *format = vdfYUV422Sequence; 
    return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7113SetAcquisitionWnd(pboardVIDec_t pVD, unsigned int beginX, unsigned int beginY, unsigned int endX, unsigned int endY)
{ 
    /* Equivalent to Video DecHALSetAcquisitionWnd */

    /* Scaling not supported by SAA7113 -> return error */
    return BOARD_ERR_UNSUPPORTED_FUNCTION;
}

extern tmLibdevErr_t
saa7113GetAcquisitionWnd(pboardVIDec_t pVD, unsigned int *beginX, unsigned int *beginY, unsigned int *endX, unsigned int *endY)
{
    /* Equivalent to Video DecHALGetAcquisitionWnd  */

    /* Scaling not supported by SAA7113 -> return error */
    return BOARD_ERR_UNSUPPORTED_FUNCTION;
}

extern tmLibdevErr_t
saa7113GetDefaultAcquisitionWnd(pboardVIDec_t pVD, unsigned int *beginX, unsigned int *beginY, unsigned int *endX, unsigned int *endY)
{ 
    /* Equivalent to Video DecHAL VideoDecGetDefaultAcquisitionWnd */

    switch (pVD->curVideoStandard)
    {
    case vasNTSC:
        /* Set default acquisition window for NTSC */
        *beginX = 6;
        *beginY = 2;
        *endX   = *beginX + 719;
        *endY   = *beginY + 239;
        break;
    case vasPAL:
        /* Set default acquisition window for PAL */
        *beginX = 6;
        *beginY = 1;
        *endX   = *beginX + 719;
        *endY   = *beginY + 287;
        break;
    default:
        return BOARD_ERR_COLOR_STANDARD_NOT_DETECTED;
    }

    return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7113SetOutputSize(pboardVIDec_t pVD, unsigned int width, unsigned int height)
{
    /* Equivalent to Video DecHAL VideoDecSetOutputVideoSize */

    /* Scaling not supported by SAA7113 -> return error */
    return BOARD_ERR_UNSUPPORTED_FUNCTION;
}

extern tmLibdevErr_t
saa7113SetInterlaceMode(pboardVIDec_t pVD, Bool interlace)
{
    /* Equivalent to Video DecHAL VideoDecSetInterlacedMode */

    /* Nothing to set for 7113 -> return error */
    return BOARD_ERR_UNSUPPORTED_FUNCTION;
}

extern tmLibdevErr_t
saa7113DisableDecoder(pboardVIDec_t pVD, Bool disable)
{
    /* Counterpart to Video DecHAL VideoDecEnableDecoder */

    UInt8 ucValue;

    if (!GetReg(pVD, OutputControl1, &ucValue))        /* Check only first access */
        return (tmLibdevErr_t) lastI2cError;

    SetReg(pVD, OutputControl1, (ucValue & ~0x0c) | (disable ? 0x00 : 0x0c));

    return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7113EnablePowerSaveMode(pboardVIDec_t pVD, Bool enable)
{ 
    /* Equivalent to Video DecHAL VideoDecPowerSaveMode */

    /* Nothing to set for 7113 -> return error */
    return BOARD_ERR_UNSUPPORTED_FUNCTION;
}

extern tmLibdevErr_t
saa7113GetGPIOCount(pboardVIDec_t pVD, unsigned int *num)
{
    /* Equivalent to Video DecHAL VideoDecGetGPIOCount */

    *num = 3;       /* 3 GPIO pins available */

    return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7113SetGPIOState(pboardVIDec_t pVD, unsigned int pin, Bool state)
{
    /* Equivalent to Video DecHAL VideoDecSetGPIOState */

    unsigned int  ucNum;
    UInt8 ucValue;
    saa7113GetGPIOCount(pVD, &ucNum);           /* Get number of GPIOs */

    if (pin >= ucNum)
        return BOARD_ERR_VAL_OUT_OF_RANGE;

    switch (pin)
    {
        case 0:                                 /* RTS0 */
                                                /* Check only first access */
            if (!GetReg(pVD, OutputControl2, &ucValue))
                return (tmLibdevErr_t) lastI2cError;
            SetReg(pVD, OutputControl2, ucValue & ~0x0f | (state ? 0x03 :0x02));
            break;
        case 1:                                 /* RTS1 */
                                                /* Check only first access */
            if (!GetReg(pVD, OutputControl2, &ucValue))
                return (tmLibdevErr_t) lastI2cError;
            SetReg(pVD, OutputControl2, ucValue & ~0xf0 | (state ? 0x30 :0x20));
            break;
        case 2:                                 /* GPSW */
                                                /* Check only first access */
            if (!GetReg(pVD, OutputControl1, &ucValue))
                return (tmLibdevErr_t) lastI2cError;
            SetReg(pVD, OutputControl1, ucValue & ~0x80 | (state ? 0x80 :0x00));
            break;
        default:
            return BOARD_ERR_VAL_OUT_OF_RANGE;
    }

    return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7113GetGPIOState(pboardVIDec_t pVD, unsigned int pin, Bool *state)
{ 
    /* Equivalent to Video DecHAL VideoDecGetGPIOState */

    unsigned int  ucNum;
    UInt8 ucValue;
    saa7113GetGPIOCount(pVD, &ucNum);                /* Get number of GPIO's */

    if (pin >= ucNum)
        return BOARD_ERR_VAL_OUT_OF_RANGE;

    /* Assume pin is not set */
    *state = 0;

    switch (pin)
    {
        case 0:                                 /* RTS0 */
                                                /* Check only first access */
            if (!GetReg(pVD, OutputControl2, &ucValue))
                return (tmLibdevErr_t) lastI2cError;
            if ((ucValue & 0x0f) ==  0x03)
                *state = 1;                   /* Overwrite 0 */
            break;
        case 1:                                 /* RTS1 */
                                                /* Check only first access */
            if (!GetReg(pVD, OutputControl2, &ucValue))
                return (tmLibdevErr_t) lastI2cError;
            if ((ucValue & 0xf0) ==  0x30)
                *state = 1;                   /* Overwrite 0 */
            break;
        case 2:                                 /* GPSW */
                                                /* Check only first access */
            if (!GetReg(pVD, OutputControl1, &ucValue))
                return (tmLibdevErr_t) lastI2cError;
            if (ucValue & 0x80)
                *state = 1;                   /* Overwrite 0 */
            break;
        default:
            return BOARD_ERR_VAL_OUT_OF_RANGE;
    }

    return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7113OpenVBI(pboardVIDec_t pVD, unsigned int sampleFreq, unsigned int startLine, unsigned int numLines)
{
    /* Equivalent to Video DecHAL VideoDecOpenVBI */

    tmVideoAnalogStandard_t videoStd;

    /* Only 13.5 MHz sample frequency allowed */
    if (sampleFreq != 0)
        if (sampleFreq != 13500000)
          return BOARD_ERR_VAL_OUT_OF_RANGE;    /* Not valid call */

    if (startLine || numLines)                  /* if not 0 */
    {
                                                /* Check for underflow */
        if ((startLine + numLines) < 2) return BOARD_ERR_VAL_OUT_OF_RANGE;

        /* Get current video standard */
        saa7113GetStandardM (pVD, &videoStd);

        switch (videoStd)
        {
            case vasPAL:                        /* 50 Hz standards */
            case vasSECAM:
                if ((startLine + numLines) > 312) 
                    return BOARD_ERR_VAL_OUT_OF_RANGE;
                break;
            case vasNTSC:                       /* 60 Hz standards */
                if ((startLine + numLines) > 262) 
                    return BOARD_ERR_VAL_OUT_OF_RANGE;
                break;
            default:
                return BOARD_ERR_VAL_OUT_OF_RANGE;
         }
    }

    m_nStartVBILine = startLine;
    m_nNumVBILines = numLines;

    return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7113EnableVBI(pboardVIDec_t pVD, Bool enable)
{ 
    /* Equivalent to Video DecHAL VideoDecEnableVBI */

    UInt8 ucVal;

    int nCount, i;
    tmVideoDataService_t  ucTTMode;
    tmVideoDataService_t  oddTable[24];
    tmVideoDataService_t  evenTable[24];

    SetReg(pVD, VGateStart, 0);                      /* VBI off */
    SetReg(pVD, VGateStop, 0);
    SetReg(pVD, VGateMSB, 0);

    if(!GetReg(pVD, LuminanceControl, &ucVal))   /* Check only first access */
        return (tmLibdevErr_t) lastI2cError;     /* Clear VBLB bit */
    SetReg(pVD, LuminanceControl, ucVal & ~0x08 | 0x00);

    ucTTMode = vdsNone;

    for(i = 0; i < 24; i++)
    {
        oddTable[i] = vdsNone;
        evenTable[i] = vdsNone;
    }

    if(ucTTMode != (UInt8)vdsNone)
    {
        for(nCount = m_nStartVBILine;
            nCount<((int)m_nStartVBILine + (int)m_nNumVBILines);
            nCount++)
        {
            oddTable[nCount] = ucTTMode;
            evenTable[nCount] = ucTTMode;
        }
    }

    saa7113SetDataServices (pVD, oddTable, evenTable, 24);

    return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7113SetVBIMode(pboardVIDec_t pVD, tmVideoVBIMode_t mode)
{ 
    /* Equivalent to Video DecHAL VideoDecSetCurrentVBIMode */

    if (mode == vvmBasebandYuv)
        return TMLIBDEV_OK;
    else
        return  BOARD_ERR_VAL_OUT_OF_RANGE;
}

extern tmLibdevErr_t 
saa7113SetSlicerMode(pboardVIDec_t pVD, tmVideoSlicerMode_t mode)
{ 
    /* Equivalent to Video DecHAL VideoDecSetTTMode */

    /* Only baseband YUV allowed */
    if (mode == vvmBasebandYuv)
        return TMLIBDEV_OK;
    else
        return BOARD_ERR_VAL_OUT_OF_RANGE;
}

extern tmLibdevErr_t
saa7113CloseVBI(pboardVIDec_t pVD)
{
    /* Equivalent to Video DecHAL VideoDecSetTTMode */

    /* Nothing to do here */
    return TMLIBDEV_OK;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷亚洲婷婷| 国产精品免费人成网站| 国产精品久久久久久久岛一牛影视| 国内久久婷婷综合| 国产午夜亚洲精品午夜鲁丝片| 韩国午夜理伦三级不卡影院| 久久国产精品露脸对白| 久久影院午夜片一区| 岛国av在线一区| 亚洲视频在线一区二区| 欧美色图一区二区三区| 综合分类小说区另类春色亚洲小说欧美| 久久久欧美精品sm网站| 欧美日韩免费视频| 欧美日韩色一区| 日韩一区二区在线播放| av不卡免费电影| 蜜臀av一区二区在线免费观看 | 91首页免费视频| 捆绑紧缚一区二区三区视频| 九九九久久久精品| 日本色综合中文字幕| 久久精品一区蜜桃臀影院| 亚洲国产高清在线观看视频| 日韩视频免费观看高清在线视频| 日韩三级伦理片妻子的秘密按摩| 久久精品人人爽人人爽| 亚洲免费观看高清| 国产三级欧美三级日产三级99 | 视频一区二区三区中文字幕| 国产日韩欧美精品一区| 亚洲免费观看高清完整版在线| 午夜精品久久久久久久久| 国产日韩av一区二区| 亚洲人成小说网站色在线| 日本va欧美va精品| 丝瓜av网站精品一区二区| 国产一区二区精品久久| 免费人成在线不卡| 成年人国产精品| 国产成人超碰人人澡人人澡| 国产一区二区三区蝌蚪| 欧美少妇bbb| 国产精品国产三级国产a| 日本午夜一本久久久综合| 丁香婷婷综合激情五月色| 国产91精品一区二区麻豆网站| 欧美午夜一区二区三区免费大片| 久久久久久久久久久黄色 | 欧美手机在线视频| 2022国产精品视频| 亚洲a一区二区| 日韩电影免费一区| 91蜜桃在线免费视频| 精品久久久久久无| 久久久久久97三级| 亚洲一区二区不卡免费| 亚洲欧美日韩综合aⅴ视频| 国产精品一卡二卡在线观看| 国产精品一卡二卡在线观看| 91精品国产一区二区| 久久亚洲春色中文字幕久久久| 亚洲成人一区二区在线观看| av电影天堂一区二区在线| 久久久精品tv| 国产麻豆成人传媒免费观看| 日韩欧美一区在线观看| 全国精品久久少妇| 555夜色666亚洲国产免| 欧美一级精品大片| 午夜精品久久久| 欧美日韩精品一区二区三区蜜桃| 日韩欧美国产wwwww| 国产欧美视频一区二区| 久久99最新地址| 日韩精品一区二区三区在线观看 | 国产亚洲欧美一区在线观看| 精品夜夜嗨av一区二区三区| 欧美成人国产一区二区| 美女爽到高潮91| 日韩欧美国产系列| 激情文学综合网| 久久久天堂av| www.亚洲免费av| 亚洲天堂福利av| 色菇凉天天综合网| 日韩欧美一级二级三级久久久| 青青草97国产精品免费观看 | 欧美日韩国产美| 日本午夜一区二区| 久久男人中文字幕资源站| 国产一区二区三区免费看| 国产精品色一区二区三区| 97久久超碰精品国产| 久久亚洲一区二区三区四区| 国产大片一区二区| 亚洲精品福利视频网站| 国产一级精品在线| 国产亚洲欧美一区在线观看| 99久久免费视频.com| 天堂久久一区二区三区| 精品国产伦一区二区三区观看方式 | 精品视频免费在线| 蜜桃视频免费观看一区| 久久久久久久久伊人| 欧美中文字幕一区二区三区亚洲| 国产三级精品视频| 色欧美片视频在线观看| 裸体在线国模精品偷拍| 国产免费成人在线视频| 欧洲生活片亚洲生活在线观看| 麻豆国产精品官网| 亚洲色图丝袜美腿| 日韩免费电影网站| 成人成人成人在线视频| 日本欧洲一区二区| 亚洲少妇最新在线视频| 精品久久一区二区| 色综合中文字幕| 国产精品美女久久久久高潮| 欧美亚洲动漫精品| 国产很黄免费观看久久| 五月激情丁香一区二区三区| 国产日韩精品一区二区三区在线| 欧美在线你懂得| 国产精品一区二区三区四区| 亚洲成av人在线观看| 国产精品毛片大码女人| 精品国产自在久精品国产| 欧美日韩亚洲高清一区二区| 成人av集中营| 国产另类ts人妖一区二区| 免费的成人av| 亚洲电影激情视频网站| 亚洲精选视频在线| 18成人在线观看| 欧美影院一区二区| av电影天堂一区二区在线观看| 国模娜娜一区二区三区| 亚洲成人免费影院| 亚洲欧美日韩国产手机在线 | 欧美一区二区福利在线| 欧美专区亚洲专区| 在线免费精品视频| eeuss鲁一区二区三区| 国产suv一区二区三区88区| 裸体歌舞表演一区二区| 日韩精彩视频在线观看| 亚洲国产精品视频| 久久综合九色欧美综合狠狠| 欧美videofree性高清杂交| 69堂精品视频| 日韩一区二区中文字幕| 在线不卡免费av| 成人午夜视频在线观看| 成人免费观看男女羞羞视频| 成人18精品视频| 91视频xxxx| 欧美在线高清视频| 欧美视频一区在线| 欧美日韩国产高清一区| 欧美精品一级二级三级| 日韩一区二区三区四区五区六区| 日韩午夜激情视频| 久久噜噜亚洲综合| 国产精品麻豆网站| 综合电影一区二区三区| 亚洲午夜影视影院在线观看| 亚洲h精品动漫在线观看| 免费看日韩a级影片| 国产又粗又猛又爽又黄91精品| 国产精品小仙女| 91浏览器打开| 制服.丝袜.亚洲.中文.综合| 7777精品伊人久久久大香线蕉| 精品成人一区二区三区| 国产精品毛片久久久久久久| 亚洲午夜久久久久久久久电影院 | 国产一区三区三区| 欧美日韩国产小视频在线观看| 欧美一区二区成人| 日本一区二区三区四区| 亚洲精品菠萝久久久久久久| 蜜臀久久久99精品久久久久久| 国产精品亚洲午夜一区二区三区| 91色|porny| 26uuu欧美日本| 一区二区三区加勒比av| 国产精品污网站| 亚洲在线成人精品| 久久国产精品区| 在线观看91视频| 国产午夜精品一区二区三区嫩草| 亚洲自拍偷拍网站| 国产精品18久久久| 欧美电影一区二区| 亚洲图片另类小说| 九九精品视频在线看| 欧美自拍偷拍一区| 国产精品情趣视频|