summaryrefslogtreecommitdiffstats
path: root/demux
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-11-02 15:10:28 +0100
committerwm4 <wm4@nowhere>2013-11-02 15:14:12 +0100
commit4d903127ad799e84cc19f8ff4f5c5abf0d35a9a8 (patch)
tree64fcf21f27827229c5c493f370045e9bc528d0ff /demux
parent7b52ba87a3d1ca23df677f7a681839d821b21375 (diff)
downloadmpv-4d903127ad799e84cc19f8ff4f5c5abf0d35a9a8.tar.bz2
mpv-4d903127ad799e84cc19f8ff4f5c5abf0d35a9a8.tar.xz
demux: rename Windows symbols
There are some Microsoft Windows symbols which are traditionally used by the mplayer core, because it used to be convenient (avi was the big format, using binary windows decoders made sense...). So these symbols have the exact same definition as the Windows one, and if mplayer is compiled on Windows, the symbols from windows.h are used. This broke recently just because some files were shuffled around, and the symbols defined in ms_hdr.h collided with windows.h ones. Since we don't have windows binary decoders anymore, there's not the slightest reason our symbols should have the same names. Rename them to reduce the risk for collision, and to fix the recent regression. Drop WAVEFORMATEXTENSIBLE, because it's mostly unused. ao_dsound defines its own version if the windows headers don't define it, and ao_wasapi is not available on systems where this symbol is missing. Also reindent ms_hdr.h.
Diffstat (limited to 'demux')
-rw-r--r--demux/demux_mkv.c136
-rw-r--r--demux/demux_raw.c2
-rw-r--r--demux/ms_hdr.h80
-rw-r--r--demux/stheader.h4
4 files changed, 99 insertions, 123 deletions
diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c
index 4d5417ed79..b26cba5a29 100644
--- a/demux/demux_mkv.c
+++ b/demux/demux_mkv.c
@@ -1191,25 +1191,25 @@ typedef struct {
} videocodec_info_t;
static const videocodec_info_t vinfo[] = {
- {MKV_V_MJPEG, mmioFOURCC('m', 'j', 'p', 'g'), 1},
- {MKV_V_MPEG1, mmioFOURCC('m', 'p', 'g', '1'), 0},
- {MKV_V_MPEG2, mmioFOURCC('m', 'p', 'g', '2'), 0},
- {MKV_V_MPEG4_SP, mmioFOURCC('m', 'p', '4', 'v'), 1},
- {MKV_V_MPEG4_ASP, mmioFOURCC('m', 'p', '4', 'v'), 1},
- {MKV_V_MPEG4_AP, mmioFOURCC('m', 'p', '4', 'v'), 1},
- {MKV_V_MPEG4_AVC, mmioFOURCC('a', 'v', 'c', '1'), 1},
- {MKV_V_THEORA, mmioFOURCC('t', 'h', 'e', 'o'), 1},
- {MKV_V_VP8, mmioFOURCC('V', 'P', '8', '0'), 0},
- {MKV_V_VP9, mmioFOURCC('V', 'P', '9', '0'), 0},
- {MKV_V_DIRAC, mmioFOURCC('d', 'r', 'a', 'c'), 0},
- {MKV_V_PRORES, mmioFOURCC('p', 'r', '0', '0'), 0},
- {MKV_V_HEVC, mmioFOURCC('H', 'E', 'V', 'C'), 1},
+ {MKV_V_MJPEG, MP_FOURCC('m', 'j', 'p', 'g'), 1},
+ {MKV_V_MPEG1, MP_FOURCC('m', 'p', 'g', '1'), 0},
+ {MKV_V_MPEG2, MP_FOURCC('m', 'p', 'g', '2'), 0},
+ {MKV_V_MPEG4_SP, MP_FOURCC('m', 'p', '4', 'v'), 1},
+ {MKV_V_MPEG4_ASP, MP_FOURCC('m', 'p', '4', 'v'), 1},
+ {MKV_V_MPEG4_AP, MP_FOURCC('m', 'p', '4', 'v'), 1},
+ {MKV_V_MPEG4_AVC, MP_FOURCC('a', 'v', 'c', '1'), 1},
+ {MKV_V_THEORA, MP_FOURCC('t', 'h', 'e', 'o'), 1},
+ {MKV_V_VP8, MP_FOURCC('V', 'P', '8', '0'), 0},
+ {MKV_V_VP9, MP_FOURCC('V', 'P', '9', '0'), 0},
+ {MKV_V_DIRAC, MP_FOURCC('d', 'r', 'a', 'c'), 0},
+ {MKV_V_PRORES, MP_FOURCC('p', 'r', '0', '0'), 0},
+ {MKV_V_HEVC, MP_FOURCC('H', 'E', 'V', 'C'), 1},
{NULL, 0, 0}
};
static int demux_mkv_open_video(demuxer_t *demuxer, mkv_track_t *track)
{
- BITMAPINFOHEADER *bih = &(BITMAPINFOHEADER){0};
+ MP_BITMAPINFOHEADER *bih = &(MP_BITMAPINFOHEADER){0};
unsigned char *extradata;
unsigned int extradata_size = 0;
struct sh_stream *sh;
@@ -1217,13 +1217,13 @@ static int demux_mkv_open_video(demuxer_t *demuxer, mkv_track_t *track)
bool raw = false;
if (track->ms_compat) { /* MS compatibility mode */
- BITMAPINFOHEADER *src;
+ MP_BITMAPINFOHEADER *src;
if (track->private_data == NULL
|| track->private_size < sizeof(*bih))
return 1;
- src = (BITMAPINFOHEADER *) track->private_data;
+ src = (MP_BITMAPINFOHEADER *) track->private_data;
bih->biSize = le2me_32(src->biSize);
bih->biWidth = le2me_32(src->biWidth);
bih->biHeight = le2me_32(src->biHeight);
@@ -1265,10 +1265,10 @@ static int demux_mkv_open_video(demuxer_t *demuxer, mkv_track_t *track)
bih->biPlanes = 1;
type2 = AV_RB32(src - 4);
if (type2 == 0x10003000 || type2 == 0x10003001)
- bih->biCompression = mmioFOURCC('R', 'V', '1', '3');
+ bih->biCompression = MP_FOURCC('R', 'V', '1', '3');
else
bih->biCompression =
- mmioFOURCC('R', 'V', track->codec_id[9], '0');
+ MP_FOURCC('R', 'V', track->codec_id[9], '0');
// copy type1 and type2 info from rv properties
extradata_size = cnt + 8;
extradata = src - 8;
@@ -1305,7 +1305,7 @@ static int demux_mkv_open_video(demuxer_t *demuxer, mkv_track_t *track)
sh_v = sh->video;
sh_v->gsh->demuxer_id = track->tnum;
sh_v->gsh->title = talloc_strdup(sh_v, track->name);
- sh_v->bih = malloc(sizeof(BITMAPINFOHEADER) + extradata_size);
+ sh_v->bih = malloc(sizeof(MP_BITMAPINFOHEADER) + extradata_size);
if (!sh_v->bih) {
mp_msg(MSGT_DEMUX, MSGL_FATAL, "Memory allocation failure!\n");
abort();
@@ -1351,33 +1351,33 @@ static struct mkv_audio_tag {
{ MKV_A_MP2, 0, 0x0055 },
{ MKV_A_MP3, 0, 0x0055 },
{ MKV_A_AC3, 1, 0x2000 },
- { MKV_A_EAC3, 1, mmioFOURCC('E', 'A', 'C', '3') },
+ { MKV_A_EAC3, 1, MP_FOURCC('E', 'A', 'C', '3') },
{ MKV_A_DTS, 0, 0x2001 },
{ MKV_A_PCM, 0, 0x0001 },
{ MKV_A_PCM_BE, 0, 0x0001 },
- { MKV_A_AAC_2MAIN, 0, mmioFOURCC('M', 'P', '4', 'A') },
- { MKV_A_AAC_2LC, 1, mmioFOURCC('M', 'P', '4', 'A') },
- { MKV_A_AAC_2SSR, 0, mmioFOURCC('M', 'P', '4', 'A') },
- { MKV_A_AAC_4MAIN, 0, mmioFOURCC('M', 'P', '4', 'A') },
- { MKV_A_AAC_4LC, 1, mmioFOURCC('M', 'P', '4', 'A') },
- { MKV_A_AAC_4SSR, 0, mmioFOURCC('M', 'P', '4', 'A') },
- { MKV_A_AAC_4LTP, 0, mmioFOURCC('M', 'P', '4', 'A') },
- { MKV_A_AAC, 0, mmioFOURCC('M', 'P', '4', 'A') },
- { MKV_A_VORBIS, 0, mmioFOURCC('v', 'r', 'b', 's') },
- { MKV_A_OPUS, 0, mmioFOURCC('O', 'p', 'u', 's') },
- { MKV_A_OPUS_EXP, 0, mmioFOURCC('O', 'p', 'u', 's') },
- { MKV_A_QDMC, 0, mmioFOURCC('Q', 'D', 'M', 'C') },
- { MKV_A_QDMC2, 0, mmioFOURCC('Q', 'D', 'M', '2') },
- { MKV_A_WAVPACK, 0, mmioFOURCC('W', 'V', 'P', 'K') },
- { MKV_A_TRUEHD, 0, mmioFOURCC('T', 'R', 'H', 'D') },
- { MKV_A_FLAC, 0, mmioFOURCC('f', 'L', 'a', 'C') },
- { MKV_A_ALAC, 0, mmioFOURCC('a', 'L', 'a', 'C') },
- { MKV_A_REAL28, 0, mmioFOURCC('2', '8', '_', '8') },
- { MKV_A_REALATRC, 0, mmioFOURCC('a', 't', 'r', 'c') },
- { MKV_A_REALCOOK, 0, mmioFOURCC('c', 'o', 'o', 'k') },
- { MKV_A_REALDNET, 0, mmioFOURCC('d', 'n', 'e', 't') },
- { MKV_A_REALSIPR, 0, mmioFOURCC('s', 'i', 'p', 'r') },
- { MKV_A_TTA1, 0, mmioFOURCC('T', 'T', 'A', '1') },
+ { MKV_A_AAC_2MAIN, 0, MP_FOURCC('M', 'P', '4', 'A') },
+ { MKV_A_AAC_2LC, 1, MP_FOURCC('M', 'P', '4', 'A') },
+ { MKV_A_AAC_2SSR, 0, MP_FOURCC('M', 'P', '4', 'A') },
+ { MKV_A_AAC_4MAIN, 0, MP_FOURCC('M', 'P', '4', 'A') },
+ { MKV_A_AAC_4LC, 1, MP_FOURCC('M', 'P', '4', 'A') },
+ { MKV_A_AAC_4SSR, 0, MP_FOURCC('M', 'P', '4', 'A') },
+ { MKV_A_AAC_4LTP, 0, MP_FOURCC('M', 'P', '4', 'A') },
+ { MKV_A_AAC, 0, MP_FOURCC('M', 'P', '4', 'A') },
+ { MKV_A_VORBIS, 0, MP_FOURCC('v', 'r', 'b', 's') },
+ { MKV_A_OPUS, 0, MP_FOURCC('O', 'p', 'u', 's') },
+ { MKV_A_OPUS_EXP, 0, MP_FOURCC('O', 'p', 'u', 's') },
+ { MKV_A_QDMC, 0, MP_FOURCC('Q', 'D', 'M', 'C') },
+ { MKV_A_QDMC2, 0, MP_FOURCC('Q', 'D', 'M', '2') },
+ { MKV_A_WAVPACK, 0, MP_FOURCC('W', 'V', 'P', 'K') },
+ { MKV_A_TRUEHD, 0, MP_FOURCC('T', 'R', 'H', 'D') },
+ { MKV_A_FLAC, 0, MP_FOURCC('f', 'L', 'a', 'C') },
+ { MKV_A_ALAC, 0, MP_FOURCC('a', 'L', 'a', 'C') },
+ { MKV_A_REAL28, 0, MP_FOURCC('2', '8', '_', '8') },
+ { MKV_A_REALATRC, 0, MP_FOURCC('a', 't', 'r', 'c') },
+ { MKV_A_REALCOOK, 0, MP_FOURCC('c', 'o', 'o', 'k') },
+ { MKV_A_REALDNET, 0, MP_FOURCC('d', 'n', 'e', 't') },
+ { MKV_A_REALSIPR, 0, MP_FOURCC('s', 'i', 'p', 'r') },
+ { MKV_A_TTA1, 0, MP_FOURCC('T', 'T', 'A', '1') },
{ NULL },
};
@@ -1409,7 +1409,7 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track)
if (track->private_size < sizeof(*sh_a->wf))
goto error;
mp_msg(MSGT_DEMUX, MSGL_V, "[mkv] track with MS compat audio.\n");
- WAVEFORMATEX *wf = (WAVEFORMATEX *) track->private_data;
+ MP_WAVEFORMATEX *wf = (MP_WAVEFORMATEX *) track->private_data;
sh_a->wf = calloc(1, track->private_size);
sh_a->wf->wFormatTag = le2me_16(wf->wFormatTag);
sh_a->wf->nChannels = le2me_16(wf->nChannels);
@@ -1459,7 +1459,7 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track)
sh_a->wf->nAvgBytesPerSec = 16000;
sh_a->wf->nBlockAlign = 1152;
} else if ((track->a_formattag == 0x2000) /* AC3 */
- || track->a_formattag == mmioFOURCC('E', 'A', 'C', '3')
+ || track->a_formattag == MP_FOURCC('E', 'A', 'C', '3')
|| (track->a_formattag == 0x2001)) { /* DTS */
free(sh_a->wf);
sh_a->wf = NULL;
@@ -1467,13 +1467,13 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track)
sh_a->wf->nAvgBytesPerSec = sh_a->channels.num * sh_a->samplerate * 2;
sh_a->wf->nBlockAlign = sh_a->wf->nAvgBytesPerSec;
if (!strcmp(track->codec_id, MKV_A_PCM_BE))
- sh_a->format = mmioFOURCC('t', 'w', 'o', 's');
+ sh_a->format = MP_FOURCC('t', 'w', 'o', 's');
} else if (!strcmp(track->codec_id, MKV_A_QDMC)
|| !strcmp(track->codec_id, MKV_A_QDMC2)) {
sh_a->wf->nAvgBytesPerSec = 16000;
sh_a->wf->nBlockAlign = 1486;
copy_audio_private_data(sh_a, track);
- } else if (track->a_formattag == mmioFOURCC('M', 'P', '4', 'A')) {
+ } else if (track->a_formattag == MP_FOURCC('M', 'P', '4', 'A')) {
int profile, srate_idx;
sh_a->wf->nAvgBytesPerSec = 16000;
@@ -1513,7 +1513,7 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track)
track->default_duration = 1024.0 / sh_a->samplerate;
}
}
- } else if (track->a_formattag == mmioFOURCC('v', 'r', 'b', 's')) {
+ } else if (track->a_formattag == MP_FOURCC('v', 'r', 'b', 's')) {
/* VORBIS */
if (track->private_size == 0 || track->ms_compat && !sh_a->wf->cbSize)
goto error;
@@ -1525,7 +1525,7 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track)
}
} else if (!strcmp(track->codec_id, MKV_A_OPUS)
|| !strcmp(track->codec_id, MKV_A_OPUS_EXP)) {
- sh_a->format = mmioFOURCC('O', 'p', 'u', 's');
+ sh_a->format = MP_FOURCC('O', 'p', 'u', 's');
copy_audio_private_data(sh_a, track);
} else if (!strncmp(track->codec_id, MKV_A_REALATRC, 7)) {
if (track->private_size < RAPROPERTIES4_SIZE)
@@ -1561,19 +1561,19 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track)
memcpy(((char *) (sh_a->wf + 1)), src, codecdata_length);
switch (track->a_formattag) {
- case mmioFOURCC('a', 't', 'r', 'c'):
+ case MP_FOURCC('a', 't', 'r', 'c'):
sh_a->wf->nAvgBytesPerSec = atrc_fl2bps[flavor];
sh_a->wf->nBlockAlign = track->sub_packet_size;
goto audiobuf;
- case mmioFOURCC('c', 'o', 'o', 'k'):
+ case MP_FOURCC('c', 'o', 'o', 'k'):
sh_a->wf->nAvgBytesPerSec = cook_fl2bps[flavor];
sh_a->wf->nBlockAlign = track->sub_packet_size;
goto audiobuf;
- case mmioFOURCC('s', 'i', 'p', 'r'):
+ case MP_FOURCC('s', 'i', 'p', 'r'):
sh_a->wf->nAvgBytesPerSec = sipr_fl2bps[flavor];
sh_a->wf->nBlockAlign = track->coded_framesize;
goto audiobuf;
- case mmioFOURCC('2', '8', '_', '8'):
+ case MP_FOURCC('2', '8', '_', '8'):
sh_a->wf->nAvgBytesPerSec = 3600;
sh_a->wf->nBlockAlign = track->coded_framesize;
audiobuf:
@@ -1596,7 +1596,7 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track)
ptr = track->private_data;
size = track->private_size;
} else {
- sh_a->format = mmioFOURCC('f', 'L', 'a', 'C');
+ sh_a->format = MP_FOURCC('f', 'L', 'a', 'C');
ptr = track->private_data + sizeof(*sh_a->wf);
size = track->private_size - sizeof(*sh_a->wf);
}
@@ -1620,10 +1620,10 @@ static int demux_mkv_open_audio(demuxer_t *demuxer, mkv_track_t *track)
AV_WB32(data + 8, 0);
memcpy(data + 12, track->private_data, track->private_size);
}
- } else if (track->a_formattag == mmioFOURCC('W', 'V', 'P', 'K') ||
- track->a_formattag == mmioFOURCC('T', 'R', 'H', 'D')) {
+ } else if (track->a_formattag == MP_FOURCC('W', 'V', 'P', 'K') ||
+ track->a_formattag == MP_FOURCC('T', 'R', 'H', 'D')) {
copy_audio_private_data(sh_a, track);
- } else if (track->a_formattag == mmioFOURCC('T', 'T', 'A', '1')) {
+ } else if (track->a_formattag == MP_FOURCC('T', 'T', 'A', '1')) {
sh_a->codecdata_len = 30;
sh_a->codecdata = calloc(1, sh_a->codecdata_len);
if (!sh_a->codecdata)
@@ -1953,9 +1953,9 @@ static double real_fix_timestamp(unsigned char *buf, unsigned int timestamp, uns
uint32_t buffer= (s[0]<<24) + (s[1]<<16) + (s[2]<<8) + s[3];
unsigned int kf=timestamp;
- if(format==mmioFOURCC('R','V','3','0') || format==mmioFOURCC('R','V','4','0')){
+ if(format==MP_FOURCC('R','V','3','0') || format==MP_FOURCC('R','V','4','0')){
int pict_type;
- if(format==mmioFOURCC('R','V','3','0')){
+ if(format==MP_FOURCC('R','V','3','0')){
SKIP_BITS(3);
pict_type= SHOW_BITS(2);
SKIP_BITS(2 + 7);
@@ -2030,26 +2030,26 @@ static void handle_realaudio(demuxer_t *demuxer, mkv_track_t *track,
uint32_t size = data.len;
demux_packet_t *dp;
- if ((track->a_formattag == mmioFOURCC('2', '8', '_', '8'))
- || (track->a_formattag == mmioFOURCC('c', 'o', 'o', 'k'))
- || (track->a_formattag == mmioFOURCC('a', 't', 'r', 'c'))
- || (track->a_formattag == mmioFOURCC('s', 'i', 'p', 'r'))) {
+ if ((track->a_formattag == MP_FOURCC('2', '8', '_', '8'))
+ || (track->a_formattag == MP_FOURCC('c', 'o', 'o', 'k'))
+ || (track->a_formattag == MP_FOURCC('a', 't', 'r', 'c'))
+ || (track->a_formattag == MP_FOURCC('s', 'i', 'p', 'r'))) {
// if(!block_bref)
// spc = track->sub_packet_cnt = 0;
switch (track->a_formattag) {
- case mmioFOURCC('2', '8', '_', '8'):
+ case MP_FOURCC('2', '8', '_', '8'):
for (int x = 0; x < sph / 2; x++)
memcpy(track->audio_buf + x * 2 * w + spc * cfs,
buffer + cfs * x, cfs);
break;
- case mmioFOURCC('c', 'o', 'o', 'k'):
- case mmioFOURCC('a', 't', 'r', 'c'):
+ case MP_FOURCC('c', 'o', 'o', 'k'):
+ case MP_FOURCC('a', 't', 'r', 'c'):
for (int x = 0; x < w / sps; x++)
memcpy(track->audio_buf +
sps * (sph * x + ((sph + 1) / 2) * (spc & 1) +
(spc >> 1)), buffer + sps * x, sps);
break;
- case mmioFOURCC('s', 'i', 'p', 'r'):
+ case MP_FOURCC('s', 'i', 'p', 'r'):
memcpy(track->audio_buf + spc * w, buffer, w);
if (spc == sph - 1) {
int n;
@@ -2205,7 +2205,7 @@ fail:
static void mkv_parse_packet(mkv_track_t *track, bstr *buffer)
{
- if (track->a_formattag == mmioFOURCC('W', 'V', 'P', 'K')) {
+ if (track->a_formattag == MP_FOURCC('W', 'V', 'P', 'K')) {
#if NEED_WAVPACK_PARSE
int size = buffer->len;
uint8_t *parsed;
diff --git a/demux/demux_raw.c b/demux/demux_raw.c
index 637253c8e1..4d6e171ad4 100644
--- a/demux/demux_raw.c
+++ b/demux/demux_raw.c
@@ -77,7 +77,7 @@ static int demux_rawaudio_open(demuxer_t *demuxer, enum demux_check check)
{
struct sh_stream *sh;
sh_audio_t *sh_audio;
- WAVEFORMATEX *w;
+ MP_WAVEFORMATEX *w;
if (check != DEMUX_CHECK_REQUEST && check != DEMUX_CHECK_FORCE)
return -1;
diff --git a/demux/ms_hdr.h b/demux/ms_hdr.h
index 5911d30730..e44f3589ad 100644
--- a/demux/ms_hdr.h
+++ b/demux/ms_hdr.h
@@ -19,58 +19,34 @@
#ifndef MPLAYER_MS_HDR_H
#define MPLAYER_MS_HDR_H
-#include <sys/types.h>
-#include "config.h"
-
#include "compat/mpbswap.h"
-
-#ifndef mmioFOURCC
-#define mmioFOURCC( ch0, ch1, ch2, ch3 ) \
- ( (uint32_t)(uint8_t)(ch0) | ( (uint32_t)(uint8_t)(ch1) << 8 ) | \
- ( (uint32_t)(uint8_t)(ch2) << 16 ) | ( (uint32_t)(uint8_t)(ch3) << 24 ) )
-#endif
-
-#ifndef _WAVEFORMATEX_
-#define _WAVEFORMATEX_
-typedef struct __attribute__((__packed__)) _WAVEFORMATEX {
- unsigned short wFormatTag;
- unsigned short nChannels;
- unsigned int nSamplesPerSec;
- unsigned int nAvgBytesPerSec;
- unsigned short nBlockAlign;
- unsigned short wBitsPerSample;
- unsigned short cbSize;
-} WAVEFORMATEX, *PWAVEFORMATEX, *NPWAVEFORMATEX, *LPWAVEFORMATEX;
-#endif /* _WAVEFORMATEX_ */
-
-#ifndef _WAVEFORMATEXTENSIBLE_
-#define _WAVEFORMATEXTENSIBLE_
-typedef struct __attribute__((__packed__)) _WAVEFORMATEXTENSIBLE {
- WAVEFORMATEX wf;
- unsigned short wValidBitsPerSample;
- unsigned int dwChannelMask;
- unsigned int SubFormat; // Only interested in first 32 bits of guid
- unsigned int _guid_remainder[3];
-} WAVEFORMATEXTENSIBLE;
-#endif /* _WAVEFORMATEXTENSIBLE_ */
-
-/* windows.h #includes wingdi.h on MinGW. */
-#if !defined(_BITMAPINFOHEADER_) && !defined(_WINGDI_)
-#define _BITMAPINFOHEADER_
-typedef struct __attribute__((__packed__))
-{
- int biSize;
- int biWidth;
- int biHeight;
- short biPlanes;
- short biBitCount;
- int biCompression;
- int biSizeImage;
- int biXPelsPerMeter;
- int biYPelsPerMeter;
- int biClrUsed;
- int biClrImportant;
-} BITMAPINFOHEADER, *PBITMAPINFOHEADER, *LPBITMAPINFOHEADER;
-#endif
+#include "video/img_fourcc.h"
+
+// These structs must be binary-compatible to the native win32 types,
+// because demux_mkv.c uses them directly.
+
+typedef struct __attribute__((__packed__)) MP_WAVEFORMATEX {
+ unsigned short wFormatTag;
+ unsigned short nChannels;
+ unsigned int nSamplesPerSec;
+ unsigned int nAvgBytesPerSec;
+ unsigned short nBlockAlign;
+ unsigned short wBitsPerSample;
+ unsigned short cbSize;
+} MP_WAVEFORMATEX;
+
+typedef struct __attribute__((__packed__)) MP_BITMAPINFOHEADER {
+ int biSize;
+ int biWidth;
+ int biHeight;
+ short biPlanes;
+ short biBitCount;
+ int biCompression;
+ int biSizeImage;
+ int biXPelsPerMeter;
+ int biYPelsPerMeter;
+ int biClrUsed;
+ int biClrImportant;
+} MP_BITMAPINFOHEADER;
#endif /* MPLAYER_MS_HDR_H */
diff --git a/demux/stheader.h b/demux/stheader.h
index 1c2f8a2a3e..963bf07b5e 100644
--- a/demux/stheader.h
+++ b/demux/stheader.h
@@ -101,7 +101,7 @@ typedef struct sh_audio {
struct af_stream *afilter; // the audio filter stream
const struct ad_functions *ad_driver;
// win32-compatible codec parameters:
- WAVEFORMATEX *wf;
+ MP_WAVEFORMATEX *wf;
// note codec extradata may be either under "wf" or "codecdata"
unsigned char *codecdata;
int codecdata_len;
@@ -135,7 +135,7 @@ typedef struct sh_video {
struct mp_image_params *vf_input; // video filter input params
struct mp_hwdec_info *hwdec_info; // video output hwdec handles
// win32-compatible codec parameters:
- BITMAPINFOHEADER *bih;
+ MP_BITMAPINFOHEADER *bih;
} sh_video_t;
typedef struct sh_sub {