summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Nocera <hadess@users.sourceforge.net>2003-02-05 21:20:10 +0000
committerBastien Nocera <hadess@users.sourceforge.net>2003-02-05 21:20:10 +0000
commitbfdb14f12c4fa5d9d2dea6db667999212ce09b02 (patch)
tree51902296fa58dd09a82161704b38e76d1f38aeae
parentbb6e08b5e8af390904643e3890d1bc996c0f2e27 (diff)
downloadxine-lib-bfdb14f12c4fa5d9d2dea6db667999212ce09b02.tar.gz
xine-lib-bfdb14f12c4fa5d9d2dea6db667999212ce09b02.tar.bz2
- fix segfault with some OpenDivX streams (thanks Miguel for spotting my
stupid mistakes) CVS patchset: 4108 CVS date: 2003/02/05 21:20:10
-rw-r--r--src/video_out/video_out_none.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/video_out/video_out_none.c b/src/video_out/video_out_none.c
index b8295d4f8..dca3b8a6c 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.8 2003/01/11 10:49:47 f1rmb Exp $
+ * $Id: video_out_none.c,v 1.9 2003/02/05 21:20:10 hadess Exp $
*
* Was originally part of toxine frontend.
* ...but has now been adapted to xine coding style standards ;)
@@ -66,9 +66,15 @@ static void free_framedata(none_frame_t* frame) {
free(frame->vo_frame.base[0]);
frame->vo_frame.base[0] = NULL;
}
-
- frame->vo_frame.base[1] = NULL;
- frame->vo_frame.base[2] = NULL;
+
+ if(frame->vo_frame.base[1]) {
+ free(frame->vo_frame.base[1]);
+ frame->vo_frame.base[1] = NULL;
+ }
+ if(frame->vo_frame.base[2]) {
+ free(frame->vo_frame.base[2]);
+ frame->vo_frame.base[2] = NULL;
+ }
}
static void none_frame_dispose(vo_frame_t *vo_frame) {
@@ -127,14 +133,14 @@ static void none_update_frame_format(vo_driver_t *vo_driver, vo_frame_t *vo_fram
frame->vo_frame.pitches[0] = 8*((width + 7) / 8);
frame->vo_frame.pitches[1] = 8*((width + 15) / 16);
frame->vo_frame.pitches[2] = 8*((width + 15) / 16);
- frame->vo_frame.base[0] = malloc(frame_size * 3/2);
- frame->vo_frame.base[2] = frame->vo_frame.base[0]+frame_size;
- frame->vo_frame.base[1] = frame->vo_frame.base[0]+frame_size*5/4;
+ frame->vo_frame.base[0] = malloc(frame->vo_frame.pitches[0] * height);
+ frame->vo_frame.base[1] = malloc(frame->vo_frame.pitches[1] * ((height+1)/2));
+ frame->vo_frame.base[2] = malloc(frame->vo_frame.pitches[2] * ((height+1)/2));
break;
case XINE_IMGFMT_YUY2:
frame->vo_frame.pitches[0] = 8*((width + 3) / 4);
- frame->vo_frame.base[0] = malloc((frame_size * 2));
+ frame->vo_frame.base[0] = malloc(frame->vo_frame.pitches[0] * height);
frame->vo_frame.base[1] = NULL;
frame->vo_frame.base[2] = NULL;
break;