| 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 |