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

Unified Diff: content/common/gpu/media/video_decode_accelerator_unittest.cc

Issue 813693006: Add accelerated video decoder interface, VP8 and H.264 implementations and hook up to V4L2SVDA (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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
Index: content/common/gpu/media/video_decode_accelerator_unittest.cc
diff --git a/content/common/gpu/media/video_decode_accelerator_unittest.cc b/content/common/gpu/media/video_decode_accelerator_unittest.cc
index 0c27b1cc7f52be49100c30e743a9d359bfce7aa6..d3b80906e9e6d3cc30b895b96a0e3eb3fd7b7dbd 100644
--- a/content/common/gpu/media/video_decode_accelerator_unittest.cc
+++ b/content/common/gpu/media/video_decode_accelerator_unittest.cc
@@ -203,12 +203,16 @@ enum ClientState {
// A helper class used to manage the lifetime of a Texture.
class TextureRef : public base::RefCounted<TextureRef> {
public:
- TextureRef(const base::Closure& no_longer_needed_cb)
- : no_longer_needed_cb_(no_longer_needed_cb) {}
+ TextureRef(uint32 texture_id, const base::Closure& no_longer_needed_cb)
+ : texture_id_(texture_id), no_longer_needed_cb_(no_longer_needed_cb) {}
+
+ int32 texture_id() const { return texture_id_; }
private:
friend class base::RefCounted<TextureRef>;
~TextureRef();
+
+ uint32 texture_id_;
base::Closure no_longer_needed_cb_;
};
@@ -358,6 +362,8 @@ class GLRenderingVDAClient
// CS_RESET_State.
TextureRefMap pending_textures_;
+ int32 next_picture_buffer_id_;
+
DISALLOW_IMPLICIT_CONSTRUCTORS(GLRenderingVDAClient);
};
@@ -398,7 +404,8 @@ GLRenderingVDAClient::GLRenderingVDAClient(
suppress_rendering_(suppress_rendering),
delay_reuse_after_frame_num_(delay_reuse_after_frame_num),
decode_calls_per_second_(decode_calls_per_second),
- render_as_thumbnails_(render_as_thumbnails) {
+ render_as_thumbnails_(render_as_thumbnails),
+ next_picture_buffer_id_(1) {
CHECK_GT(num_in_flight_decodes, 0);
CHECK_GT(num_play_throughs, 0);
// |num_in_flight_decodes_| is unsupported if |decode_calls_per_second_| > 0.
@@ -435,7 +442,7 @@ GLRenderingVDAClient::CreateV4L2VDA() {
scoped_ptr<media::VideoDecodeAccelerator> decoder;
#if defined(OS_CHROMEOS) && (defined(ARCH_CPU_ARMEL) || \
(defined(USE_OZONE) && defined(USE_V4L2_CODEC)))
- scoped_ptr<V4L2Device> device = V4L2Device::Create(V4L2Device::kDecoder);
+ scoped_refptr<V4L2Device> device = V4L2Device::Create(V4L2Device::kDecoder);
if (device.get()) {
base::WeakPtr<VideoDecodeAccelerator::Client> weak_client = AsWeakPtr();
decoder.reset(new V4L2VideoDecodeAccelerator(
@@ -443,7 +450,7 @@ GLRenderingVDAClient::CreateV4L2VDA() {
static_cast<EGLContext>(rendering_helper_->GetGLContextHandle()),
weak_client,
base::Bind(&DoNothingReturnTrue),
- device.Pass(),
+ device,
base::MessageLoopProxy::current()));
}
#endif
@@ -505,16 +512,18 @@ void GLRenderingVDAClient::ProvidePictureBuffers(
texture_target_, &texture_id, dimensions, &done);
done.Wait();
- // Use the texture_id as the picture's id.
- int32 id = static_cast<int32>(texture_id);
- CHECK(
- active_textures_.insert(std::make_pair(
- id, new TextureRef(base::Bind(
- &RenderingHelper::DeleteTexture,
+ int32 picture_buffer_id = next_picture_buffer_id_++;
+ CHECK(active_textures_
+ .insert(std::make_pair(
+ picture_buffer_id,
+ new TextureRef(texture_id,
+ base::Bind(&RenderingHelper::DeleteTexture,
base::Unretained(rendering_helper_),
- texture_id)))).second);
+ texture_id))))
+ .second);
- buffers.push_back(media::PictureBuffer(id, dimensions, texture_id));
+ buffers.push_back(
+ media::PictureBuffer(picture_buffer_id, dimensions, texture_id));
}
decoder_->AssignPictureBuffers(buffers);
}
@@ -560,8 +569,7 @@ void GLRenderingVDAClient::PictureReady(const media::Picture& picture) {
ASSERT_NE(active_textures_.end(), texture_it);
scoped_refptr<VideoFrameTexture> video_frame = new VideoFrameTexture(
- texture_target_,
- static_cast<uint32>(texture_it->first), // the texture id
+ texture_target_, texture_it->second->texture_id(),
base::Bind(&GLRenderingVDAClient::ReturnPicture, AsWeakPtr(),
picture.picture_buffer_id()));
ASSERT_TRUE(pending_textures_.insert(*texture_it).second);

Powered by Google App Engine
This is Rietveld 408576698