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

Side by Side Diff: media/base/video_frame.cc

Issue 1427543002: Modified old wait sync point functions to also accept new sync tokens. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix mock gpu video accelerator factory Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/base/video_frame.h" 5 #include "media/base/video_frame.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback_helpers.h" 10 #include "base/callback_helpers.h"
(...skipping 745 matching lines...) Expand 10 before | Expand all | Expand 10 after
756 done_callbacks_.push_back(callback); 756 done_callbacks_.push_back(callback);
757 } 757 }
758 758
759 void VideoFrame::UpdateReleaseSyncPoint(SyncPointClient* client) { 759 void VideoFrame::UpdateReleaseSyncPoint(SyncPointClient* client) {
760 DCHECK(HasTextures()); 760 DCHECK(HasTextures());
761 base::AutoLock locker(release_sync_point_lock_); 761 base::AutoLock locker(release_sync_point_lock_);
762 // Must wait on the previous sync point before inserting a new sync point so 762 // Must wait on the previous sync point before inserting a new sync point so
763 // that |mailbox_holders_release_cb_| guarantees the previous sync point 763 // that |mailbox_holders_release_cb_| guarantees the previous sync point
764 // occurred when it waits on |release_sync_point_|. 764 // occurred when it waits on |release_sync_point_|.
765 if (release_sync_point_) 765 if (release_sync_point_)
766 client->WaitSyncPoint(release_sync_point_); 766 client->WaitSyncPoint(release_sync_point_, release_sync_token_);
767 release_sync_point_ = client->InsertSyncPoint(); 767 release_sync_point_ = client->InsertSyncPoint();
768 } 768 }
769 769
770 // static 770 // static
771 scoped_refptr<VideoFrame> VideoFrame::WrapExternalStorage( 771 scoped_refptr<VideoFrame> VideoFrame::WrapExternalStorage(
772 VideoPixelFormat format, 772 VideoPixelFormat format,
773 StorageType storage_type, 773 StorageType storage_type,
774 const gfx::Size& coded_size, 774 const gfx::Size& coded_size,
775 const gfx::Rect& visible_rect, 775 const gfx::Rect& visible_rect,
776 const gfx::Size& natural_size, 776 const gfx::Size& natural_size,
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
867 visible_rect, 867 visible_rect,
868 natural_size, 868 natural_size,
869 timestamp) { 869 timestamp) {
870 memcpy(&mailbox_holders_, mailbox_holders, sizeof(mailbox_holders_)); 870 memcpy(&mailbox_holders_, mailbox_holders, sizeof(mailbox_holders_));
871 mailbox_holders_release_cb_ = mailbox_holder_release_cb; 871 mailbox_holders_release_cb_ = mailbox_holder_release_cb;
872 } 872 }
873 873
874 VideoFrame::~VideoFrame() { 874 VideoFrame::~VideoFrame() {
875 if (!mailbox_holders_release_cb_.is_null()) { 875 if (!mailbox_holders_release_cb_.is_null()) {
876 uint32 release_sync_point; 876 uint32 release_sync_point;
877 gpu::SyncToken release_sync_token;
877 { 878 {
878 // To ensure that changes to |release_sync_point_| are visible on this 879 // To ensure that changes to |release_sync_point_| are visible on this
879 // thread (imply a memory barrier). 880 // thread (imply a memory barrier).
880 base::AutoLock locker(release_sync_point_lock_); 881 base::AutoLock locker(release_sync_point_lock_);
881 release_sync_point = release_sync_point_; 882 release_sync_point = release_sync_point_;
883 release_sync_token = release_sync_token_;
882 } 884 }
883 base::ResetAndReturn(&mailbox_holders_release_cb_).Run(release_sync_point); 885 base::ResetAndReturn(&mailbox_holders_release_cb_)
886 .Run(release_sync_point, release_sync_token);
884 } 887 }
885 888
886 for (auto& callback : done_callbacks_) 889 for (auto& callback : done_callbacks_)
887 base::ResetAndReturn(&callback).Run(); 890 base::ResetAndReturn(&callback).Run();
888 } 891 }
889 892
890 // static 893 // static
891 scoped_refptr<VideoFrame> VideoFrame::CreateFrameInternal( 894 scoped_refptr<VideoFrame> VideoFrame::CreateFrameInternal(
892 VideoPixelFormat format, 895 VideoPixelFormat format,
893 const gfx::Size& coded_size, 896 const gfx::Size& coded_size,
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
955 if (zero_initialize_memory) 958 if (zero_initialize_memory)
956 memset(data, 0, data_size); 959 memset(data, 0, data_size);
957 960
958 for (size_t plane = 0; plane < NumPlanes(format_); ++plane) 961 for (size_t plane = 0; plane < NumPlanes(format_); ++plane)
959 data_[plane] = data + offset[plane]; 962 data_[plane] = data + offset[plane];
960 963
961 AddDestructionObserver(base::Bind(&base::AlignedFree, data)); 964 AddDestructionObserver(base::Bind(&base::AlignedFree, data));
962 } 965 }
963 966
964 } // namespace media 967 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698