diff options
author | David Schleef <ds@schleef.org> | 2014-09-01 19:07:41 -0700 |
---|---|---|
committer | David Schleef <ds@schleef.org> | 2014-09-01 19:07:41 -0700 |
commit | d5b4e3cd5a19fcb86cbbe2125be48bd24e4faba3 (patch) | |
tree | 9906ac6615de0678216dd477dd28687db23d2506 /rtmp | |
parent | c61055beacf664e072ca763525d110756da98862 (diff) |
refactor dump_chunk
Diffstat (limited to 'rtmp')
-rw-r--r-- | rtmp/rtmputils.c | 41 | ||||
-rw-r--r-- | rtmp/rtmputils.h | 3 |
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 |