[vlc-devel] [PATCH 3/3] lua: report status of main ES-es on current input.
jpsaman at videolan.org
jpsaman at videolan.org
Sat Feb 15 23:24:06 CET 2014
From: Jean-Paul Saman <jean-paul.saman at m2x.nl>
---
modules/lua/libs/input.c | 51 ++++++++++++++++++++++++++++++++++++++
share/lua/http/requests/status.xml | 11 ++++++++
2 files changed, 62 insertions(+)
diff --git a/modules/lua/libs/input.c b/modules/lua/libs/input.c
index bdffbc9..3629b14 100644
--- a/modules/lua/libs/input.c
+++ b/modules/lua/libs/input.c
@@ -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 }
};
diff --git a/share/lua/http/requests/status.xml b/share/lua/http/requests/status.xml
index ef400ed..5cea584 100644
--- a/share/lua/http/requests/status.xml
+++ b/share/lua/http/requests/status.xml
@@ -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>
--
1.8.3.1
More information about the vlc-devel
mailing list