New project settings and rendering UI

It’s no secret that PiTiVi‘s “project settings” and “rendering” dialogs were huge, rigid, and, as Linus would have called them, stupid and ugly:

Until now, that is. Say hi to one of the most invasive and anticipated refactoring/set of bugfixes of the year: Brandon’s new templates/project settings/rendering system (which he blogged about recently [1] [2] [3] [4] [5]), based on the 2nd version of my mockups from 2009, with some minor UI fixes coming from my own git repo.

This is MASSIVE. The git log doesn’t do justice to the amount of work that Brandon has put into this. Here’s a vague attempt at expressing the epic, all-encompassing, jaw-dropping nature of those changes:

  • The changes that were merged just now: 37 files changed, 2719 insertions, 1724 deletions
  • The project scales back as far as october 2009, if you consider the previous attempt, which was: 19 files changed, 1429 insertions, 415 deletions
  • Thanks to this, I was able to close at least twelve bugs in our bug tracker: 432723, 403904, 580167, 584048, 585737, 592248, 593682, 611856, 614758, 615337, 629606, 630608

This is one of those “unsexy” architectural changes you have to do in order to significantly improve an application and expand its capabilities.

So, how does it look like, now?

Project settings

This where you set the global settings in your project (so that the previewer widget knows the proper resolution and aspect ratio to use, among other things). What you set in this dialog will be used for the rendering dialog as default values. You can create your own presets (like I did here) and use esoteric custom framerates.

We don’t ship presets by default, but probably will one day (need someone to implement that, patches welcome).

Rendering dialog (basic settings)

Here you can choose the container format and the video/audio codecs to be used for rendering. The resolution and framerate are based on the global project settings, but you can override them and say, for example, “render my 720p24 video at 12 frames per second and 25% of its resolution” for a quick preview/test.

I do that all the time while testing, and the new rendering workflow is a life saver.

By the way, I discovered that the scale is not limited to “100”, you can actually go up to 9999. Some may consider this a bug, I consider this a feature.

Rendering progress dialog

Progress is now shown in a separate dialog. Yes, you can now pause and resume rendering. No, the “frames per second” and “estimated filesize” stats are not actually implemented yet (patches welcome).

Look forward to this in the next release.

14 thoughts on “New project settings and rendering UI

  1. “We don’t ship presets by default”
    i don’t understand : the GUI seems to be based on presets !

    The cancel button icon looks like a record button ?! (cf gnome-sound-recorder etc)

    Rendering dialog :
    Scale = 50… is it 50% ?
    Whereas Project settings says pixels, fps etc. Rendering dialog doesn’t say % nor pixels…

    Rendering progress dialog :
    I would have understood “about 5 minutes left” but “about 5 minutes 42 seconds left” sounds ridiculous…

  2. Project settings :
    Framerate : what does 24M stand for ?
    Pixel Aspect Ratio : isn’t it strange to set Square and to have another field that can be set which says 1:1 ?

  3. i don’t understand : the GUI seems to be based on presets !

    As I said, simply because nobody implemented it yet.

    The cancel button icon looks like a record button ?!

    That’s gnome-icon-theme 2.32’s fault.

    Scale = 50… is it 50% ?

    Yeah. I didn’t care enough about that detail at this point, just wanted the damn thing to be merged :) at the same time, I’m unsure where to put the % symbol, considering that we also show pixels on the right… may get a bit cluttered.

    I would have understood “about 5 minutes left” but “about 5 minutes 42 seconds left” sounds ridiculous…

    You obviously haven’t used it. It scales with increased precision as time goes down. It only show seconds when the time is <10 minutes (or <5 minutes, I don't quite remember). Otherwise it shows "1 hour and 45 minutes", "20 seconds", etc.

    Framerate : what does 24M stand for ?

    No friggin idea. Special syntax for framerates because most of them are not decimal numbers, but fractional… and I had a pretty big debate with Brandon about how to represent and parse custom framerates. His solution seems like a decent compromise.

    Pixel Aspect Ratio : isn’t it strange to set Square and to have another field that can be set which says 1:1 ?

    This is to allow having both human-readable presets and esoteric custom aspect ratios. You wouldn’t believe the amount of weird shit we have in the video editing world:

    http://en.wikipedia.org/wiki/List_of_film_formats
    http://en.wikipedia.org/wiki/List_of_common_resolutions
    http://en.wikipedia.org/wiki/Frame_rate

  4. It looks like a great improvement to me, but now I’m missing a way to save the codec settings to my project: if I close the rendering dialog and reopen it, everything is reset to the default ogg format stuff.

    Also you should fix buttons width: if you pause the rendering (and the button text changes), the button became quite larger then when rendering (at least in Italian).
    Look yourself: http://dl.dropbox.com/u/212852/pitivi-rendering-dialog.png

    Thanks and keep rocking! ;)


  5. Gabriel Burt:

    Just one HIG nitpick, in the Project Settings dialog, the radio buttons’ text labels should be Sentence case, not Title Case. See http://library.gnome.org/devel/hig-book/stable/design-text-labels.html.en#layout-capitalization

    I know about that rule, but I think the reason I didn’t change that is because it’s a technical term that usually has caps (Pixel Aspect Ratio aka “PAR” and Display Aspect Ratio aka “DAR”); even http://en.wikipedia.org/wiki/Pixel_aspect_ratio#Introduction has capitals… I’m still a bit unsure about this.


    Ulisse:

    It looks like a great improvement to me, but now I’m missing a way to save the codec settings to my project: if I close the rendering dialog and reopen it, everything is reset to the default ogg format stuff.

    Hmm, this is probably https://bugzilla.gnome.org/show_bug.cgi?id=587095


    Ulisse:

    Also you should fix buttons width: if you pause the rendering (and the button text changes), the button became quite larger then when rendering (at least in Italian).

    Not sure how this can really be fixed. You can’t set a fixed width on a button because you would never know what it would look like in various languages when the text changes… no?

  6. “That’s gnome-icon-theme 2.32′s fault.”
    I’ve filled Bug 637031

    “I’m unsure where to put the % symbol, considering that we also show pixels on the right”
    Maybe :
    Scale (%) 50 (640×480 pixels)
    or :
    Scale (%) 50 = 640×480 pixels

    “You obviously haven’t used it. It scales with increased precision as time goes down. It only show seconds when the time is <10 minutes (or <5 minutes, I don't quite remember). Otherwise it shows "1 hour and 45 minutes", "20 seconds", etc."
    Yet, displaying precisely remaining time (minutes+seconds) doesn't fit with "about"

  7. “This is to allow having both human-readable presets and esoteric custom aspect ratios.”
    If I’m not mistaken both fields act on the same setting. I would expect one to be greyed out while the other is modified to let the user understand that he doesn’t have to set both

    About Presets, will there be a way to help user to choose between PAL/NTSC settings (maybe a filter) ?


  8. antistress:

    If I’m not mistaken both fields act on the same setting. I would expect one to be greyed out while the other is modified to let the user understand that he doesn’t have to set both

    Well, one modifies the other automatically. You can’t really desensitize/grey out one based on what the user touched first… otherwise, how do you re-enable it?

    About Presets, will there be a way to help user to choose between PAL/NTSC settings (maybe a filter) ?

    There are standard framerates and aspect ratios for PAL/NTSC/others, but no default presets. On my local computer, I have presets for most mainstream formats, but there would need to be someone to implement a feature where we can provide those default presets.

  9. I’m very concerned about two things on the projects and rendering dialogs:

    1. No ability to set progressive/lower-field-first/upper-field-first field order.

    2. I would like to set the pixel aspect ratio, for let’s say widescreen NTSC DV, as 1.2121. But the way the input format is displayed in your screenshot, is 1:1, or something like this, which is not correct as something as 1.333 or 1.2121.


  10. Eugenia:

    1. No ability to set progressive/lower-field-first/upper-field-first field order.

    Yeah, that’s certainly because deinterlacing still isn’t implemented (I think). Last time I overheard something about it (not long ago), superdump was still working on it.

    On a sidenote, I’m a bit surprised you still deal with interlacing these days, I thought you were using mainly 720p and 1080p footage.

    2. I would like to set the pixel aspect ratio, for let’s say widescreen NTSC DV, as 1.2121. But the way the input format is displayed in your screenshot, is 1:1, or something like this, which is not correct as something as 1.333 or 1.2121.

    Actually, 1.2121 and 1.333 is not “strictly” correct, as those are fractional numbers with infinite decimals. Technically, that “1.2121” is 44:33 according to http://en.wikipedia.org/wiki/Pixel_aspect_ratio#Pixel_aspect_ratios_of_common_video_formats

    But, if that can ease your concerns, the UI already has presets that handle those aspect ratios (you don’t have to remember those fractions for common aspect ratios). My screenshot was just using the default values.

    I just tested the following: set the resolution to 704×480 (assuming this is what you use instead of 720×480, otherwise I have no idea how you can achieve that 1.2121), and told it to use the “DV Widescreen (16:9)” DAR, which sets the PAR to “480p wide”, that is 40:33 (which is ~1.2121…)

    I tried entering “1.2121” directly in the PAR text entry instead, and I *think* that it parsed it correctly, but I’m not sure because I don’t have the footage to test. If you’re still worried, perhaps you could provide me with small video samples of aspect ratios you are concerned about?

  11. re: 720p and 1080p footage.

    Many consumers use small point and shoot cameras and camcorders. A LOT of these record in 50i / 60i framerates (AVCHD). Many times there is not even an option for progressive scan except at lower bitrate / quality settings.

    It’s essential to support de-interlacing.

  12. I’m not saying deinterlacing is not important. I’m just saying that I’m surprised that Eugenia is still dealing with this crap :) I thought that she was using 1080p everywhere.

Comments are closed.