Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(452)

Unified Diff: webrtc/modules/video_coding/codecs/test/videoprocessor.cc

Issue 2510583002: Reland #2 of Issue 2434073003: Extract bitrate allocation ... (Closed)
Patch Set: Addressed comments Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 3f1a4371d8ea85973ce76cf8b4907841c571e0dd..cb7ab75af3c2213b281e25148d54fdb7b59a8380 100644
--- a/webrtc/modules/video_coding/codecs/test/videoprocessor.cc
+++ b/webrtc/modules/video_coding/codecs/test/videoprocessor.cc
@@ -10,14 +10,18 @@
#include "webrtc/modules/video_coding/codecs/test/videoprocessor.h"
-#include <assert.h>
#include <string.h>
#include <limits>
#include <memory>
+#include <utility>
#include <vector>
+#include "webrtc/base/checks.h"
#include "webrtc/base/timeutils.h"
+#include "webrtc/modules/video_coding/include/video_codec_initializer.h"
+#include "webrtc/modules/video_coding/utility/default_video_bitrate_allocator.h"
+#include "webrtc/modules/video_coding/utility/simulcast_rate_allocator.h"
#include "webrtc/system_wrappers/include/cpu_info.h"
namespace webrtc {
@@ -35,7 +39,7 @@ TestConfig::TestConfig()
frame_length_in_bytes(0),
use_single_core(false),
keyframe_interval(0),
- codec_settings(NULL),
+ codec_settings(nullptr),
verbose(true) {}
TestConfig::~TestConfig() {}
@@ -54,8 +58,9 @@ VideoProcessorImpl::VideoProcessorImpl(webrtc::VideoEncoder* encoder,
packet_manipulator_(packet_manipulator),
config_(config),
stats_(stats),
- encode_callback_(NULL),
- decode_callback_(NULL),
+ encode_callback_(nullptr),
+ decode_callback_(nullptr),
+ last_successful_frame_buffer_(nullptr),
first_key_frame_has_been_excluded_(false),
last_frame_missing_(false),
initialized_(false),
@@ -65,13 +70,23 @@ VideoProcessorImpl::VideoProcessorImpl(webrtc::VideoEncoder* encoder,
num_dropped_frames_(0),
num_spatial_resizes_(0),
last_encoder_frame_width_(0),
- last_encoder_frame_height_(0) {
- assert(encoder);
- assert(decoder);
- assert(frame_reader);
- assert(frame_writer);
- assert(packet_manipulator);
- assert(stats);
+ last_encoder_frame_height_(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(frame_reader);
+ RTC_DCHECK(frame_writer);
+ RTC_DCHECK(packet_manipulator);
+ RTC_DCHECK(stats);
}
bool VideoProcessorImpl::Init() {
@@ -149,8 +164,10 @@ VideoProcessorImpl::~VideoProcessorImpl() {
}
void VideoProcessorImpl::SetRates(int bit_rate, int frame_rate) {
- int set_rates_result = encoder_->SetRates(bit_rate, frame_rate);
- assert(set_rates_result >= 0);
+ int set_rates_result = encoder_->SetRateAllocation(
+ bitrate_allocator_->GetAllocation(bit_rate * 1000, frame_rate),
+ frame_rate);
+ RTC_CHECK_GE(set_rates_result, 0);
if (set_rates_result < 0) {
fprintf(stderr,
"Failed to update encoder with new rate %d, "
@@ -178,7 +195,7 @@ int VideoProcessorImpl::NumberSpatialResizes() {
}
bool VideoProcessorImpl::ProcessFrame(int frame_number) {
- assert(frame_number >= 0);
+ RTC_DCHECK_GE(frame_number, 0);
if (!initialized_) {
fprintf(stderr, "Attempting to use uninitialized VideoProcessor!\n");
return false;
@@ -272,7 +289,7 @@ void VideoProcessorImpl::FrameEncoded(
exclude_this_frame = true;
break;
default:
- assert(false);
+ RTC_NOTREACHED();
}
}
@@ -341,11 +358,11 @@ void VideoProcessorImpl::FrameDecoded(const VideoFrame& image) {
CalcBufferSize(kI420, up_image->width(), up_image->height());
std::unique_ptr<uint8_t[]> image_buffer(new uint8_t[length]);
int extracted_length = ExtractBuffer(up_image, length, image_buffer.get());
- assert(extracted_length > 0);
+ RTC_DCHECK_GT(extracted_length, 0);
// Update our copy of the last successful frame:
memcpy(last_successful_frame_buffer_, image_buffer.get(), extracted_length);
bool write_success = frame_writer_->WriteFrame(image_buffer.get());
- assert(write_success);
+ RTC_DCHECK(write_success);
if (!write_success) {
fprintf(stderr, "Failed to write frame %d to disk!", frame_number);
}
@@ -355,11 +372,11 @@ void VideoProcessorImpl::FrameDecoded(const VideoFrame& image) {
size_t length = CalcBufferSize(kI420, image.width(), image.height());
std::unique_ptr<uint8_t[]> image_buffer(new uint8_t[length]);
int extracted_length = ExtractBuffer(image, length, image_buffer.get());
- assert(extracted_length > 0);
+ RTC_DCHECK_GT(extracted_length, 0);
memcpy(last_successful_frame_buffer_, image_buffer.get(), extracted_length);
bool write_success = frame_writer_->WriteFrame(image_buffer.get());
- assert(write_success);
+ RTC_DCHECK(write_success);
if (!write_success) {
fprintf(stderr, "Failed to write frame %d to disk!", frame_number);
}
@@ -369,8 +386,8 @@ void VideoProcessorImpl::FrameDecoded(const VideoFrame& image) {
int VideoProcessorImpl::GetElapsedTimeMicroseconds(int64_t start,
int64_t stop) {
uint64_t encode_time = (stop - start) / rtc::kNumNanosecsPerMicrosec;
- assert(encode_time <
- static_cast<unsigned int>(std::numeric_limits<int>::max()));
+ RTC_DCHECK_LT(encode_time,
+ static_cast<unsigned int>(std::numeric_limits<int>::max()));
return static_cast<int>(encode_time);
}
@@ -381,7 +398,7 @@ const char* ExcludeFrameTypesToStr(ExcludeFrameTypes e) {
case kExcludeAllKeyFrames:
return "ExcludeAllKeyFrames";
default:
- assert(false);
+ RTC_NOTREACHED();
return "Unknown";
}
}
@@ -399,7 +416,7 @@ const char* VideoCodecTypeToStr(webrtc::VideoCodecType e) {
case kVideoCodecUnknown:
return "Unknown";
default:
- assert(false);
+ RTC_NOTREACHED();
return "Unknown";
}
}

Powered by Google App Engine
This is Rietveld 408576698