vtg.c
上传用户:fy98168
上传日期:2015-06-26
资源大小:13771k
文件大小:6k
源码类别:

DVD

开发平台:

C/C++

  1. /*****************************************************************************
  2. File name: vtg.c
  3. Description: VTG functions
  4. COPYRIGHT (C) STMicroelectronics 2004.
  5. *****************************************************************************/
  6. /* Includes --------------------------------------------------------------- */
  7. #include <string.h>
  8. #include "stddefs.h"
  9. #include "stlite.h"
  10. #include "stdevice.h"
  11. #include "sttbx.h"
  12. #include "errors.h"
  13. #include "evt.h"
  14. #include "denc.h"
  15. #include "vtg.h"
  16. #include "service.h"
  17. /* Private Types ------------------------------------------------------ */
  18. /* Private Constants -------------------------------------------------- */
  19. /* Private Variables -------------------------------------------------- */
  20. /* Private Macros ----------------------------------------------------- */
  21. /* Private Function prototypes ---------------------------------------- */
  22. /* Global ---------------------------------------------------------- */
  23. STVTG_Handle_t     g_KB_VtgHandle;
  24. ST_DeviceName_t    g_KB_VtgDeviceName = "VTG";
  25. STVTG_ModeParams_t g_KB_VtgModeParams;
  26. STVTG_TimingMode_t g_KB_VtgTimingMode;
  27. /* Functions ---------------------------------------------------------- */
  28. /*-------------------------------------------------------------------------
  29.  * Function : KB_VtgSetup
  30.  * Input    : display mode
  31.  * Output   :
  32.  * Return   : Error Code
  33.  * ----------------------------------------------------------------------*/
  34. ST_ErrorCode_t KB_VtgSetup(KB_ServiceDisplay SERVICE_Display)
  35. {
  36.     ST_ErrorCode_t     ST_ErrorCode;
  37.     STVTG_InitParams_t STVTG_InitParams;
  38.     STVTG_OpenParams_t STVTG_OpenParams = { 0 }; /* dummy parameter */
  39.     STVTG_InitParams.DeviceType = KB_VTG_DEVICE_TYPE;
  40.     strcpy( STVTG_InitParams.EvtHandlerName, "EVT" );
  41.     switch(KB_VTG_DEVICE_TYPE)
  42.     {
  43.         case STVTG_DEVICE_TYPE_DENC :
  44.             STVTG_InitParams.MaxOpen    = 1;
  45.             strcpy( STVTG_InitParams.Target.DencName, "DENC" );
  46.             break;
  47.         case STVTG_DEVICE_TYPE_VFE2 :
  48.             STVTG_InitParams.MaxOpen    = 2;
  49.             STVTG_InitParams.Target.VtgCell2.BaseAddress_p          = (void*)KB_VTG_BASE_ADDRESS;
  50.             STVTG_InitParams.Target.VtgCell2.DeviceBaseAddress_p    = (void*)NULL;
  51.             STVTG_InitParams.Target.VtgCell2.InterruptNumber        = KB_VTG_INTERRUPT_NUMBER;
  52.             STVTG_InitParams.Target.VtgCell2.InterruptLevel         = KB_VTG_INTERRUPT_LEVEL;
  53.             break;
  54.         default :
  55.             STTBX_Print(("Invalid VTG Device Type!"));
  56.             break;
  57.     }
  58.     #ifdef STVTG_VSYNC_WITHOUT_VIDEO
  59.        STVTG_InitParams.VideoBaseAddress_p       = (void*) VIDEO_BASE_ADDRESS;
  60.        STVTG_InitParams.VideoDeviceBaseAddress_p = (void*) NULL;
  61.        STVTG_InitParams.VideoInterruptNumber     = VIDEO_INTERRUPT;
  62.        STVTG_InitParams.VideoInterruptLevel      = VIDEO_INTERRUPT_LEVEL;
  63.     #endif /* #ifdef STVTG_VSYNC_WITHOUT_VIDEO */
  64.     STTBX_Print(("KB_VtgSetup(%s)=", g_KB_VtgDeviceName ));
  65.     ST_ErrorCode = STVTG_Init(g_KB_VtgDeviceName, &STVTG_InitParams);
  66.     if (ST_ErrorCode != ST_NO_ERROR)
  67.     {
  68.         STTBX_Print(("%sn", KB_ErrorGetText(ST_ErrorCode) ));
  69.         return( ST_ErrorCode );
  70.     }
  71.     STTBX_Print(("%sn", STVTG_GetRevision() ));
  72.     STTBX_Print(("VTG_Open="));
  73.     ST_ErrorCode = STVTG_Open(g_KB_VtgDeviceName, &STVTG_OpenParams, &g_KB_VtgHandle);
  74.     STTBX_Print(("%sn", KB_ErrorGetText(ST_ErrorCode) ));
  75.     if (ST_ErrorCode != ST_NO_ERROR)
  76.         return( ST_ErrorCode );
  77.     switch(SERVICE_Display)
  78.     {
  79.         case SERVICE_DISPLAY_PAL:
  80.             ST_ErrorCode = KB_VtgSetMode( STDENC_MODE_PALBDGHI );
  81.             break;
  82.         case SERVICE_DISPLAY_NTSC:
  83.             ST_ErrorCode = KB_VtgSetMode( STDENC_MODE_NTSCM );
  84.             break;
  85.         case SERVICE_DISPLAY_SECAM:
  86.             ST_ErrorCode = KB_VtgSetMode( STDENC_MODE_SECAM );
  87.             break;
  88.         default:
  89.             ST_ErrorCode = ST_ERROR_FEATURE_NOT_SUPPORTED;
  90.             break;
  91.     }
  92.     if (ST_ErrorCode != ST_NO_ERROR)
  93.         return( ST_ErrorCode );
  94.     ST_ErrorCode = KB_VtgGetMode();
  95.     return( ST_ErrorCode );
  96. }
  97. /*-------------------------------------------------------------------------
  98.  * Function : KB_VtgGetMode
  99.  * Input    : Timing Mode
  100.  * Output   :
  101.  * Return   : Error Code
  102.  * ----------------------------------------------------------------------*/
  103. ST_ErrorCode_t KB_VtgGetMode(void)
  104. {
  105.     ST_ErrorCode_t     ST_ErrorCode;
  106.     ST_ErrorCode = STVTG_GetMode(g_KB_VtgHandle, &g_KB_VtgTimingMode, &g_KB_VtgModeParams);
  107.     STTBX_Print(("KB_VtgGetMode(XYWH %d,%d,%d,%d, %d,%d)=%sn",
  108.                g_KB_VtgModeParams.ActiveAreaXStart, g_KB_VtgModeParams.ActiveAreaYStart,
  109.                g_KB_VtgModeParams.ActiveAreaWidth,  g_KB_VtgModeParams.ActiveAreaHeight,
  110.                g_KB_VtgModeParams.FrameRate,        g_KB_VtgModeParams.ScanType,
  111.                KB_ErrorGetText(ST_ErrorCode) ));
  112.     return ( ST_ErrorCode );
  113. }
  114. /*-------------------------------------------------------------------------
  115.  * Function : KB_VtgSetMode
  116.  * Input    : Timing Mode
  117.  * Output   :
  118.  * Return   : Error Code
  119.  * ----------------------------------------------------------------------*/
  120. ST_ErrorCode_t KB_VtgSetMode(STDENC_Mode_t STDENC_Mode)
  121. {
  122.     ST_ErrorCode_t     ST_ErrorCode;
  123.     STTBX_Print(("KB_VtgSetMode("));
  124.     switch(STDENC_Mode)
  125.     {
  126.         case STDENC_MODE_NTSCM:
  127.             STTBX_Print(("STDENC_MODE_NTSCM)="));
  128.             g_KB_VtgTimingMode = STVTG_TIMING_MODE_480I59940_13500;
  129.             break;
  130.         case STDENC_MODE_PALBDGHI:
  131.             STTBX_Print(("STDENC_MODE_PALBDGHI)="));
  132.             g_KB_VtgTimingMode = STVTG_TIMING_MODE_576I50000_13500;
  133.             break;
  134.         case STDENC_MODE_SECAM:
  135.             STTBX_Print(("STDENC_MODE_SECAM)="));
  136.             g_KB_VtgTimingMode = STVTG_TIMING_MODE_576I50000_13500;
  137.             break;
  138.         case STDENC_MODE_NTSCM_J:
  139.         case STDENC_MODE_NTSCM_443:
  140.         case STDENC_MODE_PALM:
  141.         case STDENC_MODE_PALN:
  142.         case STDENC_MODE_PALN_C:
  143.         default:
  144.             STTBX_Print(("?)=mode not supported.n"));
  145.             return( ST_ERROR_BAD_PARAMETER );
  146.     }
  147.     ST_ErrorCode = STVTG_SetMode(g_KB_VtgHandle, g_KB_VtgTimingMode);
  148.     STTBX_Print(("%sn", KB_ErrorGetText(ST_ErrorCode) ));
  149.     return( ST_ErrorCode );
  150. }
  151. /* EOF --------------------------------------------------------------------- */