Mi primera contribución en GitLab: Convertidor exhale

Mi primera contribución en GitLab: Convertidor exhale

Hola a todos,

Ayer, estuve colaborando con el proyecto exhale para añadir compatibilidad para compilarlo usando MinGW en Windows.

Este proyecto es un convertidor de audio de código abierto que nos permite convertir archivos de audio WAV al codec xHE-AAC bajo el contenedor M4A.

Originalmente, el proyecto compila en Windows usando Visual Studio, pero al intentar compilarlo usando MSYS2/MinGW, nos daba problemas, específicamente esto:

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

También nos daba problemas por una definición de fprintf_s. Unos cambios tuvieron que hacerse en el código.

Para resolver el problema de que _SH_DENYRD no estaba declarado, tuvimos que añadir el header share.h:

Para resolver el problema de fprintf_s, cambié el bloque #ifndef a #if !defined para verificar adicionalmente si estamos compilando bajo MinGW. Si esto es cierto, no declaramos esta variable que apunta a la función fprintf:

Luego de realizar estos cambios, el programa compiló exitosamente.

Lo proximo que hice fue hacer unos cambios al archivo makefile.base para que el proyecto Media Autobuild Suite pasara las variables CXXFLAGS y LDFLAGS a exhale:

Estos cambios fueron aprobados y fusionados al proyecto.

Mi inspiración para añadir esta herramienta al Media Autobuild Suite fue debido a que un usuario pidió que esta herramienta fuese añadido. Trabajé para añadirlo y abrí un «Pull Request», el cual refiné aplicando unas recomendaciones.

Este «Pull Request» fue fusionado al suite y ahora todos los usuarios pueden compilar y usar esta herramienta.

Contribuciones