📄 preview.c
字号:
/*
** FILE
** preview.c
**
** DESCRIPTION
** .... pseudo hook for PREVIEW playback
*/
#include "config.h"
#include "global.h"
#include "regmap.h"
#include "macro.h"
#include "hwsetup.h"
#include "cfont.h"
#include "func.h"
#include "util.h"
#include "sio.h"
#include "epp.h"
#include "osd.h"
#include "user_init.h"
#include "stc.h"
#include "osdutil.h"
#if CONFIG == CONFIG_COMBO_VCD
#include "framebuf.h"
#endif
void SetupDigestBackground(void);
//#define MONE_PREVIEW_NAVIGATION
//MSX to SS
#define FRAME_TIME ((M2I(gettrkmsf(cd_trk_now+1)&0x00ffffff)-M2I(gettrkmsf(cd_trk_now)&0x00ffffff) )/9) //copy from bbk702
#define LAST_FRAME_TIME ((M2I(gettrkmsf_leadout()&0x00ffffff)-M2I(gettrkmsf(cd_trk_hi)&0x00ffffff) )/9) //copy from bbk702
/*
** XY locations of small preview windows
*/
static const UINT16 xxx[9] = {
32 + 4, 132, 232 - 4,
32 + 4, 132, 232 - 4,
32 + 4, 132, 232 - 4,
};
static const UINT16 yyy[9] = {
0 + 3 + 6, 0 + 3 + 6, 0 + 3 + 6,
0 + 72 + 3, 0 + 72 + 3, 0 + 72 + 3,
0 + 72 + 3 + 72 - 6, 0 + 72 + 3 + 72 - 6, 0 + 72 + 3 + 72 - 6,
};
#if 0
static const UINT16 yyy_pal[9] = {
0 + 3, 0 + 3, 0 + 3,
0 + 72 + 3 + 12, 0 + 72 + 3 + 12, 0 + 72 + 3 + 12,
0 + 72 + 3 + 12 + 12 + 72, 0 + 72 + 3 + 12 + 12 + 72,
0 + 72 + 3 + 12 + 12 + 72,
};
#endif
static const UINT16 sdram_xxx[9] = {
32 + 16, 172 + 4, 312 - 8,
32 + 16, 172 + 4, 312 - 8,
32 + 16, 172 + 4, 312 - 8,
};
static const UINT16 sdram_yyy[9] = {
0 + 20 + 15, 0 + 20 + 15, 0 + 20 + 15,
0 + 144 + 40 - 20 + 3, 0 + 144 + 40 - 20 + 3, 0 + 144 + 40 - 20 + 3,
0 + 144 + 60 + 144 - 20 - 20 - 9, 0 + 144 + 60 + 144 - 20 - 20 - 9,
0 + 144 + 60 + 144 - 20 - 20 - 9
};
//#define PREVIEW_TIME_FIRST 15
//#define PREVIEW_TIME 15
#define MSF_PREVIEW_INIT ((UINT32)(-1))
/*
**
**
*/
int preview_navigation(void)
{
#ifdef IR_PREVIEW_ON
BYTE done;
BYTE i, n;
BYTE first;
UINT32 msf_saved[9];
#ifdef MONE_PREVIEW_NAVIGATION
epp_write_slow("PREVIEW navigation\n");
#endif
base_track = cd_trk_lo_now; //jhuang 2002/4/2 move to global.h
SelectReady = C_FALSE; //global var.
done = 0;
first = 1;
//t_disp = ON;//jhuang 2002/4/27 must turn off in preview/9frame
OSD_OnOffRegion(OSD_OFF, REGION0);
OSD_OnOffRegion(OSD_OFF, REGION1);
osd_init_preview();
///#if CONFIG == CONFIG_COMBO_SVCD
///if(cd_type_loaded == CDSVCD)
/// reset_servo_cdpt = 1;
///#endif
do
{
preview_start:
n = 0;
preview_id = 0; //jhuang 2-6-16
ClearCommand();
//for (n=0; n<9 && !done; n++)
while(!done && n < 9)
{
/*wyf 2002/4/27 */
//psprintf(RegionValStr[5], Ch2_ye4 ":%d/%d", base_track + n - 1,
// cd_total_trk());
if(first)
{
//n=0;
if(!IsAVDPreview())
DisplayPreviewBackground();
else
SetupDigestBackground();
#if CONFIG == CONFIG_COMBO_VCD
WAIT_VSYNC;
enable_video();
#endif
for(i = 0; i < 9; i++)
msf_saved[i] = gettrkmsf(base_track + n); //MSF_PREVIEW_INIT;
first = 0;
}
cd_trk_now = base_track + n;
if(cd_trk_now > cd_trk_hi) //jhuang 2002/3/8
{
cd_trk_now = base_track;
n = 0;
SelectReady = C_TRUE;
continue;
}
/*
** setup framebuffer copy location
*/
#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)
PlayTrackPreview(xxx[n], yyy[n] + (IsAVDDisplayNTSC()? 6 : 18), cd_trk_now);
else
PlayTrackPreview(sdram_xxx[n], sdram_yyy[n] + (IsAVDDisplayNTSC()? 6 : 18), cd_trk_now);
#else
if (vcd_b_pic_move_right==1)
PlayTrackPreview(xxx[n], yyy[n] + (IsAVDDisplayNTSC()? 6 + (n / 3 + 4) * 1 : 18), cd_trk_now); //wyf fixed SVCD disc NTSC 9frame osd bug 2-8-20 19:24.
else
PlayTrackPreview(sdram_xxx[n], sdram_yyy[n] + (IsAVDDisplayNTSC()? 6 + (n / 3 + 1) * 30 : 18), cd_trk_now); //wyf fixed SVCD disc NTSC 9frame osd bug 2-8-20 19:24.
#endif
else
PlayTrackPreview(xxx[n], yyy[n] + (IsAVDDisplayNTSC()? 12 : 18), cd_trk_now);
#else
PlayTrackPreview(xxx[n], yyy[n] + (IsAVDDisplayNTSC()? 12 : 18), 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
//timeout_playback = 0;
if(v11_trk_now < cd_trk_hi)
timeout_playback = (100 * (FRAME_TIME * 9) + 15) / 16; //init sec,revise
else
timeout_playback = (100 * (LAST_FRAME_TIME * 9) + 15) / 16; //init sec,revise
}
/*show trk here*/
preview_osd(n);
if(osd_font_mode)
psprintf(RegionValStr[5], OS_PAGE":%d/%d", cd_trk_now-1 ,
cd_total_trk());
else
psprintf(RegionValStr[5],"p:%d/%d", cd_trk_now-1 ,
cd_total_trk());
PrintOsdMsg(STR_OS_NULL, REGION5, 0, 1, CH_P);
MediaMainLoop();
/*
** save status
*/
//msf_saved[n] = s_msf ;//jhuang mark
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
case CMD_FUNC_POWER:
#endif
done = 4; //charles 0402
break;
case CMD_FUNC_9FRAMES:
case CMD_FUNC_PREVIEW:
case CMD_FUNC_PLAY:
//UISetNMNorm();//move to end
done = 2;
break;
case CMD_FUNC_NEXT:
if(base_track < cd_trk_hi)
{
base_track = (base_track) + 9;
first = 1;
SelectReady = C_FALSE;
goto preview_start;
}
break;
case CMD_FUNC_PREV:
if(base_track >= cd_trk_lo_now)
{
base_track = base_track - 9;
if(base_track < cd_trk_lo_now)
{
base_track = cd_trk_lo_now;
}
first = 1;
SelectReady = C_FALSE;
goto preview_start;
}
break;
case CMD_FUNC_TIMEOUT: //P
if(GetIntrFlag() & INTR_TIMEOUT)
{
n++;
if(n == 9)
{
SelectReady = C_TRUE;
}
if(n > 9)
{
n = 0;
}
}
break;
}
}
else if((GetCmdType(sys_cmd)) == CMD_IR_SELECT)
{
SelectReady = C_TRUE;
n = GetCmdSrc(sys_cmd) - 1;
#ifdef DIRECT_PLAY_9FRM
cd_trk_now = GetCmdSrc(sys_cmd);
done=3;//select & exit;
break;
#endif
}
} //while(!done&&n<9)
} while(!done);
UISetNMNorm();//charles 2002/12/9 move here
osd_init();
switch (done)
{
case 3:
psprintf(RegionValStr[REGION1], " %d", GetCmdSrc(sys_cmd));
PrintOsdMsg(STR_OS_SELECT, REGION1, 1, 1, CH_N);
break;
case 2:
//PrintOsdMsg(STR_OS_BROWSE_CNL,REGION1,1,0,CH_N);
#ifdef NINTAUS
s_msf = gettrkmsf(base_track + 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:
break;
}
//epp_write_slow("exit preview --->\n");
//UISetNMNorm();//charles 2002/12/9 move up
///reset_servo_cdpt = 0;
SelectReady = C_FALSE; //global var.
return 0;
#else
return 0;
#endif //#ifdef IR_PREVIEW_ON
}
/*
**
**
*/
int frames9_navigation(void)
{
#ifdef IR_PREVIEW_ON // 2002.04.16 Matt Wang renamed from IR_9FRAMES_ON
BYTE done;
BYTE n, i;
BYTE first;
UINT32 msf_saved[9];
UINT32 msf = 0;
#ifdef MONE_PREVIEW_NAVIGATION
epp_write_slow("9 FRAMES navigation\n");
#endif
base_track = cd_trk_lo_now; //jhuang 2002/4/2 move to global.h
SelectReady = C_FALSE; //global var.
done = 0;
first = 1;
osd_init_preview();
///#if CONFIG == CONFIG_COMBO_SVCD
///if(cd_type_loaded == CDSVCD)
/// reset_servo_cdpt = 1;
///#endif
//t_disp = ON;//jhuang 2002/4/27 must turn off in preview/9frame
do
{
frame_start:
n = 0;
preview_id = 0; //jhuang 2-6-16
ClearCommand();
while(!done && n < 9) //for (n=0; n<9 && !done; n++)
{
/*wyf 2002/4/27 */
//psprintf(RegionValStr[5], Ch2_ye4 ":%d/%d", cd_trk_now - 1,
// cd_total_trk());
if(osd_font_mode)
psprintf(RegionValStr[5], OS_PAGE":%d/%d", cd_trk_now - 1,
cd_total_trk());
else
psprintf(RegionValStr[5],"p:%d/%d", cd_trk_now - 1,
cd_total_trk());
PrintOsdMsg(STR_OS_NULL, REGION5, 0, 1, CH_P); //wyf 2-4-24 12:21.
if(first)
{
msf = gettrkmsf(cd_trk_now);
if(!IsAVDPreview())
DisplayPreviewBackground();
else
SetupDigestBackground();
#if CONFIG == CONFIG_COMBO_VCD
WAIT_VSYNC;
enable_video();
#endif
for(i = 0; i < 9; i++)
{
//if(v11_trk_now < cd_trk_hi)
if(cd_trk_now < cd_trk_hi) //jhuang 2002/9/16
msf_saved[i] = addmsf_ss(msf, FRAME_TIME * i);
else /*last track use special define */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -