Chromium Code Reviews| Index: webrtc/modules/video_coding/codecs/h264/h264_encoder_impl_unittest.cc |
| diff --git a/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl_unittest.cc b/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..309d6b08ec2c2b6ffa6f3333fb546906c359fb60 |
| --- /dev/null |
| +++ b/webrtc/modules/video_coding/codecs/h264/h264_encoder_impl_unittest.cc |
| @@ -0,0 +1,82 @@ |
| +/* |
| + * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. |
| + * |
| + * Use of this source code is governed by a BSD-style license |
| + * that can be found in the LICENSE file in the root of the source |
| + * tree. An additional intellectual property rights grant can be found |
| + * in the file PATENTS. All contributing project authors may |
| + * be found in the AUTHORS file in the root of the source tree. |
| + * |
| + */ |
| + |
| +#include "webrtc/modules/video_coding/codecs/h264/h264_encoder_impl.h" |
| + |
| +#include "webrtc/test/gtest.h" |
| + |
| +namespace webrtc { |
| + |
| +namespace { |
| + |
| +const int kMaxPayloadSize = 1024; |
| + |
| +void SetDefaultSettings(VideoCodec* codec_settings) { |
| + codec_settings->codecType = kVideoCodecH264; |
| + codec_settings->maxFramerate = 60; |
| + codec_settings->width = 640; |
| + codec_settings->height = 480; |
| + // If frame dropping is false, we get a warning that bitrate can't |
| + // be controlled for RC_QUALITY_MODE; RC_BITRATE_MODE and RC_TIMESTAMP_MODE |
| + codec_settings->H264()->frameDroppingOn = true; |
| + codec_settings->targetBitrate = 2000; |
| + codec_settings->maxBitrate = 4000; |
| +} |
| + |
| +TEST(H264EncoderImplTest, CanInitializeWithDefaultParameters) { |
| + H264EncoderImpl encoder(cricket::VideoCodec("H264")); |
| + VideoCodec codec_settings; |
| + SetDefaultSettings(&codec_settings); |
| + EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, |
| + encoder.InitEncode(&codec_settings, 1, kMaxPayloadSize)); |
|
hbos
2016/12/02 10:21:27
nit: kNumCodes = 1
|
| + EXPECT_EQ(H264PacketizationMode::NonInterleaved, |
| + encoder.PacketizationModeForTesting()); |
| +} |
| + |
| +TEST(H264EncoderImplTest, CanInitializeWithPacketizationMode1Explicitly) { |
|
hbos
2016/12/02 10:21:26
nit/optional: Naming difference "mode" vs enum nam
hta-webrtc
2016/12/02 11:09:01
Done.
|
| + cricket::VideoCodec codec("H264"); |
| + codec.SetParam(cricket::kH264FmtpPacketizationMode, "1"); |
| + H264EncoderImpl encoder(codec); |
| + VideoCodec codec_settings; |
| + SetDefaultSettings(&codec_settings); |
| + EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, |
| + encoder.InitEncode(&codec_settings, 1, kMaxPayloadSize)); |
| + EXPECT_EQ(H264PacketizationMode::NonInterleaved, |
| + encoder.PacketizationModeForTesting()); |
| +} |
| + |
| +TEST(H264EncoderImplTest, CanInitializeWithPacketizationMode0Explicitly) { |
| + cricket::VideoCodec codec("H264"); |
| + codec.SetParam(cricket::kH264FmtpPacketizationMode, "0"); |
| + H264EncoderImpl encoder(codec); |
| + VideoCodec codec_settings; |
| + SetDefaultSettings(&codec_settings); |
| + EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, |
| + encoder.InitEncode(&codec_settings, 1, kMaxPayloadSize)); |
| + EXPECT_EQ(H264PacketizationMode::SingleNalUnit, |
| + encoder.PacketizationModeForTesting()); |
| +} |
| + |
| +TEST(H264EncoderImplTest, CanInitializeWithPacketizationMode0RemovedParameter) { |
| + cricket::VideoCodec codec("H264"); |
| + codec.RemoveParam(cricket::kH264FmtpPacketizationMode); |
| + H264EncoderImpl encoder(codec); |
| + VideoCodec codec_settings; |
| + SetDefaultSettings(&codec_settings); |
| + EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, |
| + encoder.InitEncode(&codec_settings, 1, kMaxPayloadSize)); |
| + EXPECT_EQ(H264PacketizationMode::SingleNalUnit, |
| + encoder.PacketizationModeForTesting()); |
| +} |
| + |
| +} // anonymous namespace |
| + |
| +} // namespace webrtc |