Commit 1aa8c57b authored by Michael Niedermayer's avatar Michael Niedermayer

1/8 resolution decoding

Originally committed as revision 3511 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 6aeb03d8
...@@ -3382,6 +3382,19 @@ static void ff_jref_idct2_add(uint8_t *dest, int line_size, DCTELEM *block) ...@@ -3382,6 +3382,19 @@ static void ff_jref_idct2_add(uint8_t *dest, int line_size, DCTELEM *block)
add_pixels_clamped2_c(block, dest, line_size); add_pixels_clamped2_c(block, dest, line_size);
} }
static void ff_jref_idct1_put(uint8_t *dest, int line_size, DCTELEM *block)
{
uint8_t *cm = cropTbl + MAX_NEG_CROP;
dest[0] = cm[(block[0] + 4)>>3];
}
static void ff_jref_idct1_add(uint8_t *dest, int line_size, DCTELEM *block)
{
uint8_t *cm = cropTbl + MAX_NEG_CROP;
dest[0] = cm[dest[0] + ((block[0] + 4)>>3)];
}
/* init static data */ /* init static data */
void dsputil_static_init(void) void dsputil_static_init(void)
{ {
...@@ -3430,6 +3443,11 @@ void dsputil_init(DSPContext* c, AVCodecContext *avctx) ...@@ -3430,6 +3443,11 @@ void dsputil_init(DSPContext* c, AVCodecContext *avctx)
c->idct_add= ff_jref_idct2_add; c->idct_add= ff_jref_idct2_add;
c->idct = j_rev_dct2; c->idct = j_rev_dct2;
c->idct_permutation_type= FF_NO_IDCT_PERM; c->idct_permutation_type= FF_NO_IDCT_PERM;
}else if(avctx->lowres==3){
c->idct_put= ff_jref_idct1_put;
c->idct_add= ff_jref_idct1_add;
c->idct = j_rev_dct1;
c->idct_permutation_type= FF_NO_IDCT_PERM;
}else{ }else{
if(avctx->idct_algo==FF_IDCT_INT){ if(avctx->idct_algo==FF_IDCT_INT){
c->idct_put= ff_jref_idct_put; c->idct_put= ff_jref_idct_put;
......
...@@ -44,6 +44,7 @@ void ff_fdct248_islow (DCTELEM *data); ...@@ -44,6 +44,7 @@ void ff_fdct248_islow (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);
void j_rev_dct2 (DCTELEM *data); void j_rev_dct2 (DCTELEM *data);
void j_rev_dct1 (DCTELEM *data);
void ff_fdct_mmx(DCTELEM *block); void ff_fdct_mmx(DCTELEM *block);
void ff_fdct_mmx2(DCTELEM *block); void ff_fdct_mmx2(DCTELEM *block);
......
...@@ -1640,5 +1640,9 @@ void j_rev_dct2(DCTBLOCK data){ ...@@ -1640,5 +1640,9 @@ void j_rev_dct2(DCTBLOCK data){
data[1+1*DCTSTRIDE]= (d01 - d11)>>3; data[1+1*DCTSTRIDE]= (d01 - d11)>>3;
} }
void j_rev_dct1(DCTBLOCK data){
data[0] = (data[0] + 4)>>3;
}
#undef FIX #undef FIX
#undef CONST_BITS #undef CONST_BITS
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