Results 1 to 2 of 2

Thread: Variable frame rate NDI sender

  1. #1
    Registered User
    Join Date
    Oct 2017
    Location
    Brussels
    Posts
    2

    Variable frame rate NDI sender

    Hi,
    Our application supports NDI output. The frame rate is not fixed. The application processes a new frame each time anything changes in the application, or when a new movie frame is available. It means that if the user plays back a 25 fps movie, it will process 25 images per second, if the user starts a transition to a new movie, we'll fade to a new movie (running at maximum FPS during transition - generally 60 FPS - depends on monitor frequency), then we'll run at the FPS of the other movie.
    Actually we say the FPS is maximum but we call NDIlib_send_send_video_async_v2 only when the engine processed a new frame. When recording with NDI Recorder, the movie is running much faster because this application thinks we'll send at fixed frame rate. That's why I think we might have to change the implementation.
    Should we change the NDI_video_frame.frame_rate_N / NDI_video_frame.frame_rate_D at each frame we send ? Is that accepted ?
    Or should we always send at max FPS from a separated thread, even if we might send the same frame many times ?
    Thanks !

  2. #2
    Registered User
    Join Date
    Aug 2015
    Location
    london
    Posts
    200
    Quote Originally Posted by matt.beghin View Post
    Hi,
    Our application supports NDI output. The frame rate is not fixed. The application processes a new frame each time anything changes in the application, or when a new movie frame is available. It means that if the user plays back a 25 fps movie, it will process 25 images per second, if the user starts a transition to a new movie, we'll fade to a new movie (running at maximum FPS during transition - generally 60 FPS - depends on monitor frequency), then we'll run at the FPS of the other movie.
    Actually we say the FPS is maximum but we call NDIlib_send_send_video_async_v2 only when the engine processed a new frame. When recording with NDI Recorder, the movie is running much faster because this application thinks we'll send at fixed frame rate. That's why I think we might have to change the implementation.
    Should we change the NDI_video_frame.frame_rate_N / NDI_video_frame.frame_rate_D at each frame we send ? Is that accepted ?
    Or should we always send at max FPS from a separated thread, even if we might send the same frame many times ?
    Thanks !
    The answer to your question depends on what the destiny of your NDI Content is intended to be.

    If its intended to enter a broadcast chain, or any process which expects a regular frame rate, as with traditional video signals, then you are likely to run into trouble unless something downstream is explicitly setup to tolerate this sort of signal, with a Frame Sync or other mechanism.

    If the *only* intended use of your NDI Output is to display on an NDI device which tolerates arbitrary frame rates etc, then you are possibly OK.

    Technically speaking you should declare your frame rate correctly, but equally - changing it repeatedly is like to really upset other pieces of NDI Gear.

    On balance - the right answer is probably to send at a Max rate all the time. Other software, including ScanConverters often fail to deliver the frame rate they promised, so your case is not that unusual.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •