OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "config.h" | 5 #include "config.h" |
6 #include "WebMediaPlayerClientImpl.h" | 6 #include "WebMediaPlayerClientImpl.h" |
7 | 7 |
8 #if ENABLE(VIDEO) | 8 #if ENABLE(VIDEO) |
9 | 9 |
10 #include "Frame.h" | 10 #include "Frame.h" |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 | 93 |
94 WebMediaPlayer* WebMediaPlayerClientImpl::mediaPlayer() const | 94 WebMediaPlayer* WebMediaPlayerClientImpl::mediaPlayer() const |
95 { | 95 { |
96 return m_webMediaPlayer.get(); | 96 return m_webMediaPlayer.get(); |
97 } | 97 } |
98 | 98 |
99 // WebMediaPlayerClient -------------------------------------------------------- | 99 // WebMediaPlayerClient -------------------------------------------------------- |
100 | 100 |
101 WebMediaPlayerClientImpl::~WebMediaPlayerClientImpl() | 101 WebMediaPlayerClientImpl::~WebMediaPlayerClientImpl() |
102 { | 102 { |
103 // VideoLayerChromium may outlive this object so make sure all frames are | 103 // VideoLayerChromium may outlive this object so clear the back pointer. |
104 // released. | |
105 #if USE(ACCELERATED_COMPOSITING) | 104 #if USE(ACCELERATED_COMPOSITING) |
106 if (m_videoLayer.get()) | 105 if (m_videoLayer.get()) |
107 m_videoLayer->releaseCurrentFrame(); | 106 m_videoLayer->releaseProvider(); |
108 #endif | 107 #endif |
109 } | 108 } |
110 | 109 |
111 void WebMediaPlayerClientImpl::networkStateChanged() | 110 void WebMediaPlayerClientImpl::networkStateChanged() |
112 { | 111 { |
113 ASSERT(m_mediaPlayer); | 112 ASSERT(m_mediaPlayer); |
114 m_mediaPlayer->networkStateChanged(); | 113 m_mediaPlayer->networkStateChanged(); |
115 } | 114 } |
116 | 115 |
117 void WebMediaPlayerClientImpl::readyStateChanged() | 116 void WebMediaPlayerClientImpl::readyStateChanged() |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 return KURL(); | 212 return KURL(); |
214 #endif | 213 #endif |
215 } | 214 } |
216 | 215 |
217 // MediaPlayerPrivateInterface ------------------------------------------------- | 216 // MediaPlayerPrivateInterface ------------------------------------------------- |
218 | 217 |
219 void WebMediaPlayerClientImpl::load(const String& url) | 218 void WebMediaPlayerClientImpl::load(const String& url) |
220 { | 219 { |
221 m_url = url; | 220 m_url = url; |
222 | 221 |
223 // Video frame object is owned by WebMediaPlayer. Before destroying | |
224 // WebMediaPlayer all frames need to be released. | |
225 #if USE(ACCELERATED_COMPOSITING) | |
226 if (m_videoLayer.get()) | |
227 m_videoLayer->releaseCurrentFrame(); | |
228 #endif | |
229 | |
230 if (m_preload == MediaPlayer::None) { | 222 if (m_preload == MediaPlayer::None) { |
231 m_webMediaPlayer.clear(); | 223 m_webMediaPlayer.clear(); |
232 m_delayingLoad = true; | 224 m_delayingLoad = true; |
233 } else | 225 } else |
234 loadInternal(); | 226 loadInternal(); |
235 } | 227 } |
236 | 228 |
237 void WebMediaPlayerClientImpl::loadInternal() | 229 void WebMediaPlayerClientImpl::loadInternal() |
238 { | 230 { |
239 Frame* frame = static_cast<HTMLMediaElement*>(m_mediaPlayer->mediaPlayerClie
nt())->document()->frame(); | 231 Frame* frame = static_cast<HTMLMediaElement*>(m_mediaPlayer->mediaPlayerClie
nt())->document()->frame(); |
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
570 return m_supportsAcceleratedCompositing; | 562 return m_supportsAcceleratedCompositing; |
571 } | 563 } |
572 | 564 |
573 bool WebMediaPlayerClientImpl::acceleratedRenderingInUse() | 565 bool WebMediaPlayerClientImpl::acceleratedRenderingInUse() |
574 { | 566 { |
575 return m_videoLayer.get() && m_videoLayer->layerTreeHost(); | 567 return m_videoLayer.get() && m_videoLayer->layerTreeHost(); |
576 } | 568 } |
577 | 569 |
578 VideoFrameChromium* WebMediaPlayerClientImpl::getCurrentFrame() | 570 VideoFrameChromium* WebMediaPlayerClientImpl::getCurrentFrame() |
579 { | 571 { |
580 VideoFrameChromium* videoFrame = 0; | 572 ASSERT(!m_currentVideoFrame); |
581 if (m_webMediaPlayer.get()) { | 573 if (m_webMediaPlayer && !m_currentVideoFrame) { |
582 WebVideoFrame* webkitVideoFrame = m_webMediaPlayer->getCurrentFrame(); | 574 WebVideoFrame* webkitVideoFrame = m_webMediaPlayer->getCurrentFrame(); |
583 if (webkitVideoFrame) | 575 if (webkitVideoFrame) |
584 videoFrame = new VideoFrameChromiumImpl(webkitVideoFrame); | 576 m_currentVideoFrame = adoptPtr(new VideoFrameChromiumImpl(webkitVide
oFrame)); |
585 } | 577 } |
586 return videoFrame; | 578 return m_currentVideoFrame.get(); |
587 } | 579 } |
588 | 580 |
589 void WebMediaPlayerClientImpl::putCurrentFrame(VideoFrameChromium* videoFrame) | 581 void WebMediaPlayerClientImpl::putCurrentFrame(VideoFrameChromium* videoFrame) |
590 { | 582 { |
591 if (videoFrame) { | 583 if (videoFrame && videoFrame == m_currentVideoFrame) { |
592 if (m_webMediaPlayer.get()) { | 584 if (m_webMediaPlayer.get()) { |
593 m_webMediaPlayer->putCurrentFrame( | 585 m_webMediaPlayer->putCurrentFrame( |
594 VideoFrameChromiumImpl::toWebVideoFrame(videoFrame)); | 586 VideoFrameChromiumImpl::toWebVideoFrame(videoFrame)); |
595 } | 587 } |
596 delete videoFrame; | 588 ASSERT(videoFrame == m_currentVideoFrame); |
| 589 m_currentVideoFrame.clear(); |
597 } | 590 } |
598 } | 591 } |
599 #endif | 592 #endif |
600 | 593 |
601 PassOwnPtr<MediaPlayerPrivateInterface> WebMediaPlayerClientImpl::create(MediaPl
ayer* player) | 594 PassOwnPtr<MediaPlayerPrivateInterface> WebMediaPlayerClientImpl::create(MediaPl
ayer* player) |
602 { | 595 { |
603 OwnPtr<WebMediaPlayerClientImpl> client = adoptPtr(new WebMediaPlayerClientI
mpl()); | 596 OwnPtr<WebMediaPlayerClientImpl> client = adoptPtr(new WebMediaPlayerClientI
mpl()); |
604 client->m_mediaPlayer = player; | 597 client->m_mediaPlayer = player; |
605 | 598 |
606 #if USE(ACCELERATED_COMPOSITING) | 599 #if USE(ACCELERATED_COMPOSITING) |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
680 WebVector<float*> webAudioData(n); | 673 WebVector<float*> webAudioData(n); |
681 for (size_t i = 0; i < n; ++i) | 674 for (size_t i = 0; i < n; ++i) |
682 webAudioData[i] = bus->channel(i)->data(); | 675 webAudioData[i] = bus->channel(i)->data(); |
683 | 676 |
684 m_webAudioSourceProvider->provideInput(webAudioData, framesToProcess); | 677 m_webAudioSourceProvider->provideInput(webAudioData, framesToProcess); |
685 } | 678 } |
686 | 679 |
687 } // namespace WebKit | 680 } // namespace WebKit |
688 | 681 |
689 #endif // ENABLE(VIDEO) | 682 #endif // ENABLE(VIDEO) |
OLD | NEW |