From: raster Date: Sun, 19 Oct 2008 22:45:20 +0000 (+0000) Subject: vlc moduel was utterly wrong - methods wrong comapred to module struct funcs. X-Git-Tag: submit/2.0alpha-wayland/20121127.222018~372 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9a08757bcc8365003b2af657bab9123e23ae48db;p=profile%2Fivi%2Femotion.git vlc moduel was utterly wrong - methods wrong comapred to module struct funcs. fixed. still broken. did this ever work? :) git-svn-id: http://svn.enlightenment.org/svn/e/trunk/emotion@36825 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/src/modules/vlc/emotion_vlc.c b/src/modules/vlc/emotion_vlc.c index 84ae5f8..58cfb5a 100644 --- a/src/modules/vlc/emotion_vlc.c +++ b/src/modules/vlc/emotion_vlc.c @@ -44,11 +44,11 @@ static unsigned char em_init(Evas_Object *obj, void **emotion_video, Emotion_Mod if (!emotion_video) return 0; - ev = (Emotion_Vlc_Video*)malloc(sizeof(Emotion_Vlc_Video)); + ev = (Emotion_Vlc_Video*)calloc(1, sizeof(Emotion_Vlc_Video)); ASSERT_EV(ev) return 0; memset(ev, 0, sizeof(Emotion_Vlc_Video)); - ef = (Emotion_Vlc_Video_Frame*)malloc(sizeof(Emotion_Vlc_Video_Frame)); + ef = (Emotion_Vlc_Video_Frame*)calloc(1, sizeof(Emotion_Vlc_Video_Frame)); if (!ef) return 0; memset(ef, 0, sizeof(Emotion_Vlc_Video_Frame)); @@ -303,16 +303,6 @@ static void em_pos_set(void *ef, double pos) CATCH(ev->vlc_ex) } -static void em_vis_set(void *ef, Emotion_Vis vis) -{ - Emotion_Vlc_Video *ev; - - ev = (Emotion_Vlc_Video *)ef; - ASSERT_EV(ev) return; - if (ev->vis == vis) return; - ev->vis = vis; -} - static double em_len_get(void *ef) { Emotion_Vlc_Video *ev; @@ -356,6 +346,16 @@ static double em_pos_get(void *ef) return ev->pos; } +static void em_vis_set(void *ef, Emotion_Vis vis) +{ + Emotion_Vlc_Video *ev; + + ev = (Emotion_Vlc_Video *)ef; + ASSERT_EV(ev) return; + if (ev->vis == vis) return; + ev->vis = vis; +} + static Emotion_Vis em_vis_get(void *ef) { Emotion_Vlc_Video *ev; @@ -364,6 +364,14 @@ static Emotion_Vis em_vis_get(void *ef) return ev->vis; } +static Evas_Bool em_vis_supported(void *ef, Emotion_Vis vis) +{ + Emotion_Vlc_Video *ev; + + ev = (Emotion_Vlc_Video *)ef; + return 0; +} + static double em_ratio_get(void *ef) { double ratio; @@ -442,8 +450,23 @@ static void em_video_data_size_get(void *ef, int *w, int *h) static int em_yuv_rows_get(void *ef, int w, int h, unsigned char **yrows, unsigned char **urows, unsigned char **vrows) { - Emotion_Vlc_Video *ev; - return 0; + Emotion_Vlc_Video *ev; + volatile Emotion_Vlc_Video_Frame *fr; + + ev = (Emotion_Vlc_Video *)ef; + fr = ev->cur_frame; + if (!fr) return 0; + if (fr->frame_A) + { + int i; + + // FIXME: this is wrong. see xine/gst modules + for (i = 0; i < h; i++) yrows[i] = fr->frame_A + (i * w); + for (i = 0; i < (h / 2); i++) urows[i] = fr->frame_A + (i * w); + for (i = 0; i < (h / 2); i++) vrows[i] = fr->frame_A + (i * w); + return 1; + } + return 0; } static int em_bgra_data_get(void *ef, unsigned char **bgra_data) @@ -1126,13 +1149,14 @@ static Emotion_Video_Module em_module = em_stop, /* stop */ em_size_get, /* size_get */ em_pos_set, /* pos_set */ - em_vis_set, /* vis_set */ em_len_get, /* len_get */ em_fps_num_get, /* fps_num_get */ em_fps_den_get, /* fps_den_get */ em_fps_get, /* fps_get */ em_pos_get, /* pos_get */ + em_vis_set, /* vis_set */ em_vis_get, /* vis_get */ + em_vis_supported, /* vis_supported */ em_ratio_get, /* ratio_get */ em_video_handled, /* video_handled */ em_audio_handled, /* audio_handled */ @@ -1140,7 +1164,7 @@ static Emotion_Video_Module em_module = em_frame_done, /* frame_done */ em_format_get, /* format_get */ em_video_data_size_get, /* video_data_size_get */ - NULL, /* yuv_rows_get */ + em_yuv_rows_get, /* yuv_rows_get */ em_bgra_data_get, /* bgra_data_get */ em_event_feed, /* event_feed */ em_event_mouse_button_feed, /* event_mouse_button_feed */ diff --git a/src/modules/vlc/emotion_vlc.h b/src/modules/vlc/emotion_vlc.h index 84faccc..fa1d54a 100644 --- a/src/modules/vlc/emotion_vlc.h +++ b/src/modules/vlc/emotion_vlc.h @@ -52,18 +52,20 @@ static void em_play (void *ef, double pos); static void em_stop (void *ef); static void em_size_get (void *ef, int *w, int *h); static void em_pos_set (void *ef, double pos); -static void em_vis_set (void *ef, Emotion_Vis vis); static double em_len_get (void *ef); static int em_fps_num_get (void *ef); static int em_fps_den_get (void *ef); static double em_fps_get (void *ef); static double em_pos_get (void *ef); +static void em_vis_set (void *ef, Emotion_Vis vis); static Emotion_Vis em_vis_get (void *ef); +static Evas_Bool em_vis_supported(void *ef, Emotion_Vis vis); static double em_ratio_get (void *ef); static int em_seekable (void *ef); static void em_frame_done (void *ef); static Emotion_Format em_format_get (void *ef); static void em_video_data_size_get (void *ef, int *w, int *h); +static int em_yuv_rows_get (void *ef, int w, int h, unsigned char **yrows, unsigned char **urows, unsigned char **vrows); static int em_bgra_data_get (void *ef, unsigned char **bgra_data); static void em_event_feed (void *ef, int event); static void em_event_mouse_button_feed (void *ef, int button, int x, int y);