[vlc-devel] [PATCH] flac: move CRC update into STATE_NEXT_SYNC
Rafaël Carré
funman at videolan.org
Mon Dec 9 22:39:22 CET 2013
Le 09/12/2013 13:47, Tristan Matthews a écrit :
> On Fri, Dec 6, 2013 at 10:50 AM, Rafaël Carré <funman at videolan.org> wrote:
>> 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?
>
> Do you mean, will this lead to more crc calculations than before?
Yes, although I am just guessing that this might be significant (I did
not benchmark it).
>> Not sure if there's an easy way around this without changing
>> block_helper.h though
>
> What would need to be changed in block_helper, a function to do partial reads?
I don't know yet :/
I guess we need to spend some time thinking about it.
> Best,
> Tristan
>
>>> /* 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