[FFmpeg-user] remap filter, unmapped pixels
Michael Koch
astroelectronic at t-online.de
Thu Feb 20 14:04:39 EET 2020
Am 20.02.2020 um 12:49 schrieb Paul B Mahol:
> On 2/20/20, Michael Koch <astroelectronic at t-online.de> wrote:
>> Am 20.02.2020 um 11:07 schrieb Paul B Mahol:
>>> On 2/20/20, Michael Koch <astroelectronic at t-online.de> wrote:
>>>> I'd like to understand how the new "fill" option in the remap filter
>>>> works.
>>>> What is an "unmapped pixel"? How is it possible that pixels are
>>>> unmapped, if the xmap and ymap files have the same size as the output
>>>> image? Is a pixel "unmapped" if it has invalid coordinates (negative or
>>>> too big) in the xmap or ymap files?
>>> Previously all unmapped pixels were set to black for rgba or dark
>>> green for y420p.
>>> It is very obvious to understand even for every little kid in the block.
>> Finally I got it working. A pixel can be declared as "unmapped" by
>> setting the values to 65535 in the xmap and ymap files. However using a
>> negative value (for example -1) doesn't work. In this case the pixel is
>> mapped to the top left pixel of the input image.
>> This behaviour might be obvious for little kids, but not for me. Should
>> be added to documentation.
> Nope. Documentation does not need trivial information.
> Obviously by having even limited programming experience one would
> found out that remaps are unsigned short, thus can not be negative.
> You never showed your map files. so I assume everything is wrong on
> your end.
This is an example that produces a crash abort in the third command
line. All pixels are mapped to themselves, except pixel (1,1) which is
mapped to (65535,65535)
c:\ffmpeg\ffmpeg -f lavfi -i nullsrc=size=20x20 -vf
format=pix_fmts=gray16le,geq='if(bitand(eq(X,1),eq(Y,1)),65535,X)'
-frames 1 -y xmap.pgm
c:\ffmpeg\ffmpeg -f lavfi -i nullsrc=size=20x20 -vf
format=pix_fmts=gray16le,geq='if(bitand(eq(X,1),eq(Y,1)),65535,Y)'
-frames 1 -y ymap.pgm
c:\ffmpeg\ffmpeg -f lavfi -i color=blue:size=20x20 -i xmap.pgm -i
ymap.pgm -lavfi "format=pix_fmts=rgb24,remap=fill=red" -frames 1 -y out.png
Console output for third command line:
F:\Wormhole_2020>c:\ffmpeg\ffmpeg -f lavfi -i color=blue:size=20x20 -i
xmap.pgm
-i ymap.pgm -lavfi "format=pix_fmts=rgb24,remap=fill=red" -frames 1 -y
out.png
ffmpeg version git-2020-02-18-ebee808 Copyright (c) 2000-2020 the FFmpeg
develop
ers
built with gcc 9.2.1 (GCC) 20200122
configuration: --enable-gpl --enable-version3 --enable-sdl2
--enable-fontconfi
g --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d
--enable-libb
luray --enable-libfreetype --enable-libmp3lame
--enable-libopencore-amrnb --enab
le-libopencore-amrwb --enable-libopenjpeg --enable-libopus
--enable-libshine --e
nable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame
--enable
-libvpx --enable-libwavpack --enable-libwebp --enable-libx264
--enable-libx265 -
-enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib
--enable-gmp --enab
le-libvidstab --enable-libvorbis --enable-libvo-amrwbenc
--enable-libmysofa --en
able-libspeex --enable-libxvid --enable-libaom --enable-libmfx
--enable-ffnvcode
c --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec
--enable-dxva2 -
-enable-avisynth --enable-libopenmpt --enable-amf
libavutil 56. 41.100 / 56. 41.100
libavcodec 58. 70.100 / 58. 70.100
libavformat 58. 38.101 / 58. 38.101
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 76.100 / 7. 76.100
libswscale 5. 6.100 / 5. 6.100
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
Input #0, lavfi, from 'color=blue:size=20x20':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 20x20
[SAR 1:1 DA
R 1:1], 25 tbr, 25 tbn, 25 tbc
Input #1, pgm_pipe, from 'xmap.pgm':
Duration: N/A, bitrate: N/A
Stream #1:0: Video: pgm, gray16le, 20x20, 25 tbr, 25 tbn, 25 tbc
Input #2, pgm_pipe, from 'ymap.pgm':
Duration: N/A, bitrate: N/A
Stream #2:0: Video: pgm, gray16le, 20x20, 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 (rawvideo) -> format
Stream #1:0 (pgm) -> remap:xmap
Stream #2:0 (pgm) -> remap:ymap
remap -> Stream #0:0 (png)
More information about the ffmpeg-user
mailing list