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

Unified Diff: modules/video_coding/codecs/test/videoprocessor_integrationtest.cc

Issue 3014623002: Adding test for SingleNalUnit mode (Closed)
Patch Set: Addressed review notes on coding style Created 3 years, 3 months 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: modules/video_coding/codecs/test/videoprocessor_integrationtest.cc
diff --git a/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc b/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc
index 4e4262a9f908bf64320fd022926313b6efde1f94..9ffd0afbdec80a5477a2510890304ac675f7824d 100644
--- a/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc
+++ b/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc
@@ -175,6 +175,7 @@ void VideoProcessorIntegrationTest::ProcessFramesAndMaybeVerify(
const RateProfile& rate_profile,
const std::vector<RateControlThresholds>* rc_thresholds,
const QualityThresholds* quality_thresholds,
+ const BitstreamThresholds* bs_thresholds,
const VisualizationParams* visualization_params) {
// The Android HW codec needs to be run on a task queue, so we simply always
// run the test on a task queue.
@@ -245,6 +246,10 @@ void VideoProcessorIntegrationTest::ProcessFramesAndMaybeVerify(
while (frame_number < num_frames) {
UpdateRateControlMetrics(frame_number);
+ if (bs_thresholds) {
+ VerifyBitstream(frame_number, bs_thresholds);
+ }
+
++frame_number;
if (frame_number ==
@@ -334,6 +339,13 @@ void VideoProcessorIntegrationTest::CreateEncoderAndDecoder() {
case kVideoCodecH264:
// TODO(brandtr): Generalize so that we support multiple profiles here.
codec = cricket::VideoCodec(cricket::kH264CodecName);
+ if (config_.packetization_mode == H264PacketizationMode::NonInterleaved) {
+ codec.SetParam(cricket::kH264FmtpPacketizationMode, "1");
+ } else {
+ RTC_CHECK_EQ(config_.packetization_mode,
+ H264PacketizationMode::SingleNalUnit);
+ codec.SetParam(cricket::kH264FmtpPacketizationMode, "0");
+ }
encoder_.reset(encoder_factory->CreateVideoEncoder(codec));
decoder_ =
decoder_factory_->CreateVideoDecoderWithParams(codec, decoder_params);
@@ -560,6 +572,14 @@ void VideoProcessorIntegrationTest::PrintRateControlMetrics(
printf("\n");
}
+void VideoProcessorIntegrationTest::VerifyBitstream(
+ int frame_number,
+ const BitstreamThresholds* bs_thresholds) {
brandtr 2017/09/26 11:20:55 Since this method is always called with a non-null
ssilkin 2017/09/26 12:05:33 Right. Done.
+ RTC_CHECK_GE(frame_number, 0);
+ const FrameStatistic* frame_stat = stats_.GetFrame(frame_number);
+ EXPECT_LE(*(frame_stat->max_nalu_length), bs_thresholds->max_nalu_length);
brandtr 2017/09/26 11:20:55 This is a bit dangerous: whenever |bs_thresholds|
ssilkin 2017/09/26 12:05:33 Such check is done within rtc:Optional
+}
+
// Temporal layer index corresponding to frame number, for up to 3 layers.
int VideoProcessorIntegrationTest::TemporalLayerIndexForFrame(
int frame_number) const {

Powered by Google App Engine
This is Rietveld 408576698