]> git.sesse.net Git - vlc/commitdiff
lua: report status of main ES-es on current input.
authorJean-Paul Saman <jean-paul.saman@m2x.nl>
Wed, 2 May 2012 11:10:02 +0000 (13:10 +0200)
committerJean-Paul Saman <jean-paul.saman@m2x.nl>
Sat, 15 Feb 2014 21:45:25 +0000 (22:45 +0100)
modules/lua/libs/input.c
share/lua/http/requests/status.xml

index bdffbc9ea52453daf4e18f83749dafbdfc1867ef..3629b14836feacaa0062c8533c62f65fb89ee8bc 100644 (file)
@@ -175,6 +175,56 @@ static int vlclua_input_metas_internal( lua_State *L, input_item_t *p_item )
     return 1;
 }
 
+static int vlclua_input_item_es_state( lua_State *L )
+{
+    /* HACK to add ES state */
+    input_thread_t *p_input = vlclua_get_input_internal( L );
+    lua_newtable( L );
+    if( p_input )
+    {
+#define ES_STATUS_UNKNOWN  "Unknown"
+#define ES_STATUS_DISABLED "Disabled"
+#define ES_STATUS_ENABLED  "Enabled"
+#define ES_STATUS_ERROR    "Error"
+
+#define PUSH_ES_STATE( n, m ) \
+        lua_pushstring( L, n ); \
+        lua_setfield( L, -2, m )
+
+        const char* ppsz_es_cat[] = { "unknown-es", "video-es", "audio-es", "spu-es", "nav-es" };
+        const int cat[] = { UNKNOWN_ES, VIDEO_ES, AUDIO_ES, SPU_ES, NAV_ES };
+
+        for( unsigned int i = 0; i < ARRAY_SIZE(cat); i++ )
+        {
+             input_es_state_e es_state = input_GetEsState( p_input, cat[i] );
+             switch( es_state )
+             {
+                case INPUT_ES_STATE_DISABLED:
+                     PUSH_ES_STATE( ES_STATUS_DISABLED, ppsz_es_cat[i] );
+                     break;
+                case INPUT_ES_STATE_ENABLED:
+                     PUSH_ES_STATE( ES_STATUS_ENABLED, ppsz_es_cat[i] );
+                     break;
+                case INPUT_ES_STATE_ERROR:
+                     PUSH_ES_STATE( ES_STATUS_ERROR, ppsz_es_cat[i] );
+                     break;
+                default:
+                     PUSH_ES_STATE( ES_STATUS_UNKNOWN, ppsz_es_cat[i] );
+                     break;
+            }
+        }
+
+#undef PUSH_ES_STATE
+#undef ES_STATUS_UNKNOWN
+#undef ES_STATUS_DISABLED
+#undef ES_STATUS_ENABLED
+#undef ES_STATUS_ERROR
+
+        vlc_object_release( p_input );
+    }
+    return 1;
+}
+
 static int vlclua_input_item_stats( lua_State *L )
 {
     input_item_t *p_item = vlclua_input_item_get_internal( L );
@@ -406,6 +456,7 @@ static const luaL_Reg vlclua_input_item_reg[] = {
     { "duration", vlclua_input_item_duration },
     { "stats", vlclua_input_item_stats },
     { "info", vlclua_input_item_info },
+    { "es_state", vlclua_input_item_es_state },
     { NULL, NULL }
 };
 
index ef400ed7b6ba0b0ec6d8d01b1ee71a7665888689..5cea584e01ed62ced6f3b15cc4090be6df1cf44c 100644 (file)
@@ -78,4 +78,15 @@ local item = vlc.input.item()
     end
   ?>
   </stats>
+  <es_state>
+  <?vlc
+    if item then
+      local stats = item:es_state()
+      for k,v in pairs(stats) do
+        local tag = string.gsub(k,"_","")
+        print("<"..httprequests.xmlString(tag)..">"..httprequests.xmlString(v).."</"..httprequests.xmlString(tag)..">\n")
+      end
+    end
+  ?>
+  </es_state>
 </root>