ffe v2.5 RC3

v2.4.9.3   (V2.5rc3)

+ Added the facility to have automatically-populated codec drop-downs. ffe
will grab the latest encoders list from FFmpeg and parse it to produce a
list of audio and video codes for your codec drop-downs. Fairly groovy.

If you like to have *all* the available codecs in your drop-down, this
is for you.

If you like to switch binaries, this is for you, too. This automatic
list will reflect the codecs available in your current binary, as soon
as you switch binaries.

You can toggle Automatic Codec DropDowns from the app menu. When enabled
you lose the ability to add/remove items; indeed there is no context
menu for the codec drop-downs at all in this mode. There is no need to
add; you have ALL the available codecs in your drop-down!

You can switch between your own list and the full (auto) list without
destroying either. There is a HotKey (F7). You can keep your own list as
a set of "favourites", and toggle back-and-forth as required.

By the way, if you want a FULL list that you /can/ edit, here's a trick:

Enable Automatic Codec DropDowns (F7).

In your ffe.ini, set either/both codec lists to empty (and save it):

video_codecs=
audio_codecs=

Disable Automatic Codec DropDowns (F7).

On discovering the list(s) empty, ffe will populate the drop-down with a
set loaded from the current FFmpeg binary. Now you have the full list
AND it is editable.

|Note: If only one of your lists is empty, ffe will only populate that
one, leaving the other as-is.

NOTE: If you do not make an actual edit (right click the combo/drop-down
and add something, anything), even a quick fictional one, ffe will NOT
save the generated list to your ini file.


+ Added an App Menu (submenu) for the Post-File controls. Things you
previously had to hack into your presets manually. Namely..

post_file_run_style=direct/dos/shellexecute

..How to run the command.

post_file_capture=true/false

.. Whether or not to capture output to the console.

post_file_show=true/false

.. Whether or not to hide the invoked program.

See "Post-File run options", further down this document, for more
details about what these settings do.



v2.4.9.2 (V2.5rc2)

Reorganised the source package and now using AutoIt Beta (3.3.15.3) to
build the binary.


Enjoy!

;o) Cor

ffe v2.5 RC1

After much sweat and, well, just sweat, ffe 2.5 is here. The details..


2.5   ("I do requests, Bob")

    Current release: v2.4.9.RC1


+   You can now set the pause hotkey to global, so you can pause/suspend
    operation even whilst ffe is not at the front. This function is usually
    set to the ScrlLock key which as you know, IS USED FOR NOTHING ELSE!

    This can be toggled from the app menu.


~+  Improved Find dialog (for searching in output).

    The window will also now remain on top during searching. Window
    position is now also saved and restored between Finds.

    By the way, if you hold down the SHIFT key when you open the Find
    dialog (with button/F3), you get Replace options. Quite why *you* would
    want this, I have no idea. But there you have it.


+~  Your recent files list now works globally, which makes more sense
    and less confusion. It will also automatically remove missing files
    from the recent files list (in the tray menu). These operations,
    like so much, are reported to the user in the console.


+   The recent files menu now shows only the base name of the files, as
    opposed to the full path. Clearly this makes for much neater menus.
    Way too much work went into this.


~   The Custom Buttons are now even more configurable. Well, the
    position, anyway. They have always been *completely* configurable!

    I fixed some positional issues, too, so everything should line up
    much better with the other buttons now, using the default settings.


~   There is no longer any theoretical limit to the number of rows of
    buttons you can create. You can fit six rows of buttons at 16px high
    (with a slightly smaller font), if you want *lots* of buttons.


+   Added new @tokens:

        @inputfile       =     Full path of input file.
        @appdir          =     ffe program directory


+   By popular request, I added two new buttons to launch quick tasks for
    ffmpeg and ffplay. These are of course configurable and to make them
    truly useful they accept @tokens.

    There are HotKeys for both buttons; F11 and F12, respectively.

        I like the logic: F1 (create) ==> F12 (play)

    Right-click the quick task button to edit the command. There is no
    context menu, the right-click takes you directly to the input. I like
    this system so much I've used it for the short test button, too. Enter..

        Right-Now-Click!

    Command output is piped to the console for ffmpeg commands and also
    optionally** for ffplay commands (for simply watching a video, ffplay's
    output is superior. For troubleshooting, choose ffe console)

    ** You can toggle this setting from the app menu, and more quickly with
    the HotKey: F6.

    Like other controls, the ToolTip for these buttons updates to show you
    the current setting. Another good reason to keep the ToolTips enabled.

    There are *loads* of uses for these two wee buttons. Setting the FFplay
    Quick Task to "@outputfile" seems like a no-brainer. The FFmpeg button
    can be anything you fancy. How about a quick Video->MP3 converter
    button..

        -i "@inputfile" "@parent\@item.mp3"

    Or one-click image extractor..

        -i "@inputfile"  -r 1 "@parent\@item_%05d.png"

    Imagination is the only limit! And the technical limitations of FFmpeg,
    of course. The button can't make espresso. At least, not a decent cup.


+   Shortcut (*.lnk) files are now resolved when dragging and dropping
    onto inputs/drop window.

    If you *really* want the old behaviour (inserting the shortcut file,
    rather than the linked file) hold down the SHIFT key while you drop.

    Though note, in that case, if you have automatic reporting for
    dropped items, you will, unless you have super-human reflexes and
    timing, get a useless media report for the .lnk shortcut in your
    default nfo viewer! Just, why?


+   You can now disable saving media reports. They will still appear in
    your console output, but won't leave report files next to the media
    files. Thank you! This setting is available from the app menu.


~   When you click on the "input:" label (to the left of the file input)
    rather than simply open the media file's containing folder, ffe will
    now open the folder in Explorer with the media file *selected*. W00!

    If the file in the input does not exist, the label flashes red,
    instead.


+   The positions of ALL the wee dialogs** are now remembered after you
    close them so they will open up in the same place next time.
    NOTE: if you cancel or OK an empty value, the position is NOT saved.

    ** Edit buttons, rename presets, set test length, etc., etc..


~   Cleaned up the console output. There sure is a lot of it these days.


+   You can now disable ToolTips over the console output area (where they
    can annoy) whilst retaining the useful tips over your other inputs and
    controls..

        allow_console_tooltip=false

    This setting is available from the app menu >> Visual Preferences.


+   You can now have ffe run your drag-and-drop command on files supplied on
    the command-line (or your retained settings), so when you launch ffe
    with a file (e.g. from your SendTo menu), it will immediately produce a
    media report, or just process it immediately, or whatever.

    This setting is available from the app menu.


+   Added a new drag-and-drop command; "Play", which plays the dropped file
    with FFplay, using your regular settings.


+   Also added "Generate", which generates an ffmpeg batch script, just like
    shift-clicking "do it!" or running ffe with generate(preset) on the
    command-line.


+   Added keyboard accelerators for ALL the app menu commands.
    Hit Alt+Space and away you go!


+   Added a tray menu option to open the data folder. Cleaned up the
    ordering of the tray menu, too. More logical.


+~  Added and improved help messages, console output and other useful
    goodies. The window title is now used for more messages, too (e.g. when
    you copy the console to the clipboard).


~   If you launch ffe with the Shift key held down, it will ignore your
    previous exit settings and use the defaults. This has been true for a
    while but I didn't take a note of it anywhere.

    This action will now also disable retaining exit settings so that they
    will remain intact after re-launch, should you wish to enable the
    facility again (Ctrl+E), the old settings will still be there.

    As a side note, exit settings are now retained in your ini up until
    the point in time when they are replaced. If ffe gets killed for any
    reason, your exit settings will not.


+   Also, if you have exit settings disabled, and then enable it, ffe will
    offer to load your previously-stored exit settings (if you have any).


~   In the case of freak naming conflicts during unattended operations,
    ffe will now use a timestamp, rather than a random string, for the
    conflicting name's suffix.


+   You can now add video and audio codec to the lists from directly within
    the GUI (right-click the control). There are *hundreds* of these you can
    add. Only popular formats are included by default. Go nuts. Or rather,
    add what you need.


+   Similarly, you can now remove codecs the same way.


~   ffe now stores backup ini files inside the subfolder; "Backup", inside
    your data directory. Sorry.


+   You can now change the default extension from inside the ffe app menu.
    This is the global setting. As before, you will need to hack the setting
    into your presets if you need this set at the preset level.

    There is also a HotKey for this: F2.

    You can stop bugging me about this now!

    It should be noted that there is rarely any need to set this directly.
    ffe takes care of the extension mostly automatically. The default is
    used only as a fall-back when, for some reason, ffe can't determine the
    extension.

    Note: You can set this on a preset level. There is an edit item in the
    preset drop-down control's context menu.

    But again, you should not need to. Or at least, very rarely!


+   Added a few more GUI menu items, so you can get to more of the many many
    settings hidden away inside ffe.ini.


~   When saving a preset, ffe now only saves the settings you actually
    changed (mostly). The actual data saved is reported to your ffe console.


~   batch_commands_timeout and batch_commands_timeout are no longer saved
    automatically on a per-preset basis (they were simply copying the master
    settings anyway, as there is no way to alter these from within the ffe
    GUI). Users advanced enough to be using this stuff can add parameters
    to their presets manually, if you so desire, along with any of the other
    script control settings.


+   There is now an "About ffmpeg" option in the app menu and tray menu
    (beside the About ffe entries) so you can see the current version of
    whichever ffmpeg binary you are working with. The output is piped to
    your ffe console.


~   The default extension for the ffmpeg-generated help files is now "txt".
    You can change this in the help button preferences.


~   Removed the limit on the number of help button you can show in the GUI.
    Also the magic used to place them. There is a trade-off between the
    space taken up by these buttons and the space taken up by the custom
    command buttons. You will find balance.

    TIP: If you create enough custom buttons to fill a rectangular block
    MINUS ONE, you leave the bottom-right corner empty and a large number of
    help buttons will slide in comfortably.


+   Added an automatic extension mapping for "gif". ffmpeg can output
    animated gifs, by the way. I really must put these mappings into some
    kind of user preference.


+   Added quite a few app menu items so you can get to more of the hidden
    ffe settings. I don't think there are many left.

    I also moved a couple of prefs around to hopefully make things more
    logical.


~   The flag that tells ffe you already created a particular help file (with
    FFmpeg) and to simply re-load that instead of re-creating, is now unset
    when you load a fresh FFmpeg binary, in case the codecs and what-not
    have changed.


+   You can now disable the "with file paths" checkbox altogether, so file
    paths never get saved with or loaded from presets. A ToolTip will still
    appear over the control's area, informing the user that this preference
    has been disabled inside ffe.ini.

    File paths will always be remembered between sessions however, if you
    have "retain exit settings" enabled.

    Also, if you launch ffe with go(<preset-name>) and there is an input
    file specified, ffe will load that inputfile (which may have wildcards).


~   ffe will now report to your console if you attempt to create a media
    report from a missing input file.


~   The delimiter used to separate commands from comments inside the custom
    buttons has been changed from "|" to "***", as the pipe interfered with
    certain FFmpeg advanced commands. Sorry.

    You will need to update your buttons manually. Again, sorry. This is
    easiest in a text editor, though shift-clicking any button will get you
    to the gubbins. If you have lots of buttons, you definitely want to do
    this in a capable text editor; it will only take a few seconds..

      Select the entire [custom buttons] section, replace "|" with "***".

    I have also made this available as a preference in your ini file. So you
    can keep the old behaviour if you prefer, update at leisure, whatever...

        button_delim=***


~   The HotKey to abort the current task is now Ctrl+Q, which a) is more
    in line with the "q" we send to ffmpeg itself to quit, and b) works,
    which F4 seems not to any more. I may investigate. But then again, maybe
    not; F4 is too easy to hit by mistake!

    Pause/Break still aborts *everything*.


*+  Fixed the F9 Drop Window toggle not working in recent Windows builds and
    improved it so it works no matter if you have the main GUI or drop
    window at the front. So long as ffe is at the front, F9 toggles the Drop
    Window.

    We're using twin-accelerators now, so it goes *really* fast!


~   On the subject of accelerators, I've re-coded most of the HotKeys to
    use GUI accelerators now, so there is no chance of those HotKeys
    interfering with other apps / being unavailable / etc..


+   The current state of the tri-state controls is now shown in their pop-up
    ToolTips. Of course, you can see their state from the GUI, too:

        Checked     = Enabled
        Unchecked   = Disabled
        Filled      = Unset


+   A simply mad amount of console and debug reporting. You want data? You
    got data!

    btw, "The data say" is good English. "Data" a plural. Unless we are
    talking Star Trek; in which case "Data" is a sentient android seeking
    humanity. The singular is "datum". But seriously, who says "Datum"?


~   Removed legacy (pre v0.9) pref handling. It's just confusion in the
    code and there's really no need for it any more.


~+* Ctrl+A will now select all the text of the control you are in, as
    opposed to only the console output. This only works in controls that
    normally have more than a few characters in them, so not for codecs and
    what-not (their text is automatically selected when they get focus), yes
    for parameters and file inputs.

    And the console, of course. Another pet annoyance bites the dust!


+   You can now add and remove help buttons from directly inside ffe. Right-
    click any help button for options.


+   You can now also edit help buttons from directly inside the GUI.


~   When you wipe a preset, ffe makes a backup, as ever. If you wipe a
    preset with the same name again, ffe takes a backup of your previous
    backup before creating the backup. That's two backups. No more.


+   You can now restore preset backups from directly within the ffe GUI.
    Shift+Click or Right-Now-Click the wipe button to get to the backup
    chooser.


+   Added a "Restart ffe" option to the tray menu. There is also a HotKey
    for this: Alt+F5**. This is useful if you need to reload after changing
    some global preference, and other stuff.

    **  This, like so much else, will become a thing.


~*  I re-organised and re-wrote some menus to (hopefully) make them more
    logical. Someone won't agree.


+   Drop Window Image Starter Pack..

    Added the facility to download a starter pack of images for your drop
    window. A small, tasteful, video-orientated selection.

    You can get to this feature from your ffe tray menu.

    There is a preference for the images' base URL, so you can use your own.

    image_pack_url=https://corz.org/windows/software/ffe/files/DropWindowImages/

    If you decide to roll your own for whatever reason (I can think of a
    few), upload a list of images, named..

        image_pack_urls.txt

    and drop it into the root images folder.

    Subfolders are fine; ffe will re-create those locally and make them
    available in your drop window's cascading images context menu. Pretty
    neat. All this is nicked from my upcoming app; BlobDrop.

    ffe will use this as a download manifest. The format of the file is a
    simple plain text list of image paths from the root, e.g.

        Film-Reel-Simple.png
        Folder-Videos-icon-By-Zerode_small.png
        Animated Gifs/Animated_film-strip-trans-by_Cor.gif


~   Updated the short test button to use "-frames:v" instead of "-vframes",
    which has been deprecated (it still works for now, but will be removed
    in the future).


+   You can use quit(preset) in place of run(preset) on the command-line, as
    it perhaps makes more sense. As usual, it runs the preset and quits.


+   Updated some of the detault custom button presets to be more in line
    with modern FFmpeg usage.


+   Added the current help command to the help buttons ToolTip, so you can
    see what the *actual* command is without editing the button.

    Lots of the ToolTips have useful dynamic information, by the way.


+   Added ini option to remove comments from your ini file, which is:

        clean_comments=true

    This will also happen automatically if your ini file grows to more than
    60KB in size, to prevent clipping if it were to reach 64KB in size; the
    theoretical maximum size for an ini file. For some reason.

    Contrarywise, if you want the original comments back and you ini file is
    small enough to take them..

        Inside ffe.ini

          Set:
            clean_comments=false

          Set your version number *anything* smaller.

        Restart ffe.


+   Post-File run options..

    There is now a few choices for how to run the post-file command, that is
    the optional command ffe runs after each completed file, usually, though
    not necessarily, "doing something" to the output file.

    Firstly, you can choose the method used to run the command..

        "Standard": Internal, direct, accepts arguments and > redirections.

        "dos": As above, but through Windows command interpreter (cmd.exe)).

        "ShellExecute": A simple mechanism enabling you to launch a file
                        using Explorer's default verb, usually "open".

    Generally you want the internal (direct) method, but if your console
    program isn't working as expected, try the dos option.

    Note: When using the dos method, you will need to put "quotes" around
    any path with spaces in it, including the path of the program.

    NOTE: Any quotes in post-file commands are encoded as '"' in your
    ini file. It all happens automatically from the GUI, but remember this
    if you are editing you ini manually.

    When running direct/dos you also have the following options:

      Post-File Command Capture     (true/false)

        Choose whether or not to capture the output (which will be visible
        in your ffe console). If you are capturing the output, you will
        obviously need to wait for the process to end. If your cammand is
        expected to take a long time, you may want to disable this.

            post_file_capture=true


      Show Post-File Command Window     (true/false)

        This sets whether or not we run the command hidden.
        By default we show the program window..

            post_file_show=true


    NOTE: Pre-Job, Post-Job and Post-File commands can all be saved inside
    presets, even the default preset. However, if you have any of these set
    and then load a preset with them unset, they will remain unchanged. This
    is by design..

    You can load a preset with some commands setup, then another preset
    without any commands, then (perhaps after some tweaks) re-save the
    second preset, except now it has commands ini it.


+   The preference kill_ffmpeg_on_exit=<true/false> will now be honoured
    when read from a preset. Though this is technically a global setting, it
    has potential usage inside presets, so can be manually added, if
    required.


~   The "reset" button now resets ALL parameters and settings, including
    any pre- and post-job batch files and post-file commands. This is more
    in line with what most users expect to happen and is less confusing.


~   Although the state of the tri-state job buttons (overwrite, join, quit-
    when-done, shutdown-when-done) aren't normally saved to a preset unless
    they have been changed by the user (otherwise inheriting the defaults),
    they WILL now be retained between sessions, as to have half of them (the
    pre- and post- commands) remember and the others not, is odd if you
    don't understand the reasoning behind it, which was flimsy to begin
    with.

    NOTE: pre- and post-job command file locations, as well as post-file
    commands are grabbed fresh from your ini file before they are used, so
    you can edit these in the ffe GUI or your favourite text editor and the
    new batch scripts/commands will be picked up and used immediately.


+   You can now set a default audio file extension. This is rarely, if ever
    needed as most audio codecs map simply to file extensions.

    At any rate, it's now a pref: default_audio_extension=aac


~   Updated sample custom button Frei0r filters to use new syntax. I also
    tracked down a collection of x64 Windows DLL's (inside the excellent
    Shotcut) and put them in the goodies folder (see the ffe page) for you.

    Only some of these work. At least, my limited tests have only gotten
    some of them to work, albeit some of the funner ones. There is a list of
    the ones I got working, here:

        https://corz.org/windows/software/ffe/files/plugins/


+   In the event of conversion failure (perhaps a plugin parameter?) ffe
    will now clean up the empty files FFmpeg leaves behind.


+~  Fixed-up the logic of the pre- and post- job buttons. ffe will now also
    check for the existence of commands/batch files when you enable these
    features and move straight to the creation dialogs should any be absent.
    ffe will also inform you when pre-job and post-job command files load
    successfully, or not. Same with the post-file command.

    If these features are disabled/unset, ffe won't bother you about them.


+   ffe will now report the total time for a batch at the end of the batch.
    Quite an omission.


+   Improved the tracking of external commands, so you can see errors and
    such in the console.


                                     *** Fixes ***

*   Fixed a bug where ffe would annoyingly load the output file path (with
    MATOF, if enabled) even though you loaded a file on the command-line
    (SendTo, etc.). Now ffe will re-create the output path, as usual, from
    the input file. If you *really* want to get back the stored exit
    settings' output file path, click the MATOF button.

*   Fixed a bug where if you set a delayed start and there was an error
    creating the batch, the state (and the error message) would loop
    indefinitely, eating CPU. Thank the Teen Titans for spotting this one!

*   Fixed the version checking at the server end. Oops!

*   Fixed a bug where ffe wouldn't pass your Y/N response back to ffmpeg,
    as the ffmpeg developers had (finally) fixed that typo and ffe no longer
    recognised the question!

*   Cleaned up batch exiting so that total time and such are displayed in
    the console, just like regular jobs.

*   Fixed a lot of minor bugs as I went along. Things I noticed I'd not
    finished or not thought-out properly. Run a diff on the source if you
    want to see the many many changes. Some of these were recently
    introduced! Suffice to say, loads of wee niggles and annoyances have
    been taken care of..

*   Fixed the flashing buttons. Oops.

*   Fixed new dialogs appearing top-left instead of centre.

*   Fixed MATOF's often wonky target file handling (dragging a folder onto
    the output is still the best way to set the output).

*   Cleaned up the double+ ToolTips.

*   Fixed the resizing errors.

*   Fixed codecs not present in the combo list not loading from presets.

*   Fixed certain settings not being remembered properly (e.g. the
    store_filepaths state checkbox wasn't being saved).

*   Fixed the incorrect menu items.

*   Stopped empty log files being created. This may still happen
    occasionally in the beta, when I forget to remove temporary lines with
    debug_level=0, but it won't happen spuriously on every run.

*   Fixed the presets menu not refreshing after renaming a preset.

*   Fixed renaming sections from re-ordering the presets combo (the AutoIt
    built-in IniRenameSection() function does this, so I re-wrote it; with a
    sledgehammer).

*   Fixed a bug where renaming custom buttons would place the renamed button
    at the end of the buttons. This annoyed people. Again, unthinking use of
    built-in functions was the cause.

    We use a much more elegant solution now and while I was in there I
    cleaned up some other old scrappy code.

*   Fixed the button grid re-creating two, or was it three times when the
    GUI was resized beyond its minimum limits and ffe had to resize the GUI
    automatically. Now it will refresh a single time, as expected.

*   Fixed the "gone too far" flag (when the above happens) not being unset
    after an automatic correction, so the button grid was being recreated
    every time the window dimensions changed, or were checked, which is a
    lot.

*   Fixed a couple of spurious variables that found their way tagged onto the
    end of console lines.

*   ffe will no longer crash if forced to use an empty ini file; it will
    simply replace it with the default version.


*   Fixed a bug where load(), run(), etc. would not work if
    retain_exit_settings was enabled.

*   Fixed a bug where exit settings were being destroyed on quit if you
    launched ffe with load() on the command-line.

*   Fixed a bug where the mian GUI would appear briefly during a "generate"
    option.

*   Fixed a few bugs with the pre-job, post-file and post-job commands
    buttons, tootlips and loading. Everything should now work as expected.


*   Fixed a bug where your log location would get set to the system
    temporary folder unless it was set inside your current preset.

*   Fixed a bug where running a non-existant preset from the command-line
    would result in the batch running with the default settings. Now, if a
    preset does not exist, ffe will fail with an error.


*   Fixed concatenation not working. We now instruct FFmpeg to accept
    "unsafe" paths. We are also properly tracking the output so we can know
    these things.

*   Post-batch tasks will no longer run if the batch was aborted. Oops!

*   Fixed the text selection issues on the command-line display. You can do
    Ctrl+A in there, too, to select all text.

*   Fixed the q/n keys not passing to FFmpeg during a concatenation
    operation.

*   Fixed a bug where slashes were being "fixed" in shell commands when the
    user put @tokens in their batch files, mangling the flags as a result.


                                        ~ DEV ~

+D  Much improved error messages and debugging. You can set the debug level
    from 0 (off) to 10 (gobs), in your ini..

        debug_level=10

    This is useful for messing with the code or creating a bug report.

    Level 1 (the default) will reports only errors.

    We can also technically set debug_level=0, which will usually produce no
    output. This can be useful when we need to debug one particular section;
    we can add debug lines with the level set to 0 and we will see output
    for ONLY the section we are working on, which can save copious
    scrolling. The default level will display these messages too, of course.


~D  We now use CorzFancyInputBox() exclusively for dialog inputs, so no need
    to include InputBox() resources. CorzFancyInputBox() has a few
    advantages, not least of which, it remembers the positions of your
    various dialogs. If you like your rename preset dialog to pop up
    precisely under the control, just put it there one time. Done.

    All input dialogs now use the Consolas font for the input. This can
    also now be set in your ini file. If the font name has spaces,
    enclose it "in quotes".


+   You can now set the maximum debug log size. When this limit is
    reached, the file is archived and a new log is created.


+~  LOTS of internal code clean-ups, minor fixes and improved efficiency.


~   I moved a lot of the functions around to hopefully make things more
    logical. Forget running a diff.

    I also added dummy functions for easy navigation in any decent text
    editor. These have been growing for a while and are really useful for
    making and navigating to sections in your code.


+   Added a wee comment tag ("::dev::") above any items in the source code
    that I consider useful to you getting ffe compiled ASAP; places you will
    need to make edits/comment-out/etc..




Bug reports most welcome!

;o) Cor

 ©  2021 « corz.org » 21.6.18  

Welcome to corz.org!

I'm always messing around with the back-end.. See a bug? Wait a minute and try again. Still see a bug? Mail Me!