Changeset 190020 in webkit


Ignore:
Timestamp:
Sep 19, 2015 5:43:08 PM (9 years ago)
Author:
eric.carlson@apple.com
Message:

Cleanup code that finds and loads a media engine
https://bugs.webkit.org/show_bug.cgi?id=149371

Reviewed by Darin Adler.

No new tests, no functional change.

  • Modules/mediastream/MediaStream.cpp:

(WebCore::MediaStream::setRegistry): New, set the registry.
(WebCore::MediaStream::lookup): New, lookup a url in the registry.

  • Modules/mediastream/MediaStream.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::loadResource): Restructure and simplify the code that tries the

different types of media engine so the code is easier to understand and modify.

(WebCore::HTMLMediaElement::createMediaPlayer): Clear m_mediaStreamSrcObject.

  • platform/graphics/MediaPlayer.cpp:

(WebCore::buildMediaEnginesVector): Add some whitespace to make it easier to read.
(WebCore::bestMediaEngineForSupportParameters): Also process mediastream and mediasource urls.
(WebCore::MediaPlayer::load): ASSERT if called when the reload timer is active.
(WebCore::MediaPlayer::loadWithNextMediaEngine): Also process mediastream and mediasource urls.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::supportsType): Don't test empty/null urls.

  • platform/mock/mediasource/MockMediaPlayerMediaSource.cpp:

(WebCore::MockMediaPlayerMediaSource::supportsType): Ditto.

Location:
trunk/Source/WebCore
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r190017 r190020  
     12015-09-19  Eric Carlson  <eric.carlson@apple.com>
     2
     3        Cleanup code that finds and loads a media engine
     4        https://bugs.webkit.org/show_bug.cgi?id=149371
     5
     6        Reviewed by Darin Adler.
     7
     8        No new tests, no functional change.
     9
     10        * Modules/mediastream/MediaStream.cpp:
     11        (WebCore::MediaStream::setRegistry): New, set the registry.
     12        (WebCore::MediaStream::lookup): New, lookup a url in the registry.
     13        * Modules/mediastream/MediaStream.h:
     14
     15        * html/HTMLMediaElement.cpp:
     16        (WebCore::HTMLMediaElement::loadResource): Restructure and simplify the code that tries the
     17          different types of media engine so the code is easier to understand and modify.
     18        (WebCore::HTMLMediaElement::createMediaPlayer): Clear m_mediaStreamSrcObject.
     19
     20        * platform/graphics/MediaPlayer.cpp:
     21        (WebCore::buildMediaEnginesVector): Add some whitespace to make it easier to read.
     22        (WebCore::bestMediaEngineForSupportParameters): Also process mediastream and mediasource urls.
     23        (WebCore::MediaPlayer::load): ASSERT if called when the reload timer is active.
     24        (WebCore::MediaPlayer::loadWithNextMediaEngine): Also process mediastream and mediasource urls.
     25
     26        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
     27        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::supportsType): Don't test empty/null urls.
     28
     29        * platform/mock/mediasource/MockMediaPlayerMediaSource.cpp:
     30        (WebCore::MockMediaPlayerMediaSource::supportsType): Ditto.
     31
    1322015-09-19  Chris Dumez  <cdumez@apple.com>
    233
  • trunk/Source/WebCore/Modules/mediastream/MediaStream.cpp

    r186640 r190020  
    22 * Copyright (C) 2011 Google Inc. All rights reserved.
    33 * Copyright (C) 2011, 2012, 2015 Ericsson AB. All rights reserved.
    4  * Copyright (C) 2013 Apple Inc. All rights reserved.
     4 * Copyright (C) 2013-2015 Apple Inc. All rights reserved.
    55 * Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies).
    66 *
     
    3636#include "MediaStreamTrackEvent.h"
    3737#include "RealtimeMediaSource.h"
     38#include "URL.h"
    3839#include <wtf/NeverDestroyed.h>
    3940
    4041namespace WebCore {
     42
     43static URLRegistry* s_registry;
     44
     45void MediaStream::setRegistry(URLRegistry& registry)
     46{
     47    ASSERT(!s_registry);
     48    s_registry = &registry;
     49}
     50
     51MediaStream* MediaStream::lookUp(const URL& url)
     52{
     53    if (!s_registry)
     54        return nullptr;
     55
     56    return static_cast<MediaStream*>(s_registry->lookup(url.string()));
     57}
    4158
    4259Ref<MediaStream> MediaStream::create(ScriptExecutionContext& context)
  • trunk/Source/WebCore/Modules/mediastream/MediaStream.h

    r187164 r190020  
    22 * Copyright (C) 2011 Google Inc. All rights reserved.
    33 * Copyright (C) 2011, 2015 Ericsson AB. All rights reserved.
    4  * Copyright (C) 2013 Apple Inc. All rights reserved.
     4 * Copyright (C) 2013-2015 Apple Inc. All rights reserved.
    55 * Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies).
    66 *
     
    5252        virtual void didAddOrRemoveTrack() = 0;
    5353    };
     54
     55    static void setRegistry(URLRegistry&);
     56    static MediaStream* lookUp(const URL&);
    5457
    5558    static Ref<MediaStream> create(ScriptExecutionContext&);
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r189565 r190020  
    12681268    LOG(Media, "HTMLMediaElement::loadResource(%p) - m_currentSrc -> %s", this, urlForLoggingMedia(m_currentSrc).utf8().data());
    12691269
    1270 #if ENABLE(MEDIA_STREAM)
    1271     if (MediaStreamRegistry::registry().lookup(url.string()))
    1272         m_mediaSession->removeBehaviorRestriction(MediaElementSession::RequireUserGestureForRateChange);
    1273 #endif
    1274 
    1275     if (m_sendProgressEvents)
     1270    if (m_sendProgressEvents)
    12761271        startProgressEventTimer();
    12771272
     
    12931288    updateVolume();
    12941289
     1290    bool loadAttempted = false;
    12951291#if ENABLE(MEDIA_SOURCE)
    12961292    ASSERT(!m_mediaSource);
     
    13081304            mediaLoadingFailed(MediaPlayer::FormatError);
    13091305        }
    1310     } else
    1311 #endif
     1306        loadAttempted = true;
     1307    }
     1308#endif
     1309
    13121310#if ENABLE(MEDIA_STREAM)
    1313         if (m_mediaStreamSrcObject)
    1314             m_player->load(m_mediaStreamSrcObject->privateStream());
    1315         else
    1316 #endif
    1317     if (!m_player->load(url, contentType, keySystem))
     1311    if (!loadAttempted) {
     1312        if (!m_mediaStreamSrcObject && url.protocolIs(mediaStreamBlobProtocol))
     1313            m_mediaStreamSrcObject = MediaStream::lookUp(url);
     1314
     1315        if (m_mediaStreamSrcObject) {
     1316            loadAttempted = true;
     1317            if (!m_player->load(m_mediaStreamSrcObject->privateStream()))
     1318                mediaLoadingFailed(MediaPlayer::FormatError);
     1319        }
     1320    }
     1321#endif
     1322
     1323    if (!loadAttempted && !m_player->load(url, contentType, keySystem))
    13181324        mediaLoadingFailed(MediaPlayer::FormatError);
    13191325
     
    56515657#endif
    56525658
     5659#if ENABLE(MEDIA_STREAM)
     5660    m_mediaStreamSrcObject = nullptr;
     5661#endif
     5662
    56535663#if ENABLE(VIDEO_TRACK)
    56545664    forgetResourceSpecificTracks();
  • trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp

    r189144 r190020  
    11/*
    2  * Copyright (C) 2007-2014 Apple Inc. All rights reserved.
     2 * Copyright (C) 2007-2015 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    6464#if PLATFORM(COCOA)
    6565#include "MediaPlayerPrivateQTKit.h"
     66
    6667#if USE(AVFOUNDATION)
    6768#include "MediaPlayerPrivateAVFoundationObjC.h"
    68 #if ENABLE(MEDIA_SOURCE)
     69#endif
     70
     71#if ENABLE(MEDIA_SOURCE) && USE(AVFOUNDATION)
    6972#include "MediaPlayerPrivateMediaSourceAVFObjC.h"
    7073#endif
    71 #endif
    72 #elif PLATFORM(WIN) && !USE(GSTREAMER)
    73 #if USE(AVFOUNDATION)
     74
     75#endif // PLATFORM(COCOA)
     76
     77#if PLATFORM(WIN) && USE(AVFOUNDATION) && !USE(GSTREAMER)
    7478#include "MediaPlayerPrivateAVFoundationCF.h"
    75 #endif // USE(AVFOUNDATION)
    7679#endif
    7780
     
    179182#if USE(AVFOUNDATION)
    180183    if (Settings::isAVFoundationEnabled()) {
     184
    181185#if PLATFORM(COCOA)
    182186        MediaPlayerPrivateAVFoundationObjC::registerMediaEngine(addMediaEngine);
     187#endif
     188
    183189#if ENABLE(MEDIA_SOURCE)
    184190        MediaPlayerPrivateMediaSourceAVFObjC::registerMediaEngine(addMediaEngine);
    185191#endif
    186 #elif PLATFORM(WIN)
     192
     193#if PLATFORM(WIN)
    187194        MediaPlayerPrivateAVFoundationCF::registerMediaEngine(addMediaEngine);
    188195#endif
    189196    }
    190 #endif
     197#endif // USE(AVFOUNDATION)
    191198
    192199#if PLATFORM(MAC)
     
    239246static const MediaPlayerFactory* bestMediaEngineForSupportParameters(const MediaEngineSupportParameters& parameters, const MediaPlayerFactory* current = nullptr)
    240247{
    241     if (parameters.type.isEmpty())
     248    if (parameters.type.isEmpty() && !parameters.isMediaSource && !parameters.isMediaStream)
    242249        return nullptr;
    243250
     
    308315bool MediaPlayer::load(const URL& url, const ContentType& contentType, const String& keySystem)
    309316{
     317    ASSERT(!m_reloadTimer.isActive());
     318
    310319    m_contentMIMEType = contentType.type().lower();
    311320    m_contentTypeCodecs = contentType.parameter(codecs());
     
    346355bool MediaPlayer::load(const URL& url, const ContentType& contentType, MediaSourcePrivateClient* mediaSource)
    347356{
     357    ASSERT(!m_reloadTimer.isActive());
    348358    ASSERT(mediaSource);
     359
    349360    m_mediaSource = mediaSource;
    350361    m_contentMIMEType = contentType.type().lower();
     
    361372bool MediaPlayer::load(MediaStreamPrivate* mediaStream)
    362373{
     374    ASSERT(!m_reloadTimer.isActive());
    363375    ASSERT(mediaStream);
     376
    364377    m_mediaStream = mediaStream;
    365378    m_keySystem = "";
     
    392405void MediaPlayer::loadWithNextMediaEngine(const MediaPlayerFactory* current)
    393406{
     407#if ENABLE(MEDIA_SOURCE)
     408#define MEDIASOURCE m_mediaSource
     409#else
     410#define MEDIASOURCE 0
     411#endif
     412
     413#if ENABLE(MEDIA_STREAM)
     414#define MEDIASTREAM m_mediaStream
     415#else
     416#define MEDIASTREAM 0
     417#endif
     418
    394419    const MediaPlayerFactory* engine = nullptr;
    395420
    396     if (!m_contentMIMEType.isEmpty())
     421    if (!m_contentMIMEType.isEmpty() || MEDIASTREAM || MEDIASOURCE)
    397422        engine = nextBestMediaEngine(current);
    398423
  • trunk/Source/WebCore/platform/graphics/MediaPlayer.h

    r189144 r190020  
    104104
    105105struct MediaEngineSupportParameters {
     106
     107    MediaEngineSupportParameters() { }
     108
    106109    String type;
    107110    String codecs;
    108111    URL url;
    109 #if ENABLE(ENCRYPTED_MEDIA)
    110112    String keySystem;
    111 #endif
    112 #if ENABLE(MEDIA_SOURCE)
    113     bool isMediaSource;
    114 #endif
    115 #if ENABLE(MEDIA_STREAM)
    116     bool isMediaStream;
    117 #endif
    118 
    119     MediaEngineSupportParameters()
    120 #if ENABLE(MEDIA_SOURCE)
    121         : isMediaSource(false)
    122 #endif
    123     {
    124 #if ENABLE(MEDIA_STREAM)
    125         isMediaStream = false;
    126 #endif
    127     }
     113    bool isMediaSource { false };
     114    bool isMediaStream { false };
    128115};
    129116
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm

    r189144 r190020  
    241241        return MediaPlayer::IsNotSupported;
    242242#endif
    243     if (!mimeTypeCache().contains(parameters.type))
     243
     244    if (parameters.type.isEmpty() || !mimeTypeCache().contains(parameters.type))
    244245        return MediaPlayer::IsNotSupported;
    245246
  • trunk/Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.cpp

    r189144 r190020  
    11/*
    2  * Copyright (C) 2013 Apple Inc. All rights reserved.
     2 * Copyright (C) 2013-2015 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    7070        return MediaPlayer::IsNotSupported;
    7171
    72     if (!mimeTypeCache().contains(parameters.type))
     72    if (parameters.type.isEmpty() || !mimeTypeCache().contains(parameters.type))
    7373        return MediaPlayer::IsNotSupported;
    7474
Note: See TracChangeset for help on using the changeset viewer.