#include <stdio.h>
#include "mm_wfd_sink_util.h"
#include <tzplatform_config.h>
+#include "mm_wfd_sink_enum.h"
-#define DUMP_TS_DATA_PATH tzplatform_mkpath(TZ_SYS_VAR, "tmp/")
+#define DUMP_TS_DATA_PATH tzplatform_mkpath(TZ_SYS_VAR, "/tmp/")
+#define TS_DUMP_FILE_FORMAT "%s%s_%s.ts"
static GstPadProbeReturn
_mm_wfd_sink_util_dump(GstPad *pad, GstPadProbeInfo *info, gpointer u_data)
FILE *f = NULL;
char buf[256] = {0, };
char path[256] = {0, };
- GstElement * parent = NULL;
+ GstElement *parent = NULL;
+ gchar *padname = NULL;
+ gchar *elementname = NULL;
parent = gst_pad_get_parent_element(pad);
if (parent == NULL) {
return GST_PAD_PROBE_OK;
}
- snprintf(path, sizeof(path), "%s%s_%s.ts", DUMP_TS_DATA_PATH, gst_element_get_name(parent), gst_pad_get_name(pad));
+ padname = gst_pad_get_name(pad);
+ elementname = gst_element_get_name(parent);
+ snprintf(path, sizeof(path), TS_DUMP_FILE_FORMAT, DUMP_TS_DATA_PATH, elementname, padname);
+ MMWFDSINK_FREEIF(padname);
+ MMWFDSINK_FREEIF(elementname);
gst_object_unref(parent);
if (info && info->type & GST_PAD_PROBE_TYPE_BUFFER) {
GstMapInfo buf_info;
GstBuffer *buffer = gst_pad_probe_info_get_buffer(info);
- gst_buffer_map(buffer, &buf_info, GST_MAP_READ);
-
- wfd_sink_debug("got buffer %p with size %d", buffer, buf_info.size);
- data = (gint8 *)(buf_info.data);
- size = buf_info.size;
f = fopen(path, "a");
if (f == NULL) {
strerror_r(errno, buf, sizeof(buf));
wfd_sink_error("failed to fopen! : %s", buf);
return GST_PAD_PROBE_OK;
}
+
+ gst_buffer_map(buffer, &buf_info, GST_MAP_READ);
+
+ wfd_sink_debug("got buffer %p with size %d", buffer, buf_info.size);
+ data = (gint8 *)(buf_info.data);
+ size = buf_info.size;
+
fwrite(data, size, 1, f);
fclose(f);
gst_buffer_unmap(buffer, &buf_info);
GstElement *parent = NULL;
wfd_sink_return_val_if_fail(info &&
- info->type != GST_PAD_PROBE_TYPE_INVALID,
- GST_PAD_PROBE_DROP);
+ info->type != GST_PAD_PROBE_TYPE_INVALID,
+ GST_PAD_PROBE_DROP);
wfd_sink_return_val_if_fail(pad, GST_PAD_PROBE_DROP);
parent = (GstElement *)gst_object_get_parent(GST_OBJECT(pad));
GstBuffer *buffer = gst_pad_probe_info_get_buffer(info);
/* show name and timestamp */
wfd_sink_debug("BUFFER PROBE : %s:%s : %u:%02u:%02u.%09u (%"G_GSSIZE_FORMAT" bytes)\n",
- GST_STR_NULL(GST_ELEMENT_NAME(parent)),
- GST_STR_NULL(GST_PAD_NAME(pad)),
- GST_TIME_ARGS(GST_BUFFER_TIMESTAMP(buffer)),
- gst_buffer_get_size(buffer));
+ GST_STR_NULL(GST_ELEMENT_NAME(parent)),
+ GST_STR_NULL(GST_PAD_NAME(pad)),
+ GST_TIME_ARGS(GST_BUFFER_TIMESTAMP(buffer)),
+ gst_buffer_get_size(buffer));
} else if (info->type & GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM ||
- info->type & GST_PAD_PROBE_TYPE_EVENT_UPSTREAM ||
- info->type & GST_PAD_PROBE_TYPE_EVENT_FLUSH ||
- info->type & GST_PAD_PROBE_TYPE_EVENT_BOTH) {
+ info->type & GST_PAD_PROBE_TYPE_EVENT_UPSTREAM ||
+ info->type & GST_PAD_PROBE_TYPE_EVENT_FLUSH ||
+ info->type & GST_PAD_PROBE_TYPE_EVENT_BOTH) {
GstEvent *event = gst_pad_probe_info_get_event(info);
/* show name and event type */
wfd_sink_debug("EVENT PROBE : %s:%s : %s\n",
- GST_STR_NULL(GST_ELEMENT_NAME(parent)),
- GST_STR_NULL(GST_PAD_NAME(pad)),
- GST_EVENT_TYPE_NAME(event));
+ GST_STR_NULL(GST_ELEMENT_NAME(parent)),
+ GST_STR_NULL(GST_PAD_NAME(pad)),
+ GST_EVENT_TYPE_NAME(event));
if (GST_EVENT_TYPE(event) == GST_EVENT_SEGMENT) {
const GstSegment *segment = NULL;
gst_event_parse_segment(event, &segment);
- if (segment)
+ if (segment) {
wfd_sink_debug("NEWSEGMENT : %" GST_TIME_FORMAT
- " -- %" GST_TIME_FORMAT ", time %" GST_TIME_FORMAT " \n",
- GST_TIME_ARGS(segment->start), GST_TIME_ARGS(segment->stop),
- GST_TIME_ARGS(segment->time));
+ " -- %" GST_TIME_FORMAT ", time %" GST_TIME_FORMAT " \n",
+ GST_TIME_ARGS(segment->start), GST_TIME_ARGS(segment->stop),
+ GST_TIME_ARGS(segment->time));
+
+ wfd_sink_debug("NEWSEGMENT : flags[%d] rate[%d] applied_rate[%d] foramt[%d] base[%lld] offset[%lld] position[%lld] duration[%lld]",
+ segment->flags, segment->rate, segment->applied_rate, segment->format, segment->base, segment->offset, segment->position, segment->duration);
+
+ }
+ } else if (GST_EVENT_TYPE(event) == GST_EVENT_CAPS) {
+ GstCaps *caps;
+ gchar *caps_string = NULL;
+
+ gst_event_parse_caps(event, &caps);
+ caps_string = gst_caps_to_string(caps);
+
+ wfd_sink_debug("caps: %s", caps_string);
+ g_free(caps_string);
}
}
if (probe_pad) {
wfd_sink_debug("add pad(%s) probe", GST_STR_NULL(GST_PAD_NAME(probe_pad)));
gst_pad_add_probe(probe_pad, GST_PAD_PROBE_TYPE_DATA_BOTH,
- _mm_wfd_sink_util_pad_probe_cb, (gpointer)NULL, NULL);
+ _mm_wfd_sink_util_pad_probe_cb, (gpointer)NULL, NULL);
gst_object_unref(probe_pad);
}
}
probe_pad = gst_element_get_static_pad(element, pad_name);
if (probe_pad) {
+ char file_path[256] = {0, };
+ gchar *elementname = NULL;
+
+ elementname = gst_element_get_name(element);
+ snprintf(file_path, sizeof(file_path), TS_DUMP_FILE_FORMAT, DUMP_TS_DATA_PATH, elementname, pad_name);
+ MMWFDSINK_FREEIF(elementname);
+ remove(file_path);
+
wfd_sink_debug("add pad(%s) probe", GST_STR_NULL(GST_PAD_NAME(probe_pad)));
gst_pad_add_probe(probe_pad, GST_PAD_PROBE_TYPE_BUFFER, _mm_wfd_sink_util_dump, (gpointer)NULL, NULL);
gst_object_unref(probe_pad);
buffer = gst_pad_probe_info_get_buffer(info);
wfd_sink_debug("FIRST BUFFER PROBE : %s:%s : %u:%02u:%02u.%09u (%"G_GSSIZE_FORMAT" bytes)\n",
- GST_STR_NULL(GST_ELEMENT_NAME(parent)), GST_STR_NULL(GST_PAD_NAME(pad)),
- GST_TIME_ARGS(GST_BUFFER_TIMESTAMP(buffer)), gst_buffer_get_size(buffer));
+ GST_STR_NULL(GST_ELEMENT_NAME(parent)), GST_STR_NULL(GST_PAD_NAME(pad)),
+ GST_TIME_ARGS(GST_BUFFER_TIMESTAMP(buffer)), gst_buffer_get_size(buffer));
if (probe_id && *probe_id > 0) {
wfd_sink_debug("remove buffer probe[%d]\n", *probe_id);
*probe_id = gst_pad_add_probe(probe_pad, GST_PAD_PROBE_TYPE_BUFFER, _mm_wfd_sink_util_check_first_buffer_cb, (gpointer)probe_id, NULL);
wfd_sink_debug("add pad(%s) probe, %d",
- GST_STR_NULL(GST_PAD_NAME(probe_pad)), *probe_id);
+ GST_STR_NULL(GST_PAD_NAME(probe_pad)), *probe_id);
gst_object_unref(probe_pad);
}