| Index: webrtc/modules/video_coding/main/test/vcm_payload_sink_factory.cc
|
| diff --git a/webrtc/modules/video_coding/main/test/vcm_payload_sink_factory.cc b/webrtc/modules/video_coding/main/test/vcm_payload_sink_factory.cc
|
| deleted file mode 100644
|
| index d930805bb434a9fd8b5cf068fe39ad1d8c499d83..0000000000000000000000000000000000000000
|
| --- a/webrtc/modules/video_coding/main/test/vcm_payload_sink_factory.cc
|
| +++ /dev/null
|
| @@ -1,210 +0,0 @@
|
| -/*
|
| - * 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/modules/video_coding/main/test/vcm_payload_sink_factory.h"
|
| -
|
| -#include <assert.h>
|
| -
|
| -#include <algorithm>
|
| -
|
| -#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h"
|
| -#include "webrtc/modules/video_coding/main/test/test_util.h"
|
| -#include "webrtc/system_wrappers/include/clock.h"
|
| -#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
|
| -
|
| -namespace webrtc {
|
| -namespace rtpplayer {
|
| -
|
| -class VcmPayloadSinkFactory::VcmPayloadSink
|
| - : public PayloadSinkInterface,
|
| - public VCMPacketRequestCallback {
|
| - public:
|
| - VcmPayloadSink(VcmPayloadSinkFactory* factory,
|
| - RtpStreamInterface* stream,
|
| - rtc::scoped_ptr<VideoCodingModule>* vcm,
|
| - rtc::scoped_ptr<FileOutputFrameReceiver>* frame_receiver)
|
| - : factory_(factory), stream_(stream), vcm_(), frame_receiver_() {
|
| - assert(factory);
|
| - assert(stream);
|
| - assert(vcm);
|
| - assert(vcm->get());
|
| - assert(frame_receiver);
|
| - assert(frame_receiver->get());
|
| - vcm_.swap(*vcm);
|
| - frame_receiver_.swap(*frame_receiver);
|
| - vcm_->RegisterPacketRequestCallback(this);
|
| - vcm_->RegisterReceiveCallback(frame_receiver_.get());
|
| - }
|
| -
|
| - virtual ~VcmPayloadSink() {
|
| - factory_->Remove(this);
|
| - }
|
| -
|
| - // PayloadSinkInterface
|
| - int32_t OnReceivedPayloadData(const uint8_t* payload_data,
|
| - const size_t payload_size,
|
| - const WebRtcRTPHeader* rtp_header) override {
|
| - return vcm_->IncomingPacket(payload_data, payload_size, *rtp_header);
|
| - }
|
| -
|
| - bool OnRecoveredPacket(const uint8_t* packet, size_t packet_length) override {
|
| - // We currently don't handle FEC.
|
| - return true;
|
| - }
|
| -
|
| - // VCMPacketRequestCallback
|
| - int32_t ResendPackets(const uint16_t* sequence_numbers,
|
| - uint16_t length) override {
|
| - stream_->ResendPackets(sequence_numbers, length);
|
| - return 0;
|
| - }
|
| -
|
| - int DecodeAndProcess(bool should_decode, bool decode_dual_frame) {
|
| - if (should_decode) {
|
| - if (vcm_->Decode() < 0) {
|
| - return -1;
|
| - }
|
| - }
|
| - return Process() ? 0 : -1;
|
| - }
|
| -
|
| - bool Process() {
|
| - if (vcm_->TimeUntilNextProcess() <= 0) {
|
| - if (vcm_->Process() < 0) {
|
| - return false;
|
| - }
|
| - }
|
| - return true;
|
| - }
|
| -
|
| - bool Decode() {
|
| - vcm_->Decode(10000);
|
| - return true;
|
| - }
|
| -
|
| - private:
|
| - VcmPayloadSinkFactory* factory_;
|
| - RtpStreamInterface* stream_;
|
| - rtc::scoped_ptr<VideoCodingModule> vcm_;
|
| - rtc::scoped_ptr<FileOutputFrameReceiver> frame_receiver_;
|
| -
|
| - RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(VcmPayloadSink);
|
| -};
|
| -
|
| -VcmPayloadSinkFactory::VcmPayloadSinkFactory(
|
| - const std::string& base_out_filename,
|
| - Clock* clock,
|
| - bool protection_enabled,
|
| - VCMVideoProtection protection_method,
|
| - int64_t rtt_ms,
|
| - uint32_t render_delay_ms,
|
| - uint32_t min_playout_delay_ms)
|
| - : base_out_filename_(base_out_filename),
|
| - clock_(clock),
|
| - protection_enabled_(protection_enabled),
|
| - protection_method_(protection_method),
|
| - rtt_ms_(rtt_ms),
|
| - render_delay_ms_(render_delay_ms),
|
| - min_playout_delay_ms_(min_playout_delay_ms),
|
| - null_event_factory_(new NullEventFactory()),
|
| - crit_sect_(CriticalSectionWrapper::CreateCriticalSection()),
|
| - sinks_() {
|
| - assert(clock);
|
| - assert(crit_sect_.get());
|
| -}
|
| -
|
| -VcmPayloadSinkFactory::~VcmPayloadSinkFactory() {
|
| - assert(sinks_.empty());
|
| -}
|
| -
|
| -PayloadSinkInterface* VcmPayloadSinkFactory::Create(
|
| - RtpStreamInterface* stream) {
|
| - assert(stream);
|
| - CriticalSectionScoped cs(crit_sect_.get());
|
| -
|
| - rtc::scoped_ptr<VideoCodingModule> vcm(
|
| - VideoCodingModule::Create(clock_, null_event_factory_.get()));
|
| - if (vcm.get() == NULL) {
|
| - return NULL;
|
| - }
|
| -
|
| - const PayloadTypes& plt = stream->payload_types();
|
| - for (PayloadTypesIterator it = plt.begin(); it != plt.end();
|
| - ++it) {
|
| - if (it->codec_type() != kVideoCodecULPFEC &&
|
| - it->codec_type() != kVideoCodecRED) {
|
| - VideoCodec codec;
|
| - if (VideoCodingModule::Codec(it->codec_type(), &codec) < 0) {
|
| - return NULL;
|
| - }
|
| - codec.plType = it->payload_type();
|
| - if (vcm->RegisterReceiveCodec(&codec, 1) < 0) {
|
| - return NULL;
|
| - }
|
| - }
|
| - }
|
| -
|
| - vcm->SetChannelParameters(0, 0, rtt_ms_);
|
| - vcm->SetVideoProtection(protection_method_, protection_enabled_);
|
| - vcm->SetRenderDelay(render_delay_ms_);
|
| - vcm->SetMinimumPlayoutDelay(min_playout_delay_ms_);
|
| - vcm->SetNackSettings(kMaxNackListSize, kMaxPacketAgeToNack, 0);
|
| -
|
| - rtc::scoped_ptr<FileOutputFrameReceiver> frame_receiver(
|
| - new FileOutputFrameReceiver(base_out_filename_, stream->ssrc()));
|
| - rtc::scoped_ptr<VcmPayloadSink> sink(
|
| - new VcmPayloadSink(this, stream, &vcm, &frame_receiver));
|
| -
|
| - sinks_.push_back(sink.get());
|
| - return sink.release();
|
| -}
|
| -
|
| -int VcmPayloadSinkFactory::DecodeAndProcessAll(bool decode_dual_frame) {
|
| - CriticalSectionScoped cs(crit_sect_.get());
|
| - assert(clock_);
|
| - bool should_decode = (clock_->TimeInMilliseconds() % 5) == 0;
|
| - for (Sinks::iterator it = sinks_.begin(); it != sinks_.end(); ++it) {
|
| - if ((*it)->DecodeAndProcess(should_decode, decode_dual_frame) < 0) {
|
| - return -1;
|
| - }
|
| - }
|
| - return 0;
|
| -}
|
| -
|
| -bool VcmPayloadSinkFactory::ProcessAll() {
|
| - CriticalSectionScoped cs(crit_sect_.get());
|
| - for (Sinks::iterator it = sinks_.begin(); it != sinks_.end(); ++it) {
|
| - if (!(*it)->Process()) {
|
| - return false;
|
| - }
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -bool VcmPayloadSinkFactory::DecodeAll() {
|
| - CriticalSectionScoped cs(crit_sect_.get());
|
| - for (Sinks::iterator it = sinks_.begin(); it != sinks_.end(); ++it) {
|
| - if (!(*it)->Decode()) {
|
| - return false;
|
| - }
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -void VcmPayloadSinkFactory::Remove(VcmPayloadSink* sink) {
|
| - assert(sink);
|
| - CriticalSectionScoped cs(crit_sect_.get());
|
| - Sinks::iterator it = std::find(sinks_.begin(), sinks_.end(), sink);
|
| - assert(it != sinks_.end());
|
| - sinks_.erase(it);
|
| -}
|
| -
|
| -} // namespace rtpplayer
|
| -} // namespace webrtc
|
|
|