Changeset 806
- Timestamp:
- 02/09/08 13:55:44 (6 months ago)
- Files:
-
- branches/perian-1.1/PerianPrefPane.nib/info.nib (modified) (1 diff)
- branches/perian-1.1/PerianPrefPane.nib/keyedobjects.nib (modified) (previous)
- trunk/CAPublicUtility/CAStreamBasicDescription.cpp (modified) (2 diffs)
- trunk/CommonUtils.c (modified) (1 diff)
- trunk/FFusionCodec.c (modified) (15 diffs)
- trunk/FFusionCodec.h (modified) (1 diff)
- trunk/FrameBuffer.c (modified) (1 diff)
- trunk/MatroskaCodecIDs.cpp (modified) (5 diffs)
- trunk/MatroskaImport.cpp (modified) (3 diffs)
- trunk/MatroskaImportPrivate.cpp (modified) (2 diffs)
- trunk/MatroskaImportVersion.h (modified) (1 diff)
- trunk/Patches (added)
- trunk/Patches/ffmpeg.diff (added)
- trunk/Perian.xcodeproj/project.pbxproj (modified) (17 diffs)
- trunk/PerianAviImporter.r (modified) (1 diff)
- trunk/Perian_icon.icns (modified) (previous)
- trunk/Plists/Perian-Info.plist (modified) (2 diffs)
- trunk/Plists/PerianPane-Info.plist (modified) (1 diff)
- trunk/Plists/PerianUpdateChecker-Info.plist (modified) (1 diff)
- trunk/Release/Artwork/periandmgbg.png (modified) (previous)
- trunk/Release/Artwork/periandmgbg.psd (modified) (previous)
- trunk/Release/Changes.txt (modified) (1 diff)
- trunk/Release/Makefile (modified) (1 diff)
- trunk/Release/Read Me.rtf (modified) (4 diffs)
- trunk/Release/dmg_perian.scpt (modified) (previous)
- trunk/Subtitles/SubATSUIRenderer.m (modified) (13 diffs)
- trunk/Subtitles/SubContext.h (modified) (1 diff)
- trunk/Subtitles/SubContext.m (modified) (6 diffs)
- trunk/Subtitles/SubImport.h (modified) (4 diffs)
- trunk/Subtitles/SubImport.mm (modified) (2 diffs)
- trunk/Subtitles/SubParsing.h (modified) (1 diff)
- trunk/Subtitles/SubParsing.m.rl (modified) (1 diff)
- trunk/Subtitles/SubRenderer.h (modified) (1 diff)
- trunk/TextSubCodec.c (modified) (3 diffs)
- trunk/TextSubCodec.r (modified) (1 diff)
- trunk/UniversalDetector/UniversalDetector.xcodeproj/project.pbxproj (modified) (1 diff)
- trunk/VobSubCodec.r (modified) (1 diff)
- trunk/bitstream_info.c (modified) (9 diffs)
- trunk/bitstream_info.h (modified) (1 diff)
- trunk/createStaticLibs.sh (modified) (1 diff)
- trunk/ff_MovieImport.c (modified) (9 diffs)
- trunk/ff_MovieImportVersion.h (modified) (1 diff)
- trunk/ff_dataref.c (modified) (2 diffs)
- trunk/ff_private.c (modified) (2 diffs)
- trunk/ff_private.h (modified) (1 diff)
- trunk/ffmpeg-patch (modified) (21 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/perian-1.1/PerianPrefPane.nib/info.nib
r802 r806 9 9 <key>IBOpenObjects</key> 10 10 <array> 11 <integer> 32</integer>11 <integer>5</integer> 12 12 </array> 13 13 <key>IBSystem Version</key> trunk/CAPublicUtility/CAStreamBasicDescription.cpp
r219 r806 50 50 #include <Endian.h> 51 51 #endif 52 53 #import "CodecIDs.h" 52 54 53 55 const AudioStreamBasicDescription CAStreamBasicDescription::sEmpty = { 0.0, 0, 0, 0, 0, 0, 0, 0, 0 }; … … 272 274 273 275 case kAudioFormatAC3: 276 case kAudioFormatAC3MS: 274 277 strcpy(outName, "AC-3"); 275 278 break; trunk/CommonUtils.c
r585 r806 70 70 { "he", "heb", langHebrew }, 71 71 { "hi", "hin", langHindi }, 72 { " ", "hmn", langHungarian },72 { "hu", "hun", langHungarian }, 73 73 { "is", "ice", langIcelandic }, 74 74 { "is", "isl", langIcelandic }, trunk/FFusionCodec.c
r736 r806 41 41 #include "FrameBuffer.h" 42 42 #include "CommonUtils.h" 43 #include "pthread.h" 43 44 44 45 void inline swapFrame(AVFrame * *a, AVFrame * *b) … … 164 165 #include <QuickTime/ComponentDispatchHelper.c> 165 166 167 void *launchUpdateChecker(void *args) 168 { 169 FSRef *ref = (FSRef *)args; 170 LSOpenFSRef(ref, NULL); 171 free(ref); 172 return NULL; 173 } 174 166 175 void FFusionRunUpdateCheck() 167 176 { … … 181 190 182 191 char fileRep[1024]; 183 FSRef updateCheckRef;192 FSRef *updateCheckRef = malloc(sizeof(FSRef)); 184 193 Boolean doCheck = FALSE; 185 194 186 195 if(CFStringGetFileSystemRepresentation(location, fileRep, 1024)) 187 if(FSPathMakeRef((UInt8 *)fileRep, &updateCheckRef, NULL) == noErr)196 if(FSPathMakeRef((UInt8 *)fileRep, updateCheckRef, NULL) == noErr) 188 197 doCheck = TRUE; 189 198 … … 193 202 CFStringRef absLocation = CFSTR("/Library/PreferencePanes/Perian.prefPane/Contents/Resources/PerianUpdateChecker.app"); 194 203 if(CFStringGetFileSystemRepresentation(absLocation, fileRep, 1024)) 195 if(FSPathMakeRef((UInt8 *)fileRep, &updateCheckRef, NULL) != noErr)204 if(FSPathMakeRef((UInt8 *)fileRep, updateCheckRef, NULL) != noErr) 196 205 return; //We have failed 197 206 } 198 199 LSOpenFSRef(&updateCheckRef, NULL); 207 pthread_t thread; 208 pthread_create(&thread, NULL, launchUpdateChecker, updateCheckRef); 200 209 } 201 210 … … 290 299 Codecprintf(glob->fileLog, "Error opening the base image decompressor! Exiting.\n"); 291 300 } 301 302 // we allocate some space for copying the frame data since we need some padding at the end 303 // for ffmpeg's optimized bitstream readers. Size doesn't really matter, it'll grow if need be 304 FFusionDataSetup(&(glob->data), 256, 64*1024); 292 305 FFusionRunUpdateCheck(); 293 306 } … … 315 328 DisposeImageCodecMPDrawBandUPP(glob->drawBandUPP); 316 329 } 317 318 if (glob->avCodec)319 {320 avcodec_close(glob->avContext);321 }322 330 323 331 if (glob->avContext) … … 326 334 free(glob->avContext->extradata); 327 335 336 if (glob->avContext->codec) avcodec_close(glob->avContext); 328 337 av_free(glob->avContext); 329 338 } … … 344 353 fclose(glob->fileLog); 345 354 355 memset(glob, 0, sizeof(FFusionGlobalsRecord)); 346 356 DisposePtr((Ptr)glob); 347 357 } … … 453 463 long count = 0; 454 464 Handle imgDescExt; 465 OSErr err = noErr; 455 466 456 467 // We first open libavcodec library and the codec corresponding … … 678 689 ffusionParseExtraData(glob->begin.parser, glob->avContext->extradata, glob->avContext->extradata_size); 679 690 691 // XXX: at the moment ffmpeg can't handle interlaced H.264 right 692 // specifically PAFF + spatial prediction 693 if (glob->componentType == 'avc1' && !ffusionIsParsedVideoDecodable(glob->begin.parser)) 694 err = featureUnsupported; 695 680 696 // some hooks into ffmpeg's buffer allocation to get frames in 681 697 // decode order without delay more easily … … 693 709 Codecprintf(glob->fileLog, "Error opening avcodec!\n"); 694 710 695 return -2;711 err = paramErr; 696 712 } 697 713 698 // we allocate some space for copying the frame data since we need some padding at the end699 // for ffmpeg's optimized bitstream readers. Size doesn't really matter, it'll grow if need be700 FFusionDataSetup(&(glob->data), 256, 64*1024);701 714 } 702 715 … … 736 749 index = 0; 737 750 751 if (!err) { 738 752 switch (glob->avContext->pix_fmt) 739 753 { … … 756 770 break; 757 771 } 772 } 758 773 759 774 pos[index++] = 0; … … 771 786 capabilities->flags |= codecCanAsync | codecCanAsyncWhen; 772 787 773 774 return noErr; 788 return err; 775 789 } 776 790 … … 833 847 myDrp->frameData = NULL; 834 848 myDrp->buffer = NULL; 849 850 if (!glob->avContext) { 851 fprintf(stderr, "Perian Codec: QT tried to call BeginBand without preflighting!\n"); 852 return internalComponentErr; 853 } 835 854 836 855 if(myDrp->decoded) trunk/FFusionCodec.h
r708 r806 29 29 //--------------------------------------------------------------------------- 30 30 31 #define kFFusionCodecVersion (0x0003000 2)31 #define kFFusionCodecVersion (0x00030003) 32 32 33 33 #define kDivX1CodecInfoResID 256 trunk/FrameBuffer.c
r641 r806 39 39 free(data->frames[i]); 40 40 } 41 free(data->buffer); 41 free(data->frames); 42 av_free(data->buffer); 42 43 } 43 44 trunk/MatroskaCodecIDs.cpp
r726 r806 427 427 } 428 428 429 static const unsigned char aac_lc_vos[] = {0x11, 0x90}; 430 429 431 static Handle CreateEsdsExt(KaxTrackEntry *tr_entry, bool audio) 430 432 { … … 436 438 uint8_t *vosBuf = codecPrivate ? codecPrivate->GetBuffer() : NULL; 437 439 size_t esdsLen; 440 441 if (!vosBuf) { // minimal AAC-LC descriptor 442 vosBuf = (uint8_t*)aac_lc_vos; 443 vosLen = 2; 444 } 438 445 439 446 Handle esdsExt = NewHandleClear(4); … … 720 727 721 728 case kAudioFormatAC3: 729 case kAudioFormatAC3MS: 722 730 acl = ac3ChannelLayouts[channelIndex]; 723 731 break; … … 753 761 { kAudioFormatMPEGLayer2, 0x50 }, 754 762 { kAudioFormatMPEGLayer3, 0x55 }, 755 { kAudioFormatAC3 , 0x2000 },763 { kAudioFormatAC3MS, 0x2000 }, 756 764 { kAudioFormatDTS, 0x2001 }, 757 765 { kAudioFormatMPEG4AAC, 0xff }, … … 795 803 { kAudioFormatMPEGLayer2, "A_MPEG/L2" }, 796 804 { kAudioFormatMPEGLayer3, "A_MPEG/L3" }, 797 { kAudioFormatAC3 , "A_AC3" },805 { kAudioFormatAC3MS, "A_AC3" }, 798 806 { kAudioFormatAC3MS, "A_AC3" }, 799 807 // anything special for these two? 800 { kAudioFormatAC3 , "A_AC3/BSID9" },801 { kAudioFormatAC3 , "A_AC3/BSID10" },808 { kAudioFormatAC3MS, "A_AC3/BSID9" }, 809 { kAudioFormatAC3MS, "A_AC3/BSID10" }, 802 810 { kAudioFormatXiphVorbis, "A_VORBIS" }, 803 811 { kAudioFormatXiphFLAC, "A_FLAC" }, trunk/MatroskaImport.cpp
r794 r806 116 116 err = store->ImportDataRef((Handle)alias, rAliasType, theMovie, targetTrack, 117 117 usedTrack, atTime, durationAdded, inFlags, outFlags); 118 if (err) goto bail; 119 120 LoadExternalSubtitles(&theFileFSRef, theMovie); 121 118 122 119 bail: 123 120 if (alias) … … 131 128 Track *usedTrack, TimeValue atTime, TimeValue *durationAdded, long inFlags, long *outFlags) 132 129 { 133 returnstore->ImportDataRef(dataRef, dataRefType, theMovie, targetTrack,130 ComponentResult res = store->ImportDataRef(dataRef, dataRefType, theMovie, targetTrack, 134 131 usedTrack, atTime, durationAdded, inFlags, outFlags); 132 133 LoadExternalSubtitlesFromFileDataRef(dataRef, dataRefType, theMovie); 134 return res; 135 135 } 136 136 … … 254 254 // invalid file, validate should catch this 255 255 return invalidMovie; 256 256 257 257 err = SetupMovie(); 258 258 if (err) return err; trunk/MatroskaImportPrivate.cpp
r714 r806 657 657 dataRef, HandleDataHandlerSubType); 658 658 if (chapterMedia == NULL) { 659 Codecprintf(NULL, "MKV: Error creating chapter media %d\n", GetMoviesError()); 659 OSErr err = GetMoviesError(); 660 Codecprintf(NULL, "MKV: Error creating chapter media %d\n", err); 660 661 DisposeMovieTrack(chapterTrack); 661 return GetMoviesError();662 return err; 662 663 } 663 664 … … 966 967 bool replaceSoundDesc = false; 967 968 968 switch ((*desc)->dataFormat) { 969 case kAudioFormatAC3: 970 replaceSoundDesc = parse_ac3_bitstream(&asbd, &acl, block.GetBuffer(0).Buffer(), block.GetFrameSize(0)); 971 break; 969 if (desc) { 970 switch ((*desc)->dataFormat) { 971 case kAudioFormatAC3: 972 case kAudioFormatAC3MS: 973 replaceSoundDesc = parse_ac3_bitstream(&asbd, &acl, block.GetBuffer(0).Buffer(), block.GetFrameSize(0)); 974 break; 975 } 972 976 } 973 977 trunk/MatroskaImportVersion.h
r794 r806 24 24 25 25 // The high word is the codecInterfaceVersion 26 #define kMatroskaImportVersion (0x0002000 1)26 #define kMatroskaImportVersion (0x00020002) trunk/Perian.xcodeproj/project.pbxproj
r792 r806 1804 1804 buildSettings = { 1805 1805 COPY_PHASE_STRIP = NO; 1806 FRAMEWORK_SEARCH_PATHS = (1807 "$(inherited)",1808 "$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)",1809 );1810 FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "\"$(SYSTEM_DEVELOPER_DIR)/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks\"";1811 1806 GCC_DYNAMIC_NO_PIC = NO; 1812 1807 GCC_ENABLE_FIX_AND_CONTINUE = YES; … … 1836 1831 buildSettings = { 1837 1832 COPY_PHASE_STRIP = YES; 1838 FRAMEWORK_SEARCH_PATHS = (1839 "$(inherited)",1840 "$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)",1841 );1842 FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "\"$(SYSTEM_DEVELOPER_DIR)/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks\"";1843 1833 GCC_ENABLE_FIX_AND_CONTINUE = NO; 1844 1834 GCC_ENABLE_OBJC_EXCEPTIONS = YES; … … 1868 1858 DEAD_CODE_STRIPPING = NO; 1869 1859 EXPORTED_SYMBOLS_FILE = "$(SOURCE_ROOT)/exportedSymbols"; 1870 FRAMEWORK_SEARCH_PATHS = (1871 "$(inherited)",1872 "$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)",1873 "$(FRAMEWORK_SEARCH_PATHS_QUOTED_2)",1874 );1875 FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "\"$(SYSTEM_DEVELOPER_DIR)/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks\"";1876 FRAMEWORK_SEARCH_PATHS_QUOTED_2 = "\"$(SYSTEM_DEVELOPER_DIR)/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks\"";1877 1860 GCC_DYNAMIC_NO_PIC = NO; 1878 1861 GCC_ENABLE_FIX_AND_CONTINUE = YES; … … 1897 1880 INFOPLIST_FILE = "Plists/Perian-Info.plist"; 1898 1881 INSTALL_PATH = "$(HOME)/Library/QuickTime"; 1899 LIBRARY_SEARCH_PATHS = ( 1900 $SYMROOT/Universal, 1901 "$(LIBRARY_SEARCH_PATHS_QUOTED_1)", 1902 ); 1903 LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)/build/Universal\""; 1882 LIBRARY_SEARCH_PATHS = $SYMROOT/Universal; 1904 1883 OTHER_LDFLAGS = ( 1905 1884 "-framework", … … 1915 1894 PRODUCT_NAME = Perian; 1916 1895 REZ_PREPROCESSOR_DEFINITIONS = ""; 1917 SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;1918 1896 WRAPPER_EXTENSION = component; 1919 1897 ZERO_LINK = NO; … … 1929 1907 GCC_DYNAMIC_NO_PIC = NO; 1930 1908 GCC_ENABLE_FIX_AND_CONTINUE = NO; 1909 GCC_ENABLE_OBJC_GC = YES; 1931 1910 GCC_GENERATE_DEBUGGING_SYMBOLS = NO; 1932 1911 GCC_MODEL_TUNING = G5; … … 1947 1926 INFOPLIST_FILE = "Plists/Perian-Info.plist"; 1948 1927 INSTALL_PATH = "$(HOME)/Library/QuickTime"; 1949 LIBRARY_SEARCH_PATHS = ( 1950 $SYMROOT/Universal, 1951 "$(LIBRARY_SEARCH_PATHS_QUOTED_1)", 1952 ); 1928 LIBRARY_SEARCH_PATHS = $SYMROOT/Universal; 1953 1929 OTHER_CFLAGS = "$(OTHER_CFLAGS_$(CURRENT_ARCH))"; 1954 1930 OTHER_CFLAGS_i386 = "-march=pentium-m -mtune=nocona $(OTHER_CFLAGS)"; … … 1983 1959 GCC_ALTIVEC_EXTENSIONS = YES; 1984 1960 GCC_MODEL_TUNING = G5; 1961 OTHER_LDFLAGS = ( 1962 "-read_only_relocs", 1963 suppress, 1964 ); 1985 1965 SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; 1986 1966 }; … … 1999 1979 GCC_STRICT_ALIASING = YES; 2000 1980 MACOSX_DEPLOYMENT_TARGET = 10.4; 1981 OTHER_LDFLAGS = ( 1982 "-read_only_relocs", 1983 suppress, 1984 ); 2001 1985 SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; 2002 1986 STRIP_INSTALLED_PRODUCT = NO; … … 2049 2033 DEAD_CODE_STRIPPING = YES; 2050 2034 EXPORTED_SYMBOLS_FILE = "$(SOURCE_ROOT)/exportedSymbols"; 2051 FRAMEWORK_SEARCH_PATHS = (2052 "$(inherited)",2053 "$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)",2054 "$(FRAMEWORK_SEARCH_PATHS_QUOTED_2)",2055 );2056 FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "\"$(SYSTEM_DEVELOPER_DIR)/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks\"";2057 FRAMEWORK_SEARCH_PATHS_QUOTED_2 = "\"$(SYSTEM_DEVELOPER_DIR)/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks\"";2058 2035 GCC_ALTIVEC_EXTENSIONS = YES; 2059 2036 GCC_DYNAMIC_NO_PIC = NO; 2060 2037 GCC_ENABLE_FIX_AND_CONTINUE = NO; 2038 GCC_ENABLE_OBJC_GC = YES; 2061 2039 GCC_FAST_MATH = YES; 2062 2040 GCC_MODEL_TUNING = G5; … … 2078 2056 INFOPLIST_FILE = "Plists/Perian-Info.plist"; 2079 2057 INSTALL_PATH = "$(HOME)/Library/QuickTime"; 2080 LIBRARY_SEARCH_PATHS = ( 2081 $SYMROOT/Universal, 2082 "$(LIBRARY_SEARCH_PATHS_QUOTED_1)", 2083 ); 2084 LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)/build/Universal\""; 2058 LIBRARY_SEARCH_PATHS = $SYMROOT/Universal; 2085 2059 OTHER_CFLAGS = "$(OTHER_CFLAGS_$(CURRENT_ARCH))"; 2086 2060 OTHER_CFLAGS_i386 = "-march=pentium-m -mtune=nocona $(OTHER_CFLAGS)"; … … 2096 2070 PRESERVE_DEAD_CODE_INITS_AND_TERMS = YES; 2097 2071 PRODUCT_NAME = Perian; 2098 SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;2099 2072 WRAPPER_EXTENSION = component; 2100 2073 ZERO_LINK = NO; … … 2187 2160 PREBINDING = NO; 2188 2161 PRODUCT_NAME = Perian; 2189 SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;2190 2162 WRAPPER_EXTENSION = prefPane; 2191 2163 ZERO_LINK = NO; … … 2197 2169 buildSettings = { 2198 2170 COPY_PHASE_STRIP = YES; 2199 FRAMEWORK_SEARCH_PATHS = (2200 "$(inherited)",2201 "$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)",2202 );2203 FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "\"$(SYSTEM_DEVELOPER_DIR)/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks\"";2204 2171 GCC_ENABLE_FIX_AND_CONTINUE = NO; 2205 2172 GCC_ENABLE_OBJC_EXCEPTIONS = YES; … … 2231 2198 GCC_PREPROCESSOR_DEFINITIONS = DEBUG_BUILD; 2232 2199 GCC_STRICT_ALIASING = YES; 2200 OTHER_LDFLAGS = ( 2201 "-read_only_relocs", 2202 suppress, 2203 ); 2233 2204 SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; 2234 2205 STRIP_INSTALLED_PRODUCT = NO; … … 2336 2307 PREBINDING = NO; 2337 2308 PRODUCT_NAME = Perian; 2338 SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;2339 2309 WRAPPER_EXTENSION = prefPane; 2340 2310 ZERO_LINK = YES; … … 2361 2331 PREBINDING = NO; 2362 2332 PRODUCT_NAME = Perian; 2363 SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;2364 2333 WRAPPER_EXTENSION = prefPane; 2365 2334 ZERO_LINK = NO; trunk/PerianAviImporter.r
r708 r806 21 21 ****************************************************************************/ 22 22 23 #define kChristophManufacturer ' Rafz'23 #define kChristophManufacturer 'Peri' 24 24 25 25 #define thng_RezTemplateVersion 2 trunk/Plists/Perian-Info.plist
r612 r806 8 8 <string>Perian</string> 9 9 <key>CFBundleGetInfoString</key> 10 <string>1. 0.9999(SVNREVISION ffmpeg: FFMPEGREVISION), Copyright 2007 The Perian Team</string>10 <string>1.1 (SVNREVISION ffmpeg: FFMPEGREVISION), Copyright 2007 The Perian Team</string> 11 11 <key>CFBundleIdentifier</key> 12 12 <string>org.perian.Perian</string> … … 16 16 <string>BNDL</string> 17 17 <key>CFBundleShortVersionString</key> 18 <string>1. 0.9999</string>18 <string>1.1</string> 19 19 <key>CFBundleSignature</key> 20 20 <string>????</string> 21 21 <key>CFBundleVersion</key> 22 <string>1. 0.9999</string>22 <string>1.1</string> 23 23 <key>CSResourcesFileMapped</key> 24 24 <string>yes</string> trunk/Plists/PerianPane-Info.plist
r612 r806 33 33 <string>????</string> 34 34 <key>CFBundleVersion</key> 35 <string>1. 0.9999</string>35 <string>1.1</string> 36 36 <key>CFBundleName</key> 37 37 <string>Perian</string> trunk/Plists/PerianUpdateChecker-Info.plist
r612 r806 18 18 <string>????</string> 19 19 <key>CFBundleVersion</key> 20 <string>1. 0.9999</string>20 <string>1.1</string> 21 21 <key>NSMainNibFile</key> 22 22 <string>UpdateCheckerMainMenu</string> trunk/Release/Changes.txt
r731 r806 3 3 - TrueAudio, MP1, and DTS audio support 4 4 - Slice-based multithreaded decoding for MPEG-1/2/H.264 5 - Better support for interlaced H.2646 - Compatibility fixes for QuickTime 7. 2and Leopard5 - Apple H.264 now handles AVCHD/interlaced video 6 - Compatibility fixes for QuickTime 7.4 and Leopard 7 7 - Objective-C GC compatibility 8 8 - Fixed a crash in Toast trunk/Release/Makefile
r528 r806 4 4 # Check the Perian.component target and PerianPane target. 5 5 6 VERSION=1. 0b56 VERSION=1.1 7 7 BETA=FALSE 8 8 SRC_DIR=.. trunk/Release/Read Me.rtf
r792 r806 2 2 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} 3 3 {\colortbl;\red255\green255\blue255;} 4 \margl1440\margr1440\vieww16040\viewh15820\viewkind0 4 5 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural 5 6 6 7 \f0\b\fs24 \cf0 About 7 8 \b0 \ 8 Perian aims at providing a single package to provideall your playback needs. It is a collection of QuickTime components incorporating several libraries:\9 Perian aims to provide a single package for all your playback needs. It is a collection of QuickTime components incorporating several libraries:\ 9 10 \'95 libavcodec, from the ffmpeg project, along with code from the old FFusion component:\ 10 11 \'95 MS-MPEG4 v1 & v2\ 11 12 \'95 DivX\ 12 \'95 3iv X\13 \'95 3ivx\ 13 14 \'95 H.264\ 14 15 \'95 Flash Video\ … … 19 20 \'95 HuffYUV\ 20 21 \'95 ffvhuff\ 21 \'95 MPEG-1 & 2 video\22 \'95 F RAPS\22 \'95 MPEG-1 & 2 Video\ 23 \'95 Fraps (up to v4)\ 23 24 \'95 Windows Media Audio v1 & v2\ 24 25 \'95 Flash ADPCM\ 25 26 \'95 Xiph Vorbis (in Matroska)\ 26 \'95 MPEG Layer II Audio\ 27 \'95 MPEG Layer I and II audio\ 28 \'95 DTS Coherent Acoustics audio\ 29 \'95 Snow wavelet video\ 27 30 \'95 libavformat, from the ffmpeg project. along with AVIImporter.component:\ 28 31 \'95 AVI file format\ … … 30 33 \'95 libmatroska, along with matroska-qt.component:\ 31 34 \'95 MKV file format\ 32 \'95 Subtitle parsing\35 \'95 Subtitles:\ 33 36 \'95 SSA file format\ 34 37 \'95 SRT file format\ 35 \'95 liba52, via A52Codec \38 \'95 liba52, via A52Codec:\ 36 39 \'95 AC3 audio\ 37 40 \ 38 The code is available under the LGPL. The project site is located at <http://trac.perian.org/> and the project subversion repository is located at <http://svn.perian.org/>.\39 The code for A52Codec is available under GPL. The project site is located at <http://trac.cod3r.com/a52codec/> and the project subversion repository is located at <http://svn.cod3r.com/a52codec/>.\41 The code is available under the LGPL. The project site is located at <http://trac.perian.org/> and the project Subversion repository is located at <http://svn.perian.org/>.\ 42 The code for A52Codec is available under the GPL. The project site is located at <http://trac.cod3r.com/a52codec/> and the project Subversion repository is located at <http://svn.cod3r.com/a52codec/>.\ 40 43 \ 41 44 … … 58 61 \b0 \ 59 62 J\'e9r\'f4me Cornet and his FFusion project for giving me the idea and code to start from Christoph N\'e4geli's AVI Importer from his XviD component, which allowed us to leverage libavformat.\ 60 FFMPEG project for providing such a rich library.\ 63 \ 64 The FFmpeg project for providing such a rich library.\ 65 (http://ffmpeg.mplayerhq.hu/)\ 66 \ 61 67 The Mozilla Foundation and Dag \'c5gren for the universal charset detector.\ 68 (http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html, http://wakaba.c3.cx/s/apps/unarchiver.html)\ 69 \ 62 70 Adrian Thurston for the Ragel parser generator.\ 71 (http://www.cs.queensu.ca/~thurston/ragel/)\ 72 \ 63 73 Matroska for their library.\ 74 (http://www.matroska.org/)\ 64 75 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural 65 \cf0 Bryan Bortz for the icon.\ 76 \cf0 \ 77 Bryan Bortz for the icon.\ 78 (http://www.owlboy.com/)\ 66 79 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural 67 \cf0 Ken Aspeslagh for releasing the source to his QuickTime Component Manager (http://macdaddyworld.com/quicktime-component-manager/) which gives us most of the smarts for the component manager tab.\ 80 \cf0 \ 81 All the people that put up with my insane requests for help and free testing, notably MartianSteve from #macsb for the first ICBM test, and Graham Booker for joining up with me and fixing the build every time I add a feature and then run off somewhere like the overcommitted madman I am.\ 82 \ 68 83 \ 69 84 \ trunk/Subtitles/SubATSUIRenderer.m
r731 r806 262 262 free(ubuffer); 263 263 UCDisposeTextBreakLocator(&breakLocator); 264 ATSUDisposeTextLayout(layout); 264 265 [super dealloc]; 265 266 } … … 269 270 free(ubuffer); 270 271 UCDisposeTextBreakLocator(&breakLocator); 272 ATSUDisposeTextLayout(layout); 271 273 [super finalize]; 272 274 } … … 349 351 } 350 352 351 -(void)releaseStyleEx :(void*)ex353 -(void)releaseStyleExtra:(void*)ex 352 354 { 353 355 ATSUDisposeStyle(ex); … … 541 543 } 542 544 543 static void GetTypographicRectangleForLayout(ATSUTextLayout layout, UniCharArrayOffset *breaks, ItemCount breakCount, Fixed *lX, Fixed *lY, Fixed *height, Fixed *width)545 static void GetTypographicRectangleForLayout(ATSUTextLayout layout, UniCharArrayOffset *breaks, ItemCount breakCount, Fixed extraHeight, Fixed *lX, Fixed *lY, Fixed *height, Fixed *width) 544 546 { 545 547 ATSTrapezoid trap = {0}; … … 555 557 ATSUGetGlyphBounds(layout, 0, baseY, breaks[i], end-breaks[i], kATSUseDeviceOrigins, 1, &trap, &trapCount); 556 558 557 baseY += GetLineHeight(layout, breaks[i]) ;559 baseY += GetLineHeight(layout, breaks[i]) + extraHeight; 558 560 559 561 rect.bottom = MAX(trap.lowerLeft.y, trap.lowerRight.y); … … 575 577 *width = largeRect.right - largeRect.left; 576 578 } 579 580 #if 0 581 static void GetImageBoundingBoxForLayout(ATSUTextLayout layout, UniCharArrayOffset *breaks, ItemCount breakCount, Fixed extraHeight, Fixed *lX, Fixed *lY, Fixed *height, Fixed *width) 582 { 583 Rect largeRect = {0}; 584 ATSUTextMeasurement baseY = 0; 585 int i; 586 587 for (i = breakCount; i >= 0; i--) { 588 UniCharArrayOffset end = breaks[i+1]; 589 Rect rect; 590 591 ATSUMeasureTextImage(layout, breaks[i], end-breaks[i], 0, baseY, &rect); 592 593 baseY += GetLineHeight(layout, breaks[i]) + extraHeight; 594 595 if (i == breakCount) largeRect = rect; 596 597 largeRect.bottom = MAX(largeRect.bottom, rect.bottom); 598 largeRect.left = MIN(largeRect.left, rect.left); 599 largeRect.top = MIN(largeRect.top, rect.top); 600 largeRect.right = MAX(largeRect.right, rect.right); 601 } 602 603 604 if (lX) *lX = IntToFixed(largeRect.left); 605 if (lY) *lY = IntToFixed(largeRect.bottom); 606 *height = IntToFixed(largeRect.bottom - largeRect.top); 607 *width = IntToFixed(largeRect.right - largeRect.left); 608 } 609 #endif 577 610 578 611 enum {fillc, strokec}; … … 806 839 ATSUTextMeasurement lineWidth, lineHeight, lineX, lineY; 807 840 UniCharArrayOffset breaks[2] = {thisBreak, thisBreak + lineLen}; 808 G
