| Index: media/muxers/webm_muxer.cc
|
| diff --git a/media/muxers/webm_muxer.cc b/media/muxers/webm_muxer.cc
|
| index 9a4819a4ff68ec600f5a70116a694095a9fe02c5..490b174ef990d67ea70373814f9ab41a50fef79f 100644
|
| --- a/media/muxers/webm_muxer.cc
|
| +++ b/media/muxers/webm_muxer.cc
|
| @@ -12,7 +12,6 @@
|
| #include "media/base/limits.h"
|
| #include "media/base/video_frame.h"
|
| #include "media/filters/opus_constants.h"
|
| -#include "ui/gfx/geometry/size.h"
|
|
|
| namespace media {
|
|
|
| @@ -57,14 +56,12 @@ void WriteOpusHeader(const media::AudioParameters& params, uint8_t* header) {
|
| }
|
| }
|
|
|
| -static double GetFrameRate(const scoped_refptr<VideoFrame>& video_frame) {
|
| +static double GetFrameRate(const WebmMuxer::VideoParameters& params) {
|
| const double kZeroFrameRate = 0.0;
|
| const double kDefaultFrameRate = 30.0;
|
|
|
| - double frame_rate = kDefaultFrameRate;
|
| - if (!video_frame->metadata()->GetDouble(VideoFrameMetadata::FRAME_RATE,
|
| - &frame_rate) ||
|
| - frame_rate <= kZeroFrameRate ||
|
| + double frame_rate = params.frame_rate;
|
| + if (frame_rate <= kZeroFrameRate ||
|
| frame_rate > media::limits::kMaxFramesPerSecond) {
|
| frame_rate = kDefaultFrameRate;
|
| }
|
| @@ -89,6 +86,16 @@ static const char* MkvCodeIcForMediaVideoCodecId(VideoCodec video_codec) {
|
|
|
| } // anonymous namespace
|
|
|
| +WebmMuxer::VideoParameters::VideoParameters(
|
| + scoped_refptr<media::VideoFrame> frame) {
|
| + frame_size = frame->visible_rect().size();
|
| + frame_rate = 0.0;
|
| + ignore_result(frame->metadata()->GetDouble(VideoFrameMetadata::FRAME_RATE,
|
| + &frame_rate));
|
| +}
|
| +
|
| +WebmMuxer::VideoParameters::~VideoParameters() {}
|
| +
|
| WebmMuxer::WebmMuxer(VideoCodec codec,
|
| bool has_video,
|
| bool has_audio,
|
| @@ -124,7 +131,7 @@ WebmMuxer::~WebmMuxer() {
|
| segment_.Finalize();
|
| }
|
|
|
| -void WebmMuxer::OnEncodedVideo(const scoped_refptr<VideoFrame>& video_frame,
|
| +void WebmMuxer::OnEncodedVideo(const VideoParameters& params,
|
| std::unique_ptr<std::string> encoded_data,
|
| base::TimeTicks timestamp,
|
| bool is_key_frame) {
|
| @@ -134,8 +141,7 @@ void WebmMuxer::OnEncodedVideo(const scoped_refptr<VideoFrame>& video_frame,
|
| if (!video_track_index_) {
|
| // |track_index_|, cannot be zero (!), initialize WebmMuxer in that case.
|
| // http://www.matroska.org/technical/specs/index.html#Tracks
|
| - AddVideoTrack(video_frame->visible_rect().size(),
|
| - GetFrameRate(video_frame));
|
| + AddVideoTrack(params.frame_size, GetFrameRate(params));
|
| if (first_frame_timestamp_video_.is_null())
|
| first_frame_timestamp_video_ = timestamp;
|
| }
|
|
|