Changeset 105774 in webkit
- Timestamp:
- Jan 24, 2012 12:29:44 PM (12 years ago)
- Location:
- trunk/Source
- Files:
-
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r105773 r105774 1 2012-01-24 Tommy Widenflycht <tommyw@google.com> 2 3 MediaStream API: Split the MediaStream track list into audio/video specific ones. 4 https://bugs.webkit.org/show_bug.cgi?id=76614 5 6 The latest draft of the WebRTC standard have split the MediaStream combined track list 7 into audio/video specific ones. 8 9 Reviewed by Darin Fisher. 10 11 Tests for the Media Stream API will be provided by the bug 56587, pending enough landed code. 12 13 * mediastream/LocalMediaStream.cpp: 14 (WebCore::LocalMediaStream::create): 15 (WebCore::LocalMediaStream::LocalMediaStream): 16 * mediastream/LocalMediaStream.h: 17 * mediastream/MediaStream.cpp: 18 (WebCore::processTrackList): 19 (WebCore::MediaStream::create): 20 (WebCore::MediaStream::MediaStream): 21 * mediastream/MediaStream.h: 22 (WebCore::MediaStream::audioTracks): 23 (WebCore::MediaStream::videoTracks): 24 * mediastream/MediaStream.idl: 25 * mediastream/MediaStreamTrack.cpp: 26 (WebCore::MediaStreamTrack::create): 27 (WebCore::MediaStreamTrack::MediaStreamTrack): 28 (WebCore::MediaStreamTrack::kind): 29 (WebCore::MediaStreamTrack::label): 30 (WebCore::MediaStreamTrack::enabled): 31 (WebCore::MediaStreamTrack::setEnabled): 32 (WebCore::MediaStreamTrack::component): 33 * mediastream/MediaStreamTrack.h: 34 * mediastream/UserMediaClient.h: 35 * mediastream/UserMediaRequest.cpp: 36 (WebCore::UserMediaRequest::mediaStreamSourcesQueryCompleted): 37 (WebCore::UserMediaRequest::succeed): 38 * mediastream/UserMediaRequest.h: 39 * platform/mediastream/MediaStreamCenter.cpp: 40 (WebCore::MediaStreamCenter::queryMediaStreamSources): 41 (WebCore::MediaStreamCenter::didSetMediaStreamTrackEnabled): 42 * platform/mediastream/MediaStreamCenter.h: 43 * platform/mediastream/MediaStreamDescriptor.h: 44 (WebCore::MediaStreamDescriptor::create): 45 (WebCore::MediaStreamDescriptor::numberOfAudioComponents): 46 (WebCore::MediaStreamDescriptor::audioComponent): 47 (WebCore::MediaStreamDescriptor::numberOfVideoComponents): 48 (WebCore::MediaStreamDescriptor::videoComponent): 49 (WebCore::MediaStreamDescriptor::MediaStreamDescriptor): 50 1 51 2012-01-24 Sheriff Bot <webkit.review.bot@gmail.com> 2 52 -
trunk/Source/WebCore/mediastream/LocalMediaStream.cpp
r100997 r105774 34 34 namespace WebCore { 35 35 36 PassRefPtr<LocalMediaStream> LocalMediaStream::create(ScriptExecutionContext* context, const MediaStreamSourceVector& sources)36 PassRefPtr<LocalMediaStream> LocalMediaStream::create(ScriptExecutionContext* context, const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources) 37 37 { 38 return adoptRef(new LocalMediaStream(context, sources));38 return adoptRef(new LocalMediaStream(context, audioSources, videoSources)); 39 39 } 40 40 41 LocalMediaStream::LocalMediaStream(ScriptExecutionContext* context, const MediaStreamSourceVector& sources)42 : MediaStream(context, MediaStreamDescriptor::create(createCanonicalUUIDString(), sources))41 LocalMediaStream::LocalMediaStream(ScriptExecutionContext* context, const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources) 42 : MediaStream(context, MediaStreamDescriptor::create(createCanonicalUUIDString(), audioSources, videoSources)) 43 43 , m_stopTimer(this, &LocalMediaStream::stopTimerFired) 44 44 { -
trunk/Source/WebCore/mediastream/LocalMediaStream.h
r98388 r105774 36 36 class LocalMediaStream : public MediaStream { 37 37 public: 38 static PassRefPtr<LocalMediaStream> create(ScriptExecutionContext*, const MediaStreamSourceVector& );38 static PassRefPtr<LocalMediaStream> create(ScriptExecutionContext*, const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources); 39 39 virtual ~LocalMediaStream(); 40 40 … … 45 45 46 46 private: 47 LocalMediaStream(ScriptExecutionContext*, const MediaStreamSourceVector& );47 LocalMediaStream(ScriptExecutionContext*, const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources); 48 48 49 49 void stopTimerFired(Timer<LocalMediaStream>*); -
trunk/Source/WebCore/mediastream/MediaStream.cpp
r105138 r105774 30 30 31 31 #include "Event.h" 32 #include "ExceptionCode.h" 32 33 #include "MediaStreamCenter.h" 34 #include "MediaStreamSource.h" 33 35 #include "ScriptExecutionContext.h" 34 36 #include "UUID.h" … … 36 38 namespace WebCore { 37 39 38 PassRefPtr<MediaStream> MediaStream::create(ScriptExecutionContext* context, PassRefPtr<MediaStreamTrackList> prpTracks)40 static void processTrackList(PassRefPtr<MediaStreamTrackList> prpTracks, const String& kind, MediaStreamSourceVector& sources, ExceptionCode& ec) 39 41 { 40 42 RefPtr<MediaStreamTrackList> tracks = prpTracks; 41 MediaStreamSourceVector sources; 42 for (unsigned i = 0; i < tracks->length(); ++i) 43 sources.append(tracks->item(i)->component()->source()); 43 if (!tracks) 44 return; 44 45 45 RefPtr<MediaStreamDescriptor> descriptor = MediaStreamDescriptor::create(createCanonicalUUIDString(), sources); 46 for (unsigned i = 0; i < tracks->length(); ++i) { 47 MediaStreamTrack* track = tracks->item(i); 48 if (track->kind() != kind) { 49 ec = SYNTAX_ERR; 50 return; 51 } 52 MediaStreamSource* source = track->component()->source(); 53 bool isDuplicate = false; 54 for (MediaStreamSourceVector::iterator j = sources.begin(); j < sources.end(); ++j) { 55 if ((*j)->id() == source->id()) { 56 isDuplicate = true; 57 break; 58 } 59 } 60 if (!isDuplicate) 61 sources.append(source); 62 } 63 } 64 65 PassRefPtr<MediaStream> MediaStream::create(ScriptExecutionContext* context, PassRefPtr<MediaStreamTrackList> audioTracks, PassRefPtr<MediaStreamTrackList> videoTracks, ExceptionCode& ec) 66 { 67 MediaStreamSourceVector audioSources; 68 processTrackList(audioTracks, "audio", audioSources, ec); 69 if (ec) 70 return 0; 71 72 MediaStreamSourceVector videoSources; 73 processTrackList(videoTracks, "video", videoSources, ec); 74 if (ec) 75 return 0; 76 77 RefPtr<MediaStreamDescriptor> descriptor = MediaStreamDescriptor::create(createCanonicalUUIDString(), audioSources, videoSources); 46 78 MediaStreamCenter::instance().didConstructMediaStream(descriptor.get()); 47 79 return adoptRef(new MediaStream(context, descriptor.release())); … … 59 91 m_descriptor->setOwner(this); 60 92 61 MediaStreamTrackVector trackVector; 62 size_t numberOfTracks = m_descriptor->numberOfComponents(); 93 MediaStreamTrackVector audioTrackVector; 94 size_t numberOfAudioTracks = m_descriptor->numberOfAudioComponents(); 95 audioTrackVector.reserveCapacity(numberOfAudioTracks); 96 for (size_t i = 0; i < numberOfAudioTracks; i++) 97 audioTrackVector.append(MediaStreamTrack::create(m_descriptor, m_descriptor->audioComponent(i))); 98 m_audioTracks = MediaStreamTrackList::create(audioTrackVector); 63 99 64 trackVector.reserveCapacity(numberOfTracks); 65 for (size_t i = 0; i < numberOfTracks; i++) 66 trackVector.append(MediaStreamTrack::create(m_descriptor, i)); 67 68 m_tracks = MediaStreamTrackList::create(trackVector); 100 MediaStreamTrackVector videoTrackVector; 101 size_t numberOfVideoTracks = m_descriptor->numberOfVideoComponents(); 102 videoTrackVector.reserveCapacity(numberOfVideoTracks); 103 for (size_t i = 0; i < numberOfVideoTracks; i++) 104 videoTrackVector.append(MediaStreamTrack::create(m_descriptor, m_descriptor->videoComponent(i))); 105 m_videoTracks = MediaStreamTrackList::create(videoTrackVector); 69 106 } 70 107 -
trunk/Source/WebCore/mediastream/MediaStream.h
r105138 r105774 48 48 49 49 static PassRefPtr<MediaStream> create(ScriptExecutionContext*, PassRefPtr<MediaStreamDescriptor>); 50 static PassRefPtr<MediaStream> create(ScriptExecutionContext*, PassRefPtr<MediaStreamTrackList> );50 static PassRefPtr<MediaStream> create(ScriptExecutionContext*, PassRefPtr<MediaStreamTrackList>, PassRefPtr<MediaStreamTrackList>, ExceptionCode&); 51 51 virtual ~MediaStream(); 52 52 … … 56 56 String label() const { return m_descriptor->label(); } 57 57 58 MediaStreamTrackList* tracks() { return m_tracks.get(); } 58 MediaStreamTrackList* audioTracks() { return m_audioTracks.get(); } 59 MediaStreamTrackList* videoTracks() { return m_videoTracks.get(); } 59 60 60 61 void streamEnded(); … … 85 86 RefPtr<ScriptExecutionContext> m_scriptExecutionContext; 86 87 87 RefPtr<MediaStreamTrackList> m_tracks; 88 RefPtr<MediaStreamTrackList> m_audioTracks; 89 RefPtr<MediaStreamTrackList> m_videoTracks; 88 90 RefPtr<MediaStreamDescriptor> m_descriptor; 89 91 }; -
trunk/Source/WebCore/mediastream/MediaStream.idl
r105138 r105774 28 28 Conditional=MEDIA_STREAM, 29 29 EventTarget, 30 Constructor(in MediaStreamTrackList trackList), 31 CallWith=ScriptExecutionContext 30 Constructor(in MediaStreamTrackList audioTracks, in MediaStreamTrackList videoTracks), 31 CallWith=ScriptExecutionContext, 32 ConstructorRaisesException 32 33 ] MediaStream { 33 34 readonly attribute DOMString label; 34 readonly attribute MediaStreamTrackList tracks; 35 readonly attribute MediaStreamTrackList audioTracks; 36 readonly attribute MediaStreamTrackList videoTracks; 35 37 36 38 // FIXME: implement the record method when MediaStreamRecorder is available. -
trunk/Source/WebCore/mediastream/MediaStreamTrack.cpp
r105138 r105774 34 34 namespace WebCore { 35 35 36 PassRefPtr<MediaStreamTrack> MediaStreamTrack::create(PassRefPtr<MediaStreamDescriptor> streamDescriptor, size_t trackIndex)36 PassRefPtr<MediaStreamTrack> MediaStreamTrack::create(PassRefPtr<MediaStreamDescriptor> streamDescriptor, MediaStreamComponent* component) 37 37 { 38 return adoptRef(new MediaStreamTrack(streamDescriptor, trackIndex));38 return adoptRef(new MediaStreamTrack(streamDescriptor, component)); 39 39 } 40 40 41 MediaStreamTrack::MediaStreamTrack(PassRefPtr<MediaStreamDescriptor> streamDescriptor, size_t trackIndex)41 MediaStreamTrack::MediaStreamTrack(PassRefPtr<MediaStreamDescriptor> streamDescriptor, MediaStreamComponent* component) 42 42 : m_streamDescriptor(streamDescriptor) 43 , m_ trackIndex(trackIndex)43 , m_component(component) 44 44 { 45 45 } … … 54 54 DEFINE_STATIC_LOCAL(String, videoKind, ("video")); 55 55 56 switch (m_ streamDescriptor->component(m_trackIndex)->source()->type()) {56 switch (m_component->source()->type()) { 57 57 case MediaStreamSource::TypeAudio: 58 58 return audioKind; … … 67 67 String MediaStreamTrack::label() const 68 68 { 69 return m_ streamDescriptor->component(m_trackIndex)->source()->name();69 return m_component->source()->name(); 70 70 } 71 71 72 72 bool MediaStreamTrack::enabled() const 73 73 { 74 return m_ streamDescriptor->component(m_trackIndex)->enabled();74 return m_component->enabled(); 75 75 } 76 76 77 77 void MediaStreamTrack::setEnabled(bool enabled) 78 78 { 79 if (enabled == m_ streamDescriptor->component(m_trackIndex)->enabled())79 if (enabled == m_component->enabled()) 80 80 return; 81 81 82 m_ streamDescriptor->component(m_trackIndex)->setEnabled(enabled);82 m_component->setEnabled(enabled); 83 83 84 MediaStreamCenter::instance().didSetMediaStreamTrackEnabled(m_streamDescriptor.get(), m_ trackIndex);84 MediaStreamCenter::instance().didSetMediaStreamTrackEnabled(m_streamDescriptor.get(), m_component.get()); 85 85 } 86 86 87 87 MediaStreamComponent* MediaStreamTrack::component() 88 88 { 89 return m_ streamDescriptor->component(m_trackIndex);89 return m_component.get(); 90 90 } 91 91 -
trunk/Source/WebCore/mediastream/MediaStreamTrack.h
r105138 r105774 41 41 class MediaStreamTrack : public RefCounted<MediaStreamTrack> { 42 42 public: 43 static PassRefPtr<MediaStreamTrack> create(PassRefPtr<MediaStreamDescriptor>, size_t trackIndex);43 static PassRefPtr<MediaStreamTrack> create(PassRefPtr<MediaStreamDescriptor>, MediaStreamComponent*); 44 44 virtual ~MediaStreamTrack(); 45 45 … … 53 53 54 54 private: 55 MediaStreamTrack(PassRefPtr<MediaStreamDescriptor>, size_t trackIndex);55 MediaStreamTrack(PassRefPtr<MediaStreamDescriptor>, MediaStreamComponent*); 56 56 57 57 RefPtr<MediaStreamDescriptor> m_streamDescriptor; 58 const size_t m_trackIndex;58 RefPtr<MediaStreamComponent> m_component; 59 59 }; 60 60 -
trunk/Source/WebCore/mediastream/UserMediaClient.h
r100555 r105774 43 43 virtual void pageDestroyed() = 0; 44 44 45 virtual void requestUserMedia(PassRefPtr<UserMediaRequest>, const MediaStreamSourceVector& ) = 0;45 virtual void requestUserMedia(PassRefPtr<UserMediaRequest>, const MediaStreamSourceVector&, const MediaStreamSourceVector&) = 0; 46 46 virtual void cancelUserMediaRequest(UserMediaRequest*) = 0; 47 47 -
trunk/Source/WebCore/mediastream/UserMediaRequest.cpp
r100997 r105774 72 72 } 73 73 74 void UserMediaRequest::mediaStreamSourcesQueryCompleted(const MediaStreamSourceVector& sources)74 void UserMediaRequest::mediaStreamSourcesQueryCompleted(const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources) 75 75 { 76 76 if (m_client) 77 m_client->requestUserMedia(this, sources);77 m_client->requestUserMedia(this, audioSources, videoSources); 78 78 } 79 79 80 void UserMediaRequest::succeed(const MediaStreamSourceVector& sources)80 void UserMediaRequest::succeed(const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources) 81 81 { 82 82 if (!m_scriptExecutionContext) 83 83 return; 84 84 85 RefPtr<LocalMediaStream> stream = LocalMediaStream::create(m_scriptExecutionContext, sources);85 RefPtr<LocalMediaStream> stream = LocalMediaStream::create(m_scriptExecutionContext, audioSources, videoSources); 86 86 m_successCallback->handleEvent(stream.get()); 87 87 } -
trunk/Source/WebCore/mediastream/UserMediaRequest.h
r100997 r105774 62 62 63 63 void start(); 64 void mediaStreamSourcesQueryCompleted(const MediaStreamSourceVector& );64 void mediaStreamSourcesQueryCompleted(const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources); 65 65 66 void succeed(const MediaStreamSourceVector& );66 void succeed(const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources); 67 67 void fail(); 68 68 -
trunk/Source/WebCore/platform/mediastream/MediaStreamCenter.cpp
r105138 r105774 69 69 void MediaStreamCenter::queryMediaStreamSources(PassRefPtr<MediaStreamSourcesQueryClient> client) 70 70 { 71 MediaStreamSourceVector sources;72 client->mediaStreamSourcesQueryCompleted( sources);71 MediaStreamSourceVector audioSources, videoSources; 72 client->mediaStreamSourcesQueryCompleted(audioSources, videoSources); 73 73 } 74 74 75 void MediaStreamCenter::didSetMediaStreamTrackEnabled(MediaStreamDescriptor*, unsigned)75 void MediaStreamCenter::didSetMediaStreamTrackEnabled(MediaStreamDescriptor*, MediaStreamComponent*) 76 76 { 77 77 } -
trunk/Source/WebCore/platform/mediastream/MediaStreamCenter.h
r105138 r105774 39 39 namespace WebCore { 40 40 41 class MediaStreamComponent; 41 42 class MediaStreamDescriptor; 42 43 … … 48 49 virtual bool video() const = 0; 49 50 50 virtual void mediaStreamSourcesQueryCompleted(const MediaStreamSourceVector& ) = 0;51 virtual void mediaStreamSourcesQueryCompleted(const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources) = 0; 51 52 }; 52 53 … … 64 65 65 66 // Calls from the DOM objects to notify the platform 66 void didSetMediaStreamTrackEnabled(MediaStreamDescriptor*, unsigned componentIndex);67 void didSetMediaStreamTrackEnabled(MediaStreamDescriptor*, MediaStreamComponent*); 67 68 void didStopLocalMediaStream(MediaStreamDescriptor*); 68 69 void didConstructMediaStream(MediaStreamDescriptor*); -
trunk/Source/WebCore/platform/mediastream/MediaStreamDescriptor.h
r100997 r105774 49 49 class MediaStreamDescriptor : public RefCounted<MediaStreamDescriptor> { 50 50 public: 51 static PassRefPtr<MediaStreamDescriptor> create(const String& label, const MediaStreamSourceVector& sources)51 static PassRefPtr<MediaStreamDescriptor> create(const String& label, const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources) 52 52 { 53 return adoptRef(new MediaStreamDescriptor(label, sources));53 return adoptRef(new MediaStreamDescriptor(label, audioSources, videoSources)); 54 54 } 55 55 … … 59 59 String label() const { return m_label; } 60 60 61 MediaStreamComponent* component(unsigned index) const { return m_components[index].get(); } 62 unsigned numberOfComponents() const { return m_components.size(); } 61 unsigned numberOfAudioComponents() const { return m_audioComponents.size(); } 62 MediaStreamComponent* audioComponent(unsigned index) const { return m_audioComponents[index].get(); } 63 64 unsigned numberOfVideoComponents() const { return m_videoComponents.size(); } 65 MediaStreamComponent* videoComponent(unsigned index) const { return m_videoComponents[index].get(); } 63 66 64 67 bool ended() const { return m_ended; } … … 66 69 67 70 private: 68 MediaStreamDescriptor(const String& label, const MediaStreamSourceVector& sources)71 MediaStreamDescriptor(const String& label, const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources) 69 72 : m_owner(0) 70 73 , m_label(label) 71 74 , m_ended(false) 72 75 { 73 for (size_t i = 0; i < sources.size(); i++) 74 m_components.append(MediaStreamComponent::create(sources[i])); 76 for (size_t i = 0; i < audioSources.size(); i++) 77 m_audioComponents.append(MediaStreamComponent::create(audioSources[i])); 78 79 for (size_t i = 0; i < videoSources.size(); i++) 80 m_videoComponents.append(MediaStreamComponent::create(videoSources[i])); 75 81 } 76 82 77 83 MediaStreamDescriptorOwner* m_owner; 78 84 String m_label; 79 Vector<RefPtr<MediaStreamComponent> > m_components; 85 Vector<RefPtr<MediaStreamComponent> > m_audioComponents; 86 Vector<RefPtr<MediaStreamComponent> > m_videoComponents; 80 87 bool m_ended; 81 88 }; -
trunk/Source/WebKit/chromium/ChangeLog
r105757 r105774 1 2012-01-24 Tommy Widenflycht <tommyw@google.com> 2 3 MediaStream API: Split the MediaStream track list into audio/video specific ones. 4 https://bugs.webkit.org/show_bug.cgi?id=76614 5 6 Reviewed by Darin Fisher. 7 8 * public/WebUserMediaClient.h: 9 (WebKit::WebUserMediaClient::requestUserMedia): 10 * public/WebUserMediaRequest.h: 11 * public/platform/WebMediaStreamDescriptor.h: 12 * src/UserMediaClientImpl.cpp: 13 (WebKit::UserMediaClientImpl::requestUserMedia): 14 * src/UserMediaClientImpl.h: 15 * src/WebMediaStreamDescriptor.cpp: 16 (WebKit::WebMediaStreamDescriptor::sources): 17 (WebKit::WebMediaStreamDescriptor::audioSources): 18 (WebKit::WebMediaStreamDescriptor::videoSources): 19 (WebKit::WebMediaStreamDescriptor::initialize): 20 * src/WebUserMediaRequest.cpp: 21 (WebKit::WebUserMediaRequest::requestSucceeded): 22 1 23 2012-01-23 Simon Fraser <simon.fraser@apple.com> 2 24 -
trunk/Source/WebKit/chromium/public/WebUserMediaClient.h
r101058 r105774 42 42 virtual ~WebUserMediaClient() { } 43 43 44 virtual void requestUserMedia(const WebUserMediaRequest&, const WebVector<WebMediaStreamSource>&) = 0; 44 // DEPRECATED 45 virtual void requestUserMedia(const WebUserMediaRequest&, const WebVector<WebMediaStreamSource>&) { } 46 47 virtual void requestUserMedia(const WebUserMediaRequest&, const WebVector<WebMediaStreamSource>& audioSources, const WebVector<WebMediaStreamSource>& videoSources) { } 48 45 49 virtual void cancelUserMediaRequest(const WebUserMediaRequest&) = 0; 46 50 }; -
trunk/Source/WebKit/chromium/public/WebUserMediaRequest.h
r101122 r105774 69 69 WEBKIT_EXPORT WebSecurityOrigin securityOrigin() const; 70 70 71 // DEPRECATED 71 72 WEBKIT_EXPORT void requestSucceeded(const WebVector<WebMediaStreamSource>&); 73 74 WEBKIT_EXPORT void requestSucceeded(const WebVector<WebMediaStreamSource>& audioSources, const WebVector<WebMediaStreamSource>& videoSources); 72 75 WEBKIT_EXPORT void requestFailed(); 73 76 -
trunk/Source/WebKit/chromium/public/platform/WebMediaStreamDescriptor.h
r105318 r105774 53 53 54 54 WEBKIT_EXPORT void assign(const WebMediaStreamDescriptor&); 55 56 // DEPRECATED 55 57 WEBKIT_EXPORT void initialize(const WebString& label, const WebVector<WebMediaStreamSource>&); 58 59 WEBKIT_EXPORT void initialize(const WebString& label, const WebVector<WebMediaStreamSource>& audioSources, const WebVector<WebMediaStreamSource>& videoSources); 56 60 WEBKIT_EXPORT void reset(); 57 61 bool isNull() const { return m_private.isNull(); } 58 62 59 63 WEBKIT_EXPORT WebString label() const; 64 65 // DEPRECATED 60 66 WEBKIT_EXPORT void sources(WebVector<WebMediaStreamSource>&) const; 67 68 WEBKIT_EXPORT void audioSources(WebVector<WebMediaStreamSource>&) const; 69 WEBKIT_EXPORT void videoSources(WebVector<WebMediaStreamSource>&) const; 61 70 62 71 #if WEBKIT_IMPLEMENTATION -
trunk/Source/WebKit/chromium/src/UserMediaClientImpl.cpp
r102603 r105774 39 39 #include "WebViewImpl.h" 40 40 #include "platform/WebMediaStreamSource.h" 41 #include <wtf/RefPtr.h> 41 42 42 43 using namespace WebCore; … … 53 54 } 54 55 55 void UserMediaClientImpl::requestUserMedia(PassRefPtr<UserMediaRequest> request, const MediaStreamSourceVector& sources)56 void UserMediaClientImpl::requestUserMedia(PassRefPtr<UserMediaRequest> prpRequest, const MediaStreamSourceVector& audioSources, const MediaStreamSourceVector& videoSources) 56 57 { 57 if (m_client) 58 m_client->requestUserMedia(request, sources); 58 if (m_client) { 59 RefPtr<UserMediaRequest> request = prpRequest; 60 61 // FIXME: Cleanup when the chromium code has switched to the split sources implementation. 62 MediaStreamSourceVector combinedSources; 63 combinedSources.append(audioSources); 64 combinedSources.append(videoSources); 65 m_client->requestUserMedia(PassRefPtr<UserMediaRequest>(request.get()), combinedSources); 66 67 m_client->requestUserMedia(request.release(), audioSources, videoSources); 68 } 59 69 } 60 70 -
trunk/Source/WebKit/chromium/src/UserMediaClientImpl.h
r101058 r105774 51 51 // WebCore::UserMediaClient ---------------------------------------------- 52 52 virtual void pageDestroyed(); 53 virtual void requestUserMedia(PassRefPtr<WebCore::UserMediaRequest>, const WebCore::MediaStreamSourceVector& );53 virtual void requestUserMedia(PassRefPtr<WebCore::UserMediaRequest>, const WebCore::MediaStreamSourceVector&, const WebCore::MediaStreamSourceVector&); 54 54 virtual void cancelUserMediaRequest(WebCore::UserMediaRequest*); 55 55 -
trunk/Source/WebKit/chromium/src/WebMediaStreamDescriptor.cpp
r105318 r105774 61 61 } 62 62 63 // FIXME: Cleanup when the chromium code has switched to the split sources implementation. 63 64 void WebMediaStreamDescriptor::sources(WebVector<WebMediaStreamSource>& webSources) const 64 65 { 65 size_t numberOfSources = m_private->numberOfComponents(); 66 size_t numberOfAudioSources = m_private->numberOfAudioComponents(); 67 size_t numberOfVideoSources = m_private->numberOfVideoComponents(); 68 WebVector<WebMediaStreamSource> result(numberOfAudioSources + numberOfVideoSources); 69 size_t i = 0; 70 for (size_t j = 0; j < numberOfAudioSources; ++i, ++j) 71 result[i] = m_private->audioComponent(j)->source(); 72 for (size_t j = 0; j < numberOfVideoSources; ++i, ++j) 73 result[i] = m_private->videoComponent(j)->source(); 74 webSources.swap(result); 75 } 76 77 void WebMediaStreamDescriptor::audioSources(WebVector<WebMediaStreamSource>& webSources) const 78 { 79 size_t numberOfSources = m_private->numberOfAudioComponents(); 66 80 WebVector<WebMediaStreamSource> result(numberOfSources); 67 81 for (size_t i = 0; i < numberOfSources; ++i) 68 result[i] = m_private->component(i)->source(); 82 result[i] = m_private->audioComponent(i)->source(); 83 webSources.swap(result); 84 } 85 86 void WebMediaStreamDescriptor::videoSources(WebVector<WebMediaStreamSource>& webSources) const 87 { 88 size_t numberOfSources = m_private->numberOfVideoComponents(); 89 WebVector<WebMediaStreamSource> result(numberOfSources); 90 for (size_t i = 0; i < numberOfSources; ++i) 91 result[i] = m_private->videoComponent(i)->source(); 69 92 webSources.swap(result); 70 93 } … … 86 109 } 87 110 111 // FIXME: Cleanup when the chromium code has switched to the split sources implementation. 88 112 void WebMediaStreamDescriptor::initialize(const WebString& label, const WebVector<WebMediaStreamSource>& sources) 89 113 { 90 MediaStreamSourceVector s;114 MediaStreamSourceVector audio, video; 91 115 for (size_t i = 0; i < sources.size(); ++i) { 92 116 MediaStreamSource* curr = sources[i]; 93 s.append(curr); 117 if (curr->type() == MediaStreamSource::TypeAudio) 118 audio.append(curr); 119 else if (curr->type() == MediaStreamSource::TypeVideo) 120 video.append(curr); 94 121 } 95 m_private = MediaStreamDescriptor::create(label, s); 122 m_private = MediaStreamDescriptor::create(label, audio, video); 123 } 124 125 void WebMediaStreamDescriptor::initialize(const WebString& label, const WebVector<WebMediaStreamSource>& audioSources, const WebVector<WebMediaStreamSource>& videoSources) 126 { 127 MediaStreamSourceVector audio, video; 128 for (size_t i = 0; i < audioSources.size(); ++i) { 129 MediaStreamSource* curr = audioSources[i]; 130 audio.append(curr); 131 } 132 for (size_t i = 0; i < videoSources.size(); ++i) { 133 MediaStreamSource* curr = videoSources[i]; 134 video.append(curr); 135 } 136 m_private = MediaStreamDescriptor::create(label, audio, video); 96 137 } 97 138 -
trunk/Source/WebKit/chromium/src/WebUserMediaRequest.cpp
r102603 r105774 87 87 } 88 88 89 void WebUserMediaRequest::requestSucceeded(const WebVector<WebMediaStreamSource>& audioSources, const WebVector<WebMediaStreamSource>& videoSources) 90 { 91 if (m_private.isNull()) 92 return; 93 94 MediaStreamSourceVector audio; 95 for (size_t i = 0; i < audioSources.size(); ++i) { 96 MediaStreamSource* curr = audioSources[i]; 97 audio.append(curr); 98 } 99 MediaStreamSourceVector video; 100 for (size_t i = 0; i < videoSources.size(); ++i) { 101 MediaStreamSource* curr = videoSources[i]; 102 video.append(curr); 103 } 104 105 m_private->succeed(audio, video); 106 } 107 108 // FIXME: Cleanup when the chromium code has switched to the split sources implementation. 89 109 void WebUserMediaRequest::requestSucceeded(const WebVector<WebMediaStreamSource>& sources) 90 110 { … … 92 112 return; 93 113 94 MediaStreamSourceVector s;114 MediaStreamSourceVector audio, video; 95 115 for (size_t i = 0; i < sources.size(); ++i) { 96 116 MediaStreamSource* curr = sources[i]; 97 s.append(curr); 117 if (curr->type() == MediaStreamSource::TypeAudio) 118 audio.append(curr); 119 else if (curr->type() == MediaStreamSource::TypeVideo) 120 video.append(curr); 98 121 } 99 122 100 m_private->succeed( s);123 m_private->succeed(audio, video); 101 124 } 102 125
Note: See TracChangeset
for help on using the changeset viewer.