H
hunter0401
Unregistered / Unconfirmed
GUEST, unregistred user!
单元文件的内容如下:
//////////////////////////////////////////////////////////////////////
//
// rmnavif.h : Interface declarations.
//
// Sigma Designs Navigation Interfaces
//
// Created by Raul Chirinos
//
// (C) Copyright Sigma Designs Inc. 1999 - 2000
//
// Sigma Designs Proprietary and confidential
//
// Created on October 1999
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_RMNAVIF_H__2D72A745_906D_11D3_B952_E7A67C993800__INCLUDED_)
#define AFX_RMNAVIF_H__2D72A745_906D_11D3_B952_E7A67C993800__INCLUDED_
#include <objbase.h>
// {33EFD7C0-8648-11d3-B952-CAE6B058DA00}
DEFINE_GUID(CLSID_RMNavigator,
0x33efd7c0, 0x8648, 0x11d3, 0xb9, 0x52, 0xca, 0xe6, 0xb0, 0x58, 0xda, 0x0);
/////////////////////////////////////////////////////////////////////////////
// Interface IRMNavigator
//
// Contains commands to support MPEG file playback
// {33EFD7C1-8648-11d3-B952-CAE6B058DA00}
DEFINE_GUID(IID_IRMNavigator,
0x33efd7c1, 0x8648, 0x11d3, 0xb9, 0x52, 0xca, 0xe6, 0xb0, 0x58, 0xda, 0x0);
#ifndef _RMNavigator_Data
#define _RMNavigator_Data
#define MAX_EXTENSIONS 20 // Maximum number of extensions that can be searched
#define DEF_EXTENSIONS 1 // Number of default extensions - 'mpg' is the default
// Installed hardware capabilities
#define CAPS_SIMULTANEOUS_TV_VGA_OUTPUT 0x00000001 // Output to VGA and TV is simultaneous
#define CAPS_TV_OUTPUT 0x00000002 // Supports TV output
#define CAPS_DVD_DECRYPTION 0x00000004 // Supports DVD playback
#define CAPS_VGA_WINDOW 0x00000008 // Supports overlay
#define CAPS_BCS_CONTROLS 0x00000010 // Supports Brightness, Contrast and Saturation Controls
// System Drive Letters, excluding floppies
typedef enum
{
DRIVE_CURRENT, // Currently set drive (only used on input)
DRIVE_UNDETERMINED, // No drive set
DRIVE_C, DRIVE_D, DRIVE_E, DRIVE_F, // Other drive letters
DRIVE_G, DRIVE_H, DRIVE_I, DRIVE_J,
DRIVE_K, DRIVE_L, DRIVE_M, DRIVE_N,
DRIVE_O, DRIVE_P, DRIVE_Q, DRIVE_R,
DRIVE_S, DRIVE_T, DRIVE_U, DRIVE_V,
DRIVE_W, DRIVE_X, DRIVE_Y, DRIVE_Z
} DRIVE_ID, *LPDRIVE_ID;
// Default drive status
typedef enum
{
DRIVE_STATUS_UNKNOWN, // Unknown drive status
DRIVE_STATUS_NORMAL, // Media is place
DRIVE_STATUS_OPEN, // CDROM tray open (only set after Eject)
DRIVE_STATUS_EMPTY // No media detected
} DRIVE_STATUS, *LPDRIVE_STATUS;
// Media format found on default drive
typedef enum
{
MEDIA_FORMAT_UNKNOWN, // Unknown
MEDIA_FORMAT_DATA, // MPEG FILES
MEDIA_FORMAT_VCD, // VideoCD 1.X
MEDIA_FORMAT_VCD2, // VideoCD 2.0
MEDIA_FORMAT_SVCD, // Super VideoCD
MEDIA_FORMAT_DVD, // DVD
MEDIA_FORMAT_CDDA // Audio CD
} MEDIA_FORMAT, *LPMEDIA_FORMAT;
#endif // _RMNavigator_Data
interface IRMNavigator : public IUnknown
{
public:
// IUnknown methods.
STDMETHOD(AddFileToPlayList) (BSTR lpPath) PURE;
STDMETHOD(CloseTray) (DRIVE_ID Drive) PURE;
STDMETHOD(CreateFileList) (DRIVE_ID Drive, LPWORD lpwItems) PURE;
STDMETHOD(Eject) (DRIVE_ID Drive) PURE;
STDMETHOD(GetAvailableDiskSpace) (DRIVE_ID Drive, LPDWORD lpdwSpace) PURE; // in Megabytes
STDMETHOD(GetCapabilities) (LPDWORD lpdwCaps) PURE;
STDMETHOD(GetDrive) (LPDRIVE_ID lpDrive) PURE;
STDMETHOD(GetDriveName) (DRIVE_ID Drive, BSTR lpDriveName) PURE;
STDMETHOD(GetDriveStatus) (LPDRIVE_STATUS lpdStatus) PURE;
STDMETHOD(GetDriveType) (DRIVE_ID Drive, LPBYTE lpbType) PURE;
STDMETHOD(GetFileFromPlayList) (WORD wIndex, BSTR lpPath) PURE;
STDMETHOD(GetFileList) (LPBSTR lpList) PURE;
STDMETHOD(GetFileListCount) (LPWORD lpwItems) PURE;
STDMETHOD(GetPlayList) (LPBSTR lpList) PURE;
STDMETHOD(GetPlayListCount) (LPWORD lpwItems) PURE;
STDMETHOD(GetMediaFormat) (LPMEDIA_FORMAT lpFormat) PURE;
STDMETHOD(GetNotifyWindow) (HWND *hwnd) PURE;
STDMETHOD(GetFullScreenMode) (LPBOOL lpMode) PURE;
STDMETHOD(GetFullScreenHandle) (HWND *hwnd) PURE;
STDMETHOD(IsDriveAvailable) (DRIVE_ID Drive, LPBOOL lpbAvailable) PURE;
STDMETHOD(LoadPlayList) (BSTR lpPath) PURE;
STDMETHOD(ResetPlayList) (void) PURE;
STDMETHOD(SavePlayList) (BSTR lpPath) PURE;
STDMETHOD(SetDrive) (DRIVE_ID Drive) PURE;
STDMETHOD(SetSearchExtensions) (LPBSTR lpExtensions, BYTE bItems) PURE;
STDMETHOD(SetNotifyWindow) (HWND hwnd, UINT uMsg) PURE;
STDMETHOD(SetFullScreenMode) (BOOL bMode) PURE; // Toggle fullscreen mode
};
/////////////////////////////////////////////////////////////////////////////
// Interface IRMNavigatorControl
//
// Contains commands to support MPEG file playback
// {33EFD7C2-8648-11d3-B952-CAE6B058DA00}
DEFINE_GUID(IID_IRMNavigatorControl,
0x33efd7c2, 0x8648, 0x11d3, 0xb9, 0x52, 0xca, 0xe6, 0xb0, 0x58, 0xda, 0x0);
#ifndef _RMNavigatorControl_Data
#define _RMNavigatorControl_Data
// Type of loaded file
typedef enum
{
FILE_UNKNOWN_TYPE, // Unknown file type
FILE_MPEG_AUDIO, // MPEG audio only file
FILE_MPEG_VIDEO, // MPEG video only file
FILE_MPEG_AUDIO_VIDEO, // MPEG video + audio (system) file
FILE_AC3, // AC3 source
FILE_MP3, // MP3 source
FILE_DVD_SOURCE, // DVD source
FILE_DIGITAL_AUDIO, // Audio CD source
FILE_VCD_STILL // VideoCD still picture
} FILE_TYPE, *LPFILE_TYPE;
// Available Display Modes
typedef enum
{
DISPLAY_VGA, // Display on VGA
DISPLAY_TV_AUTO_STANDARD, // Display to TV according to video source standard
DISPLAY_TV_AUTO_STANDARD_SCALED,// Display to TV according to video source standard scaled to fit screen
DISPLAY_TV_NTSC_SCALED, // Display NTSC to TV scaled to fit screen
DISPLAY_TV_NTSC, // Display NTSC to TV
DISPLAY_TV_PAL, // Display PAL to TV
DISPLAY_TV_PAL_SCALED, // Display PAL to TV scaled to fit screen
DISPLAY_TV_PAL60, // Display PAL 60Hz to TV
DISPLAY_TV_PAL60_SCALED // Display PAL 60Hz to TV scaled to fit screen
} DISPLAY_MODE, *LPDISPLAY_MODE;
// Video standard of opened file
typedef enum
{
VIDEO_STD_UNKNOWN, // Unknown standard
VIDEO_STD_NTSC, // NTSC
VIDEO_STD_PAL, // PAL
VIDEO_STD_SECAM // SECAM
} VIDEO_STANDARD, *LPVIDEO_STANDARD;
// Navigator's mode
typedef enum
{
NAVIGATION_MODE_LIST, // Given list
NAVIGATION_MODE_RANDOM, // Given list, randomly
NAVIGATION_MODE_DVD, // Detected as DVD navigation
NAVIGATION_MODE_VCD, // Detected as VideoCD navigation
NAVIGATION_MODE_VCD2, // VideoCD 2.0 navigation
NAVIGATION_MODE_SVCD, // SuperVcd navigation
NAVIGATION_MODE_ENCODING // Capture and/or Preview
} NAVIGATION_MODE, *LPNAVIGATION_MODE;
// Picture Controls
typedef enum
{
PCTL_BRIGHTNESS, // Brightness
PCTL_CONTRAST, // Contrast
PCTL_SATURATION, // Saturation (Color)
PCTL_HUE // Hue -- not available on playback devices
} PICTURE_CONTROL, *LPPICTURE_CONTROL;
// Playback Mode
typedef enum
{
MODE_UNKNOWN, // Unknown mode
MODE_NOT_INITIALIZED, // Not ready for playback
MODE_INITIALIZED, // Ready for playback
MODE_STOPPED, // Stopped
MODE_PLAYING, // Playing
MODE_PAUSED, // Paused
MODE_RECORDING, // Recording
MODE_PREVIEWING // Previewing
} PLAY_MODE, *LPPLAY_MODE;
// Repeat Mode Flags
typedef enum
{
REPEAT_OFF, // No repeat mode set (default)
REPEAT_LIST, // Repeat list in the default order
REPEAT_CURRENT_FILE, // Repeat current file
REPEAT_CURRENT_DVD_CHAPTER = 0x10, // Repeat current DVD chapter
REPEAT_CURRENT_DVD_TITLE // Repeat current DVD title
} REPEAT_MODE, *LPREPEAT_MODE;
// Navigation Status
// Notifications are sent to the 'Notify Window' as 'uMsg' -- see SetNotifyWindow()
// The NAVIGATION_STATUS is placed in the WPARAM and the details of the change
// in the LPARAM as specified below
typedef enum
{
// WPARAM // LPARAM
STATUS_MEDIA_FORMAT_CHANGE = 0x0, // New MEDIA_FORMAT
STATUS_DRIVE_STATUS_CHANGE, // New DRIVE_STATUS
STATUS_MODE_CHANGE, // New PLAY_MODE
STATUS_TIME_CHANGE, // HIBYTE(HIWORD) = Hours, LOBYTE(HIWORD) = Minutes, HIBYTE(LOWORD) = Seconds
STATUS_FILE_INITIALIZED, // HIWORD = FILE_TYPE, LOWORD = VIDEO_STANDARD (if applicable)
STATUS_PLAYBACK_ENDED, // Undefined
STATUS_TRACK_CHANGE, // LOWORD = New track number, HIWORD = Undefined
STATUS_FULLSCREEN_MESSAGE, // Received input message on fullscreen window
STATUS_HARDWARE_EJECT_REQUEST, // Undefined -- The user pressed the hardware eject button on the default drive during playback
STATUS_DVD_MENU_CHANGE = 0x20, // 0 = Off, 1 = On
STATUS_DVD_TITLE_CHAPTER_CHANGE, // HIWORD = Title, LOWORD = Chapter
STATUS_DVD_STILL_MODE_CHANGE, // 0 = Off, 1 = On
STATUS_DVD_ASPECT_RATIO_CHANGE, // New DVD_ASPECT_RATIO
STATUS_DVD_INVALID_REGION, // Undefined -- Disc and System and/or Decoder Regiondo
not match
STATUS_DVD_UNDEFINED_REGION, // Undefined -- No default System and/or Decoder Region has been set
STATUS_VCD_TRACK_CHANGE = 0x40, // LOWORD = New track number, HIWORD = VCD_XXX flag (see VCD section below)
STATUS_CAPTURE_LENGTH_CHANGE = 0x60 // LPCAPTURE_LENGTH
} NAVIGATION_STATUS, *LPNAVIGATION_STATUS;
// Navigator Seeking Modes
typedef enum
{
SEEK_FORWARD, // Seek forward
SEEK_BACKWARD, // Seek backward
SEEK_TO_START // Seek to the begin
ning
} NAV_SEEK_MODE, *LPNAV_SEEK_MODE;
// Audio Output Mode
typedef enum
{
AUDIO_OUTPUT_STEREO, // Stereo output
AUDIO_OUTPUT_LEFT_CHANNEL, // Left channel outputted through both speakers or just left one
AUDIO_OUTPUT_RIGHT_CHANNEL // Right channel outputted through both speakers or just right one
} AUDIO_OUTPUT_MODE, *LPAUDIO_OUTPUT_MODE;
// Audio Output Type
typedef enum
{
AUDIO_SURROUND_OUTPUT, // Sound decoded and played through on-board DAC
AUDIO_AC3_OUTPUT, // Sound is not decoded (unless MPEG-2 otput as stereo PCM). Played through SP/Diff connector
AUDIO_PCM_OUTPUT // Sound decoded and played through SP/Diff connector
} AUDIO_OUTPUT_TYPE, *LPAUDIO_OUTPUT_TYPE;
#endif // _RMNavigatorControl_Data
interface IRMNavigatorControl : public IUnknown
{
public:
// IUnknown methods.
STDMETHOD(CopyFrame) (void) PURE;
STDMETHOD(CaptureFrame) (BSTR lpFilePath) PURE;
STDMETHOD(GetAudioOutputMode) (LPAUDIO_OUTPUT_MODE lpAMode) PURE;
STDMETHOD(GetAudioOutputType) (LPAUDIO_OUTPUT_TYPE lpAType) PURE;
STDMETHOD(GetDisplayMode) (LPDISPLAY_MODE lpdMode) PURE;
STDMETHOD(GetLength) (LPDWORD lpdwLength) PURE; // ms.
STDMETHOD(GetPosition) (LPDWORD lpdwPosition) PURE; // ms.
STDMETHOD(GetPlaybackMode) (LPPLAY_MODE lpMode) PURE;
STDMETHOD(GetNavigationMode) (LPNAVIGATION_MODE lpMode) PURE;
STDMETHOD(GetFileInfo) (BSTR lpPath, LPWORD lpwFile_no, LPWORD lpwFiles) PURE;
// Receives information about the currently loaded file and the number of files in the list
STDMETHOD(GetRepeatMode) (LPREPEAT_MODE lprepMode) PURE;
STDMETHOD(GetVideoSourceSize) (LPPOINT lpSize) PURE;
STDMETHOD(GetVideoStandard) (LPVIDEO_STANDARD lpVidStd) PURE;
STDMETHOD(GetFileType) (LPFILE_TYPE lpfType) PURE;
STDMETHOD(GetPictureControlValue) (PICTURE_CONTROL picCtl, LPDWORD lpdwValue) PURE;
STDMETHOD(GetVideoHandle) (HWND *hwnd) PURE;
STDMETHOD(GetVideoKeyColor) (LPCOLORREF lpcref) PURE;
STDMETHOD(GetVolumeLevel) (LPDWORD lpdwLevel) PURE;
STDMETHOD(GetVideoPosition) (LPRECT lprPosition) PURE;
STDMETHOD(Initialize) (HWND hVideoParent) PURE; // Performs open
STDMETHOD(IsInitialized) (LPBOOL lpInitialized) PURE;
STDMETHOD(NextTrack) (void) PURE;
STDMETHOD(PreviousTrack) (void) PURE;
STDMETHOD(Play) (void) PURE;
STDMETHOD(Pause) (void) PURE;
STDMETHOD(Seek) (NAV_SEEK_MODE SeekMode, UINT uSecs) PURE; // uSecs ignored on SEEK_TO_START
STDMETHOD(SetAudioOutputMode) (AUDIO_OUTPUT_MODE AMode) PURE;
STDMETHOD(SetAudioOutputType) (AUDIO_OUTPUT_TYPE AType) PURE;
STDMETHOD(SetVideoDestination) (LPRECT lprDestination) PURE;
STDMETHOD(SetVideoPosition) (LPRECT lprPosition) PURE;
STDMETHOD(SetDisplayMode) (DISPLAY_MODE dMode) PURE;
STDMETHOD(SetPlaybackList) (LPBSTR lpList, WORD wListItems) PURE;
STDMETHOD(SetNavigationMode) (NAVIGATION_MODE Mode) PURE;
STDMETHOD(SetRepeatMode) (REPEAT_MODE repMode) PURE;
STDMETHOD(SetVideoKeyColor) (COLORREF cref) PURE;
STDMETHOD(SetVideoHandle) (const HWND hwnd) PURE;
STDMETHOD(SetVideoInputReceiver) (const HWND hwnd) PURE;
STDMETHOD(SetVolumeLevel) (DWORD dwLevel) PURE;
STDMETHOD(SetPictureControl) (PICTURE_CONTROL picCtl, DWORD dwValue) PURE;
STDMETHOD(ShowPropertiesDialog) (const HWND hwndParent) PURE;
STDMETHOD(Stop) (void) PURE;
STDMETHOD(Uninitialize) (void) PURE; // Performs close
};
/////////////////////////////////////////////////////////////////////////////
// Interface IRMDvd
//
// Contains DVD navigation commands
#ifndef _RMDvd_Data
#define _RMDvd_Data
#define MAX_DVD_LANGUAGES 8 // 0..7
#define MAX_DVD_SUBTITLES 32 // 0..31
#define MAX_DVD_TITLES 100 // 1..99 (per DVD Volume)
// Title / Chapter information types for the active DVD Volume
typedef WORD DVD_Chapters [MAX_DVD_TITLES]; // Number of chapters per title
typedef BYTE DVD_Angles [MAX_DVD_TITLES]; // Number of angles per title
// Language information types
typedef BYTE DVD_LangStream[MAX_DVD_LANGUAGES]; // Stream number for particular language
typedef BYTE DVD_AudioCodingMode[MAX_DVD_LANGUAGES];// Refer to DVD_AUDIO_CODING
typedef WORD DVD_LanguageCode[MAX_DVD_LANGUAGES]; // ISO639 language code
typedef BYTE DVD_NChannels[MAX_DVD_LANGUAGES]; // Refer to DVD_AUDIO_OUTPUT
typedef BYTE DVD_AudioExtension[MAX_DVD_LANGUAGES]; // Refer to DVD_AUDIO_EXTENDED_INFO
// SubTitle information types
typedef BYTE DVD_STStream[MAX_DVD_SUBTITLES]; // Stream number for particular language
typedef WORD DVD_STLanguageCode [MAX_DVD_SUBTITLES]; // ISO639 language code
// Audio Stream (Language) Coding
typedef enum
{
AUDIO_CODING_AC3, //do
lby AC-3
AUDIO_CODING_UNKNOWN,
AUDIO_CODING_MPEG_1, // MPEG-1
AUDIO_CODING_MPEG_2, // MPEG-2
AUDIO_CODING_PCM, // Linear PCM
AUDIO_CODING_UNKNOWN2,
AUDIO_CODING_DTS, // DTS
AUDIO_CODING_SDDS // SDDS
} DVD_AUDIO_CODING, *LPDVD_AUDIO_CODING;
// DVD Audio Stream (Language) Output Channels
typedef enum
{
AUDIO_UNDEFINED_OUT, // Not defined
AUDIO_STEREO_OUT = 1, // Stereo
AUDIO_DOLBY5_1_OUT = 5, //do
lby Digital 5.1
AUDIO_DOLBY5_1_ZZ_OUT //do
lby Digital ZZ 5.1
} DVD_AUDIO_OUTPUT, *LPDVD_AUDIO_OUTPUT;
// DVD Audio Stream (Language) Extended Information
typedef enum
{
AUDIO_UNDEFINED_EXT, // Not defined
AUDIO_VISUALLY_IMPAIRED_EXT = 2, // For Visually Impaired
AUDIO_DIRECTOR_COMMENTS1_EXT, // Director's Comments
AUDIO_DIRECTOR_COMMENTS2_EXT // Extra Director's Comments
} DVD_AUDIO_EXTENDED_INFO, *LPDVD_AUDIO_EXTENDED_INFO;
// DVD Aspect Ratio information
typedef enum
{
ASPECT_RATIO_4_3, // Normal, Letterbox or Pan&Scan display mode
ASPECT_RATIO_16_9 = 3 // Wide display mode
} DVD_ASPECT_RATIO, *LPDVD_ASPECT_RATIO;
// Menu type selector
typedef enum tagDvdMenuType
{
DVD_MENU_TITLE, // Title menu
DVD_MENU_ROOT, // Root menu
DVD_MENU_SUBTITLE, // Subtitle menu
DVD_MENU_LANGUAGE, // Language menu
DVD_MENU_ANGLE, // Angle menu
DVD_MENU_CHAPTER // Chapter menu
} DVD_MENU_TYPE, *LPDVD_MENU_TYPE;
// Menu Button Navigation selector
typedef enum tagDvdMenuButton
{
DVD_MENU_BUTTON_UP, // Highlight menu button above current
DVD_MENU_BUTTON_LEFT, // Highlight menu button to the left of current
DVD_MENU_BUTTON_DOWN, // Highlight menu button below current
DVD_MENU_BUTTON_RIGHT, // Highlight menu button to the right of current
DVD_MENU_BUTTON_SELECT // Activate currently highlighted button
} DVD_MENU_BUTTON_ACTION, *LPDVD_MENU_BUTTON_ACTION;
// Closed Caption background mode
typedef enum
{
CC_OPAQUE, // Black background
CC_TRANSPARENT // Transparent background
} DVD_CC_MODE, *LPDVD_CC_MODE;
// DVD Playback speed for forward, backward or slow motion (forward only)
typedef enum
{
DVD_SPEED_NORMAL, // Default playback speed
DVD_SPEED_2, // 2 times default speed Forward/Backward motion, 1/2 for Slow motion
DVD_SPEED_4, // 4 times default speed Forward/Backward motion, 1/4 for Slow motion
DVD_SPEED_8 // 8 times default speed Forward/Backward motion, 1/8 for Slow motion
} DVD_SCAN_SPEED, *LPDVD_SCAN_SPEED;
// DVD Scanning flags
typedef enum
{
DVD_MOTION_FORWARD, // Scan forward
DVD_MOTION_BACKWARD, // Scan backward
DVD_MOTION_SLOW // Slow Motion (forward only)
} DVD_MOTION, *LPDVD_MOTION;
// DVD Video Mode
typedef enum
{
DVD_VIDEO_STANDARD, // Standard (4:3)
DVD_VIDEO_PANSCAN, // Pan&Scan (4:3)
DVD_VIDEO_LETTERBOX, // Letterbox (4:3)
DVD_VIDEO_WIDE, // Wide (16:9)
DVD_VIDEO_UNSPECIFIED_4_3 // Unspecified (4:3)
}
DVD_VIDEO_MODE, *LPDVD_VIDEO_MODE;
#endif // _RMDvd_Data
// {33EFD7C3-8648-11d3-B952-CAE6B058DA00}
DEFINE_GUID(IID_IRMDvd,
0x33efd7c3, 0x8648, 0x11d3, 0xb9, 0x52, 0xca, 0xe6, 0xb0, 0x58, 0xda, 0x0);
interface IRMDvd : public IUnknown
{
// IUnknown methods.
STDMETHOD(ChangeAngle) (BYTE bAngle) PURE;
STDMETHOD(ChangeLanguage) (BYTE bLanguage) PURE;
STDMETHOD(ChangeSubtitle) (BYTE bSubtitle, BOOL bOn) PURE;
STDMETHOD(ChangeChapter) (WORD wChapter) PURE;
STDMETHOD(GetClosedCaptionMode) (LPDVD_CC_MODE lpCCMode, LPBOOL lpbON) PURE;
STDMETHOD(GetCurrentLocation) (LPBYTE lpbTitle, LPWORD lpwChapter) PURE;
STDMETHOD(GetAnglesInCurrentTitle) (LPBYTE lpbAngles) PURE;
STDMETHOD(GetDvdVolumeInfo) (LPBYTE lpTitles, DVD_Chapters *Chapters, DVD_Angles *Angles) PURE;
STDMETHOD(GetCurrentLanguage) (LPBYTE lpbLang) PURE;
STDMETHOD(GetCurrentSubtitle) (LPBYTE lpbST, LPBOOL lpbOn) PURE;
STDMETHOD(GetLanguageInfo) (LPBYTE lpLangs, DVD_LangStream *Stream, DVD_AudioCodingMode *Coding, DVD_LanguageCode *ISOCode, DVD_NChannels *Channels, DVD_AudioExtension *Ext) PURE;
STDMETHOD(GetParentalLevel) (LPBYTE lpbParentalLevel) PURE;
STDMETHOD(GetSubtitleInfo) (LPBYTE lpSubtitles, DVD_STStream *Stream, DVD_STLanguageCode *ISOCode) PURE;
STDMETHOD(GetMotionAttributes) (LPDVD_MOTION lpMotion, LPDVD_SCAN_SPEED lpScanSpeed) PURE;
STDMETHOD(GetPreferredVideoMode) (LPDVD_VIDEO_MODE lpVidMode) PURE;
STDMETHOD(GetVideoMode) (LPDVD_VIDEO_MODE lpVidMode) PURE;
STDMETHOD(GetPalette) (HPALETTE hApplicationPalette, HPALETTE *hNewPalette) PURE;
STDMETHOD(GoUp) (void) PURE;
STDMETHOD(MenuCall) (DVD_MENU_TYPE MenuType) PURE;
STDMETHOD(MenuButtonAction) (DVD_MENU_BUTTON_ACTION ButtonAction) PURE;
STDMETHOD(MouseActivateButton) (LPPOINT lppt) PURE;
STDMETHOD(MouseSelectButton) (LPPOINT lppt) PURE;
STDMETHOD(PlayFromChapter) (BYTE bTitle, WORD wChapter) PURE;
STDMETHOD(Resume) (void) PURE;
STDMETHOD(Scan) (DVD_MOTION Motion, DVD_SCAN_SPEED ScanSpeed) PURE;
STDMETHOD(SetClosedCaptionMode) (DVD_CC_MODE CCMode, BOOL bON) PURE;
STDMETHOD(SetParentalLevel) (BYTE bParentalLevel) PURE;
STDMETHOD(SetParentalLevelPassword) (BSTR lpPassword) PURE;
STDMETHOD(SetPreferredVideoMode) (DVD_VIDEO_MODE VidMode) PURE;
STDMETHOD(StillOff) (void) PURE;
};
/////////////////////////////////////////////////////////////////////////////
// Interface IRMVcd
//
// Contains VideoCD navigation commands
// {33EFD7C4-8648-11d3-B952-CAE6B058DA00}
DEFINE_GUID(IID_IRMVcd,
0x33efd7c4, 0x8648, 0x11d3, 0xb9, 0x52, 0xca, 0xe6, 0xb0, 0x58, 0xda, 0x0);
#ifndef _RMVcd_Data
#define _RMVcd_Data
// Operation availability flags returned in the HIWORD(lParam)
// on the STATUS_VCD_TRACK_CHANGE notification.
#define VCD_NO_SELECTIONS 0x0000 // No selections available
#define VCD_SELECT_DEFAULT 0x0001 // Default selection available
#define VCD_RETURN 0x0002 // Return key functionality available
#define VCD_SELECT_MENU_ITEM 0x0004 // Menu items available
#endif // _RMVcd_Data
interface IRMVcd : public IUnknown
{
// IUnknown methods.
STDMETHOD(GetCurrentAudioStream) (LPBYTE lpbStream) PURE;
STDMETHOD(GetNumberOfAudioStreams) (LPBYTE lpbStreams) PURE;
STDMETHOD(GetVcdVolumeInfo) (LPWORD lpnVideo, LPWORD lpnAudio, LPWORD lpnSegments, LPWORD lpwVolume, BSTR lpVolName) PURE;
STDMETHOD(Return) () PURE;
STDMETHOD(SelectDefault) () PURE;
STDMETHOD(SelectMenuItem) (WORD wItem) PURE;
STDMETHOD(SetAudioStream) (BYTE bStream) PURE;
};
/////////////////////////////////////////////////////////////////////////////
// Interface IRMEncoder
//
// Contains Encoding commands
// {33EFD7C5-8648-11d3-B952-CAE6B058DA00}
DEFINE_GUID(IID_IRMEncoder,
0x33efd7c5, 0x8648, 0x11d3, 0xb9, 0x52, 0xca, 0xe6, 0xb0, 0x58, 0xda, 0x0);
#ifndef _RMEncoder_Data
#define _RMEncoder_Data
// Audio Formats
typedef enum
{
AUDIO_MODE_MONO = 1,
AUDIO_MODE_STEREO,
AUDIO_MODE_DUAL
} AUDIO_MODE, *LPAUDIO_MODE;
// Audio Formats
typedef enum
{
LAYER_I = 1,
LAYER_II,
LAYER_III,
PCM
} AUDIO_FORMAT, *LPAUDIO_FORMAT;
// Audio Sampling
typedef enum
{
SAMPLING_32 = 1,
SAMPLING_44_1,
SAMPLING_48
} AUDIO_SAMPLING, *LPAUDIO_SAMPLING;
// Stream Format
typedef enum
{
STREAM_MPEG1_SYSTEM,
STREAM_MPEG2_PROGRAM,
STREAM_MPEG2_TRANSPORT,
STREAM_ELEMENTARY
} STREAM_FORMAT, *LPSTREAM_FORMAT;
// Video Connectors
typedef enum
{
VIDEO_CONNECTOR_COMPOSITE = 2,
VIDEO_CONNECTOR_SVIDEO,
} VIDEO_CONNECTOR, *LPVIDEO_CONNECTOR;
// Encoding Compatibility Mode
typedef enum
{
COMPATIBILITY_CUSTOM = 0x0001, // Not used
COMPATIBILITY_VCD = 0x0002, // Video CD
COMPATIBILITY_SVCD = 0x0004, // Super Video CD
COMPATIBILITY_DVD = 0x0008, // DVD
COMPATIBILITY_DVR = 0x0010, // DVR (Custom)
COMPATIBILITY_MPEG_1 = 0x0020, // MPEG-1
COMPATIBILITY_MPEG_2 = 0x0040 // MPEG-2
} COMPATIBILITY_MODE, *LPCOMPATIBILITY_MODE;
// Multiplexer Format
typedef enum
{
MUX_MPEG1_SYSTEM = 1,
MUX_MPEG2_PROGRAM,
MUX_MPEG2_TRANSPORT,
MUX_MPEG2_PES,
MUX_MPEG_ELEMENTARY
} MUX_FORMAT, *LPMUX_FORMAT;
// Video Input Parameters
typedef struct tagVideoInputParams
{
VIDEO_STANDARD bStandard;
VIDEO_CONNECTOR bConnector;
DWORD dwBitRate; // In kbs
} VIDEO_INPUT_PARAMS, *LPVIDEO_INPUT_PARAMS;
// Audio Format Parameters
typedef struct tagAudioFormatParams
{
AUDIO_FORMAT bFormat;
AUDIO_SAMPLING bSampling;
AUDIO_MODE bMode;
DWORD dwBitRate; // In kbs
BOOL bRecordCRC;
} AUDIO_FORMAT_PARAMS, *LPAUDIO_FORMAT_PARAMS;
// Multiplexer Parameters
typedef struct tagMultiplexerParams
{
MUX_FORMAT MuxFormat;
} MUX_PARAMS, *LPMUX_PARAMS;
// Capture Parameters Structure
typedef struct tagCaptureParams
{
LPTSTR lpVideoFile; // Video file path
LPTSTR lpAudioFile; // Audio file path (NULL if none)
BOOL bOverride; // Override files?
} CAPTURE_PARAMS, *LPCAPTURE_PARAMS;
typedef struct tagCaptureLength
{
DWORD dwVideo; // Captured video file size in KB
DWORD dwAudio; // Captured audio file size in KB
} CAPTURE_LENGTH, *LPCAPTURE_LENGTH;
#endif // _RMEncoder_Data
interface IRMEncoder : public IUnknown
{
// IUnknown methods.
STDMETHOD(Capture) (LPCAPTURE_PARAMS lpCapParams) PURE;
STDMETHOD(GetCapturedLength) (LPCAPTURE_LENGTH lpCapLength) PURE;
STDMETHOD(GetCaptureVideoFile) (BSTR lpszVidFile) PURE;
STDMETHOD(GetCaptureAudioFile) (BSTR lpszAudFile) PURE;
STDMETHOD(GetStreamFormat) (LPMUX_PARAMS lpbStreamFormat) PURE;
STDMETHOD(GetVideoInputParams) (LPVIDEO_INPUT_PARAMS lpVidParams) PURE;
STDMETHOD(GetAudioFormatParams) (LPAUDIO_FORMAT_PARAMS lpAudParams) PURE;
STDMETHOD(GetCompatibilityMode) (LPCOMPATIBILITY_MODE lpMode) PURE;
STDMETHOD(GetSupportedCompatibilityModes) (LPDWORD lpdwModes) PURE;
STDMETHOD(IsSetToPlay) (LPBOOL lpPlayback) PURE;
STDMETHOD(Preview) (void) PURE;
STDMETHOD(SetToPlay) (BOOL bPlayback) PURE;
STDMETHOD(SetVideoConnector) (VIDEO_CONNECTOR VidConn) PURE;
STDMETHOD(SetVideoStandard) (VIDEO_STANDARD VidStd) PURE;
STDMETHOD(SetAudioFormat) (AUDIO_FORMAT AFormat) PURE;
STDMETHOD(SetAudioBitrate) (DWORD dwRate) PURE;
STDMETHOD(SetAudioSamplingRate) (AUDIO_SAMPLING ASamplingRate) PURE;
STDMETHOD(SetAudioMode) (AUDIO_MODE AMode) PURE;
STDMETHOD(SetAudioCRC) (BOOL bRecord) PURE;
STDMETHOD(SetStreamFormat) (STREAM_FORMAT bStreamFormat) PURE;
STDMETHOD(SetAudioFormatParams) (LPAUDIO_FORMAT_PARAMS lpAudParams) PURE;
STDMETHOD(SetCompatibilityMode) (COMPATIBILITY_MODE Mode) PURE;
STDMETHOD(ShowEncoderPropertiesDialog) (const HWND hwndParent) PURE;
};
/////////////////////////////////////////////////////////////////////////////
//
// Miscelaneous error codes returned by interface methods
// Attempt to Eject / Close Tray on non-removable drives
#define RME_NO_DRIVE_SELECTED 0xFFFF0010
// Given drive is not available in the system
#define RME_DRIVE_NOT_AVAILABLE 0xFFFF0011
// No window has been specified for status notification
#define RME_NO_NOTIFY_WINDOW 0xFFFF0012
// Invalid window handle
#define RME_INVALID_WINDOW 0xFFFF0013
#endif // !defined(AFX_RMNAVIF_H__2D72A745_906D_11D3_B952_E7A67C993800__INCLUDED_)
LPBSTR对应Object Pas中的什么类型?
//////////////////////////////////////////////////////////////////////
//
// rmnavif.h : Interface declarations.
//
// Sigma Designs Navigation Interfaces
//
// Created by Raul Chirinos
//
// (C) Copyright Sigma Designs Inc. 1999 - 2000
//
// Sigma Designs Proprietary and confidential
//
// Created on October 1999
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_RMNAVIF_H__2D72A745_906D_11D3_B952_E7A67C993800__INCLUDED_)
#define AFX_RMNAVIF_H__2D72A745_906D_11D3_B952_E7A67C993800__INCLUDED_
#include <objbase.h>
// {33EFD7C0-8648-11d3-B952-CAE6B058DA00}
DEFINE_GUID(CLSID_RMNavigator,
0x33efd7c0, 0x8648, 0x11d3, 0xb9, 0x52, 0xca, 0xe6, 0xb0, 0x58, 0xda, 0x0);
/////////////////////////////////////////////////////////////////////////////
// Interface IRMNavigator
//
// Contains commands to support MPEG file playback
// {33EFD7C1-8648-11d3-B952-CAE6B058DA00}
DEFINE_GUID(IID_IRMNavigator,
0x33efd7c1, 0x8648, 0x11d3, 0xb9, 0x52, 0xca, 0xe6, 0xb0, 0x58, 0xda, 0x0);
#ifndef _RMNavigator_Data
#define _RMNavigator_Data
#define MAX_EXTENSIONS 20 // Maximum number of extensions that can be searched
#define DEF_EXTENSIONS 1 // Number of default extensions - 'mpg' is the default
// Installed hardware capabilities
#define CAPS_SIMULTANEOUS_TV_VGA_OUTPUT 0x00000001 // Output to VGA and TV is simultaneous
#define CAPS_TV_OUTPUT 0x00000002 // Supports TV output
#define CAPS_DVD_DECRYPTION 0x00000004 // Supports DVD playback
#define CAPS_VGA_WINDOW 0x00000008 // Supports overlay
#define CAPS_BCS_CONTROLS 0x00000010 // Supports Brightness, Contrast and Saturation Controls
// System Drive Letters, excluding floppies
typedef enum
{
DRIVE_CURRENT, // Currently set drive (only used on input)
DRIVE_UNDETERMINED, // No drive set
DRIVE_C, DRIVE_D, DRIVE_E, DRIVE_F, // Other drive letters
DRIVE_G, DRIVE_H, DRIVE_I, DRIVE_J,
DRIVE_K, DRIVE_L, DRIVE_M, DRIVE_N,
DRIVE_O, DRIVE_P, DRIVE_Q, DRIVE_R,
DRIVE_S, DRIVE_T, DRIVE_U, DRIVE_V,
DRIVE_W, DRIVE_X, DRIVE_Y, DRIVE_Z
} DRIVE_ID, *LPDRIVE_ID;
// Default drive status
typedef enum
{
DRIVE_STATUS_UNKNOWN, // Unknown drive status
DRIVE_STATUS_NORMAL, // Media is place
DRIVE_STATUS_OPEN, // CDROM tray open (only set after Eject)
DRIVE_STATUS_EMPTY // No media detected
} DRIVE_STATUS, *LPDRIVE_STATUS;
// Media format found on default drive
typedef enum
{
MEDIA_FORMAT_UNKNOWN, // Unknown
MEDIA_FORMAT_DATA, // MPEG FILES
MEDIA_FORMAT_VCD, // VideoCD 1.X
MEDIA_FORMAT_VCD2, // VideoCD 2.0
MEDIA_FORMAT_SVCD, // Super VideoCD
MEDIA_FORMAT_DVD, // DVD
MEDIA_FORMAT_CDDA // Audio CD
} MEDIA_FORMAT, *LPMEDIA_FORMAT;
#endif // _RMNavigator_Data
interface IRMNavigator : public IUnknown
{
public:
// IUnknown methods.
STDMETHOD(AddFileToPlayList) (BSTR lpPath) PURE;
STDMETHOD(CloseTray) (DRIVE_ID Drive) PURE;
STDMETHOD(CreateFileList) (DRIVE_ID Drive, LPWORD lpwItems) PURE;
STDMETHOD(Eject) (DRIVE_ID Drive) PURE;
STDMETHOD(GetAvailableDiskSpace) (DRIVE_ID Drive, LPDWORD lpdwSpace) PURE; // in Megabytes
STDMETHOD(GetCapabilities) (LPDWORD lpdwCaps) PURE;
STDMETHOD(GetDrive) (LPDRIVE_ID lpDrive) PURE;
STDMETHOD(GetDriveName) (DRIVE_ID Drive, BSTR lpDriveName) PURE;
STDMETHOD(GetDriveStatus) (LPDRIVE_STATUS lpdStatus) PURE;
STDMETHOD(GetDriveType) (DRIVE_ID Drive, LPBYTE lpbType) PURE;
STDMETHOD(GetFileFromPlayList) (WORD wIndex, BSTR lpPath) PURE;
STDMETHOD(GetFileList) (LPBSTR lpList) PURE;
STDMETHOD(GetFileListCount) (LPWORD lpwItems) PURE;
STDMETHOD(GetPlayList) (LPBSTR lpList) PURE;
STDMETHOD(GetPlayListCount) (LPWORD lpwItems) PURE;
STDMETHOD(GetMediaFormat) (LPMEDIA_FORMAT lpFormat) PURE;
STDMETHOD(GetNotifyWindow) (HWND *hwnd) PURE;
STDMETHOD(GetFullScreenMode) (LPBOOL lpMode) PURE;
STDMETHOD(GetFullScreenHandle) (HWND *hwnd) PURE;
STDMETHOD(IsDriveAvailable) (DRIVE_ID Drive, LPBOOL lpbAvailable) PURE;
STDMETHOD(LoadPlayList) (BSTR lpPath) PURE;
STDMETHOD(ResetPlayList) (void) PURE;
STDMETHOD(SavePlayList) (BSTR lpPath) PURE;
STDMETHOD(SetDrive) (DRIVE_ID Drive) PURE;
STDMETHOD(SetSearchExtensions) (LPBSTR lpExtensions, BYTE bItems) PURE;
STDMETHOD(SetNotifyWindow) (HWND hwnd, UINT uMsg) PURE;
STDMETHOD(SetFullScreenMode) (BOOL bMode) PURE; // Toggle fullscreen mode
};
/////////////////////////////////////////////////////////////////////////////
// Interface IRMNavigatorControl
//
// Contains commands to support MPEG file playback
// {33EFD7C2-8648-11d3-B952-CAE6B058DA00}
DEFINE_GUID(IID_IRMNavigatorControl,
0x33efd7c2, 0x8648, 0x11d3, 0xb9, 0x52, 0xca, 0xe6, 0xb0, 0x58, 0xda, 0x0);
#ifndef _RMNavigatorControl_Data
#define _RMNavigatorControl_Data
// Type of loaded file
typedef enum
{
FILE_UNKNOWN_TYPE, // Unknown file type
FILE_MPEG_AUDIO, // MPEG audio only file
FILE_MPEG_VIDEO, // MPEG video only file
FILE_MPEG_AUDIO_VIDEO, // MPEG video + audio (system) file
FILE_AC3, // AC3 source
FILE_MP3, // MP3 source
FILE_DVD_SOURCE, // DVD source
FILE_DIGITAL_AUDIO, // Audio CD source
FILE_VCD_STILL // VideoCD still picture
} FILE_TYPE, *LPFILE_TYPE;
// Available Display Modes
typedef enum
{
DISPLAY_VGA, // Display on VGA
DISPLAY_TV_AUTO_STANDARD, // Display to TV according to video source standard
DISPLAY_TV_AUTO_STANDARD_SCALED,// Display to TV according to video source standard scaled to fit screen
DISPLAY_TV_NTSC_SCALED, // Display NTSC to TV scaled to fit screen
DISPLAY_TV_NTSC, // Display NTSC to TV
DISPLAY_TV_PAL, // Display PAL to TV
DISPLAY_TV_PAL_SCALED, // Display PAL to TV scaled to fit screen
DISPLAY_TV_PAL60, // Display PAL 60Hz to TV
DISPLAY_TV_PAL60_SCALED // Display PAL 60Hz to TV scaled to fit screen
} DISPLAY_MODE, *LPDISPLAY_MODE;
// Video standard of opened file
typedef enum
{
VIDEO_STD_UNKNOWN, // Unknown standard
VIDEO_STD_NTSC, // NTSC
VIDEO_STD_PAL, // PAL
VIDEO_STD_SECAM // SECAM
} VIDEO_STANDARD, *LPVIDEO_STANDARD;
// Navigator's mode
typedef enum
{
NAVIGATION_MODE_LIST, // Given list
NAVIGATION_MODE_RANDOM, // Given list, randomly
NAVIGATION_MODE_DVD, // Detected as DVD navigation
NAVIGATION_MODE_VCD, // Detected as VideoCD navigation
NAVIGATION_MODE_VCD2, // VideoCD 2.0 navigation
NAVIGATION_MODE_SVCD, // SuperVcd navigation
NAVIGATION_MODE_ENCODING // Capture and/or Preview
} NAVIGATION_MODE, *LPNAVIGATION_MODE;
// Picture Controls
typedef enum
{
PCTL_BRIGHTNESS, // Brightness
PCTL_CONTRAST, // Contrast
PCTL_SATURATION, // Saturation (Color)
PCTL_HUE // Hue -- not available on playback devices
} PICTURE_CONTROL, *LPPICTURE_CONTROL;
// Playback Mode
typedef enum
{
MODE_UNKNOWN, // Unknown mode
MODE_NOT_INITIALIZED, // Not ready for playback
MODE_INITIALIZED, // Ready for playback
MODE_STOPPED, // Stopped
MODE_PLAYING, // Playing
MODE_PAUSED, // Paused
MODE_RECORDING, // Recording
MODE_PREVIEWING // Previewing
} PLAY_MODE, *LPPLAY_MODE;
// Repeat Mode Flags
typedef enum
{
REPEAT_OFF, // No repeat mode set (default)
REPEAT_LIST, // Repeat list in the default order
REPEAT_CURRENT_FILE, // Repeat current file
REPEAT_CURRENT_DVD_CHAPTER = 0x10, // Repeat current DVD chapter
REPEAT_CURRENT_DVD_TITLE // Repeat current DVD title
} REPEAT_MODE, *LPREPEAT_MODE;
// Navigation Status
// Notifications are sent to the 'Notify Window' as 'uMsg' -- see SetNotifyWindow()
// The NAVIGATION_STATUS is placed in the WPARAM and the details of the change
// in the LPARAM as specified below
typedef enum
{
// WPARAM // LPARAM
STATUS_MEDIA_FORMAT_CHANGE = 0x0, // New MEDIA_FORMAT
STATUS_DRIVE_STATUS_CHANGE, // New DRIVE_STATUS
STATUS_MODE_CHANGE, // New PLAY_MODE
STATUS_TIME_CHANGE, // HIBYTE(HIWORD) = Hours, LOBYTE(HIWORD) = Minutes, HIBYTE(LOWORD) = Seconds
STATUS_FILE_INITIALIZED, // HIWORD = FILE_TYPE, LOWORD = VIDEO_STANDARD (if applicable)
STATUS_PLAYBACK_ENDED, // Undefined
STATUS_TRACK_CHANGE, // LOWORD = New track number, HIWORD = Undefined
STATUS_FULLSCREEN_MESSAGE, // Received input message on fullscreen window
STATUS_HARDWARE_EJECT_REQUEST, // Undefined -- The user pressed the hardware eject button on the default drive during playback
STATUS_DVD_MENU_CHANGE = 0x20, // 0 = Off, 1 = On
STATUS_DVD_TITLE_CHAPTER_CHANGE, // HIWORD = Title, LOWORD = Chapter
STATUS_DVD_STILL_MODE_CHANGE, // 0 = Off, 1 = On
STATUS_DVD_ASPECT_RATIO_CHANGE, // New DVD_ASPECT_RATIO
STATUS_DVD_INVALID_REGION, // Undefined -- Disc and System and/or Decoder Regiondo
not match
STATUS_DVD_UNDEFINED_REGION, // Undefined -- No default System and/or Decoder Region has been set
STATUS_VCD_TRACK_CHANGE = 0x40, // LOWORD = New track number, HIWORD = VCD_XXX flag (see VCD section below)
STATUS_CAPTURE_LENGTH_CHANGE = 0x60 // LPCAPTURE_LENGTH
} NAVIGATION_STATUS, *LPNAVIGATION_STATUS;
// Navigator Seeking Modes
typedef enum
{
SEEK_FORWARD, // Seek forward
SEEK_BACKWARD, // Seek backward
SEEK_TO_START // Seek to the begin
ning
} NAV_SEEK_MODE, *LPNAV_SEEK_MODE;
// Audio Output Mode
typedef enum
{
AUDIO_OUTPUT_STEREO, // Stereo output
AUDIO_OUTPUT_LEFT_CHANNEL, // Left channel outputted through both speakers or just left one
AUDIO_OUTPUT_RIGHT_CHANNEL // Right channel outputted through both speakers or just right one
} AUDIO_OUTPUT_MODE, *LPAUDIO_OUTPUT_MODE;
// Audio Output Type
typedef enum
{
AUDIO_SURROUND_OUTPUT, // Sound decoded and played through on-board DAC
AUDIO_AC3_OUTPUT, // Sound is not decoded (unless MPEG-2 otput as stereo PCM). Played through SP/Diff connector
AUDIO_PCM_OUTPUT // Sound decoded and played through SP/Diff connector
} AUDIO_OUTPUT_TYPE, *LPAUDIO_OUTPUT_TYPE;
#endif // _RMNavigatorControl_Data
interface IRMNavigatorControl : public IUnknown
{
public:
// IUnknown methods.
STDMETHOD(CopyFrame) (void) PURE;
STDMETHOD(CaptureFrame) (BSTR lpFilePath) PURE;
STDMETHOD(GetAudioOutputMode) (LPAUDIO_OUTPUT_MODE lpAMode) PURE;
STDMETHOD(GetAudioOutputType) (LPAUDIO_OUTPUT_TYPE lpAType) PURE;
STDMETHOD(GetDisplayMode) (LPDISPLAY_MODE lpdMode) PURE;
STDMETHOD(GetLength) (LPDWORD lpdwLength) PURE; // ms.
STDMETHOD(GetPosition) (LPDWORD lpdwPosition) PURE; // ms.
STDMETHOD(GetPlaybackMode) (LPPLAY_MODE lpMode) PURE;
STDMETHOD(GetNavigationMode) (LPNAVIGATION_MODE lpMode) PURE;
STDMETHOD(GetFileInfo) (BSTR lpPath, LPWORD lpwFile_no, LPWORD lpwFiles) PURE;
// Receives information about the currently loaded file and the number of files in the list
STDMETHOD(GetRepeatMode) (LPREPEAT_MODE lprepMode) PURE;
STDMETHOD(GetVideoSourceSize) (LPPOINT lpSize) PURE;
STDMETHOD(GetVideoStandard) (LPVIDEO_STANDARD lpVidStd) PURE;
STDMETHOD(GetFileType) (LPFILE_TYPE lpfType) PURE;
STDMETHOD(GetPictureControlValue) (PICTURE_CONTROL picCtl, LPDWORD lpdwValue) PURE;
STDMETHOD(GetVideoHandle) (HWND *hwnd) PURE;
STDMETHOD(GetVideoKeyColor) (LPCOLORREF lpcref) PURE;
STDMETHOD(GetVolumeLevel) (LPDWORD lpdwLevel) PURE;
STDMETHOD(GetVideoPosition) (LPRECT lprPosition) PURE;
STDMETHOD(Initialize) (HWND hVideoParent) PURE; // Performs open
STDMETHOD(IsInitialized) (LPBOOL lpInitialized) PURE;
STDMETHOD(NextTrack) (void) PURE;
STDMETHOD(PreviousTrack) (void) PURE;
STDMETHOD(Play) (void) PURE;
STDMETHOD(Pause) (void) PURE;
STDMETHOD(Seek) (NAV_SEEK_MODE SeekMode, UINT uSecs) PURE; // uSecs ignored on SEEK_TO_START
STDMETHOD(SetAudioOutputMode) (AUDIO_OUTPUT_MODE AMode) PURE;
STDMETHOD(SetAudioOutputType) (AUDIO_OUTPUT_TYPE AType) PURE;
STDMETHOD(SetVideoDestination) (LPRECT lprDestination) PURE;
STDMETHOD(SetVideoPosition) (LPRECT lprPosition) PURE;
STDMETHOD(SetDisplayMode) (DISPLAY_MODE dMode) PURE;
STDMETHOD(SetPlaybackList) (LPBSTR lpList, WORD wListItems) PURE;
STDMETHOD(SetNavigationMode) (NAVIGATION_MODE Mode) PURE;
STDMETHOD(SetRepeatMode) (REPEAT_MODE repMode) PURE;
STDMETHOD(SetVideoKeyColor) (COLORREF cref) PURE;
STDMETHOD(SetVideoHandle) (const HWND hwnd) PURE;
STDMETHOD(SetVideoInputReceiver) (const HWND hwnd) PURE;
STDMETHOD(SetVolumeLevel) (DWORD dwLevel) PURE;
STDMETHOD(SetPictureControl) (PICTURE_CONTROL picCtl, DWORD dwValue) PURE;
STDMETHOD(ShowPropertiesDialog) (const HWND hwndParent) PURE;
STDMETHOD(Stop) (void) PURE;
STDMETHOD(Uninitialize) (void) PURE; // Performs close
};
/////////////////////////////////////////////////////////////////////////////
// Interface IRMDvd
//
// Contains DVD navigation commands
#ifndef _RMDvd_Data
#define _RMDvd_Data
#define MAX_DVD_LANGUAGES 8 // 0..7
#define MAX_DVD_SUBTITLES 32 // 0..31
#define MAX_DVD_TITLES 100 // 1..99 (per DVD Volume)
// Title / Chapter information types for the active DVD Volume
typedef WORD DVD_Chapters [MAX_DVD_TITLES]; // Number of chapters per title
typedef BYTE DVD_Angles [MAX_DVD_TITLES]; // Number of angles per title
// Language information types
typedef BYTE DVD_LangStream[MAX_DVD_LANGUAGES]; // Stream number for particular language
typedef BYTE DVD_AudioCodingMode[MAX_DVD_LANGUAGES];// Refer to DVD_AUDIO_CODING
typedef WORD DVD_LanguageCode[MAX_DVD_LANGUAGES]; // ISO639 language code
typedef BYTE DVD_NChannels[MAX_DVD_LANGUAGES]; // Refer to DVD_AUDIO_OUTPUT
typedef BYTE DVD_AudioExtension[MAX_DVD_LANGUAGES]; // Refer to DVD_AUDIO_EXTENDED_INFO
// SubTitle information types
typedef BYTE DVD_STStream[MAX_DVD_SUBTITLES]; // Stream number for particular language
typedef WORD DVD_STLanguageCode [MAX_DVD_SUBTITLES]; // ISO639 language code
// Audio Stream (Language) Coding
typedef enum
{
AUDIO_CODING_AC3, //do
lby AC-3
AUDIO_CODING_UNKNOWN,
AUDIO_CODING_MPEG_1, // MPEG-1
AUDIO_CODING_MPEG_2, // MPEG-2
AUDIO_CODING_PCM, // Linear PCM
AUDIO_CODING_UNKNOWN2,
AUDIO_CODING_DTS, // DTS
AUDIO_CODING_SDDS // SDDS
} DVD_AUDIO_CODING, *LPDVD_AUDIO_CODING;
// DVD Audio Stream (Language) Output Channels
typedef enum
{
AUDIO_UNDEFINED_OUT, // Not defined
AUDIO_STEREO_OUT = 1, // Stereo
AUDIO_DOLBY5_1_OUT = 5, //do
lby Digital 5.1
AUDIO_DOLBY5_1_ZZ_OUT //do
lby Digital ZZ 5.1
} DVD_AUDIO_OUTPUT, *LPDVD_AUDIO_OUTPUT;
// DVD Audio Stream (Language) Extended Information
typedef enum
{
AUDIO_UNDEFINED_EXT, // Not defined
AUDIO_VISUALLY_IMPAIRED_EXT = 2, // For Visually Impaired
AUDIO_DIRECTOR_COMMENTS1_EXT, // Director's Comments
AUDIO_DIRECTOR_COMMENTS2_EXT // Extra Director's Comments
} DVD_AUDIO_EXTENDED_INFO, *LPDVD_AUDIO_EXTENDED_INFO;
// DVD Aspect Ratio information
typedef enum
{
ASPECT_RATIO_4_3, // Normal, Letterbox or Pan&Scan display mode
ASPECT_RATIO_16_9 = 3 // Wide display mode
} DVD_ASPECT_RATIO, *LPDVD_ASPECT_RATIO;
// Menu type selector
typedef enum tagDvdMenuType
{
DVD_MENU_TITLE, // Title menu
DVD_MENU_ROOT, // Root menu
DVD_MENU_SUBTITLE, // Subtitle menu
DVD_MENU_LANGUAGE, // Language menu
DVD_MENU_ANGLE, // Angle menu
DVD_MENU_CHAPTER // Chapter menu
} DVD_MENU_TYPE, *LPDVD_MENU_TYPE;
// Menu Button Navigation selector
typedef enum tagDvdMenuButton
{
DVD_MENU_BUTTON_UP, // Highlight menu button above current
DVD_MENU_BUTTON_LEFT, // Highlight menu button to the left of current
DVD_MENU_BUTTON_DOWN, // Highlight menu button below current
DVD_MENU_BUTTON_RIGHT, // Highlight menu button to the right of current
DVD_MENU_BUTTON_SELECT // Activate currently highlighted button
} DVD_MENU_BUTTON_ACTION, *LPDVD_MENU_BUTTON_ACTION;
// Closed Caption background mode
typedef enum
{
CC_OPAQUE, // Black background
CC_TRANSPARENT // Transparent background
} DVD_CC_MODE, *LPDVD_CC_MODE;
// DVD Playback speed for forward, backward or slow motion (forward only)
typedef enum
{
DVD_SPEED_NORMAL, // Default playback speed
DVD_SPEED_2, // 2 times default speed Forward/Backward motion, 1/2 for Slow motion
DVD_SPEED_4, // 4 times default speed Forward/Backward motion, 1/4 for Slow motion
DVD_SPEED_8 // 8 times default speed Forward/Backward motion, 1/8 for Slow motion
} DVD_SCAN_SPEED, *LPDVD_SCAN_SPEED;
// DVD Scanning flags
typedef enum
{
DVD_MOTION_FORWARD, // Scan forward
DVD_MOTION_BACKWARD, // Scan backward
DVD_MOTION_SLOW // Slow Motion (forward only)
} DVD_MOTION, *LPDVD_MOTION;
// DVD Video Mode
typedef enum
{
DVD_VIDEO_STANDARD, // Standard (4:3)
DVD_VIDEO_PANSCAN, // Pan&Scan (4:3)
DVD_VIDEO_LETTERBOX, // Letterbox (4:3)
DVD_VIDEO_WIDE, // Wide (16:9)
DVD_VIDEO_UNSPECIFIED_4_3 // Unspecified (4:3)
}
DVD_VIDEO_MODE, *LPDVD_VIDEO_MODE;
#endif // _RMDvd_Data
// {33EFD7C3-8648-11d3-B952-CAE6B058DA00}
DEFINE_GUID(IID_IRMDvd,
0x33efd7c3, 0x8648, 0x11d3, 0xb9, 0x52, 0xca, 0xe6, 0xb0, 0x58, 0xda, 0x0);
interface IRMDvd : public IUnknown
{
// IUnknown methods.
STDMETHOD(ChangeAngle) (BYTE bAngle) PURE;
STDMETHOD(ChangeLanguage) (BYTE bLanguage) PURE;
STDMETHOD(ChangeSubtitle) (BYTE bSubtitle, BOOL bOn) PURE;
STDMETHOD(ChangeChapter) (WORD wChapter) PURE;
STDMETHOD(GetClosedCaptionMode) (LPDVD_CC_MODE lpCCMode, LPBOOL lpbON) PURE;
STDMETHOD(GetCurrentLocation) (LPBYTE lpbTitle, LPWORD lpwChapter) PURE;
STDMETHOD(GetAnglesInCurrentTitle) (LPBYTE lpbAngles) PURE;
STDMETHOD(GetDvdVolumeInfo) (LPBYTE lpTitles, DVD_Chapters *Chapters, DVD_Angles *Angles) PURE;
STDMETHOD(GetCurrentLanguage) (LPBYTE lpbLang) PURE;
STDMETHOD(GetCurrentSubtitle) (LPBYTE lpbST, LPBOOL lpbOn) PURE;
STDMETHOD(GetLanguageInfo) (LPBYTE lpLangs, DVD_LangStream *Stream, DVD_AudioCodingMode *Coding, DVD_LanguageCode *ISOCode, DVD_NChannels *Channels, DVD_AudioExtension *Ext) PURE;
STDMETHOD(GetParentalLevel) (LPBYTE lpbParentalLevel) PURE;
STDMETHOD(GetSubtitleInfo) (LPBYTE lpSubtitles, DVD_STStream *Stream, DVD_STLanguageCode *ISOCode) PURE;
STDMETHOD(GetMotionAttributes) (LPDVD_MOTION lpMotion, LPDVD_SCAN_SPEED lpScanSpeed) PURE;
STDMETHOD(GetPreferredVideoMode) (LPDVD_VIDEO_MODE lpVidMode) PURE;
STDMETHOD(GetVideoMode) (LPDVD_VIDEO_MODE lpVidMode) PURE;
STDMETHOD(GetPalette) (HPALETTE hApplicationPalette, HPALETTE *hNewPalette) PURE;
STDMETHOD(GoUp) (void) PURE;
STDMETHOD(MenuCall) (DVD_MENU_TYPE MenuType) PURE;
STDMETHOD(MenuButtonAction) (DVD_MENU_BUTTON_ACTION ButtonAction) PURE;
STDMETHOD(MouseActivateButton) (LPPOINT lppt) PURE;
STDMETHOD(MouseSelectButton) (LPPOINT lppt) PURE;
STDMETHOD(PlayFromChapter) (BYTE bTitle, WORD wChapter) PURE;
STDMETHOD(Resume) (void) PURE;
STDMETHOD(Scan) (DVD_MOTION Motion, DVD_SCAN_SPEED ScanSpeed) PURE;
STDMETHOD(SetClosedCaptionMode) (DVD_CC_MODE CCMode, BOOL bON) PURE;
STDMETHOD(SetParentalLevel) (BYTE bParentalLevel) PURE;
STDMETHOD(SetParentalLevelPassword) (BSTR lpPassword) PURE;
STDMETHOD(SetPreferredVideoMode) (DVD_VIDEO_MODE VidMode) PURE;
STDMETHOD(StillOff) (void) PURE;
};
/////////////////////////////////////////////////////////////////////////////
// Interface IRMVcd
//
// Contains VideoCD navigation commands
// {33EFD7C4-8648-11d3-B952-CAE6B058DA00}
DEFINE_GUID(IID_IRMVcd,
0x33efd7c4, 0x8648, 0x11d3, 0xb9, 0x52, 0xca, 0xe6, 0xb0, 0x58, 0xda, 0x0);
#ifndef _RMVcd_Data
#define _RMVcd_Data
// Operation availability flags returned in the HIWORD(lParam)
// on the STATUS_VCD_TRACK_CHANGE notification.
#define VCD_NO_SELECTIONS 0x0000 // No selections available
#define VCD_SELECT_DEFAULT 0x0001 // Default selection available
#define VCD_RETURN 0x0002 // Return key functionality available
#define VCD_SELECT_MENU_ITEM 0x0004 // Menu items available
#endif // _RMVcd_Data
interface IRMVcd : public IUnknown
{
// IUnknown methods.
STDMETHOD(GetCurrentAudioStream) (LPBYTE lpbStream) PURE;
STDMETHOD(GetNumberOfAudioStreams) (LPBYTE lpbStreams) PURE;
STDMETHOD(GetVcdVolumeInfo) (LPWORD lpnVideo, LPWORD lpnAudio, LPWORD lpnSegments, LPWORD lpwVolume, BSTR lpVolName) PURE;
STDMETHOD(Return) () PURE;
STDMETHOD(SelectDefault) () PURE;
STDMETHOD(SelectMenuItem) (WORD wItem) PURE;
STDMETHOD(SetAudioStream) (BYTE bStream) PURE;
};
/////////////////////////////////////////////////////////////////////////////
// Interface IRMEncoder
//
// Contains Encoding commands
// {33EFD7C5-8648-11d3-B952-CAE6B058DA00}
DEFINE_GUID(IID_IRMEncoder,
0x33efd7c5, 0x8648, 0x11d3, 0xb9, 0x52, 0xca, 0xe6, 0xb0, 0x58, 0xda, 0x0);
#ifndef _RMEncoder_Data
#define _RMEncoder_Data
// Audio Formats
typedef enum
{
AUDIO_MODE_MONO = 1,
AUDIO_MODE_STEREO,
AUDIO_MODE_DUAL
} AUDIO_MODE, *LPAUDIO_MODE;
// Audio Formats
typedef enum
{
LAYER_I = 1,
LAYER_II,
LAYER_III,
PCM
} AUDIO_FORMAT, *LPAUDIO_FORMAT;
// Audio Sampling
typedef enum
{
SAMPLING_32 = 1,
SAMPLING_44_1,
SAMPLING_48
} AUDIO_SAMPLING, *LPAUDIO_SAMPLING;
// Stream Format
typedef enum
{
STREAM_MPEG1_SYSTEM,
STREAM_MPEG2_PROGRAM,
STREAM_MPEG2_TRANSPORT,
STREAM_ELEMENTARY
} STREAM_FORMAT, *LPSTREAM_FORMAT;
// Video Connectors
typedef enum
{
VIDEO_CONNECTOR_COMPOSITE = 2,
VIDEO_CONNECTOR_SVIDEO,
} VIDEO_CONNECTOR, *LPVIDEO_CONNECTOR;
// Encoding Compatibility Mode
typedef enum
{
COMPATIBILITY_CUSTOM = 0x0001, // Not used
COMPATIBILITY_VCD = 0x0002, // Video CD
COMPATIBILITY_SVCD = 0x0004, // Super Video CD
COMPATIBILITY_DVD = 0x0008, // DVD
COMPATIBILITY_DVR = 0x0010, // DVR (Custom)
COMPATIBILITY_MPEG_1 = 0x0020, // MPEG-1
COMPATIBILITY_MPEG_2 = 0x0040 // MPEG-2
} COMPATIBILITY_MODE, *LPCOMPATIBILITY_MODE;
// Multiplexer Format
typedef enum
{
MUX_MPEG1_SYSTEM = 1,
MUX_MPEG2_PROGRAM,
MUX_MPEG2_TRANSPORT,
MUX_MPEG2_PES,
MUX_MPEG_ELEMENTARY
} MUX_FORMAT, *LPMUX_FORMAT;
// Video Input Parameters
typedef struct tagVideoInputParams
{
VIDEO_STANDARD bStandard;
VIDEO_CONNECTOR bConnector;
DWORD dwBitRate; // In kbs
} VIDEO_INPUT_PARAMS, *LPVIDEO_INPUT_PARAMS;
// Audio Format Parameters
typedef struct tagAudioFormatParams
{
AUDIO_FORMAT bFormat;
AUDIO_SAMPLING bSampling;
AUDIO_MODE bMode;
DWORD dwBitRate; // In kbs
BOOL bRecordCRC;
} AUDIO_FORMAT_PARAMS, *LPAUDIO_FORMAT_PARAMS;
// Multiplexer Parameters
typedef struct tagMultiplexerParams
{
MUX_FORMAT MuxFormat;
} MUX_PARAMS, *LPMUX_PARAMS;
// Capture Parameters Structure
typedef struct tagCaptureParams
{
LPTSTR lpVideoFile; // Video file path
LPTSTR lpAudioFile; // Audio file path (NULL if none)
BOOL bOverride; // Override files?
} CAPTURE_PARAMS, *LPCAPTURE_PARAMS;
typedef struct tagCaptureLength
{
DWORD dwVideo; // Captured video file size in KB
DWORD dwAudio; // Captured audio file size in KB
} CAPTURE_LENGTH, *LPCAPTURE_LENGTH;
#endif // _RMEncoder_Data
interface IRMEncoder : public IUnknown
{
// IUnknown methods.
STDMETHOD(Capture) (LPCAPTURE_PARAMS lpCapParams) PURE;
STDMETHOD(GetCapturedLength) (LPCAPTURE_LENGTH lpCapLength) PURE;
STDMETHOD(GetCaptureVideoFile) (BSTR lpszVidFile) PURE;
STDMETHOD(GetCaptureAudioFile) (BSTR lpszAudFile) PURE;
STDMETHOD(GetStreamFormat) (LPMUX_PARAMS lpbStreamFormat) PURE;
STDMETHOD(GetVideoInputParams) (LPVIDEO_INPUT_PARAMS lpVidParams) PURE;
STDMETHOD(GetAudioFormatParams) (LPAUDIO_FORMAT_PARAMS lpAudParams) PURE;
STDMETHOD(GetCompatibilityMode) (LPCOMPATIBILITY_MODE lpMode) PURE;
STDMETHOD(GetSupportedCompatibilityModes) (LPDWORD lpdwModes) PURE;
STDMETHOD(IsSetToPlay) (LPBOOL lpPlayback) PURE;
STDMETHOD(Preview) (void) PURE;
STDMETHOD(SetToPlay) (BOOL bPlayback) PURE;
STDMETHOD(SetVideoConnector) (VIDEO_CONNECTOR VidConn) PURE;
STDMETHOD(SetVideoStandard) (VIDEO_STANDARD VidStd) PURE;
STDMETHOD(SetAudioFormat) (AUDIO_FORMAT AFormat) PURE;
STDMETHOD(SetAudioBitrate) (DWORD dwRate) PURE;
STDMETHOD(SetAudioSamplingRate) (AUDIO_SAMPLING ASamplingRate) PURE;
STDMETHOD(SetAudioMode) (AUDIO_MODE AMode) PURE;
STDMETHOD(SetAudioCRC) (BOOL bRecord) PURE;
STDMETHOD(SetStreamFormat) (STREAM_FORMAT bStreamFormat) PURE;
STDMETHOD(SetAudioFormatParams) (LPAUDIO_FORMAT_PARAMS lpAudParams) PURE;
STDMETHOD(SetCompatibilityMode) (COMPATIBILITY_MODE Mode) PURE;
STDMETHOD(ShowEncoderPropertiesDialog) (const HWND hwndParent) PURE;
};
/////////////////////////////////////////////////////////////////////////////
//
// Miscelaneous error codes returned by interface methods
// Attempt to Eject / Close Tray on non-removable drives
#define RME_NO_DRIVE_SELECTED 0xFFFF0010
// Given drive is not available in the system
#define RME_DRIVE_NOT_AVAILABLE 0xFFFF0011
// No window has been specified for status notification
#define RME_NO_NOTIFY_WINDOW 0xFFFF0012
// Invalid window handle
#define RME_INVALID_WINDOW 0xFFFF0013
#endif // !defined(AFX_RMNAVIF_H__2D72A745_906D_11D3_B952_E7A67C993800__INCLUDED_)
LPBSTR对应Object Pas中的什么类型?