VideoTrackPrivateAVFObjC.h [plain text]
#ifndef VideoTrackPrivateAVFObjC_h
#define VideoTrackPrivateAVFObjC_h
#if ENABLE(VIDEO_TRACK)
#include "VideoTrackPrivateAVF.h"
OBJC_CLASS AVAssetTrack;
OBJC_CLASS AVPlayerItem;
OBJC_CLASS AVPlayerItemTrack;
OBJC_CLASS AVMediaSelectionGroup;
OBJC_CLASS AVMediaSelectionOption;
namespace WebCore {
class AVTrackPrivateAVFObjCImpl;
class MediaSelectionOptionAVFObjC;
class VideoTrackPrivateAVFObjC final : public VideoTrackPrivateAVF {
WTF_MAKE_NONCOPYABLE(VideoTrackPrivateAVFObjC)
public:
static RefPtr<VideoTrackPrivateAVFObjC> create(AVPlayerItemTrack* track)
{
return adoptRef(new VideoTrackPrivateAVFObjC(track));
}
static RefPtr<VideoTrackPrivateAVFObjC> create(AVAssetTrack* track)
{
return adoptRef(new VideoTrackPrivateAVFObjC(track));
}
static RefPtr<VideoTrackPrivateAVFObjC> create(MediaSelectionOptionAVFObjC& option)
{
return adoptRef(new VideoTrackPrivateAVFObjC(option));
}
void setSelected(bool) override;
void setPlayerItemTrack(AVPlayerItemTrack*);
AVPlayerItemTrack* playerItemTrack();
void setAssetTrack(AVAssetTrack*);
AVAssetTrack* assetTrack();
void setMediaSelectonOption(MediaSelectionOptionAVFObjC&);
MediaSelectionOptionAVFObjC* mediaSelectionOption();
private:
explicit VideoTrackPrivateAVFObjC(AVPlayerItemTrack*);
explicit VideoTrackPrivateAVFObjC(AVAssetTrack*);
explicit VideoTrackPrivateAVFObjC(MediaSelectionOptionAVFObjC&);
void resetPropertiesFromTrack();
std::unique_ptr<AVTrackPrivateAVFObjCImpl> m_impl;
};
}
#endif // ENABLE(VIDEO_TRACK)
#endif // VideoTrackPrivateAVFObjC_h