[MPlayer-dev-eng] [PATCH] VCD support for OS/2

KO Myung-Hun komh at chollian.net
Tue Jan 13 17:10:47 CET 2009


Reimar Döffinger wrote:
> Hello,
> I do very much dislike just globally using "#pragma pack", use
> __attribute__((packed)) on a per-struct basis or even better
> avoid it completely, e.g. by using uint8_t buffers and bit
> functions and AV_RL*. Or find a system header where they are defined.

On OS/2, DosDevIOCtl() expect a packed struct or a byte buffer. So I 
decide to use '#pragma pack' globally because all structs are for 
DosDevIOCtl() except 'mp_vcd_priv_t'. And the system headers for them do 
not exist.

>> +int vcd_seek_to_track(mp_vcd_priv_t *vcd, int track)
>> +{
>> +    struct {
>> +        UCHAR   auchSign[4];
>> +        BYTE    bTrack;
>> +    } sParam = {{'C', 'D', '0', '1'},};
>> +
>> +    struct {
>> +        msf     msfStart;
>> +        BYTE    bAdr     : 4;
>> +        BYTE    bControl : 4;
>> +    } sData;
> E.g. using those structs, unless they are defined in some system header
> is not better than using
> static const char sParam[5] = "CD01";
> uint8_t sData[5];
> Actually this is even more portable, since you do not rely on things
> like bitfield order, support for packed structs etc.
> This applies to all structs you defined, though a struct with only
> uint8_t elements and no bitfields instead of an array is ok (and
> possibly better for readability).

I'm confused. Are you commenting on my patches or saying your opinion 
about 'structure' ?

Of course, I absolutely agree with you if these codes are for general 
platforms and OSes. But these are only for OS/2. And those structs are 
defined in according to OS/2 API DOCs. Why should I consider what you said ?

And I don't understand a byte buffer has a better readability than a 
structure. If not using a structure, how can I know the meaning of each 
index ?

And just a question. Is there a compiler not supporting 'packed structure' ?

>> +    struct {
>> +        BYTE    abSync[12];
>> +        BYTE    abHeader[4];
>> +        BYTE    abSubHeader[8];
>> +        BYTE    abData[2324];
>> +        BYTE    abSpare[4];
>> +    } sData;
> I think the default stack size on OS/2 is rather small, so IMO you
> should not allocate more than 2kB on the stack if it can be avoided.

Yes, many compiler set the default stack size for OS/2 to 32K or 64K. 
But I think that size is enough to use 2K stack variable. In addition, 
GCC 4.3.2 are being ported to OS/2. It set the default stack size to 1M. 
Currently I'm using that GCC 4.3.2. Nevertheless I'm setting the stack 
size to 16M for MPlayer. So I think your apprehension is unnecessary.

KO Myung-Hun

Using Mozilla SeaMonkey 1.1.14
Under OS/2 Warp 4 for Korean with FixPak #15
On AMD ThunderBird 1 GHz with 512 MB RAM

Korean OS/2 User Community : http://www.ecomstation.co.kr

More information about the MPlayer-dev-eng mailing list