MediaSampleByteRange.h [plain text]
#pragma once
#if ENABLE(WEBM_FORMAT_READER)
#include <WebCore/MediaSampleAVFObjC.h>
#include <pal/spi/cocoa/MediaToolboxSPI.h>
#include <wtf/MediaTime.h>
#include <wtf/RetainPtr.h>
namespace WebKit {
class MediaSampleByteRange final : public WebCore::MediaSampleAVFObjC {
public:
static Ref<MediaSampleByteRange> create(WebCore::MediaSample& sample, MTPluginByteSourceRef byteSource, uint64_t trackID)
{
return adoptRef(*new MediaSampleByteRange(sample, byteSource, trackID));
}
MediaTime presentationTime() const final { return m_presentationTime; }
MediaTime decodeTime() const final { return m_decodeTime; }
MediaTime duration() const final { return m_duration; }
size_t sizeInBytes() const final { return m_sizeInBytes; }
FloatSize presentationSize() const final { return m_presentationSize; }
SampleFlags flags() const final { return m_flags; }
Optional<ByteRange> byteRange() const final { return m_byteRange; }
AtomString trackID() const final;
PlatformSample platformSample() final;
void offsetTimestampsBy(const MediaTime&) final;
void setTimestamps(const MediaTime&, const MediaTime&) final;
private:
MediaSampleByteRange(MediaSample&, MTPluginByteSourceRef, uint64_t trackID);
MediaTime m_presentationTime;
MediaTime m_decodeTime;
MediaTime m_duration;
size_t m_sizeInBytes;
FloatSize m_presentationSize;
SampleFlags m_flags;
uint64_t m_trackID;
Optional<ByteRange> m_byteRange;
RetainPtr<MTPluginByteSourceRef> m_byteSource;
RetainPtr<CMFormatDescriptionRef> m_formatDescription;
};
}
#endif // ENABLE(WEBM_FORMAT_READER)