#include "gstlog.h"
#include "gstbufferpool-default.h"
+/* #define GST_WITH_ALLOC_TRACE */
+#include "gsttrace.h"
+
GType _gst_buffer_type;
GType _gst_buffer_pool_type;
-static gint _gst_buffer_live;
-static gint _gst_buffer_pool_live;
+static GstAllocTrace *_gst_buffer_trace;
+static GstAllocTrace *_gst_buffer_pool_trace;
static GstMemChunk *chunk;
(GBoxedCopyFunc) gst_data_ref,
(GBoxedFreeFunc) gst_data_unref);
- _gst_buffer_live = 0;
- _gst_buffer_pool_live = 0;
+ _gst_buffer_trace = gst_alloc_trace_register (GST_BUFFER_TRACE_NAME);
+ _gst_buffer_pool_trace = gst_alloc_trace_register (GST_BUFFER_POOL_TRACE_NAME);
chunk = gst_mem_chunk_new ("GstBufferChunk", sizeof (GstBuffer),
sizeof (GstBuffer) * 200, 0);
GST_INFO (GST_CAT_BUFFER, "Buffers are initialized now");
}
-/**
- * gst_buffer_print_stats:
- *
- * Logs statistics about live buffers (using g_log).
- */
-void
-gst_buffer_print_stats (void)
-{
- g_log (g_log_domain_gstreamer, G_LOG_LEVEL_INFO, "%d live buffer(s)",
- _gst_buffer_live);
- g_log (g_log_domain_gstreamer, G_LOG_LEVEL_INFO, "%d live bufferpool(s)",
- _gst_buffer_pool_live);
-}
-
static void
_gst_buffer_free_to_pool (GstBuffer *buffer)
{
_GST_DATA_DISPOSE (GST_DATA (buffer));
gst_mem_chunk_free (chunk, GST_DATA (buffer));
- _gst_buffer_live--;
+ gst_alloc_trace_free (_gst_buffer_trace, buffer);
}
/**
_GST_DATA_DISPOSE (GST_DATA (buffer));
gst_mem_chunk_free (chunk, GST_DATA (buffer));
- _gst_buffer_live--;
+ gst_alloc_trace_free (_gst_buffer_trace, buffer);
}
static GstBuffer*
GstBuffer*
gst_buffer_new (void)
{
- GstBuffer *new;
+ GstBuffer *buf;
- new = gst_mem_chunk_alloc0 (chunk);
- _gst_buffer_live++;
+ buf = gst_mem_chunk_alloc0 (chunk);
+ gst_alloc_trace_new (_gst_buffer_trace, buf);
- _GST_DATA_INIT (GST_DATA (new),
+ _GST_DATA_INIT (GST_DATA (buf),
_gst_buffer_type,
0,
(GstDataFreeFunction) gst_buffer_default_free,
(GstDataCopyFunction) gst_buffer_default_copy);
- GST_BUFFER_BUFFERPOOL (new) = NULL;
- GST_BUFFER_POOL_PRIVATE (new) = NULL;
+ GST_BUFFER_BUFFERPOOL (buf) = NULL;
+ GST_BUFFER_POOL_PRIVATE (buf) = NULL;
- return new;
+ return buf;
}
/**
/* create the new buffer */
buffer = gst_mem_chunk_alloc0 (chunk);
- _gst_buffer_live++;
+ gst_alloc_trace_new (_gst_buffer_trace, buffer);
/* make sure nobody overwrites data in the new buffer
* by setting the READONLY flag */
_GST_DATA_DISPOSE (GST_DATA (pool));
g_free (pool);
- _gst_buffer_pool_live--;
+ gst_alloc_trace_free (_gst_buffer_pool_trace, pool);
}
/**
g_return_val_if_fail (buffer_new != NULL, NULL);
pool = g_new0 (GstBufferPool, 1);
- _gst_buffer_pool_live++;
+ gst_alloc_trace_new (_gst_buffer_pool_trace, pool);
GST_DEBUG (GST_CAT_BUFFER, "allocating new buffer pool %p\n", pool);
typedef struct _GstBuffer GstBuffer;
typedef struct _GstBufferPool GstBufferPool;
+#define GST_BUFFER_TRACE_NAME "GstBuffer"
+#define GST_BUFFER_POOL_TRACE_NAME "GstBufferPool"
+
extern GType _gst_buffer_type;
extern GType _gst_buffer_pool_type;
void gst_buffer_default_free (GstBuffer *buffer);
GstBuffer* gst_buffer_default_copy (GstBuffer *buffer);
-void gst_buffer_print_stats (void);
-
-
/* creating a new buffer pools */
GstBufferPool* gst_buffer_pool_new (GstDataFreeFunction free,
GstDataCopyFunction copy,
#include "gstevent.h"
#include "gstlog.h"
+/* #define GST_WITH_ALLOC_TRACE */
+#include "gsttrace.h"
+
/* #define MEMPROF */
GType _gst_event_type;
-static gint _gst_event_live;
+static GstAllocTrace *_event_trace;
void
_gst_event_initialize (void)
_gst_event_type = g_boxed_type_register_static ("GstEvent",
(GBoxedCopyFunc) gst_data_ref,
(GBoxedFreeFunc) gst_data_unref);
- _gst_event_live = 0;
-}
-/**
- * gst_event_print_stats:
- *
- * Logs statistics about live events (using g_log).
- */
-void
-gst_event_print_stats (void)
-{
- g_log (g_log_domain_gstreamer, G_LOG_LEVEL_INFO,
- "%d live event(s)", _gst_event_live);
+ _event_trace = gst_alloc_trace_register (GST_EVENT_TRACE_NAME);
}
-
static GstEvent*
_gst_event_copy (GstEvent *event)
{
GstEvent *copy;
copy = g_new0(GstEvent, 1);
- _gst_event_live++;
+ gst_alloc_trace_new (_event_trace, copy);
memcpy (copy, event, sizeof (GstEvent));
break;
}
_GST_DATA_DISPOSE (GST_DATA (event));
- _gst_event_live--;
+ gst_alloc_trace_free (_event_trace, event);
+
g_free (event);
}
GstEvent *event;
event = g_new0(GstEvent, 1);
- _gst_event_live++;
+ gst_alloc_trace_new (_event_trace, event);
+
GST_INFO (GST_CAT_EVENT, "creating new event %p %d", event, type);
_GST_DATA_INIT (GST_DATA (event),
G_BEGIN_DECLS
typedef enum {
- GST_EVENT_UNKNOWN,
- GST_EVENT_EOS,
- GST_EVENT_FLUSH,
- GST_EVENT_EMPTY,
- GST_EVENT_DISCONTINUOUS,
- GST_EVENT_NEW_MEDIA,
- GST_EVENT_QOS,
- GST_EVENT_SEEK,
- GST_EVENT_SEEK_SEGMENT,
- GST_EVENT_SEGMENT_DONE,
- GST_EVENT_SIZE,
- GST_EVENT_RATE,
- GST_EVENT_FILLER,
- GST_EVENT_TS_OFFSET,
- GST_EVENT_INTERRUPT
+ GST_EVENT_UNKNOWN = 0,
+ GST_EVENT_EOS = 1,
+ GST_EVENT_FLUSH = 2,
+ GST_EVENT_EMPTY = 3,
+ GST_EVENT_DISCONTINUOUS = 4,
+ GST_EVENT_NEW_MEDIA = 5,
+ GST_EVENT_QOS = 6,
+ GST_EVENT_SEEK = 7,
+ GST_EVENT_SEEK_SEGMENT = 8,
+ GST_EVENT_SEGMENT_DONE = 9,
+ GST_EVENT_SIZE = 10,
+ GST_EVENT_RATE = 11,
+ GST_EVENT_FILLER = 12,
+ GST_EVENT_TS_OFFSET = 13,
+ GST_EVENT_INTERRUPT = 14
} GstEventType;
extern GType _gst_event_type;
+#define GST_EVENT_TRACE_NAME "GstEvent"
+
#define GST_TYPE_EVENT (_gst_event_type)
#define GST_EVENT(event) ((GstEvent*)(event))
#define GST_IS_EVENT(event) (GST_DATA_TYPE(event) == GST_TYPE_EVENT)
};
void _gst_event_initialize (void);
-
-void gst_event_print_stats (void);
GstEvent* gst_event_new (GstEventType type);