vlc.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:5k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * vlc.h: VLC specific lua library functions.
  3.  *****************************************************************************
  4.  * Copyright (C) 2007-2008 the VideoLAN team
  5.  * $Id: 94d69f6357a5b200bc181491410d47d25467c284 $
  6.  *
  7.  * Authors: Antoine Cellerier <dionoea at videolan tod org>
  8.  *          Pierre d'Herbemont <pdherbemont # videolan.org>
  9.  *
  10.  * This program is free software; you can redistribute it and/or modify
  11.  * it under the terms of the GNU General Public License as published by
  12.  * the Free Software Foundation; either version 2 of the License, or
  13.  * (at your option) any later version.
  14.  *
  15.  * This program is distributed in the hope that it will be useful,
  16.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  * GNU General Public License for more details.
  19.  *
  20.  * You should have received a copy of the GNU General Public License
  21.  * along with this program; if not, write to the Free Software
  22.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  23.  *****************************************************************************/
  24. #ifndef VLC_LUA_H
  25. #define VLC_LUA_H
  26. /*****************************************************************************
  27.  * Preamble
  28.  *****************************************************************************/
  29. #include <vlc_common.h>
  30. #include <vlc_input.h>
  31. #include <vlc_playlist.h>
  32. #include <vlc_meta.h>
  33. #include <vlc_url.h>
  34. #include <vlc_strings.h>
  35. #include <vlc_stream.h>
  36. #include <vlc_charset.h>
  37. #ifdef HAVE_SYS_STAT_H
  38. #   include <sys/stat.h>
  39. #endif
  40. #include <lua.h>        /* Low level lua C API */
  41. #include <lauxlib.h>    /* Higher level C API */
  42. #include <lualib.h>     /* Lua libs */
  43. /*****************************************************************************
  44.  * Module entry points
  45.  *****************************************************************************/
  46. int FindArt( vlc_object_t * );
  47. int Import_LuaPlaylist( vlc_object_t * );
  48. void Close_LuaPlaylist( vlc_object_t * );
  49. int Open_LuaIntf( vlc_object_t * );
  50. void Close_LuaIntf( vlc_object_t * );
  51. /*****************************************************************************
  52.  * Lua debug
  53.  *****************************************************************************/
  54. static inline void lua_Dbg( vlc_object_t * p_this, const char * ppz_fmt, ... )
  55. {
  56.     va_list ap;
  57.     va_start( ap, ppz_fmt );
  58.     __msg_GenericVa( ( vlc_object_t *)p_this, VLC_MSG_DBG, MODULE_STRING,
  59.                       ppz_fmt, ap );
  60.     va_end( ap );
  61. }
  62. /*****************************************************************************
  63.  * Functions that should be in lua ... but aren't for some obscure reason
  64.  *****************************************************************************/
  65. static inline int luaL_checkboolean( lua_State *L, int narg )
  66. {
  67.     luaL_checktype( L, narg, LUA_TBOOLEAN ); /* can raise an error */
  68.     return lua_toboolean( L, narg );
  69. }
  70. static inline int luaL_optboolean( lua_State *L, int narg, int def )
  71. {
  72.     return luaL_opt( L, luaL_checkboolean, narg, def );
  73. }
  74. static inline const char *luaL_nilorcheckstring( lua_State *L, int narg )
  75. {
  76.     if( lua_isnil( L, narg ) )
  77.         return NULL;
  78.     return luaL_checkstring( L, narg );
  79. }
  80. vlc_object_t * vlclua_get_this( lua_State * );
  81. /*****************************************************************************
  82.  * Lua function bridge
  83.  *****************************************************************************/
  84. #define vlclua_error( L ) luaL_error( L, "VLC lua error in file %s line %d (function %s)", __FILE__, __LINE__, __func__ )
  85. int vlclua_push_ret( lua_State *, int i_error );
  86. /*****************************************************************************
  87.  * Will execute func on all scripts in luadirname, and stop if func returns
  88.  * success.
  89.  *****************************************************************************/
  90. int vlclua_scripts_batch_execute( vlc_object_t *p_this, const char * luadirname,
  91.         int (*func)(vlc_object_t *, const char *, lua_State *, void *),
  92.         lua_State * L, void * user_data );
  93. int vlclua_dir_list( const char *luadirname, char **ppsz_dir_list );
  94. void vlclua_dir_list_free( char **ppsz_dir_list );
  95. /*****************************************************************************
  96.  * Playlist and meta data internal utilities.
  97.  *****************************************************************************/
  98. void __vlclua_read_options( vlc_object_t *, lua_State *, int *, char *** );
  99. #define vlclua_read_options(a,b,c,d) __vlclua_read_options(VLC_OBJECT(a),b,c,d)
  100. void __vlclua_read_meta_data( vlc_object_t *, lua_State *, input_item_t * );
  101. #define vlclua_read_meta_data(a,b,c) __vlclua_read_meta_data(VLC_OBJECT(a),b,c)
  102. void __vlclua_read_custom_meta_data( vlc_object_t *, lua_State *,
  103.                                      input_item_t *);
  104. #define vlclua_read_custom_meta_data(a,b,c) __vlclua_read_custom_meta_data(VLC_OBJECT(a),b,c)
  105. int __vlclua_playlist_add_internal( vlc_object_t *, lua_State *, playlist_t *,
  106.                                     input_item_t *, bool );
  107. #define vlclua_playlist_add_internal(a,b,c,d,e) __vlclua_playlist_add_internal(VLC_OBJECT(a),b,c,d,e)
  108. /**
  109.  * Per-interface private state
  110.  */
  111. struct intf_sys_t
  112. {
  113.     char *psz_filename;
  114.     lua_State *L;
  115.     vlc_thread_t thread;
  116.     vlc_mutex_t lock;
  117.     vlc_cond_t wait;
  118.     bool exiting;
  119. };
  120. #endif /* VLC_LUA_H */