Changeset 142773 in webkit


Ignore:
Timestamp:
Feb 13, 2013 12:32:38 PM (11 years ago)
Author:
tommyw@google.com
Message:

MediaStream API: Use the source id when creating new tracks
https://bugs.webkit.org/show_bug.cgi?id=109688

Reviewed by Adam Barth.

Source/Platform:

Added id to initialize and renamed audio/videoSources to audio/videoTracks.

  • chromium/public/WebMediaStream.h:

(WebKit):
(WebMediaStream):
(WebKit::WebMediaStream::audioSources):
(WebKit::WebMediaStream::videoSources):

  • chromium/public/WebMediaStreamTrack.h:

(WebMediaStreamTrack):

Source/WebCore:

This patch reuses the ids from the source when creating tracks instead of creating a new one.
This was requested by the chromium port to greatly simplify their implementation.
In the longer run the API should be rewritten to only use tracks instead of sources.

Covered by existing tests.

  • platform/chromium/support/WebMediaStream.cpp:

(WebKit::WebMediaStream::audioTracks):
(WebKit::WebMediaStream::videoTracks):
(WebKit::WebMediaStream::initialize):
(WebKit):

  • platform/chromium/support/WebMediaStreamTrack.cpp:

(WebKit::WebMediaStreamTrack::initialize):
(WebKit):

  • platform/mediastream/MediaStreamComponent.h:

(WebCore::MediaStreamComponent::create):
(MediaStreamComponent):
(WebCore::MediaStreamComponent::MediaStreamComponent):
(WebCore):

  • platform/mediastream/MediaStreamDescriptor.h:

(WebCore::MediaStreamDescriptor::create):
(MediaStreamDescriptor):
(WebCore::MediaStreamDescriptor::MediaStreamDescriptor):

Tools:

Switching mock to new API.

  • DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.cpp:

(WebTestRunner::WebUserMediaClientMock::requestUserMedia):

Location:
trunk
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/Platform/ChangeLog

    r142581 r142773  
     12013-02-13  Tommy Widenflycht  <tommyw@google.com>
     2
     3        MediaStream API: Use the source id when creating new tracks
     4        https://bugs.webkit.org/show_bug.cgi?id=109688
     5
     6        Reviewed by Adam Barth.
     7
     8        Added id to initialize and renamed audio/videoSources to audio/videoTracks.
     9
     10        * chromium/public/WebMediaStream.h:
     11        (WebKit):
     12        (WebMediaStream):
     13        (WebKit::WebMediaStream::audioSources):
     14        (WebKit::WebMediaStream::videoSources):
     15        * chromium/public/WebMediaStreamTrack.h:
     16        (WebMediaStreamTrack):
     17
    1182013-02-11  James Robinson  <jamesr@chromium.org>
    219
  • trunk/Source/Platform/chromium/public/WebMediaStream.h

    r141444 r142773  
    3737namespace WebKit {
    3838
     39class WebMediaStreamSource;
    3940class WebMediaStreamTrack;
    40 class WebMediaStreamSource;
    4141class WebString;
    4242
     
    6060    WEBKIT_EXPORT void assign(const WebMediaStream&);
    6161
     62    // DEPRECATED
    6263    WEBKIT_EXPORT void initialize(const WebString& label, const WebVector<WebMediaStreamSource>& audioSources, const WebVector<WebMediaStreamSource>& videoSources);
     64
     65    WEBKIT_EXPORT void initialize(const WebString& label, const WebVector<WebMediaStreamTrack>& audioTracks, const WebVector<WebMediaStreamTrack>& videoTracks);
     66
    6367    WEBKIT_EXPORT void reset();
    6468    bool isNull() const { return m_private.isNull(); }
     
    6973    WEBKIT_EXPORT WebString id() const;
    7074
    71     WEBKIT_EXPORT void audioSources(WebVector<WebMediaStreamTrack>&) const;
    72     WEBKIT_EXPORT void videoSources(WebVector<WebMediaStreamTrack>&) const;
     75    WEBKIT_EXPORT void audioTracks(WebVector<WebMediaStreamTrack>&) const;
     76    WEBKIT_EXPORT void videoTracks(WebVector<WebMediaStreamTrack>&) const;
     77
     78    // DEPRECATED
     79    void audioSources(WebVector<WebMediaStreamTrack>& tracks) const { audioTracks(tracks); }
     80    void videoSources(WebVector<WebMediaStreamTrack>& tracks) const { videoTracks(tracks); }
    7381
    7482    // Extra data associated with this WebMediaStream.
  • trunk/Source/Platform/chromium/public/WebMediaStreamTrack.h

    r141984 r142773  
    5151    }
    5252    WEBKIT_EXPORT void assign(const WebMediaStreamTrack&);
     53
    5354    WEBKIT_EXPORT void initialize(const WebMediaStreamSource&);
     55    WEBKIT_EXPORT void initialize(const WebString& id, const WebMediaStreamSource&);
     56
    5457    WEBKIT_EXPORT void reset();
    5558    bool isNull() const { return m_private.isNull(); }
  • trunk/Source/WebCore/ChangeLog

    r142772 r142773  
     12013-02-13  Tommy Widenflycht  <tommyw@google.com>
     2
     3        MediaStream API: Use the source id when creating new tracks
     4        https://bugs.webkit.org/show_bug.cgi?id=109688
     5
     6        Reviewed by Adam Barth.
     7
     8        This patch reuses the ids from the source when creating tracks instead of creating a new one.
     9        This was requested by the chromium port to greatly simplify their implementation.
     10        In the longer run the API should be rewritten to only use tracks instead of sources.
     11
     12        Covered by existing tests.
     13
     14        * platform/chromium/support/WebMediaStream.cpp:
     15        (WebKit::WebMediaStream::audioTracks):
     16        (WebKit::WebMediaStream::videoTracks):
     17        (WebKit::WebMediaStream::initialize):
     18        (WebKit):
     19        * platform/chromium/support/WebMediaStreamTrack.cpp:
     20        (WebKit::WebMediaStreamTrack::initialize):
     21        (WebKit):
     22        * platform/mediastream/MediaStreamComponent.h:
     23        (WebCore::MediaStreamComponent::create):
     24        (MediaStreamComponent):
     25        (WebCore::MediaStreamComponent::MediaStreamComponent):
     26        (WebCore):
     27        * platform/mediastream/MediaStreamDescriptor.h:
     28        (WebCore::MediaStreamDescriptor::create):
     29        (MediaStreamDescriptor):
     30        (WebCore::MediaStreamDescriptor::MediaStreamDescriptor):
     31
    1322013-02-13  Eric Seidel  <eric@webkit.org>
    233
  • trunk/Source/WebCore/platform/chromium/support/WebMediaStream.cpp

    r141444 r142773  
    9595}
    9696
    97 void WebMediaStream::audioSources(WebVector<WebMediaStreamTrack>& webSources) const
     97void WebMediaStream::audioTracks(WebVector<WebMediaStreamTrack>& webTracks) const
    9898{
    99     size_t numberOfSources = m_private->numberOfAudioComponents();
    100     WebVector<WebMediaStreamTrack> result(numberOfSources);
    101     for (size_t i = 0; i < numberOfSources; ++i)
     99    size_t numberOfTracks = m_private->numberOfAudioComponents();
     100    WebVector<WebMediaStreamTrack> result(numberOfTracks);
     101    for (size_t i = 0; i < numberOfTracks; ++i)
    102102        result[i] = m_private->audioComponent(i);
    103     webSources.swap(result);
     103    webTracks.swap(result);
    104104}
    105105
    106 void WebMediaStream::videoSources(WebVector<WebMediaStreamTrack>& webSources) const
     106void WebMediaStream::videoTracks(WebVector<WebMediaStreamTrack>& webTracks) const
    107107{
    108     size_t numberOfSources = m_private->numberOfVideoComponents();
    109     WebVector<WebMediaStreamTrack> result(numberOfSources);
    110     for (size_t i = 0; i < numberOfSources; ++i)
     108    size_t numberOfTracks = m_private->numberOfVideoComponents();
     109    WebVector<WebMediaStreamTrack> result(numberOfTracks);
     110    for (size_t i = 0; i < numberOfTracks; ++i)
    111111        result[i] = m_private->videoComponent(i);
    112     webSources.swap(result);
     112    webTracks.swap(result);
    113113}
    114114
     
    131131void WebMediaStream::initialize(const WebString& label, const WebVector<WebMediaStreamSource>& audioSources, const WebVector<WebMediaStreamSource>& videoSources)
    132132{
    133     MediaStreamSourceVector audio, video;
     133    MediaStreamComponentVector audio, video;
    134134    for (size_t i = 0; i < audioSources.size(); ++i) {
    135         MediaStreamSource* curr = audioSources[i];
    136         audio.append(curr);
     135        MediaStreamSource* source = audioSources[i];
     136        audio.append(MediaStreamComponent::create(source->id(), source));
    137137    }
    138138    for (size_t i = 0; i < videoSources.size(); ++i) {
    139         MediaStreamSource* curr = videoSources[i];
    140         video.append(curr);
     139        MediaStreamSource* source = videoSources[i];
     140        video.append(MediaStreamComponent::create(source->id(), source));
     141    }
     142    m_private = MediaStreamDescriptor::create(label, audio, video);
     143}
     144
     145void WebMediaStream::initialize(const WebString& label, const WebVector<WebMediaStreamTrack>& audioTracks, const WebVector<WebMediaStreamTrack>& videoTracks)
     146{
     147    MediaStreamComponentVector audio, video;
     148    for (size_t i = 0; i < audioTracks.size(); ++i) {
     149        MediaStreamComponent* component = audioTracks[i];
     150        audio.append(component);
     151    }
     152    for (size_t i = 0; i < videoTracks.size(); ++i) {
     153        MediaStreamComponent* component = videoTracks[i];
     154        video.append(component);
    141155    }
    142156    m_private = MediaStreamDescriptor::create(label, audio, video);
  • trunk/Source/WebCore/platform/chromium/support/WebMediaStreamTrack.cpp

    r141984 r142773  
    6060}
    6161
     62void WebMediaStreamTrack::initialize(const WebString& id, const WebMediaStreamSource& source)
     63{
     64    m_private = MediaStreamComponent::create(id, source);
     65}
     66
    6267void WebMediaStreamTrack::reset()
    6368{
  • trunk/Source/WebCore/platform/mediastream/MediaStreamComponent.h

    r141151 r142773  
    4545    static PassRefPtr<MediaStreamComponent> create(PassRefPtr<MediaStreamSource> source)
    4646    {
    47         return adoptRef(new MediaStreamComponent(0, source));
     47        return adoptRef(new MediaStreamComponent(createCanonicalUUIDString(), 0, source));
     48    }
     49
     50    static PassRefPtr<MediaStreamComponent> create(const String& id, PassRefPtr<MediaStreamSource> source)
     51    {
     52        return adoptRef(new MediaStreamComponent(id, 0, source));
    4853    }
    4954
    5055    static PassRefPtr<MediaStreamComponent> create(MediaStreamDescriptor* stream, PassRefPtr<MediaStreamSource> source)
    5156    {
    52         return adoptRef(new MediaStreamComponent(stream, source));
     57        return adoptRef(new MediaStreamComponent(createCanonicalUUIDString(), stream, source));
    5358    }
    5459
     
    6368
    6469private:
    65     MediaStreamComponent(MediaStreamDescriptor* stream, PassRefPtr<MediaStreamSource> source)
     70    MediaStreamComponent(const String& id, MediaStreamDescriptor* stream, PassRefPtr<MediaStreamSource> source)
    6671        : m_stream(stream)
    6772        , m_source(source)
    68         , m_id(createCanonicalUUIDString())
     73        , m_id(id)
    6974        , m_enabled(true)
    7075    {
     76        ASSERT(m_id.length());
    7177    }
    7278
     
    7783};
    7884
     85typedef Vector<RefPtr<MediaStreamComponent> > MediaStreamComponentVector;
     86
    7987} // namespace WebCore
    8088
  • trunk/Source/WebCore/platform/mediastream/MediaStreamDescriptor.h

    r141151 r142773  
    6262    }
    6363
     64    static PassRefPtr<MediaStreamDescriptor> create(const String& id, const MediaStreamComponentVector& audioComponents, const MediaStreamComponentVector& videoComponents)
     65    {
     66        return adoptRef(new MediaStreamDescriptor(id, audioComponents, videoComponents));
     67    }
     68
    6469    MediaStreamDescriptorClient* client() const { return m_client; }
    6570    void setClient(MediaStreamDescriptorClient* client) { m_client = client; }
     
    99104        , m_ended(false)
    100105    {
     106        ASSERT(m_id.length());
    101107        for (size_t i = 0; i < audioSources.size(); i++)
    102108            m_audioComponents.append(MediaStreamComponent::create(this, audioSources[i]));
     
    104110        for (size_t i = 0; i < videoSources.size(); i++)
    105111            m_videoComponents.append(MediaStreamComponent::create(this, videoSources[i]));
     112    }
     113
     114    MediaStreamDescriptor(const String& id, const MediaStreamComponentVector& audioComponents, const MediaStreamComponentVector& videoComponents)
     115        : m_client(0)
     116        , m_id(id)
     117        , m_ended(false)
     118    {
     119        ASSERT(m_id.length());
     120        for (MediaStreamComponentVector::const_iterator iter = audioComponents.begin(); iter != audioComponents.end(); ++iter) {
     121            (*iter)->setStream(this);
     122            m_audioComponents.append((*iter));
     123        }
     124        for (MediaStreamComponentVector::const_iterator iter = videoComponents.begin(); iter != videoComponents.end(); ++iter) {
     125            (*iter)->setStream(this);
     126            m_videoComponents.append((*iter));
     127        }
    106128    }
    107129
  • trunk/Tools/ChangeLog

    r142771 r142773  
     12013-02-13  Tommy Widenflycht  <tommyw@google.com>
     2
     3        MediaStream API: Use the source id when creating new tracks
     4        https://bugs.webkit.org/show_bug.cgi?id=109688
     5
     6        Reviewed by Adam Barth.
     7
     8        Switching mock to new API.
     9
     10        * DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.cpp:
     11        (WebTestRunner::WebUserMediaClientMock::requestUserMedia):
     12
    1132013-02-13  Brent Fulgham  <bfulgham@webkit.org>
    214
  • trunk/Tools/DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.cpp

    r142593 r142773  
    4040#include <public/WebMediaStream.h>
    4141#include <public/WebMediaStreamSource.h>
     42#include <public/WebMediaStreamTrack.h>
    4243#include <public/WebVector.h>
    4344
     
    103104    const size_t zero = 0;
    104105    const size_t one = 1;
    105     WebVector<WebMediaStreamSource> audioSources(request.audio() ? one : zero);
    106     WebVector<WebMediaStreamSource> videoSources(request.video() ? one : zero);
     106    WebVector<WebMediaStreamTrack> audioTracks(request.audio() ? one : zero);
     107    WebVector<WebMediaStreamTrack> videoTracks(request.video() ? one : zero);
    107108
    108     if (request.audio())
    109         audioSources[0].initialize("MockAudioDevice#1", WebMediaStreamSource::TypeAudio, "Mock audio device");
     109    if (request.audio()) {
     110        WebMediaStreamSource source;
     111        source.initialize("MockAudioDevice#1", WebMediaStreamSource::TypeAudio, "Mock audio device");
     112        audioTracks[0].initialize(source);
     113    }
    110114
    111     if (request.video())
    112         videoSources[0].initialize("MockVideoDevice#1", WebMediaStreamSource::TypeVideo, "Mock video device");
     115    if (request.video()) {
     116        WebMediaStreamSource source;
     117        source.initialize("MockVideoDevice#1", WebMediaStreamSource::TypeVideo, "Mock video device");
     118        videoTracks[0].initialize(source);
     119    }
    113120
    114121    WebMediaStream stream;
    115     stream.initialize("foobar", audioSources, videoSources);
     122    stream.initialize("foobar", audioTracks, videoTracks);
    116123
    117124    stream.setExtraData(new MockExtraData());
Note: See TracChangeset for help on using the changeset viewer.