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

DVD

开发平台:

Others

  1. /**************************************************************
  2.  *  AuxSubtitles.h
  3.  **************************************************************
  4.  *  Description:
  5.  *  ============
  6.  *  Handling of auxiliary subtitles files
  7.  **************************************************************
  8.  *
  9.  *  Hagay Barel 10.11.03
  10.  **************************************************************/
  11. #include "Config.h" // Global Configuration - do not remove!
  12. #ifdef USE_AUX_SUBTITLES
  13. #ifndef __AUXSUBTITLES_H_
  14. #define __AUXSUBTITLES_H_
  15. #include "PlaycoreNav_ClipsClip_Impl.h"
  16. #include "PlaycoreNav_ClipsAuxSubtitlesCommonPrivate.h"
  17. #include "IncludeSysDefs.h"
  18. /////////////////////////////////////////////////////////////////////////////////////////////
  19. // Function name : initAuxSubtitles
  20. // Purpose : Initializes auxiliary subtitles for a clip
  21. // Input Parameters : clipInfo   - Information about the clip for which
  22. // to initialize subtitles
  23. //   dwScale, dwRate - dwScale/dwRate is the number of seconds
  24. // per video frame in the given clip
  25. // Return type : TRUE if subtitles were loaded, FALSE otherwise.
  26. // Description : The function looks for a subtitle files belonging to the given clip,
  27. //   performs parsing and initializes interrupt and event handlers.
  28. /////////////////////////////////////////////////////////////////////////////////////////////
  29. BOOL initAuxSubtitles(ClipFileInfo *clipInfo, DWORD dwScale, DWORD dwRate);
  30. /////////////////////////////////////////////////////////////////////////////////////////////
  31. // Function name : findAndCheckAuxSubtitlesFile
  32. // Purpose : looks for a subtitle file for the given clip
  33. // Input Parameters : clipInfo  - Information about the clip for which
  34. //    to look for subtitles
  35. // Output Parameters: dwSubtitlesFileAddress - Start address of the 1st subtitles file that was found
  36. //   dwSubtitlesFileSize  - Size of the subtitles 1st file that was found
  37. //   pfParse  - The parsing function used by the detected format
  38. //    of the 1st recognized subtitle file.
  39. //    prParse=NULL if none was found.
  40. // Return type : TRUE if recognized subtitles were found, FALSE otherwise.
  41. // Description : The function looks for files which have the same name (only name, not extension)
  42. //   as the given clip, and tests if they are recognized subtitle files.
  43. //   It then determines the format of the 1st such file.
  44. /////////////////////////////////////////////////////////////////////////////////////////////
  45. // <<< Robin_0903_2004
  46. #ifdef DIVX_SUPPORT_MULTI_SUBTITLE
  47. BOOL findAndCheckAuxSubtitlesFile(ClipFileInfo *clipInfo,DWORD *dwSubtitlesFileAddress,
  48.   DWORD *dwSubtitlesFileSize,SubtitleParsingFuncPtr *pfParse, WORD wSubtitleID);
  49. #else
  50. BOOL findAndCheckAuxSubtitlesFile(ClipFileInfo *clipInfo,DWORD *dwSubtitlesFileAddress,
  51.   DWORD *dwSubtitlesFileSize,SubtitleParsingFuncPtr *pfParse
  52.   /*, SubtitlesFormatID *sfFormat */ );
  53. #endif
  54. // >>> Robin_0903_2004
  55. void findAuxSubtitlesFile(Clip *pClip, const FindData *i_pFileInfo);
  56. /////////////////////////////////////////////////////////////////////////////////////////////
  57. // Function Name  : checkAndHandleAuxSubtitles
  58. // Purpose  : Reads subtitles from memory, and sends them to the UI
  59. // when it's time to display them.
  60. // Input Parameters: dwCurrentTime - current SCLK count.
  61. // Return type : void
  62. // Description : Checks if the current time is later than the previously
  63. //                  noted "next update time". If it's time to start displaying
  64. //   a new subtitle, and the UI task has finished dealing with
  65. //   the previous subtitle, write the new subtitle text to a buffer
  66. //   and send an event to the UI - to start displaying it.
  67. //   if it's time to stop displaying a subtitle - send a proper
  68. //   event to the UI.
  69. /////////////////////////////////////////////////////////////////////////////////////////////
  70. void checkAndHandleAuxSubtitles(DWORD dwCurrentTime);
  71. void unlockAuxSubtitlesStringBuffer(void);
  72. /////////////////////////////////////////////////////////////////////////////////////////////
  73. // Function Name  : setSubtitlesPlayMode
  74. // Purpose  : Sets the play mode for subtitles - whether the core task should
  75. //                   check for new subtitles or not.
  76. // Input parameters: mode - whether play mode is on
  77. // Return type :  void
  78. // Description :  Before using FF/FB/Goto, play mode should be set to FALSE so that the
  79. // core task won't try to search for subtitles. After FF/FB/Goto is done
  80. // and subtitleGoToTime is called, play more should be set to TRUE.
  81. /////////////////////////////////////////////////////////////////////////////////////////////
  82. void setSubtitlesPlayMode(BOOL mode);
  83. /////////////////////////////////////////////////////////////////////////////////////////////
  84. // Function Name  : stopDisplayAuxSubtitles
  85. // Purpose  : notify the UI to stop displaying the current subtitle
  86. // Return type :  void
  87. // Description :
  88. /////////////////////////////////////////////////////////////////////////////////////////////
  89. void stopDisplayAuxSubtitles(void);
  90. /////////////////////////////////////////////////////////////////////////////////////////////
  91. // Function Name  : subtitleGoToTime
  92. // Purpose  : Jump to a new time in the subtitle storage
  93. // Input parameters: dwCurrentTime - the new time
  94. // Return type :  void
  95. // Description :  After FF/FB/Goto, this function is used to set the next subtitle to be
  96. //                   the 1 right before the new time.
  97. /////////////////////////////////////////////////////////////////////////////////////////////
  98. void subtitleGoToTime(DWORD dwCurrentTime);
  99. BOOL areAuxSubtitlePresent(void);
  100. // <<< Robin_0907_2004
  101. BOOL areAuxSubtitleExist(void);
  102. // >>> Robin_0907_2004
  103. #define SUBTITLE_STRING_SC_SZ_B     156
  104. #define SUBTITLE_STRING_SC_SZ_DW    39
  105. #define SUBTITLE_DISPLAY_0_SC_OFFSET_DW 39
  106. #define SUBTITLE_DISPLAY_1_SC_OFFSET_DW 64
  107. #define SUBTITLE_DISPLAY_2_SC_OFFSET_DW 89
  108. #ifdef IS_MP4_CAPABLE
  109. void mp4InitSubtitles();
  110. void mp4CheckAndHandleSubtitle(DWORD dwCurrentTime);
  111. #endif
  112. #ifdef IS_AVI_CAPABLE
  113. BOOL aviParseInternalSubtileText();
  114. #endif
  115. #endif // __AUXSUBTITLES_H_
  116. #endif // USE_AUX_SUBTITLES