[vlc-commits] backport libebml macros patch
Daniel Mierswa
git at videolan.org
Wed Feb 9 09:47:57 CET 2011
vlc/vlc-1.1 | branch: master | Daniel Mierswa <impulze at impulze.org> | Thu Feb 3 04:31:23 2011 +0100| [132c76f52371a778203b820685427d1175210f6f] | committer: Jean-Baptiste Kempf
backport libebml macros patch
based on vlc.git b985df9294dc563ba9da13795b3fb1a728db7073
they're available since version 1.0.0
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc/vlc-1.1.git/?a=commit;h=132c76f52371a778203b820685427d1175210f6f
---
modules/demux/mkv/Ebml_parser.cpp | 6 ++--
modules/demux/mkv/demux.cpp | 10 +++---
modules/demux/mkv/matroska_segment_parse.cpp | 42 +++++++++++++-------------
modules/demux/mkv/mkv.hpp | 6 ++++
4 files changed, 35 insertions(+), 29 deletions(-)
diff --git a/modules/demux/mkv/Ebml_parser.cpp b/modules/demux/mkv/Ebml_parser.cpp
index aeec50d..97dbdc3 100644
--- a/modules/demux/mkv/Ebml_parser.cpp
+++ b/modules/demux/mkv/Ebml_parser.cpp
@@ -144,7 +144,7 @@ class KaxBlockVirtualWorkaround : public KaxBlockVirtual
public:
void Fix()
{
- if( Data == DataBlock )
+ if( GetBuffer() == DataBlock )
SetBuffer( NULL, 0 );
}
};
@@ -167,7 +167,7 @@ EbmlElement *EbmlParser::Get( void )
if( m_el[mi_level] )
{
- m_el[mi_level]->SkipData( *m_es, m_el[mi_level]->Generic().Context );
+ m_el[mi_level]->SkipData( *m_es, EBML_CONTEXT(m_el[mi_level]) );
if( !mb_keep )
{
if( MKV_IS_ID( m_el[mi_level], KaxBlockVirtual ) )
@@ -177,7 +177,7 @@ EbmlElement *EbmlParser::Get( void )
mb_keep = false;
}
- m_el[mi_level] = m_es->FindNextElement( m_el[mi_level - 1]->Generic().Context, i_ulev, 0xFFFFFFFFL, mb_dummy != 0, 1 );
+ m_el[mi_level] = m_es->FindNextElement( EBML_CONTEXT(m_el[mi_level - 1]), i_ulev, 0xFFFFFFFFL, mb_dummy != 0, 1 );
// mi_remain_size[mi_level] = m_el[mi_level]->GetSize();
if( i_ulev > 0 )
{
diff --git a/modules/demux/mkv/demux.cpp b/modules/demux/mkv/demux.cpp
index accea1b..d549c76 100644
--- a/modules/demux/mkv/demux.cpp
+++ b/modules/demux/mkv/demux.cpp
@@ -56,7 +56,7 @@ matroska_stream_c *demux_sys_t::AnalyseAllSegmentsFound( demux_t *p_demux, EbmlS
bool b_keep_stream = false, b_keep_segment;
// verify the EBML Header
- p_l0 = p_estream->FindNextID(EbmlHead::ClassInfos, 0xFFFFFFFFL);
+ p_l0 = p_estream->FindNextID(EBML_INFO(EbmlHead), 0xFFFFFFFFL);
if (p_l0 == NULL)
{
msg_Err( p_demux, "No EBML header found" );
@@ -64,7 +64,7 @@ matroska_stream_c *demux_sys_t::AnalyseAllSegmentsFound( demux_t *p_demux, EbmlS
}
// verify we can read this Segment, we only support Matroska version 1 for now
- p_l0->Read(*p_estream, EbmlHead::ClassInfos.Context, i_upper_lvl, p_l0, true);
+ p_l0->Read(*p_estream, EBML_CLASS_CONTEXT(EbmlHead), i_upper_lvl, p_l0, true);
EDocType doc_type = GetChild<EDocType>(*static_cast<EbmlHead*>(p_l0));
if (std::string(doc_type) != "matroska" && std::string(doc_type) != "webm" )
@@ -84,7 +84,7 @@ matroska_stream_c *demux_sys_t::AnalyseAllSegmentsFound( demux_t *p_demux, EbmlS
// find all segments in this file
- p_l0 = p_estream->FindNextID(KaxSegment::ClassInfos, 0xFFFFFFFFFLL);
+ p_l0 = p_estream->FindNextID(EBML_INFO(KaxSegment), 0xFFFFFFFFFLL);
if (p_l0 == NULL)
{
return NULL;
@@ -111,7 +111,7 @@ matroska_stream_c *demux_sys_t::AnalyseAllSegmentsFound( demux_t *p_demux, EbmlS
// find the families of this segment
KaxInfo *p_info = static_cast<KaxInfo*>(p_l1);
- p_info->Read(*p_estream, KaxInfo::ClassInfos.Context, i_upper_lvl, p_l2, true);
+ p_info->Read(*p_estream, EBML_CLASS_CONTEXT(KaxInfo), i_upper_lvl, p_l2, true);
for( i = 0; i < p_info->ListSize(); i++ )
{
EbmlElement *l = (*p_info)[i];
@@ -157,7 +157,7 @@ matroska_stream_c *demux_sys_t::AnalyseAllSegmentsFound( demux_t *p_demux, EbmlS
if (p_l0->IsFiniteSize() )
{
p_l0->SkipData(*p_estream, KaxMatroska_Context);
- p_l0 = p_estream->FindNextID(KaxSegment::ClassInfos, 0xFFFFFFFFL);
+ p_l0 = p_estream->FindNextID(EBML_INFO(KaxSegment), 0xFFFFFFFFL);
}
else
{
diff --git a/modules/demux/mkv/matroska_segment_parse.cpp b/modules/demux/mkv/matroska_segment_parse.cpp
index 27bbc0e..3bcf259 100644
--- a/modules/demux/mkv/matroska_segment_parse.cpp
+++ b/modules/demux/mkv/matroska_segment_parse.cpp
@@ -57,7 +57,7 @@ void matroska_segment_c::ParseSeekHead( KaxSeekHead *seekhead )
{
if( MKV_IS_ID( l, KaxSeek ) )
{
- EbmlId id = EbmlVoid::ClassInfos.GlobalId;
+ EbmlId id = EBML_ID(EbmlVoid);
int64_t i_pos = -1;
msg_Dbg( &sys.demuxer, "| | + Seek" );
@@ -86,40 +86,40 @@ void matroska_segment_c::ParseSeekHead( KaxSeekHead *seekhead )
if( i_pos >= 0 )
{
- if( id == KaxCues::ClassInfos.GlobalId )
+ if( id == EBML_ID(KaxCues) )
{
msg_Dbg( &sys.demuxer, "| - cues at %"PRId64, i_pos );
- LoadSeekHeadItem( KaxCues::ClassInfos, i_pos );
+ LoadSeekHeadItem( EBML_INFO(KaxCues), i_pos );
}
- else if( id == KaxInfo::ClassInfos.GlobalId )
+ else if( id == EBML_ID(KaxInfo) )
{
msg_Dbg( &sys.demuxer, "| - info at %"PRId64, i_pos );
- LoadSeekHeadItem( KaxInfo::ClassInfos, i_pos );
+ LoadSeekHeadItem( EBML_INFO(KaxInfo), i_pos );
}
- else if( id == KaxChapters::ClassInfos.GlobalId )
+ else if( id == EBML_ID(KaxChapters) )
{
msg_Dbg( &sys.demuxer, "| - chapters at %"PRId64, i_pos );
- LoadSeekHeadItem( KaxChapters::ClassInfos, i_pos );
+ LoadSeekHeadItem( EBML_INFO(KaxChapters), i_pos );
}
- else if( id == KaxTags::ClassInfos.GlobalId )
+ else if( id == EBML_ID(KaxTags) )
{
msg_Dbg( &sys.demuxer, "| - tags at %"PRId64, i_pos );
- LoadSeekHeadItem( KaxTags::ClassInfos, i_pos );
+ LoadSeekHeadItem( EBML_INFO(KaxTags), i_pos );
}
- else if( id == KaxSeekHead::ClassInfos.GlobalId )
+ else if( id == EBML_ID(KaxSeekHead) )
{
msg_Dbg( &sys.demuxer, "| - chained seekhead at %"PRId64, i_pos );
- LoadSeekHeadItem( KaxSeekHead::ClassInfos, i_pos );
+ LoadSeekHeadItem( EBML_INFO(KaxSeekHead), i_pos );
}
- else if( id == KaxTracks::ClassInfos.GlobalId )
+ else if( id == EBML_ID(KaxTracks) )
{
msg_Dbg( &sys.demuxer, "| - tracks at %"PRId64, i_pos );
- LoadSeekHeadItem( KaxTracks::ClassInfos, i_pos );
+ LoadSeekHeadItem( EBML_INFO(KaxTracks), i_pos );
}
- else if( id == KaxAttachments::ClassInfos.GlobalId )
+ else if( id == EBML_ID(KaxAttachments) )
{
msg_Dbg( &sys.demuxer, "| - attachments at %"PRId64, i_pos );
- LoadSeekHeadItem( KaxAttachments::ClassInfos, i_pos );
+ LoadSeekHeadItem( EBML_INFO(KaxAttachments), i_pos );
}
else
msg_Dbg( &sys.demuxer, "| - unknown seekhead reference at %"PRId64, i_pos );
@@ -654,7 +654,7 @@ void matroska_segment_c::ParseTracks( KaxTracks *tracks )
int i_upper_level = 0;
/* Master elements */
- tracks->Read( es, tracks->Generic().Context, i_upper_level, el, true );
+ tracks->Read( es, EBML_CONTEXT(tracks), i_upper_level, el, true );
for( i = 0; i < tracks->ListSize(); i++ )
{
@@ -683,7 +683,7 @@ void matroska_segment_c::ParseInfo( KaxInfo *info )
/* Master elements */
m = static_cast<EbmlMaster *>(info);
- m->Read( es, info->Generic().Context, i_upper_level, el, true );
+ m->Read( es, EBML_CONTEXT(info), i_upper_level, el, true );
for( i = 0; i < m->ListSize(); i++ )
{
@@ -792,7 +792,7 @@ void matroska_segment_c::ParseInfo( KaxInfo *info )
KaxChapterTranslate *p_trans = static_cast<KaxChapterTranslate*>( l );
chapter_translation_c *p_translate = new chapter_translation_c();
- p_trans->Read( es, p_trans->Generic().Context, i_upper_level, el, true );
+ p_trans->Read( es, EBML_CONTEXT(p_trans), i_upper_level, el, true );
for( j = 0; j < p_trans->ListSize(); j++ )
{
EbmlElement *l = (*p_trans)[j];
@@ -961,7 +961,7 @@ void matroska_segment_c::ParseAttachments( KaxAttachments *attachments )
EbmlElement *el;
int i_upper_level = 0;
- attachments->Read( es, attachments->Generic().Context, i_upper_level, el, true );
+ attachments->Read( es, EBML_CONTEXT(attachments), i_upper_level, el, true );
KaxAttached *attachedFile = FindChild<KaxAttached>( *attachments );
@@ -1006,7 +1006,7 @@ void matroska_segment_c::ParseChapters( KaxChapters *chapters )
mtime_t i_dur;
/* Master elements */
- chapters->Read( es, chapters->Generic().Context, i_upper_level, el, true );
+ chapters->Read( es, EBML_CONTEXT(chapters), i_upper_level, el, true );
for( i = 0; i < chapters->ListSize(); i++ )
{
@@ -1078,7 +1078,7 @@ void matroska_segment_c::ParseCluster( )
/* Master elements */
m = static_cast<EbmlMaster *>( cluster );
- m->Read( es, cluster->Generic().Context, i_upper_level, el, true );
+ m->Read( es, EBML_CONTEXT(cluster), i_upper_level, el, true );
for( i = 0; i < m->ListSize(); i++ )
{
diff --git a/modules/demux/mkv/mkv.hpp b/modules/demux/mkv/mkv.hpp
index 8e3ec9b..8b89b78 100644
--- a/modules/demux/mkv/mkv.hpp
+++ b/modules/demux/mkv/mkv.hpp
@@ -121,6 +121,12 @@ extern "C" {
#define MKV_IS_ID( el, C ) ( el != NULL && typeid( *el ) == typeid( C ) )
+#if LIBEBML_VERSION < 0x010000
+#define EBML_INFO(ref) ref::ClassInfos
+#define EBML_ID(ref) ref::ClassInfos.GlobalId
+#define EBML_CLASS_CONTEXT(ref) ref::ClassInfos.Context
+#define EBML_CONTEXT(e) (e)->Generic().Context
+#endif
using namespace LIBMATROSKA_NAMESPACE;
using namespace std;
More information about the vlc-commits
mailing list