Stuttering playback with speed adjustments



  • I need some advice how to get the smoothest stutter-free playback as possible with Isadora 2

    I run shows with symphony orchestras where I synchronize movies with live playback. You can have a look at the attached izzy file where I control the tempo with a standard midi controller with the pitch/modulator wheels.
    Usually I have two separate videos: Video1 (720p) running to projector and Video2 (720p) running on a secondary display connected to my MBP 15" Retina. Video2 is same as Video1, except there is a built-in "visual click track" with both a pulsing metronome overlayed and a waveform display corresponding to the click + cues relating to the music (for example "cello pizz", "french horn", "coda" an so on..." This is how I can always be in "zipped" together in sync with the conductor and he can perform musically without the need for a click track. Isadora is a perfect tool for that since it's so flexible. 
    But here is the problem: It will play my 720p Prores 422 files perfectly and stutter-free in **interactive mode** if initializing a scene at **speed=1**. However when beginning to fiddle with the speed adjustment, it will begin to stutter - and sometimes even freeze for 1 second before continuing. This is why I reverted to the classic movie player with YUV disabled. In this mode I'm more or less back to the performance of Isadora v1, but at least the movie it will not freeze - but this is of course a big compromise, since I read that the classic CPU movie player will no longer be supported in future in v2.
    With the new GPU movie player/projector  I tried all possible combinations - **YUV on/off**, and both **performance mode/interactive mode.** In performance mode it's really bad**. **I should also mention that i run the show at 50 f/s even with 25 f/s material, since it gives me the least stutter, specially when speeding up. FPS is usually around 35\. I also tried the HAP codec, but it's even worse stutter-wise when adjusting speed. I run the show from 1st generation MBP retina, but it's more or less the same results when trying a friend's latest generation MBP 15" retina. 
    Any suggestions on how to improve the performance stutter-wise? It seems like my computer is up to the task - running the movies perfectly smooth when not adjusting speed - especially with the new movie player/projector. And then a slight touch on the speed adjustment simply breaks the smooth flowing appearance into this uneven stuttering look. The strange thing is when reverting to **speed=1** it will NOT return to the smooth flowing playback - it simply continues stuttering. Since a lot of my work has aerials (from paraglider) it is especially very noticeable when the movie is stuttering.
    Kind regards,
    Jacob

    dfb1e2-speed-adjustment.izz



  • Hi Jacob,
    I had a similar problem, maybe that's the same for you (http://troikatronix.com/troikatronixforum/discussion/1859/movie-player-vs-classic-movie-player-interactions-issues#latest)
    Marks explanations are precious.
    Try to add a multi-blocker before the speed input of each player. (0,1s to 0,05s)

    Maybe it will solve your problem.

    Best

    Philippe



  • Thanks Philippe,

    Tried that, and maybe it helped a little. 
    But in my case I think it was the problem especially to have two movie players running parallel and receiving the same speed input. I simply replaced the "click track player" with a Direct Movie Player and slaved the position output of the first movie player to the position input of the direct movie player. So it's simply following the position output and is not receiving any speed inputs at all. Movie2 speed is at 0\. I get even better performance by also having the Movie1 player replaced by a Direct Movie Player. However no fades between scenes, effects, video mixing or overlaying of text is of course possible with Direct Movie Player, but I get almost consistent 50 FPS!

    8bd6cf-speed-adjustment.izz



  • Dear @Jacbo1970,

    There is a problem that @fifou has identified of being able to "overload" the new Movie Player with speed changes. This is because the new movie players all run in a separate, background application. Messages are being sent from the main app to the background movie player app to control it, and it is possible – when sending lots and lots of messages – to overload it. We have this filed now as a bug report and it will get fixed.
    The Movie Player Direct may solve the problem, but that's because it bypasses _everything_ in Isadora and renders directly to the screen.But the real problem – with both the Movie Player Direct and the Classic Movie Player – is simply that they will often crash in 10.9 and 10.10 if you are playing more than one movie.
    Apple ceased improving or fixing bugs in QuickTime a few years ago, so this is only going to get worse over time. (And, who knows, Apple may kill quicktime entirely in Mac OS 11; I was surprised they didn't do it in Yosemite frankly.)
    You should also know that smooth speed changes like this are _impossible_ in AVFoundation. As I was developing 2.0, I tried lots and lots of approaches to work around this because I knew it was important, but I could not find a solution. If the movie is playing at some non-zero speed, then every single time you change the speed in AVFoundation – no matter how small – there is a very noticeable pause. So, for sure, the only way to do this is to set the 'optimize' input to 'interaction' so QuickTime is used instead of AVFoundation.
    As a developer, you can imagine how frustrating it is for me when a newer technology (AVFoundation) omits critical features that were present in an older one (QuickTime.) But as the new, gold "bling" MacBook indicates (at least to me) Apple is no longer focused on the needs of people like ourselves.
    Anyway, all rights aside,, we will address the speed change bug when in 'interaction' mode. We'll fix it so that you can simply feed the speed changes to the Movie Player directly without any trouble and hopefully with minimal glitches. But you can expect this to take some time -- a couple of weeks at least, as it will require some deep-down changes.
    In the meantime, the workaround would be to use the Classic Movie Player, which is QuickTime based, and plays in the main Isadora app instead of in the background. But just know this greatly increases your chance of experiencing a crash.
    Best Wishes,
    Mark


  • OK - I see. This is a bit worrying for my future work!! The thing is: I get bad performance in performance mode with both prores, PhotoJPG and even worse with HAP (running from SSD on two stages) So if quicktime is no longer an option - it's a dark future for me...

    BTW - what are options if running from PC?
    Jacob


  • Dear @Jacbo1970,

    Well, I didn't mean to sound too dire here. Please take my words with "a grain of salt."

    First, until Apple actually kills QuickTime, nothing will change significantly. And, in case it's not clear, the crashing problem when using QuickTime is only when using the old (Classic) movie players. The new Movie Player in 2.0, which uses the faceless background app, is safe from these crashes. That's why I changed the whole system. To allow us to keep QuickTime and the benefits it offers as long as possible.

    AVFoundation is very good in many respects. It is far more efficient that QuickTime. I can easily play four 1920x1080 H264 movies on my laptop, which has a slow, 5400 RPM drive. QuickTime can't even come close to this performance. AVFoundation also distributes the load among the cores better, and is totally safe when it comes to playing multiple clips at the same time. So, as long as you're not changing the speed interactively, AVFoundation works really well. And there are a lot of Isadora users for whom this is very important, because their only purpose is to cue video clips and play them at normal speed.

    The thing is, while people have used this technique of connecting the position output of one movie player to the position input of another, it is not recommended. (At least not by me.) While the QuickTime API allows you to do this, it is totally inefficient because QuickTime has to do a lot of work each time you jump to a frame. It's really not a good technique in my opinion.

    I also want to be sure of this: the stuttering problem is only if you start messing with the speed interactively. Unless I'm wrong, if you simply set the speed (even if it's not 1.0) when using 'interactive', you get stutter free playback. it is only upon changing the speed interactively that there is problem. Is that correct?

    In any case, there is no reason that the faceless background QuickTime player should not be able to react to speed changes in the same was as the Classic versions, because it's still QuickTime in the end. It's a bug. And we'll fix it as soon as we can manage. But, like I said, it may take some time.

    Try the Classic Movie Player or Texture Movie Player for now, and we'll let everyone know when the issue is addressed.

    Best Wishes,
    Mark



  • Thank you Mark for this explanation. Well - actually it stutters far lees when making speed adjustment to a single New Movie Player - and then slaving the position of that player to a 2nd Movie Player Direct. You will not recommend this - I know - but it works the best for me. When having speed adjustments to TWO Movie Players - this is where the trouble begins for real - then the Movie will simply randomly freeze when changing speed - and then just stutter wildly. But You are correct - when initializing the scene with the speed simply adjusted to for example 1.1 - there is no stutter.


  • Tech Staff

    I know you said you have tried Hap, but have you tried it for the slaved (video controlled by position input) video?
    If Hap is used in Interactive mode, it should allow for the smoothest 'scrubbing' of video (at least my tests showed it to be the most interactive format)


Log in to reply
 

Looks like your connection to TroikaTronix Community Forum was lost, please wait while we try to reconnect.