Was ist der Index in der folgenden Funktion?
-
21-12-2019 - |
Frage
sp<MetaData> MP3Extractor::getTrackMetaData(size_t index, uint32_t flags) {
ALOGE("%s\t%d",__FUNCTION__,__LINE__);
if (mInitCheck != OK || index != 0) {
return NULL;
}
return mMeta;
}
Warum diese Funktion im benötigt wird MP3Extractor
?
Lösung
MediaExtractor
ist ein Modul, das das Parsen gemultiplexter Daten in Containern oder Dateiformaten implementiert.In einer Datei gibt es mehrere track
s, die bestimmten Daten entsprechen, z video
oder audio
.Ebenso in a MP3
In einer Datei kann es mehrere Titel geben, die anhand ihres Index identifiziert werden.Der Index in der Funktion entspricht einem bestimmten track
von Interesse.
Warum ist diese Funktion nun erforderlich?Seit MP3Extractor
Ist ein weiterer Extraktor im Framework, muss er diese Funktion unterstützen, der Grund dafür folgt.Betrachten wir das player
als Beispiel. AwesomePlayer
ist eine Player-Engine, die die gesamte Pipeline einrichtet.
In diesem Prozess würde die Player-Engine zuerst den Extraktor einrichten und dann versuchen, eine Downstream-Komponente wie eine zu erstellen decoder
um die Daten zu verbrauchen.Der decoder
ist spezifisch für einen Track, der durch identifiziert wird index
.Um eine zu erstellen decoder
, Man muss die Eigenschaften der Daten kennen, die darin dargestellt oder erfasst werden meta
d.h.Metadaten, die zum Erstellen und Initialisieren der Downstream-Komponente verwendet werden.