Title: [209125] trunk/Source/WebCore
Revision
209125
Author
ph...@webkit.org
Date
2016-11-30 00:36:45 -0800 (Wed, 30 Nov 2016)

Log Message

[WebRTC][OpenWebRTC] Temporary device selection support
https://bugs.webkit.org/show_bug.cgi?id=165141

Reviewed by Alejandro G. Castro.

Make sure the player handles only one audio and video track at
most for now. The device choice can be influenced with the
WEBKIT_VIDEO_DEVICE and WEBKIT_AUDIO_DEVICE environment variables.
Each variable optionally holds the name of the device to use.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp:
(WebCore::MediaPlayerPrivateGStreamerOwr::play):
(WebCore::MediaPlayerPrivateGStreamerOwr::load):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (209124 => 209125)


--- trunk/Source/WebCore/ChangeLog	2016-11-30 08:30:51 UTC (rev 209124)
+++ trunk/Source/WebCore/ChangeLog	2016-11-30 08:36:45 UTC (rev 209125)
@@ -1,3 +1,19 @@
+2016-11-29  Philippe Normand  <pnorm...@igalia.com>
+
+        [WebRTC][OpenWebRTC] Temporary device selection support
+        https://bugs.webkit.org/show_bug.cgi?id=165141
+
+        Reviewed by Alejandro G. Castro.
+
+        Make sure the player handles only one audio and video track at
+        most for now. The device choice can be influenced with the
+        WEBKIT_VIDEO_DEVICE and WEBKIT_AUDIO_DEVICE environment variables.
+        Each variable optionally holds the name of the device to use.
+
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp:
+        (WebCore::MediaPlayerPrivateGStreamerOwr::play):
+        (WebCore::MediaPlayerPrivateGStreamerOwr::load):
+
 2016-11-29  Claudio Saavedra  <csaave...@igalia.com>
 
         Build fix with !HAVE(ACCESSIBILITY)

Modified: trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp (209124 => 209125)


--- trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp	2016-11-30 08:30:51 UTC (rev 209124)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp	2016-11-30 08:36:45 UTC (rev 209125)
@@ -73,14 +73,11 @@
 
     GST_DEBUG("Connecting to live stream, descriptor: %p", m_streamPrivate.get());
 
-    for (auto track : m_streamPrivate->tracks()) {
-        if (!track->enabled()) {
-            GST_DEBUG("Track %s disabled", track->label().ascii().data());
-            continue;
-        }
+    if (m_videoTrack)
+        maybeHandleChangeMutedState(*m_videoTrack.get());
 
-        maybeHandleChangeMutedState(*track);
-    }
+    if (m_audioTrack)
+        maybeHandleChangeMutedState(*m_audioTrack.get());
 }
 
 void MediaPlayerPrivateGStreamerOwr::pause()
@@ -192,18 +189,37 @@
             continue;
         }
 
-        track->addObserver(*this);
+        GST_DEBUG("Processing track %s", track->label().ascii().data());
 
+        bool observeTrack = false;
+
+        // TODO: Support for multiple tracks of the same type.
+
         switch (track->type()) {
         case RealtimeMediaSource::Audio:
-            m_audioTrack = track;
+            if (!m_audioTrack) {
+                String preSelectedDevice = getenv("WEBKIT_AUDIO_DEVICE");
+                if (!preSelectedDevice || (preSelectedDevice == track->label())) {
+                    m_audioTrack = track;
+                    observeTrack = true;
+                }
+            }
             break;
         case RealtimeMediaSource::Video:
-            m_videoTrack = track;
+            if (!m_videoTrack) {
+                String preSelectedDevice = getenv("WEBKIT_VIDEO_DEVICE");
+                if (!preSelectedDevice || (preSelectedDevice == track->label())) {
+                    m_videoTrack = track;
+                    observeTrack = true;
+                }
+            }
             break;
         case RealtimeMediaSource::None:
             GST_WARNING("Loading a track with None type");
         }
+
+        if (observeTrack)
+            track->addObserver(*this);
     }
 
     m_readyState = MediaPlayer::HaveEnoughData;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to