X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fomnplay.h;h=123d6a1fc64513561f92add77d415b8936540b9d;hb=7c1a2200d9071274ad16364be58bf82574748dd9;hp=2c3b41de3ec7987e776f71c55f1f0c559aeea510;hpb=e44b8496425b348e22165e767b3e8fa52dcad953;p=omnplay diff --git a/src/omnplay.h b/src/omnplay.h index 2c3b41d..123d6a1 100644 --- a/src/omnplay.h +++ b/src/omnplay.h @@ -51,22 +51,73 @@ typedef enum control_buttons BUTTON_LAST } control_buttons_t; +#define OMNPLAY_PLAYLIST_BLOCK_BEGIN (1 << 0) // 1 +#define OMNPLAY_PLAYLIST_BLOCK_BODY 0 // 0 +#define OMNPLAY_PLAYLIST_BLOCK_END (1 << 1) // 2 +#define OMNPLAY_PLAYLIST_BLOCK_LOOP (1 << 2) // 4 + +typedef enum playlist_item_type +{ + OMNPLAY_PLAYLIST_ITEM_BLOCK_BEGIN = OMNPLAY_PLAYLIST_BLOCK_BEGIN, + + OMNPLAY_PLAYLIST_ITEM_BLOCK_BODY = OMNPLAY_PLAYLIST_BLOCK_BODY, + + OMNPLAY_PLAYLIST_ITEM_BLOCK_END = OMNPLAY_PLAYLIST_BLOCK_END, + + OMNPLAY_PLAYLIST_ITEM_BLOCK_SINGLE = OMNPLAY_PLAYLIST_BLOCK_END | \ + OMNPLAY_PLAYLIST_BLOCK_BODY | \ + OMNPLAY_PLAYLIST_BLOCK_END, + + OMNPLAY_PLAYLIST_ITEM_LOOP_BEGIN = OMNPLAY_PLAYLIST_BLOCK_BEGIN | \ + OMNPLAY_PLAYLIST_BLOCK_LOOP, + + OMNPLAY_PLAYLIST_ITEM_LOOP_BODY = OMNPLAY_PLAYLIST_BLOCK_BODY | \ + OMNPLAY_PLAYLIST_BLOCK_LOOP, + + OMNPLAY_PLAYLIST_ITEM_LOOP_END = OMNPLAY_PLAYLIST_BLOCK_END | \ + OMNPLAY_PLAYLIST_BLOCK_LOOP, + + OMNPLAY_PLAYLIST_ITEM_LOOP_SINGLE = OMNPLAY_PLAYLIST_BLOCK_END | \ + OMNPLAY_PLAYLIST_BLOCK_BODY | \ + OMNPLAY_PLAYLIST_BLOCK_END | \ + OMNPLAY_PLAYLIST_BLOCK_LOOP, +} playlist_item_type_t; + +#define MAX_PLAYLIST_ITEMS 1024 + +typedef struct playlist_item +{ + char id[PATH_MAX]; + char title[PATH_MAX]; + int in; + int dur; + int player; + playlist_item_type_t type; +} 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_cur, *label_rem, *label_clip; -} -omnplay_player_t; + GtkWidget *label_status, *label_state, *label_tc_cur, *label_tc_rem, *label_clip; + struct omnplay_instance *app; + int playlist_start; + int playlist_count; +} omnplay_player_t; typedef struct omnplay_instance { GtkWidget *window; + GtkWidget *playlist_grid; + GtkWidget *library_grid; GtkWidget *buttons[BUTTON_LAST + 1]; struct { @@ -75,13 +126,24 @@ typedef struct omnplay_instance char path[PATH_MAX]; } 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; + } playlist; +} 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); #ifdef __cplusplus };