summaryrefslogtreecommitdiff
path: root/src/xine-engine
diff options
context:
space:
mode:
Diffstat (limited to 'src/xine-engine')
-rw-r--r--src/xine-engine/events.h21
-rw-r--r--src/xine-engine/load_plugins.c6
-rw-r--r--src/xine-engine/osd.c19
-rw-r--r--src/xine-engine/osd.h10
-rw-r--r--src/xine-engine/xine_internal.h4
5 files changed, 53 insertions, 7 deletions
diff --git a/src/xine-engine/events.h b/src/xine-engine/events.h
index 807fb66b4..2cdf32a88 100644
--- a/src/xine-engine/events.h
+++ b/src/xine-engine/events.h
@@ -58,6 +58,8 @@ extern "C" {
#define XINE_EVENT_INPUT_ANGLE_NEXT 20
#define XINE_EVENT_INPUT_ANGLE_PREVIOUS 21
#define XINE_EVENT_SPU_FORCEDISPLAY 22
+#define XINE_EVENT_FRAME_CHANGE 23
+#define XINE_EVENT_CLOSED_CAPTION 24
/*
* generic event type.
@@ -105,6 +107,25 @@ typedef struct {
int handled;
} xine_next_mrl_event_t;
+/*
+ * notify frame change
+ */
+typedef struct {
+ xine_event_t event;
+ int width;
+ int height;
+} xine_frame_change_event_t;
+
+/*
+ * closed caption
+ */
+typedef struct {
+ xine_event_t event;
+ uint8_t *buffer;
+ uint32_t buf_len;
+ uint32_t pts;
+ uint32_t scr;
+} xine_closed_caption_event_t;
#ifdef __cplusplus
}
diff --git a/src/xine-engine/load_plugins.c b/src/xine-engine/load_plugins.c
index 00bc05b43..cde800de7 100644
--- a/src/xine-engine/load_plugins.c
+++ b/src/xine-engine/load_plugins.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: load_plugins.c,v 1.64 2002/01/02 18:16:07 jkeil Exp $
+ * $Id: load_plugins.c,v 1.65 2002/01/05 21:54:17 miguelfreitas Exp $
*
*
* Load input/demux/audio_out/video_out/codec plugins
@@ -571,7 +571,7 @@ void load_decoder_plugins (xine_t *this,
video_decoder_t *vdp;
int streamtype;
- vdp = (video_decoder_t *) initplug(iface_version, config);
+ vdp = (video_decoder_t *) initplug(iface_version, this);
if (vdp) {
vdp->metronom = this->metronom;
@@ -596,7 +596,7 @@ void load_decoder_plugins (xine_t *this,
audio_decoder_t *adp;
int streamtype;
- adp = (audio_decoder_t *) initplug(iface_version, config);
+ adp = (audio_decoder_t *) initplug(iface_version, this);
if (adp) {
for (streamtype = 0; streamtype<DECODER_PLUGIN_MAX; streamtype++)
diff --git a/src/xine-engine/osd.c b/src/xine-engine/osd.c
index 58fc4d5f8..9263674ad 100644
--- a/src/xine-engine/osd.c
+++ b/src/xine-engine/osd.c
@@ -279,6 +279,24 @@ static int osd_hide (osd_object_t *osd, uint32_t vpts) {
return 1;
}
+
+/*
+ * clear an osd object, so that it can be used for rendering a new image
+ */
+
+static void osd_clear (osd_object_t *osd) {
+#ifdef LOG_DEBUG
+ printf("osd_clear\n");
+#endif
+
+ memset(osd->area, 0, osd->width * osd->height);
+ osd->x1 = osd->width;
+ osd->y1 = osd->height;
+ osd->x2 = 0;
+ osd->y2 = 0;
+}
+
+
/*
* Bresenham line implementation on osd object
*/
@@ -849,6 +867,7 @@ osd_renderer_t *osd_renderer_init( video_overlay_instance_t *video_overlay, conf
this->get_palette = osd_get_palette;
this->set_position = osd_set_position;
this->set_font = osd_set_font;
+ this->clear = osd_clear;
this->line = osd_line;
this->filled_rect = osd_filled_rect;
this->render_text = osd_render_text;
diff --git a/src/xine-engine/osd.h b/src/xine-engine/osd.h
index a55b791bd..177b9d817 100644
--- a/src/xine-engine/osd.h
+++ b/src/xine-engine/osd.h
@@ -18,7 +18,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
* OSD stuff (text and graphic primitives)
- * $Id: osd.h,v 1.5 2001/12/13 23:15:02 guenter Exp $
+ * $Id: osd.h,v 1.6 2002/01/05 21:54:17 miguelfreitas Exp $
*/
#ifndef HAVE_OSD_H
@@ -33,6 +33,7 @@ typedef struct osd_object_s osd_object_t;
typedef struct osd_renderer_s osd_renderer_t;
typedef struct osd_font_s osd_font_t;
+/* WARNING: this should be kept in sync with include/xine.h.tmpl.in */
struct osd_renderer_s {
/*
@@ -123,7 +124,12 @@ struct osd_renderer_s {
* osd objects are closed
*/
void (*close) (osd_renderer_t *this);
-
+
+ /*
+ * clear an osd object
+ */
+ void (*clear) (osd_object_t *osd );
+
/* private stuff */
pthread_mutex_t osd_mutex;
diff --git a/src/xine-engine/xine_internal.h b/src/xine-engine/xine_internal.h
index a4f960136..9ffcadd4c 100644
--- a/src/xine-engine/xine_internal.h
+++ b/src/xine-engine/xine_internal.h
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: xine_internal.h,v 1.67 2001/12/27 14:30:30 f1rmb Exp $
+ * $Id: xine_internal.h,v 1.68 2002/01/05 21:54:17 miguelfreitas Exp $
*
*/
@@ -55,7 +55,7 @@ extern "C" {
#define INPUT_PLUGIN_MAX 50
#define DEMUXER_PLUGIN_MAX 50
#define DECODER_PLUGIN_MAX 256
-#define DECODER_PLUGIN_IFACE_VERSION 4
+#define DECODER_PLUGIN_IFACE_VERSION 5
#define AUDIO_OUT_PLUGIN_MAX 50
#define VIDEO_OUT_PLUGIN_MAX 50
#define XINE_MAX_EVENT_LISTENERS 50