[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

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

> 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

> > 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.​


More information about the ffmpeg-user mailing list