- Timestamp:
- Feb 28, 2011 6:59:47 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/branches/projects/2.0-dev/pjmedia/src/test/vid_codec_test.c
r3392 r3425 21 21 { 22 22 codec_port_data_t *port_data = (codec_port_data_t*)port->port_data.pdata; 23 pjmedia_vid_codec *codec = port_data->codec;24 pjmedia_frame enc_frame;25 23 pj_status_t status; 26 24 27 enc_frame.buf = port_data->enc_buf;28 enc_frame.size = port_data->enc_buf_size;29 30 25 #if !BYPASS_CODEC 31 status = codec->op->encode(codec, frame, enc_frame.size, &enc_frame); 32 if (status != PJ_SUCCESS) goto on_error; 33 status = codec->op->decode(codec, &enc_frame, frame->size, frame); 34 if (status != PJ_SUCCESS) goto on_error; 26 { 27 pjmedia_vid_codec *codec = port_data->codec; 28 pjmedia_frame enc_frame; 29 30 enc_frame.buf = port_data->enc_buf; 31 enc_frame.size = port_data->enc_buf_size; 32 33 status = codec->op->encode(codec, frame, enc_frame.size, &enc_frame); 34 if (status != PJ_SUCCESS) goto on_error; 35 status = codec->op->decode(codec, &enc_frame, frame->size, frame); 36 if (status != PJ_SUCCESS) goto on_error; 37 } 35 38 #endif 36 39 … … 88 91 pjmedia_format_id raw_fmt_id) 89 92 { 93 const pj_str_t port_name = {"codec", 5}; 90 94 91 95 pjmedia_vid_codec *codec=NULL; … … 163 167 } 164 168 169 /* Prepare codec */ 170 { 171 pj_str_t codec_id_st; 172 unsigned info_cnt = 1; 173 const pjmedia_vid_codec_info *codec_info; 174 175 /* Lookup codec */ 176 pj_cstr(&codec_id_st, codec_id); 177 status = pjmedia_vid_codec_mgr_find_codecs_by_id(NULL, &codec_id_st, 178 &info_cnt, 179 &codec_info, NULL); 180 if (status != PJ_SUCCESS) { 181 rc = 245; goto on_return; 182 } 183 status = pjmedia_vid_codec_mgr_get_default_param(NULL, codec_info, 184 &codec_param); 185 if (status != PJ_SUCCESS) { 186 rc = 246; goto on_return; 187 } 188 189 #if !BYPASS_CODEC 190 191 /* Open codec */ 192 status = pjmedia_vid_codec_mgr_alloc_codec(NULL, codec_info, 193 &codec); 194 if (status != PJ_SUCCESS) { 195 rc = 250; goto on_return; 196 } 197 198 status = codec->op->init(codec, pool); 199 if (status != PJ_SUCCESS) { 200 rc = 251; goto on_return; 201 } 202 203 codec_param.dec_fmt.id = raw_fmt_id; 204 status = codec->op->open(codec, &codec_param); 205 if (status != PJ_SUCCESS) { 206 rc = 252; goto on_return; 207 } 208 209 #endif /* !BYPASS_CODEC */ 210 } 211 212 165 213 pjmedia_vid_port_param_default(&vport_param); 166 214 … … 171 219 rc = 220; goto on_return; 172 220 } 221 pjmedia_format_copy(&vport_param.vidparam.fmt, &codec_param.dec_fmt); 173 222 vport_param.vidparam.fmt.id = raw_fmt_id; 174 223 vport_param.vidparam.dir = PJMEDIA_DIR_CAPTURE; … … 201 250 } 202 251 203 /* Prepare codec */ 204 { 205 pj_str_t codec_id_st; 206 unsigned info_cnt = 1; 207 const pjmedia_vid_codec_info *codec_info; 208 pj_str_t port_name = {"codec", 5}; 209 pj_uint8_t *enc_buf = NULL; 210 pj_size_t enc_buf_size = 0; 211 212 213 /* Lookup codec */ 214 pj_cstr(&codec_id_st, codec_id); 215 status = pjmedia_vid_codec_mgr_find_codecs_by_id(NULL, &codec_id_st, 216 &info_cnt, 217 &codec_info, NULL); 218 if (status != PJ_SUCCESS) { 219 rc = 245; goto on_return; 220 } 221 status = pjmedia_vid_codec_mgr_get_default_param(NULL, codec_info, 222 &codec_param); 223 if (status != PJ_SUCCESS) { 224 rc = 246; goto on_return; 225 } 226 227 pjmedia_format_copy(&codec_param.dec_fmt, &vport_param.vidparam.fmt); 228 229 #if !BYPASS_CODEC 230 231 /* Open codec */ 232 status = pjmedia_vid_codec_mgr_alloc_codec(NULL, codec_info, 233 &codec); 234 if (status != PJ_SUCCESS) { 235 rc = 250; goto on_return; 236 } 237 238 status = codec->op->init(codec, pool); 239 if (status != PJ_SUCCESS) { 240 rc = 251; goto on_return; 241 } 242 243 status = codec->op->open(codec, &codec_param); 244 if (status != PJ_SUCCESS) { 245 rc = 252; goto on_return; 246 } 247 248 /* Alloc encoding buffer */ 249 enc_buf_size = codec_param.dec_fmt.det.vid.size.w * 250 codec_param.dec_fmt.det.vid.size.h * 4 251 + 16; /*< padding, just in case */ 252 enc_buf = pj_pool_alloc(pool,enc_buf_size); 253 254 #endif /* !BYPASS_CODEC */ 255 256 /* Init codec port */ 257 pj_bzero(&codec_port, sizeof(codec_port)); 258 status = pjmedia_port_info_init2(&codec_port.info, &port_name, 0x1234, 259 PJMEDIA_DIR_ENCODING, 260 &codec_param.dec_fmt); 261 if (status != PJ_SUCCESS) { 262 rc = 260; goto on_return; 263 } 264 codec_port_data.codec = codec; 265 codec_port_data.dn_port = pjmedia_vid_port_get_passive_port(renderer); 266 codec_port_data.enc_buf = enc_buf; 267 codec_port_data.enc_buf_size = enc_buf_size; 268 269 codec_port.put_frame = &codec_put_frame; 270 codec_port.port_data.pdata = &codec_port_data; 271 } 272 252 /* Init codec port */ 253 pj_bzero(&codec_port, sizeof(codec_port)); 254 status = pjmedia_port_info_init2(&codec_port.info, &port_name, 0x1234, 255 PJMEDIA_DIR_ENCODING, 256 &codec_param.dec_fmt); 257 if (status != PJ_SUCCESS) { 258 rc = 260; goto on_return; 259 } 260 261 codec_port_data.codec = codec; 262 codec_port_data.dn_port = pjmedia_vid_port_get_passive_port(renderer); 263 codec_port_data.enc_buf_size = codec_param.dec_fmt.det.vid.size.w * 264 codec_param.dec_fmt.det.vid.size.h * 4; 265 codec_port_data.enc_buf = pj_pool_alloc(pool, 266 codec_port_data.enc_buf_size); 267 268 codec_port.put_frame = &codec_put_frame; 269 codec_port.port_data.pdata = &codec_port_data; 273 270 274 271 /* Connect capture to codec port */ … … 280 277 } 281 278 282 PJ_LOG(3, (THIS_FILE, " starting codec test: %c%c%c%c<->%s %dx%d", 279 #if BYPASS_CODEC 280 PJ_LOG(3, (THIS_FILE, " starting loopback test: %c%c%c%c %dx%d", 281 ((raw_fmt_id & 0x000000FF) >> 0), 282 ((raw_fmt_id & 0x0000FF00) >> 8), 283 ((raw_fmt_id & 0x00FF0000) >> 16), 284 ((raw_fmt_id & 0xFF000000) >> 24), 285 codec_param.dec_fmt.det.vid.size.w, 286 codec_param.dec_fmt.det.vid.size.h 287 )); 288 #else 289 PJ_LOG(3, (THIS_FILE, " starting codec test: %c%c%c%c<->%.*s %dx%d", 283 290 ((codec_param.dec_fmt.id & 0x000000FF) >> 0), 284 291 ((codec_param.dec_fmt.id & 0x0000FF00) >> 8), 285 292 ((codec_param.dec_fmt.id & 0x00FF0000) >> 16), 286 293 ((codec_param.dec_fmt.id & 0xFF000000) >> 24), 287 codec_id, 294 codec_info->encoding_name.slen, 295 codec_info->encoding_name.ptr, 288 296 codec_param.dec_fmt.det.vid.size.w, 289 297 codec_param.dec_fmt.det.vid.size.h 290 298 )); 299 #endif 291 300 292 301 /* Start streaming.. */ … … 328 337 int rc = 0; 329 338 pj_status_t status; 339 int orig_log_level; 340 341 orig_log_level = pj_log_get_level(); 342 pj_log_set_level(6); 330 343 331 344 PJ_LOG(3, (THIS_FILE, "Performing video codec tests..")); … … 345 358 goto on_return; 346 359 347 rc = encode_decode_test(pool, " mjpeg", 0);360 rc = encode_decode_test(pool, "h263", 0); 348 361 if (rc != 0) 349 362 goto on_return; … … 353 366 pjmedia_vid_subsys_shutdown(); 354 367 pj_pool_release(pool); 368 pj_log_set_level(orig_log_level); 355 369 356 370 return rc;
Note: See TracChangeset
for help on using the changeset viewer.