diff options
author | Kostya Shishkov <kostya.shishkov@gmail.com> | 2009-10-18 11:01:06 +0400 |
---|---|---|
committer | Kostya Shishkov <kostya.shishkov@gmail.com> | 2009-10-18 11:01:06 +0400 |
commit | 5d660598b0f1300182240074d4dbada41fe694d9 (patch) | |
tree | f22c9597f60d5fa6af13588962bde2b2737af44b | |
parent | 8f648b74c348e866e3d24b038258919341b87a9e (diff) |
Support more than 64 channels in RTMP input
Originally committed as revision 20270 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavformat/rtmppkt.c | 6 | ||||
-rw-r--r-- | libavformat/rtmppkt.h | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/libavformat/rtmppkt.c b/libavformat/rtmppkt.c index 4ca12a0041..f6e2a9024e 100644 --- a/libavformat/rtmppkt.c +++ b/libavformat/rtmppkt.c @@ -81,6 +81,12 @@ int ff_rtmp_packet_read(URLContext *h, RTMPPacket *p, 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; diff --git a/libavformat/rtmppkt.h b/libavformat/rtmppkt.h index b40f4fe061..f50996f6d1 100644 --- a/libavformat/rtmppkt.h +++ b/libavformat/rtmppkt.h @@ -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 |