@@ -2,7 +2,7 @@ use std::time::Duration;
2
2
use symphonia:: {
3
3
core:: {
4
4
audio:: { AudioBufferRef , SampleBuffer , SignalSpec } ,
5
- codecs:: { Decoder , CODEC_TYPE_NULL } ,
5
+ codecs:: { Decoder , DecoderOptions , CODEC_TYPE_NULL } ,
6
6
errors:: Error ,
7
7
formats:: { FormatOptions , FormatReader , SeekedTo } ,
8
8
io:: MediaSourceStream ,
@@ -77,13 +77,19 @@ impl SymphoniaDecoder {
77
77
} ;
78
78
79
79
// Select the first supported track
80
- let track_id = probed
80
+ let track_id = match probed
81
81
. format
82
82
. tracks ( )
83
83
. iter ( )
84
84
. find ( |t| t. codec_params . codec != CODEC_TYPE_NULL )
85
- . unwrap ( )
86
- . id ;
85
+ {
86
+ Some ( track) => track. id ,
87
+ None => {
88
+ return Err ( symphonia:: core:: errors:: Error :: Unsupported (
89
+ "No track with supported codec" ,
90
+ ) )
91
+ }
92
+ } ;
87
93
88
94
let track = probed
89
95
. format
@@ -92,8 +98,8 @@ impl SymphoniaDecoder {
92
98
. find ( |track| track. id == track_id)
93
99
. unwrap ( ) ;
94
100
95
- let mut decoder =
96
- symphonia :: default :: get_codecs ( ) . make ( & track. codec_params , & Default :: default ( ) ) ?;
101
+ let mut decoder = symphonia :: default :: get_codecs ( )
102
+ . make ( & track. codec_params , & DecoderOptions :: default ( ) ) ?;
97
103
let total_duration = stream
98
104
. codec_params
99
105
. time_base
@@ -104,10 +110,8 @@ impl SymphoniaDecoder {
104
110
let decoded = loop {
105
111
let current_frame = match probed. format . next_packet ( ) {
106
112
Ok ( packet) => packet,
107
- Err ( e) => match e {
108
- Error :: IoError ( _) => break decoder. last_decoded ( ) ,
109
- _ => return Err ( e) ,
110
- } ,
113
+ Err ( Error :: IoError ( _) ) => break decoder. last_decoded ( ) ,
114
+ Err ( e) => return Err ( e) ,
111
115
} ;
112
116
113
117
// If the packet does not belong to the selected track, skip over it
0 commit comments