00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <stdint.h>
00022 #include <stdio.h>
00023
00024 #include "libavutil/mem.h"
00025
00026 #include "get_bits.h"
00027 #include "golomb.h"
00028 #include "put_bits.h"
00029
00030 #undef fprintf
00031 #define COUNT 8191
00032 #define SIZE (COUNT * 4)
00033
00034 int main(void)
00035 {
00036 int i, ret = 0;
00037 uint8_t *temp;
00038 PutBitContext pb;
00039 GetBitContext gb;
00040
00041 temp = av_malloc(SIZE);
00042 if (!temp)
00043 return 2;
00044
00045 init_put_bits(&pb, temp, SIZE);
00046 for (i = 0; i < COUNT; i++)
00047 set_ue_golomb(&pb, i);
00048 flush_put_bits(&pb);
00049
00050 init_get_bits(&gb, temp, 8 * SIZE);
00051 for (i = 0; i < COUNT; i++) {
00052 int j, s = show_bits(&gb, 25);
00053
00054 j = get_ue_golomb(&gb);
00055 if (j != i) {
00056 fprintf(stderr, "get_ue_golomb: expected %d, got %d. bits: %7x\n",
00057 i, j, s);
00058 ret = 1;
00059 }
00060 }
00061
00062 #define EXTEND(i) (i << 3 | i & 7)
00063 init_put_bits(&pb, temp, SIZE);
00064 for (i = 0; i < COUNT; i++)
00065 set_ue_golomb(&pb, EXTEND(i));
00066 flush_put_bits(&pb);
00067
00068 init_get_bits(&gb, temp, 8 * SIZE);
00069 for (i = 0; i < COUNT; i++) {
00070 int j, s = show_bits_long(&gb, 32);
00071
00072 j = get_ue_golomb_long(&gb);
00073 if (j != EXTEND(i)) {
00074 fprintf(stderr, "get_ue_golomb_long: expected %d, got %d. "
00075 "bits: %8x\n", EXTEND(i), j, s);
00076 ret = 1;
00077 }
00078 }
00079
00080 init_put_bits(&pb, temp, SIZE);
00081 for (i = 0; i < COUNT; i++)
00082 set_se_golomb(&pb, i - COUNT / 2);
00083 flush_put_bits(&pb);
00084
00085 init_get_bits(&gb, temp, 8 * SIZE);
00086 for (i = 0; i < COUNT; i++) {
00087 int j, s = show_bits(&gb, 25);
00088
00089 j = get_se_golomb(&gb);
00090 if (j != i - COUNT / 2) {
00091 fprintf(stderr, "get_se_golomb: expected %d, got %d. bits: %7x\n",
00092 i - COUNT / 2, j, s);
00093 ret = 1;
00094 }
00095 }
00096
00097 av_free(temp);
00098
00099 return ret;
00100 }