[MPlayer-dev-eng] Allow compilation with Libav

Reinhard Tartler siretart at tauware.de
Mon Jan 2 17:35:08 CET 2012


On Mo, Jan 02, 2012 at 17:29:01 (CET), Reimar Döffinger wrote:

> On 2 Jan 2012, at 00:22, Reinhard Tartler <siretart at tauware.de> wrote:
>> In order to build mplayer against Libav, a couple of minor patches are
>> necessary. I've developed them in the course of maintaining the daily
>> builds at https://launchpad.net/~motumedia/+archive/mplayer-daily/, but
>> as compatibility with Libav is a requirement for the distro mplayer
>> package in debian, I feel they should better go to svn properly.
>> 
>> So here we go:
>> 
>> --- mplayer-1.0~svn34481.orig/fmt-conversion.c
>> +++ mplayer-1.0~svn34481/fmt-conversion.c
>> @@ -24,6 +24,11 @@
>> #include "libaf/af_format.h"
>> #include "fmt-conversion.h"
>> 
>> +// libav.org's libavutil is missing this
>> +#ifndef PIX_FMT_GBR24P
>> +#define PIX_FMT_GBR24P PIX_FMT_GBRP
>> +#endif
>> +
>> static const struct {
>>     int fmt;
>>     enum PixelFormat pix_fmt;
>> @@ -57,7 +62,9 @@
>>     {IMGFMT_RGB8,    PIX_FMT_BGR8},
>>     {IMGFMT_RGB4,    PIX_FMT_BGR4},
>>     {IMGFMT_BGR8,    PIX_FMT_PAL8},
>> +#ifdef PIX_FMT_0RGB32
>>     {IMGFMT_BGR32,   PIX_FMT_0RGB32},
>> +#endif
>> #if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(51, 20, 1)
>>     {IMGFMT_GBR24P,  PIX_FMT_GBR24P},
>> #endif
>> 
>> I think these hunks should be rather safe. Instead of using
>> PIX_FMT_GBR24P, we could also use PIX_FMT_GBRP directly, as this #define
>> was copied FFmpeg's libavcodec.
>> 
>> --- mplayer-1.0~svn34481.orig/libmpdemux/mp_taglists.c
>> +++ mplayer-1.0~svn34481/libmpdemux/mp_taglists.c
>> @@ -43,7 +43,9 @@
>>     { CODEC_ID_COOK,              MKTAG('c', 'o', 'o', 'k')},
>>     { CODEC_ID_DSICINAUDIO,       MKTAG('D', 'C', 'I', 'A')},
>>     { CODEC_ID_EAC3,              MKTAG('E', 'A', 'C', '3')},
>> +#ifdef CODEC_ID_FFWAVESYNTH
>>     { CODEC_ID_FFWAVESYNTH,       MKTAG('F', 'F', 'W', 'S')},
>> +#endif
>>     { CODEC_ID_G723_1,            MKTAG('7', '2', '3', '1')},
>>     { CODEC_ID_INTERPLAY_DPCM,    MKTAG('I', 'N', 'P', 'A')},
>>     { CODEC_ID_MLP,               MKTAG('M', 'L', 'P', ' ')},
>> @@ -85,7 +87,9 @@
>>     { CODEC_ID_DVVIDEO,           MKTAG('d', 'v', 's', 'd')},
>>     { CODEC_ID_EAC3,              MKTAG('E', 'A', 'C', '3')},
>>     { CODEC_ID_ESCAPE124,         MKTAG('E', '1', '2', '4')},
>> +#ifdef CODEC_ID_ESCAPE130
>>     { CODEC_ID_ESCAPE130,         MKTAG('E', '1', '3', '0')},
>> +#endif
>>     { CODEC_ID_FLV1,              MKTAG('F', 'L', 'V', '1')},
>>     { CODEC_ID_G729,              MKTAG('G', '7', '2', '9')},
>>     { CODEC_ID_H264,              MKTAG('H', '2', '6', '4')},
>> 
>> These codec id's do not exist in Libav's libavcodec.
>> 
>> Actually, there used to be a couple of more patches in the daily builds,
>> but I think they are no longer necessary. In case I'm wrong, I'll sent
>> another email with those included. The patches above, however, are
>> definitly necessary.
>> 
>> Please tell me which of the above changes are acceptable and what
>> additional work the other ones require to become acceptable.
>
> I'll have to check up on it, but I don't think any of these can work,
> those are not defines but enums only to my knowledge, so the whole
> ifndef stuff shouldn't work one bit.

Yeah, sorry, Uoti pointed this out to me on IRC as well.

While I still guess the PIX_FMT #definery should still work, the
CODEC_ID enums require some other solution. Can you think about a better
way than to hack up configure to see if ffwavesync and escpae130 are
available?

Cheers,
Reinhard

-- 
Gruesse/greetings,
Reinhard Tartler, KeyID 945348A4


More information about the MPlayer-dev-eng mailing list