[vlc-devel] [PATCH] Change to npapi for giving access to media meta thru new input.meta(i) method.
JM Lambert
jeanmichel.lambert7 at gmail.com
Sat Jan 7 11:33:41 CET 2012
---
npapi/control/npolibvlc.cpp | 35 +++++++++++++++++++++++++++++------
1 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/npapi/control/npolibvlc.cpp b/npapi/control/npolibvlc.cpp
index a8a94f6..ecd61e3 100644
--- a/npapi/control/npolibvlc.cpp
+++ b/npapi/control/npolibvlc.cpp
@@ -587,14 +587,13 @@ LibvlcInputNPObject::setProperty(int index, const NPVariant &value)
const NPUTF8 * const LibvlcInputNPObject::methodNames[] =
{
- /* no methods */
- "none",
+ "meta",
};
COUNTNAMES(LibvlcInputNPObject,methodCount,methodNames);
enum LibvlcInputNPObjectMethodIds
{
- ID_none,
+ ID_input_meta,
};
RuntimeNPObject::InvokeResult
@@ -604,12 +603,36 @@ LibvlcInputNPObject::invoke(int index, const NPVariant *args,
/* is plugin still running */
if( isPluginRunning() )
{
+ VlcPlugin* p_plugin = getPrivate<VlcPlugin>();
+ libvlc_media_player_t *p_md = p_plugin->getMD();
+ if( !p_md )
+ return INVOKERESULT_GENERIC_ERROR;
+ libvlc_media_t * p_media = libvlc_media_player_get_media(p_md);
+
switch( index )
{
- case ID_none:
- return INVOKERESULT_NO_SUCH_METHOD;
+ case ID_input_meta:
+ if( argCount == 1)
+ {
+ const char *info;
+ int i_metaID;
+
+ /* check if a number is given by the user
+ * and get the subtitle number */
+ if( isNumberValue(args[0]) )
+ {
+ i_metaID = numberValue(args[0]);
+ if (i_metaID<0 || i_metaID>libvlc_meta_TrackID)
+ return INVOKERESULT_INVALID_VALUE;
+
+ info = libvlc_media_get_meta(p_media,(libvlc_meta_t) i_metaID);
+ }
+ else
+ return INVOKERESULT_INVALID_VALUE;
+ return invokeResultString(info, result);
+ }
default:
- ;
+ ;
}
}
return INVOKERESULT_GENERIC_ERROR;
--
1.7.5.4
More information about the vlc-devel
mailing list