support fetching of meta-data

SVN revision: 10999
This commit is contained in:
Carsten Haitzler 2004-07-24 09:53:00 +00:00
parent 535b7783cb
commit 8914cccc83
5 changed files with 120 additions and 12 deletions

View File

@ -180,6 +180,10 @@ AC_ARG_WITH(xine-config,
V=`$ECORE_CONFIG --version`
if [ -z "$V" ]; then
echo "Error. Ecore is not installed or $ECORE_CONFIG cannot be found. Abort."
exit -1
fi
VV=`vser $V`
VM="1.0.0_pre7"
VVM=`vser $VM`
@ -189,6 +193,10 @@ if test $VV -lt $VVM; then
fi
V=`$EVAS_CONFIG --version`
if [ -z "$V" ]; then
echo "Error. Evas is not installed or $EVAS_CONFIG cannot be found. Abort."
exit -1
fi
VV=`vser $V`
VM="1.0.0_pre13"
VVM=`vser $VM`
@ -198,6 +206,10 @@ if test $VV -lt $VVM; then
fi
V=`$EDJE_CONFIG --version`
if [ -z "$V" ]; then
echo "Error. Edje is not installed or $EDJE_CONFIG cannot be found. Abort."
exit -1
fi
VV=`vser $V`
VM="0.5.0"
VVM=`vser $VM`
@ -207,6 +219,10 @@ if test $VV -lt $VVM; then
fi
V=`$XINE_CONFIG --version`
if [ -z "$V" ]; then
echo "Error. Xine is not installed or $XINE_CONFIG cannot be found. Abort."
exit -1
fi
VV=`vser $V`
VM="1.0.0"
VVM=`vser $VM`

View File

@ -36,7 +36,19 @@ enum _Emotion_Event
EMOTION_EVENT_10
};
typedef enum _Emotion_Event Emotion_Event;
enum _Emotion_Meta_Info
{
EMOTION_META_INFO_TRACK_TITLE,
EMOTION_META_INFO_TRACK_ARTIST,
EMOTION_META_INFO_TRACK_ALBUM,
EMOTION_META_INFO_TRACK_YEAR,
EMOTION_META_INFO_TRACK_GENRE,
EMOTION_META_INFO_TRACK_COMMENT,
EMOTION_META_INFO_TRACK_DISC_ID
};
typedef enum _Emotion_Event Emotion_Event;
typedef enum _Emotion_Meta_Info Emotion_Meta_Info;
#define EMOTION_CHANNEL_AUTO -1
#define EMOTION_CHANNEL_DEFAULT 0
@ -90,5 +102,6 @@ const char *emotion_object_ref_file_get (Evas_Object *obj);
int emotion_object_ref_num_get (Evas_Object *obj);
int emotion_object_spu_button_count_get (Evas_Object *obj);
int emotion_object_spu_button_get (Evas_Object *obj);
const char *emotion_object_meta_info_get (Evas_Object *obj, Emotion_Meta_Info meta);
#endif

View File

@ -7,6 +7,14 @@
#include "config.h"
#define META_TRACK_TITLE 1
#define META_TRACK_ARTIST 2
#define META_TRACK_GENRE 3
#define META_TRACK_COMMENT 4
#define META_TRACK_ALBUM 5
#define META_TRACK_YEAR 6
#define META_TRACK_DISCID 7
typedef struct _Emotion_Video_Module Emotion_Video_Module;
struct _Emotion_Video_Module
@ -57,6 +65,7 @@ struct _Emotion_Video_Module
void (*speed_set) (void *ef, double speed);
double (*speed_get) (void *ef);
int (*eject) (void *ef);
const char * (*meta_get) (void *ef, int meta);
void *handle;
};

View File

@ -694,6 +694,43 @@ emotion_object_spu_button_get(Evas_Object *obj)
return sd->spu.button;
}
const char *
emotion_object_meta_info_get(Evas_Object *obj, Emotion_Meta_Info meta)
{
Smart_Data *sd;
E_SMART_OBJ_GET_RETURN(sd, obj, E_OBJ_NAME, NULL);
if (!sd->module) return NULL;
if (!sd->video) return NULL;
switch (meta)
{
case EMOTION_META_INFO_TRACK_TITLE:
return sd->module->meta_get(sd->video, META_TRACK_TITLE);
break;
case EMOTION_META_INFO_TRACK_ARTIST:
return sd->module->meta_get(sd->video, META_TRACK_ARTIST);
break;
case EMOTION_META_INFO_TRACK_ALBUM:
return sd->module->meta_get(sd->video, META_TRACK_ALBUM);
break;
case EMOTION_META_INFO_TRACK_YEAR:
return sd->module->meta_get(sd->video, META_TRACK_YEAR);
break;
case EMOTION_META_INFO_TRACK_GENRE:
return sd->module->meta_get(sd->video, META_TRACK_GENRE);
break;
case EMOTION_META_INFO_TRACK_COMMENT:
return sd->module->meta_get(sd->video, META_TRACK_COMMENT);
break;
case EMOTION_META_INFO_TRACK_DISC_ID:
return sd->module->meta_get(sd->video, META_TRACK_DISCID);
break;
default:
break;
}
return NULL;
}

View File

@ -50,7 +50,7 @@ static const char *em_chapter_name_get(void *ef, int chapter);
static void em_speed_set(void *ef, double speed);
static double em_speed_get(void *ef);
static int em_eject(void *ef);
static const char *em_meta_get(Emotion_Xine_Video *ev, int meta);
static void *_em_seek (void *par);
static int _em_fd_active (void *data, Ecore_Fd_Handler *fdh);
@ -321,6 +321,7 @@ em_file_open(const char *file, Evas_Object *obj)
pthread_create(&ev->get_pos_len_th, NULL, _em_get_pos_len_th, ev);
pthread_attr_destroy(&thattr);
}
// em_debug(ev);
return ev;
}
@ -969,6 +970,38 @@ em_eject(void *ef)
xine_eject(ev->stream);
}
static const char *
em_meta_get(Emotion_Xine_Video *ev, int meta)
{
switch (meta)
{
case META_TRACK_TITLE:
return xine_get_meta_info(ev->stream, XINE_META_INFO_TITLE);
break;
case META_TRACK_ARTIST:
return xine_get_meta_info(ev->stream, XINE_META_INFO_ARTIST);
break;
case META_TRACK_GENRE:
return xine_get_meta_info(ev->stream, XINE_META_INFO_GENRE);
break;
case META_TRACK_COMMENT:
return xine_get_meta_info(ev->stream, XINE_META_INFO_COMMENT);
break;
case META_TRACK_ALBUM:
return xine_get_meta_info(ev->stream, XINE_META_INFO_ALBUM);
break;
case META_TRACK_YEAR:
return xine_get_meta_info(ev->stream, XINE_META_INFO_YEAR);
break;
case META_TRACK_DISCID:
return xine_get_meta_info(ev->stream, XINE_META_INFO_CDINDEX_DISCID);
break;
default:
break;
}
return NULL;
}
@ -1299,7 +1332,6 @@ _em_get_pos_len(Emotion_Xine_Video *ev)
static Emotion_Video_Module em_module =
@ -1349,7 +1381,8 @@ static Emotion_Video_Module em_module =
em_chapter_name_get, /* chapter_name_get */
em_speed_set, /* speed_set */
em_speed_get, /* speed_get */
em_eject /* eject */
em_eject, /* eject */
em_meta_get /* meta_get */
};
Emotion_Video_Module *
@ -1429,13 +1462,13 @@ em_debug(Emotion_Xine_Video *ev)
printf("video_channels = %i\n", video_channels);
printf("video_streams = %i\n", video_streams);
printf("video_seekable = %i\n", video_seekable);
// printf("title = %s\n", title);
// printf("comment = %s\n", comment);
// printf("artist = %s\n", artist);
// printf("genre = %s\n", genre);
// printf("album = %s\n", album);
// printf("year = %s\n", year);
// printf("cdindex_discid = %s\n", cdindex_discid);
printf("title = %s\n", title);
printf("comment = %s\n", comment);
printf("artist = %s\n", artist);
printf("genre = %s\n", genre);
printf("album = %s\n", album);
printf("year = %s\n", year);
printf("cdindex_discid = %s\n", cdindex_discid);
printf("video_channel = %i\n", video_channel);
printf("audio_channel = %i\n", audio_channel);
printf("spu_channels = %i\n", spu_channel);