media_foundation_video_stream.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // Copyright 2019 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef MEDIA_RENDERERS_WIN_MEDIA_FOUNDATION_VIDEO_STREAM_H_
  5. #define MEDIA_RENDERERS_WIN_MEDIA_FOUNDATION_VIDEO_STREAM_H_
  6. #include <mfapi.h>
  7. #include <mfidl.h>
  8. #include "media/renderers/win/media_foundation_stream_wrapper.h"
  9. #include "media/media_buildflags.h"
  10. namespace media {
  11. // The common video stream.
  12. class MediaFoundationVideoStream : public MediaFoundationStreamWrapper {
  13. public:
  14. static HRESULT Create(int stream_id,
  15. IMFMediaSource* parent_source,
  16. DemuxerStream* demuxer_stream,
  17. std::unique_ptr<MediaLog> media_log,
  18. MediaFoundationStreamWrapper** stream_out);
  19. bool IsEncrypted() const override;
  20. protected:
  21. HRESULT GetMediaType(IMFMediaType** media_type_out) override;
  22. };
  23. #if BUILDFLAG(USE_PROPRIETARY_CODECS)
  24. // The H264 specific video stream.
  25. class MediaFoundationH264VideoStream : public MediaFoundationVideoStream {
  26. protected:
  27. HRESULT GetMediaType(IMFMediaType** media_type_out) override;
  28. bool AreFormatChangesEnabled() override;
  29. };
  30. #endif // BUILDFLAG(USE_PROPRIETARY_CODECS)
  31. #if BUILDFLAG(ENABLE_PLATFORM_HEVC) || BUILDFLAG(ENABLE_PLATFORM_DOLBY_VISION)
  32. // The HEVC specific video stream.
  33. class MediaFoundationHEVCVideoStream : public MediaFoundationVideoStream {
  34. protected:
  35. bool AreFormatChangesEnabled() override;
  36. };
  37. #endif // BUILDFLAG(ENABLE_PLATFORM_HEVC) ||
  38. // BUILDFLAG(ENABLE_PLATFORM_DOLBY_VISION)
  39. } // namespace media
  40. #endif // MEDIA_RENDERERS_WIN_MEDIA_FOUNDATION_VIDEO_STREAM_H_