mirror of
https://github.com/mpv-player/mpv
synced 2025-03-11 08:37:59 +00:00
Support for aspect ratio set via DisplayWidth/DisplayHeight.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10082 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
cbd7618b8b
commit
3f5313a9e5
@ -135,7 +135,7 @@ typedef struct mkv_track {
|
||||
char type; // 'v' = video, 'a' = audio, 's' = subs
|
||||
|
||||
char v_fourcc[5];
|
||||
uint32_t v_width, v_height;
|
||||
uint32_t v_width, v_height, v_dwidth, v_dheight;
|
||||
float v_frate;
|
||||
|
||||
uint16_t a_formattag;
|
||||
@ -393,6 +393,11 @@ static int check_track_information(mkv_demuxer_t *d) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (t->v_dwidth == 0)
|
||||
t->v_dwidth = t->v_width;
|
||||
if (t->v_dheight == 0)
|
||||
t->v_dheight = t->v_height;
|
||||
|
||||
// This track seems to be ok.
|
||||
t->ok = 1;
|
||||
|
||||
@ -1131,6 +1136,24 @@ extern "C" int demux_mkv_open(demuxer_t *demuxer) {
|
||||
mp_msg(MSGT_DEMUX, MSGL_V, "[mkv] | + Pixel height: "
|
||||
"%u\n", track->v_height);
|
||||
|
||||
} else if (EbmlId(*l4) ==
|
||||
KaxVideoDisplayWidth::ClassInfos.GlobalId) {
|
||||
KaxVideoDisplayWidth &width =
|
||||
*static_cast<KaxVideoDisplayWidth *>(l4);
|
||||
width.ReadData(es->I_O());
|
||||
track->v_dwidth = uint16(width);
|
||||
mp_msg(MSGT_DEMUX, MSGL_V, "[mkv] | + Display width: "
|
||||
"%u\n", track->v_dwidth);
|
||||
|
||||
} else if (EbmlId(*l4) ==
|
||||
KaxVideoDisplayHeight::ClassInfos.GlobalId) {
|
||||
KaxVideoDisplayHeight &height =
|
||||
*static_cast<KaxVideoDisplayHeight *>(l4);
|
||||
height.ReadData(es->I_O());
|
||||
track->v_dheight = uint16(height);
|
||||
mp_msg(MSGT_DEMUX, MSGL_V, "[mkv] | + Display height: "
|
||||
"%u\n", track->v_dheight);
|
||||
|
||||
} else if (EbmlId(*l4) ==
|
||||
KaxVideoFrameRate::ClassInfos.GlobalId) {
|
||||
KaxVideoFrameRate &framerate =
|
||||
@ -1423,8 +1446,10 @@ extern "C" int demux_mkv_open(demuxer_t *demuxer) {
|
||||
sh_v->format = sh_v->bih->biCompression;
|
||||
sh_v->fps = track->v_frate;
|
||||
sh_v->frametime = 1 / track->v_frate;
|
||||
sh_v->disp_w = sh_v->bih->biWidth;
|
||||
sh_v->disp_h = sh_v->bih->biHeight;
|
||||
sh_v->disp_w = track->v_width;
|
||||
sh_v->disp_h = track->v_height;
|
||||
sh_v->aspect = (float)track->v_dwidth / (float)track->v_dheight;
|
||||
mp_msg(MSGT_DEMUX, MSGL_V, "[mkv] Aspect: %f\n", sh_v->aspect);
|
||||
|
||||
demuxer->video->id = track->tnum;
|
||||
demuxer->video->sh = sh_v;
|
||||
|
Loading…
Reference in New Issue
Block a user