Mercurial > libavformat.hg
comparison rtmppkt.c @ 5401:432e1b6e1568 libavformat
Write header for RTMP packets with channel_id >= 64 correctly
author | kostya |
---|---|
date | Tue, 01 Dec 2009 15:13:23 +0000 |
parents | c7d1e90d4935 |
children | 99aeb2e385df |
comparison
equal
deleted
inserted
replaced
5400:c7d1e90d4935 | 5401:432e1b6e1568 |
---|---|
149 uint8_t pkt_hdr[16], *p = pkt_hdr; | 149 uint8_t pkt_hdr[16], *p = pkt_hdr; |
150 int mode = RTMP_PS_TWELVEBYTES; | 150 int mode = RTMP_PS_TWELVEBYTES; |
151 int off = 0; | 151 int off = 0; |
152 | 152 |
153 //TODO: header compression | 153 //TODO: header compression |
154 bytestream_put_byte(&p, pkt->channel_id | (mode << 6)); | 154 if (pkt->channel_id < 64) { |
155 bytestream_put_byte(&p, pkt->channel_id | (mode << 6)); | |
156 } else if (pkt->channel_id < 64 + 256) { | |
157 bytestream_put_byte(&p, 0 | (mode << 6)); | |
158 bytestream_put_byte(&p, pkt->channel_id - 64); | |
159 } else { | |
160 bytestream_put_byte(&p, 1 | (mode << 6)); | |
161 bytestream_put_le16(&p, pkt->channel_id - 64); | |
162 } | |
155 if (mode != RTMP_PS_ONEBYTE) { | 163 if (mode != RTMP_PS_ONEBYTE) { |
156 bytestream_put_be24(&p, pkt->timestamp >= 0xFFFFFF ? 0xFFFFFF : pkt->timestamp); | 164 bytestream_put_be24(&p, pkt->timestamp >= 0xFFFFFF ? 0xFFFFFF : pkt->timestamp); |
157 if (mode != RTMP_PS_FOURBYTES) { | 165 if (mode != RTMP_PS_FOURBYTES) { |
158 bytestream_put_be24(&p, pkt->data_size); | 166 bytestream_put_be24(&p, pkt->data_size); |
159 bytestream_put_byte(&p, pkt->type); | 167 bytestream_put_byte(&p, pkt->type); |