From 92ed83e393d25b6d15920e90d56ee77de54a9728 Mon Sep 17 00:00:00 2001
From: Luca Barbato <lu_zero@gentoo.org>
Date: Mon, 16 Sep 2013 17:42:59 +0200
Subject: [PATCH] rtmp: Store all the notify messages

The onTextData is used to implement text data streams in flv.
---
 libavformat/rtmpproto.c | 59 ++++++++++++++++++++---------------------
 1 file changed, 29 insertions(+), 30 deletions(-)

diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c
index 33b59e48a11..04a3137ce14 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;
 }
 
-- 
GitLab