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: ...@@ -487,6 +487,7 @@ public:
} }
bool Preload( demux_t *p_demux ); bool Preload( demux_t *p_demux );
bool PreloadFamily( demux_t *p_demux, const matroska_segment_t & segment );
}; };
class matroska_stream_t class matroska_stream_t
...@@ -524,7 +525,7 @@ public: ...@@ -524,7 +525,7 @@ public:
matroska_segment_t *FindSegment( KaxSegmentUID & i_uid ) const; 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 class demux_sys_t
...@@ -3283,12 +3284,49 @@ const chapter_item_t *chapter_edition_t::FindTimecode( mtime_t i_user_timecode ) ...@@ -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 ) 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 ) 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 ) bool matroska_segment_t::Preload( demux_t *p_demux )
{ {
if ( b_preloaded ) 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