SILENT_0)
};
+G_DEFINE_POINTER_TYPE (GstAudioFormatInfo, gst_audio_format_info);
+
/**
* gst_audio_format_build_integer:
* @sign: signed or unsigned format
}
}
+/**
+ * gst_audio_info_copy:
+ * @info: a #GstAudioInfo
+ *
+ * Copy a GstAudioInfo structure.
+ *
+ * Returns: a new #GstAudioInfo. free with gst_audio_info_free.
+ */
+GstAudioInfo *
+gst_audio_info_copy (const GstAudioInfo * info)
+{
+ return g_slice_dup (GstAudioInfo, info);
+}
+
+/**
+ * gst_audio_info_free:
+ * @info: a #GstAudioInfo
+ *
+ * Free a GstAudioInfo structure previously allocated with gst_audio_info_new()
+ * or gst_audio_info_copy().
+ */
+void
+gst_audio_info_free (GstAudioInfo * info)
+{
+ g_slice_free (GstAudioInfo, info);
+}
+
+G_DEFINE_BOXED_TYPE (GstAudioInfo, gst_audio_info,
+ (GBoxedCopyFunc) gst_audio_info_copy, (GBoxedFreeFunc) gst_audio_info_free);
+
+/**
+ * gst_audio_info_new:
+ *
+ * Allocate a new #GstAudioInfo that is also initialized with
+ * gst_audio_info_init().
+ *
+ * Returns: a new #GstAudioInfo. free with gst_audio_info_free().
+ */
+GstAudioInfo *
+gst_audio_info_new (void)
+{
+ GstAudioInfo *info;
+
+ info = g_slice_new (GstAudioInfo);
+ gst_audio_info_init (info);
+
+ return info;
+}
/**
* gst_audio_info_init:
* info of @info.
*/
GstCaps *
-gst_audio_info_to_caps (GstAudioInfo * info)
+gst_audio_info_to_caps (const GstAudioInfo * info)
{
GstCaps *caps;
const gchar *format;
* Returns: TRUE if the conversion was successful.
*/
gboolean
-gst_audio_info_convert (GstAudioInfo * info,
+gst_audio_info_convert (const GstAudioInfo * info,
GstFormat src_fmt, gint64 src_val, GstFormat dest_fmt, gint64 * dest_val)
{
gboolean res = TRUE;
GST_AUDIO_FORMAT_F64 = _GST_AUDIO_FORMAT_NE(F64)
} GstAudioFormat;
-/* FIXME: need GTypes */
+
typedef struct _GstAudioFormatInfo GstAudioFormatInfo;
typedef struct _GstAudioInfo GstAudioInfo;
* interleaved. @dest should at least be big enough to hold @length *
* channels * size(unpack_format) bytes.
*/
-typedef void (*GstAudioFormatUnpack) (GstAudioFormatInfo *info, gpointer dest,
+typedef void (*GstAudioFormatUnpack) (const GstAudioFormatInfo *info, gpointer dest,
const gpointer data, gint length);
/**
* GstAudioFormatPack:
* The samples from source have each channel interleaved
* and will be packed into @data.
*/
-typedef void (*GstAudioFormatPack) (GstAudioFormatInfo *info, const gpointer src,
+typedef void (*GstAudioFormatPack) (const GstAudioFormatInfo *info, const gpointer src,
gpointer data, gint length);
/**
GstAudioFormat unpack_format;
GstAudioFormatUnpack unpack_func;
GstAudioFormatPack pack_func;
+
+ gpointer _gst_reserved[GST_PADDING];
};
+GType gst_audio_format_info_get_type (void);
+
#define GST_AUDIO_FORMAT_INFO_FORMAT(info) ((info)->format)
#define GST_AUDIO_FORMAT_INFO_NAME(info) ((info)->name)
#define GST_AUDIO_FORMAT_INFO_FLAGS(info) ((info)->flags)
gint channels;
gint bpf;
GstAudioChannelPosition position[64];
+
+ gpointer _gst_reserved[GST_PADDING];
};
+GType gst_audio_info_get_type (void);
+
#define GST_AUDIO_INFO_FORMAT(i) (GST_AUDIO_FORMAT_INFO_FORMAT((i)->finfo))
#define GST_AUDIO_INFO_NAME(i) (GST_AUDIO_FORMAT_INFO_NAME((i)->finfo))
#define GST_AUDIO_INFO_WIDTH(i) (GST_AUDIO_FORMAT_INFO_WIDTH((i)->finfo))
#define GST_AUDIO_INFO_BPF(info) ((info)->bpf)
#define GST_AUDIO_INFO_POSITION(info,c) ((info)->position[c])
-void gst_audio_info_init (GstAudioInfo *info);
-void gst_audio_info_set_format (GstAudioInfo *info, GstAudioFormat format,
- gint rate, gint channels);
+GstAudioInfo * gst_audio_info_new (void);
+void gst_audio_info_init (GstAudioInfo *info);
+GstAudioInfo * gst_audio_info_copy (const GstAudioInfo *info);
+void gst_audio_info_free (GstAudioInfo *info);
+
+void gst_audio_info_set_format (GstAudioInfo *info, GstAudioFormat format,
+ gint rate, gint channels);
-gboolean gst_audio_info_from_caps (GstAudioInfo *info, const GstCaps *caps);
-GstCaps * gst_audio_info_to_caps (GstAudioInfo *info);
+gboolean gst_audio_info_from_caps (GstAudioInfo *info, const GstCaps *caps);
+GstCaps * gst_audio_info_to_caps (const GstAudioInfo *info);
-gboolean gst_audio_info_convert (GstAudioInfo * info,
- GstFormat src_fmt, gint64 src_val,
- GstFormat dest_fmt, gint64 * dest_val);
+gboolean gst_audio_info_convert (const GstAudioInfo * info,
+ GstFormat src_fmt, gint64 src_val,
+ GstFormat dest_fmt, gint64 * dest_val);
/**
* GstAudioBaseSrcSlaveMethod:
- * @GST_AUDIO_BASE_SRC_SLAVE_RESAMPLE: Resample to match the master clock.
+ * @GST_AUDIO_BASE_SRC_SLAVE_RESAMPLE: Resample to match the master clock.
* @GST_AUDIO_BASE_SRC_SLAVE_RETIMESTAMP: Retimestamp output buffers with master
* clock time.
* @GST_AUDIO_BASE_SRC_SLAVE_SKEW: Adjust capture pointer when master clock
* drifts too much.
- * @GST_AUDIO_BASE_SRC_SLAVE_NONE: No adjustment is done.
+ * @GST_AUDIO_BASE_SRC_SLAVE_NONE: No adjustment is done.
*
* Different possible clock slaving algorithms when the internal audio clock was
* not selected as the pipeline clock.
/*< private >*/
GstAudioBaseSrcPrivate *priv;
- gpointer _gst_reserved[GST_PADDING - 1];
+ gpointer _gst_reserved[GST_PADDING];
};
/**
#include <gst/audio/gstaudioringbuffer.h>
-guint gst_audio_iec61937_frame_size (const GstAudioRingBufferSpec * spec);
-gboolean gst_audio_iec61937_payload (const guint8 * src, guint src_n,
- guint8 * dst, guint dst_n, const GstAudioRingBufferSpec * spec);
+guint gst_audio_iec61937_frame_size (const GstAudioRingBufferSpec * spec);
+gboolean gst_audio_iec61937_payload (const guint8 * src, guint src_n,
+ guint8 * dst, guint dst_n,
+ const GstAudioRingBufferSpec * spec);
#endif /* __GST_AUDIO_IEC61937_H__ */