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

📄 xp_osi_cchan.c

📁 IBM source for pallas/vulcan/vesta
💻 C
📖 第 1 页 / 共 2 页
字号:
| trans_audvid_cc_done+----------------------------------------------------------------------------*/static void trans_audvid_cc_done(GLOBAL_RESOURCES *pGlobal0, SHORT wChannelId, ULONG ulInterrupt){    if(pGlobal0 == NULL || pGlobal0->uDeviceIndex != 0)        return;   xp_osi_pcr_sync();}/*----------------------------------------------------------------------------+| XXXXXXX  XXX XXX   XXXXXX  XXXXXXX  XXXXXX   XX   XX     XX    XXXX|  XX   X   XX XX    X XX X   XX   X   XX  XX  XXX  XX    XXXX    XX|  XX X      XXX       XX     XX X     XX  XX  XXXX XX   XX  XX   XX|  XXXX       X        XX     XXXX     XXXXX   XX XXXX   XX  XX   XX|  XX X      XXX       XX     XX X     XX XX   XX  XXX   XXXXXX   XX|  XX   X   XX XX      XX     XX   X   XX  XX  XX   XX   XX  XX   XX  XX| XXXXXXX  XXX XXX    XXXX   XXXXXXX  XXX  XX  XX   XX   XX  XX  XXXXXXX+----------------------------------------------------------------------------*//*----------------------------------------------------------------------------+| xp0_cchan_init+----------------------------------------------------------------------------*/SHORT xp_osi_cchan_init(GLOBAL_RESOURCES *pGlobal0){   int   rc;   pGlobal = pGlobal0;   if(pGlobal == NULL || pGlobal->uDeviceIndex != 0)       return -1;   pGlobal->ChanChanInfo.xp_cchan_audchan         = XP_ERROR_CHANNEL_INVALID;   pGlobal->ChanChanInfo.xp_cchan_audchan_pending = 0;   pGlobal->ChanChanInfo.xp_cchan_audpid          = 0x1fff;   pGlobal->ChanChanInfo.xp_cchan_audsig          = 0;   pGlobal->ChanChanInfo.xp_cchan_next            = 0;   pGlobal->ChanChanInfo.xp_cchan_next_audpid     = 0x1fff;   pGlobal->ChanChanInfo.xp_cchan_next_vidpid     = 0x1fff;   pGlobal->ChanChanInfo.xp_cchan_next_pcrpid     = 0x1fff;   pGlobal->ChanChanInfo.xp_cchan_pcrpid          = 0x1fff;   pGlobal->ChanChanInfo.xp_cchan_vidchan         = XP_ERROR_CHANNEL_INVALID;   pGlobal->ChanChanInfo.xp_cchan_vidchan_pending = 0;   pGlobal->ChanChanInfo.xp_cchan_vidpid          = 0x1fff;   pGlobal->ChanChanInfo.xp_cchan_vidsig          = 0;   pGlobal->ChanChanInfo.xp_cchan_vid_oflw        = 0;   pGlobal->ChanChanInfo.xp_cchan_aud_oflw        = 0;   pGlobal->ChanChanInfo.xp_cchan_def_oflw        = 0;   /*-------------------------------------------------------------------------+   |  Set-up Audio and Video Channel Change Complete Interrupt Handlers   +-------------------------------------------------------------------------*/    //lingh delete   /*-------------------------------------------------------------------------+   |  Set-up Transport Audio/Video Channel Change Complete Interrupt Handlers   +-------------------------------------------------------------------------*/   if ((rc = xp_osi_interrupt_notify (pGlobal,XP_INTERRUPT_NOTIFY_ADD,             XP_INTERRUPT_IR_ACCC, (PFS)trans_aud_cc_done)) != 0)   {      return(rc);   }   if ((rc = xp_osi_interrupt_notify (pGlobal,XP_INTERRUPT_NOTIFY_ADD,             XP_INTERRUPT_IR_VCCC, (PFS)trans_vid_cc_done)) != 0)   {      return(rc);   }   if ((rc = xp_osi_interrupt_notify (pGlobal,XP_INTERRUPT_NOTIFY_ADD,             XP_INTERRUPT_IR_ACCC | XP_INTERRUPT_IR_VCCC,             (PFS)trans_audvid_cc_done)) != 0)   {      return(rc);   }   sema = os_create_semaphore(1);   return(0);}/*----------------------------------------------------------------------------+|   XX     XXXXXX    XXXXXX    XXXXX|  XXXX    XX   XX     XX     XX   XX| XX  XX   XX   XX     XX      XX| XX  XX   XXXXX       XX        XX| XXXXXX   XX          XX         XX| XX  XX   XX          XX     XX   XX| XX  XX   XX        XXXXXX    XXXXX+----------------------------------------------------------------------------*//*----------------------------------------------------------------------------+| xp0_cchan_auto+----------------------------------------------------------------------------*/void xp_osi_video_cchan_auto(GLOBAL_RESOURCES *pGlobal0,unsigned short vpid){   unsigned long   crit;   /*-------------------------------------------------------------------------+   | Issue a Manual Channel Change When Audio and Video not Playing   +-------------------------------------------------------------------------*/   if ((vpid == 0x1fff) )   {      xp_osi_cchan_stop_video();      xp_osi_cchan_start_video(vpid);   /*-------------------------------------------------------------------------+   | Use Hardware Channel Change if Audio and Video is Already Playing   +-------------------------------------------------------------------------*/   }   else   {      crit = os_enter_critical_section();      if (!pGlobal->ChanChanInfo.xp_cchan_vidchan_pending)      {         hardware_video_cchan(vpid);      }      /*----------------------------------------------------------------------+      |  Channel change is still pending, set the waiting flag      +----------------------------------------------------------------------*/      else      {          //lingh added for test          os_wait_semaphore(sema,100);          hardware_video_cchan(vpid);          pGlobal->ChanChanInfo.xp_cchan_vidchan_pending = 0;          pGlobal->ChanChanInfo.xp_cchan_next        = 1;          pGlobal->ChanChanInfo.xp_cchan_next_vidpid = vpid;      }      os_leave_critical_section(crit);   }   return;}void xp_osi_audio_cchan_auto(GLOBAL_RESOURCES *pGlobal0,unsigned short apid){    unsigned long   crit;   /*-------------------------------------------------------------------------+   | Issue a Manual Channel Change When Audio and Video not Playing   +-------------------------------------------------------------------------*/   if ((apid == 0x1fff))   {      xp_osi_cchan_stop_audio();      xp_osi_cchan_start_audio(apid);   /*-------------------------------------------------------------------------+   | Use Hardware Channel Change if Audio and Video is Already Playing   +-------------------------------------------------------------------------*/   }   else   {      crit = os_enter_critical_section();      if (!pGlobal->ChanChanInfo.xp_cchan_audchan_pending)      {          hardware_audio_cchan(apid);      }      /*----------------------------------------------------------------------+      |  Channel change is still pending, set the waiting flag      +----------------------------------------------------------------------*/      else      {          os_wait_semaphore(sema,100);          hardware_audio_cchan(apid);          pGlobal->ChanChanInfo.xp_cchan_audchan_pending = 0;          pGlobal->ChanChanInfo.xp_cchan_next        = 1;          pGlobal->ChanChanInfo.xp_cchan_next_audpid = apid;      }      os_leave_critical_section(crit);   }   return;}void xp_osi_pcr_cchan_auto(GLOBAL_RESOURCES *pGlobal0,unsigned short ppid){    hardware_pcr_cchan(ppid);   /*-------------------------------------------------------------------------+   | Enable Synchronization   +-------------------------------------------------------------------------*/   if (ppid == 0x1fff)   {      xp_osi_pcr_sync_stop();       //added in Jan.10/2002      (void)xp_atom_a_hw_sync_off();      (void)xp_atom_v_hw_sync_off();   }   else   {      xp_osi_pcr_sync_start();   }   return;}/*----------------------------------------------------------------------------+|  xp0_cchan_start_audio+----------------------------------------------------------------------------*/int xp_osi_cchan_start_audio(unsigned short pid){   return(0);}/*----------------------------------------------------------------------------+|  xp0_cchan_start_video+----------------------------------------------------------------------------*/int xp_osi_cchan_start_video(unsigned short pid){   return(0);}/*----------------------------------------------------------------------------+|  xp0_cchan_start_pcr+----------------------------------------------------------------------------*/void xp_osi_cchan_start_pcr(unsigned short pid){}/*----------------------------------------------------------------------------+|  xp0_cchan_stop_audio+----------------------------------------------------------------------------*/int xp_osi_cchan_stop_audio(void){   return(0);}/*----------------------------------------------------------------------------+|  xp0_cchan_stop_video+----------------------------------------------------------------------------*/int xp_osi_cchan_stop_video(void){   return(0);}/*----------------------------------------------------------------------------+|  xp0_cchan_stop_pcr+----------------------------------------------------------------------------*/void xp_osi_cchan_stop_pcr(void){}

⌨️ 快捷键说明

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