int ReadMeta( demux_meta_t *p_this ) { if( lua_Disabled( p_this ) ) return VLC_EGENERIC; return vlclua_scripts_batch_execute( VLC_OBJECT(p_this), "meta"DIR_SEP"reader", (void*) &read_meta, NULL ); }
/***************************************************************************** * Module entry point for art. *****************************************************************************/ int FindArt( meta_fetcher_t *p_finder ) { if( lua_Disabled( p_finder ) ) return VLC_EGENERIC; luabatch_context_t context = { p_finder->p_item, p_finder->e_scope, validate_scope }; return vlclua_scripts_batch_execute( VLC_OBJECT(p_finder), "meta"DIR_SEP"art", &fetch_art, (void*)&context ); }
/***************************************************************************** * Module entry point for art. *****************************************************************************/ int FindArt( vlc_object_t *p_this ) { playlist_t *p_playlist = pl_Hold( p_this ); if( !p_playlist ) return VLC_EGENERIC; input_item_t *p_item = (input_item_t *)p_this->p_private; lua_State *L = vlclua_meta_init( p_this, p_item ); int i_ret = vlclua_scripts_batch_execute( p_this, "meta", &fetch_art, L, p_item ); lua_close( L ); pl_Release( p_this ); return i_ret; }
/***************************************************************************** * Import_LuaPlaylist: main import function *****************************************************************************/ int Import_LuaPlaylist( vlc_object_t *p_this ) { demux_t *p_demux = (demux_t *)p_this; lua_State *L; int ret; p_demux->p_sys = (demux_sys_t*)malloc( sizeof( demux_sys_t ) ); if( !p_demux->p_sys ) { return VLC_ENOMEM; } p_demux->p_sys->psz_filename = NULL; p_demux->pf_control = Control; p_demux->pf_demux = Demux; /* Initialise Lua state structure */ L = luaL_newstate(); if( !L ) { msg_Err( p_demux, "Could not create new Lua State" ); free( p_demux->p_sys ); return VLC_EGENERIC; } p_demux->p_sys->L = L; /* Load Lua libraries */ luaL_openlibs( L ); /* FIXME: Don't open all the libs? */ luaL_register( L, "vlc", p_reg ); luaopen_msg( L ); luaopen_strings( L ); lua_pushlightuserdata( L, p_demux ); lua_setfield( L, -2, "private" ); lua_pushstring( L, p_demux->psz_path ); lua_setfield( L, -2, "path" ); lua_pushstring( L, p_demux->psz_access ); lua_setfield( L, -2, "access" ); lua_pop( L, 1 ); ret = vlclua_scripts_batch_execute( p_this, "playlist", &probe_luascript, L, NULL ); if( ret ) Close_LuaPlaylist( p_this ); return ret; }
/***************************************************************************** * Import_LuaPlaylist: main import function *****************************************************************************/ int Import_LuaPlaylist( vlc_object_t *p_this ) { demux_t *p_demux = (demux_t *)p_this; int ret; p_demux->p_sys = calloc( 1, sizeof( demux_sys_t ) ); if( !p_demux->p_sys ) return VLC_ENOMEM; p_demux->pf_control = Control; p_demux->pf_demux = Demux; ret = vlclua_scripts_batch_execute( p_this, "playlist", &probe_luascript, NULL ); if( ret ) Close_LuaPlaylist( p_this ); return ret; }
/***************************************************************************** * Import_LuaPlaylist: main import function *****************************************************************************/ int Import_LuaPlaylist(vlc_object_t *obj) { if( lua_Disabled( obj ) ) return VLC_EGENERIC; stream_t *s = (stream_t *)obj; if( s->s->pf_readdir != NULL ) return VLC_EGENERIC; struct vlclua_playlist *sys = malloc(sizeof (*sys)); if (unlikely(sys == NULL)) return VLC_ENOMEM; s->p_sys = sys; sys->access = NULL; sys->path = NULL; if (s->psz_url != NULL) { /* Backward compatibility hack: Lua scripts expect the URI scheme and * the rest of the URI separately. */ const char *p = strstr(s->psz_url, "://"); if (p != NULL) { sys->access = strndup(s->psz_url, p - s->psz_url); sys->path = p + 3; } } int ret = vlclua_scripts_batch_execute(VLC_OBJECT(s), "playlist", probe_luascript, NULL); if (ret != VLC_SUCCESS) { free(sys->access); free(sys); return ret; } s->pf_readdir = ReadDir; s->pf_control = access_vaDirectoryControlHelper; return VLC_SUCCESS; }