Changeset 208943 in webkit
- Timestamp:
- Nov 21, 2016 1:39:26 AM (7 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r208942 r208943 1 2016-11-21 Philippe Normand <pnormand@igalia.com> 2 3 [Gstreamer] Add volume and mute support to the WebRTC mediaplayer 4 https://bugs.webkit.org/show_bug.cgi?id=153828 5 6 Reviewed by Darin Adler. 7 8 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp: 9 (WebCore::MediaPlayerPrivateGStreamerOwr::setVolume): New implementation setting the OWR source volume property. 10 (WebCore::MediaPlayerPrivateGStreamerOwr::setMuted): New implementation setting the OWR source mute property. 11 (WebCore::MediaPlayerPrivateGStreamerOwr::maybeHandleChangeMutedState): Also set audio OWR source mute state depending on the track enabled state. 12 (WebCore::MediaPlayerPrivateGStreamerOwr::trackEnabledChanged): chain to maybeHandleChangeMuteState. 13 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.h: 14 1 15 2016-11-21 Alejandro G. Castro <alex@igalia.com> and Philippe Normand <pnormand@igalia.com> 2 16 -
trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp
r208676 r208943 31 31 #include "RealtimeMediaSourceOwr.h" 32 32 #include "URL.h" 33 #include <gst/audio/streamvolume.h>34 33 #include <owr/owr.h> 35 34 #include <owr/owr_gst_audio_renderer.h> … … 100 99 { 101 100 return m_audioTrack; 101 } 102 103 void MediaPlayerPrivateGStreamerOwr::setVolume(float volume) 104 { 105 if (!m_audioTrack) 106 return; 107 108 auto& realTimeMediaSource = static_cast<RealtimeMediaSourceOwr&>(m_audioTrack->source()); 109 auto mediaSource = OWR_MEDIA_SOURCE(realTimeMediaSource.mediaSource()); 110 111 GST_DEBUG("Setting volume: %f", volume); 112 g_object_set(mediaSource, "volume", static_cast<gdouble>(volume), nullptr); 113 } 114 115 void MediaPlayerPrivateGStreamerOwr::setMuted(bool muted) 116 { 117 if (!m_audioTrack) 118 return; 119 120 auto& realTimeMediaSource = static_cast<RealtimeMediaSourceOwr&>(m_audioTrack->source()); 121 auto mediaSource = OWR_MEDIA_SOURCE(realTimeMediaSource.mediaSource()); 122 if (!mediaSource) 123 return; 124 125 GST_DEBUG("Setting mute: %s", muted ? "on":"off"); 126 g_object_set(mediaSource, "mute", muted, nullptr); 102 127 } 103 128 … … 301 326 void MediaPlayerPrivateGStreamerOwr::maybeHandleChangeMutedState(MediaStreamTrackPrivate& track) 302 327 { 303 auto realTimeMediaSource = reinterpret_cast<RealtimeMediaSourceOwr*>(&track.source());304 auto mediaSource = OWR_MEDIA_SOURCE(realTimeMediaSource ->mediaSource());305 306 GST_DEBUG("%s track now %s", track.type() == RealtimeMediaSource::Audio ? "audio":"video", realTimeMediaSource ->muted() ? "muted":"un-muted");328 auto& realTimeMediaSource = static_cast<RealtimeMediaSourceOwr&>(track.source()); 329 auto mediaSource = OWR_MEDIA_SOURCE(realTimeMediaSource.mediaSource()); 330 331 GST_DEBUG("%s track now %s", track.type() == RealtimeMediaSource::Audio ? "audio":"video", realTimeMediaSource.muted() ? "muted":"un-muted"); 307 332 switch (track.type()) { 308 333 case RealtimeMediaSource::Audio: 309 if (!realTimeMediaSource ->muted()) {334 if (!realTimeMediaSource.muted()) { 310 335 g_object_set(m_audioRenderer.get(), "disabled", false, nullptr); 311 336 owr_media_renderer_set_source(OWR_MEDIA_RENDERER(m_audioRenderer.get()), mediaSource); … … 314 339 owr_media_renderer_set_source(OWR_MEDIA_RENDERER(m_audioRenderer.get()), nullptr); 315 340 } 341 if (mediaSource) 342 g_object_set(mediaSource, "mute", !track.enabled(), nullptr); 316 343 break; 317 344 case RealtimeMediaSource::Video: 318 if (!realTimeMediaSource ->muted()) {345 if (!realTimeMediaSource.muted()) { 319 346 g_object_set(m_videoRenderer.get(), "disabled", false, nullptr); 320 347 owr_media_renderer_set_source(OWR_MEDIA_RENDERER(m_videoRenderer.get()), mediaSource); … … 334 361 } 335 362 336 void MediaPlayerPrivateGStreamerOwr::trackEnabledChanged(MediaStreamTrackPrivate&) 337 { 338 GST_DEBUG("Track enabled changed"); 363 void MediaPlayerPrivateGStreamerOwr::trackEnabledChanged(MediaStreamTrackPrivate& track) 364 { 365 GST_DEBUG("%s track now %s", track.type() == RealtimeMediaSource::Audio ? "audio":"video", track.enabled() ? "enabled":"disabled"); 366 maybeHandleChangeMutedState(track); 339 367 } 340 368 -
trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.h
r204410 r208943 41 41 static void registerMediaEngine(MediaEngineRegistrar); 42 42 43 void setSize(const IntSize&) override;43 void setSize(const IntSize&) final; 44 44 45 45 private: 46 GstElement* createVideoSink() override;47 GstElement* audioSink() const override{ return m_audioSink.get(); }48 bool isLiveStream() const override{ return true; }46 GstElement* createVideoSink() final; 47 GstElement* audioSink() const final { return m_audioSink.get(); } 48 bool isLiveStream() const final { return true; } 49 49 50 String engineDescription() const override{ return "OpenWebRTC"; }50 String engineDescription() const final { return "OpenWebRTC"; } 51 51 52 void load(const String&) override;52 void load(const String&) final; 53 53 #if ENABLE(MEDIA_SOURCE) 54 void load(const String&, MediaSourcePrivateClient*) override;54 void load(const String&, MediaSourcePrivateClient*) final; 55 55 #endif 56 void load(MediaStreamPrivate&) override;57 void cancelLoad() override{ }56 void load(MediaStreamPrivate&) final; 57 void cancelLoad() final { } 58 58 59 void prepareToPlay() override{ }60 void play() override;61 void pause() override;59 void prepareToPlay() final { } 60 void play() final; 61 void pause() final; 62 62 63 bool hasVideo() const override;64 bool hasAudio() const override;63 bool hasVideo() const final; 64 bool hasAudio() const final; 65 65 66 float duration() const override{ return 0; }66 float duration() const final { return 0; } 67 67 68 float currentTime() const override;69 void seek(float) override{ }70 bool seeking() const override{ return false; }68 float currentTime() const final; 69 void seek(float) final { } 70 bool seeking() const final { return false; } 71 71 72 void setRate(float) override{ }73 void setPreservesPitch(bool) override{ }74 bool paused() const override{ return m_paused; }72 void setRate(float) final { } 73 void setPreservesPitch(bool) final { } 74 bool paused() const final { return m_paused; } 75 75 76 bool hasClosedCaptions() const override { return false; }77 void set ClosedCaptionsVisible(bool) override { };76 void setVolume(float) final; 77 void setMuted(bool) final; 78 78 79 float maxTimeSeekable() const override { return 0; } 80 std::unique_ptr<PlatformTimeRanges> buffered() const override { return std::make_unique<PlatformTimeRanges>(); } 81 bool didLoadingProgress() const override; 79 bool hasClosedCaptions() const final { return false; } 80 void setClosedCaptionsVisible(bool) final { }; 82 81 83 unsigned long long totalBytes() const override { return 0; } 82 float maxTimeSeekable() const final { return 0; } 83 std::unique_ptr<PlatformTimeRanges> buffered() const final { return std::make_unique<PlatformTimeRanges>(); } 84 bool didLoadingProgress() const final; 84 85 85 bool canLoadPoster() const override { return false; } 86 void setPoster(const String&) override { } 86 unsigned long long totalBytes() const final { return 0; } 87 88 bool canLoadPoster() const final { return false; } 89 void setPoster(const String&) final { } 87 90 88 91 // MediaStreamTrackPrivate::Observer implementation.
Note: See TracChangeset
for help on using the changeset viewer.