|
|
@@ -372,6 +372,25 @@ static void gen_server_bw(URLContext *s, RTMPContext *rt) |
|
|
|
ff_rtmp_packet_destroy(&pkt); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Generate check bandwidth message and send it to the server. |
|
|
|
*/ |
|
|
|
static void gen_check_bw(URLContext *s, RTMPContext *rt) |
|
|
|
{ |
|
|
|
RTMPPacket pkt; |
|
|
|
uint8_t *p; |
|
|
|
|
|
|
|
ff_rtmp_packet_create(&pkt, RTMP_SYSTEM_CHANNEL, RTMP_PT_INVOKE, 0, 21); |
|
|
|
|
|
|
|
p = pkt.data; |
|
|
|
ff_amf_write_string(&p, "_checkbw"); |
|
|
|
ff_amf_write_number(&p, ++rt->nb_invokes); |
|
|
|
ff_amf_write_null(&p); |
|
|
|
|
|
|
|
ff_rtmp_packet_write(rt->stream, &pkt, rt->chunk_size, rt->prev_pkt[1]); |
|
|
|
ff_rtmp_packet_destroy(&pkt); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Generate report on bytes read so far and send it to the server. |
|
|
|
*/ |
|
|
@@ -691,6 +710,8 @@ static int rtmp_parse_result(URLContext *s, RTMPContext *rt, RTMPPacket *pkt) |
|
|
|
if (!t && !strcmp(tmpstr, "NetStream.Play.Stop")) rt->state = STATE_STOPPED; |
|
|
|
if (!t && !strcmp(tmpstr, "NetStream.Play.UnpublishNotify")) rt->state = STATE_STOPPED; |
|
|
|
if (!t && !strcmp(tmpstr, "NetStream.Publish.Start")) rt->state = STATE_PUBLISHING; |
|
|
|
} else if (!memcmp(pkt->data, "\002\000\010onBWDone", 11)) { |
|
|
|
gen_check_bw(s, rt); |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|