首页> 中国专利> 频道音量控制与通用音量控制合成的音量控制方法

频道音量控制与通用音量控制合成的音量控制方法

摘要

一种频道音量控制与通用音量控制合成的音量控制方法,属于电视机技术。包括创建频道结构,对每个频道单独设置音量控制功能,使各频道音量输出均衡;设置通用音量控制Vol变量,以同时控制所有频道的音量大小;使频道音量控制Channelaudio的范围为通用音量控制的负一半到正一半,保证频道音量控制只是用于各频道音量输出的均衡;将频道音量控制与通用音量控制采用加权合成;将合成后的音量输出等步骤。同时设置弱信号时自动切断电路,以消除弱信号噪音。它既使用频道音量控制,保证各频道音量输出的均衡;又保留通用音量控制,解决用户需要同时控制所有频道的音量大小的问题;调节简单。可广泛应用于各种电视机中。

著录项

  • 公开/公告号CN1744689A

    专利类型发明专利

  • 公开/公告日2006-03-08

    原文格式PDF

  • 申请/专利号CN200510044783.4

  • 发明设计人 佘智勇;

    申请日2005-09-19

  • 分类号H04N5/60(20060101);

  • 代理机构37101 青岛联智专利商标事务所有限公司;

  • 代理人宫乃斌

  • 地址 266071 山东省青岛市市南区江西路11号

  • 入库时间 2023-12-17 16:59:29

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2009-09-30

    专利申请权、专利权的转移(专利权的转移) 变更前: 变更后: 登记生效日:20090821 申请日:20050919

    专利申请权、专利权的转移(专利权的转移)

  • 2009-02-11

    专利申请权、专利权的转移(专利权的转移) 变更前: 变更后: 登记生效日:20090109 申请日:20050919

    专利申请权、专利权的转移(专利权的转移)

  • 2007-11-07

    授权

    授权

  • 2006-05-03

    实质审查的生效

    实质审查的生效

  • 2006-03-08

    公开

    公开

说明书

                          技术领域

本发明属于电视机技术领域,更明确地说涉及频道音量控制与通用音量控制合成的音量控制方法的设计。

                          背景技术

电视机传统的音量控制方法是调节音量大小,保证用户能以合适的音量收看电视节目。而音量大小的调节可以由主控微处理器控制音频处理器的音量控制脚来完成。

这种对音频放大部分的控制,对所有的频道都同时进行,一视同仁。但各个电视台的伴音音量却各不相同。因此,收看时各个频道的音量大小差异很大。为了有适当大小的伴音,收看者在更换频道时,必须逐一再次调节音量,相当麻烦。也就是说,传统的音量控制方式无法做到各频道均衡的音量输出。

                          发明内容

本发明的目的,就在于克服上述缺点和不足,提供一种频道音量控制与通用音量控制合成的音量控制方法。它能做到各频道均衡的音量输出。既使用频道音量控制,以保证各频道音量输出的均衡;又保留通用音量控制,以解决用户需要同时控制所有频道的音量大小的问题。其操作调节十分简单。

为了达到上述目的,本发明包括以下步骤:

(1)创建频道结构,对每个频道单独设置音量控制电路,使各频道音量输出均衡;

(2)设置通用音量控制Vol全局变量,以同时控制所有频道的音量大小;

(3)频道音量控制Channelaudio的范围为通用音量控制范围Vol的正负一半,亦即频道音量控制的范围为通用音量控制的负一半到正一半,保证频道音量控制只是用于各频道音量输出的均衡;

(4)将频道音量控制与通用音量控制采用加权处理方式合成;

(5)将合成后的音量输出。

静音控制仍由通用音量控制电路实现。

本发明还设置弱信号时自动切断功能,以消除弱信号噪音。

本发明的任务就是这样完成的。

本发明提供了一种频道音量控制与通用音量控制合成的音量控制方法。它能做到各频道均衡的音量输出。既使用频道音量控制,以保证各频道音量输出的均衡;又保留通用音量控制,以解决用户需要同时控制所有频道的音量大小的问题。其操作调节十分简单。它可广泛应用于各种电视机中。

                          附图说明

图1为本发明的流程图。

图2为其音量合成的流程图。

                        具体实施方式

实施例1。一种频道音量控制与通用音量控制合成的音量控制方法,如图1~图2所示。

它包括以下步骤:

(1)创建频道结构,对每个频道单独设置音量控制Channelaudio电路,使各频道音量输出均衡;

(2)设置通用音量控制Vol电路,以同时控制所有频道的音量大小;

(3)使频道音量控制Channelaudio的范围为通用音量控制Vol的正负一半,亦即频道音量控制Channelaudio的范围为通用音量控制Vol的负一半到正一半,保证频道音量控制Channelaudio只是用于各频道音量输出的均衡;

(4)将频道音量控制Channelaudio与通用音量控制Vol采用加权处理方式合成;

(5)将合成后的音量输出。

在本实施例中,通用音量的初始值为最大音量的一半,亦即Vmax/2,频道音量的初始值为最大音量的10%。当用户确定某个台的伴音为Tvol,则频道音量控制Channelaudio即为Tvol-Vmax/2。完成设置后,此后切换频道时,音量输出就为Vol+Channelaudio,此即为合成后的结果。同时,在Channelaudio+Vol的值过大或过小时,在音量设置函数中有最大值判断以保证输出不会出错。

静音控制仍由通用音量控制电路实现。

本实施例还设置弱信号时自动切断功能,以消除弱信号噪音,如沙沙声等等。

本实施例的源代码如下:

  /*本程序用于对遥控器和按键的操作处理,包括频道加减、音量加减的判断函数*/  #include<stdio.h>  #include<string.h>  #include″stddefs.h″ /*c语言标准定义 */  #include″stevt.h″  #include″stlite.h″ /*os 20操作系统的标准定义*/  #include″stwtk.h″  #include″appltype.h″  #include″pti.h″ /*初始化pti */  #include″stdenc.h″   #include″stvtg.h″  #include″stavmem.h″   #include″..\stvid\videodrv.h″  #include″stvid.h″  #include″staud.h″ /*音频控制函数库*/  #include″ste2p.h″  #nclude″sttbx.h″  #include″report.h″  #include″symbol.h″/*增加符号库 */  #include″aud_reg.h″   #include″stclkrv.h″  #include″st_nvm.h″  #include″vdbase.h″  #include″usif.h″ /*用户接口定义*/  #include″stflashd.h″  #include″tt_table.h″<!-- SIPO <DP n="3"> --><dp n="d3"/>  #ifdef INTEGRATE_TELETEXT  #include″ttext.h″  #endif  #include″app_data.h″  #include″keymap.h″  #ifdef TESTTOOL  #include″testtool.h″  #include<ctype.h>  #endif  /*#if defined(tylko11)‖defined(tylko12)  #ifdef INTEGRATE_FRONT_PANEL_KEYBOARD  #include″segdisp.h″  #endif  #endif*/  /*{{{module dependant includes*/  #include″usifext.h″  #include″osd_cmds.h″  #include″drawuif.h″  /***************/  #include″stcommon.h″  #include″stosd.h″  #include″stevt.h″  #include″stvtg.h″  /***************/    /*#define USIF_DEBUG  #define USIF_DEBUG */  #define USE_EVENT_/*时间信号表示控制*/  /*}}}*/<!-- SIPO <DP n="4"> --><dp n="d4"/>  /*}}}*/  #ifdef ZOOM_DEMO  extern unsigned int SD_Frame(void);  #endif  /*LP comment-11/09/00-CVBS输出 */  #define LIGHT_GREEN  #defineSOFTWARE_UPDATE_ID″2.3.0″  /*  typedef struct  {  U8SignalStrength;  U32 SignalQuality;  U32 BitErrorRate;  }SIGNALINFO;  SIGNALINFO agcinfo;  gih add for signal info later use*/  /*  *LP added on 22/10/00  *采用STTBX函数作为输出打印函数  */  #define ENABLE_STAPI_ENVIRONMENT  enum  {   INSTALLATION_MENU_ITEM,   TRANSPONDER_MENU_ITEM  };<!-- SIPO <DP n="5"> --><dp n="d5"/>  extern STWTK_Button_tTvButton,RadioButton,LanButton,SetupButton;  extern STOSD_Color_t backgroundColor;  extern STOSD_Color_t backcolor;  #ifdef VIDEO_PES_BUFFERING  extern boolean DisableVPesInjection(Void);  extern boolean EnableVPesInjection(pid_t NewVideoPid);  #endif  extern void OSD_FadeOutRegion(STOSD_RegionHandle_t Handle,U16 Delay);  extern U32 GetDisplayedVideoPictureAddress(void);  BOOLEAN GetmpegEnableAudStatus(void);/*MPEG2音频解码控制*/  BOOLEAN GetmpegEnableVidStatus(void);  staticBOOLEANbEnableVideo=FALSE;  staticBOOLEANbEnableAudio=FALSE;  /*LP-260700-包含频道变换信息*/  STVID_PictureParams_t VidParams  U8 TempFR;  /***********************************mxh6/24/2002*************************************/  static semaphore_tstosd_VSync;  enum  {  VSYNCSIG_NONE,  VSYNCSIG_TOP,  VSYNCSIG_BOTTOM,  VSYNCSIG_BOTH  };<!-- SIPO <DP n="6"> --><dp n="d6"/>  sstatic unsigned int vsyncSignalMode=VSYNCSIG_BOTH;  /***************************************************************************/  /************************************************************************/  /*新添加的变量*/  U8 Audiomode=1 /*设置音频模式为频道控制方式*/  U8 Channelaudio=0 /*设置频道音频初始值-30到30*/  U8 Vol=40;/*通用音量控制*/  int TestVideoPid;  int TestAudioPid;  int TestAudioPid0;  int TestPcrPid;  int TestTransponderNo;  int VideoPid;  int AudioPid;  int AudioPid1;  int PcrPid;  int TransponderNo;  int EpgFlag;  int RadioEpgFlag;  int iepgProgNo;  U16 RecallNumber,RadioRecallNumber;  U16 TestTransfreq;  U16 TestSymrate;  U16 LasterProgramNo=0;  U16 RaidoLasterProgramNo;  U16 ATransfreq;  U16 ASymrate;  U8 DefaultSetupflag=0;  extern U32 PidAddr;  extern U32 RadioPidAddress;<!-- SIPO <DP n="7"> --><dp n="d7"/>  extern U32 RaidoServerAddress;  extern U32 ServerAddress;  extern U16 RealNumberStored;  extern U16 RadioRealNumberStored;  extern U16 FlashPid[TVProgramArray];  extern U16 RadioFlashPid[RadioProgramArray];  extern U16 RadioCount;  extern U16 PCount;  U16 RadioPmtCount;  U16 TVPmtCount;  extern U16 Transfreq_t;  extern U16 Transfreq_tfirst;  U16 Proamsseacrhsucess;  U16 Programsseacrhsingal;  extern U16 RACount;  extern U16 CurrentProgNo;  extern U16 CurrentRadioProgNo;  extern U16 TVFlashPid[TVProgramArray];  extern U16 RadFlashPid[RadioProgramArray];  extern U8 RadioServeData[200][MAX_SERVICE_NAME_LENGTH];/**/  extern U8 ServeData[200][MAX_SERVICE_NAME_LENGTH];  extern U8 existed;  extern EPG_NOWNEXTDATA_T Epg_InfoNowNext[EPG_NOW_PROGRAM_NUM];  extern U8 TotalCount;  extern U8 writingflag;  extern int iItemOff;  extern int tempkeyread;  extern int TVCount;  extern int FirstPlayFlag;<!-- SIPO <DP n="8"> --><dp n="d8"/>  extern int RadioAstROMStoringValidMapping[RADIO_SIZE_NVM_RSVM];  extern int Epgweaksingal;  extern U8 SignalHD;  extern BYTE astROMStoringValidMapping[SIZE_NVM_RSVM];  extern BYTE ProgramUpFlag;  extern U8 weak;  U8 SignalCA=0;  extern int Temp_To_Play;  extern iht Sdttm;  extern int iTypeFlag;/*1 manual*/  extern BOOLEAN GrabtableStatus;  extern BYTETempStruct[20];  BOOL No_Signal_Flag=FALSE;  U8InfoLoopFlag=0;  typedef U32 STWDG_timer_t;  STWDG_timer_t Diaplay_Timer,TimingPlay_Timer;  intTemp_Time[3];  intDate_Time_Flag;  intDate_Time_destory;  U8 bMenuStatus=0;/*menu display on screen,so some clear action should not be done*/  /***********************************************************************/  TRANSPONDER_NFO_STRUCT*pstTransponderInfoTemp;  PROG_INFO_STRUCT *pstProgInfoTemp;  int EPGItemSelected;  extern U8 bTV;  U8 Modeselect=1;  extem U8 ActivePin;  U8 TimingP=0;<!-- SIPO <DP n="9"> --><dp n="d9"/>  task_t*UARTTask;  task_t*GetEitSchedule_CurrentTask;  extern clock_t Time_For_Start_ 2_Write_Flash;  extern U8 Audmodesel;  /*BK-lowpower mode*/  U8 lowpower_on=0;  U8 freeze_t=0;/*freeze_t=1 for freeze ok*/  extern U8 Language;  extern char smessage[][120];  extern char smenu[][40];  extern int TVNoofCurrTS;  extern void LPM_Init(void);  staticslot_t   slotVideo =PTI_INVALID_SLOT,   slotAudio =PTI_INVALID_SLOT,   slotPcr =PTI_INVALID_SLOT;  task_t*ptidUsifTask;  task_t*ptidNvmSlaveTask;  task_t*ptidDbaseTaskId;  task_t*ptidTunerTask;  task_t*ptidSectionTaskId;  staticmessage_queue_t*pstUsifMsgQueue;  staticmessage_queue_t*pstDbaseMsgQueue;  staticBOOLEANbDisplayStartupBanner=FALSE;  static semaphore_t stvid_evt;<!-- SIPO <DP n="10"> --><dp n="d10"/>  /*TMTM*/  #if defined(USE_STBLAST)  extern BOOLEAN BlastTxOn;  #endif  #if defined(tylko11)‖defined(tylko12)  #ifdef INTEGRATE_FRONT_PANEL_KEYBOARD  task_t *ptidSEGDISPTask;  extern void DVBSegdispProcess(void*pvParam);  int iPrevPrcgNo=0;  #endif  #endif  #ifdefBUILD_FOR_MICO_BOARD   #define POWER_LED_PIO_ADDRESS PIO_4_BASE_ADDRESS   #define STANDBY_LED_PIO_ADDRESSPIO_1_BASE_ADDRESS   #define STANDBY_LED_PIN 0x80/*PIO1.7*/   #define POWER_LED_PIN 0x80/*PIO4.7*/   #define DISABLE_POWER_LED\   *((volatile BYTE*)(POWER_LED_PIO_ADDRESS+PIO_SET_OFFSET))=  POWER_LED_PIN;   #defineENABLE_POWER_LED\   *((volatile BYTE*)(POWER_LED_PIO_ADDRESS+PIO_CLR_OFFSET))=  POWER_LED_PIN;   #define DISABLE STANDBY LED\<!-- SIPO <DP n="11"> --><dp n="d11"/>   *((volatile BYTE*)(STANDBY_LED_PIO_ADDRESS+PIO_SET_OFFSET))=  STANDBY_LED_PIN;   #define ENABLE_STANDBY_LED\   *((volatile BYTE*)(STANDBY_LED_PIO_ADDRESS+PIO_CLR_OFFSET))=  STANDBY_LED_PIN;  #endif  /*===================================================================  Function to set the audio volume of each channel separately.  Takes a number in the range 32..63,where  63 is the maximum volume,and 32 is silent.   In terms of dB the min attenuation is 4dB.  单独设置左右声道的音量函数。根据测试,寄存器值在32-63之间,可以听到声音,  ==============================================================*/  void mpeg_set_audio_volume_LR(U16 left_volume,U16 right_volume)  {  STAUD_Attenuation_t Attenuation;  if(left_volume>63)   left_volume=63;  Attenuation.Left=63-left_volume;/*转换成衰减量*/  if(right_volume>63)  right_volume=63;  Attenuation.Right=63-right_volume;/*转换成衰减量*/  /*Eraser bug fix:Call to STAUD fn to set the volume<!-- SIPO <DP n="12"> --><dp n="d12"/>  *With 0.9.1 the two channels cannot be set independently  *With the use of STSYS_WriteRegDev()the ABS register was corrupted  *giving rise to a wrong audio bit buffer filling-up  */  STAUD_SetAttenuation(AUDHndl,Attenuation);   }   /*}}}*/   /*================================================================   Furction to reset the audio volume of each channel separately.   Takes a number in the range 0..16,where   16 is the maximum volume,and 0 is silent.  the default is 16.  左右音量复位函数,设置复位值为16  ===============================================================*/  void mpeg_reset_audio_volume_LR(U16 left_volume,U16 right_olume)  {   STAUD_Attenuation_t Attenuation;   if(left_volume>63)  left_volume=63;   Attenuation.Left=63-left_volume; /*Convert to attenuation*/   if(right_volume>63)  right_volume=63;   Attenuation.Right=63-right_volume; /*Convert to attenuation*/<!-- SIPO <DP n="13"> --><dp n="d13"/>  STAUD_SetAttenuation(AUDHndl,Attenuation);  STAUD_Mute(AUDHndl,TRUE,TRUE);  }  /*****************************************  节目播放停止函数  *****************************************/  void TerminateRadioChannel(U16 lasterprongramno)  {   int temppid;   if(Epgweaksingal==0)   return;   /*temppid=1+lasterprongramno*ProgramParameterArray;   ALnbFlag=RadioFlashPid[temppid];*/   temppid=1+lasterprongramno*ProgramParameterArray;   VideoPid=RadioFlashPid[temppid];   temppid=2+lasterprongramno*ProgramParameterArray;   AudioPid=RadioFlashPid[temppid];   temppid=3+lasterprongramno*ProgramParameterArray;   PcrPid=RadioFlashPid[temppid];   temppid=4+lasterprongamno*ProgramParameterArray;/*重新得到音量控制值*/   Channelaudio=RadioFlashPid[temppid];<!-- SIPO <DP n="14"> --><dp n="d14"/>  if(slotAudio<PTI_INVALID_SLOT &amp;&amp; AudioPid!=DEMUX_INVALID_PID)  {  pti_audio_dma_state(discard_data);/*audio复位*/  pti_audio_dma_reset();  /*aud_stop(true);*/  if(pti_clear_pid(slotAudio)==true)  {  #ifdefUSIF_DEBUG  do_report(severity_error,″couldn′t clear AUD PID[%X]\n″,pidCurAudio);  #endif  return;  }  if(pti_deallocate_dynamic_slot(slotAudio)==true)  {  #ifdefUSIF_DEBUG  do_report(severity_error,″couldn′t clear AUDIO Slot(%d)[%X]\n″,  slotAudio,  pidCurAudio);   #endif  return;   }  }  /*Added by LP on 13/03/01*/  slotAudio=PTI_INVALID_SLOT;  AudioPid=DEMUX_INVALID_PID;  if(PcrPid!=DEMUX_INVALID_PID)  {<!-- SIPO <DP n="15"> --><dp n="d15"/>  /*   *clear the PCR pid if any existing   */  if(pti_clear_pcr_pid()==true)  {  #ifdefUSIF DEBUG  do_report(severity_error,″couldn′t clear PCR PID[%X]\n″,pidCurPcr);  #endif  return;  }  PcrPid=DEMUX_INVALID_PID;  slotPcr=PTI_INVALID_SLOT;  }  /*   *修改视频、音频通道变动   */  #ifdef VIDEO_PES_BUFFERING  if(DisableVPesInjection())  {   #ifdefUSIF_DEBUG   do_report(severity_error,″Couldh′t disable Video Pes injection\n″);   #endif  return;  }  #else  if(slotVideo<PTI_INVALID_SLOT &amp;&amp; VideoPid!=DEMUX_INVALID_PID)  {<!-- SIPO <DP n="16"> --><dp n="d16"/>   pti_video_dma_state(discard_data);   pti_video_dma_reset();   vid_stop(true,true);   if(pti_deallocate_dynamic_slot(slotVideo)==true)   {  #ifdefUSIF_DEBUG  do_report(severity_error,″couldn′t clear VIDEO Slot(%d)and/or PID[%X]\n″,  slotVideo,  pidCurVideo);  #endif  return;   }   VideoPid=DEMUX_INVALID_PID;   slotVideo=PTI_INVALID_SLOT;  }   #endif/*VIDEO_PES_BUFFERED*/  #ifdefUSIF_DEBUG   do_report(severity_info,″TerminateChannel()done\n″);  #endif  #ifdefINTEGRATE_TELETEXT   if(pidCurPvt!=DEMUX_INVALID_PID)/*1 fff*/   {  ttx_vbi_stop();  ttx_vbi_close();  pidCurPvt=DEMUX_INVALID_PID;   }<!-- SIPO <DP n="17"> --><dp n="d17"/>  #endif  }  /*用户接口初始化处理*/  BOOLEANDVBUsifInit(void)  {  /*extern void OSD_SetFilter(STOSD_RegionHandle_t Handle,STOSD_FilterType_tFilter);  extern void OSD_SetMixWeight(STOSD_RegionHandle_tHandle,U8 MixWeight);*/  BOOLEANbError=FALSE;  /*do report(severity_nfo,″USIF Driver version[%s]\n″,SOFTWARE_UPDATE_ID);*/  if(SEGControlInit()==TRUE)  {  do_report(severity_error,″Failed to initialise segment display\n″);  bError=TRUE;  }  #if 0/*to be used when external interrupt is used to wake up the chip  from power down mode*/  ConfigPIOLowPower();  #endif  /*  DISABLE_STANDBY_LED;  ENABLE_POWER_LED;*/  /*tuner_module_state=UNLOCKED;*//*see usifglob.c*/  dbase_module_state=DBASE_WAITING_FOR_START_SIGNAL;<!-- SIPO <DP n="18"> --><dp n="d18"/>  epg_module_state=EPG_NOT_ACTIVE;  /*LP added on 13/03/01-Creation of the NEW FRAME_EVENT   semaphore for smooth channel switching*/  #ifdef USE_EVENT  semaphore_init_fifo_timeout(&amp;stvid_evt,0);  #endif   /*---Finally set the device to be in standby mode---*/   psemDisplayBufferAccessLock=semaphore_create_fifo(1);   if(psemDisplayBufferAccessLock==NULL)   {   do_eport(severity_error,″Unable to allocate semaphore in usif_init\n″);  return TRUE;   }   /*choose the message pools for mailbox communications*/   if(symbol_enquire_value(″usif_queue″,(void**)&amp;pstUsifMsgQueue))   {   do_report(severity_error,″Cant find USIF message queue\n″);   return TRUE;   }   if(symbol_enquire_value(″dbase_queue″,(void**)&amp;pstDbaseMsgQueue))   {   do_report(severity_error,″Cant find DBASE message queue\n″);   return TRUE;   }   /*<!-- SIPO <DP n="19"> --><dp n="d19"/>   *check whether nvm_control is registered or not.this is done   ●by defult when we call nvm_init   */  bNvmBoxInfoPresent=FALSE;  if(symbol_enquire_value(″nvm_control″,(void**)&amp;idNvmBoxInfoId))  {  do_report(severity_info,″NVM_CONTROL symbol not found.keeping box_info inDRAM...\n″);  }  else  {  bNvmBoxInfoPresent=TRUE;  if(NVMAccess(″nvm box_inf″,sizeof(BOX_INFO_STRUCT),&amp;idNvmBoxInfoId))  {   /*  *Failed to allocate the BoxInfo size of data block in  *NVM  */   bNvmBoxlnfoPresent=FALSE;   do report(severity_error,″BOX_INFO Initialisation in NVM...\n″);  }  }  if(bNvmBoxInfoPresent==FALSE)  {  if((pstBoxInfo=(BOX_INFO_STRUCT*)malloc(sizeof(BOX_INFO_STRUCT)))==NULL)  {<!-- SIPO <DP n="20"> --><dp n="d20"/>   do_report(severity_error,″Failed to allocate Memory for BOX_INFO(Size=%d)\n″,sizeof(BOX_INFO_STRUCT));   abort();  }  /*   *initialise the box_info   */  pstBoxInfo->cValidity=FALSE;   }   else   {  /*   *find the data block start address based on the symbol_id   */   pstBoxInfo=(BOX_INFO_STRUCT*)NVMGetDataAddress(idNvmBoxInfoId);   }   if(pstBoxlnfo->cValidity==FALSE)   {   bDisplayStartupBanner=TRUE;   pstBoxInfo->current_box_state =BOX_POWERED_ON;   pstBoxInfo->stLastWatchingProg.uiWord32 =0;   pstBoxInfo->bSupplyLnb=FALSE;  #ifndef BUILD_FOR DVBC   pstBoxInfo->aiLnbFreq[0][0]=DEFAULT_LNB_FREQ;   pstBoxInfo->aiLnbFreq[0][1]=DEFAULT_LNB_FREQ;   pstBoxInfo->aiLnbFreq[1][0]=DEFAULT_LNB_FREQ;   pstBoxInfo->aiLnbFreq[1][1]=DEFAULT_LNB_FREQ;  #endif<!-- SIPO <DP n="21"> --><dp n="d21"/>   pstBoxInfo->ChannelaudioLevel=MIN_VOL_LEVEL;   pstBoxInfo->ChannelaudioBalance =VOL_BALANCE_CENTRE;   pstBoxInfo->bMuteState =FALSE;   }   if(pstBoxInfo->ChannelaudioBalanee<VOL_BALANCE_LEFT_MAX‖   pstBoxInfo->ChannelaudioBalance>VOL_BALANCE_RIGHT_MAX)   pstBoxlnfo->ChannelaudioBalance=VOL_BALANCE_CENTRE;  /* if(pstBoxInfo->ChannelaudioLevel<MIN_VOL_LEVEL‖   pstBoxInfo->ChannelaudioLevel>MAX_VOL_LEVEL)*/   pstBoxInfo->ChannelaudioLevel=Channelaudio;/*初始化频道音量*/   cCurVolLevel=pstBoxInfo->ChannelaudioLevel+Vol;/*频道音量+通用音量*/   cCurVolBalance=pstBoxInfo->ChannelaudioBalance;  bAudioMuteState=FALSE;  mpeg_set_audio_volume_LR(cCurVolLevel,cCurVolLevel);  /*在设置音量控制时,先做静音处理,以防止电视机发出“嘭嘭”声*/  /*初始化时,先设置声道处于净音状态*/   {  MILLI_DELAY(500);  STAUD_Mute(AUDHndl,FALSE,FALSE);  Unmute_audio();   }  UpdateBoxVolInfo(cCurVolLevel,cCurVolBalance,bAudioMuteState);   /*SetpLnbPower();*//*LP-300600-Latest Lnb power setting is recovered*/  #if!defined(maly)&amp;&amp; defined(tylko11)‖defined(tylko12)<!-- SIPO <DP n="22"> --><dp n="d22"/>   STTBX_Print((″VIDEO Matrix onitialisation\n″));   if(Video_matrix_init())   {   STTBX_Print((″video_matrix_init()failed\n″));  }  else  {   STTBX_Print((″video_matrix_init()=OK\n″));  }  SetvideoOutputFormat(pstBoxInfo->ucScartInfo);  /*gjh add for tvvcr modulator channel set init2002.12.14*/  if(RFmodulator_init())  {   STTBX_Print((″RFmodulator_init()failed\n″));   }  else   {   STTBX_Print((″RFmodulator_init()=OK\n″));  }  #endif

实施例1既使用频道音量控制,以保证各频道音量输出的均衡;又保留通用音量控制,以解决用户需要同时控制所有频道的音量大小的问题,如半夜收看电视需要将所有频道的音量都调至很小时。其操作调节十分简单。它可广泛应用于各种电视机中。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号