⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 saa7112.c

📁 用于TM1300/PNX1300系列DSP(主要用于视频处理)的设备库的源码
💻 C
📖 第 1 页 / 共 2 页
字号:
extern      tmLibdevErr_t
saa7112SetBrightness(UInt val)
{
    return saa7112SetBrightnessM(&defaultVD[0], val);
}

/******************************************************************************/

extern      tmLibdevErr_t
saa7112GetContrastM(pboardVIDec_t pVD, UInt * val)
{
    if(gAdapterType == vaaNone)
    {
      return TMLIBDEV_OK;
    }
    return iicReadReg(pVD->slaveAddr, SAA711_CONTRAST_REG, val);
}

extern      tmLibdevErr_t
saa7112GetContrast(UInt * val)
{
    return saa7112GetContrastM(&defaultVD[0], val);
}

/******************************************************************************/

extern      tmLibdevErr_t
saa7112SetContrastM(pboardVIDec_t pVD, UInt val)
{
    if(gAdapterType == vaaNone)
    {
      return TMLIBDEV_OK;
    }
    if (val > 127)
        return BOARD_ERR_VAL_OUT_OF_RANGE;

    return iicWriteReg(pVD->slaveAddr, SAA711_CONTRAST_REG, val);
}

extern      tmLibdevErr_t
saa7112SetContrast(UInt val)
{
    return saa7112SetContrastM(&defaultVD[0], val);
}

/******************************************************************************/

extern      tmLibdevErr_t
saa7112GetSaturationM(pboardVIDec_t pVD, UInt * val)
{
    if(gAdapterType == vaaNone)
    {
      return TMLIBDEV_OK;
    }
    return iicReadReg(pVD->slaveAddr, SAA711_SATURATION_REG, val);
}

extern      tmLibdevErr_t
saa7112GetSaturation(UInt * val)
{
    return saa7112GetSaturationM(&defaultVD[0], val);
}

/******************************************************************************/

extern      tmLibdevErr_t
saa7112SetSaturationM(pboardVIDec_t pVD, UInt val)
{
    if(gAdapterType == vaaNone)
    {
      return TMLIBDEV_OK;
    }
    if (val > 127)
        return BOARD_ERR_VAL_OUT_OF_RANGE;

    return iicWriteReg(pVD->slaveAddr, SAA711_SATURATION_REG, val);
}

extern      tmLibdevErr_t
saa7112SetSaturation(UInt val)
{
    return saa7112SetSaturationM(&defaultVD[0], val);
}

/******************************************************************************/

extern      tmLibdevErr_t
saa7112GetHueM(pboardVIDec_t pVD, UInt * val)
{
    if(gAdapterType == vaaNone)
    {
      return TMLIBDEV_OK;
    }
    return iicReadReg(pVD->slaveAddr, SAA711_HUE_REG, val);
}

extern      tmLibdevErr_t
saa7112GetHue(UInt * val)
{
    return saa7112GetHueM(&defaultVD[0], val);
}

/******************************************************************************/

extern      tmLibdevErr_t
saa7112SetHueM(pboardVIDec_t pVD, UInt val)
{
    if(gAdapterType == vaaNone)
    {
      return TMLIBDEV_OK;
    }
    if (val > 255)
        return BOARD_ERR_VAL_OUT_OF_RANGE;

    return iicWriteReg(pVD->slaveAddr, SAA711_HUE_REG, val);
}

extern      tmLibdevErr_t
saa7112SetHue(UInt val)
{
    return saa7112SetHueM(&defaultVD[0], val);
}

/******************************************************************************/
/* Helper functions for video decoder HAL functionality  */

static Bool                         /* Successful or not */
SetReg(                             /* Set a register value */
    pboardVIDec_t pVD,              /* Pointer to I2C access structure */
    UInt8 bReg,                     /* Subaddress of the register */
    UInt8 bData)                    /* Value to be written */
{
    lastI2cError = 0;
    return ((lastI2cError = iicWriteReg(pVD->slaveAddr, bReg, bData)) == TMLIBDEV_OK);
}

static Bool                         /* Successful or not */
GetReg(                             /* Get a register value */
    pboardVIDec_t pVD,              /* Pointer to I2C access structure */
    UInt8 bReg,                     /* Subaddress of the register */
    UInt8 * pbData)                 /* Pointer to variable to recieve value */
{
    UInt data;
    Bool retVal;

    lastI2cError = 0;
    if (retVal = ((lastI2cError = iicReadReg (pVD->slaveAddr, bReg, &data)) == TMLIBDEV_OK))
        *pbData = data;
    else
        *pbData = 0;
    
    return retVal;
}

/***************************************************************************/
extern tmLibdevErr_t
saa7112GetVSyncFallingEdge(pboardVIDec_t pVD, UInt *lineNumber)
{
    // Equivalent to Video DecHAL VideoDecGetDefaultAcquisitionWnd

    switch (pVD->curVideoStandard)
    {
    case vasNTSC:
            /* First line seen by TM */
        *lineNumber = 10;
        break;
    case vasPAL:
        *lineNumber = 23;
        break;
    default:
        return BOARD_ERR_COLOR_STANDARD_NOT_DETECTED;
    }
     
    return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112GetSlicedData(pboardVIDec_t pVD, UInt8 *Y, UInt8 *U, UInt8 *V, tmVideoDataService_t service, UInt size, UInt8 *data, UInt8 *dataSize)
{
    return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112GetStatus(pboardVIDec_t pVD, tmVideoStatusType_t type, UInt *state)
{
    return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112GetSupportedDataServices(tmVideoDataService_t fieldOne[], tmVideoDataService_t fieldTwo[], UInt8 tblSize)
{
    return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112SetDataServices(pboardVIDec_t pVD, tmVideoDataService_t fieldOne[], tmVideoDataService_t fieldTwo[], UInt8 tblSize)
{
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t   
saa7112GetSlicerLineFlags(pboardVIDec_t pVD, Bool fieldOne[], Bool fieldTwo[], UInt8 tblSize)
{
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112EnableSlicing(pboardVIDec_t pVD, Bool enable)
{
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112SetSlicerVideoStandard(pboardVIDec_t pVD, tmVideoAnalogStandard_t standard)
{
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112GetSlicerVideoStandard(pboardVIDec_t pVD, tmVideoAnalogStandard_t *standard)
{
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112ToggleFieldID(pboardVIDec_t pVD, Bool toggle)
{
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112SetSlicerInput(pboardVIDec_t pVD, UInt num)
{
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112GetSlicerInput(pboardVIDec_t pVD, UInt *num)
{ 
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112SetVideoColor(pboardVIDec_t pVD, tmVideoColor_t color, UInt val)
{
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112GetVideoColor(pboardVIDec_t pVD, tmVideoColor_t color, UInt *val)
{
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112SetAnalogInput(pboardVIDec_t pVD, UInt num)
{
    /* Similar to Video DecHAL VideoDecSetVideoSource */

    UInt8 ucVal;

    /* Set Input mode ------------------------------------------------------------*/
    /* Check only first access */
    if (!GetReg(pVD, AnalogInputControl1, &ucVal))
        return (tmLibdevErr_t) lastI2cError;               /* Switch input mode (line) */
    SetReg(pVD, AnalogInputControl1, ucVal & ~0x0f | (num & 0x0f));

    return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112GetAnalogInput(pboardVIDec_t pVD, UInt *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
saa7112SetStandard(pboardVIDec_t pVD, tmVideoAnalogStandard_t standard)
{ 
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112SetSourceType(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
saa7112GetSourceType(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
saa7112SetOutputFormat(pboardVIDec_t pVD, tmVideoRGBYUVFormat_t format)
{ 
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112GetOutputFormat(pboardVIDec_t pVD, tmVideoRGBYUVFormat_t *format)
{
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112SetAcquisitionWnd(pboardVIDec_t pVD, UInt beginX, UInt beginY, UInt endX, UInt endY)
{ 
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112GetAcquisitionWnd(pboardVIDec_t pVD, UInt *beginX, UInt *beginY, UInt *endX, UInt *endY)
{
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112GetDefaultAcquisitionWnd(pboardVIDec_t pVD, UInt *beginX, UInt *beginY, UInt *endX, UInt *endY)
{ 
    // Equivalent to Video DecHAL VideoDecGetDefaultAcquisitionWnd

    switch (pVD->curVideoStandard)
    {
    case vasNTSC:
        /* Set default acquisition window for NTSC */
        *beginX = 6;
        *beginY = 12;
        *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
saa7112SetOutputSize(pboardVIDec_t pVD, UInt width, UInt height)
{
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112SetInterlaceMode(pboardVIDec_t pVD, Bool interlace)
{
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112DisableDecoder(pboardVIDec_t pVD, Bool disable)
{
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112EnablePowerSaveMode(pboardVIDec_t pVD, Bool enable)
{ 
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112GetGPIOCount(pboardVIDec_t pVD, UInt *num)
{
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112SetGPIOState(pboardVIDec_t pVD, UInt pin, UInt state)
{
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112GetGPIOState(pboardVIDec_t pVD, UInt pin, UInt *state)
{ 
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112OpenVBI(pboardVIDec_t pVD, UInt sampleFreq, UInt startLine, UInt numLines)
{
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112EnableVBI(pboardVIDec_t pVD, Bool enable)
{ 
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112SetVBIMode(pboardVIDec_t pVD, tmVideoVBIMode_t mode)
{ 
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t 
saa7112SetSlicerMode(pboardVIDec_t pVD, tmVideoSlicerMode_t mode)
{ 
  return TMLIBDEV_OK;
}

extern tmLibdevErr_t
saa7112CloseVBI(pboardVIDec_t pVD)
{
  return TMLIBDEV_OK;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -