removal of //-style comments don't link plugins to core libs -- the versioning is done internally to the plugins with...

Original commit message from CVS:
* removal of //-style comments
* don't link plugins to core libs -- the versioning is done internally to the plugins with the plugin_info struct,
and symbol resolution is lazy, so we can always know if a plugin can be loaded by the plugin_info data. in theory.
This commit is contained in:
Andy Wingo 2002-03-19 04:10:05 +00:00
parent 29ea57179f
commit f6c63f0d8e
36 changed files with 690 additions and 690 deletions

View file

@ -10,7 +10,7 @@ BUILT_SOURCES = \
libgstidentity2_la_SOURCES = gst-identity2.gob $(GOB_FILES_ID) libgstidentity2_la_SOURCES = gst-identity2.gob $(GOB_FILES_ID)
libgstidentity2_la_CFLAGS = $(GST_CFLAGS) libgstidentity2_la_CFLAGS = $(GST_CFLAGS)
libgstidentity2_la_LIBADD = $(GST_LIBS) libgstidentity2_la_LIBADD =
%.c %.h %-private.h: %.gob %.c %.h %-private.h: %.gob
gob $< gob $<

View file

@ -10,7 +10,7 @@ endif
libgsta52dec_la_SOURCES = gsta52dec.c libgsta52dec_la_SOURCES = gsta52dec.c
libgsta52dec_la_CFLAGS = $(GST_CFLAGS) -O3 $(ARCHFLAGS) $(FOMIT_FRAME_POINTER) libgsta52dec_la_CFLAGS = $(GST_CFLAGS) -O3 $(ARCHFLAGS) $(FOMIT_FRAME_POINTER)
libgsta52dec_la_LIBADD = $(GST_LIBS) -la52 -lm libgsta52dec_la_LIBADD = -la52 -lm
libgsta52dec_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgsta52dec_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
noinst_HEADERS = gsta52dec.h noinst_HEADERS = gsta52dec.h

View file

@ -7,7 +7,7 @@ plugin_LTLIBRARIES = libgstdvdsrc.la
libgstdvdsrc_la_SOURCES = dvdsrc.c libgstdvdsrc_la_SOURCES = dvdsrc.c
libgstdvdsrc_la_CFLAGS = $(GST_CFLAGS) libgstdvdsrc_la_CFLAGS = $(GST_CFLAGS)
libgstdvdsrc_la_LIBADD = $(GST_LIBS) $(DVDREAD_LIBS) libgstdvdsrc_la_LIBADD = $(DVDREAD_LIBS)
libgstdvdsrc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstdvdsrc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
noinst_HEADERS = dvdsrc.h noinst_HEADERS = dvdsrc.h

View file

@ -49,7 +49,7 @@ int main(int argc,char *argv[]) {
gst_init(&argc,&argv); gst_init(&argc,&argv);
gnome_init("MPEG2 Video player","0.0.1",argc,argv); gnome_init("MPEG2 Video player","0.0.1",argc,argv);
// ***** construct the main pipeline ***** /* ***** construct the main pipeline ***** */
pipeline = GST_PIPELINE(gst_pipeline_new("pipeline")); pipeline = GST_PIPELINE(gst_pipeline_new("pipeline"));
g_return_val_if_fail(pipeline != NULL, -1); g_return_val_if_fail(pipeline != NULL, -1);
@ -61,7 +61,7 @@ int main(int argc,char *argv[]) {
gtk_object_set(GTK_OBJECT(src),"angle",atoi(argv[4]),NULL); gtk_object_set(GTK_OBJECT(src),"angle",atoi(argv[4]),NULL);
parse = gst_elementfactory_make("mpeg2parse","parse"); parse = gst_elementfactory_make("mpeg2parse","parse");
//parse = gst_elementfactory_make("mpeg1parse","parse"); /*parse = gst_elementfactory_make("mpeg1parse","parse"); */
g_return_val_if_fail(parse != NULL, -1); g_return_val_if_fail(parse != NULL, -1);
gst_bin_add(GST_BIN(pipeline),GST_ELEMENT(src)); gst_bin_add(GST_BIN(pipeline),GST_ELEMENT(src));
@ -70,7 +70,7 @@ int main(int argc,char *argv[]) {
gst_element_connect(src,"src",parse,"sink"); gst_element_connect(src,"src",parse,"sink");
// ***** pre-construct the video thread ***** /* ***** pre-construct the video thread ***** */
v_thread = GST_ELEMENT(gst_thread_new("v_thread")); v_thread = GST_ELEMENT(gst_thread_new("v_thread"));
g_return_val_if_fail(v_thread != NULL, -1); g_return_val_if_fail(v_thread != NULL, -1);
@ -96,7 +96,7 @@ int main(int argc,char *argv[]) {
gst_element_connect(color,"src",show,"sink"); gst_element_connect(color,"src",show,"sink");
// ***** pre-construct the audio thread ***** /* ***** pre-construct the audio thread ***** */
a_thread = GST_ELEMENT(gst_thread_new("a_thread")); a_thread = GST_ELEMENT(gst_thread_new("a_thread"));
g_return_val_if_fail(a_thread != NULL, -1); g_return_val_if_fail(a_thread != NULL, -1);
@ -117,7 +117,7 @@ int main(int argc,char *argv[]) {
gst_element_connect(a_decode,"src",osssink,"sink"); gst_element_connect(a_decode,"src",osssink,"sink");
// ***** construct the GUI ***** /* ***** construct the GUI ***** */
appwindow = gnome_app_new("DVD Player","DVD Player"); appwindow = gnome_app_new("DVD Player","DVD Player");
gtk_socket = gtk_socket_new (); gtk_socket = gtk_socket_new ();

View file

@ -114,15 +114,15 @@ static void dvdsrc_init (DVDSrc *dvdsrc);
static void dvdsrc_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); static void dvdsrc_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
static void dvdsrc_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); static void dvdsrc_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
//static GstBuffer * dvdsrc_get (GstPad *pad); /*static GstBuffer * dvdsrc_get (GstPad *pad); */
static void dvdsrc_loop (GstElement *element); static void dvdsrc_loop (GstElement *element);
//static GstBuffer * dvdsrc_get_region (GstPad *pad,gulong offset,gulong size); /*static GstBuffer * dvdsrc_get_region (GstPad *pad,gulong offset,gulong size); */
static GstElementStateReturn dvdsrc_change_state (GstElement *element); static GstElementStateReturn dvdsrc_change_state (GstElement *element);
static GstElementClass *parent_class = NULL; static GstElementClass *parent_class = NULL;
//static guint dvdsrc_signals[LAST_SIGNAL] = { 0 }; /*static guint dvdsrc_signals[LAST_SIGNAL] = { 0 }; */
GType GType
dvdsrc_get_type (void) dvdsrc_get_type (void)
@ -193,7 +193,7 @@ dvdsrc_init (DVDSrc *dvdsrc)
static void static void
dvdsrc_destory (DVDSrc *dvdsrc) dvdsrc_destory (DVDSrc *dvdsrc)
{ {
// FIXME /* FIXME */
g_print("FIXME\n"); g_print("FIXME\n");
g_free(dvdsrc->priv); g_free(dvdsrc->priv);
} }
@ -213,7 +213,7 @@ dvdsrc_set_property (GObject *object, guint prop_id, const GValue *value, GParam
switch (prop_id) { switch (prop_id) {
case ARG_LOCATION: case ARG_LOCATION:
/* the element must be stopped in order to do this */ /* the element must be stopped in order to do this */
//g_return_if_fail(!GST_FLAG_IS_SET(src,GST_STATE_RUNNING)); /*g_return_if_fail(!GST_FLAG_IS_SET(src,GST_STATE_RUNNING)); */
if (priv->location) if (priv->location)
g_free (priv->location); g_free (priv->location);
@ -462,7 +462,7 @@ dvdsrc_loop (GstElement *element)
int len; int len;
/* create the buffer */ /* create the buffer */
// FIXME: should eventually use a bufferpool for this /* FIXME: should eventually use a bufferpool for this */
buf = gst_buffer_new (); buf = gst_buffer_new ();
g_return_if_fail (buf); g_return_if_fail (buf);
@ -490,7 +490,7 @@ dvdsrc_loop (GstElement *element)
*/ */
navRead_DSI( &dsi_pack, &(data[ DSI_START_BYTE ]) ); navRead_DSI( &dsi_pack, &(data[ DSI_START_BYTE ]) );
assert( priv->cur_pack == dsi_pack.dsi_gi.nv_pck_lbn ); assert( priv->cur_pack == dsi_pack.dsi_gi.nv_pck_lbn );
//navPrint_DSI(&dsi_pack); /*navPrint_DSI(&dsi_pack); */
/** /**
@ -679,7 +679,7 @@ dvdsrc_get (GstPad *pad)
g_return_val_if_fail (GST_FLAG_IS_SET (dvdsrc, DVDSRC_OPEN),NULL); g_return_val_if_fail (GST_FLAG_IS_SET (dvdsrc, DVDSRC_OPEN),NULL);
/* create the buffer */ /* create the buffer */
// FIXME: should eventually use a bufferpool for this /* FIXME: should eventually use a bufferpool for this */
buf = gst_buffer_new (); buf = gst_buffer_new ();
g_return_val_if_fail (buf, NULL); g_return_val_if_fail (buf, NULL);

View file

@ -45,7 +45,7 @@ GstElementDetails dvdsrc_details;
#define GST_IS_DVDSRC_CLASS(obj) \ #define GST_IS_DVDSRC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DVDSRC)) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DVDSRC))
// NOTE: per-element flags start with 16 for now /* NOTE: per-element flags start with 16 for now */
typedef enum { typedef enum {
DVDSRC_OPEN = GST_ELEMENT_FLAG_LAST, DVDSRC_OPEN = GST_ELEMENT_FLAG_LAST,

View file

@ -4,7 +4,7 @@ plugin_LTLIBRARIES = libgstlame.la
libgstlame_la_SOURCES = gstlame.c libgstlame_la_SOURCES = gstlame.c
libgstlame_la_CFLAGS = $(GST_CFLAGS) libgstlame_la_CFLAGS = $(GST_CFLAGS)
libgstlame_la_LIBADD = $(GST_LIBS) $(LAME_LIBS) libgstlame_la_LIBADD = $(LAME_LIBS)
libgstlame_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstlame_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
noinst_HEADERS = gstlame.h noinst_HEADERS = gstlame.h

View file

@ -177,7 +177,7 @@ enum {
ARG_ATH_ONLY, ARG_ATH_ONLY,
ARG_ATH_SHORT, ARG_ATH_SHORT,
ARG_NO_ATH, ARG_NO_ATH,
/* ARG_ATH_TYPE, // note: CVS has this, 3.87 doesn't */ /* ARG_ATH_TYPE, /* note: CVS has this, 3.87 doesn't */ */
ARG_ATH_LOWER, ARG_ATH_LOWER,
ARG_CWLIMIT, ARG_CWLIMIT,
ARG_ALLOW_DIFF_SHORT, ARG_ALLOW_DIFF_SHORT,
@ -235,7 +235,7 @@ gst_lame_class_init (GstLameClass *klass)
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_BITRATE, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_BITRATE,
g_param_spec_int("bitrate","bitrate","bitrate", g_param_spec_int("bitrate","bitrate","bitrate",
G_MININT,G_MAXINT,128,G_PARAM_READWRITE)); // CHECKME G_MININT,G_MAXINT,128,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_FREQUENCY, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_FREQUENCY,
g_param_spec_int("frequency","frequency","frequency", g_param_spec_int("frequency","frequency","frequency",
0,G_MAXINT, 44100 ,G_PARAM_READABLE)); 0,G_MAXINT, 44100 ,G_PARAM_READABLE));
@ -244,93 +244,93 @@ gst_lame_class_init (GstLameClass *klass)
0, 2, 2 ,G_PARAM_READABLE)); 0, 2, 2 ,G_PARAM_READABLE));
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_COMPRESSION_RATIO, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_COMPRESSION_RATIO,
g_param_spec_float("compression_ratio","compression_ratio","compression_ratio", g_param_spec_float("compression_ratio","compression_ratio","compression_ratio",
0.0,200.0,11.0,G_PARAM_READWRITE)); // CHECKME 0.0,200.0,11.0,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_QUALITY, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_QUALITY,
g_param_spec_enum("quality","quality","quality", g_param_spec_enum("quality","quality","quality",
GST_TYPE_LAME_QUALITY,5,G_PARAM_READWRITE)); // CHECKME! GST_TYPE_LAME_QUALITY,5,G_PARAM_READWRITE)); /* CHECKME! */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_MODE, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_MODE,
g_param_spec_enum("mode","mode","mode", g_param_spec_enum("mode","mode","mode",
GST_TYPE_LAME_MODE,0,G_PARAM_READWRITE)); // CHECKME! GST_TYPE_LAME_MODE,0,G_PARAM_READWRITE)); /* CHECKME! */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_FORCE_MS, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_FORCE_MS,
g_param_spec_boolean("force_ms","force_ms","force_ms", g_param_spec_boolean("force_ms","force_ms","force_ms",
TRUE,G_PARAM_READWRITE)); // CHECKME TRUE,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_FREE_FORMAT, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_FREE_FORMAT,
g_param_spec_boolean("free_format","free_format","free_format", g_param_spec_boolean("free_format","free_format","free_format",
TRUE,G_PARAM_READWRITE)); // CHECKME TRUE,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_COPYRIGHT, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_COPYRIGHT,
g_param_spec_boolean("copyright","copyright","copyright", g_param_spec_boolean("copyright","copyright","copyright",
TRUE,G_PARAM_READWRITE)); // CHECKME TRUE,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_ORIGINAL, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_ORIGINAL,
g_param_spec_boolean("original","original","original", g_param_spec_boolean("original","original","original",
TRUE,G_PARAM_READWRITE)); // CHECKME TRUE,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_ERROR_PROTECTION, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_ERROR_PROTECTION,
g_param_spec_boolean("error_protection","error_protection","error_protection", g_param_spec_boolean("error_protection","error_protection","error_protection",
TRUE,G_PARAM_READWRITE)); // CHECKME TRUE,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_PADDING_TYPE, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_PADDING_TYPE,
g_param_spec_enum("padding_type","padding_type","padding_type", g_param_spec_enum("padding_type","padding_type","padding_type",
GST_TYPE_LAME_PADDING,0,G_PARAM_READWRITE)); // CHECKME! GST_TYPE_LAME_PADDING,0,G_PARAM_READWRITE)); /* CHECKME! */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_EXTENSION, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_EXTENSION,
g_param_spec_boolean("extension","extension","extension", g_param_spec_boolean("extension","extension","extension",
TRUE,G_PARAM_READWRITE)); // CHECKME TRUE,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_STRICT_ISO, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_STRICT_ISO,
g_param_spec_boolean("strict_iso","strict_iso","strict_iso", g_param_spec_boolean("strict_iso","strict_iso","strict_iso",
TRUE,G_PARAM_READWRITE)); // CHECKME TRUE,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_DISABLE_RESERVOIR, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_DISABLE_RESERVOIR,
g_param_spec_boolean("disable_reservoir","disable_reservoir","disable_reservoir", g_param_spec_boolean("disable_reservoir","disable_reservoir","disable_reservoir",
TRUE,G_PARAM_READWRITE)); // CHECKME TRUE,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_VBR, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_VBR,
g_param_spec_boolean("vbr","vbr","vbr", g_param_spec_boolean("vbr","vbr","vbr",
TRUE,G_PARAM_READWRITE)); // CHECKME TRUE,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_VBR_MEAN_BITRATE, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_VBR_MEAN_BITRATE,
g_param_spec_int("vbr_mean_bitrate","vbr_mean_bitrate","vbr_mean_bitrate", g_param_spec_int("vbr_mean_bitrate","vbr_mean_bitrate","vbr_mean_bitrate",
G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); // CHECKME G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_VBR_MIN_BITRATE, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_VBR_MIN_BITRATE,
g_param_spec_int("vbr_min_bitrate","vbr_min_bitrate","vbr_min_bitrate", g_param_spec_int("vbr_min_bitrate","vbr_min_bitrate","vbr_min_bitrate",
G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); // CHECKME G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_VBR_MAX_BITRATE, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_VBR_MAX_BITRATE,
g_param_spec_int("vbr_max_bitrate","vbr_max_bitrate","vbr_max_bitrate", g_param_spec_int("vbr_max_bitrate","vbr_max_bitrate","vbr_max_bitrate",
G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); // CHECKME G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_VBR_HARD_MIN, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_VBR_HARD_MIN,
g_param_spec_int("vbr_hard_min","vbr_hard_min","vbr_hard_min", g_param_spec_int("vbr_hard_min","vbr_hard_min","vbr_hard_min",
G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); // CHECKME G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_LOWPASS_FREQ, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_LOWPASS_FREQ,
g_param_spec_int("lowpass_freq","lowpass_freq","lowpass_freq", g_param_spec_int("lowpass_freq","lowpass_freq","lowpass_freq",
G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); // CHECKME G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_LOWPASS_WIDTH, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_LOWPASS_WIDTH,
g_param_spec_int("lowpass_width","lowpass_width","lowpass_width", g_param_spec_int("lowpass_width","lowpass_width","lowpass_width",
G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); // CHECKME G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_HIGHPASS_FREQ, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_HIGHPASS_FREQ,
g_param_spec_int("highpass_freq","highpass_freq","highpass_freq", g_param_spec_int("highpass_freq","highpass_freq","highpass_freq",
G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); // CHECKME G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_HIGHPASS_WIDTH, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_HIGHPASS_WIDTH,
g_param_spec_int("highpass_width","highpass_width","highpass_width", g_param_spec_int("highpass_width","highpass_width","highpass_width",
G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); // CHECKME G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_ATH_ONLY, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_ATH_ONLY,
g_param_spec_boolean("ath_only","ath_only","ath_only", g_param_spec_boolean("ath_only","ath_only","ath_only",
TRUE,G_PARAM_READWRITE)); // CHECKME TRUE,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_ATH_SHORT, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_ATH_SHORT,
g_param_spec_boolean("ath_short","ath_short","ath_short", g_param_spec_boolean("ath_short","ath_short","ath_short",
TRUE,G_PARAM_READWRITE)); // CHECKME TRUE,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_NO_ATH, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_NO_ATH,
g_param_spec_boolean("no_ath","no_ath","no_ath", g_param_spec_boolean("no_ath","no_ath","no_ath",
TRUE,G_PARAM_READWRITE)); // CHECKME TRUE,G_PARAM_READWRITE)); /* CHECKME */
/* gtk_object_add_arg_type ("GstLame::ath_type", G_TYPE_INT, /* gtk_object_add_arg_type ("GstLame::ath_type", G_TYPE_INT,
GTK_ARG_READWRITE, ARG_ATH_TYPE); */ GTK_ARG_READWRITE, ARG_ATH_TYPE); */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_ATH_LOWER, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_ATH_LOWER,
g_param_spec_int("ath_lower","ath_lower","ath_lower", g_param_spec_int("ath_lower","ath_lower","ath_lower",
G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); // CHECKME G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_CWLIMIT, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_CWLIMIT,
g_param_spec_int("cwlimit","cwlimit","cwlimit", g_param_spec_int("cwlimit","cwlimit","cwlimit",
G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); // CHECKME G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_ALLOW_DIFF_SHORT, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_ALLOW_DIFF_SHORT,
g_param_spec_boolean("allow_diff_short","allow_diff_short","allow_diff_short", g_param_spec_boolean("allow_diff_short","allow_diff_short","allow_diff_short",
TRUE,G_PARAM_READWRITE)); // CHECKME TRUE,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_NO_SHORT_BLOCKS, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_NO_SHORT_BLOCKS,
g_param_spec_boolean("no_short_blocks","no_short_blocks","no_short_blocks", g_param_spec_boolean("no_short_blocks","no_short_blocks","no_short_blocks",
TRUE,G_PARAM_READWRITE)); // CHECKME TRUE,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_EMPHASIS, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_EMPHASIS,
g_param_spec_boolean("emphasis","emphasis","emphasis", g_param_spec_boolean("emphasis","emphasis","emphasis",
TRUE,G_PARAM_READWRITE)); // CHECKME TRUE,G_PARAM_READWRITE)); /* CHECKME */
gobject_class->set_property = gst_lame_set_property; gobject_class->set_property = gst_lame_set_property;
gobject_class->get_property = gst_lame_get_property; gobject_class->get_property = gst_lame_get_property;

View file

@ -4,6 +4,6 @@ plugin_LTLIBRARIES = libgstmad.la
libgstmad_la_SOURCES = gstmad.c libgstmad_la_SOURCES = gstmad.c
libgstmad_la_CFLAGS = $(GST_CFLAGS) libgstmad_la_CFLAGS = $(GST_CFLAGS)
libgstmad_la_LIBADD = $(GST_LIBS) $(MAD_LIBS) libgstmad_la_LIBADD = $(MAD_LIBS)
libgstmad_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstmad_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)

View file

@ -10,13 +10,13 @@ endif
libgstmpeg2dec_la_SOURCES = gstmpeg2dec.c libgstmpeg2dec_la_SOURCES = gstmpeg2dec.c
libgstmpeg2dec_la_CFLAGS = $(GST_CFLAGS) $(MPEG2DEC_CFLAGS) $(ARCHFLAGS) $(FOMIT_FRAME_POINTER) -ffast-math libgstmpeg2dec_la_CFLAGS = $(GST_CFLAGS) $(MPEG2DEC_CFLAGS) $(ARCHFLAGS) $(FOMIT_FRAME_POINTER) -ffast-math
libgstmpeg2dec_la_LIBADD = $(GST_LIBS) $(MPEG2DEC_LIBS) libgstmpeg2dec_la_LIBADD = $(MPEG2DEC_LIBS)
libgstmpeg2dec_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstmpeg2dec_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
# #
# Use the following if you use mpeg2dec from CVS # Use the following if you use mpeg2dec from CVS
# #
#libgstmpeg2dec_la_LIBADD = $(GST_LIBS) -lmpeg2 -lcpuaccel #libgstmpeg2dec_la_LIBADD = -lmpeg2 -lcpuaccel
noinst_HEADERS = gstmpeg2dec.h noinst_HEADERS = gstmpeg2dec.h

View file

@ -552,7 +552,7 @@ gst_mpeg2dec_change_state (GstElement *element)
/* if we are not closed by an EOS event do so now, this cen send a few frames but /* if we are not closed by an EOS event do so now, this cen send a few frames but
* we are prepared to not really send them (see above) */ * we are prepared to not really send them (see above) */
if (!mpeg2dec->closed) { if (!mpeg2dec->closed) {
//mpeg2_close (mpeg2dec->decoder); /*mpeg2_close (mpeg2dec->decoder); */
mpeg2dec->closed = TRUE; mpeg2dec->closed = TRUE;
} }
gst_mpeg2dec_vo_destroy (mpeg2dec); gst_mpeg2dec_vo_destroy (mpeg2dec);

View file

@ -4,7 +4,7 @@ plugin_LTLIBRARIES = libgstsid.la
libgstsid_la_SOURCES = gstsiddec.cc libgstsid_la_SOURCES = gstsiddec.cc
libgstsid_la_CXXFLAGS = $(GST_CFLAGS) $(SIDPLAY_CFLAGS) libgstsid_la_CXXFLAGS = $(GST_CFLAGS) $(SIDPLAY_CFLAGS)
libgstsid_la_LIBADD = $(GST_LIBS) $(SIDPLAY_LIBS) libgstsid_la_LIBADD = $(SIDPLAY_LIBS)
libgstsid_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstsid_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
noinst_HEADERS = gstsiddec.h noinst_HEADERS = gstsiddec.h

View file

@ -7,6 +7,6 @@ libgstaudio_la_SOURCES = audio.c
libgstaudioincludedir = $(includedir)/gst/audio libgstaudioincludedir = $(includedir)/gst/audio
libgstaudioinclude_HEADERS = audio.h libgstaudioinclude_HEADERS = audio.h
libgstaudio_la_LIBADD = $(GST_LIBS) libgstaudio_la_LIBADD =
libgstaudio_la_CFLAGS = $(GST_CFLAGS) -finline-functions -ffast-math libgstaudio_la_CFLAGS = $(GST_CFLAGS) -finline-functions -ffast-math
libgstaudio_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstaudio_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)

View file

@ -131,7 +131,7 @@ gst_audio_highest_sample_value (GstPad* pad)
GstCaps *caps = NULL; GstCaps *caps = NULL;
caps = GST_PAD_CAPS (pad); caps = GST_PAD_CAPS (pad);
// FIXME : Please change this to a better warning method ! /* FIXME : Please change this to a better warning method ! */
if (caps == NULL) if (caps == NULL)
printf ("WARNING: gstaudio: could not get caps of pad !\n"); printf ("WARNING: gstaudio: could not get caps of pad !\n");
width = gst_caps_get_int (caps, "width"); width = gst_caps_get_int (caps, "width");

View file

@ -27,6 +27,6 @@ ieeetest_LDFLAGS = $(GST_LIBS)
noinst_HEADERS = dct.h noinst_HEADERS = dct.h
libgstidct_la_LIBADD = $(GST_LIBS) libgstidct_la_LIBADD =
libgstidct_la_CFLAGS = $(GST_CFLAGS) -finline-functions -ffast-math libgstidct_la_CFLAGS = $(GST_CFLAGS) -finline-functions -ffast-math
libgstidct_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstidct_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)

View file

@ -117,7 +117,7 @@ main(int argc, char **argv)
gst_trace_read_tsc(&tscstart); gst_trace_read_tsc(&tscstart);
gst_idct_convert(idct, testout); gst_idct_convert(idct, testout);
gst_trace_read_tsc(&tscstop); gst_trace_read_tsc(&tscstop);
//printf("time %llu, %llu %lld\n", tscstart, tscstop, tscstop-tscstart); /*printf("time %llu, %llu %lld\n", tscstart, tscstop, tscstop-tscstart); */
if (tscstop - tscstart < tscmin) tscmin = tscstop-tscstart; if (tscstop - tscstart < tscmin) tscmin = tscstop-tscstart;
if (tscstop - tscstart > tscmax) tscmax = tscstop-tscstart; if (tscstop - tscstart > tscmax) tscmax = tscstop-tscstart;

File diff suppressed because it is too large Load diff

View file

@ -13,7 +13,7 @@ endif
endif endif
libgstresample_la_SOURCES = dtos.c functable.c resample.c resample.h libgstresample_la_SOURCES = dtos.c functable.c resample.c resample.h
libgstresample_la_LIBADD = $(GST_LIBS) libgstresample_la_LIBADD =
libgstresample_la_CFLAGS = $(GST_CFLAGS) -ffast-math $(ARCHCFLAGS) libgstresample_la_CFLAGS = $(GST_CFLAGS) -ffast-math $(ARCHCFLAGS)
libgstresample_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstresample_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)

View file

@ -23,13 +23,13 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
//#include <ml.h> /*#include <ml.h> */
#include <resample.h> #include <resample.h>
#define short_to_double_table #define short_to_double_table
//#define short_to_double_altivec /*#define short_to_double_altivec */
#define short_to_double_unroll #define short_to_double_unroll
#ifdef short_to_double_table #ifdef short_to_double_table

View file

@ -124,12 +124,12 @@ double functable_eval(functable_t *t,double x)
w0 = (x - 2 * x2 + x3) * t->offset; w0 = (x - 2 * x2 + x3) * t->offset;
w1 = (-x2 + x3) * t->offset; w1 = (-x2 + x3) * t->offset;
//printf("i=%d x=%g f0=%g f1=%g w0=%g w1=%g\n",i,x,f0,f1,w0,w1); /*printf("i=%d x=%g f0=%g f1=%g w0=%g w1=%g\n",i,x,f0,f1,w0,w1); */
w = t->fx[i] * f0 + t->fx[i + 1] * f1 + w = t->fx[i] * f0 + t->fx[i + 1] * f1 +
t->fdx[i] * w0 + t->fdx[i + 1] * w1; t->fdx[i] * w0 + t->fdx[i + 1] * w1;
//w = t->fx[i] * (1-x) + t->fx[i+1] * x; /*w = t->fx[i] * (1-x) + t->fx[i+1] * x; */
return w; return w;
} }
@ -266,37 +266,37 @@ void functable_fir2_altivec(functable_t *t, float *r0, float *r1,
sum0 = 0; sum0 = 0;
sum1 = 0; sum1 = 0;
for(j=0;j<len;j++){ for(j=0;j<len;j++){
// t->fx, t->fdx needs to be multiplexed by n /* t->fx, t->fdx needs to be multiplexed by n */
// we need 5 consecutive floats, which fit into 2 vecs /* we need 5 consecutive floats, which fit into 2 vecs */
// load v0, t->fx[i] /* load v0, t->fx[i] */
// load v1, t->fx[i+n] /* load v1, t->fx[i+n] */
// v2 = v0 (not correct) /* v2 = v0 (not correct) */
// v3 = (v0>>32) || (v1<<3*32) (not correct) /* v3 = (v0>>32) || (v1<<3*32) (not correct) */
// /* */
// load v4, t->dfx[i] /* load v4, t->dfx[i] */
// load v5, t->dfx[i+n] /* load v5, t->dfx[i+n] */
// v6 = v4 (not correct) /* v6 = v4 (not correct) */
// v7 = (v4>>32) || (v5<<3*32) (not correct) /* v7 = (v4>>32) || (v5<<3*32) (not correct) */
// /* */
// v8 = splat(f0) /* v8 = splat(f0) */
// v9 = splat(f1) /* v9 = splat(f1) */
// v10 = splat(w0) /* v10 = splat(w0) */
// v11 = splat(w1) /* v11 = splat(w1) */
// /* */
// v12 = v2 * v8 /* v12 = v2 * v8 */
// v12 += v3 * v9 /* v12 += v3 * v9 */
// v12 += v6 * v10 /* v12 += v6 * v10 */
// v12 += v7 * v11 /* v12 += v7 * v11 */
w = t->fx[i] * f0 + t->fx[i + 1] * f1 + w = t->fx[i] * f0 + t->fx[i + 1] * f1 +
t->fdx[i] * w0 + t->fdx[i + 1] * w1; t->fdx[i] * w0 + t->fdx[i + 1] * w1;
// v13 = data[j*2] /* v13 = data[j*2] */
// v14 = data[j*2+4] /* v14 = data[j*2+4] */
// v15 = deinterlace_high(v13,v14) /* v15 = deinterlace_high(v13,v14) */
// v16 = deinterlace_low(v13,v14) /* v16 = deinterlace_low(v13,v14) */
// (sum0) v17 += multsum(v13,v15) /* (sum0) v17 += multsum(v13,v15) */
// (sum1) v18 += multsum(v14,v16) /* (sum1) v18 += multsum(v14,v16) */
sum0 += data[j*2] * w; sum0 += data[j*2] * w;
sum1 += data[j*2+1] * w; sum1 += data[j*2+1] * w;

View file

@ -243,7 +243,7 @@ void resample_bilinear(resample_t * r)
b = r->i_start; b = r->i_start;
for (i = 0; i < r->i_samples; i++) { for (i = 0; i < r->i_samples; i++) {
b += r->i_inc; b += r->i_inc;
//printf("in %d\n",i_ptr[0]); /*printf("in %d\n",i_ptr[0]); */
if(b>=2){ if(b>=2){
printf("not expecting b>=2\n"); printf("not expecting b>=2\n");
} }
@ -252,7 +252,7 @@ void resample_bilinear(resample_t * r)
acc1 += (1.0 - (b-r->i_inc)) * i_ptr[1]; acc1 += (1.0 - (b-r->i_inc)) * i_ptr[1];
o_ptr[0] = rint(acc0); o_ptr[0] = rint(acc0);
//printf("out %d\n",o_ptr[0]); /*printf("out %d\n",o_ptr[0]); */
o_ptr[1] = rint(acc1); o_ptr[1] = rint(acc1);
o_ptr += 2; o_ptr += 2;
o_count++; o_count++;
@ -319,8 +319,8 @@ void resample_sinc_slow(resample_t * r)
c1 = 0; c1 = 0;
for (j = 0; j < r->filter_length; j++) { for (j = 0; j < r->filter_length; j++) {
weight = (x==0)?1:(sinx/x); weight = (x==0)?1:(sinx/x);
//printf("j %d sin %g cos %g\n",j,sinx,cosx); /*printf("j %d sin %g cos %g\n",j,sinx,cosx); */
//printf("j %d sin %g x %g sinc %g\n",j,sinx,x,weight); /*printf("j %d sin %g x %g sinc %g\n",j,sinx,x,weight); */
c0 += weight * GETBUF((start + j), 0); c0 += weight * GETBUF((start + j), 0);
c1 += weight * GETBUF((start + j), 1); c1 += weight * GETBUF((start + j), 1);
t = cosx * cosd - sinx * sind; t = cosx * cosd - sinx * sind;
@ -368,11 +368,11 @@ void resample_sinc(resample_t * r)
for (i = 0; i < r->o_samples; i++) { for (i = 0; i < r->o_samples; i++) {
a = r->o_start + i * r->o_inc; a = r->o_start + i * r->o_inc;
start = floor(a - r->halftaps); start = floor(a - r->halftaps);
//printf("%d: a=%g start=%d end=%d\n",i,a,start,start+r->filter_length-1); /*printf("%d: a=%g start=%d end=%d\n",i,a,start,start+r->filter_length-1); */
center = a; center = a;
//x = M_PI * (start - center) * r->o_inc; /*x = M_PI * (start - center) * r->o_inc; */
//d = M_PI * r->o_inc; /*d = M_PI * r->o_inc; */
//x = (start - center) * r->o_inc; /*x = (start - center) * r->o_inc; */
x0 = (start - center) * r->o_inc; x0 = (start - center) * r->o_inc;
d = r->o_inc; d = r->o_inc;
c0 = 0; c0 = 0;
@ -439,20 +439,20 @@ static void resample_sinc_ft(resample_t * r)
double *ptr; double *ptr;
signed short *o_ptr; signed short *o_ptr;
int i; int i;
//int j; /*int j; */
double c0, c1; double c0, c1;
//double a; /*double a; */
double start_f, start_x; double start_f, start_x;
int start; int start;
double center; double center;
//double weight; /*double weight; */
double x, d; double x, d;
double scale; double scale;
int n = 4; int n = 4;
scale = r->i_inc; // cutoff at 22050 scale = r->i_inc; /* cutoff at 22050 */
//scale = 1.0; // cutoff at 24000 /*scale = 1.0; // cutoff at 24000 */
//scale = r->i_inc * 0.5; // cutoff at 11025 /*scale = r->i_inc * 0.5; // cutoff at 11025 */
if(!ft){ if(!ft){
ft = malloc(sizeof(*ft)); ft = malloc(sizeof(*ft));
@ -472,7 +472,7 @@ static void resample_sinc_ft(resample_t * r)
functable_init(ft); functable_init(ft);
//printf("len=%d offset=%g start=%g\n",ft->len,ft->offset,ft->start); /*printf("len=%d offset=%g start=%g\n",ft->len,ft->offset,ft->start); */
} }
ptr = r->buffer; ptr = r->buffer;
@ -484,18 +484,18 @@ static void resample_sinc_ft(resample_t * r)
start_x -= start_f; start_x -= start_f;
start = start_f; start = start_f;
for (i = 0; i < r->o_samples; i++) { for (i = 0; i < r->o_samples; i++) {
//start_f = floor(center - r->halftaps); /*start_f = floor(center - r->halftaps); */
//printf("%d: a=%g start=%d end=%d\n",i,a,start,start+r->filter_length-1); /*printf("%d: a=%g start=%d end=%d\n",i,a,start,start+r->filter_length-1); */
x = start_f - center; x = start_f - center;
d = 1; d = 1;
c0 = 0; c0 = 0;
c1 = 0; c1 = 0;
//#define slow /*#define slow */
#ifdef slow #ifdef slow
for (j = 0; j < r->filter_length; j++) { for (j = 0; j < r->filter_length; j++) {
weight = functable_eval(ft,x)*scale; weight = functable_eval(ft,x)*scale;
//weight = sinc(M_PI * scale * x)*scale*r->i_inc; /*weight = sinc(M_PI * scale * x)*scale*r->i_inc; */
//weight *= window_func(x / r->halftaps); /*weight *= window_func(x / r->halftaps); */
c0 += weight * ptr[(start + j + r->filter_length)*2 + 0]; c0 += weight * ptr[(start + j + r->filter_length)*2 + 0];
c1 += weight * ptr[(start + j + r->filter_length)*2 + 1]; c1 += weight * ptr[(start + j + r->filter_length)*2 + 1];
x += d; x += d;

View file

@ -9,11 +9,11 @@
#define AMP 16000 #define AMP 16000
#define I_RATE 48000 #define I_RATE 48000
#define O_RATE 44100 #define O_RATE 44100
//#define O_RATE 24000 /*#define O_RATE 24000 */
//#define test_func(x) 1 /*#define test_func(x) 1 */
//#define test_func(x) sin(2*M_PI*(x)*10) /*#define test_func(x) sin(2*M_PI*(x)*10) */
//#define test_func(x) sin(2*M_PI*(x)*(x)*1000) /*#define test_func(x) sin(2*M_PI*(x)*(x)*1000) */
#define test_func(x) sin(2*M_PI*(x)*(x)*12000) #define test_func(x) sin(2*M_PI*(x)*(x)*12000)
short i_buf[I_RATE*2*2]; short i_buf[I_RATE*2*2];
@ -53,7 +53,7 @@ struct timeval start_time;
void start_timer(void) void start_timer(void)
{ {
gettimeofday(&start_time,NULL); gettimeofday(&start_time,NULL);
//printf("start %ld.%06ld\n",start_time.tv_sec,start_time.tv_usec); /*printf("start %ld.%06ld\n",start_time.tv_sec,start_time.tv_usec); */
} }
void end_timer(void) void end_timer(void)
@ -62,7 +62,7 @@ void end_timer(void)
double diff; double diff;
gettimeofday(&end_time,NULL); gettimeofday(&end_time,NULL);
//printf("end %ld.%06ld\n",end_time.tv_sec,end_time.tv_usec); /*printf("end %ld.%06ld\n",end_time.tv_sec,end_time.tv_usec); */
diff = (end_time.tv_sec - start_time.tv_sec) + diff = (end_time.tv_sec - start_time.tv_sec) +
1e-6*(end_time.tv_usec - start_time.tv_usec); 1e-6*(end_time.tv_usec - start_time.tv_usec);
@ -81,7 +81,7 @@ void test_res1(void)
for(i=0;i<I_RATE;i++){ for(i=0;i<I_RATE;i++){
i_buf[i*2+0] = rint(AMP * test_func((double)i/I_RATE)); i_buf[i*2+0] = rint(AMP * test_func((double)i/I_RATE));
//i_buf[i*2+1] = rint(AMP * test_func((double)i/I_RATE)); /*i_buf[i*2+1] = rint(AMP * test_func((double)i/I_RATE)); */
i_buf[i*2+1] = (i<1000)?AMP:0; i_buf[i*2+1] = (i<1000)?AMP:0;
} }
@ -90,10 +90,10 @@ void test_res1(void)
r->i_rate = I_RATE; r->i_rate = I_RATE;
r->o_rate = O_RATE; r->o_rate = O_RATE;
//r->method = RESAMPLE_SINC_SLOW; /*r->method = RESAMPLE_SINC_SLOW; */
r->method = RESAMPLE_SINC; r->method = RESAMPLE_SINC;
r->channels = 2; r->channels = 2;
//r->verbose = 1; /*r->verbose = 1; */
r->filter_length = 64; r->filter_length = 64;
r->get_buffer = get_buffer; r->get_buffer = get_buffer;
@ -115,7 +115,7 @@ void test_res1(void)
for(i=0;i<O_RATE;i++){ for(i=0;i<O_RATE;i++){
f = AMP*test_func((double)i/O_RATE); f = AMP*test_func((double)i/O_RATE);
//f = rint(AMP*test_func((double)i/O_RATE)); /*f = rint(AMP*test_func((double)i/O_RATE)); */
fprintf(out,"%d %d %d %g %g\n",i, fprintf(out,"%d %d %d %g %g\n",i,
o_buf[2*i+0],o_buf[2*i+1], o_buf[2*i+0],o_buf[2*i+1],
f,o_buf[2*i+0]-f); f,o_buf[2*i+0]-f);
@ -127,7 +127,7 @@ void test_res1(void)
n22k=0; n22k=0;
for(i=0;i<O_RATE;i++){ for(i=0;i<O_RATE;i++){
f = AMP*test_func((double)i/O_RATE); f = AMP*test_func((double)i/O_RATE);
//f = rint(AMP*test_func((double)i/O_RATE)); /*f = rint(AMP*test_func((double)i/O_RATE)); */
x = o_buf[2*i+0]-f; x = o_buf[2*i+0]-f;
if(((0.5*i)/O_RATE*I_RATE)<10000){ if(((0.5*i)/O_RATE*I_RATE)<10000){
sum10k += x*x; sum10k += x*x;
@ -219,8 +219,8 @@ double sinc_poly(double x)
- x2 * INV3FAC - x2 * INV3FAC
+ x2 * x2 * INV5FAC + x2 * x2 * INV5FAC
- x2 * x2 * x2 * INV7FAC; - x2 * x2 * x2 * INV7FAC;
//+ x2 * x2 * x2 * x2 * INV9FAC /*+ x2 * x2 * x2 * x2 * INV9FAC */
//- x2 * x2 * x2 * x2 * x2 * INV11FAC; /*- x2 * x2 * x2 * x2 * x2 * INV11FAC; */
} }
void test_res4(void) void test_res4(void)
@ -297,10 +297,10 @@ void test_res7(void)
r->i_rate = I_RATE; r->i_rate = I_RATE;
r->o_rate = O_RATE; r->o_rate = O_RATE;
//r->method = RESAMPLE_SINC_SLOW; /*r->method = RESAMPLE_SINC_SLOW; */
r->method = RESAMPLE_SINC; r->method = RESAMPLE_SINC;
r->channels = 1; r->channels = 1;
//r->verbose = 1; /*r->verbose = 1; */
r->filter_length = 64; r->filter_length = 64;
r->get_buffer = get_buffer; r->get_buffer = get_buffer;
@ -322,7 +322,7 @@ void test_res7(void)
for(i=0;i<O_RATE;i++){ for(i=0;i<O_RATE;i++){
f = AMP*test_func((double)i/O_RATE); f = AMP*test_func((double)i/O_RATE);
//f = rint(AMP*test_func((double)i/O_RATE)); /*f = rint(AMP*test_func((double)i/O_RATE)); */
fprintf(out,"%d %d %d %g %g\n",i, fprintf(out,"%d %d %d %g %g\n",i,
o_buf[i],0, o_buf[i],0,
f,o_buf[i]-f); f,o_buf[i]-f);
@ -334,7 +334,7 @@ void test_res7(void)
n22k=0; n22k=0;
for(i=0;i<O_RATE;i++){ for(i=0;i<O_RATE;i++){
f = AMP*test_func((double)i/O_RATE); f = AMP*test_func((double)i/O_RATE);
//f = rint(AMP*test_func((double)i/O_RATE)); /*f = rint(AMP*test_func((double)i/O_RATE)); */
x = o_buf[i]-f; x = o_buf[i]-f;
if(((0.5*i)/O_RATE*I_RATE)<10000){ if(((0.5*i)/O_RATE*I_RATE)<10000){
sum10k += x*x; sum10k += x*x;

View file

@ -7,6 +7,6 @@ libgstriff_la_SOURCES = riffparse.c riffencode.c riffutil.c
libgstriffincludedir = $(includedir)/gst/riff libgstriffincludedir = $(includedir)/gst/riff
libgstriffinclude_HEADERS = riff.h libgstriffinclude_HEADERS = riff.h
libgstriff_la_LIBADD = $(GST_LIBS) libgstriff_la_LIBADD =
libgstriff_la_CFLAGS = $(GST_CFLAGS) -funroll-all-loops -finline-functions -ffast-math libgstriff_la_CFLAGS = $(GST_CFLAGS) -funroll-all-loops -finline-functions -ffast-math
libgstriff_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstriff_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)

View file

@ -20,7 +20,7 @@
#include <riff.h> #include <riff.h>
//#define debug(format,args...) g_print(format,##args) /*#define debug(format,args...) g_print(format,##args) */
#define debug(format,args...) #define debug(format,args...)
@ -69,33 +69,33 @@ gint gst_riff_next_buffer(GstRiff *riff,GstBuffer *buf,gulong off) {
GST_BUFFER_DATA(buf) = riff->dataleft; GST_BUFFER_DATA(buf) = riff->dataleft;
GST_BUFFER_SIZE(buf) = newsize; GST_BUFFER_SIZE(buf) = newsize;
off -= riff->dataleft_size; off -= riff->dataleft_size;
//last -= riff->dataleft_size; /*last -= riff->dataleft_size; */
riff->dataleft = NULL; riff->dataleft = NULL;
} }
if (off == 0) { if (off == 0) {
guint32 *words = (guin32 *)GST_BUFFER_DATA(buf); guint32 *words = (guin32 *)GST_BUFFER_DATA(buf);
// don't even try to parse the head if it's not there FIXME /* don't even try to parse the head if it's not there FIXME */
if (last < 12) { if (last < 12) {
riff->state = GST_RIFF_ENOTRIFF; riff->state = GST_RIFF_ENOTRIFF;
return riff->state; return riff->state;
} }
//g_print("testing is 0x%08lx '%s'\n",words[0],gst_riff_id_to_fourcc(words[0])); /*g_print("testing is 0x%08lx '%s'\n",words[0],gst_riff_id_to_fourcc(words[0])); */
/* verify this is a valid RIFF file, first of all */ /* verify this is a valid RIFF file, first of all */
if (GUINT32_FROM_LE (words[0]) != GST_RIFF_TAG_RIFF) { if (GUINT32_FROM_LE (words[0]) != GST_RIFF_TAG_RIFF) {
riff->state = GST_RIFF_ENOTRIFF; riff->state = GST_RIFF_ENOTRIFF;
return riff->state; return riff->state;
} }
riff->form = GUINT32_FROM_LE (words[2]); riff->form = GUINT32_FROM_LE (words[2]);
//g_print("form is 0x%08lx '%s'\n",words[2],gst_riff_id_to_fourcc(words[2])); /*g_print("form is 0x%08lx '%s'\n",words[2],gst_riff_id_to_fourcc(words[2])); */
riff->nextlikely = 12; /* skip 'RIFF', length, and form */ riff->nextlikely = 12; /* skip 'RIFF', length, and form */
// all OK here /* all OK here */
riff->incomplete_chunk = NULL; riff->incomplete_chunk = NULL;
} }
// if we have an incomplete chunk from the previous buffer /* if we have an incomplete chunk from the previous buffer */
if (riff->incomplete_chunk) { if (riff->incomplete_chunk) {
guint leftover; guint leftover;
debug("have incomplete chunk %08x filled\n", riff->incomplete_chunk_size); debug("have incomplete chunk %08x filled\n", riff->incomplete_chunk_size);
@ -135,14 +135,14 @@ gint gst_riff_next_buffer(GstRiff *riff,GstBuffer *buf,gulong off) {
while ((riff->nextlikely+12) <= last) { while ((riff->nextlikely+12) <= last) {
guin32 *words = (guin32 *)((guchar *)GST_BUFFER_DATA(buf) + riff->nextlikely - off ); guin32 *words = (guin32 *)((guchar *)GST_BUFFER_DATA(buf) + riff->nextlikely - off );
// loop over all of the chunks to check which one is finished /* loop over all of the chunks to check which one is finished */
while (riff->chunks) { while (riff->chunks) {
chunk = g_list_nth_data(riff->chunks, 0); chunk = g_list_nth_data(riff->chunks, 0);
debug("next 0x%08x offset 0x%08lx size 0x%08x\n",riff->nextlikely, chunk->offset, chunk->size); debug("next 0x%08x offset 0x%08lx size 0x%08x\n",riff->nextlikely, chunk->offset, chunk->size);
if (riff->nextlikely >= chunk->offset+chunk->size) { if (riff->nextlikely >= chunk->offset+chunk->size) {
//g_print("found END LIST\n"); /*g_print("found END LIST\n"); */
// we have the end of the chunk on the stack, remove it /* we have the end of the chunk on the stack, remove it */
riff->chunks = g_list_remove(riff->chunks, chunk); riff->chunks = g_list_remove(riff->chunks, chunk);
} }
else break; else break;
@ -157,17 +157,17 @@ gint gst_riff_next_buffer(GstRiff *riff,GstBuffer *buf,gulong off) {
chunk->id = GUINT32_FROM_LE (words[0])); chunk->id = GUINT32_FROM_LE (words[0]));
chunk->size = GUINT32_FROM_LE (words[1]); chunk->size = GUINT32_FROM_LE (words[1]);
chunk->data = (gchar *)(words+2); chunk->data = (gchar *)(words+2);
// we need word alignment /* we need word alignment */
//if (chunk->size & 0x01) chunk->size++; /*if (chunk->size & 0x01) chunk->size++; */
chunk->form = GUINT32_FROM_LE (words[2]); /* fill in the form, might not be valid */ chunk->form = GUINT32_FROM_LE (words[2]); /* fill in the form, might not be valid */
if (chunk->id == GST_RIFF_TAG_LIST) { if (chunk->id == GST_RIFF_TAG_LIST) {
//g_print("found LIST %s\n", gst_riff_id_to_fourcc(chunk->form)); /*g_print("found LIST %s\n", gst_riff_id_to_fourcc(chunk->form)); */
riff->nextlikely += 12; riff->nextlikely += 12;
// we push the list chunk on our 'stack' /* we push the list chunk on our 'stack' */
riff->chunks = g_list_prepend(riff->chunks,chunk); riff->chunks = g_list_prepend(riff->chunks,chunk);
// send the buffer to the listener if we have received a function /* send the buffer to the listener if we have received a function */
if (riff->new_tag_found) { if (riff->new_tag_found) {
riff->new_tag_found(chunk, riff->callback_data); riff->new_tag_found(chunk, riff->callback_data);
} }
@ -178,25 +178,25 @@ gint gst_riff_next_buffer(GstRiff *riff,GstBuffer *buf,gulong off) {
gst_riff_id_to_fourcc(GUINT32_FROM_LE (words[0])), GUINT32_FROM_LE (words[1])); gst_riff_id_to_fourcc(GUINT32_FROM_LE (words[0])), GUINT32_FROM_LE (words[1]));
riff->nextlikely += 8 + chunk->size; /* doesn't include hdr */ riff->nextlikely += 8 + chunk->size; /* doesn't include hdr */
// if this buffer is incomplete /* if this buffer is incomplete */
if (riff->nextlikely > last) { if (riff->nextlikely > last) {
guint left = size - (riff->nextlikely - chunk->size - off); guint left = size - (riff->nextlikely - chunk->size - off);
//g_print("make incomplete buffer %08x\n", left); /*g_print("make incomplete buffer %08x\n", left); */
chunk->data = g_malloc(chunk->size); chunk->data = g_malloc(chunk->size);
memcpy(chunk->data, (gchar *)(words+2), left); memcpy(chunk->data, (gchar *)(words+2), left);
riff->incomplete_chunk = chunk; riff->incomplete_chunk = chunk;
riff->incomplete_chunk_size = left; riff->incomplete_chunk_size = left;
} }
else { else {
// send the buffer to the listener if we have received a function /* send the buffer to the listener if we have received a function */
if (riff->new_tag_found) { if (riff->new_tag_found) {
riff->new_tag_found(chunk, riff->callback_data); riff->new_tag_found(chunk, riff->callback_data);
} }
g_free(chunk); g_free(chunk);
} }
//riff->chunks = g_list_prepend(riff->chunks,chunk); /*riff->chunks = g_list_prepend(riff->chunks,chunk); */
} }
} }

View file

@ -19,7 +19,7 @@
#include <string.h> #include <string.h>
//#define DEBUG_ENABLED /*#define DEBUG_ENABLED */
#include "riff.h" #include "riff.h"
#define GST_RIFF_ENCODER_BUF_SIZE 1024 #define GST_RIFF_ENCODER_BUF_SIZE 1024

View file

@ -19,7 +19,7 @@
#include <string.h> #include <string.h>
//#define DEBUG_ENABLED /*#define DEBUG_ENABLED */
#include <riff.h> #include <riff.h>
GstRiff* GstRiff*
@ -71,33 +71,33 @@ gst_riff_parser_next_buffer (GstRiff *riff, GstBuffer *buf, gulong off)
GST_BUFFER_DATA(buf) = riff->dataleft; GST_BUFFER_DATA(buf) = riff->dataleft;
size = GST_BUFFER_SIZE(buf) = newsize; size = GST_BUFFER_SIZE(buf) = newsize;
off -= riff->dataleft_size; off -= riff->dataleft_size;
//last -= riff->dataleft_size; /*last -= riff->dataleft_size; */
riff->dataleft = NULL; riff->dataleft = NULL;
} }
if (off == 0) { if (off == 0) {
guint32 *words = (guint32 *)GST_BUFFER_DATA(buf); guint32 *words = (guint32 *)GST_BUFFER_DATA(buf);
// don't even try to parse the head if it's not there FIXME /* don't even try to parse the head if it's not there FIXME */
if (last < 12) { if (last < 12) {
riff->state = GST_RIFF_ENOTRIFF; riff->state = GST_RIFF_ENOTRIFF;
return riff->state; return riff->state;
} }
//g_print("testing is 0x%08lx '%s'\n",words[0],gst_riff_id_to_fourcc(words[0])); /*g_print("testing is 0x%08lx '%s'\n",words[0],gst_riff_id_to_fourcc(words[0])); */
/* verify this is a valid RIFF file, first of all */ /* verify this is a valid RIFF file, first of all */
if (GUINT32_FROM_LE (words[0]) != GST_RIFF_TAG_RIFF) { if (GUINT32_FROM_LE (words[0]) != GST_RIFF_TAG_RIFF) {
riff->state = GST_RIFF_ENOTRIFF; riff->state = GST_RIFF_ENOTRIFF;
return riff->state; return riff->state;
} }
riff->form = GUINT32_FROM_LE (words[2]); riff->form = GUINT32_FROM_LE (words[2]);
//g_print("form is 0x%08lx '%s'\n",words[2],gst_riff_id_to_fourcc(words[2])); /*g_print("form is 0x%08lx '%s'\n",words[2],gst_riff_id_to_fourcc(words[2])); */
riff->nextlikely = 12; /* skip 'RIFF', length, and form */ riff->nextlikely = 12; /* skip 'RIFF', length, and form */
// all OK here /* all OK here */
riff->incomplete_chunk = NULL; riff->incomplete_chunk = NULL;
} }
// if we have an incomplete chunk from the previous buffer /* if we have an incomplete chunk from the previous buffer */
if (riff->incomplete_chunk) { if (riff->incomplete_chunk) {
guint leftover; guint leftover;
GST_DEBUG (0,"gst_riff_parser: have incomplete chunk %08x filled\n", riff->incomplete_chunk_size); GST_DEBUG (0,"gst_riff_parser: have incomplete chunk %08x filled\n", riff->incomplete_chunk_size);
@ -130,7 +130,7 @@ gst_riff_parser_next_buffer (GstRiff *riff, GstBuffer *buf, gulong off)
while ((riff->nextlikely+12) <= last) { while ((riff->nextlikely+12) <= last) {
guint32 *words = (guint32 *)((guchar *)GST_BUFFER_DATA(buf) + riff->nextlikely - off ); guint32 *words = (guint32 *)((guchar *)GST_BUFFER_DATA(buf) + riff->nextlikely - off );
// loop over all of the chunks to check which one is finished /* loop over all of the chunks to check which one is finished */
while (riff->chunks) { while (riff->chunks) {
chunk = g_list_nth_data(riff->chunks, 0); chunk = g_list_nth_data(riff->chunks, 0);
@ -138,7 +138,7 @@ gst_riff_parser_next_buffer (GstRiff *riff, GstBuffer *buf, gulong off)
chunk->offset, chunk->size); chunk->offset, chunk->size);
if (riff->nextlikely >= chunk->offset+chunk->size) { if (riff->nextlikely >= chunk->offset+chunk->size) {
GST_DEBUG (0,"gst_riff_parser: found END LIST\n"); GST_DEBUG (0,"gst_riff_parser: found END LIST\n");
// we have the end of the chunk on the stack, remove it /* we have the end of the chunk on the stack, remove it */
riff->chunks = g_list_remove(riff->chunks, chunk); riff->chunks = g_list_remove(riff->chunks, chunk);
} }
else break; else break;
@ -153,17 +153,17 @@ gst_riff_parser_next_buffer (GstRiff *riff, GstBuffer *buf, gulong off)
chunk->id = GUINT32_FROM_LE (words[0]); chunk->id = GUINT32_FROM_LE (words[0]);
chunk->size = GUINT32_FROM_LE (words[1]); chunk->size = GUINT32_FROM_LE (words[1]);
chunk->data = (gchar *)(words+2); chunk->data = (gchar *)(words+2);
// we need word alignment /* we need word alignment */
//if (chunk->size & 0x01) chunk->size++; /*if (chunk->size & 0x01) chunk->size++; */
chunk->form = GUINT32_FROM_LE (words[2]); /* fill in the form, might not be valid */ chunk->form = GUINT32_FROM_LE (words[2]); /* fill in the form, might not be valid */
if (chunk->id == GST_RIFF_TAG_LIST) { if (chunk->id == GST_RIFF_TAG_LIST) {
GST_DEBUG (0,"found LIST %s\n", gst_riff_id_to_fourcc(chunk->form)); GST_DEBUG (0,"found LIST %s\n", gst_riff_id_to_fourcc(chunk->form));
riff->nextlikely += 12; riff->nextlikely += 12;
// we push the list chunk on our 'stack' /* we push the list chunk on our 'stack' */
riff->chunks = g_list_prepend(riff->chunks,chunk); riff->chunks = g_list_prepend(riff->chunks,chunk);
// send the buffer to the listener if we have received a function /* send the buffer to the listener if we have received a function */
if (riff->new_tag_found) { if (riff->new_tag_found) {
riff->new_tag_found(chunk, riff->callback_data); riff->new_tag_found(chunk, riff->callback_data);
} }
@ -175,7 +175,7 @@ gst_riff_parser_next_buffer (GstRiff *riff, GstBuffer *buf, gulong off)
gst_riff_id_to_fourcc(GUINT32_FROM_LE (words[0])), GUINT32_FROM_LE (words[1])); gst_riff_id_to_fourcc(GUINT32_FROM_LE (words[0])), GUINT32_FROM_LE (words[1]));
riff->nextlikely += 8 + chunk->size; /* doesn't include hdr */ riff->nextlikely += 8 + chunk->size; /* doesn't include hdr */
// if this buffer is incomplete /* if this buffer is incomplete */
if (riff->nextlikely > last) { if (riff->nextlikely > last) {
guint left = size - (riff->nextlikely - chunk->size - off); guint left = size - (riff->nextlikely - chunk->size - off);
@ -186,7 +186,7 @@ gst_riff_parser_next_buffer (GstRiff *riff, GstBuffer *buf, gulong off)
riff->incomplete_chunk_size = left; riff->incomplete_chunk_size = left;
} }
else { else {
// send the buffer to the listener if we have received a function /* send the buffer to the listener if we have received a function */
if (riff->new_tag_found) { if (riff->new_tag_found) {
riff->new_tag_found(chunk, riff->callback_data); riff->new_tag_found(chunk, riff->callback_data);
} }
@ -194,7 +194,7 @@ gst_riff_parser_next_buffer (GstRiff *riff, GstBuffer *buf, gulong off)
} }
if (riff->nextlikely & 0x01) riff->nextlikely++; if (riff->nextlikely & 0x01) riff->nextlikely++;
//riff->chunks = g_list_prepend(riff->chunks,chunk); /*riff->chunks = g_list_prepend(riff->chunks,chunk); */
} }
} }
if ((riff->nextlikely+12) > last && !riff->incomplete_chunk) { if ((riff->nextlikely+12) > last && !riff->incomplete_chunk) {

View file

@ -20,7 +20,7 @@
#include <riff.h> #include <riff.h>
//#define debug(format,args...) g_print(format,##args) /*#define debug(format,args...) g_print(format,##args) */
#define debug(format,args...) #define debug(format,args...)

View file

@ -7,7 +7,7 @@ libgstac3parse_la_SOURCES = gstac3parse.c
noinst_HEADERS = gstac3parse.h noinst_HEADERS = gstac3parse.h
libgstac3parse_la_CFLAGS = -O3 $(FOMIT_FRAME_POINTER) -funroll-all-loops -finline-functions -ffast-math $(GST_CFLAGS) libgstac3parse_la_CFLAGS = -O3 $(FOMIT_FRAME_POINTER) -funroll-all-loops -finline-functions -ffast-math $(GST_CFLAGS)
libgstac3parse_la_LIBADD = $(GST_LIBS) libgstac3parse_la_LIBADD =
libgstac3parse_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstac3parse_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
EXTRA_DIST = README EXTRA_DIST = README

View file

@ -6,12 +6,12 @@ plugin_LTLIBRARIES = libgstmpegaudioparse.la libgstmp3types.la
libgstmpegaudioparse_la_SOURCES = gstmpegaudioparse.c libgstmpegaudioparse_la_SOURCES = gstmpegaudioparse.c
# FIXME is this useful? # FIXME is this useful?
libgstmpegaudioparse_la_CFLAGS = -O3 $(FOMIT_FRAME_POINTER) -ffast-math -finline-functions $(GST_CFLAGS) libgstmpegaudioparse_la_CFLAGS = -O3 $(FOMIT_FRAME_POINTER) -ffast-math -finline-functions $(GST_CFLAGS)
libgstmpegaudioparse_la_LIBADD = $(GST_LIBS) libgstmpegaudioparse_la_LIBADD =
libgstmpegaudioparse_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstmpegaudioparse_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstmp3types_la_SOURCES = gstmp3types.c libgstmp3types_la_SOURCES = gstmp3types.c
libgstmp3types_la_CFLAGS = -O3 $(FOMIT_FRAME_POINTER) -ffast-math -finline-functions $(GST_CFLAGS) libgstmp3types_la_CFLAGS = -O3 $(FOMIT_FRAME_POINTER) -ffast-math -finline-functions $(GST_CFLAGS)
libgstmp3types_la_LIBADD = $(GST_LIBS) libgstmp3types_la_LIBADD =
libgstmp3types_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstmp3types_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
noinst_HEADERS = gstmpegaudioparse.h noinst_HEADERS = gstmpegaudioparse.h

View file

@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
//#define DEBUG_ENABLED /*#define DEBUG_ENABLED */
#include <gst/gst.h> #include <gst/gst.h>
#include <string.h> /* memcmp */ #include <string.h> /* memcmp */

View file

@ -17,7 +17,7 @@
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
//#define GST_DEBUG_ENABLED /*#define GST_DEBUG_ENABLED */
#include <gstmpegaudioparse.h> #include <gstmpegaudioparse.h>
@ -94,7 +94,7 @@ static void gst_mp3parse_set_property (GObject *object, guint prop_id, const GV
static void gst_mp3parse_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); static void gst_mp3parse_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
static GstElementClass *parent_class = NULL; static GstElementClass *parent_class = NULL;
//static guint gst_mp3parse_signals[LAST_SIGNAL] = { 0 }; /*static guint gst_mp3parse_signals[LAST_SIGNAL] = { 0 }; */
GType GType
gst_mp3parse_get_type(void) { gst_mp3parse_get_type(void) {
@ -127,10 +127,10 @@ gst_mp3parse_class_init (GstMPEGAudioParseClass *klass)
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_SKIP, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_SKIP,
g_param_spec_int("skip","skip","skip", g_param_spec_int("skip","skip","skip",
G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); // CHECKME G_MININT,G_MAXINT,0,G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_BIT_RATE, g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_BIT_RATE,
g_param_spec_int("bit_rate","bit_rate","bit_rate", g_param_spec_int("bit_rate","bit_rate","bit_rate",
G_MININT,G_MAXINT,0,G_PARAM_READABLE)); // CHECKME G_MININT,G_MAXINT,0,G_PARAM_READABLE)); /* CHECKME */
parent_class = g_type_class_ref(GST_TYPE_ELEMENT); parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
@ -144,15 +144,15 @@ gst_mp3parse_init (GstMPEGAudioParse *mp3parse)
mp3parse->sinkpad = gst_pad_new_from_template(sink_temp, "sink"); mp3parse->sinkpad = gst_pad_new_from_template(sink_temp, "sink");
gst_element_add_pad(GST_ELEMENT(mp3parse),mp3parse->sinkpad); gst_element_add_pad(GST_ELEMENT(mp3parse),mp3parse->sinkpad);
#if 1 // set this to one to use the old chaining code #if 1 /* set this to one to use the old chaining code */
gst_pad_set_chain_function(mp3parse->sinkpad,gst_mp3parse_chain); gst_pad_set_chain_function(mp3parse->sinkpad,gst_mp3parse_chain);
#else // else you get the new loop-based code, which isn't complete yet #else /* else you get the new loop-based code, which isn't complete yet */
gst_element_set_loop_function (GST_ELEMENT(mp3parse),gst_mp3parse_loop); gst_element_set_loop_function (GST_ELEMENT(mp3parse),gst_mp3parse_loop);
#endif #endif
mp3parse->srcpad = gst_pad_new_from_template(src_temp, "src"); mp3parse->srcpad = gst_pad_new_from_template(src_temp, "src");
gst_element_add_pad(GST_ELEMENT(mp3parse),mp3parse->srcpad); gst_element_add_pad(GST_ELEMENT(mp3parse),mp3parse->srcpad);
//gst_pad_set_type_id(mp3parse->srcpad, mp3frametype); /*gst_pad_set_type_id(mp3parse->srcpad, mp3frametype); */
mp3parse->partialbuf = NULL; mp3parse->partialbuf = NULL;
mp3parse->skip = 0; mp3parse->skip = 0;
@ -190,31 +190,31 @@ gst_mp3parse_loop (GstElement *element)
gint bpf; gint bpf;
while (1) { while (1) {
// get a new buffer /* get a new buffer */
inbuf = gst_pad_pull (parse->sinkpad); inbuf = gst_pad_pull (parse->sinkpad);
size = GST_BUFFER_SIZE (inbuf); size = GST_BUFFER_SIZE (inbuf);
data = GST_BUFFER_DATA (inbuf); data = GST_BUFFER_DATA (inbuf);
offset = 0; offset = 0;
fprintf(stderr, "have buffer of %d bytes\n",size); fprintf(stderr, "have buffer of %d bytes\n",size);
// loop through it and find all the frames /* loop through it and find all the frames */
while (offset < (size - 4)) { while (offset < (size - 4)) {
start = gst_mp3parse_next_header (data,size,offset); start = gst_mp3parse_next_header (data,size,offset);
fprintf(stderr, "skipped %d bytes searching for the next header\n",start-offset); fprintf(stderr, "skipped %d bytes searching for the next header\n",start-offset);
header = GULONG_FROM_BE(*((guint32 *)(data+start))); header = GULONG_FROM_BE(*((guint32 *)(data+start)));
fprintf(stderr, "header is 0x%08x\n",header); fprintf(stderr, "header is 0x%08x\n",header);
// figure out how big the frame is supposed to be /* figure out how big the frame is supposed to be */
bpf = bpf_from_header (parse, header); bpf = bpf_from_header (parse, header);
// see if there are enough bytes in this buffer for the whole frame /* see if there are enough bytes in this buffer for the whole frame */
if ((start + bpf) <= size) { if ((start + bpf) <= size) {
outbuf = gst_buffer_create_sub (inbuf,start,bpf); outbuf = gst_buffer_create_sub (inbuf,start,bpf);
fprintf(stderr, "sending buffer of %d bytes\n",bpf); fprintf(stderr, "sending buffer of %d bytes\n",bpf);
gst_pad_push (parse->srcpad, outbuf); gst_pad_push (parse->srcpad, outbuf);
offset = start + bpf; offset = start + bpf;
// if not, we have to deal with it somehow /* if not, we have to deal with it somehow */
} else { } else {
fprintf(stderr,"don't have enough data for this frame\n"); fprintf(stderr,"don't have enough data for this frame\n");
@ -238,7 +238,7 @@ gst_mp3parse_chain (GstPad *pad, GstBuffer *buf)
g_return_if_fail(pad != NULL); g_return_if_fail(pad != NULL);
g_return_if_fail(GST_IS_PAD(pad)); g_return_if_fail(GST_IS_PAD(pad));
g_return_if_fail(buf != NULL); g_return_if_fail(buf != NULL);
// g_return_if_fail(GST_IS_BUFFER(buf)); /* g_return_if_fail(GST_IS_BUFFER(buf)); */
mp3parse = GST_MP3PARSE (gst_pad_get_parent (pad)); mp3parse = GST_MP3PARSE (gst_pad_get_parent (pad));
@ -255,11 +255,11 @@ gst_mp3parse_chain (GstPad *pad, GstBuffer *buf)
mp3parse->in_flush = TRUE; mp3parse->in_flush = TRUE;
*/ */
// if we have something left from the previous frame /* if we have something left from the previous frame */
if (mp3parse->partialbuf) { if (mp3parse->partialbuf) {
mp3parse->partialbuf = gst_buffer_append(mp3parse->partialbuf, buf); mp3parse->partialbuf = gst_buffer_append(mp3parse->partialbuf, buf);
// and the one we received.. /* and the one we received.. */
gst_buffer_unref(buf); gst_buffer_unref(buf);
} }
else { else {
@ -269,22 +269,22 @@ gst_mp3parse_chain (GstPad *pad, GstBuffer *buf)
size = GST_BUFFER_SIZE(mp3parse->partialbuf); size = GST_BUFFER_SIZE(mp3parse->partialbuf);
data = GST_BUFFER_DATA(mp3parse->partialbuf); data = GST_BUFFER_DATA(mp3parse->partialbuf);
// while we still have bytes left -4 for the header /* while we still have bytes left -4 for the header */
while (offset < size-4) { while (offset < size-4) {
int skipped = 0; int skipped = 0;
GST_DEBUG (0,"mp3parse: offset %ld, size %ld \n",offset, size); GST_DEBUG (0,"mp3parse: offset %ld, size %ld \n",offset, size);
// search for a possible start byte /* search for a possible start byte */
for (;((data[offset] != 0xff) && (offset < size));offset++) skipped++; for (;((data[offset] != 0xff) && (offset < size));offset++) skipped++;
if (skipped && !mp3parse->in_flush) { if (skipped && !mp3parse->in_flush) {
GST_DEBUG (0,"mp3parse: **** now at %ld skipped %d bytes\n",offset,skipped); GST_DEBUG (0,"mp3parse: **** now at %ld skipped %d bytes\n",offset,skipped);
} }
// construct the header word /* construct the header word */
header = GULONG_FROM_BE(*((gulong *)(data+offset))); header = GULONG_FROM_BE(*((gulong *)(data+offset)));
// if it's a valid header, go ahead and send off the frame /* if it's a valid header, go ahead and send off the frame */
if (head_check(header)) { if (head_check(header)) {
// calculate the bpf of the frame /* calculate the bpf of the frame */
bpf = bpf_from_header(mp3parse, header); bpf = bpf_from_header(mp3parse, header);
/******************************************************************************** /********************************************************************************
@ -302,22 +302,22 @@ gst_mp3parse_chain (GstPad *pad, GstBuffer *buf)
if ( mp3parse->in_flush ) { if ( mp3parse->in_flush ) {
unsigned long header2; unsigned long header2;
if ((size-offset)<(bpf+4)) { if (mp3parse->in_flush) break; } // wait until we have the the entire current frame as well as the next frame header if ((size-offset)<(bpf+4)) { if (mp3parse->in_flush) break; } /* wait until we have the the entire current frame as well as the next frame header */
header2 = GULONG_FROM_BE(*((gulong *)(data+offset+bpf))); header2 = GULONG_FROM_BE(*((gulong *)(data+offset+bpf)));
GST_DEBUG(0,"mp3parse: header=%08lX, header2=%08lX, bpf=%d\n", header, header2, bpf ); GST_DEBUG(0,"mp3parse: header=%08lX, header2=%08lX, bpf=%d\n", header, header2, bpf );
#define HDRMASK ~( (0xF<<12)/*bitrate*/ | (1<<9)/*padding*/ | (3<<4)/*mode extension*/ ) // mask the bits which are allowed to differ between frames #define HDRMASK ~( (0xF<<12)/*bitrate*/ | (1<<9)/*padding*/ | (3<<4)/*mode extension*/ ) /* mask the bits which are allowed to differ between frames */
if ( (header2&HDRMASK) != (header&HDRMASK) ) { // require 2 matching headers in a row if ( (header2&HDRMASK) != (header&HDRMASK) ) { /* require 2 matching headers in a row */
GST_DEBUG(0,"mp3parse: next header doesn't match (header=%08lX, header2=%08lX, bpf=%d)\n", header, header2, bpf ); GST_DEBUG(0,"mp3parse: next header doesn't match (header=%08lX, header2=%08lX, bpf=%d)\n", header, header2, bpf );
offset++; // This frame is invalid. Start looking for a valid frame at the next position in the stream offset++; /* This frame is invalid. Start looking for a valid frame at the next position in the stream */
continue; continue;
} }
} }
// if we don't have the whole frame... /* if we don't have the whole frame... */
if ((size - offset) < bpf) { if ((size - offset) < bpf) {
GST_DEBUG (0,"mp3parse: partial buffer needed %ld < %d \n",(size-offset), bpf); GST_DEBUG (0,"mp3parse: partial buffer needed %ld < %d \n",(size-offset), bpf);
break; break;
@ -346,8 +346,8 @@ gst_mp3parse_chain (GstPad *pad, GstBuffer *buf)
if (!mp3parse->in_flush) GST_DEBUG (0,"mp3parse: *** wrong header, skipping byte (FIXME?)\n"); if (!mp3parse->in_flush) GST_DEBUG (0,"mp3parse: *** wrong header, skipping byte (FIXME?)\n");
} }
} }
// if we have processed this block and there are still /* if we have processed this block and there are still */
// bytes left not in a partial block, copy them over. /* bytes left not in a partial block, copy them over. */
if (size-offset > 0) { if (size-offset > 0) {
glong remainder = (size - offset); glong remainder = (size - offset);
GST_DEBUG (0,"mp3parse: partial buffer needed %ld for trailing bytes\n",remainder); GST_DEBUG (0,"mp3parse: partial buffer needed %ld for trailing bytes\n",remainder);
@ -381,7 +381,7 @@ bpf_from_header (GstMPEGAudioParse *parse, unsigned long header)
int layer_index,layer,lsf,samplerate_index,padding; int layer_index,layer,lsf,samplerate_index,padding;
long bpf; long bpf;
//mpegver = (header >> 19) & 0x3; // don't need this for bpf /*mpegver = (header >> 19) & 0x3; // don't need this for bpf */
layer_index = (header >> 17) & 0x3; layer_index = (header >> 17) & 0x3;
layer = 4 - layer_index; layer = 4 - layer_index;
lsf = (header & (1 << 20)) ? ((header & (1 << 19)) ? 0 : 1) : 1; lsf = (header & (1 << 20)) ? ((header & (1 << 19)) ? 0 : 1) : 1;
@ -399,8 +399,8 @@ bpf_from_header (GstMPEGAudioParse *parse, unsigned long header)
bpf += padding; bpf += padding;
} }
//g_print("%08x: layer %d lsf %d bitrate %d samplerate_index %d padding %d - bpf %d\n", /*g_print("%08x: layer %d lsf %d bitrate %d samplerate_index %d padding %d - bpf %d\n", */
//header,layer,lsf,bitrate,samplerate_index,padding,bpf); /*header,layer,lsf,bitrate,samplerate_index,padding,bpf); */
return bpf; return bpf;
} }

View file

@ -50,7 +50,7 @@ struct _GstMPEGAudioParse {
GstPad *sinkpad,*srcpad; GstPad *sinkpad,*srcpad;
GstBuffer *partialbuf; // previous buffer (if carryover) GstBuffer *partialbuf; /* previous buffer (if carryover) */
guint skip; /* number of frames to skip */ guint skip; /* number of frames to skip */
guint bit_rate; guint bit_rate;
gboolean in_flush; gboolean in_flush;

View file

@ -4,7 +4,7 @@ plugin_LTLIBRARIES = libgstmpegstream.la
libgstmpegstream_la_SOURCES = gstmpegstream.c gstmpegparse.c gstmpegdemux.c gstmpegpacketize.c gstrfc2250enc.c libgstmpegstream_la_SOURCES = gstmpegstream.c gstmpegparse.c gstmpegdemux.c gstmpegpacketize.c gstrfc2250enc.c
libgstmpegstream_la_CFLAGS = $(GST_CFLAGS) -O3 $(FOMIT_FRAME_POINTER) -ffast-math libgstmpegstream_la_CFLAGS = $(GST_CFLAGS) -O3 $(FOMIT_FRAME_POINTER) -ffast-math
libgstmpegstream_la_LIBADD = $(GST_LIBS) libgstmpegstream_la_LIBADD =
libgstmpegstream_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstmpegstream_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
noinst_HEADERS = gstmpegparse.h gstmpegdemux.h gstmpegpacketize.h gstrfc2250enc.h noinst_HEADERS = gstmpegparse.h gstmpegdemux.h gstmpegpacketize.h gstrfc2250enc.h

View file

@ -7,6 +7,6 @@ libgstsynaesthesia_la_SOURCES = gstsynaesthesia.c synaescope.c
noinst_HEADERS = synaescope.h noinst_HEADERS = synaescope.h
libgstsynaesthesia_la_CFLAGS = -O2 -ffast-math $(GST_CFLAGS) libgstsynaesthesia_la_CFLAGS = -O2 -ffast-math $(GST_CFLAGS)
libgstsynaesthesia_la_LIBADD = $(GST_LIBS) libgstsynaesthesia_la_LIBADD =
libgstsynaesthesia_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstsynaesthesia_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)

View file

@ -38,11 +38,11 @@ struct _GstSynaesthesia {
GstPad *sinkpad,*srcpad; GstPad *sinkpad,*srcpad;
GstBufferPool *peerpool; GstBufferPool *peerpool;
// the timestamp of the next frame /* the timestamp of the next frame */
guint64 next_time; guint64 next_time;
gint16 datain[2][512]; gint16 datain[2][512];
// video state /* video state */
gint fps; gint fps;
gint width; gint width;
gint height; gint height;
@ -198,11 +198,11 @@ gst_synaesthesia_init (GstSynaesthesia *synaesthesia)
synaesthesia->next_time = 0; synaesthesia->next_time = 0;
synaesthesia->peerpool = NULL; synaesthesia->peerpool = NULL;
// reset the initial video state /* reset the initial video state */
synaesthesia->first_buffer = TRUE; synaesthesia->first_buffer = TRUE;
synaesthesia->width = 320; synaesthesia->width = 320;
synaesthesia->height = 200; synaesthesia->height = 200;
synaesthesia->fps = 25; // desired frame rate synaesthesia->fps = 25; /* desired frame rate */
} }

View file

@ -140,25 +140,25 @@ static void synaescope_coreGo(void) {
( (x1+x2) * (x1-x2) + (y1+y2) * (y1-y2) )/(aa+bb) * 256 ); ( (x1+x2) * (x1-x2) + (y1+y2) * (y1-y2) )/(aa+bb) * 256 );
} }
// Asger Alstrupt's optimized 32 bit fade /* Asger Alstrupt's optimized 32 bit fade */
// (alstrup@diku.dk) /* (alstrup@diku.dk) */
ptr = (unsigned long*)output; ptr = (unsigned long*)output;
end = (unsigned long*)(output + syn_width * syn_height * 2); end = (unsigned long*)(output + syn_width * syn_height * 2);
do { do {
//Bytewize version was: *(ptr++) -= *ptr+(*ptr>>1)>>4; /*Bytewize version was: *(ptr++) -= *ptr+(*ptr>>1)>>4; */
if (*ptr) if (*ptr)
if (*ptr & 0xf0f0f0f0) if (*ptr & 0xf0f0f0f0)
*ptr = *ptr - ((*ptr & 0xf0f0f0f0) >> 4) - ((*ptr & 0xe0e0e0e0) >> 5); *ptr = *ptr - ((*ptr & 0xf0f0f0f0) >> 4) - ((*ptr & 0xe0e0e0e0) >> 5);
else { else {
*ptr = (*ptr * 14 >> 4) & 0x0f0f0f0f; *ptr = (*ptr * 14 >> 4) & 0x0f0f0f0f;
//Should be 29/32 to be consistent. Who cares. This is totally /*Should be 29/32 to be consistent. Who cares. This is totally */
// hacked anyway. /* hacked anyway. */
//unsigned char *subptr = (unsigned char*)(ptr++); /*unsigned char *subptr = (unsigned char*)(ptr++); */
//subptr[0] = (int)subptr[0] * 29 / 32; /*subptr[0] = (int)subptr[0] * 29 / 32; */
//subptr[1] = (int)subptr[0] * 29 / 32; /*subptr[1] = (int)subptr[0] * 29 / 32; */
//subptr[2] = (int)subptr[0] * 29 / 32; /*subptr[2] = (int)subptr[0] * 29 / 32; */
//subptr[3] = (int)subptr[0] * 29 / 32; /*subptr[3] = (int)subptr[0] * 29 / 32; */
} }
ptr++; ptr++;
} while(ptr < end); } while(ptr < end);
@ -173,10 +173,10 @@ static void synaescope_coreGo(void) {
brtot = 0; brtot = 0;
for(i=1;i<FFT_BUFFER_SIZE/2;i++) { for(i=1;i<FFT_BUFFER_SIZE/2;i++) {
//int h = (int)( corr_r[i]*280 / (corr_l[i]+corr_r[i]+0.0001)+20 ); /*int h = (int)( corr_r[i]*280 / (corr_l[i]+corr_r[i]+0.0001)+20 ); */
if (corr_l[i] > 0 || corr_r[i] > 0) { if (corr_l[i] > 0 || corr_r[i] > 0) {
int h = (int)( corr_r[i] * syn_width / (corr_l[i]+corr_r[i]) ); int h = (int)( corr_r[i] * syn_width / (corr_l[i]+corr_r[i]) );
// int h = (int)( syn_width - 1 ); /* int h = (int)( syn_width - 1 ); */
int br1, br2, br = (int)( int br1, br2, br = (int)(
(corr_l[i]+corr_r[i])*i*brightFactor2 ); (corr_l[i]+corr_r[i])*i*brightFactor2 );
int px = h, int px = h,
@ -186,7 +186,7 @@ static void synaescope_coreGo(void) {
br2 = br*(128-clarity[i])>>8; br2 = br*(128-clarity[i])>>8;
if (br1 < 0) br1 = 0; else if (br1 > 255) br1 = 255; if (br1 < 0) br1 = 0; else if (br1 > 255) br1 = 255;
if (br2 < 0) br2 = 0; else if (br2 > 255) br2 = 255; if (br2 < 0) br2 = 0; else if (br2 > 255) br2 = 255;
//unsigned char *p = output+ h*2+(164-((i<<8)>>FFT_BUFFER_SIZE_LOG))*(syn_width*2); /*unsigned char *p = output+ h*2+(164-((i<<8)>>FFT_BUFFER_SIZE_LOG))*(syn_width*2); */
if (px < 30 || py < 30 || px > syn_width-30 || py > syn_height-30) { if (px < 30 || py < 30 || px > syn_width-30 || py > syn_height-30) {
addPixel(output, px,py,br1,br2); addPixel(output, px,py,br1,br2);
@ -289,7 +289,7 @@ static void synaescope16(void *data)
colEq[i] = color.pixel; colEq[i] = color.pixel;
} }
// Create render image /* Create render image */
if (image) { if (image) {
gdk_image_destroy(image); gdk_image_destroy(image);
image = NULL; image = NULL;
@ -342,7 +342,7 @@ static void synaescope8(void *data)
colEq[i * 4 + 3] = color.pixel; colEq[i * 4 + 3] = color.pixel;
} }
// Create render image /* Create render image */
if (image) { if (image) {
gdk_image_destroy(image); gdk_image_destroy(image);
image = NULL; image = NULL;
@ -409,13 +409,13 @@ static void init_synaescope()
for(i = 0; i <= FFT_BUFFER_SIZE / 2 + 1; i++) { for(i = 0; i <= FFT_BUFFER_SIZE / 2 + 1; i++) {
double mult = (double)128 / ((FFT_BUFFER_SIZE * 16384) ^ 2); double mult = (double)128 / ((FFT_BUFFER_SIZE * 16384) ^ 2);
// Result now guaranteed (well, almost) to be in range 0..128 /* Result now guaranteed (well, almost) to be in range 0..128 */
// Low values represent more frequencies, and thus get more /* Low values represent more frequencies, and thus get more */
// intensity - this helps correct for that. /* intensity - this helps correct for that. */
mult *= log(i + 1) / log(2); mult *= log(i + 1) / log(2);
mult *= 3; // Adhoc parameter, looks about right for me. mult *= 3; /* Adhoc parameter, looks about right for me. */
fftmult[i] = mult; fftmult[i] = mult;
} }