Browsed by
Tag: tool

Introducing HEIC To JPG Converter

Introducing HEIC To JPG Converter

Hi everyone,

Today, I’m pleased to announce the first version of my HEIC To JPG Converter tool.

HEIC to JPG v0.1

This is a simple tool that will convert your HEIC images and photos to the more common and supported JPEG format. In today’s world, newer phones can take advantage of the HEIC image codec that will save you space, theatrically, but it’s also true that JPEG is still the dominant format whereas HEIC still have limited support. This is why I wrote this tool.

Before deciding to write this tool, I was using CopyTrans HEIC for Windows, but for some reason, it failed to convert some files to JPEG. With my tool, which makes use of ImageMagick in the backend, it is now possible to convert all of my HEIC files while also retaining its metadata.

Another advantage of this tool is the ability to choose how many CPU threads to use. Converting HEIC files to JPEG is costly and sometimes even using all of the CPU threads may cause your PC to freeze momentarily. CopyTrans HEIC for Windows does not allow me to setup the amount of CPU threads to use, but with my tool this is entirely possible.

You can give this tool a try by downloading it from GitHub. Click here to download.

I really hope this tool works well for all of you. I tested it with HEIC photos taken with the Samsung Galaxy S20 Ultra and S21 Ultra.

rav1e GUI v1.17 released!

rav1e GUI v1.17 released!

Hi everyone,

Today, I have released rav1e GUI v1.17:

rav1e GUI v1.17

This new version will encode files without producing huge .y4m temporary files. It also disables 2-pass encoding in quantizer mode, which is not supported by rav1e. You can use 2-pass encoding in bitrate mode.

You can download this new release on GitHub by clicking here.


Downloading ffmpeg for Exhale GUI

Downloading ffmpeg for Exhale GUI

Note: This guide is obsolete. Please refer to the new guide to download ffmpeg by clicking here.

Hi everyone,

In this post, I’ll guide you through the steps to download ffmpeg and use it in Exhale GUI. This is needed if you want to encode files in formats other than WAV.

To download ffmpeg, follow these easy steps:

  1. Go to

  2. We will leave everything as is and press the Download Build button:

  3. Once downloaded, click on the file::

  4. Navigate to the ffmpeg folder and then to bin. You’ll see ffmpeg.exe inside:

  5. Extract the file to the location where you have Exhale GUI:

That’s it! The next time you open Exhale GUI, it will detect ffmpeg and will allow you to encode files compatible with it.

Opus GUI v1.16 released

Opus GUI v1.16 released

Hi everyone,

Today, I have released Opus GUI v1.16:

Opus GUI v1.16

This release adds a new text file called audioformats.txt. In this file, you can specify the file extensions that the GUI will process:

You can add new extensions as long as ffmpeg supports it, and they will be processed only if ffmpeg is present. Otherwise, only WAV files will be processed.

This version also has some bug fixes and improvements and updates the Google APIs to their latest version.

You can download this release on GitHub by clicking here.


Collaborating in the exhale project – Part 2

Collaborating in the exhale project – Part 2

Hi everyone,

Yesterday, I began working on my second collaboration for the exhale xHE-AAC USAC encoder. This time, I worked on adding an argument to print the software version on the console.


The above is the main software, printing its information as well as how to use it.

There was no option to print the version only. Ideally, I just wanted a way to print something like exhale version 1.0.3 that I can easily parse it as I do with other tools like Opusenc and Flac. Because of this, I began working on adding this functionality.

The code that performs this will check if there is just one argument (actually 2, since the first one is the executable filename). It also checks if the argument is either -v or -V. If this is true, we print the software information to the user:

This is the result:

A very simple and minimalistic output. Thanks to this, I can parse it and use on tools like my upcoming exchale GUI:

This Merge Request was approved and merged and is ready to use for everyone. As for the GUI, expect it in the next couple of days!

Click here to see the Merge Request on GitLab.

My first GitLab contribution: exhale encoder

My first GitLab contribution: exhale encoder

Hi everyone,

Yesterday, I collaborated on the exhale xHE-AAC Audio Encoder to add compatibility to compile the project on MinGW on Windows.

The exhale project is an Open-Source xHE-AAC USAC encoder. It allows you to encode wave (WAV) files to M4A using this specific codec.

Originally, compilation on Windows was done using Visual Studio, and this worked fine, but when compiling it on MSYS2/MinGW, it gave some issues, specifically:

H:/repos/media-autobuild_suite/build/exhale-git/src/app/../../src/app/exhaleApp.cpp: In function 'int main(int, char**)':
H:/repos/media-autobuild_suite/build/exhale-git/src/app/../../src/app/exhaleApp.cpp:246:85: error: '_SH_DENYWR' was not declared in this scope
  246 |     if (_sopen_s (&inFileHandle, inFileName, _O_RDONLY | _O_SEQUENTIAL | _O_BINARY, _SH_DENYWR, _S_IREAD) != 0)
      |                                                                                     ^~~~~~~~~~
H:/repos/media-autobuild_suite/build/exhale-git/src/app/../../src/app/exhaleApp.cpp:320:100: error: '_SH_DENYRD' was not declared in this scope
  320 |     if (_sopen_s (&outFileHandle, outFileName, i | _O_SEQUENTIAL | _O_CREAT | _O_EXCL | _O_BINARY, _SH_DENYRD, _S_IWRITE) != 0)
      |                                                                                                    ^~~~~~~~~~
make[1]: *** [../makefile.base:112: ../../build/exhaleApp.d.o] Error 1
make[1]: Leaving directory '/build/exhale-git/src/app'
make: *** [makefile:18: all] Error 2

It also complained about fprintf_s, so some changes needed to be done on the code.

To solve the _SH_DENYRD not declared issue, we had to include the share.h header:

Next, to solve the fprintf_s issue, I surrounded this on an #if !defined block to check if we were compiling on MinGW. If we are, we simply skip this declaration:

After these changes were done, the software compiled successfully.

Next, I did some additional changes to the makefile.base file to allow the Media Autobuild Suite project to pass its CXXFLAGS and LDFLAGS variable to exhale:

These changes got merged into the project.

My inspiration to add this tool to the Media Autobuild Suite came as a user requested this tool to be added to it. So, I worked on it and submitted a Pull Request, where I refined it further to apply some recommendations.

The Pull Request was merged into the suite and is now available for everyone to build and use.