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

DVD

开发平台:

C/C++

  1. /*****************************************************************************
  2. File name : denc.c
  3. Description : DENC Commands
  4. COPYRIGHT (C) 2004 STMicroelectronics
  5. *****************************************************************************/
  6. /* Includes --------------------------------------------------------------- */
  7. #include <string.h>
  8. #include "stlite.h"
  9. #include "stdevice.h"
  10. #include "sttbx.h"
  11. #include "errors.h"
  12. #include "denc.h"
  13. #include "service.h"
  14. /* Private Constants -------------------------------------------------- */
  15. /* Private Variables -------------------------------------------------- */
  16. /* Private Macros ----------------------------------------------------- */
  17. /* Private Function prototypes ---------------------------------------- */
  18. /* Global Variables ------------------------------------------------------- */
  19. STDENC_Handle_t DENC_Handle;
  20. ST_DeviceName_t g_KB_DENCDeviceName = "DENC";
  21. /* Functions -------------------------------------------------------------- */
  22. /*-------------------------------------------------------------------------
  23.  * Function : KB_DENCSetup
  24.  * Input    : display mode (PAL/NTSC)
  25.  * Output   :
  26.  * Return   : Error Code
  27.  * ----------------------------------------------------------------------*/
  28. ST_ErrorCode_t KB_DENCSetup(KB_ServiceDisplay SERVICE_Display)
  29. {
  30.     ST_ErrorCode_t      ST_ErrorCode;
  31.     STDENC_InitParams_t STDENC_InitParams;
  32.     STDENC_OpenParams_t STDENC_OpenParams = { 0 }; /* No parameters - dummy */
  33.     STDENC_InitParams.MaxOpen                               = 5;
  34.     STDENC_InitParams.DeviceType                            = DENC_DEVICE_TYPE;
  35.     STDENC_InitParams.AccessType                            = DENC_ACCESS_TYPE;
  36.     STDENC_InitParams.STDENC_Access.EMI.DeviceBaseAddress_p = DENC_DEVICE_BASE_ADDRESS;
  37.     STDENC_InitParams.STDENC_Access.EMI.BaseAddress_p       = (void *)DENC_BASE_ADDRESS;
  38.     STDENC_InitParams.STDENC_Access.EMI.Width               = DENC_EMI_ACCESS_WIDTH;
  39.     STTBX_Print(("KB_DENCSetup(%s)=", g_KB_DENCDeviceName ));
  40.     ST_ErrorCode = STDENC_Init(g_KB_DENCDeviceName, &STDENC_InitParams);
  41.     if (ST_ErrorCode != ST_NO_ERROR)
  42.     {
  43.         STTBX_Print(("%sn", KB_ErrorGetText(ST_ErrorCode) ));
  44.         return( ST_ErrorCode );
  45.     }
  46.     STTBX_Print(("%sn", STDENC_GetRevision() ));
  47.     STTBX_Print(("DENC_Open="));
  48.     ST_ErrorCode = STDENC_Open(g_KB_DENCDeviceName, &STDENC_OpenParams, &DENC_Handle );
  49.     STTBX_Print(("%sn", KB_ErrorGetText(ST_ErrorCode) ));
  50.     if (ST_ErrorCode != ST_NO_ERROR)
  51.         return( ST_ErrorCode );
  52.     switch(SERVICE_Display)
  53.     {
  54.         case SERVICE_DISPLAY_PAL:
  55.             ST_ErrorCode = KB_DENCSetMode( STDENC_MODE_PALBDGHI );
  56.             break;
  57.         case SERVICE_DISPLAY_NTSC:
  58.             ST_ErrorCode = KB_DENCSetMode( STDENC_MODE_NTSCM );
  59.             break;
  60.         case SERVICE_DISPLAY_SECAM:
  61.             ST_ErrorCode = KB_DENCSetMode( STDENC_MODE_SECAM );
  62.             break;
  63.         default:
  64.             ST_ErrorCode = ST_ERROR_FEATURE_NOT_SUPPORTED;
  65.             break;
  66.     }
  67.     return ( ST_ErrorCode );
  68. }
  69. /*-------------------------------------------------------------------------
  70.  * Function : KB_DENCSetMode
  71.  * Input    : EncodingMode
  72.  * Output   :
  73.  * Return   : Error Code
  74.  * ----------------------------------------------------------------------*/
  75. ST_ErrorCode_t KB_DENCSetMode( STDENC_Mode_t Mode )
  76. {
  77.     ST_ErrorCode_t        ST_ErrorCode;
  78.     STDENC_EncodingMode_t STDENC_EncodingMode;
  79.     STTBX_Print(("KB_DENCSetMode("));
  80.     switch(Mode)
  81.     {
  82.         case STDENC_MODE_NTSCM:
  83.             STTBX_Print(("STDENC_MODE_NTSCM)="));
  84.             STDENC_EncodingMode.Option.Ntsc.Interlaced    = TRUE;
  85.             STDENC_EncodingMode.Option.Ntsc.SquarePixel   = FALSE;
  86.             STDENC_EncodingMode.Option.Ntsc.FieldRate60Hz = FALSE;
  87.         break;
  88.         case STDENC_MODE_PALBDGHI:
  89.             STTBX_Print(("STDENC_MODE_PALBDGHI)="));
  90.             STDENC_EncodingMode.Option.Pal.Interlaced  = TRUE;
  91.             STDENC_EncodingMode.Option.Pal.SquarePixel = FALSE;
  92.         break;
  93.         case STDENC_MODE_SECAM:
  94.             STTBX_Print(("STDENC_MODE_SECAM)="));
  95.         break;
  96.         case STDENC_MODE_NTSCM_J:
  97.         case STDENC_MODE_NTSCM_443:
  98.         case STDENC_MODE_PALM:
  99.         case STDENC_MODE_PALN:
  100.         case STDENC_MODE_PALN_C:
  101.         default:
  102.             STTBX_Print(("?)=mode not supported.n"));
  103.             return( ST_ERROR_BAD_PARAMETER );
  104.     }
  105.     STDENC_EncodingMode.Mode = Mode;
  106.     ST_ErrorCode = STDENC_SetEncodingMode(DENC_Handle, &STDENC_EncodingMode);
  107.     STTBX_Print(("%sn", KB_ErrorGetText(ST_ErrorCode) ));
  108.     return ( ST_ErrorCode );
  109. }
  110. /* EOF --------------------------------------------------------------------- */