/****************************************************************************** |* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF |* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO |* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A |* PARTICULAR PURPOSE. |* |* Copyright 1995-2005 Nero AG and its licensors. All Rights Reserved. |*----------------------------------------------------------------------------- |* NeroSDK / NeroVisionAPI |* |* PROGRAM: MediaAnalyzer.idl |* |* PURPOSE: Interface definition of the NeroVision API ******************************************************************************/ [ local, uuid(B8A9267B-F8EB-4aef-ACFA-BF18F43A32FD), helpstring("Attributes and methods for audio & video of a single media") ] interface IMediaInfo : IUnknown { typedef [helpstring("MediaInfo file type")] enum { Invalid = 0, Other, MPEG1, MPEG2, DV_DV, DV_AVI1, DV_AVI2 } FileType; [propget, helpstring("Media file type")] HRESULT FileType([out, retval] FileType* ft); [propget, helpstring("Duration in seconds")] HRESULT Duration([out, retval] double* sec); [propget, helpstring("Whether the media has at least one audio stream")] HRESULT HasAudio([out, retval] boolean* has); [propget, helpstring("Whether the media has a video stream")] HRESULT HasVideo([out, retval] boolean* has); [propget, helpstring("Media width")] HRESULT Width([out, retval] int* w); [propget, helpstring("Media height")] HRESULT Height([out, retval] int* h); [propget, helpstring("Media aspect (x/y)")] HRESULT AspectXByY([out, retval] double* aspect); [propget, helpstring("Frame time in seconds")] HRESULT FrameRate([out, retval] double* rate); [helpstring("Retrieves the first (non-empty) thumbnail of the media. The returned DIB handle must be freed by the caller.")] HRESULT GetThumbnail([in] boolean ensureNotEmpty, [out, retval] HANDLE_PTR* hDib); [helpstring("Retrieves a frame of the media at a given position. The returned DIB handle must be freed by the caller.")] HRESULT GetImage([in] double posSec, [out, retval] HANDLE_PTR* hDib); }; [ local, uuid(7B64280B-4277-43dd-B753-92A1315046B0), helpstring("Attributes and methods for a physical file, which may contain several segments.") ] interface IFileInfo : IUnknown { [propget, helpstring("The associated file's path and name")] HRESULT FilePath([out, retval] BSTR* filepath); [propget, helpstring("Gets the number of segments in the file")] HRESULT NumSegments([out, retval] int* numSeg); [helpstring("Gets the MediaInfo for one segment of the file")] HRESULT GetSegmentMediaInfo([in] int segIndex, [out, retval] IMediaInfo** pMediaInfo); }; [ local, uuid(9CC2383F-485F-4593-983D-4686DA5CA265), helpstring("Interface for analyzing one or more media files") ] interface IMediaAnalyzer : IUnknown { [helpstring("Add a file to be analyzed. The resulting IFileInfo is filled after calling AnalyzeFiles().")] HRESULT AddFile([in] BSTR filepath, [out, retval] IFileInfo** fileInfo); [helpstring("Analyzes all files previously added by AddFile().")] HRESULT AnalyzeFiles([in] IProgressCallback* pCallback, [out, retval] boolean* pbSuccess); [propget, helpstring("Gets the error object of the last called function")] HRESULT LastError([out, retval] IError** pError); }; [ uuid(AEF4E74F-7767-4fed-B4A8-2F9A0A713D26), helpstring("Media analyzer object"), ] coclass MediaAnalyzer { [default] interface IMediaAnalyzer; };