ITrackInfo.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:3k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. #pragma once
  2. typedef enum TrackType {
  3. TypeVideo = 1,
  4. TypeAudio = 2,
  5. TypeComplex = 3,
  6. TypeLogo = 0x10,
  7. TypeSubtitle = 0x11,
  8. TypeControl = 0x20
  9. };
  10. #pragma pack(push, 1)
  11. struct TrackElement {
  12.     WORD Size; // Size of this structure
  13.     BYTE Type; // See TrackType
  14. BOOL FlagDefault; // Set if the track is the default for its TrackType.
  15. BOOL FlagLacing; // Set if the track may contain blocks using lacing.
  16. UINT MinCache; // The minimum number of frames a player should be able to cache during playback.
  17. UINT MaxCache; // The maximum cache size required to store referenced frames in and the current frame. 0 means no cache is needed.
  18. CHAR Language[4]; // Specifies the language of the track, in the ISO-639-2 form. (end with '')
  19. };
  20. struct TrackExtendedInfoVideo {
  21. WORD Size; // Size of this structure
  22. BOOL Interlaced; // Set if the video is interlaced.
  23. UINT PixelWidth; // Width of the encoded video frames in pixels.
  24. UINT PixelHeight; // Height of the encoded video frames in pixels.
  25. UINT DisplayWidth; // Width of the video frames to display.
  26. UINT DisplayHeight; // Height of the video frames to display.
  27. BYTE DisplayUnit; // Type of the unit for DisplayWidth/Height (0: pixels, 1: centimeters, 2: inches).
  28. BYTE AspectRatioType; // Specify the possible modifications to the aspect ratio (0: free resizing, 1: keep aspect ratio, 2: fixed).
  29. };
  30. struct TrackExtendedInfoAudio {
  31. WORD Size; // Size of this structure
  32. FLOAT SamplingFreq; // Sampling frequency in Hz.
  33. FLOAT OutputSamplingFrequency; // Real output sampling frequency in Hz (used for SBR techniques).
  34. UINT Channels; // Numbers of channels in the track.
  35. UINT BitDepth; // Bits per sample, mostly used for PCM.
  36. };
  37. #pragma pack(pop)
  38. [uuid("03E98D51-DDE7-43aa-B70C-42EF84A3A23D")]
  39. interface ITrackInfo : public IUnknown
  40. {
  41. STDMETHOD_(UINT, GetTrackCount) () = 0;
  42. // param aTrackIdx the track index (from 0 to GetTrackCount()-1)
  43. STDMETHOD_(BOOL, GetTrackInfo) (UINT aTrackIdx, struct TrackElement* pStructureToFill) = 0;
  44. // Get an extended information struct relative to the track type
  45. STDMETHOD_(BOOL, GetTrackExtendedInfo) (UINT aTrackIdx, void* pStructureToFill) = 0;
  46. STDMETHOD_(BSTR, GetTrackCodecID) (UINT aTrackIdx) = 0;
  47. STDMETHOD_(BSTR, GetTrackName) (UINT aTrackIdx) = 0;
  48. STDMETHOD_(BSTR, GetTrackCodecName) (UINT aTrackIdx) = 0;
  49. STDMETHOD_(BSTR, GetTrackCodecInfoURL) (UINT aTrackIdx) = 0;
  50. STDMETHOD_(BSTR, GetTrackCodecDownloadURL) (UINT aTrackIdx) = 0;
  51. };