[FFmpeg-devel] [PATCH] FLAC parser

Michael Chinen mchinen
Wed Nov 3 02:01:39 CET 2010


On Mon, Oct 25, 2010 at 4:39 AM, Michael Chinen <mchinen at gmail.com> wrote:
> Hi,
>
> On Sun, Oct 24, 2010 at 3:27 PM, Michael Niedermayer <michaelni at gmx.at> wrote:
>> On Sat, Oct 23, 2010 at 04:08:59AM +0200, Michael Chinen wrote:
>> [...]
>>> +static int find_new_headers(FLACParseContext *fpc, int search_start)
>>> +{
>>> + ? ?FLACHeaderMarker *end;
>>> + ? ?int search_end, size = 0, read_len, temp;
>>> + ? ?uint8_t *buf;
>>> + ? ?fpc->nb_headers_found = 0;
>>> +
>>> + ? ?/* Search for a new header of at most 16 bytes. */
>>> + ? ?search_end = av_fifo_size(fpc->fifo_buf) - (MAX_FRAME_HEADER_SIZE - 1);
>>> + ? ?read_len ? = search_end - search_start + 1;
>>> + ? ?buf ? ? ? ?= flac_fifo_read(fpc, search_start, &read_len);
>>> + ? ?size ? ? ? = find_headers_search(fpc, buf, read_len, search_start);
>>> + ? ?search_start += read_len - 1;
>>> +
>>
>>> + ? ?/* if we hit the fifo end we need a wrap buffer for the two byte wrap around */
>>> + ? ?if (search_start != search_end) {
>>> + ? ? ? ?buf ?= flac_fifo_read_wrap(fpc, search_start, 2,
>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?&fpc->wrap_buf, &fpc->wrap_buf_allocated_size);
>>> + ? ? ? ?temp = find_headers_search(fpc, buf, 2, search_start);
>>> + ? ? ? ?size = FFMAX(size, temp);
>>> + ? ? ? ?search_start += 1;
>>> + ? ?}
>>
>> the 2 bytes can be checked directly and find_headers_search_validate() be called
>
> ok, I added this.
>
>>
>> also i leave further review to the flac maintainer
>>
>> a bit of further simplification and cleanup would be nice though
>
> Also removed the error codes and used offsets for logs where applicable.

Ping.



More information about the ffmpeg-devel mailing list