mirror of
				https://github.com/ossrs/srs.git
				synced 2025-03-09 15:49:59 +00:00 
			
		
		
		
	RTC: fix rtc publisher pli cid (#3318)
* RTC: fix rtc publisher pli cid
* RTC: log bridge request keyframe
* Update release v6.0.19 v5.0.138
PICK 7922057467
Co-authored-by: Winlin <winlin@vip.126.com>
Co-authored-by: ChenGH <chengh_math@126.com>
			
			
This commit is contained in:
		
							parent
							
								
									9600e495c7
								
							
						
					
					
						commit
						d6477c24d6
					
				
					 6 changed files with 12 additions and 9 deletions
				
			
		| 
						 | 
				
			
			@ -912,7 +912,7 @@ srs_error_t SrsRtcPlayStream::do_request_keyframe(uint32_t ssrc, SrsContextId ci
 | 
			
		|||
        return err;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    publisher->request_keyframe(ssrc);
 | 
			
		||||
    publisher->request_keyframe(ssrc, cid);
 | 
			
		||||
 | 
			
		||||
    return err;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1611,15 +1611,14 @@ srs_error_t SrsRtcPublishStream::on_rtcp_xr(SrsRtcpXr* rtcp)
 | 
			
		|||
    return err;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SrsRtcPublishStream::request_keyframe(uint32_t ssrc)
 | 
			
		||||
void SrsRtcPublishStream::request_keyframe(uint32_t ssrc, SrsContextId cid)
 | 
			
		||||
{
 | 
			
		||||
    SrsContextId sub_cid = _srs_context->get_id();
 | 
			
		||||
    pli_worker_->request_keyframe(ssrc, sub_cid);
 | 
			
		||||
    pli_worker_->request_keyframe(ssrc, cid);
 | 
			
		||||
	
 | 
			
		||||
    uint32_t nn = 0;
 | 
			
		||||
    if (pli_epp->can_print(ssrc, &nn)) {
 | 
			
		||||
        // The player(subscriber) cid, which requires PLI.
 | 
			
		||||
        srs_trace("RTC: Need PLI ssrc=%u, play=[%s], publish=[%s], count=%u/%u", ssrc, sub_cid.c_str(),
 | 
			
		||||
        srs_trace("RTC: Need PLI ssrc=%u, play=[%s], publish=[%s], count=%u/%u", ssrc, cid.c_str(),
 | 
			
		||||
            cid_.c_str(), nn, pli_epp->nn_count);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -384,7 +384,7 @@ private:
 | 
			
		|||
    srs_error_t on_rtcp_sr(SrsRtcpSR* rtcp);
 | 
			
		||||
    srs_error_t on_rtcp_xr(SrsRtcpXr* rtcp);
 | 
			
		||||
public:
 | 
			
		||||
    void request_keyframe(uint32_t ssrc);
 | 
			
		||||
    void request_keyframe(uint32_t ssrc, SrsContextId cid);
 | 
			
		||||
    virtual srs_error_t do_request_keyframe(uint32_t ssrc, SrsContextId cid);
 | 
			
		||||
public:
 | 
			
		||||
    void simulate_nack_drop(int nn);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -703,7 +703,8 @@ srs_error_t SrsRtcSource::on_timer(srs_utime_t interval)
 | 
			
		|||
 | 
			
		||||
    for (int i = 0; i < (int)stream_desc_->video_track_descs_.size(); i++) {
 | 
			
		||||
        SrsRtcTrackDescription* desc = stream_desc_->video_track_descs_.at(i);
 | 
			
		||||
        publish_stream_->request_keyframe(desc->ssrc_);
 | 
			
		||||
        srs_trace("RTC: to rtmp bridge request key frame, ssrc=%u, publisher cid=%s", desc->ssrc_, publish_stream_->context_id().c_str());
 | 
			
		||||
        publish_stream_->request_keyframe(desc->ssrc_, publish_stream_->context_id());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return err;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -128,7 +128,9 @@ public:
 | 
			
		|||
    virtual ~ISrsRtcPublishStream();
 | 
			
		||||
public:
 | 
			
		||||
    // Request keyframe(PLI) from publisher, for fresh consumer.
 | 
			
		||||
    virtual void request_keyframe(uint32_t ssrc) = 0;
 | 
			
		||||
    virtual void request_keyframe(uint32_t ssrc, SrsContextId cid) = 0;
 | 
			
		||||
    // Get context id.
 | 
			
		||||
    virtual const SrsContextId& context_id() = 0;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class ISrsRtcSourceEventHandler
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue