#ifndef MEDIA_RENDERERS_WIN_MEDIA_FOUNDATION_VIDEO_STREAM_H_
#define MEDIA_RENDERERS_WIN_MEDIA_FOUNDATION_VIDEO_STREAM_H_
#include <mfapi.h>
#include <mfidl.h>
#include "media/renderers/win/media_foundation_stream_wrapper.h"
#include "media/media_buildflags.h"
namespace media {
class MediaFoundationVideoStream : public MediaFoundationStreamWrapper {
public:
static HRESULT Create(int stream_id,
IMFMediaSource* parent_source,
DemuxerStream* demuxer_stream,
std::unique_ptr<MediaLog> media_log,
MediaFoundationStreamWrapper** stream_out);
bool IsEncrypted() const override;
protected:
HRESULT GetMediaType(IMFMediaType** media_type_out) override;
};
#if BUILDFLAG(USE_PROPRIETARY_CODECS)
class MediaFoundationH264VideoStream : public MediaFoundationVideoStream {
protected:
HRESULT GetMediaType(IMFMediaType** media_type_out) override;
bool AreFormatChangesEnabled() override;
};
#endif
#if BUILDFLAG(ENABLE_PLATFORM_HEVC) || BUILDFLAG(ENABLE_PLATFORM_DOLBY_VISION)
class MediaFoundationHEVCVideoStream : public MediaFoundationVideoStream {
protected:
HRESULT GetMediaType(IMFMediaType** media_type_out) override;
bool AreFormatChangesEnabled() override;
};
#endif
}
#endif