Changeset 197023 in webkit
- Timestamp:
- Feb 24, 2016 2:12:54 AM (8 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r197022 r197023 1 2016-02-24 Alejandro G. Castro <alex@igalia.com> 2 3 [Gstreamer] Mediaplayer should observe the tracks and not the source 4 https://bugs.webkit.org/show_bug.cgi?id=154582 5 6 Reviewed by Philippe Normand. 7 8 We have to observe the track objects that define the 9 mediastream. Replace the source attributes with the new tracks and 10 use them properly in the class. 11 12 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp: 13 (WebCore::MediaPlayerPrivateGStreamerOwr::~MediaPlayerPrivateGStreamerOwr): 14 Make sure we are not observing anymore the tracks after 15 destruction. 16 (WebCore::MediaPlayerPrivateGStreamerOwr::hasVideo): Used the track 17 instead of the source. 18 (WebCore::MediaPlayerPrivateGStreamerOwr::hasAudio): Ditto. 19 (WebCore::MediaPlayerPrivateGStreamerOwr::currentTime): Ditto. 20 (WebCore::MediaPlayerPrivateGStreamerOwr::internalLoad): Ditto. 21 (WebCore::MediaPlayerPrivateGStreamerOwr::stop): Ditto. 22 (WebCore::MediaPlayerPrivateGStreamerOwr::trackEnded): Added, new 23 track observer API, make sure we disable the ended tracks. 24 (WebCore::MediaPlayerPrivateGStreamerOwr::trackMutedChanged): 25 Added, new track observer API. 26 (WebCore::MediaPlayerPrivateGStreamerOwr::trackSettingsChanged): 27 Added, new track observer API. 28 (WebCore::MediaPlayerPrivateGStreamerOwr::trackEnabledChanged): 29 Added, new track observer API. 30 (WebCore::MediaPlayerPrivateGStreamerOwr::sourceStopped): Deleted, 31 source observer API. 32 (WebCore::MediaPlayerPrivateGStreamerOwr::sourceMutedChanged): 33 Deleted, source observer API. 34 (WebCore::MediaPlayerPrivateGStreamerOwr::sourceSettingsChanged): 35 Deleted, source observer API. 36 (WebCore::MediaPlayerPrivateGStreamerOwr::preventSourceFromStopping): 37 Deleted, source observer API. 38 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.h: 39 Replaced the attributes representing the source with the tracks 40 and added the new track observer functions. 41 1 42 2016-02-23 Sergio Villar Senin <svillar@igalia.com> 2 43 -
trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp
r196117 r197023 57 57 LOG_MEDIA_MESSAGE("Destroying"); 58 58 59 if (hasAudio()) 60 m_audioTrack->removeObserver(*this); 61 if (hasVideo()) 62 m_videoTrack->removeObserver(*this); 63 59 64 stop(); 60 65 } … … 83 88 bool MediaPlayerPrivateGStreamerOwr::hasVideo() const 84 89 { 85 return m_video Source;90 return m_videoTrack; 86 91 } 87 92 88 93 bool MediaPlayerPrivateGStreamerOwr::hasAudio() const 89 94 { 90 return m_audio Source;95 return m_audioTrack; 91 96 } 92 97 … … 96 101 GstQuery* query = gst_query_new_position(GST_FORMAT_TIME); 97 102 98 if (m_video Source&& gst_element_query(m_videoSink.get(), query))103 if (m_videoTrack && gst_element_query(m_videoSink.get(), query)) 99 104 gst_query_parse_position(query, 0, &position); 100 else if (m_audio Source&& gst_element_query(m_audioSink.get(), query))105 else if (m_audioTrack && gst_element_query(m_audioSink.get(), query)) 101 106 gst_query_parse_position(query, 0, &position); 102 107 … … 182 187 } 183 188 184 RealtimeMediaSourceOwr* source = reinterpret_cast<RealtimeMediaSourceOwr*>(&track->source()); 185 OwrMediaSource* mediaSource = OWR_MEDIA_SOURCE(source->mediaSource()); 189 OwrMediaSource* mediaSource = OWR_MEDIA_SOURCE(reinterpret_cast<RealtimeMediaSourceOwr*>(&track->source())->mediaSource()); 186 190 187 191 switch (track->type()) { 188 192 case RealtimeMediaSource::Audio: 189 if (m_audio Source && (m_audioSource.get() == source))193 if (m_audioTrack && (m_audioTrack.get() == track)) 190 194 g_object_set(m_audioRenderer.get(), "disabled", FALSE, nullptr); 191 195 192 196 owr_media_renderer_set_source(OWR_MEDIA_RENDERER(m_audioRenderer.get()), mediaSource); 193 m_audio Source = source;194 source->addObserver(this);197 m_audioTrack = track; 198 track->addObserver(*this); 195 199 break; 196 200 case RealtimeMediaSource::Video: 197 if (m_video Source && (m_videoSource.get() == source))201 if (m_videoTrack && (m_videoTrack.get() == track)) 198 202 g_object_set(m_videoRenderer.get(), "disabled", FALSE, nullptr); 199 203 … … 202 206 g_object_set(m_videoRenderer.get(), "width", 640, "height", 480, nullptr); 203 207 owr_media_renderer_set_source(OWR_MEDIA_RENDERER(m_videoRenderer.get()), mediaSource); 204 m_video Source = source;205 source->addObserver(this);208 m_videoTrack = track; 209 track->addObserver(*this); 206 210 break; 207 211 case RealtimeMediaSource::None: … … 221 225 222 226 m_stopped = true; 223 if (m_audio Source) {227 if (m_audioTrack) { 224 228 LOG_MEDIA_MESSAGE("Stop: disconnecting audio"); 225 229 g_object_set(m_audioRenderer.get(), "disabled", TRUE, nullptr); 226 230 } 227 if (m_video Source) {231 if (m_videoTrack) { 228 232 LOG_MEDIA_MESSAGE("Stop: disconnecting video"); 229 233 g_object_set(m_videoRenderer.get(), "disabled", TRUE, nullptr); … … 277 281 } 278 282 279 void MediaPlayerPrivateGStreamerOwr:: sourceStopped()280 { 281 LOG_MEDIA_MESSAGE(" Source stopped");283 void MediaPlayerPrivateGStreamerOwr::trackEnded(MediaStreamTrackPrivate& track) 284 { 285 LOG_MEDIA_MESSAGE("Track ended"); 282 286 283 287 if (!m_streamPrivate || !m_streamPrivate->active()) { … … 286 290 } 287 291 288 for (auto& track : m_streamPrivate->tracks()) { 289 auto* source = reinterpret_cast<RealtimeMediaSourceOwr*>(&track->source()); 290 if (track->enabled()) 291 continue; 292 if (source == m_audioSource) 293 g_object_set(m_audioRenderer.get(), "disabled", TRUE, nullptr); 294 else if (source == m_videoSource) 295 g_object_set(m_videoRenderer.get(), "disabled", TRUE, nullptr); 296 } 297 } 298 299 void MediaPlayerPrivateGStreamerOwr::sourceMutedChanged() 300 { 301 LOG_MEDIA_MESSAGE("Source muted state changed"); 302 } 303 304 void MediaPlayerPrivateGStreamerOwr::sourceSettingsChanged() 305 { 306 LOG_MEDIA_MESSAGE("Source settings changed"); 307 } 308 309 bool MediaPlayerPrivateGStreamerOwr::preventSourceFromStopping() 310 { 311 LOG_MEDIA_MESSAGE("Prevent source from stopping"); 312 return false; 292 if (&track == m_audioTrack) 293 g_object_set(m_audioRenderer.get(), "disabled", TRUE, nullptr); 294 else if (&track == m_videoTrack) 295 g_object_set(m_videoRenderer.get(), "disabled", TRUE, nullptr); 296 } 297 298 void MediaPlayerPrivateGStreamerOwr::trackMutedChanged(MediaStreamTrackPrivate&) 299 { 300 LOG_MEDIA_MESSAGE("Track muted state changed"); 301 } 302 303 void MediaPlayerPrivateGStreamerOwr::trackSettingsChanged(MediaStreamTrackPrivate&) 304 { 305 LOG_MEDIA_MESSAGE("Track settings changed"); 306 } 307 308 void MediaPlayerPrivateGStreamerOwr::trackEnabledChanged(MediaStreamTrackPrivate&) 309 { 310 LOG_MEDIA_MESSAGE("Track enabled changed"); 313 311 } 314 312 -
trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.h
r196117 r197023 24 24 25 25 #include "MediaPlayerPrivateGStreamerBase.h" 26 #include " RealtimeMediaSource.h"26 #include "MediaStreamTrackPrivate.h" 27 27 28 28 typedef struct _OwrGstVideoRenderer OwrGstVideoRenderer; … … 34 34 class RealtimeMediaSourceOwr; 35 35 36 class MediaPlayerPrivateGStreamerOwr : public MediaPlayerPrivateGStreamerBase, private RealtimeMediaSource::Observer {36 class MediaPlayerPrivateGStreamerOwr : public MediaPlayerPrivateGStreamerBase, private MediaStreamTrackPrivate::Observer { 37 37 public: 38 38 explicit MediaPlayerPrivateGStreamerOwr(MediaPlayer*); … … 84 84 void setPoster(const String&) override { } 85 85 86 // RealtimeMediaSource::Observer implementation.87 void sourceStopped() override final;88 void sourceMutedChanged() override final;89 void sourceSettingsChanged() override final;90 bool preventSourceFromStopping() override final;86 // MediaStreamTrackPrivate::Observer implementation. 87 void trackEnded(MediaStreamTrackPrivate&) override final; 88 void trackMutedChanged(MediaStreamTrackPrivate&) override final; 89 void trackSettingsChanged(MediaStreamTrackPrivate&) override final; 90 void trackEnabledChanged(MediaStreamTrackPrivate&) override final; 91 91 92 92 static void getSupportedTypes(HashSet<String, ASCIICaseInsensitiveHash>&); … … 100 100 bool m_paused { true }; 101 101 bool m_stopped { true }; 102 RefPtr< RealtimeMediaSourceOwr> m_videoSource;103 RefPtr< RealtimeMediaSourceOwr> m_audioSource;102 RefPtr<MediaStreamTrackPrivate> m_videoTrack; 103 RefPtr<MediaStreamTrackPrivate> m_audioTrack; 104 104 GRefPtr<GstElement> m_audioSink; 105 105 RefPtr<MediaStreamPrivate> m_streamPrivate;
Note: See TracChangeset
for help on using the changeset viewer.