Ignore:
Timestamp:
Sep 27, 2011 5:24:06 AM (13 years ago)
Author:
nanang
Message:

Close #1360: implementated video orientation (currently only for video devices).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_vid.c

    r3772 r3774  
    13581358    status = pjmedia_vid_dev_stream_set_cap(s, 
    13591359                            PJMEDIA_VID_DEV_CAP_OUTPUT_RESIZE, size); 
     1360 
     1361    PJSUA_UNLOCK(); 
     1362 
     1363    return status; 
     1364} 
     1365 
     1366/* 
     1367 * Set video orientation. 
     1368 */ 
     1369PJ_DEF(pj_status_t) pjsua_vid_win_rotate( pjsua_vid_win_id wid, 
     1370                                          int angle) 
     1371{ 
     1372    pjsua_vid_win *w; 
     1373    pjmedia_vid_dev_stream *s; 
     1374    pjmedia_orient orient; 
     1375    pj_status_t status; 
     1376 
     1377    PJ_ASSERT_RETURN(wid >= 0 && wid < PJSUA_MAX_VID_WINS, PJ_EINVAL); 
     1378    PJ_ASSERT_RETURN((angle % 90) == 0, PJ_EINVAL); 
     1379 
     1380    /* Normalize angle, so it must be 0, 90, 180, or 270. */ 
     1381    angle %= 360; 
     1382    if (angle < 0) 
     1383        angle += 360; 
     1384 
     1385    /* Convert angle to pjmedia_orient */ 
     1386    switch(angle) { 
     1387        case 0: 
     1388            /* No rotation */ 
     1389            return PJ_SUCCESS; 
     1390        case 90: 
     1391            orient = PJMEDIA_ORIENT_ROTATE_90DEG; 
     1392            break; 
     1393        case 180: 
     1394            orient = PJMEDIA_ORIENT_ROTATE_180DEG; 
     1395            break; 
     1396        case 270: 
     1397            orient = PJMEDIA_ORIENT_ROTATE_270DEG; 
     1398            break; 
     1399        default: 
     1400            pj_assert(!"Angle must have been validated"); 
     1401            return PJ_EBUG; 
     1402    } 
     1403 
     1404    PJSUA_LOCK(); 
     1405    w = &pjsua_var.win[wid]; 
     1406    if (w->vp_rend == NULL) { 
     1407        /* Native window */ 
     1408        PJSUA_UNLOCK(); 
     1409        return PJ_EINVAL; 
     1410    } 
     1411 
     1412    s = pjmedia_vid_port_get_stream(w->vp_rend); 
     1413    if (s == NULL) { 
     1414        PJSUA_UNLOCK(); 
     1415        return PJ_EINVAL; 
     1416    } 
     1417 
     1418    status = pjmedia_vid_dev_stream_set_cap(s, 
     1419                            PJMEDIA_VID_DEV_CAP_ORIENTATION, &orient); 
    13601420 
    13611421    PJSUA_UNLOCK(); 
Note: See TracChangeset for help on using the changeset viewer.