Commit 0a72533e authored by Mans Rullgard's avatar Mans Rullgard

jfdctint: add 10-bit version

Signed-off-by: 's avatarMans Rullgard <mans@mansr.com>
parent 73c0dd93
...@@ -253,10 +253,10 @@ void dsputil_init_bfin( DSPContext* c, AVCodecContext *avctx ) ...@@ -253,10 +253,10 @@ void dsputil_init_bfin( DSPContext* c, AVCodecContext *avctx )
/* c->put_no_rnd_pixels_tab[0][3] = ff_bfin_put_pixels16_xy2_nornd; */ /* c->put_no_rnd_pixels_tab[0][3] = ff_bfin_put_pixels16_xy2_nornd; */
} }
if (avctx->dct_algo == FF_DCT_AUTO)
c->fdct = ff_bfin_fdct;
if (avctx->bits_per_raw_sample <= 8) { if (avctx->bits_per_raw_sample <= 8) {
if (avctx->dct_algo == FF_DCT_AUTO)
c->fdct = ff_bfin_fdct;
if (avctx->idct_algo == FF_IDCT_VP3) { if (avctx->idct_algo == FF_IDCT_VP3) {
c->idct_permutation_type = FF_NO_IDCT_PERM; c->idct_permutation_type = FF_NO_IDCT_PERM;
c->idct = ff_bfin_vp3_idct; c->idct = ff_bfin_vp3_idct;
......
...@@ -88,7 +88,7 @@ static const struct algo fdct_tab[] = { ...@@ -88,7 +88,7 @@ static const struct algo fdct_tab[] = {
{ "REF-DBL", ff_ref_fdct, NO_PERM }, { "REF-DBL", ff_ref_fdct, NO_PERM },
{ "FAAN", ff_faandct, FAAN_SCALE }, { "FAAN", ff_faandct, FAAN_SCALE },
{ "IJG-AAN-INT", fdct_ifast, SCALE_PERM }, { "IJG-AAN-INT", fdct_ifast, SCALE_PERM },
{ "IJG-LLM-INT", ff_jpeg_fdct_islow, NO_PERM }, { "IJG-LLM-INT", ff_jpeg_fdct_islow_8, NO_PERM },
#if HAVE_MMX #if HAVE_MMX
{ "MMX", ff_fdct_mmx, NO_PERM, AV_CPU_FLAG_MMX }, { "MMX", ff_fdct_mmx, NO_PERM, AV_CPU_FLAG_MMX },
......
...@@ -2848,17 +2848,22 @@ av_cold void dsputil_init(DSPContext* c, AVCodecContext *avctx) ...@@ -2848,17 +2848,22 @@ av_cold void dsputil_init(DSPContext* c, AVCodecContext *avctx)
ff_check_alignment(); ff_check_alignment();
#if CONFIG_ENCODERS #if CONFIG_ENCODERS
if(avctx->dct_algo==FF_DCT_FASTINT) { if (avctx->bits_per_raw_sample == 10) {
c->fdct = fdct_ifast; c->fdct = ff_jpeg_fdct_islow_10;
c->fdct248 = fdct_ifast248; c->fdct248 = ff_fdct248_islow_10;
} } else {
else if(avctx->dct_algo==FF_DCT_FAAN) { if(avctx->dct_algo==FF_DCT_FASTINT) {
c->fdct = ff_faandct; c->fdct = fdct_ifast;
c->fdct248 = ff_faandct248; c->fdct248 = fdct_ifast248;
} }
else { else if(avctx->dct_algo==FF_DCT_FAAN) {
c->fdct = ff_jpeg_fdct_islow; //slow/accurate/default c->fdct = ff_faandct;
c->fdct248 = ff_fdct248_islow; c->fdct248 = ff_faandct248;
}
else {
c->fdct = ff_jpeg_fdct_islow_8; //slow/accurate/default
c->fdct248 = ff_fdct248_islow_8;
}
} }
#endif //CONFIG_ENCODERS #endif //CONFIG_ENCODERS
......
...@@ -40,8 +40,10 @@ typedef short DCTELEM; ...@@ -40,8 +40,10 @@ typedef short DCTELEM;
void fdct_ifast (DCTELEM *data); void fdct_ifast (DCTELEM *data);
void fdct_ifast248 (DCTELEM *data); void fdct_ifast248 (DCTELEM *data);
void ff_jpeg_fdct_islow (DCTELEM *data); void ff_jpeg_fdct_islow_8(DCTELEM *data);
void ff_fdct248_islow (DCTELEM *data); void ff_jpeg_fdct_islow_10(DCTELEM *data);
void ff_fdct248_islow_8(DCTELEM *data);
void ff_fdct248_islow_10(DCTELEM *data);
void j_rev_dct (DCTELEM *data); void j_rev_dct (DCTELEM *data);
void j_rev_dct4 (DCTELEM *data); void j_rev_dct4 (DCTELEM *data);
......
This diff is collapsed.
This diff is collapsed.
...@@ -69,7 +69,8 @@ void ff_convert_matrix(DSPContext *dsp, int (*qmat)[64], uint16_t (*qmat16)[2][6 ...@@ -69,7 +69,8 @@ void ff_convert_matrix(DSPContext *dsp, int (*qmat)[64], uint16_t (*qmat16)[2][6
for(qscale=qmin; qscale<=qmax; qscale++){ for(qscale=qmin; qscale<=qmax; qscale++){
int i; int i;
if (dsp->fdct == ff_jpeg_fdct_islow if (dsp->fdct == ff_jpeg_fdct_islow_8 ||
dsp->fdct == ff_jpeg_fdct_islow_10
#ifdef FAAN_POSTSCALE #ifdef FAAN_POSTSCALE
|| dsp->fdct == ff_faandct || dsp->fdct == ff_faandct
#endif #endif
......
...@@ -172,8 +172,9 @@ void dsputil_init_ppc(DSPContext* c, AVCodecContext *avctx) ...@@ -172,8 +172,9 @@ void dsputil_init_ppc(DSPContext* c, AVCodecContext *avctx)
c->gmc1 = gmc1_altivec; c->gmc1 = gmc1_altivec;
#if CONFIG_ENCODERS #if CONFIG_ENCODERS
if (avctx->dct_algo == FF_DCT_AUTO || if (avctx->bits_per_raw_sample <= 8 &&
avctx->dct_algo == FF_DCT_ALTIVEC) { (avctx->dct_algo == FF_DCT_AUTO ||
avctx->dct_algo == FF_DCT_ALTIVEC)) {
c->fdct = fdct_altivec; c->fdct = fdct_altivec;
} }
#endif //CONFIG_ENCODERS #endif //CONFIG_ENCODERS
......
...@@ -1101,7 +1101,8 @@ void dsputilenc_init_mmx(DSPContext* c, AVCodecContext *avctx) ...@@ -1101,7 +1101,8 @@ void dsputilenc_init_mmx(DSPContext* c, AVCodecContext *avctx)
if (mm_flags & AV_CPU_FLAG_MMX) { if (mm_flags & AV_CPU_FLAG_MMX) {
const int dct_algo = avctx->dct_algo; const int dct_algo = avctx->dct_algo;
if(dct_algo==FF_DCT_AUTO || dct_algo==FF_DCT_MMX){ if (avctx->bits_per_raw_sample <= 8 &&
(dct_algo==FF_DCT_AUTO || dct_algo==FF_DCT_MMX)) {
if(mm_flags & AV_CPU_FLAG_SSE2){ if(mm_flags & AV_CPU_FLAG_SSE2){
c->fdct = ff_fdct_sse2; c->fdct = ff_fdct_sse2;
}else if(mm_flags & AV_CPU_FLAG_MMX2){ }else if(mm_flags & AV_CPU_FLAG_MMX2){
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment