ContentProvider.idl 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. /******************************************************************************
  2. |* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  3. |* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  4. |* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  5. |* PARTICULAR PURPOSE.
  6. |*
  7. |* Copyright 1995-2005 Nero AG and its licensors. All Rights Reserved.
  8. |*-----------------------------------------------------------------------------
  9. |* NeroSDK / NeroVisionAPI
  10. |*
  11. |* PROGRAM: ContentProvider.idl
  12. |*
  13. |* PURPOSE: Interface definition of the NeroVision API
  14. ******************************************************************************/
  15. typedef [helpstring("The type of virtual content.")]
  16. enum
  17. {
  18. AudioStream = 0,
  19. VideoStream
  20. } ContentType;
  21. [
  22. local, uuid(0C91A72C-DCFB-4e45-800F-071D385B980B),
  23. helpstring("Base interface for feeding virtual content into the NeroVision API")
  24. ]
  25. interface IContentProvider : IUnknown
  26. {
  27. [propget, helpstring("Gets the type of content provided")]
  28. HRESULT ProvidedContentType([out, retval] ContentType* pCT);
  29. };
  30. [
  31. local, uuid(94174BB6-F818-47ee-9C92-61B548E88C19),
  32. helpstring("Interface for creating a content provider for a given content-id")
  33. ]
  34. interface IContentResolver : IUnknown
  35. {
  36. HRESULT ResolveContent([in] BSTR id, [out, retval] IContentProvider** ppCP);
  37. };
  38. typedef [helpstring("The supported audio formats for virtual content")]
  39. enum
  40. {
  41. AudioFormat_PCM = 0
  42. } AudioFormat;
  43. typedef [helpstring("The supported video formats for virtual content")]
  44. enum
  45. {
  46. VideoFormat_YV12 = 0,
  47. VideoFormat_RGB32,
  48. VideoFormat_RGB24
  49. } VideoFormat;
  50. typedef [helpstring("The frame structure of the video content")]
  51. enum
  52. {
  53. FrameStructure_Progressive = 0,
  54. FrameStructure_InterlacedTopFirst,
  55. FrameStructure_InterlacedBottomFirst
  56. } FrameStructure;
  57. typedef [helpstring("Description of virtual video content")]
  58. struct
  59. {
  60. VideoFormat viFormat;
  61. FrameStructure viStructure;
  62. int viWidth;
  63. int viHeight;
  64. hyper viTimePerFrame;
  65. int viAspectX;
  66. int viAspectY;
  67. } VideoInfo;
  68. typedef [helpstring("Description of virtual audio content")]
  69. struct
  70. {
  71. AudioFormat aiFormat;
  72. int aiSamplesPerSec;
  73. short aiBitsPerSample;
  74. short aiNumChannels;
  75. } AudioInfo;
  76. [
  77. local, uuid(7C904E33-9175-4c73-A142-8C4DA7BBEEB8),
  78. helpstring("Description of virtual video content")
  79. ]
  80. interface IAVStreamSample: IUnknown
  81. {
  82. HRESULT GetTime([out] hyper* start, [out] hyper* stop);
  83. HRESULT GetData([out] DWORD* size, [out] void const** dataPtr);
  84. };
  85. [
  86. local, uuid(FAC437C8-DACF-415e-B485-B9BEEDB0465C),
  87. helpstring("Interface of an audio or video stream")
  88. ]
  89. interface IAVStream : IUnknown
  90. {
  91. HRESULT SetPosition([in] const hyper* pos);
  92. HRESULT GetSample([out, retval] IAVStreamSample** sample);
  93. };
  94. [
  95. local, uuid(E926B553-F943-4d69-934F-F66412451D18),
  96. helpstring("Base interface for feeding audio or video content into the NeroVision API")
  97. ]
  98. interface IAVStreamProvider : IContentProvider
  99. {
  100. HRESULT GetStream([out, retval] IAVStream** stream);
  101. HRESULT GetDuration([out, retval] hyper* dur);
  102. };
  103. [
  104. local, uuid(002BA3CC-9C42-4f8c-B1B4-90CAB2AB903F),
  105. helpstring("Interface for feeding audio content into the NeroVision API")
  106. ]
  107. interface IAudioStreamProvider : IAVStreamProvider
  108. {
  109. HRESULT GetInfo([out] AudioInfo* info);
  110. };
  111. [
  112. local, uuid(A4C139CF-6062-4df4-AD16-882EAAD1CCB9),
  113. helpstring("Interface for feeding video content into the NeroVision API")
  114. ]
  115. interface IVideoStreamProvider : IAVStreamProvider
  116. {
  117. HRESULT GetInfo([out] VideoInfo* info);
  118. };