From 86b444cb977b0de4b6807f9b9921927f7dae0236 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 2 Sep 2012 15:30:15 +0200 Subject: [PATCH] Use bilinear for downscales, point for upscales. --- Makefile | 4 ++-- Makefile.win | 2 +- gfx/scaler/filter.h | 2 +- gfx/scaler/scaler.h | 2 +- qb/config.libs.sh | 5 ++--- record/ffemu.c | 4 +++- 6 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index a751dc6fa6..ea18344a2e 100644 --- a/Makefile +++ b/Makefile @@ -200,8 +200,8 @@ endif ifeq ($(HAVE_FFMPEG), 1) OBJ += record/ffemu.o - LIBS += $(AVCODEC_LIBS) $(AVFORMAT_LIBS) $(AVUTIL_LIBS) $(SWSCALE_LIBS) - DEFINES += $(AVCODEC_CFLAGS) $(AVFORMAT_CFLAGS) $(AVUTIL_CFLAGS) $(SWSCALE_CFLAGS) + LIBS += $(AVCODEC_LIBS) $(AVFORMAT_LIBS) $(AVUTIL_LIBS) + DEFINES += $(AVCODEC_CFLAGS) $(AVFORMAT_CFLAGS) $(AVUTIL_CFLAGS) endif ifeq ($(HAVE_DYNAMIC), 1) diff --git a/Makefile.win b/Makefile.win index bebb04744c..790bfeb663 100644 --- a/Makefile.win +++ b/Makefile.win @@ -160,7 +160,7 @@ ifeq ($(HAVE_DINPUT), 1) endif ifeq ($(HAVE_FFMPEG), 1) - LIBS += -lavformat -lavcodec -lavutil -lswscale -lws2_32 -lz + LIBS += -lavformat -lavcodec -lavutil -lws2_32 -lz DEFINES += -DHAVE_FFMPEG -Iffmpeg DEFINES += -DHAVE_FFMPEG_ALLOC_CONTEXT3 DEFINES += -DHAVE_FFMPEG_AVCODEC_OPEN2 diff --git a/gfx/scaler/filter.h b/gfx/scaler/filter.h index 2b0b1b3949..250d62c3ec 100644 --- a/gfx/scaler/filter.h +++ b/gfx/scaler/filter.h @@ -17,7 +17,7 @@ #ifndef FILTER_H__ #define FILTER_H__ -#include +#include "../../boolean.h" #include "scaler.h" bool scaler_gen_filter(struct scaler_ctx *ctx); diff --git a/gfx/scaler/scaler.h b/gfx/scaler/scaler.h index 2a23240629..142349a8d6 100644 --- a/gfx/scaler/scaler.h +++ b/gfx/scaler/scaler.h @@ -17,8 +17,8 @@ #define SCALER_H__ #include -#include #include +#include "../../boolean.h" #define FILTER_UNITY (1 << 14) diff --git a/qb/config.libs.sh b/qb/config.libs.sh index d9710d03b7..982e8a8b30 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -107,8 +107,7 @@ if [ "$HAVE_THREADS" != 'no' ]; then check_pkgconf AVCODEC libavcodec check_pkgconf AVFORMAT libavformat check_pkgconf AVUTIL libavutil - check_pkgconf SWSCALE libswscale - ( [ "$HAVE_FFMPEG" = 'auto' ] && ( [ "$HAVE_AVCODEC" = 'no' ] || [ "$HAVE_AVFORMAT" = 'no' ] || [ "$HAVE_AVUTIL" = 'no' ] || [ "$HAVE_SWSCALE" = 'no' ] ) && HAVE_FFMPEG='no' ) || HAVE_FFMPEG='yes' + ( [ "$HAVE_FFMPEG" = 'auto' ] && ( [ "$HAVE_AVCODEC" = 'no' ] || [ "$HAVE_AVFORMAT" = 'no' ] || [ "$HAVE_AVUTIL" = 'no' ] ) && HAVE_FFMPEG='no' ) || HAVE_FFMPEG='yes' fi if [ "$HAVE_FFMPEG" = 'yes' ]; then @@ -144,6 +143,6 @@ check_pkgconf PYTHON python3 add_define_make OS "$OS" # Creates config.mk and config.h. -VARS="ALSA OSS OSS_BSD OSS_LIB AL RSOUND ROAR JACK COREAUDIO PULSE SDL OPENGL DYLIB GETOPT_LONG THREADS CG XML SDL_IMAGE LIBPNG DYNAMIC FFMPEG AVCODEC AVFORMAT AVUTIL SWSCALE CONFIGFILE FREETYPE XVIDEO X11 XEXT NETPLAY NETWORK_CMD STDIN_CMD COMMAND SOCKET_LEGACY FBO STRL PYTHON FFMPEG_ALLOC_CONTEXT3 FFMPEG_AVCODEC_OPEN2 FFMPEG_AVIO_OPEN FFMPEG_AVFORMAT_WRITE_HEADER FFMPEG_AVFORMAT_NEW_STREAM FFMPEG_AVCODEC_ENCODE_AUDIO2 FFMPEG_AVCODEC_ENCODE_VIDEO2 SINC FIXED_POINT BSV_MOVIE RPI" +VARS="ALSA OSS OSS_BSD OSS_LIB AL RSOUND ROAR JACK COREAUDIO PULSE SDL OPENGL DYLIB GETOPT_LONG THREADS CG XML SDL_IMAGE LIBPNG DYNAMIC FFMPEG AVCODEC AVFORMAT AVUTIL CONFIGFILE FREETYPE XVIDEO X11 XEXT NETPLAY NETWORK_CMD STDIN_CMD COMMAND SOCKET_LEGACY FBO STRL PYTHON FFMPEG_ALLOC_CONTEXT3 FFMPEG_AVCODEC_OPEN2 FFMPEG_AVIO_OPEN FFMPEG_AVFORMAT_WRITE_HEADER FFMPEG_AVFORMAT_NEW_STREAM FFMPEG_AVCODEC_ENCODE_AUDIO2 FFMPEG_AVCODEC_ENCODE_VIDEO2 SINC FIXED_POINT BSV_MOVIE RPI" create_config_make config.mk $VARS create_config_header config.h $VARS diff --git a/record/ffemu.c b/record/ffemu.c index 9896970709..db572a4026 100644 --- a/record/ffemu.c +++ b/record/ffemu.c @@ -603,7 +603,9 @@ static bool ffemu_push_video_thread(ffemu_t *handle, const struct ffemu_video_da handle->video.scaler.in_height = data->height; handle->video.scaler.in_stride = data->pitch; - handle->video.scaler.scaler_type = SCALER_TYPE_POINT; + // Attempt to preserve more information if we scale down. + bool shrunk = handle->params.out_width < data->width || handle->params.out_height < data->height; + handle->video.scaler.scaler_type = shrunk ? SCALER_TYPE_BILINEAR : SCALER_TYPE_POINT; handle->video.scaler.out_width = handle->params.out_width; handle->video.scaler.out_height = handle->params.out_height;