webrtc_m130/webrtc/test/configurable_frame_size_encoder.cc

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

92 lines
2.9 KiB
C++
Raw Normal View History

/*
* Copyright (c) 2013 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/test/configurable_frame_size_encoder.h"
#include <string.h>
#include "webrtc/common_video/include/video_image.h"
#include "webrtc/modules/video_coding/include/video_codec_interface.h"
#include "webrtc/test/gtest.h"
namespace webrtc {
namespace test {
ConfigurableFrameSizeEncoder::ConfigurableFrameSizeEncoder(
size_t max_frame_size)
: callback_(NULL),
max_frame_size_(max_frame_size),
current_frame_size_(max_frame_size),
buffer_(new uint8_t[max_frame_size]) {
memset(buffer_.get(), 0, max_frame_size);
}
ConfigurableFrameSizeEncoder::~ConfigurableFrameSizeEncoder() {}
int32_t ConfigurableFrameSizeEncoder::InitEncode(
const VideoCodec* codec_settings,
int32_t number_of_cores,
size_t max_payload_size) {
return WEBRTC_VIDEO_CODEC_OK;
}
int32_t ConfigurableFrameSizeEncoder::Encode(
const VideoFrame& inputImage,
const CodecSpecificInfo* codecSpecificInfo,
const std::vector<FrameType>* frame_types) {
EncodedImage encodedImage(
buffer_.get(), current_frame_size_, max_frame_size_);
encodedImage._completeFrame = true;
encodedImage._encodedHeight = inputImage.height();
encodedImage._encodedWidth = inputImage.width();
encodedImage._frameType = kVideoFrameKey;
encodedImage._timeStamp = inputImage.timestamp();
encodedImage.capture_time_ms_ = inputImage.render_time_ms();
RTPFragmentationHeader* fragmentation = NULL;
CodecSpecificInfo specific;
memset(&specific, 0, sizeof(specific));
callback_->OnEncodedImage(encodedImage, &specific, fragmentation);
return WEBRTC_VIDEO_CODEC_OK;
}
int32_t ConfigurableFrameSizeEncoder::RegisterEncodeCompleteCallback(
EncodedImageCallback* callback) {
callback_ = callback;
return WEBRTC_VIDEO_CODEC_OK;
}
int32_t ConfigurableFrameSizeEncoder::Release() {
return WEBRTC_VIDEO_CODEC_OK;
}
int32_t ConfigurableFrameSizeEncoder::SetChannelParameters(uint32_t packet_loss,
int64_t rtt) {
return WEBRTC_VIDEO_CODEC_OK;
}
Revert of Issue 2434073003: Extract bitrate allocation ... (patchset #4 id:60001 of https://codereview.webrtc.org/2488833004/ ) Reason for revert: Seems to be causing flakiness in perf test: FullStackTest.ScreenshareSlidesVP8_2TL_LossyNet Original issue's description: > Reland of Issue 2434073003: Extract bitrate allocation ... > > This is a reland of https://codereview.webrtc.org/2434073003/ including > some fixes for failing test cases. > > Original description: > > Extract bitrate allocation of spatial/temporal layers out of codec impl. > > This CL makes a number of intervowen changes: > > * Add BitrateAllocation struct, that contains a codec independent view > of how the target bitrate is distributed over spatial and temporal > layers. > > * Adds the BitrateAllocator interface, which takes a bitrate and frame > rate and produces a BitrateAllocation. > > * A default (non layered) implementation is added, and > SimulcastRateAllocator is extended to fully handle VP8 allocation. > This includes capturing TemporalLayer instances created by the > encoder. > > * ViEEncoder now owns both the bitrate allocator and the temporal layer > factories for VP8. This allows allocation to happen fully outside of > the encoder implementation. > > This refactoring will make it possible for ViEEncoder to signal the > full picture of target bitrates to the RTCP module. > > BUG=webrtc:6301 > > Committed: https://crrev.com/647bf43dcb2fd16fccf276bd94dc4400728bb405 > Cr-Commit-Position: refs/heads/master@{#15023} TBR=mflodman@webrtc.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=webrtc:6301 Review-Url: https://codereview.webrtc.org/2491393002 Cr-Commit-Position: refs/heads/master@{#15026}
2016-11-10 08:30:33 -08:00
int32_t ConfigurableFrameSizeEncoder::SetRates(uint32_t new_bit_rate,
uint32_t frame_rate) {
return WEBRTC_VIDEO_CODEC_OK;
}
int32_t ConfigurableFrameSizeEncoder::SetPeriodicKeyFrames(bool enable) {
return WEBRTC_VIDEO_CODEC_OK;
}
int32_t ConfigurableFrameSizeEncoder::SetFrameSize(size_t size) {
Revert of Issue 2434073003: Extract bitrate allocation ... (patchset #4 id:60001 of https://codereview.webrtc.org/2488833004/ ) Reason for revert: Seems to be causing flakiness in perf test: FullStackTest.ScreenshareSlidesVP8_2TL_LossyNet Original issue's description: > Reland of Issue 2434073003: Extract bitrate allocation ... > > This is a reland of https://codereview.webrtc.org/2434073003/ including > some fixes for failing test cases. > > Original description: > > Extract bitrate allocation of spatial/temporal layers out of codec impl. > > This CL makes a number of intervowen changes: > > * Add BitrateAllocation struct, that contains a codec independent view > of how the target bitrate is distributed over spatial and temporal > layers. > > * Adds the BitrateAllocator interface, which takes a bitrate and frame > rate and produces a BitrateAllocation. > > * A default (non layered) implementation is added, and > SimulcastRateAllocator is extended to fully handle VP8 allocation. > This includes capturing TemporalLayer instances created by the > encoder. > > * ViEEncoder now owns both the bitrate allocator and the temporal layer > factories for VP8. This allows allocation to happen fully outside of > the encoder implementation. > > This refactoring will make it possible for ViEEncoder to signal the > full picture of target bitrates to the RTCP module. > > BUG=webrtc:6301 > > Committed: https://crrev.com/647bf43dcb2fd16fccf276bd94dc4400728bb405 > Cr-Commit-Position: refs/heads/master@{#15023} TBR=mflodman@webrtc.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=webrtc:6301 Review-Url: https://codereview.webrtc.org/2491393002 Cr-Commit-Position: refs/heads/master@{#15026}
2016-11-10 08:30:33 -08:00
assert(size <= max_frame_size_);
current_frame_size_ = size;
return WEBRTC_VIDEO_CODEC_OK;
}
} // namespace test
} // namespace webrtc