diff options
author | Luca Barbato <lu_zero@gentoo.org> | 2013-09-16 17:42:59 +0200 |
---|---|---|
committer | Luca Barbato <lu_zero@gentoo.org> | 2013-09-16 19:36:37 +0200 |
commit | 92ed83e393d25b6d15920e90d56ee77de54a9728 (patch) | |
tree | bef0b6df27832ffec1dc727622e41faf9c039711 /libavformat | |
parent | fe0337e89bbbe84b7274fbb0d9d56ed992937931 (diff) | |
download | ffmpeg-92ed83e393d25b6d15920e90d56ee77de54a9728.tar.gz |
rtmp: Store all the notify messages
The onTextData is used to implement text data streams in flv.
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/rtmpproto.c | 59 |
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; } |