пятница, 2 апреля 2010 г.

Mplayer: продолжаем делать костыли для исходников из SVN-репозитория.

Давно не собирал Mplayer из SVN-репозитория. Сегодня решил его обновить. Для сборки использую фреймворк со страницы http://oss.netfarm.it/mplayer-win32.php, который немного переделал под свои нужды. Как я и ожидал, сборка закончилась сообщением об ошибке, что "ETIME" нигде не объявлено.

Вдумчивое гугление помогло выяснить, что это есть в BSD и отсутствует в MinGW, что не есть хорошо. Но в MinGW есть "WSAETIMEDOUT". Гугление этой переменной вывело на код:
#define     ETIME   ERROR_SEM_TIMEOUT
С помощью поиска по хидерам "ERROR_SEM_TIMEOUT" я нашел, что объявлено оно в файле "winerror.h". Ну а чтобы всё заработало хоть как-то я изменил "rtsp.c" таким образом:
#include "rtpdec.h"
#include "rdt.h"
#include "rtpdec_asf.h"

// PATCH BEGIN
#include <winerror.h>
#define     ETIME   ERROR_SEM_TIMEOUT
// PATCH END

//#define DEBUG
//#define DEBUG_RTP_TCP
В результате всё собралось и даже заработало, только протестировать пока не на чем.