154 lines
5.4 KiB
C
154 lines
5.4 KiB
C
|
/*
|
|||
|
* Copyright (c) 2011 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.
|
|||
|
*/
|
|||
|
|
|||
|
// This sub-API supports the following functionalities:
|
|||
|
//
|
|||
|
// - Creating and deleting VideoEngine instances.
|
|||
|
// - Creating and deleting channels.
|
|||
|
// - Connect a video channel with a corresponding voice channel for audio/video synchronization.
|
|||
|
// - Start and stop sending and receiving.
|
|||
|
|
|||
|
|
|||
|
#ifndef WEBRTC_VIDEO_ENGINE_MAIN_INTERFACE_VIE_BASE_H_
|
|||
|
#define WEBRTC_VIDEO_ENGINE_MAIN_INTERFACE_VIE_BASE_H_
|
|||
|
|
|||
|
#include "common_types.h"
|
|||
|
|
|||
|
|
|||
|
// Forward declarations
|
|||
|
namespace webrtc
|
|||
|
{
|
|||
|
|
|||
|
class VoiceEngine;
|
|||
|
|
|||
|
// ----------------------------------------------------------------------------
|
|||
|
// VideoEngine Callbacks
|
|||
|
// ----------------------------------------------------------------------------
|
|||
|
|
|||
|
class WEBRTC_DLLEXPORT ViEBaseObserver
|
|||
|
{
|
|||
|
public:
|
|||
|
// This method will be called periodically if the average system CPU usage
|
|||
|
// exceeds 75%.
|
|||
|
virtual void PerformanceAlarm(const unsigned int cpuLoad) = 0;
|
|||
|
|
|||
|
protected:
|
|||
|
virtual ~ViEBaseObserver() {};
|
|||
|
};
|
|||
|
|
|||
|
// ----------------------------------------------------------------------------
|
|||
|
// VideoEngine
|
|||
|
// ----------------------------------------------------------------------------
|
|||
|
|
|||
|
class WEBRTC_DLLEXPORT VideoEngine
|
|||
|
{
|
|||
|
public:
|
|||
|
// Creates a VideoEngine object, which can then be used to acquire sub‐APIs.
|
|||
|
static VideoEngine* Create();
|
|||
|
|
|||
|
// Deletes a VideoEngine instance.
|
|||
|
static bool Delete(VideoEngine*& videoEngine);
|
|||
|
|
|||
|
// Specifies the amount and type of trace information, which will be created
|
|||
|
// by the VideoEngine.
|
|||
|
static int SetTraceFilter(const unsigned int filter);
|
|||
|
|
|||
|
// Sets the name of the trace file and enables non‐encrypted trace messages.
|
|||
|
static int SetTraceFile(const char* fileNameUTF8,
|
|||
|
const bool addFileCounter = false);
|
|||
|
|
|||
|
// Installs the TraceCallback implementation to ensure that the VideoEngine
|
|||
|
// user receives callbacks for generated trace messages.
|
|||
|
static int SetTraceCallback(TraceCallback* callback);
|
|||
|
|
|||
|
// Android specific
|
|||
|
// Provides VideoEngine with pointers to objects supplied by the Java
|
|||
|
// applications JNI interface.
|
|||
|
static int SetAndroidObjects(void* javaVM, void* javaContext);
|
|||
|
|
|||
|
protected:
|
|||
|
VideoEngine() {};
|
|||
|
virtual ~VideoEngine() {};
|
|||
|
};
|
|||
|
|
|||
|
// ----------------------------------------------------------------------------
|
|||
|
// VideoBase
|
|||
|
// ----------------------------------------------------------------------------
|
|||
|
|
|||
|
class WEBRTC_DLLEXPORT ViEBase
|
|||
|
{
|
|||
|
public:
|
|||
|
// Factory for the ViEBase sub‐API and increases an internal reference
|
|||
|
// counter if successful. Returns NULL if the API is not supported or if
|
|||
|
// construction fails.
|
|||
|
static ViEBase* GetInterface(VideoEngine* videoEngine);
|
|||
|
|
|||
|
// Releases the ViEBase sub-API and decreases an internal reference counter.
|
|||
|
// Returns the new reference count. This value should be zero
|
|||
|
// for all sub-API:s before the VideoEngine object can be safely deleted.
|
|||
|
virtual int Release() = 0;
|
|||
|
|
|||
|
// Initiates all common parts of the VideoEngine.
|
|||
|
virtual int Init() = 0;
|
|||
|
|
|||
|
// Connects a VideoEngine instance to a VoiceEngine instance for audio video
|
|||
|
// synchronization.
|
|||
|
virtual int SetVoiceEngine(VoiceEngine* ptrVoiceEngine) = 0;
|
|||
|
|
|||
|
// Creates a new channel, either with a new encoder instance or by sharing
|
|||
|
// encoder instance with an already created channel.
|
|||
|
virtual int CreateChannel(int& videoChannel) = 0;
|
|||
|
virtual int CreateChannel(int& videoChannel, int originalChannel) = 0;
|
|||
|
|
|||
|
// Deletes an existing channel and releases the utilized resources.
|
|||
|
virtual int DeleteChannel(const int videoChannel) = 0;
|
|||
|
|
|||
|
// Specifies the VoiceEngine and VideoEngine channel pair to use for
|
|||
|
// audio/video synchronization.
|
|||
|
virtual int ConnectAudioChannel(const int videoChannel,
|
|||
|
const int audioChannel) = 0;
|
|||
|
|
|||
|
// Disconnects a previously paired VideoEngine and VoiceEngine channel pair.
|
|||
|
virtual int DisconnectAudioChannel(const int videoChannel) = 0;
|
|||
|
|
|||
|
// Starts sending packets to an already specified IP address and port number
|
|||
|
// for a specified channel.
|
|||
|
virtual int StartSend(const int videoChannel) = 0;
|
|||
|
|
|||
|
// Stops packets from being sent for a specified channel.
|
|||
|
virtual int StopSend(const int videoChannel) = 0;
|
|||
|
|
|||
|
// Prepares VideoEngine for receiving packets on the specified channel.
|
|||
|
virtual int StartReceive(const int videoChannel) = 0;
|
|||
|
|
|||
|
// Stops receiving incoming RTP and RTCP packets on the specified channel.
|
|||
|
virtual int StopReceive(const int videoChannel) = 0;
|
|||
|
|
|||
|
// Registers an instance of a user implementation of the ViEBase
|
|||
|
// observer.
|
|||
|
virtual int RegisterObserver(ViEBaseObserver& observer) = 0;
|
|||
|
|
|||
|
// Removes an already registered instance of ViEBaseObserver.
|
|||
|
virtual int DeregisterObserver() = 0;
|
|||
|
|
|||
|
// Retrieves the version information for VideoEngine and its components.
|
|||
|
virtual int GetVersion(char version[1024]) = 0;
|
|||
|
|
|||
|
// Returns the last VideoEngine error code.
|
|||
|
virtual int LastError() = 0;
|
|||
|
|
|||
|
protected:
|
|||
|
ViEBase() {};
|
|||
|
virtual ~ViEBase(){};
|
|||
|
};
|
|||
|
|
|||
|
} // namespace webrtc
|
|||
|
#endif // #define WEBRTC_VIDEO_ENGINE_MAIN_INTERFACE_VIE_BASE_H_
|