[vlc-devel] Customizing the way lua scripts are run
Gergely Kiss
mail.gery at gmail.com
Tue Dec 29 14:02:43 CET 2009
Dear Developers,
I'd like to modify the source a bit to change the way lua scripts are
run. The goal is to replace a playlist item with another one processed
by a lua script, so that youtube "watch" links are replaced by the URL
of the actual FLV file.
I'm trying to modify /modules/misc/lua/vlc.c like this (function
__vlclua_playlist_add_internal):
/* Append item to playlist */
/* HACK: replace the parent node to keep item position */
/* without this, the item would be placed at an
undesired position */
if( p_parent ) /* Replace node */
{
/* get the playlist_item of the parent input_item */
playlist_item_t *parent_pls_item;
playlist_Lock(p_playlist);
parent_pls_item = playlist_ItemGetByInput(p_playlist, p_parent);
playlist_Unlock(p_playlist);
int plspos = parent_pls_item->i_id;
playlist_Lock(p_playlist);
/* delete the parent node */
playlist_DeleteFromInput(p_playlist, p_parent, true);
playlist_Unlock(p_playlist);
/* create a leaf */
playlist_AddInput( p_playlist, p_input,
PLAYLIST_APPEND |
( b_play ? PLAYLIST_GO : PLAYLIST_PREPARSE ),
plspos, true, false );
}
else /* Play or Enqueue (preparse) */
/* FIXME: playlist_AddInput() can fail */
playlist_AddInput( p_playlist, p_input,
PLAYLIST_APPEND |
( b_play ? PLAYLIST_GO : PLAYLIST_PREPARSE ),
PLAYLIST_END, true, false );
i_count ++; /* increment counter */
vlc_gc_decref( p_input );
while( i_options > 0 )
free( ppsz_options[--i_options] );
free( ppsz_options );
When the code tries to append the new item, VLC exits silently.
Deleting the parent item is also not working for some reason. If I try
to append the new item to PLAYLIST_END, it works, but the parent item
still cannot be deleted.
What's wrong with the code? I'm very new to the internals of VLC, so
probably my code doesn't do what I expect. Could you please help?
Thanks in advance!
George
More information about the vlc-devel
mailing list