| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/renderer/media/media_recorder_handler.h" | 5 #include "content/renderer/media/media_recorder_handler.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/location.h" | 10 #include "base/location.h" |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 namespace content { | 33 namespace content { |
| 34 | 34 |
| 35 namespace { | 35 namespace { |
| 36 | 36 |
| 37 media::VideoCodec CodecIdToMediaVideoCodec(VideoTrackRecorder::CodecId id) { | 37 media::VideoCodec CodecIdToMediaVideoCodec(VideoTrackRecorder::CodecId id) { |
| 38 switch (id) { | 38 switch (id) { |
| 39 case VideoTrackRecorder::CodecId::VP8: | 39 case VideoTrackRecorder::CodecId::VP8: |
| 40 return media::kCodecVP8; | 40 return media::kCodecVP8; |
| 41 case VideoTrackRecorder::CodecId::VP9: | 41 case VideoTrackRecorder::CodecId::VP9: |
| 42 return media::kCodecVP9; | 42 return media::kCodecVP9; |
| 43 #if BUILDFLAG(RTC_USE_H264) |
| 43 case VideoTrackRecorder::CodecId::H264: | 44 case VideoTrackRecorder::CodecId::H264: |
| 44 return media::kCodecH264; | 45 return media::kCodecH264; |
| 46 #endif |
| 47 case VideoTrackRecorder::CodecId::LAST: |
| 48 return media::kUnknownVideoCodec; |
| 45 } | 49 } |
| 46 NOTREACHED() << "Unsupported codec"; | 50 NOTREACHED() << "Unsupported codec"; |
| 47 return media::kUnknownVideoCodec; | 51 return media::kUnknownVideoCodec; |
| 48 } | 52 } |
| 49 | 53 |
| 50 } // anonymous namespace | 54 } // anonymous namespace |
| 51 | 55 |
| 52 MediaRecorderHandler::MediaRecorderHandler() | 56 MediaRecorderHandler::MediaRecorderHandler() |
| 53 : video_bits_per_second_(0), | 57 : video_bits_per_second_(0), |
| 54 audio_bits_per_second_(0), | 58 audio_bits_per_second_(0), |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 const blink::WebString& type, | 116 const blink::WebString& type, |
| 113 const blink::WebString& codecs, | 117 const blink::WebString& codecs, |
| 114 int32_t audio_bits_per_second, | 118 int32_t audio_bits_per_second, |
| 115 int32_t video_bits_per_second) { | 119 int32_t video_bits_per_second) { |
| 116 DCHECK(main_render_thread_checker_.CalledOnValidThread()); | 120 DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
| 117 // Save histogram data so we can see how much MediaStream Recorder is used. | 121 // Save histogram data so we can see how much MediaStream Recorder is used. |
| 118 // The histogram counts the number of calls to the JS API. | 122 // The histogram counts the number of calls to the JS API. |
| 119 UpdateWebRTCMethodCount(WEBKIT_MEDIA_STREAM_RECORDER); | 123 UpdateWebRTCMethodCount(WEBKIT_MEDIA_STREAM_RECORDER); |
| 120 | 124 |
| 121 if (!canSupportMimeType(type, codecs)) { | 125 if (!canSupportMimeType(type, codecs)) { |
| 122 DLOG(ERROR) << "Can't support " << type.utf8() | 126 DLOG(ERROR) << "Unsupported " << type.utf8() << ";codecs=" << codecs.utf8(); |
| 123 << ";codecs=" << codecs.utf8(); | |
| 124 return false; | 127 return false; |
| 125 } | 128 } |
| 126 | 129 |
| 127 // Once established that we support the codec(s), hunt then individually. | 130 // Once established that we support the codec(s), hunt then individually. |
| 128 const std::string& codecs_str = ToLowerASCII(codecs.utf8()); | 131 const std::string& codecs_str = ToLowerASCII(codecs.utf8()); |
| 129 if (codecs_str.find("vp8") != std::string::npos) | 132 if (codecs_str.find("vp8") != std::string::npos) |
| 130 codec_id_ = VideoTrackRecorder::CodecId::VP8; | 133 codec_id_ = VideoTrackRecorder::CodecId::VP8; |
| 131 else if (codecs_str.find("vp9") != std::string::npos) | 134 else if (codecs_str.find("vp9") != std::string::npos) |
| 132 codec_id_ = VideoTrackRecorder::CodecId::VP9; | 135 codec_id_ = VideoTrackRecorder::CodecId::VP9; |
| 133 #if BUILDFLAG(RTC_USE_H264) | 136 #if BUILDFLAG(RTC_USE_H264) |
| 134 else if (codecs_str.find("h264") != std::string::npos) | 137 else if (codecs_str.find("h264") != std::string::npos) |
| 135 codec_id_ = VideoTrackRecorder::CodecId::H264; | 138 codec_id_ = VideoTrackRecorder::CodecId::H264; |
| 136 else if (codecs_str.find("avc1") != std::string::npos) | 139 else if (codecs_str.find("avc1") != std::string::npos) |
| 137 codec_id_ = VideoTrackRecorder::CodecId::H264; | 140 codec_id_ = VideoTrackRecorder::CodecId::H264; |
| 138 #endif | 141 #endif |
| 142 else |
| 143 codec_id_ = VideoTrackRecorder::GetPreferredCodecId(); |
| 144 |
| 145 DVLOG_IF(1, codecs_str.empty()) << "Falling back to preferred codec id " |
| 146 << static_cast<int>(codec_id_); |
| 139 | 147 |
| 140 media_stream_ = media_stream; | 148 media_stream_ = media_stream; |
| 141 DCHECK(client); | 149 DCHECK(client); |
| 142 client_ = client; | 150 client_ = client; |
| 143 | 151 |
| 144 audio_bits_per_second_ = audio_bits_per_second; | 152 audio_bits_per_second_ = audio_bits_per_second; |
| 145 video_bits_per_second_ = video_bits_per_second; | 153 video_bits_per_second_ = video_bits_per_second; |
| 146 return true; | 154 return true; |
| 147 } | 155 } |
| 148 | 156 |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 311 recorder->OnData(audio_bus, timestamp); | 319 recorder->OnData(audio_bus, timestamp); |
| 312 } | 320 } |
| 313 | 321 |
| 314 void MediaRecorderHandler::SetAudioFormatForTesting( | 322 void MediaRecorderHandler::SetAudioFormatForTesting( |
| 315 const media::AudioParameters& params) { | 323 const media::AudioParameters& params) { |
| 316 for (const auto& recorder : audio_recorders_) | 324 for (const auto& recorder : audio_recorders_) |
| 317 recorder->OnSetFormat(params); | 325 recorder->OnSetFormat(params); |
| 318 } | 326 } |
| 319 | 327 |
| 320 } // namespace content | 328 } // namespace content |
| OLD | NEW |