This project is read-only.

Suggestion - Reporting Source FPS if Variable

May 28, 2011 at 4:28 PM

This one may not be possible, but I figured I propose it anyway, just in case it was possible.  I like the idea of showing the user the original source's framerate right in the main interface.  This saves the user from having to open the scan log and muddle through the tech jargon to hopefully be able to find the desired title's original fps.  It's really nice to see it right up front like you have it.  However, the fps figure can be deceiving if the source's framerate is variable.  A user may just click on same as source, thinking it is a constant framerate.  But then when they try to stream the encoded file through their favorite media server hardware, it "bonks out" on them.  In addition, sometimes the reported framerate (if variable) is not the ideal framerate to choose.  Say the user realizes that the figure may be just the reported framerate, they realize that it may really be variable.  So they go ahead and pick a constant framerate that corresponds with the reported framerate from the source.  This still may not produce the best video.  For example, for most of the variable framerate videos that I've encoded, the reported framerate (that I used from either mediainfo or Handbrake's scan log) was 29.97 fps.  However, choosing a constant rate of 29.97 revealed a lot of jerkiness, especially in panning shots.  23.976 was actually a better framerate to force and revealed much smoother video.  This was true when I encoded: Star Trek Next Generation, DS9 and Voyager; Quantum Leap, Sliders, Smallville and (i think) Stargate SG-1.  They were all variable, all reported 29.97, but needed to be encoded at 23.976.

I tried out Handbrake's fairly new feature where you choose "same as source", but pick "constant framerate" in the radio button right below the "same as source" drop-down box.  It's supposed to guess the reported (i think they called it the nominal) framerate of the source and force that framerate as constant.  I thought it was going to be a great feature.  Because any time I attempt to encode a new t.v. series, I have to test it out by encoding samples at both 23.976 and 29.97 to figure out what's the best one (in some rare cases, 29.97 was actually the better to choose).  Well, I tried that for Smallville, which Handbrake chose to encode at 29.97...the reported/nominal framerate.  This yielded a terrible jerky picture in most of the scenes.  So I forced 23.976 and it was silky smooth.

I guess the bottom line there a way to know if the source has a variable framerate?  You could still post the reported/nominal framerate, but the user could be warned/flagged that it was variable, and then could choose a constant framerate instead of same-as-source...or at least they would know to look out for problems if they intend to stream via a hardware media server.  If it isn't possible to determine if the source has a variable framerate, maybe just a little warning or disclaimer, maybe even just a tool-tip if you didn't want to clutter up the interface, or didn't want to throw up a message box to warn the user...could inform the user somehow, that the reported framerate may be variable, because if so, there may be implications that are involved with that fact.

Sorry for such a long-winded explanation.  I realize this may not be possible.  It's just a suggestion, for what it's worth. 

May 28, 2011 at 7:49 PM

Hmm, I'll need to update that UI; I don't have that CFR/VFR choice on Same as source yet. But I checked the data I get back on the title and it doesn't seem to have any information about if the framerate is variable so I don't think I could help you out here.

May 29, 2011 at 12:17 AM

Yeah...I was afraid of that and kind of suspected as much.  As far as the ui for cfr/vfr same as me it is a fairly useless feature.  I thought it was going to be a great feature until I tried it out.  The user can be tricked into thinking they did something wrong if like in my examples, they choose same-as-source/constant thinking the encoder will pick the best rate and force it as constant.  In most of my examples, that would have produced a bunch of files at 29.97 when they should have really been 23.976.  Just because mediainfo or any other program reports 29.97 (or 23.976) as the nominal framerate (if it's variable), doesn't mean that forcing that rate is the best choice.  And in a sense, your u.i. kind of already makes this easy for the user to do if they want to.  All that this new Handbrake feature does is: instead of the user having to look at the scan log for the reported/nominal framerate, it automatically chooses the reported framerate for you and forces that as the constant framerate...which like noted, can often be a bad choice.  So to me it is a kind of dangerous feature unless you know and keep in mind that it may not choose the best framerate.

With your interface, the user already has access to the reported framerate.  So if the user want the same as source no matter if it's variable or not, they can choose same as source.  If the user knows that they always want a constant framerate, they don't need an option for vfr/same as source.  They simply choose the constant framerate that you show (which was reported) as the source framerate.  Unfortunately this may give them a choppy picture (if it is variable and fits into the category I mentioned earlier).  That's why I was hoping it might be possible to notify the user...but alas.

Not sure if getting my point clearly across.  I'm finding it hard to explain in a post what I mean.  But I hope/think you get what I'm talking about.  I suppose the bottom line is that it's unfortunate it's not possible to tell if a source is variable.  And that a cfr/same as source feature is not really necessary since you are already giving the user the reported framerate for the source up front.

Thanks again for everything! I love your software!