ircmd_receiver.c

来自「OSD显示,单片机实现,ICCAVR! 代码风格严谨,为高人所写.我仅为了上传换」· C语言 代码 · 共 580 行 · 第 1/2 页

C
580
字号
                    set_prologic_val(prologic_val);
                    break;
                case PROLOGIC_MODE_MATRIX:
                    //vfd_set_str(0,"MATRIX ");
                    //psprintf(RegionValStr[REGION1],"MATRIX");
                    //PrintOsdMsg(STR_OS_SPACE,REGION1,1,1);
                    set_prologic_val(prologic_val);
                    break;   

           } 
}


void show_prologic(void)
{
        UINT8 id=0;

        switch(prologic_val)
                {
                case PROLOGIC_MODE_MOVIE:
                    vfd_set_str(0,"MOVIE  ");
                    psprintf(RegionValStr[REGION1],"MOVIE");
                    PrintOsdMsg(STR_OS_SPACE,REGION1,1,1);
                    //set_prologic_val(prologic_val);
                    break;
                case PROLOGIC_MODE_MUSIC:
                    vfd_set_str(0,"MUSIC  ");
                    psprintf(RegionValStr[REGION1],"MUSIC");
                    PrintOsdMsg(STR_OS_SPACE,REGION1,1,1);
                    //set_prologic_val(prologic_val);
                    break;
                case PROLOGIC_MODE_OFF:
                    vfd_set_str(0,"STEREO ");
                    psprintf(RegionValStr[REGION1],"STEREO");
                    PrintOsdMsg(STR_OS_SPACE,REGION1,1,1);
                    //set_prologic_val(prologic_val);
                    break;
                case PROLOGIC_MODE_EMU:
                    
                    vfd_set_str(0,"PROLOGIC");
                    psprintf(RegionValStr[REGION1],"PROLOGIC");
                    PrintOsdMsg(STR_OS_SPACE,REGION1,1,1);
                    //set_prologic_val(prologic_val);
                    break;
                case PROLOGIC_MODE_VIRTUAL:
                    vfd_set_str(0,"VIRTUAL ");
                    psprintf(RegionValStr[REGION1],"VIRTUAL");
                    PrintOsdMsg(STR_OS_SPACE,REGION1,1,1);
                    //set_prologic_val(prologic_val);
                    break;
                case PROLOGIC_MODE_MATRIX:
                    vfd_set_str(0,"MATRIX ");
                    psprintf(RegionValStr[REGION1],"MATRIX");
                    PrintOsdMsg(STR_OS_SPACE,REGION1,1,1);
                    //set_prologic_val(prologic_val);
                    break;   

           } 
}

void do_prologic_noshow()
{
    do_prologic();
}

void do_prologic_and_show(void)
{    
    do_prologic();
    show_prologic();
}

void surround_exe()
{
    UINT8 id=0;
    if (surround_mode == 0)
    {

        if (current_rcvr_mode == RECEIVER_MODE_DVD)
        {
            
            if(IS_AUDIF_CODING_MODE_DTS || IS_AUDIF_CODING_MODE_DTSCD)       /* dts */
            {
                    prologic_val=PROLOGIC_MODE_OFF;
                    //vfd_show_channel_msg("DIGITAL");
                    vfd_set_str(0,"DIGITAL");
                    psprintf(RegionValStr[REGION1],"DIGITAL");
                    PrintOsdMsg(STR_OS_SPACE,REGION1,1,1);
            }
            else if(IS_AUDIF_CODING_MODE_AC3)
            {/* ac3 */
            if (pDSV->dNs_Audio_ch<=1)
                {
                  do_prologic_and_show();
                    
                }else
                {

                    prologic_val=PROLOGIC_MODE_OFF;
                    //vfd_show_channel_msg("DIGITAL");
                    vfd_set_str(0,"DIGITAL");
                    psprintf(RegionValStr[REGION1],"DIGITAL");
                    PrintOsdMsg(STR_OS_SPACE,REGION1,1,1);
                }
            }
            else
            {
                do_prologic_and_show();
            }
           
        }
        else
        {
              do_prologic_and_show();
        }
        exe_setup_function(STR_OS_DOWNMIX_SETUP,STR_OS_OFF,1);
        AUDIF_Set_OutputMode(OUT_51Channel,0);
    }
    else
    {
        exe_setup_function(STR_OS_DOWNMIX_SETUP,STR_OS_LTRT_SETUP,1);
        prologic_val = PROLOGIC_MODE_OFF;
        //vfd_show_channel_msg("STEREO ");
        vfd_set_str(0,"STEREO ");
        set_prologic_val(prologic_val);
        psprintf(RegionValStr[REGION1],"STEREO");
        PrintOsdMsg(STR_OS_SPACE,REGION1,1,1);
        AUDIF_Set_OutputMode(OUT_51DownmixLtRt,0);
    }
    subvol_main_vol();
}
void surround_exe_nomsg()
    {
    UINT8 id=0;
    if (surround_mode == 0)
    {

        if (current_rcvr_mode == RECEIVER_MODE_DVD)
        {
            if(IS_AUDIF_CODING_MODE_DTS || IS_AUDIF_CODING_MODE_DTSCD)       /* dts */
            {
                    prologic_val=PROLOGIC_MODE_OFF;
            }
            else if(IS_AUDIF_CODING_MODE_AC3)
            {

            if ((pDSV->dNs_Audio_ch<=1)&&(cd_type_loaded==CDDVD))
                {
                    prologic_val = PROLOGIC_MODE_EMU;
                }
                else
                    prologic_val=PROLOGIC_MODE_OFF;              
            }
            else
            {
                prologic_val = PROLOGIC_MODE_EMU;
            }
            exe_setup_function(STR_OS_DOWNMIX_SETUP,STR_OS_OFF,1);
            do_prologic_noshow(); // ??
       }
       else
       {
            do_prologic_noshow();
            exe_setup_function(STR_OS_DOWNMIX_SETUP,STR_OS_OFF,1);
       }
        
        AUDIF_Set_OutputMode(OUT_51Channel,0);
    }
    else
    {
        prologic_val = PROLOGIC_MODE_OFF;
        AUDIF_Set_OutputMode(OUT_51DownmixLtRt,0);
        set_prologic_val(prologic_val);     
        
    }
    subvol_main_vol();
}
void surround_mode_bak()
{
    save_surround_mode = surround_mode;
    save_prologic_val = prologic_val;
}
void surround_mode_restore()
{
    surround_mode = save_surround_mode;
    prologic_val = save_prologic_val;
    surround_exe_nomsg();
}
void surround_init()
{
#if 1    
        BYTE *p;
        BYTE data;
        BYTE res;
        p = &data;
        res = ReadFromI2c(0xa0,INIT_FLAG_ADDR,p,1);
        if (res >0)
        {
            if (data == 0x55)
             {
             }
            else
            {
                *p = 0x55;
                WriteToI2c(0xa0,INIT_FLAG_ADDR,p,1);
                surround_mode = 0; // default set to prologic
                prologic_val = PROLOGIC_MODE_EMU;
                I2c_write_surrond_mode();
            }
        }
        else
        {
            *p = 0x55;
            WriteToI2c(0xa0,INIT_FLAG_ADDR,p,1);
            surround_mode = 0; // default set to prologic
            prologic_val = PROLOGIC_MODE_EMU;
            I2c_write_surrond_mode();
        }
#endif    
    I2c_read_surround_mode();
    surround_exe_nomsg();
}

void ircmd_prologic(void)
{
#if 1
    //Mute();
    #ifdef SUPPORT_DDX8001
    ddx_subch_mute(1);
    #elif USE_AMP_MUTE
    sub_masterMute(AMP_MUTE);
    #endif
    //ddx_masterMute(1);
    AUDIF_Set_Volume(0);//2004AUDDRV AudioSetVolume(0);  // cmhuang, 2003/8/28 11:58PM
    surround_switch();
    //vfd_set_surround_mode();
    //vfd_backup();
    erase_vfd_mem();
    surround_exe();
    #ifdef SUPPORT_DDX8001
    ddx_subch_mute(0);
    #elif USE_AMP_MUTE
    sub_masterMute(AMP_DEMUTE);
    #endif
    //ddx_masterMute(0);
    //Demute();
    AUDIF_Demute();//2004AUDDRV AudioDemute();  // cmhuang, 2003/8/28 11:58PM    
#else
    UINT8 id=0;
        AUDIF_Set_Volume(0);//2004AUDDRV AudioSetVolume(0);  // cmhuang, 2003/8/28 11:58PM

#ifndef ADJUSTING_ACTION_VALID_RIGHT_NOW    // alan, 2003/8/27 11:36AM
    if(action_click)
#endif
        prologic_val++;
    if(prologic_val>2) 
        prologic_val=0;
    
    switch(prologic_val)
    {
    case 0:
        id=STR_OS_PL_MOVIE;
        vfd_show_channel_msg("MOVE");
        prologic_flag=1;    //wuzhj add for prologic_II 2004/04/04
        break;
    case 1:
        id=STR_OS_PL_MUSIC;
        vfd_show_channel_msg("MUSIC");
        prologic_flag=1;    //wuzhj add for prologic_II 2004/04/04
        break;
    case 2:
        id=STR_OS_OFF;
        vfd_show_channel_msg("STEREO");
        prologic_flag=0;    //wuzhj add for prologic_II 2004/04/04
        break;
    }

    OSD1000ISP_STATUS(OSDISP_IGNORE, OSDIR_GLOBAL);

    PrintOsdMsg(STR_OS_PROLOGIC|(id<<OSDSTR_ID_TOTL_BIT),REGION1,1,4);
    set_prologic_val(prologic_val);
    AUDIF_Demute();//2004AUDDRV AudioDemute();  // cmhuang, 2003/8/28 11:58PM    
#endif
}
#endif 
#endif //USE_PROLOGIC_II_KEY_FOR_SURROUND


#endif //SUPPORT_RECEIVER

⌨️ 快捷键说明

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