diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2011-12-08 00:23:37 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-12-08 00:23:37 +0100 |
commit | 8e2bab5d4bddb4029503c0f90623854948ddb3c5 (patch) | |
tree | 33a095ce0e92ed353c96c9b25b746ee45a2a00c7 /libavformat/rtmpproto.c | |
parent | 7023fb81c78e10a6a7af6e6bc8902f99da81c458 (diff) | |
parent | 78212cefe14a2086dc1ea3778b76623b949e5d0c (diff) | |
download | ffmpeg-8e2bab5d4bddb4029503c0f90623854948ddb3c5.tar.gz |
Merge remote-tracking branch 'qatar/master'
* qatar/master:
drawtext: remove typo
pcm-mpeg: implement new audio decoding api
w32thread: port fixes to pthread_cond_broadcast() from x264.
doc: add editor configuration section with Vim and Emacs settings
dxva2.h: include d3d9.h to define LPDIRECT3DSURFACE9
avformat/utils: Drop unused goto label.
doxygen: Replace '\' by '@' in Doxygen markup tags.
cosmetics: drop some completely pointless parentheses
cljr: simplify CLJRContext
drawtext: introduce rand(min, max)
drawtext: introduce explicit draw/hide variable
rtmp: Use nb_invokes for all invoke commands
Conflicts:
libavcodec/mpegvideo.c
libavfilter/vf_drawtext.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/rtmpproto.c')
-rw-r--r-- | libavformat/rtmpproto.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c index 8f57d1bb59..486e9a3263 100644 --- a/libavformat/rtmpproto.c +++ b/libavformat/rtmpproto.c @@ -75,6 +75,7 @@ typedef struct RTMPContext { 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 + int create_stream_invoke; ///< invoke id for the create stream command } RTMPContext; #define PLAYER_KEY_OPEN_PART_LEN 30 ///< length of partial key used for first client digest signing @@ -115,7 +116,7 @@ static void gen_connect(URLContext *s, RTMPContext *rt, const char *proto, ff_url_join(tcurl, sizeof(tcurl), proto, NULL, host, port, "/%s", rt->app); ff_amf_write_string(&p, "connect"); - ff_amf_write_number(&p, 1.0); + ff_amf_write_number(&p, ++rt->nb_invokes); ff_amf_write_object_start(&p); ff_amf_write_field_name(&p, "app"); ff_amf_write_string(&p, rt->app); @@ -237,6 +238,7 @@ static void gen_create_stream(URLContext *s, RTMPContext *rt) ff_amf_write_string(&p, "createStream"); ff_amf_write_number(&p, ++rt->nb_invokes); ff_amf_write_null(&p); + rt->create_stream_invoke = rt->nb_invokes; ff_rtmp_packet_write(rt->stream, &pkt, rt->chunk_size, rt->prev_pkt[1]); ff_rtmp_packet_destroy(&pkt); @@ -257,7 +259,7 @@ static void gen_delete_stream(URLContext *s, RTMPContext *rt) p = pkt.data; ff_amf_write_string(&p, "deleteStream"); - ff_amf_write_number(&p, 0.0); + ff_amf_write_number(&p, ++rt->nb_invokes); ff_amf_write_null(&p); ff_amf_write_number(&p, rt->main_channel_id); @@ -281,7 +283,7 @@ static void gen_play(URLContext *s, RTMPContext *rt) p = pkt.data; ff_amf_write_string(&p, "play"); - ff_amf_write_number(&p, 0.0); + ff_amf_write_number(&p, ++rt->nb_invokes); ff_amf_write_null(&p); ff_amf_write_string(&p, rt->playpath); @@ -315,7 +317,7 @@ static void gen_publish(URLContext *s, RTMPContext *rt) p = pkt.data; ff_amf_write_string(&p, "publish"); - ff_amf_write_number(&p, 0.0); + ff_amf_write_number(&p, ++rt->nb_invokes); ff_amf_write_null(&p); ff_amf_write_string(&p, rt->playpath); ff_amf_write_string(&p, "live"); @@ -614,7 +616,7 @@ static int rtmp_parse_result(URLContext *s, RTMPContext *rt, RTMPPacket *pkt) * releaseStream and FCPublish calls */ if (!pkt->data[10]) { int pkt_id = (int) av_int2dbl(AV_RB64(pkt->data + 11)); - if (pkt_id == 4) + if (pkt_id == rt->create_stream_invoke) rt->state = STATE_CONNECTING; } if (rt->state != STATE_CONNECTING) |