blob: c8a5681fdc4ecab99518f8b3e7c8554aea30830f [file] [log] [blame]
Benny Prijono5dcb38d2005-11-21 01:55:47 +00001/* $Id$ */
2/*
Benny Prijono844653c2008-12-23 17:27:53 +00003 * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com)
Benny Prijono32177c02008-06-20 22:44:47 +00004 * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
Benny Prijono5dcb38d2005-11-21 01:55:47 +00005 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20#include <stdio.h>
21#include <ctype.h>
Benny Prijono5dcb38d2005-11-21 01:55:47 +000022#include <pj/pool.h>
Benny Prijonocf5c06d2008-03-26 16:18:17 +000023#include "test.h"
Benny Prijono5dcb38d2005-11-21 01:55:47 +000024
Benny Prijonocf5c06d2008-03-26 16:18:17 +000025#define JB_INIT_PREFETCH 0
26#define JB_MIN_PREFETCH 0
27#define JB_MAX_PREFETCH 10
28#define JB_PTIME 20
29#define JB_BUF_SIZE 20
Benny Prijono5dcb38d2005-11-21 01:55:47 +000030
31#define REPORT
32//#define PRINT_COMMENT
33
Benny Prijonocf5c06d2008-03-26 16:18:17 +000034int jbuf_main(void)
Benny Prijono5dcb38d2005-11-21 01:55:47 +000035{
Benny Prijonocf5c06d2008-03-26 16:18:17 +000036 pjmedia_jbuf *jb;
Benny Prijono5dcb38d2005-11-21 01:55:47 +000037 FILE *input = fopen("JBTEST.DAT", "rt");
Benny Prijonocf5c06d2008-03-26 16:18:17 +000038 unsigned seq;
39 char line[1024 * 10], *p;
Benny Prijono5dcb38d2005-11-21 01:55:47 +000040 pj_pool_t *pool;
Benny Prijonocf5c06d2008-03-26 16:18:17 +000041 pjmedia_jb_state state;
42 pj_str_t jb_name = {"JBTEST", 6};
Benny Prijono5dcb38d2005-11-21 01:55:47 +000043
44 pj_init();
Benny Prijonocf5c06d2008-03-26 16:18:17 +000045 pool = pj_pool_create(mem, "JBPOOL", 256*16, 256*16, NULL);
Benny Prijono5dcb38d2005-11-21 01:55:47 +000046
Benny Prijonocf5c06d2008-03-26 16:18:17 +000047 pjmedia_jbuf_create(pool, &jb_name, 1, JB_PTIME, JB_BUF_SIZE, &jb);
48 pjmedia_jbuf_set_adaptive(jb, JB_INIT_PREFETCH, JB_MIN_PREFETCH,
49 JB_MAX_PREFETCH);
Benny Prijono5dcb38d2005-11-21 01:55:47 +000050
51 while ((p=fgets(line, sizeof(line), input)) != NULL) {
52
53 while (*p && isspace(*p))
54 ++p;
55
56 if (!*p)
57 continue;
58
59 if (*p == '#') {
60#ifdef PRINT_COMMENT
Benny Prijonocf5c06d2008-03-26 16:18:17 +000061 printf("%s", p);
Benny Prijono5dcb38d2005-11-21 01:55:47 +000062#endif
63 continue;
64 }
65
Benny Prijonocf5c06d2008-03-26 16:18:17 +000066 pjmedia_jbuf_reset(jb);
67 seq = 1;
68
Benny Prijono5dcb38d2005-11-21 01:55:47 +000069#ifdef REPORT
Benny Prijonocf5c06d2008-03-26 16:18:17 +000070 pjmedia_jbuf_get_state(jb, &state);
71 printf("Initial\tsize=%d\tprefetch=%d\tmin.pftch=%d\tmax.pftch=%d\n",
72 state.size, state.prefetch, state.min_prefetch, state.max_prefetch);
Benny Prijono5dcb38d2005-11-21 01:55:47 +000073#endif
74
75 while (*p) {
76 int c;
Benny Prijonocf5c06d2008-03-26 16:18:17 +000077 char frame[1];
78 char f_type;
Benny Prijono5dcb38d2005-11-21 01:55:47 +000079
80 c = *p++;
81 if (isspace(c))
82 continue;
83
84 if (c == '/') {
Benny Prijonocf5c06d2008-03-26 16:18:17 +000085 putchar('\n');
Benny Prijono5dcb38d2005-11-21 01:55:47 +000086
Benny Prijonocf5c06d2008-03-26 16:18:17 +000087 while (*++p && *p != '/')
88 putchar(*p);
Benny Prijono5dcb38d2005-11-21 01:55:47 +000089
90 putchar('\n');
91
Benny Prijonocf5c06d2008-03-26 16:18:17 +000092 if (*++p == 0)
93 break;
Benny Prijono5dcb38d2005-11-21 01:55:47 +000094
Benny Prijono5dcb38d2005-11-21 01:55:47 +000095 continue;
Benny Prijono5dcb38d2005-11-21 01:55:47 +000096 }
97
Benny Prijono5dcb38d2005-11-21 01:55:47 +000098 switch (toupper(c)) {
99 case 'G':
Benny Prijonocf5c06d2008-03-26 16:18:17 +0000100 pjmedia_jbuf_get_frame(jb, frame, &f_type);
Benny Prijono5dcb38d2005-11-21 01:55:47 +0000101 break;
102 case 'P':
Benny Prijonocf5c06d2008-03-26 16:18:17 +0000103 pjmedia_jbuf_put_frame(jb, (void*)frame, 1, seq);
104 seq++;
105 break;
106 case 'L':
107 seq++;
108 printf("Lost\n");
Benny Prijono5dcb38d2005-11-21 01:55:47 +0000109 break;
110 default:
111 printf("Unknown character '%c'\n", c);
112 break;
113 }
114
115#ifdef REPORT
Benny Prijonocf5c06d2008-03-26 16:18:17 +0000116 if (toupper(c) != 'L') {
117 pjmedia_jbuf_get_state(jb, &state);
118 printf("seq=%d\t%c\tsize=%d\tprefetch=%d\n",
119 seq, toupper(c), state.size, state.prefetch);
120 }
Benny Prijono5dcb38d2005-11-21 01:55:47 +0000121#endif
122 }
123 }
124
Benny Prijonocf5c06d2008-03-26 16:18:17 +0000125 pjmedia_jbuf_destroy(jb);
Benny Prijono5dcb38d2005-11-21 01:55:47 +0000126
127 if (input != stdin)
128 fclose(input);
129
130 pj_pool_release(pool);
131 return 0;
132}