summaryrefslogtreecommitdiffstats
path: root/demux
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-09-25 00:59:15 +0200
committerwm4 <wm4@nowhere>2014-09-25 00:59:15 +0200
commitfd7dde404d95f9c7f703917578111317d4ab85cd (patch)
tree2b33caab9d5d2c0e31f7d16246460d22a9c148ea /demux
parente977624d8723ab8c129e8cefc5bdac31aa8a9475 (diff)
downloadmpv-fd7dde404d95f9c7f703917578111317d4ab85cd.tar.bz2
mpv-fd7dde404d95f9c7f703917578111317d4ab85cd.tar.xz
video: remove BITMAPINFOHEADER from internal demuxer API
MPlayer traditionally did this because it made sense: the most important formats (avi, asf/wmv) used Microsoft formats, and many important decoders (win32 binary codecs) also did. But the world has changed, and I've always wanted to get rid of this thing from the codebase. demux_mkv.c internally still uses it, because, guess what, Matroska has a VfW muxing mode, which uses these data structures natively.
Diffstat (limited to 'demux')
-rw-r--r--demux/demux_mkv.c17
-rw-r--r--demux/stheader.h5
2 files changed, 11 insertions, 11 deletions
diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c
index c20a1aa999..27be3a169f 100644
--- a/demux/demux_mkv.c
+++ b/demux/demux_mkv.c
@@ -1250,15 +1250,12 @@ static int demux_mkv_open_video(demuxer_t *demuxer, mkv_track_t *track)
sh_v = sh->video;
sh->demuxer_id = track->tnum;
sh->title = talloc_strdup(sh_v, track->name);
- sh_v->bih = talloc_size(sh_v, sizeof(MP_BITMAPINFOHEADER) + extradata_size);
- if (!sh_v->bih) {
- MP_FATAL(demuxer, "Memory allocation failure!\n");
- abort();
- }
- *sh_v->bih = *bih;
- if (extradata_size)
- memcpy(sh_v->bih + 1, extradata, extradata_size);
- sh->format = sh_v->bih->biCompression;
+ sh->format = bih->biCompression;
+ sh_v->bits_per_coded_sample = bih->biBitCount;
+ sh_v->coded_width = bih->biWidth;
+ sh_v->coded_height = bih->biHeight;
+ sh_v->extradata = talloc_memdup(sh_v, extradata, extradata_size);
+ sh_v->extradata_len = extradata_size;
if (raw) {
sh->codec = "rawvideo";
} else {
@@ -1988,7 +1985,7 @@ static void handle_realvideo(demuxer_t *demuxer, mkv_track_t *track,
} else {
dp->pts =
real_fix_timestamp(dp->buffer, dp->len, timestamp,
- track->stream->video->bih->biCompression,
+ track->stream->format,
&track->rv_kf_base, &track->rv_kf_pts) * 0.001;
}
dp->pos = mkv_d->last_filepos;
diff --git a/demux/stheader.h b/demux/stheader.h
index a2740f0189..a368074d99 100644
--- a/demux/stheader.h
+++ b/demux/stheader.h
@@ -82,10 +82,13 @@ typedef struct sh_video {
float fps; // frames per second (set only if constant fps)
float aspect; // aspect ratio stored in the file (for prescaling)
int bitrate; // compressed bits/sec
+ int bits_per_coded_sample;
+ int coded_width, coded_height;
+ unsigned char *extradata;
+ int extradata_len;
int disp_w, disp_h; // display size
int rotate; // intended display rotation, in degrees, [0, 359]
int stereo_mode; // mp_stereo3d_mode (0 if none/unknown)
- MP_BITMAPINFOHEADER *bih;
} sh_video_t;
typedef struct sh_sub {