diff src/audacious/af_compat.h @ 4300:060c9865ea17

forgotten files
author Eugene Zagidullin <e.asphyx@gmail.com>
date Sat, 23 Feb 2008 16:37:02 +0300
parents
children 2eee464379dc
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/audacious/af_compat.h	Sat Feb 23 16:37:02 2008 +0300
@@ -0,0 +1,113 @@
+/*
+ * MPlayer libaf compatibility stuff
+ */
+
+#ifndef AF_COMPAT_H
+#define AF_COMPAT_H
+
+#include <glib.h>
+#include "main.h"
+
+/* Number of channels */
+#ifndef AF_NCH
+#define AF_NCH 6
+#endif
+
+/* Format */
+#define AF_FORMAT_BE		(0<<0) // Big Endian
+#define AF_FORMAT_LE		(1<<0) // Little Endian
+#define AF_FORMAT_F		(1<<2) // Foating point
+#define AF_FORMAT_32BIT		(3<<3)
+#define AF_FORMAT_FLOAT_LE	(AF_FORMAT_F|AF_FORMAT_32BIT|AF_FORMAT_LE)
+#define AF_FORMAT_FLOAT_BE	(AF_FORMAT_F|AF_FORMAT_32BIT|AF_FORMAT_BE)
+
+#if G_BYTE_ORDER == G_BIG_ENDIAN // Native endian of cpu
+#define AF_FORMAT_FLOAT_NE AF_FORMAT_FLOAT_BE
+#else
+#define AF_FORMAT_FLOAT_NE AF_FORMAT_FLOAT_LE
+#endif
+
+#define AF_MSG_INFO	 0 ///< Important information
+
+#define af_msg(a,...) AUDDBG(__VA_ARGS__);
+
+/* Control */
+#define AF_CONTROL_SET			0x00000000
+#define AF_CONTROL_GET			0x00000001
+
+#define AF_CONTROL_MANDATORY		0x10000000
+#define AF_CONTROL_OPTIONAL		0x20000000
+#define AF_CONTROL_FILTER_SPECIFIC	0x40000000
+
+#define AF_CONTROL_REINIT  		0x00000100 | AF_CONTROL_MANDATORY
+#define AF_CONTROL_COMMAND_LINE		0x00000300 | AF_CONTROL_OPTIONAL
+#define AF_CONTROL_EQUALIZER_GAIN 	0x00001C00 | AF_CONTROL_FILTER_SPECIFIC
+
+/* Return values */
+#define AF_DETACH   2
+#define AF_OK       1
+#define AF_TRUE     1
+#define AF_FALSE    0
+#define AF_UNKNOWN -1
+#define AF_ERROR   -2
+#define AF_FATAL   -3
+
+/* Flags used for defining the behavior of an audio filter */
+#define AF_FLAGS_REENTRANT 	0x00000000
+#define AF_FLAGS_NOT_REENTRANT 	0x00000001
+
+/* Audio data chunk */
+typedef struct af_data_s
+{
+  void* audio;  /* data buffer */
+  int len;      /* buffer length */
+  int rate;	/* sample rate */
+  int nch;	/* number of channels */
+  int format;	/* format */
+  int bps; 	/* bytes per sample */
+} af_data_t;
+
+struct af_instance_s;
+/* Audio filter information not specific for current instance, but for
+   a specific filter */ 
+typedef struct af_info_s 
+{
+  const char *info;
+  const char *name;
+  const char *author;
+  const char *comment;
+  const int flags;
+  int (*open)(struct af_instance_s* vf);
+} af_info_t;
+
+/* Linked list of audio filters */
+typedef struct af_instance_s
+{
+  af_info_t* info;
+  int (*control)(struct af_instance_s* af, int cmd, void* arg);
+  void (*uninit)(struct af_instance_s* af);
+  af_data_t* (*play)(struct af_instance_s* af, af_data_t* data);
+  void* setup;	  // setup data for this specific instance and filter
+  af_data_t* data; // configuration for outgoing data stream
+  struct af_instance_s* next;
+  struct af_instance_s* prev;  
+  double delay; /* Delay caused by the filter, in units of bytes read without
+		 * corresponding output */
+  double mul; /* length multiplier: how much does this instance change
+		 the length of the buffer. */
+}af_instance_t;
+
+/*********************************************
+  Extended control used with arguments that operates on only one
+  channel at the time
+*/
+typedef struct af_control_ext_s{
+  void* arg;	// Argument
+  int	ch;	// Chanel number
+}af_control_ext_t;
+
+#ifndef clamp
+#define clamp(a,min,max) (((a)>(max))?(max):(((a)<(min))?(min):(a)))
+#endif
+
+#endif /* AF_COMPAT_H */