BreakingY
BreakingY
` struct sip_uac_transaction_t* sip_uac_invite(struct sip_agent_t* sip, const char* name, const char* to, sip_uac_oninvite oninvite, void* param) { struct sip_message_t* req; struct sip_uac_transaction_t* t; req = sip_message_create(SIP_MESSAGE_REQUEST); if (0 != sip_message_init(req,...
大佬,我现在使用hls+fmp4做项目,解析完m3u8之后把init.mp4 1.m4s 2.m4s 3.m4s ...所有文件都下载下来了,应该怎么通过mov_reader_test解析音视频数据,就把init.mp4 1.m4s 2.m4s 3.m4s ...按照顺序拼接在一起就可以了吗?
librtsp/include/sdp-options.h:int sdp_option_media_from(const char* media)这个函数只看到了定义可使用,没看到实现,我搜索整个工程都没有找到实现
libdash不支持h265吗,dash-mpd.c中int dash_mpd_add_video_adaptation_set(struct dash_mpd_t* mpd, const char* prefix, uint8_t object, int width, int height, const void* extra_data, size_t extra_data_size)函数,函数刚开始就使用了assert(MOV_OBJECT_H264 == object); `int dash_mpd_add_video_adaptation_set(struct dash_mpd_t* mpd, const char* prefix, uint8_t object, int...
我在测试sip-uac-test2过程中遇到了问题,我使用了stun(没用中继,和原来的代码一样ice_transport_bind turn参数为0),媒体包含音频流和视频流,在连通检测的时候经常在这里触发断言,这里应该是当前流连通检测成功后,触发下一个流进行连通检测,正常来说不应该走到assert这里,ice_checklist_t初始化的时候状态是ICE_CHECKLIST_FROZEN,请问大佬测试sip-uac-test2的时候遇到过这个问题吗,除了使用了stun其他的和原来的基本一致
http_client.c http_client_onread_header函数里面对重定向进行了判断 ''' if(300 parameters.method, http->parameters.uri, http->parameters.headers, http->parameters.n, http->parameters.msg, http->parameters.bytes, http->onreply, http->cbparam); if(0 != code) http_client_handle(http, code > 0 ? -code : code); return; } } ''' 但是这里并没有使用Location指定的url,http_client_redirect_handler函数里面仅仅是把Location指定的url保存到http->redirect.urls,应该进行如下修改 ''' http->redirect.urls[http->redirect.n++]...
在代码里面使用OS_WINDOWS区分linux和windows,windows平台定义的宏是_WIN32,OS_WINDOWS是在哪里定义的,使用者自己定义吗?
’‘’ static void x264enc_destroy(void* h264) { struct x264_encoder_t* p; p = (struct x264_encoder_t*)h264; x264_encoder_close(p->x264); // x264_picture_clean(&p->pic); } ‘’‘ x264enc_destroy没有free掉p产生内存泄漏
``` bool prepare(const std::string& sql) { // 释放上一次的资源,否则内存泄漏 if(statement_){ sqlite3_finalize(statement_); statement_ = nullptr; } code_ = sqlite3_prepare_v2(db_handle_, sql.c_str(), -1, &statement_, nullptr); return code_ == SQLITE_OK; } ``` ``` bool close()...
一、TaskScheduler::HandleTriggerEvent()应该加锁,多线程下有内存泄漏风险 二、RtpConnection::SendRtpPacket(MediaChannelId channel_id, RtpPacket pkt):----客户端关闭的时候如果有音视频数据要发送时候会引发死锁 ok √ 原因如下: RtpConnection::SendRtpPacket中如果通过AddTriggerEvent发送数据,步骤如下: ... 1、TaskScheduler::AddTriggerEvent lock-->unlock 2、TaskScheduler::HandleTriggerEvent lock 3、执行RtpConnection::SendRtpPacket中设置的回调函数 4、调用TcpConnection::Send函数发送数据,lock TcpConnection::mutex_ 客户端关闭流程如下: 1、epoll触发TcpConnection::HandleClose()函数,lock TcpConnection::mutex_ 2、TcpConnection调用回调函数disconnect_cb_和close_cb_ disconnect_cb_由TcpServer注册 3、TcpServer注册的回调函数通过AddTriggerEvent调用TcpServer::RemoveConnection删除客户端缓存,TaskScheduler::AddTriggerEvent lock 问题出现了: 发送数据时候:TaskScheduler lock-->TcpConnection lock 客户端关闭时候:TcpConnection lock-->TaskScheduler...