X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fomnplay.h;h=fc6b1d8d58ee51d46e90c008ac58e3cffc7a0ca4;hb=5a2f0a475dfa74cb43b5abeb69dce4fd386e2fdb;hp=4eef5d7c38a5a05fe91ed7127dddcb481f550383;hpb=eb06bae3e057a7ba33250efa64695eff856118ea;p=melted_gui diff --git a/src/omnplay.h b/src/omnplay.h index 4eef5d7..fc6b1d8 100644 --- a/src/omnplay.h +++ b/src/omnplay.h @@ -51,37 +51,130 @@ typedef enum control_buttons BUTTON_LAST } control_buttons_t; +#define OMNPLAY_PLAYLIST_BLOCK_BEGIN 1 +#define OMNPLAY_PLAYLIST_BLOCK_BODY 0 +#define OMNPLAY_PLAYLIST_BLOCK_END 2 +#define OMNPLAY_PLAYLIST_BLOCK_LOOP 4 + +typedef enum playlist_item_type +{ + // 1 + OMNPLAY_PLAYLIST_ITEM_BLOCK_BEGIN = OMNPLAY_PLAYLIST_BLOCK_BEGIN, + // 0 + OMNPLAY_PLAYLIST_ITEM_BLOCK_BODY = OMNPLAY_PLAYLIST_BLOCK_BODY, + // 2 + OMNPLAY_PLAYLIST_ITEM_BLOCK_END = OMNPLAY_PLAYLIST_BLOCK_END, + // 3 + OMNPLAY_PLAYLIST_ITEM_BLOCK_SINGLE = OMNPLAY_PLAYLIST_BLOCK_BEGIN | + OMNPLAY_PLAYLIST_BLOCK_BODY | + OMNPLAY_PLAYLIST_BLOCK_END, + // 5 + OMNPLAY_PLAYLIST_ITEM_LOOP_BEGIN = OMNPLAY_PLAYLIST_BLOCK_BEGIN | + OMNPLAY_PLAYLIST_BLOCK_LOOP, + // 4 + OMNPLAY_PLAYLIST_ITEM_LOOP_BODY = OMNPLAY_PLAYLIST_BLOCK_BODY | + OMNPLAY_PLAYLIST_BLOCK_LOOP, + // 6 + OMNPLAY_PLAYLIST_ITEM_LOOP_END = OMNPLAY_PLAYLIST_BLOCK_END | + OMNPLAY_PLAYLIST_BLOCK_LOOP, + // 7 + OMNPLAY_PLAYLIST_ITEM_LOOP_SINGLE = OMNPLAY_PLAYLIST_BLOCK_BEGIN | + OMNPLAY_PLAYLIST_BLOCK_BODY | + OMNPLAY_PLAYLIST_BLOCK_END | + OMNPLAY_PLAYLIST_BLOCK_LOOP, +} playlist_item_type_t; + +#define MAX_PLAYLIST_ITEMS 1024 +#define MAX_LIBRARY_ITEMS 10240 +#define PLAYLIST_ITEM_ERROR_LIB 1 +#define PLAYLIST_ITEM_ERROR_CUE 2 + +typedef struct playlist_item +{ + char id[PATH_MAX]; + char title[PATH_MAX]; + int in; + int dur; + int player; + playlist_item_type_t type; + int omn_idx; + int omn_offset; + int error; +} playlist_item_t; + #define MAX_PLAYERS 4 +struct omnplay_instance; + typedef struct omnplay_player { + int idx; char name[PATH_MAX]; char host[PATH_MAX]; void* handle; pthread_t thread; - pthread_mutex_t lock; GtkWidget *label_status, *label_state, *label_tc_cur, *label_tc_rem, *label_clip; -} -omnplay_player_t; + struct omnplay_instance *app; + int playlist_start; + int playlist_length; +} omnplay_player_t; typedef struct omnplay_instance { GtkWidget *window; + GtkWidget *playlist_grid; + GtkWidget *library_grid; GtkWidget *buttons[BUTTON_LAST + 1]; struct { omnplay_player_t item[MAX_PLAYERS]; int count; char path[PATH_MAX]; + pthread_mutex_t lock; } players; int f_exit; -} -omnplay_instance_t; + struct + { + playlist_item_t item[MAX_PLAYLIST_ITEMS]; + int count; + int ver_curr; + int ver_prev; + pthread_mutex_t lock; + char* path; + GdkPixbuf *block_icons[8]; + } playlist; + struct + { + playlist_item_t item[MAX_LIBRARY_ITEMS]; + int count; + char filename[PATH_MAX]; + char whois[PATH_MAX]; + pthread_mutex_t lock; + } library; +} omnplay_instance_t; omnplay_instance_t* omnplay_create(int argc, char** argv); void omnplay_init(omnplay_instance_t* app); void omnplay_release(omnplay_instance_t* app); void omnplay_destroy(omnplay_instance_t* app); +void omnplay_playlist_load(omnplay_instance_t* app); +void omnplay_playlist_save(omnplay_instance_t* app); +void omnplay_playlist_draw(omnplay_instance_t* app); +void omnplay_playlist_draw_item(omnplay_instance_t* app, int idx); +void omnplay_playlist_draw_item_rem(omnplay_instance_t* app, int idx, char* rem); +void omnplay_library_load(omnplay_instance_t* app); +void omnplay_library_save(omnplay_instance_t* app); +void omnplay_library_refresh(omnplay_instance_t* app); +void omnplay_library_draw(omnplay_instance_t* app); +typedef void (*omnplay_get_content_cb_proc)(omnplay_instance_t* app, playlist_item_t *items, void* data); +int omnplay_get_content(omnplay_instance_t* app, playlist_item_t *items, int limit, + omnplay_get_content_cb_proc proc, void* data); +int omnplay_whois_list(omnplay_instance_t* app, playlist_item_t *items, int* plimit); +int omnplay_library_load_file(playlist_item_t* items, int *pcount, char* filename); +playlist_item_t* omnplay_library_find(omnplay_instance_t* app, char* id); +int omnplay_library_normalize_item(omnplay_instance_t* app, playlist_item_t* item); +playlist_item_t* omnplay_library_get_selected(omnplay_instance_t* app, int *count); +void omnplay_playlist_normalize(omnplay_instance_t* app); #ifdef __cplusplus };