Enlightenment CVS committal
Author : raster
Project : e17
Module : libs/emotion
Dir : e17/libs/emotion/src/modules
Modified Files:
emotion_xine.c emotion_xine.h
Log Message:
1. create new xine_t per video - xine has a single internal clock so pause 1
video - all pause as clock stops. xine issue - but this works around it.
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/emotion/src/modules/emotion_xine.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- emotion_xine.c 21 Jul 2004 07:38:17 -0000 1.11
+++ emotion_xine.c 23 Jul 2004 03:15:30 -0000 1.12
@@ -3,7 +3,6 @@
#include "emotion_xine.h"
static int init_count = 0;
-static xine_t *decoder = NULL;
static int em_init(void);
static int em_shutdown(void);
@@ -66,22 +65,6 @@
{
init_count++;
if (init_count > 1) return init_count;
- decoder = xine_new();
- if (decoder)
- {
- /* load config... */
- if (0)
- {
- xine_cfg_entry_t entry;
-
- if (xine_config_lookup_entry(decoder, "video.num_buffers", &entry))
- {
- entry.num_value = 1;
- xine_config_update_entry(decoder, &entry);
- }
- }
- xine_init(decoder);
- }
return init_count;
}
@@ -90,11 +73,6 @@
{
init_count--;
if (init_count > 0) return init_count;
- if (decoder)
- {
- xine_exit(decoder);
- decoder = NULL;
- }
return 0;
}
@@ -111,13 +89,20 @@
if (!ev) return NULL;
ev->obj = obj;
+ ev->decoder = xine_new();
+ if (!ev->decoder)
+ {
+ free(ev);
+ return NULL;
+ }
+ xine_init(ev->decoder);
if (1)
{
xine_cfg_entry_t cf;
- if (xine_config_lookup_entry(decoder, "input.dvd_use_readahead", &cf))
+ if (xine_config_lookup_entry(ev->decoder, "input.dvd_use_readahead", &cf))
{
cf.num_value = 1; // 0 or 1
- xine_config_update_entry(decoder, &cf);
+ xine_config_update_entry(ev->decoder, &cf);
}
}
/* some notes on parameters we could swizzle for certain inputs */
@@ -125,77 +110,82 @@
{
xine_cfg_entry_t cf;
- if (xine_config_lookup_entry(decoder, "input.dvd_device", &cf))
+ if (xine_config_lookup_entry(ev->decoder, "video.num_buffers", &cf))
+ {
+ cf.num_value = 1;
+ xine_config_update_entry(ev->decoder, &cf);
+ }
+ if (xine_config_lookup_entry(ev->decoder, "input.dvd_device", &cf))
{
cf.str_value = "/dev/dvd";
- xine_config_update_entry(decoder, &cf);
+ xine_config_update_entry(ev->decoder, &cf);
}
- if (xine_config_lookup_entry(decoder, "input.css_decryption_method", &cf))
+ if (xine_config_lookup_entry(ev->decoder, "input.css_decryption_method", &cf))
{
cf.str_value = "key"; // "key" "disk" "title"
- xine_config_update_entry(decoder, &cf);
+ xine_config_update_entry(ev->decoder, &cf);
}
- if (xine_config_lookup_entry(decoder, "input.dvd_region", &cf))
+ if (xine_config_lookup_entry(ev->decoder, "input.dvd_region", &cf))
{
cf.num_value = 0; // 0 ... 1 - 8
- xine_config_update_entry(decoder, &cf);
+ xine_config_update_entry(ev->decoder, &cf);
}
- if (xine_config_lookup_entry(decoder, "input.dvd_use_readahead", &cf))
+ if (xine_config_lookup_entry(ev->decoder, "input.dvd_use_readahead", &cf))
{
cf.num_value = 1; // 0 or 1
- xine_config_update_entry(decoder, &cf);
+ xine_config_update_entry(ev->decoder, &cf);
}
// these are used any time in runtime - so changing affects all dvd's
- if (xine_config_lookup_entry(decoder, "input.dvd_skip_behaviour", &cf))
+ if (xine_config_lookup_entry(ev->decoder, "input.dvd_skip_behaviour", &cf))
{
cf.str_value = "skip program"; // "skip program" "skip part" "skip title"
- xine_config_update_entry(decoder, &cf);
+ xine_config_update_entry(ev->decoder, &cf);
}
// these are used any time in runtime - so changing affects all dvd's
- if (xine_config_lookup_entry(decoder, "input.dvd_seek_behaviour", &cf))
+ if (xine_config_lookup_entry(ev->decoder, "input.dvd_seek_behaviour", &cf))
{
cf.str_value = "seek in program chain"; // "seek in program chain" "seek
in program"
- xine_config_update_entry(decoder, &cf);
+ xine_config_update_entry(ev->decoder, &cf);
}
- if (xine_config_lookup_entry(decoder, "input.v4l_video_device_path", &cf))
+ if (xine_config_lookup_entry(ev->decoder, "input.v4l_video_device_path", &cf))
{
cf.str_value = "/dev/video0";
- xine_config_update_entry(decoder, &cf);
+ xine_config_update_entry(ev->decoder, &cf);
}
- if (xine_config_lookup_entry(decoder, "input.cdda_use_cddb", &cf))
+ if (xine_config_lookup_entry(ev->decoder, "input.cdda_use_cddb", &cf))
{
cf.num_value = 0; // 0 or 1
- xine_config_update_entry(decoder, &cf);
+ xine_config_update_entry(ev->decoder, &cf);
}
- if (xine_config_lookup_entry(decoder, "input.cdda_device", &cf))
+ if (xine_config_lookup_entry(ev->decoder, "input.cdda_device", &cf))
{
cf.str_value = "/dev/cdrom";
- xine_config_update_entry(decoder, &cf);
+ xine_config_update_entry(ev->decoder, &cf);
}
- if (xine_config_lookup_entry(decoder, "audio.oss_device_name", &cf))
+ if (xine_config_lookup_entry(ev->decoder, "audio.oss_device_name", &cf))
{
cf.str_value = "/dev/dsp";
- xine_config_update_entry(decoder, &cf);
+ xine_config_update_entry(ev->decoder, &cf);
}
- if (xine_config_lookup_entry(decoder, "audio.oss_device_number", &cf))
+ if (xine_config_lookup_entry(ev->decoder, "audio.oss_device_number", &cf))
{
cf.num_value = -1; // -1 or 0 1 2 ...
- xine_config_update_entry(decoder, &cf);
+ xine_config_update_entry(ev->decoder, &cf);
}
- if (xine_config_lookup_entry(decoder, "audio.alsa_mmap_enable", &cf))
+ if (xine_config_lookup_entry(ev->decoder, "audio.alsa_mmap_enable", &cf))
{
cf.num_value = 1; // 0 or 1
- xine_config_update_entry(decoder, &cf);
+ xine_config_update_entry(ev->decoder, &cf);
}
- if (xine_config_lookup_entry(decoder, "codec.a52_surround_downmix", &cf))
+ if (xine_config_lookup_entry(ev->decoder, "codec.a52_surround_downmix", &cf))
{
cf.num_value = 1; // 0 or 1
- xine_config_update_entry(decoder, &cf);
+ xine_config_update_entry(ev->decoder, &cf);
}
- if (xine_config_lookup_entry(decoder, "vcd.default_device", &cf))
+ if (xine_config_lookup_entry(ev->decoder, "vcd.default_device", &cf))
{
cf.str_value = "/dev/cdrom";
- xine_config_update_entry(decoder, &cf);
+ xine_config_update_entry(ev->decoder, &cf);
}
}
if (0)
@@ -203,7 +193,7 @@
xine_mrl_t **mrls;
int mrls_num;
- mrls = xine_get_browse_mrls(decoder, "dvd", "dvd://", &mrls_num);
+ mrls = xine_get_browse_mrls(ev->decoder, "dvd", "dvd://", &mrls_num);
printf("mrls = %p\n", mrls);
if (mrls)
{
@@ -222,7 +212,7 @@
char **auto_play_mrls;
int auto_play_num;
- auto_play_mrls = xine_get_autoplay_mrls(decoder, "dvd", &auto_play_num);
+ auto_play_mrls = xine_get_autoplay_mrls(ev->decoder, "dvd", &auto_play_num);
printf("auto_play_mrls = %p\n", auto_play_mrls);
if (auto_play_mrls)
{
@@ -268,12 +258,12 @@
}
ev->fd = ev->fd_write;
- ev->video = xine_open_video_driver(decoder, "emotion", XINE_VISUAL_TYPE_NONE, ev);
- ev->audio = xine_open_audio_driver(decoder, "oss", ev);
-// ev->audio = xine_open_audio_driver(decoder, "alsa", ev);
-// ev->audio = xine_open_audio_driver(decoder, "arts", ev);
-// ev->audio = xine_open_audio_driver(decoder, "esd", ev);
- ev->stream = xine_stream_new(decoder, ev->audio, ev->video);
+ ev->video = xine_open_video_driver(ev->decoder, "emotion", XINE_VISUAL_TYPE_NONE,
ev);
+ ev->audio = xine_open_audio_driver(ev->decoder, "oss", ev);
+// ev->audio = xine_open_audio_driver(ev->decoder, "alsa", ev);
+// ev->audio = xine_open_audio_driver(ev->decoder, "arts", ev);
+// ev->audio = xine_open_audio_driver(ev->decoder, "esd", ev);
+ ev->stream = xine_stream_new(ev->decoder, ev->audio, ev->video);
ev->queue = xine_event_new_queue(ev->stream);
xine_event_create_listener_thread(ev->queue, _em_event, ev);
if (!xine_open(ev->stream, file))
@@ -285,8 +275,8 @@
close(ev->fd_ev_write);
close(ev->fd_ev_read);
xine_dispose(ev->stream);
- if (ev->video) xine_close_video_driver(decoder, ev->video);
- if (ev->audio) xine_close_audio_driver(decoder, ev->audio);
+ if (ev->video) xine_close_video_driver(ev->decoder, ev->video);
+ if (ev->audio) xine_close_audio_driver(ev->decoder, ev->audio);
xine_event_dispose_queue(ev->queue);
free(ev);
return NULL;
@@ -369,9 +359,9 @@
printf("EX dispose evq\n");
xine_event_dispose_queue(ev->queue);
printf("EX close video drv\n");
- if (ev->video) xine_close_video_driver(decoder, ev->video);
+ if (ev->video) xine_close_video_driver(ev->decoder, ev->video);
printf("EX close audio drv\n");
- if (ev->audio) xine_close_audio_driver(decoder, ev->audio);
+ if (ev->audio) xine_close_audio_driver(ev->decoder, ev->audio);
printf("EX del timer\n");
if (ev->timer) ecore_timer_del(ev->timer);
printf("EX del fds\n");
@@ -381,6 +371,7 @@
ecore_main_fd_handler_del(ev->fd_ev_handler);
close(ev->fd_ev_write);
close(ev->fd_ev_read);
+ xine_exit(ev->decoder);
free(ev);
}
@@ -1132,7 +1123,7 @@
{
xine_ui_data_t *e;
- e = eev->xine_event;
+ e = (xine_ui_data_t *)eev->xine_event;
_emotion_title_set(ev->obj, e->str);
}
break;
@@ -1140,14 +1131,14 @@
{
xine_format_change_data_t *e;
- e = eev->xine_event;
+ e = (xine_format_change_data_t *)eev->xine_event;
}
break;
case XINE_EVENT_UI_MESSAGE:
{
xine_ui_message_data_t *e;
- e = eev->xine_event;
+ e = (xine_ui_message_data_t *)eev->xine_event;
printf("EV: UI Message [FIXME: break this out to emotion
api]\n");
// e->type = error type(XINE_MSG_NO_ERROR,
XINE_MSG_GENERAL_WARNING, XINE_MSG_UNKNOWN_HOST etc.)
// e->messages is a list of messages DOUBLE null terminated
@@ -1157,7 +1148,7 @@
{
xine_audio_level_data_t *e;
- e = eev->xine_event;
+ e = (xine_audio_level_data_t *)eev->xine_event;
printf("EV: Audio Level [FIXME: break this out to emotion
api]\n");
// e->left (0->100)
// e->right
@@ -1168,15 +1159,15 @@
{
xine_progress_data_t *e;
- e = eev->xine_event;
- _emotion_progress_set(ev->obj, e->description,
(double)e->percent / 100.0);
+ e = (xine_progress_data_t *)eev->xine_event;
+ _emotion_progress_set(ev->obj, (char *)e->description,
(double)e->percent / 100.0);
}
break;
case XINE_EVENT_MRL_REFERENCE:
{
xine_mrl_reference_data_t *e;
- e = eev->xine_event;
+ e = (xine_mrl_reference_data_t *)eev->xine_event;
_emotion_file_ref_set(ev->obj, e->mrl, e->alternative);
}
break;
@@ -1184,7 +1175,7 @@
{
xine_ui_data_t *e;
- e = eev->xine_event;
+ e = (xine_ui_data_t *)eev->xine_event;
_emotion_spu_button_num_set(ev->obj, e->num_buttons);
}
break;
@@ -1192,7 +1183,7 @@
{
xine_spu_button_t *e;
- e = eev->xine_event;
+ e = (xine_spu_button_t *)eev->xine_event;
if (e->direction == 1)
_emotion_spu_button_set(ev->obj, e->button);
else
@@ -1203,7 +1194,7 @@
{
xine_dropped_frames_t *e;
- e = eev->xine_event;
+ e = (xine_dropped_frames_t *)eev->xine_event;
printf("EV: Dropped Frames (skipped %i) (discarded %i) [FIXME:
break this out to the emotion api]\n", e->skipped_frames, e->discarded_frames);
// e->skipped_frames = % frames skipped * 10
// e->discarded_frames = % frames skipped * 10
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/emotion/src/modules/emotion_xine.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- emotion_xine.h 21 Jul 2004 06:34:18 -0000 1.5
+++ emotion_xine.h 23 Jul 2004 03:15:30 -0000 1.6
@@ -12,6 +12,7 @@
struct _Emotion_Xine_Video
{
+ xine_t *decoder;
xine_video_port_t *video;
xine_audio_port_t *audio;
xine_stream_t *stream;
-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=4721&alloc_id=10040&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs