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

Unified Diff: cc/resources/video_resource_updater.h

Issue 761903003: Update from https://crrev.com/306655 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years 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 | « cc/resources/transparency_display_item.cc ('k') | cc/resources/video_resource_updater.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/video_resource_updater.h
diff --git a/cc/resources/video_resource_updater.h b/cc/resources/video_resource_updater.h
index 99800b4c878aa65b48776dfc7c1a5aa86a2cf5ad..38f60331286707828e0ea350d833ef1b8fe7d963 100644
--- a/cc/resources/video_resource_updater.h
+++ b/cc/resources/video_resource_updater.h
@@ -10,6 +10,7 @@
#include "base/basictypes.h"
#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
+#include "base/time/time.h"
#include "cc/base/cc_export.h"
#include "cc/resources/release_callback_impl.h"
#include "cc/resources/resource_format.h"
@@ -77,17 +78,28 @@ class CC_EXPORT VideoResourceUpdater
gfx::Size resource_size;
ResourceFormat resource_format;
gpu::Mailbox mailbox;
+ // These last three members will be used for identifying the data stored in
+ // this resource, and uniquely identifies a media::VideoFrame plane. The
+ // frame pointer will only be used for pointer comparison, i.e. the
+ // underlying data will not be accessed.
+ const void* frame_ptr;
+ int plane_index;
+ base::TimeDelta timestamp;
PlaneResource(unsigned resource_id,
const gfx::Size& resource_size,
ResourceFormat resource_format,
- gpu::Mailbox mailbox)
- : resource_id(resource_id),
- resource_size(resource_size),
- resource_format(resource_format),
- mailbox(mailbox) {}
+ gpu::Mailbox mailbox);
};
+ static bool PlaneResourceMatchesUniqueID(const PlaneResource& plane_resource,
+ const media::VideoFrame* video_frame,
+ int plane_index);
+
+ static void SetPlaneResourceUniqueId(const media::VideoFrame* video_frame,
+ int plane_index,
+ PlaneResource* plane_resource);
+
void DeleteResource(unsigned resource_id);
bool VerifyFrame(const scoped_refptr<media::VideoFrame>& video_frame);
VideoFrameExternalResources CreateForHardwarePlanes(
@@ -95,14 +107,8 @@ class CC_EXPORT VideoResourceUpdater
VideoFrameExternalResources CreateForSoftwarePlanes(
const scoped_refptr<media::VideoFrame>& video_frame);
- struct RecycleResourceData {
- unsigned resource_id;
- gfx::Size resource_size;
- ResourceFormat resource_format;
- gpu::Mailbox mailbox;
- };
static void RecycleResource(base::WeakPtr<VideoResourceUpdater> updater,
- RecycleResourceData data,
+ PlaneResource data,
uint32 sync_point,
bool lost_resource,
BlockingTaskRunner* main_thread_task_runner);
@@ -117,6 +123,8 @@ class CC_EXPORT VideoResourceUpdater
scoped_ptr<media::SkCanvasVideoRenderer> video_renderer_;
std::vector<unsigned> all_resources_;
+ // Recycle resources so that we can reduce the number of allocations and
+ // data transfers.
std::vector<PlaneResource> recycled_resources_;
DISALLOW_COPY_AND_ASSIGN(VideoResourceUpdater);
« no previous file with comments | « cc/resources/transparency_display_item.cc ('k') | cc/resources/video_resource_updater.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698