From 704af3e29c3ddbc22ac5c8f40e5a0f860d53ac4c Mon Sep 17 00:00:00 2001 From: Josh Allmann Date: Sat, 12 Nov 2011 13:28:58 -0800 Subject: rtmp: do not hardcode invoke numbers Note: FCPublish/FCUnpublish are adobe server specific and not described in the rtmp specification. Some servers might not cope with them at all. Signed-off-by: Luca Barbato --- libavformat/rtmpproto.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'libavformat') diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c index 9d734072ab..37c3d95aca 100644 --- a/libavformat/rtmpproto.c +++ b/libavformat/rtmpproto.c @@ -74,6 +74,7 @@ typedef struct RTMPContext { int skip_bytes; ///< number of bytes to skip from the input FLV stream in the next write call uint8_t flv_header[11]; ///< partial incoming flv packet header int flv_header_bytes; ///< number of initialized bytes in flv_header + int nb_invokes; ///< keeps track of invoke messages } RTMPContext; #define PLAYER_KEY_OPEN_PART_LEN 30 ///< length of partial key used for first client digest signing @@ -166,7 +167,7 @@ static void gen_release_stream(URLContext *s, RTMPContext *rt) av_log(s, AV_LOG_DEBUG, "Releasing stream...\n"); p = pkt.data; ff_amf_write_string(&p, "releaseStream"); - ff_amf_write_number(&p, 2.0); + ff_amf_write_number(&p, ++rt->nb_invokes); ff_amf_write_null(&p); ff_amf_write_string(&p, rt->playpath); @@ -189,7 +190,7 @@ static void gen_fcpublish_stream(URLContext *s, RTMPContext *rt) av_log(s, AV_LOG_DEBUG, "FCPublish stream...\n"); p = pkt.data; ff_amf_write_string(&p, "FCPublish"); - ff_amf_write_number(&p, 3.0); + ff_amf_write_number(&p, ++rt->nb_invokes); ff_amf_write_null(&p); ff_amf_write_string(&p, rt->playpath); @@ -212,7 +213,7 @@ static void gen_fcunpublish_stream(URLContext *s, RTMPContext *rt) av_log(s, AV_LOG_DEBUG, "UnPublishing stream...\n"); p = pkt.data; ff_amf_write_string(&p, "FCUnpublish"); - ff_amf_write_number(&p, 5.0); + ff_amf_write_number(&p, ++rt->nb_invokes); ff_amf_write_null(&p); ff_amf_write_string(&p, rt->playpath); @@ -234,7 +235,7 @@ static void gen_create_stream(URLContext *s, RTMPContext *rt) p = pkt.data; ff_amf_write_string(&p, "createStream"); - ff_amf_write_number(&p, rt->is_input ? 3.0 : 4.0); + 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]); -- cgit v1.2.3