Difference between revisions of "LibVLC Media List Management"
Pdherbemont (talk | contribs) (Sample code) |
Pdherbemont (talk | contribs) m |
||
Line 25: | Line 25: | ||
libvlc_media_instance_t * p_mi; | libvlc_media_instance_t * p_mi; | ||
libvlc_media_descriptor_t * p_md1, *p_md2; | libvlc_media_descriptor_t * p_md1, *p_md2; | ||
− | + | ||
libvlc_exception_init( &e ); | libvlc_exception_init( &e ); | ||
− | + | ||
p_ml = libvlc_media_list_new( p_vlc, &e ); | p_ml = libvlc_media_list_new( p_vlc, &e ); | ||
quit_on_exception( &e ); | quit_on_exception( &e ); | ||
− | + | ||
p_md1 = libvlc_media_descriptor_new( p_vlc, "http://mycool.com/movie1.avi", &e ); | p_md1 = libvlc_media_descriptor_new( p_vlc, "http://mycool.com/movie1.avi", &e ); | ||
quit_on_exception( &e ); | quit_on_exception( &e ); | ||
− | + | ||
p_md2 = libvlc_media_descriptor_new( p_vlc, "http://mycool.com/movie2.avi", &e ); | p_md2 = libvlc_media_descriptor_new( p_vlc, "http://mycool.com/movie2.avi", &e ); | ||
quit_on_exception( &e ); | quit_on_exception( &e ); | ||
− | + | ||
libvlc_media_list_add( p_ml, p_md1, &e ); | libvlc_media_list_add( p_ml, p_md1, &e ); | ||
quit_on_exception( &e ); | quit_on_exception( &e ); | ||
− | + | ||
libvlc_media_list_add( p_ml, p_md2, &e ); | libvlc_media_list_add( p_ml, p_md2, &e ); | ||
quit_on_exception( &e ); | quit_on_exception( &e ); | ||
− | + | ||
libvlc_media_descriptor_release( p_md1 ); | libvlc_media_descriptor_release( p_md1 ); | ||
libvlc_media_descriptor_release( p_md2 ); | libvlc_media_descriptor_release( p_md2 ); | ||
− | + | ||
p_mlp = libvlc_media_list_player_new( p_vlc, &e ); | p_mlp = libvlc_media_list_player_new( p_vlc, &e ); | ||
quit_on_exception( &e ); | quit_on_exception( &e ); | ||
− | + | ||
p_mi = libvlc_media_instance_new( p_vlc, &e ); | p_mi = libvlc_media_instance_new( p_vlc, &e ); | ||
quit_on_exception( &e ); | quit_on_exception( &e ); | ||
− | + | ||
/* Use our media list */ | /* Use our media list */ | ||
libvlc_media_list_player_set_media_list( p_mlp, p_ml, &e ); | libvlc_media_list_player_set_media_list( p_mlp, p_ml, &e ); | ||
quit_on_exception( &e ); | quit_on_exception( &e ); | ||
− | + | ||
/* Use a given media instance */ | /* Use a given media instance */ | ||
libvlc_media_list_player_set_media_instance( p_mlp, p_mi, &e ); | libvlc_media_list_player_set_media_instance( p_mlp, p_mi, &e ); | ||
quit_on_exception( &e ); | quit_on_exception( &e ); | ||
− | + | ||
/* Get our media instance to use our window */ | /* Get our media instance to use our window */ | ||
libvlc_media_instance_set_drawable( p_mlp, window, &e ); | libvlc_media_instance_set_drawable( p_mlp, window, &e ); | ||
quit_on_exception( &e ); | quit_on_exception( &e ); | ||
− | + | ||
/* Play */ | /* Play */ | ||
libvlc_media_instance_play( p_mlp, &e ); | libvlc_media_instance_play( p_mlp, &e ); | ||
quit_on_exception( &e ); | quit_on_exception( &e ); | ||
− | + | ||
/* Let it play forever */ | /* Let it play forever */ | ||
while(1) sleep(300); | while(1) sleep(300); | ||
} | } |
Revision as of 20:05, 18 March 2008
Global Description of the available objects
The atomic item that represent a media that you can play is a media_descriptor in LibVLC.
A media_list is an object that contains several media_descriptor. You can add items to that media_list.
A media_list_view is an object that provide a way to see/browse a media_list (Read-only). There are currently two kind of media_list_view:
- a flat media list view
- a hierarchical media list view
You can play a media_list using a media_list_player.
A media descriptor can contain a media list
A playlist downloaded from Google video has a corresponding media_descriptor. This media_descriptor has several subitems. You can access them through libvlc_media_descriptor_subitems() which returns a media_list.
This explains how a media_list can be hierarchical. To browse it you'll use libvlc_media_list_hierarchy_view(). To view the all the item without hierarchy use libvlc_media_list_flat_view().
Sample Code
void setup_media_list( libvlc_instance_t * p_vlc, libvlc_drawable_t window ) { libvlc_exception_t e; libvlc_media_list_t * p_ml; libvlc_media_list_player_t * p_mlp; libvlc_media_instance_t * p_mi; libvlc_media_descriptor_t * p_md1, *p_md2; libvlc_exception_init( &e ); p_ml = libvlc_media_list_new( p_vlc, &e ); quit_on_exception( &e ); p_md1 = libvlc_media_descriptor_new( p_vlc, "http://mycool.com/movie1.avi", &e ); quit_on_exception( &e ); p_md2 = libvlc_media_descriptor_new( p_vlc, "http://mycool.com/movie2.avi", &e ); quit_on_exception( &e ); libvlc_media_list_add( p_ml, p_md1, &e ); quit_on_exception( &e ); libvlc_media_list_add( p_ml, p_md2, &e ); quit_on_exception( &e ); libvlc_media_descriptor_release( p_md1 ); libvlc_media_descriptor_release( p_md2 ); p_mlp = libvlc_media_list_player_new( p_vlc, &e ); quit_on_exception( &e ); p_mi = libvlc_media_instance_new( p_vlc, &e ); quit_on_exception( &e ); /* Use our media list */ libvlc_media_list_player_set_media_list( p_mlp, p_ml, &e ); quit_on_exception( &e ); /* Use a given media instance */ libvlc_media_list_player_set_media_instance( p_mlp, p_mi, &e ); quit_on_exception( &e ); /* Get our media instance to use our window */ libvlc_media_instance_set_drawable( p_mlp, window, &e ); quit_on_exception( &e ); /* Play */ libvlc_media_instance_play( p_mlp, &e ); quit_on_exception( &e ); /* Let it play forever */ while(1) sleep(300); }