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

Unified Diff: webrtc/modules/video_coding/codecs/vp8/reference_picture_selection.cc

Issue 2753783002: Delete VP8 feedback mode. (Closed)
Patch Set: Rebased. Created 3 years, 9 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: webrtc/modules/video_coding/codecs/vp8/reference_picture_selection.cc
diff --git a/webrtc/modules/video_coding/codecs/vp8/reference_picture_selection.cc b/webrtc/modules/video_coding/codecs/vp8/reference_picture_selection.cc
deleted file mode 100644
index 1838e32eb7ac6d4ec70e5e441e391260996f807c..0000000000000000000000000000000000000000
--- a/webrtc/modules/video_coding/codecs/vp8/reference_picture_selection.cc
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/modules/video_coding/codecs/vp8/reference_picture_selection.h"
-
-#include "vpx/vpx_encoder.h"
-#include "vpx/vp8cx.h"
-#include "webrtc/typedefs.h"
-
-namespace webrtc {
-
-ReferencePictureSelection::ReferencePictureSelection()
- : kRttConfidence(1.33),
- update_golden_next_(true),
- established_golden_(false),
- received_ack_(false),
- last_sent_ref_picture_id_(0),
- last_sent_ref_update_time_(0),
- established_ref_picture_id_(0),
- last_refresh_time_(0),
- rtt_(0) {}
-
-void ReferencePictureSelection::Init() {
- update_golden_next_ = true;
- established_golden_ = false;
- received_ack_ = false;
- last_sent_ref_picture_id_ = 0;
- last_sent_ref_update_time_ = 0;
- established_ref_picture_id_ = 0;
- last_refresh_time_ = 0;
- rtt_ = 0;
-}
-
-void ReferencePictureSelection::ReceivedRPSI(int rpsi_picture_id) {
- // Assume RPSI is signaled with 14 bits.
- if ((rpsi_picture_id & 0x3fff) == (last_sent_ref_picture_id_ & 0x3fff)) {
- // Remote peer has received our last reference frame, switch frame type.
- received_ack_ = true;
- established_golden_ = update_golden_next_;
- update_golden_next_ = !update_golden_next_;
- established_ref_picture_id_ = last_sent_ref_picture_id_;
- }
-}
-
-bool ReferencePictureSelection::ReceivedSLI(uint32_t now_ts) {
- bool send_refresh = false;
- // Don't send a refresh more than once per round-trip time.
- // This is to avoid too frequent refreshes, since the receiver
- // will signal an SLI for every corrupt frame.
- if (TimestampDiff(now_ts, last_refresh_time_) > rtt_) {
- send_refresh = true;
- last_refresh_time_ = now_ts;
- }
- return send_refresh;
-}
-
-int ReferencePictureSelection::EncodeFlags(int picture_id,
- bool send_refresh,
- uint32_t now_ts) {
- int flags = 0;
- // We can't refresh the decoder until we have established the key frame.
- if (send_refresh && received_ack_) {
- flags |= VP8_EFLAG_NO_REF_LAST; // Don't reference the last frame
- if (established_golden_)
- flags |= VP8_EFLAG_NO_REF_ARF; // Don't reference the alt-ref frame.
- else
- flags |= VP8_EFLAG_NO_REF_GF; // Don't reference the golden frame
- }
-
- // Make sure we don't update the reference frames too often. We must wait long
- // enough for an RPSI to arrive after the decoder decoded the reference frame.
- // Ideally that should happen after one round-trip time.
- // Add a margin defined by |kRttConfidence|.
- int64_t update_interval = static_cast<int64_t>(kRttConfidence * rtt_);
- const int64_t kMinUpdateInterval = 90 * 10; // Timestamp frequency
- if (update_interval < kMinUpdateInterval)
- update_interval = kMinUpdateInterval;
- // Don't send reference frame updates until we have an established reference.
- if (TimestampDiff(now_ts, last_sent_ref_update_time_) > update_interval &&
- received_ack_) {
- flags |= VP8_EFLAG_NO_REF_LAST; // Don't reference the last frame.
- if (update_golden_next_) {
- flags |= VP8_EFLAG_FORCE_GF; // Update the golden reference.
- flags |= VP8_EFLAG_NO_UPD_ARF; // Don't update alt-ref.
- flags |= VP8_EFLAG_NO_REF_GF; // Don't reference the golden frame.
- } else {
- flags |= VP8_EFLAG_FORCE_ARF; // Update the alt-ref reference.
- flags |= VP8_EFLAG_NO_UPD_GF; // Don't update the golden frame.
- flags |= VP8_EFLAG_NO_REF_ARF; // Don't reference the alt-ref frame.
- }
- last_sent_ref_picture_id_ = picture_id;
- last_sent_ref_update_time_ = now_ts;
- } else {
- // No update of golden or alt-ref. We can therefore freely reference the
- // established reference frame and the last frame.
- if (established_golden_)
- flags |= VP8_EFLAG_NO_REF_ARF; // Don't reference the alt-ref frame.
- else
- flags |= VP8_EFLAG_NO_REF_GF; // Don't reference the golden frame.
- flags |= VP8_EFLAG_NO_UPD_GF; // Don't update the golden frame.
- flags |= VP8_EFLAG_NO_UPD_ARF; // Don't update the alt-ref frame.
- }
- return flags;
-}
-
-void ReferencePictureSelection::EncodedKeyFrame(int picture_id) {
- last_sent_ref_picture_id_ = picture_id;
- received_ack_ = false;
-}
-
-void ReferencePictureSelection::SetRtt(int64_t rtt) {
- // Convert from milliseconds to timestamp frequency.
- rtt_ = 90 * rtt;
-}
-
-int64_t ReferencePictureSelection::TimestampDiff(uint32_t new_ts,
- uint32_t old_ts) {
- if (old_ts > new_ts) {
- // Assuming this is a wrap, doing a compensated subtraction.
- return (new_ts + (static_cast<int64_t>(1) << 32)) - old_ts;
- }
- return new_ts - old_ts;
-}
-
-} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698