protected OggStreamPacket createNext(OggPacket packet) {
        if (type == OggStreamIdentifier.OGG_VORBIS) {
            return VorbisPacketFactory.create(packet);
        } else if (type == OggStreamIdentifier.SPEEX_AUDIO) {
            return SpeexPacketFactory.create(packet);
        } else if (type == OggStreamIdentifier.OPUS_AUDIO) {
            return OpusPacketFactory.create(packet);
        } else if (type == OggStreamIdentifier.OGG_FLAC) {
            // TODO Finish FLAC support
            return null;
        } else {
            throw new IllegalArgumentException("Unsupported stream of type " + type);
        }
    }