Files
platform-external-webrtc/webrtc/video_engine/vie_base_impl.h
Peter Boström 76c53d36bc Remove ViE interface usage from VideoReceiveStream.
References channels and underlying objects directly instead of using
interfaces referenced with channel id. Channel creation is still done as
before for now.

BUG=1695
R=stefan@webrtc.org
TBR=mflodman@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/46849004

Cr-Commit-Position: refs/heads/master@{#8958}
2015-04-09 12:35:46 +00:00

94 lines
3.5 KiB
C++

/*
* 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.
*/
#ifndef WEBRTC_VIDEO_ENGINE_VIE_BASE_IMPL_H_
#define WEBRTC_VIDEO_ENGINE_VIE_BASE_IMPL_H_
#include "webrtc/video_engine/include/vie_base.h"
#include "webrtc/video_engine/vie_defines.h"
#include "webrtc/video_engine/vie_ref_count.h"
#include "webrtc/video_engine/vie_shared_data.h"
namespace webrtc {
class Config;
class Module;
class VoiceEngine;
class ViEBaseImpl
: public ViEBase,
public ViERefCount {
public:
virtual int Release();
// Implements ViEBase.
virtual int Init();
virtual int SetVoiceEngine(VoiceEngine* voice_engine);
virtual int RegisterCpuOveruseObserver(int channel,
CpuOveruseObserver* observer);
virtual int SetCpuOveruseOptions(int channel,
const CpuOveruseOptions& options);
void RegisterCpuOveruseMetricsObserver(
int channel,
CpuOveruseMetricsObserver* observer) override;
virtual int GetCpuOveruseMetrics(int channel,
CpuOveruseMetrics* metrics);
void RegisterSendSideDelayObserver(int channel,
SendSideDelayObserver* observer) override;
virtual int CreateChannel(int& video_channel); // NOLINT
virtual int CreateChannel(int& video_channel, // NOLINT
const Config* config);
virtual int CreateChannel(int& video_channel, // NOLINT
int original_channel);
virtual int CreateChannelWithoutDefaultEncoder(int& video_channel, // NOLINT
int original_channel);
ChannelGroup* GetChannelGroup(int channel_id) override;
ViEChannel* GetChannel(int channel_id) override;
ViEEncoder* GetEncoder(int channel_id) override;
ViERenderManager* GetRenderManager() override;
virtual int CreateReceiveChannel(int& video_channel, // NOLINT
int original_channel);
virtual int DeleteChannel(const int video_channel);
virtual int ConnectAudioChannel(const int video_channel,
const int audio_channel);
virtual int DisconnectAudioChannel(const int video_channel);
virtual int StartSend(const int video_channel);
virtual int StopSend(const int video_channel);
virtual int StartReceive(const int video_channel);
virtual int StopReceive(const int video_channel);
virtual int GetVersion(char version[1024]);
virtual int LastError();
protected:
explicit ViEBaseImpl(const Config& config);
virtual ~ViEBaseImpl();
ViESharedData* shared_data() { return &shared_data_; }
private:
int CreateChannel(int& video_channel, int original_channel, // NOLINT
bool sender, bool disable_default_encoder);
void RegisterSendStatisticsProxy(
int channel,
SendStatisticsProxy* send_statistics_proxy) override;
void RegisterReceiveStatisticsProxy(
int channel,
ReceiveStatisticsProxy* receive_statistics_proxy) override;
// ViEBaseImpl owns ViESharedData used by all interface implementations.
ViESharedData shared_data_;
};
} // namespace webrtc
#endif // WEBRTC_VIDEO_ENGINE_VIE_BASE_IMPL_H_