mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-01 05:39:51 +00:00
adapter: move new member to private struct
Move the new members to a private struct because we don't have enough padding anymore on 32-bits platforms.
This commit is contained in:
parent
763a6f6761
commit
bb013081a4
3 changed files with 29 additions and 17 deletions
|
@ -208,6 +208,7 @@ gst_adapter_take_buffer
|
|||
gst_adapter_prev_timestamp
|
||||
<SUBSECTION Standard>
|
||||
GstAdapterClass
|
||||
GstAdapterPrivate
|
||||
GST_ADAPTER
|
||||
GST_IS_ADAPTER
|
||||
GST_TYPE_ADAPTER
|
||||
|
|
|
@ -118,6 +118,15 @@
|
|||
GST_DEBUG_CATEGORY_STATIC (gst_adapter_debug);
|
||||
#define GST_CAT_DEFAULT gst_adapter_debug
|
||||
|
||||
#define GST_ADAPTER_GET_PRIVATE(obj) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), GST_TYPE_ADAPTER, GstAdapterPrivate))
|
||||
|
||||
struct _GstAdapterPrivate
|
||||
{
|
||||
GstClockTime timestamp;
|
||||
guint64 distance;
|
||||
};
|
||||
|
||||
#define _do_init(thing) \
|
||||
GST_DEBUG_CATEGORY_INIT (gst_adapter_debug, "adapter", 0, "object to splice and merge buffers to desired size")
|
||||
GST_BOILERPLATE_FULL (GstAdapter, gst_adapter, GObject, G_TYPE_OBJECT,
|
||||
|
@ -137,6 +146,8 @@ gst_adapter_class_init (GstAdapterClass * klass)
|
|||
{
|
||||
GObjectClass *object = G_OBJECT_CLASS (klass);
|
||||
|
||||
g_type_class_add_private (klass, sizeof (GstAdapterPrivate));
|
||||
|
||||
object->dispose = gst_adapter_dispose;
|
||||
object->finalize = gst_adapter_finalize;
|
||||
}
|
||||
|
@ -144,10 +155,11 @@ gst_adapter_class_init (GstAdapterClass * klass)
|
|||
static void
|
||||
gst_adapter_init (GstAdapter * adapter, GstAdapterClass * g_class)
|
||||
{
|
||||
adapter->priv = GST_ADAPTER_GET_PRIVATE (adapter);
|
||||
adapter->assembled_data = g_malloc (DEFAULT_SIZE);
|
||||
adapter->assembled_size = DEFAULT_SIZE;
|
||||
adapter->abidata.ABI.timestamp = GST_CLOCK_TIME_NONE;
|
||||
adapter->abidata.ABI.distance = 0;
|
||||
adapter->priv->timestamp = GST_CLOCK_TIME_NONE;
|
||||
adapter->priv->distance = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -201,8 +213,8 @@ gst_adapter_clear (GstAdapter * adapter)
|
|||
adapter->size = 0;
|
||||
adapter->skip = 0;
|
||||
adapter->assembled_len = 0;
|
||||
adapter->abidata.ABI.timestamp = GST_CLOCK_TIME_NONE;
|
||||
adapter->abidata.ABI.distance = 0;
|
||||
adapter->priv->timestamp = GST_CLOCK_TIME_NONE;
|
||||
adapter->priv->distance = 0;
|
||||
}
|
||||
|
||||
static inline void
|
||||
|
@ -214,8 +226,8 @@ update_timestamp (GstAdapter * adapter, GstBuffer * buf)
|
|||
if (GST_CLOCK_TIME_IS_VALID (timestamp)) {
|
||||
GST_LOG_OBJECT (adapter, "new timestamp %" GST_TIME_FORMAT,
|
||||
GST_TIME_ARGS (timestamp));
|
||||
adapter->abidata.ABI.timestamp = timestamp;
|
||||
adapter->abidata.ABI.distance = 0;
|
||||
adapter->priv->timestamp = timestamp;
|
||||
adapter->priv->distance = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -482,7 +494,7 @@ gst_adapter_flush (GstAdapter * adapter, guint flush)
|
|||
GST_LOG_OBJECT (adapter, "flushing out head buffer");
|
||||
flush -= size;
|
||||
adapter->skip = 0;
|
||||
adapter->abidata.ABI.distance += size;
|
||||
adapter->priv->distance += size;
|
||||
adapter->buflist =
|
||||
g_slist_delete_link (adapter->buflist, adapter->buflist);
|
||||
|
||||
|
@ -496,7 +508,7 @@ gst_adapter_flush (GstAdapter * adapter, guint flush)
|
|||
gst_buffer_unref (cur);
|
||||
} else {
|
||||
adapter->skip += flush;
|
||||
adapter->abidata.ABI.distance += flush;
|
||||
adapter->priv->distance += flush;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -702,7 +714,7 @@ gst_adapter_prev_timestamp (GstAdapter * adapter, guint64 * distance)
|
|||
g_return_val_if_fail (GST_IS_ADAPTER (adapter), GST_CLOCK_TIME_NONE);
|
||||
|
||||
if (distance)
|
||||
*distance = adapter->abidata.ABI.distance;
|
||||
*distance = adapter->priv->distance;
|
||||
|
||||
return adapter->abidata.ABI.timestamp;
|
||||
return adapter->priv->timestamp;
|
||||
}
|
||||
|
|
|
@ -40,6 +40,7 @@ G_BEGIN_DECLS
|
|||
|
||||
typedef struct _GstAdapter GstAdapter;
|
||||
typedef struct _GstAdapterClass GstAdapterClass;
|
||||
typedef struct _GstAdapterPrivate GstAdapterPrivate;
|
||||
|
||||
/**
|
||||
* GstAdapter:
|
||||
|
@ -60,16 +61,14 @@ struct _GstAdapter {
|
|||
guint assembled_size;
|
||||
guint assembled_len;
|
||||
|
||||
/* ABI added */
|
||||
/* Remember where the end of our buffer list is to
|
||||
* speed up the push */
|
||||
GSList *buflist_end;
|
||||
union {
|
||||
struct {
|
||||
GstClockTime timestamp;
|
||||
guint64 distance;
|
||||
} ABI;
|
||||
gpointer _gst_reserved[GST_PADDING - 1];
|
||||
} abidata;
|
||||
|
||||
GstAdapterPrivate *priv;
|
||||
|
||||
gpointer _gst_reserved[GST_PADDING - 2];
|
||||
};
|
||||
|
||||
struct _GstAdapterClass {
|
||||
|
|
Loading…
Reference in a new issue