[FFmpeg-cvslog] rtmp: Store all the notify messages
Luca Barbato
git at videolan.org
Tue Sep 17 11:44:36 CEST 2013
ffmpeg | branch: master | Luca Barbato <lu_zero at gentoo.org> | Mon Sep 16 17:42:59 2013 +0200| [92ed83e393d25b6d15920e90d56ee77de54a9728] | committer: Luca Barbato
rtmp: Store all the notify messages
The onTextData is used to implement text data streams in flv.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=92ed83e393d25b6d15920e90d56ee77de54a9728
---
libavformat/rtmpproto.c | 59 +++++++++++++++++++++++------------------------
1 file changed, 29 insertions(+), 30 deletions(-)
diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c
index 33b59e4..04a3137 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;
}
More information about the ffmpeg-cvslog
mailing list