metartc5_jz源码阅读-main.c

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情
#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 whip/whep编程指南 WHIP/WHEP都是基于 HTTP 的协议并且是IETF国际标准,国内外一些主流的开源webRTC SFU都开始支持WHIP/WhEP协议。 阅读详情

相关推荐

metaRTC6.0 new feature (一)

metaRTC6.0社区版最新版是6.0.212,标准版最新版本是6.0.276,企业版基础版最新版本是6.0.362,在企业版和标准版新增了一些实用功能模块,文件数字证书模块将并入社区版。

metaRTC的博客 1万+

RV1126笔记二十七:MetaRTC6移植

MetaRTC6移植

5990

metaRTC5.0新版本支持mbedtls(PolarSSL)

metaRTC5.0新版本支持openssl和mbed TLS,metaRTC实现了对mbedtls2.0和mbedtls3.0版本的支持。

metaRTC的博客 1万+

metaRTC学习】metaRTC的demo运行说明(一)

metaRTC的demo做详细运行说明

夜风里唱的专栏 2万+

MetaRTC-ffmpeg arm移植

注意这里的dl和pthread是调用交叉编译工具链中的库;当写在同一个–extra-libs里时没有顺序之分,如果用两个–extra-libs,那么就有加载的顺序之分,比如crypto里要用到dl,那么dl就需要放在它的前面加载。metartc支持mips32位,支持arm64,不支持arm32位,在arm32下报下列错误,这个错误是对内存的越界操作,然后再free(),目前metartc6和7都不支持arm32。将这两个文件放入libmetartc6。在build中到.a。

宝安小雨 4949

A High-Performance Nehalem iDataPlex Cluster and DDN S2A9990 Storage for Texas A&M University

本文转载自:http://sc.tamu.edu/systems/eos/

yumushui的专栏 1万+

metaRTC8.0,一个全新架构的webRTC SDK库

metaRTC8.0是一个全新架构版本,并非在metaRTC7.0版本上简单升级,在QOS/语音对讲/内存占用/视频文件录制读取等方面新增多个模块,在弱网对抗/语音对讲/内存优化等效果上有显著提升。

metaRTC的博客 7598

来了,metaRTC7.0 标准版

metaRTC7.0 标准版将metaRTC产品化中遇到的问题进行了汇总改进,修复了产品化中多个bug,并新增了多个产品化实用的功能模块。

metaRTC的博客 6554

来了,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

死磕音视频 6114

metaRTC Visual Studio编译指南

metaRTC windows版本提供qt和vs2019两种编译支持,vs2019编译工程支持从metaRTC6.0版本开始

metaRTC的博客 6152

流媒体分析之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 信息。

u012794472的专栏 9301

metaRTC5.0实现webrtc的TURN支持

metaRTC5.0新版实现对TURN支持。metaRTC5.0提供有metaRTC客户端和浏览器TURN的demo。

metaRTC的博客 4649

树莓派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卡上就行了)

We alone,we together 1万+

metaRTC(yangwebrtc)-中国人自己的webrtc

yangrtc(yangwebrtc)是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。webrtc支持为自主研发,非谷歌lib,兼容webrtc协议 ,可与谷歌Lib和浏览器互通。可用于元宇宙、云3D、云游戏、远程教育、远程医疗、指挥调度、安防监控、影视录播、协同办公、直播互动等多种行业应用。

metaRTC的博客 8798

metaRTC4.0稳定版发布

metaRTC4.0是支持webrtc功能较为全面的一个版本,最新版本为稳定版本,推荐开发者全面转向metaRTC4.0版本。

metaRTC的博客 2806

metaRTC+mbedtls实现android平台上更高效的webrtc

metaRTC支持openssl和mbedtls,安卓版本默认加密库为mbedtls,metaRTC在安卓系统中使用mbedtls将极大提升webrtc性能。注:MbedTLS前身是开源库PolarSSL,是行业内最轻量的SSL加密算法库,现已被arm公司收购并由arm技术团队进行维护更新。...............

metaRTC的博客 5412

metaRTC7集成lvgl ui demo编译指南

metaRTC新增lvgl demo,可在linux下编译运行

metaRTC的博客 2176

metaRTC(ARM linux64)编译指南

ARM嵌入式系统在各个领域均得到了广泛的应用,linux应用在arm上也是应用非常广泛,metaRTC支持arm linux。

metaRTC的博客 8921

metaRTC6.0标准版b1即将发布,敬请期待!

metaRTC标准版最新版b1即将发布,b1版本在b0版基础上进行了优化并修复了b0版一些bug,demo也进行了扩展和升级。

metaRTC的博客 2916
上一篇: 君正T31x metartc集成测试
下一篇: metartc5_jz源码阅读-yang_create_ipc
王方帅
博客等级 码龄4年 247粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王方帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值