[vlc-devel] [PATCH 02/11] vlc_demux: add DEMUX_GET/SET_ANGLE

Francois Cartegnie fcvlcdev at free.fr
Tue May 5 17:57:00 CEST 2020


---
 include/vlc_demux.h        |  5 +++++
 src/input/demux.c          | 11 +++++++++++
 src/input/demux.h          |  1 +
 test/src/input/demux-run.c |  2 ++
 4 files changed, 19 insertions(+)

diff --git a/include/vlc_demux.h b/include/vlc_demux.h
index 5d67813fc0..75047e7e04 100644
--- a/include/vlc_demux.h
+++ b/include/vlc_demux.h
@@ -48,6 +48,7 @@
 #define INPUT_UPDATE_TITLE      0x0010
 #define INPUT_UPDATE_SEEKPOINT  0x0020
 #define INPUT_UPDATE_META       0x0040
+#define INPUT_UPDATE_ANGLE      0x0080
 #define INPUT_UPDATE_TITLE_LIST 0x0100
 
 /* demux_meta_t is returned by "meta reader" module to the demuxer */
@@ -169,6 +170,10 @@ enum demux_query_e
      * arg1= int * */
     DEMUX_GET_SEEKPOINT,        /* arg1= int*           can fail */
 
+    /* Viewing angle of the currently playing title */
+    DEMUX_GET_ANGLE,           /* arg1= unsigned*       can fail */
+    DEMUX_SET_ANGLE,           /* arg1= unsigned        can fail */
+
     /* I. Common queries to access_demux and demux */
     /* POSITION double between 0.0 and 1.0 */
     DEMUX_GET_POSITION = 0x300, /* arg1= double *       res=    */
diff --git a/src/input/demux.c b/src/input/demux.c
index db1b46532e..e4f5b32ee2 100644
--- a/src/input/demux.c
+++ b/src/input/demux.c
@@ -386,6 +386,8 @@ int demux_vaControlHelper( stream_t *s,
         case DEMUX_TEST_AND_CLEAR_FLAGS:
         case DEMUX_GET_TITLE:
         case DEMUX_GET_SEEKPOINT:
+        case DEMUX_GET_ANGLE:
+        case DEMUX_SET_ANGLE:
         case DEMUX_NAV_ACTIVATE:
         case DEMUX_NAV_UP:
         case DEMUX_NAV_DOWN:
@@ -479,6 +481,15 @@ int demux_GetSeekpoint( demux_t *p_demux )
     return seekpoint;
 }
 
+unsigned demux_GetAngle( demux_t *p_demux )
+{
+    unsigned angle;
+
+    if (demux_Control(p_demux, DEMUX_GET_ANGLE, &angle))
+        angle = 0;
+    return angle;
+}
+
 static demux_t *demux_FilterNew( demux_t *p_next, const char *p_name )
 {
     struct vlc_demux_private *priv;
diff --git a/src/input/demux.h b/src/input/demux.h
index f729018105..26ea02aa4b 100644
--- a/src/input/demux.h
+++ b/src/input/demux.h
@@ -37,6 +37,7 @@ demux_t *demux_NewAdvanced( vlc_object_t *p_obj, input_thread_t *p_parent_input,
 unsigned demux_TestAndClearFlags( demux_t *, unsigned );
 int demux_GetTitle( demux_t * );
 int demux_GetSeekpoint( demux_t * );
+unsigned demux_GetAngle( demux_t * );
 
 /**
  * Builds an explicit chain of demux filters.
diff --git a/test/src/input/demux-run.c b/test/src/input/demux-run.c
index 4cacfdfdb1..5685773dbb 100644
--- a/test/src/input/demux-run.c
+++ b/test/src/input/demux-run.c
@@ -315,12 +315,14 @@ static int demux_process_stream(const struct vlc_run_args *args, stream_t *s)
                 demux_get_meta(demux);
 
             int seekpoint = 0;
+            unsigned angle = 0;
             double position = 0.0;
             vlc_tick_t time = 0;
             vlc_tick_t length = 0;
 
             /* Call controls for increased code coverage */
             demux_Control(demux, DEMUX_GET_SEEKPOINT, &seekpoint);
+            demux_Control(demux, DEMUX_GET_ANGLE, &angle);
             demux_Control(demux, DEMUX_GET_POSITION, &position);
             demux_Control(demux, DEMUX_GET_TIME, &time);
             demux_Control(demux, DEMUX_GET_LENGTH, &length);
-- 
2.25.4



More information about the vlc-devel mailing list