| 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 99ecb10a8ca7e8d3188273adadf8bd1ce5f57e7b..7d9a81aa36f7d7be93226cee690089c55c521bf8 100644
|
| --- a/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc
|
| +++ b/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc
|
| @@ -176,6 +176,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.
|
| @@ -246,6 +247,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 ==
|
| @@ -336,6 +341,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_.reset(
|
| decoder_factory->CreateVideoDecoderWithParams(codec, decoder_params));
|
| @@ -562,6 +574,14 @@ void VideoProcessorIntegrationTest::PrintRateControlMetrics(
|
| printf("\n");
|
| }
|
|
|
| +void VideoProcessorIntegrationTest::VerifyBitstream(
|
| + int frame_number,
|
| + const BitstreamThresholds& bs_thresholds) {
|
| + 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);
|
| +}
|
| +
|
| // Temporal layer index corresponding to frame number, for up to 3 layers.
|
| int VideoProcessorIntegrationTest::TemporalLayerIndexForFrame(
|
| int frame_number) const {
|
|
|