Ticket #505: ticket505.2.patch

File ticket505.2.patch, 5.1 KB (added by nanang, 16 years ago)

Update jbuf test in pjmedia test.

  • pjmedia/src/test/test.c

     
    3535 
    3636void app_perror(pj_status_t status, const char *msg) 
    3737{ 
    38     char errbuf[PJMEDIA_ERR_MSG_SIZE]; 
     38    char errbuf[PJ_ERR_MSG_SIZE]; 
    3939     
    4040    pjmedia_strerror(status, errbuf, sizeof(errbuf)); 
    4141 
     
    4444 
    4545int test_main(void) 
    4646{ 
    47     int rc; 
     47    int rc = 0; 
    4848    pj_caching_pool caching_pool; 
    4949 
    5050    pj_init(); 
     
    5454 
    5555    mem = &caching_pool.factory; 
    5656 
    57     DO_TEST(sdp_neg_test()); 
     57    //DO_TEST(sdp_neg_test()); 
    5858    //sdp_test (&caching_pool.factory); 
    5959    //rtp_test(&caching_pool.factory); 
    6060    //session_test (&caching_pool.factory); 
    61     //jbuf_main(&caching_pool.factory); 
     61    jbuf_main(&caching_pool.factory); 
    6262 
    6363    PJ_LOG(3,(THIS_FILE," ")); 
    6464 
    65 on_return: 
    66  
    6765    if (rc != 0) { 
    6866        PJ_LOG(3,(THIS_FILE,"Test completed with error(s)!")); 
    6967    } else { 
  • pjmedia/src/test/test.h

     
    2626int session_test(void); 
    2727int rtp_test(void); 
    2828int sdp_test(void); 
    29 int jbuf_main(void); 
     29int jbuf_main(pj_pool_factory *pf); 
    3030int sdp_neg_test(void); 
    3131 
    3232extern pj_pool_factory *mem; 
  • pjmedia/src/test/jbuf_test.c

     
    2121#include <pjmedia/jbuf.h> 
    2222#include <pj/pool.h> 
    2323 
    24 #define JB_MIN      1 
    25 #define JB_MAX      8 
    26 #define JB_BUF_SIZE 10 
     24#define JB_INIT_PREFETCH    0 
     25#define JB_MIN_PREFETCH     0 
     26#define JB_MAX_PREFETCH     10 
     27#define JB_PTIME            20 
     28#define JB_BUF_SIZE         20 
    2729 
    2830#define REPORT 
    2931//#define PRINT_COMMENT 
    3032 
    3133int jbuf_main(pj_pool_factory *pf) 
    3234{ 
    33     pj_jitter_buffer jb; 
     35    pjmedia_jbuf *jb; 
    3436    FILE *input = fopen("JBTEST.DAT", "rt"); 
    35     unsigned lastseq; 
    36     void *data = "Hello world"; 
    37     char line[1024], *p; 
    38     int lastget = 0, lastput = 0; 
     37    unsigned seq; 
     38    char line[1024 * 10], *p; 
    3939    pj_pool_t *pool; 
     40    pjmedia_jb_state state; 
     41    pj_str_t jb_name = {"JBTEST", 6}; 
    4042 
    4143    pj_init(); 
    4244    pool = pj_pool_create(pf, "JBPOOL", 256*16, 256*16, NULL); 
    4345 
    44     pj_jb_init(&jb, pool, JB_MIN, JB_MAX, JB_BUF_SIZE); 
     46    pjmedia_jbuf_create(pool, &jb_name, 1, JB_PTIME, JB_BUF_SIZE, &jb); 
     47    pjmedia_jbuf_set_adaptive(jb, JB_INIT_PREFETCH, JB_MIN_PREFETCH,  
     48                              JB_MAX_PREFETCH); 
    4549 
    46     lastseq = 1; 
    47  
    4850    while ((p=fgets(line, sizeof(line), input)) != NULL) { 
    4951 
    5052        while (*p && isspace(*p)) 
     
    5557 
    5658        if (*p == '#') { 
    5759#ifdef PRINT_COMMENT 
    58             printf("\n%s", p); 
     60            printf("%s", p); 
    5961#endif 
    6062            continue; 
    6163        } 
    6264 
    63         pj_jb_reset(&jb); 
     65        pjmedia_jbuf_reset(jb); 
     66        seq = 1; 
     67 
    6468#ifdef REPORT 
    65         printf( "Initial\t%c   size=%d  prefetch=%d level=%d\n",  
    66                 ' ', jb.lst.count, jb.prefetch, jb.level); 
     69        pjmedia_jbuf_get_state(jb, &state); 
     70        printf("Initial\tsize=%d\tprefetch=%d\tmin.pftch=%d\tmax.pftch=%d\n",  
     71            state.size, state.prefetch, state.min_prefetch, state.max_prefetch); 
    6772#endif 
    6873 
    6974        while (*p) { 
    7075            int c; 
    71             unsigned seq = 0; 
    72             void *thedata; 
    73             int status = 1234; 
     76            char frame[1]; 
     77            char f_type; 
    7478             
    7579            c = *p++; 
    7680            if (isspace(c)) 
    7781                continue; 
    7882             
    7983            if (c == '/') { 
    80                 char *end; 
     84                putchar('\n'); 
    8185 
    82                 printf("/*"); 
     86                while (*++p && *p != '/') 
     87                    putchar(*p); 
    8388 
    84                 do { 
    85                     putchar(*++p); 
    86                 } while (*p != '/'); 
    87  
    8889                putchar('\n'); 
    8990 
    90                 c = *++p; 
    91                 end = p; 
     91                if (*++p == 0) 
     92                    break; 
    9293 
    93             } 
    94  
    95             if (isspace(c)) 
    9694                continue; 
    97  
    98             if (isdigit(c)) { 
    99                 seq = c - '0'; 
    100                 while (*p) { 
    101                     c = *p++; 
    102                      
    103                     if (isspace(c)) 
    104                         continue; 
    105                      
    106                     if (!isdigit(c)) 
    107                         break; 
    108                      
    109                     seq = seq * 10 + c - '0'; 
    110                 } 
    11195            } 
    11296 
    113             if (!*p) 
    114                 break; 
    115  
    11697            switch (toupper(c)) { 
    11798            case 'G': 
    118                 seq = -1; 
    119                 status = pj_jb_get(&jb, &seq, &thedata); 
    120                 lastget = seq; 
     99                pjmedia_jbuf_get_frame(jb, frame, &f_type); 
    121100                break; 
    122101            case 'P': 
    123                 if (seq == 0)  
    124                     seq = lastseq++; 
    125                 else 
    126                     lastseq = seq; 
    127                 status = pj_jb_put(&jb, seq, data); 
    128                 if (status == 0) 
    129                     lastput = seq; 
     102                pjmedia_jbuf_put_frame(jb, (void*)frame, 1, seq); 
     103                seq++; 
    130104                break; 
     105            case 'L': 
     106                seq++; 
     107                printf("Lost\n"); 
     108                break; 
    131109            default: 
    132110                printf("Unknown character '%c'\n", c); 
    133111                break; 
    134112            } 
    135113 
    136114#ifdef REPORT 
    137             printf("seq=%d\t%c rc=%d\tsize=%d\tpfch=%d\tlvl=%d\tmxl=%d\tdelay=%d\n",  
    138                     seq, toupper(c), status, jb.lst.count, jb.prefetch, jb.level, jb.max_level, 
    139                     (lastget>0 && lastput>0) ? lastput-lastget : -1); 
     115            if (toupper(c) != 'L') { 
     116                pjmedia_jbuf_get_state(jb, &state); 
     117                printf("seq=%d\t%c\tsize=%d\tprefetch=%d\n",  
     118                       seq, toupper(c), state.size, state.prefetch); 
     119            } 
    140120#endif 
    141121        } 
    142122    } 
    143123 
    144 #ifdef REPORT 
    145     printf("0\t%c   size=%d  prefetch=%d level=%d\n",  
    146             ' ', jb.lst.count, jb.prefetch, jb.level); 
    147 #endif 
     124    pjmedia_jbuf_destroy(jb); 
    148125 
    149126    if (input != stdin) 
    150127        fclose(input);