mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-31 19:42:26 +00:00
ext/amrnb/amrnbparse.c: use #defines for HEADER. Unref the object in _sink_activate_pull().
Original commit message from CVS: * ext/amrnb/amrnbparse.c: use #defines for HEADER. Unref the object in _sink_activate_pull().
This commit is contained in:
parent
26209707d9
commit
b3f491c6e1
2 changed files with 26 additions and 13 deletions
|
@ -1,3 +1,8 @@
|
|||
2008-10-09 Stefan Kost <ensonic@users.sf.net>
|
||||
|
||||
* ext/amrnb/amrnbparse.c:
|
||||
use #defines for HEADER. Unref the object in _sink_activate_pull().
|
||||
|
||||
2008-10-08 Wim Taymans <wim.taymans@collabora.co.uk>
|
||||
|
||||
* ext/mad/gstmad.c: (gst_mad_src_event), (gst_mad_chain),
|
||||
|
|
|
@ -57,6 +57,9 @@ static const gint block_size[16] = { 12, 13, 15, 17, 19, 20, 26, 31, 5,
|
|||
0, 0, 0, 0, 0, 0, 0
|
||||
};
|
||||
|
||||
#define AMRNB_HEADER_SIZE 6
|
||||
#define AMRNB_HEADER_STR "#!AMR\n"
|
||||
|
||||
/*static const GstFormat *gst_amrnbparse_formats (GstPad * pad);*/
|
||||
static const GstQueryType *gst_amrnbparse_querytypes (GstPad * pad);
|
||||
static gboolean gst_amrnbparse_query (GstPad * pad, GstQuery * query);
|
||||
|
@ -180,6 +183,7 @@ gst_amrnbparse_querytypes (GstPad * pad)
|
|||
{
|
||||
static const GstQueryType list[] = {
|
||||
GST_QUERY_POSITION,
|
||||
GST_QUERY_DURATION,
|
||||
0
|
||||
};
|
||||
|
||||
|
@ -296,9 +300,10 @@ gst_amrnbparse_handle_pull_seek (GstAmrnbParse * amrnbparse, GstPad * pad,
|
|||
* decoding. */
|
||||
cur = cur / (20 * GST_MSECOND) * (20 * GST_MSECOND);
|
||||
if (cur != -1)
|
||||
byte_cur = amrnbparse->block * (cur / 20 / GST_MSECOND) + 6;
|
||||
byte_cur = amrnbparse->block * (cur / 20 / GST_MSECOND) + AMRNB_HEADER_SIZE;
|
||||
if (stop != -1)
|
||||
byte_stop = amrnbparse->block * (stop / 20 / GST_MSECOND) + 6;
|
||||
byte_stop =
|
||||
amrnbparse->block * (stop / 20 / GST_MSECOND) + AMRNB_HEADER_SIZE;
|
||||
amrnbparse->offset = byte_cur;
|
||||
amrnbparse->ts = cur;
|
||||
|
||||
|
@ -354,9 +359,10 @@ gst_amrnbparse_handle_push_seek (GstAmrnbParse * amrnbparse, GstPad * pad,
|
|||
* decoding. */
|
||||
cur = cur / (20 * GST_MSECOND) * (20 * GST_MSECOND);
|
||||
if (cur != -1)
|
||||
byte_cur = amrnbparse->block * (cur / 20 / GST_MSECOND) + 6;
|
||||
byte_cur = amrnbparse->block * (cur / 20 / GST_MSECOND) + AMRNB_HEADER_SIZE;
|
||||
if (stop != -1)
|
||||
byte_stop = amrnbparse->block * (stop / 20 / GST_MSECOND) + 6;
|
||||
byte_stop =
|
||||
amrnbparse->block * (stop / 20 / GST_MSECOND) + AMRNB_HEADER_SIZE;
|
||||
amrnbparse->ts = cur;
|
||||
|
||||
GST_DEBUG_OBJECT (amrnbparse, "Seeking to byte range %" G_GINT64_FORMAT
|
||||
|
@ -464,14 +470,14 @@ gst_amrnbparse_chain (GstPad * pad, GstBuffer * buffer)
|
|||
GstEvent *segev;
|
||||
GstCaps *caps;
|
||||
|
||||
if (gst_adapter_available (amrnbparse->adapter) < 6)
|
||||
if (gst_adapter_available (amrnbparse->adapter) < AMRNB_HEADER_SIZE)
|
||||
goto done;
|
||||
|
||||
data = gst_adapter_peek (amrnbparse->adapter, 6);
|
||||
if (memcmp (data, "#!AMR\n", 6) != 0)
|
||||
data = gst_adapter_peek (amrnbparse->adapter, AMRNB_HEADER_SIZE);
|
||||
if (memcmp (data, AMRNB_HEADER_STR, AMRNB_HEADER_SIZE) != 0)
|
||||
goto done;
|
||||
|
||||
gst_adapter_flush (amrnbparse->adapter, 6);
|
||||
gst_adapter_flush (amrnbparse->adapter, AMRNB_HEADER_SIZE);
|
||||
|
||||
amrnbparse->need_header = FALSE;
|
||||
|
||||
|
@ -531,21 +537,22 @@ gst_amrnbparse_pull_header (GstAmrnbParse * amrnbparse)
|
|||
guint8 *data;
|
||||
gint size;
|
||||
|
||||
ret = gst_pad_pull_range (amrnbparse->sinkpad, 0, 6, &buffer);
|
||||
ret = gst_pad_pull_range (amrnbparse->sinkpad, G_GUINT64_CONSTANT (0),
|
||||
AMRNB_HEADER_SIZE, &buffer);
|
||||
if (ret != GST_FLOW_OK)
|
||||
return FALSE;
|
||||
|
||||
data = GST_BUFFER_DATA (buffer);
|
||||
size = GST_BUFFER_SIZE (buffer);
|
||||
if (size < 6)
|
||||
if (size < AMRNB_HEADER_SIZE)
|
||||
goto not_enough;
|
||||
|
||||
if (memcmp (data, "#!AMR\n", 6))
|
||||
if (memcmp (data, AMRNB_HEADER_STR, AMRNB_HEADER_SIZE))
|
||||
goto no_header;
|
||||
|
||||
gst_buffer_unref (buffer);
|
||||
|
||||
amrnbparse->offset = 6;
|
||||
amrnbparse->offset = AMRNB_HEADER_SIZE;
|
||||
return TRUE;
|
||||
|
||||
not_enough:
|
||||
|
@ -720,8 +727,8 @@ gst_amrnbparse_sink_activate_push (GstPad * sinkpad, gboolean active)
|
|||
} else {
|
||||
amrnbparse->seek_handler = NULL;
|
||||
}
|
||||
gst_object_unref (amrnbparse);
|
||||
|
||||
gst_object_unref (amrnbparse);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -740,6 +747,7 @@ gst_amrnbparse_sink_activate_pull (GstPad * sinkpad, gboolean active)
|
|||
result = gst_pad_stop_task (sinkpad);
|
||||
}
|
||||
|
||||
gst_object_unref (amrnbparse);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue