From 88bf227b9847bb7a4d81b8c1a32ab8158b829b5a Mon Sep 17 00:00:00 2001 From: Ilari Liusvaara Date: Sat, 16 Oct 2010 03:40:50 +0300 Subject: [PATCH] Add resizer letterbox2 Like 'letterbox', but requires topmost/leftmost row/column of actual image to be even, in order to avoid interactions with chroma subsampling. --- streamtools/Makefile | 2 +- streamtools/resizer-letterbox2.cpp | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 streamtools/resizer-letterbox2.cpp diff --git a/streamtools/Makefile b/streamtools/Makefile index cffc775..d9599a2 100644 --- a/streamtools/Makefile +++ b/streamtools/Makefile @@ -3,7 +3,7 @@ all: screenshot.exe dumppackets.exe picturestodump.exe audiotodump.exe demuxdum COMPILER=g++ CXXFLAGS2=-g -O2 -Wall CXXFLAGS=$(CXXFLAGS2) -RESIZE_DRIVERS=resize.o resizer-lanczos.o resizer-nearest.o resizer-test.o resize-linear-separable.o resizer-bilinear.o resizer-xdrop9.o resizer-letterbox.o +RESIZE_DRIVERS=resize.o resizer-lanczos.o resizer-nearest.o resizer-test.o resize-linear-separable.o resizer-bilinear.o resizer-xdrop9.o resizer-letterbox.o resizer-letterbox2.o I420_DRIVER_FILES=output-drv-rawi420.o rgbtorgb.o X264_DRIVER_FILES=output-drv-x264.o rgbtorgb.o OUTPUT_DRIVERS=$(RESIZE_DRIVERS) dedup.o output-drv.o output-drv-rawrgbx.o output-drv-timecodev2.o output-drv-rawaudio.o output-drv-wav.o output-drv-faac.o $(I420_DRIVER_FILES) $(X264_DRIVER_FILES) output-drv-oggenc.o diff --git a/streamtools/resizer-letterbox2.cpp b/streamtools/resizer-letterbox2.cpp new file mode 100644 index 0000000..e0ff5a0 --- /dev/null +++ b/streamtools/resizer-letterbox2.cpp @@ -0,0 +1,23 @@ +#include "resize-linear-separable.hpp" +#include +#include +#include + +namespace +{ + void compute_coefficients_letterbox(float* coeffs, position_t num, position_t denum, position_t width, + position_t twidth, unsigned& count, unsigned& base) + { + position_t header = (twidth - width) / 4 * 2; + position_t relpos = num / width - header; + *coeffs = 0; + count = 1; + base = 0; + if(relpos >= 0 && relpos < width) { + *coeffs = 1; + base = (unsigned)relpos; + } + } + + simple_resizer_linear_separable r_letterbox("letterbox2", compute_coefficients_letterbox); +} -- 2.11.4.GIT