2004-11-07 18:30:06 +00:00
|
|
|
/* GStreamer Musepack decoder plugin
|
|
|
|
* Copyright (C) 2004 Ronald Bultje <rbultje@ronald.bitfreak.net>
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
* Copyright (C) 2006 Tim-Philipp Müller <tim centricular net>
|
2008-04-24 22:19:48 +00:00
|
|
|
* Copyright (C) 2008 Sebastian Dröge <slomo@circular-chaos.org>
|
2004-11-07 18:30:06 +00:00
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Library General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Library General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Library General Public
|
|
|
|
* License along with this library; if not, write to the
|
2012-11-03 20:38:00 +00:00
|
|
|
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
|
|
|
* Boston, MA 02110-1301, USA.
|
2004-11-07 18:30:06 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include "config.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "gstmusepackdec.h"
|
|
|
|
#include "gstmusepackreader.h"
|
|
|
|
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
GST_DEBUG_CATEGORY (musepackdec_debug);
|
|
|
|
#define GST_CAT_DEFAULT musepackdec_debug
|
|
|
|
|
2004-11-07 18:30:06 +00:00
|
|
|
static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
|
|
|
|
GST_PAD_SINK,
|
|
|
|
GST_PAD_ALWAYS,
|
2008-04-24 22:19:48 +00:00
|
|
|
GST_STATIC_CAPS ("audio/x-musepack, streamversion = (int) { 7, 8 }")
|
2004-11-07 18:30:06 +00:00
|
|
|
);
|
|
|
|
|
2004-12-03 18:13:43 +00:00
|
|
|
#ifdef MPC_FIXED_POINT
|
2016-07-04 14:54:53 +00:00
|
|
|
# if G_BYTE_ORDER == G_LITTLE_ENDIAN
|
|
|
|
# define GST_MPC_FORMAT "S32LE"
|
|
|
|
# else
|
|
|
|
# define GST_MPC_FORMAT "S32BE"
|
|
|
|
# endif
|
2004-12-03 18:13:43 +00:00
|
|
|
#else
|
2016-07-04 14:54:53 +00:00
|
|
|
# if G_BYTE_ORDER == G_LITTLE_ENDIAN
|
|
|
|
# define GST_MPC_FORMAT "F32LE"
|
|
|
|
# else
|
|
|
|
# define GST_MPC_FORMAT "F32BE"
|
|
|
|
# endif
|
2004-12-03 18:13:43 +00:00
|
|
|
#endif
|
|
|
|
|
2004-11-07 18:30:06 +00:00
|
|
|
static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
|
|
|
|
GST_PAD_SRC,
|
|
|
|
GST_PAD_ALWAYS,
|
2016-07-04 14:54:53 +00:00
|
|
|
GST_STATIC_CAPS ("audio/x-raw, "
|
|
|
|
"format = (string) " GST_MPC_FORMAT ", "
|
|
|
|
"layout = (string) interleaved, "
|
Update to 1.1 API (#165446).
Original commit message from CVS:
* configure.ac:
* ext/musepack/Makefile.am:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_class_init),
(gst_musepackdec_init), (gst_musepackdec_dispose),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.cpp:
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_read), (gst_musepack_reader_seek),
(gst_musepack_reader_tell), (gst_musepack_reader_get_size),
(gst_musepack_reader_canseek), (gst_musepack_init_reader):
* ext/musepack/gstmusepackreader.cpp:
* ext/musepack/gstmusepackreader.h:
Update to 1.1 API (#165446).
2005-01-29 01:28:34 +00:00
|
|
|
"rate = (int) [ 8000, 96000 ], " "channels = (int) [ 1, 2 ]")
|
2004-11-07 18:30:06 +00:00
|
|
|
);
|
|
|
|
|
Update to 1.1 API (#165446).
Original commit message from CVS:
* configure.ac:
* ext/musepack/Makefile.am:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_class_init),
(gst_musepackdec_init), (gst_musepackdec_dispose),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.cpp:
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_read), (gst_musepack_reader_seek),
(gst_musepack_reader_tell), (gst_musepack_reader_get_size),
(gst_musepack_reader_canseek), (gst_musepack_init_reader):
* ext/musepack/gstmusepackreader.cpp:
* ext/musepack/gstmusepackreader.h:
Update to 1.1 API (#165446).
2005-01-29 01:28:34 +00:00
|
|
|
static void gst_musepackdec_dispose (GObject * obj);
|
2004-11-07 18:30:06 +00:00
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
static gboolean gst_musepackdec_src_event (GstPad * pad, GstObject * parent,
|
|
|
|
GstEvent * event);
|
|
|
|
static gboolean gst_musepackdec_src_query (GstPad * pad, GstObject * parent,
|
|
|
|
GstQuery * query);
|
|
|
|
static gboolean gst_musepackdec_sink_activate (GstPad * sinkpad,
|
|
|
|
GstObject * parent);
|
|
|
|
static gboolean gst_musepackdec_sink_activate_mode (GstPad * sinkpad,
|
|
|
|
GstObject * parent, GstPadMode mode, gboolean active);
|
2005-11-22 15:09:28 +00:00
|
|
|
|
|
|
|
static void gst_musepackdec_loop (GstPad * sinkpad);
|
2005-09-05 17:20:29 +00:00
|
|
|
static GstStateChangeReturn
|
|
|
|
gst_musepackdec_change_state (GstElement * element, GstStateChange transition);
|
2004-11-07 18:30:06 +00:00
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
#define parent_class gst_musepackdec_parent_class
|
2021-02-18 09:24:18 +00:00
|
|
|
G_DEFINE_TYPE_WITH_CODE (GstMusepackDec, gst_musepackdec, GST_TYPE_ELEMENT,
|
|
|
|
GST_DEBUG_CATEGORY_INIT (musepackdec_debug, "musepackdec", 0,
|
|
|
|
"mpc decoder");
|
|
|
|
);
|
|
|
|
GST_ELEMENT_REGISTER_DEFINE (musepackdec, "musepackdec",
|
2024-02-08 14:50:43 +00:00
|
|
|
GST_RANK_MARGINAL, GST_TYPE_MUSEPACK_DEC);
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
static void
|
2016-07-04 14:54:53 +00:00
|
|
|
gst_musepackdec_class_init (GstMusepackDecClass * klass)
|
2004-11-07 18:30:06 +00:00
|
|
|
{
|
2016-07-04 14:54:53 +00:00
|
|
|
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
2004-11-07 18:30:06 +00:00
|
|
|
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
|
|
|
|
|
2016-03-04 06:50:26 +00:00
|
|
|
gst_element_class_add_static_pad_template (element_class, &src_template);
|
|
|
|
gst_element_class_add_static_pad_template (element_class, &sink_template);
|
2004-11-07 18:30:06 +00:00
|
|
|
|
2012-10-17 16:34:26 +00:00
|
|
|
gst_element_class_set_static_metadata (element_class, "Musepack decoder",
|
2008-04-24 22:19:48 +00:00
|
|
|
"Codec/Decoder/Audio",
|
|
|
|
"Musepack decoder", "Ronald Bultje <rbultje@ronald.bitfreak.net>");
|
2004-11-07 18:30:06 +00:00
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_musepackdec_dispose);
|
2004-11-07 18:30:06 +00:00
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
element_class->change_state =
|
|
|
|
GST_DEBUG_FUNCPTR (gst_musepackdec_change_state);
|
2004-11-07 18:30:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2016-07-04 14:54:53 +00:00
|
|
|
gst_musepackdec_init (GstMusepackDec * musepackdec)
|
2004-11-07 18:30:06 +00:00
|
|
|
{
|
2005-11-22 15:09:28 +00:00
|
|
|
musepackdec->offset = 0;
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
musepackdec->rate = 0;
|
|
|
|
musepackdec->bps = 0;
|
2004-11-07 18:30:06 +00:00
|
|
|
|
Update to 1.1 API (#165446).
Original commit message from CVS:
* configure.ac:
* ext/musepack/Makefile.am:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_class_init),
(gst_musepackdec_init), (gst_musepackdec_dispose),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.cpp:
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_read), (gst_musepack_reader_seek),
(gst_musepack_reader_tell), (gst_musepack_reader_get_size),
(gst_musepack_reader_canseek), (gst_musepack_init_reader):
* ext/musepack/gstmusepackreader.cpp:
* ext/musepack/gstmusepackreader.h:
Update to 1.1 API (#165446).
2005-01-29 01:28:34 +00:00
|
|
|
musepackdec->r = g_new (mpc_reader, 1);
|
2004-11-07 18:30:06 +00:00
|
|
|
|
|
|
|
musepackdec->sinkpad =
|
2006-04-14 13:12:58 +00:00
|
|
|
gst_pad_new_from_static_template (&sink_template, "sink");
|
2005-11-22 15:09:28 +00:00
|
|
|
gst_pad_set_activate_function (musepackdec->sinkpad,
|
2006-04-14 13:12:58 +00:00
|
|
|
GST_DEBUG_FUNCPTR (gst_musepackdec_sink_activate));
|
2016-07-04 14:54:53 +00:00
|
|
|
gst_pad_set_activatemode_function (musepackdec->sinkpad,
|
|
|
|
GST_DEBUG_FUNCPTR (gst_musepackdec_sink_activate_mode));
|
2006-04-14 13:12:58 +00:00
|
|
|
gst_element_add_pad (GST_ELEMENT (musepackdec), musepackdec->sinkpad);
|
2005-11-22 15:09:28 +00:00
|
|
|
|
2006-04-14 13:12:58 +00:00
|
|
|
musepackdec->srcpad = gst_pad_new_from_static_template (&src_template, "src");
|
2004-11-07 18:30:06 +00:00
|
|
|
gst_pad_set_event_function (musepackdec->srcpad,
|
|
|
|
GST_DEBUG_FUNCPTR (gst_musepackdec_src_event));
|
|
|
|
gst_pad_set_query_function (musepackdec->srcpad,
|
|
|
|
GST_DEBUG_FUNCPTR (gst_musepackdec_src_query));
|
2005-11-22 15:09:28 +00:00
|
|
|
gst_pad_use_fixed_caps (musepackdec->srcpad);
|
2004-11-07 18:30:06 +00:00
|
|
|
gst_element_add_pad (GST_ELEMENT (musepackdec), musepackdec->srcpad);
|
|
|
|
}
|
|
|
|
|
Update to 1.1 API (#165446).
Original commit message from CVS:
* configure.ac:
* ext/musepack/Makefile.am:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_class_init),
(gst_musepackdec_init), (gst_musepackdec_dispose),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.cpp:
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_read), (gst_musepack_reader_seek),
(gst_musepack_reader_tell), (gst_musepack_reader_get_size),
(gst_musepack_reader_canseek), (gst_musepack_init_reader):
* ext/musepack/gstmusepackreader.cpp:
* ext/musepack/gstmusepackreader.h:
Update to 1.1 API (#165446).
2005-01-29 01:28:34 +00:00
|
|
|
static void
|
|
|
|
gst_musepackdec_dispose (GObject * obj)
|
|
|
|
{
|
|
|
|
GstMusepackDec *musepackdec = GST_MUSEPACK_DEC (obj);
|
|
|
|
|
|
|
|
g_free (musepackdec->r);
|
|
|
|
musepackdec->r = NULL;
|
2008-04-24 22:19:48 +00:00
|
|
|
|
|
|
|
if (musepackdec->d) {
|
|
|
|
mpc_demux_exit (musepackdec->d);
|
|
|
|
musepackdec->d = NULL;
|
|
|
|
}
|
Update to 1.1 API (#165446).
Original commit message from CVS:
* configure.ac:
* ext/musepack/Makefile.am:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_class_init),
(gst_musepackdec_init), (gst_musepackdec_dispose),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.cpp:
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_read), (gst_musepack_reader_seek),
(gst_musepack_reader_tell), (gst_musepack_reader_get_size),
(gst_musepack_reader_canseek), (gst_musepack_init_reader):
* ext/musepack/gstmusepackreader.cpp:
* ext/musepack/gstmusepackreader.h:
Update to 1.1 API (#165446).
2005-01-29 01:28:34 +00:00
|
|
|
|
|
|
|
G_OBJECT_CLASS (parent_class)->dispose (obj);
|
|
|
|
}
|
|
|
|
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
static void
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
gst_musepackdec_send_newsegment (GstMusepackDec * dec)
|
2005-11-22 15:09:28 +00:00
|
|
|
{
|
2016-07-04 14:54:53 +00:00
|
|
|
GstSegment os = dec->segment;
|
2005-11-22 15:09:28 +00:00
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
os.format = GST_FORMAT_TIME;
|
|
|
|
os.start = gst_util_uint64_scale_int (os.start, GST_SECOND, dec->rate);
|
|
|
|
if (os.stop)
|
|
|
|
os.stop = gst_util_uint64_scale_int (os.stop, GST_SECOND, dec->rate);
|
|
|
|
os.time = gst_util_uint64_scale_int (os.time, GST_SECOND, dec->rate);
|
2005-11-22 15:09:28 +00:00
|
|
|
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
GST_DEBUG_OBJECT (dec, "sending newsegment from %" GST_TIME_FORMAT
|
2016-07-04 14:54:53 +00:00
|
|
|
" to %" GST_TIME_FORMAT ", rate = %.1f", GST_TIME_ARGS (os.start),
|
|
|
|
GST_TIME_ARGS (os.stop), os.rate);
|
2005-11-22 15:09:28 +00:00
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
gst_pad_push_event (dec->srcpad, gst_event_new_segment (&os));
|
2005-11-22 15:09:28 +00:00
|
|
|
}
|
|
|
|
|
2004-11-07 18:30:06 +00:00
|
|
|
static gboolean
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
gst_musepackdec_handle_seek_event (GstMusepackDec * dec, GstEvent * event)
|
2004-11-07 18:30:06 +00:00
|
|
|
{
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
GstSeekType start_type, stop_type;
|
|
|
|
GstSeekFlags flags;
|
|
|
|
GstSegment segment;
|
|
|
|
GstFormat format;
|
|
|
|
gboolean flush;
|
|
|
|
gdouble rate;
|
|
|
|
gint64 start, stop;
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
gint samplerate;
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
|
|
|
|
gst_event_parse_seek (event, &rate, &format, &flags, &start_type, &start,
|
|
|
|
&stop_type, &stop);
|
|
|
|
|
|
|
|
if (format != GST_FORMAT_TIME && format != GST_FORMAT_DEFAULT) {
|
|
|
|
GST_DEBUG_OBJECT (dec, "seek failed: only TIME or DEFAULT format allowed");
|
|
|
|
return FALSE;
|
|
|
|
}
|
2004-11-07 18:30:06 +00:00
|
|
|
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
samplerate = g_atomic_int_get (&dec->rate);
|
2005-11-22 15:09:28 +00:00
|
|
|
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
if (format == GST_FORMAT_TIME) {
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
if (start_type != GST_SEEK_TYPE_NONE)
|
|
|
|
start = gst_util_uint64_scale_int (start, samplerate, GST_SECOND);
|
|
|
|
if (stop_type != GST_SEEK_TYPE_NONE)
|
|
|
|
stop = gst_util_uint64_scale_int (stop, samplerate, GST_SECOND);
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
}
|
2005-11-22 15:09:28 +00:00
|
|
|
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
flush = ((flags & GST_SEEK_FLAG_FLUSH) == GST_SEEK_FLAG_FLUSH);
|
2005-11-22 15:09:28 +00:00
|
|
|
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
if (flush)
|
|
|
|
gst_pad_push_event (dec->srcpad, gst_event_new_flush_start ());
|
|
|
|
else
|
|
|
|
gst_pad_pause_task (dec->sinkpad); /* not _stop_task()? */
|
|
|
|
|
|
|
|
GST_PAD_STREAM_LOCK (dec->sinkpad);
|
|
|
|
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
/* operate on segment copy until we know the seek worked */
|
|
|
|
segment = dec->segment;
|
2005-11-22 15:09:28 +00:00
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
gst_segment_do_seek (&segment, rate, GST_FORMAT_DEFAULT,
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
flags, start_type, start, stop_type, stop, NULL);
|
2004-11-07 18:30:06 +00:00
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
gst_pad_push_event (dec->sinkpad, gst_event_new_flush_stop (TRUE));
|
2004-11-07 18:30:06 +00:00
|
|
|
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
GST_DEBUG_OBJECT (dec, "segment: [%" G_GINT64_FORMAT "-%" G_GINT64_FORMAT
|
|
|
|
"] = [%" GST_TIME_FORMAT "-%" GST_TIME_FORMAT "]",
|
|
|
|
segment.start, segment.stop,
|
|
|
|
GST_TIME_ARGS (segment.start * GST_SECOND / dec->rate),
|
|
|
|
GST_TIME_ARGS (segment.stop * GST_SECOND / dec->rate));
|
|
|
|
|
|
|
|
GST_DEBUG_OBJECT (dec, "performing seek to sample %" G_GINT64_FORMAT,
|
|
|
|
segment.start);
|
|
|
|
|
2016-07-06 11:12:41 +00:00
|
|
|
if (segment.start >= segment.duration) {
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
GST_WARNING_OBJECT (dec, "seek out of bounds");
|
|
|
|
goto failed;
|
|
|
|
}
|
2008-04-24 22:19:48 +00:00
|
|
|
if (mpc_demux_seek_sample (dec->d, segment.start) != MPC_STATUS_OK)
|
|
|
|
goto failed;
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
|
2006-04-20 18:02:07 +00:00
|
|
|
if ((flags & GST_SEEK_FLAG_SEGMENT) == GST_SEEK_FLAG_SEGMENT) {
|
|
|
|
GST_DEBUG_OBJECT (dec, "posting SEGMENT_START message");
|
|
|
|
|
|
|
|
gst_element_post_message (GST_ELEMENT (dec),
|
|
|
|
gst_message_new_segment_start (GST_OBJECT (dec), GST_FORMAT_TIME,
|
|
|
|
gst_util_uint64_scale_int (segment.start, GST_SECOND, dec->rate)));
|
|
|
|
}
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
|
|
|
|
if (flush) {
|
2016-07-04 14:54:53 +00:00
|
|
|
gst_pad_push_event (dec->srcpad, gst_event_new_flush_stop (TRUE));
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
}
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
segment.position = segment.start;
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
dec->segment = segment;
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
gst_musepackdec_send_newsegment (dec);
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
|
|
|
|
GST_DEBUG_OBJECT (dec, "seek successful");
|
|
|
|
|
|
|
|
gst_pad_start_task (dec->sinkpad,
|
2012-06-20 08:34:48 +00:00
|
|
|
(GstTaskFunction) gst_musepackdec_loop, dec->sinkpad, NULL);
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
GST_PAD_STREAM_UNLOCK (dec->sinkpad);
|
|
|
|
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
failed:
|
|
|
|
{
|
|
|
|
GST_WARNING_OBJECT (dec, "seek failed");
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
GST_PAD_STREAM_UNLOCK (dec->sinkpad);
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static gboolean
|
2016-07-04 14:54:53 +00:00
|
|
|
gst_musepackdec_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
{
|
|
|
|
GstMusepackDec *dec;
|
|
|
|
gboolean res;
|
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
dec = GST_MUSEPACK_DEC (parent);
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
|
|
|
|
GST_DEBUG_OBJECT (dec, "handling %s event", GST_EVENT_TYPE_NAME (event));
|
|
|
|
|
|
|
|
switch (GST_EVENT_TYPE (event)) {
|
|
|
|
case GST_EVENT_SEEK:
|
|
|
|
res = gst_musepackdec_handle_seek_event (dec, event);
|
2004-11-07 18:30:06 +00:00
|
|
|
break;
|
|
|
|
default:
|
2016-07-04 14:54:53 +00:00
|
|
|
res = gst_pad_event_default (pad, parent, event);
|
2004-11-07 18:30:06 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
|
|
|
static gboolean
|
2016-07-04 14:54:53 +00:00
|
|
|
gst_musepackdec_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
|
2004-11-07 18:30:06 +00:00
|
|
|
{
|
2016-07-04 14:54:53 +00:00
|
|
|
GstMusepackDec *musepackdec = GST_MUSEPACK_DEC (parent);
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
GstFormat format;
|
|
|
|
gboolean res = FALSE;
|
|
|
|
gint samplerate;
|
2004-11-07 18:30:06 +00:00
|
|
|
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
samplerate = g_atomic_int_get (&musepackdec->rate);
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
|
2005-11-22 15:09:28 +00:00
|
|
|
switch (GST_QUERY_TYPE (query)) {
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
case GST_QUERY_POSITION:{
|
|
|
|
gint64 cur, cur_off;
|
|
|
|
|
2020-05-06 08:47:56 +00:00
|
|
|
if (samplerate == 0)
|
|
|
|
goto done;
|
|
|
|
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
gst_query_parse_position (query, &format, NULL);
|
|
|
|
|
|
|
|
GST_OBJECT_LOCK (musepackdec);
|
2016-07-04 14:54:53 +00:00
|
|
|
cur_off = musepackdec->segment.position;
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
GST_OBJECT_UNLOCK (musepackdec);
|
|
|
|
|
|
|
|
if (format == GST_FORMAT_TIME) {
|
|
|
|
cur = gst_util_uint64_scale_int (cur_off, GST_SECOND, samplerate);
|
|
|
|
gst_query_set_position (query, GST_FORMAT_TIME, cur);
|
|
|
|
res = TRUE;
|
|
|
|
} else if (format == GST_FORMAT_DEFAULT) {
|
|
|
|
gst_query_set_position (query, GST_FORMAT_DEFAULT, cur_off);
|
|
|
|
res = TRUE;
|
2005-11-22 15:09:28 +00:00
|
|
|
}
|
|
|
|
break;
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
}
|
|
|
|
case GST_QUERY_DURATION:{
|
|
|
|
gint64 len, len_off;
|
|
|
|
|
2020-05-06 08:47:56 +00:00
|
|
|
if (samplerate == 0)
|
|
|
|
goto done;
|
|
|
|
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
gst_query_parse_duration (query, &format, NULL);
|
|
|
|
|
|
|
|
GST_OBJECT_LOCK (musepackdec);
|
|
|
|
len_off = musepackdec->segment.duration;
|
|
|
|
GST_OBJECT_UNLOCK (musepackdec);
|
|
|
|
|
|
|
|
if (format == GST_FORMAT_TIME) {
|
|
|
|
len = gst_util_uint64_scale_int (len_off, GST_SECOND, samplerate);
|
|
|
|
gst_query_set_duration (query, GST_FORMAT_TIME, len);
|
|
|
|
res = TRUE;
|
|
|
|
} else if (format == GST_FORMAT_DEFAULT) {
|
|
|
|
gst_query_set_duration (query, GST_FORMAT_DEFAULT, len_off);
|
|
|
|
res = TRUE;
|
2005-11-22 15:09:28 +00:00
|
|
|
}
|
2004-11-07 18:30:06 +00:00
|
|
|
break;
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
}
|
2009-07-24 05:40:17 +00:00
|
|
|
case GST_QUERY_SEEKING:{
|
|
|
|
GstFormat fmt;
|
2016-07-04 14:54:53 +00:00
|
|
|
gint64 len, len_off;
|
2009-07-24 05:40:17 +00:00
|
|
|
|
|
|
|
res = TRUE;
|
|
|
|
gst_query_parse_seeking (query, &fmt, NULL, NULL, NULL);
|
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
GST_OBJECT_LOCK (musepackdec);
|
|
|
|
len_off = musepackdec->segment.duration;
|
|
|
|
GST_OBJECT_UNLOCK (musepackdec);
|
|
|
|
|
|
|
|
if (fmt == GST_FORMAT_TIME) {
|
|
|
|
len = gst_util_uint64_scale_int (len_off, GST_SECOND, samplerate);
|
|
|
|
gst_query_set_seeking (query, fmt, TRUE, 0, len);
|
|
|
|
} else if (fmt == GST_FORMAT_DEFAULT) {
|
|
|
|
gst_query_set_seeking (query, fmt, TRUE, 0, len_off);
|
|
|
|
} else {
|
|
|
|
gst_query_set_seeking (query, fmt, FALSE, -1, -1);
|
|
|
|
}
|
2009-07-24 05:40:17 +00:00
|
|
|
break;
|
|
|
|
}
|
2004-11-07 18:30:06 +00:00
|
|
|
default:
|
2016-07-04 14:54:53 +00:00
|
|
|
res = gst_pad_query_default (pad, parent, query);
|
2004-11-07 18:30:06 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2005-11-22 15:09:28 +00:00
|
|
|
done:
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
return res;
|
2004-11-07 18:30:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static gboolean
|
|
|
|
gst_musepack_stream_init (GstMusepackDec * musepackdec)
|
|
|
|
{
|
Update to 1.1 API (#165446).
Original commit message from CVS:
* configure.ac:
* ext/musepack/Makefile.am:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_class_init),
(gst_musepackdec_init), (gst_musepackdec_dispose),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.cpp:
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_read), (gst_musepack_reader_seek),
(gst_musepack_reader_tell), (gst_musepack_reader_get_size),
(gst_musepack_reader_canseek), (gst_musepack_init_reader):
* ext/musepack/gstmusepackreader.cpp:
* ext/musepack/gstmusepackreader.h:
Update to 1.1 API (#165446).
2005-01-29 01:28:34 +00:00
|
|
|
mpc_streaminfo i;
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
GstTagList *tags;
|
2004-12-03 18:13:43 +00:00
|
|
|
GstCaps *caps;
|
2016-07-04 14:54:53 +00:00
|
|
|
gchar *stream_id;
|
2004-11-07 18:30:06 +00:00
|
|
|
|
Update to 1.1 API (#165446).
Original commit message from CVS:
* configure.ac:
* ext/musepack/Makefile.am:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_class_init),
(gst_musepackdec_init), (gst_musepackdec_dispose),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.cpp:
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_read), (gst_musepack_reader_seek),
(gst_musepack_reader_tell), (gst_musepack_reader_get_size),
(gst_musepack_reader_canseek), (gst_musepack_init_reader):
* ext/musepack/gstmusepackreader.cpp:
* ext/musepack/gstmusepackreader.h:
Update to 1.1 API (#165446).
2005-01-29 01:28:34 +00:00
|
|
|
/* set up reading */
|
2005-11-22 15:09:28 +00:00
|
|
|
gst_musepack_init_reader (musepackdec->r, musepackdec);
|
2004-11-07 18:30:06 +00:00
|
|
|
|
2008-04-24 22:19:48 +00:00
|
|
|
musepackdec->d = mpc_demux_init (musepackdec->r);
|
|
|
|
if (!musepackdec->d) {
|
|
|
|
GST_ELEMENT_ERROR (musepackdec, STREAM, WRONG_TYPE, (NULL), (NULL));
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
mpc_demux_get_info (musepackdec->d, &i);
|
2004-11-07 18:30:06 +00:00
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
stream_id = gst_pad_create_stream_id (musepackdec->srcpad,
|
|
|
|
GST_ELEMENT_CAST (musepackdec), NULL);
|
|
|
|
gst_pad_push_event (musepackdec->srcpad,
|
|
|
|
gst_event_new_stream_start (stream_id));
|
|
|
|
g_free (stream_id);
|
|
|
|
|
Update to 1.1 API (#165446).
Original commit message from CVS:
* configure.ac:
* ext/musepack/Makefile.am:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_class_init),
(gst_musepackdec_init), (gst_musepackdec_dispose),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.cpp:
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_read), (gst_musepack_reader_seek),
(gst_musepack_reader_tell), (gst_musepack_reader_get_size),
(gst_musepack_reader_canseek), (gst_musepack_init_reader):
* ext/musepack/gstmusepackreader.cpp:
* ext/musepack/gstmusepackreader.h:
Update to 1.1 API (#165446).
2005-01-29 01:28:34 +00:00
|
|
|
/* capsnego */
|
2016-07-04 14:54:53 +00:00
|
|
|
caps = gst_caps_new_simple ("audio/x-raw",
|
|
|
|
"format", G_TYPE_STRING, GST_MPC_FORMAT,
|
|
|
|
"layout", G_TYPE_STRING, "interleaved",
|
Update to 1.1 API (#165446).
Original commit message from CVS:
* configure.ac:
* ext/musepack/Makefile.am:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_class_init),
(gst_musepackdec_init), (gst_musepackdec_dispose),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.cpp:
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_read), (gst_musepack_reader_seek),
(gst_musepack_reader_tell), (gst_musepack_reader_get_size),
(gst_musepack_reader_canseek), (gst_musepack_init_reader):
* ext/musepack/gstmusepackreader.cpp:
* ext/musepack/gstmusepackreader.h:
Update to 1.1 API (#165446).
2005-01-29 01:28:34 +00:00
|
|
|
"channels", G_TYPE_INT, i.channels,
|
|
|
|
"rate", G_TYPE_INT, i.sample_freq, NULL);
|
2005-11-22 15:09:28 +00:00
|
|
|
gst_pad_use_fixed_caps (musepackdec->srcpad);
|
|
|
|
if (!gst_pad_set_caps (musepackdec->srcpad, caps)) {
|
2004-11-07 18:30:06 +00:00
|
|
|
GST_ELEMENT_ERROR (musepackdec, CORE, NEGOTIATION, (NULL), (NULL));
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
2008-04-24 22:19:48 +00:00
|
|
|
g_atomic_int_set (&musepackdec->bps, 4 * i.channels);
|
|
|
|
g_atomic_int_set (&musepackdec->rate, i.sample_freq);
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
musepackdec->segment.position = 0;
|
|
|
|
musepackdec->segment.duration = mpc_streaminfo_get_length_samples (&i);
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
|
|
|
|
/* send basic tags */
|
2016-07-04 14:54:53 +00:00
|
|
|
tags = gst_tag_list_new_empty ();
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE,
|
|
|
|
GST_TAG_AUDIO_CODEC, "Musepack", NULL);
|
|
|
|
|
|
|
|
if (i.encoder[0] != '\0' && i.encoder_version > 0) {
|
|
|
|
gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE,
|
|
|
|
GST_TAG_ENCODER, i.encoder,
|
|
|
|
GST_TAG_ENCODER_VERSION, i.encoder_version, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (i.bitrate > 0) {
|
|
|
|
gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE,
|
|
|
|
GST_TAG_BITRATE, i.bitrate, NULL);
|
|
|
|
} else if (i.average_bitrate > 0.0) {
|
|
|
|
gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE,
|
|
|
|
GST_TAG_BITRATE, (guint) i.average_bitrate, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (i.gain_title != 0 || i.gain_album != 0) {
|
|
|
|
gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE,
|
|
|
|
GST_TAG_TRACK_GAIN, (gdouble) i.gain_title / 100.0,
|
|
|
|
GST_TAG_ALBUM_GAIN, (gdouble) i.gain_album / 100.0, NULL);
|
|
|
|
}
|
|
|
|
|
2006-04-14 13:12:58 +00:00
|
|
|
if (i.peak_title != 0 && i.peak_title != 32767 &&
|
|
|
|
i.peak_album != 0 && i.peak_album != 32767) {
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE,
|
2006-04-14 13:12:58 +00:00
|
|
|
GST_TAG_TRACK_PEAK, (gdouble) i.peak_title / 32767.0,
|
|
|
|
GST_TAG_ALBUM_PEAK, (gdouble) i.peak_album / 32767.0, NULL);
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
GST_LOG_OBJECT (musepackdec, "Posting tags: %" GST_PTR_FORMAT, tags);
|
2016-07-04 14:54:53 +00:00
|
|
|
gst_pad_push_event (musepackdec->srcpad, gst_event_new_tag (tags));
|
|
|
|
|
2004-11-07 18:30:06 +00:00
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
2005-11-22 15:09:28 +00:00
|
|
|
static gboolean
|
2016-07-04 14:54:53 +00:00
|
|
|
gst_musepackdec_sink_activate (GstPad * sinkpad, GstObject * parent)
|
2005-11-22 15:09:28 +00:00
|
|
|
{
|
2016-07-04 14:54:53 +00:00
|
|
|
GstQuery *query;
|
|
|
|
gboolean pull_mode;
|
|
|
|
|
|
|
|
query = gst_query_new_scheduling ();
|
|
|
|
|
|
|
|
if (!gst_pad_peer_query (sinkpad, query)) {
|
|
|
|
gst_query_unref (query);
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
pull_mode = gst_query_has_scheduling_mode_with_flags (query,
|
|
|
|
GST_PAD_MODE_PULL, GST_SCHEDULING_FLAG_SEEKABLE);
|
|
|
|
gst_query_unref (query);
|
|
|
|
|
|
|
|
if (!pull_mode)
|
2005-11-22 15:09:28 +00:00
|
|
|
return FALSE;
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
GST_DEBUG_OBJECT (sinkpad, "activating pull");
|
|
|
|
return gst_pad_activate_mode (sinkpad, GST_PAD_MODE_PULL, TRUE);
|
2005-11-22 15:09:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static gboolean
|
2016-07-04 14:54:53 +00:00
|
|
|
gst_musepackdec_sink_activate_mode (GstPad * sinkpad, GstObject * parent,
|
|
|
|
GstPadMode mode, gboolean active)
|
2005-11-22 15:09:28 +00:00
|
|
|
{
|
|
|
|
gboolean result;
|
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
switch (mode) {
|
|
|
|
case GST_PAD_MODE_PUSH:
|
|
|
|
result = FALSE;
|
|
|
|
break;
|
|
|
|
case GST_PAD_MODE_PULL:
|
|
|
|
if (active) {
|
|
|
|
result = gst_pad_start_task (sinkpad,
|
|
|
|
(GstTaskFunction) gst_musepackdec_loop, sinkpad, NULL);
|
|
|
|
} else {
|
|
|
|
result = gst_pad_stop_task (sinkpad);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
result = FALSE;
|
|
|
|
break;
|
2005-11-22 15:09:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
2004-11-07 18:30:06 +00:00
|
|
|
static void
|
2005-11-22 15:09:28 +00:00
|
|
|
gst_musepackdec_loop (GstPad * sinkpad)
|
2004-11-07 18:30:06 +00:00
|
|
|
{
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
GstMusepackDec *musepackdec;
|
|
|
|
GstFlowReturn flow;
|
2004-11-07 18:30:06 +00:00
|
|
|
GstBuffer *out;
|
2016-07-04 14:54:53 +00:00
|
|
|
GstMapInfo info;
|
2008-04-24 22:19:48 +00:00
|
|
|
mpc_frame_info frame;
|
|
|
|
mpc_status err;
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
gint num_samples, samplerate, bitspersample;
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
|
|
|
|
musepackdec = GST_MUSEPACK_DEC (GST_PAD_PARENT (sinkpad));
|
2004-11-07 18:30:06 +00:00
|
|
|
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
samplerate = g_atomic_int_get (&musepackdec->rate);
|
|
|
|
|
|
|
|
if (samplerate == 0) {
|
2004-11-07 18:30:06 +00:00
|
|
|
if (!gst_musepack_stream_init (musepackdec))
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
goto pause_task;
|
2004-11-07 18:30:06 +00:00
|
|
|
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
gst_musepackdec_send_newsegment (musepackdec);
|
|
|
|
samplerate = g_atomic_int_get (&musepackdec->rate);
|
2004-11-07 18:30:06 +00:00
|
|
|
}
|
|
|
|
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
bitspersample = g_atomic_int_get (&musepackdec->bps);
|
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
out = gst_buffer_new_allocate (NULL, MPC_DECODER_BUFFER_LENGTH * 4, NULL);
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
gst_buffer_map (out, &info, GST_MAP_READWRITE);
|
|
|
|
frame.buffer = (MPC_SAMPLE_FORMAT *) info.data;
|
2008-04-24 22:19:48 +00:00
|
|
|
err = mpc_demux_decode (musepackdec->d, &frame);
|
2016-07-04 14:54:53 +00:00
|
|
|
gst_buffer_unmap (out, &info);
|
2008-04-24 22:19:48 +00:00
|
|
|
|
|
|
|
if (err != MPC_STATUS_OK) {
|
|
|
|
GST_ERROR_OBJECT (musepackdec, "Failed to decode sample");
|
|
|
|
GST_ELEMENT_ERROR (musepackdec, STREAM, DECODE, (NULL), (NULL));
|
|
|
|
goto pause_task;
|
|
|
|
} else if (frame.bits == -1) {
|
|
|
|
goto eos_and_pause;
|
|
|
|
}
|
|
|
|
|
|
|
|
num_samples = frame.samples;
|
Update to 1.1 API (#165446).
Original commit message from CVS:
* configure.ac:
* ext/musepack/Makefile.am:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_class_init),
(gst_musepackdec_init), (gst_musepackdec_dispose),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.cpp:
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_read), (gst_musepack_reader_seek),
(gst_musepack_reader_tell), (gst_musepack_reader_get_size),
(gst_musepack_reader_canseek), (gst_musepack_init_reader):
* ext/musepack/gstmusepackreader.cpp:
* ext/musepack/gstmusepackreader.h:
Update to 1.1 API (#165446).
2005-01-29 01:28:34 +00:00
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
gst_buffer_set_size (out, num_samples * bitspersample);
|
2005-11-22 15:09:28 +00:00
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
GST_BUFFER_OFFSET (out) = musepackdec->segment.position;
|
|
|
|
GST_BUFFER_PTS (out) =
|
|
|
|
gst_util_uint64_scale_int (musepackdec->segment.position,
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
GST_SECOND, samplerate);
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
GST_BUFFER_DURATION (out) =
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
gst_util_uint64_scale_int (num_samples, GST_SECOND, samplerate);
|
2005-11-22 15:09:28 +00:00
|
|
|
|
2016-07-04 14:54:53 +00:00
|
|
|
musepackdec->segment.position += num_samples;
|
2005-11-22 15:09:28 +00:00
|
|
|
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
GST_LOG_OBJECT (musepackdec, "Pushing buffer, timestamp %" GST_TIME_FORMAT,
|
2005-12-12 10:40:42 +00:00
|
|
|
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (out)));
|
|
|
|
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
flow = gst_pad_push (musepackdec->srcpad, out);
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
if (flow != GST_FLOW_OK) {
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
GST_DEBUG_OBJECT (musepackdec, "Flow: %s", gst_flow_get_name (flow));
|
|
|
|
goto pause_task;
|
|
|
|
}
|
|
|
|
|
2006-04-20 18:02:07 +00:00
|
|
|
/* check if we're at the end of a configured segment */
|
|
|
|
if (musepackdec->segment.stop != -1 &&
|
2016-07-04 14:54:53 +00:00
|
|
|
musepackdec->segment.position >= musepackdec->segment.stop) {
|
2006-04-20 18:02:07 +00:00
|
|
|
gint64 stop_time;
|
|
|
|
|
|
|
|
GST_DEBUG_OBJECT (musepackdec, "Reached end of configured segment");
|
|
|
|
|
|
|
|
if ((musepackdec->segment.flags & GST_SEEK_FLAG_SEGMENT) == 0)
|
|
|
|
goto eos_and_pause;
|
|
|
|
|
|
|
|
GST_DEBUG_OBJECT (musepackdec, "Posting SEGMENT_DONE message");
|
|
|
|
|
|
|
|
stop_time = gst_util_uint64_scale_int (musepackdec->segment.stop,
|
|
|
|
GST_SECOND, samplerate);
|
|
|
|
|
|
|
|
gst_element_post_message (GST_ELEMENT (musepackdec),
|
|
|
|
gst_message_new_segment_done (GST_OBJECT (musepackdec),
|
|
|
|
GST_FORMAT_TIME, stop_time));
|
2012-07-05 11:18:47 +00:00
|
|
|
gst_pad_push_event (musepackdec->srcpad,
|
|
|
|
gst_event_new_segment_done (GST_FORMAT_TIME, stop_time));
|
2006-04-20 18:02:07 +00:00
|
|
|
|
|
|
|
goto pause_task;
|
|
|
|
}
|
|
|
|
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
return;
|
|
|
|
|
2006-04-20 18:02:07 +00:00
|
|
|
eos_and_pause:
|
|
|
|
{
|
|
|
|
GST_DEBUG_OBJECT (musepackdec, "sending EOS event");
|
|
|
|
gst_pad_push_event (musepackdec->srcpad, gst_event_new_eos ());
|
|
|
|
/* fall through to pause */
|
|
|
|
}
|
|
|
|
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
pause_task:
|
|
|
|
{
|
|
|
|
GST_DEBUG_OBJECT (musepackdec, "Pausing task");
|
|
|
|
gst_pad_pause_task (sinkpad);
|
|
|
|
return;
|
|
|
|
}
|
2004-11-07 18:30:06 +00:00
|
|
|
}
|
|
|
|
|
2005-09-05 17:20:29 +00:00
|
|
|
static GstStateChangeReturn
|
|
|
|
gst_musepackdec_change_state (GstElement * element, GstStateChange transition)
|
2004-11-07 18:30:06 +00:00
|
|
|
{
|
|
|
|
GstMusepackDec *musepackdec = GST_MUSEPACK_DEC (element);
|
2005-11-22 15:09:28 +00:00
|
|
|
GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
|
|
|
|
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
switch (transition) {
|
|
|
|
case GST_STATE_CHANGE_READY_TO_PAUSED:
|
|
|
|
gst_segment_init (&musepackdec->segment, GST_FORMAT_DEFAULT);
|
2016-07-04 14:54:53 +00:00
|
|
|
musepackdec->segment.position = 0;
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2005-11-22 15:09:28 +00:00
|
|
|
if (GST_ELEMENT_CLASS (parent_class)->change_state)
|
|
|
|
ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
|
|
|
|
|
2005-09-05 17:20:29 +00:00
|
|
|
switch (transition) {
|
|
|
|
case GST_STATE_CHANGE_PAUSED_TO_READY:
|
ext/musepack/: Fix seeking in musepack files (it's still incredibly slow, but I don't think that is our plugin's faul...
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_class_init), (gst_musepackdec_init),
(gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event), (gst_musepackdec_src_event),
(gst_musepackdec_src_query), (gst_musepackdec_src_convert),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate_pull),
(gst_musepackdec_loop), (gst_musepackdec_change_state):
* ext/musepack/gstmusepackdec.h:
* ext/musepack/gstmusepackreader.c: (gst_musepack_reader_peek),
(gst_musepack_reader_seek), (gst_musepack_reader_tell),
(gst_musepack_reader_get_size):
* ext/musepack/gstmusepackreader.h:
Fix seeking in musepack files (it's still incredibly slow, but I
don't think that is our plugin's fault). Clean up code and get
rid of old cruft. Post tags with all kind of neat information like
replay gain and such on the bus, if it is available. Add a
'musepackdec' debug category.
2006-01-24 21:33:25 +00:00
|
|
|
gst_segment_init (&musepackdec->segment, GST_FORMAT_UNDEFINED);
|
|
|
|
musepackdec->offset = 0;
|
ext/musepack/gstmusepackdec.c: Some cleanups; pause task when push fails.
Original commit message from CVS:
* ext/musepack/gstmusepackdec.c: (gst_musepackdec_base_init),
(gst_musepackdec_init), (gst_musepackdec_send_newsegment),
(gst_musepackdec_handle_seek_event),
(gst_musepackdec_get_src_query_types), (gst_musepackdec_src_query),
(gst_musepack_stream_init), (gst_musepackdec_sink_activate),
(gst_musepackdec_sink_activate_pull), (gst_musepackdec_loop),
(gst_musepackdec_change_state):
Some cleanups; pause task when push fails.
2006-03-06 13:13:44 +00:00
|
|
|
musepackdec->rate = 0;
|
|
|
|
musepackdec->bps = 0;
|
2004-11-07 18:30:06 +00:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2005-11-22 15:09:28 +00:00
|
|
|
return ret;
|
2004-11-07 18:30:06 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
static gboolean
|
|
|
|
plugin_init (GstPlugin * plugin)
|
|
|
|
{
|
2021-02-18 09:24:18 +00:00
|
|
|
return GST_ELEMENT_REGISTER (musepackdec, plugin);
|
2004-11-07 18:30:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
|
|
|
|
GST_VERSION_MINOR,
|
2012-04-05 16:02:56 +00:00
|
|
|
musepack,
|
2006-04-01 10:09:11 +00:00
|
|
|
"Musepack decoder", plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME,
|
|
|
|
GST_PACKAGE_ORIGIN)
|