Index: content/renderer/media/webmediaplayer_impl.cc |
diff --git a/content/renderer/media/webmediaplayer_impl.cc b/content/renderer/media/webmediaplayer_impl.cc |
index 088d545ac4dc5ef426cd0723d6848f5d74a723f6..ca86d5380dacdf4ac4bbc6c8deb01218ab261d3c 100644 |
--- a/content/renderer/media/webmediaplayer_impl.cc |
+++ b/content/renderer/media/webmediaplayer_impl.cc |
@@ -118,6 +118,30 @@ const double kMaxRate = 16.0; |
// Prefix for histograms related to Encrypted Media Extensions. |
const char* kMediaEme = "Media.EME."; |
+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(); |
+ 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 { |
@@ -648,7 +672,9 @@ bool WebMediaPlayerImpl::copyVideoTextureToPlatformTexture( |
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; |
} |