[DVQA] Dont try to render a 'superfluous' frame.

Change-Id: I3427cecab30b1705e5fbec110494f58cb1c599b5
Bug: None
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/374861
Commit-Queue: Jeremy Leconte <jleconte@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43778}
diff --git a/test/pc/e2e/analyzer/video/default_video_quality_analyzer.cc b/test/pc/e2e/analyzer/video/default_video_quality_analyzer.cc
index 5b1d558..a325334 100644
--- a/test/pc/e2e/analyzer/video/default_video_quality_analyzer.cc
+++ b/test/pc/e2e/analyzer/video/default_video_quality_analyzer.cc
@@ -503,7 +503,8 @@
   auto frame_it = captured_frames_in_flight_.find(frame.id());
   if (frame_it == captured_frames_in_flight_.end() ||
       frame_it->second.HasRenderedTime(peer_index) ||
-      frame_it->second.IsDropped(peer_index)) {
+      frame_it->second.IsDropped(peer_index) ||
+      frame_it->second.IsSuperfluous(peer_index)) {
     // It means this frame was rendered or dropped before, so we can skip it.
     // It may happen when we have multiple simulcast streams in one track and
     // received the same frame from two different streams because SFU can't
@@ -514,7 +515,8 @@
     if (frame_it != captured_frames_in_flight_.end()) {
       if (frame_it->second.HasRenderedTime(peer_index)) {
         reason = kSkipRenderedFrameReasonRendered;
-      } else if (frame_it->second.IsDropped(peer_index)) {
+      } else if (frame_it->second.IsDropped(peer_index) ||
+                 frame_it->second.IsSuperfluous(peer_index)) {
         reason = kSkipRenderedFrameReasonDropped;
       }
     }
diff --git a/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frame_in_flight.h b/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frame_in_flight.h
index 287aa6f..c116cf6 100644
--- a/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frame_in_flight.h
+++ b/test/pc/e2e/analyzer/video/default_video_quality_analyzer_frame_in_flight.h
@@ -138,6 +138,7 @@
   void MarkSuperfluous(size_t peer) {
     receiver_stats_[peer].superfluous = true;
   }
+  bool IsSuperfluous(size_t peer) const;
 
   void SetPrevFrameRenderedTime(size_t peer, webrtc::Timestamp time) {
     receiver_stats_[peer].prev_frame_rendered_time = time;
@@ -150,8 +151,6 @@
   FrameStats GetStatsForPeer(size_t peer) const;
 
  private:
-  bool IsSuperfluous(size_t peer) const;
-
   const size_t stream_;
   // Set of peer's indexes who are expected to receive this frame. This is not
   // the set of peer's indexes that received the frame. For example, if peer A