@ -666,14 +666,6 @@ static inline int get_qscale(MpegEncContext *s)
}
}
static void exchange_uv ( MpegEncContext * s )
{
int16_t ( * tmp ) [ 64 ] ;
tmp = s - > pblocks [ 4 ] ;
s - > pblocks [ 4 ] = s - > pblocks [ 5 ] ;
s - > pblocks [ 5 ] = tmp ;
}
/* motion type (for MPEG-2) */
# define MT_FIELD 1
@ -777,17 +769,10 @@ static int mpeg_decode_mb(MpegEncContext *s, int16_t block[12][64])
} else
memset ( s - > last_mv , 0 , sizeof ( s - > last_mv ) ) ; /* reset mv prediction */
s - > mb_intra = 1 ;
# if FF_API_XVMC
FF_DISABLE_DEPRECATION_WARNINGS
// if 1, we memcpy blocks in xvmcvideo
if ( CONFIG_MPEG_ XVMC_DECODER & & s - > avctx - > xvmc_acceleration > 1 ) {
if ( CONFIG_XVMC & & s - > pack_pblocks ) {
ff_xvmc_pack_pblocks ( s , - 1 ) ; // inter are always full blocks
if ( s - > swap_uv ) {
exchange_uv ( s ) ;
}
}
FF_ENABLE_DEPRECATION_WARNINGS
# endif /* FF_API_XVMC */
if ( s - > codec_id = = AV_CODEC_ID_MPEG2VIDEO ) {
if ( s - > flags2 & CODEC_FLAG2_FAST ) {
@ -1000,17 +985,10 @@ FF_ENABLE_DEPRECATION_WARNINGS
return - 1 ;
}
# if FF_API_XVMC
FF_DISABLE_DEPRECATION_WARNINGS
//if 1, we memcpy blocks in xvmcvideo
if ( CONFIG_MPEG_ XVMC_DECODER & & s - > avctx - > xvmc_acceleration > 1 ) {
if ( CONFIG_XVMC & & s - > pack_pblocks ) {
ff_xvmc_pack_pblocks ( s , cbp ) ;
if ( s - > swap_uv ) {
exchange_uv ( s ) ;
}
}
FF_ENABLE_DEPRECATION_WARNINGS
# endif /* FF_API_XVMC */
if ( s - > codec_id = = AV_CODEC_ID_MPEG2VIDEO ) {
if ( s - > flags2 & CODEC_FLAG2_FAST ) {
@ -1134,12 +1112,9 @@ static void quant_matrix_rebuild(uint16_t *matrix, const uint8_t *old_perm,
}
static const enum AVPixelFormat mpeg1_hwaccel_pixfmt_list_420 [ ] = {
# if FF_API_XVMC
# if CONFIG_MPEG_XVMC_DECODER
AV_PIX_FMT_XVMC_MPEG2_IDCT ,
AV_PIX_FMT_XVMC_MPEG2_MC ,
# if CONFIG_MPEG1_XVMC_HWACCEL
AV_PIX_FMT_XVMC ,
# endif
# endif /* FF_API_XVMC */
# if CONFIG_MPEG1_VDPAU_HWACCEL
AV_PIX_FMT_VDPAU_MPEG1 ,
AV_PIX_FMT_VDPAU ,
@ -1149,12 +1124,9 @@ static const enum AVPixelFormat mpeg1_hwaccel_pixfmt_list_420[] = {
} ;
static const enum AVPixelFormat mpeg2_hwaccel_pixfmt_list_420 [ ] = {
# if FF_API_XVMC
# if CONFIG_MPEG_XVMC_DECODER
AV_PIX_FMT_XVMC_MPEG2_IDCT ,
AV_PIX_FMT_XVMC_MPEG2_MC ,
# if CONFIG_MPEG2_XVMC_HWACCEL
AV_PIX_FMT_XVMC ,
# endif
# endif /* FF_API_XVMC */
# if CONFIG_MPEG2_VDPAU_HWACCEL
AV_PIX_FMT_VDPAU_MPEG2 ,
AV_PIX_FMT_VDPAU ,
@ -1191,25 +1163,21 @@ static enum AVPixelFormat mpeg_get_pixelformat(AVCodecContext *avctx)
static void setup_hwaccel_for_pixfmt ( AVCodecContext * avctx )
{
# if FF_API_XVMC
FF_DISABLE_DEPRECATION_WARNINGS
if ( avctx - > pix_fmt ! = AV_PIX_FMT_XVMC_MPEG2_IDCT & & avctx - > pix_fmt ! = AV_PIX_FMT_XVMC_MPEG2_MC ) {
avctx - > xvmc_acceleration = 0 ;
} else if ( ! avctx - > xvmc_acceleration ) {
avctx - > xvmc_acceleration = 2 ;
}
FF_ENABLE_DEPRECATION_WARNINGS
# endif /* FF_API_XVMC */
avctx - > hwaccel = ff_find_hwaccel ( avctx ) ;
// until then pix_fmt may be changed right after codec init
# if FF_API_XVMC
if ( avctx - > pix_fmt = = AV_PIX_FMT_XVMC_MPEG2_IDCT | |
# else
if (
# endif
avctx - > hwaccel | | uses_vdpau ( avctx ) )
if ( avctx - > hwaccel | | uses_vdpau ( avctx ) )
if ( avctx - > idct_algo = = FF_IDCT_AUTO )
avctx - > idct_algo = FF_IDCT_SIMPLE ;
if ( avctx - > hwaccel & & avctx - > pix_fmt = = AV_PIX_FMT_XVMC ) {
Mpeg1Context * s1 = avctx - > priv_data ;
MpegEncContext * s = & s1 - > mpeg_enc_ctx ;
s - > pack_pblocks = 1 ;
# if FF_API_XVMC
avctx - > xvmc_acceleration = 2 ;
# endif /* FF_API_XVMC */
}
}
/* Call this function when we know all parameters.
@ -1630,16 +1598,6 @@ static int mpeg_field_start(MpegEncContext *s, const uint8_t *buf, int buf_size)
return - 1 ;
}
# if FF_API_XVMC
FF_DISABLE_DEPRECATION_WARNINGS
// MPV_frame_start will call this function too,
// but we need to call it on every field
if ( CONFIG_MPEG_XVMC_DECODER & & s - > avctx - > xvmc_acceleration )
if ( ff_xvmc_field_start ( s , avctx ) < 0 )
return - 1 ;
FF_ENABLE_DEPRECATION_WARNINGS
# endif /* FF_API_XVMC */
return 0 ;
}
@ -1711,7 +1669,7 @@ static int mpeg_decode_slice(MpegEncContext *s, int mb_y,
return - 1 ;
}
if ( avctx - > hwaccel ) {
if ( avctx - > hwaccel & & avctx - > hwaccel - > decode_slice ) {
const uint8_t * buf_end , * buf_start = * buf - 4 ; /* include start_code */
int start_code = - 1 ;
buf_end = avpriv_find_start_code ( buf_start + 2 , * buf + buf_size , & start_code ) ;
@ -1741,13 +1699,9 @@ static int mpeg_decode_slice(MpegEncContext *s, int mb_y,
}
for ( ; ; ) {
# if FF_API_XVMC
FF_DISABLE_DEPRECATION_WARNINGS
// If 1, we memcpy blocks in xvmcvideo.
if ( CONFIG_MPEG_ XVMC_DECODER & & s - > avctx - > xvmc_acceleration > 1 )
if ( CONFIG_XVMC & & s - > pack_pblocks )
ff_xvmc_init_block ( s ) ; // set s->block
FF_ENABLE_DEPRECATION_WARNINGS
# endif /* FF_API_XVMC */
if ( mpeg_decode_mb ( s , s - > block ) < 0 )
return - 1 ;
@ -1949,13 +1903,6 @@ static int slice_end(AVCodecContext *avctx, AVFrame *pict)
av_log ( avctx , AV_LOG_ERROR , " hardware accelerator failed to decode picture \n " ) ;
}
# if FF_API_XVMC
FF_DISABLE_DEPRECATION_WARNINGS
if ( CONFIG_MPEG_XVMC_DECODER & & s - > avctx - > xvmc_acceleration )
ff_xvmc_field_end ( s ) ;
FF_ENABLE_DEPRECATION_WARNINGS
# endif /* FF_API_XVMC */
/* end of slice reached */
if ( /*s->mb_y << field_pic == s->mb_height &&*/ ! s - > first_field & & ! s1 - > first_slice ) {
/* end of image */