1e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org/* 2e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. 3e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org * 4e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org * Use of this source code is governed by a BSD-style license 5e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org * that can be found in the LICENSE file in the root of the source 6e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org * tree. An additional intellectual property rights grant can be found 7e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org * in the file PATENTS. All contributing project authors may 8e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org */ 10e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org#include "webrtc/test/encoder_settings.h" 11e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org 12e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org#include <assert.h> 13e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org#include <string.h> 14e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org 156b97015d433f126e835178e2b59bc847d1af85a5pbos@webrtc.org#include "webrtc/video_encoder.h" 16e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org#include "webrtc/video_engine/vie_defines.h" 17e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org 18e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.orgnamespace webrtc { 19e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.orgnamespace test { 20bdfcddf7091e92134143e9a2d9ccce908e43979epbos@webrtc.orgstd::vector<VideoStream> CreateVideoStreams(size_t num_streams) { 21e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org assert(num_streams > 0); 22e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org 23e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org // Add more streams to the settings above with reasonable values if required. 24e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org static const size_t kNumSettings = 3; 25e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org assert(num_streams <= kNumSettings); 26e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org 27bdfcddf7091e92134143e9a2d9ccce908e43979epbos@webrtc.org std::vector<VideoStream> stream_settings(kNumSettings); 28e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org 29e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org stream_settings[0].width = 320; 30e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org stream_settings[0].height = 180; 31e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org stream_settings[0].max_framerate = 30; 32e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org stream_settings[0].min_bitrate_bps = 50000; 33e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org stream_settings[0].target_bitrate_bps = stream_settings[0].max_bitrate_bps = 34e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org 150000; 35e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org stream_settings[0].max_qp = 56; 36e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org 37e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org stream_settings[1].width = 640; 38e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org stream_settings[1].height = 360; 39e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org stream_settings[1].max_framerate = 30; 40e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org stream_settings[1].min_bitrate_bps = 200000; 41e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org stream_settings[1].target_bitrate_bps = stream_settings[1].max_bitrate_bps = 42e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org 450000; 43e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org stream_settings[1].max_qp = 56; 44e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org 45e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org stream_settings[2].width = 1280; 46e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org stream_settings[2].height = 720; 47e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org stream_settings[2].max_framerate = 30; 48e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org stream_settings[2].min_bitrate_bps = 700000; 49e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org stream_settings[2].target_bitrate_bps = stream_settings[2].max_bitrate_bps = 50e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org 1500000; 51e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org stream_settings[2].max_qp = 56; 52bdfcddf7091e92134143e9a2d9ccce908e43979epbos@webrtc.org stream_settings.resize(num_streams); 53bdfcddf7091e92134143e9a2d9ccce908e43979epbos@webrtc.org return stream_settings; 54e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org} 55e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org 56e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.orgVideoCodec CreateDecoderVideoCodec( 57bdfcddf7091e92134143e9a2d9ccce908e43979epbos@webrtc.org const VideoSendStream::Config::EncoderSettings& encoder_settings) { 58e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org VideoCodec codec; 59e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org memset(&codec, 0, sizeof(codec)); 60e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org 61bdfcddf7091e92134143e9a2d9ccce908e43979epbos@webrtc.org codec.plType = encoder_settings.payload_type; 62bdfcddf7091e92134143e9a2d9ccce908e43979epbos@webrtc.org strcpy(codec.plName, encoder_settings.payload_name.c_str()); 632d4a80c05adffe07b48dc235475852450cd90568stefan@webrtc.org if (encoder_settings.payload_name == "VP8") { 642d4a80c05adffe07b48dc235475852450cd90568stefan@webrtc.org codec.codecType = kVideoCodecVP8; 652d4a80c05adffe07b48dc235475852450cd90568stefan@webrtc.org } else if (encoder_settings.payload_name == "H264") { 662d4a80c05adffe07b48dc235475852450cd90568stefan@webrtc.org codec.codecType = kVideoCodecH264; 672d4a80c05adffe07b48dc235475852450cd90568stefan@webrtc.org } else { 682d4a80c05adffe07b48dc235475852450cd90568stefan@webrtc.org codec.codecType = kVideoCodecGeneric; 692d4a80c05adffe07b48dc235475852450cd90568stefan@webrtc.org } 70e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org 71e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org if (codec.codecType == kVideoCodecVP8) { 726b97015d433f126e835178e2b59bc847d1af85a5pbos@webrtc.org codec.codecSpecific.VP8 = VideoEncoder::GetDefaultVp8Settings(); 736b97015d433f126e835178e2b59bc847d1af85a5pbos@webrtc.org } else if (codec.codecType == kVideoCodecH264) { 746b97015d433f126e835178e2b59bc847d1af85a5pbos@webrtc.org codec.codecSpecific.H264 = VideoEncoder::GetDefaultH264Settings(); 752d4a80c05adffe07b48dc235475852450cd90568stefan@webrtc.org } 762d4a80c05adffe07b48dc235475852450cd90568stefan@webrtc.org 77bdfcddf7091e92134143e9a2d9ccce908e43979epbos@webrtc.org codec.width = 320; 78bdfcddf7091e92134143e9a2d9ccce908e43979epbos@webrtc.org codec.height = 180; 79bdfcddf7091e92134143e9a2d9ccce908e43979epbos@webrtc.org codec.startBitrate = codec.minBitrate = codec.maxBitrate = 300; 80e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org 81e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org return codec; 82e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org} 83e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org 84e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org} // namespace test 85e2a7a77646b23fb3704d267e6079e04bde493543pbos@webrtc.org} // namespace webrtc 86