summaryrefslogtreecommitdiff
path: root/ext/wavpack
diff options
context:
space:
mode:
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2012-03-05 13:29:59 +0100
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2012-03-05 13:29:59 +0100
commit26dd999b68a50d51c4c18817b472832fb5f07228 (patch)
treef1ceff3b8289f13f4dba6f86986d5f36fe11e233 /ext/wavpack
parent2adc948d186a1162b111519ae3cee741c9602629 (diff)
parenta83d2f70473d161dbb6c9ceff21dc214ec9db3a8 (diff)
downloadgstreamer-plugins-good-26dd999b68a50d51c4c18817b472832fb5f07228.tar.gz
Merge branch 'master' into 0.11
Conflicts: ext/wavpack/gstwavpackparse.c sys/v4l2/gstv4l2bufferpool.c sys/v4l2/gstv4l2bufferpool.h sys/v4l2/gstv4l2videooverlay.c
Diffstat (limited to 'ext/wavpack')
-rw-r--r--ext/wavpack/gstwavpackdec.c6
-rw-r--r--ext/wavpack/gstwavpackenc.c7
-rw-r--r--ext/wavpack/gstwavpackparse.c43
3 files changed, 13 insertions, 43 deletions
diff --git a/ext/wavpack/gstwavpackdec.c b/ext/wavpack/gstwavpackdec.c
index 8f0778d63..8e24a3182 100644
--- a/ext/wavpack/gstwavpackdec.c
+++ b/ext/wavpack/gstwavpackdec.c
@@ -171,6 +171,8 @@ gst_wavpack_dec_start (GstAudioDecoder * dec)
gst_audio_decoder_set_max_errors (dec, 16);
/* don't bother us with flushing */
gst_audio_decoder_set_drainable (dec, FALSE);
+ /* aim for some perfect timestamping */
+ gst_audio_decoder_set_tolerance (dec, 10 * GST_MSECOND);
return TRUE;
}
@@ -396,14 +398,14 @@ gst_wavpack_dec_handle_frame (GstAudioDecoder * bdec, GstBuffer * buf)
if (width == 8) {
gint8 *outbuffer = (gint8 *) out_data;
- for (i = 0; i < max; i--) {
+ for (i = 0; i < max; i++) {
*outbuffer++ = (gint8) (dec_data[i]);
}
} else if (width == 16) {
gint16 *outbuffer = (gint16 *) out_data;
for (i = 0; i < max; i++) {
- *outbuffer++ = (gint8) (dec_data[i]);
+ *outbuffer++ = (gint16) (dec_data[i]);
}
} else if (dec->width == 32) {
gint32 *outbuffer = (gint32 *) out_data;
diff --git a/ext/wavpack/gstwavpackenc.c b/ext/wavpack/gstwavpackenc.c
index 0d2515fa5..33c4254c3 100644
--- a/ext/wavpack/gstwavpackenc.c
+++ b/ext/wavpack/gstwavpackenc.c
@@ -619,6 +619,13 @@ gst_wavpack_enc_push_block (void *id, void *data, int32_t count)
}
}
samples = wph.block_samples;
+
+ /* decorate buffer */
+ /* NOTE: this will get overwritten by baseclass, but stay for those
+ * that are pushed directly
+ * FIXME: add setting to baseclass to avoid overwriting it ?? */
+ GST_BUFFER_OFFSET (buffer) = wph.block_index;
+ GST_BUFFER_OFFSET_END (buffer) = wph.block_index + wph.block_samples;
} else {
/* if it's something else set no timestamp and duration on the buffer */
GST_DEBUG_OBJECT (enc, "got %d bytes of unknown data", count);
diff --git a/ext/wavpack/gstwavpackparse.c b/ext/wavpack/gstwavpackparse.c
index 5ffa7a5f3..0af0a90ea 100644
--- a/ext/wavpack/gstwavpackparse.c
+++ b/ext/wavpack/gstwavpackparse.c
@@ -142,7 +142,6 @@ static void
gst_wavpack_parse_class_init (GstWavpackParseClass * klass)
{
GObjectClass *gobject_class;
-
GstElementClass *gstelement_class;
gobject_class = (GObjectClass *) klass;
@@ -166,7 +165,6 @@ gst_wavpack_parse_index_get_entry_from_sample (GstWavpackParse * wvparse,
gint64 sample_offset)
{
gint i;
-
GSList *node;
if (wvparse->entries == NULL)
@@ -287,9 +285,7 @@ static gboolean
gst_wavpack_parse_src_query (GstPad * pad, GstQuery * query)
{
GstWavpackParse *parse = GST_WAVPACK_PARSE (gst_pad_get_parent (pad));
-
GstFormat format;
-
gboolean ret = FALSE;
switch (GST_QUERY_TYPE (query)) {
@@ -409,9 +405,7 @@ gst_wavpack_parse_scan_to_find_sample (GstWavpackParse * parse,
gint64 sample, gint64 * byte_offset, gint64 * start_sample)
{
GstWavpackParseIndexEntry *entry;
-
GstFlowReturn ret;
-
gint64 off = 0;
/* first, check if we have to scan at all */
@@ -439,7 +433,6 @@ gst_wavpack_parse_scan_to_find_sample (GstWavpackParse * parse,
/* now scan forward until we find the chunk we're looking for or hit EOS */
do {
WavpackHeader header;
-
GstBuffer *buf;
buf = gst_wavpack_parse_pull_buffer (parse, off, sizeof (WavpackHeader),
@@ -479,13 +472,9 @@ gst_wavpack_parse_send_newsegment (GstWavpackParse * wvparse, gboolean update)
GstSegment *s = &wvparse->segment;
gboolean ret;
-
gint64 stop_time = -1;
-
gint64 start_time = 0;
-
gint64 cur_pos_time;
-
gint64 diff;
/* segment is in DEFAULT format, but we want to send a TIME newsegment */
@@ -522,31 +511,18 @@ gst_wavpack_parse_handle_seek_event (GstWavpackParse * wvparse,
GstEvent * event)
{
GstSeekFlags seek_flags;
-
GstSeekType start_type;
-
GstSeekType stop_type;
-
GstSegment segment;
-
GstFormat format;
-
gboolean only_update;
-
gboolean flush, ret;
-
gdouble speed;
-
gint64 stop;
-
gint64 start; /* sample we want to seek to */
-
gint64 byte_offset; /* byte offset the chunk we seek to starts at */
-
gint64 chunk_start; /* first sample in chunk we seek to */
-
guint rate;
-
gint64 last_stop;
if (wvparse->adapter) {
@@ -672,7 +648,6 @@ static gboolean
gst_wavpack_parse_sink_event (GstPad * pad, GstEvent * event)
{
GstWavpackParse *parse;
-
gboolean ret = TRUE;
parse = GST_WAVPACK_PARSE (gst_pad_get_parent (pad));
@@ -731,7 +706,6 @@ static gboolean
gst_wavpack_parse_src_event (GstPad * pad, GstEvent * event)
{
GstWavpackParse *parse;
-
gboolean ret;
parse = GST_WAVPACK_PARSE (gst_pad_get_parent (pad));
@@ -753,7 +727,6 @@ static void
gst_wavpack_parse_init (GstWavpackParse * parse, GstWavpackParseClass * gclass)
{
GstElementClass *klass = GST_ELEMENT_GET_CLASS (parse);
-
GstPadTemplate *tmpl;
tmpl = gst_element_class_get_pad_template (klass, "sink");
@@ -778,7 +751,6 @@ static gint64
gst_wavpack_parse_get_upstream_length (GstWavpackParse * parse)
{
gint64 length = -1;
-
GstFormat format = GST_FORMAT_BYTES;
if (!gst_pad_query_peer_duration (parse->sinkpad, &format, &length)) {
@@ -794,7 +766,6 @@ gst_wavpack_parse_pull_buffer (GstWavpackParse * wvparse, gint64 offset,
guint size, GstFlowReturn * flow)
{
GstFlowReturn flow_ret;
-
GstBuffer *buf = NULL;
if (offset + size > wvparse->upstream_length) {
@@ -835,9 +806,7 @@ gst_wavpack_parse_create_src_pad (GstWavpackParse * wvparse, GstBuffer * buf,
WavpackHeader * header)
{
GstWavpackMetadata meta;
-
GstCaps *caps = NULL;
-
guchar *bufptr;
g_assert (wvparse->srcpad == NULL);
@@ -952,8 +921,8 @@ gst_wavpack_parse_push_buffer (GstWavpackParse * wvparse, GstBuffer * buf,
WavpackHeader * header)
{
GstFlowReturn ret;
- wvparse->current_offset += header->ckSize + 8;
+ wvparse->current_offset += header->ckSize + 8;
wvparse->segment.last_stop = header->block_index;
if (wvparse->need_newsegment) {
@@ -1019,8 +988,7 @@ gst_wavpack_parse_push_buffer (GstWavpackParse * wvparse, GstBuffer * buf,
static guint8 *
gst_wavpack_parse_find_marker (guint8 * buf, guint size)
{
- int i;
-
+ gint i;
guint8 *ret = NULL;
if (G_UNLIKELY (size < 4))
@@ -1039,7 +1007,6 @@ static GstFlowReturn
gst_wavpack_parse_resync_loop (GstWavpackParse * parse, WavpackHeader * header)
{
GstFlowReturn flow_ret = GST_FLOW_EOS;
-
GstBuffer *buf = NULL;
/* loop until we have a frame header or reach the end of the stream */
@@ -1106,7 +1073,6 @@ static void
gst_wavpack_parse_loop (GstElement * element)
{
GstWavpackParse *parse = GST_WAVPACK_PARSE (element);
-
GstFlowReturn flow_ret;
WavpackHeader header = { {0,}, 0, };
GstBuffer *buf = NULL;
@@ -1180,7 +1146,6 @@ static gboolean
gst_wavpack_parse_resync_adapter (GstAdapter * adapter)
{
const guint8 *buf, *marker;
-
guint avail = gst_adapter_available (adapter);
if (avail < 4)
@@ -1212,11 +1177,8 @@ static GstFlowReturn
gst_wavpack_parse_chain (GstPad * pad, GstBuffer * buf)
{
GstWavpackParse *wvparse = GST_WAVPACK_PARSE (GST_PAD_PARENT (pad));
-
GstFlowReturn ret = GST_FLOW_OK;
-
WavpackHeader wph;
-
const guint8 *tmp_buf;
if (!wvparse->adapter) {
@@ -1276,7 +1238,6 @@ static GstStateChangeReturn
gst_wavpack_parse_change_state (GstElement * element, GstStateChange transition)
{
GstWavpackParse *wvparse = GST_WAVPACK_PARSE (element);
-
GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
switch (transition) {