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