Chromium Code Reviews| Index: content/renderer/media/android/webmediaplayer_android.cc |
| diff --git a/content/renderer/media/android/webmediaplayer_android.cc b/content/renderer/media/android/webmediaplayer_android.cc |
| index 983354691660172779f851bc1588b26dcd00f485..b9e25c0ff6cfb5c08c6e0252d962d21b3f554608 100644 |
| --- a/content/renderer/media/android/webmediaplayer_android.cc |
| +++ b/content/renderer/media/android/webmediaplayer_android.cc |
| @@ -72,12 +72,36 @@ const char* kMediaEme = "Media.EME."; |
| void OnReleaseTexture( |
| const scoped_refptr<content::StreamTextureFactory>& factories, |
| uint32 texture_id, |
| - const std::vector<uint32>& release_sync_points) { |
| + uint32 release_sync_point) { |
| GLES2Interface* gl = factories->ContextGL(); |
| - for (size_t i = 0; i < release_sync_points.size(); i++) |
| - gl->WaitSyncPointCHROMIUM(release_sync_points[i]); |
| + gl->WaitSyncPointCHROMIUM(release_sync_point); |
| gl->DeleteTextures(1, &texture_id); |
| } |
| + |
| +class SyncPointProviderImpl : public media::VideoFrame::SyncPointProvider { |
| + public: |
| + explicit SyncPointProviderImpl( |
| + blink::WebGraphicsContext3D* web_graphics_context) |
| + : web_graphics_context_(web_graphics_context) {} |
| + virtual ~SyncPointProviderImpl(); |
| + virtual uint32 InsertSyncPoint(); |
|
danakj
2014/06/19 15:56:26
since you're in the .cc you could define these met
dshwang
2014/06/23 18:33:20
Done.
|
| + virtual void WaitSyncPoint(uint32 sync_point); |
| + |
| + private: |
| + blink::WebGraphicsContext3D* web_graphics_context_; |
| +}; |
| + |
| +SyncPointProviderImpl::~SyncPointProviderImpl() { |
| +} |
| + |
| +uint32 SyncPointProviderImpl::InsertSyncPoint() { |
| + return web_graphics_context_->insertSyncPoint(); |
| +} |
| + |
| +void SyncPointProviderImpl::WaitSyncPoint(uint32 sync_point) { |
| + web_graphics_context_->waitSyncPoint(sync_point); |
| +} |
| + |
| } // namespace |
| namespace content { |
| @@ -539,7 +563,9 @@ bool WebMediaPlayerAndroid::copyVideoTextureToPlatformTexture( |
| web_graphics_context->bindTexture(GL_TEXTURE_2D, texture); |
| web_graphics_context->deleteTexture(source_texture); |
| web_graphics_context->flush(); |
| - video_frame->AppendReleaseSyncPoint(web_graphics_context->insertSyncPoint()); |
| + |
| + SyncPointProviderImpl provider(web_graphics_context); |
| + video_frame->UpdateReleaseSyncPoint(provider); |
| return true; |
| } |