| Index: webrtc/modules/video_coding/codecs/test/videoprocessor.cc
|
| diff --git a/webrtc/modules/video_coding/codecs/test/videoprocessor.cc b/webrtc/modules/video_coding/codecs/test/videoprocessor.cc
|
| index d6d2c0ca6368889c637aab9f917d3440ff0c04b4..9cda6922b4ba250eccf3dd8d0d67f18a1ced1a42 100644
|
| --- a/webrtc/modules/video_coding/codecs/test/videoprocessor.cc
|
| +++ b/webrtc/modules/video_coding/codecs/test/videoprocessor.cc
|
| @@ -31,6 +31,19 @@ namespace test {
|
|
|
| namespace {
|
| const int k90khzTimestampFrameDiff = 3000; // Assuming 30 fps.
|
| +
|
| +std::unique_ptr<VideoBitrateAllocator> CreateBitrateAllocator(
|
| + const TestConfig& config) {
|
| + std::unique_ptr<TemporalLayersFactory> tl_factory;
|
| + if (config.codec_settings->codecType == VideoCodecType::kVideoCodecVP8) {
|
| + tl_factory.reset(new TemporalLayersFactory());
|
| + config.codec_settings->VP8()->tl_factory = tl_factory.get();
|
| + }
|
| + return std::unique_ptr<VideoBitrateAllocator>(
|
| + VideoCodecInitializer::CreateBitrateAllocator(*config.codec_settings,
|
| + std::move(tl_factory)));
|
| +}
|
| +
|
| } // namespace
|
|
|
| const char* ExcludeFrameTypesToStr(ExcludeFrameTypes e) {
|
| @@ -74,11 +87,13 @@ VideoProcessorImpl::VideoProcessorImpl(webrtc::VideoEncoder* encoder,
|
| FrameWriter* decoded_frame_writer)
|
| : encoder_(encoder),
|
| decoder_(decoder),
|
| - analysis_frame_reader_(analysis_frame_reader),
|
| - analysis_frame_writer_(analysis_frame_writer),
|
| + bitrate_allocator_(CreateBitrateAllocator(config)),
|
| + encode_callback_(new VideoProcessorEncodeCompleteCallback(this)),
|
| + decode_callback_(new VideoProcessorDecodeCompleteCallback(this)),
|
| packet_manipulator_(packet_manipulator),
|
| config_(config),
|
| - stats_(stats),
|
| + analysis_frame_reader_(analysis_frame_reader),
|
| + analysis_frame_writer_(analysis_frame_writer),
|
| source_frame_writer_(source_frame_writer),
|
| encoded_frame_writer_(encoded_frame_writer),
|
| decoded_frame_writer_(decoded_frame_writer),
|
| @@ -88,25 +103,19 @@ VideoProcessorImpl::VideoProcessorImpl(webrtc::VideoEncoder* encoder,
|
| encoded_frame_size_(0),
|
| encoded_frame_type_(kVideoFrameKey),
|
| prev_time_stamp_(0),
|
| - num_dropped_frames_(0),
|
| - num_spatial_resizes_(0),
|
| last_encoder_frame_width_(0),
|
| last_encoder_frame_height_(0),
|
| + stats_(stats),
|
| + num_dropped_frames_(0),
|
| + num_spatial_resizes_(0),
|
| bit_rate_factor_(0.0),
|
| encode_start_ns_(0),
|
| decode_start_ns_(0) {
|
| - std::unique_ptr<TemporalLayersFactory> tl_factory;
|
| - if (config_.codec_settings->codecType == VideoCodecType::kVideoCodecVP8) {
|
| - tl_factory.reset(new TemporalLayersFactory());
|
| - config.codec_settings->VP8()->tl_factory = tl_factory.get();
|
| - }
|
| - bitrate_allocator_ = VideoCodecInitializer::CreateBitrateAllocator(
|
| - *config.codec_settings, std::move(tl_factory));
|
| RTC_DCHECK(encoder);
|
| RTC_DCHECK(decoder);
|
| + RTC_DCHECK(packet_manipulator);
|
| RTC_DCHECK(analysis_frame_reader);
|
| RTC_DCHECK(analysis_frame_writer);
|
| - RTC_DCHECK(packet_manipulator);
|
| RTC_DCHECK(stats);
|
| }
|
|
|
| @@ -124,8 +133,6 @@ bool VideoProcessorImpl::Init() {
|
| last_encoder_frame_height_ = config_.codec_settings->height;
|
|
|
| // Setup required callbacks for the encoder/decoder.
|
| - encode_callback_.reset(new VideoProcessorEncodeCompleteCallback(this));
|
| - decode_callback_.reset(new VideoProcessorDecodeCompleteCallback(this));
|
| RTC_CHECK_EQ(encoder_->RegisterEncodeCompleteCallback(encode_callback_.get()),
|
| WEBRTC_VIDEO_CODEC_OK)
|
| << "Failed to register encode complete callback";
|
| @@ -133,7 +140,7 @@ bool VideoProcessorImpl::Init() {
|
| WEBRTC_VIDEO_CODEC_OK)
|
| << "Failed to register decode complete callback";
|
|
|
| - // Init the encoder and decoder.
|
| + // Initialize the encoder and decoder.
|
| uint32_t num_cores =
|
| config_.use_single_core ? 1 : CpuInfo::DetectNumberOfCores();
|
| RTC_CHECK_EQ(
|
| @@ -322,8 +329,8 @@ void VideoProcessorImpl::FrameEncoded(
|
|
|
| // Simulate packet loss.
|
| bool exclude_this_frame = false;
|
| - // Only keyframes can be excluded.
|
| if (encoded_image._frameType == kVideoFrameKey) {
|
| + // Only keyframes can be excluded.
|
| switch (config_.exclude_frame_types) {
|
| case kExcludeOnlyFirstKeyFrame:
|
| if (!first_key_frame_has_been_excluded_) {
|
|
|