[M120 Migration] Fixup! [WebRTC] Add TizenEsPlusPlayerRendererManager Implementation 11/309911/3
authorzhishun.zhou <zhishun.zhou@samsung.com>
Tue, 24 Oct 2023 03:53:48 +0000 (11:53 +0800)
committerBot Blink <blinkbot@samsung.com>
Fri, 19 Apr 2024 02:01:37 +0000 (02:01 +0000)
When stop capture, a EOS frame deliver through MediaStreamVideoTrack.
Because EOS frame has no timestamp and empty size, use it to create black
frame or compute framerate could cause crash.

refer to:
https://review.tizen.org/gerrit/#/c/300405/

Change-Id: I7d2fc3bf96e3c9ea663309d8f78d96e821d0105c
Signed-off-by: zhishun.zhou <zhishun.zhou@samsung.com>
third_party/blink/renderer/modules/mediastream/media_stream_video_track.cc
third_party/blink/renderer/modules/mediastream/video_track_adapter.cc

index 84db0f2..dfabc7a 100644 (file)
@@ -602,7 +602,7 @@ void MediaStreamVideoTrack::FrameDeliverer::DeliverFrameOnVideoTaskRunner(
             kVideoTrackFrameDelivererNotEnabledReplacingWithBlackFrame);
   }
   scoped_refptr<media::VideoFrame> video_frame;
-  if (enabled_) {
+  if (enabled_ || frame->metadata().end_of_stream) {
     video_frame = std::move(frame);
     ++deliverable_frames_;
   } else {
index c9d4d07..e8f03c2 100644 (file)
@@ -23,6 +23,7 @@
 #include "base/trace_event/trace_event.h"
 #include "build/build_config.h"
 #include "media/base/limits.h"
+#include "media/base/timestamp_constants.h"
 #include "media/base/video_util.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 #include "third_party/blink/public/common/features.h"
@@ -88,6 +89,9 @@ int ClampToValidDimension(int dimension) {
 void ComputeFrameRate(const base::TimeDelta& frame_timestamp,
                       double* frame_rate,
                       base::TimeDelta* prev_frame_timestamp) {
+  if (frame_timestamp == media::kNoTimestamp)
+    return;
+
   const double delta_ms =
       (frame_timestamp - *prev_frame_timestamp).InMillisecondsF();
   *prev_frame_timestamp = frame_timestamp;