#define __AUDIO_CONVERT_H__
#include <gst/gst.h>
-#include <gst/audio/multichannel.h>
+#include <gst/audio/audio.h>
+GST_DEBUG_CATEGORY_EXTERN (audio_convert_debug);
+#define GST_CAT_DEFAULT (audio_convert_debug)
+
+/**
+ * GstAudioConvertDithering:
+ * @DITHER_NONE: No dithering
+ * @DITHER_RPDF: Rectangular dithering
+ * @DITHER_TPDF: Triangular dithering (default)
+ * @DITHER_TPDF_HF: High frequency triangular dithering
+ *
+ * Set of available dithering methods when converting audio.
+ */
typedef enum
{
DITHER_NONE = 0,
DITHER_RPDF,
DITHER_TPDF,
DITHER_TPDF_HF
-} DitherType;
-
+} GstAudioConvertDithering;
+
+/**
+ * GstAudioConvertNoiseShaping:
+ * @NOISE_SHAPING_NONE: No noise shaping (default)
+ * @NOISE_SHAPING_ERROR_FEEDBACK: Error feedback
+ * @NOISE_SHAPING_SIMPLE: Simple 2-pole noise shaping
+ * @NOISE_SHAPING_MEDIUM: Medium 5-pole noise shaping
+ * @NOISE_SHAPING_HIGH: High 8-pole noise shaping
+ *
+ * Set of available noise shaping methods
+ */
typedef enum
{
NOISE_SHAPING_NONE = 0,
NOISE_SHAPING_SIMPLE,
NOISE_SHAPING_MEDIUM,
NOISE_SHAPING_HIGH
-} NoiseShapingType;
+} GstAudioConvertNoiseShaping;
typedef struct _AudioConvertCtx AudioConvertCtx;
+#if 0
typedef struct _AudioConvertFmt AudioConvertFmt;
struct _AudioConvertFmt
gint unit_size;
};
+#endif
typedef void (*AudioConvertUnpack) (gpointer src, gpointer dst, gint scale,
gint count);
struct _AudioConvertCtx
{
- AudioConvertFmt in;
- AudioConvertFmt out;
+ GstAudioInfo in;
+ GstAudioInfo out;
AudioConvertUnpack unpack;
AudioConvertPack pack;
AudioConvertMix channel_mix;
AudioConvertQuantize quantize;
- DitherType dither;
- NoiseShapingType ns;
- /* random number generate for dither noise */
- GRand *dither_random;
+
+ GstAudioConvertDithering dither;
+ GstAudioConvertNoiseShaping ns;
/* last random number generated per channel for hifreq TPDF dither */
gpointer last_random;
/* contains the past quantization errors, error[out_channels][count] */
gdouble *error_buf;
};
-gboolean audio_convert_clean_fmt (AudioConvertFmt * fmt);
-
gboolean audio_convert_prepare_context (AudioConvertCtx * ctx,
- AudioConvertFmt * in, AudioConvertFmt * out, DitherType dither,
- NoiseShapingType ns);
+ GstAudioInfo * in, GstAudioInfo * out,
+ GstAudioConvertDithering dither, GstAudioConvertNoiseShaping ns);
gboolean audio_convert_get_sizes (AudioConvertCtx * ctx, gint samples,
gint * srcsize, gint * dstsize);