rtmp: Factorize the code by adding handle_invoke
Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
7be2a7d8ff
commit
6d1c9945dd
@ -953,40 +953,13 @@ static int handle_server_bw(URLContext *s, RTMPPacket *pkt)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse received packet and possibly perform some action depending on
|
||||
* the packet contents.
|
||||
* @return 0 for no errors, negative values for serious errors which prevent
|
||||
* further communications, positive values for uncritical errors
|
||||
*/
|
||||
static int rtmp_parse_result(URLContext *s, RTMPContext *rt, RTMPPacket *pkt)
|
||||
static int handle_invoke(URLContext *s, RTMPPacket *pkt)
|
||||
{
|
||||
RTMPContext *rt = s->priv_data;
|
||||
int i, t;
|
||||
const uint8_t *data_end = pkt->data + pkt->data_size;
|
||||
int ret;
|
||||
|
||||
#ifdef DEBUG
|
||||
ff_rtmp_packet_dump(s, pkt);
|
||||
#endif
|
||||
|
||||
switch (pkt->type) {
|
||||
case RTMP_PT_CHUNK_SIZE:
|
||||
if ((ret = handle_chunk_size(s, pkt)) < 0)
|
||||
return ret;
|
||||
break;
|
||||
case RTMP_PT_PING:
|
||||
if ((ret = handle_ping(s, pkt)) < 0)
|
||||
return ret;
|
||||
break;
|
||||
case RTMP_PT_CLIENT_BW:
|
||||
if ((ret = handle_client_bw(s, pkt)) < 0)
|
||||
return ret;
|
||||
break;
|
||||
case RTMP_PT_SERVER_BW:
|
||||
if ((ret = handle_server_bw(s, pkt)) < 0)
|
||||
return ret;
|
||||
break;
|
||||
case RTMP_PT_INVOKE:
|
||||
//TODO: check for the messages sent for wrong state?
|
||||
if (!memcmp(pkt->data, "\002\000\006_error", 9)) {
|
||||
uint8_t tmpstr[256];
|
||||
@ -1073,6 +1046,44 @@ static int rtmp_parse_result(URLContext *s, RTMPContext *rt, RTMPPacket *pkt)
|
||||
if ((ret = gen_check_bw(s, rt)) < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse received packet and possibly perform some action depending on
|
||||
* the packet contents.
|
||||
* @return 0 for no errors, negative values for serious errors which prevent
|
||||
* further communications, positive values for uncritical errors
|
||||
*/
|
||||
static int rtmp_parse_result(URLContext *s, RTMPContext *rt, RTMPPacket *pkt)
|
||||
{
|
||||
int ret;
|
||||
|
||||
#ifdef DEBUG
|
||||
ff_rtmp_packet_dump(s, pkt);
|
||||
#endif
|
||||
|
||||
switch (pkt->type) {
|
||||
case RTMP_PT_CHUNK_SIZE:
|
||||
if ((ret = handle_chunk_size(s, pkt)) < 0)
|
||||
return ret;
|
||||
break;
|
||||
case RTMP_PT_PING:
|
||||
if ((ret = handle_ping(s, pkt)) < 0)
|
||||
return ret;
|
||||
break;
|
||||
case RTMP_PT_CLIENT_BW:
|
||||
if ((ret = handle_client_bw(s, pkt)) < 0)
|
||||
return ret;
|
||||
break;
|
||||
case RTMP_PT_SERVER_BW:
|
||||
if ((ret = handle_server_bw(s, pkt)) < 0)
|
||||
return ret;
|
||||
break;
|
||||
case RTMP_PT_INVOKE:
|
||||
if ((ret = handle_invoke(s, pkt)) < 0)
|
||||
return ret;
|
||||
break;
|
||||
case RTMP_PT_VIDEO:
|
||||
case RTMP_PT_AUDIO:
|
||||
|
Loading…
x
Reference in New Issue
Block a user