port to new memory API
This commit is contained in:
parent
9b2d493e76
commit
966ebb5bf9
@ -613,7 +613,7 @@ static GstFlowReturn
|
|||||||
gst_two_lame_flush_full (GstTwoLame * lame, gboolean push)
|
gst_two_lame_flush_full (GstTwoLame * lame, gboolean push)
|
||||||
{
|
{
|
||||||
GstBuffer *buf;
|
GstBuffer *buf;
|
||||||
guint8 *data;
|
GstMapInfo map;
|
||||||
gint size;
|
gint size;
|
||||||
GstFlowReturn result = GST_FLOW_OK;
|
GstFlowReturn result = GST_FLOW_OK;
|
||||||
|
|
||||||
@ -621,9 +621,9 @@ gst_two_lame_flush_full (GstTwoLame * lame, gboolean push)
|
|||||||
return GST_FLOW_OK;
|
return GST_FLOW_OK;
|
||||||
|
|
||||||
buf = gst_buffer_new_and_alloc (16384);
|
buf = gst_buffer_new_and_alloc (16384);
|
||||||
data = gst_buffer_map (buf, NULL, NULL, GST_MAP_WRITE);
|
gst_buffer_map (buf, &map, GST_MAP_WRITE);
|
||||||
size = twolame_encode_flush (lame->glopts, data, 16384);
|
size = twolame_encode_flush (lame->glopts, map.data, 16384);
|
||||||
gst_buffer_unmap (buf, data, 16384);
|
gst_buffer_unmap (buf, &map);
|
||||||
|
|
||||||
if (size > 0 && push) {
|
if (size > 0 && push) {
|
||||||
gst_buffer_set_size (buf, size);
|
gst_buffer_set_size (buf, size);
|
||||||
@ -647,13 +647,11 @@ static GstFlowReturn
|
|||||||
gst_two_lame_handle_frame (GstAudioEncoder * enc, GstBuffer * buf)
|
gst_two_lame_handle_frame (GstAudioEncoder * enc, GstBuffer * buf)
|
||||||
{
|
{
|
||||||
GstTwoLame *twolame;
|
GstTwoLame *twolame;
|
||||||
guchar *mp3_data;
|
|
||||||
gint mp3_buffer_size, mp3_size;
|
gint mp3_buffer_size, mp3_size;
|
||||||
GstBuffer *mp3_buf;
|
GstBuffer *mp3_buf;
|
||||||
GstFlowReturn result;
|
GstFlowReturn result;
|
||||||
gint num_samples;
|
gint num_samples;
|
||||||
guint8 *data;
|
GstMapInfo map, mp3_map;
|
||||||
gsize size;
|
|
||||||
|
|
||||||
twolame = GST_TWO_LAME (enc);
|
twolame = GST_TWO_LAME (enc);
|
||||||
|
|
||||||
@ -661,43 +659,43 @@ gst_two_lame_handle_frame (GstAudioEncoder * enc, GstBuffer * buf)
|
|||||||
if (G_UNLIKELY (buf == NULL))
|
if (G_UNLIKELY (buf == NULL))
|
||||||
return gst_two_lame_flush_full (twolame, TRUE);
|
return gst_two_lame_flush_full (twolame, TRUE);
|
||||||
|
|
||||||
data = gst_buffer_map (buf, &size, NULL, GST_MAP_READ);
|
gst_buffer_map (buf, &map, GST_MAP_READ);
|
||||||
|
|
||||||
if (twolame->float_input)
|
if (twolame->float_input)
|
||||||
num_samples = size / 4;
|
num_samples = map.size / 4;
|
||||||
else
|
else
|
||||||
num_samples = size / 2;
|
num_samples = map.size / 2;
|
||||||
|
|
||||||
/* allocate space for output */
|
/* allocate space for output */
|
||||||
mp3_buffer_size = 1.25 * num_samples + 16384;
|
mp3_buffer_size = 1.25 * num_samples + 16384;
|
||||||
mp3_buf = gst_buffer_new_and_alloc (mp3_buffer_size);
|
mp3_buf = gst_buffer_new_and_alloc (mp3_buffer_size);
|
||||||
mp3_data = gst_buffer_map (mp3_buf, NULL, NULL, GST_MAP_WRITE);
|
gst_buffer_map (mp3_buf, &mp3_map, GST_MAP_WRITE);
|
||||||
|
|
||||||
if (twolame->num_channels == 1) {
|
if (twolame->num_channels == 1) {
|
||||||
if (twolame->float_input)
|
if (twolame->float_input)
|
||||||
mp3_size = twolame_encode_buffer_float32 (twolame->glopts,
|
mp3_size = twolame_encode_buffer_float32 (twolame->glopts,
|
||||||
(float *) data,
|
(float *) map.data,
|
||||||
(float *) data, num_samples, mp3_data, mp3_buffer_size);
|
(float *) map.data, num_samples, mp3_map.data, mp3_buffer_size);
|
||||||
else
|
else
|
||||||
mp3_size = twolame_encode_buffer (twolame->glopts,
|
mp3_size = twolame_encode_buffer (twolame->glopts,
|
||||||
(short int *) data,
|
(short int *) map.data,
|
||||||
(short int *) data, num_samples, mp3_data, mp3_buffer_size);
|
(short int *) map.data, num_samples, mp3_map.data, mp3_buffer_size);
|
||||||
} else {
|
} else {
|
||||||
if (twolame->float_input)
|
if (twolame->float_input)
|
||||||
mp3_size = twolame_encode_buffer_float32_interleaved (twolame->glopts,
|
mp3_size = twolame_encode_buffer_float32_interleaved (twolame->glopts,
|
||||||
(float *) data,
|
(float *) map.data,
|
||||||
num_samples / twolame->num_channels, mp3_data, mp3_buffer_size);
|
num_samples / twolame->num_channels, mp3_map.data, mp3_buffer_size);
|
||||||
else
|
else
|
||||||
mp3_size = twolame_encode_buffer_interleaved (twolame->glopts,
|
mp3_size = twolame_encode_buffer_interleaved (twolame->glopts,
|
||||||
(short int *) data,
|
(short int *) map.data,
|
||||||
num_samples / twolame->num_channels, mp3_data, mp3_buffer_size);
|
num_samples / twolame->num_channels, mp3_map.data, mp3_buffer_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_LOG_OBJECT (twolame, "encoded %" G_GSIZE_FORMAT " bytes of audio "
|
GST_LOG_OBJECT (twolame, "encoded %" G_GSIZE_FORMAT " bytes of audio "
|
||||||
"to %d bytes of mp3", size, mp3_size);
|
"to %d bytes of mp3", map.size, mp3_size);
|
||||||
|
|
||||||
gst_buffer_unmap (buf, data, -1);
|
gst_buffer_unmap (buf, &map);
|
||||||
gst_buffer_unmap (mp3_buf, mp3_data, -1);
|
gst_buffer_unmap (mp3_buf, &mp3_map);
|
||||||
|
|
||||||
if (mp3_size > 0) {
|
if (mp3_size > 0) {
|
||||||
gst_buffer_set_size (mp3_buf, mp3_size);
|
gst_buffer_set_size (mp3_buf, mp3_size);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user