Some people wanted to have ProRes encoder in Libav so I wrote one. And from what I gather it even has one user (not me).
In case someone is interested here is the list of possible options:
profile— selects ProRes profile to encode (proxy,lt,standardorhq)quant_mat— selects quantisation matrix from one of profiles (proxy,lt,standardorhq). If you don’t specify it, the matrix will be picked from default profile (or useautoto be really sure). There’s alsodefaultmatrix which should give the highest quality (it’s default in the sense that when quantisation matrix is not provided in frame decoder defaults to this one).bits_per_mb— how many bits to give for coding one macroblock, different profiles use from 200 bits per macroblock to 2400, one can set it up to 8000.mbs_per_slice— how many macroblocks are there in slice, 1-8. Default value of eight should be good for almost all situations though.vendor— one can put custom vendor ID into frame likeapl0to claim it was produced by Apple encoder.qscale— set fixed quantiser
How to make it encode faster?
In default mode of operation encoder has to honour frame constraints (i.e. not producing frames with size bigger than defined) while still making output picture as good as possible.
If the frame contains lots of small details it’s harder to compress it and encoder spends more time in search for appropriate quantisers for each slice. Thus setting higher bits_per_mb limit will improve the speed.
Or if you don’t care about frame size constraints just set qscale parameter to something (I’d recommend 4) and see it encode MUCH faster.
Feel free to leave wishes for features in comments, hopefully I can implement it when I have time.
P.S. For proper 4444 profile support we need 10-bit YUV with alpha. When it’s in I can add that profile too.