[FFmpeg-cvslog] r17539 - in trunk/libavcodec: imgconvert.c mpeg12.c mpegvideo.c utils.c vc1.c

michael subversion
Mon Feb 23 14:35:53 CET 2009


Author: michael
Date: Mon Feb 23 14:35:52 2009
New Revision: 17539

Log:
Approved hunks for VAAPI by Gwenole Beauche.

Modified:
   trunk/libavcodec/imgconvert.c
   trunk/libavcodec/mpeg12.c
   trunk/libavcodec/mpegvideo.c
   trunk/libavcodec/utils.c
   trunk/libavcodec/vc1.c

Modified: trunk/libavcodec/imgconvert.c
==============================================================================
--- trunk/libavcodec/imgconvert.c	Mon Feb 23 03:38:45 2009	(r17538)
+++ trunk/libavcodec/imgconvert.c	Mon Feb 23 14:35:52 2009	(r17539)
@@ -57,6 +57,7 @@ typedef struct PixFmtInfo {
     uint8_t color_type;      /**< color type (see FF_COLOR_xxx constants) */
     uint8_t pixel_type;      /**< pixel storage type (see FF_PIXEL_xxx constants) */
     uint8_t is_alpha : 1;    /**< true if alpha can be specified */
+    uint8_t is_hwaccel : 1;  /**< true if this is an HW accelerated format */
     uint8_t x_chroma_shift;  /**< X chroma subsampling factor is 2 ^ shift */
     uint8_t y_chroma_shift;  /**< Y chroma subsampling factor is 2 ^ shift */
     uint8_t depth;           /**< bit depth of the color components */
@@ -279,24 +280,31 @@ static const PixFmtInfo pix_fmt_info[PIX
     },
     [PIX_FMT_XVMC_MPEG2_MC] = {
         .name = "xvmcmc",
+        .is_hwaccel = 1,
     },
     [PIX_FMT_XVMC_MPEG2_IDCT] = {
         .name = "xvmcidct",
+        .is_hwaccel = 1,
     },
     [PIX_FMT_VDPAU_MPEG1] = {
         .name = "vdpau_mpeg1",
+        .is_hwaccel = 1,
     },
     [PIX_FMT_VDPAU_MPEG2] = {
         .name = "vdpau_mpeg2",
+        .is_hwaccel = 1,
     },
     [PIX_FMT_VDPAU_H264] = {
         .name = "vdpau_h264",
+        .is_hwaccel = 1,
     },
     [PIX_FMT_VDPAU_WMV3] = {
         .name = "vdpau_wmv3",
+        .is_hwaccel = 1,
     },
     [PIX_FMT_VDPAU_VC1] = {
         .name = "vdpau_vc1",
+        .is_hwaccel = 1,
     },
     [PIX_FMT_UYYVYY411] = {
         .name = "uyyvyy411",
@@ -459,6 +467,11 @@ void avcodec_pix_fmt_string (char *buf, 
     }
 }
 
+int ff_is_hwaccel_pix_fmt(enum PixelFormat pix_fmt)
+{
+    return pix_fmt_info[pix_fmt].is_hwaccel;
+}
+
 int ff_set_systematic_pal(uint32_t pal[256], enum PixelFormat pix_fmt){
     int i;
 

Modified: trunk/libavcodec/mpeg12.c
==============================================================================
--- trunk/libavcodec/mpeg12.c	Mon Feb 23 03:38:45 2009	(r17538)
+++ trunk/libavcodec/mpeg12.c	Mon Feb 23 14:35:52 2009	(r17539)
@@ -26,6 +26,7 @@
  */
 
 //#define DEBUG
+#include "internal.h"
 #include "avcodec.h"
 #include "dsputil.h"
 #include "mpegvideo.h"
@@ -1303,6 +1304,7 @@ static int mpeg_decode_postinit(AVCodecC
         avctx->pix_fmt = mpeg_get_pixelformat(avctx);
         //until then pix_fmt may be changed right after codec init
         if( avctx->pix_fmt == PIX_FMT_XVMC_MPEG2_IDCT ||
+            avctx->hwaccel ||
             s->avctx->codec->capabilities&CODEC_CAP_HWACCEL_VDPAU )
             if( avctx->idct_algo == FF_IDCT_AUTO )
                 avctx->idct_algo = FF_IDCT_SIMPLE;

Modified: trunk/libavcodec/mpegvideo.c
==============================================================================
--- trunk/libavcodec/mpegvideo.c	Mon Feb 23 03:38:45 2009	(r17538)
+++ trunk/libavcodec/mpegvideo.c	Mon Feb 23 14:35:52 2009	(r17539)
@@ -955,7 +955,8 @@ void MPV_frame_end(MpegEncContext *s)
     //just to make sure that all data is rendered.
     if(CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration){
         ff_xvmc_field_end(s);
-    }else if(!(s->avctx->codec->capabilities&CODEC_CAP_HWACCEL_VDPAU)
+    }else if(!s->avctx->hwaccel
+       && !(s->avctx->codec->capabilities&CODEC_CAP_HWACCEL_VDPAU)
        && s->unrestricted_mv
        && s->current_picture.reference
        && !s->intra_only

Modified: trunk/libavcodec/utils.c
==============================================================================
--- trunk/libavcodec/utils.c	Mon Feb 23 03:38:45 2009	(r17538)
+++ trunk/libavcodec/utils.c	Mon Feb 23 14:35:52 2009	(r17539)
@@ -391,7 +391,9 @@ int avcodec_default_execute(AVCodecConte
     return 0;
 }
 
-enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat * fmt){
+enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat *fmt){
+    while (*fmt != PIX_FMT_NONE && ff_is_hwaccel_pix_fmt(*fmt))
+        ++fmt;
     return fmt[0];
 }
 

Modified: trunk/libavcodec/vc1.c
==============================================================================
--- trunk/libavcodec/vc1.c	Mon Feb 23 03:38:45 2009	(r17538)
+++ trunk/libavcodec/vc1.c	Mon Feb 23 14:35:52 2009	(r17539)
@@ -25,6 +25,7 @@
  * VC-1 and WMV3 decoder
  *
  */
+#include "internal.h"
 #include "dsputil.h"
 #include "avcodec.h"
 #include "mpegvideo.h"




More information about the ffmpeg-cvslog mailing list