Any reason there's a mandatory framerate? Why not allow variable framerate?

Discussion in 'MSI AfterBurner Application Development Forum' started by mzso, Mar 25, 2019.

  1. mzso

    mzso Active Member

    Messages:
    73
    Likes Received:
    1
    GPU:
    DUAL-RX580-O4G
    Hi!

    For example the emulator runs at 50fps for pal games. (The actual framerate might be even less)
    So a fixed 60 fps capture limit doesn't do any good for me. In other cases games might run at even less fps due to limited GPU power, which might also vary during gameplay.

    So why not give an option to record at a variable framerate?
     
  2. Unwinder

    Unwinder Ancient Guru Staff Member

    Messages:
    17,187
    Likes Received:
    6,812
    You're misunderstanding how videocapture works. There is no "mandatory" framerate and it is already variable.
     
  3. mzso

    mzso Active Member

    Messages:
    73
    Likes Received:
    1
    GPU:
    DUAL-RX580-O4G
    I don't think so. Though, I must have mistook something because the files produced now are variable framerate.
    (Frame rate mode : Variable
    Original frame rate : 25.000 FPS)

    Anyway. What that the "Framerate" setting in afterburner do then? The tooltip says it "adjusts the framerate of the encoded video".
    I can set it from 1 to 100 fps. There's no variable or off option. Does this only concern the internal encoders? (so those are not variable framerate?) Because then logically it should be dimmed when I select VFW.
    [​IMG]
     
  4. Andy_K

    Andy_K Master Guru

    Messages:
    844
    Likes Received:
    242
    GPU:
    RTX 3060
    This setting is the maximum fps encoding rate.
    If your GPU drops below the selected limit the encoder will stretch the display time of frames to have a fluid playback but there won't be 60 frames every second obligated in the encoded video it can be less with elongated display time. That's why it is variable.
     

  5. Unwinder

    Unwinder Ancient Guru Staff Member

    Messages:
    17,187
    Likes Received:
    6,812
    And I don’t think that I have wish/time to debate, sorry. Each video, with fixed and variable framerate ALWAYS MUST have some target framerate specified in the header to let player to guess approximate timestamp calculation strategy. It absolutely doesn’t mean that actual frames are timestamped on exact fixed timings.
     
  6. mzso

    mzso Active Member

    Messages:
    73
    Likes Received:
    1
    GPU:
    DUAL-RX580-O4G
    I see, thanks. Too bad it doesn't have an unambiguous name such as "capture fps limit", or "encoding fps limit"

    Okay. Cool. I just wanted to know what that option does because it wasn't clear. The option name is ambiguous.

    (Though I wonder why how the original fps value for x264vfw encodes becomes invariably 25, I guess it might be the codec default.)
     
  7. Andy_K

    Andy_K Master Guru

    Messages:
    844
    Likes Received:
    242
    GPU:
    RTX 3060
    Do you use option -zerolatency for recording?
    x264 --fullhelp
    Code:
    ...
    - zerolatency:
                                        --bframes 0 --force-cfr --no-mbtree
                                        --sync-lookahead 0 --sliced-threads
                                        --rc-lookahead 0
    ...
    this forces cfr (constant frame rate)
     
  8. mzso

    mzso Active Member

    Messages:
    73
    Likes Received:
    1
    GPU:
    DUAL-RX580-O4G
    Hmm... I missed that.
    Though how is it that the resulting file has these properties:
    Frame rate mode : Variable
    Original frame rate : 25.000 FPS
    So it is CFR despite this?
    Per chance could you tell me how can I disable this option specifically? (overriding -zerolatency)
    Udate:
    Even more interesting that the encoding settings I see via Mediainfo doesn't show this:
    Code:
    Writing library : x264 core 152 r2851bm ba24899
     
    Encoding settings : cabac=0 / ref=1 / deblock=0:0:0 / analyse=0:0 / me=dia / subme=0 / psy=0 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=0 / chroma_qp_offset=0 / threads=12 / lookahead_threads=12 / sliced_threads=1 / slices=12 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=0 / weightp=0 / keyint=250 / keyint_min=25 / scenecut=0 / intra_refresh=0 / rc=cqp / mbtree=0 / qp=0 
    And I get the same thing if I add all the options of --zerolatency manually beside --force-cfr.
     
    Last edited: Mar 27, 2019
  9. Andy_K

    Andy_K Master Guru

    Messages:
    844
    Likes Received:
    242
    GPU:
    RTX 3060
    So opposed to your statement getting fixed 25fps this shows your video does not have cfr but vfr with possible varying display times for some frames. The target (output) frame rate is 25fps, does not mean the video file contains 25 frames every single second.
     

Share This Page