|
|
|
@ -86,7 +86,7 @@ int ff_rtmp_packet_read(URLContext *h, RTMPPacket *p, |
|
|
|
|
|
|
|
|
|
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) |
|
|
|
|
if (ffurl_read_complete(h, buf, channel_id + 1) != channel_id + 1) |
|
|
|
|
return AVERROR(EIO); |
|
|
|
|
size += channel_id + 1; |
|
|
|
|
channel_id = AV_RL16(buf) + 64; |
|
|
|
@ -99,28 +99,28 @@ int ff_rtmp_packet_read(URLContext *h, RTMPPacket *p, |
|
|
|
|
if (hdr == RTMP_PS_ONEBYTE) { |
|
|
|
|
timestamp = prev_pkt[channel_id].ts_delta; |
|
|
|
|
} else { |
|
|
|
|
if (url_read_complete(h, buf, 3) != 3) |
|
|
|
|
if (ffurl_read_complete(h, buf, 3) != 3) |
|
|
|
|
return AVERROR(EIO); |
|
|
|
|
size += 3; |
|
|
|
|
timestamp = AV_RB24(buf); |
|
|
|
|
if (hdr != RTMP_PS_FOURBYTES) { |
|
|
|
|
if (url_read_complete(h, buf, 3) != 3) |
|
|
|
|
if (ffurl_read_complete(h, buf, 3) != 3) |
|
|
|
|
return AVERROR(EIO); |
|
|
|
|
size += 3; |
|
|
|
|
data_size = AV_RB24(buf); |
|
|
|
|
if (url_read_complete(h, buf, 1) != 1) |
|
|
|
|
if (ffurl_read_complete(h, buf, 1) != 1) |
|
|
|
|
return AVERROR(EIO); |
|
|
|
|
size++; |
|
|
|
|
type = buf[0]; |
|
|
|
|
if (hdr == RTMP_PS_TWELVEBYTES) { |
|
|
|
|
if (url_read_complete(h, buf, 4) != 4) |
|
|
|
|
if (ffurl_read_complete(h, buf, 4) != 4) |
|
|
|
|
return AVERROR(EIO); |
|
|
|
|
size += 4; |
|
|
|
|
extra = AV_RL32(buf); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (timestamp == 0xFFFFFF) { |
|
|
|
|
if (url_read_complete(h, buf, 4) != 4) |
|
|
|
|
if (ffurl_read_complete(h, buf, 4) != 4) |
|
|
|
|
return AVERROR(EIO); |
|
|
|
|
timestamp = AV_RB32(buf); |
|
|
|
|
} |
|
|
|
@ -140,7 +140,7 @@ int ff_rtmp_packet_read(URLContext *h, RTMPPacket *p, |
|
|
|
|
prev_pkt[channel_id].extra = extra; |
|
|
|
|
while (data_size > 0) { |
|
|
|
|
int toread = FFMIN(data_size, chunk_size); |
|
|
|
|
if (url_read_complete(h, p->data + offset, toread) != toread) { |
|
|
|
|
if (ffurl_read_complete(h, p->data + offset, toread) != toread) { |
|
|
|
|
ff_rtmp_packet_destroy(p); |
|
|
|
|
return AVERROR(EIO); |
|
|
|
|
} |
|
|
|
@ -148,7 +148,7 @@ int ff_rtmp_packet_read(URLContext *h, RTMPPacket *p, |
|
|
|
|
offset += chunk_size; |
|
|
|
|
size += chunk_size; |
|
|
|
|
if (data_size > 0) { |
|
|
|
|
url_read_complete(h, &t, 1); //marker
|
|
|
|
|
ffurl_read_complete(h, &t, 1); //marker
|
|
|
|
|
size++; |
|
|
|
|
if (t != (0xC0 + channel_id)) |
|
|
|
|
return -1; |
|
|
|
|