CoreGDef.h
上传用户:super_houu
上传日期:2008-09-21
资源大小:4099k
文件大小:40k
源码类别:

DVD

开发平台:

Others

  1. /***********************************************************************/
  2. /* File:                                                               */
  3. /* =====                                                               */
  4. /* Descripton:                                                         */
  5. /* ===========                                                         */
  6. /*                                                                     */
  7. /* Log:                                                                */
  8. /* =====                                                                 */
  9. /*
  10.  $Name: $
  11.  $Header: /I76/I76_Common/I76_Reference/Playcore/Coremain/CoreGDef.h 72    04-03-31 20:15 Angieh $                                                           
  12.  $Log: /I76/I76_Common/I76_Reference/Playcore/Coremain/CoreGDef.h $
  13.  * 
  14.  * 72    04-03-31 20:15 Angieh
  15.  * Add some macro for support Index and Page search.
  16.  * 
  17.  * 71    04-03-30 21:10 Williaml
  18.  * add the define IS_CLIPS_TYPE_MPEG
  19.  * 
  20.  * 70    3/25/04 11:35p Johnk
  21.  * merged the latest code for S1
  22.  * 
  23.  * 69    04-03-11 17:28 Jerryc
  24.  * add support for sacd hd/cd layer switch
  25.  * 
  26.  * 68    04-03-11 9:53 Wesleyj
  27.  * add PANEL_SKIP_FAST_COMBINE for key scan use
  28.  * 
  29.  * 67    3/10/04 4:36p Lotan
  30.  * Merge with Divx Certification DB 3
  31.  * 
  32.  * 65    04-03-05 16:45 Jerryc
  33.  * 
  34.  * 64    3/01/04 6:28p Lotan
  35.  * merge with Divx certification DB
  36.  * 
  37.  * added gns values
  38.  * 
  39.  * 63    2/24/04 2:57p Robinj
  40.  * fix SI_IS_CURRENT_MPEG_CLIP
  41.  * 
  42.  * 62    2/20/04 6:09p Glenl
  43.  * Merged S1 code
  44.  * 
  45.  * 61    04-02-19 17:58 Jerryc
  46.  * add sacd code
  47.  * 
  48.  * 60    04-02-19 15:01 Chaol
  49.  * fix IS_DVD_AC3_KARAOKE_DISC
  50.  * 
  51.  * 59    2/18/04 7:02p Leonh
  52.  * avoid the FE error when the DVP is IDEL
  53.  * 
  54.  * 58    04-02-16 20:14 Chaol
  55.  * add karaoke
  56.  * 
  57.  * 57    1/05/04 9:30a Fwang
  58.  * Round the value of frame rate.
  59.  * 
  60.  * 56    12/31/03 2:20p Fwang
  61.  * Add AVI display menu.
  62.  * 
  63.  * 55    11/28/03 3:41a Leonh
  64.  * Anigeh:Put the Downmix Table updated flag in the gns.dvd.
  65.  * 
  66.  * 54    11/27/03 2:44p Leonh
  67.  * Angieh:Add a flag for udpating LPCM DownMix Table
  68.  * 
  69.  * 53    11/25/03 9:32a Leonh
  70.  * Angieh:Adjust the remain time value.
  71.  * 
  72.  * 52    11/15/03 12:50p Leonh
  73.  * Angieh:add support for the display menu.
  74.  * 
  75.  * 51    11/12/03 12:07p Leonh
  76.  * correct availabe group define
  77.  * 
  78.  * 50    11/06/03 8:35a Leslie
  79.  * add avtt and amgm domain macro
  80.  * 
  81.  * 49    10/23/03 10:07a Leslie
  82.  * Support dvd audio
  83.  * 
  84.  * 12    10/14/03 11:52a Leslie
  85.  * 
  86.  * 11    10/09/03 9:02a Leslie
  87.  * LeonH: make I76 DVDA project compile through 
  88.  * 
  89.  * 11    9/16/03 3:16p Leonh
  90.  * Merge the latest change from ref
  91.  * 
  92.  * 10    8/20/03 8:22p Leonh
  93.  * finish some API for ASV
  94.  * 
  95.  * 9     8/20/03 2:56p Leonh
  96.  * Merge dvd audio code with the latest nav_dvd code with reference
  97.  * 
  98.  * 44    03-07-16 9:52 Tonnyg
  99.  * correct the difinition of IS_DISC_TYPE_CLIPS
  100.  * 
  101.  * 43    03-07-05 23:50 Tonnyg
  102.  * correct the definition for IS_CLIPS_TYPE_JPG
  103.  * 
  104.  * 42    03-06-27 11:09 Janeg
  105.  * Add SI_CDDA_IS_INTRO_MODE.
  106.  * 
  107.  * 41    03-06-24 14:09 Janeg
  108.  * Add SI_SVCD_IS_INTRO_MODE.
  109.  * 
  110.  * 40    03-06-24 11:31 Leslie
  111.  * Add SI_DVD_NUM_OF_AUDIO_CHANNELS
  112.  * 
  113.  * 39    03-06-17 18:27 Admin
  114.  * Merge for ExinoII project
  115.  * 
  116.  * 38    03-05-16 21:58 Leslie
  117.  * Fix the problem of SI_DVD_AVAILABLE_ANGLE
  118.  * 
  119.  * 37    03-05-13 23:57 Leslie
  120.  * Add SI_SVCD_NUMSELECTION_START and SI_SVCD_NUMSELECTION_END
  121.  * 
  122.  * 36    03-05-13 10:45 Jerryc
  123.  * add definition SI_CLIPS_MAX_SUBDIR_NUM.
  124.  * 
  125.  * 35    03-04-29 22:32 Leslie
  126.  * Add Entry Information parse
  127.  * 
  128.  * 34    03-04-25 17:31 Jerryc
  129.  * refine macro concerning clips.
  130.  * 
  131.  * 33    03-04-22 22:36 Leslie
  132.  * 
  133.  * 32    03-04-15 16:13 Dingming
  134.  * add support MPG extention
  135.  * 
  136.  * 31    03-03-26 13:35 Leslie
  137.  * Database Sync
  138.  * 
  139.  * 30    03-03-07 19:08 Jerryc
  140.  * jerrc, add macro.
  141.  * 
  142.  * 29    03-03-06 16:09 Jerryc
  143.  * jerryc, add macro for explorer style clips nav
  144.  * 
  145.  * 28    03-02-21 13:54 Leslie
  146.  * Add clips total elapsed time and remain time
  147.  * 
  148.  * 27    03-02-20 16:39 Billt
  149.  * Add IS_CLIPS_TYPE_MP3 _WMA _JPG macro
  150.  * 
  151.  * 26    03-02-20 15:09 Leslie
  152.  * 
  153.  * 25    03-02-14 17:36 Royz
  154.  * add total elapsed/remain to VCD display
  155.  * 
  156.  * 24    03-02-11 11:39 Leslie
  157.  * Support CDDA Total Elapsed/Remain Time
  158.  * 
  159.  * 23    03-02-08 15:35 Dingming
  160.  * 
  161.  * 22    2/07/03 10:40p Tomasp
  162.  * - removed obsolete include
  163.  * 
  164.  * 21    03-01-30 23:19 Leslie
  165.  * Add defions SI_CLIPS_DIR_NUM and SI_CLIPS_MAX_DIR_NUM
  166.  * 
  167.  * 20    03-01-27 19:21 Royz
  168.  * 
  169.  * 19    03-01-21 15:14 Royz
  170.  * 
  171.  * 18    03-01-16 16:03 Royz
  172.  * 
  173.  * 17    03-01-11 16:06 Royz
  174.  * add SI_CDDA_TRACK_TOTAL_TIME definition
  175.  * 
  176.  * 16    03-01-11 13:41 Leslie
  177.  * Add SI_SVCD_TRACK_TOTAL_TIME
  178.  * 
  179.  * 15    03-01-10 12:17 Royz
  180.  * 
  181.  * 14    10/30/02 17:56 Rond
  182.  * 
  183.  * 24    6/03/02 1:50p Tomasp
  184.  * Add PCI_DECODED definition
  185.  * 
  186.  * 23    30/05/02 16:29 Nirm
  187.  * - Removed unnecessary casting.
  188.  * 
  189.  * 22    5/06/02 17:47 Rinata
  190.  * increase NUM_OF_LINE21DATASTRUC to 4 
  191.  * 
  192.  * 21    6/05/02 14:29 Ettim
  193.  * Added Remaining time value.
  194.  * 
  195.  * 20    5/05/02 17:56 Ettim
  196.  * Added support in CDEXTRA.
  197.  * 
  198.  * 19    23/04/02 9:28 Nirm
  199.  * - Added dependency in "Config.h".
  200.  * 
  201.  * 18    4/09/02 10:48 Rinata
  202.  * remove warnings
  203.  * 
  204.  * 17    3/27/02 13:18 Ettim
  205.  * Replaced D_PICTURE_CD_ENABLED with CLIPS_JPEG_SUPPORT
  206.  * 
  207.  * 16    3/07/02 8:09p Ravip
  208.  * 
  209.  * 15    3/07/02 4:06a Dingming
  210.  * support transation for JPG
  211.  * 
  212.  * 14    3/06/02 4:10a Dingming
  213.  * support PCD rotate
  214.  * 
  215.  * 13    2/27/02 17:31 Ettim
  216.  * Added Digest support.
  217.  * 
  218.  * 12    2/18/02 17:57 Ettim
  219.  * Implementing the audio sid selection both in the ui and in the
  220.  * navigator.
  221.  * 
  222.  * 11    18/02/02 11:26 Nirm
  223.  * Added MP3-ID3v1 support.
  224.  * 
  225.  * 10    2/17/02 12:15 Rinata
  226.  * Nav DVD header file are under Nav_DVDheader
  227.  * 
  228.  * 9     2/17/02 11:41 Rinata
  229.  * Nav DVD sources are compiled to LIB
  230.  * 
  231.  * 8     7/02/02 17:00 Nirm
  232.  * Added IS_SVCD_ELAPSED_TIME_VALID.
  233.  * 
  234.  * 7     7/02/02 10:41 Nirm
  235.  * - Added Clips Navigator;
  236.  * - Cleanup.
  237.  * 
  238.  * 6     1/25/02 15:18 Ettim
  239.  * Adding support for SI_CDDA_REMAIN_TIME.
  240.  * 
  241.  * 5     13/01/02 16:26 Atai
  242.  * Remove old Defines
  243.  * 
  244.  * 4     8/01/02 16:24 Nirm
  245.  * Corrected Include-Paths.
  246.  * 
  247.  * 3     1/02/02 16:08 Ettim
  248.  * Adaptations for the nav_cdda.c of the I54
  249.  * 
  250.  * 2     12/26/01 18:51 Ettim
  251.  * After updating nav_svcd.c & pe_cd.c
  252.  Revision 1.53  2001/10/03 00:15:31Z  leslie
  253.  Data Memory Reduction for TVG
  254.  Revision 1.52  2001/09/28 04:52:01Z  leslie
  255.  Add MuteQueue for TV Guardian
  256.  Revision 1.51  2001/09/27 23:33:11Z  lyncolnc
  257.  For CDDA, OSD should display time only when it is valid.
  258.  Revision 1.50  2001/09/26 02:13:53Z  stephaneh
  259.  Modified DVD watchdog timeout for Milleno
  260.  Revision 1.49  2001/09/25 03:01:22Z  stephaneh
  261.  Increased DVD Watchdog timeout for Milleno player
  262.  Revision 1.48  2001/09/11 02:55:31Z  leslie
  263.  Replace TVG unsigned char with BYTE
  264.  Revision 1.47  2001/09/10 09:57:58  leslie
  265.  Definition for TVG data structs
  266.  Revision 1.46  2001/08/08 01:42:20  stephaneh
  267.  Increased watchdog timeout
  268.  Revision 1.45  2001/08/06 22:39:22Z  stephaneh
  269.  Added watchdog timeout definition
  270.  Revision 1.44  2001/08/03 21:26:43Z  charlie
  271.  Merged Glen's changes
  272.  Revision 1.43  2001/07/12 02:02:02  charlie
  273.  Fix Program Menu logo problem
  274.  Revision 1.42  2001/06/22 16:47:30  victorwu
  275.  Merge ZCH's change
  276.  Revision 1.41  2001/06/21 17:30:01  charlie
  277.  Support Glen's fix for VFD display of invalid CDDA time
  278.  Revision 1.40  2001/05/10 04:50:47  bhupeshv
  279.  Fixed S2 bug A1 fot total title time(Elapsed time)
  280.  Revision 1.39  2001/04/12 23:47:22  bhupeshv
  281.  Created macro SI_DVD_TOTAL_TITLE_TIME for storing title time
  282.  Revision 1.38  2001/03/29 04:52:53  tia
  283.  Add macro for Chapter remain time in DVD.
  284.  Revision 1.37  2001/03/27 11:18:55  leslie
  285.  Merge Changes from ZCH
  286.  Revision 1.36  2001/01/05 17:15:46  stephaneh
  287.  Updated NAV_STATE union, adding CD_TOC array
  288.  Revision 1.35  2000/12/29 18:25:57  tia
  289.  Add new macro IS_IN_TITLE_DOMAIN
  290.  Revision 1.34  2000/12/10 05:23:16  charlie
  291.  Added declaration of g_zoom_from_stop (formerly
  292.   Zoom_From_Stop)  from i34decoder.c
  293.  Revision 1.33  2000/12/08 08:29:59  cliff
  294.  Revision 1.32  2000/12/02 00:33:41  tia
  295.  Revision 1.31  2000/11/29 03:41:50  tia
  296.  Add Bookmark info macros
  297.  Revision 1.30  2000/11/28 03:54:21  cliff
  298.  Take update from ZCH
  299.  Revision 1.29  2000/11/27 13:07:09  cliff
  300.  Revision 1.28  2000/11/11 01:05:29  charlie
  301.  Added SI_MP3_MAX_TRACK_NUM
  302.  Revision 1.27  2000/11/09 03:08:18  dingming
  303.  Revision 1.26  2000/11/07 19:46:55  dingming
  304.  Revision 1.25  2000/10/18 21:27:03  eric
  305.  1.change the chapter display method
  306.  2.add totlal tracks of svcd/vcd/cdda
  307.  Revision 1.24  2000/10/19 00:09:15Z  tia
  308.  Revision 1.23  2000/09/22 18:45:20  tia
  309.  Revision 1.22  2000/09/20 01:35:31  stephaneh
  310.  Revision 1.21  2000/09/05 21:06:06  tia
  311.  Revision 1.20  2000/09/05 20:56:02  tia
  312.  Revision 1.19  2000/08/30 02:40:21  charlie
  313.  Added D_IGNORE_COP_MASK
  314.  Revision 1.18  2000/08/07 03:59:41  arnon
  315.  Revision 1.17  2000/07/27 22:08:54  tia
  316.  Revision 1.3  2000/07/28 02:36:39  leslie
  317.  Revision 1.2  2000/07/04 06:42:37  stephen
  318.  Revision 1.16  2000/06/28 01:11:06  leslie
  319.  MP3 Supported
  320.  Revision 1.15  2000/06/27 01:46:46  stephaneh
  321.  Revision 1.14  2000/06/23 02:18:00  stephaneh
  322.  Revision 1.13  2000/06/21 01:28:16  stephaneh
  323.  Added gcst variable for Global Current State
  324.  Revision 1.12  2000/06/10 00:12:21  stephaneh
  325.  Revision 1.11  2000/06/02 21:59:44  stephaneh
  326.  Revision 1.10  2000/05/25 19:14:54  mnir
  327.  Added SVCD Global-Variables and Macros.
  328.  Revision 1.9  2000/05/25 16:46:23  tia
  329.  Revision 1.8  2000/05/24 23:32:19  tia
  330.  Revision 1.7  2000/05/24 03:21:00  tia
  331.  Revision 1.6  2000/05/05 02:36:08  tia
  332.  Revision 1.5  2000/04/27 02:47:06  tia
  333.  Revision 1.4  2000/04/26 21:28:01  mnir
  334.  Inserted CDDA-Navigator global variables.
  335.  Revision 1.3  2000/04/26 18:56:02  tia
  336.  Revision 1.2  2000/04/24 22:12:07  tia
  337.  Revision 1.1  2000/04/18 18:51:42  tia
  338.  Initial revision
  339.   */
  340. /***********************************************************************/
  341. #include "Config.h" // Global Configuration - do not remove!
  342. #ifndef _COREGDEF_H
  343. #define _COREGDEF_H
  344. #include "PlaycoreCoremaincoredefs.h"
  345. #include "PlaycoreCoremaincorenvg.h"
  346. #include "Playcorenav_dvdHeadernvdvgdef.h" /* need to be included because of static area sharing with other navigators */
  347. #include "Playcorenav_cddaglobsdef.h" /* - " - */
  348. #include "Playcorenav_svcdglobsdef.h" /* - " - */
  349. #include "Playcorenav_clipsglobsdef.h" /* - " - */
  350. #include "Playcorepsps.h"
  351. #include "Decoderdec_defs.h" /* for power_up_logo */
  352. #include "Drivedrv_defs.h"
  353. #include "playcorenav_clipsclip.h"
  354. #ifdef DVD_VR_SUPPORT
  355. #include "Playcorenav_vrnav_vr_gdef.h"
  356. #endif
  357. #if D_SUPPORT_SACD
  358. #include "Playcorenav_sacdglobsdef.h"
  359. #endif
  360. // SEC BK.LIM020903: include for round function
  361. #include "Includemath-macro.h"
  362. typedef union{
  363. /* should describe all navigator exclusive static structure here */
  364. S_DVD_GLOBALS dvd;
  365. #ifdef DVD_VR_SUPPORT
  366. S_VR_GLOBALS  dvdvr;
  367. #endif
  368. S_CDDA_GLOBALS cdda;
  369. S_SVCD_GLOBALS svcd;
  370. S_CLIPS_GLOBALS clips;
  371. #if D_SUPPORT_SACD
  372. S_SACD_GLOBALS sacd;
  373. #endif
  374. } NAV_STATE;
  375. //ZORAN LX0822: Implementation of TV Guardian
  376. #ifdef TV_GUARDIAN_ENABLE
  377. typedef struct{
  378. unsigned  GopCounter:3;
  379. unsigned  DataLength:5;
  380. }LINE21DATA_BUFFER_POOL;
  381. #define NUM_OF_LINE21DATASTRUC 4
  382. typedef struct
  383. {
  384. unsigned GopCounter:3;
  385. unsigned DataLength:5;
  386. }LINE21DATASTRUC;
  387. #define LINE21DATABUFFERSIZE (SC_LINE21_DATA_POOL_SIZE<<1)//in WORDs
  388. typedef struct{
  389. unsigned mGOP:3; //gop couner value
  390. unsigned mCmd:1; //Mute Frame Index inside the GOP
  391. unsigned mOffset:4; //Unmute frame index inside the GOP
  392. }LINE21MUTEENTRY;
  393. #define LINE21MUTEQUEUESIZE 4
  394. #endif
  395. #define GLB_NAV_DVD(member) gns.dvd.member
  396. #define SET_COP_MASK( value ) gcs.cop_mask |= (value)
  397. #define CLEAR_COP_MASK( value ) gcs.cop_mask &=~((unsigned long) (value))
  398. #define COP_MASK gcs.cop_mask
  399. #define IS_COP_ENABLE( value ) (gcs.cop_mask & (value))
  400. #ifdef DVD_VR_SUPPORT
  401. extern BOOL g_ExtentIsPlaying;
  402. extern BYTE g_DVDVR_ExtentsInFE;// extents number in the Front End
  403. #endif
  404. extern CORE_STATE gcs;
  405. extern NAV_STATE gns;
  406. extern NV_SETTINGS *gps;
  407. extern TEMP_SETTINGS gtps; /* Global temporary player settings */
  408. extern CURRENT_STATES gcst; /* Global Current States */
  409. extern DRIVE_GLOBALS gds;
  410. extern CONST DEC_FRAME power_up_logo;
  411. #ifdef S1_GUI // ZKR GLV778
  412. extern CONST DEC_FRAME setup_menu_logo;
  413. extern CONST DEC_FRAME power_up_logo_pal;
  414. extern CONST DEC_FRAME setup_menu_logo_pal;
  415. extern CONST DEC_FRAME clip_menu_logo;
  416. extern CONST DEC_FRAME clip_menu_logo_pal;
  417. #if D_SUPPORT_SACD
  418. extern CONST DEC_FRAME SACD_menu_logo;
  419. #endif
  420. #endif // S1_GUI
  421. extern DEC_DISC_TYPE g_disc_type;
  422. #ifdef PANEL_SKIP_FAST_COMBINE
  423. extern KEY_STATE gks;
  424. #endif
  425. extern UINT16 g_uAvailableClipTypes;
  426. #ifdef K1_WL
  427. extern UINT8 resume_play_request; //add by wl040704
  428. #endif
  429. #if D_SUPPORT_SACD
  430. //the flag remains valid when playing either CD layer or HD layer of a SACD disc.
  431. extern BOOL g_disc_is_hybrid_sacd;
  432. extern BOOL gbplayCDLayerOfSACD;
  433. #endif
  434. #define WATCHDOG_SHORT 4 // ZRNSH110101:Reduce Watchdog timeout from 6 to 5 for Sellino
  435. #define WATCHDOG_LONG 40 // ZRNSH0725:Watchdog timeout when drive is trying to lock
  436. /* system state variables MACRO */
  437. #define SI_DISC_TYPE g_disc_type
  438. #define IS_DISC_TYPE_DVD ((g_disc_type == DEC_DISC_TYPE_DVD_VIDEO) || (g_disc_type == DEC_DISC_TYPE_DVD_AUDIO))
  439. #ifdef EXTERNAL_KARAOKE
  440. #define IS_KARAOKE_ON (KARAOKE_ON == gc_Karaoke_mode)
  441. #define IS_KARAOKE_OFF (KARAOKE_OFF == gc_Karaoke_mode)
  442. #endif
  443. #ifdef INTERNAL_KARAOKE
  444. #define IS_KARAOKE_ON (KARAOKE_SETTING_ON == gtps.mKaraoke)
  445. #define IS_KARAOKE_OFF (KARAOKE_SETTING_OFF == gtps.mKaraoke)
  446. #endif
  447. /* DVD video specific */
  448. #define fgIsInDvdMenu   ((gns.dvd.dvd.domainID > FP_DOM) && (gns.dvd.dvd.domainID <=VTSM_DOM))  
  449. #define IS_IN_TT_MENU_DOMAIN ( gns.dvd.dvd.domainID == VMGM_DOM )
  450. #define IS_IN_ROOT_MENU_DOMAIN ( gns.dvd.dvd.domainID == VTSM_DOM )
  451. #ifdef DVD_AUDIO_SUPPORT     //Remove until finished
  452. #define IS_IN_TITLE_DOMAIN (( gns.dvd.dvd.domainID == TT_DOM ) || ( gns.dvd.dvd.domainID == AOTT_GR_DOM ))
  453. #define SI_DVD_AUDIO_NUM ( IS_IN_TITLE_DOMAIN ? ((gns.dvd.pgc.PgcType == AUDIO_PGC)?(sprm_Get(ASTN)): gns.dvd.audio_stream_num):0)
  454. #else
  455. #define IS_IN_TITLE_DOMAIN ( gns.dvd.dvd.domainID == TT_DOM ) /* ZORAN TC1228 */
  456. #define SI_DVD_AUDIO_NUM ( IS_IN_TITLE_DOMAIN ? gns.dvd.audio_stream_num:0)
  457. #endif
  458. #define SI_DVD_SUBPIC_NUM ( IS_IN_TITLE_DOMAIN ?gns.dvd.subpic_stream_num:0)
  459. #ifdef SET_ANGLE_OUT_OF_ANGLE_BLOCK//Angie_0824_2004:For Funai, need to set the angle out of angle block.
  460. #define SI_DVD_ANGLE_NUM (((gns.dvd.rtpb.angle_count>1)&&(gns.dvd.sprm.value[3]<=gns.dvd.rtpb.angle_count))?gns.dvd.sprm.value[3]:1)
  461. #else
  462. #define SI_DVD_ANGLE_NUM (((gns.dvd.rtpb.available_angles>1)&&(gns.dvd.sprm.value[3]<=gns.dvd.rtpb.available_angles))?gns.dvd.sprm.value[3]:1)
  463. #endif
  464. #define SI_DVD_TITLE_NUM_ALLDOM (gns.dvd.sprm.value[4])  //ZCO BMV030602
  465. #define SI_DVD_TITLE_NUM ( IS_IN_TITLE_DOMAIN ?gns.dvd.sprm.value[4]:0)
  466. #define SI_DVD_CHAPTER_NUM ( IS_IN_TITLE_DOMAIN ?gns.dvd.pttn:0)
  467. #ifdef  DVD_NO_AVAIABLE_ANGELNUM_DISPLAY_WHEN_ANGLE_CHANGE_PROHIBITED
  468. #ifdef SET_ANGLE_OUT_OF_ANGLE_BLOCK//Angie_0824_2004:For Funai, need to set the angle out of angle block.
  469. #define SI_DVD_AVAILABLE_ANGLE ( gns.dvd.rtpb.angle_count && ( gcs.cop_mask & COP_ANGLE_CHANGE) ? gns.dvd.rtpb.angle_count : 1 )
  470. #else
  471. #define SI_DVD_AVAILABLE_ANGLE ( gns.dvd.rtpb.available_angles && ( gcs.cop_mask & COP_ANGLE_CHANGE) ? gns.dvd.rtpb.available_angles : 1 )
  472. #endif
  473. #else
  474. #ifdef SET_ANGLE_OUT_OF_ANGLE_BLOCK//Angie_0824_2004:For Funai, need to set the angle out of angle block.
  475. #define SI_DVD_AVAILABLE_ANGLE (gns.dvd.rtpb.angle_count?gns.dvd.rtpb.angle_count:1)
  476. #else
  477. #define SI_DVD_AVAILABLE_ANGLE (gns.dvd.rtpb.available_angles?gns.dvd.rtpb.available_angles:1)
  478. #endif
  479. #endif
  480. #define SI_DVD_AVAILABLE_TITLE ( gns.dvd.vmg.title_table_sc_st.size / 12)
  481. #ifdef S1_GUI
  482. #define IS_AVAILABLE_VMGM        (gns.dvd.vmg.menu.b_IsAvailable_MenuDom)? TRUE : FALSE 
  483. #define IS_AVAILABLE_VTSM        (gns.dvd.vts.menu.b_IsAvailable_MenuDom)? TRUE : FALSE 
  484. #endif
  485. #ifdef NO_SCPAD
  486. #define SI_DVD_AVAILABLE_CHAPTER (gns.dvd.vts.part_size / 4)
  487. #else
  488. #define SI_DVD_AVAILABLE_CHAPTER (gns.dvd.vts.part_data_sc_st.size /4)
  489. #endif
  490. #define SI_DVD_AVAILABLE_AUDIO gns.dvd.audio_stream_count
  491. #define SI_DVD_AVAILABLE_SUBPIC gns.dvd.subpic_stream_count
  492. #define SI_DVD_BUTTON_COUNT gns.dvd.button_count
  493. #ifdef COMPUTE_TITLE_TIME
  494. #define SI_DVD_ELAPSED_TIME SI_DVD_TITLE_ELAPSED_TIME + ((WORD)((((gns.dvd.pgc.e_time+gns.dvd.pgc.e_cell_time))/90000L)))
  495. #else //COMPUTE_TITLE_TIME
  496. #define SI_DVD_ELAPSED_TIME ((WORD)((((gns.dvd.pgc.e_time+gns.dvd.pgc.e_cell_time))/90000L)))
  497. #endif //COMPUTE_TITLE_TIME
  498. #define SI_DVD_MAX_PROGRAM_TIME (gns.dvd.pgc_playback_time)
  499. #define SI_DVD_REMAIN_TIME  ((SI_DVD_MAX_PROGRAM_TIME>=SI_DVD_ELAPSED_TIME)?(SI_DVD_MAX_PROGRAM_TIME-SI_DVD_ELAPSED_TIME):0)
  500. #define SI_DVD_NUM_OF_AUDIO_CH (gns.dvd.audio_ch)
  501. #define SI_DVD_CODING_TYPE (gns.dvd.audio_code_mode) /* 0: AC3, 2: MPEG, 3: MPEG+extension, 4: LPCM, 6: DTS, 7: SDDS */
  502. #define SI_DVD_CHAPTER_TOTAL_TIME (gns.dvd.pgc.cur_pg_pbtime/90000L)
  503. #define SI_DVD_CHAPTER_ELAPSED_TIME ((gns.dvd.pgc.e_pg_time+gns.dvd.pgc.e_cell_time)/90000L)
  504. #define SI_DVD_CHAPTER_REMAIN_TIME (SI_DVD_CHAPTER_TOTAL_TIME-SI_DVD_CHAPTER_ELAPSED_TIME)
  505. #define SI_DVD_IS_IN_CELL_PRESENTATION ( ( DEC_DISC_TYPE_DVD_VIDEO == g_disc_type ) && ( cell_presentation == gns.dvd.pgc.state ) )
  506. #ifdef COMPUTE_TITLE_TIME
  507. #define SI_DVD_TOTAL_TITLE_TIME (gns.dvd.TitleTime) //Total title time
  508. #define SI_DVD_TITLE_ELAPSED_TIME (gns.dvd.TitleElapsedTime) //title elapsed time
  509. #endif //COMPUTE_TITLE_TIME
  510. #ifdef S1_GUI
  511. #define SI_DVD_TITLE_NUM_FOR_D1_M  gns.dvd.sprm.value[4]
  512. #define SI_DVD_CHAPTER_NUM_FOR_D1_M  gns.dvd.pttn
  513. #define IS_ANGLE_VALID        ( !(gns.dvd.dvd.PGC_UOP_CTL & DVD_UOP_ANGLE_CHANGE) )
  514. // <<< SEC shKang032304 : changed from gns.dvd.dvd.domainID == TT_DOM to IS_IN_TITLE_DOMAIN
  515. #define SI_DVD_REAL_TITLE_NUM (IS_IN_TITLE_DOMAIN)? gns.dvd.sprm.value[4]:0 // SEC shKang082702 
  516. #define SI_DVD_REAL_CHAPTER_NUM (IS_IN_TITLE_DOMAIN) ?gns.dvd.pttn:0 // SEC shKang082702
  517. // SEC shKang032304 >>>
  518. #endif // S1_GUI
  519. #define SI_DVD_TYPE gns.dvd.i_dvd_type
  520. #define IS_DVD_VIDEO_PRESENT (gns.dvd.i_dvd_type&DVD_TYPE_VMG)
  521. #define IS_DVD_AUDIO_PRESENT (gns.dvd.i_dvd_type&DVD_TYPE_AMG)
  522. #define IS_DVD_SIMPLE_AUDIO_PRESENT (gns.dvd.i_dvd_type&DVD_TYPE_SAP)
  523. #define IS_DVD_MPG2_EXT_CODING_MODE (gns.dvd.audio_coding_mode == MPEG2) //DM041503
  524. //changed by wl042805
  525. #define IS_DVD_AC3_KARAOKE_DISC (/*((gns.dvd.audio_appi & 0x70) == 0x70) &&*/((gns.dvd.audio_coding_mode & 0x07) == 0x0) && ((gns.dvd.audio_app & 0x03) == 0x1) )
  526. #define SI_DVD_NUM_OF_AUDIO_CHANNELS ( gns.dvd.audio_ch )
  527. #define PCI_DECODED  (gns.dvd.pci.pci_gi.NV_PCK_LBN != (LBN)(-1))//LX053002
  528. #define SI_DVD_STILL_STATUS_CHECK ( ( DEC_DISC_TYPE_DVD_VIDEO == g_disc_type ) 
  529.  && ( ( VOBU_STILL == gns.dvd.dvd.StillType ) 
  530.  || ( PGC_STILL == gns.dvd.dvd.StillType ) 
  531.  || ( CELL_STILL == gns.dvd.dvd.StillType) ) 
  532. && !(  DVD_UOP_STILL_OFF & gns.dvd.nm.actualUOP_CTL ) ) 
  533. /* DVD VR specific */
  534. #ifdef DVD_VR_SUPPORT
  535. #define SI_DVDVR_MAX_PL_NUM gns.dvdvr.PL_SRP_Ns
  536. #define SI_DVDVR_PL_NUM ((gns.dvdvr.currPLNum>gns.dvdvr.PG_Ns)?(gns.dvdvr.currPLNum-gns.dvdvr.PG_Ns):0)
  537. #define SI_DVDVR_MAX_PG_NUM gns.dvdvr.PG_Ns
  538. #define SI_DVDVR_PG_NUM ((gns.dvdvr.currPLNum>gns.dvdvr.PG_Ns)?0:gns.dvdvr.currPLNum)
  539. #define SI_DVDVR_TITLE_NUM gns.dvdvr.currPLNum
  540. #define SI_DVDVR_AVAILABLE_TITLE (SI_DVDVR_MAX_PL_NUM + gns.dvdvr.PG_Ns)
  541. #define SI_DVDVR_CHAPTER_NUM gns.dvdvr.currPlayEPN 
  542. #define SI_DVDVR_AVAILABLE_CHAPTER gns.dvdvr.totalEntryPtrN
  543. #define SI_DVDVR_ELAPSED_TIME (gns.dvdvr.elapsePBTM/90000L )
  544. #define SI_DVDVR_REMAIN_TIME ((gns.dvdvr.totalPBTM/90000L) - SI_DVDVR_ELAPSED_TIME)
  545. #define SI_DVDVR_MAX_PROGRAM_TIME (gns.dvdvr.totalPBTM/90000L)
  546. #define SI_DVDVR_AUDIO_NUM gns.dvdvr.AudioNum
  547. #define SI_DVDVR_AVAILABLE_AUDIO gns.dvdvr.AvailableAudioNum
  548. #define SI_DVDVR_SUBPIC_ONOROFF gns.dvdvr.SPOnorOff
  549. #define SI_DVDVR_AVAILABLE_SUBPIC gns.dvdvr.AvailableSPNum
  550. #define SI_DVDVR_NUM_OF_AUDIO_CH (gns.dvdvr.AudioStreamAtr.Channels)
  551. #define SI_DVDVR_CODING_TYPE (gns.dvdvr.AudioStreamAtr.Coding)
  552. #define SI_DVDVR_EXTENT_IS_PLAYING g_ExtentIsPlaying
  553. #define SI_DVDVR_EXTENT_IN_FE g_DVDVR_ExtentsInFE
  554. #endif
  555. /* DVD audio specific */
  556. #define IS_IN_AOTT_DOMAIN ( (SI_DISC_TYPE == DEC_DISC_TYPE_DVD_AUDIO) && ( gns.dvd.dvd.domainID == AOTT_GR_DOM ) )
  557. #define IS_IN_AVTT_DOMAIN ( (SI_DISC_TYPE == DEC_DISC_TYPE_DVD_AUDIO) && ( gns.dvd.dvd.domainID == AVTT_GR_DOM ) )
  558. #define IS_IN_AMGM_DOMAIN ( (SI_DISC_TYPE == DEC_DISC_TYPE_DVD_AUDIO) && ( gns.dvd.dvd.domainID == AMGM_DOM ) )
  559. #define SI_DVD_AUDIO_GET_PAGE (sprm_Get(ASVN) & 0xff)
  560. #define SI_DVD_AUDIO_GET_GROUP (IS_IN_TITLE_DOMAIN?(sprm_Get(ATT_GRN) & 0xf):0 )
  561. #define SI_DVD_AUDIO_GET_TRACK (IS_IN_TITLE_DOMAIN?(sprm_Get(TKN) & 0x7f):0)
  562. #define SI_DVD_AUDIO_GET_DLISTN ((sprm_Get(ASVN)>>8) & 0x7f)
  563. #define SI_DVD_AUDIO_GET_ASVN ((sprm_Get(ASVN)) & 0x7f)
  564. #ifdef EXINO2
  565. //SEC CH.KO040604: Change(gns.dvd.asv.NumASVs) 
  566. //#define SI_DVD_AUDIO_GET_NUM_OF_ASV (gns.dvd.asv.NumASVs) // deleted duplicate
  567. #define SI_DVD_AUDIO_GET_NUM_OF_ASV (gns.dvd.asv.MaxDList) //gns.dvd.asv.NumASVs
  568. #else
  569. #define SI_DVD_AUDIO_GET_NUM_OF_ASV (gns.dvd.asv.NumASVs)
  570. #define SI_DVD_AUDIO_GET_NUM_OF_ASV (gns.dvd.asv.NumASVs)
  571. #endif //EXINO2
  572. #define SI_DVDA_AVAILABLE_GROUP (gns.dvd.amg.NumGroups)
  573. #ifdef NO_SCPAD
  574. #define SI_DVDA_AVAILABLE_TRACKS(group) (gns.dvd.amg.NumTracksInGroup[group])
  575. #else
  576. #define SI_DVDA_AVAILABLE_TRACKS(group) (fs_GetByte(&gns.dvd.amg.NumTracksInGroup_sc_st, (group-1)))
  577. #endif
  578. #define SI_DVDA_HGR_INF (gns.dvd.amg.HGR_INF)  // Hidden group password
  579. #define SI_DVDA_HGR_EXISTS (gns.dvd.amg.HGR_INF != 0)  // Hidden group exists
  580. //Leon.He_1008_05: Clean up the code for DVD Audio HGR.
  581. #ifdef DVD_AUDIO_SUPPORT
  582. #define IS_DVDA_HGR_USER_PWD_MATCH (gtps.dwDvdaHgrUserPwd == SI_DVDA_HGR_INF) // Hidden group password is ok
  583. #endif
  584. #define SI_DVDA_ASV_EXISTS (gns.dvd.asv.NumASVs > 0)
  585. #define SI_DVDA_ASV_IS_BROWSEABLE   (gns.dvd.asv.CurrentASV_DMD >= 0x4 )
  586. #ifdef NO_SCPAD
  587. #define SI_DVDA_ASV_NSL_BTN_Ns      (asv_Get_ASV_NSL_BTN_Ns(gns.dvd.asv.ASV_HLI_Ptr))
  588. #define SI_DVDA_ASV_BTN_OFN         (asv_Get_ASV_BTN_OFN(gns.dvd.asv.ASV_HLI_Ptr))
  589. #else
  590. #define SI_DVDA_ASV_NSL_BTN_Ns      (asv_Get_ASV_NSL_BTN_Ns(SI_DVD_AUDIO_GET_ASVN))
  591. #define SI_DVDA_ASV_BTN_OFN         (asv_Get_ASV_BTN_OFN(SI_DVD_AUDIO_GET_ASVN))
  592. #endif
  593. #define SI_DVDA_ELAPSED_TIME ((gns.dvd.pgc.PgcType == AUDIO_PGC) ? ((long)(gns.dvd.pgc.aob_cell_time - gns.dvd.pgc.curr_fac_s_ptm)/(long)90000): SI_DVD_ELAPSED_TIME)
  594. #define SI_DVDA_REMAIN_TIME  ((SI_DVDA_TOT_TRACK_TIME>=SI_DVDA_ELAPSED_TIME)?(SI_DVDA_TOT_TRACK_TIME-SI_DVDA_ELAPSED_TIME):0)
  595. #define SI_DVDA_TOT_TRACK_TIME      ((gns.dvd.pgc.PgcType == AUDIO_PGC) ? ((long)(gns.dvd.pgc.cur_pg_pbtime)/(long)90000): SI_DVD_MAX_PROGRAM_TIME) 
  596. #define SI_DVDA_MAX_TT_GR_TIME (gns.dvd.tt_gr_time)
  597. #define SI_DVDA_DISC_ENCRYPTED (MKB_Size > 0)
  598. #define SI_DVDA_CPPM_IS_ENCRYPTED   (gns.dvd.bCPPM_IsEncrypted)
  599. #define SI_DVDA_WATERMARK_MUTE      (gns.dvd.waterMarkMute)
  600. #ifdef DVD_AUDIO_INDEX
  601. #define SI_DVDA_FIRST_INDEX (gns.dvd.pgc.current_index <= 1)
  602. #define SI_DVDA_LAST_INDEX (gns.dvd.pgc.current_index >= gns.dvd.pgc.number_of_indexes)
  603. #endif
  604. // CDDA specific
  605. #define SI_CDDA_TRACK_NUM gns.cdda.uCurrentTrackNumber
  606. #define SI_CDDA_ELAPSED_TIME gns.cdda.iCurrentTime
  607. #define SI_CDDA_MAX_PROGRAM_TIME gns.cdda.wTotalPlaybackTime
  608. #define SI_CDDA_MAX_TRACK_NUM gns.cdda.uTotalCDDATracksCnt //gds.cd_number_of_tracks   
  609. #define SI_CDDA_REMAIN_TIME gns.cdda.wRemainingPlaybackTime
  610. #define SI_CDDA_ARTIFICIAL_SOUND_NUM gns.cdda.bArtificialSoundMode
  611. #define SI_CDDA_AVAILABLE_ARTIFICIAL_SOUND M_MAX_MusicMode
  612. #define SI_CDDA_TRACK_TOTAL_TIME (gns.cdda.iCurrentTime + gns.cdda.wRemainingPlaybackTime)
  613. #define SI_CDDA_TOTAL_ELAPSED_TIME ( gns.cdda.wTotalElapsedTime )
  614. #define SI_CDDA_TOTAL_REMAIN_TIME ( gns.cdda.wTotalPlaybackTime - gns.cdda.wTotalElapsedTime )
  615. #define SI_CDDA_IS_INTRO_MODE gns.cdda.bIsCDDAIntroMode
  616. #ifdef S1_OSD
  617. /*
  618. #define IS_CDDA_ELAPSED_TIME_VALID  ((gns.cdda.dwCurrentLocation >= gns.cdda.m_aCurrTrack[0]) && (gns.cdda.dwCurrentLocation <= gns.cdda.m_aCurrTrack[1]))
  619. #define IS_CDDA_PLAYBACK_TIME_READY (gns.cdda.bPlaybackTimeReady)
  620. #define SI_CDDA_TOTAL_TRACK_TIME ((gns.cdda.m_aCurrTrack[1]-gns.cdda.m_aCurrTrack[0])/75)
  621. #define SI_CDDA_CURRENT_TRACK_START_TIME ((gns.cdda.m_aCurrTrack[0])/75)
  622. */
  623. #endif//S1_OSD
  624. // SVCD specific
  625. #ifdef S1_GUI
  626. #define SI_SVCD_ELAPSED_TIME_PBC_ON  (gns.svcd.dwCurrentLocation / 75L)
  627. #endif
  628. #define SI_SVCD_TRACK_NUM (gns.svcd.uCurrentTrackNumber-1)
  629. #define SI_SVCD_ELAPSED_TIME gns.svcd.iCurrentTime
  630. #define SI_SVCD_MAX_PROGRAM_TIME gns.svcd.wTotalPlaybackTime
  631. #define SI_SVCD_MAX_TRACK_NUM ((gds.cd_number_of_tracks==1)?1:gds.cd_number_of_tracks-1)
  632. //#define SI_SVCD_REMAIN_TIME ((gns.svcd.m_aCurrTrack[1]-gns.svcd.dwCurrentLocation ) / 75L)
  633. #define SI_SVCD_REMAIN_TIME gns.svcd.wRemainingPlaybackTime
  634. #define SI_SVCD_PBC_AVAILABLE gns.svcd.bPBC_Available
  635. #define SI_SVCD_AUDIO_NUM gns.svcd.uCurrentAudioSIDChannel
  636. #define SI_SVCD_TOTAL_AUDIO_CHANNELS gns.svcd.uTotalNumberOfAudioChannels
  637. #define SI_SVCD_TRACK_TOTAL_TIME  (gns.svcd.iCurrentTime + gns.svcd.wRemainingPlaybackTime)
  638. #define SI_SVCD_TOTAL_ELAPSED_TIME ( gns.svcd.wTotalElpasedTime )
  639. #define SI_SVCD_TOTAL_REMAIN_TIME ( gns.svcd.wTotalPlaybackTime - gns.svcd.wTotalElpasedTime )
  640. #define IS_SVCD_ELAPSED_TIME_VALID gns.svcd.bIsElapsedTimeValid
  641. #define IS_SVCD_ENTRY_INFO_AVAIABLE (gns.svcd.bEntryInfoAvaiable)
  642. #define SI_SVCD_CURRENT_ENTRY_NUMBER ( gns.svcd.wCurrentEntryNumber )
  643. #define SI_SVCD_IS_INTRO_MODE gns.svcd.bIsIntroPlayMode
  644. //<<<LX051302: This can only be used on PBC is on, UI needs to make sure check it when PBC is on
  645. #define SI_SVCD_NUMSELECTION_START ( ( SelectionList != gns.svcd.m_CurrPosition.ListType  ) ? 0 : gns.svcd.m_CurrList.PSD_SelectionList.uSelectionBase )
  646. #define SI_SVCD_NUMSELECTION_END ( ( SelectionList != gns.svcd.m_CurrPosition.ListType  ) ? 0 : ( gns.svcd.m_CurrList.PSD_SelectionList.uSelectionBase + gns.svcd.m_CurrList.PSD_SelectionList.uSelectionsCnt ) )
  647. //LX051302>>>
  648. //Leon.He_1003_05: Merge it from Ginger.
  649. #define SI_SVCD_IS_PBC_ON ( ( gns.svcd.bPBC_Available ) && ( gns.svcd.g_pSVCDNav->m_bIsUsingPSD ) )
  650. #define SI_SVCD_IS_MENU_NUMERIC_SELECTION_AVAIABLE ( SI_SVCD_IS_PBC_ON  
  651. && ( SelectionList == gns.svcd.m_CurrPosition.ListType  )  
  652. && ( 0 != gns.svcd.m_CurrList.SelectionList.uSelectionsCnt ) )
  653. // Clips specific
  654. #define SI_CLIPS_CLIP_NUM (gns.clips.uCurrentClipNumber?(gns.clips.uCurrentClipNumber + gns.clips.uSubDirCount):0)
  655. #define SI_CLIPS_PROGRAM_ENTRY_NUM gns.clips.uCurrPlaylistItem
  656. #define SI_CLIPS_ELAPSED_TIME gns.clips.iCurrentTime
  657. #define SI_CLIPS_REMAIN_TIME ( gns.clips.uTotalPlaybackTime - gns.clips.iCurrentTime )
  658. #define SI_CLIPS_TRACK_TOTAL_TIME ( gns.clips.uTotalPlaybackTime )
  659. #define SI_CLIPS_MAX_PROGRAM_TIME gns.clips.uTotalPlaybackTime
  660. #define SI_CLIPS_MAX_CLIP_NUM (gns.clips.uClipsCnt + gns.clips.uSubDirCount)
  661. #define SI_CLIPS_CURR_CLIP_INFO gns.clips.cieCurrClip
  662. #define SI_CLIPS_ANGLE gns.clips.eCurrentAngle
  663. #define SI_CLIPS_TRANSITION gns.clips.eCurrentTransition
  664. #ifdef S1_GUI
  665. #define SI_CLIPS_TOTAL_CNT_IN_DIR gns.clips.uClipsCnt
  666. #define SI_CLIPS_CURR_NUM gns.clips.uCurrentClipNumber
  667. #endif // S1_GUI
  668. #ifdef MANUAL_DIRECTORY_EXPLORER
  669. #define SI_CLIPS_SUB_DIR_ARRAY_SIZE gns.clips.uSubDirArraySize //ERICM_4JUN25K
  670. #endif
  671. #define SI_CLIPS_DIR_NUM gns.clips.uCurrentDir
  672. #define SI_CLIPS_MAX_DIR_NUM gns.clips.uPeerDirCount
  673. #define SI_CLIPS_MAX_SUBDIR_NUM gns.clips.uSubDirCount
  674. #define SI_CLIPS_EXPLORERSTYLEBROWSERPLAYMODE gns.clips.uExplorerStyleBrowserPlayMode
  675. #define SI_CLIPS_IS_INTRO_MODE gns.clips.bIsIntroPlayMode
  676. #define SI_IS_PURE_JPEG_DISCS ( g_uAvailableClipTypes & eClipType_JPEG )
  677. #define SI_IS_CURRENT_MPEG_CLIP     (IS_DISC_DATA_ROM && ( eClipType_MPEG == (gns.clips.cieCurrClip).ciInfo.eType))
  678. #define SI_IS_CURRENT_AVI_CLIP     ( eClipType_AVI == (gns.clips.cieCurrClip).ciInfo.eType)
  679. // Robin_0818_2004, first merge MPEG4 code
  680. #ifdef IS_ASF_CAPABLE
  681. #define SI_IS_CURRENT_ASF_CLIP     ( eClipType_ASF == (gns.clips.cieCurrClip).ciInfo.eType)
  682. #else
  683. #define SI_IS_CURRENT_ASF_CLIP FALSE
  684. #endif
  685. #ifdef IS_MP4_CAPABLE
  686. #define SI_IS_CURRENT_MP4_CLIP     ( eClipType_MP4 == (gns.clips.cieCurrClip).ciInfo.eType)
  687. #else
  688. #define SI_IS_CURRENT_MP4_CLIP FALSE
  689. #endif
  690. // JohnD_0607_2005_A: 
  691. #define SI_IS_CURRENT_CLIPS_VIDEO ((gns.clips.cieCurrClip).ciInfo.eType & (eClipType_MPEG |eClipType_AVI | eClipType_MP4))
  692. #if defined(IS_ASF_CAPABLE) && defined(IS_MP4_CAPABLE)
  693. #define SI_IS_CURRENT_MPEG4_CLIP (SI_IS_CURRENT_AVI_CLIP || SI_IS_CURRENT_ASF_CLIP || SI_IS_CURRENT_MP4_CLIP)
  694. #elif defined(IS_ASF_CAPABLE)
  695. #define SI_IS_CURRENT_MPEG4_CLIP (SI_IS_CURRENT_AVI_CLIP || SI_IS_CURRENT_ASF_CLIP)
  696. #elif defined(IS_MP4_CAPABLE)
  697. #define SI_IS_CURRENT_MPEG4_CLIP (SI_IS_CURRENT_AVI_CLIP || SI_IS_CURRENT_MP4_CLIP)
  698. #else
  699. #define SI_IS_CURRENT_MPEG4_CLIP (SI_IS_CURRENT_AVI_CLIP)
  700. #endif
  701. #define SI_CLIPS_MPEG4_VIDEO_AVAILABLE (_mpeg4VideoStreamID != NO_STREAM)
  702. #define SI_CLIPS_MPEG4_AUDIO_AVAILABLE (_mpeg4AudioAvailableNum != 0)
  703. #define SI_CLIPS_MPEG4_SUBTITLE_AVAILABLE (_mpeg4SubtitleAvailableNum != 0)
  704. #define SI_CLIPS_MPEG4_CHAPTER_AVAILABLE (_mpeg4ChapterAvailableNum != 0)
  705. #define SI_CLIPS_MPEG4_WIDTH _mpeg4VideoWidth
  706. #define SI_CLIPS_MPEG4_HEIGHT _mpeg4VideoHeight
  707. #define SI_CLIPS_MPEG4_VIDEOCODEC _mpeg4VideoCodec
  708. #define SI_CLIPS_MPEG4_AUDIOCODEC _mpeg4AudioCodec
  709. #define SI_CLIPS_MPEG4_SAMPLERAT (_mpeg4AudioSamplesPerSec/1000)
  710. #define SI_CLIPS_MPEG4_FRAMERATE ((_mpeg4VideoScale != 0) ? round(_mpeg4VideoRate,_mpeg4VideoScale) : 0)
  711. #define SI_CLIPS_MPEG4_AUDIOCHANNEL _mpeg4AudioChannels
  712. #define SI_CLIPS_SUB_CURRENT_DISP_IDX _mpeg4SubtitleCurrentDispIdx
  713. #define SI_CLIPS_SUB_AVAILABLE_NUM   _mpeg4SubtitleAvailableNum
  714. #define SI_CLIPS_AUD_CURRENT_DISP_IDX  _mpeg4AudioCurrentDispIdx
  715. #define SI_CLIPS_AUD_AVAILABLE_NUM     _mpeg4AudioAvailableNum
  716. #define SI_CLIPS_CHAPTER_CURRENT_DISP_IDX  _mpeg4ChapterCurrentDispIdx
  717. #define SI_CLIPS_CHAPTER_AVAILABLE_NUM     _mpeg4ChapterAvailableNum
  718. #define SI_CLIPS_MPEG4_AUDIOLANGUAGECODE _mpeg4AudioLanguageCode
  719. #define SI_CLIPS_MPEG4_SUBTITLELANGUAGECODE _mpeg4SubtitleLanguageCode
  720. #define SI_CLIPS_MPEG4_TRICK_MODES_ON   _bMPEG4TrickModeOn
  721. //#define SI_CLIPS_AVI_VIDEO_HEADER_DATA_SIZE _mpeg4VideoHeaderDataLength // Robin_0809_2004
  722. #ifdef AVI_FF_NO_INDEX
  723. #define SI_CLIPS_DIVX_DRM_ON   (SI_IS_CURRENT_AVI_CLIP && _bAVIDrmOn)
  724. #endif
  725. // Robin_1119_2004, if avi is divx encoded, display "DivX"
  726. #define SI_CLIPS_AVI_IS_DIVX (SI_IS_CURRENT_AVI_CLIP && ((_mpeg4VideoCodec == DIVX_3_11) || 
  727. (_mpeg4VideoCodec == DIVX_4_12) || (_mpeg4VideoCodec == DIVX_5_0)))
  728. #ifdef IS_MP4_CAPABLE
  729. #define SI_CLIPS_MP4_INTERNAL_SUBTITLE_ON (SI_IS_CURRENT_MP4_CLIP && _bMP4InternalSubtitle)
  730. #define SI_CLIPS_MP4_NERO_DIGITAL  (SI_IS_CURRENT_MP4_CLIP && _bMP4IsNeroDigital)
  731. #else
  732. #define SI_CLIPS_MP4_INTERNAL_SUBTITLE_ON FALSE
  733. #define SI_CLIPS_MP4_NERO_DIGITAL FALSE
  734. #endif
  735. // SACD specific
  736. #if D_SUPPORT_SACD
  737. //TODO: define the following macros
  738. #define SACD_MULTI_AREA_EXIST  (0 < Nav_SACD_Get_Num_Of_Tracks(SAMP(SACD_AREA_MULTICHANNEL)))
  739. #define SACD_2CH_AREA_EXIST (0 < Nav_SACD_Get_Num_Of_Tracks(SAMP(SACD_AREA_STEREO)))
  740. #define SACD_ACTIVE_AREA (gns.sacd.activeArea)
  741. #define SACD_CUR_TRACK (gns.sacd.currentTrack)
  742. #define SACD_CUR_PLAY_TIME (gns.sacd.iCurrentTime)
  743. #define MEDIA_IS_SACD  (DEC_DISC_TYPE_SACD == g_disc_type)
  744. #define IS_PLAY_CD_LAYER_OF_SACD gbplayCDLayerOfSACD //(gps->playCDLayerOfSACD)
  745. #define IS_PLAY_HYBRID_SACD_DISC g_disc_is_hybrid_sacd // 20040416jso(hybrid_sacd SACD<->CD sled position change)
  746. #endif
  747. // Miscellaneous
  748. #define IS_POWER_ON (g_power_state == POWER_SEQUENCE_IN_ON_STATE)
  749. #define BOOKMARK_TIME( bmark_num ) gcs.mBookmarkTime[(bmark_num)-1]
  750. #define IS_BOOKMARK_VALID( bmark_num ) (BOOKMARK_TIME(bmark_num)!=EMPTY_BOOKMARK)
  751. #ifdef ZS5XX
  752. #define IS_IN_DVD_MENU    ((g_disc_type == DEC_DISC_TYPE_DVD_VIDEO) && (gcs.pstate == PST_STILL) && (gns.dvd.rtpb.stopPersistence == 0))
  753. #define IS_IN_PBC_MENU    (((g_disc_type == DEC_DISC_TYPE_SVCD)||(g_disc_type == DEC_DISC_TYPE_VCD)) && (gcs.pstate == PST_STILL))
  754. #endif
  755. #ifdef K1_WL
  756. #define IS_DISPLAY_MENU_ACTIVE    ((g_ui_active_menu_id ==DVD_DISPLAY_MENU_ID) || (g_ui_active_menu_id==VCD_DISPLAY_MENU_ID) || (g_ui_active_menu_id == AVI_DISPLAY_MENU_ID))
  757. #endif
  758. //<<<Leslie_0823_2003_A: Seperate Physical Media and Logical Media Type definition
  759. #define IS_DISC_DATA_ROM ( ( DEC_DISC_TYPE_DVD_ROM == g_disc_type ) || ( DEC_DISC_TYPE_CDROM == g_disc_type ) )
  760. #define IS_DISC_NOT_DATA_ROM ( ( DEC_DISC_TYPE_DVD_ROM != g_disc_type ) && ( DEC_DISC_TYPE_CDROM != g_disc_type ) )
  761. #define IS_DVD_PHYSICAL_MEDIA ( IS_DVD_MEDIA )
  762. #define IS_DECODER_DVD_VIDEO_OR_AUDIO ( ( DEC_DISC_TYPE_DVD_AUDIO == gDiskType ) || ( DEC_DISC_TYPE_DVD_VIDEO == gDiskType ) )
  763. #define IS_GLOBAL_DVD_VIDEO_OR_AUDIO  ( ( DEC_DISC_TYPE_DVD_AUDIO == g_disc_type ) || ( DEC_DISC_TYPE_DVD_VIDEO == g_disc_type ) )
  764. #ifdef DVD_VR_SUPPORT
  765. #define IS_DISC_GLOBAL_DVD_VR  ( DEC_DISC_TYPE_DVD_VR== g_disc_type )
  766. #endif
  767. #define IS_CLIPS_TYPE_JPG ( ( IS_DISC_DATA_ROM && (eClipType_JPEG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType)) || (DEC_DISC_TYPE_PICTURE_CD == g_disc_type))
  768. #define IS_CLIPS_TYPE_WMA ( IS_DISC_DATA_ROM && (eClipType_WMA == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType))
  769. #define IS_CLIPS_TYPE_MP3 ( IS_DISC_DATA_ROM && (eClipType_MP3 == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType))
  770. //Leslie_0823_2003_A>>>
  771. #define IS_CLIPS_TYPE_AVI  (IS_DISC_DATA_ROM && SI_IS_CURRENT_AVI_CLIP)
  772. // Robin_0818_2004, first merge MPEG4 code
  773. #ifdef IS_ASF_CAPABLE
  774. #define IS_CLIPS_TYPE_ASF  (IS_DISC_DATA_ROM && SI_IS_CURRENT_ASF_CLIP)
  775. #endif
  776. #ifdef IS_MP4_CAPABLE
  777. #define IS_CLIPS_TYPE_MP4  (IS_DISC_DATA_ROM && SI_IS_CURRENT_MP4_CLIP)
  778. #endif
  779. #if defined(IS_ASF_CAPABLE) && defined(IS_MP4_CAPABLE)
  780. #define IS_CLIPS_TYPE_MPEG4 (IS_CLIPS_TYPE_AVI || IS_CLIPS_TYPE_ASF || IS_CLIPS_TYPE_MP4)
  781. #elif defined(IS_ASF_CAPABLE)
  782. #define IS_CLIPS_TYPE_MPEG4 (IS_CLIPS_TYPE_AVI || IS_CLIPS_TYPE_ASF)
  783. #elif defined(IS_MP4_CAPABLE)
  784. #define IS_CLIPS_TYPE_MPEG4 (IS_CLIPS_TYPE_AVI || IS_CLIPS_TYPE_MP4)
  785. #else
  786. #define IS_CLIPS_TYPE_MPEG4 (IS_CLIPS_TYPE_AVI)
  787. #endif
  788. #ifdef EXINO_FE // 20040507(Luis : DVD-Audio 1.5x CLV)
  789. #define IS_GLOBAL_DVD_AUDIO  ( ( DEC_DISC_TYPE_DVD_AUDIO == g_disc_type ) )
  790. #endif
  791. // SEC BK.LIM021104
  792. #ifdef S1_GUI
  793. #define IS_CLIPS_TYPE_MPEG  (IS_DISC_DATA_ROM && (eClipType_MPEG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType))
  794. #endif
  795. #define IS_CLIPS_TYPE_MPEG  (IS_DISC_DATA_ROM && (eClipType_MPEG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType)) //add by wl033004
  796. #ifdef IS_OGG_VORBIS_CAPABLE
  797. #if defined(IS_ASF_CAPABLE) && defined(IS_MP4_CAPABLE)
  798. #define IS_DISC_TYPE_CLIPS ((DEC_DISC_TYPE_PICTURE_CD == g_disc_type) ||( IS_DISC_DATA_ROM && ( 
  799. (eClipType_MP3 == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  800. (eClipType_JPEG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  801. (eClipType_MPEG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  802. (eClipType_AVI == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  803. (eClipType_ASF == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  804. (eClipType_MP4 == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  805. (eClipType_OGG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  806. (eClipType_WMA == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType))))
  807. #elif defined(IS_ASF_CAPABLE)
  808. #define IS_DISC_TYPE_CLIPS ((DEC_DISC_TYPE_PICTURE_CD == g_disc_type) ||( IS_DISC_DATA_ROM && ( 
  809. (eClipType_MP3 == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  810. (eClipType_JPEG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  811. (eClipType_MPEG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  812. (eClipType_AVI == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  813. (eClipType_ASF == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  814. (eClipType_OGG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  815. (eClipType_WMA == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType))))
  816. #elif defined(IS_MP4_CAPABLE)
  817. #define IS_DISC_TYPE_CLIPS ((DEC_DISC_TYPE_PICTURE_CD == g_disc_type) ||( IS_DISC_DATA_ROM && ( 
  818. (eClipType_MP3 == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  819. (eClipType_JPEG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  820. (eClipType_MPEG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  821. (eClipType_AVI == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  822. (eClipType_MP4 == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  823. (eClipType_OGG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  824. (eClipType_WMA == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType))))
  825. #else
  826. #define IS_DISC_TYPE_CLIPS ((DEC_DISC_TYPE_PICTURE_CD == g_disc_type) ||( IS_DISC_DATA_ROM && ( 
  827. (eClipType_MP3 == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  828. (eClipType_JPEG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  829. (eClipType_MPEG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  830. (eClipType_AVI == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  831. (eClipType_OGG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  832. (eClipType_WMA == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType))))
  833. #endif
  834. #else //IS_OGG_VORBIS_CAPABLE
  835. #if defined(IS_ASF_CAPABLE) && defined(IS_MP4_CAPABLE)
  836. #define IS_DISC_TYPE_CLIPS ((DEC_DISC_TYPE_PICTURE_CD == g_disc_type) ||( IS_DISC_DATA_ROM && ( 
  837. (eClipType_MP3 == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  838. (eClipType_JPEG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  839. (eClipType_MPEG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  840. (eClipType_AVI == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  841. (eClipType_ASF == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  842. (eClipType_MP4 == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  843. (eClipType_WMA == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType))))
  844. #elif defined(IS_ASF_CAPABLE)
  845. #define IS_DISC_TYPE_CLIPS ((DEC_DISC_TYPE_PICTURE_CD == g_disc_type) ||( IS_DISC_DATA_ROM && ( 
  846. (eClipType_MP3 == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  847. (eClipType_JPEG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  848. (eClipType_MPEG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  849. (eClipType_AVI == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  850. (eClipType_ASF == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  851. (eClipType_WMA == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType))))
  852. #elif defined(IS_MP4_CAPABLE)
  853. #define IS_DISC_TYPE_CLIPS ((DEC_DISC_TYPE_PICTURE_CD == g_disc_type) ||( IS_DISC_DATA_ROM && ( 
  854. (eClipType_MP3 == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  855. (eClipType_JPEG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  856. (eClipType_MPEG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  857. (eClipType_AVI == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  858. (eClipType_MP4 == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  859. (eClipType_WMA == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType))))
  860. #else
  861. #define IS_DISC_TYPE_CLIPS ((DEC_DISC_TYPE_PICTURE_CD == g_disc_type) ||( IS_DISC_DATA_ROM && ( 
  862. (eClipType_MP3 == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  863. (eClipType_JPEG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  864. (eClipType_MPEG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  865. (eClipType_AVI == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType) || 
  866. (eClipType_WMA == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType))))
  867. #endif
  868. #endif //IS_OGG_VORBIS_CAPABLE
  869. #ifdef PANEL_SKIP_FAST_COMBINE
  870. #define IS_REPEAT_KEY_PRESSED_LONGTIME (gks.bKeyPressedLongTime)
  871. #define IS_NO_KEY_PRESSED (!gks.mKeyPressed)
  872. #endif
  873. #ifdef IS_OGG_VORBIS_CAPABLE
  874. #define IS_CLIPS_TYPE_OGG ( IS_DISC_DATA_ROM && (eClipType_OGG == SI_CLIPS_CURR_CLIP_INFO.ciInfo.eType))
  875. #endif
  876. #endif // _COREGDEF_H