public static VorbisPacket create(OggPacket packet) {
        // Special header types detection
        if (isVorbisSpecial(packet)) {
            byte type = packet.getData()[0];
            switch(type) {
            case TYPE_INFO:
                return new VorbisInfo(packet);
            case TYPE_COMMENTS:
                return new VorbisComments(packet);
            case TYPE_SETUP:
                return new VorbisSetup(packet);
            }
        }

        return new VorbisAudioData(packet);
    }