Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1511)

Unified Diff: content/renderer/pepper/ppb_video_decoder_impl.cc

Issue 235953002: Merge PlatformVideoDecoder into PPB_VideoDecoder_Impl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/pepper/ppb_video_decoder_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/pepper/ppb_video_decoder_impl.cc
diff --git a/content/renderer/pepper/ppb_video_decoder_impl.cc b/content/renderer/pepper/ppb_video_decoder_impl.cc
index bf9e90ff2e8dd39e44c78e8b2315c6b25192e27f..7a7d61ae6aef849f238249142dc8fbb729cede80 100644
--- a/content/renderer/pepper/ppb_video_decoder_impl.cc
+++ b/content/renderer/pepper/ppb_video_decoder_impl.cc
@@ -9,7 +9,7 @@
#include "base/logging.h"
#include "base/message_loop/message_loop.h"
#include "base/metrics/histogram.h"
-#include "content/renderer/media/pepper_platform_video_decoder.h"
+#include "content/common/gpu/client/gpu_channel_host.h"
#include "content/renderer/pepper/common.h"
#include "content/renderer/pepper/host_globals.h"
#include "content/renderer/pepper/pepper_platform_context_3d.h"
@@ -17,6 +17,7 @@
#include "content/renderer/pepper/plugin_module.h"
#include "content/renderer/pepper/ppb_buffer_impl.h"
#include "content/renderer/pepper/ppb_graphics_3d_impl.h"
+#include "content/renderer/render_thread_impl.h"
#include "gpu/command_buffer/client/gles2_implementation.h"
#include "media/video/picture.h"
#include "media/video/video_decode_accelerator.h"
@@ -137,19 +138,27 @@ bool PPB_VideoDecoder_Impl::Init(PP_Resource graphics_context,
if (command_buffer_route_id == 0)
return false;
- platform_video_decoder_.reset(
- new PlatformVideoDecoder(command_buffer_route_id));
- if (!platform_video_decoder_)
+ FlushCommandBuffer();
+
+ RenderThreadImpl* render_thread = RenderThreadImpl::current();
+
+ // This is not synchronous, but subsequent IPC messages will be buffered, so
+ // it is okay to immediately send IPC messages through the returned channel.
+ GpuChannelHost* channel =
+ render_thread->EstablishGpuChannelSync(
+ CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE);
+
+ if (!channel)
return false;
- FlushCommandBuffer();
- return platform_video_decoder_->Initialize(PPToMediaProfile(profile), this);
+ decoder_ = channel->CreateVideoDecoder(command_buffer_route_id);
+ return (decoder_ && decoder_->Initialize(PPToMediaProfile(profile), this));
}
int32_t PPB_VideoDecoder_Impl::Decode(
const PP_VideoBitstreamBuffer_Dev* bitstream_buffer,
scoped_refptr<TrackedCallback> callback) {
- if (!platform_video_decoder_)
+ if (!decoder_)
return PP_ERROR_BADRESOURCE;
EnterResourceNoLock<PPB_Buffer_API> enter(bitstream_buffer->data, true);
@@ -165,14 +174,14 @@ int32_t PPB_VideoDecoder_Impl::Decode(
return PP_ERROR_BADARGUMENT;
FlushCommandBuffer();
- platform_video_decoder_->Decode(decode_buffer);
+ decoder_->Decode(decode_buffer);
return PP_OK_COMPLETIONPENDING;
}
void PPB_VideoDecoder_Impl::AssignPictureBuffers(
uint32_t no_of_buffers,
const PP_PictureBuffer_Dev* buffers) {
- if (!platform_video_decoder_)
+ if (!decoder_)
return;
UMA_HISTOGRAM_COUNTS_100("Media.PepperVideoDecoderPictureCount",
no_of_buffers);
@@ -191,46 +200,46 @@ void PPB_VideoDecoder_Impl::AssignPictureBuffers(
}
FlushCommandBuffer();
- platform_video_decoder_->AssignPictureBuffers(wrapped_buffers);
+ decoder_->AssignPictureBuffers(wrapped_buffers);
}
void PPB_VideoDecoder_Impl::ReusePictureBuffer(int32_t picture_buffer_id) {
- if (!platform_video_decoder_)
+ if (!decoder_)
return;
FlushCommandBuffer();
- platform_video_decoder_->ReusePictureBuffer(picture_buffer_id);
+ decoder_->ReusePictureBuffer(picture_buffer_id);
}
int32_t PPB_VideoDecoder_Impl::Flush(scoped_refptr<TrackedCallback> callback) {
- if (!platform_video_decoder_)
+ if (!decoder_)
return PP_ERROR_BADRESOURCE;
if (!SetFlushCallback(callback))
return PP_ERROR_INPROGRESS;
FlushCommandBuffer();
- platform_video_decoder_->Flush();
+ decoder_->Flush();
return PP_OK_COMPLETIONPENDING;
}
int32_t PPB_VideoDecoder_Impl::Reset(scoped_refptr<TrackedCallback> callback) {
- if (!platform_video_decoder_)
+ if (!decoder_)
return PP_ERROR_BADRESOURCE;
if (!SetResetCallback(callback))
return PP_ERROR_INPROGRESS;
FlushCommandBuffer();
- platform_video_decoder_->Reset();
+ decoder_->Reset();
return PP_OK_COMPLETIONPENDING;
}
void PPB_VideoDecoder_Impl::Destroy() {
FlushCommandBuffer();
- if (platform_video_decoder_)
- platform_video_decoder_.release()->Destroy();
+ if (decoder_)
+ decoder_.release()->Destroy();
ppp_videodecoder_ = NULL;
::ppapi::PPB_VideoDecoder_Shared::Destroy();
@@ -240,6 +249,7 @@ void PPB_VideoDecoder_Impl::ProvidePictureBuffers(
uint32 requested_num_of_buffers,
const gfx::Size& dimensions,
uint32 texture_target) {
+ DCHECK(RenderThreadImpl::current());
if (!ppp_videodecoder_)
return;
@@ -252,6 +262,7 @@ void PPB_VideoDecoder_Impl::ProvidePictureBuffers(
}
void PPB_VideoDecoder_Impl::PictureReady(const media::Picture& picture) {
+ DCHECK(RenderThreadImpl::current());
if (!ppp_videodecoder_)
return;
@@ -262,6 +273,7 @@ void PPB_VideoDecoder_Impl::PictureReady(const media::Picture& picture) {
}
void PPB_VideoDecoder_Impl::DismissPictureBuffer(int32 picture_buffer_id) {
+ DCHECK(RenderThreadImpl::current());
if (!ppp_videodecoder_)
return;
ppp_videodecoder_->DismissPictureBuffer(
@@ -270,6 +282,7 @@ void PPB_VideoDecoder_Impl::DismissPictureBuffer(int32 picture_buffer_id) {
void PPB_VideoDecoder_Impl::NotifyError(
media::VideoDecodeAccelerator::Error error) {
+ DCHECK(RenderThreadImpl::current());
if (!ppp_videodecoder_)
return;
@@ -280,13 +293,20 @@ void PPB_VideoDecoder_Impl::NotifyError(
media::VideoDecodeAccelerator::LARGEST_ERROR_ENUM);
}
-void PPB_VideoDecoder_Impl::NotifyResetDone() { RunResetCallback(PP_OK); }
+void PPB_VideoDecoder_Impl::NotifyResetDone() {
+ DCHECK(RenderThreadImpl::current());
+ RunResetCallback(PP_OK);
+}
void PPB_VideoDecoder_Impl::NotifyEndOfBitstreamBuffer(
int32 bitstream_buffer_id) {
+ DCHECK(RenderThreadImpl::current());
RunBitstreamBufferCallback(bitstream_buffer_id, PP_OK);
}
-void PPB_VideoDecoder_Impl::NotifyFlushDone() { RunFlushCallback(PP_OK); }
+void PPB_VideoDecoder_Impl::NotifyFlushDone() {
+ DCHECK(RenderThreadImpl::current());
+ RunFlushCallback(PP_OK);
+}
} // namespace content
« no previous file with comments | « content/renderer/pepper/ppb_video_decoder_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698