mirror of https://git.ffmpeg.org/ffmpeg.git
* yet a bit more extended
* fixed busy loop test bug on mmx-only machine Originally committed as revision 613 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
e5f3d22d35
commit
6fea8454ac
|
@ -19,7 +19,7 @@ test mpeg4 mpeg: vsynth1/0.pgm asynth1.sw
|
|||
libavtest: vsynth1/0.pgm asynth1.sw
|
||||
@$(SRC_PATH)/tests/regression.sh $@ $(LIBAV_REFFILE)
|
||||
|
||||
# video generation
|
||||
# video generation
|
||||
|
||||
vsynth1/0.pgm: videogen
|
||||
@mkdir -p vsynth1
|
||||
|
@ -37,12 +37,19 @@ audiogen: audiogen.c
|
|||
$(CC) $(LDFLAGS) $(CFLAGS) -o $@ $<
|
||||
|
||||
DSPDEPS = $(SRC_PATH)/libavcodec/i386/dsputil_mmx.c \
|
||||
$(SRC_PATH)/libavcodec/i386/dsputil_mmx_avg.h
|
||||
$(SRC_PATH)/libavcodec/i386/dsputil_mmx_avg.h \
|
||||
$(SRC_PATH)/libavcodec/i386/fdct_mmx.c \
|
||||
$(SRC_PATH)/libavcodec/i386/idct_mmx.c \
|
||||
$(SRC_PATH)/libavcodec/i386/motion_est_mmx.c \
|
||||
$(SRC_PATH)/libavcodec/i386/simple_idct_mmx.c \
|
||||
$(SRC_PATH)/libavcodec/dsputil.c \
|
||||
$(SRC_PATH)/libavcodec/dsputil.h \
|
||||
$(SRC_PATH)/libavcodec/simple_idct.c
|
||||
|
||||
dsptestpic: dsptest.c $(DSPDEPS)
|
||||
$(CC) -fPIC -DPIC -O4 -fomit-frame-pointer -DHAVE_AV_CONFIG_H -I.. -I$(SRC_PATH)/libavcodec/i386 -I$(SRC_PATH)/libavcodec/ -o $@ $<
|
||||
$(CC) -fPIC -DPIC -O4 -fomit-frame-pointer -DHAVE_AV_CONFIG_H -I.. -I$(SRC_PATH)/libavcodec/i386 -I$(SRC_PATH)/libavcodec/ -o $@ $< -lm
|
||||
dsptest: dsptest.c $(DSPDEPS)
|
||||
$(CC) -O4 -fomit-frame-pointer -DHAVE_AV_CONFIG_H -I.. -I$(SRC_PATH)/libavcodec/i386 -I$(SRC_PATH)/libavcodec/ -o $@ $<
|
||||
$(CC) -O4 -fomit-frame-pointer -DHAVE_AV_CONFIG_H -I.. -I$(SRC_PATH)/libavcodec/i386 -I$(SRC_PATH)/libavcodec/ -o $@ $< -lm
|
||||
|
||||
clean:
|
||||
rm -rf vsynth1
|
||||
|
|
|
@ -17,10 +17,22 @@
|
|||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#define TESTCPU_MAIN
|
||||
#include "avcodec.h"
|
||||
#include "dsputil.h"
|
||||
//#include "../libavcodec/dsputil.c"
|
||||
#include "mpegvideo.h"
|
||||
#include "mpeg12data.h"
|
||||
#include "mpeg4data.h"
|
||||
#include "../libavcodec/i386/cputest.c"
|
||||
#include "../libavcodec/i386/dsputil_mmx.c"
|
||||
|
||||
#include "../libavcodec/i386/fdct_mmx.c"
|
||||
#include "../libavcodec/i386/idct_mmx.c"
|
||||
#include "../libavcodec/i386/motion_est_mmx.c"
|
||||
#include "../libavcodec/i386/simple_idct_mmx.c"
|
||||
#include "../libavcodec/dsputil.c"
|
||||
#include "../libavcodec/simple_idct.c"
|
||||
#include "../libavcodec/jfdctfst.c"
|
||||
|
||||
#undef TESTCPU_MAIN
|
||||
|
||||
#define PAD 0x10000
|
||||
|
@ -62,6 +74,8 @@ static const struct pix_func {
|
|||
} pix_func[] = {
|
||||
|
||||
PIX_FUNC_MMX(put_pixels),
|
||||
//PIX_FUNC_MMX(get_pixels),
|
||||
//PIX_FUNC_MMX(put_pixels_clamped),
|
||||
#if 1
|
||||
PIX_FUNC(put_pixels_x2),
|
||||
PIX_FUNC(put_pixels_y2),
|
||||
|
@ -75,6 +89,11 @@ static const struct pix_func {
|
|||
PIX_FUNC(avg_pixels_x2),
|
||||
PIX_FUNC(avg_pixels_y2),
|
||||
PIX_FUNC(avg_pixels_xy2),
|
||||
|
||||
PIX_FUNC_MMX(avg_no_rnd_pixels),
|
||||
PIX_FUNC_MMX(avg_no_rnd_pixels_x2),
|
||||
PIX_FUNC_MMX(avg_no_rnd_pixels_y2),
|
||||
PIX_FUNC_MMX(avg_no_rnd_pixels_xy2),
|
||||
#endif
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
@ -104,25 +123,25 @@ static test_speed(int step)
|
|||
op_pixels_func func = pix->func;
|
||||
char* im = bu;
|
||||
|
||||
if (!(pix->mm_flags & mm_flags))
|
||||
continue;
|
||||
|
||||
printf("%30s... ", pix->name);
|
||||
fflush(stdout);
|
||||
ts = rdtsc();
|
||||
for(i=0; i<100000; i++){
|
||||
func(im, im + 1000, linesize, 16);
|
||||
im += step;
|
||||
if (im > bu + 20000)
|
||||
im = bu;
|
||||
if (pix->mm_flags & mm_flags)
|
||||
{
|
||||
printf("%30s... ", pix->name);
|
||||
fflush(stdout);
|
||||
ts = rdtsc();
|
||||
for(i=0; i<100000; i++){
|
||||
func(im, im + 1000, linesize, 16);
|
||||
im += step;
|
||||
if (im > bu + 20000)
|
||||
im = bu;
|
||||
}
|
||||
te = rdtsc();
|
||||
emms();
|
||||
printf("% 9d\n", (int)(te - ts));
|
||||
sum += (te - ts) / 100000;
|
||||
if (pix->mm_flags & PAD)
|
||||
puts("");
|
||||
}
|
||||
te = rdtsc();
|
||||
emms();
|
||||
printf("% 9d\n", (int)(te - ts));
|
||||
sum += (te - ts) / 100000;
|
||||
if (pix->mm_flags & PAD)
|
||||
puts("");
|
||||
pix++;
|
||||
pix++;
|
||||
}
|
||||
|
||||
printf("Total sum: %d\n", sum);
|
||||
|
|
Loading…
Reference in New Issue