Commit 5792af3d by xiongguangjie

fix direct_proxy is 0 repush not success

parent 6383e258
...@@ -142,6 +142,10 @@ void MultiMediaSourceMuxer::setTrackListener(const std::weak_ptr<Listener> &list ...@@ -142,6 +142,10 @@ void MultiMediaSourceMuxer::setTrackListener(const std::weak_ptr<Listener> &list
_track_listener = listener; _track_listener = listener;
} }
std::weak_ptr<MultiMediaSourceMuxer::Listener> MultiMediaSourceMuxer::getTrackListener(){
return _track_listener;
}
int MultiMediaSourceMuxer::totalReaderCount() const { int MultiMediaSourceMuxer::totalReaderCount() const {
auto hls = _hls; auto hls = _hls;
auto ret = (_rtsp ? _rtsp->readerCount() : 0) + auto ret = (_rtsp ? _rtsp->readerCount() : 0) +
......
...@@ -51,6 +51,11 @@ public: ...@@ -51,6 +51,11 @@ public:
*/ */
void setTrackListener(const std::weak_ptr<Listener> &listener); void setTrackListener(const std::weak_ptr<Listener> &listener);
/**
* 获取Track就绪事件监听器
*/
std::weak_ptr<Listener> getTrackListener();
/** /**
* 返回总的消费者个数 * 返回总的消费者个数
*/ */
......
...@@ -301,8 +301,26 @@ void RtspSession::handleReq_ANNOUNCE(const Parser &parser) { ...@@ -301,8 +301,26 @@ void RtspSession::handleReq_ANNOUNCE(const Parser &parser) {
}); });
return; return;
} }
}else{
auto listener = rtsp_src->getListener(true);
//TraceL<<toolkit::demangle(typeid(*listener.lock()).name());
auto muxer = dynamic_pointer_cast<MultiMediaSourceMuxer>(listener.lock());
if(muxer){
//TraceL;
rtsp_src_imp = dynamic_pointer_cast<RtspMediaSourceImp>(muxer->getTrackListener().lock());
if(rtsp_src_imp){
//TraceL;
_push_src_ownership = rtsp_src_imp->getOwnership();
if(_push_src_ownership){
_push_src = std::move(rtsp_src_imp);
onResPushSrc(option);
return;
}else{
WarnL<<"not reach this";
}
}
}
} }
sendRtspResponse("406 Not Acceptable", { "Content-Type", "text/plain" }, "not reach this"); sendRtspResponse("406 Not Acceptable", { "Content-Type", "text/plain" }, "not reach this");
string err = StrPrinter << "ANNOUNCE: not reach this:" << _media_info.shortUrl() << endl; string err = StrPrinter << "ANNOUNCE: not reach this:" << _media_info.shortUrl() << endl;
throw SockException(Err_shutdown, err); throw SockException(Err_shutdown, err);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论