mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-24 13:56:33 +02:00
Approved hunks for VAAPI / our new shiny hwaccel API
by Gwenole Beauchesne gbeauchesne splitted desktop com Originally committed as revision 17539 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
1d14361dec
commit
c269cf68a0
@ -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_FMT_NB] = {
|
||||
},
|
||||
[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 buf_size, int pix_fmt)
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
|
@ -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(AVCodecContext *avctx){
|
||||
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;
|
||||
|
@ -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
|
||||
|
@ -391,7 +391,9 @@ int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, v
|
||||
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];
|
||||
}
|
||||
|
||||
|
@ -25,6 +25,7 @@
|
||||
* VC-1 and WMV3 decoder
|
||||
*
|
||||
*/
|
||||
#include "internal.h"
|
||||
#include "dsputil.h"
|
||||
#include "avcodec.h"
|
||||
#include "mpegvideo.h"
|
||||
|
Loading…
x
Reference in New Issue
Block a user