diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2011-09-27 05:24:06 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2011-09-27 05:24:06 +0000 |
commit | ba2dc4a7b2dc047fafca1f64c3503f0b1d40e473 (patch) | |
tree | 213670834574f38022cc009e6530d78d039238f8 /pjmedia/include | |
parent | 6fe9c8763fd075ddd2affec20e4a9d880dc0bdb7 (diff) |
Close #1360: implementated video orientation (currently only for video devices).
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3774 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia/include')
-rw-r--r-- | pjmedia/include/pjmedia-videodev/videodev.h | 19 | ||||
-rw-r--r-- | pjmedia/include/pjmedia/event.h | 7 | ||||
-rw-r--r-- | pjmedia/include/pjmedia/types.h | 37 |
3 files changed, 62 insertions, 1 deletions
diff --git a/pjmedia/include/pjmedia-videodev/videodev.h b/pjmedia/include/pjmedia-videodev/videodev.h index 0c3d4c82..208b96c6 100644 --- a/pjmedia/include/pjmedia-videodev/videodev.h +++ b/pjmedia/include/pjmedia-videodev/videodev.h @@ -194,6 +194,18 @@ typedef enum pjmedia_vid_dev_cap PJMEDIA_VID_DEV_CAP_INPUT_PREVIEW = 64, /** + * Support for changing video orientation in renderer and querying + * video orientation info in capture. Changing video orientation in + * a renderer will potentially affect the size of render window, + * i.e: width and height swap. When a capture device supports this + * capability, it will generate event PJMEDIA_EVENT_ORIENT_CHANGED + * (see #pjmedia_event) everytime the capture orientation is changed. + * + * The value of this capability is pjmedia_orient. + */ + PJMEDIA_VID_DEV_CAP_ORIENTATION = 128, + + /** * End of standard capability */ PJMEDIA_VID_DEV_CAP_MAX = 16384 @@ -369,6 +381,13 @@ typedef struct pjmedia_vid_dev_param */ pj_bool_t native_preview; + /** + * Video orientation. This setting is optional and is only used if + * PJMEDIA_VID_DEV_CAP_ORIENTATION capability is supported and is + * set in the flags. + */ + pjmedia_orient orient; + } pjmedia_vid_dev_param; diff --git a/pjmedia/include/pjmedia/event.h b/pjmedia/include/pjmedia/event.h index ddcffc02..259f7264 100644 --- a/pjmedia/include/pjmedia/event.h +++ b/pjmedia/include/pjmedia/event.h @@ -78,7 +78,12 @@ typedef enum pjmedia_event_type /** * Video decoding error due to missing key frame event. */ - PJMEDIA_EVENT_KEY_FRAME_MISSING = PJMEDIA_FOURCC('I', 'F', 'R', 'M') + PJMEDIA_EVENT_KEY_FRAME_MISSING = PJMEDIA_FOURCC('I', 'F', 'R', 'M'), + + /** + * Video orientation has been changed event. + */ + PJMEDIA_EVENT_ORIENT_CHANGED = PJMEDIA_FOURCC('O', 'R', 'N', 'T') } pjmedia_event_type; diff --git a/pjmedia/include/pjmedia/types.h b/pjmedia/include/pjmedia/types.h index 6a660f0c..20e93d69 100644 --- a/pjmedia/include/pjmedia/types.h +++ b/pjmedia/include/pjmedia/types.h @@ -192,6 +192,43 @@ typedef struct pjmedia_rect } pjmedia_rect; /** + * Enumeration for video/picture orientation. + */ +typedef enum pjmedia_orient +{ + /** + * Unknown orientation. + */ + PJMEDIA_ORIENT_UNKNOWN, + + /** + * Natural orientation, e.g: sky upside on landscape view, head upside + * on human portrait. + */ + PJMEDIA_ORIENT_NATURAL, + + /** + * Specifies that the video/picture needs to be rotated 90 degrees + * clockwise to be displayed in natural orientation. + */ + PJMEDIA_ORIENT_ROTATE_90DEG, + + /** + * Specifies that the video/picture needs to be rotated 180 degrees + * clockwise to be displayed in natural orientation. + */ + PJMEDIA_ORIENT_ROTATE_180DEG, + + /** + * Specifies that the video/picture needs to be rotated 270 degrees + * clockwise to be displayed in natural orientation. + */ + PJMEDIA_ORIENT_ROTATE_270DEG + +} pjmedia_orient; + + +/** * Macro for packing format from a four character code, similar to FOURCC. */ #define PJMEDIA_FOURCC(C1, C2, C3, C4) ( C4<<24 | C3<<16 | C2<<8 | C1 ) |