summaryrefslogtreecommitdiff
path: root/rtmp
diff options
context:
space:
mode:
authorDavid Schleef <ds@schleef.org>2014-09-01 19:07:41 -0700
committerDavid Schleef <ds@schleef.org>2014-09-01 19:07:41 -0700
commitd5b4e3cd5a19fcb86cbbe2125be48bd24e4faba3 (patch)
tree9906ac6615de0678216dd477dd28687db23d2506 /rtmp
parentc61055beacf664e072ca763525d110756da98862 (diff)
refactor dump_chunk
Diffstat (limited to 'rtmp')
-rw-r--r--rtmp/rtmputils.c41
-rw-r--r--rtmp/rtmputils.h3
2 files changed, 44 insertions, 0 deletions
diff --git a/rtmp/rtmputils.c b/rtmp/rtmputils.c
index c479680..3472f35 100644
--- a/rtmp/rtmputils.c
+++ b/rtmp/rtmputils.c
@@ -180,3 +180,44 @@ gst_rtmp_tea_decode (const gchar * key, const gchar * text)
return (gchar *) out;
}
+
+static void
+dump_command (GstRtmpChunk * chunk)
+{
+ GstAmfNode *amf;
+ gsize size;
+ const guint8 *data;
+ gsize n_parsed;
+ int offset;
+
+ offset = 0;
+ data = g_bytes_get_data (chunk->payload, &size);
+ while (offset < size) {
+ amf = gst_amf_node_new_parse (data + offset, size - offset, &n_parsed);
+ gst_amf_node_dump (amf);
+ gst_amf_node_free (amf);
+ offset += n_parsed;
+ }
+}
+
+void
+gst_rtmp_dump_chunk (GstRtmpChunk * chunk, gboolean dir, gboolean dump_message,
+ gboolean dump_data)
+{
+ g_print ("%s chunk_stream_id:%-4d ts:%-8d len:%-6" G_GSIZE_FORMAT
+ " type_id:%-4d stream_id:%08x\n", dir ? ">>>" : "<<<",
+ chunk->chunk_stream_id,
+ chunk->timestamp,
+ chunk->message_length, chunk->message_type_id, chunk->stream_id);
+ if (dump_message) {
+ if (chunk->message_type_id == 20) {
+ dump_command (chunk);
+ }
+ if (chunk->message_type_id == 18) {
+ dump_command (chunk);
+ }
+ }
+ if (dump_data) {
+ gst_rtmp_dump_data (gst_rtmp_chunk_get_payload (chunk));
+ }
+}
diff --git a/rtmp/rtmputils.h b/rtmp/rtmputils.h
index b020367..7751c76 100644
--- a/rtmp/rtmputils.h
+++ b/rtmp/rtmputils.h
@@ -21,6 +21,7 @@
#define _GST_RTMP_UTILS_H_
#include <glib.h>
+#include "rtmpchunk.h"
G_BEGIN_DECLS
@@ -30,6 +31,8 @@ GBytes *gst_rtmp_bytes_remove (GBytes *bytes, gsize size);
gchar * gst_rtmp_hexify (const guint8 *src, gsize size);
guint8 * gst_rtmp_unhexify (const char *src, gsize *size);
gchar * gst_rtmp_tea_decode (const gchar *key, const gchar *text);
+void gst_rtmp_dump_chunk (GstRtmpChunk * chunk, gboolean dir,
+ gboolean dump_message, gboolean dump_data);
G_END_DECLS