Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -59,14 +59,15 @@ public final class FileTypes {
* <li>{@link #BMP}
* <li>{@link #HEIF}
* <li>{@link #AVIF}
* <li>{@link #MMT_TLV}
* </ul>
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
@Target(TYPE_USE)
@IntDef({
UNKNOWN, AC3, AC4, ADTS, AMR, FLAC, FLV, MATROSKA, MP3, MP4, OGG, PS, TS, WAV, WEBVTT, JPEG,
MIDI, AVI, PNG, WEBP, BMP, HEIF, AVIF
MIDI, AVI, PNG, WEBP, BMP, HEIF, AVIF, MMT_TLV
})
public @interface Type {}

Expand Down Expand Up @@ -139,6 +140,9 @@ public final class FileTypes {
/** File type for the AVIF format. */
public static final int AVIF = 21;

/** File type for the MMT (MPEG Media Transport) over TLV format. */
public static final int MMT_TLV = 22;

@VisibleForTesting /* package */ static final String HEADER_CONTENT_TYPE = "Content-Type";

private static final String EXTENSION_AC3 = ".ac3";
Expand Down Expand Up @@ -181,6 +185,9 @@ public final class FileTypes {
private static final String EXTENSION_HEIC = ".heic";
private static final String EXTENSION_HEIF = ".heif";
private static final String EXTENSION_AVIF = ".avif";
private static final String EXTENSION_MMT = ".mmt";
private static final String EXTENSION_MMTS = ".mmts";
private static final String EXTENSION_TLV = ".tlv";

private FileTypes() {}

Expand Down Expand Up @@ -257,6 +264,8 @@ private FileTypes() {}
return FileTypes.HEIF;
case MimeTypes.IMAGE_AVIF:
return FileTypes.AVIF;
case MimeTypes.VIDEO_MMT_TLV:
return FileTypes.MMT_TLV;
default:
return FileTypes.UNKNOWN;
}
Expand Down Expand Up @@ -334,6 +343,10 @@ private FileTypes() {}
return FileTypes.HEIF;
} else if (filename.endsWith(EXTENSION_AVIF)) {
return FileTypes.AVIF;
} else if (filename.endsWith(EXTENSION_MMT)
|| filename.endsWith(EXTENSION_MMTS)
|| filename.endsWith(EXTENSION_TLV)) {
return FileTypes.MMT_TLV;
} else {
return FileTypes.UNKNOWN;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ public final class MimeTypes {
@UnstableApi public static final String VIDEO_VP9 = BASE_TYPE_VIDEO + "/x-vnd.on2.vp9";
public static final String VIDEO_AV1 = BASE_TYPE_VIDEO + "/av01";
public static final String VIDEO_MP2T = BASE_TYPE_VIDEO + "/mp2t";
@UnstableApi public static final String VIDEO_MMT_TLV = BASE_TYPE_VIDEO + "/mmt-tlv";
public static final String VIDEO_MP4V = BASE_TYPE_VIDEO + "/mp4v-es";
public static final String VIDEO_MPEG = BASE_TYPE_VIDEO + "/mpeg";
public static final String VIDEO_PS = BASE_TYPE_VIDEO + "/mp2p";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import androidx.media3.extractor.heif.HeifExtractor;
import androidx.media3.extractor.jpeg.JpegExtractor;
import androidx.media3.extractor.mkv.MatroskaExtractor;
import androidx.media3.extractor.mmt.TlvExtractor;
import androidx.media3.extractor.mp3.Mp3Extractor;
import androidx.media3.extractor.mp4.FragmentedMp4Extractor;
import androidx.media3.extractor.mp4.Mp4Extractor;
Expand Down Expand Up @@ -94,6 +95,7 @@
* <li>BMP ({@link BmpExtractor})
* <li>HEIF ({@link HeifExtractor})
* <li>AVIF ({@link AvifExtractor})
* <li>MMT/TLV ({@link TlvExtractor})
* <li>MIDI, if available, the MIDI extension's {@code androidx.media3.decoder.midi.MidiExtractor}
* is used.
* </ul>
Expand Down Expand Up @@ -129,7 +131,8 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
FileTypes.WEBP,
FileTypes.BMP,
FileTypes.HEIF,
FileTypes.AVIF
FileTypes.AVIF,
FileTypes.MMT_TLV
};

private static final ExtensionLoader FLAC_EXTENSION_LOADER =
Expand Down Expand Up @@ -613,6 +616,9 @@ private void addExtractorsForFileType(@FileTypes.Type int fileType, List<Extract
case FileTypes.AVIF:
extractors.add(new AvifExtractor());
break;
case FileTypes.MMT_TLV:
extractors.add(new TlvExtractor());
break;
case FileTypes.WEBVTT:
case FileTypes.UNKNOWN:
default:
Expand Down
Loading