Re: [libav-devel] [PATCH 1/5] rtsp: Factor out packet reading

2017-02-20 Thread Vittorio Giovara
On Sun, Feb 19, 2017 at 6:10 PM, Luca Barbato  wrote:
> ---
>  libavformat/rtsp.c | 67 
> +-
>  1 file changed, 41 insertions(+), 26 deletions(-)
>
> diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
> index 7e59857..2c21fa7 100644
> --- a/libavformat/rtsp.c
> +++ b/libavformat/rtsp.c
> @@ -2043,6 +2043,45 @@ static int pick_stream(AVFormatContext *s, RTSPStream 
> **rtsp_st,
>  return AVERROR(EAGAIN);
>  }
>
> +
> +static int read_packet(AVFormatContext *s,

nit: extra empty line
-- 
Vittorio
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

[libav-devel] [PATCH 1/5] rtsp: Factor out packet reading

2017-02-19 Thread Luca Barbato
---
 libavformat/rtsp.c | 67 +-
 1 file changed, 41 insertions(+), 26 deletions(-)

diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index 7e59857..2c21fa7 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -2043,6 +2043,45 @@ static int pick_stream(AVFormatContext *s, RTSPStream 
**rtsp_st,
 return AVERROR(EAGAIN);
 }
 
+
+static int read_packet(AVFormatContext *s,
+   RTSPStream **rtsp_st, RTSPStream *first_queue_st,
+   int64_t wait_end)
+{
+RTSPState *rt = s->priv_data;
+int len;
+
+switch(rt->lower_transport) {
+default:
+#if CONFIG_RTSP_DEMUXER
+case RTSP_LOWER_TRANSPORT_TCP:
+len = ff_rtsp_tcp_read_packet(s, rtsp_st, rt->recvbuf, RECVBUF_SIZE);
+break;
+#endif
+case RTSP_LOWER_TRANSPORT_UDP:
+case RTSP_LOWER_TRANSPORT_UDP_MULTICAST:
+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)
+ff_rtp_check_and_send_back_rr((*rtsp_st)->transport_priv, 
(*rtsp_st)->rtp_handle, NULL, len);
+break;
+case RTSP_LOWER_TRANSPORT_CUSTOM:
+if (first_queue_st && rt->transport == RTSP_TRANSPORT_RTP &&
+wait_end && wait_end < av_gettime_relative())
+len = AVERROR(EAGAIN);
+else
+len = ffio_read_partial(s->pb, rt->recvbuf, RECVBUF_SIZE);
+len = pick_stream(s, rtsp_st, rt->recvbuf, len);
+if (len > 0 && (*rtsp_st)->transport_priv && rt->transport == 
RTSP_TRANSPORT_RTP)
+ff_rtp_check_and_send_back_rr((*rtsp_st)->transport_priv, NULL, 
s->pb, len);
+break;
+}
+
+if (len == 0)
+return AVERROR_EOF;
+
+return len;
+}
+
 int ff_rtsp_fetch_packet(AVFormatContext *s, AVPacket *pkt)
 {
 RTSPState *rt = s->priv_data;
@@ -2107,30 +2146,7 @@ redo:
 return AVERROR(ENOMEM);
 }
 
-switch(rt->lower_transport) {
-default:
-#if CONFIG_RTSP_DEMUXER
-case RTSP_LOWER_TRANSPORT_TCP:
-len = ff_rtsp_tcp_read_packet(s, _st, rt->recvbuf, RECVBUF_SIZE);
-break;
-#endif
-case RTSP_LOWER_TRANSPORT_UDP:
-case RTSP_LOWER_TRANSPORT_UDP_MULTICAST:
-len = udp_read_packet(s, _st, rt->recvbuf, RECVBUF_SIZE, 
wait_end);
-if (len > 0 && rtsp_st->transport_priv && rt->transport == 
RTSP_TRANSPORT_RTP)
-ff_rtp_check_and_send_back_rr(rtsp_st->transport_priv, 
rtsp_st->rtp_handle, NULL, len);
-break;
-case RTSP_LOWER_TRANSPORT_CUSTOM:
-if (first_queue_st && rt->transport == RTSP_TRANSPORT_RTP &&
-wait_end && wait_end < av_gettime_relative())
-len = AVERROR(EAGAIN);
-else
-len = ffio_read_partial(s->pb, rt->recvbuf, RECVBUF_SIZE);
-len = pick_stream(s, _st, rt->recvbuf, len);
-if (len > 0 && rtsp_st->transport_priv && rt->transport == 
RTSP_TRANSPORT_RTP)
-ff_rtp_check_and_send_back_rr(rtsp_st->transport_priv, NULL, 
s->pb, len);
-break;
-}
+len = read_packet(s, _st, first_queue_st, wait_end);
 if (len == AVERROR(EAGAIN) && first_queue_st &&
 rt->transport == RTSP_TRANSPORT_RTP) {
 av_log(s, AV_LOG_WARNING,
@@ -2141,8 +2157,7 @@ redo:
 }
 if (len < 0)
 return len;
-if (len == 0)
-return AVERROR_EOF;
+
 if (rt->transport == RTSP_TRANSPORT_RDT) {
 ret = ff_rdt_parse_packet(rtsp_st->transport_priv, pkt, >recvbuf, 
len);
 } else if (rt->transport == RTSP_TRANSPORT_RTP) {
-- 
2.9.2

___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel