#ifdef HAVE_MMX
//FIXME write lq version with less uv ...
//FIXME reorder / optimize
- if(dstbpp == 4)
+ if(dstbpp == 32)
{
asm volatile(
: "%eax"
);
}
- else if(dstbpp==2)
+ else if(dstbpp==16)
{
asm volatile(
);
}
#else
- if(dstbpp==4 || dstbpp==3)
+ if(dstbpp==32 || dstbpp==24)
{
for(i=0;i<dstw;i++){
// vertical linear interpolation && yuv2rgb in a single step:
dest[0]=clip_table[((Y + yuvtab_3343[U]) >>13)];
dest[1]=clip_table[((Y + yuvtab_0c92[V] + yuvtab_1a1e[U]) >>13)];
dest[2]=clip_table[((Y + yuvtab_40cf[V]) >>13)];
- dest+=dstbpp;
+ dest+=dstbpp>>3;
}
}
- else if(dstbpp==2) //16bit
+ else if(dstbpp==16) //16bit
{
for(i=0;i<dstw;i++){
// vertical linear interpolation && yuv2rgb in a single step:
(clip_table[((Y + yuvtab_3343[U]) >>13)]>>3) |
(clip_table[((Y + yuvtab_0c92[V] + yuvtab_1a1e[U]) >>13)]<<3)&0x07E0 |
(clip_table[((Y + yuvtab_40cf[V]) >>13)]<<8)&0xF800;
- dest+=dstbpp;
+ dest+=2;
}
}
- else if(dstbpp==2) //15bit FIXME how do i figure out if its 15 or 16?
+ else if(dstbpp==15) //15bit FIXME how do i figure out if its 15 or 16?
{
for(i=0;i<dstw;i++){
// vertical linear interpolation && yuv2rgb in a single step:
(clip_table[((Y + yuvtab_3343[U]) >>13)]>>3) |
(clip_table[((Y + yuvtab_0c92[V] + yuvtab_1a1e[U]) >>13)]<<2)&0x03E0 |
(clip_table[((Y + yuvtab_40cf[V]) >>13)]<<7)&0x7C00;
- dest+=dstbpp;
+ dest+=2;
}
}
#endif
#ifdef HAVE_MMX
//FIXME write lq version with less uv ...
//FIXME reorder / optimize
- if(dstbpp == 4)
+ if(dstbpp == 32)
{
asm volatile(
: "%eax"
);
}
- else if(dstbpp==2)
+ else if(dstbpp==16)
{
asm volatile(
);
}
#else
- if(dstbpp==4 || dstbpp==3)
+ if(dstbpp==32 || dstbpp==24)
{
for(i=0;i<dstw;i++){
// vertical linear interpolation && yuv2rgb in a single step:
dest[0]=clip_table[((Y + yuvtab_3343[U]) >>13)];
dest[1]=clip_table[((Y + yuvtab_0c92[V] + yuvtab_1a1e[U]) >>13)];
dest[2]=clip_table[((Y + yuvtab_40cf[V]) >>13)];
- dest+=dstbpp;
+ dest+=dstbpp>>3;
}
}
- else if(dstbpp==2) //16bit
+ else if(dstbpp==16) //16bit
{
for(i=0;i<dstw;i++){
// vertical linear interpolation && yuv2rgb in a single step:
(clip_table[((Y + yuvtab_3343[U]) >>13)]>>3) |
(clip_table[((Y + yuvtab_0c92[V] + yuvtab_1a1e[U]) >>13)]<<3)&0x07E0 |
(clip_table[((Y + yuvtab_40cf[V]) >>13)]<<8)&0xF800;
- dest+=dstbpp;
+ dest+=2;
}
}
- else if(dstbpp==2) //15bit FIXME how do i figure out if its 15 or 16?
+ else if(dstbpp==15) //15bit FIXME how do i figure out if its 15 or 16?
{
for(i=0;i<dstw;i++){
// vertical linear interpolation && yuv2rgb in a single step:
(clip_table[((Y + yuvtab_3343[U]) >>13)]>>3) |
(clip_table[((Y + yuvtab_0c92[V] + yuvtab_1a1e[U]) >>13)]<<2)&0x03E0 |
(clip_table[((Y + yuvtab_40cf[V]) >>13)]<<7)&0x7C00;
- dest+=dstbpp;
+ dest+=2;
}
}
#endif