Merge remote-tracking branch 'qatar/release/9' into release/1.1
* qatar/release/9: arm: Don't clobber callee saved registers in scalarproduct alsdec: check block length h264/mpegvideo: do not provide pixel formats for hwaccels that are not compiled in mpeg4video_parser: init mpeg4 static tables. Conflicts: libavcodec/mpeg4video_parser.c libavcodec/mpeg4videodec.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@@ -1394,6 +1394,11 @@ static int read_frame_data(ALSDecContext *ctx, unsigned int ra_frame)
|
|||||||
|
|
||||||
for (b = 0; b < ctx->num_blocks; b++) {
|
for (b = 0; b < ctx->num_blocks; b++) {
|
||||||
bd.block_length = div_blocks[b];
|
bd.block_length = div_blocks[b];
|
||||||
|
if (bd.block_length <= 0) {
|
||||||
|
av_log(ctx->avctx, AV_LOG_WARNING,
|
||||||
|
"Invalid block length %d in channel data!\n", bd.block_length);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
for (c = 0; c < avctx->channels; c++) {
|
for (c = 0; c < avctx->channels; c++) {
|
||||||
bd.const_block = ctx->const_block + c;
|
bd.const_block = ctx->const_block + c;
|
||||||
|
@@ -41,10 +41,10 @@ function ff_scalarproduct_int16_neon, export=1
|
|||||||
|
|
||||||
vpadd.s32 d16, d0, d1
|
vpadd.s32 d16, d0, d1
|
||||||
vpadd.s32 d17, d2, d3
|
vpadd.s32 d17, d2, d3
|
||||||
vpadd.s32 d10, d4, d5
|
vpadd.s32 d18, d4, d5
|
||||||
vpadd.s32 d11, d6, d7
|
vpadd.s32 d19, d6, d7
|
||||||
vpadd.s32 d0, d16, d17
|
vpadd.s32 d0, d16, d17
|
||||||
vpadd.s32 d1, d10, d11
|
vpadd.s32 d1, d18, d19
|
||||||
vpadd.s32 d2, d0, d1
|
vpadd.s32 d2, d0, d1
|
||||||
vpaddl.s32 d3, d2
|
vpaddl.s32 d3, d2
|
||||||
vmov.32 r0, d3[0]
|
vmov.32 r0, d3[0]
|
||||||
@@ -81,10 +81,10 @@ function ff_scalarproduct_and_madd_int16_neon, export=1
|
|||||||
|
|
||||||
vpadd.s32 d16, d0, d1
|
vpadd.s32 d16, d0, d1
|
||||||
vpadd.s32 d17, d2, d3
|
vpadd.s32 d17, d2, d3
|
||||||
vpadd.s32 d10, d4, d5
|
vpadd.s32 d18, d4, d5
|
||||||
vpadd.s32 d11, d6, d7
|
vpadd.s32 d19, d6, d7
|
||||||
vpadd.s32 d0, d16, d17
|
vpadd.s32 d0, d16, d17
|
||||||
vpadd.s32 d1, d10, d11
|
vpadd.s32 d1, d18, d19
|
||||||
vpadd.s32 d2, d0, d1
|
vpadd.s32 d2, d0, d1
|
||||||
vpaddl.s32 d3, d2
|
vpaddl.s32 d3, d2
|
||||||
vmov.32 r0, d3[0]
|
vmov.32 r0, d3[0]
|
||||||
|
@@ -67,9 +67,15 @@ static const uint8_t div6[QP_MAX_NUM + 1] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const enum AVPixelFormat hwaccel_pixfmt_list_h264_jpeg_420[] = {
|
static const enum AVPixelFormat hwaccel_pixfmt_list_h264_jpeg_420[] = {
|
||||||
|
#if CONFIG_H264_DXVA2_HWACCEL
|
||||||
AV_PIX_FMT_DXVA2_VLD,
|
AV_PIX_FMT_DXVA2_VLD,
|
||||||
|
#endif
|
||||||
|
#if CONFIG_H264_VAAPI_HWACCEL
|
||||||
AV_PIX_FMT_VAAPI_VLD,
|
AV_PIX_FMT_VAAPI_VLD,
|
||||||
|
#endif
|
||||||
|
#if CONFIG_H264_VDA_HWACCEL
|
||||||
AV_PIX_FMT_VDA_VLD,
|
AV_PIX_FMT_VDA_VLD,
|
||||||
|
#endif
|
||||||
AV_PIX_FMT_YUVJ420P,
|
AV_PIX_FMT_YUVJ420P,
|
||||||
AV_PIX_FMT_NONE
|
AV_PIX_FMT_NONE
|
||||||
};
|
};
|
||||||
|
@@ -111,6 +111,7 @@ int ff_mpeg4_set_direct_mv(MpegEncContext *s, int mx, int my);
|
|||||||
|
|
||||||
extern uint8_t ff_mpeg4_static_rl_table_store[3][2][2*MAX_RUN + MAX_LEVEL + 3];
|
extern uint8_t ff_mpeg4_static_rl_table_store[3][2][2*MAX_RUN + MAX_LEVEL + 3];
|
||||||
|
|
||||||
|
void ff_mpeg4_init_tables(void);
|
||||||
|
|
||||||
#if 0 //3IV1 is quite rare and it slows things down a tiny bit
|
#if 0 //3IV1 is quite rare and it slows things down a tiny bit
|
||||||
#define IS_3IV1 s->codec_tag == AV_RL32("3IV1")
|
#define IS_3IV1 s->codec_tag == AV_RL32("3IV1")
|
||||||
|
@@ -48,6 +48,33 @@ static const int mb_type_b_map[4]= {
|
|||||||
MB_TYPE_L0 | MB_TYPE_16x16,
|
MB_TYPE_L0 | MB_TYPE_16x16,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
av_cold void ff_mpeg4videodec_static_init(void)
|
||||||
|
{
|
||||||
|
static int done = 0;
|
||||||
|
|
||||||
|
if (!done) {
|
||||||
|
ff_init_rl(&ff_mpeg4_rl_intra, ff_mpeg4_static_rl_table_store[0]);
|
||||||
|
ff_init_rl(&ff_rvlc_rl_inter, ff_mpeg4_static_rl_table_store[1]);
|
||||||
|
ff_init_rl(&ff_rvlc_rl_intra, ff_mpeg4_static_rl_table_store[2]);
|
||||||
|
INIT_VLC_RL(ff_mpeg4_rl_intra, 554);
|
||||||
|
INIT_VLC_RL(ff_rvlc_rl_inter, 1072);
|
||||||
|
INIT_VLC_RL(ff_rvlc_rl_intra, 1072);
|
||||||
|
INIT_VLC_STATIC(&dc_lum, DC_VLC_BITS, 10 /* 13 */,
|
||||||
|
&ff_mpeg4_DCtab_lum[0][1], 2, 1,
|
||||||
|
&ff_mpeg4_DCtab_lum[0][0], 2, 1, 512);
|
||||||
|
INIT_VLC_STATIC(&dc_chrom, DC_VLC_BITS, 10 /* 13 */,
|
||||||
|
&ff_mpeg4_DCtab_chrom[0][1], 2, 1,
|
||||||
|
&ff_mpeg4_DCtab_chrom[0][0], 2, 1, 512);
|
||||||
|
INIT_VLC_STATIC(&sprite_trajectory, SPRITE_TRAJ_VLC_BITS, 15,
|
||||||
|
&ff_sprite_trajectory_tab[0][1], 4, 2,
|
||||||
|
&ff_sprite_trajectory_tab[0][0], 4, 2, 128);
|
||||||
|
INIT_VLC_STATIC(&mb_type_b_vlc, MB_TYPE_B_VLC_BITS, 4,
|
||||||
|
&ff_mb_type_b_tab[0][1], 2, 1,
|
||||||
|
&ff_mb_type_b_tab[0][0], 2, 1, 16);
|
||||||
|
done = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Predict the ac.
|
* Predict the ac.
|
||||||
* @param n block index (0-3 are luma, 4-5 are chroma)
|
* @param n block index (0-3 are luma, 4-5 are chroma)
|
||||||
@@ -2255,33 +2282,6 @@ end:
|
|||||||
return decode_vop_header(s, gb);
|
return decode_vop_header(s, gb);
|
||||||
}
|
}
|
||||||
|
|
||||||
av_cold void ff_mpeg4videodec_static_init(void)
|
|
||||||
{
|
|
||||||
static int done = 0;
|
|
||||||
|
|
||||||
if (!done) {
|
|
||||||
ff_init_rl(&ff_mpeg4_rl_intra, ff_mpeg4_static_rl_table_store[0]);
|
|
||||||
ff_init_rl(&ff_rvlc_rl_inter, ff_mpeg4_static_rl_table_store[1]);
|
|
||||||
ff_init_rl(&ff_rvlc_rl_intra, ff_mpeg4_static_rl_table_store[2]);
|
|
||||||
INIT_VLC_RL(ff_mpeg4_rl_intra, 554);
|
|
||||||
INIT_VLC_RL(ff_rvlc_rl_inter, 1072);
|
|
||||||
INIT_VLC_RL(ff_rvlc_rl_intra, 1072);
|
|
||||||
INIT_VLC_STATIC(&dc_lum, DC_VLC_BITS, 10 /* 13 */,
|
|
||||||
&ff_mpeg4_DCtab_lum[0][1], 2, 1,
|
|
||||||
&ff_mpeg4_DCtab_lum[0][0], 2, 1, 512);
|
|
||||||
INIT_VLC_STATIC(&dc_chrom, DC_VLC_BITS, 10 /* 13 */,
|
|
||||||
&ff_mpeg4_DCtab_chrom[0][1], 2, 1,
|
|
||||||
&ff_mpeg4_DCtab_chrom[0][0], 2, 1, 512);
|
|
||||||
INIT_VLC_STATIC(&sprite_trajectory, SPRITE_TRAJ_VLC_BITS, 15,
|
|
||||||
&ff_sprite_trajectory_tab[0][1], 4, 2,
|
|
||||||
&ff_sprite_trajectory_tab[0][0], 4, 2, 128);
|
|
||||||
INIT_VLC_STATIC(&mb_type_b_vlc, MB_TYPE_B_VLC_BITS, 4,
|
|
||||||
&ff_mb_type_b_tab[0][1], 2, 1,
|
|
||||||
&ff_mb_type_b_tab[0][0], 2, 1, 16);
|
|
||||||
done = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static av_cold int decode_init(AVCodecContext *avctx)
|
static av_cold int decode_init(AVCodecContext *avctx)
|
||||||
{
|
{
|
||||||
MpegEncContext *s = avctx->priv_data;
|
MpegEncContext *s = avctx->priv_data;
|
||||||
|
@@ -128,9 +128,15 @@ const enum AVPixelFormat ff_pixfmt_list_420[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const enum AVPixelFormat ff_hwaccel_pixfmt_list_420[] = {
|
const enum AVPixelFormat ff_hwaccel_pixfmt_list_420[] = {
|
||||||
|
#if CONFIG_H264_DXVA2_HWACCEL
|
||||||
AV_PIX_FMT_DXVA2_VLD,
|
AV_PIX_FMT_DXVA2_VLD,
|
||||||
|
#endif
|
||||||
|
#if CONFIG_H264_VAAPI_HWACCEL
|
||||||
AV_PIX_FMT_VAAPI_VLD,
|
AV_PIX_FMT_VAAPI_VLD,
|
||||||
|
#endif
|
||||||
|
#if CONFIG_H264_VDA_HWACCEL
|
||||||
AV_PIX_FMT_VDA_VLD,
|
AV_PIX_FMT_VDA_VLD,
|
||||||
|
#endif
|
||||||
AV_PIX_FMT_YUV420P,
|
AV_PIX_FMT_YUV420P,
|
||||||
AV_PIX_FMT_NONE
|
AV_PIX_FMT_NONE
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user