[SCM] libav/experimental: Add GNU header, remove X includes, add more check for xvmc render packet

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 15:37:00 UTC 2013


The following commit has been merged in the experimental branch:
commit 302898fcbe604a088f9a3db4c4747b0d735b611a
Author: Ivan Kalvachev <ikalvachev at gmail.com>
Date:   Tue Jul 29 14:15:28 2003 +0000

    Add GNU header, remove X includes, add more check for xvmc render packet
    
    Originally committed as revision 2097 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavcodec/xvmcvideo.c b/libavcodec/xvmcvideo.c
index d6aaee4..6346b50 100644
--- a/libavcodec/xvmcvideo.c
+++ b/libavcodec/xvmcvideo.c
@@ -1,18 +1,27 @@
+/*
+ * XVideo Motion Compensation
+ * Copyright (c) 2003 Ivan Kalvachev
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <ctype.h>
 #include <limits.h>
 
-//X11 include
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <X11/Xatom.h>
-#include <X11/extensions/Xv.h>
-#include <X11/extensions/Xvlib.h>
-#include <X11/extensions/XvMClib.h>
-
-#include "xvmc_render.h"
-
 //avcodec include
 #include "avcodec.h"
 #include "dsputil.h"
@@ -26,6 +35,13 @@
 #endif
 
 #ifdef HAVE_XVMC
+
+//X11 includes are in the xvmc_render.h
+//by replacing it with none-X one
+//XvMC emulation could be performed
+
+#include "xvmc_render.h"
+
 //#include "xvmc_debug.h"
 
 static int calc_cbp(MpegEncContext *s, int blocknum){
@@ -47,8 +63,11 @@ int XVMC_field_start(MpegEncContext*s, AVCodecContext *avctx){
 xvmc_render_state_t * render,* last, * next;
 
     assert(avctx != NULL);
+
     render = (xvmc_render_state_t*)s->current_picture.data[2];
     assert(render != NULL);
+    if( (render == NULL) || (render->magic != MP_XVMC_RENDER_MAGIC) )
+        return -1;//make sure that this is render packet
 
     render->picture_structure = s->picture_structure;
     render->flags = (s->first_field)? 0: XVMC_SECOND_FIELD;
@@ -66,12 +85,15 @@ xvmc_render_state_t * render,* last, * next;
             next = (xvmc_render_state_t*)s->next_picture.data[2];
             assert(next!=NULL);
             assert(next->state & MP_XVMC_STATE_PREDICTION);
+            if(next == NULL) return -1;
+            if(next->magic != MP_XVMC_RENDER_MAGIC) return -1;
             render->p_future_surface = next->p_surface;
             //no return here, going to set forward prediction
         case  P_TYPE:
             last = (xvmc_render_state_t*)s->last_picture.data[2];
             if(last == NULL)// && !s->first_field)
                 last = render;//predict second field from the first
+            if(last->magic != MP_XVMC_RENDER_MAGIC) return -1;
             assert(last->state & MP_XVMC_STATE_PREDICTION);
             render->p_past_surface = last->p_surface;
             return 0;
@@ -126,6 +148,7 @@ const int mb_xy = s->mb_y * s->mb_stride + s->mb_x;
     assert(render!=NULL);
     assert(render->magic==MP_XVMC_RENDER_MAGIC);
     assert(render->mv_blocks);
+
     //take the next free macroblock
     mv_block = &render->mv_blocks[render->start_mv_blocks_num + 
                                    render->filled_mv_blocks_num ];

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list