[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