mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-13 10:44:59 +00:00
use fastmemcpy for chrominance if no chrominance filtering is done
Originally committed as revision 3095 to svn://svn.mplayerhq.hu/mplayer/trunk/postproc
This commit is contained in:
parent
cd38e322ef
commit
4e1349d4e1
@ -62,7 +62,6 @@ optimize c versions
|
||||
try to unroll inner for(x=0 ... loop to avoid these damn if(x ... checks
|
||||
smart blur
|
||||
commandline option for the deblock / dering thresholds
|
||||
memcpy chrominance if no chroma filtering is done
|
||||
...
|
||||
*/
|
||||
|
||||
@ -80,6 +79,7 @@ memcpy chrominance if no chroma filtering is done
|
||||
//#define HAVE_3DNOW
|
||||
//#undef HAVE_MMX
|
||||
//#define DEBUG_BRIGHTNESS
|
||||
#include "../libvo/fastmemcpy.h"
|
||||
#include "postprocess.h"
|
||||
|
||||
#define MIN(a,b) ((a) > (b) ? (b) : (a))
|
||||
@ -3037,20 +3037,32 @@ void postprocess(unsigned char * src[], int src_stride,
|
||||
src_stride >>= 1;
|
||||
dst_stride >>= 1;
|
||||
|
||||
if(1)
|
||||
if(ppMode.chromMode)
|
||||
{
|
||||
postProcess(src[1], src_stride, dst[1], dst_stride,
|
||||
horizontal_size, vertical_size, QP_store, QP_stride, 1, &ppMode);
|
||||
postProcess(src[2], src_stride, dst[2], dst_stride,
|
||||
horizontal_size, vertical_size, QP_store, QP_stride, 2, &ppMode);
|
||||
}
|
||||
else if(src_stride == dst_stride)
|
||||
{
|
||||
memcpy(dst[1], src[1], src_stride*vertical_size);
|
||||
memcpy(dst[2], src[2], src_stride*vertical_size);
|
||||
}
|
||||
else
|
||||
{
|
||||
int y;
|
||||
for(y=0; y<vertical_size; y++)
|
||||
{
|
||||
memcpy(&(dst[1][y*dst_stride]), &(src[1][y*src_stride]), horizontal_size);
|
||||
memcpy(&(dst[2][y*dst_stride]), &(src[2][y*src_stride]), horizontal_size);
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
memset(dst[1], 128, dst_stride*vertical_size);
|
||||
memset(dst[2], 128, dst_stride*vertical_size);
|
||||
// memcpy(dst[1], src[1], src_stride*horizontal_size);
|
||||
// memcpy(dst[2], src[2], src_stride*horizontal_size);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void postprocess2(unsigned char * src[], int src_stride,
|
||||
@ -3085,10 +3097,27 @@ void postprocess2(unsigned char * src[], int src_stride,
|
||||
src_stride >>= 1;
|
||||
dst_stride >>= 1;
|
||||
|
||||
postProcess(src[1], src_stride, dst[1], dst_stride,
|
||||
horizontal_size, vertical_size, QP_store, QP_stride, 1, mode);
|
||||
postProcess(src[2], src_stride, dst[2], dst_stride,
|
||||
horizontal_size, vertical_size, QP_store, QP_stride, 2, mode);
|
||||
if(mode->chromMode)
|
||||
{
|
||||
postProcess(src[1], src_stride, dst[1], dst_stride,
|
||||
horizontal_size, vertical_size, QP_store, QP_stride, 1, mode);
|
||||
postProcess(src[2], src_stride, dst[2], dst_stride,
|
||||
horizontal_size, vertical_size, QP_store, QP_stride, 2, mode);
|
||||
}
|
||||
else if(src_stride == dst_stride)
|
||||
{
|
||||
memcpy(dst[1], src[1], src_stride*vertical_size);
|
||||
memcpy(dst[2], src[2], src_stride*vertical_size);
|
||||
}
|
||||
else
|
||||
{
|
||||
int y;
|
||||
for(y=0; y<vertical_size; y++)
|
||||
{
|
||||
memcpy(&(dst[1][y*dst_stride]), &(src[1][y*src_stride]), horizontal_size);
|
||||
memcpy(&(dst[2][y*dst_stride]), &(src[2][y*src_stride]), horizontal_size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -62,7 +62,6 @@ optimize c versions
|
||||
try to unroll inner for(x=0 ... loop to avoid these damn if(x ... checks
|
||||
smart blur
|
||||
commandline option for the deblock / dering thresholds
|
||||
memcpy chrominance if no chroma filtering is done
|
||||
...
|
||||
*/
|
||||
|
||||
@ -80,6 +79,7 @@ memcpy chrominance if no chroma filtering is done
|
||||
//#define HAVE_3DNOW
|
||||
//#undef HAVE_MMX
|
||||
//#define DEBUG_BRIGHTNESS
|
||||
#include "../libvo/fastmemcpy.h"
|
||||
#include "postprocess.h"
|
||||
|
||||
#define MIN(a,b) ((a) > (b) ? (b) : (a))
|
||||
@ -3037,20 +3037,32 @@ void postprocess(unsigned char * src[], int src_stride,
|
||||
src_stride >>= 1;
|
||||
dst_stride >>= 1;
|
||||
|
||||
if(1)
|
||||
if(ppMode.chromMode)
|
||||
{
|
||||
postProcess(src[1], src_stride, dst[1], dst_stride,
|
||||
horizontal_size, vertical_size, QP_store, QP_stride, 1, &ppMode);
|
||||
postProcess(src[2], src_stride, dst[2], dst_stride,
|
||||
horizontal_size, vertical_size, QP_store, QP_stride, 2, &ppMode);
|
||||
}
|
||||
else if(src_stride == dst_stride)
|
||||
{
|
||||
memcpy(dst[1], src[1], src_stride*vertical_size);
|
||||
memcpy(dst[2], src[2], src_stride*vertical_size);
|
||||
}
|
||||
else
|
||||
{
|
||||
int y;
|
||||
for(y=0; y<vertical_size; y++)
|
||||
{
|
||||
memcpy(&(dst[1][y*dst_stride]), &(src[1][y*src_stride]), horizontal_size);
|
||||
memcpy(&(dst[2][y*dst_stride]), &(src[2][y*src_stride]), horizontal_size);
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
memset(dst[1], 128, dst_stride*vertical_size);
|
||||
memset(dst[2], 128, dst_stride*vertical_size);
|
||||
// memcpy(dst[1], src[1], src_stride*horizontal_size);
|
||||
// memcpy(dst[2], src[2], src_stride*horizontal_size);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void postprocess2(unsigned char * src[], int src_stride,
|
||||
@ -3085,10 +3097,27 @@ void postprocess2(unsigned char * src[], int src_stride,
|
||||
src_stride >>= 1;
|
||||
dst_stride >>= 1;
|
||||
|
||||
postProcess(src[1], src_stride, dst[1], dst_stride,
|
||||
horizontal_size, vertical_size, QP_store, QP_stride, 1, mode);
|
||||
postProcess(src[2], src_stride, dst[2], dst_stride,
|
||||
horizontal_size, vertical_size, QP_store, QP_stride, 2, mode);
|
||||
if(mode->chromMode)
|
||||
{
|
||||
postProcess(src[1], src_stride, dst[1], dst_stride,
|
||||
horizontal_size, vertical_size, QP_store, QP_stride, 1, mode);
|
||||
postProcess(src[2], src_stride, dst[2], dst_stride,
|
||||
horizontal_size, vertical_size, QP_store, QP_stride, 2, mode);
|
||||
}
|
||||
else if(src_stride == dst_stride)
|
||||
{
|
||||
memcpy(dst[1], src[1], src_stride*vertical_size);
|
||||
memcpy(dst[2], src[2], src_stride*vertical_size);
|
||||
}
|
||||
else
|
||||
{
|
||||
int y;
|
||||
for(y=0; y<vertical_size; y++)
|
||||
{
|
||||
memcpy(&(dst[1][y*dst_stride]), &(src[1][y*src_stride]), horizontal_size);
|
||||
memcpy(&(dst[2][y*dst_stride]), &(src[2][y*src_stride]), horizontal_size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user