package org.jcodec.containers.mp4.boxes; import java.util.HashMap; import java.util.Map; /** * This class is part of JCodec ( www.jcodec.org ) * This software is distributed under FreeBSD License * * Default box factory * * @author The JCodec project * */ public class BoxFactory { private Map<String, Class<? extends Box>> mappings = new HashMap<String, Class<? extends Box>>(); private static BoxFactory instance = new BoxFactory(); public static BoxFactory getDefault() { return instance; } public BoxFactory() { mappings.put(VideoMediaHeaderBox.fourcc(), VideoMediaHeaderBox.class); mappings.put(FileTypeBox.fourcc(), FileTypeBox.class); mappings.put(MovieBox.fourcc(), MovieBox.class); mappings.put(MovieHeaderBox.fourcc(), MovieHeaderBox.class); mappings.put(TrakBox.fourcc(), TrakBox.class); mappings.put(TrackHeaderBox.fourcc(), TrackHeaderBox.class); mappings.put("edts", NodeBox.class); mappings.put(EditListBox.fourcc(), EditListBox.class); mappings.put(MediaBox.fourcc(), MediaBox.class); mappings.put(MediaHeaderBox.fourcc(), MediaHeaderBox.class); mappings.put(MediaInfoBox.fourcc(), MediaInfoBox.class); mappings.put(HandlerBox.fourcc(), HandlerBox.class); mappings.put(DataInfoBox.fourcc(), DataInfoBox.class); mappings.put("stbl", NodeBox.class); mappings.put(SampleDescriptionBox.fourcc(), SampleDescriptionBox.class); mappings.put(TimeToSampleBox.fourcc(), TimeToSampleBox.class); mappings.put(SyncSamplesBox.fourcc(), SyncSamplesBox.class); mappings.put(PartialSyncSamplesBox.fourcc(), PartialSyncSamplesBox.class); mappings.put(SampleToChunkBox.fourcc(), SampleToChunkBox.class); mappings.put(SampleSizesBox.fourcc(), SampleSizesBox.class); mappings.put(ChunkOffsetsBox.fourcc(), ChunkOffsetsBox.class); mappings.put("mvex", NodeBox.class); mappings.put("moof", NodeBox.class); mappings.put("traf", NodeBox.class); mappings.put("mfra", NodeBox.class); mappings.put("skip", NodeBox.class); mappings.put("meta", LeafBox.class); mappings.put(DataRefBox.fourcc(), DataRefBox.class); mappings.put("ipro", NodeBox.class); mappings.put("sinf", NodeBox.class); mappings.put(ChunkOffsets64Box.fourcc(), ChunkOffsets64Box.class); mappings.put(SoundMediaHeaderBox.fourcc(), SoundMediaHeaderBox.class); mappings.put("clip", NodeBox.class); mappings.put(ClipRegionBox.fourcc(), ClipRegionBox.class); mappings.put(LoadSettingsBox.fourcc(), LoadSettingsBox.class); mappings.put("tapt", NodeBox.class); mappings.put("gmhd", NodeBox.class); mappings.put("tmcd", LeafBox.class); mappings.put("tref", NodeBox.class); mappings.put(ClearApertureBox.fourcc(), ClearApertureBox.class); mappings.put(ProductionApertureBox.fourcc(), ProductionApertureBox.class); mappings.put(EncodedPixelBox.fourcc(), EncodedPixelBox.class); mappings.put(GenericMediaInfoBox.fourcc(), GenericMediaInfoBox.class); mappings.put(TimecodeMediaInfoBox.fourcc(), TimecodeMediaInfoBox.class); mappings.put("udta", NodeBox.class); mappings.put(CompositionOffsetsBox.fourcc(), CompositionOffsetsBox.class); mappings.put(NameBox.fourcc(), NameBox.class); } public void override(String fourcc, Class<? extends Box> cls) { mappings.put(fourcc, cls); } public Class<? extends Box> toClass(String fourcc) { return mappings.get(fourcc); } }