mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-23 07:38:16 +00:00
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:
parent
29ea57179f
commit
f6c63f0d8e
36 changed files with 690 additions and 690 deletions
|
@ -10,7 +10,7 @@ BUILT_SOURCES = \
|
|||
|
||||
libgstidentity2_la_SOURCES = gst-identity2.gob $(GOB_FILES_ID)
|
||||
libgstidentity2_la_CFLAGS = $(GST_CFLAGS)
|
||||
libgstidentity2_la_LIBADD = $(GST_LIBS)
|
||||
libgstidentity2_la_LIBADD =
|
||||
|
||||
%.c %.h %-private.h: %.gob
|
||||
gob $<
|
||||
|
|
|
@ -10,7 +10,7 @@ endif
|
|||
|
||||
libgsta52dec_la_SOURCES = gsta52dec.c
|
||||
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)
|
||||
|
||||
noinst_HEADERS = gsta52dec.h
|
||||
|
|
|
@ -7,7 +7,7 @@ plugin_LTLIBRARIES = libgstdvdsrc.la
|
|||
|
||||
libgstdvdsrc_la_SOURCES = dvdsrc.c
|
||||
libgstdvdsrc_la_CFLAGS = $(GST_CFLAGS)
|
||||
libgstdvdsrc_la_LIBADD = $(GST_LIBS) $(DVDREAD_LIBS)
|
||||
libgstdvdsrc_la_LIBADD = $(DVDREAD_LIBS)
|
||||
libgstdvdsrc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
|
||||
|
||||
noinst_HEADERS = dvdsrc.h
|
||||
|
|
|
@ -49,7 +49,7 @@ int main(int argc,char *argv[]) {
|
|||
gst_init(&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"));
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
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");
|
||||
|
||||
|
||||
// ***** pre-construct the video thread *****
|
||||
/* ***** pre-construct the video thread ***** */
|
||||
v_thread = GST_ELEMENT(gst_thread_new("v_thread"));
|
||||
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");
|
||||
|
||||
|
||||
// ***** pre-construct the audio thread *****
|
||||
/* ***** pre-construct the audio thread ***** */
|
||||
a_thread = GST_ELEMENT(gst_thread_new("a_thread"));
|
||||
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");
|
||||
|
||||
|
||||
// ***** construct the GUI *****
|
||||
/* ***** construct the GUI ***** */
|
||||
appwindow = gnome_app_new("DVD Player","DVD Player");
|
||||
|
||||
gtk_socket = gtk_socket_new ();
|
||||
|
|
|
@ -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_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 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 GstElementClass *parent_class = NULL;
|
||||
//static guint dvdsrc_signals[LAST_SIGNAL] = { 0 };
|
||||
/*static guint dvdsrc_signals[LAST_SIGNAL] = { 0 }; */
|
||||
|
||||
GType
|
||||
dvdsrc_get_type (void)
|
||||
|
@ -193,7 +193,7 @@ dvdsrc_init (DVDSrc *dvdsrc)
|
|||
static void
|
||||
dvdsrc_destory (DVDSrc *dvdsrc)
|
||||
{
|
||||
// FIXME
|
||||
/* FIXME */
|
||||
g_print("FIXME\n");
|
||||
g_free(dvdsrc->priv);
|
||||
}
|
||||
|
@ -213,7 +213,7 @@ dvdsrc_set_property (GObject *object, guint prop_id, const GValue *value, GParam
|
|||
switch (prop_id) {
|
||||
case ARG_LOCATION:
|
||||
/* 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)
|
||||
g_free (priv->location);
|
||||
|
@ -462,7 +462,7 @@ dvdsrc_loop (GstElement *element)
|
|||
int len;
|
||||
|
||||
/* create the buffer */
|
||||
// FIXME: should eventually use a bufferpool for this
|
||||
/* FIXME: should eventually use a bufferpool for this */
|
||||
buf = gst_buffer_new ();
|
||||
g_return_if_fail (buf);
|
||||
|
||||
|
@ -490,7 +490,7 @@ dvdsrc_loop (GstElement *element)
|
|||
*/
|
||||
navRead_DSI( &dsi_pack, &(data[ DSI_START_BYTE ]) );
|
||||
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);
|
||||
|
||||
/* create the buffer */
|
||||
// FIXME: should eventually use a bufferpool for this
|
||||
/* FIXME: should eventually use a bufferpool for this */
|
||||
buf = gst_buffer_new ();
|
||||
g_return_val_if_fail (buf, NULL);
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ GstElementDetails dvdsrc_details;
|
|||
#define GST_IS_DVDSRC_CLASS(obj) \
|
||||
(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 {
|
||||
DVDSRC_OPEN = GST_ELEMENT_FLAG_LAST,
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ plugin_LTLIBRARIES = libgstlame.la
|
|||
|
||||
libgstlame_la_SOURCES = gstlame.c
|
||||
libgstlame_la_CFLAGS = $(GST_CFLAGS)
|
||||
libgstlame_la_LIBADD = $(GST_LIBS) $(LAME_LIBS)
|
||||
libgstlame_la_LIBADD = $(LAME_LIBS)
|
||||
libgstlame_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
|
||||
|
||||
noinst_HEADERS = gstlame.h
|
||||
|
|
|
@ -177,7 +177,7 @@ enum {
|
|||
ARG_ATH_ONLY,
|
||||
ARG_ATH_SHORT,
|
||||
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_CWLIMIT,
|
||||
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_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_param_spec_int("frequency","frequency","frequency",
|
||||
0,G_MAXINT, 44100 ,G_PARAM_READABLE));
|
||||
|
@ -244,93 +244,93 @@ gst_lame_class_init (GstLameClass *klass)
|
|||
0, 2, 2 ,G_PARAM_READABLE));
|
||||
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_ARG_READWRITE, ARG_ATH_TYPE); */
|
||||
g_object_class_install_property(G_OBJECT_CLASS(klass), ARG_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_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_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_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_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->get_property = gst_lame_get_property;
|
||||
|
|
|
@ -4,6 +4,6 @@ plugin_LTLIBRARIES = libgstmad.la
|
|||
|
||||
libgstmad_la_SOURCES = gstmad.c
|
||||
libgstmad_la_CFLAGS = $(GST_CFLAGS)
|
||||
libgstmad_la_LIBADD = $(GST_LIBS) $(MAD_LIBS)
|
||||
libgstmad_la_LIBADD = $(MAD_LIBS)
|
||||
libgstmad_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
|
||||
|
||||
|
|
|
@ -10,13 +10,13 @@ endif
|
|||
|
||||
libgstmpeg2dec_la_SOURCES = gstmpeg2dec.c
|
||||
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)
|
||||
|
||||
#
|
||||
# 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
|
||||
|
||||
|
|
|
@ -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
|
||||
* we are prepared to not really send them (see above) */
|
||||
if (!mpeg2dec->closed) {
|
||||
//mpeg2_close (mpeg2dec->decoder);
|
||||
/*mpeg2_close (mpeg2dec->decoder); */
|
||||
mpeg2dec->closed = TRUE;
|
||||
}
|
||||
gst_mpeg2dec_vo_destroy (mpeg2dec);
|
||||
|
|
|
@ -4,7 +4,7 @@ plugin_LTLIBRARIES = libgstsid.la
|
|||
|
||||
libgstsid_la_SOURCES = gstsiddec.cc
|
||||
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)
|
||||
|
||||
noinst_HEADERS = gstsiddec.h
|
||||
|
|
|
@ -7,6 +7,6 @@ libgstaudio_la_SOURCES = audio.c
|
|||
libgstaudioincludedir = $(includedir)/gst/audio
|
||||
libgstaudioinclude_HEADERS = audio.h
|
||||
|
||||
libgstaudio_la_LIBADD = $(GST_LIBS)
|
||||
libgstaudio_la_LIBADD =
|
||||
libgstaudio_la_CFLAGS = $(GST_CFLAGS) -finline-functions -ffast-math
|
||||
libgstaudio_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
|
||||
|
|
|
@ -131,7 +131,7 @@ gst_audio_highest_sample_value (GstPad* pad)
|
|||
GstCaps *caps = NULL;
|
||||
|
||||
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)
|
||||
printf ("WARNING: gstaudio: could not get caps of pad !\n");
|
||||
width = gst_caps_get_int (caps, "width");
|
||||
|
|
|
@ -27,6 +27,6 @@ ieeetest_LDFLAGS = $(GST_LIBS)
|
|||
|
||||
noinst_HEADERS = dct.h
|
||||
|
||||
libgstidct_la_LIBADD = $(GST_LIBS)
|
||||
libgstidct_la_LIBADD =
|
||||
libgstidct_la_CFLAGS = $(GST_CFLAGS) -finline-functions -ffast-math
|
||||
libgstidct_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
|
||||
|
|
|
@ -117,7 +117,7 @@ main(int argc, char **argv)
|
|||
gst_trace_read_tsc(&tscstart);
|
||||
gst_idct_convert(idct, testout);
|
||||
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 > tscmax) tscmax = tscstop-tscstart;
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -13,7 +13,7 @@ endif
|
|||
endif
|
||||
|
||||
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_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
|
||||
|
||||
|
|
|
@ -23,13 +23,13 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
//#include <ml.h>
|
||||
/*#include <ml.h> */
|
||||
#include <resample.h>
|
||||
|
||||
|
||||
|
||||
#define short_to_double_table
|
||||
//#define short_to_double_altivec
|
||||
/*#define short_to_double_altivec */
|
||||
#define short_to_double_unroll
|
||||
|
||||
#ifdef short_to_double_table
|
||||
|
|
|
@ -124,12 +124,12 @@ double functable_eval(functable_t *t,double x)
|
|||
w0 = (x - 2 * 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 +
|
||||
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;
|
||||
}
|
||||
|
@ -266,37 +266,37 @@ void functable_fir2_altivec(functable_t *t, float *r0, float *r1,
|
|||
sum0 = 0;
|
||||
sum1 = 0;
|
||||
for(j=0;j<len;j++){
|
||||
// t->fx, t->fdx needs to be multiplexed by n
|
||||
// we need 5 consecutive floats, which fit into 2 vecs
|
||||
// load v0, t->fx[i]
|
||||
// load v1, t->fx[i+n]
|
||||
// v2 = v0 (not correct)
|
||||
// v3 = (v0>>32) || (v1<<3*32) (not correct)
|
||||
//
|
||||
// load v4, t->dfx[i]
|
||||
// load v5, t->dfx[i+n]
|
||||
// v6 = v4 (not correct)
|
||||
// v7 = (v4>>32) || (v5<<3*32) (not correct)
|
||||
//
|
||||
// v8 = splat(f0)
|
||||
// v9 = splat(f1)
|
||||
// v10 = splat(w0)
|
||||
// v11 = splat(w1)
|
||||
//
|
||||
// v12 = v2 * v8
|
||||
// v12 += v3 * v9
|
||||
// v12 += v6 * v10
|
||||
// v12 += v7 * v11
|
||||
/* t->fx, t->fdx needs to be multiplexed by n */
|
||||
/* we need 5 consecutive floats, which fit into 2 vecs */
|
||||
/* load v0, t->fx[i] */
|
||||
/* load v1, t->fx[i+n] */
|
||||
/* v2 = v0 (not correct) */
|
||||
/* v3 = (v0>>32) || (v1<<3*32) (not correct) */
|
||||
/* */
|
||||
/* load v4, t->dfx[i] */
|
||||
/* load v5, t->dfx[i+n] */
|
||||
/* v6 = v4 (not correct) */
|
||||
/* v7 = (v4>>32) || (v5<<3*32) (not correct) */
|
||||
/* */
|
||||
/* v8 = splat(f0) */
|
||||
/* v9 = splat(f1) */
|
||||
/* v10 = splat(w0) */
|
||||
/* v11 = splat(w1) */
|
||||
/* */
|
||||
/* v12 = v2 * v8 */
|
||||
/* v12 += v3 * v9 */
|
||||
/* v12 += v6 * v10 */
|
||||
/* v12 += v7 * v11 */
|
||||
|
||||
w = t->fx[i] * f0 + t->fx[i + 1] * f1 +
|
||||
t->fdx[i] * w0 + t->fdx[i + 1] * w1;
|
||||
|
||||
// v13 = data[j*2]
|
||||
// v14 = data[j*2+4]
|
||||
// v15 = deinterlace_high(v13,v14)
|
||||
// v16 = deinterlace_low(v13,v14)
|
||||
// (sum0) v17 += multsum(v13,v15)
|
||||
// (sum1) v18 += multsum(v14,v16)
|
||||
/* v13 = data[j*2] */
|
||||
/* v14 = data[j*2+4] */
|
||||
/* v15 = deinterlace_high(v13,v14) */
|
||||
/* v16 = deinterlace_low(v13,v14) */
|
||||
/* (sum0) v17 += multsum(v13,v15) */
|
||||
/* (sum1) v18 += multsum(v14,v16) */
|
||||
|
||||
sum0 += data[j*2] * w;
|
||||
sum1 += data[j*2+1] * w;
|
||||
|
|
|
@ -243,7 +243,7 @@ void resample_bilinear(resample_t * r)
|
|||
b = r->i_start;
|
||||
for (i = 0; i < r->i_samples; i++) {
|
||||
b += r->i_inc;
|
||||
//printf("in %d\n",i_ptr[0]);
|
||||
/*printf("in %d\n",i_ptr[0]); */
|
||||
if(b>=2){
|
||||
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];
|
||||
|
||||
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 += 2;
|
||||
o_count++;
|
||||
|
@ -319,8 +319,8 @@ void resample_sinc_slow(resample_t * r)
|
|||
c1 = 0;
|
||||
for (j = 0; j < r->filter_length; j++) {
|
||||
weight = (x==0)?1:(sinx/x);
|
||||
//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 cos %g\n",j,sinx,cosx); */
|
||||
/*printf("j %d sin %g x %g sinc %g\n",j,sinx,x,weight); */
|
||||
c0 += weight * GETBUF((start + j), 0);
|
||||
c1 += weight * GETBUF((start + j), 1);
|
||||
t = cosx * cosd - sinx * sind;
|
||||
|
@ -368,11 +368,11 @@ void resample_sinc(resample_t * r)
|
|||
for (i = 0; i < r->o_samples; i++) {
|
||||
a = r->o_start + i * r->o_inc;
|
||||
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;
|
||||
//x = M_PI * (start - center) * r->o_inc;
|
||||
//d = M_PI * r->o_inc;
|
||||
//x = (start - center) * r->o_inc;
|
||||
/*x = M_PI * (start - center) * r->o_inc; */
|
||||
/*d = M_PI * r->o_inc; */
|
||||
/*x = (start - center) * r->o_inc; */
|
||||
x0 = (start - center) * r->o_inc;
|
||||
d = r->o_inc;
|
||||
c0 = 0;
|
||||
|
@ -439,20 +439,20 @@ static void resample_sinc_ft(resample_t * r)
|
|||
double *ptr;
|
||||
signed short *o_ptr;
|
||||
int i;
|
||||
//int j;
|
||||
/*int j; */
|
||||
double c0, c1;
|
||||
//double a;
|
||||
/*double a; */
|
||||
double start_f, start_x;
|
||||
int start;
|
||||
double center;
|
||||
//double weight;
|
||||
/*double weight; */
|
||||
double x, d;
|
||||
double scale;
|
||||
int n = 4;
|
||||
|
||||
scale = r->i_inc; // cutoff at 22050
|
||||
//scale = 1.0; // cutoff at 24000
|
||||
//scale = r->i_inc * 0.5; // cutoff at 11025
|
||||
scale = r->i_inc; /* cutoff at 22050 */
|
||||
/*scale = 1.0; // cutoff at 24000 */
|
||||
/*scale = r->i_inc * 0.5; // cutoff at 11025 */
|
||||
|
||||
if(!ft){
|
||||
ft = malloc(sizeof(*ft));
|
||||
|
@ -472,7 +472,7 @@ static void resample_sinc_ft(resample_t * r)
|
|||
|
||||
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;
|
||||
|
@ -484,18 +484,18 @@ static void resample_sinc_ft(resample_t * r)
|
|||
start_x -= start_f;
|
||||
start = start_f;
|
||||
for (i = 0; i < r->o_samples; i++) {
|
||||
//start_f = floor(center - r->halftaps);
|
||||
//printf("%d: a=%g start=%d end=%d\n",i,a,start,start+r->filter_length-1);
|
||||
/*start_f = floor(center - r->halftaps); */
|
||||
/*printf("%d: a=%g start=%d end=%d\n",i,a,start,start+r->filter_length-1); */
|
||||
x = start_f - center;
|
||||
d = 1;
|
||||
c0 = 0;
|
||||
c1 = 0;
|
||||
//#define slow
|
||||
/*#define slow */
|
||||
#ifdef slow
|
||||
for (j = 0; j < r->filter_length; j++) {
|
||||
weight = functable_eval(ft,x)*scale;
|
||||
//weight = sinc(M_PI * scale * x)*scale*r->i_inc;
|
||||
//weight *= window_func(x / r->halftaps);
|
||||
/*weight = sinc(M_PI * scale * x)*scale*r->i_inc; */
|
||||
/*weight *= window_func(x / r->halftaps); */
|
||||
c0 += weight * ptr[(start + j + r->filter_length)*2 + 0];
|
||||
c1 += weight * ptr[(start + j + r->filter_length)*2 + 1];
|
||||
x += d;
|
||||
|
|
|
@ -9,11 +9,11 @@
|
|||
#define AMP 16000
|
||||
#define I_RATE 48000
|
||||
#define O_RATE 44100
|
||||
//#define O_RATE 24000
|
||||
/*#define O_RATE 24000 */
|
||||
|
||||
//#define test_func(x) 1
|
||||
//#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) 1 */
|
||||
/*#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)*12000)
|
||||
|
||||
short i_buf[I_RATE*2*2];
|
||||
|
@ -53,7 +53,7 @@ struct timeval start_time;
|
|||
void start_timer(void)
|
||||
{
|
||||
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)
|
||||
|
@ -62,7 +62,7 @@ void end_timer(void)
|
|||
double diff;
|
||||
|
||||
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) +
|
||||
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++){
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -90,10 +90,10 @@ void test_res1(void)
|
|||
|
||||
r->i_rate = I_RATE;
|
||||
r->o_rate = O_RATE;
|
||||
//r->method = RESAMPLE_SINC_SLOW;
|
||||
/*r->method = RESAMPLE_SINC_SLOW; */
|
||||
r->method = RESAMPLE_SINC;
|
||||
r->channels = 2;
|
||||
//r->verbose = 1;
|
||||
/*r->verbose = 1; */
|
||||
r->filter_length = 64;
|
||||
r->get_buffer = get_buffer;
|
||||
|
||||
|
@ -115,7 +115,7 @@ void test_res1(void)
|
|||
|
||||
for(i=0;i<O_RATE;i++){
|
||||
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,
|
||||
o_buf[2*i+0],o_buf[2*i+1],
|
||||
f,o_buf[2*i+0]-f);
|
||||
|
@ -127,7 +127,7 @@ void test_res1(void)
|
|||
n22k=0;
|
||||
for(i=0;i<O_RATE;i++){
|
||||
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;
|
||||
if(((0.5*i)/O_RATE*I_RATE)<10000){
|
||||
sum10k += x*x;
|
||||
|
@ -219,8 +219,8 @@ double sinc_poly(double x)
|
|||
- x2 * INV3FAC
|
||||
+ x2 * x2 * INV5FAC
|
||||
- x2 * x2 * x2 * INV7FAC;
|
||||
//+ x2 * x2 * x2 * x2 * INV9FAC
|
||||
//- x2 * x2 * x2 * x2 * x2 * INV11FAC;
|
||||
/*+ x2 * x2 * x2 * x2 * INV9FAC */
|
||||
/*- x2 * x2 * x2 * x2 * x2 * INV11FAC; */
|
||||
}
|
||||
|
||||
void test_res4(void)
|
||||
|
@ -297,10 +297,10 @@ void test_res7(void)
|
|||
|
||||
r->i_rate = I_RATE;
|
||||
r->o_rate = O_RATE;
|
||||
//r->method = RESAMPLE_SINC_SLOW;
|
||||
/*r->method = RESAMPLE_SINC_SLOW; */
|
||||
r->method = RESAMPLE_SINC;
|
||||
r->channels = 1;
|
||||
//r->verbose = 1;
|
||||
/*r->verbose = 1; */
|
||||
r->filter_length = 64;
|
||||
r->get_buffer = get_buffer;
|
||||
|
||||
|
@ -322,7 +322,7 @@ void test_res7(void)
|
|||
|
||||
for(i=0;i<O_RATE;i++){
|
||||
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,
|
||||
o_buf[i],0,
|
||||
f,o_buf[i]-f);
|
||||
|
@ -334,7 +334,7 @@ void test_res7(void)
|
|||
n22k=0;
|
||||
for(i=0;i<O_RATE;i++){
|
||||
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;
|
||||
if(((0.5*i)/O_RATE*I_RATE)<10000){
|
||||
sum10k += x*x;
|
||||
|
|
|
@ -7,6 +7,6 @@ libgstriff_la_SOURCES = riffparse.c riffencode.c riffutil.c
|
|||
libgstriffincludedir = $(includedir)/gst/riff
|
||||
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_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
#include <riff.h>
|
||||
|
||||
//#define debug(format,args...) g_print(format,##args)
|
||||
/*#define debug(format,args...) g_print(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_SIZE(buf) = newsize;
|
||||
off -= riff->dataleft_size;
|
||||
//last -= riff->dataleft_size;
|
||||
/*last -= riff->dataleft_size; */
|
||||
riff->dataleft = NULL;
|
||||
}
|
||||
|
||||
if (off == 0) {
|
||||
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) {
|
||||
riff->state = GST_RIFF_ENOTRIFF;
|
||||
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 */
|
||||
if (GUINT32_FROM_LE (words[0]) != GST_RIFF_TAG_RIFF) {
|
||||
riff->state = GST_RIFF_ENOTRIFF;
|
||||
return riff->state;
|
||||
}
|
||||
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 */
|
||||
// all OK here
|
||||
/* all OK here */
|
||||
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) {
|
||||
guint leftover;
|
||||
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) {
|
||||
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) {
|
||||
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);
|
||||
if (riff->nextlikely >= chunk->offset+chunk->size) {
|
||||
//g_print("found END LIST\n");
|
||||
// we have the end of the chunk on the stack, remove it
|
||||
/*g_print("found END LIST\n"); */
|
||||
/* we have the end of the chunk on the stack, remove it */
|
||||
riff->chunks = g_list_remove(riff->chunks, chunk);
|
||||
}
|
||||
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->size = GUINT32_FROM_LE (words[1]);
|
||||
chunk->data = (gchar *)(words+2);
|
||||
// we need word alignment
|
||||
//if (chunk->size & 0x01) chunk->size++;
|
||||
/* we need word alignment */
|
||||
/*if (chunk->size & 0x01) chunk->size++; */
|
||||
chunk->form = GUINT32_FROM_LE (words[2]); /* fill in the form, might not be valid */
|
||||
|
||||
|
||||
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;
|
||||
// we push the list chunk on our 'stack'
|
||||
/* we push the list chunk on our 'stack' */
|
||||
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) {
|
||||
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]));
|
||||
|
||||
riff->nextlikely += 8 + chunk->size; /* doesn't include hdr */
|
||||
// if this buffer is incomplete
|
||||
/* if this buffer is incomplete */
|
||||
if (riff->nextlikely > last) {
|
||||
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);
|
||||
memcpy(chunk->data, (gchar *)(words+2), left);
|
||||
riff->incomplete_chunk = chunk;
|
||||
riff->incomplete_chunk_size = left;
|
||||
}
|
||||
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) {
|
||||
riff->new_tag_found(chunk, riff->callback_data);
|
||||
}
|
||||
g_free(chunk);
|
||||
}
|
||||
|
||||
//riff->chunks = g_list_prepend(riff->chunks,chunk);
|
||||
/*riff->chunks = g_list_prepend(riff->chunks,chunk); */
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
#include <string.h>
|
||||
|
||||
//#define DEBUG_ENABLED
|
||||
/*#define DEBUG_ENABLED */
|
||||
#include "riff.h"
|
||||
|
||||
#define GST_RIFF_ENCODER_BUF_SIZE 1024
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
#include <string.h>
|
||||
|
||||
//#define DEBUG_ENABLED
|
||||
/*#define DEBUG_ENABLED */
|
||||
#include <riff.h>
|
||||
|
||||
GstRiff*
|
||||
|
@ -71,33 +71,33 @@ gst_riff_parser_next_buffer (GstRiff *riff, GstBuffer *buf, gulong off)
|
|||
GST_BUFFER_DATA(buf) = riff->dataleft;
|
||||
size = GST_BUFFER_SIZE(buf) = newsize;
|
||||
off -= riff->dataleft_size;
|
||||
//last -= riff->dataleft_size;
|
||||
/*last -= riff->dataleft_size; */
|
||||
riff->dataleft = NULL;
|
||||
}
|
||||
|
||||
if (off == 0) {
|
||||
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) {
|
||||
riff->state = GST_RIFF_ENOTRIFF;
|
||||
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 */
|
||||
if (GUINT32_FROM_LE (words[0]) != GST_RIFF_TAG_RIFF) {
|
||||
riff->state = GST_RIFF_ENOTRIFF;
|
||||
return riff->state;
|
||||
}
|
||||
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 */
|
||||
// all OK here
|
||||
/* all OK here */
|
||||
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) {
|
||||
guint leftover;
|
||||
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) {
|
||||
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) {
|
||||
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);
|
||||
if (riff->nextlikely >= chunk->offset+chunk->size) {
|
||||
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);
|
||||
}
|
||||
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->size = GUINT32_FROM_LE (words[1]);
|
||||
chunk->data = (gchar *)(words+2);
|
||||
// we need word alignment
|
||||
//if (chunk->size & 0x01) chunk->size++;
|
||||
/* we need word alignment */
|
||||
/*if (chunk->size & 0x01) chunk->size++; */
|
||||
chunk->form = GUINT32_FROM_LE (words[2]); /* fill in the form, might not be valid */
|
||||
|
||||
|
||||
if (chunk->id == GST_RIFF_TAG_LIST) {
|
||||
GST_DEBUG (0,"found LIST %s\n", gst_riff_id_to_fourcc(chunk->form));
|
||||
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);
|
||||
// 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) {
|
||||
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]));
|
||||
|
||||
riff->nextlikely += 8 + chunk->size; /* doesn't include hdr */
|
||||
// if this buffer is incomplete
|
||||
/* if this buffer is incomplete */
|
||||
if (riff->nextlikely > last) {
|
||||
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;
|
||||
}
|
||||
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) {
|
||||
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++;
|
||||
|
||||
//riff->chunks = g_list_prepend(riff->chunks,chunk);
|
||||
/*riff->chunks = g_list_prepend(riff->chunks,chunk); */
|
||||
}
|
||||
}
|
||||
if ((riff->nextlikely+12) > last && !riff->incomplete_chunk) {
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
#include <riff.h>
|
||||
|
||||
//#define debug(format,args...) g_print(format,##args)
|
||||
/*#define debug(format,args...) g_print(format,##args) */
|
||||
#define debug(format,args...)
|
||||
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ libgstac3parse_la_SOURCES = gstac3parse.c
|
|||
noinst_HEADERS = gstac3parse.h
|
||||
|
||||
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)
|
||||
|
||||
EXTRA_DIST = README
|
||||
|
|
|
@ -6,12 +6,12 @@ plugin_LTLIBRARIES = libgstmpegaudioparse.la libgstmp3types.la
|
|||
libgstmpegaudioparse_la_SOURCES = gstmpegaudioparse.c
|
||||
# FIXME is this useful?
|
||||
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)
|
||||
|
||||
libgstmp3types_la_SOURCES = gstmp3types.c
|
||||
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)
|
||||
|
||||
noinst_HEADERS = gstmpegaudioparse.h
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
//#define DEBUG_ENABLED
|
||||
/*#define DEBUG_ENABLED */
|
||||
#include <gst/gst.h>
|
||||
#include <string.h> /* memcmp */
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
//#define GST_DEBUG_ENABLED
|
||||
/*#define GST_DEBUG_ENABLED */
|
||||
#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 GstElementClass *parent_class = NULL;
|
||||
//static guint gst_mp3parse_signals[LAST_SIGNAL] = { 0 };
|
||||
/*static guint gst_mp3parse_signals[LAST_SIGNAL] = { 0 }; */
|
||||
|
||||
GType
|
||||
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_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_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);
|
||||
|
||||
|
@ -144,15 +144,15 @@ gst_mp3parse_init (GstMPEGAudioParse *mp3parse)
|
|||
mp3parse->sinkpad = gst_pad_new_from_template(sink_temp, "sink");
|
||||
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);
|
||||
#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);
|
||||
#endif
|
||||
|
||||
mp3parse->srcpad = gst_pad_new_from_template(src_temp, "src");
|
||||
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->skip = 0;
|
||||
|
@ -190,31 +190,31 @@ gst_mp3parse_loop (GstElement *element)
|
|||
gint bpf;
|
||||
|
||||
while (1) {
|
||||
// get a new buffer
|
||||
/* get a new buffer */
|
||||
inbuf = gst_pad_pull (parse->sinkpad);
|
||||
size = GST_BUFFER_SIZE (inbuf);
|
||||
data = GST_BUFFER_DATA (inbuf);
|
||||
offset = 0;
|
||||
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)) {
|
||||
start = gst_mp3parse_next_header (data,size,offset);
|
||||
fprintf(stderr, "skipped %d bytes searching for the next header\n",start-offset);
|
||||
header = GULONG_FROM_BE(*((guint32 *)(data+start)));
|
||||
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);
|
||||
|
||||
// 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) {
|
||||
outbuf = gst_buffer_create_sub (inbuf,start,bpf);
|
||||
fprintf(stderr, "sending buffer of %d bytes\n",bpf);
|
||||
gst_pad_push (parse->srcpad, outbuf);
|
||||
offset = start + bpf;
|
||||
|
||||
// if not, we have to deal with it somehow
|
||||
/* if not, we have to deal with it somehow */
|
||||
} else {
|
||||
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(GST_IS_PAD(pad));
|
||||
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));
|
||||
|
||||
|
@ -255,11 +255,11 @@ gst_mp3parse_chain (GstPad *pad, GstBuffer *buf)
|
|||
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) {
|
||||
|
||||
mp3parse->partialbuf = gst_buffer_append(mp3parse->partialbuf, buf);
|
||||
// and the one we received..
|
||||
/* and the one we received.. */
|
||||
gst_buffer_unref(buf);
|
||||
}
|
||||
else {
|
||||
|
@ -269,22 +269,22 @@ gst_mp3parse_chain (GstPad *pad, GstBuffer *buf)
|
|||
size = GST_BUFFER_SIZE(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) {
|
||||
int skipped = 0;
|
||||
|
||||
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++;
|
||||
if (skipped && !mp3parse->in_flush) {
|
||||
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)));
|
||||
// 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)) {
|
||||
// calculate the bpf of the frame
|
||||
/* calculate the bpf of the frame */
|
||||
bpf = bpf_from_header(mp3parse, header);
|
||||
|
||||
/********************************************************************************
|
||||
|
@ -302,22 +302,22 @@ gst_mp3parse_chain (GstPad *pad, GstBuffer *buf)
|
|||
if ( mp3parse->in_flush ) {
|
||||
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)));
|
||||
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 );
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// if we don't have the whole frame...
|
||||
/* if we don't have the whole frame... */
|
||||
if ((size - offset) < bpf) {
|
||||
GST_DEBUG (0,"mp3parse: partial buffer needed %ld < %d \n",(size-offset), bpf);
|
||||
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 we have processed this block and there are still
|
||||
// bytes left not in a partial block, copy them over.
|
||||
/* if we have processed this block and there are still */
|
||||
/* bytes left not in a partial block, copy them over. */
|
||||
if (size-offset > 0) {
|
||||
glong remainder = (size - offset);
|
||||
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;
|
||||
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 = 4 - layer_index;
|
||||
lsf = (header & (1 << 20)) ? ((header & (1 << 19)) ? 0 : 1) : 1;
|
||||
|
@ -399,8 +399,8 @@ bpf_from_header (GstMPEGAudioParse *parse, unsigned long header)
|
|||
bpf += padding;
|
||||
}
|
||||
|
||||
//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);
|
||||
/*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); */
|
||||
|
||||
return bpf;
|
||||
}
|
||||
|
|
|
@ -50,7 +50,7 @@ struct _GstMPEGAudioParse {
|
|||
|
||||
GstPad *sinkpad,*srcpad;
|
||||
|
||||
GstBuffer *partialbuf; // previous buffer (if carryover)
|
||||
GstBuffer *partialbuf; /* previous buffer (if carryover) */
|
||||
guint skip; /* number of frames to skip */
|
||||
guint bit_rate;
|
||||
gboolean in_flush;
|
||||
|
|
|
@ -4,7 +4,7 @@ plugin_LTLIBRARIES = libgstmpegstream.la
|
|||
|
||||
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_LIBADD = $(GST_LIBS)
|
||||
libgstmpegstream_la_LIBADD =
|
||||
libgstmpegstream_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
|
||||
|
||||
noinst_HEADERS = gstmpegparse.h gstmpegdemux.h gstmpegpacketize.h gstrfc2250enc.h
|
||||
|
|
|
@ -7,6 +7,6 @@ libgstsynaesthesia_la_SOURCES = gstsynaesthesia.c synaescope.c
|
|||
noinst_HEADERS = synaescope.h
|
||||
|
||||
libgstsynaesthesia_la_CFLAGS = -O2 -ffast-math $(GST_CFLAGS)
|
||||
libgstsynaesthesia_la_LIBADD = $(GST_LIBS)
|
||||
libgstsynaesthesia_la_LIBADD =
|
||||
libgstsynaesthesia_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
|
||||
|
||||
|
|
|
@ -38,11 +38,11 @@ struct _GstSynaesthesia {
|
|||
GstPad *sinkpad,*srcpad;
|
||||
GstBufferPool *peerpool;
|
||||
|
||||
// the timestamp of the next frame
|
||||
/* the timestamp of the next frame */
|
||||
guint64 next_time;
|
||||
gint16 datain[2][512];
|
||||
|
||||
// video state
|
||||
/* video state */
|
||||
gint fps;
|
||||
gint width;
|
||||
gint height;
|
||||
|
@ -198,11 +198,11 @@ gst_synaesthesia_init (GstSynaesthesia *synaesthesia)
|
|||
synaesthesia->next_time = 0;
|
||||
synaesthesia->peerpool = NULL;
|
||||
|
||||
// reset the initial video state
|
||||
/* reset the initial video state */
|
||||
synaesthesia->first_buffer = TRUE;
|
||||
synaesthesia->width = 320;
|
||||
synaesthesia->height = 200;
|
||||
synaesthesia->fps = 25; // desired frame rate
|
||||
synaesthesia->fps = 25; /* desired frame rate */
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -140,25 +140,25 @@ static void synaescope_coreGo(void) {
|
|||
( (x1+x2) * (x1-x2) + (y1+y2) * (y1-y2) )/(aa+bb) * 256 );
|
||||
}
|
||||
|
||||
// Asger Alstrupt's optimized 32 bit fade
|
||||
// (alstrup@diku.dk)
|
||||
/* Asger Alstrupt's optimized 32 bit fade */
|
||||
/* (alstrup@diku.dk) */
|
||||
ptr = (unsigned long*)output;
|
||||
end = (unsigned long*)(output + syn_width * syn_height * 2);
|
||||
do {
|
||||
//Bytewize version was: *(ptr++) -= *ptr+(*ptr>>1)>>4;
|
||||
/*Bytewize version was: *(ptr++) -= *ptr+(*ptr>>1)>>4; */
|
||||
if (*ptr)
|
||||
|
||||
if (*ptr & 0xf0f0f0f0)
|
||||
*ptr = *ptr - ((*ptr & 0xf0f0f0f0) >> 4) - ((*ptr & 0xe0e0e0e0) >> 5);
|
||||
else {
|
||||
*ptr = (*ptr * 14 >> 4) & 0x0f0f0f0f;
|
||||
//Should be 29/32 to be consistent. Who cares. This is totally
|
||||
// hacked anyway.
|
||||
//unsigned char *subptr = (unsigned char*)(ptr++);
|
||||
//subptr[0] = (int)subptr[0] * 29 / 32;
|
||||
//subptr[1] = (int)subptr[0] * 29 / 32;
|
||||
//subptr[2] = (int)subptr[0] * 29 / 32;
|
||||
//subptr[3] = (int)subptr[0] * 29 / 32;
|
||||
/*Should be 29/32 to be consistent. Who cares. This is totally */
|
||||
/* hacked anyway. */
|
||||
/*unsigned char *subptr = (unsigned char*)(ptr++); */
|
||||
/*subptr[0] = (int)subptr[0] * 29 / 32; */
|
||||
/*subptr[1] = (int)subptr[0] * 29 / 32; */
|
||||
/*subptr[2] = (int)subptr[0] * 29 / 32; */
|
||||
/*subptr[3] = (int)subptr[0] * 29 / 32; */
|
||||
}
|
||||
ptr++;
|
||||
} while(ptr < end);
|
||||
|
@ -173,10 +173,10 @@ static void synaescope_coreGo(void) {
|
|||
|
||||
brtot = 0;
|
||||
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) {
|
||||
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)(
|
||||
(corr_l[i]+corr_r[i])*i*brightFactor2 );
|
||||
int px = h,
|
||||
|
@ -186,7 +186,7 @@ static void synaescope_coreGo(void) {
|
|||
br2 = br*(128-clarity[i])>>8;
|
||||
if (br1 < 0) br1 = 0; else if (br1 > 255) br1 = 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) {
|
||||
addPixel(output, px,py,br1,br2);
|
||||
|
@ -289,7 +289,7 @@ static void synaescope16(void *data)
|
|||
colEq[i] = color.pixel;
|
||||
}
|
||||
|
||||
// Create render image
|
||||
/* Create render image */
|
||||
if (image) {
|
||||
gdk_image_destroy(image);
|
||||
image = NULL;
|
||||
|
@ -342,7 +342,7 @@ static void synaescope8(void *data)
|
|||
colEq[i * 4 + 3] = color.pixel;
|
||||
}
|
||||
|
||||
// Create render image
|
||||
/* Create render image */
|
||||
if (image) {
|
||||
gdk_image_destroy(image);
|
||||
image = NULL;
|
||||
|
@ -409,13 +409,13 @@ static void init_synaescope()
|
|||
|
||||
for(i = 0; i <= FFT_BUFFER_SIZE / 2 + 1; i++) {
|
||||
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
|
||||
// intensity - this helps correct for that.
|
||||
/* Low values represent more frequencies, and thus get more */
|
||||
/* intensity - this helps correct for that. */
|
||||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue