OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 13 matching lines...) Expand all Loading... |
24 #include "webrtc/modules/video_coding/include/video_codec_initializer.h" | 24 #include "webrtc/modules/video_coding/include/video_codec_initializer.h" |
25 #include "webrtc/modules/video_coding/utility/default_video_bitrate_allocator.h" | 25 #include "webrtc/modules/video_coding/utility/default_video_bitrate_allocator.h" |
26 #include "webrtc/modules/video_coding/utility/simulcast_rate_allocator.h" | 26 #include "webrtc/modules/video_coding/utility/simulcast_rate_allocator.h" |
27 #include "webrtc/system_wrappers/include/cpu_info.h" | 27 #include "webrtc/system_wrappers/include/cpu_info.h" |
28 | 28 |
29 namespace webrtc { | 29 namespace webrtc { |
30 namespace test { | 30 namespace test { |
31 | 31 |
32 namespace { | 32 namespace { |
33 const int k90khzTimestampFrameDiff = 3000; // Assuming 30 fps. | 33 const int k90khzTimestampFrameDiff = 3000; // Assuming 30 fps. |
| 34 |
| 35 void PrintCodecSettings(const VideoCodec* config) { |
| 36 printf(" Start bitrate : %d kbps\n", config->startBitrate); |
| 37 printf(" Width : %d\n", config->width); |
| 38 printf(" Height : %d\n", config->height); |
| 39 printf(" Codec type : %s\n", |
| 40 CodecTypeToPayloadName(config->codecType).value_or("Unknown")); |
| 41 if (config->codecType == kVideoCodecVP8) { |
| 42 printf(" Denoising : %d\n", config->VP8().denoisingOn); |
| 43 printf(" Error concealment: %d\n", config->VP8().errorConcealmentOn); |
| 44 printf(" Frame dropping : %d\n", config->VP8().frameDroppingOn); |
| 45 printf(" Resilience : %d\n", config->VP8().resilience); |
| 46 } else if (config->codecType == kVideoCodecVP9) { |
| 47 printf(" Denoising : %d\n", config->VP9().denoisingOn); |
| 48 printf(" Frame dropping : %d\n", config->VP9().frameDroppingOn); |
| 49 printf(" Resilience : %d\n", config->VP9().resilience); |
| 50 } |
| 51 } |
| 52 |
| 53 int GetElapsedTimeMicroseconds(int64_t start_ns, int64_t stop_ns) { |
| 54 int64_t diff_us = (stop_ns - start_ns) / rtc::kNumNanosecsPerMicrosec; |
| 55 RTC_DCHECK_GE(diff_us, std::numeric_limits<int>::min()); |
| 56 RTC_DCHECK_LE(diff_us, std::numeric_limits<int>::max()); |
| 57 return static_cast<int>(diff_us); |
| 58 } |
34 } // namespace | 59 } // namespace |
35 | 60 |
36 const char* ExcludeFrameTypesToStr(ExcludeFrameTypes e) { | 61 const char* ExcludeFrameTypesToStr(ExcludeFrameTypes e) { |
37 switch (e) { | 62 switch (e) { |
38 case kExcludeOnlyFirstKeyFrame: | 63 case kExcludeOnlyFirstKeyFrame: |
39 return "ExcludeOnlyFirstKeyFrame"; | 64 return "ExcludeOnlyFirstKeyFrame"; |
40 case kExcludeAllKeyFrames: | 65 case kExcludeAllKeyFrames: |
41 return "ExcludeAllKeyFrames"; | 66 return "ExcludeAllKeyFrames"; |
42 default: | 67 default: |
43 RTC_NOTREACHED(); | 68 RTC_NOTREACHED(); |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 RTC_CHECK_EQ(decoder_->InitDecode(config_.codec_settings, num_cores), | 170 RTC_CHECK_EQ(decoder_->InitDecode(config_.codec_settings, num_cores), |
146 WEBRTC_VIDEO_CODEC_OK) | 171 WEBRTC_VIDEO_CODEC_OK) |
147 << "Failed to initialize VideoDecoder"; | 172 << "Failed to initialize VideoDecoder"; |
148 | 173 |
149 if (config_.verbose) { | 174 if (config_.verbose) { |
150 printf("Video Processor:\n"); | 175 printf("Video Processor:\n"); |
151 printf(" #CPU cores used : %d\n", num_cores); | 176 printf(" #CPU cores used : %d\n", num_cores); |
152 printf(" Total # of frames: %d\n", | 177 printf(" Total # of frames: %d\n", |
153 analysis_frame_reader_->NumberOfFrames()); | 178 analysis_frame_reader_->NumberOfFrames()); |
154 printf(" Codec settings:\n"); | 179 printf(" Codec settings:\n"); |
155 printf(" Start bitrate : %d kbps\n", | |
156 config_.codec_settings->startBitrate); | |
157 printf(" Width : %d\n", config_.codec_settings->width); | |
158 printf(" Height : %d\n", config_.codec_settings->height); | |
159 printf(" Codec type : %s\n", | |
160 CodecTypeToPayloadName(config_.codec_settings->codecType) | |
161 .value_or("Unknown")); | |
162 printf(" Encoder implementation name: %s\n", | 180 printf(" Encoder implementation name: %s\n", |
163 encoder_->ImplementationName()); | 181 encoder_->ImplementationName()); |
164 printf(" Decoder implementation name: %s\n", | 182 printf(" Decoder implementation name: %s\n", |
165 decoder_->ImplementationName()); | 183 decoder_->ImplementationName()); |
166 if (config_.codec_settings->codecType == kVideoCodecVP8) { | 184 PrintCodecSettings(config_.codec_settings); |
167 printf(" Denoising : %d\n", | |
168 config_.codec_settings->VP8()->denoisingOn); | |
169 printf(" Error concealment: %d\n", | |
170 config_.codec_settings->VP8()->errorConcealmentOn); | |
171 printf(" Frame dropping : %d\n", | |
172 config_.codec_settings->VP8()->frameDroppingOn); | |
173 printf(" Resilience : %d\n", | |
174 config_.codec_settings->VP8()->resilience); | |
175 } else if (config_.codec_settings->codecType == kVideoCodecVP9) { | |
176 printf(" Resilience : %d\n", | |
177 config_.codec_settings->VP9()->resilience); | |
178 } | |
179 } | 185 } |
180 initialized_ = true; | 186 initialized_ = true; |
181 return true; | 187 return true; |
182 } | 188 } |
183 | 189 |
184 VideoProcessorImpl::~VideoProcessorImpl() { | 190 VideoProcessorImpl::~VideoProcessorImpl() { |
185 encoder_->RegisterEncodeCompleteCallback(nullptr); | 191 encoder_->RegisterEncodeCompleteCallback(nullptr); |
186 decoder_->RegisterDecodeCompleteCallback(nullptr); | 192 decoder_->RegisterDecodeCompleteCallback(nullptr); |
187 } | 193 } |
188 | 194 |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
449 memcpy(last_successful_frame_buffer_.get(), image_buffer.get(), | 455 memcpy(last_successful_frame_buffer_.get(), image_buffer.get(), |
450 extracted_length); | 456 extracted_length); |
451 | 457 |
452 RTC_CHECK(analysis_frame_writer_->WriteFrame(image_buffer.get())); | 458 RTC_CHECK(analysis_frame_writer_->WriteFrame(image_buffer.get())); |
453 if (decoded_frame_writer_) { | 459 if (decoded_frame_writer_) { |
454 RTC_CHECK(decoded_frame_writer_->WriteFrame(image_buffer.get())); | 460 RTC_CHECK(decoded_frame_writer_->WriteFrame(image_buffer.get())); |
455 } | 461 } |
456 } | 462 } |
457 } | 463 } |
458 | 464 |
459 int VideoProcessorImpl::GetElapsedTimeMicroseconds(int64_t start, | |
460 int64_t stop) { | |
461 int64_t encode_time = (stop - start) / rtc::kNumNanosecsPerMicrosec; | |
462 RTC_DCHECK_GE(encode_time, std::numeric_limits<int>::min()); | |
463 RTC_DCHECK_LE(encode_time, std::numeric_limits<int>::max()); | |
464 return static_cast<int>(encode_time); | |
465 } | |
466 | |
467 } // namespace test | 465 } // namespace test |
468 } // namespace webrtc | 466 } // namespace webrtc |
OLD | NEW |