1/* 2 * Copyright (c) 2013 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 11#include "webrtc/test/configurable_frame_size_encoder.h" 12 13#include <string.h> 14 15#include "testing/gtest/include/gtest/gtest.h" 16 17#include "webrtc/common_video/interface/video_image.h" 18#include "webrtc/modules/video_coding/codecs/interface/video_codec_interface.h" 19 20namespace webrtc { 21namespace test { 22 23ConfigurableFrameSizeEncoder::ConfigurableFrameSizeEncoder( 24 uint32_t max_frame_size) 25 : callback_(NULL), 26 max_frame_size_(max_frame_size), 27 current_frame_size_(max_frame_size), 28 buffer_(new uint8_t[max_frame_size]) { 29 memset(buffer_.get(), 0, max_frame_size); 30} 31 32ConfigurableFrameSizeEncoder::~ConfigurableFrameSizeEncoder() {} 33 34int32_t ConfigurableFrameSizeEncoder::InitEncode( 35 const VideoCodec* codec_settings, 36 int32_t number_of_cores, 37 uint32_t max_payload_size) { 38 return WEBRTC_VIDEO_CODEC_OK; 39} 40 41int32_t ConfigurableFrameSizeEncoder::Encode( 42 const I420VideoFrame& inputImage, 43 const CodecSpecificInfo* codecSpecificInfo, 44 const std::vector<VideoFrameType>* frame_types) { 45 EncodedImage encodedImage( 46 buffer_.get(), current_frame_size_, max_frame_size_); 47 encodedImage._completeFrame = true; 48 encodedImage._encodedHeight = inputImage.height(); 49 encodedImage._encodedWidth = inputImage.width(); 50 encodedImage._frameType = kKeyFrame; 51 encodedImage._timeStamp = inputImage.timestamp(); 52 encodedImage.capture_time_ms_ = inputImage.render_time_ms(); 53 RTPFragmentationHeader* fragmentation = NULL; 54 CodecSpecificInfo specific; 55 memset(&specific, 0, sizeof(specific)); 56 callback_->Encoded(encodedImage, &specific, fragmentation); 57 58 return WEBRTC_VIDEO_CODEC_OK; 59} 60 61int32_t ConfigurableFrameSizeEncoder::RegisterEncodeCompleteCallback( 62 EncodedImageCallback* callback) { 63 callback_ = callback; 64 return WEBRTC_VIDEO_CODEC_OK; 65} 66 67int32_t ConfigurableFrameSizeEncoder::Release() { 68 return WEBRTC_VIDEO_CODEC_OK; 69} 70 71int32_t ConfigurableFrameSizeEncoder::SetChannelParameters(uint32_t packet_loss, 72 int rtt) { 73 return WEBRTC_VIDEO_CODEC_OK; 74} 75 76int32_t ConfigurableFrameSizeEncoder::SetRates(uint32_t new_bit_rate, 77 uint32_t frame_rate) { 78 return WEBRTC_VIDEO_CODEC_OK; 79} 80 81int32_t ConfigurableFrameSizeEncoder::SetPeriodicKeyFrames(bool enable) { 82 return WEBRTC_VIDEO_CODEC_OK; 83} 84 85int32_t ConfigurableFrameSizeEncoder::CodecConfigParameters(uint8_t* buffer, 86 int32_t size) { 87 return WEBRTC_VIDEO_CODEC_OK; 88} 89 90int32_t ConfigurableFrameSizeEncoder::SetFrameSize(uint32_t size) { 91 assert(size <= max_frame_size_); 92 current_frame_size_ = size; 93 return WEBRTC_VIDEO_CODEC_OK; 94} 95 96} // namespace test 97} // namespace webrtc 98