Announcement

Collapse
No announcement yet.

Rav1e Achieves Another ~20% Speed-Up For Rust-Based AV1 Video Encoding

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • quikee
    replied
    Originally posted by bug77 View Post
    You might wanna brush up on your quoting skills, I didn't say what you say I did
    I'll do better next time

    Leave a comment:


  • Go_Vulkan
    replied
    Originally posted by cl333r View Post
    So when will it be practical to use? i.e. capable of encoding at 20 FPS 1080p 10 bit say on a 4 core CPU from 2016.
    Well, thanks to AMD we can now afford 12 cores in 2019, with the IPC of ZEN2. If you are into AV1, I think you should have at least 8 cores. The more, the better.

    Leave a comment:


  • Luke_Wolf
    replied
    Originally posted by wizard69 View Post

    There are all sorts of possibilities here. Compiler maturity could be an issue as the team is rather small compared to everybody working on Swift, Python or even C++.

    then you have the possibility that they are removing some of the safety and validation that Rust does. That would be funny as then you have to ask why use Rust in the first place.

    in any event the best answer would come from the developer team. Most likely there are multiple answers.
    Swift: 749 Contributors
    CPython: 1098 Contributors
    PyPy: 201 Contributors
    LLVM: 1029 Contributors
    Rust: 2573 Contributors

    Look we all know how much you love to shill for Apple but could you at least do some research before you spew this nonsense?

    Leave a comment:


  • bachchain
    replied
    Originally posted by wizard69 View Post
    then you have the possibility that they are removing some of the safety and validation that Rust does. That would be funny as then you have to ask why use Rust in the first place.
    You wouldn't need to go to assembly to do that. Rust has plenty of ways to sidestep any runtime validation.

    Leave a comment:


  • wizard69
    replied
    Originally posted by milkylainen View Post
    Hmm. In C, depending on the code, it's sometimes _very_ hard to do it better than a good compiler.
    Sure, if your code and data structures are rubbish, you're not making it easy for the compiler to do a good job, but that seems beside the point.
    The point of hand-rolling asm slowing going the way of the Dodo.

    So what am I actually seeing here? Since the benefits of speed increase seem to come from better hand optimized asm.

    Is this a:
    "The Rust compiler is not mature enough" ?
    "The Rust compiler does not know any instruction set extensions. So it cannot do any real vectorization" ?
    Something else?
    There are all sorts of possibilities here. Compiler maturity could be an issue as the team is rather small compared to everybody working on Swift, Python or even C++.

    then you have the possibility that they are removing some of the safety and validation that Rust does. That would be funny as then you have to ask why use Rust in the first place.

    in any event the best answer would come from the developer team. Most likely there are multiple answers.

    Leave a comment:


  • bug77
    replied
    Originally posted by quikee View Post

    You can't have a working video encoder without having still image support. If you think AVIF - this has nothing to do with rav1e directly. For AVIF you take AV1 encoded I-frame and put it in a ISOBMFF container with appropriate metadata set. Where you get the AV1 encoded I-frame can be totally independent of the library that packs it together, and it certainly is done like that: libavif [1] can use aomenc or rav1e as the encoder, and aomenc, dav1d as the decoder.

    [1] https://github.com/AOMediaCodec/libavif
    You might wanna brush up on your quoting skills, I didn't say what you say I did

    Leave a comment:


  • quikee
    replied
    Originally posted by modpunk View Post

    Setting still image mode in rav1e doesn't work, the created picture can't be opened, see https://github.com/xiph/rav1e/issues/1000
    libaom supports it, but libavif isn't able to be built with libaom 1.0. Yes, I'm using libavif and created patches for it.
    I see. OK, thanks for correction.

    Leave a comment:


  • modpunk
    replied
    Originally posted by quikee View Post

    You can't have a working video encoder without having still image support. If you think AVIF - this has nothing to do with rav1e directly.
    Setting still image mode in rav1e doesn't work, the created picture can't be opened, see https://github.com/xiph/rav1e/issues/1000
    libaom supports it, but libavif isn't able to be built with libaom 1.0. Yes, I'm using libavif and created patches for it.

    Leave a comment:


  • quikee
    replied
    Originally posted by bug77 View Post
    I'm currently waiting for two features which are not implemented yet: still image support and lossless mode.
    You can't have a working video encoder without having still image support. If you think AVIF - this has nothing to do with rav1e directly. For AVIF you take AV1 encoded I-frame and put it in a ISOBMFF container with appropriate metadata set. Where you get the AV1 encoded I-frame can be totally independent of the library that packs it together, and it certainly is done like that: libavif [1] can use aomenc or rav1e as the encoder, and aomenc, dav1d as the decoder.

    [1] https://github.com/AOMediaCodec/libavif

    Leave a comment:


  • bug77
    replied
    Originally posted by milkylainen View Post
    Hmm. In C, depending on the code, it's sometimes _very_ hard to do it better than a good compiler.
    Sure, if your code and data structures are rubbish, you're not making it easy for the compiler to do a good job, but that seems beside the point.
    The point of hand-rolling asm slowing going the way of the Dodo.

    So what am I actually seeing here? Since the benefits of speed increase seem to come from better hand optimized asm.

    Is this a:
    "The Rust compiler is not mature enough" ?
    "The Rust compiler does not know any instruction set extensions. So it cannot do any real vectorization" ?
    Something else?
    You should look up what Rust (usually) uses for its compiler backend

    Leave a comment:

Working...
X