Changeset 158270 in webkit


Ignore:
Timestamp:
Oct 30, 2013 8:53:49 AM (10 years ago)
Author:
jer.noble@apple.com
Message:

[MSE] Make MediaSourcePrivate, SourceBufferPrivate classes RefCounted.
https://bugs.webkit.org/show_bug.cgi?id=123350

Reviewed by Darin Adler.

Make the MediaSourcePrivate and SourceBufferPrivate classes RefCounted so that
they can be referenced both by MediaSource/SourceBuffer, and by the MediaPlayerPrivate
which creates them.

Change OwnPtr -> RefPtr everywhere:

  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::addSourceBuffer):

  • Modules/mediasource/MediaSourceBase.cpp:

(WebCore::MediaSourceBase::setPrivateAndOpen):
(WebCore::MediaSourceBase::createSourceBufferPrivate):

  • Modules/mediasource/MediaSourceBase.h:
  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::create):
(WebCore::SourceBuffer::SourceBuffer):

  • Modules/mediasource/SourceBuffer.h:
  • Modules/mediasource/WebKitMediaSource.cpp:

(WebCore::WebKitMediaSource::addSourceBuffer):

  • Modules/mediasource/WebKitSourceBuffer.cpp:

(WebCore::WebKitSourceBuffer::create):
(WebCore::WebKitSourceBuffer::WebKitSourceBuffer):

  • Modules/mediasource/WebKitSourceBuffer.h:
  • html/HTMLMediaSource.h:
  • platform/graphics/MediaSourcePrivate.h:
  • platform/graphics/SourceBufferPrivate.h:

(WebCore::SourceBufferPrivate::SourceBufferPrivate):

Location:
trunk/Source/WebCore
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r158269 r158270  
     12013-10-30  Jer Noble  <jer.noble@apple.com>
     2
     3        [MSE] Make MediaSourcePrivate, SourceBufferPrivate classes RefCounted.
     4        https://bugs.webkit.org/show_bug.cgi?id=123350
     5
     6        Reviewed by Darin Adler.
     7
     8        Make the MediaSourcePrivate and SourceBufferPrivate classes RefCounted so that
     9        they can be referenced both by MediaSource/SourceBuffer, and by the MediaPlayerPrivate
     10        which creates them.
     11
     12        Change OwnPtr -> RefPtr everywhere:
     13        * Modules/mediasource/MediaSource.cpp:
     14        (WebCore::MediaSource::addSourceBuffer):
     15        * Modules/mediasource/MediaSourceBase.cpp:
     16        (WebCore::MediaSourceBase::setPrivateAndOpen):
     17        (WebCore::MediaSourceBase::createSourceBufferPrivate):
     18        * Modules/mediasource/MediaSourceBase.h:
     19        * Modules/mediasource/SourceBuffer.cpp:
     20        (WebCore::SourceBuffer::create):
     21        (WebCore::SourceBuffer::SourceBuffer):
     22        * Modules/mediasource/SourceBuffer.h:
     23        * Modules/mediasource/WebKitMediaSource.cpp:
     24        (WebCore::WebKitMediaSource::addSourceBuffer):
     25        * Modules/mediasource/WebKitSourceBuffer.cpp:
     26        (WebCore::WebKitSourceBuffer::create):
     27        (WebCore::WebKitSourceBuffer::WebKitSourceBuffer):
     28        * Modules/mediasource/WebKitSourceBuffer.h:
     29        * html/HTMLMediaSource.h:
     30        * platform/graphics/MediaSourcePrivate.h:
     31        * platform/graphics/SourceBufferPrivate.h:
     32        (WebCore::SourceBufferPrivate::SourceBufferPrivate):
     33
    1342013-10-30  Allan Sandfeld Jensen  <allan.jensen@digia.com>
    235
  • trunk/Source/WebCore/Modules/mediasource/MediaSource.cpp

    r157653 r158270  
    9797    ContentType contentType(type);
    9898    Vector<String> codecs = contentType.codecs();
    99     OwnPtr<SourceBufferPrivate> sourceBufferPrivate = createSourceBufferPrivate(contentType.type(), codecs, ec);
     99    RefPtr<SourceBufferPrivate> sourceBufferPrivate = createSourceBufferPrivate(contentType, ec);
    100100
    101101    if (!sourceBufferPrivate) {
     
    106106    }
    107107
    108     RefPtr<SourceBuffer> buffer = SourceBuffer::create(sourceBufferPrivate.release(), this);
     108    RefPtr<SourceBuffer> buffer = SourceBuffer::create(sourceBufferPrivate.releaseNonNull(), this);
    109109    // 6. Add the new object to sourceBuffers and fire a addsourcebuffer on that object.
    110110    m_sourceBuffers->add(buffer);
  • trunk/Source/WebCore/Modules/mediasource/MediaSourceBase.cpp

    r157653 r158270  
    7676}
    7777
    78 void MediaSourceBase::setPrivateAndOpen(PassOwnPtr<MediaSourcePrivate> mediaSourcePrivate)
    79 {
    80     ASSERT(mediaSourcePrivate);
     78void MediaSourceBase::setPrivateAndOpen(PassRef<MediaSourcePrivate> mediaSourcePrivate)
     79{
    8180    ASSERT(!m_private);
    8281    ASSERT(m_attached);
    83     m_private = mediaSourcePrivate;
     82    m_private = std::move(mediaSourcePrivate);
    8483    setReadyState(openKeyword());
    8584}
     
    258257}
    259258
    260 PassOwnPtr<SourceBufferPrivate> MediaSourceBase::createSourceBufferPrivate(const String& type, const MediaSourcePrivate::CodecsArray& codecs, ExceptionCode& ec)
    261 {
    262     OwnPtr<SourceBufferPrivate> sourceBufferPrivate;
    263     switch (m_private->addSourceBuffer(type, codecs, &sourceBufferPrivate)) {
     259RefPtr<SourceBufferPrivate> MediaSourceBase::createSourceBufferPrivate(const ContentType& type, ExceptionCode& ec)
     260{
     261    RefPtr<SourceBufferPrivate> sourceBufferPrivate;
     262    switch (m_private->addSourceBuffer(type, sourceBufferPrivate)) {
    264263    case MediaSourcePrivate::Ok: {
    265         return sourceBufferPrivate.release();
     264        return sourceBufferPrivate;
    266265    }
    267266    case MediaSourcePrivate::NotSupported:
  • trunk/Source/WebCore/Modules/mediasource/MediaSourceBase.h

    r157653 r158270  
    6363    // HTMLMediaSource
    6464    virtual bool attachToElement() OVERRIDE;
    65     virtual void setPrivateAndOpen(PassOwnPtr<MediaSourcePrivate>) OVERRIDE;
     65    virtual void setPrivateAndOpen(PassRef<MediaSourcePrivate>) OVERRIDE;
    6666    virtual void close() OVERRIDE;
    6767    virtual bool isClosed() const OVERRIDE;
     
    9898    virtual Vector<RefPtr<TimeRanges>> activeRanges() const = 0;
    9999
    100     PassOwnPtr<SourceBufferPrivate> createSourceBufferPrivate(const String& type, const MediaSourcePrivate::CodecsArray&, ExceptionCode&);
     100    RefPtr<SourceBufferPrivate> createSourceBufferPrivate(const ContentType&, ExceptionCode&);
    101101    void scheduleEvent(const AtomicString& eventName);
    102102    GenericEventQueue& asyncEventQueue() { return m_asyncEventQueue; }
    103103
    104104private:
    105     OwnPtr<MediaSourcePrivate> m_private;
     105    RefPtr<MediaSourcePrivate> m_private;
    106106    AtomicString m_readyState;
    107107    GenericEventQueue m_asyncEventQueue;
  • trunk/Source/WebCore/Modules/mediasource/SourceBuffer.cpp

    r156413 r158270  
    4343namespace WebCore {
    4444
    45 PassRefPtr<SourceBuffer> SourceBuffer::create(PassOwnPtr<SourceBufferPrivate> sourceBufferPrivate, MediaSource* source)
    46 {
    47     RefPtr<SourceBuffer> sourceBuffer(adoptRef(new SourceBuffer(sourceBufferPrivate, source)));
     45PassRef<SourceBuffer> SourceBuffer::create(PassRef<SourceBufferPrivate> sourceBufferPrivate, MediaSource* source)
     46{
     47    RefPtr<SourceBuffer> sourceBuffer(adoptRef(new SourceBuffer(std::move(sourceBufferPrivate), source)));
    4848    sourceBuffer->suspendIfNeeded();
    49     return sourceBuffer.release();
    50 }
    51 
    52 SourceBuffer::SourceBuffer(PassOwnPtr<SourceBufferPrivate> sourceBufferPrivate, MediaSource* source)
     49    return sourceBuffer.releaseNonNull();
     50}
     51
     52SourceBuffer::SourceBuffer(PassRef<SourceBufferPrivate> sourceBufferPrivate, MediaSource* source)
    5353    : ActiveDOMObject(source->scriptExecutionContext())
    54     , m_private(sourceBufferPrivate)
     54    , m_private(std::move(sourceBufferPrivate))
    5555    , m_source(source)
    5656    , m_asyncEventQueue(*this)
  • trunk/Source/WebCore/Modules/mediasource/SourceBuffer.h

    r156719 r158270  
    5252class SourceBuffer FINAL : public RefCounted<SourceBuffer>, public ActiveDOMObject, public EventTargetWithInlineData, public ScriptWrappable {
    5353public:
    54     static PassRefPtr<SourceBuffer> create(PassOwnPtr<SourceBufferPrivate>, MediaSource*);
     54    static PassRef<SourceBuffer> create(PassRef<SourceBufferPrivate>, MediaSource*);
    5555
    5656    virtual ~SourceBuffer();
     
    8585
    8686private:
    87     SourceBuffer(PassOwnPtr<SourceBufferPrivate>, MediaSource*);
     87    SourceBuffer(PassRef<SourceBufferPrivate>, MediaSource*);
    8888
    8989    bool isRemoved() const;
     
    9393    void appendBufferTimerFired(Timer<SourceBuffer>*);
    9494
    95     OwnPtr<SourceBufferPrivate> m_private;
     95    RefPtr<SourceBufferPrivate> m_private;
    9696    MediaSource* m_source;
    9797    GenericEventQueue m_asyncEventQueue;
  • trunk/Source/WebCore/Modules/mediasource/WebKitMediaSource.cpp

    r157653 r158270  
    4848    RefPtr<WebKitMediaSource> mediaSource(adoptRef(new WebKitMediaSource(context)));
    4949    mediaSource->suspendIfNeeded();
    50     return mediaSource.release();
     50    return mediaSource.releaseNonNull();
    5151}
    5252
     
    9797    ContentType contentType(type);
    9898    Vector<String> codecs = contentType.codecs();
    99     OwnPtr<SourceBufferPrivate> sourceBufferPrivate = createSourceBufferPrivate(contentType.type(), codecs, ec);
     99    RefPtr<SourceBufferPrivate> sourceBufferPrivate = createSourceBufferPrivate(contentType, ec);
    100100    if (!sourceBufferPrivate)
    101101        return 0;
    102102
    103     RefPtr<WebKitSourceBuffer> buffer = WebKitSourceBuffer::create(sourceBufferPrivate.release(), this);
     103    RefPtr<WebKitSourceBuffer> buffer = WebKitSourceBuffer::create(sourceBufferPrivate.releaseNonNull(), *this);
    104104    // 6. Add the new object to sourceBuffers and fire a addsourcebuffer on that object.
    105105    m_sourceBuffers->add(buffer);
  • trunk/Source/WebCore/Modules/mediasource/WebKitSourceBuffer.cpp

    r156049 r158270  
    4141namespace WebCore {
    4242
    43 PassRefPtr<WebKitSourceBuffer> WebKitSourceBuffer::create(PassOwnPtr<SourceBufferPrivate> sourceBufferPrivate, PassRefPtr<WebKitMediaSource> source)
     43PassRef<WebKitSourceBuffer> WebKitSourceBuffer::create(PassRef<SourceBufferPrivate> sourceBufferPrivate, PassRef<WebKitMediaSource> source)
    4444{
    45     return adoptRef(new WebKitSourceBuffer(sourceBufferPrivate, source));
     45    return adoptRef(*new WebKitSourceBuffer(std::move(sourceBufferPrivate), std::move(source)));
    4646}
    4747
    48 WebKitSourceBuffer::WebKitSourceBuffer(PassOwnPtr<SourceBufferPrivate> sourceBufferPrivate, PassRefPtr<WebKitMediaSource> source)
    49     : m_private(sourceBufferPrivate)
    50     , m_source(source)
     48WebKitSourceBuffer::WebKitSourceBuffer(PassRef<SourceBufferPrivate> sourceBufferPrivate, PassRef<WebKitMediaSource> source)
     49    : m_private(std::move(sourceBufferPrivate))
     50    , m_source(std::move(source))
    5151    , m_timestampOffset(0)
    5252{
  • trunk/Source/WebCore/Modules/mediasource/WebKitSourceBuffer.h

    r156049 r158270  
    4848class WebKitSourceBuffer : public RefCounted<WebKitSourceBuffer>, public ScriptWrappable {
    4949public:
    50     static PassRefPtr<WebKitSourceBuffer> create(PassOwnPtr<SourceBufferPrivate>, PassRefPtr<WebKitMediaSource>);
     50    static PassRef<WebKitSourceBuffer> create(PassRef<SourceBufferPrivate>, PassRef<WebKitMediaSource>);
    5151
    5252    virtual ~WebKitSourceBuffer();
     
    6262
    6363private:
    64     WebKitSourceBuffer(PassOwnPtr<SourceBufferPrivate>, PassRefPtr<WebKitMediaSource>);
     64    WebKitSourceBuffer(PassRef<SourceBufferPrivate>, PassRef<WebKitMediaSource>);
    6565
    6666    bool isRemoved() const;
    6767
    68     OwnPtr<SourceBufferPrivate> m_private;
     68    RefPtr<SourceBufferPrivate> m_private;
    6969    RefPtr<WebKitMediaSource> m_source;
    7070
  • trunk/Source/WebCore/html/HTMLMediaSource.h

    r156049 r158270  
    5454    // Reattachment allowed by first calling close() (even if already in 'closed').
    5555    virtual bool attachToElement() = 0;
    56     virtual void setPrivateAndOpen(PassOwnPtr<MediaSourcePrivate>) = 0;
     56    virtual void setPrivateAndOpen(PassRef<MediaSourcePrivate>) = 0;
    5757    virtual void close() = 0;
    5858    virtual bool isClosed() const = 0;
  • trunk/Source/WebCore/platform/graphics/MediaSourcePrivate.h

    r156049 r158270  
    3434
    3535#include <wtf/Forward.h>
     36#include <wtf/RefCounted.h>
     37#include <wtf/Vector.h>
    3638
    3739namespace WebCore {
    3840
     41class ContentType;
    3942class SourceBufferPrivate;
    4043
    41 class MediaSourcePrivate {
     44class MediaSourcePrivate : public RefCounted<MediaSourcePrivate> {
    4245public:
    43     typedef Vector<String, 0> CodecsArray;
     46    typedef Vector<String> CodecsArray;
    4447
    4548    MediaSourcePrivate() { }
     
    4750
    4851    enum AddStatus { Ok, NotSupported, ReachedIdLimit };
    49     virtual AddStatus addSourceBuffer(const String& type, const CodecsArray&, OwnPtr<SourceBufferPrivate>*) = 0;
     52    virtual AddStatus addSourceBuffer(const ContentType&, RefPtr<SourceBufferPrivate>&) = 0;
    5053    virtual double duration() = 0;
    5154    virtual void setDuration(double) = 0;
  • trunk/Source/WebCore/platform/graphics/SourceBufferPrivate.h

    r144638 r158270  
    3434
    3535#include "TimeRanges.h"
     36#include <wtf/RefCounted.h>
    3637
    3738namespace WebCore {
    3839
    39 class SourceBufferPrivate {
     40class SourceBufferPrivate : public RefCounted<SourceBufferPrivate> {
    4041public:
    41     SourceBufferPrivate() { }
    4242    virtual ~SourceBufferPrivate() { }
    4343
Note: See TracChangeset for help on using the changeset viewer.