summaryrefslogtreecommitdiff
path: root/pjmedia/include
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2011-09-27 05:24:06 +0000
committerNanang Izzuddin <nanang@teluu.com>2011-09-27 05:24:06 +0000
commitba2dc4a7b2dc047fafca1f64c3503f0b1d40e473 (patch)
tree213670834574f38022cc009e6530d78d039238f8 /pjmedia/include
parent6fe9c8763fd075ddd2affec20e4a9d880dc0bdb7 (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.h19
-rw-r--r--pjmedia/include/pjmedia/event.h7
-rw-r--r--pjmedia/include/pjmedia/types.h37
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 )