]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/rtsp.c
move time_base (pts_num/pts_den) from AVFormatContext -> AVStream
[ffmpeg] / libavformat / rtsp.c
index 54ae6c1c3ea5030d7b643bebb92641aded34597c..c1c645bee352819eb0028e91e232468392b07715 100644 (file)
@@ -562,6 +562,20 @@ void rtsp_parse_line(RTSPHeader *reply, const char *buf)
     }
 }
 
+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 @@ static void rtsp_skip_packet(AVFormatContext *s)
     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 @@ static void rtsp_skip_packet(AVFormatContext *s)
         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 @@ static void rtsp_send_cmd(AVFormatContext *s,
     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 @@ static void rtsp_send_cmd(AVFormatContext *s,
     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 @@ static int tcp_read_packet(AVFormatContext *s, RTSPStream **prtsp_st,
 #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 @@ static int tcp_read_packet(AVFormatContext *s, RTSPStream **prtsp_st,
         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 @@ static int tcp_read_packet(AVFormatContext *s, RTSPStream **prtsp_st,
     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;
         
@@ -1050,7 +1064,7 @@ static int rtsp_read_play(AVFormatContext *s)
     RTSPHeader reply1, *reply = &reply1;
     char cmd[1024];
 
-    printf("hello state=%d\n", rt->state);
+    av_log(s, AV_LOG_DEBUG, "hello state=%d\n", rt->state);
 
     if (rt->state == RTSP_STATE_PAUSED) {
         snprintf(cmd, sizeof(cmd),