summaryrefslogtreecommitdiff
path: root/libavformat/rtmpproto.c
diff options
context:
space:
mode:
authorLuca Barbato <lu_zero@gentoo.org>2013-09-16 17:42:59 +0200
committerLuca Barbato <lu_zero@gentoo.org>2013-09-16 19:36:37 +0200
commit92ed83e393d25b6d15920e90d56ee77de54a9728 (patch)
treebef0b6df27832ffec1dc727622e41faf9c039711 /libavformat/rtmpproto.c
parentfe0337e89bbbe84b7274fbb0d9d56ed992937931 (diff)
rtmp: Store all the notify messages
The onTextData is used to implement text data streams in flv.
Diffstat (limited to 'libavformat/rtmpproto.c')
-rw-r--r--libavformat/rtmpproto.c59
1 files changed, 29 insertions, 30 deletions
diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c
index 33b59e48a1..04a3137ce1 100644
--- a/libavformat/rtmpproto.c
+++ b/libavformat/rtmpproto.c
@@ -2088,39 +2088,38 @@ static int handle_notify(URLContext *s, RTMPPacket *pkt) {
if (ff_amf_read_string(&gbc, statusmsg,
sizeof(statusmsg), &stringlen))
return AVERROR_INVALIDDATA;
- if (strcmp(statusmsg, "onMetaData")) {
- av_log(s, AV_LOG_INFO, "Expecting onMetadata but got %s\n",
- statusmsg);
- return 0;
- }
-
- /* Provide ECMAArray to flv */
- ts = pkt->timestamp;
+ } else {
+ datatowrite = pkt->data;
+ datatowritelength = pkt->size;
+ }
- // generate packet header and put data into buffer for FLV demuxer
- if (rt->flv_off < rt->flv_size) {
- old_flv_size = rt->flv_size;
- rt->flv_size += datatowritelength + 15;
- } else {
- old_flv_size = 0;
- rt->flv_size = datatowritelength + 15;
- rt->flv_off = 0;
- }
+ /* Provide ECMAArray to flv */
+ ts = pkt->timestamp;
- cp = av_realloc(rt->flv_data, rt->flv_size);
- if (!cp)
- return AVERROR(ENOMEM);
- rt->flv_data = cp;
- bytestream2_init_writer(&pbc, cp, rt->flv_size);
- bytestream2_skip_p(&pbc, old_flv_size);
- bytestream2_put_byte(&pbc, pkt->type);
- bytestream2_put_be24(&pbc, datatowritelength);
- bytestream2_put_be24(&pbc, ts);
- bytestream2_put_byte(&pbc, ts >> 24);
- bytestream2_put_be24(&pbc, 0);
- bytestream2_put_buffer(&pbc, datatowrite, datatowritelength);
- bytestream2_put_be32(&pbc, 0);
+ // generate packet header and put data into buffer for FLV demuxer
+ if (rt->flv_off < rt->flv_size) {
+ old_flv_size = rt->flv_size;
+ rt->flv_size += datatowritelength + 15;
+ } else {
+ old_flv_size = 0;
+ rt->flv_size = datatowritelength + 15;
+ rt->flv_off = 0;
}
+
+ cp = av_realloc(rt->flv_data, rt->flv_size);
+ if (!cp)
+ return AVERROR(ENOMEM);
+ rt->flv_data = cp;
+ bytestream2_init_writer(&pbc, cp, rt->flv_size);
+ bytestream2_skip_p(&pbc, old_flv_size);
+ bytestream2_put_byte(&pbc, pkt->type);
+ bytestream2_put_be24(&pbc, datatowritelength);
+ bytestream2_put_be24(&pbc, ts);
+ bytestream2_put_byte(&pbc, ts >> 24);
+ bytestream2_put_be24(&pbc, 0);
+ bytestream2_put_buffer(&pbc, datatowrite, datatowritelength);
+ bytestream2_put_be32(&pbc, 0);
+
return 0;
}