Chromium Code Reviews| 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 { |