音视频通讯SDK API参考手册  iOS 1.4.0
tencent::av::AVContext类 参考abstract

AVContext对象代表着一个SDK运行实例。 更多...

#include <av_context.h>

struct  Config
 CreateContext()的入参。 更多...
 

Public 类型

typedef void(* StartCompleteCallback) (int32 result, void *custom_data)
 StartContext()的回调函数。 更多...
 

Public 成员函数

virtual ~AVContext ()
 
virtual int32 StartContext (StartCompleteCallback start_complete_callback, void *custom_data=NULL)=0
 启动AVContext对象。 更多...
 
virtual int32 StopContext (AVClosure stop_complete_callback, void *custom_data=NULL)=0
 终止AVContext对象。 更多...
 
virtual int32 EnterRoom (AVRoom::Delegate *room_delegate, const AVRoom::EnterRoomParam *param)=0
 进入音视频房间。 更多...
 
virtual int32 ExitRoom ()=0
 退出音视频房间。 更多...
 
virtual AVRoomGetRoom () const =0
 获得AVRoom对象。 更多...
 
virtual AVAudioCtrlGetAudioCtrl ()=0
 获得AVAudioCtrl对象。 更多...
 
virtual AVDeviceMgrGetAudioDeviceMgr ()=0
 获得音频对应的AVDeviceMgr对象。 更多...
 
virtual AVVideoCtrlGetVideoCtrl (VideoChannelType channel=VIDEO_CHANNEL_MAIN)=0
 获得AVVideoCtrl对象。 更多...
 
virtual AVDeviceMgrGetVideoDeviceMgr (VideoChannelType channel=VIDEO_CHANNEL_MAIN)=0
 获得视频对应的AVDeviceMgr对象。 更多...
 

静态 Public 成员函数

static std::string GetSDKVersion ()
 获得SDK的版本信息。 更多...
 
static AVContextCreateContext (const AVContext::Config &config)
 创建AVContext对象。 更多...
 
static void DestroyContext (AVContext *context)
 销毁AVContext对象。 更多...
 

详细描述

AVContext对内负责管理SDK的工作线程,控制各种内部对象的生命周期; 对外提供了一系列的接口方法,App可以通过AVContext的成员函数进一步访问SDK的其他对象。

成员类型定义说明

typedef void(* tencent::av::AVContext::StartCompleteCallback) (int32 result, void *custom_data)

此函数是和StartContext()一起使用的回调函数,用来异步返回执行结果。

参数
result错误码:
AV_OK 执行成功;
AV_ERROR_INITSDKFAIL 一般原因为鉴权失败。
custom_data值等于调用StartContext()时的入参custom_data。

构造及析构函数说明

virtual tencent::av::AVContext::~AVContext ( )
virtual

成员函数说明

static AVContext* tencent::av::AVContext::CreateContext ( const AVContext::Config config)
static

App使用SDK总是从CreateContext()开始的,该静态成员函数返回一个新的AVContext实例。

参数
[in]config创建AVContext所需的配置信息。
返回
成功则返回AVContext的实例指针;否则返回NULL。
备注
  • 创建成功之后,App需要进一步调用StartContext()来启动AVContext对象。
  • App必须保证AVContext实例的唯一性,同时创建多个AVContext实例可能会因为设备占用等方面的原因,出现无法预料的结果。
  • 由CreateContext()创建的AVContext对象必须调用DestroyContext()来销毁。
static void tencent::av::AVContext::DestroyContext ( AVContext context)
static

App通过此静态成员函数来销毁由CreateContext()创建的AVContext对象。

备注
App应该设法保证CreateContext()和DestroyContext()的配对调用。
virtual int32 tencent::av::AVContext::EnterRoom ( AVRoom::Delegate room_delegate,
const AVRoom::EnterRoomParam param 
)
pure virtual

EnterRoom()是一个异步操作,内部会连接服务器,申请进入音视频房间。

参数
[in]room_delegate房间委托对象:
进入双人房间,必须传递AVRoomPair::Delegate类型的委托对象;
进入多人房间,必须传递AVRoomMulti::Delegate类型的委托对象。
[in]param进入房间所需的参数:
进入双人房间,必须传递AVRoomPair::EnterRoomParam类型的参数;
进入多人房间,必须传递AVRoomMulti::EnterRoomParam类型的参数。
返回
返回值表示异步操作启动是否成功; 异步操作执行结果通过入参room_delegate的OnEnterRoomComplete()返回。
返回值
AV_OK启动成功。
AV_ERR_CONTEXT_NOT_STARTEDStartContext()没有执行成功。
AV_ERR_ALREADY_EXISTS没有退出上一个音视频房间。
AV_ERR_INVALID_ARGUMENT委托或房间配置信息为空,或者委托和房间类型不匹配。
备注
EnterRoom()必须在StartContext()执行成功之后调用才有效。 目前同一时刻只支持进入一个音视频房间,所以:
  • 调用EnterRoom()之前,必须先退出上一个音视频房间;
  • 如果当前AVContext中已经存在一个音视频房间,调用EnterRoom()会同步返回失败。
注意
Windows版本的SDK暂时没有开放双人音视频房间的能力。
virtual int32 tencent::av::AVContext::ExitRoom ( )
pure virtual

ExitRoom()是一个异步操作,内部会连接服务器,申请退出音视频房间。

返回
返回值表示异步操作启动是否成功; 异步操作执行结果通过EnterRoom()入参room_delegate的OnRoomExitComplete()返回。
返回值
AV_OK启动成功。
其他值启动失败。
virtual AVAudioCtrl* tencent::av::AVContext::GetAudioCtrl ( )
pure virtual

StartContext()执行成功之后,App可以通过此成员函数获得AVAudioCtrl对象。

返回
如果StartContext()执行成功,则返回AVAudioCtrl对象;否则返回NULL。
virtual AVDeviceMgr* tencent::av::AVContext::GetAudioDeviceMgr ( )
pure virtual

StartContext()执行成功之后,App可以通过此成员函数获得音频对应的AVDeviceMgr对象。

返回
如果StartContext()执行成功,则返回音频对应的AVDeviceMgr对象;否则返回NULL。
virtual AVRoom* tencent::av::AVContext::GetRoom ( ) const
pure virtual

EnterRoom()执行成功之后,App可以通过此成员函数获得当前音视频房间对应的AVRoom对象。

返回
如果EnterRoom()执行成功,则返回当前音视频房间对应的AVRoom对象;否则返回NULL。
static std::string tencent::av::AVContext::GetSDKVersion ( )
static
返回
以字符串形式返回SDK的版本信息。 版本信息由三个数字组成,数字间以“.”分隔,比如“1.2.20150501”, 前两个数字“1.1”表示SDK版本号,最后一个数字表示SDK编译时间。
备注
SDK在特性变化和bug修复之后,会更改版本信息重新发布。 一般来说,版本号代表特性的变化,SDK的对外接口和内部架构都可能有较大的变化和调整。 而对于同一个版本的SDK,编译时间能够体现bugfix的情况, 比如“1.0.20150501”和“1.0.20150601”,后者可以视作是前者的bugfix版本。
virtual AVVideoCtrl* tencent::av::AVContext::GetVideoCtrl ( VideoChannelType  channel = VIDEO_CHANNEL_MAIN)
pure virtual

StartContext()执行成功之后,App可以通过此成员函数获得指定的AVVideoCtrl对象。

参数
channel要获得的AVVideoCtrl对象的类型。
VIDEO_CHANNEL_MAIN 返回主路视频对应的AVVideoCtrl对象;
返回
如果StartContext()执行成功,则返回指定的AVVideoCtrl对象;否则返回NULL。
注意
SDK目前暂时没有开放辅路视频的能力。
virtual AVDeviceMgr* tencent::av::AVContext::GetVideoDeviceMgr ( VideoChannelType  channel = VIDEO_CHANNEL_MAIN)
pure virtual

StartContext()执行成功之后,App可以通过此成员函数获得视频对应的AVDeviceMgr对象。

返回
如果StartContext()执行成功,则返回视频对应的AVDeviceMgr对象;否则返回NULL。
注意
SDK目前暂时没有开放辅路视频的能力。
virtual int32 tencent::av::AVContext::StartContext ( StartCompleteCallback  start_complete_callback,
void *  custom_data = NULL 
)
pure virtual

StartContext()是一个异步操作,内部会启动工作线程,创建各种内部对象。

参数
[in]start_complete_callback函数指针,指向App定义的回调函数。
[in]custom_dataApp指定的一个没有类型的指针,SDK会在回调函数中把该值回传给App。
返回
返回值表示异步操作启动是否成功;异步操作执行结果通过回调函数返回。
返回值
AV_OK启动成功。
其他值启动失败。
备注
  • 只有当异步操作启动成功的时候,才会通过回调函数异步返回执行结果;
  • 当异步操作启动失败的时候,直接通过StartContext()的返回值返回错误,不会再触发回调函数;
  • App收到StartCompleteCallback回调的时候,表示StartContext()执行完毕;
  • StartContext()执行成功之后,App才能进一步调用AVContext的其他成员函数;
  • StartContext()执行成功之后,App必须调用StopContext()来终止AVContext对象。
注意
以下两点约定也适用于SDK的其他异步操作接口:
  1. 只有当异步操作启动成功的时候,才会通过回调函数异步返回执行结果;
  2. 当异步操作启动失败的时候,直接通过StartContext()的返回值返回错误,不会再触发回调函数。
virtual int32 tencent::av::AVContext::StopContext ( AVClosure  stop_complete_callback,
void *  custom_data = NULL 
)
pure virtual

StopContext()是一个异步操作,内部会终止工作线程,销毁各种内部对象。

参数
[in]stop_complete_callback函数指针,指向App定义的回调函数。
[in]custom_dataApp指定的一个没有类型的指针,SDK会在回调函数中把该值回传给App。
返回
返回值表示异步操作启动是否成功;异步操作执行结果通过回调函数返回。
返回值
AV_OK启动成功。
其他值启动失败。
备注
  • App应该设法保证StartContext()和StopContext()的配对调用;
  • StopContext()内部如果判断到当前还没退出音视频房间,会自动调用ExitRoom();
  • StopContext()执行成功之后,App必须调用DestroyContext()来销毁AVContext对象。