[vlc-devel] [PATCH 1/1] packetizer: flac: reduce memory allocations
Jean-Baptiste Kempf
jb at videolan.org
Fri Nov 21 10:03:54 CET 2014
Do you see a CPU difference?
On 21 Nov, Tristan Matthews wrote :
> ---
> modules/packetizer/flac.c | 21 ++++++++++++++-------
> 1 file changed, 14 insertions(+), 7 deletions(-)
>
> diff --git a/modules/packetizer/flac.c b/modules/packetizer/flac.c
> index ecf854f..25f1957 100644
> --- a/modules/packetizer/flac.c
> +++ b/modules/packetizer/flac.c
> @@ -90,6 +90,8 @@ struct decoder_sys_t
> size_t i_frame_size;
> uint16_t crc;
> unsigned int i_rate, i_channels, i_bits_per_sample;
> + size_t i_buf;
> + uint8_t *p_buf;
> };
>
> static const int pi_channels_maps[9] =
> @@ -603,19 +605,21 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block)
> {
> /* Calculate the initial CRC for the minimal frame size,
> * We'll update it as we look for the next start code. */
> - uint8_t *buf = malloc(p_sys->i_frame_size);
> - if (!buf)
> - return NULL;
> + if (p_sys->i_buf < p_sys->i_frame_size)
> + {
> + p_sys->p_buf = realloc(p_sys->p_buf, p_sys->i_frame_size);
> + if (!p_sys->p_buf)
> + return NULL;
> + p_sys->i_buf = p_sys->i_frame_size;
> + }
>
> - if (block_PeekOffsetBytes(&p_sys->bytestream, 0, buf, p_sys->i_frame_size)) {
> - free(buf);
> + if (block_PeekOffsetBytes(&p_sys->bytestream, 0, p_sys->p_buf, p_sys->i_frame_size)) {
> return NULL;
> }
>
> uint16_t crc = 0;
> for (unsigned i = 0; i < p_sys->i_frame_size; i++)
> - crc = flac_crc16(crc, buf[i]);
> - free(buf);
> + crc = flac_crc16(crc, p_sys->p_buf[i]);
> p_sys->crc = crc;
>
> /* Check if next expected frame contains the sync word */
> @@ -752,6 +756,8 @@ static int Open(vlc_object_t *p_this)
> p_sys->i_state = STATE_NOSYNC;
> p_sys->b_stream_info = false;
> p_sys->i_pts = VLC_TS_INVALID;
> + p_sys->i_buf = 0;
> + p_sys->p_buf = NULL;
> block_BytestreamInit(&p_sys->bytestream);
>
> /* */
> @@ -773,5 +779,6 @@ static void Close(vlc_object_t *p_this)
>
> es_format_Clean(&p_dec->fmt_out);
> block_BytestreamRelease(&p_sys->bytestream);
> + free(p_sys->p_buf);
> free(p_sys);
> }
> --
> 1.9.3
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
--
With my kindest regards,
--
Jean-Baptiste Kempf
http://www.jbkempf.com/ - +33 672 704 734
Sent from my Electronic Device
More information about the vlc-devel
mailing list