[vlc-devel] [PATCH 1/2] demux: wav: refactor function ChunkGetNext
Thomas Guillem
thomas at gllm.fr
Tue Sep 15 16:35:08 CEST 2020
Hello Zhao,
OK for the patch set.
Nitpicking: you could explain the reason of the refactor in the first commit, like the new arguments will be used by the next commit.
On Tue, Sep 15, 2020, at 16:26, Zhao, Gang wrote:
> Prepare for parsing INFO chunk.
>
> Signed-off-by: Zhao, Gang <gang.zhao.42 at gmail.com>
> ---
> modules/demux/wav.c | 26 +++++++++++++++++---------
> 1 file changed, 17 insertions(+), 9 deletions(-)
>
> diff --git modules/demux/wav.c modules/demux/wav.c
> index 4b0623412f..52f9639ef9 100644
> --- modules/demux/wav.c
> +++ modules/demux/wav.c
> @@ -66,11 +66,13 @@ enum wav_chunk_id {
> wav_chunk_id_fmt,
> };
>
> -static const struct wav_chunk_id_key
> +struct wav_chunk_id_key
> {
> enum wav_chunk_id id;
> char key[5];
> -} wav_chunk_id_key_list[] = {
> +};
> +
> +static const struct wav_chunk_id_key wav_chunk_id_key_list[] = {
> /* Alphabetical order */
> { wav_chunk_id_data, "data" },
> { wav_chunk_id_ds64, "ds64" },
> @@ -190,13 +192,14 @@ static int ChunkSkip( demux_t *p_demux, uint32_t i_size )
> }
>
> static int ChunkGetNext( demux_t *p_demux, enum wav_chunk_id *p_id,
> - uint32_t *pi_size )
> + uint32_t *pi_size,
> + const struct wav_chunk_id_key *id_key_list,
> size_t count )
> {
> #ifndef NDEBUG
> /* assert that keys are in alphabetical order */
> - for( size_t i = 0; i < wav_chunk_id_key_count - 1; ++i )
> - assert( strcmp( wav_chunk_id_key_list[i].key,
> - wav_chunk_id_key_list[i + 1].key ) < 0 );
> + for( size_t i = 0; i < count - 1; ++i )
> + assert( strcmp( id_key_list[i].key,
> + id_key_list[i + 1].key ) < 0 );
> #endif
>
> for( ;; )
> @@ -206,8 +209,8 @@ static int ChunkGetNext( demux_t *p_demux, enum
> wav_chunk_id *p_id,
> return VLC_EGENERIC;
>
> const struct wav_chunk_id_key *id =
> - bsearch( p_peek, wav_chunk_id_key_list, wav_chunk_id_key_count,
> - sizeof(*wav_chunk_id_key_list), wav_chunk_CompareCb );
> + bsearch( p_peek, id_key_list, count,
> + sizeof(*id_key_list), wav_chunk_CompareCb );
> uint32_t i_size = GetDWLE( p_peek + 4 );
>
> if( id == NULL )
> @@ -629,8 +632,13 @@ static int Open( vlc_object_t * p_this )
>
> bool eof = false;
> enum wav_chunk_id id;
> - while( !eof && ( ChunkGetNext( p_demux, &id, &i_size ) ) ==
> VLC_SUCCESS )
> + while( !eof )
> {
> + int ret = ChunkGetNext( p_demux, &id, &i_size,
> + wav_chunk_id_key_list,
> wav_chunk_id_key_count );
> + if (ret != VLC_SUCCESS )
> + break;
> +
> if( i_size == 0 )
> {
> msg_Err( p_demux, "invalid chunk with a size 0");
> --
> 2.25.1
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
More information about the vlc-devel
mailing list