Index: media/filters/ffmpeg_demuxer.cc |
diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc |
index 70c55963f1c9700c2c090f89a0e270bde58e07c1..ea2e70fa69b27913c7c66909e41a982370ec712e 100644 |
--- a/media/filters/ffmpeg_demuxer.cc |
+++ b/media/filters/ffmpeg_demuxer.cc |
@@ -17,6 +17,7 @@ |
#include "base/metrics/sparse_histogram.h" |
#include "base/stl_util.h" |
#include "base/strings/string_util.h" |
+#include "base/strings/stringprintf.h" |
#include "base/task_runner_util.h" |
#include "base/time/time.h" |
#include "media/base/audio_decoder_config.h" |
@@ -503,6 +504,7 @@ void FFmpegDemuxer::OnFindStreamInfoDone(const PipelineStatusCB& status_cb, |
if (codec_type == AVMEDIA_TYPE_AUDIO) { |
if (found_audio_stream) |
continue; |
+ |
// Log the codec detected, whether it is supported or not. |
UMA_HISTOGRAM_SPARSE_SLOWLY("Media.DetectedAudioCodec", |
codec_context->codec_id); |
@@ -510,12 +512,24 @@ void FFmpegDemuxer::OnFindStreamInfoDone(const PipelineStatusCB& status_cb, |
// channel layout and sample format are valid. |
AudioDecoderConfig audio_config; |
AVStreamToAudioDecoderConfig(stream, &audio_config, false); |
+ |
+ // Logging |
+ media_log_->SetStringProperty("audio_codec_name", |
+ codec_context->codec_name); |
+ media_log_->SetIntegerProperty("audio_sample_rate", |
+ codec_context->sample_rate); |
+ media_log_->SetIntegerProperty("audio_channels_count", |
+ codec_context->channels); |
+ media_log_->SetIntegerProperty("audio_samples_per_second", |
+ audio_config.samples_per_second()); |
+ |
if (!audio_config.IsValidConfig()) |
continue; |
found_audio_stream = true; |
} else if (codec_type == AVMEDIA_TYPE_VIDEO) { |
if (found_video_stream) |
continue; |
+ |
// Log the codec detected, whether it is supported or not. |
UMA_HISTOGRAM_SPARSE_SLOWLY("Media.DetectedVideoCodec", |
codec_context->codec_id); |
@@ -523,6 +537,24 @@ void FFmpegDemuxer::OnFindStreamInfoDone(const PipelineStatusCB& status_cb, |
// frame size and visible size are valid. |
VideoDecoderConfig video_config; |
AVStreamToVideoDecoderConfig(stream, &video_config, false); |
+ |
+ // Logging |
+ std::string codec_name = avcodec_get_name(codec_context->codec_id); |
+ media_log_->SetStringProperty("video_codec_name", codec_name); |
+ media_log_->SetIntegerProperty("width", codec_context->width); |
+ media_log_->SetIntegerProperty("height", codec_context->height); |
+ media_log_->SetIntegerProperty("coded_width", codec_context->coded_width); |
+ media_log_->SetIntegerProperty("coded_height", |
+ codec_context->coded_height); |
+ media_log_->SetStringProperty( |
+ "time_base", base::StringPrintf("%d/%d", |
+ codec_context->time_base.num, |
+ codec_context->time_base.den)); |
+ media_log_->SetStringProperty("video_format", |
+ VideoFrame::FormatToString(video_config.format())); |
+ media_log_->SetBooleanProperty("video_is_encrypted", |
+ video_config.is_encrypted()); |
+ |
if (!video_config.IsValidConfig()) |
continue; |
found_video_stream = true; |
@@ -579,6 +611,14 @@ void FFmpegDemuxer::OnFindStreamInfoDone(const PipelineStatusCB& status_cb, |
if (bitrate_ > 0) |
data_source_->SetBitrate(bitrate_); |
+ media_log_->SetBooleanProperty("found_audio_stream", found_audio_stream); |
+ media_log_->SetBooleanProperty("found_video_stream", found_video_stream); |
+ media_log_->SetDoubleProperty("max_duration", max_duration.InSecondsF()); |
+ media_log_->SetDoubleProperty("start_time", start_time_.InSecondsF()); |
+ media_log_->SetStringProperty("filesize_in_bytes", |
+ std::to_string(filesize_in_bytes)); |
+ media_log_->SetIntegerProperty("bitrate", bitrate_); |
+ |
status_cb.Run(PIPELINE_OK); |
} |