新增拉流代理源相关api

This commit is contained in:
xiongziliang 2020-03-10 22:55:19 +08:00
parent b3554fb721
commit 891b86e7ea
4 changed files with 55 additions and 12 deletions

View File

@ -130,17 +130,18 @@ API_EXPORT void API_CALL mk_media_input_aac(mk_media ctx, void *data, int len, u
API_EXPORT void API_CALL mk_media_input_aac1(mk_media ctx, void *data, int len, uint32_t dts, void *adts); API_EXPORT void API_CALL mk_media_input_aac1(mk_media ctx, void *data, int len, uint32_t dts, void *adts);
/** /**
* MediaSource.close() * MediaSource.close()
* mk_media_release函数销毁该对象 * MediaSource时
* mk_media_release函数并且释放其他资源
* mk_media_release函数MediaSource.close()
* @param user_data mk_media_set_on_close函数设置 * @param user_data mk_media_set_on_close函数设置
* @return 00
*/ */
typedef int(API_CALL *on_mk_media_close)(void *user_data); typedef void(API_CALL *on_mk_media_close)(void *user_data);
/** /**
* MediaSource.close() * MediaSource.close()
* MediaSource时 * MediaSource时
* * mk_media_release函数并且释放其他资源
* @param ctx * @param ctx
* @param cb * @param cb
* @param user_data * @param user_data

View File

@ -68,6 +68,32 @@ API_EXPORT void API_CALL mk_proxy_player_set_option(mk_proxy_player ctx, const c
*/ */
API_EXPORT void API_CALL mk_proxy_player_play(mk_proxy_player ctx, const char *url); API_EXPORT void API_CALL mk_proxy_player_play(mk_proxy_player ctx, const char *url);
/**
* MediaSource.close()
* MediaSource时
* mk_proxy_player_release函数并且释放其他资源
* mk_proxy_player_release函数MediaSource.close()
* @param user_data mk_proxy_player_set_on_close函数设置
*/
typedef void(API_CALL *on_mk_proxy_player_close)(void *user_data);
/**
* MediaSource.close()
* MediaSource时
* mk_proxy_player_release函数并且释放其他资源
* @param ctx
* @param cb
* @param user_data
*/
API_EXPORT void API_CALL mk_proxy_player_set_on_close(mk_proxy_player ctx, on_mk_proxy_player_close cb, void *user_data);
/**
*
* @param ctx
* @return
*/
API_EXPORT int API_CALL mk_proxy_player_total_reader_count(mk_proxy_player ctx);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -62,14 +62,11 @@ protected:
} }
if(!_cb){ if(!_cb){
//未设置回调,没法关闭 //未设置回调,没法关闭
WarnL << "请使用mk_media_set_on_close函数设置回调函数!";
return false; return false;
} }
if(!_cb(_user_data)){ //请在回调中调用mk_media_release函数释放资源,否则MediaSource::close()操作不会生效
//回调选择返回不关闭该视频 _cb(_user_data);
return false;
}
//回调中已经关闭该视频
WarnL << "close media:" << sender.getSchema() << "/" << sender.getVhost() << "/" << sender.getApp() << "/" << sender.getId() << " " << force; WarnL << "close media:" << sender.getSchema() << "/" << sender.getVhost() << "/" << sender.getApp() << "/" << sender.getId() << " " << force;
return true; return true;
} }

View File

@ -61,3 +61,22 @@ API_EXPORT void API_CALL mk_proxy_player_play(mk_proxy_player ctx, const char *u
obj->play(url_str); obj->play(url_str);
}); });
} }
API_EXPORT void API_CALL mk_proxy_player_set_on_close(mk_proxy_player ctx, on_mk_proxy_player_close cb, void *user_data){
assert(ctx);
PlayerProxy::Ptr &obj = *((PlayerProxy::Ptr *) ctx);
obj->getPoller()->async([obj,cb,user_data](){
//切换线程再操作
obj->setOnClose([cb,user_data](){
if(cb){
cb(user_data);
}
});
});
}
API_EXPORT int API_CALL mk_proxy_player_total_reader_count(mk_proxy_player ctx){
assert(ctx);
PlayerProxy::Ptr &obj = *((PlayerProxy::Ptr *) ctx);
return obj->totalReaderCount();
}