| Index: webrtc/modules/video_coding/main/source/video_coding_impl.cc
|
| diff --git a/webrtc/modules/video_coding/main/source/video_coding_impl.cc b/webrtc/modules/video_coding/main/source/video_coding_impl.cc
|
| deleted file mode 100644
|
| index a0fc5f3fe2dd401aaff4fd45619319a211dc4495..0000000000000000000000000000000000000000
|
| --- a/webrtc/modules/video_coding/main/source/video_coding_impl.cc
|
| +++ /dev/null
|
| @@ -1,352 +0,0 @@
|
| -/*
|
| - * Copyright (c) 2012 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/common_types.h"
|
| -#include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
|
| -#include "webrtc/modules/video_coding/codecs/interface/video_codec_interface.h"
|
| -#include "webrtc/modules/video_coding/main/source/encoded_frame.h"
|
| -#include "webrtc/modules/video_coding/main/source/jitter_buffer.h"
|
| -#include "webrtc/modules/video_coding/main/source/packet.h"
|
| -#include "webrtc/modules/video_coding/main/source/video_coding_impl.h"
|
| -#include "webrtc/system_wrappers/include/clock.h"
|
| -
|
| -namespace webrtc {
|
| -namespace vcm {
|
| -
|
| -int64_t
|
| -VCMProcessTimer::Period() const {
|
| - return _periodMs;
|
| -}
|
| -
|
| -int64_t
|
| -VCMProcessTimer::TimeUntilProcess() const {
|
| - const int64_t time_since_process = _clock->TimeInMilliseconds() - _latestMs;
|
| - const int64_t time_until_process = _periodMs - time_since_process;
|
| - return std::max<int64_t>(time_until_process, 0);
|
| -}
|
| -
|
| -void
|
| -VCMProcessTimer::Processed() {
|
| - _latestMs = _clock->TimeInMilliseconds();
|
| -}
|
| -} // namespace vcm
|
| -
|
| -namespace {
|
| -// This wrapper provides a way to modify the callback without the need to expose
|
| -// a register method all the way down to the function calling it.
|
| -class EncodedImageCallbackWrapper : public EncodedImageCallback {
|
| - public:
|
| - EncodedImageCallbackWrapper()
|
| - : cs_(CriticalSectionWrapper::CreateCriticalSection()), callback_(NULL) {}
|
| -
|
| - virtual ~EncodedImageCallbackWrapper() {}
|
| -
|
| - void Register(EncodedImageCallback* callback) {
|
| - CriticalSectionScoped cs(cs_.get());
|
| - callback_ = callback;
|
| - }
|
| -
|
| - // TODO(andresp): Change to void as return value is ignored.
|
| - virtual int32_t Encoded(const EncodedImage& encoded_image,
|
| - const CodecSpecificInfo* codec_specific_info,
|
| - const RTPFragmentationHeader* fragmentation) {
|
| - CriticalSectionScoped cs(cs_.get());
|
| - if (callback_)
|
| - return callback_->Encoded(
|
| - encoded_image, codec_specific_info, fragmentation);
|
| - return 0;
|
| - }
|
| -
|
| - private:
|
| - rtc::scoped_ptr<CriticalSectionWrapper> cs_;
|
| - EncodedImageCallback* callback_ GUARDED_BY(cs_);
|
| -};
|
| -
|
| -class VideoCodingModuleImpl : public VideoCodingModule {
|
| - public:
|
| - VideoCodingModuleImpl(Clock* clock,
|
| - EventFactory* event_factory,
|
| - bool owns_event_factory,
|
| - VideoEncoderRateObserver* encoder_rate_observer,
|
| - VCMQMSettingsCallback* qm_settings_callback)
|
| - : VideoCodingModule(),
|
| - sender_(clock,
|
| - &post_encode_callback_,
|
| - encoder_rate_observer,
|
| - qm_settings_callback),
|
| - receiver_(clock, event_factory),
|
| - own_event_factory_(owns_event_factory ? event_factory : NULL) {}
|
| -
|
| - virtual ~VideoCodingModuleImpl() {
|
| - own_event_factory_.reset();
|
| - }
|
| -
|
| - int64_t TimeUntilNextProcess() override {
|
| - int64_t sender_time = sender_.TimeUntilNextProcess();
|
| - int64_t receiver_time = receiver_.TimeUntilNextProcess();
|
| - assert(sender_time >= 0);
|
| - assert(receiver_time >= 0);
|
| - return VCM_MIN(sender_time, receiver_time);
|
| - }
|
| -
|
| - int32_t Process() override {
|
| - int32_t sender_return = sender_.Process();
|
| - int32_t receiver_return = receiver_.Process();
|
| - if (sender_return != VCM_OK)
|
| - return sender_return;
|
| - return receiver_return;
|
| - }
|
| -
|
| - int32_t RegisterSendCodec(const VideoCodec* sendCodec,
|
| - uint32_t numberOfCores,
|
| - uint32_t maxPayloadSize) override {
|
| - return sender_.RegisterSendCodec(sendCodec, numberOfCores, maxPayloadSize);
|
| - }
|
| -
|
| - const VideoCodec& GetSendCodec() const override {
|
| - return sender_.GetSendCodec();
|
| - }
|
| -
|
| - // DEPRECATED.
|
| - int32_t SendCodec(VideoCodec* currentSendCodec) const override {
|
| - return sender_.SendCodecBlocking(currentSendCodec);
|
| - }
|
| -
|
| - // DEPRECATED.
|
| - VideoCodecType SendCodec() const override {
|
| - return sender_.SendCodecBlocking();
|
| - }
|
| -
|
| - int32_t RegisterExternalEncoder(VideoEncoder* externalEncoder,
|
| - uint8_t payloadType,
|
| - bool internalSource) override {
|
| - return sender_.RegisterExternalEncoder(externalEncoder, payloadType,
|
| - internalSource);
|
| - }
|
| -
|
| - int Bitrate(unsigned int* bitrate) const override {
|
| - return sender_.Bitrate(bitrate);
|
| - }
|
| -
|
| - int FrameRate(unsigned int* framerate) const override {
|
| - return sender_.FrameRate(framerate);
|
| - }
|
| -
|
| - int32_t SetChannelParameters(uint32_t target_bitrate, // bits/s.
|
| - uint8_t lossRate,
|
| - int64_t rtt) override {
|
| - return sender_.SetChannelParameters(target_bitrate, lossRate, rtt);
|
| - }
|
| -
|
| - int32_t RegisterTransportCallback(
|
| - VCMPacketizationCallback* transport) override {
|
| - return sender_.RegisterTransportCallback(transport);
|
| - }
|
| -
|
| - int32_t RegisterSendStatisticsCallback(
|
| - VCMSendStatisticsCallback* sendStats) override {
|
| - return sender_.RegisterSendStatisticsCallback(sendStats);
|
| - }
|
| -
|
| - int32_t RegisterProtectionCallback(
|
| - VCMProtectionCallback* protection) override {
|
| - return sender_.RegisterProtectionCallback(protection);
|
| - }
|
| -
|
| - int32_t SetVideoProtection(VCMVideoProtection videoProtection,
|
| - bool enable) override {
|
| - // TODO(pbos): Remove enable from receive-side protection modes as well.
|
| - if (enable)
|
| - sender_.SetVideoProtection(videoProtection);
|
| - return receiver_.SetVideoProtection(videoProtection, enable);
|
| - }
|
| -
|
| - int32_t AddVideoFrame(const VideoFrame& videoFrame,
|
| - const VideoContentMetrics* contentMetrics,
|
| - const CodecSpecificInfo* codecSpecificInfo) override {
|
| - return sender_.AddVideoFrame(videoFrame, contentMetrics, codecSpecificInfo);
|
| - }
|
| -
|
| - int32_t IntraFrameRequest(int stream_index) override {
|
| - return sender_.IntraFrameRequest(stream_index);
|
| - }
|
| -
|
| - int32_t EnableFrameDropper(bool enable) override {
|
| - return sender_.EnableFrameDropper(enable);
|
| - }
|
| -
|
| - void SuspendBelowMinBitrate() override {
|
| - return sender_.SuspendBelowMinBitrate();
|
| - }
|
| -
|
| - bool VideoSuspended() const override { return sender_.VideoSuspended(); }
|
| -
|
| - int32_t RegisterReceiveCodec(const VideoCodec* receiveCodec,
|
| - int32_t numberOfCores,
|
| - bool requireKeyFrame) override {
|
| - return receiver_.RegisterReceiveCodec(receiveCodec, numberOfCores,
|
| - requireKeyFrame);
|
| - }
|
| -
|
| - int32_t RegisterExternalDecoder(VideoDecoder* externalDecoder,
|
| - uint8_t payloadType,
|
| - bool internalRenderTiming) override {
|
| - return receiver_.RegisterExternalDecoder(externalDecoder, payloadType,
|
| - internalRenderTiming);
|
| - }
|
| -
|
| - int32_t RegisterReceiveCallback(
|
| - VCMReceiveCallback* receiveCallback) override {
|
| - return receiver_.RegisterReceiveCallback(receiveCallback);
|
| - }
|
| -
|
| - int32_t RegisterReceiveStatisticsCallback(
|
| - VCMReceiveStatisticsCallback* receiveStats) override {
|
| - return receiver_.RegisterReceiveStatisticsCallback(receiveStats);
|
| - }
|
| -
|
| - int32_t RegisterDecoderTimingCallback(
|
| - VCMDecoderTimingCallback* decoderTiming) override {
|
| - return receiver_.RegisterDecoderTimingCallback(decoderTiming);
|
| - }
|
| -
|
| - int32_t RegisterFrameTypeCallback(
|
| - VCMFrameTypeCallback* frameTypeCallback) override {
|
| - return receiver_.RegisterFrameTypeCallback(frameTypeCallback);
|
| - }
|
| -
|
| - int32_t RegisterPacketRequestCallback(
|
| - VCMPacketRequestCallback* callback) override {
|
| - return receiver_.RegisterPacketRequestCallback(callback);
|
| - }
|
| -
|
| - int RegisterRenderBufferSizeCallback(
|
| - VCMRenderBufferSizeCallback* callback) override {
|
| - return receiver_.RegisterRenderBufferSizeCallback(callback);
|
| - }
|
| -
|
| - int32_t Decode(uint16_t maxWaitTimeMs) override {
|
| - return receiver_.Decode(maxWaitTimeMs);
|
| - }
|
| -
|
| - int32_t ResetDecoder() override { return receiver_.ResetDecoder(); }
|
| -
|
| - int32_t ReceiveCodec(VideoCodec* currentReceiveCodec) const override {
|
| - return receiver_.ReceiveCodec(currentReceiveCodec);
|
| - }
|
| -
|
| - VideoCodecType ReceiveCodec() const override {
|
| - return receiver_.ReceiveCodec();
|
| - }
|
| -
|
| - int32_t IncomingPacket(const uint8_t* incomingPayload,
|
| - size_t payloadLength,
|
| - const WebRtcRTPHeader& rtpInfo) override {
|
| - return receiver_.IncomingPacket(incomingPayload, payloadLength, rtpInfo);
|
| - }
|
| -
|
| - int32_t SetMinimumPlayoutDelay(uint32_t minPlayoutDelayMs) override {
|
| - return receiver_.SetMinimumPlayoutDelay(minPlayoutDelayMs);
|
| - }
|
| -
|
| - int32_t SetRenderDelay(uint32_t timeMS) override {
|
| - return receiver_.SetRenderDelay(timeMS);
|
| - }
|
| -
|
| - int32_t Delay() const override { return receiver_.Delay(); }
|
| -
|
| - uint32_t DiscardedPackets() const override {
|
| - return receiver_.DiscardedPackets();
|
| - }
|
| -
|
| - int SetReceiverRobustnessMode(ReceiverRobustness robustnessMode,
|
| - VCMDecodeErrorMode errorMode) override {
|
| - return receiver_.SetReceiverRobustnessMode(robustnessMode, errorMode);
|
| - }
|
| -
|
| - void SetNackSettings(size_t max_nack_list_size,
|
| - int max_packet_age_to_nack,
|
| - int max_incomplete_time_ms) override {
|
| - return receiver_.SetNackSettings(max_nack_list_size, max_packet_age_to_nack,
|
| - max_incomplete_time_ms);
|
| - }
|
| -
|
| - void SetDecodeErrorMode(VCMDecodeErrorMode decode_error_mode) override {
|
| - return receiver_.SetDecodeErrorMode(decode_error_mode);
|
| - }
|
| -
|
| - int SetMinReceiverDelay(int desired_delay_ms) override {
|
| - return receiver_.SetMinReceiverDelay(desired_delay_ms);
|
| - }
|
| -
|
| - int32_t SetReceiveChannelParameters(int64_t rtt) override {
|
| - return receiver_.SetReceiveChannelParameters(rtt);
|
| - }
|
| -
|
| - void RegisterPreDecodeImageCallback(EncodedImageCallback* observer) override {
|
| - receiver_.RegisterPreDecodeImageCallback(observer);
|
| - }
|
| -
|
| - void RegisterPostEncodeImageCallback(
|
| - EncodedImageCallback* observer) override {
|
| - post_encode_callback_.Register(observer);
|
| - }
|
| -
|
| - void TriggerDecoderShutdown() override { receiver_.TriggerDecoderShutdown(); }
|
| -
|
| - private:
|
| - EncodedImageCallbackWrapper post_encode_callback_;
|
| - vcm::VideoSender sender_;
|
| - vcm::VideoReceiver receiver_;
|
| - rtc::scoped_ptr<EventFactory> own_event_factory_;
|
| -};
|
| -} // namespace
|
| -
|
| -uint8_t VideoCodingModule::NumberOfCodecs() {
|
| - return VCMCodecDataBase::NumberOfCodecs();
|
| -}
|
| -
|
| -int32_t VideoCodingModule::Codec(uint8_t listId, VideoCodec* codec) {
|
| - if (codec == NULL) {
|
| - return VCM_PARAMETER_ERROR;
|
| - }
|
| - return VCMCodecDataBase::Codec(listId, codec) ? 0 : -1;
|
| -}
|
| -
|
| -int32_t VideoCodingModule::Codec(VideoCodecType codecType, VideoCodec* codec) {
|
| - if (codec == NULL) {
|
| - return VCM_PARAMETER_ERROR;
|
| - }
|
| - return VCMCodecDataBase::Codec(codecType, codec) ? 0 : -1;
|
| -}
|
| -
|
| -VideoCodingModule* VideoCodingModule::Create(
|
| - Clock* clock,
|
| - VideoEncoderRateObserver* encoder_rate_observer,
|
| - VCMQMSettingsCallback* qm_settings_callback) {
|
| - return new VideoCodingModuleImpl(clock, new EventFactoryImpl, true,
|
| - encoder_rate_observer, qm_settings_callback);
|
| -}
|
| -
|
| -VideoCodingModule* VideoCodingModule::Create(
|
| - Clock* clock,
|
| - EventFactory* event_factory) {
|
| - assert(clock);
|
| - assert(event_factory);
|
| - return new VideoCodingModuleImpl(clock, event_factory, false, nullptr,
|
| - nullptr);
|
| -}
|
| -
|
| -void VideoCodingModule::Destroy(VideoCodingModule* module) {
|
| - if (module != NULL) {
|
| - delete static_cast<VideoCodingModuleImpl*>(module);
|
| - }
|
| -}
|
| -} // namespace webrtc
|
|
|