Changeset 55927 in webkit


Ignore:
Timestamp:
Mar 12, 2010 12:11:06 PM (14 years ago)
Author:
kov@webkit.org
Message:

2010-03-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>

Reviewed by Eric Carlson.

media/video-preload.html fails
https://bugs.webkit.org/show_bug.cgi?id=35793

Only effectively load, and start buffering when playing, or when
the preload attribute is set.

Test: media/video-preload.html

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: (WebCore::MediaPlayerPrivate::MediaPlayerPrivate): (WebCore::MediaPlayerPrivate::load): (WebCore::MediaPlayerPrivate::commitLoad): (WebCore::MediaPlayerPrivate::prepareToPlay): (WebCore::MediaPlayerPrivate::setPreload):
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
Location:
trunk/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r55926 r55927  
     12010-03-12  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
     2
     3        Reviewed by Eric Carlson.
     4
     5        media/video-preload.html fails
     6        https://bugs.webkit.org/show_bug.cgi?id=35793
     7
     8        Only effectively load, and start buffering when playing, or when
     9        the preload attribute is set.
     10
     11        Test: media/video-preload.html
     12
     13        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
     14        (WebCore::MediaPlayerPrivate::MediaPlayerPrivate):
     15        (WebCore::MediaPlayerPrivate::load):
     16        (WebCore::MediaPlayerPrivate::commitLoad):
     17        (WebCore::MediaPlayerPrivate::prepareToPlay):
     18        (WebCore::MediaPlayerPrivate::setPreload):
     19        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
     20
    1212010-03-12  Dmitry Titov  <dimich@chromium.org>
    222
  • trunk/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp

    r55789 r55927  
    315315    , m_maxTimeLoaded(0)
    316316    , m_bufferingPercentage(0)
     317    , m_preload(MediaPlayer::Auto)
     318    , m_delayingLoad(false)
    317319{
    318320    if (doGstInit())
     
    369371void MediaPlayerPrivate::load(const String& url)
    370372{
     373    g_object_set(m_playBin, "uri", url.utf8().data(), NULL);
     374
     375    if (m_preload == MediaPlayer::None) {
     376        m_delayingLoad = true;
     377        return;
     378    }
     379
     380    commitLoad();
     381}
     382
     383void MediaPlayerPrivate::commitLoad()
     384{
     385    // GStreamer needs to have the pipeline set to a paused state to
     386    // start providing anything useful.
     387    gst_element_set_state(m_playBin, GST_STATE_PAUSED);
     388
    371389    LOG_VERBOSE(Media, "Load %s", url.utf8().data());
    372390    if (m_networkState != MediaPlayer::Loading) {
     
    378396        m_player->readyStateChanged();
    379397    }
    380 
    381     g_object_set(m_playBin, "uri", url.utf8().data(), NULL);
    382 
    383     // GStreamer needs to have the pipeline set to a paused state to
    384     // start providing anything useful.
    385     gst_element_set_state(m_playBin, GST_STATE_PAUSED);
    386398}
    387399
     
    403415    }
    404416    return true;
     417}
     418
     419void MediaPlayerPrivate::prepareToPlay()
     420{
     421    if (m_delayingLoad) {
     422        m_delayingLoad = false;
     423        commitLoad();
     424    }
    405425}
    406426
     
    13661386    ASSERT(m_playBin);
    13671387
     1388    m_preload = preload;
     1389
    13681390    GstPlayFlags flags;
    13691391    g_object_get(m_playBin, "flags", &flags, NULL);
     
    13721394    else
    13731395        g_object_set(m_playBin, "flags", flags | GST_PLAY_FLAG_DOWNLOAD, NULL);
     1396
     1397    if (m_delayingLoad && m_preload != MediaPlayer::None) {
     1398        m_delayingLoad = false;
     1399        commitLoad();
     1400    }
    13741401}
    13751402
  • trunk/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h

    r55789 r55927  
    6464
    6565            void load(const String &url);
     66            void commitLoad();
    6667            void cancelLoad();
    6768            bool loadNextLocation();
    6869
     70            void prepareToPlay();
    6971            void play();
    7072            void pause();
     
    168170            float m_maxTimeLoaded;
    169171            int m_bufferingPercentage;
     172            MediaPlayer::Preload m_preload;
     173            bool m_delayingLoad;
    170174    };
    171175}
Note: See TracChangeset for help on using the changeset viewer.