File tree Expand file tree Collapse file tree 3 files changed +14
-2
lines changed Expand file tree Collapse file tree 3 files changed +14
-2
lines changed Original file line number Diff line number Diff line change @@ -768,12 +768,16 @@ class ContainerM4A : public ContainerDecoder {
768
768
// write the result to the decoder or to the final output
769
769
size_t writeResult (uint8_t * data, size_t len) {
770
770
// if we have a decoder we only decode the supported type
771
+ const char * original_mime = p_decoder->selectedMime ();
771
772
if (p_decoder != nullptr ) {
772
773
if (!p_decoder->selectDecoder (mime ())) {
773
774
LOGE (" Unsupported mime type %s" , mime ());
774
775
return 0 ;
775
776
}
776
- return p_decoder->write (data, len);
777
+ size_t result = p_decoder->write (data, len);
778
+ // restore original decoder
779
+ p_decoder->selectDecoder (original_mime);
780
+ return result;
777
781
}
778
782
// No decoder, just return any result
779
783
return p_print->write (data, len);
Original file line number Diff line number Diff line change @@ -72,6 +72,7 @@ class MultiDecoder : public AudioDecoder {
72
72
// / automatically from the determined mime type
73
73
bool selectDecoder (const char * mime) {
74
74
bool result = false ;
75
+ if (mime = nullptr ) return false ;
75
76
// do nothing if no change
76
77
if (StrView (mime).equals (actual_decoder.mime )) {
77
78
is_first = false ;
@@ -81,6 +82,7 @@ class MultiDecoder : public AudioDecoder {
81
82
end ();
82
83
83
84
// find the corresponding decoder
85
+ selected_mime = nullptr ;
84
86
for (int j = 0 ; j < decoders.size (); j++) {
85
87
DecoderInfo info = decoders[j];
86
88
if (StrView (info.mime ).equals (mime)) {
@@ -93,12 +95,17 @@ class MultiDecoder : public AudioDecoder {
93
95
}
94
96
actual_decoder.decoder ->begin ();
95
97
result = true ;
98
+ selected_mime = mime;
96
99
}
97
100
}
98
101
is_first = false ;
99
102
return result;
100
103
}
101
104
105
+ const char * selectedMime () {
106
+ return selected_mime;
107
+ }
108
+
102
109
size_t write (const uint8_t * data, size_t len) override {
103
110
if (is_first) {
104
111
const char * mime = nullptr ;
@@ -150,6 +157,7 @@ class MultiDecoder : public AudioDecoder {
150
157
CodecNOP nop;
151
158
AbstractURLStream* p_url_stream = nullptr ;
152
159
bool is_first = true ;
160
+ const char * selected_mime = nullptr ;
153
161
};
154
162
155
163
} // namespace audio_tools
Original file line number Diff line number Diff line change @@ -28,8 +28,8 @@ class MimeDetector {
28
28
setCheck (" video/MP2T" , checkMP2T);
29
29
setCheck (" audio/prs.sid" , checkSID);
30
30
setCheck (" audio/mpeg" , checkMP3Ext);
31
- setCheck (" audio/aac" , checkAACExt);
32
31
setCheck (" audio/m4a" , checkM4A);
32
+ setCheck (" audio/aac" , checkAACExt);
33
33
}
34
34
35
35
bool begin () {
You can’t perform that action at this time.
0 commit comments