support fetching of meta-data
authorraster <raster>
Sat, 24 Jul 2004 09:53:00 +0000 (09:53 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 24 Jul 2004 09:53:00 +0000 (09:53 +0000)
git-svn-id: http://svn.enlightenment.org/svn/e/trunk/e17/libs/emotion@10999 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

configure.in
src/lib/Emotion.h
src/lib/emotion_private.h
src/lib/emotion_smart.c
src/modules/emotion_xine.c

index 6e41320..8e6c2b7 100644 (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`
index 58a14ff..e7fe3c3 100644 (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
index 1c98e78..50fc8c5 100644 (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;
 };
index f8d7552..031ac79 100644 (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;
+}
+
 
 
 
index 29df39c..a5474cd 100644 (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;
+}
+
 
 
 
@@ -1301,7 +1334,6 @@ _em_get_pos_len(Emotion_Xine_Video *ev)
 
 
 
-
 static Emotion_Video_Module em_module =
 {
    em_init, /* init */
@@ -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);