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

📄 preview.c

📁 代码有点长,需细心阅读,仅供影音视听类产品的开发人员参考
💻 C
📖 第 1 页 / 共 2 页
字号:
                        msf_saved[i] = addmsf_ss(msf, LAST_FRAME_TIME * i);
                }

                first = 0;
            }

            if(cd_trk_now > cd_trk_hi)
            {
                UISetNMNorm();

                done = 4;
                break;
            }

            /*
             ** setup framebuffer copy location
             */
            msf = msf_saved[n];

#if CONFIG==CONFIG_COMBO_SVCD
            if((cd_type_loaded == CDSVCD)||(vcd_b_pic_move_right==1))
#ifdef NINTAUS
        if (vcd_b_pic_move_right==1)
                    PlayMSFPreview(xxx[n],yyy[n] + (IsAVDDisplayNTSC()? 6 : 18), msf, cd_trk_now);
        else
                PlayMSFPreview(sdram_xxx[n],sdram_yyy[n] + (IsAVDDisplayNTSC()? 6 : 18), msf, cd_trk_now);
#else
        if (vcd_b_pic_move_right==1)
                    PlayMSFPreview(xxx[n], yyy[n] + (IsAVDDisplayNTSC()? 6 + (n / 3 + 4) * 1 : 18), msf, cd_trk_now);  //wyf fixed SVCD disc NTSC 9frame osd bug 2-8-20 19:24.
        else
                PlayMSFPreview(sdram_xxx[n], sdram_yyy[n] + (IsAVDDisplayNTSC()? 6 + (n / 3 + 1) * 30 : 18), msf, cd_trk_now);  //wyf fixed SVCD disc NTSC 9frame osd bug 2-8-20 19:24.
#endif
            else
                PlayMSFPreview(xxx[n], yyy[n] + (IsAVDDisplayNTSC()? 12 : 18), msf, cd_trk_now);
#else
            PlayMSFPreview(xxx[n], yyy[n] + (IsAVDDisplayNTSC()? 12 : 18), msf, cd_trk_now);
#endif

            if(SelectReady == C_FALSE)
            {
                timeout_playback = (100 * PREVIEW_TIME_FIRST) / 16; //init 15 sec,revise
                PicStart = 1;                       //for play first picture
            }
            else
            {
                PicStart = 0;                       //set to none sense

                if(v11_trk_now < cd_trk_hi)
                    timeout_playback = (100 * ((FRAME_TIME > PREVIEW_TIME) ? FRAME_TIME : PREVIEW_TIME)) / 16;  //init  sec,revise
                else
                    timeout_playback = (100 * ((LAST_FRAME_TIME > PREVIEW_TIME) ? LAST_FRAME_TIME : PREVIEW_TIME)) / 16;    //init  sec,revise
            }

            preview_osd(n);                     //9frame
            MediaMainLoop();

            /*
             ** save status
             */
            //msf_saved[n] = msf;

            //addmsf_ss(msf,PREVIEW_TIME);

            //psprintf(linebuf, "func %x\n", sys_cmd);
            //  epp_write(linebuf);
            if(GetCmdType(sys_cmd) == CMD_FUNC)
            {
                switch (GetCmdSrc(sys_cmd))
                {
                    case CMD_FUNC_STOP:
                        remkey_timer = T1SECOND; //ZHX 080703 clear OSD
                        done = 4;                       //exit now
                        break;

                    case CMD_FUNC_OPEN:
               #ifdef POWER_KEY     //zhyf test 2-9-11 20:42
                  case CMD_FUNC_POWER:
               #endif 
                       done=4;
                       break;  

                    case CMD_FUNC_PREVIEW:
                    case CMD_FUNC_9FRAMES:
                    case CMD_FUNC_PLAY:
                        //UISetNMNorm();//move to end
                        //?play_state = VCD_STATE_NORMAL;
                        done = 2;
                        break;

                    case CMD_FUNC_NEXT:
                        if(cd_trk_now < cd_trk_hi)
                        {
                            cd_trk_now++;
                            s_msf = gettrkmsf(cd_trk_now);
                            first = 1;
                            SelectReady = C_FALSE;
                            goto frame_start;
                        }
                        break;

                    case CMD_FUNC_PREV:
                        if(cd_trk_now > cd_trk_lo_now)
                        {
                            cd_trk_now--;
                            s_msf = gettrkmsf(cd_trk_now);
                            first = 1;
                            SelectReady = C_FALSE;
                            goto frame_start;
                        }
                        break;

                    case CMD_FUNC_GAME:
                        play_state = VCD_STATE_STOP;
                        done = 2;
                        break;

                    case CMD_FUNC_TIMEOUT:
                        if(GetIntrFlag() & INTR_TRACK_CHANGE)
                        {
                            cd_trk_now++;
                            s_msf = gettrkmsf(cd_trk_now);
                            first = 1;
                            goto frame_start;
                        }
                        else                                //if(GetIntrFlag()&INTR_TIMEOUT)//jhuang mark 2002/4/2
                        {
                            n++;

                            if(n == 9)
                            {
                                SelectReady = C_TRUE;
                            }

                            if(n > 9)
                            {
                                n = 0;
                            }
                        }
                        break;
                }
            }
            else if(GetCmdType(sys_cmd) == CMD_IR_SELECT)   //9
            {
                SelectReady = C_TRUE;
                n = GetCmdSrc(sys_cmd) - 1;
#ifdef DIRECT_PLAY_9FRM
                msf=msf_saved[GetCmdSrc(sys_cmd)-1];
                done=3;
                break;
#endif
            }
        }
    } while(!done);
    //epp_write("OUT 9frames ....\n");

    osd_init();

    switch (done)
    {
        case 3:
            psprintf(RegionValStr[REGION1], " %d", GetCmdSrc(sys_cmd));
            PrintOsdMsg(STR_OS_SELECT, REGION1, 1, 1, CH_N);
            s_msf = msf;                            //local saved msf copy to s_msf
            break;

        case 2:
            //PrintOsdMsg(STR_OS_9FRAME_CNL,REGION1,1,0,CH_N);
#ifdef NINTAUS
            s_msf = msf_saved[n];           //jack
#endif
            PrintOsdMsg(STR_OS_PLAY, REGION1, 1, 0, CH_N);
            remkey_timer = T4SECOND; //ZHX 080703 clear OSD
            break;

        case 1:
            ClearCommand();
            break;

        case 4:
            //PrintOsdMsg(STR_OS_STOP,REGION0,1,0);
            break;
    }

    UISetNMNorm();
    ///reset_servo_cdpt = 0;
    SelectReady = C_FALSE;              //global var.

    return 0;

#else
    return 0;

#endif // IR_PREVIEW_ON
}

/*
**  intro_navigation
**
*/
int intro_navigation(void)
{
#ifdef IR_INTRO_ON
    int     done;


#ifdef  MONE_PREVIEW_NAVIGATION
    epp_write_slow("INTRO navigation\n");
#endif

    done = 0;
    cd_trk_now = cd_trk_lo_now;

    do
    {
        ClearCommand();

        PlayTrack(cd_trk_now);
        //psprintf(RegionValStr[REGION2], " %d:%d", trk_start, trk_end);  
        //PrintOsdMsg(STR_OS_PLAY, REGION2, 10, 1, CH_N); //ZHX 100803 test
        if((cd_type_loaded!=CDDA)&&(cd_trk_now==2||cd_trk_now==cd_trk_hi)
            &&(trk_end-trk_start < PREVIEW_TIME+5))//First trk and last trk less than 10s 
           timeout_playback = (100 * 8) / 16;             //ZHX 100803
        else	
        timeout_playback = (100 * PREVIEW_TIME) / 16;

        //timeout_playback = 0;

        UISetNMIntro();        //ZHX 063003
        intro_osd_flag = 1;   //ZHX 063003
        if(cd_type_loaded==CDDA)
        psprintf(RegionValStr[REGION1], " %d", cd_trk_now);
        else
        psprintf(RegionValStr[REGION1], " %d", cd_trk_now-1);
        PrintOsdMsg(STR_OS_INTRO, REGION1, 1, 1, CH_N);
        
        MediaMainLoop();

        if((GetCmdType(sys_cmd)) == CMD_FUNC)
        {
            switch (GetCmdSrc(sys_cmd))
            {
                case CMD_FUNC_STOP:
                    done = 2;
                    break;
#ifdef POWER_KEY     //huziqin 2002-11-22
                case CMD_FUNC_POWER:
                    done=4;
                    break;
#endif                
                case CMD_FUNC_PRG:
                case CMD_FUNC_OPEN:
                    done = 4;
                    break;
                case CMD_FUNC_PREVIEW:
                case CMD_FUNC_9FRAMES:       //ZHX 100803 move
          case CMD_FUNC_INTRO://move this case ,add clear norm_mode.wangbin 2003-05-14
            UISetNMNorm();
                case CMD_FUNC_RESUME:   //kenny 891006
                case CMD_FUNC_PLAY:
                    //?if(rep_mode == REPEAT_TRACK)
                    //?  rep_track = cd_trk_now;
                    done = 2;
                    PrintOsdMsg(STR_OS_INTRO_CANCEL, REGION1, 1, 0, CH_N);
                    break;

              case CMD_FUNC_PBC://wangbin add it for skip out 03-03-21
                   done = 4;
                   break;                    

                case CMD_FUNC_NEXT:
                    if(cd_trk_now < cd_trk_hi)
                    {
                        //?if(rep_mode!=REPEAT_TRACK)
                        cd_trk_now++;
                        //?if(play_state!=VCD_STATE_INTRO)
                        //??/done=4;
                    }
                    else
                    {
                        //UIsetState(VCD_STATE_STOP);
                        PrintOsdMsg(STR_OS_STOP, REGION1, 1, 0, CH_N);                                        
                        if (cd_type_loaded!=CDDA)
                            remkey_timer = 50;  //ZHX 100803
                        play_state = VCD_STATE_STOP;
                        done = 2;
                    }
                    break;

                case CMD_FUNC_PREV:
                    if(cd_trk_now > cd_trk_lo_now)
                    {
                        //if(rep_mode!=REPEAT_TRACK)
                        cd_trk_now--;
                    }

                    //?if(play_state!=VCD_STATE_INTRO)
                    //?  done=4;
                    break;

                case CMD_FUNC_TIMEOUT:
#if 0                                                       //VFD_DRIVER!=SPL10   //zhg 2002/10/16
                    if(GetIntrFlag() & INTR_SKIP_INTRO)
                    {
                        timeout_playback = 0;
                    }
#endif
#if VFD_DRIVER==SPL10
                    if( /*(!(IsNMIntro()))&& */ (IsNMRanReady()))
                    {
                        ircmd_shuffle();
                        cd_trk_now = shuffle_trk;

                        //     psprintf(linebuf,"%x\n",shuffle_trk);
                        //     epp_write(linebuf);

                        done = 2;
                        break;
                    }
#endif
                    //if(rep_mode==REPEAT_IDLE)
                    if((rep_mode != REPEAT_DISC) && (rep_mode != REPEAT_TRACK))
                    {                                           //zhyf modified it for intro func 02/10/22 
                        if(play_state != VCD_STATE_BACKWARD)
                        {
                            if(cd_trk_now == cd_trk_hi)
                            {
                                play_state = VCD_STATE_STOP;
                                PrintOsdMsg(STR_OS_STOP, REGION1, 1, 0, CH_N);                                        
                                if (cd_type_loaded!=CDDA)
                                    remkey_timer = 50;  //ZHX 100803
                                done = 2;
                            }
                            else
                            {
                                cd_trk_now++;
                            }
                        }
                    }
                    else if(rep_mode == REPEAT_DISC)
                    {
                        if(play_state != VCD_STATE_BACKWARD)
                        {
                            if(cd_trk_now == cd_trk_hi)
                                cd_trk_now = cd_trk_lo_now;
                            else
                                cd_trk_now++;
                        }
                    }

                    if(play_state == VCD_STATE_FORWARD ||
                         play_state == VCD_STATE_BACKWARD)
                    {
                        adv_search_time = 0;

                        PrintOsdMsg(STR_OS_PLAY, REGION1, 1, 0, CH_N);
                        play_state = VCD_STATE_NORMAL;
                        done = 4;
                    }

                   // if(IsNMIntro())//在上面设置了此状态,才能识别INTRO,这里要挡掉要不INTRO只执行一次。WB
                    //    done = 4;
                    break;

                default:
                    cd_trk_now++;
                    break;
            }
        }
        else if((sys_cmd & 0xff00) == CMD_IR_SELECT)
        {
            cd_trk_now = cd_trk_lo_now + (sys_cmd & 0xff) - 1;
            //if(rep_mode==REPEAT_TRACK)
            //  rep_track=cd_trk_now;//disable jhuang pbc off table
            play_state = VCD_STATE_NORMAL;  //must needed
            done = 3;
            break;
        }
    } while(!done);
    switch (done)
    {
        case 3:
            PrintOsdMsg(STR_OS_SELECT, REGION1, 1, 1, CH_N);

        case 2:
            // PrintOsdMsg(STR_OS_INTRO_CNL,REGION1,1,0,CH_N);

        case 1:
            ClearCommand();
            break;

        case 4:
            //PrintOsdMsg(STR_OS_STOP,REGION0,1,0);
            break;
    }
    UISetNMNorm();
    intro_osd_flag = 0;   //ZHX 063003 
    return 0;

#else

    return 0;                                           //Tony added 02/05/06 prevent from warning,
    //control reaches end of non-void function, at compiling time
#endif //#ifdef IR_INTRO_ON
}

⌨️ 快捷键说明

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