Diego Biurrun <di...@biurrun.de> writes:

> The new name is more appropriate as only golomb functions are tested.
> ---
>  libavcodec/Makefile      |    2 +-
>  libavcodec/golomb-test.c |   78 
> ++++++++++++++++++++++++++++++++++++++++++++++
>  libavcodec/h264.c        |   54 -------------------------------
>  3 files changed, 79 insertions(+), 55 deletions(-)
>  create mode 100644 libavcodec/golomb-test.c
>
> diff --git a/libavcodec/Makefile b/libavcodec/Makefile
> index daf2ce3..6308e82 100644
> --- a/libavcodec/Makefile
> +++ b/libavcodec/Makefile
> @@ -688,7 +688,7 @@ SKIPHEADERS-$(HAVE_W32THREADS)         += w32pthreads.h
>
>  EXAMPLES = api
>
> -TESTPROGS = cabac dct fft fft-fixed h264 iirfilter rangecoder
> +TESTPROGS = cabac dct fft fft-fixed golomb iirfilter rangecoder
>  TESTPROGS-$(HAVE_MMX) += motion
>  TESTOBJS = dctref.o
>
> diff --git a/libavcodec/golomb-test.c b/libavcodec/golomb-test.c
> new file mode 100644
> index 0000000..ae0cef0
> --- /dev/null
> +++ b/libavcodec/golomb-test.c
> @@ -0,0 +1,78 @@
> +/*
> + * This file is part of Libav.
> + *
> + * Libav is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * Libav is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with Libav; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 
> USA
> + */
> +
> +#include <stdint.h>
> +#include <stdio.h>
> +
> +#include "avcodec.h"
> +#include "dsputil.h"
> +#include "get_bits.h"
> +#include "golomb.h"
> +#include "put_bits.h"
> +
> +#undef printf
> +#define COUNT 8000
> +#define SIZE (COUNT*40)
> +
> +int main(void){
> +    int i;
> +    uint8_t temp[SIZE];
> +    PutBitContext pb;
> +    GetBitContext gb;
> +    DSPContext dsp;
> +    AVCodecContext *avctx = avcodec_alloc_context3(NULL);
> +
> +    dsputil_init(&dsp, avctx);
> +
> +    init_put_bits(&pb, temp, SIZE);
> +    printf("testing unsigned exp golomb\n");
> +    for(i=0; i<COUNT; i++){
> +        set_ue_golomb(&pb, i);
> +    }
> +    flush_put_bits(&pb);
> +
> +    init_get_bits(&gb, temp, 8*SIZE);
> +    for(i=0; i<COUNT; i++){
> +        int j, s = show_bits(&gb, 24);
> +
> +        j= get_ue_golomb(&gb);
> +        if(j != i){
> +            printf("mismatch! at %d (%d should be %d) bits:%6X\n", i, j, i, 
> s);
> +        }
> +    }

This is a poor test.  A better test would test at least one code of each
possible length up to the maximum supported.  The maximum length for
get_ue_golomb() is 48 bits, the maximum value being (1<<25) - 2.

Furthermore, it would be nice if the program returned with a non-zero
exit code on error, and the messages it prints could use some improved
formatting.

-- 
Måns Rullgård
m...@mansr.com
_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to