summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authormosu <mosu@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-06-09 16:48:02 +0000
committermosu <mosu@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-06-09 16:48:02 +0000
commita5d47c6d5287e6c7227192cd0dbecc802425ec94 (patch)
tree12916be504213d56e3f2f4f67b5f04cfb6ee8916 /libmpdemux
parented9296d845e754ddc4e91a87b41d7a8b878b6d95 (diff)
downloadmpv-a5d47c6d5287e6c7227192cd0dbecc802425ec94.tar.bz2
mpv-a5d47c6d5287e6c7227192cd0dbecc802425ec94.tar.xz
Updates needed for libebml/libmatroska 0.4.4
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10274 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/demux_mkv.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/libmpdemux/demux_mkv.cpp b/libmpdemux/demux_mkv.cpp
index 2b53965732..07f45f2326 100644
--- a/libmpdemux/demux_mkv.cpp
+++ b/libmpdemux/demux_mkv.cpp
@@ -27,6 +27,7 @@ extern "C" {
#include "EbmlSubHead.h"
#include "EbmlStream.h"
#include "EbmlContexts.h"
+#include "EbmlVersion.h"
#include "FileKax.h"
#include "KaxAttachements.h"
@@ -53,6 +54,10 @@ extern "C" {
using namespace LIBMATROSKA_NAMESPACE;
using namespace std;
+#ifndef LIBEBML_VERSION
+#define LIBEBML_VERSION 000000
+#endif // LIBEBML_VERSION
+
// for e.g. "-slang ger"
extern char *dvdsub_lang;
extern char *audio_lang;
@@ -1053,6 +1058,18 @@ extern "C" int demux_mkv_open(demuxer_t *demuxer) {
mp_msg(MSGT_DEMUX, MSGL_V, "[mkv] | + Track UID: %u\n",
uint32(tuid));
+#if LIBEBML_VERSION >= 000404
+ } else if (EbmlId(*l3) ==
+ KaxTrackDefaultDuration::ClassInfos.GlobalId) {
+ KaxTrackDefaultDuration &def_duration =
+ *static_cast<KaxTrackDefaultDuration *>(l3);
+ def_duration.ReadData(es->I_O());
+ track->v_frate = 1000000000.0 / (float)uint64(def_duration);
+ fprintf(stdout, "[mkv] | + Default duration: %.3fms ( = %.3f "
+ "fps)\n", (float)uint64(def_duration) / 1000000.0,
+ track->v_frate);
+#endif // LIBEBML_VERSION
+
} else if (EbmlId(*l3) == KaxTrackType::ClassInfos.GlobalId) {
KaxTrackType &ttype = *static_cast<KaxTrackType *>(l3);
ttype.ReadData(es->I_O());
@@ -1168,6 +1185,7 @@ extern "C" int demux_mkv_open(demuxer_t *demuxer) {
} else if (EbmlId(*l4) ==
KaxVideoFrameRate::ClassInfos.GlobalId) {
+ // For older files.
KaxVideoFrameRate &framerate =
*static_cast<KaxVideoFrameRate *>(l4);
framerate.ReadData(es->I_O());
@@ -1189,9 +1207,15 @@ extern "C" int demux_mkv_open(demuxer_t *demuxer) {
} else if (EbmlId(*l3) == KaxCodecID::ClassInfos.GlobalId) {
KaxCodecID &codec_id = *static_cast<KaxCodecID*>(l3);
codec_id.ReadData(es->I_O());
+#if LIBEBML_VERSION >= 000404
+ mp_msg(MSGT_DEMUX, MSGL_V, "[mkv] | + Codec ID: %s\n",
+ string(codec_id).c_str());
+ track->codec_id = strdup(string(codec_id).c_str());
+#else
mp_msg(MSGT_DEMUX, MSGL_V, "[mkv] | + Codec ID: %s\n",
&binary(codec_id));
track->codec_id = strdup((char *)&binary(codec_id));
+#endif // LIBEBML_VERSION
} else if (EbmlId(*l3) == KaxCodecPrivate::ClassInfos.GlobalId) {
KaxCodecPrivate &c_priv = *static_cast<KaxCodecPrivate*>(l3);
@@ -1737,7 +1761,11 @@ extern "C" int demux_mkv_fill_buffer(demuxer_t *d) {
KaxClusterTimecode &ctc = *static_cast<KaxClusterTimecode *>(l2);
ctc.ReadData(es->I_O());
mkv_d->cluster_tc = uint64(ctc);
+#if LIBEBML_VERSION >= 000404
+ mkv_d->cluster->InitTimecode(mkv_d->cluster_tc, mkv_d->tc_scale);
+#else
mkv_d->cluster->InitTimecode(mkv_d->cluster_tc);
+#endif // LIBEBML_VERSION
} else if (EbmlId(*l2) == KaxBlockGroup::ClassInfos.GlobalId) {