#include <yangipc/YangIpc.h>
#include <yangutil/sys/YangCTimer.h>
#include <stdio.h>
#include <string.h>
#include <signal.h>
#include <unistd.h>
#include <pthread.h>
//声明一个Timer
YangCTimer* m_5stimer=NULL;
int g_waitState=0;
//声明一个互斥锁
pthread_mutex_t g_lock ;
//声明一个条件锁
pthread_cond_t g_cond ;
//创建ctrl+c的回调函数,设置b_exit为1,signal通知条件锁在wait处继续执行,此处继续执行会退出程序运行。
static int32_t b_exit = 0;
static void ctrl_c_handler(int s){
printf("\ncaught signal %d, exit.\n",s);
b_exit = 1;
pthread_mutex_lock(&g_lock);
pthread_cond_signal(&g_cond);
pthread_mutex_unlock(&g_lock);
}
static int32_t b_reload = 0;
static void reload_handler(int s){
printf("\ncaught signal %d, reload.\n",s);
b_reload = 1;
}
//timer会定时调用这个函数,函数每次会调用checkAlive方法检查ipc的session是否活跃。
void g_yang_main_doTask(int32_t taskId, void *user) {
if (user == NULL) return;
YangIpc *ipc = (YangIpc*) user;
if (taskId == 5) {
ipc->checkAlive(&ipc->session);
}
}
//创建timer定制执行方法。
void yang_initCtimer(YangIpc* ipc){
m_5stimer = (YangCTimer*) calloc(1, sizeof(YangCTimer));
yang_create_timer(m_5stimer, ipc, 5, 5000);
m_5stimer->doTask = g_yang_main_doTask;
yang_timer_start(m_5stimer);
}
//当结束程序时停止timer的执行。
void yang_stopCtimer(){
yang_timer_stop(m_5stimer);
yang_destroy_timer(m_5stimer);
yang_free(m_5stimer);
}
int main(int argc, char* argv[])
{
struct sigaction sigIntHandler;
struct sigaction sigHupHandler;
pthread_mutex_init(&g_lock,NULL);
pthread_cond_init(&g_cond,NULL);
//ctrl + c to exit
sigIntHandler.sa_handler = ctrl_c_handler;
sigemptyset(&sigIntHandler.sa_mask);
sigIntHandler.sa_flags = 0;
sigaction(SIGINT, &sigIntHandler, 0);
//hup to reload
sigHupHandler.sa_handler = reload_handler;
sigemptyset(&sigHupHandler.sa_mask);
sigHupHandler.sa_flags = 0;
sigaction(SIGHUP, &sigHupHandler, 0);
//创建并初始化ipc
YangIpc ipc;
memset(&ipc,0,sizeof(YangIpc));
yang_create_ipc(&ipc);
ipc.init(&ipc.session);
ipc.start(&ipc.session);
//初始化timer定制检测ipc的session是否活跃
yang_initCtimer(&ipc);
while(!b_exit)
{
g_waitState=1;
//在这里等待条件锁,直到用户Ctrl+c退出或其他地方设置b_exit为1
pthread_cond_wait(&g_cond, &g_lock);
g_waitState=0;
if (b_reload) {
//reload
b_reload = 0;
}
}
//退出程序前停止timer
yang_stopCtimer();
//退出程序前销毁ipc
yang_destroy_ipc(&ipc);
return 0;
}
相关推荐
metaRTC6.0 new feature (一)
metaRTC6.0社区版最新版是6.0.212,标准版最新版本是6.0.276,企业版基础版最新版本是6.0.362,在企业版和标准版新增了一些实用功能模块,文件数字证书模块将并入社区版。
RV1126笔记二十七:MetaRTC6移植
MetaRTC6移植
metaRTC5.0新版本支持mbedtls(PolarSSL)
metaRTC5.0新版本支持openssl和mbed TLS,metaRTC实现了对mbedtls2.0和mbedtls3.0版本的支持。
【metaRTC学习】metaRTC的demo运行说明(一)
对metaRTC的demo做详细运行说明
MetaRTC-ffmpeg arm移植
注意这里的dl和pthread是调用交叉编译工具链中的库;当写在同一个–extra-libs里时没有顺序之分,如果用两个–extra-libs,那么就有加载的顺序之分,比如crypto里要用到dl,那么dl就需要放在它的前面加载。metartc支持mips32位,支持arm64,不支持arm32位,在arm32下报下列错误,这个错误是对内存的越界操作,然后再free(),目前metartc6和7都不支持arm32。将这两个文件放入libmetartc6。在build中到.a。
A High-Performance Nehalem iDataPlex Cluster and DDN S2A9990 Storage for Texas A&M University
本文转载自:http://sc.tamu.edu/systems/eos/
metaRTC8.0,一个全新架构的webRTC SDK库
metaRTC8.0是一个全新架构版本,并非在metaRTC7.0版本上简单升级,在QOS/语音对讲/内存占用/视频文件录制读取等方面新增多个模块,在弱网对抗/语音对讲/内存优化等效果上有显著提升。
来了,metaRTC7.0 标准版
metaRTC7.0 标准版将metaRTC产品化中遇到的问题进行了汇总改进,修复了产品化中多个bug,并新增了多个产品化实用的功能模块。
来了,metaRTC2.0的时代
概述虎年的到来,metaRTC2.0稳定版本发布了,社区也开始规划3.0版本。开发者和企业利用在metartc2.0的基础上开发产品。下载地址[1]metaRTC和FFmpeg的绑定ffmpeg具有强大的音视频生态,metaRTC集成FFmpeg,降低了音视频开发门槛。FFmpeg可以被JAVA,JS,C#等调用,借助FFmpeg强大生态,可以让metartc支持跨平台。metartc3.0社区规划•支持android,ios,mac等操作系统•FFmpeg深度集成•wasm支持web H265•其他web
metaRTC Visual Studio编译指南
metaRTC windows版本提供qt和vs2019两种编译支持,vs2019编译工程支持从metaRTC6.0版本开始
流媒体分析之webrtc之metartc 实现。
1. 连接srs 服务器yang_srs_connectRtcServer,调用yang_srs_getSignal 发送信令及sdp 信息交换。yang_sdp_querySrs 函数:yang_http_post 通过发送本段sdp及接收srs服务器的sdp 信息。yang_http_post 通过http 协议post 接口,发送sdp,并接收对端的sdp。调用yang_rtcconn_getRemoteSdp,解析sdp 信息,函数 yang_srs_getSignal,封装sdp 信息。
metaRTC5.0实现webrtc的TURN支持
metaRTC5.0新版实现对TURN支持。metaRTC5.0提供有metaRTC客户端和浏览器TURN的demo。
树莓派CM4——使用MetaRTC3.0集成ffmpeg实现webrtc推拉流
一、前言 由于项目需要实时语音通讯,集成了国内大神MetaRTC3.0功能 原文如下: https://blog.csdn.net/m0_56595685/article/details/124366760?spm=1001.2014.3001.5502 本文属于新手向,主要讲编译过程 文章超长,图片众多,且编译过程非常耗时 请一定要按顺序弄,自由发挥容易出问题,不要问我怎么知道的。。。。。。 二、环境 1、硬件准备 (1)我手上的的是CM4带emmc的版本(lite的直接刷SD卡上就行了)
metaRTC(yangwebrtc)-中国人自己的webrtc
yangrtc(yangwebrtc)是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。webrtc支持为自主研发,非谷歌lib,兼容webrtc协议 ,可与谷歌Lib和浏览器互通。可用于元宇宙、云3D、云游戏、远程教育、远程医疗、指挥调度、安防监控、影视录播、协同办公、直播互动等多种行业应用。
metaRTC4.0稳定版发布
metaRTC4.0是支持webrtc功能较为全面的一个版本,最新版本为稳定版本,推荐开发者全面转向metaRTC4.0版本。
metaRTC+mbedtls实现android平台上更高效的webrtc
metaRTC支持openssl和mbedtls,安卓版本默认加密库为mbedtls,metaRTC在安卓系统中使用mbedtls将极大提升webrtc性能。注:MbedTLS前身是开源库PolarSSL,是行业内最轻量的SSL加密算法库,现已被arm公司收购并由arm技术团队进行维护更新。...............
metaRTC7集成lvgl ui demo编译指南
metaRTC新增lvgl demo,可在linux下编译运行
metaRTC(ARM linux64)编译指南
ARM嵌入式系统在各个领域均得到了广泛的应用,linux应用在arm上也是应用非常广泛,metaRTC支持arm linux。
metaRTC6.0标准版b1即将发布,敬请期待!
metaRTC标准版最新版b1即将发布,b1版本在b0版基础上进行了优化并修复了b0版一些bug,demo也进行了扩展和升级。
1万+




被折叠的 条评论
为什么被折叠?



