Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(188)

Unified Diff: content/renderer/media/media_stream_impl.h

Issue 10383151: Refactor MediaStreamImpl and PeerConnection glue implementation after WebKit changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Adding forgotten file. Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/media_stream_impl.h
diff --git a/content/renderer/media/media_stream_impl.h b/content/renderer/media/media_stream_impl.h
index c1206c02ad0becdf8a07b8491467194a883bd558..670cc04078b1f7be771a61c9358888029f0137e8 100644
--- a/content/renderer/media/media_stream_impl.h
+++ b/content/renderer/media/media_stream_impl.h
@@ -21,6 +21,7 @@
#include "base/threading/thread.h"
#include "content/common/content_export.h"
#include "content/public/renderer/render_view_observer.h"
+#include "content/renderer/media/media_stream_extra_data.h"
#include "content/renderer/media/media_stream_dispatcher_eventhandler.h"
#include "content/renderer/media/rtc_video_decoder.h"
#include "third_party/libjingle/source/talk/app/webrtc/mediastream.h"
@@ -87,11 +88,13 @@ class CONTENT_EXPORT MediaStreamImpl
WebKit::WebPeerConnectionHandlerClient* client);
virtual WebKit::WebPeerConnection00Handler* CreatePeerConnectionHandlerJsep(
WebKit::WebPeerConnection00HandlerClient* client);
- virtual void ClosePeerConnection(PeerConnectionHandlerBase* pc_handler);
- virtual webrtc::LocalMediaStreamInterface* GetLocalMediaStream(
+ virtual void StopLocalMediaStream(
const WebKit::WebMediaStreamDescriptor& stream);
- bool StopLocalMediaStream(const WebKit::WebMediaStreamDescriptor& stream);
+ // A new MediaStream have been created based on existing tracks.
+ virtual void CreateMediaStream(
+ WebKit::WebFrame* frame,
+ WebKit::WebMediaStreamDescriptor* stream);
// WebKit::WebUserMediaClient implementation
virtual void requestUserMedia(
@@ -133,11 +136,16 @@ class CONTENT_EXPORT MediaStreamImpl
// content::RenderViewObserver OVERRIDE
virtual void FrameWillClose(WebKit::WebFrame* frame) OVERRIDE;
- private:
- FRIEND_TEST_ALL_PREFIXES(MediaStreamImplTest, Basic);
- FRIEND_TEST_ALL_PREFIXES(MediaStreamImplTest, MultiplePeerConnections);
- FRIEND_TEST_ALL_PREFIXES(MediaStreamImplTest, LocalMediaStream);
+ protected:
+ // This function is virtual for test purposes. A test can override this to
+ // test requesting local media streams.
+ virtual void CompleteGetUserMediaRequest(
+ const WebKit::WebMediaStreamDescriptor& stream,
+ WebKit::WebUserMediaRequest* request);
tommi (sloooow) - chröme 2012/05/13 20:08:46 strange indent
perkj_chrome 2012/05/14 11:50:25 Done.
+ // This function is virtual for test purposes.
+ virtual WebKit::WebMediaStreamDescriptor GetMediaStream(const GURL& url);
+ private:
class VideoRendererWrapper : public webrtc::VideoRendererWrapperInterface {
public:
explicit VideoRendererWrapper(RTCVideoDecoder* decoder);
@@ -164,23 +172,11 @@ class CONTENT_EXPORT MediaStreamImpl
};
typedef std::map<int, UserMediaRequestInfo> MediaRequestMap;
- // We keep a list of the generated local media streams,
- // so that we can enable and disable individual tracks and add renderers
- // when needed.
+ // We keep a list of the label and WebFrame of generated local media streams,
+ // so that we can stop them when needed.
+ typedef std::map<std::string, WebKit::WebFrame*> LocalNativeStreamMap;
typedef talk_base::scoped_refptr<webrtc::LocalMediaStreamInterface>
- LocalMediaStreamPtr;
- struct LocalMediaStreamInfo {
- LocalMediaStreamInfo() : frame_(NULL), stream_() {}
- LocalMediaStreamInfo(WebKit::WebFrame* frame,
- webrtc::LocalMediaStreamInterface* stream)
- : frame_(frame), stream_(stream) {}
- ~LocalMediaStreamInfo();
- // WebFrame that requested the Stream.
- WebKit::WebFrame* frame_;
- // Native representation of a local MediaStream.
- LocalMediaStreamPtr stream_;
- };
- typedef std::map<std::string, LocalMediaStreamInfo> LocalNativeStreamMap;
+ LocalNativeStreamPtr;
void InitializeWorkerThread(talk_base::Thread** thread,
base::WaitableEvent* event);
@@ -193,14 +189,13 @@ class CONTENT_EXPORT MediaStreamImpl
PeerConnectionHandlerBase* FindPeerConnectionByStream(
const WebKit::WebMediaStreamDescriptor& stream);
scoped_refptr<media::VideoDecoder> CreateLocalVideoDecoder(
- webrtc::LocalMediaStreamInterface* stream,
+ webrtc::MediaStreamInterface* stream,
media::MessageLoopFactory* message_loop_factory);
scoped_refptr<media::VideoDecoder> CreateRemoteVideoDecoder(
- const WebKit::WebMediaStreamDescriptor& stream,
- PeerConnectionHandlerBase* pc_handler,
+ webrtc::MediaStreamInterface* stream,
const GURL& url,
media::MessageLoopFactory* message_loop_factory);
- void CreateNativeLocalMediaStream(
+ LocalNativeStreamPtr CreateNativeLocalMediaStream(
const std::string& label,
WebKit::WebFrame* frame,
const WebKit::WebVector<WebKit::WebMediaStreamSource>& audio_sources,
@@ -222,11 +217,6 @@ class CONTENT_EXPORT MediaStreamImpl
scoped_ptr<content::IpcPacketSocketFactory> socket_factory_;
scoped_refptr<VideoCaptureImplManager> vc_manager_;
- // peer_connection_handlers_ contains raw references, owned by WebKit. A
- // pointer is valid until stop is called on the object (which will call
- // ClosePeerConnection on us and we remove the pointer).
- std::list<PeerConnectionHandlerBase*> peer_connection_handlers_;
-
MediaRequestMap user_media_requests_;
LocalNativeStreamMap local_media_streams_;

Powered by Google App Engine
This is Rietveld 408576698