summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRobin KAY <komadori@users.sourceforge.net>2003-10-22 20:38:09 +0000
committerRobin KAY <komadori@users.sourceforge.net>2003-10-22 20:38:09 +0000
commit51616b96cd2793085ae314fecde90ac9a0735a04 (patch)
tree0b39e50ada1882338f37d0225729a201c755e61c /src
parent35decc993a98b994662fcdca0fc537398d64a03d (diff)
downloadxine-lib-51616b96cd2793085ae314fecde90ac9a0735a04.tar.gz
xine-lib-51616b96cd2793085ae314fecde90ac9a0735a04.tar.bz2
Replace copy member in vo_frame_t with proc_frame and proc_slice. Increase video_out API version to 18.
CVS patchset: 5574 CVS date: 2003/10/22 20:38:09
Diffstat (limited to 'src')
-rw-r--r--src/libmpeg2/slice.c44
-rw-r--r--src/libmpeg2/slice_xvmc.c50
-rw-r--r--src/post/deinterlace/xine_plugin.c5
-rw-r--r--src/post/mosaico/mosaico.c10
-rw-r--r--src/post/mosaico/switch.c10
-rw-r--r--src/post/planar/boxblur.c5
-rw-r--r--src/post/planar/denoise3d.c5
-rw-r--r--src/post/planar/eq.c5
-rw-r--r--src/post/planar/eq2.c5
-rw-r--r--src/post/planar/expand.c7
-rw-r--r--src/post/planar/invert.c5
-rw-r--r--src/post/planar/unsharp.c5
-rw-r--r--src/video_out/video_out_aa.c7
-rw-r--r--src/video_out/video_out_directfb.c11
-rwxr-xr-xsrc/video_out/video_out_directx.c9
-rw-r--r--src/video_out/video_out_fb.c18
-rw-r--r--src/video_out/video_out_none.c13
-rw-r--r--src/video_out/video_out_opengl.c17
-rw-r--r--src/video_out/video_out_pgx64.c42
-rw-r--r--src/video_out/video_out_sdl.c11
-rw-r--r--src/video_out/video_out_stk.c13
-rw-r--r--src/video_out/video_out_syncfb.c11
-rw-r--r--src/video_out/video_out_vidix.c13
-rw-r--r--src/video_out/video_out_xshm.c17
-rw-r--r--src/video_out/video_out_xv.c13
-rw-r--r--src/video_out/video_out_xvmc.c11
-rw-r--r--src/xine-engine/post.c22
-rw-r--r--src/xine-engine/video_out.c23
-rw-r--r--src/xine-engine/video_out.h16
29 files changed, 239 insertions, 184 deletions
diff --git a/src/libmpeg2/slice.c b/src/libmpeg2/slice.c
index 0d2fed055..0fe4ee2d9 100644
--- a/src/libmpeg2/slice.c
+++ b/src/libmpeg2/slice.c
@@ -1438,27 +1438,27 @@ do { \
mpeg2_mc.avg : mpeg2_mc.put)); \
} while (0)
-#define NEXT_MACROBLOCK \
-do { \
- picture->offset += 16; \
- if (picture->offset == picture->coded_picture_width) { \
- do { /* just so we can use the break statement */ \
- if (picture->current_frame->copy) { \
- picture->current_frame->copy (picture->current_frame, \
- picture->dest); \
- } \
- picture->dest[0] += 16 * picture->pitches[0]; \
- picture->dest[1] += 8 * picture->pitches[1]; \
- picture->dest[2] += 8 * picture->pitches[2]; \
- } while (0); \
- picture->v_offset += 16; \
- if (picture->v_offset > picture->limit_y) { \
- if (mpeg2_cpu_state_restore) \
- mpeg2_cpu_state_restore (&cpu_state); \
- return; \
- } \
- picture->offset = 0; \
- } \
+#define NEXT_MACROBLOCK \
+do { \
+ picture->offset += 16; \
+ if (picture->offset == picture->coded_picture_width) { \
+ do { /* just so we can use the break statement */ \
+ if (picture->current_frame->proc_slice) { \
+ picture->current_frame->proc_slice (picture->current_frame, \
+ picture->dest); \
+ } \
+ picture->dest[0] += 16 * picture->pitches[0]; \
+ picture->dest[1] += 8 * picture->pitches[1]; \
+ picture->dest[2] += 8 * picture->pitches[2]; \
+ } while (0); \
+ picture->v_offset += 16; \
+ if (picture->v_offset > picture->limit_y) { \
+ if (mpeg2_cpu_state_restore) \
+ mpeg2_cpu_state_restore (&cpu_state); \
+ return; \
+ } \
+ picture->offset = 0; \
+ } \
} while (0)
static inline int slice_init (picture_t * picture, int code)
@@ -1605,7 +1605,7 @@ static inline int slice_init (picture_t * picture, int code)
while (picture->offset - picture->coded_picture_width >= 0) {
picture->offset -= picture->coded_picture_width;
- if ((picture->current_frame->copy == NULL) ||
+ if ((picture->current_frame->proc_slice == NULL) ||
(picture->picture_coding_type != B_TYPE)) {
picture->dest[0] += 16 * picture->pitches[0];
picture->dest[1] += 8 * picture->pitches[1];
diff --git a/src/libmpeg2/slice_xvmc.c b/src/libmpeg2/slice_xvmc.c
index 3e63bd77b..cddc517c8 100644
--- a/src/libmpeg2/slice_xvmc.c
+++ b/src/libmpeg2/slice_xvmc.c
@@ -1530,29 +1530,29 @@ do { \
mpeg2_mc.avg : mpeg2_mc.put)); \
} while (0)
-#define NEXT_MACROBLOCK \
-do { \
- picture->offset += 16; \
- if (picture->offset == picture->coded_picture_width) { \
- do { /* just so we can use the break statement */ \
- if (picture->current_frame->copy) { \
- picture->current_frame->copy (picture->current_frame, \
- picture->dest); \
- if (picture->picture_coding_type == B_TYPE) \
- break; \
- } \
- picture->dest[0] += 16 * picture->pitches[0]; \
- picture->dest[1] += 8 * picture->pitches[1]; \
- picture->dest[2] += 8 * picture->pitches[2]; \
- } while (0); \
- picture->v_offset += 16; \
- if (picture->v_offset > picture->limit_y) { \
- if (mpeg2_cpu_state_restore) \
- mpeg2_cpu_state_restore (&cpu_state); \
- return; \
- } \
- picture->offset = 0; \
- } \
+#define NEXT_MACROBLOCK \
+do { \
+ picture->offset += 16; \
+ if (picture->offset == picture->coded_picture_width) { \
+ do { /* just so we can use the break statement */ \
+ if (picture->current_frame->proc_slice) { \
+ picture->current_frame->proc_slice (picture->current_frame, \
+ picture->dest); \
+ if (picture->picture_coding_type == B_TYPE) \
+ break; \
+ } \
+ picture->dest[0] += 16 * picture->pitches[0]; \
+ picture->dest[1] += 8 * picture->pitches[1]; \
+ picture->dest[2] += 8 * picture->pitches[2]; \
+ } while (0); \
+ picture->v_offset += 16; \
+ if (picture->v_offset > picture->limit_y) { \
+ if (mpeg2_cpu_state_restore) \
+ mpeg2_cpu_state_restore (&cpu_state); \
+ return; \
+ } \
+ picture->offset = 0; \
+ } \
} while (0)
static inline int slice_xvmc_init (picture_t * picture, int code)
@@ -1634,7 +1634,7 @@ static inline int slice_xvmc_init (picture_t * picture, int code)
picture->v_offset = (code - 1) * 16;
offset = (code - 1);
- if (picture->current_frame->copy && picture->picture_coding_type == B_TYPE)
+ if (picture->current_frame->proc_slice && picture->picture_coding_type == B_TYPE)
offset = 0;
else if (picture->picture_structure != FRAME_PICTURE)
offset = 2 * offset;
@@ -1710,7 +1710,7 @@ static inline int slice_xvmc_init (picture_t * picture, int code)
while (picture->offset - picture->coded_picture_width >= 0) {
picture->offset -= picture->coded_picture_width;
- if ((picture->current_frame->copy == NULL) ||
+ if ((picture->current_frame->proc_slice == NULL) ||
(picture->picture_coding_type != B_TYPE)) {
picture->dest[0] += 16 * picture->pitches[0];
picture->dest[1] += 8 * picture->pitches[1];
diff --git a/src/post/deinterlace/xine_plugin.c b/src/post/deinterlace/xine_plugin.c
index fa6ad24e1..6e06c5d3e 100644
--- a/src/post/deinterlace/xine_plugin.c
+++ b/src/post/deinterlace/xine_plugin.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: xine_plugin.c,v 1.16 2003/10/19 20:58:27 f1rmb Exp $
+ * $Id: xine_plugin.c,v 1.17 2003/10/22 20:38:09 komadori Exp $
*
* advanced video deinterlacer plugin
* Jun/2003 by Miguel Freitas
@@ -536,7 +536,8 @@ static vo_frame_t *deinterlace_get_frame(xine_video_port_t *port_gen, uint32_t w
/* replace with our own draw function */
frame->draw = deinterlace_draw;
/* decoders should not copy the frames, since they won't be displayed */
- frame->copy = NULL;
+ frame->proc_slice = NULL;
+ frame->proc_frame = NULL;
}
pthread_mutex_unlock (&this->lock);
diff --git a/src/post/mosaico/mosaico.c b/src/post/mosaico/mosaico.c
index 8b095769c..03f488b7a 100644
--- a/src/post/mosaico/mosaico.c
+++ b/src/post/mosaico/mosaico.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: mosaico.c,v 1.14 2003/10/06 21:52:43 miguelfreitas Exp $
+ * $Id: mosaico.c,v 1.15 2003/10/22 20:38:10 komadori Exp $
*/
/*
@@ -356,7 +356,9 @@ static vo_frame_t *mosaico_get_frame(xine_video_port_t *port_gen, uint32_t width
/* replace with our own draw function */
frame->draw = mosaico_draw;
/* decoders should not copy the frames, since they won't be displayed */
- frame->copy = NULL;
+ frame->proc_slice = NULL;
+ frame->proc_frame = NULL;
+
return frame;
}
@@ -373,7 +375,9 @@ static vo_frame_t *mosaico_get_frame_2(xine_video_port_t *port_gen, uint32_t wid
/* replace with our own draw function */
frame->draw = mosaico_draw_2;
/* decoders should not copy the frames, since they won't be displayed */
- frame->copy = NULL;
+ frame->proc_slice = NULL;
+ frame->proc_frame = NULL;
+
return frame;
}
diff --git a/src/post/mosaico/switch.c b/src/post/mosaico/switch.c
index 694db8697..4c5308363 100644
--- a/src/post/mosaico/switch.c
+++ b/src/post/mosaico/switch.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: switch.c,v 1.6 2003/10/06 21:52:43 miguelfreitas Exp $
+ * $Id: switch.c,v 1.7 2003/10/22 20:38:10 komadori Exp $
*/
/*
@@ -297,8 +297,10 @@ static vo_frame_t *switch_get_frame(xine_video_port_t *port_gen, uint32_t width,
/* replace with our own draw function */
frame->draw = switch_draw;
/* decoders should not copy the frames, since they won't be displayed */
- frame->copy = NULL;
+ frame->proc_slice = NULL;
+ frame->proc_frame = NULL;
pthread_mutex_unlock(&output->mut1);
+
return frame;
}
@@ -319,8 +321,10 @@ static vo_frame_t *switch_get_frame_2(xine_video_port_t *port_gen, uint32_t widt
/* replace with our own draw function */
frame->draw = switch_draw_2;
/* decoders should not copy the frames, since they won't be displayed */
- frame->copy = NULL;
+ frame->proc_slice = NULL;
+ frame->proc_frame = NULL;
pthread_mutex_unlock(&output->mut1);
+
return frame;
}
diff --git a/src/post/planar/boxblur.c b/src/post/planar/boxblur.c
index 7ec51bc55..1a161cbb4 100644
--- a/src/post/planar/boxblur.c
+++ b/src/post/planar/boxblur.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: boxblur.c,v 1.7 2003/10/06 21:52:43 miguelfreitas Exp $
+ * $Id: boxblur.c,v 1.8 2003/10/22 20:38:10 komadori Exp $
*
* mplayer's boxblur
* Copyright (C) 2002 Michael Niedermayer <michaelni@gmx.at>
@@ -298,7 +298,8 @@ static vo_frame_t *boxblur_get_frame(xine_video_port_t *port_gen, uint32_t width
/* replace with our own draw function */
frame->draw = boxblur_draw;
/* decoders should not copy the frames, since they won't be displayed */
- frame->copy = NULL;
+ frame->proc_slice = NULL;
+ frame->proc_frame = NULL;
return frame;
}
diff --git a/src/post/planar/denoise3d.c b/src/post/planar/denoise3d.c
index 024cba960..6edeff291 100644
--- a/src/post/planar/denoise3d.c
+++ b/src/post/planar/denoise3d.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: denoise3d.c,v 1.7 2003/10/06 21:52:43 miguelfreitas Exp $
+ * $Id: denoise3d.c,v 1.8 2003/10/22 20:38:10 komadori Exp $
*
* mplayer's denoise3d
* Copyright (C) 2003 Daniel Moreno <comac@comac.darktech.org>
@@ -333,7 +333,8 @@ static vo_frame_t *denoise3d_get_frame(xine_video_port_t *port_gen, uint32_t wid
/* replace with our own draw function */
frame->draw = denoise3d_draw;
/* decoders should not copy the frames, since they won't be displayed */
- frame->copy = NULL;
+ frame->proc_slice = NULL;
+ frame->proc_frame = NULL;
return frame;
}
diff --git a/src/post/planar/eq.c b/src/post/planar/eq.c
index e5991e7ea..532785b66 100644
--- a/src/post/planar/eq.c
+++ b/src/post/planar/eq.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: eq.c,v 1.6 2003/10/06 21:52:43 miguelfreitas Exp $
+ * $Id: eq.c,v 1.7 2003/10/22 20:38:10 komadori Exp $
*
* mplayer's eq (soft video equalizer)
* Copyright (C) Richard Felker
@@ -417,7 +417,8 @@ static vo_frame_t *eq_get_frame(xine_video_port_t *port_gen, uint32_t width,
/* replace with our own draw function */
frame->draw = eq_draw;
/* decoders should not copy the frames, since they won't be displayed */
- frame->copy = NULL;
+ frame->proc_slice = NULL;
+ frame->proc_frame = NULL;
return frame;
}
diff --git a/src/post/planar/eq2.c b/src/post/planar/eq2.c
index 866f3083b..289d726da 100644
--- a/src/post/planar/eq2.c
+++ b/src/post/planar/eq2.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: eq2.c,v 1.8 2003/10/06 21:52:43 miguelfreitas Exp $
+ * $Id: eq2.c,v 1.9 2003/10/22 20:38:10 komadori Exp $
*
* mplayer's eq2 (soft video equalizer)
* Software equalizer (brightness, contrast, gamma, saturation)
@@ -611,7 +611,8 @@ static vo_frame_t *eq2_get_frame(xine_video_port_t *port_gen, uint32_t width,
/* replace with our own draw function */
frame->draw = eq2_draw;
/* decoders should not copy the frames, since they won't be displayed */
- frame->copy = NULL;
+ frame->proc_slice = NULL;
+ frame->proc_frame = NULL;
return frame;
}
diff --git a/src/post/planar/expand.c b/src/post/planar/expand.c
index ea7a6ee60..a6db54208 100644
--- a/src/post/planar/expand.c
+++ b/src/post/planar/expand.c
@@ -361,9 +361,10 @@ static vo_frame_t *expand_get_frame(xine_video_port_t *port_gen, uint32_t width,
* - letting the decoder copy the image
* - copying the bottom black bar in expand_draw()
*/
- cloned_frame->copy = NULL;
- cloned_frame->field = expand_field;
- cloned_frame->lock = expand_lock;
+ cloned_frame->proc_slice = NULL;
+ cloned_frame->proc_frame = NULL;
+ cloned_frame->field = expand_field;
+ cloned_frame->lock = expand_lock;
cloned_frame->port = port_gen;
/* misuse the next pointer to remember the original */
diff --git a/src/post/planar/invert.c b/src/post/planar/invert.c
index 26bc4b7b9..db8851260 100644
--- a/src/post/planar/invert.c
+++ b/src/post/planar/invert.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: invert.c,v 1.13 2003/10/06 21:52:43 miguelfreitas Exp $
+ * $Id: invert.c,v 1.14 2003/10/22 20:38:10 komadori Exp $
*/
/*
@@ -203,7 +203,8 @@ static vo_frame_t *invert_get_frame(xine_video_port_t *port_gen, uint32_t width,
/* replace with our own draw function */
frame->draw = invert_draw;
/* decoders should not copy the frames, since they won't be displayed */
- frame->copy = NULL;
+ frame->proc_slice = NULL;
+ frame->proc_frame = NULL;
return frame;
}
diff --git a/src/post/planar/unsharp.c b/src/post/planar/unsharp.c
index 499fba98f..3c11945ef 100644
--- a/src/post/planar/unsharp.c
+++ b/src/post/planar/unsharp.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: unsharp.c,v 1.7 2003/10/06 21:52:44 miguelfreitas Exp $
+ * $Id: unsharp.c,v 1.8 2003/10/22 20:38:10 komadori Exp $
*
* mplayer's unsharp
* Copyright (C) 2002 Rémi Guyomarch <rguyom@pobox.com>
@@ -424,7 +424,8 @@ static vo_frame_t *unsharp_get_frame(xine_video_port_t *port_gen, uint32_t width
/* replace with our own draw function */
frame->draw = unsharp_draw;
/* decoders should not copy the frames, since they won't be displayed */
- frame->copy = NULL;
+ frame->proc_slice = NULL;
+ frame->proc_frame = NULL;
return frame;
}
diff --git a/src/video_out/video_out_aa.c b/src/video_out/video_out_aa.c
index 9c0e9e05a..c845dfd00 100644
--- a/src/video_out/video_out_aa.c
+++ b/src/video_out/video_out_aa.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: video_out_aa.c,v 1.37 2003/10/06 21:52:44 miguelfreitas Exp $
+ * $Id: video_out_aa.c,v 1.38 2003/10/22 20:38:10 komadori Exp $
*
* video_out_aa.c, ascii-art output plugin for xine
*
@@ -109,7 +109,8 @@ static vo_frame_t *aa_alloc_frame(vo_driver_t *this) {
frame = (aa_frame_t *) malloc (sizeof (aa_frame_t));
memset (frame, 0, sizeof (aa_frame_t));
- frame->vo_frame.copy = NULL;
+ frame->vo_frame.proc_slice = NULL;
+ frame->vo_frame.proc_frame = NULL;
frame->vo_frame.field = aa_frame_field;
frame->vo_frame.dispose = aa_dispose_frame;
frame->vo_frame.driver = this;
@@ -328,6 +329,6 @@ static vo_info_t vo_info_aa = {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_VIDEO_OUT, 17, "aa", XINE_VERSION_CODE, &vo_info_aa, init_class },
+ { PLUGIN_VIDEO_OUT, 18, "aa", XINE_VERSION_CODE, &vo_info_aa, init_class },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/video_out/video_out_directfb.c b/src/video_out/video_out_directfb.c
index a8282b5c5..ffb515f93 100644
--- a/src/video_out/video_out_directfb.c
+++ b/src/video_out/video_out_directfb.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: video_out_directfb.c,v 1.21 2003/10/06 21:52:44 miguelfreitas Exp $
+ * $Id: video_out_directfb.c,v 1.22 2003/10/22 20:38:10 komadori Exp $
*
* DirectFB based output plugin.
* Rich Wareham <richwareham@users.sourceforge.net>
@@ -195,9 +195,10 @@ static vo_frame_t *directfb_alloc_frame (vo_driver_t *this_gen) {
* supply required functions
*/
- frame->vo_frame.copy = NULL;
- frame->vo_frame.field = directfb_frame_field;
- frame->vo_frame.dispose = directfb_frame_dispose;
+ frame->vo_frame.proc_slice = NULL;
+ frame->vo_frame.proc_frame = NULL;
+ frame->vo_frame.field = directfb_frame_field;
+ frame->vo_frame.dispose = directfb_frame_dispose;
frame->surface = NULL;
frame->locked = 0;
@@ -591,7 +592,7 @@ static vo_info_t vo_info_directfb = {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_VIDEO_OUT, 17, "DirectFB", XINE_VERSION_CODE, &vo_info_directfb, init_class },
+ { PLUGIN_VIDEO_OUT, 18, "DirectFB", XINE_VERSION_CODE, &vo_info_directfb, init_class },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/video_out/video_out_directx.c b/src/video_out/video_out_directx.c
index 1c514f518..7ae1d891b 100755
--- a/src/video_out/video_out_directx.c
+++ b/src/video_out/video_out_directx.c
@@ -853,9 +853,10 @@ static vo_frame_t * win32_alloc_frame( vo_driver_t * vo_driver )
win32_frame = ( win32_frame_t * ) malloc( sizeof( win32_frame_t ) );
memset( win32_frame, 0, sizeof( win32_frame_t ) );
- win32_frame->vo_frame.copy = NULL;
- win32_frame->vo_frame.field = win32_frame_field;
- win32_frame->vo_frame.dispose = win32_frame_dispose;
+ win32_frame->vo_frame.proc_slice = NULL;
+ win32_frame->vo_frame.proc_frame = NULL;
+ win32_frame->vo_frame.field = win32_frame_field;
+ win32_frame->vo_frame.dispose = win32_frame_dispose;
win32_frame->format = -1;
return ( vo_frame_t * ) win32_frame;
@@ -1262,6 +1263,6 @@ static vo_info_t vo_info_win32 = {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_VIDEO_OUT, 17, "vo_directx", XINE_VERSION_CODE, &vo_info_win32, init_class },
+ { PLUGIN_VIDEO_OUT, 18, "vo_directx", XINE_VERSION_CODE, &vo_info_win32, init_class },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/video_out/video_out_fb.c b/src/video_out/video_out_fb.c
index ee65f19d0..931fe94ff 100644
--- a/src/video_out/video_out_fb.c
+++ b/src/video_out/video_out_fb.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: video_out_fb.c,v 1.28 2003/10/06 21:52:44 miguelfreitas Exp $
+ * $Id: video_out_fb.c,v 1.29 2003/10/22 20:38:10 komadori Exp $
*
* video_out_fb.c, frame buffer xine driver by Miguel Freitas
*
@@ -149,13 +149,12 @@ typedef struct
static uint32_t fb_get_capabilities(vo_driver_t *this_gen)
{
- return VO_CAP_COPIES_IMAGE |
- VO_CAP_YV12 |
+ return VO_CAP_YV12 |
VO_CAP_YUY2 |
VO_CAP_BRIGHTNESS;
}
-static void fb_frame_copy(vo_frame_t *vo_img, uint8_t **src)
+static void fb_frame_proc_slice(vo_frame_t *vo_img, uint8_t **src)
{
fb_frame_t *frame = (fb_frame_t *)vo_img ;
@@ -225,10 +224,11 @@ static vo_frame_t *fb_alloc_frame(vo_driver_t *this_gen)
pthread_mutex_init(&frame->vo_frame.mutex, NULL);
/* supply required functions */
- frame->vo_frame.copy = fb_frame_copy;
- frame->vo_frame.field = fb_frame_field;
- frame->vo_frame.dispose = fb_frame_dispose;
- frame->vo_frame.driver = this_gen;
+ frame->vo_frame.proc_slice = fb_frame_proc_slice;
+ frame->vo_frame.proc_frame = NULL;
+ frame->vo_frame.field = fb_frame_field;
+ frame->vo_frame.dispose = fb_frame_dispose;
+ frame->vo_frame.driver = this_gen;
frame->this = this;
@@ -1053,7 +1053,7 @@ plugin_info_t xine_plugin_info[] =
/* type, API, "name", version, special_info, init_function */
{
PLUGIN_VIDEO_OUT,
- 17,
+ 18,
"fb",
XINE_VERSION_CODE,
&vo_info_fb, fb_init_class
diff --git a/src/video_out/video_out_none.c b/src/video_out/video_out_none.c
index 7d99713ea..371ffb295 100644
--- a/src/video_out/video_out_none.c
+++ b/src/video_out/video_out_none.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: video_out_none.c,v 1.16 2003/10/06 21:52:44 miguelfreitas Exp $
+ * $Id: video_out_none.c,v 1.17 2003/10/22 20:38:10 komadori Exp $
*
* Was originally part of toxine frontend.
* ...but has now been adapted to xine coding style standards ;)
@@ -99,10 +99,11 @@ static vo_frame_t *none_alloc_frame(vo_driver_t *vo_driver) {
frame->vo_frame.base[1] = NULL;
frame->vo_frame.base[2] = NULL;
- frame->vo_frame.copy = NULL;
- frame->vo_frame.field = none_frame_field;
- frame->vo_frame.dispose = none_frame_dispose;
- frame->vo_frame.driver = vo_driver;
+ frame->vo_frame.proc_slice = NULL;
+ frame->vo_frame.proc_frame = NULL;
+ frame->vo_frame.field = none_frame_field;
+ frame->vo_frame.dispose = none_frame_dispose;
+ frame->vo_frame.driver = vo_driver;
return (vo_frame_t *)frame;
}
@@ -302,6 +303,6 @@ static vo_info_t vo_info_none = {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_VIDEO_OUT, 17, "none", XINE_VERSION_CODE, &vo_info_none, init_class },
+ { PLUGIN_VIDEO_OUT, 18, "none", XINE_VERSION_CODE, &vo_info_none, init_class },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/video_out/video_out_opengl.c b/src/video_out/video_out_opengl.c
index f2282eaf5..1ae5534de 100644
--- a/src/video_out/video_out_opengl.c
+++ b/src/video_out/video_out_opengl.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: video_out_opengl.c,v 1.28 2003/10/06 21:52:44 miguelfreitas Exp $
+ * $Id: video_out_opengl.c,v 1.29 2003/10/22 20:38:10 komadori Exp $
*
* video_out_glut.c, glut based OpenGL rendering interface for xine
* Matthias Hopf <mat@mshopf.de>
@@ -189,11 +189,11 @@ enum { CONTEXT_BAD = 0, CONTEXT_SAME_DRAWABLE, CONTEXT_RELOAD, CONTEXT_SET };
static uint32_t opengl_get_capabilities (vo_driver_t *this_gen) {
- return VO_CAP_COPIES_IMAGE | VO_CAP_YV12 | VO_CAP_YUY2 | VO_CAP_BRIGHTNESS;
+ return VO_CAP_YV12 | VO_CAP_YUY2 | VO_CAP_BRIGHTNESS;
}
-static void opengl_frame_copy (vo_frame_t *vo_img, uint8_t **src) {
+static void opengl_frame_proc_slice (vo_frame_t *vo_img, uint8_t **src) {
opengl_frame_t *frame = (opengl_frame_t *) vo_img ;
vo_img->copy_called = 1;
@@ -285,10 +285,11 @@ static vo_frame_t *opengl_alloc_frame (vo_driver_t *this_gen) {
/*
* supply required functions/fields
*/
- frame->vo_frame.copy = opengl_frame_copy;
- frame->vo_frame.field = opengl_frame_field;
- frame->vo_frame.dispose = opengl_frame_dispose;
- frame->vo_frame.driver = this_gen;
+ frame->vo_frame.proc_slice = opengl_frame_proc_slice;
+ frame->vo_frame.proc_frame = opengl_frame_proc_frame;
+ frame->vo_frame.field = opengl_frame_field;
+ frame->vo_frame.dispose = opengl_frame_dispose;
+ frame->vo_frame.driver = this_gen;
/*
* colorspace converter for this frame
@@ -1000,7 +1001,7 @@ static vo_info_t vo_info_opengl = {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_VIDEO_OUT, 17, "opengl", XINE_VERSION_CODE,
+ { PLUGIN_VIDEO_OUT, 18, "opengl", XINE_VERSION_CODE,
&vo_info_opengl, opengl_init_class },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/video_out/video_out_pgx64.c b/src/video_out/video_out_pgx64.c
index e7a33edfe..0e6a8ecf6 100644
--- a/src/video_out/video_out_pgx64.c
+++ b/src/video_out/video_out_pgx64.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: video_out_pgx64.c,v 1.40 2003/10/19 03:12:47 komadori Exp $
+ * $Id: video_out_pgx64.c,v 1.41 2003/10/22 20:38:10 komadori Exp $
*
* video_out_pgx64.c, Sun PGX64/PGX24 output plugin for xine
*
@@ -267,7 +267,18 @@ static int vram_alloc(pgx64_driver_t* this, int size)
* XINE VIDEO DRIVER FUNCTIONS
*/
-static void pgx64_frame_copy(pgx64_frame_t *frame, uint8_t **src)
+static void pgx64_frame_proc_frame(pgx64_frame_t *frame, uint8_t **src)
+{
+ int i;
+
+ frame->vo_frame.copy_called = 1;
+
+ for (i=0; i<frame->planes; i++) {
+ memcpy(frame->buffer_ptrs[i], src[i], frame->lengths[i]);
+ }
+}
+
+static void pgx64_frame_proc_slice(pgx64_frame_t *frame, uint8_t **src)
{
int i, len;
@@ -280,6 +291,8 @@ static void pgx64_frame_copy(pgx64_frame_t *frame, uint8_t **src)
}
}
+
+
static void pgx64_frame_field(pgx64_frame_t *frame, int which_field)
{
}
@@ -292,8 +305,7 @@ static void pgx64_frame_dispose(pgx64_frame_t *frame)
static uint32_t pgx64_get_capabilities(pgx64_driver_t *this)
{
- return VO_CAP_COPIES_IMAGE |
- VO_CAP_YV12 |
+ return VO_CAP_YV12 |
VO_CAP_YUY2 |
VO_CAP_COLORKEY |
VO_CAP_SATURATION |
@@ -313,9 +325,10 @@ static pgx64_frame_t* pgx64_alloc_frame(pgx64_driver_t *this)
pthread_mutex_init(&frame->vo_frame.mutex, NULL);
- frame->vo_frame.copy = NULL;
- frame->vo_frame.field = (void*)pgx64_frame_field;
- frame->vo_frame.dispose = (void*)pgx64_frame_dispose;
+ frame->vo_frame.proc_frame = NULL;
+ frame->vo_frame.proc_slice = NULL;
+ frame->vo_frame.field = (void*)pgx64_frame_field;
+ frame->vo_frame.dispose = (void*)pgx64_frame_dispose;
return frame;
}
@@ -334,7 +347,8 @@ static void pgx64_update_frame_format(pgx64_driver_t *this, pgx64_frame_t *frame
frame->format = format;
frame->pitch = ((width + 7) / 8) * 8;
- frame->vo_frame.copy = NULL;
+ frame->vo_frame.proc_frame = NULL;
+ frame->vo_frame.proc_slice = NULL;
switch (format) {
case XINE_IMGFMT_YUY2:
@@ -435,7 +449,7 @@ static void pgx64_display_frame(pgx64_driver_t *this, pgx64_frame_t *frame)
if (this->buf_mode == BUF_MODE_MULTI) {
int i;
- if (frame->vo_frame.copy != (void*)pgx64_frame_copy) {
+ if (frame->vo_frame.proc_slice != (void*)pgx64_frame_proc_slice) {
for (i=0; i<frame->planes; i++) {
if ((frame->buffers[i] = vram_alloc(this, frame->lengths[i])) < 0) {
if (this->detained_frames < MAX_DETAINED_FRAMES) {
@@ -455,7 +469,8 @@ static void pgx64_display_frame(pgx64_driver_t *this, pgx64_frame_t *frame)
}
}
- frame->vo_frame.copy = (void*)pgx64_frame_copy;
+ frame->vo_frame.proc_frame = (void*)pgx64_frame_proc_frame;
+ frame->vo_frame.proc_slice = (void*)pgx64_frame_proc_slice;
}
for (i=0; i<frame->planes; i++) {
@@ -506,7 +521,8 @@ static void pgx64_display_frame(pgx64_driver_t *this, pgx64_frame_t *frame)
memcpy(this->buffer_ptrs[this->dblbuf_select][i], frame->vo_frame.base[i], frame->lengths[i]);
}
- frame->vo_frame.copy = NULL;
+ frame->vo_frame.proc_slice = NULL;
+ frame->vo_frame.proc_frame = NULL;
}
this->vregs[CAPTURE_CONFIG] = this->dblbuf_select ? le2me_32(CAPTURE_CONFIG_BUF1) : le2me_32(CAPTURE_CONFIG_BUF0);
@@ -522,7 +538,7 @@ static void pgx64_display_frame(pgx64_driver_t *this, pgx64_frame_t *frame)
static void pgx64_overlay_blend(pgx64_driver_t *this, pgx64_frame_t *frame, vo_overlay_t *overlay)
{
if (overlay->rle) {
- if (frame->vo_frame.copy == (void*)pgx64_frame_copy) {
+ if (frame->vo_frame.proc_slice == (void*)pgx64_frame_proc_slice) {
/* FIXME: Implement out of place alphablending functions for better performance */
switch (frame->format) {
case XINE_IMGFMT_YV12: {
@@ -1074,6 +1090,6 @@ static pgx64_driver_class_t* pgx64_init_class(xine_t *xine, void *visual_gen)
}
plugin_info_t xine_plugin_info[] = {
- {PLUGIN_VIDEO_OUT, 17, "pgx64", XINE_VERSION_CODE, &vo_info_pgx64, (void*)pgx64_init_class},
+ {PLUGIN_VIDEO_OUT, 18, "pgx64", XINE_VERSION_CODE, &vo_info_pgx64, (void*)pgx64_init_class},
{PLUGIN_NONE, 0, "", 0, NULL, NULL}
};
diff --git a/src/video_out/video_out_sdl.c b/src/video_out/video_out_sdl.c
index 50ff3753f..5c5af63ad 100644
--- a/src/video_out/video_out_sdl.c
+++ b/src/video_out/video_out_sdl.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: video_out_sdl.c,v 1.27 2003/10/06 21:52:44 miguelfreitas Exp $
+ * $Id: video_out_sdl.c,v 1.28 2003/10/22 20:38:10 komadori Exp $
*
* video_out_sdl.c, Simple DirectMedia Layer
*
@@ -146,9 +146,10 @@ static vo_frame_t *sdl_alloc_frame (vo_driver_t *this_gen) {
* supply required functions
*/
- frame->vo_frame.copy = NULL;
- frame->vo_frame.field = sdl_frame_field;
- frame->vo_frame.dispose = sdl_frame_dispose;
+ frame->vo_frame.proc_slice = NULL;
+ frame->vo_frame.proc_frame = NULL;
+ frame->vo_frame.field = sdl_frame_field;
+ frame->vo_frame.dispose = sdl_frame_dispose;
return (vo_frame_t *) frame;
}
@@ -596,6 +597,6 @@ static vo_info_t vo_info_sdl = {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_VIDEO_OUT, 17, "sdl", XINE_VERSION_CODE, &vo_info_sdl, init_class },
+ { PLUGIN_VIDEO_OUT, 18, "sdl", XINE_VERSION_CODE, &vo_info_sdl, init_class },
{ PLUGIN_NONE, 0, "" , 0 , NULL, NULL}
};
diff --git a/src/video_out/video_out_stk.c b/src/video_out/video_out_stk.c
index 7a9aa093b..6f034d98c 100644
--- a/src/video_out/video_out_stk.c
+++ b/src/video_out/video_out_stk.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: video_out_stk.c,v 1.5 2003/10/07 17:35:51 miguelfreitas Exp $
+ * $Id: video_out_stk.c,v 1.6 2003/10/22 20:38:10 komadori Exp $
*
* video_out_stk.c, Libstk Surface Video Driver
* more info on Libstk at http://www.libstk.org
@@ -105,7 +105,7 @@ static uint32_t stk_get_capabilities (vo_driver_t *this_gen) {
}
/* copy YUV to RGB data (see fb driver)*/
-static void stk_frame_copy (vo_frame_t *vo_img, uint8_t **src)
+static void stk_frame_proc_slice (vo_frame_t *vo_img, uint8_t **src)
{
/* not needed by SDL, we may need it for other stk backends */
//printf("video_out_stk: frame_copy()\n");
@@ -138,9 +138,10 @@ static vo_frame_t *stk_alloc_frame(vo_driver_t *this_gen) {
pthread_mutex_init (&frame->vo_frame.mutex, NULL);
/* map the frame function pointers */
- frame->vo_frame.copy = stk_frame_copy;
- frame->vo_frame.field = stk_frame_field;
- frame->vo_frame.dispose = stk_frame_dispose;
+ frame->vo_frame.proc_slice = stk_frame_proc_slice;
+ frame->vo_frame.proc_frame = NULL;
+ frame->vo_frame.field = stk_frame_field;
+ frame->vo_frame.dispose = stk_frame_dispose;
return (vo_frame_t *) frame;
}
@@ -477,7 +478,7 @@ static vo_info_t vo_info_stk = {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_VIDEO_OUT, 17, "stk", XINE_VERSION_CODE, &vo_info_stk, init_class },
+ { PLUGIN_VIDEO_OUT, 18, "stk", XINE_VERSION_CODE, &vo_info_stk, init_class },
{ PLUGIN_NONE, 0, "" , 0 , NULL, NULL}
};
diff --git a/src/video_out/video_out_syncfb.c b/src/video_out/video_out_syncfb.c
index 32376315d..9a7ba581e 100644
--- a/src/video_out/video_out_syncfb.c
+++ b/src/video_out/video_out_syncfb.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: video_out_syncfb.c,v 1.89 2003/10/06 21:52:44 miguelfreitas Exp $
+ * $Id: video_out_syncfb.c,v 1.90 2003/10/22 20:38:10 komadori Exp $
*
* video_out_syncfb.c, SyncFB (for Matrox G200/G400 cards) interface for xine
*
@@ -486,9 +486,10 @@ static vo_frame_t* syncfb_alloc_frame(vo_driver_t* this_gen)
/*
* supply required functions
*/
- frame->vo_frame.copy = NULL;
- frame->vo_frame.field = syncfb_frame_field;
- frame->vo_frame.dispose = syncfb_frame_dispose;
+ frame->vo_frame.proc_slice = NULL;
+ frame->vo_frame.proc_frame = NULL;
+ frame->vo_frame.field = syncfb_frame_field;
+ frame->vo_frame.dispose = syncfb_frame_dispose;
frame->vo_frame.driver = this_gen;
}
@@ -1057,7 +1058,7 @@ static vo_info_t vo_info_syncfb = {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_VIDEO_OUT, 17, "SyncFB", XINE_VERSION_CODE, &vo_info_syncfb, init_class },
+ { PLUGIN_VIDEO_OUT, 18, "SyncFB", XINE_VERSION_CODE, &vo_info_syncfb, init_class },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/video_out/video_out_vidix.c b/src/video_out/video_out_vidix.c
index b7017c233..356d5278b 100644
--- a/src/video_out/video_out_vidix.c
+++ b/src/video_out/video_out_vidix.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: video_out_vidix.c,v 1.47 2003/10/06 21:52:44 miguelfreitas Exp $
+ * $Id: video_out_vidix.c,v 1.48 2003/10/22 20:38:10 komadori Exp $
*
* video_out_vidix.c
*
@@ -402,9 +402,10 @@ static vo_frame_t *vidix_alloc_frame (vo_driver_t *this_gen) {
* supply required functions
*/
- frame->vo_frame.copy = NULL;
- frame->vo_frame.field = vidix_frame_field;
- frame->vo_frame.dispose = vidix_frame_dispose;
+ frame->vo_frame.proc_slice = NULL;
+ frame->vo_frame.proc_frame = NULL;
+ frame->vo_frame.field = vidix_frame_field;
+ frame->vo_frame.dispose = vidix_frame_dispose;
return (vo_frame_t *) frame;
}
@@ -1233,10 +1234,10 @@ static vo_info_t vo_info_vidixfb = {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
#ifdef HAVE_X11
- { PLUGIN_VIDEO_OUT, 17, "vidix", XINE_VERSION_CODE, &vo_info_vidix, vidix_init_class },
+ { PLUGIN_VIDEO_OUT, 18, "vidix", XINE_VERSION_CODE, &vo_info_vidix, vidix_init_class },
#endif
#ifdef HAVE_FB
- { PLUGIN_VIDEO_OUT, 17, "vidixfb", XINE_VERSION_CODE, &vo_info_vidixfb, vidixfb_init_class },
+ { PLUGIN_VIDEO_OUT, 18, "vidixfb", XINE_VERSION_CODE, &vo_info_vidixfb, vidixfb_init_class },
#endif
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/video_out/video_out_xshm.c b/src/video_out/video_out_xshm.c
index 895606b05..f6c17cd1a 100644
--- a/src/video_out/video_out_xshm.c
+++ b/src/video_out/video_out_xshm.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: video_out_xshm.c,v 1.115 2003/10/18 23:01:21 f1rmb Exp $
+ * $Id: video_out_xshm.c,v 1.116 2003/10/22 20:38:10 komadori Exp $
*
* video_out_xshm.c, X11 shared memory extension interface for xine
*
@@ -307,11 +307,11 @@ static void dispose_ximage (xshm_driver_t *this,
*/
static uint32_t xshm_get_capabilities (vo_driver_t *this_gen) {
- return VO_CAP_COPIES_IMAGE | VO_CAP_YV12 | VO_CAP_YUY2 |
+ return VO_CAP_YV12 | VO_CAP_YUY2 |
VO_CAP_BRIGHTNESS | VO_CAP_CONTRAST | VO_CAP_SATURATION;
}
-static void xshm_frame_copy (vo_frame_t *vo_img, uint8_t **src) {
+static void xshm_frame_proc_slice (vo_frame_t *vo_img, uint8_t **src) {
xshm_frame_t *frame = (xshm_frame_t *) vo_img ;
/*xshm_driver_t *this = (xshm_driver_t *) vo_img->driver; */
@@ -390,10 +390,11 @@ static vo_frame_t *xshm_alloc_frame (vo_driver_t *this_gen) {
* supply required functions/fields
*/
- frame->vo_frame.copy = xshm_frame_copy;
- frame->vo_frame.field = xshm_frame_field;
- frame->vo_frame.dispose = xshm_frame_dispose;
- frame->vo_frame.driver = this_gen;
+ frame->vo_frame.proc_slice = xshm_frame_proc_slice;
+ frame->vo_frame.proc_frame = NULL;
+ frame->vo_frame.field = xshm_frame_field;
+ frame->vo_frame.dispose = xshm_frame_dispose;
+ frame->vo_frame.driver = this_gen;
/*
* colorspace converter for this frame
@@ -1229,6 +1230,6 @@ static vo_info_t vo_info_xshm = {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_VIDEO_OUT, 17, "xshm", XINE_VERSION_CODE, &vo_info_xshm, xshm_init_class },
+ { PLUGIN_VIDEO_OUT, 18, "xshm", XINE_VERSION_CODE, &vo_info_xshm, xshm_init_class },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/video_out/video_out_xv.c b/src/video_out/video_out_xv.c
index 2fc804b92..316c63eab 100644
--- a/src/video_out/video_out_xv.c
+++ b/src/video_out/video_out_xv.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: video_out_xv.c,v 1.176 2003/10/18 23:01:21 f1rmb Exp $
+ * $Id: video_out_xv.c,v 1.177 2003/10/22 20:38:10 komadori Exp $
*
* video_out_xv.c, X11 video extension interface for xine
*
@@ -207,10 +207,11 @@ static vo_frame_t *xv_alloc_frame (vo_driver_t *this_gen) {
/*
* supply required functions
*/
- frame->vo_frame.copy = NULL;
- frame->vo_frame.field = xv_frame_field;
- frame->vo_frame.dispose = xv_frame_dispose;
- frame->vo_frame.driver = this_gen;
+ frame->vo_frame.proc_slice = NULL;
+ frame->vo_frame.proc_frame = NULL;
+ frame->vo_frame.field = xv_frame_field;
+ frame->vo_frame.dispose = xv_frame_dispose;
+ frame->vo_frame.driver = this_gen;
return (vo_frame_t *) frame;
}
@@ -1466,7 +1467,7 @@ static vo_info_t vo_info_xv = {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_VIDEO_OUT, 17, "xv", XINE_VERSION_CODE, &vo_info_xv, init_class },
+ { PLUGIN_VIDEO_OUT, 18, "xv", XINE_VERSION_CODE, &vo_info_xv, init_class },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/video_out/video_out_xvmc.c b/src/video_out/video_out_xvmc.c
index 2a3a642b1..e1e6aa2f3 100644
--- a/src/video_out/video_out_xvmc.c
+++ b/src/video_out/video_out_xvmc.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: video_out_xvmc.c,v 1.2 2003/10/06 21:52:44 miguelfreitas Exp $
+ * $Id: video_out_xvmc.c,v 1.3 2003/10/22 20:38:10 komadori Exp $
*
* video_out_xvmc.c, X11 video motion compensation extension interface for xine
*
@@ -623,9 +623,10 @@ static vo_frame_t *xvmc_alloc_frame (vo_driver_t *this_gen) {
* supply required functions
*/
- frame->vo_frame.copy = NULL;
- frame->vo_frame.field = xvmc_frame_field;
- frame->vo_frame.dispose = xvmc_frame_dispose;
+ frame->vo_frame.proc_slice = NULL;
+ frame->vo_frame.proc_frame = NULL;
+ frame->vo_frame.field = xvmc_frame_field;
+ frame->vo_frame.dispose = xvmc_frame_dispose;
frame->vo_frame.proc_macro_block = xvmc_proc_macro_block;
frame->vo_frame.driver = this_gen;
@@ -1901,7 +1902,7 @@ static vo_info_t vo_info_xvmc = {
plugin_info_t xine_plugin_info[] = {
/* type, API, "name", version, special_info, init_function */
- { PLUGIN_VIDEO_OUT, 17, "xvmc", XINE_VERSION_CODE, &vo_info_xvmc, init_class },
+ { PLUGIN_VIDEO_OUT, 18, "xvmc", XINE_VERSION_CODE, &vo_info_xvmc, init_class },
{ PLUGIN_NONE, 0, "", 0, NULL, NULL }
};
diff --git a/src/xine-engine/post.c b/src/xine-engine/post.c
index 1b1f70308..bbccf1187 100644
--- a/src/xine-engine/post.c
+++ b/src/xine-engine/post.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: post.c,v 1.15 2003/10/06 21:52:44 miguelfreitas Exp $
+ * $Id: post.c,v 1.16 2003/10/22 20:38:10 komadori Exp $
*/
/*
@@ -125,10 +125,17 @@ static void post_frame_free(vo_frame_t *vo_img) {
vo_img->free(vo_img);
}
-static void post_frame_copy(vo_frame_t *vo_img, uint8_t **src) {
+static void post_frame_proc_slice(vo_frame_t *vo_img, uint8_t **src) {
post_video_port_t *port = (post_video_port_t *)vo_img->port;
vo_img->port = port->original_port;
- port->original_frame.copy(vo_img, src);
+ port->original_frame.proc_slice(vo_img, src);
+ vo_img->port = &port->port;
+}
+
+static void post_frame_proc_frame(vo_frame_t *vo_img, uint8_t **src) {
+ post_video_port_t *port = (post_video_port_t *)vo_img->port;
+ vo_img->port = port->original_port;
+ port->original_frame.proc_frame(vo_img, src);
vo_img->port = &port->port;
}
@@ -188,7 +195,8 @@ static void post_frame_proc_macro_block(int x,
void post_intercept_video_frame(vo_frame_t *frame, post_video_port_t *port) {
port->original_frame.port = frame->port;
port->original_frame.free = frame->free;
- port->original_frame.copy = frame->copy;
+ port->original_frame.proc_slice = frame->proc_slice;
+ port->original_frame.proc_frame = frame->proc_frame;
port->original_frame.field = frame->field;
port->original_frame.draw = frame->draw;
port->original_frame.lock = frame->lock;
@@ -197,7 +205,8 @@ void post_intercept_video_frame(vo_frame_t *frame, post_video_port_t *port) {
frame->port = &port->port;
frame->free = post_frame_free;
- frame->copy = frame->copy ? post_frame_copy : NULL; /* this one can be NULL */
+ frame->proc_slice = frame->proc_slice ? post_frame_proc_slice : NULL;
+ frame->proc_frame = frame->proc_frame ? post_frame_proc_frame : NULL;
frame->field = post_frame_field;
frame->draw = post_frame_draw;
frame->lock = post_frame_lock;
@@ -208,7 +217,8 @@ void post_intercept_video_frame(vo_frame_t *frame, post_video_port_t *port) {
void post_restore_video_frame(vo_frame_t *frame, post_video_port_t *port) {
frame->port = port->original_port;
frame->free = port->original_frame.free;
- frame->copy = port->original_frame.copy;
+ frame->proc_slice = port->original_frame.proc_slice;
+ frame->proc_frame = port->original_frame.proc_frame;
frame->field = port->original_frame.field;
frame->draw = port->original_frame.draw;
frame->lock = port->original_frame.lock;
diff --git a/src/xine-engine/video_out.c b/src/xine-engine/video_out.c
index d4d712dfc..f91cf15f3 100644
--- a/src/xine-engine/video_out.c
+++ b/src/xine-engine/video_out.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: video_out.c,v 1.173 2003/10/08 02:32:04 miguelfreitas Exp $
+ * $Id: video_out.c,v 1.174 2003/10/22 20:38:10 komadori Exp $
*
* frame allocation / queuing / scheduling / output functions
*/
@@ -221,9 +221,12 @@ static void vo_frame_dec_lock (vo_frame_t *img) {
/* call vo_driver->copy method for the entire frame */
static void vo_frame_driver_copy(vo_frame_t *img)
-{
- if (img->format == XINE_IMGFMT_YV12) {
- if (img->copy) {
+{
+ if (img->proc_frame) {
+ img->proc_frame(img, img->base);
+ }
+ else if (img->proc_slice) {
+ if (img->format == XINE_IMGFMT_YV12) {
int height = img->height;
uint8_t* src[3];
@@ -231,21 +234,19 @@ static void vo_frame_driver_copy(vo_frame_t *img)
src[1] = img->base[1];
src[2] = img->base[2];
while ((height -= 16) > -16) {
- img->copy(img, src);
+ img->proc_slice(img, src);
src[0] += 16 * img->pitches[0];
src[1] += 8 * img->pitches[1];
src[2] += 8 * img->pitches[2];
}
- }
- } else {
- if (img->copy) {
+ } else {
int height = img->height;
uint8_t* src[3];
src[0] = img->base[0];
while ((height -= 16) > -16) {
- img->copy(img, src);
+ img->proc_slice(img, src);
src[0] += 16 * img->pitches[0];
}
}
@@ -391,7 +392,7 @@ static int vo_frame_draw (vo_frame_t *img, xine_stream_t *stream) {
if (!img->bad_frame) {
/* do not call copy() for frames that will be dropped */
- if( !frames_to_skip && img->copy && !img->copy_called )
+ if( !frames_to_skip && !img->copy_called )
vo_frame_driver_copy(img);
/*
@@ -791,7 +792,7 @@ static void overlay_and_display_frame (vos_t *this,
/* no, this is not were copy() is usually called.
* it's just to catch special cases like late or duplicated frames.
*/
- if( img->copy && !img->copy_called )
+ if(!img->copy_called )
vo_frame_driver_copy(img);
pthread_mutex_lock( &img->stream->current_extra_info_lock );
diff --git a/src/xine-engine/video_out.h b/src/xine-engine/video_out.h
index c4cdb2d03..3e132ac94 100644
--- a/src/xine-engine/video_out.h
+++ b/src/xine-engine/video_out.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: video_out.h,v 1.97 2003/10/06 21:52:45 miguelfreitas Exp $
+ * $Id: video_out.h,v 1.98 2003/10/22 20:38:10 komadori Exp $
*
*
* xine version of video_out.h
@@ -84,10 +84,14 @@ struct vo_frame_s {
/* this frame is no longer used by the decoder, video driver, etc */
void (*free) (vo_frame_t *vo_img);
-
+
+ /* tell video driver to copy/convert the whole of this frame, may be NULL */
+ /* this function MUST set the variable copy_called above */
+ void (*proc_frame) (vo_frame_t *vo_img, uint8_t **src);
+
/* tell video driver to copy/convert a slice of this frame, may be NULL */
/* this function MUST set the variable copy_called above */
- void (*copy) (vo_frame_t *vo_img, uint8_t **src);
+ void (*proc_slice) (vo_frame_t *vo_img, uint8_t **src);
/* tell video driver that the decoder starts a new field */
void (*field) (vo_frame_t *vo_img, int which_field);
@@ -284,10 +288,6 @@ struct xine_video_port_s {
/* video driver capabilities */
-/* driver copies image (i.e. converts it to
- rgb buffers in the private fields of image buffer) */
-#define VO_CAP_COPIES_IMAGE 0x00000001
-
#define VO_CAP_YV12 0x00000002 /* driver can handle YUV 4:2:0 pictures */
#define VO_CAP_YUY2 0x00000004 /* driver can handle YUY2 pictures */
@@ -335,7 +335,7 @@ struct xine_video_port_s {
* from generic vo functions.
*/
-#define VIDEO_OUT_DRIVER_IFACE_VERSION 17
+#define VIDEO_OUT_DRIVER_IFACE_VERSION 18
struct vo_driver_s {