unit DVD; INTERFACE TYPE TDVD = CLASS; TVideoTrack = CLASS; TLanguageTrack= CLASS CONSTRUCTOR Create(VideoTrack : TVideoTrack); PRIVATE fVideoTrack : TVideoTrack; PUBLIC PROPERTY VideoTrack : TVideoTrack Read fVideoTrack; FUNCTION Language : STRING; // The two-character code for a language name used on DVDs // END; TSubtitleTrack= CLASS(TLanguageTrack) END; TAudioType = (atDolbyDigital,atDTS,atMPEG,atLPCM); TAudioTrack = CLASS(TLanguageTrack) PUBLIC FUNCTION AudioFormat : TAudioType; FUNCTION MainChannels : BYTE; // DTS and Dolby Digital 5.1 returns 5 here // FUNCTION Subwoofer : BOOLEAN; // and TRUE here // END; TVideoEncoding= (veMPEG1,veMPEG2); TVideoTrack = CLASS CONSTRUCTOR Create(DVD : TDVD); PRIVATE fDVD : TDVD; fAudio : ARRAY OF TAudioTrack; fSubtitle : ARRAY OF TSubtitleTrack; PRIVATE FUNCTION GetAudioTrack(TrackNo : Cardinal) : TAudioTrack; FUNCTION GetSubtitleTrack(TrackNo : Cardinal) : TSubtitleTrack; PUBLIC PROPERTY DVD : TDVD Read fDVD; FUNCTION Encoding : TVideoEncoding; FUNCTION Anamorphic : BOOLEAN; FUNCTION Width : Cardinal; // 352, 704 or 720 (and perhaps 480 and 544) // FUNCTION Height : Cardinal; // 240, 288, 480 or 576 // FUNCTION Duration : Double; // In seconds and milliseconds // FUNCTION FramesPerSecond : Double; // 23.976, 24.000, 25.000, 29.997 or 30.000 // FUNCTION FrameCount : Cardinal; FUNCTION AudioTracks : Cardinal; FUNCTION SubtitleTracks : Cardinal; PROPERTY AudioTrack[TrackNo : Cardinal] : TAudioTrack Read GetAudioTrack; // Indexed 1..AudioTracks // PROPERTY SubtitleTrack[TrackNo : Cardinal] : TSubtitleTrack Read GetSubtitleTrack; // Indexed 1..SubtitleTracks // END; TDVD = CLASS CONSTRUCTOR Create(CONST Dir : STRING); PRIVATE fVideo : ARRAY OF TVideoTrack; PRIVATE FUNCTION GetVideoTrack(TrackNo : Cardinal) : TVideoTrack; PUBLIC FUNCTION VideoTracks : Cardinal; PROPERTY VideoTrack[TrackNo : Cardinal] : TVideoTrack Read GetVideoTrack; default; // Indexed 1..VideoTracks // END; IMPLEMENTATION { TLanguageTrack } constructor TLanguageTrack.Create(VideoTrack: TVideoTrack); begin end; function TLanguageTrack.Language: STRING; begin end; { TAudioTrack } function TAudioTrack.AudioFormat: TAudioType; begin end; function TAudioTrack.MainChannels: BYTE; begin end; function TAudioTrack.Subwoofer: BOOLEAN; begin end; { TVideoTrack } function TVideoTrack.Anamorphic: BOOLEAN; begin end; function TVideoTrack.AudioTracks: Cardinal; begin end; constructor TVideoTrack.Create(DVD: TDVD); begin end; function TVideoTrack.Duration: Double; begin end; function TVideoTrack.Encoding: TVideoEncoding; begin end; function TVideoTrack.FrameCount: Cardinal; begin end; function TVideoTrack.FramesPerSecond: Double; begin end; function TVideoTrack.GetAudioTrack(TrackNo: Cardinal): TAudioTrack; begin end; function TVideoTrack.GetSubtitleTrack(TrackNo: Cardinal): TSubtitleTrack; begin end; function TVideoTrack.Height: Cardinal; begin end; function TVideoTrack.SubtitleTracks: Cardinal; begin end; function TVideoTrack.Width: Cardinal; begin end; { TDVD } constructor TDVD.Create(const Dir: STRING); begin end; function TDVD.GetVideoTrack(TrackNo: Cardinal): TVideoTrack; begin end; function TDVD.VideoTracks: Cardinal; begin end; END.