Index: content/common/gpu/media/omx_video_decode_accelerator.cc |
diff --git a/content/common/gpu/media/omx_video_decode_accelerator.cc b/content/common/gpu/media/omx_video_decode_accelerator.cc |
index f2e79812ccfe2d4ca0f61c1137cd22dc2bf4768b..8deae49f3b14ea8bd2b43d21be60233cfb552dab 100644 |
--- a/content/common/gpu/media/omx_video_decode_accelerator.cc |
+++ b/content/common/gpu/media/omx_video_decode_accelerator.cc |
@@ -4,6 +4,7 @@ |
#include "content/common/gpu/media/omx_video_decode_accelerator.h" |
+#include "base/debug/trace_event.h" |
#include "base/stl_util.h" |
#include "base/string_util.h" |
#include "content/common/gpu/gpu_channel.h" |
@@ -277,6 +278,8 @@ bool OmxVideoDecodeAccelerator::CreateComponent() { |
void OmxVideoDecodeAccelerator::Decode( |
const media::BitstreamBuffer& bitstream_buffer) { |
+ TRACE_EVENT1("Video Decoder", "OVDA::Decode", |
+ "Buffer id", bitstream_buffer.id()); |
DCHECK_EQ(message_loop_, MessageLoop::current()); |
DCHECK(!free_input_buffers_.empty()); |
@@ -353,6 +356,8 @@ void OmxVideoDecodeAccelerator::AssignPictureBuffers( |
} |
void OmxVideoDecodeAccelerator::ReusePictureBuffer(int32 picture_buffer_id) { |
+ TRACE_EVENT1("Video Decoder", "OVDA::ReusePictureBuffer", |
+ "Picture id", picture_buffer_id); |
DCHECK_EQ(message_loop_, MessageLoop::current()); |
RETURN_ON_FAILURE(CanFillBuffer(), "Can't fill buffer", ILLEGAL_STATE,); |
@@ -736,6 +741,12 @@ void OmxVideoDecodeAccelerator::OnOutputPortEnabled() { |
void OmxVideoDecodeAccelerator::FillBufferDoneTask( |
OMX_BUFFERHEADERTYPE* buffer) { |
+ media::Picture* picture = |
+ reinterpret_cast<media::Picture*>(buffer->pAppPrivate); |
+ int picture_buffer_id = picture ? picture->picture_buffer_id() : -1; |
+ TRACE_EVENT2("Video Decoder", "OVDA::FillBufferDoneTask", |
+ "Buffer id", buffer->nTimeStamp, |
+ "Picture id", picture_buffer_id); |
DCHECK_EQ(message_loop_, MessageLoop::current()); |
DCHECK_GT(output_buffers_at_component_, 0); |
--output_buffers_at_component_; |
@@ -755,11 +766,6 @@ void OmxVideoDecodeAccelerator::FillBufferDoneTask( |
saw_eos_during_flush_ = true; |
} |
- DCHECK(buffer->pAppPrivate); |
- media::Picture* picture = |
- reinterpret_cast<media::Picture*>(buffer->pAppPrivate); |
- int picture_buffer_id = picture->picture_buffer_id(); |
- |
// During the transition from Executing to Idle, and during port-flushing, all |
// pictures are sent back through here. Avoid giving them to the client. |
// Also avoid sending the (fake) EOS buffer to the client. |
@@ -771,6 +777,7 @@ void OmxVideoDecodeAccelerator::FillBufferDoneTask( |
return; |
} |
+ DCHECK(picture); |
// See Decode() for an explanation of this abuse of nTimeStamp. |
picture->set_bitstream_buffer_id(buffer->nTimeStamp); |
if (client_) |
@@ -779,6 +786,8 @@ void OmxVideoDecodeAccelerator::FillBufferDoneTask( |
void OmxVideoDecodeAccelerator::EmptyBufferDoneTask( |
OMX_BUFFERHEADERTYPE* buffer) { |
+ TRACE_EVENT1("Video Decoder", "OVDA::EmptyBufferDoneTask", |
+ "Buffer id", buffer->nTimeStamp); |
DCHECK_EQ(message_loop_, MessageLoop::current()); |
DCHECK_GT(input_buffers_at_component_, 0); |
free_input_buffers_.push(buffer); |
@@ -969,6 +978,8 @@ OMX_ERRORTYPE OmxVideoDecodeAccelerator::EmptyBufferCallback( |
OMX_HANDLETYPE component, |
OMX_PTR priv_data, |
OMX_BUFFERHEADERTYPE* buffer) { |
+ TRACE_EVENT1("Video Decoder", "OVDA::EmptyBufferCallback", |
+ "Buffer id", buffer->nTimeStamp); |
// Called on the OMX thread. |
OmxVideoDecodeAccelerator* decoder = |
static_cast<OmxVideoDecodeAccelerator*>(priv_data); |
@@ -986,6 +997,12 @@ OMX_ERRORTYPE OmxVideoDecodeAccelerator::FillBufferCallback( |
OMX_HANDLETYPE component, |
OMX_PTR priv_data, |
OMX_BUFFERHEADERTYPE* buffer) { |
+ media::Picture* picture = |
+ reinterpret_cast<media::Picture*>(buffer->pAppPrivate); |
+ int picture_buffer_id = picture ? picture->picture_buffer_id() : -1; |
+ TRACE_EVENT2("Video Decoder", "OVDA::FillBufferCallback", |
+ "Buffer id", buffer->nTimeStamp, |
+ "Picture id", picture_buffer_id); |
// Called on the OMX thread. |
OmxVideoDecodeAccelerator* decoder = |
static_cast<OmxVideoDecodeAccelerator*>(priv_data); |