X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fomnplay.cpp;h=2912ecdcda00a13300b8dfe313066e4d17d751ab;hb=499664bbfa646b6280553d1dc2dfb71db8c2e4d9;hp=55358283cf1c3fc75b3811ca7a7ffd2511e59b5f;hpb=8a6207f6d27cdb27b9774e0c36e09e23e9ac6526;p=melted_gui diff --git a/src/omnplay.cpp b/src/omnplay.cpp index 5535828..2912ecd 100644 --- a/src/omnplay.cpp +++ b/src/omnplay.cpp @@ -39,6 +39,49 @@ #include "omplrclnt.h" +int omnplay_get_content(omnplay_instance_t* app, playlist_item_t *items, int limit, + omnplay_get_content_cb_proc proc, void* data) +{ + int r, c = 0; + OmPlrClipInfo clip_info; + char clip_name[omPlrMaxClipDirLen]; + + pthread_mutex_lock(&app->players.lock); + + r = OmPlrClipGetFirst((OmPlrHandle)app->players.item[0].handle, clip_name, sizeof(clip_name)); + for(; c < limit && !r;) + { + /* get clip info */ + clip_info.maxMsTracks = 0; + clip_info.size = sizeof(clip_info); + + r = OmPlrClipGetInfo((OmPlrHandle)app->players.item[0].handle, clip_name, &clip_info); + + if(!r) + { + /* copy item props */ + strncpy(items[c].id, clip_name, PATH_MAX); + items[c].in = clip_info.firstFrame; + items[c].dur = clip_info.lastFrame - clip_info.firstFrame; + + /* callback */ + pthread_mutex_unlock(&app->players.lock); + if(proc) + proc(app, &items[c], data); + pthread_mutex_lock(&app->players.lock); + + c++; + }; + + r = OmPlrClipGetNext((OmPlrHandle)app->players.item[0].handle, clip_name, sizeof(clip_name)); + }; + + pthread_mutex_unlock(&app->players.lock); + + return c; +}; + + static gboolean on_main_window_delete_event( GtkWidget *widget, GdkEvent *event, gpointer user_data ) { gtk_exit(0);