601 {
602 static $format_info = array();
603 if (empty($format_info)) {
604 $format_info = array(
605
606
607 'ac3' => array(
608 'pattern' => '^\x0B\x77',
609 'group' => 'audio',
610 'module' => 'ac3',
611 'mime_type' => 'audio/ac3',
612 ),
613
614 'adif' => array(
615 'pattern' => '^ADIF',
616 'group' => 'audio',
617 'module' => 'aac',
618 'mime_type' => 'application/octet-stream',
619 'fail_ape' => 'WARNING',
620 ),
621
622 'aa' => array(
623 'pattern' => '^.{4}\x57\x90\x75\x36',
624 'group' => 'audio',
625 'module' => 'aa',
626 'mime_type' => 'audio/audible',
627 ),
628
629 'adts' => array(
630 'pattern' => '^\xFF[\xF0-\xF1\xF8-\xF9]',
631 'group' => 'audio',
632 'module' => 'aac',
633 'mime_type' => 'application/octet-stream',
634 'fail_ape' => 'WARNING',
635 ),
636
637 'au' => array(
638 'pattern' => '^\.snd',
639 'group' => 'audio',
640 'module' => 'au',
641 'mime_type' => 'audio/basic',
642 ),
643
644 'avr' => array(
645 'pattern' => '^2BIT',
646 'group' => 'audio',
647 'module' => 'avr',
648 'mime_type' => 'application/octet-stream',
649 ),
650
651 'bonk' => array(
652 'pattern' => '^\x00(BONK|INFO|META| ID3)',
653 'group' => 'audio',
654 'module' => 'bonk',
655 'mime_type' => 'audio/xmms-bonk',
656 ),
657
658 'dss' => array(
659 'pattern' => '^[\x02-\x03]dss',
660 'group' => 'audio',
661 'module' => 'dss',
662 'mime_type' => 'application/octet-stream',
663 ),
664
665 'dts' => array(
666 'pattern' => '^\x7F\xFE\x80\x01',
667 'group' => 'audio',
668 'module' => 'dts',
669 'mime_type' => 'audio/dts',
670 ),
671
672 'flac' => array(
673 'pattern' => '^fLaC',
674 'group' => 'audio',
675 'module' => 'flac',
676 'mime_type' => 'audio/x-flac',
677 'set_inline_attachments' => true,
678 ),
679
680 'la' => array(
681 'pattern' => '^LA0[2-4]',
682 'group' => 'audio',
683 'module' => 'la',
684 'mime_type' => 'application/octet-stream',
685 ),
686
687 'lpac' => array(
688 'pattern' => '^LPAC',
689 'group' => 'audio',
690 'module' => 'lpac',
691 'mime_type' => 'application/octet-stream',
692 ),
693
694 'midi' => array(
695 'pattern' => '^MThd',
696 'group' => 'audio',
697 'module' => 'midi',
698 'mime_type' => 'audio/midi',
699 ),
700
701 'mac' => array(
702 'pattern' => '^MAC ',
703 'group' => 'audio',
704 'module' => 'monkey',
705 'mime_type' => 'application/octet-stream',
706 ),
707
708
709
710
711
712
713
714
715
716
717 'it' => array(
718 'pattern' => '^IMPM',
719 'group' => 'audio',
720 'module' => 'mod',
721
722 'mime_type' => 'audio/it',
723 ),
724
725 'xm' => array(
726 'pattern' => '^Extended Module',
727 'group' => 'audio',
728 'module' => 'mod',
729
730 'mime_type' => 'audio/xm',
731 ),
732
733 's3m' => array(
734 'pattern' => '^.{44}SCRM',
735 'group' => 'audio',
736 'module' => 'mod',
737
738 'mime_type' => 'audio/s3m',
739 ),
740
741 'mpc' => array(
742 'pattern' => '^(MPCK|MP\+|[\x00\x01\x10\x11\x40\x41\x50\x51\x80\x81\x90\x91\xC0\xC1\xD0\xD1][\x20-37][\x00\x20\x40\x60\x80\xA0\xC0\xE0])',
743 'group' => 'audio',
744 'module' => 'mpc',
745 'mime_type' => 'audio/x-musepack',
746 ),
747
748 'mp3' => array(
749 'pattern' => '^\xFF[\xE2-\xE7\xF2-\xF7\xFA-\xFF][\x00-\x0B\x10-\x1B\x20-\x2B\x30-\x3B\x40-\x4B\x50-\x5B\x60-\x6B\x70-\x7B\x80-\x8B\x90-\x9B\xA0-\xAB\xB0-\xBB\xC0-\xCB\xD0-\xDB\xE0-\xEB\xF0-\xFB]',
750 'group' => 'audio',
751 'module' => 'mp3',
752 'mime_type' => 'audio/mpeg',
753 ),
754
755 'ofr' => array(
756 'pattern' => '^(\*RIFF|OFR)',
757 'group' => 'audio',
758 'module' => 'optimfrog',
759 'mime_type' => 'application/octet-stream',
760 ),
761
762 'rkau' => array(
763 'pattern' => '^RKA',
764 'group' => 'audio',
765 'module' => 'rkau',
766 'mime_type' => 'application/octet-stream',
767 ),
768
769 'shn' => array(
770 'pattern' => '^ajkg',
771 'group' => 'audio',
772 'module' => 'shorten',
773 'mime_type' => 'audio/xmms-shn',
774 'fail_id3' => 'ERROR',
775 'fail_ape' => 'ERROR',
776 ),
777
778 'tta' => array(
779 'pattern' => '^TTA',
780 'group' => 'audio',
781 'module' => 'tta',
782 'mime_type' => 'application/octet-stream',
783 ),
784
785 'voc' => array(
786 'pattern' => '^Creative Voice File',
787 'group' => 'audio',
788 'module' => 'voc',
789 'mime_type' => 'audio/voc',
790 ),
791
792 'vqf' => array(
793 'pattern' => '^TWIN',
794 'group' => 'audio',
795 'module' => 'vqf',
796 'mime_type' => 'application/octet-stream',
797 ),
798
799 'wv' => array(
800 'pattern' => '^wvpk',
801 'group' => 'audio',
802 'module' => 'wavpack',
803 'mime_type' => 'application/octet-stream',
804 ),
805
806
807 'asf' => array(
808 'pattern' => '^\x30\x26\xB2\x75\x8E\x66\xCF\x11\xA6\xD9\x00\xAA\x00\x62\xCE\x6C',
809 'group' => 'audio-video',
810 'module' => 'asf',
811 'mime_type' => 'video/x-ms-asf',
812 'iconv_req' => false,
813 ),
814
815 'bink' => array(
816 'pattern' => '^(BIK|SMK)',
817 'group' => 'audio-video',
818 'module' => 'bink',
819 'mime_type' => 'application/octet-stream',
820 ),
821
822 'flv' => array(
823 'pattern' => '^FLV\x01',
824 'group' => 'audio-video',
825 'module' => 'flv',
826 'mime_type' => 'video/x-flv',
827 ),
828
829 'matroska' => array(
830 'pattern' => '^\x1A\x45\xDF\xA3',
831 'group' => 'audio-video',
832 'module' => 'matroska',
833 'mime_type' => 'video/x-matroska',
834 'set_inline_attachments' => true,
835 ),
836
837 'mpeg' => array(
838 'pattern' => '^\x00\x00\x01(\xBA|\xB3)',
839 'group' => 'audio-video',
840 'module' => 'mpeg',
841 'mime_type' => 'video/mpeg',
842 ),
843
844 'nsv' => array(
845 'pattern' => '^NSV[sf]',
846 'group' => 'audio-video',
847 'module' => 'nsv',
848 'mime_type' => 'application/octet-stream',
849 ),
850
851 'ogg' => array(
852 'pattern' => '^OggS',
853 'group' => 'audio',
854 'module' => 'ogg',
855 'mime_type' => 'application/ogg',
856 'fail_id3' => 'WARNING',
857 'fail_ape' => 'WARNING',
858 'set_inline_attachments' => true,
859 ),
860
861 'quicktime' => array(
862 'pattern' => '^.{4}(cmov|free|ftyp|mdat|moov|pnot|skip|wide)',
863 'group' => 'audio-video',
864 'module' => 'quicktime',
865 'mime_type' => 'video/quicktime',
866 ),
867
868 'riff' => array(
869 'pattern' => '^(RIFF|SDSS|FORM)',
870 'group' => 'audio-video',
871 'module' => 'riff',
872 'mime_type' => 'audio/x-wave',
873 'fail_ape' => 'WARNING',
874 ),
875
876 'real' => array(
877 'pattern' => '^(\\.RMF|\\.ra)',
878 'group' => 'audio-video',
879 'module' => 'real',
880 'mime_type' => 'audio/x-realaudio',
881 ),
882
883 'swf' => array(
884 'pattern' => '^(F|C)WS',
885 'group' => 'audio-video',
886 'module' => 'swf',
887 'mime_type' => 'application/x-shockwave-flash',
888 ),
889
890 'ts' => array(
891 'pattern' => '^\x47',
892 'group' => 'audio-video',
893 'module' => 'ts',
894 'mime_type' => 'video/MP2T',
895 ),
896
897
898 'bmp' => array(
899 'pattern' => '^BM',
900 'group' => 'graphic',
901 'module' => 'bmp',
902 'mime_type' => 'image/bmp',
903 'fail_id3' => 'ERROR',
904 'fail_ape' => 'ERROR',
905 ),
906
907 'gif' => array(
908 'pattern' => '^GIF',
909 'group' => 'graphic',
910 'module' => 'gif',
911 'mime_type' => 'image/gif',
912 'fail_id3' => 'ERROR',
913 'fail_ape' => 'ERROR',
914 ),
915
916 'jpg' => array(
917 'pattern' => '^\xFF\xD8\xFF',
918 'group' => 'graphic',
919 'module' => 'jpg',
920 'mime_type' => 'image/jpeg',
921 'fail_id3' => 'ERROR',
922 'fail_ape' => 'ERROR',
923 ),
924
925 'pcd' => array(
926 'pattern' => '^.{2048}PCD_IPI\x00',
927 'group' => 'graphic',
928 'module' => 'pcd',
929 'mime_type' => 'image/x-photo-cd',
930 'fail_id3' => 'ERROR',
931 'fail_ape' => 'ERROR',
932 ),
933
934 'png' => array(
935 'pattern' => '^\x89\x50\x4E\x47\x0D\x0A\x1A\x0A',
936 'group' => 'graphic',
937 'module' => 'png',
938 'mime_type' => 'image/png',
939 'fail_id3' => 'ERROR',
940 'fail_ape' => 'ERROR',
941 ),
942
943 'svg' => array(
944 'pattern' => '(<!DOCTYPE svg PUBLIC |xmlns="http:\/\/www\.w3\.org\/2000\/svg")',
945 'group' => 'graphic',
946 'module' => 'svg',
947 'mime_type' => 'image/svg+xml',
948 'fail_id3' => 'ERROR',
949 'fail_ape' => 'ERROR',
950 ),
951
952 'tiff' => array(
953 'pattern' => '^(II\x2A\x00|MM\x00\x2A)',
954 'group' => 'graphic',
955 'module' => 'tiff',
956 'mime_type' => 'image/tiff',
957 'fail_id3' => 'ERROR',
958 'fail_ape' => 'ERROR',
959 ),
960
961 'efax' => array(
962 'pattern' => '^\xDC\xFE',
963 'group' => 'graphic',
964 'module' => 'efax',
965 'mime_type' => 'image/efax',
966 'fail_id3' => 'ERROR',
967 'fail_ape' => 'ERROR',
968 ),
969
970
971 'iso' => array(
972 'pattern' => '^.{32769}CD001',
973 'group' => 'misc',
974 'module' => 'iso',
975 'mime_type' => 'application/octet-stream',
976 'fail_id3' => 'ERROR',
977 'fail_ape' => 'ERROR',
978 'iconv_req' => false,
979 ),
980
981 'rar' => array(
982 'pattern' => '^Rar\!',
983 'group' => 'archive',
984 'module' => 'rar',
985 'mime_type' => 'application/octet-stream',
986 'fail_id3' => 'ERROR',
987 'fail_ape' => 'ERROR',
988 ),
989
990 'szip' => array(
991 'pattern' => '^SZ\x0A\x04',
992 'group' => 'archive',
993 'module' => 'szip',
994 'mime_type' => 'application/octet-stream',
995 'fail_id3' => 'ERROR',
996 'fail_ape' => 'ERROR',
997 ),
998
999 'tar' => array(
1000 'pattern' => '^.{100}[0-9\x20]{7}\x00[0-9\x20]{7}\x00[0-9\x20]{7}\x00[0-9\x20\x00]{12}[0-9\x20\x00]{12}',
1001 'group' => 'archive',
1002 'module' => 'tar',
1003 'mime_type' => 'application/x-tar',
1004 'fail_id3' => 'ERROR',
1005 'fail_ape' => 'ERROR',
1006 ),
1007
1008 'gz' => array(
1009 'pattern' => '^\x1F\x8B\x08',
1010 'group' => 'archive',
1011 'module' => 'gzip',
1012 'mime_type' => 'application/x-gzip',
1013 'fail_id3' => 'ERROR',
1014 'fail_ape' => 'ERROR',
1015 ),
1016
1017 'zip' => array(
1018 'pattern' => '^PK\x03\x04',
1019 'group' => 'archive',
1020 'module' => 'zip',
1021 'mime_type' => 'application/zip',
1022 'fail_id3' => 'ERROR',
1023 'fail_ape' => 'ERROR',
1024 ),
1025
1026
1027 'par2' => array(
1028 'pattern' => '^PAR2\x00PKT',
1029 'group' => 'misc',
1030 'module' => 'par2',
1031 'mime_type' => 'application/octet-stream',
1032 'fail_id3' => 'ERROR',
1033 'fail_ape' => 'ERROR',
1034 ),
1035
1036 'pdf' => array(
1037 'pattern' => '^\x25PDF',
1038 'group' => 'misc',
1039 'module' => 'pdf',
1040 'mime_type' => 'application/pdf',
1041 'fail_id3' => 'ERROR',
1042 'fail_ape' => 'ERROR',
1043 ),
1044
1045 'msoffice' => array(
1046 'pattern' => '^\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1',
1047 'group' => 'misc',
1048 'module' => 'msoffice',
1049 'mime_type' => 'application/octet-stream',
1050 'fail_id3' => 'ERROR',
1051 'fail_ape' => 'ERROR',
1052 ),
1053
1054 'cue' => array(
1055 'pattern' => '',
1056 'group' => 'misc',
1057 'module' => 'cue',
1058 'mime_type' => 'application/octet-stream',
1059 ),
1060 );
1061 }
1062
1063 return $format_info;
1064 }