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);