/****************************************************************************** |* 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: ContentProvider.idl |* |* PURPOSE: Interface definition of the NeroVision API ******************************************************************************/ typedef [helpstring("The type of virtual content.")] enum { AudioStream = 0, VideoStream } ContentType; [ local, uuid(0C91A72C-DCFB-4e45-800F-071D385B980B), helpstring("Base interface for feeding virtual content into the NeroVision API") ] interface IContentProvider : IUnknown { [propget, helpstring("Gets the type of content provided")] HRESULT ProvidedContentType([out, retval] ContentType* pCT); }; [ local, uuid(94174BB6-F818-47ee-9C92-61B548E88C19), helpstring("Interface for creating a content provider for a given content-id") ] interface IContentResolver : IUnknown { HRESULT ResolveContent([in] BSTR id, [out, retval] IContentProvider** ppCP); }; typedef [helpstring("The supported audio formats for virtual content")] enum { AudioFormat_PCM = 0 } AudioFormat; typedef [helpstring("The supported video formats for virtual content")] enum { VideoFormat_YV12 = 0, VideoFormat_RGB32, VideoFormat_RGB24 } VideoFormat; typedef [helpstring("The frame structure of the video content")] enum { FrameStructure_Progressive = 0, FrameStructure_InterlacedTopFirst, FrameStructure_InterlacedBottomFirst } FrameStructure; typedef [helpstring("Description of virtual video content")] struct { VideoFormat viFormat; FrameStructure viStructure; int viWidth; int viHeight; hyper viTimePerFrame; int viAspectX; int viAspectY; } VideoInfo; typedef [helpstring("Description of virtual audio content")] struct { AudioFormat aiFormat; int aiSamplesPerSec; short aiBitsPerSample; short aiNumChannels; } AudioInfo; [ local, uuid(7C904E33-9175-4c73-A142-8C4DA7BBEEB8), helpstring("Description of virtual video content") ] interface IAVStreamSample: IUnknown { HRESULT GetTime([out] hyper* start, [out] hyper* stop); HRESULT GetData([out] DWORD* size, [out] void const** dataPtr); }; [ local, uuid(FAC437C8-DACF-415e-B485-B9BEEDB0465C), helpstring("Interface of an audio or video stream") ] interface IAVStream : IUnknown { HRESULT SetPosition([in] const hyper* pos); HRESULT GetSample([out, retval] IAVStreamSample** sample); }; [ local, uuid(E926B553-F943-4d69-934F-F66412451D18), helpstring("Base interface for feeding audio or video content into the NeroVision API") ] interface IAVStreamProvider : IContentProvider { HRESULT GetStream([out, retval] IAVStream** stream); HRESULT GetDuration([out, retval] hyper* dur); }; [ local, uuid(002BA3CC-9C42-4f8c-B1B4-90CAB2AB903F), helpstring("Interface for feeding audio content into the NeroVision API") ] interface IAudioStreamProvider : IAVStreamProvider { HRESULT GetInfo([out] AudioInfo* info); }; [ local, uuid(A4C139CF-6062-4df4-AD16-882EAAD1CCB9), helpstring("Interface for feeding video content into the NeroVision API") ] interface IVideoStreamProvider : IAVStreamProvider { HRESULT GetInfo([out] VideoInfo* info); };