[FFmpeg-user] Question about -noauto_conversion_filters
Gyan Doshi
ffmpeg at gyani.pro
Mon Sep 14 14:24:33 EEST 2020
On 14-09-2020 03:41 pm, Michael Koch wrote:
> Am 14.09.2020 um 11:26 schrieb Gyan Doshi:
>>
>>
>> On 14-09-2020 02:47 pm, Michael Koch wrote:
>>> ffmpeg -v verbose -f lavfi -i testsrc2=s=svga:d=5,format=yuv422p10le
>>> -vf format=rgb48le,lut3d="VLog_to_V709.cube",format=yuv422p10le
>>> -noauto_conversion_filters -pix_fmt yuv422p10le -c:v h264 -y out.mov
>>
>> Format conversion is carried out by libswscale and auto conversion
>> inserts the scale filter.
>>
>> So,
>>
>> ffmpeg -v verbose -f lavfi -i
>> testsrc2=s=svga:d=5,format=yuv422p10le -vf
>> scale,format=rgb48le,lut3d="VLog_to_V709.cube",scale
>> -noauto_conversion_filters -pix_fmt yuv422p10le -c:v h264 -y out.mov
>>
>> The final format filter is redundant with -pix_fmt, so I removed one
>> of them.
>
> Thank you, with "scale" it works fine. Although it's hard to
> understand what "scale" (without any options) is actually doing.
>
> I have another question. Is this the correct and easiest way to make a
> 10-bit test video?
> -f lavfi -i testsrc2=s=svga:d=5,format=yuv422p10le
>
> In the documentation is written
> "The |testsrc2|source is similar to testsrc, but supports more pixel
> formats instead of just |rgb24|. This allows using it as an input for
> other tests without requiring a format conversion."
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> But in my above command, I think "format=yuv422p10le" is a format
> conversion.
Each filter presents a list of input formats they can work with and a
list of output formats they can directly generate. The framework
inspects adjacent filters and sets a compatible common format for the
outputs and inputs when possible. If not, it sets one of the available
output formats for the preceding filter and one from input formats for
the following filter and inserts a scale filter to convert between
those. This process is format negotiation. The format filter doesn't
carry out the conversion itself - it inserts scale which in turn invokes
libswscale. scale without any args defaults to the source W and H. But
for pixel formats, its output format is constrained by the following
format filter. That triggers a format conversion by libswscale.
Gyan
Gyan
More information about the ffmpeg-user
mailing list