WebCoreAVFResourceLoader.h [plain text]
#pragma once
#if ENABLE(VIDEO) && USE(AVFOUNDATION)
#include <wtf/Noncopyable.h>
#include <wtf/Ref.h>
#include <wtf/RefCounted.h>
#include <wtf/RetainPtr.h>
#include <wtf/WeakPtr.h>
OBJC_CLASS AVAssetResourceLoadingRequest;
namespace WebCore {
class CachedResourceMediaLoader;
class MediaPlayerPrivateAVFoundationObjC;
class PlatformResourceMediaLoader;
class ResourceError;
class ResourceResponse;
class SharedBuffer;
class WebCoreAVFResourceLoader : public RefCounted<WebCoreAVFResourceLoader> {
WTF_MAKE_NONCOPYABLE(WebCoreAVFResourceLoader); WTF_MAKE_FAST_ALLOCATED;
public:
static Ref<WebCoreAVFResourceLoader> create(MediaPlayerPrivateAVFoundationObjC* parent, AVAssetResourceLoadingRequest *);
virtual ~WebCoreAVFResourceLoader();
void startLoading();
void stopLoading();
void invalidate();
private:
WebCoreAVFResourceLoader(MediaPlayerPrivateAVFoundationObjC* parent, AVAssetResourceLoadingRequest *);
friend class CachedResourceMediaLoader;
friend class PlatformResourceMediaLoader;
void responseReceived(const ResourceResponse&);
void loadFailed(const ResourceError&);
void loadFinished();
void newDataStoredInSharedBuffer(SharedBuffer&);
MediaPlayerPrivateAVFoundationObjC* m_parent;
RetainPtr<AVAssetResourceLoadingRequest> m_avRequest;
std::unique_ptr<CachedResourceMediaLoader> m_resourceMediaLoader;
WeakPtr<PlatformResourceMediaLoader> m_platformMediaLoader;
size_t m_responseOffset { 0 };
};
}
#endif // ENABLE(VIDEO) && USE(AVFOUNDATION)