|
Lines 78-84
const PlatformMedia NoPlatformMedia = { PlatformMedia::None, {0} };
a/Source/WebCore/platform/graphics/MediaPlayer.cpp_sec1
|
| 78 |
|
78 |
|
| 79 |
class NullMediaPlayerPrivate : public MediaPlayerPrivateInterface { |
79 |
class NullMediaPlayerPrivate : public MediaPlayerPrivateInterface { |
| 80 |
public: |
80 |
public: |
| 81 |
NullMediaPlayerPrivate(MediaPlayer*) { } |
81 |
explicit NullMediaPlayerPrivate(MediaPlayer*) { } |
| 82 |
|
82 |
|
| 83 |
virtual void load(const String&) { } |
83 |
virtual void load(const String&) { } |
| 84 |
#if ENABLE(MEDIA_SOURCE) |
84 |
#if ENABLE(MEDIA_SOURCE) |
|
Lines 144-182
public:
a/Source/WebCore/platform/graphics/MediaPlayer.cpp_sec2
|
| 144 |
#endif |
144 |
#endif |
| 145 |
}; |
145 |
}; |
| 146 |
|
146 |
|
| 147 |
static PassOwnPtr<MediaPlayerPrivateInterface> createNullMediaPlayer(MediaPlayer* player) |
|
|
| 148 |
{ |
| 149 |
return adoptPtr(new NullMediaPlayerPrivate(player)); |
| 150 |
} |
| 151 |
|
| 152 |
|
147 |
|
| 153 |
// engine support |
148 |
// engine support |
| 154 |
|
149 |
|
| 155 |
struct MediaPlayerFactory { |
150 |
struct MediaPlayerFactory { |
| 156 |
WTF_MAKE_NONCOPYABLE(MediaPlayerFactory); WTF_MAKE_FAST_ALLOCATED; |
151 |
WTF_MAKE_NONCOPYABLE(MediaPlayerFactory); WTF_MAKE_FAST_ALLOCATED; |
| 157 |
public: |
152 |
public: |
| 158 |
MediaPlayerFactory(CreateMediaEnginePlayer constructor, MediaEngineSupportedTypes getSupportedTypes, MediaEngineSupportsType supportsTypeAndCodecs, |
153 |
MediaPlayerFactory(MediaEnginePlayerType playerType, MediaEngineSupportedTypes getSupportedTypes, MediaEngineSupportsType supportsTypeAndCodecs, |
| 159 |
MediaEngineGetSitesInMediaCache getSitesInMediaCache, MediaEngineClearMediaCache clearMediaCache, MediaEngineClearMediaCacheForSite clearMediaCacheForSite, MediaEngineSupportsKeySystem supportsKeySystem) |
154 |
MediaEngineGetSitesInMediaCache getSitesInMediaCache, MediaEngineClearMediaCache clearMediaCache, MediaEngineClearMediaCacheForSite clearMediaCacheForSite, MediaEngineSupportsKeySystem supportsKeySystem) |
| 160 |
: constructor(constructor) |
155 |
: playerType(playerType) |
| 161 |
, getSupportedTypes(getSupportedTypes) |
156 |
, getSupportedTypes(getSupportedTypes) |
| 162 |
, supportsTypeAndCodecs(supportsTypeAndCodecs) |
157 |
, supportsTypeAndCodecs(supportsTypeAndCodecs) |
| 163 |
, getSitesInMediaCache(getSitesInMediaCache) |
158 |
, getSitesInMediaCache(getSitesInMediaCache) |
| 164 |
, clearMediaCache(clearMediaCache) |
159 |
, clearMediaCache(clearMediaCache) |
| 165 |
, clearMediaCacheForSite(clearMediaCacheForSite) |
160 |
, clearMediaCacheForSite(clearMediaCacheForSite) |
| 166 |
, supportsKeySystem(supportsKeySystem) |
161 |
, supportsKeySystem(supportsKeySystem) |
| 167 |
{ |
162 |
{ |
| 168 |
} |
163 |
} |
| 169 |
|
164 |
|
| 170 |
CreateMediaEnginePlayer constructor; |
165 |
MediaEnginePlayerType playerType; |
| 171 |
MediaEngineSupportedTypes getSupportedTypes; |
166 |
MediaEngineSupportedTypes getSupportedTypes; |
| 172 |
MediaEngineSupportsType supportsTypeAndCodecs; |
167 |
MediaEngineSupportsType supportsTypeAndCodecs; |
| 173 |
MediaEngineGetSitesInMediaCache getSitesInMediaCache; |
168 |
MediaEngineGetSitesInMediaCache getSitesInMediaCache; |
| 174 |
MediaEngineClearMediaCache clearMediaCache; |
169 |
MediaEngineClearMediaCache clearMediaCache; |
| 175 |
MediaEngineClearMediaCacheForSite clearMediaCacheForSite; |
170 |
MediaEngineClearMediaCacheForSite clearMediaCacheForSite; |
| 176 |
MediaEngineSupportsKeySystem supportsKeySystem; |
171 |
MediaEngineSupportsKeySystem supportsKeySystem; |
|
|
172 |
|
| 173 |
std::unique_ptr<MediaPlayerPrivateInterface> createMediaPlayer(MediaPlayer* player) |
| 174 |
{ |
| 175 |
switch (playerType) { |
| 176 |
case NullMediaPlayer: |
| 177 |
return std::make_unique<NullMediaPlayerPrivate>(player); |
| 178 |
#if PLATFORM(WIN) && ENABLE(VIDEO) && USE(AVFOUNDATION) |
| 179 |
case AVFoundationCFPlayer: |
| 180 |
return std::make_unique<MediaPlayerPrivateAVFoundationCF>(player); |
| 181 |
#endif |
| 182 |
#if ENABLE(VIDEO) && USE(AVFOUNDATION) |
| 183 |
case AVFoundationObjCPlayer: |
| 184 |
return std::make_unique<MediaPlayerPrivateAVFoundationObjC>(player); |
| 185 |
#endif |
| 186 |
#if ENABLE(MEDIA_SOURCE) && USE(AVFOUNDATION) |
| 187 |
case MediaSourceAVFObjCPlayer: |
| 188 |
return std::make_unique<MediaPlayerPrivateMediaSourceAVFObjC>(player); |
| 189 |
#endif |
| 190 |
#if ENABLE(VIDEO) && USE(GSTREAMER) |
| 191 |
case GStreamerPlayer: |
| 192 |
return std::make_unique<MediaPlayerPrivateGStreamer>(player); |
| 193 |
#endif |
| 194 |
#if ENABLE(VIDEO) && PLATFORM(MAC) |
| 195 |
case QTKitPlayer: |
| 196 |
return std::make_unique<MediaPlayerPrivateQTKit>(player); |
| 197 |
#endif |
| 198 |
#if USE(MEDIA_FOUNDATION) |
| 199 |
case MediaFoundationPlayer: |
| 200 |
return std::make_unique<MediaPlayerPrivateMediaFoundation>(player); |
| 201 |
#endif |
| 202 |
#if ENABLE(MEDIA_SOURCE) |
| 203 |
case MockMediaSourcePlayer: |
| 204 |
return std::make_unique<MockMediaPlayerMediaSource>(player); |
| 205 |
#endif |
| 206 |
default: |
| 207 |
ASSERT_NOT_REACHED(); |
| 208 |
return std::make_unique<NullMediaPlayerPrivate>(player); |
| 209 |
} |
| 210 |
} |
| 177 |
}; |
211 |
}; |
| 178 |
|
212 |
|
| 179 |
static void addMediaEngine(CreateMediaEnginePlayer, MediaEngineSupportedTypes, MediaEngineSupportsType, MediaEngineGetSitesInMediaCache, MediaEngineClearMediaCache, MediaEngineClearMediaCacheForSite, MediaEngineSupportsKeySystem); |
213 |
static void addMediaEngine(MediaEnginePlayerType, MediaEngineSupportedTypes, MediaEngineSupportsType, MediaEngineGetSitesInMediaCache, MediaEngineClearMediaCache, MediaEngineClearMediaCacheForSite, MediaEngineSupportsKeySystem); |
| 180 |
|
214 |
|
| 181 |
static MediaPlayerFactory* bestMediaEngineForSupportParameters(const MediaEngineSupportParameters&, MediaPlayerFactory* current = 0); |
215 |
static MediaPlayerFactory* bestMediaEngineForSupportParameters(const MediaEngineSupportParameters&, MediaPlayerFactory* current = 0); |
| 182 |
static MediaPlayerFactory* nextMediaEngine(MediaPlayerFactory* current); |
216 |
static MediaPlayerFactory* nextMediaEngine(MediaPlayerFactory* current); |
|
Lines 223-236
static Vector<MediaPlayerFactory*>& installedMediaEngines(RequeryEngineOptions r
a/Source/WebCore/platform/graphics/MediaPlayer.cpp_sec3
|
| 223 |
return installedEngines; |
257 |
return installedEngines; |
| 224 |
} |
258 |
} |
| 225 |
|
259 |
|
| 226 |
static void addMediaEngine(CreateMediaEnginePlayer constructor, MediaEngineSupportedTypes getSupportedTypes, MediaEngineSupportsType supportsType, |
260 |
static void addMediaEngine(MediaEnginePlayerType playerType, MediaEngineSupportedTypes getSupportedTypes, MediaEngineSupportsType supportsType, |
| 227 |
MediaEngineGetSitesInMediaCache getSitesInMediaCache, MediaEngineClearMediaCache clearMediaCache, MediaEngineClearMediaCacheForSite clearMediaCacheForSite, MediaEngineSupportsKeySystem supportsKeySystem) |
261 |
MediaEngineGetSitesInMediaCache getSitesInMediaCache, MediaEngineClearMediaCache clearMediaCache, MediaEngineClearMediaCacheForSite clearMediaCacheForSite, MediaEngineSupportsKeySystem supportsKeySystem) |
| 228 |
{ |
262 |
{ |
| 229 |
ASSERT(constructor); |
263 |
ASSERT(playerType); |
| 230 |
ASSERT(getSupportedTypes); |
264 |
ASSERT(getSupportedTypes); |
| 231 |
ASSERT(supportsType); |
265 |
ASSERT(supportsType); |
| 232 |
|
266 |
|
| 233 |
installedMediaEngines().append(new MediaPlayerFactory(constructor, getSupportedTypes, supportsType, getSitesInMediaCache, clearMediaCache, clearMediaCacheForSite, supportsKeySystem)); |
267 |
installedMediaEngines().append(new MediaPlayerFactory(playerType, getSupportedTypes, supportsType, getSitesInMediaCache, clearMediaCache, clearMediaCacheForSite, supportsKeySystem)); |
| 234 |
} |
268 |
} |
| 235 |
|
269 |
|
| 236 |
static const AtomicString& applicationOctetStream() |
270 |
static const AtomicString& applicationOctetStream() |
|
Lines 308-314
static MediaPlayerFactory* nextMediaEngine(MediaPlayerFactory* current)
a/Source/WebCore/platform/graphics/MediaPlayer.cpp_sec4
|
| 308 |
MediaPlayer::MediaPlayer(MediaPlayerClient& client) |
342 |
MediaPlayer::MediaPlayer(MediaPlayerClient& client) |
| 309 |
: m_client(client) |
343 |
: m_client(client) |
| 310 |
, m_reloadTimer(this, &MediaPlayer::reloadTimerFired) |
344 |
, m_reloadTimer(this, &MediaPlayer::reloadTimerFired) |
| 311 |
, m_private(createNullMediaPlayer(this)) |
345 |
, m_private(std::make_unique<NullMediaPlayerPrivate>(this)) |
| 312 |
, m_currentMediaEngine(0) |
346 |
, m_currentMediaEngine(0) |
| 313 |
, m_preload(Auto) |
347 |
, m_preload(Auto) |
| 314 |
, m_visible(false) |
348 |
, m_visible(false) |
|
Lines 409-415
void MediaPlayer::loadWithNextMediaEngine(MediaPlayerFactory* current)
a/Source/WebCore/platform/graphics/MediaPlayer.cpp_sec5
|
| 409 |
m_private = nullptr; |
443 |
m_private = nullptr; |
| 410 |
} else if (m_currentMediaEngine != engine) { |
444 |
} else if (m_currentMediaEngine != engine) { |
| 411 |
m_currentMediaEngine = engine; |
445 |
m_currentMediaEngine = engine; |
| 412 |
m_private = engine->constructor(this); |
446 |
m_private = engine->createMediaPlayer(this); |
| 413 |
m_client.mediaPlayerEngineUpdated(this); |
447 |
m_client.mediaPlayerEngineUpdated(this); |
| 414 |
m_private->setPrivateBrowsingMode(m_privateBrowsing); |
448 |
m_private->setPrivateBrowsingMode(m_privateBrowsing); |
| 415 |
m_private->setPreload(m_preload); |
449 |
m_private->setPreload(m_preload); |
|
Lines 426-432
void MediaPlayer::loadWithNextMediaEngine(MediaPlayerFactory* current)
a/Source/WebCore/platform/graphics/MediaPlayer.cpp_sec6
|
| 426 |
#endif |
460 |
#endif |
| 427 |
m_private->load(m_url.string()); |
461 |
m_private->load(m_url.string()); |
| 428 |
} else { |
462 |
} else { |
| 429 |
m_private = createNullMediaPlayer(this); |
463 |
m_private = std::make_unique<NullMediaPlayerPrivate>(this); |
| 430 |
m_client.mediaPlayerEngineUpdated(this); |
464 |
m_client.mediaPlayerEngineUpdated(this); |
| 431 |
m_client.mediaPlayerResourceNotSupported(this); |
465 |
m_client.mediaPlayerResourceNotSupported(this); |
| 432 |
} |
466 |
} |