Совсем недавно в Mplayer добавили поддержку libbs2b в качестве аудио-фильтра.
После скачивания исходников с SVN-репозитория https://bs2b.svn.sourceforge.net/svnroot/bs2b, прикручивания к этому делу libsndfile 1.0.19 (собрал с помощью pexports, dlltool и какой-то матери) и успешной сборки самой библиотеки я приступил к долгожданному конфигурированию и сборке самого Mplayer-а. В самый ответственный момент компиляция обломалась. Начал разбор ошибок.
Сначала выяснилось, что bs2btypes.h объявлены типы, которые и так есть в stdint.h. Лишние объявления удалил.
Дальше сборка прошла нормально.
Можно сказать, что прошел боевое крещение.
libbs2b, the Bauer stereophonic-to-binaural DSP library and plugins is designed to improve headphone listening of stereo audio records. Recommended for headphone prolonged listening to disable superstereo fatigue without essential distortions.Ну приспичило меня прикрутить это дело к самодельной сборке сего плеера.
После скачивания исходников с SVN-репозитория https://bs2b.svn.sourceforge.net/svnroot/bs2b, прикручивания к этому делу libsndfile 1.0.19 (собрал с помощью pexports, dlltool и какой-то матери) и успешной сборки самой библиотеки я приступил к долгожданному конфигурированию и сборке самого Mplayer-а. В самый ответственный момент компиляция обломалась. Начал разбор ошибок.
Сначала выяснилось, что bs2btypes.h объявлены типы, которые и так есть в stdint.h. Лишние объявления удалил.
#ifndef _INT8_T_DECLAREDПотом выяснилось, что нигде не объявлено BS2B_CLEVELS. Покопавшись в старый релизах этой библиотеки, я нашел, что в bs2b.h надо добавить:
typedef signed char int8_t;
#endif
#ifndef _UINT8_T_DECLARED
typedef unsigned char uint8_t;
#endif
#ifndef _INT16_T_DECLARED
typedef signed short int16_t;
#endif
#ifndef _UINT16_T_DECLARED
typedef unsigned short uint16_t;
#endif
#ifndef _INT32_T_DECLARED
#if UINT_MAX == 0xffff /* 16 bit compiler */
typedef signed long int32_t;
#else /* UINT_MAX != 0xffff */ /* 32/64 bit compiler */
typedef signed int int32_t;
#endif
#endif /* !_INT32_T_DECLARED */
#ifndef _UINT32_T_DECLARED
#if UINT_MAX == 0xffff /* 16 bit compiler */
typedef unsigned long uint32_t;
#else /* UINT_MAX != 0xffff */ /* 32/64 bit compiler */
typedef unsigned int uint32_t;
#endif
#endif /* !_UINT32_T_DECLARED */
/* Number of crossfeed levels */Ругань на типы и переменные прекратилась, началась ругань на параметры функций этой самой libbs2b. Правда компилятор быстро заткнулся после добавления
#define BS2B_CLEVELS 3
#include <stdint.h>в bs2b.h.
Дальше сборка прошла нормально.
Можно сказать, что прошел боевое крещение.