From a2dcf860b2777e530646abd00202c3fb5b3a5a81 Mon Sep 17 00:00:00 2001 From: Miguel Freitas Date: Sun, 7 Dec 2003 15:33:25 +0000 Subject: fix post plugins interception two tvtime plugins do not crash xine anymore :) (but why would anybody do that?) CVS patchset: 5859 CVS date: 2003/12/07 15:33:25 --- src/post/deinterlace/xine_plugin.c | 4 ++-- src/post/planar/boxblur.c | 14 ++++++++------ src/post/planar/denoise3d.c | 14 ++++++++------ src/post/planar/eq.c | 14 ++++++++------ src/post/planar/eq2.c | 14 ++++++++------ src/post/planar/invert.c | 16 ++++++++++------ src/post/planar/pp.c | 4 ++-- src/post/planar/unsharp.c | 14 ++++++++------ 8 files changed, 54 insertions(+), 40 deletions(-) (limited to 'src') diff --git a/src/post/deinterlace/xine_plugin.c b/src/post/deinterlace/xine_plugin.c index c569d82a2..0df13ef80 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.24 2003/12/06 15:50:11 miguelfreitas Exp $ + * $Id: xine_plugin.c,v 1.25 2003/12/07 15:33:25 miguelfreitas Exp $ * * advanced video deinterlacer plugin * Jun/2003 by Miguel Freitas @@ -585,11 +585,11 @@ static vo_frame_t *deinterlace_get_frame(xine_video_port_t *port_gen, uint32_t w pthread_mutex_lock (&this->lock); + _x_post_intercept_video_frame(frame, port); /* do not intercept if not enabled or not interlaced */ if( this->enabled && this->cur_method && (flags & VO_INTERLACED_FLAG) && (format == XINE_IMGFMT_YV12 || format == XINE_IMGFMT_YUY2) ) { - _x_post_intercept_video_frame(frame, port); /* replace with our own draw function */ frame->draw = deinterlace_draw; /* decoders should not copy the frames, since they won't be displayed */ diff --git a/src/post/planar/boxblur.c b/src/post/planar/boxblur.c index 5b94c1230..1504773c1 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.10 2003/11/11 18:44:59 f1rmb Exp $ + * $Id: boxblur.c,v 1.11 2003/12/07 15:33:26 miguelfreitas Exp $ * * mplayer's boxblur * Copyright (C) 2002 Michael Niedermayer @@ -307,11 +307,13 @@ static vo_frame_t *boxblur_get_frame(xine_video_port_t *port_gen, uint32_t width width, height, ratio, format, flags); _x_post_intercept_video_frame(frame, port); - /* replace with our own draw function */ - frame->draw = boxblur_draw; - /* decoders should not copy the frames, since they won't be displayed */ - frame->proc_slice = NULL; - frame->proc_frame = NULL; + if( format == XINE_IMGFMT_YV12 || format == XINE_IMGFMT_YUY2 ) { + /* replace with our own draw function */ + frame->draw = boxblur_draw; + /* decoders should not copy the frames, since they won't be displayed */ + 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 fe76e2a6c..36ba6490c 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.10 2003/11/11 18:44:59 f1rmb Exp $ + * $Id: denoise3d.c,v 1.11 2003/12/07 15:33:26 miguelfreitas Exp $ * * mplayer's denoise3d * Copyright (C) 2003 Daniel Moreno @@ -346,11 +346,13 @@ static vo_frame_t *denoise3d_get_frame(xine_video_port_t *port_gen, uint32_t wid width, height, ratio, format, flags); _x_post_intercept_video_frame(frame, port); - /* replace with our own draw function */ - frame->draw = denoise3d_draw; - /* decoders should not copy the frames, since they won't be displayed */ - frame->proc_slice = NULL; - frame->proc_frame = NULL; + if( format == XINE_IMGFMT_YV12 || format == XINE_IMGFMT_YUY2 ) { + /* replace with our own draw function */ + frame->draw = denoise3d_draw; + /* decoders should not copy the frames, since they won't be displayed */ + 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 2077e2a26..e9c413af0 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.9 2003/11/11 18:44:59 f1rmb Exp $ + * $Id: eq.c,v 1.10 2003/12/07 15:33:26 miguelfreitas Exp $ * * mplayer's eq (soft video equalizer) * Copyright (C) Richard Felker @@ -431,11 +431,13 @@ static vo_frame_t *eq_get_frame(xine_video_port_t *port_gen, uint32_t width, width, height, ratio, format, flags); _x_post_intercept_video_frame(frame, port); - /* replace with our own draw function */ - frame->draw = eq_draw; - /* decoders should not copy the frames, since they won't be displayed */ - frame->proc_slice = NULL; - frame->proc_frame = NULL; + if( format == XINE_IMGFMT_YV12 || format == XINE_IMGFMT_YUY2 ) { + /* replace with our own draw function */ + frame->draw = eq_draw; + /* decoders should not copy the frames, since they won't be displayed */ + 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 0cea3276e..e4db57b24 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.11 2003/11/11 18:44:59 f1rmb Exp $ + * $Id: eq2.c,v 1.12 2003/12/07 15:33:26 miguelfreitas Exp $ * * mplayer's eq2 (soft video equalizer) * Software equalizer (brightness, contrast, gamma, saturation) @@ -633,11 +633,13 @@ static vo_frame_t *eq2_get_frame(xine_video_port_t *port_gen, uint32_t width, width, height, ratio, format, flags); _x_post_intercept_video_frame(frame, port); - /* replace with our own draw function */ - frame->draw = eq2_draw; - /* decoders should not copy the frames, since they won't be displayed */ - frame->proc_slice = NULL; - frame->proc_frame = NULL; + if( format == XINE_IMGFMT_YV12 || format == XINE_IMGFMT_YUY2 ) { + /* replace with our own draw function */ + frame->draw = eq2_draw; + /* decoders should not copy the frames, since they won't be displayed */ + frame->proc_slice = NULL; + frame->proc_frame = NULL; + } return frame; } diff --git a/src/post/planar/invert.c b/src/post/planar/invert.c index b5359fc2f..dfea9cbe1 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.16 2003/12/05 15:55:02 f1rmb Exp $ + * $Id: invert.c,v 1.17 2003/12/07 15:33:26 miguelfreitas Exp $ */ /* @@ -199,12 +199,16 @@ static vo_frame_t *invert_get_frame(xine_video_port_t *port_gen, uint32_t width, frame = port->original_port->get_frame(port->original_port, width, height, ratio, format, flags); + _x_post_intercept_video_frame(frame, port); - /* replace with our own draw function */ - frame->draw = invert_draw; - /* decoders should not copy the frames, since they won't be displayed */ - frame->proc_slice = NULL; - frame->proc_frame = NULL; + if( format == XINE_IMGFMT_YV12 || format == XINE_IMGFMT_YUY2 ) { + /* replace with our own draw function */ + frame->draw = invert_draw; + /* decoders should not copy the frames, since they won't be displayed */ + frame->proc_slice = NULL; + frame->proc_frame = NULL; + } + return frame; } diff --git a/src/post/planar/pp.c b/src/post/planar/pp.c index 8171f227f..b2c81f173 100755 --- a/src/post/planar/pp.c +++ b/src/post/planar/pp.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: pp.c,v 1.3 2003/11/29 01:23:24 miguelfreitas Exp $ + * $Id: pp.c,v 1.4 2003/12/07 15:33:26 miguelfreitas Exp $ * * plugin for ffmpeg libpostprocess */ @@ -349,8 +349,8 @@ static vo_frame_t *pp_get_frame(xine_video_port_t *port_gen, uint32_t width, frame = port->original_port->get_frame(port->original_port, width, height, ratio, format, flags); + _x_post_intercept_video_frame(frame, port); if( format == XINE_IMGFMT_YV12 || format == XINE_IMGFMT_YUY2 ) { - _x_post_intercept_video_frame(frame, port); /* replace with our own draw function */ frame->draw = pp_draw; /* decoders should not copy the frames, since they won't be displayed */ diff --git a/src/post/planar/unsharp.c b/src/post/planar/unsharp.c index 65ebba954..f60530fb9 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.11 2003/11/11 18:44:59 f1rmb Exp $ + * $Id: unsharp.c,v 1.12 2003/12/07 15:33:26 miguelfreitas Exp $ * * mplayer's unsharp * Copyright (C) 2002 Rémi Guyomarch @@ -465,11 +465,13 @@ static vo_frame_t *unsharp_get_frame(xine_video_port_t *port_gen, uint32_t width width, height, ratio, format, flags); _x_post_intercept_video_frame(frame, port); - /* replace with our own draw function */ - frame->draw = unsharp_draw; - /* decoders should not copy the frames, since they won't be displayed */ - frame->proc_slice = NULL; - frame->proc_frame = NULL; + if( format == XINE_IMGFMT_YV12 || format == XINE_IMGFMT_YUY2 ) { + /* replace with our own draw function */ + frame->draw = unsharp_draw; + /* decoders should not copy the frames, since they won't be displayed */ + frame->proc_slice = NULL; + frame->proc_frame = NULL; + } return frame; } -- cgit v1.2.3