- Timestamp:
- Jun 21, 2011 9:33:01 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia-videodev/v4l2_dev.c
r3580 r3592 82 82 pjmedia_vid_dev_factory base; 83 83 pj_pool_t *pool; 84 pj_pool_t *dev_pool; 84 85 pj_pool_factory *pf; 85 86 … … 120 121 static pj_status_t vid4lin_factory_init(pjmedia_vid_dev_factory *f); 121 122 static pj_status_t vid4lin_factory_destroy(pjmedia_vid_dev_factory *f); 123 static pj_status_t vid4lin_factory_refresh(pjmedia_vid_dev_factory *f); 122 124 static unsigned vid4lin_factory_get_dev_count(pjmedia_vid_dev_factory *f); 123 125 static pj_status_t vid4lin_factory_get_dev_info(pjmedia_vid_dev_factory *f, … … 156 158 &vid4lin_factory_get_dev_info, 157 159 &vid4lin_factory_default_param, 158 &vid4lin_factory_create_stream 160 &vid4lin_factory_create_stream, 161 &vid4lin_factory_refresh 159 162 }; 160 163 … … 213 216 pj_status_t status; 214 217 218 if (f->dev_pool) { 219 pj_pool_release(f->dev_pool); 220 f->dev_pool = NULL; 221 } 222 215 223 pj_bzero(vdi, sizeof(vdi)); 216 224 old_count = f->dev_count; 217 225 f->dev_count = 0; 226 f->dev_pool = pj_pool_create(f->pf, DRIVER_NAME, 500, 500, NULL); 218 227 219 228 for (i=0; i<V4L2_MAX_DEVS && f->dev_count < V4L2_MAX_DEVS; ++i) { 220 229 int fd; 221 230 vid4lin_dev_info *pdi; 222 pj_pool_t *pool = f-> pool;231 pj_pool_t *pool = f->dev_pool; 223 232 pj_uint32_t fmt_cap[8]; 224 233 int j, fmt_cnt=0; … … 313 322 if (f->dev_count > old_count || f->dev_info == NULL) { 314 323 f->dev_info = (vid4lin_dev_info*) 315 pj_pool_calloc(f-> pool,324 pj_pool_calloc(f->dev_pool, 316 325 f->dev_count, 317 326 sizeof(vid4lin_dev_info)); … … 325 334 /* API: init factory */ 326 335 static pj_status_t vid4lin_factory_init(pjmedia_vid_dev_factory *f) 336 { 337 return vid4lin_factory_refresh(f); 338 } 339 340 /* API: destroy factory */ 341 static pj_status_t vid4lin_factory_destroy(pjmedia_vid_dev_factory *f) 342 { 343 vid4lin_factory *cf = (vid4lin_factory*)f; 344 pj_pool_t *pool = cf->pool; 345 346 if (cf->dev_pool) 347 pj_pool_release(cf->dev_pool); 348 if (cf->pool) { 349 cf->pool = NULL; 350 pj_pool_release(pool); 351 } 352 353 return PJ_SUCCESS; 354 } 355 356 /* API: refresh the list of devices */ 357 static pj_status_t vid4lin_factory_refresh(pjmedia_vid_dev_factory *f) 327 358 { 328 359 vid4lin_factory *cf = (vid4lin_factory*)f; … … 333 364 return status; 334 365 335 PJ_LOG(4, (THIS_FILE, "Video4Linux2 initialized with%d devices",366 PJ_LOG(4, (THIS_FILE, "Video4Linux2 has %d devices", 336 367 cf->dev_count)); 337 338 return PJ_SUCCESS;339 }340 341 /* API: destroy factory */342 static pj_status_t vid4lin_factory_destroy(pjmedia_vid_dev_factory *f)343 {344 vid4lin_factory *cf = (vid4lin_factory*)f;345 pj_pool_t *pool = cf->pool;346 347 if (cf->pool) {348 cf->pool = NULL;349 pj_pool_release(pool);350 }351 368 352 369 return PJ_SUCCESS;
Note: See TracChangeset
for help on using the changeset viewer.