[vlc-devel] [PATCH] flac: move CRC update into STATE_NEXT_SYNC

Rafaël Carré funman at videolan.org
Fri Dec 6 16:50:53 CET 2013


Le 06/12/2013 16:07, Tristan Matthews a écrit :
> Fixes #9966.
> ---
>  modules/packetizer/flac.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/modules/packetizer/flac.c b/modules/packetizer/flac.c
> index 2f16717..b5af285 100644
> --- a/modules/packetizer/flac.c
> +++ b/modules/packetizer/flac.c
> @@ -572,6 +572,11 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block)
>          p_sys->i_frame_size = p_sys->b_stream_info && p_sys->stream_info.min_framesize > 0 ?
>                                                          p_sys->stream_info.min_framesize : 1;
>  
> +    case STATE_NEXT_SYNC:
> +        /* TODO: If pp_block == NULL, flush the buffer without checking the
> +         * next sync word */
> +
> +    {

Looks good, but won't this calculate the crc for each incoming packet
needed until we reach the next sync?

Not sure if there's an easy way around this without changing
block_helper.h though

>          /* 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);
> @@ -588,10 +593,8 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block)
>              crc = flac_crc16(crc, buf[i]);
>          free(buf);
>          p_sys->crc = crc;
> +    }
>  
> -    case STATE_NEXT_SYNC:
> -        /* TODO: If pp_block == NULL, flush the buffer without checking the
> -         * next sync word */
>  
>          /* Check if next expected frame contains the sync word */
>          while (!block_PeekOffsetBytes(&p_sys->bytestream, p_sys->i_frame_size,
> 




More information about the vlc-devel mailing list