1- use super :: { segment_info, segment_tracks} ;
1+ use super :: {
2+ segment_attachments, segment_chapters, segment_cluster, segment_info, segment_tags,
3+ segment_tracks,
4+ } ;
25use crate :: config:: ParseOptions ;
36use crate :: ebml:: element_reader:: { ElementIdent , ElementReader , ElementReaderYield } ;
47use crate :: ebml:: properties:: EbmlProperties ;
@@ -22,16 +25,36 @@ where
2225 while let Some ( child) = children_reader. next ( ) ? {
2326 match child {
2427 ElementReaderYield :: Master ( ( id, size) ) => match id {
25- ElementIdent :: Info => {
28+ ElementIdent :: Info if parse_options . read_properties => {
2629 segment_info:: read_from ( children_reader. inner ( ) , parse_options, properties) ?
2730 } ,
28- ElementIdent :: Cluster => todo ! ( "Support segment.Cluster" ) ,
29- ElementIdent :: Tracks => {
31+ ElementIdent :: Cluster if parse_options. read_properties => {
32+ segment_cluster:: read_from ( children_reader. inner ( ) , parse_options, properties) ?
33+ } ,
34+ ElementIdent :: Tracks if parse_options. read_properties => {
3035 segment_tracks:: read_from ( children_reader. inner ( ) , parse_options, properties) ?
3136 } ,
32- ElementIdent :: Tags => todo ! ( "Support segment.Tags" ) ,
33- ElementIdent :: Attachments => todo ! ( "Support segment.Attachments" ) ,
34- ElementIdent :: Chapters => todo ! ( "Support segment.Chapters" ) ,
37+ ElementIdent :: Tags | ElementIdent :: Attachments | ElementIdent :: Chapters => {
38+ let mut tag = tags. unwrap_or_default ( ) ;
39+
40+ if id == ElementIdent :: Tags {
41+ segment_tags:: read_from ( children_reader. inner ( ) , parse_options, & mut tag) ?
42+ } else if id == ElementIdent :: Attachments {
43+ segment_attachments:: read_from (
44+ children_reader. inner ( ) ,
45+ parse_options,
46+ & mut tag,
47+ ) ?
48+ } else {
49+ segment_chapters:: read_from (
50+ children_reader. inner ( ) ,
51+ parse_options,
52+ & mut tag,
53+ ) ?
54+ }
55+
56+ tags = Some ( tag) ;
57+ } ,
3558 _ => {
3659 // We do not end up using information from all of the segment
3760 // elements, so we can just skip any useless ones.
0 commit comments