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

Unified Diff: content/browser/renderer_host/media/video_capture_controller.cc

Issue 2659653002: Fix for issue 684766 Old/erroneous frame feedback during tab capture (Closed)
Patch Set: Created 3 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/browser/renderer_host/media/video_capture_controller.cc
diff --git a/content/browser/renderer_host/media/video_capture_controller.cc b/content/browser/renderer_host/media/video_capture_controller.cc
index 9902d94dad4e4b80de214b7b342299a6720d697c..0a2ef8b39f236fa4e5f9f6f721458ce7a8d44326 100644
--- a/content/browser/renderer_host/media/video_capture_controller.cc
+++ b/content/browser/renderer_host/media/video_capture_controller.cc
@@ -145,6 +145,11 @@ bool VideoCaptureController::BufferState::HasZeroConsumerHoldCount() {
return consumer_hold_count_ == 0;
}
+void VideoCaptureController::BufferState::SetFrameFeedbackId(int id) {
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
+ frame_feedback_id_ = id;
+}
+
void VideoCaptureController::BufferState::SetConsumerFeedbackObserver(
media::VideoFrameConsumerFeedbackObserver* consumer_feedback_observer) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
@@ -377,15 +382,16 @@ void VideoCaptureController::OnIncomingCapturedVideoFrame(
DCHECK_NE(buffer_id, media::VideoCaptureBufferPool::kInvalidId);
// Insert if not exists.
- const auto it =
+ const auto insert_result =
buffer_id_to_state_map_
.insert(std::make_pair(
buffer_id, BufferState(buffer_id, buffer.frame_feedback_id(),
consumer_feedback_observer_.get(),
- frame_buffer_pool_.get())))
- .first;
- BufferState& buffer_state = it->second;
+ frame_buffer_pool_.get())));
+ BufferState& buffer_state = insert_result.first->second;
DCHECK(buffer_state.HasZeroConsumerHoldCount());
+ if (!insert_result.second)
+ buffer_state.SetFrameFeedbackId(buffer.frame_feedback_id());
mcasas 2017/01/30 15:36:34 This is confusing. buffer.frame_feedback_id() is
chfremer 2017/01/30 21:18:27 Please see PatchSet#2 and let me know if it makes
if (state_ == VIDEO_CAPTURE_STATE_STARTED) {
if (!frame->metadata()->HasKey(VideoFrameMetadata::FRAME_RATE)) {

Powered by Google App Engine
This is Rietveld 408576698