Skip to content

0.4.0

Compare
Choose a tag to compare
@thisismy-github thisismy-github released this 16 May 04:39
· 272 commits to master since this release

Experimental GIF and cover art support

The biggest focus in this update has been adding experimental support for animated GIFs and audio files with cover art. VLC cannot play animated GIFs, and there doesn't appear to be any simple way to display cover art (at least through the Python bindings for libvlc), even though VLC does have this functionality, so this addition is a pretty big one. This ended up working so well that I extended the functionality to all images (more details below). Not all features are fully functional for GIFs and images/art besides opening, renaming, and deleting yet. This will be expanded on further in the future. More details on the implementation can be found on the initial commit. Auto-resize settings work with the new media types, and individual scaling options have been added for each type.

  • See this commit (and ones beyond that) for implementation details

FFprobe support and FFmpeg update

The second biggest focus in this update was completely rewriting the system for parsing media files. The new system support FFprobe, but doesn't require it. Both FFprobe and VLC will parse media files at the same time, and whichever one finishes first will be used. Even if FFprobe doesn't finish first, it will save its results to a .txt file in your temp folder, which can be reused when replaying the same files (checks are done to ensure the file hasn't been edited). Using FFprobe not only massively increases compatibility, stability, and accuracy of parsing files (fixing many previous crashes/hangs), but it also parses certain files faster than VLC (especially large ones). FFprobe can be disabled in the settings so only VLC is used, but this is not recommended.

Adding a second large executable to PyPlayer seemed pretty excessive, so instead FFmpeg (on Windows) has been updated from I-have-no-idea-what-version-it-was to n4.4-latest-win64-lgpl-shared-4.4. This is not the most featureful or up-to-date version, but it's far better than whatever I was using before and since it's the shared version, it's only double the size of the original executable. A fair compromise. These files are now located within plugins/ffmpeg, and if you're updating from an older version, the original ffmpeg.exe file will be deleted automatically.

Other major changes

  • Images are now implemented the same way GIFs and cover art are
    • The new implementation loads images almost instantly, with no flickering
    • Currently, no marquees (on-screen text) can appear. However, most of the other features that images previously supported still work
    • When an image is being viewed, navigating (<-/-> and J/L by default) will cycle forwards and backwards
    • Images are immediately cached and unloaded, which means their actual files can be altered freely without having to "stop" the player
      • A setting for what to do with missing image files while renaming has been added. By default, the cached image will be saved as a new file with your desired name
  • Large improvements to auto-resizing
    • Auto-resizing now clamps the window to your current screen
    • The "Window behavior" section in the settings dialog has been thoroughly reorganized
    • Added checkboxes determining which types of media trigger the auto-resize settings
    • Added setting for resetting what counts as the "first media file" when minimizing to tray
    • Added actions in the Window menu for instantly resizing the window in a variety of ways, regardless of your settings
  • Added ability to copy the current media file's path to your clipboard
    • This can be accessed both through the File menu and through the media location's quick-button context menu
    • Added setting for slightly customizing how the path is formatted when copied
  • Recent files enhancements
    • Recent files now show a number in front of their name, which can be opened by pressing Alt plus that number
    • Recent files can now be removed from the recent file list by right clicking
    • Opening and copying a recent file's path without opening the file can also be done by right clicking
    • Changed the delimiter for recent files from a comma to <|> in config files to fix issues with files that had commas in them
  • The system for restoring/focusing windows has been redone and improved significantly, fixing many inconsistencies with the way window states were tracked and remembered during and after a session (especially with maximized/fullscreen windows)

Minor changes

  • The base context menu has been simplified
  • Added the beefier music-tag library as a backup for TinyTag with audio files as part of the parsing-rework. It is only imported when TinyTag fails
  • FFmpeg no longer flashes a console window while being used
  • Cycling media's performance in folders with many non-media files has been improved significantly
  • More alt-shortcuts have been added. The menubar and certain other menus can now be fully navigated by holding alt and pressing the underlined characters
    • Similarly, the tab order for the settings dialog has been redone and is now actually usable
  • The config file is now encoded in utf-16, resolving most unicode-related errors. Non-encoded configs will be automatically converted.
  • Using back-button now works immediately on startup
  • Cleaner log messages, especially when opening files
  • Added setting for where to center dialogs (window/screen/mouse). Defaults to window.
  • Warning dialogs now beep when appearing
  • Added setting for remembering the folders of dropped media
  • Concatenating now correctly uses your default path setting when necessary
  • As always, a number of other less notable quality-of-life changes and bug fixes