[FFmpeg-cvslog] r20270 - in trunk/libavformat: rtmppkt.c rtmppkt.h

kostya subversion
Sun Oct 18 09:01:06 CEST 2009


Author: kostya
Date: Sun Oct 18 09:01:06 2009
New Revision: 20270

Log:
Support more than 64 channels in RTMP input

Modified:
   trunk/libavformat/rtmppkt.c
   trunk/libavformat/rtmppkt.h

Modified: trunk/libavformat/rtmppkt.c
==============================================================================
--- trunk/libavformat/rtmppkt.c	Sun Oct 18 08:58:00 2009	(r20269)
+++ trunk/libavformat/rtmppkt.c	Sun Oct 18 09:01:06 2009	(r20270)
@@ -81,6 +81,12 @@ int ff_rtmp_packet_read(URLContext *h, R
         return AVERROR(EIO);
     channel_id = hdr & 0x3F;
 
+    if (channel_id < 2) { //special case for channel number >= 64
+        buf[1] = 0;
+        if (url_read_complete(h, buf, channel_id + 1) != channel_id + 1)
+            return AVERROR(EIO);
+        channel_id = AV_RL16(buf) + 64;
+    }
     data_size = prev_pkt[channel_id].data_size;
     type      = prev_pkt[channel_id].type;
     extra     = prev_pkt[channel_id].extra;

Modified: trunk/libavformat/rtmppkt.h
==============================================================================
--- trunk/libavformat/rtmppkt.h	Sun Oct 18 08:58:00 2009	(r20269)
+++ trunk/libavformat/rtmppkt.h	Sun Oct 18 09:01:06 2009	(r20270)
@@ -25,7 +25,7 @@
 #include "avformat.h"
 
 /** maximum possible number of different RTMP channels */
-#define RTMP_CHANNELS 64
+#define RTMP_CHANNELS 65599
 
 /**
  * channels used to for RTMP packets with different purposes (i.e. data, network



More information about the ffmpeg-cvslog mailing list