|
Home --> Documentations --> PJMEDIA Reference
This sample shows how to use codec.
This file is pjsip-apps/src/samples/encdec.c
34#define THIS_FILE "encdec.c"
36static const char *desc =
40 " Encode input WAV with a codec, and decode the result to another WAV \n"
44 " encdec codec input.wav output.wav \n"
48 " codec Set the codec name. \n"
49 " input.wav Set the input WAV filename. \n"
50 " output.wav Set the output WAV filename. \n"
63# define TRACE_(expr) PJ_LOG(4,expr)
73 PJ_LOG(3,( "", "%s error: %s", op, errmsg));
76#define CHECK(op) do { \
78 if (status != PJ_SUCCESS) { \
86static unsigned file_msec_duration;
88static pj_status_t enc_dec_test( const char *codec_id,
97 unsigned cnt, samples_per_frame;
101 unsigned bitstream_size = 0;
104#define T file_msec_duration/1000, file_msec_duration%1000
136 16, 0, 0, &wavout) );
149 frm_pcm. buf = ( char*)pcmbuf;
150 frm_pcm. size = samples_per_frame * 2;
159 file_msec_duration += samples_per_frame * 1000 /
163 frm_bit. buf = bitstream;
164 frm_bit. size = sizeof(bitstream);
170 out_frm. buf = ( char*)pcmbuf;
173 TRACE_((THIS_FILE, "%d.%03d read: %u, enc: %u",
178 bitstream_size += (unsigned)frm_bit. size;
191 out_frm. buf = ( char*)pcmbuf;
192 out_frm. size = sizeof(pcmbuf);
194 if (( pj_rand() % 100) < ( int)lost_pct) {
197 TRACE_((THIS_FILE, "%d.%03d Packet lost", T));
207 TRACE_((THIS_FILE, "%d.%03d read: %u, enc: %u, dec/write: %u",
222 printf( "Total encoded size: %u bytes\n", bitstream_size);
223 printf( "Bitrate: %.3fKbps\n", bitstream_size*8.0/file_msec_duration);
228int main( int argc, char *argv[])
249 status = enc_dec_test(argv[1], argv[2], argv[3]);
260 printf( "Duration: %ds.%03d\n", file_msec_duration/1000,
261 file_msec_duration%1000);
262 printf( "Time: %lds.%03ld\n", t1. sec, t1. msec);
pj_status_t pjmedia_endpt_create(pj_pool_factory *pf, pj_ioqueue_t *ioqueue, unsigned worker_cnt, pjmedia_endpt **p_endpt) Definition: endpoint.h:127
pj_pool_t * pjmedia_endpt_create_pool(pjmedia_endpt *endpt, const char *name, pj_size_t initial, pj_size_t increment)
pj_status_t pjmedia_endpt_destroy(pjmedia_endpt *endpt) Definition: endpoint.h:168
pjmedia_codec_mgr * pjmedia_endpt_get_codec_mgr(pjmedia_endpt *endpt)
pj_status_t pj_init(void)
void pj_caching_pool_destroy(pj_caching_pool *ch_pool)
void pj_caching_pool_init(pj_caching_pool *ch_pool, const pj_pool_factory_policy *policy, pj_size_t max_capacity)
#define PJ_LOG(level, arg)
void pj_pool_release(pj_pool_t *pool)
const pj_str_t * pj_cstr(pj_str_t *str, const char *s)
pj_status_t pj_gettimeofday(pj_time_val *tv)
#define PJ_TIME_VAL_SUB(t1, t2)
pj_str_t pj_strerror(pj_status_t statcode, char *buf, pj_size_t bufsize)
PJMEDIA small footprint Open Source media stack
Copyright (C) 2006-2008 Teluu Inc.
|