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>
kVideoTrackFrameDelivererNotEnabledReplacingWithBlackFrame);
}
scoped_refptr<media::VideoFrame> video_frame;
kVideoTrackFrameDelivererNotEnabledReplacingWithBlackFrame);
}
scoped_refptr<media::VideoFrame> video_frame;
+ if (enabled_ || frame->metadata().end_of_stream) {
video_frame = std::move(frame);
++deliverable_frames_;
} else {
video_frame = std::move(frame);
++deliverable_frames_;
} else {
#include "base/trace_event/trace_event.h"
#include "build/build_config.h"
#include "media/base/limits.h"
#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"
#include "media/base/video_util.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
#include "third_party/blink/public/common/features.h"
void ComputeFrameRate(const base::TimeDelta& frame_timestamp,
double* frame_rate,
base::TimeDelta* prev_frame_timestamp) {
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;
const double delta_ms =
(frame_timestamp - *prev_frame_timestamp).InMillisecondsF();
*prev_frame_timestamp = frame_timestamp;