[FFmpeg-user] vpxenc-vp9 row-mt
Szucsik György
szgydezign at gmail.com
Sun Oct 22 03:21:17 EEST 2017
On 22 October 2017 at 00:36, Moritz Barsnick <barsnick at gmx.net> wrote:
> On Sat, Oct 21, 2017 at 23:32:15 +0200, Szucsik György wrote:
> > This is rather odd, since vpxenc has had this feature already for some
> > time.
>
> Well, not in the libvpx code I could find. Which vpxenc were/are you
> using? What is its version, what is the option called?
>
I grabbed the official source from here
https://www.webmproject.org/code/
cloned https://chromium.googlesource.com/webm/libwebp
the compiled code corresponds to
vpxenc v1.6.1-1338-gb58259ab5
the option is in help
--row-mt=<arg> Enable row based non-deterministic
multi-threading in VP9
it's even in the Windows build v1.6.1-1258-gc8f6e7b99 I was using and I can
confirm it's working as advertised
binaries from here
https://forum.doom9.org/showthread.php?p=1820572#post1820572
>
> In the libvpx source code, the option was at one time originally called
> "new-mt", for a short while, and renamed to "row-mt" with the commit I
> quoted.
>
> > Looks like there is a miscommunication here, unfortunately.
>
> Between whom?
>
Between ffmpeg and libvpx devs?
>
> You're obviously the libvpx/vpxenc expert, not me.
I'm not.
> I can only interpret
> the sources and their changes. ffmpeg looks at a libvpx source define
> "
>
>
> VPX_CTRL_VP9E_SET_ROW_MT" to see whether the feature is available.
> This source define was added in the named commit. ffmpeg *could* also
> check for the old name "VPX_CTRL_VP9E_SET_NEW_MT", but that was also
> never available in a libvpx release, and only available for a short
> term, in other words experimental / not final.
>
So it must have changed then, I don't know. Does not explicitly say it's
experimental
https://groups.google.com/a/webmproject.org/forum/#!topic/codec-devel/oiHjgEdii2U
>
> > I was referring to this line (please note my C skills are very basic)
> > https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/
> libvpxenc.c#L1159
> >
> > The option that needs to be passed is row-mt but the variable that's
> > responsible for controlling this behavior is called row_mt. A bit of
> > inconsistency but if it works, it works.
>
> An option is a command line option for the shell (or for libavcodec's
> API). Its name "row-mt" was chosen, corresponding to vpxenc's
> "--row-mt".
>
> The variable name is only internal to ffmpeg's source code. It could just
> as well be named "foobla". Indeed it's called "row_mt" for convenience.
> ;-) C (the language) doesn't allow it to be named "row-mt", if that's
> what you mean. (In libvpx's source code, the same "inconsistency"
> exists, of course.)
>
Now that you mention it, it's indeed like that. Oh well.
Regards,
George
More information about the ffmpeg-user
mailing list