comparison src/audacious/plugin.h @ 3760:8fdaccee8312

flows
author William Pitcock <nenolod@atheme.org>
date Sun, 14 Oct 2007 21:48:19 -0500
parents 9e54690956a0
children a1039487bf3f
comparison
equal deleted inserted replaced
3759:9e54690956a0 3760:8fdaccee8312
87 typedef struct _DiscoveryPlugin DiscoveryPlugin; 87 typedef struct _DiscoveryPlugin DiscoveryPlugin;
88 typedef struct _LowlevelPlugin LowlevelPlugin; 88 typedef struct _LowlevelPlugin LowlevelPlugin;
89 89
90 typedef struct _InputPlayback InputPlayback; 90 typedef struct _InputPlayback InputPlayback;
91 91
92 typedef struct {
93 Tuple *tuple;
94 InputPlugin *ip;
95 } ProbeResult;
96
92 typedef GHashTable INIFile; 97 typedef GHashTable INIFile;
93 98
94 #include "audacious/playlist.h" 99 #include "audacious/playlist.h"
95 #include "audacious/input.h" 100 #include "audacious/input.h"
96 #include "audacious/mime.h" 101 #include "audacious/mime.h"
97 #include "audacious/custom_uri.h" 102 #include "audacious/custom_uri.h"
98 #include "audacious/hook.h" 103 #include "audacious/hook.h"
99 #include "audacious/xconvert.h" 104 #include "audacious/xconvert.h"
100 #include "audacious/ui_plugin_menu.h" 105 #include "audacious/ui_plugin_menu.h"
101 #include "audacious/formatter.h" 106 #include "audacious/formatter.h"
107 #include "audacious/flow.h"
102 108
103 #define PLUGIN_COMMON_FIELDS \ 109 #define PLUGIN_COMMON_FIELDS \
104 gpointer handle; \ 110 gpointer handle; \
105 gchar *filename; \ 111 gchar *filename; \
106 gchar *description; \ 112 gchar *description; \
557 ProbeResult *(*input_check_file)(const gchar * filename, gboolean show_warning); 563 ProbeResult *(*input_check_file)(const gchar * filename, gboolean show_warning);
558 564
559 /* InputPlayback */ 565 /* InputPlayback */
560 InputPlayback *(*playback_new)(void); 566 InputPlayback *(*playback_new)(void);
561 void (*playback_run)(InputPlayback *); 567 void (*playback_run)(InputPlayback *);
568
569 /* Flows */
570 gsize (*flow_execute)(Flow *flow, gint time, gpointer *data, gsize len, AFormat fmt,
571 gint srate, gint channels);
572 Flow *(*flow_new)(void);
573 void (*flow_link_element)(Flow *flow, FlowFunction func);
574 void (*flow_unlink_element)(Flow *flow, FlowFunction func);
575 void (*effect_flow)(FlowContext *context);
576 void (*iir_flow)(FlowContext *context);
577 void (*volumecontrol_flow)(FlowContext *context);
562 }; 578 };
563 579
564 /* Convenience macros for accessing the public API. */ 580 /* Convenience macros for accessing the public API. */
565 /* public name vtable mapping */ 581 /* public name vtable mapping */
566 #define aud_vfs_fopen _audvt->vfs_fopen 582 #define aud_vfs_fopen _audvt->vfs_fopen
875 891
876 #define aud_playback_new _audvt->playback_new 892 #define aud_playback_new _audvt->playback_new
877 #define aud_playback_run _audvt->playback_run 893 #define aud_playback_run _audvt->playback_run
878 #define aud_playback_free(x) g_slice_free(InputPlayback, (x)) 894 #define aud_playback_free(x) g_slice_free(InputPlayback, (x))
879 895
896 #define aud_flow_execute _audvt->flow_execute
897 #define aud_flow_new _audvt->flow_new
898 #define aud_flow_link_element _audvt->flow_link_element
899 #define aud_flow_unlink_element _audvt->flow_unlink_element
900 #define aud_effect_flow _audvt->effect_flow
901 #define aud_iir_flow _audvt->iir_flow
902 #define aud_volumecontrol_flow _audvt->volumecontrol_flow
903 #define aud_flow_destroy(flow) mowgli_object_unref(flow)
904
880 #include "audacious/auddrct.h" 905 #include "audacious/auddrct.h"
881 906
882 /* for multi-file plugins :( */ 907 /* for multi-file plugins :( */
883 extern struct _AudaciousFuncTableV1 *_audvt; 908 extern struct _AudaciousFuncTableV1 *_audvt;
884 909