rtpdec: Move the URLContext used for RTCP RR out from the context, to a parameter
Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
		
							parent
							
								
									a0b7e28907
								
							
						
					
					
						commit
						3f95f0dda5
					
				| @ -226,7 +226,7 @@ static int rtp_valid_packet_in_sequence(RTPStatistics *s, uint16_t seq) | |||||||
|     return 1; |     return 1; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, int count) | int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, URLContext *fd, int count) | ||||||
| { | { | ||||||
|     AVIOContext *pb; |     AVIOContext *pb; | ||||||
|     uint8_t *buf; |     uint8_t *buf; | ||||||
| @ -242,7 +242,7 @@ int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, int count) | |||||||
|     uint32_t fraction; |     uint32_t fraction; | ||||||
|     uint64_t ntp_time = s->last_rtcp_ntp_time; // TODO: Get local ntp time?
 |     uint64_t ntp_time = s->last_rtcp_ntp_time; // TODO: Get local ntp time?
 | ||||||
| 
 | 
 | ||||||
|     if (!s->rtp_ctx || (count < 1)) |     if (!fd || (count < 1)) | ||||||
|         return -1; |         return -1; | ||||||
| 
 | 
 | ||||||
|     /* TODO: I think this is way too often; RFC 1889 has algorithm for this */ |     /* TODO: I think this is way too often; RFC 1889 has algorithm for this */ | ||||||
| @ -316,7 +316,7 @@ int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, int count) | |||||||
|     if ((len > 0) && buf) { |     if ((len > 0) && buf) { | ||||||
|         int av_unused result; |         int av_unused result; | ||||||
|         av_dlog(s->ic, "sending %d bytes of RR\n", len); |         av_dlog(s->ic, "sending %d bytes of RR\n", len); | ||||||
|         result = ffurl_write(s->rtp_ctx, buf, len); |         result = ffurl_write(fd, buf, len); | ||||||
|         av_dlog(s->ic, "result from ffurl_write: %d\n", result); |         av_dlog(s->ic, "result from ffurl_write: %d\n", result); | ||||||
|         av_free(buf); |         av_free(buf); | ||||||
|     } |     } | ||||||
| @ -367,8 +367,7 @@ void ff_rtp_send_punch_packets(URLContext *rtp_handle) | |||||||
|  * rtp demux (otherwise AV_CODEC_ID_MPEG2TS packets are returned) |  * rtp demux (otherwise AV_CODEC_ID_MPEG2TS packets are returned) | ||||||
|  */ |  */ | ||||||
| RTPDemuxContext *ff_rtp_parse_open(AVFormatContext *s1, AVStream *st, | RTPDemuxContext *ff_rtp_parse_open(AVFormatContext *s1, AVStream *st, | ||||||
|                                    URLContext *rtpc, int payload_type, |                                    int payload_type, int queue_size) | ||||||
|                                    int queue_size) |  | ||||||
| { | { | ||||||
|     RTPDemuxContext *s; |     RTPDemuxContext *s; | ||||||
| 
 | 
 | ||||||
| @ -413,7 +412,6 @@ RTPDemuxContext *ff_rtp_parse_open(AVFormatContext *s1, AVStream *st, | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     // needed to send back RTCP RR in RTSP sessions
 |     // needed to send back RTCP RR in RTSP sessions
 | ||||||
|     s->rtp_ctx = rtpc; |  | ||||||
|     gethostname(s->hostname, sizeof(s->hostname)); |     gethostname(s->hostname, sizeof(s->hostname)); | ||||||
|     return s; |     return s; | ||||||
| } | } | ||||||
|  | |||||||
| @ -40,8 +40,7 @@ typedef struct RTPDynamicProtocolHandler RTPDynamicProtocolHandler; | |||||||
| 
 | 
 | ||||||
| typedef struct RTPDemuxContext RTPDemuxContext; | typedef struct RTPDemuxContext RTPDemuxContext; | ||||||
| RTPDemuxContext *ff_rtp_parse_open(AVFormatContext *s1, AVStream *st, | RTPDemuxContext *ff_rtp_parse_open(AVFormatContext *s1, AVStream *st, | ||||||
|                                    URLContext *rtpc, int payload_type, |                                    int payload_type, int queue_size); | ||||||
|                                    int queue_size); |  | ||||||
| void ff_rtp_parse_set_dynamic_protocol(RTPDemuxContext *s, PayloadContext *ctx, | void ff_rtp_parse_set_dynamic_protocol(RTPDemuxContext *s, PayloadContext *ctx, | ||||||
|                                        RTPDynamicProtocolHandler *handler); |                                        RTPDynamicProtocolHandler *handler); | ||||||
| int ff_rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt, | int ff_rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt, | ||||||
| @ -69,10 +68,10 @@ void ff_rtp_send_punch_packets(URLContext* rtp_handle); | |||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
|  * some rtp servers assume client is dead if they don't hear from them... |  * some rtp servers assume client is dead if they don't hear from them... | ||||||
|  * so we send a Receiver Report to the provided ByteIO context |  * so we send a Receiver Report to the provided URLContext | ||||||
|  * (we don't have access to the rtcp handle from here) |  * (we don't have access to the rtcp handle from here) | ||||||
|  */ |  */ | ||||||
| int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, int count); | int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, URLContext *fd, int count); | ||||||
| 
 | 
 | ||||||
| // these statistics are used for rtcp receiver reports...
 | // these statistics are used for rtcp receiver reports...
 | ||||||
| typedef struct RTPStatistics { | typedef struct RTPStatistics { | ||||||
| @ -158,7 +157,6 @@ struct RTPDemuxContext { | |||||||
|     int read_buf_index; |     int read_buf_index; | ||||||
|     int read_buf_size; |     int read_buf_size; | ||||||
|     /* used to send back RTCP RR */ |     /* used to send back RTCP RR */ | ||||||
|     URLContext *rtp_ctx; |  | ||||||
|     char hostname[256]; |     char hostname[256]; | ||||||
| 
 | 
 | ||||||
|     /** Statistics for this stream (used by RTCP receiver reports) */ |     /** Statistics for this stream (used by RTCP receiver reports) */ | ||||||
|  | |||||||
| @ -643,7 +643,7 @@ int ff_rtsp_open_transport_ctx(AVFormatContext *s, RTSPStream *rtsp_st) | |||||||
|                                             rtsp_st->dynamic_protocol_context, |                                             rtsp_st->dynamic_protocol_context, | ||||||
|                                             rtsp_st->dynamic_handler); |                                             rtsp_st->dynamic_handler); | ||||||
|     else if (CONFIG_RTPDEC) |     else if (CONFIG_RTPDEC) | ||||||
|         rtsp_st->transport_priv = ff_rtp_parse_open(s, st, rtsp_st->rtp_handle, |         rtsp_st->transport_priv = ff_rtp_parse_open(s, st, | ||||||
|                                          rtsp_st->sdp_payload_type, |                                          rtsp_st->sdp_payload_type, | ||||||
|                                          reordering_queue_size); |                                          reordering_queue_size); | ||||||
| 
 | 
 | ||||||
| @ -1860,7 +1860,7 @@ int ff_rtsp_fetch_packet(AVFormatContext *s, AVPacket *pkt) | |||||||
|     case RTSP_LOWER_TRANSPORT_UDP_MULTICAST: |     case RTSP_LOWER_TRANSPORT_UDP_MULTICAST: | ||||||
|         len = udp_read_packet(s, &rtsp_st, rt->recvbuf, RECVBUF_SIZE, wait_end); |         len = udp_read_packet(s, &rtsp_st, rt->recvbuf, RECVBUF_SIZE, wait_end); | ||||||
|         if (len > 0 && rtsp_st->transport_priv && rt->transport == RTSP_TRANSPORT_RTP) |         if (len > 0 && rtsp_st->transport_priv && rt->transport == RTSP_TRANSPORT_RTP) | ||||||
|             ff_rtp_check_and_send_back_rr(rtsp_st->transport_priv, len); |             ff_rtp_check_and_send_back_rr(rtsp_st->transport_priv, rtsp_st->rtp_handle, len); | ||||||
|         break; |         break; | ||||||
|     } |     } | ||||||
|     if (len == AVERROR(EAGAIN) && first_queue_st && |     if (len == AVERROR(EAGAIN) && first_queue_st && | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user