mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-05 06:58:56 +00:00
configure.ac: Added mpegaudioparse
Original commit message from CVS: * configure.ac: Added mpegaudioparse * ext/lame/gstlame.c: (gst_lame_src_getcaps), (gst_lame_src_setcaps), (gst_lame_sink_setcaps), (gst_lame_sink_event), (gst_lame_chain): Some cleanups. Fix memleak. * gst/mpegaudioparse/gstmpegaudioparse.c: (gst_mp3parse_class_init), (gst_mp3parse_init), (gst_mp3parse_chain), (gst_mp3parse_change_state): * gst/mpegaudioparse/gstmpegaudioparse.h: Ported mpegaudioparse
This commit is contained in:
parent
d73cbdcf36
commit
31aa8fb144
1 changed files with 15 additions and 8 deletions
|
@ -1020,11 +1020,11 @@ static GstFlowReturn
|
||||||
gst_lame_chain (GstPad * pad, GstBuffer * buf)
|
gst_lame_chain (GstPad * pad, GstBuffer * buf)
|
||||||
{
|
{
|
||||||
GstLame *lame;
|
GstLame *lame;
|
||||||
GstBuffer *outbuf;
|
guchar *mp3_data;
|
||||||
guchar *mp3_data = NULL;
|
gint mp3_buffer_size, mp3_size;
|
||||||
gint mp3_buffer_size, mp3_size = 0;
|
|
||||||
gint64 duration;
|
gint64 duration;
|
||||||
GstFlowReturn result;
|
GstFlowReturn result;
|
||||||
|
gint num_samples;
|
||||||
|
|
||||||
lame = GST_LAME (gst_pad_get_parent (pad));
|
lame = GST_LAME (gst_pad_get_parent (pad));
|
||||||
|
|
||||||
|
@ -1033,9 +1033,10 @@ gst_lame_chain (GstPad * pad, GstBuffer * buf)
|
||||||
if (!lame->initialized)
|
if (!lame->initialized)
|
||||||
goto not_initialized;
|
goto not_initialized;
|
||||||
|
|
||||||
|
num_samples = GST_BUFFER_SIZE (buf) / 2;
|
||||||
|
|
||||||
/* allocate space for output */
|
/* allocate space for output */
|
||||||
mp3_buffer_size =
|
mp3_buffer_size = 1.25 * num_samples + 7200;
|
||||||
((GST_BUFFER_SIZE (buf) / (2 + lame->num_channels)) * 1.25) + 7200;
|
|
||||||
mp3_data = g_malloc (mp3_buffer_size);
|
mp3_data = g_malloc (mp3_buffer_size);
|
||||||
|
|
||||||
/* lame seems to be too stupid to get mono interleaved going */
|
/* lame seems to be too stupid to get mono interleaved going */
|
||||||
|
@ -1043,12 +1044,11 @@ gst_lame_chain (GstPad * pad, GstBuffer * buf)
|
||||||
mp3_size = lame_encode_buffer (lame->lgf,
|
mp3_size = lame_encode_buffer (lame->lgf,
|
||||||
(short int *) (GST_BUFFER_DATA (buf)),
|
(short int *) (GST_BUFFER_DATA (buf)),
|
||||||
(short int *) (GST_BUFFER_DATA (buf)),
|
(short int *) (GST_BUFFER_DATA (buf)),
|
||||||
GST_BUFFER_SIZE (buf) / 2, mp3_data, mp3_buffer_size);
|
num_samples, mp3_data, mp3_buffer_size);
|
||||||
} else {
|
} else {
|
||||||
mp3_size = lame_encode_buffer_interleaved (lame->lgf,
|
mp3_size = lame_encode_buffer_interleaved (lame->lgf,
|
||||||
(short int *) (GST_BUFFER_DATA (buf)),
|
(short int *) (GST_BUFFER_DATA (buf)),
|
||||||
GST_BUFFER_SIZE (buf) / 2 / lame->num_channels,
|
num_samples / lame->num_channels, mp3_data, mp3_buffer_size);
|
||||||
mp3_data, mp3_buffer_size);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_LOG_OBJECT (lame, "encoded %d bytes of audio to %d bytes of mp3",
|
GST_LOG_OBJECT (lame, "encoded %d bytes of audio to %d bytes of mp3",
|
||||||
|
@ -1074,9 +1074,16 @@ gst_lame_chain (GstPad * pad, GstBuffer * buf)
|
||||||
|
|
||||||
gst_buffer_unref (buf);
|
gst_buffer_unref (buf);
|
||||||
|
|
||||||
|
if (mp3_size < 0) {
|
||||||
|
g_warning ("error %d", mp3_size);
|
||||||
|
}
|
||||||
|
|
||||||
if (mp3_size > 0) {
|
if (mp3_size > 0) {
|
||||||
|
GstBuffer *outbuf;
|
||||||
|
|
||||||
outbuf = gst_buffer_new ();
|
outbuf = gst_buffer_new ();
|
||||||
GST_BUFFER_DATA (outbuf) = mp3_data;
|
GST_BUFFER_DATA (outbuf) = mp3_data;
|
||||||
|
GST_BUFFER_MALLOCDATA (outbuf) = mp3_data;
|
||||||
GST_BUFFER_SIZE (outbuf) = mp3_size;
|
GST_BUFFER_SIZE (outbuf) = mp3_size;
|
||||||
GST_BUFFER_TIMESTAMP (outbuf) = lame->last_ts;
|
GST_BUFFER_TIMESTAMP (outbuf) = lame->last_ts;
|
||||||
GST_BUFFER_OFFSET (outbuf) = lame->last_offs;
|
GST_BUFFER_OFFSET (outbuf) = lame->last_offs;
|
||||||
|
|
Loading…
Reference in a new issue