• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 #ifndef TEST_VIDEO_CODEC_SETTINGS_H_
11 #define TEST_VIDEO_CODEC_SETTINGS_H_
12 
13 #include "api/video_codecs/video_encoder.h"
14 
15 namespace webrtc {
16 namespace test {
17 
18 const uint16_t kTestWidth = 352;
19 const uint16_t kTestHeight = 288;
20 const uint32_t kTestFrameRate = 30;
21 const unsigned int kTestMinBitrateKbps = 30;
22 const unsigned int kTestStartBitrateKbps = 300;
23 const uint8_t kTestPayloadType = 100;
24 const int64_t kTestTimingFramesDelayMs = 200;
25 const uint16_t kTestOutlierFrameSizePercent = 250;
26 
CodecSettings(VideoCodecType codec_type,VideoCodec * settings)27 static void CodecSettings(VideoCodecType codec_type, VideoCodec* settings) {
28   *settings = {};
29 
30   settings->width = kTestWidth;
31   settings->height = kTestHeight;
32 
33   settings->startBitrate = kTestStartBitrateKbps;
34   settings->maxBitrate = 0;
35   settings->minBitrate = kTestMinBitrateKbps;
36 
37   settings->maxFramerate = kTestFrameRate;
38 
39   settings->active = true;
40 
41   settings->qpMax = 56;  // See webrtcvideoengine.h.
42   settings->numberOfSimulcastStreams = 0;
43 
44   settings->timing_frame_thresholds = {
45       kTestTimingFramesDelayMs,
46       kTestOutlierFrameSizePercent,
47   };
48 
49   settings->codecType = codec_type;
50   switch (codec_type) {
51     case kVideoCodecVP8:
52       *(settings->VP8()) = VideoEncoder::GetDefaultVp8Settings();
53       return;
54     case kVideoCodecVP9:
55       *(settings->VP9()) = VideoEncoder::GetDefaultVp9Settings();
56       return;
57     case kVideoCodecH264:
58       // TODO(brandtr): Set `qpMax` here, when the OpenH264 wrapper supports it.
59       *(settings->H264()) = VideoEncoder::GetDefaultH264Settings();
60       return;
61     default:
62       return;
63   }
64 }
65 }  // namespace test
66 }  // namespace webrtc
67 
68 #endif  // TEST_VIDEO_CODEC_SETTINGS_H_
69