VideoTrackPrivateMediaSourceAVFObjC.h [plain text]
#ifndef VideoTrackPrivateMediaSourceAVFObjC_h
#define VideoTrackPrivateMediaSourceAVFObjC_h
#include "IntSize.h"
#include "VideoTrackPrivateAVF.h"
#if ENABLE(MEDIA_SOURCE) && ENABLE(VIDEO_TRACK)
OBJC_CLASS AVAssetTrack;
OBJC_CLASS AVPlayerItemTrack;
namespace WebCore {
class AVTrackPrivateAVFObjCImpl;
class SourceBufferPrivateAVFObjC;
class VideoTrackPrivateMediaSourceAVFObjC final : public VideoTrackPrivateAVF {
WTF_MAKE_NONCOPYABLE(VideoTrackPrivateMediaSourceAVFObjC)
public:
static RefPtr<VideoTrackPrivateMediaSourceAVFObjC> create(AVAssetTrack* track, SourceBufferPrivateAVFObjC* parent)
{
return adoptRef(new VideoTrackPrivateMediaSourceAVFObjC(track, parent));
}
bool selected() const override;
void setSelected(bool) override;
void setAssetTrack(AVAssetTrack*);
AVAssetTrack* assetTrack() const;
int trackID() { return m_trackID; }
FloatSize naturalSize() const;
private:
explicit VideoTrackPrivateMediaSourceAVFObjC(AVAssetTrack*, SourceBufferPrivateAVFObjC* parent);
void resetPropertiesFromTrack();
std::unique_ptr<AVTrackPrivateAVFObjCImpl> m_impl;
SourceBufferPrivateAVFObjC* m_parent;
int m_trackID;
bool m_selected;
};
}
#endif // ENABLE(MEDIA_SOURCE) && ENABLE(VIDEO_TRACK)
#endif