[vlc-commits] mkv: adjust the end timestamp of ordered chapters based on the information from sub chapters
Steve Lhomme
git at videolan.org
Wed Mar 16 13:55:27 CET 2016
vlc | branch: master | Steve Lhomme <robux4 at videolabs.io> | Wed Mar 16 13:43:29 2016 +0100| [dfc5105dc802800bb2c984b37fb97c2b04ec595b] | committer: Jean-Baptiste Kempf
mkv: adjust the end timestamp of ordered chapters based on the information from sub chapters
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=dfc5105dc802800bb2c984b37fb97c2b04ec595b
---
modules/demux/mkv/virtual_segment.cpp | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/modules/demux/mkv/virtual_segment.cpp b/modules/demux/mkv/virtual_segment.cpp
index 5b6193d..2aab473 100644
--- a/modules/demux/mkv/virtual_segment.cpp
+++ b/modules/demux/mkv/virtual_segment.cpp
@@ -51,9 +51,6 @@ virtual_chapter_c * virtual_chapter_c::CreateVirtualChapter( chapter_item_c * p_
return new (std::nothrow) virtual_chapter_c( main_segment, NULL, 0, main_segment.i_duration * 1000, sub_chapters );
}
- int64_t start = ( b_ordered )? usertime_offset : p_chap->i_start_time;
- int64_t stop = ( b_ordered )? ( usertime_offset + p_chap->i_end_time - p_chap->i_start_time ) : p_chap->i_end_time;
-
matroska_segment_c * p_segment = &main_segment;
if( p_chap->p_segment_uid &&
( !( p_segment = getSegmentbyUID( (KaxSegmentUID*) p_chap->p_segment_uid,segments ) ) || !b_ordered ) )
@@ -68,6 +65,7 @@ virtual_chapter_c * virtual_chapter_c::CreateVirtualChapter( chapter_item_c * p_
if ( !p_segment->b_preloaded )
p_segment->Preload();
+ int64_t start = ( b_ordered )? usertime_offset : p_chap->i_start_time;
int64_t tmp = usertime_offset;
for( size_t i = 0; i < p_chap->sub_chapters.size(); i++ )
@@ -77,6 +75,7 @@ virtual_chapter_c * virtual_chapter_c::CreateVirtualChapter( chapter_item_c * p_
if( p_vsubchap )
sub_chapters.push_back( p_vsubchap );
}
+ int64_t stop = ( b_ordered )? tmp : p_chap->i_end_time;
virtual_chapter_c * p_vchap = new (std::nothrow) virtual_chapter_c( *p_segment, p_chap, start, stop, sub_chapters );
if( !p_vchap )
@@ -87,7 +86,10 @@ virtual_chapter_c * virtual_chapter_c::CreateVirtualChapter( chapter_item_c * p_
}
if( tmp == usertime_offset )
- usertime_offset += p_chap->i_end_time - p_chap->i_start_time;
+ {
+ if ( p_chap->i_end_time >= 0 )
+ usertime_offset += p_chap->i_end_time - p_chap->i_start_time;
+ }
else
usertime_offset = tmp;
More information about the vlc-commits
mailing list