123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- /*
- * SpanDSP - a series of DSP components for telephony
- *
- * bitstream_tests.c
- *
- * Written by Steve Underwood <steveu@coppice.org>
- *
- * Copyright (C) 2007 Steve Underwood
- *
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2, as
- * published by the Free Software Foundation.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
- /*! \page bitstream_tests_page Bitstream tests
- \section bitstream_tests_page_sec_1 What does it do?
- \section bitstream_tests_page_sec_2 How is it used?
- */
- #if defined(HAVE_CONFIG_H)
- #include "config.h"
- #endif
- #include <stdlib.h>
- #include <stdio.h>
- #include <fcntl.h>
- #include <string.h>
- #include <assert.h>
- #define SPANDSP_EXPOSE_INTERNAL_STRUCTURES
- #include "spandsp.h"
- uint8_t buffer[256];
- #define PATTERN 0x1111111
- #define SEQUENCE_LENGTH 17
- uint8_t left[] =
- {
- 0x28, /* 2 of 4, 3, 2, 1 */
- 0xC8, /* 1 of 6, 5, 2 of 4 */
- 0xAE, /* 3 of 7, 5 of 6 */
- 0x67, /* 4 of 8, 4 of 7 */
- 0x74, /* 4 of 9, 4 of 8 */
- 0x43, /* 3 of 10, 5 of 9 */
- 0x32, /* 1 of 11, 7 of 10 */
- 0xAA, /* 8 of 11 */
- 0xAE, /* 6 of 12, 2 of 11 */
- 0xED, /* 2 of 13, 6 of 12 */
- 0x99, /* 8 of 13 */
- 0x8E, /* 5 of 14, 3 of 13 */
- 0xEE, /* 8 of 14 */
- 0xEE, /* 7 of 15, 1 of 14 */
- 0xEE, /* 8 of 15 */
- 0xFF, /* 8 of 16 */
- 0xFF, /* 8 of 16 */
- 0x88, /* 8 of 17 */
- 0x88, /* 8 of 17 */
- 0x00 /* 1 of 17 */
- };
- uint8_t right[] =
- {
- 0xD2, /* 1, 2, 3, 2 of 4 */
- 0x90, /* 2 of 4, 5, 1 of 6 */
- 0xCA, /* 5 of 6, 3 of 7 */
- 0x7C, /* 4 of 7, 4 of 8 */
- 0x87, /* 4 of 8, 4 of 9 */
- 0x28, /* 5 of 9, 3 of 10 */
- 0x33, /* 7 of 10, 1 of 11 */
- 0x55, /* 8 of 11 */
- 0xED, /* 2 of 11, 6 of 12 */
- 0x2E, /* 6 of 12, 2 of 13 */
- 0x33, /* 8 of 13 */
- 0xEB, /* 3 of 13, 5 of 14 */
- 0xEE, /* 8 of 14 */
- 0xDC, /* 1 of 14, 7 of 15 */
- 0xDD, /* 8 of 15 */
- 0xFF, /* 8 of 16 */
- 0xFF, /* 8 of 16 */
- 0x10, /* 8 of 17 */
- 0x11, /* 8 of 17 */
- 0x01 /* 1 of 17 */
- };
- int main(int argc, char *argv[])
- {
- int i;
- bitstream_state_t state;
- bitstream_state_t *s;
- const uint8_t *r;
- uint8_t *w;
- uint8_t *cc;
- unsigned int x;
- int total_bits;
- s = bitstream_init(&state, true);
- w = buffer;
- total_bits = 0;
- for (i = 0; i < SEQUENCE_LENGTH; i++)
- {
- bitstream_put(s, &w, i*PATTERN, i + 1);
- total_bits += (i + 1);
- }
- bitstream_flush(s, &w);
- printf("%d bits written\n", total_bits);
- for (cc = buffer; cc < w; cc++)
- printf("%02X ", *cc);
- printf("\n");
- for (cc = right; cc < right + sizeof(right); cc++)
- printf("%02X ", *cc);
- printf("\n");
- if ((w - buffer) != sizeof(right) || memcmp(buffer, right, sizeof(right)))
- {
- printf("Test failed\n");
- exit(2);
- }
- s = bitstream_init(&state, true);
- r = buffer;
- for (i = 0; i < SEQUENCE_LENGTH; i++)
- {
- x = bitstream_get(s, &r, i + 1);
- if (x != ((PATTERN*i) & ((1 << (i + 1)) - 1)))
- {
- printf("Error 0x%X 0x%X\n", x, ((PATTERN*i) & ((1 << (i + 1)) - 1)));
- printf("Test failed\n");
- exit(2);
- }
- }
- s = bitstream_init(&state, false);
- w = buffer;
- total_bits = 0;
- for (i = 0; i < SEQUENCE_LENGTH; i++)
- {
- bitstream_put(s, &w, PATTERN*i, i + 1);
- total_bits += (i + 1);
- }
- bitstream_flush(s, &w);
- printf("%d bits written\n", total_bits);
- for (cc = buffer; cc < w; cc++)
- printf("%02X ", *cc);
- printf("\n");
- for (cc = left; cc < left + sizeof(left); cc++)
- printf("%02X ", *cc);
- printf("\n");
- if ((w - buffer) != sizeof(left) || memcmp(buffer, left, sizeof(left)))
- {
- printf("Test failed\n");
- exit(2);
- }
- s = bitstream_init(&state, false);
- r = buffer;
- for (i = 0; i < SEQUENCE_LENGTH; i++)
- {
- x = bitstream_get(s, &r, i + 1);
- if (x != ((PATTERN*i) & ((1 << (i + 1)) - 1)))
- {
- printf("Error 0x%X 0x%X\n", x, ((PATTERN*i) & ((1 << (i + 1)) - 1)));
- printf("Test failed\n");
- exit(2);
- }
- }
- printf("Tests passed.\n");
- return 0;
- }
- /*- End of function --------------------------------------------------------*/
- /*- End of file ------------------------------------------------------------*/
|