Commit a1c54b8a authored by Steve Lhomme's avatar Steve Lhomme

mkv.cpp: support preloading in the same family

parent acf4606c
......@@ -487,6 +487,7 @@ public:
}
bool Preload( demux_t *p_demux );
bool PreloadFamily( demux_t *p_demux, const matroska_segment_t & segment );
};
class matroska_stream_t
......@@ -524,7 +525,7 @@ public:
matroska_segment_t *FindSegment( KaxSegmentUID & i_uid ) const;
void PreloadFamily( demux_t *p_demux );
void PreloadFamily( demux_t *p_demux, const matroska_segment_t & segment );
};
class demux_sys_t
......@@ -3283,12 +3284,49 @@ const chapter_item_t *chapter_edition_t::FindTimecode( mtime_t i_user_timecode )
void demux_sys_t::PreloadFamily( demux_t *p_demux )
{
matroska_stream_t *p_stream = Stream();
if ( p_stream )
{
matroska_segment_t *p_segment = p_stream->Segment();
if ( p_segment )
{
for (size_t i=0; i<streams.size(); i++)
{
streams[i]->PreloadFamily( p_demux, *p_segment );
}
}
}
}
void matroska_stream_t::PreloadFamily( demux_t *p_demux, const matroska_segment_t & of_segment )
{
for (size_t i=0; i<segments.size(); i++)
{
segments[i]->PreloadFamily( p_demux, of_segment );
}
}
void demux_sys_t::PreloadLinked( demux_t *p_demux )
{
}
bool matroska_segment_t::PreloadFamily( demux_t *p_demux, const matroska_segment_t & of_segment )
{
if ( b_preloaded )
return false;
for (size_t i=0; i<families.size(); i++)
{
for (size_t j=0; j<of_segment.families.size(); j++)
{
if ( families[i] == of_segment.families[j] )
return Preload( p_demux );
}
}
return false;
}
bool matroska_segment_t::Preload( demux_t *p_demux )
{
if ( b_preloaded )
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment