Mercurial > libavformat.hg
diff rtsp.c @ 391:1cf22651d33b libavformat
support url_read which reads less then requested patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
this is needed for compatibility with tcp.c 1.10
author | michael |
---|---|
date | Sat, 20 Mar 2004 19:57:28 +0000 |
parents | 845f9de2c883 |
children | 056991ab9f10 |
line wrap: on
line diff
--- a/rtsp.c Thu Mar 18 20:52:40 2004 +0000 +++ b/rtsp.c Sat Mar 20 19:57:28 2004 +0000 @@ -562,6 +562,20 @@ } } +static int url_readbuf(URLContext *h, unsigned char *buf, int size) +{ + int ret, len; + + len = 0; + while (len < size) { + ret = url_read(h, buf+len, size-len); + if (ret < 1) + return ret; + len += ret; + } + return len; +} + /* skip a RTP/TCP interleaved packet */ static void rtsp_skip_packet(AVFormatContext *s) { @@ -569,7 +583,7 @@ int ret, len, len1; uint8_t buf[1024]; - ret = url_read(rt->rtsp_hd, buf, 3); + ret = url_readbuf(rt->rtsp_hd, buf, 3); if (ret != 3) return; len = (buf[1] << 8) | buf[2]; @@ -581,7 +595,7 @@ len1 = len; if (len1 > sizeof(buf)) len1 = sizeof(buf); - ret = url_read(rt->rtsp_hd, buf, len1); + ret = url_readbuf(rt->rtsp_hd, buf, len1); if (ret != len1) return; len -= len1; @@ -621,7 +635,7 @@ for(;;) { q = buf; for(;;) { - if (url_read(rt->rtsp_hd, &ch, 1) != 1) + if (url_readbuf(rt->rtsp_hd, &ch, 1) != 1) break; if (ch == '\n') break; @@ -661,7 +675,7 @@ if (content_length > 0) { /* leave some room for a trailing '\0' (useful for simple parsing) */ content = av_malloc(content_length + 1); - url_read(rt->rtsp_hd, content, content_length); + (void)url_readbuf(rt->rtsp_hd, content, content_length); content[content_length] = '\0'; } if (content_ptr) @@ -921,7 +935,7 @@ #endif redo: for(;;) { - ret = url_read(rt->rtsp_hd, buf, 1); + ret = url_readbuf(rt->rtsp_hd, buf, 1); #ifdef DEBUG_RTP_TCP printf("ret=%d c=%02x [%c]\n", ret, buf[0], buf[0]); #endif @@ -930,7 +944,7 @@ if (buf[0] == '$') break; } - ret = url_read(rt->rtsp_hd, buf, 3); + ret = url_readbuf(rt->rtsp_hd, buf, 3); if (ret != 3) return -1; id = buf[0]; @@ -941,7 +955,7 @@ if (len > buf_size || len < 12) goto redo; /* get the data */ - ret = url_read(rt->rtsp_hd, buf, len); + ret = url_readbuf(rt->rtsp_hd, buf, len); if (ret != len) return -1;