minterpolate problem

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
50 messages Options
123
Reply | Threaded
Open this post in threaded view
|

minterpolate problem

Mark Filipak (ffmpeg)
Note error at the end of the report.
I suspect the problem is that 'fps=60000/1001:mi_mode=mci=mc_mode=obmc:scd=fdiff:scd_threshold=10'
needs some sort of internal delimiters, but I can't figure out what they would be.

ffmpeg -i SOURCE -map 0 -filter_complex "split[1][2], \
[1]telecine=pattern=55, select=not(eq(mod(n\,5)\,2))[3], \
[2]minterpolate=fps=60000/1001:mi_mode=mci=mc_mode=obmc:scd=fdiff:scd_threshold=10, \
select=eq(mod(n\,5)\,2)[4], \
[3][4]interleave" \
-codec:v libx265 -x265-params "crf=16:qcomp=0.60" -codec:a copy -codec:s copy TARGET

ffmpeg started on 2021-01-26 at 19:49:34
Report written to "ffmpeg-20210126-194934.log"
Log level: 32
Command line:
ffmpeg -i "source=24FPS.mkv" -map 0 -filter_complex "split[1][2], [1]telecine=pattern=55,
select=not(eq(mod(n\\,5)\\,2))[3],
[2]minterpolate=fps=60000/1001:mi_mode=mci=mc_mode=obmc:scd=fdiff:scd_threshold=10,
select=eq(mod(n\\,5)\\,2)[4], [3][4]interleave" -codec:v libx265 -x265-params "crf=16:qcomp=0.60"
-codec:a copy -codec:s copy "target=60FPS
{telecine55[A.a][A.a][B.b][B.b]}{minterpolate=fps=60[A.b]}interleave = [A.a][A.a][A~b][B.b][B.b].mkv"
ffmpeg version N-100679-g24dc6d386c Copyright (c) 2000-2021 the FFmpeg developers
   built with gcc 9.3-win32 (GCC) 20200320
   configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config
--cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3
--disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-zlib --enable-libxml2
--enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig
--enable-opencl --enable-libvmaf --enable-vulkan --enable-libvorbis --enable-amf --enable-libaom
--enable-avisynth --enable-libdav1d --enable-libdavs2 --enable-ffnvcodec --enable-cuda-llvm
--enable-libglslang --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus
--enable-libtheora --enable-libvpx --enable-libwebp --enable-libmfx --enable-libopencore-amrnb
--enable-libopencore-amrwb --enable-libopenjpeg --enable-librav1e --enable-librubberband
--enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1
--enable-libtwolame --enable-libuavs3d --enable-libvidstab --enable-libx264 --enable-libx26
libavutil      56. 63.101 / 56. 63.101
   libavcodec     58.117.101 / 58.117.101
   libavformat    58. 65.101 / 58. 65.101
   libavdevice    58. 11.103 / 58. 11.103
   libavfilter     7. 96.100 /  7. 96.100
   libswscale      5.  8.100 /  5.  8.100
   libswresample   3.  8.100 /  3.  8.100
   libpostproc    55.  8.100 / 55.  8.100
[matroska,webm @ 000001ab9c296600] Could not find codec parameters for stream 3 (Subtitle:
hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
Input #0, matroska,webm, from 'source=24FPS.mkv':
   Metadata:
     encoder         : libebml v1.4.0 + libmatroska v1.6.2
     creation_time   : 2021-01-23T03:12:17.000000Z
   Duration: 00:00:20.11, start: 0.000000, bitrate: 26228 kb/s
     Stream #0:0: Video: h264 (High), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9],
23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
     Metadata:
       BPS-eng         : 24046529
       DURATION-eng    : 00:00:20.020000000
       NUMBER_OF_FRAMES-eng: 480
       NUMBER_OF_BYTES-eng: 60176441
       _STATISTICS_WRITING_APP-eng: mkvmerge v51.0.0 ('I Wish') 64-bit
       _STATISTICS_WRITING_DATE_UTC-eng: 2021-01-23 03:12:17
       _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
     Stream #0:1(eng): Audio: dts (DTS-HD MA), 48000 Hz, stereo, s32p (24 bit) (default)
     Metadata:
       BPS-eng         : 2085565
       DURATION-eng    : 00:00:20.096000000
       NUMBER_OF_FRAMES-eng: 1884
       NUMBER_OF_BYTES-eng: 5238940
       _STATISTICS_WRITING_APP-eng: mkvmerge v51.0.0 ('I Wish') 64-bit
       _STATISTICS_WRITING_DATE_UTC-eng: 2021-01-23 03:12:17
       _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
     Stream #0:2(eng): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
     Metadata:
       BPS-eng         : 192000
       DURATION-eng    : 00:00:20.096000000
       NUMBER_OF_FRAMES-eng: 628
       NUMBER_OF_BYTES-eng: 482304
       _STATISTICS_WRITING_APP-eng: mkvmerge v51.0.0 ('I Wish') 64-bit
       _STATISTICS_WRITING_DATE_UTC-eng: 2021-01-23 03:12:17
       _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
     Stream #0:3(eng): Subtitle: hdmv_pgs_subtitle
     Metadata:
       BPS-eng         : 0
       DURATION-eng    : 00:00:00.000000000
       NUMBER_OF_FRAMES-eng: 0
       NUMBER_OF_BYTES-eng: 0
       _STATISTICS_WRITING_APP-eng: mkvmerge v51.0.0 ('I Wish') 64-bit
       _STATISTICS_WRITING_DATE_UTC-eng: 2021-01-23 03:12:17
       _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
[Parsed_telecine_1 @ 000001ab9c726dc0] Telecine pattern 55 yields up to 3 frames per frame, pts
advance factor: 4/10
[minterpolate @ 000001ab9c82e040] [Eval @ 0000004cbfbfe490] Invalid chars '=mc_mode=obmc' at the end
of expression 'mci=mc_mode=obmc'
[minterpolate @ 000001ab9c82e040] Unable to parse option value "mci=mc_mode=obmc"
[minterpolate @ 000001ab9c82e040] [Eval @ 0000004cbfbfe4b0] Invalid chars '=mc_mode=obmc' at the end
of expression 'mci=mc_mode=obmc'
[minterpolate @ 000001ab9c82e040] Unable to parse option value "mci=mc_mode=obmc"
[minterpolate @ 000001ab9c82e040] Error setting option mi_mode to value mci=mc_mode=obmc.
[Parsed_minterpolate_3 @ 000001ab9c893d40] Error applying options to the filter.
[AVFilterGraph @ 000001ab9d11d4c0] Error initializing filter 'minterpolate' with args
'fps=60000/1001:mi_mode=mci=mc_mode=obmc:scd=fdiff:scd_threshold=10'
Error initializing complex filters.
Invalid argument
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: minterpolate problem

Jim DeLaHunt-2
On 2021-01-26 16:59, Mark Filipak (ffmpeg) wrote:

> Note error at the end of the report.
> I suspect the problem is that
> 'fps=60000/1001:mi_mode=mci=mc_mode=obmc:scd=fdiff:scd_threshold=10'
> needs some sort of internal delimiters, but I can't figure out what
> they would be.
>
> ffmpeg -i SOURCE -map 0 -filter_complex "split[1][2], \
> [1]telecine=pattern=55, select=not(eq(mod(n\,5)\,2))[3], \
> [2]minterpolate=fps=60000/1001:mi_mode=mci=mc_mode=obmc:scd=fdiff:scd_threshold=10,
> \
> select=eq(mod(n\,5)\,2)[4], \
> [3][4]interleave" \
> -codec:v libx265 -x265-params "crf=16:qcomp=0.60" -codec:a copy
> -codec:s copy TARGET
> …[snip]…
> [minterpolate @ 000001ab9c82e040] [Eval @ 0000004cbfbfe490] Invalid
> chars '=mc_mode=obmc' at the end of expression 'mci=mc_mode=obmc'
> [minterpolate @ 000001ab9c82e040] Unable to parse option value
> "mci=mc_mode=obmc"
> [minterpolate @ 000001ab9c82e040] [Eval @ 0000004cbfbfe4b0] Invalid
> chars '=mc_mode=obmc' at the end of expression 'mci=mc_mode=obmc'
> [minterpolate @ 000001ab9c82e040] Unable to parse option value
> "mci=mc_mode=obmc"
> [minterpolate @ 000001ab9c82e040] Error setting option mi_mode to
> value mci=mc_mode=obmc.
> [Parsed_minterpolate_3 @ 000001ab9c893d40] Error applying options to
> the filter.
> [AVFilterGraph @ 000001ab9d11d4c0] Error initializing filter
> 'minterpolate' with args
> 'fps=60000/1001:mi_mode=mci=mc_mode=obmc:scd=fdiff:scd_threshold=10'
> Error initializing complex filters.
> Invalid argument
>

Perhaps the character between 'mci' and 'mc_mode' should be ':' instead
of '-'?


_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: minterpolate problem

Jim DeLaHunt-2
In reply to this post by Mark Filipak (ffmpeg)
On 2021-01-26 16:59, Mark Filipak (ffmpeg) wrote:

> Note error at the end of the report.
> I suspect the problem is that
> 'fps=60000/1001:mi_mode=mci=mc_mode=obmc:scd=fdiff:scd_threshold=10'
> needs some sort of internal delimiters, but I can't figure out what
> they would be.
>
> ffmpeg -i SOURCE -map 0 -filter_complex "split[1][2], \
> [1]telecine=pattern=55, select=not(eq(mod(n\,5)\,2))[3], \
> [2]minterpolate=fps=60000/1001:mi_mode=mci=mc_mode=obmc:scd=fdiff:scd_threshold=10,
> \
> select=eq(mod(n\,5)\,2)[4], \
> [3][4]interleave" \
> -codec:v libx265 -x265-params "crf=16:qcomp=0.60" -codec:a copy
> -codec:s copy TARGET
> …[snip]…
> [minterpolate @ 000001ab9c82e040] [Eval @ 0000004cbfbfe490] Invalid
> chars '=mc_mode=obmc' at the end of expression 'mci=mc_mode=obmc'
> [minterpolate @ 000001ab9c82e040] Unable to parse option value
> "mci=mc_mode=obmc"
> [minterpolate @ 000001ab9c82e040] [Eval @ 0000004cbfbfe4b0] Invalid
> chars '=mc_mode=obmc' at the end of expression 'mci=mc_mode=obmc'
> [minterpolate @ 000001ab9c82e040] Unable to parse option value
> "mci=mc_mode=obmc"
> [minterpolate @ 000001ab9c82e040] Error setting option mi_mode to
> value mci=mc_mode=obmc.
> [Parsed_minterpolate_3 @ 000001ab9c893d40] Error applying options to
> the filter.
> [AVFilterGraph @ 000001ab9d11d4c0] Error initializing filter
> 'minterpolate' with args
> 'fps=60000/1001:mi_mode=mci=mc_mode=obmc:scd=fdiff:scd_threshold=10'
> Error initializing complex filters.
> Invalid argument
>

[correcting a typo, it looked fine before but my spectacles are imperfect.]

Perhaps the character between 'mci' and 'mc_mode' should be ':' instead
of '='?




_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: minterpolate problem

Mark Filipak (ffmpeg)
In reply to this post by Jim DeLaHunt-2
On 01/26/2021 08:31 PM, Jim DeLaHunt wrote:

> On 2021-01-26 16:59, Mark Filipak (ffmpeg) wrote:
>
>> Note error at the end of the report.
>> I suspect the problem is that 'fps=60000/1001:mi_mode=mci=mc_mode=obmc:scd=fdiff:scd_threshold=10'
>> needs some sort of internal delimiters, but I can't figure out what they would be.
>>
>> ffmpeg -i SOURCE -map 0 -filter_complex "split[1][2], \
>> [1]telecine=pattern=55, select=not(eq(mod(n\,5)\,2))[3], \
>> [2]minterpolate=fps=60000/1001:mi_mode=mci=mc_mode=obmc:scd=fdiff:scd_threshold=10, \
>> select=eq(mod(n\,5)\,2)[4], \
>> [3][4]interleave" \
>> -codec:v libx265 -x265-params "crf=16:qcomp=0.60" -codec:a copy -codec:s copy TARGET
>> …[snip]…
>> [minterpolate @ 000001ab9c82e040] [Eval @ 0000004cbfbfe490] Invalid chars '=mc_mode=obmc' at the
>> end of expression 'mci=mc_mode=obmc'
>> [minterpolate @ 000001ab9c82e040] Unable to parse option value "mci=mc_mode=obmc"
>> [minterpolate @ 000001ab9c82e040] [Eval @ 0000004cbfbfe4b0] Invalid chars '=mc_mode=obmc' at the
>> end of expression 'mci=mc_mode=obmc'
>> [minterpolate @ 000001ab9c82e040] Unable to parse option value "mci=mc_mode=obmc"
>> [minterpolate @ 000001ab9c82e040] Error setting option mi_mode to value mci=mc_mode=obmc.
>> [Parsed_minterpolate_3 @ 000001ab9c893d40] Error applying options to the filter.
>> [AVFilterGraph @ 000001ab9d11d4c0] Error initializing filter 'minterpolate' with args
>> 'fps=60000/1001:mi_mode=mci=mc_mode=obmc:scd=fdiff:scd_threshold=10'
>> Error initializing complex filters.
>> Invalid argument
>>
>
> Perhaps the character between 'mci' and 'mc_mode' should be ':' instead of '-'?

Hi Jim,

I tried that and found no Joy. Via indentation, the documentation
(https://ffmpeg.org/ffmpeg-all.html#minterpolate) strongly implies that ‘mc_mode’ & ‘me_mode’ & 'me'
are all arguments to 'mci', but that's obviously wrong. <sigh>

Based on a different error message during my stumbling, I also tried
'fps=60000/1001:mi_mode=mci(mc_mode=obmc):scd=fdiff:scd_threshold=10' but that didn't work either.

I'm getting so tired of all the trial-&-error when trying to get commands to work. Undoubtedly
whomever wrote the documentation knew what he/she meant, but it's a mystery to me.

--
Someone's sneaking in and turning up the range so that my food burns.
I'm sure of it.
And the older I get, the more sure of it I become.
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: minterpolate problem

Mark Filipak (ffmpeg)
In reply to this post by Jim DeLaHunt-2
On 01/26/2021 08:39 PM, Jim DeLaHunt wrote:

> On 2021-01-26 16:59, Mark Filipak (ffmpeg) wrote:
>
>> Note error at the end of the report.
>> I suspect the problem is that 'fps=60000/1001:mi_mode=mci=mc_mode=obmc:scd=fdiff:scd_threshold=10'
>> needs some sort of internal delimiters, but I can't figure out what they would be.
>>
>> ffmpeg -i SOURCE -map 0 -filter_complex "split[1][2], \
>> [1]telecine=pattern=55, select=not(eq(mod(n\,5)\,2))[3], \
>> [2]minterpolate=fps=60000/1001:mi_mode=mci=mc_mode=obmc:scd=fdiff:scd_threshold=10, \
>> select=eq(mod(n\,5)\,2)[4], \
>> [3][4]interleave" \
>> -codec:v libx265 -x265-params "crf=16:qcomp=0.60" -codec:a copy -codec:s copy TARGET
>> …[snip]…
>> [minterpolate @ 000001ab9c82e040] [Eval @ 0000004cbfbfe490] Invalid chars '=mc_mode=obmc' at the
>> end of expression 'mci=mc_mode=obmc'
>> [minterpolate @ 000001ab9c82e040] Unable to parse option value "mci=mc_mode=obmc"
>> [minterpolate @ 000001ab9c82e040] [Eval @ 0000004cbfbfe4b0] Invalid chars '=mc_mode=obmc' at the
>> end of expression 'mci=mc_mode=obmc'
>> [minterpolate @ 000001ab9c82e040] Unable to parse option value "mci=mc_mode=obmc"
>> [minterpolate @ 000001ab9c82e040] Error setting option mi_mode to value mci=mc_mode=obmc.
>> [Parsed_minterpolate_3 @ 000001ab9c893d40] Error applying options to the filter.
>> [AVFilterGraph @ 000001ab9d11d4c0] Error initializing filter 'minterpolate' with args
>> 'fps=60000/1001:mi_mode=mci=mc_mode=obmc:scd=fdiff:scd_threshold=10'
>> Error initializing complex filters.
>> Invalid argument
>>
>
> [correcting a typo, it looked fine before but my spectacles are imperfect.]
>
> Perhaps the character between 'mci' and 'mc_mode' should be ':' instead of '='?

Too late. I already replied. But I knew what you meant.  :-)

--
Someone's sneaking in and turning up the range so that my food burns.
I'm sure of it.
And the older I get, the more sure of it I become.
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: minterpolate problem

pdr0
In reply to this post by Jim DeLaHunt-2
Jim DeLaHunt-2 wrote
> Perhaps the character between 'mci' and 'mc_mode' should be ':' instead
> of '='?

That works for me

-vf
minterpolate=fps=60000/1001:mi_mode=mci:mc_mode=obmc:scd=fdiff:scd_threshold=10

Each one is a separate option and argument

https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/vf_minterpolate.c



--
Sent from: http://ffmpeg-users.933282.n4.nabble.com/
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: minterpolate problem

Mark Filipak (ffmpeg)
On 01/26/2021 09:49 PM, pdr0 wrote:

> Jim DeLaHunt-2 wrote
>> Perhaps the character between 'mci' and 'mc_mode' should be ':' instead
>> of '='?
>
> That works for me
>
> -vf
> minterpolate=fps=60000/1001:mi_mode=mci:mc_mode=obmc:scd=fdiff:scd_threshold=10
>
> Each one is a separate option and argument
>
> https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/vf_minterpolate.c

Thank you. It works for me, too. I don't know why it didn't work the 1st time (except maybe because
I have so many balls in the air).

So, unlike what is shown in the documentation, 'mc_mode' is _not_ an argument of 'mci'.

Apparently, 1, 'mi_mode=mci' is a valid argument and, 2, that 'mc_mode' (and perhaps 'me_mode' &
'me') are valid solely if mi_mode=mci but are otherwise not arguments of 'mi_mode=mci' but are
direct options of 'minterpolate'. That kind of scope is probably what the author intended when
he/she indented them below 'mci', but the indenting is very misleading.

I will try all combinations of minterpolate to resolve all the options and issues and return with a
new beautified version of the minterpolate documentation. Perhaps that will save people in the
future because minterpolate is an important and amazing function.

--
Someone's sneaking in and turning up the range so that my food burns.
I'm sure of it.
And the older I get, the more sure of it I become.
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: minterpolate problem

Mark Filipak (ffmpeg)
In reply to this post by pdr0
I ask this because I think it can only be answered by looking at the source code. I'm not competent
to do that.

Is 'mi_mode=dup' or 'mi_mode=blend' or 'mi_mode=mci' the default?


On 01/26/2021 09:49 PM, pdr0 wrote:

> Jim DeLaHunt-2 wrote
>> Perhaps the character between 'mci' and 'mc_mode' should be ':' instead
>> of '='?
>
> That works for me
>
> -vf
> minterpolate=fps=60000/1001:mi_mode=mci:mc_mode=obmc:scd=fdiff:scd_threshold=10
>
> Each one is a separate option and argument
>
> https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/vf_minterpolate.c

Thank you. It works for me, too. I don't know why it didn't work the 1st time (except maybe because
I have so many balls in the air).

So, unlike what is shown in the documentation, 'mc_mode' is _not_ an argument of 'mci'.

Apparently, 1, 'mi_mode=mci' is a valid argument and, 2, that 'mc_mode' (and perhaps 'me_mode' &
'me') are valid solely if mi_mode=mci but are otherwise not arguments of 'mi_mode=mci' but are
direct options of 'minterpolate'. That kind of scope is probably what the author intended when
he/she indented them below 'mci', but the indenting is very misleading.

I will try all combinations of minterpolate to resolve all the options and issues and return with a
new beautified version of the minterpolate documentation. Perhaps that will save people in the
future because minterpolate is an important and amazing function.

--
Someone's sneaking in and turning up the range so that my food burns.
I'm sure of it.
And the older I get, the more sure of it I become.
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: minterpolate problem

Jim DeLaHunt-2
In reply to this post by Mark Filipak (ffmpeg)
On 2021-01-26 20:05, Mark Filipak (ffmpeg) wrote:

> On 01/26/2021 09:49 PM, pdr0 wrote:
>> Jim DeLaHunt-2 wrote
>>> Perhaps the character between 'mci' and 'mc_mode' should be ':' instead
>>> of '='?
>>
>> That works for me
>>
>> -vf
>> minterpolate=fps=60000/1001:mi_mode=mci:mc_mode=obmc:scd=fdiff:scd_threshold=10
>>
>>
>> Each one is a separate option and argument
>>
>> https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/vf_minterpolate.c 
>>
>
> Thank you. It works for me, too. I don't know why it didn't work the
> 1st time (except maybe because I have so many balls in the air).
>
> So, unlike what is shown in the documentation, 'mc_mode' is _not_ an
> argument of 'mci'.
>
> Apparently, 1, 'mi_mode=mci' is a valid argument and, 2, that
> 'mc_mode' (and perhaps 'me_mode' & 'me') are valid solely if
> mi_mode=mci but are otherwise not arguments of 'mi_mode=mci' but are
> direct options of 'minterpolate'. That kind of scope is probably what
> the author intended when he/she indented them below 'mci', but the
> indenting is very misleading.
>
Having looked at the code, that is correct.  Yes, the indenting is
misleading. Yes, 'mc_mode' and 'me_mode' and 'me' are top-level options
for the minterpolate filter, but the filter only consults their values
if 'mi_mode'='mci'.

This is the part of the minterpolate video filter which defines the options:
https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/vf_minterpolate.c#L205-L235

[The following looks better in a fixed-pitch font.]

static const AVOption minterpolate_options[] = {
     { "fps", "output's frame rate", OFFSET(frame_rate),
AV_OPT_TYPE_VIDEO_RATE, {.str = "60"}, 0, INT_MAX, FLAGS },
     { "mi_mode", "motion interpolation mode", OFFSET(mi_mode),
AV_OPT_TYPE_INT, {.i64 = MI_MODE_MCI}, MI_MODE_DUP, MI_MODE_MCI, FLAGS,
"mi_mode" },
         CONST("dup",    "duplicate frames", MI_MODE_DUP,           
"mi_mode"),
         CONST("blend",  "blend frames", MI_MODE_BLEND,          "mi_mode"),
         CONST("mci",    "motion compensated interpolation",
MI_MODE_MCI,            "mi_mode"),
     { "mc_mode", "motion compensation mode", OFFSET(mc_mode),
AV_OPT_TYPE_INT, {.i64 = MC_MODE_OBMC}, MC_MODE_OBMC, MC_MODE_AOBMC,
FLAGS, "mc_mode" },
         CONST("obmc",   "overlapped block motion compensation",
MC_MODE_OBMC,           "mc_mode"),
         CONST("aobmc",  "adaptive overlapped block motion
compensation", MC_MODE_AOBMC, "mc_mode"),
     { "me_mode", "motion estimation mode", OFFSET(me_mode),
AV_OPT_TYPE_INT, {.i64 = ME_MODE_BILAT}, ME_MODE_BIDIR, ME_MODE_BILAT,
FLAGS, "me_mode" },
         CONST("bidir",  "bidirectional motion estimation",
ME_MODE_BIDIR,          "me_mode"),
         CONST("bilat",  "bilateral motion estimation",
ME_MODE_BILAT,          "me_mode"),
     { "me", "motion estimation method", OFFSET(me_method),
AV_OPT_TYPE_INT, {.i64 = AV_ME_METHOD_EPZS}, AV_ME_METHOD_ESA,
AV_ME_METHOD_UMH, FLAGS, "me" },
         CONST("esa",    "exhaustive search", AV_ME_METHOD_ESA,       "me"),
         CONST("tss",    "three step search", AV_ME_METHOD_TSS,       "me"),
         CONST("tdls",   "two dimensional logarithmic search",
AV_ME_METHOD_TDLS,      "me"),
         CONST("ntss",   "new three step search",
AV_ME_METHOD_NTSS,      "me"),
         CONST("fss",    "four step search", AV_ME_METHOD_FSS,       "me"),
         CONST("ds",     "diamond search", AV_ME_METHOD_DS,        "me"),
         CONST("hexbs",  "hexagon-based search", AV_ME_METHOD_HEXBS,    
"me"),
         CONST("epzs",   "enhanced predictive zonal search",
AV_ME_METHOD_EPZS,      "me"),
         CONST("umh",    "uneven multi-hexagon search",
AV_ME_METHOD_UMH,       "me"),
     { "mb_size", "macroblock size", OFFSET(mb_size), AV_OPT_TYPE_INT,
{.i64 = 16}, 4, 16, FLAGS },
     { "search_param", "search parameter", OFFSET(search_param),
AV_OPT_TYPE_INT, {.i64 = 32}, 4, INT_MAX, FLAGS },
     { "vsbmc", "variable-size block motion compensation",
OFFSET(vsbmc), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, FLAGS },
     { "scd", "scene change detection method", OFFSET(scd_method),
AV_OPT_TYPE_INT, {.i64 = SCD_METHOD_FDIFF}, SCD_METHOD_NONE,
SCD_METHOD_FDIFF, FLAGS, "scene" },
         CONST("none",   "disable detection", SCD_METHOD_NONE,       
"scene"),
         CONST("fdiff",  "frame difference", SCD_METHOD_FDIFF,      
"scene"),
     { "scd_threshold", "scene change threshold", OFFSET(scd_threshold),
AV_OPT_TYPE_DOUBLE, {.dbl = 10.}, 0, 100.0, FLAGS },
     { NULL }
};

What that means:

There is an option, "fps", which means "output's frame rate". It can (I
believe) take any frame rate value describe in 7.5 "Frame Rate"
(http://ffmpeg.org/ffmpeg-all.html#Video-rate), including integers,
rational numbers, and 8 special names (because
"AV_OPT_TYPE_VIDEO_RATE"). The default value is 60 (because '{.str =
"60"}').

There is an option, "mi_mode", which means "motion interpolation mode".
It can take any of the following values:
"dup", meaning  "duplicate frames"; "blend", meaning  "blend frames"; or
"mci", meaning "motion compensated interpolation".
The default value is "mci" (because '{.i64 = MI_MODE_MCI}' and
'CONST("mci" … MI_MODE_MCI').

There is an option, "mc_mode",  which means "motion compensation mode".
Reading the code elsewhere in that file, it seems that the filter only
consults this option when "mi_mode"="mci". It can take any of the
following values:
"obmc", meaning "overlapped block motion compensation"; or "aobmc",
meaning "adaptive overlapped block motion compensation".
The default value is "obmc" (because '{.i64 = MC_MODE_OBMC}' and
'CONST("obmc" … MC_MODE_OBMC').

There is an option, "me_mode", which means "motion estimation mode".
Reading the code elsewhere in that file, it seems that the filter only
consults this option when "mi_mode"="mci". It can take any of the
following values:
"bidir", meaning "bidirectional motion estimation"; or "bilat", meaing
"bilateral motion estimation".
The default value is "bilat" (because '{.i64 = ME_MODE_BILAT}' and
'CONST("bilat" … ME_MODE_BILAT').

There is an option, "me", meaning "motion estimation method". Reading
the code elsewhere in that file, it seems that the filter only consults
this option when "mi_mode"="mci". It can take any of the following values:
"esa", meaning "exhaustive search"; "tss", meaning "three step search";
"tdls", meaning "two dimensional logarithmic search";
"ntss", meaning "new three step search"; "fss", meaning "four step
search"; "ds", meaning "diamond search";
"hexbs", meaning "hexagon-based search"; "epzs", meaning "enhanced
predictive zonal search"; or "umh", meaning "uneven multi-hexagon search".
The default value is "epzs" (because '{.i64 = AV_ME_METHOD_EPZS}' and
'CONST("epzs" … AV_ME_METHOD_EPZS').

There is an option, "mb_size", meaning "macroblock size". It takes an
integer value of 4-16 (because 'AV_OPT_TYPE_INT' and  '4, 16'). The
default value is 16 (because '{.i64 = 16}').

There is an option, "search_param", meaning "search parameter". It takes
an integer value of 4 or more (because 'AV_OPT_TYPE_INT' and  '4,
INT_MAX'). The default value is 32 (because '{.i64 = 32}').

There is an option, "vsbmc", meaning "variable-size block motion
compensation". It takes an integer value of 0 or 1 (because
'AV_OPT_TYPE_INT' and '0, 1'). The default value is 0 (because '{.i64 =
0}').

There is an option, "scd", meaning "scene change detection method". It
can take either of the following values:
"none", meaning "disable detection"; or "fdiff", meaning "frame difference".
The default value is "fdiff" (because '{.i64 = SCD_METHOD_FDIFF}' and
'CONST("fdiff", … SCD_METHOD_FDIFF').

There is an option, "scd_threshold", meaning "scene change threshold".
It takes a real-number value of 0.0-100.0 (because 'AV_OPT_TYPE_DOUBLE'
and '0, 100.0'). The default value is 10.0 (because '{.dbl = 10.}'.


> I will try all combinations of minterpolate to resolve all the options
> and issues and return with a new beautified version of the
> minterpolate documentation. Perhaps that will save people in the
> future because minterpolate is an important and amazing function.


I wrote out that translation of the code into English in part to help
you with your documentation, and in part to help others who want to
learn how to read the idioms in source code. This skill is useful for
checking where the documentation is incomplete or wrong.

Note that I just translated the options declaration in lines 205-235 of
the source code. This describes only the names and data types of the
options. To understand what FFmpeg actually does when presented with the
various options, one has to read the rest of the source code. (For
instance, are options 'mb_size', 'search_param', and 'vsbmc' consulted
only when option 'mi_mode'='mci'? Lines 205-235 don't say.)

     —Jim DeLaHunt


_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: minterpolate problem

Paul B Mahol
In reply to this post by Mark Filipak (ffmpeg)
On Wed, Jan 27, 2021 at 6:03 AM Mark Filipak (ffmpeg) <[hidden email]>
wrote:

> I ask this because I think it can only be answered by looking at the
> source code. I'm not competent
> to do that.
>

Your thinking is invalid.


>
> Is 'mi_mode=dup' or 'mi_mode=blend' or 'mi_mode=mci' the default?
>


ffmpeg -h filter=minterpolate


>
>
> On 01/26/2021 09:49 PM, pdr0 wrote:
> > Jim DeLaHunt-2 wrote
> >> Perhaps the character between 'mci' and 'mc_mode' should be ':' instead
> >> of '='?
> >
> > That works for me
> >
> > -vf
> >
> minterpolate=fps=60000/1001:mi_mode=mci:mc_mode=obmc:scd=fdiff:scd_threshold=10
> >
> > Each one is a separate option and argument
> >
> >
> https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/vf_minterpolate.c
>
> Thank you. It works for me, too. I don't know why it didn't work the 1st
> time (except maybe because
> I have so many balls in the air).
>
> So, unlike what is shown in the documentation, 'mc_mode' is _not_ an
> argument of 'mci'.
>
> Apparently, 1, 'mi_mode=mci' is a valid argument and, 2, that 'mc_mode'
> (and perhaps 'me_mode' &
> 'me') are valid solely if mi_mode=mci but are otherwise not arguments of
> 'mi_mode=mci' but are
> direct options of 'minterpolate'. That kind of scope is probably what the
> author intended when
> he/she indented them below 'mci', but the indenting is very misleading.
>
> I will try all combinations of minterpolate to resolve all the options and
> issues and return with a
> new beautified version of the minterpolate documentation. Perhaps that
> will save people in the
> future because minterpolate is an important and amazing function.
>
> --
> Someone's sneaking in and turning up the range so that my food burns.
> I'm sure of it.
> And the older I get, the more sure of it I become.
> _______________________________________________
> ffmpeg-user mailing list
> [hidden email]
> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> [hidden email] with subject "unsubscribe".
> _______________________________________________
> ffmpeg-user mailing list
> [hidden email]
> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> [hidden email] with subject "unsubscribe".
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: minterpolate problem

FFmpeg-users mailing list
 

    On Wednesday, 27 January 2021, 10:31:35 GMT, Paul B Mahol <[hidden email]> wrote:  
 > ffmpeg -h filter=minterpolate
Y'know, I've been using ffmpeg for a really long time, and I had no idea you could do that.
P  
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: minterpolate problem

Mark Filipak (ffmpeg)
In reply to this post by Paul B Mahol
On 01/27/2021 05:31 AM, Paul B Mahol wrote:
> On Wed, Jan 27, 2021 at 6:03 AM Mark Filipak (ffmpeg) <[hidden email]>
> wrote:
>
>> I ask this because I think it can only be answered by looking at the
>> source code. I'm not competent
>> to do that.
>
> Your thinking is invalid.

What part?

>> Is 'mi_mode=dup' or 'mi_mode=blend' or 'mi_mode=mci' the default?
>
> ffmpeg -h filter=minterpolate

Thank you, Paul. I didn't know I could get help on individual filters. That will save me some time.
Too bad the on-line documentation is incomplete. Of course, that's just my opinion and I'm probably
wrong, eh?  ;-)

--
Someone's sneaking in and turning up the range so that my food burns.
I'm sure of it.
And the older I get, the more sure of it I become.
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: minterpolate problem

FFmpeg-users mailing list
 > I didn't know I could get help on individual filters. 
To be completely fair, that is actually in the docs, but it's not exactly on the front page.
P
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: minterpolate problem

Carl Eugen Hoyos-2
In reply to this post by Mark Filipak (ffmpeg)
Am Mi., 27. Jan. 2021 um 02:03 Uhr schrieb Mark Filipak (ffmpeg)
<[hidden email]>:

> ffmpeg -i SOURCE -map 0 -filter_complex "split[1][2], \
> [1]telecine=pattern=55, select=not(eq(mod(n\,5)\,2))[3], \
> [2]minterpolate=fps=60000/1001:mi_mode=mci=mc_mode=obmc:scd=fdiff:scd_threshold=10, \
> select=eq(mod(n\,5)\,2)[4], \
> [3][4]interleave" \
> -codec:v libx265 -x265-params "crf=16:qcomp=0.60" -codec:a copy -codec:s copy TARGET

Since others may read this:
The command line makes little sense, you should either use
telecine or minterpolate.

Carl Eugen
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: minterpolate problem

Mark Filipak (ffmpeg)
On 01/27/2021 05:47 PM, Carl Eugen Hoyos wrote:

> Am Mi., 27. Jan. 2021 um 02:03 Uhr schrieb Mark Filipak (ffmpeg)
> <[hidden email]>:
>
>> ffmpeg -i SOURCE -map 0 -filter_complex "split[1][2], \
>> [1]telecine=pattern=55, select=not(eq(mod(n\,5)\,2))[3], \
>> [2]minterpolate=fps=60000/1001:mi_mode=mci=mc_mode=obmc:scd=fdiff:scd_threshold=10, \
>> select=eq(mod(n\,5)\,2)[4], \
>> [3][4]interleave" \
>> -codec:v libx265 -x265-params "crf=16:qcomp=0.60" -codec:a copy -codec:s copy TARGET
>
> Since others may read this:
> The command line makes little sense, you should either use
> telecine or minterpolate.

Carl Eugen, you surprise me. I'm sure you see what I'm trying to do, so why the angst?

First, let me admit that since I started this thread (following weeks of experimentation) I decided
to simply try this: 'minterpolate=fps=60000/1001' to see what it would do. I was amazed.

If minterpolate is Paul's work, then Paul is a f'ing genius.

I've since spent a couple of days playing with minterpolate and have found that this:
'minterpolate=fps=60000/1001:mi_mode=mci:mc_mode=obmc:scd=fdiff:scd_threshold=10:vsbmc=1:search_param=20'
is astounding.

Nonetheless, I'd still like to generate a 60 FPS transcode that is visually equivalent (as closely
as possible) to 24 pictures/second by replacing the combed frame (i.e. n%5==2) by an interpolated
frame -- hence the filter graph you loathe.

For that n%5==2 frame, here's what I sought (and did not find):

Sobel of line y:   ______/\_____________/\_________
Sobel of line y+1: __________/\_____________/\_____
Desired output:
          line y:   ________/\_____________/\_______
          line y+1: ________/\_____________/\_______
I could find this:
          line y:   ______/\_____________/\_________
          line y+1: ______/\_____________/\_________ (aligned to top line)
and I could find this:
          line y:   __________/\_____________/\_____ (aligned to bottom line)
          line y+1: __________/\_____________/\_____
but I could not find this:
          line y:   ________/\_____________/\_______ (aligned to mean)
          line y+1: ________/\_____________/\_______ (aligned to mean)

One reason I might -- MIGHT -- prefer telecine55 is that the original frames are recoverable from
the transcodes -- but admittedly, that's not much of a reason, is it? Another reason is that the
transcode is much, much quicker than 'minterpolate=fps=60000/1001' and somewhat smaller.

There you have it, Carl Eugen. Please stop trying to make the world think I'm feeble minded.  :-)
Okay?

Regards,
Mark.

--
Someone's sneaking in and turning up the range so that my food burns.
I'm sure of it.
And the older I get, the more sure of it I become.
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: minterpolate problem

Paul B Mahol
On Thu, Jan 28, 2021 at 7:04 AM Mark Filipak (ffmpeg) <[hidden email]>
wrote:

> On 01/27/2021 05:47 PM, Carl Eugen Hoyos wrote:
> > Am Mi., 27. Jan. 2021 um 02:03 Uhr schrieb Mark Filipak (ffmpeg)
> > <[hidden email]>:
> >
> >> ffmpeg -i SOURCE -map 0 -filter_complex "split[1][2], \
> >> [1]telecine=pattern=55, select=not(eq(mod(n\,5)\,2))[3], \
> >>
> [2]minterpolate=fps=60000/1001:mi_mode=mci=mc_mode=obmc:scd=fdiff:scd_threshold=10,
> \
> >> select=eq(mod(n\,5)\,2)[4], \
> >> [3][4]interleave" \
> >> -codec:v libx265 -x265-params "crf=16:qcomp=0.60" -codec:a copy
> -codec:s copy TARGET
> >
> > Since others may read this:
> > The command line makes little sense, you should either use
> > telecine or minterpolate.
>
> Carl Eugen, you surprise me. I'm sure you see what I'm trying to do, so
> why the angst?
>
> First, let me admit that since I started this thread (following weeks of
> experimentation) I decided
> to simply try this: 'minterpolate=fps=60000/1001' to see what it would do.
> I was amazed.
>
> If minterpolate is Paul's work, then Paul is a f'ing genius.
>
> I've since spent a couple of days playing with minterpolate and have found
> that this:
>
> 'minterpolate=fps=60000/1001:mi_mode=mci:mc_mode=obmc:scd=fdiff:scd_threshold=10:vsbmc=1:search_param=20'
> is astounding.
>
> Nonetheless, I'd still like to generate a 60 FPS transcode that is
> visually equivalent (as closely
> as possible) to 24 pictures/second by replacing the combed frame (i.e.
> n%5==2) by an interpolated
> frame -- hence the filter graph you loathe.
>
> For that n%5==2 frame, here's what I sought (and did not find):
>
> Sobel of line y:   ______/\_____________/\_________
> Sobel of line y+1: __________/\_____________/\_____
> Desired output:
>           line y:   ________/\_____________/\_______
>           line y+1: ________/\_____________/\_______
> I could find this:
>           line y:   ______/\_____________/\_________
>           line y+1: ______/\_____________/\_________ (aligned to top line)
> and I could find this:
>           line y:   __________/\_____________/\_____ (aligned to bottom
> line)
>           line y+1: __________/\_____________/\_____
> but I could not find this:
>           line y:   ________/\_____________/\_______ (aligned to mean)
>           line y+1: ________/\_____________/\_______ (aligned to mean)
>
>
Please cite reference/paper that explains this technique in more detail.



> One reason I might -- MIGHT -- prefer telecine55 is that the original
> frames are recoverable from
> the transcodes -- but admittedly, that's not much of a reason, is it?
> Another reason is that the
> transcode is much, much quicker than 'minterpolate=fps=60000/1001' and
> somewhat smaller.
>
> There you have it, Carl Eugen. Please stop trying to make the world think
> I'm feeble minded.  :-)
> Okay?
>
> Regards,
> Mark.
>
> --
> Someone's sneaking in and turning up the range so that my food burns.
> I'm sure of it.
> And the older I get, the more sure of it I become.
> _______________________________________________
> ffmpeg-user mailing list
> [hidden email]
> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> [hidden email] with subject "unsubscribe".
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: minterpolate problem

Mark Filipak (ffmpeg)
In reply to this post by Jim DeLaHunt-2
On 01/27/2021 03:16 AM, [hidden email] wrote:

> This is the part of the minterpolate video filter which defines the options:
> https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/vf_minterpolate.c#L205-L235
>
> [The following looks better in a fixed-pitch font.]
>
> static const AVOption minterpolate_options[] = {
>      { "fps", "output's frame rate", OFFSET(frame_rate), AV_OPT_TYPE_VIDEO_RATE, {.str = "60"}, 0,
> INT_MAX, FLAGS },
>      { "mi_mode", "motion interpolation mode", OFFSET(mi_mode), AV_OPT_TYPE_INT, {.i64 =
> MI_MODE_MCI}, MI_MODE_DUP, MI_MODE_MCI, FLAGS, "mi_mode" },
>          CONST("dup",    "duplicate frames", MI_MODE_DUP, "mi_mode"),
>          CONST("blend",  "blend frames", MI_MODE_BLEND,          "mi_mode"),
>          CONST("mci",    "motion compensated interpolation", MI_MODE_MCI,            "mi_mode"),
>      { "mc_mode", "motion compensation mode", OFFSET(mc_mode), AV_OPT_TYPE_INT, {.i64 =
> MC_MODE_OBMC}, MC_MODE_OBMC, MC_MODE_AOBMC, FLAGS, "mc_mode" },
>          CONST("obmc",   "overlapped block motion compensation", MC_MODE_OBMC,           "mc_mode"),
>          CONST("aobmc",  "adaptive overlapped block motion compensation", MC_MODE_AOBMC, "mc_mode"),
>      { "me_mode", "motion estimation mode", OFFSET(me_mode), AV_OPT_TYPE_INT, {.i64 =
> ME_MODE_BILAT}, ME_MODE_BIDIR, ME_MODE_BILAT, FLAGS, "me_mode" },
>          CONST("bidir",  "bidirectional motion estimation", ME_MODE_BIDIR,          "me_mode"),
>          CONST("bilat",  "bilateral motion estimation", ME_MODE_BILAT,          "me_mode"),
>      { "me", "motion estimation method", OFFSET(me_method), AV_OPT_TYPE_INT, {.i64 =
> AV_ME_METHOD_EPZS}, AV_ME_METHOD_ESA, AV_ME_METHOD_UMH, FLAGS, "me" },
>          CONST("esa",    "exhaustive search", AV_ME_METHOD_ESA,       "me"),
>          CONST("tss",    "three step search", AV_ME_METHOD_TSS,       "me"),
>          CONST("tdls",   "two dimensional logarithmic search", AV_ME_METHOD_TDLS,      "me"),
>          CONST("ntss",   "new three step search", AV_ME_METHOD_NTSS,      "me"),
>          CONST("fss",    "four step search", AV_ME_METHOD_FSS,       "me"),
>          CONST("ds",     "diamond search", AV_ME_METHOD_DS,        "me"),
>          CONST("hexbs",  "hexagon-based search", AV_ME_METHOD_HEXBS, "me"),
>          CONST("epzs",   "enhanced predictive zonal search", AV_ME_METHOD_EPZS,      "me"),
>          CONST("umh",    "uneven multi-hexagon search", AV_ME_METHOD_UMH,       "me"),
>      { "mb_size", "macroblock size", OFFSET(mb_size), AV_OPT_TYPE_INT, {.i64 = 16}, 4, 16, FLAGS },
>      { "search_param", "search parameter", OFFSET(search_param), AV_OPT_TYPE_INT, {.i64 = 32}, 4,
> INT_MAX, FLAGS },
>      { "vsbmc", "variable-size block motion compensation", OFFSET(vsbmc), AV_OPT_TYPE_INT, {.i64 =
> 0}, 0, 1, FLAGS },
>      { "scd", "scene change detection method", OFFSET(scd_method), AV_OPT_TYPE_INT, {.i64 =
> SCD_METHOD_FDIFF}, SCD_METHOD_NONE, SCD_METHOD_FDIFF, FLAGS, "scene" },
>          CONST("none",   "disable detection", SCD_METHOD_NONE, "scene"),
>          CONST("fdiff",  "frame difference", SCD_METHOD_FDIFF, "scene"),
>      { "scd_threshold", "scene change threshold", OFFSET(scd_threshold), AV_OPT_TYPE_DOUBLE, {.dbl =
> 10.}, 0, 100.0, FLAGS },
>      { NULL }
> };
>
> What that means:
>
> There is an option, "fps", which means "output's frame rate". It can (I believe) take any frame rate
> value describe in 7.5 "Frame Rate" (http://ffmpeg.org/ffmpeg-all.html#Video-rate), including
> integers, rational numbers, and 8 special names (because "AV_OPT_TYPE_VIDEO_RATE"). The default
> value is 60 (because '{.str = "60"}').
>
> There is an option, "mi_mode", which means "motion interpolation mode". It can take any of the
> following values:
> "dup", meaning  "duplicate frames"; "blend", meaning  "blend frames"; or "mci", meaning "motion
> compensated interpolation".
> The default value is "mci" (because '{.i64 = MI_MODE_MCI}' and 'CONST("mci" … MI_MODE_MCI').
>
> There is an option, "mc_mode",  which means "motion compensation mode". Reading the code elsewhere
> in that file, it seems that the filter only consults this option when "mi_mode"="mci". It can take
> any of the following values:
> "obmc", meaning "overlapped block motion compensation"; or "aobmc", meaning "adaptive overlapped
> block motion compensation".
> The default value is "obmc" (because '{.i64 = MC_MODE_OBMC}' and 'CONST("obmc" … MC_MODE_OBMC').
>
> There is an option, "me_mode", which means "motion estimation mode". Reading the code elsewhere in
> that file, it seems that the filter only consults this option when "mi_mode"="mci". It can take any
> of the following values:
> "bidir", meaning "bidirectional motion estimation"; or "bilat", meaing "bilateral motion estimation".
> The default value is "bilat" (because '{.i64 = ME_MODE_BILAT}' and 'CONST("bilat" … ME_MODE_BILAT').
>
> There is an option, "me", meaning "motion estimation method". Reading the code elsewhere in that
> file, it seems that the filter only consults this option when "mi_mode"="mci". It can take any of
> the following values:
> "esa", meaning "exhaustive search"; "tss", meaning "three step search"; "tdls", meaning "two
> dimensional logarithmic search";
> "ntss", meaning "new three step search"; "fss", meaning "four step search"; "ds", meaning "diamond
> search";
> "hexbs", meaning "hexagon-based search"; "epzs", meaning "enhanced predictive zonal search"; or
> "umh", meaning "uneven multi-hexagon search".
> The default value is "epzs" (because '{.i64 = AV_ME_METHOD_EPZS}' and 'CONST("epzs" …
> AV_ME_METHOD_EPZS').
>
> There is an option, "mb_size", meaning "macroblock size". It takes an integer value of 4-16 (because
> 'AV_OPT_TYPE_INT' and  '4, 16'). The default value is 16 (because '{.i64 = 16}').
>
> There is an option, "search_param", meaning "search parameter". It takes an integer value of 4 or
> more (because 'AV_OPT_TYPE_INT' and  '4, INT_MAX'). The default value is 32 (because '{.i64 = 32}').
>
> There is an option, "vsbmc", meaning "variable-size block motion compensation". It takes an integer
> value of 0 or 1 (because 'AV_OPT_TYPE_INT' and '0, 1'). The default value is 0 (because '{.i64 = 0}').
>
> There is an option, "scd", meaning "scene change detection method". It can take either of the
> following values:
> "none", meaning "disable detection"; or "fdiff", meaning "frame difference".
> The default value is "fdiff" (because '{.i64 = SCD_METHOD_FDIFF}' and 'CONST("fdiff", …
> SCD_METHOD_FDIFF').
>
> There is an option, "scd_threshold", meaning "scene change threshold". It takes a real-number value
> of 0.0-100.0 (because 'AV_OPT_TYPE_DOUBLE' and '0, 100.0'). The default value is 10.0 (because
> '{.dbl = 10.}'.
>
>
> I wrote out that translation of the code into English in part to help you with your documentation,
> and in part to help others who want to learn how to read the idioms in source code. This skill is
> useful for checking where the documentation is incomplete or wrong.
>
> Note that I just translated the options declaration in lines 205-235 of the source code. This
> describes only the names and data types of the options. To understand what FFmpeg actually does when
> presented with the various options, one has to read the rest of the source code. (For instance, are
> options 'mb_size', 'search_param', and 'vsbmc' consulted only when option 'mi_mode'='mci'? Lines
> 205-235 don't say.)
>
>      —Jim DeLaHunt

Thank you so much, Jim. That really helps.

Mark.
--
Someone's sneaking in and turning up the range so that my food burns.
I'm sure of it.
And the older I get, the more sure of it I become.
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: minterpolate problem

Moritz Barsnick
In reply to this post by FFmpeg-users mailing list
On Wed, Jan 27, 2021 at 14:16:16 +0000, Phil Rhodes via ffmpeg-user wrote:
>  > I didn't know I could get help on individual filters. 
> To be completely fair, that is actually in the docs, but it's not exactly on the front page.

Good point.

It is at the very top of the output of "ffmpeg -h" though:

Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Getting help:
    -h      -- print basic options
    -h long -- print more options
    -h full -- print all options (including all format and codec specific options, very long)
    -h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf/protocol
    See man ffmpeg for detailed description of the options.


Or you just do "ffmpeg -h full" and go on a long search for an option.
:-)

Moritz
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: minterpolate problem

Mark Filipak (ffmpeg)
On 01/29/2021 04:23 AM, Moritz Barsnick wrote:

> On Wed, Jan 27, 2021 at 14:16:16 +0000, Phil Rhodes via ffmpeg-user wrote:
>>   > I didn't know I could get help on individual filters.
>> To be completely fair, that is actually in the docs, but it's not exactly on the front page.
>
> Good point.
>
> It is at the very top of the output of "ffmpeg -h" though:
>
> Hyper fast Audio and Video encoder
> usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
>
> Getting help:
>      -h      -- print basic options
>      -h long -- print more options
>      -h full -- print all options (including all format and codec specific options, very long)
>      -h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf/protocol
>      See man ffmpeg for detailed description of the options.
>
>
> Or you just do "ffmpeg -h full" and go on a long search for an option.
> :-)
>
> Moritz

"-h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf/protocol".

Try 'ffmpeg -h type=filter.

It fails. Why? Because "filter" is a "type", not a "name" -- never mind that the details says "...
named decoder/encoder ..."

"type" & "name" are actually tokens. The documentation should be something like this:

Getting help:
      -h      -- print basic options
      -h long -- print more options
      -h full -- print all options (including all format and codec specific options, very long)
      -h <type>=<name> -- <type> can be decoder, encoder, demuxer, muxer, filter, bsf or protocol,
and <name> can be the specific name of the <type>.

These are the types of things that trap those utterly stupid, lazy novices.


_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: minterpolate problem

FFmpeg-users mailing list
 

    On Friday, 29 January 2021, 09:43:09 GMT, Mark Filipak (ffmpeg) <[hidden email]> wrote:  
> Try 'ffmpeg -h type=filter.
> It fails. Why? Because "filter" is a "type", not a "name" -- never mind that the details says "...
> named decoder/encoder ..."
Yes, this is the sort of thing that causes the problem. Easy to fix, though, you'd have thought.
P  
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
123