Changeset 923
- Timestamp:
- 08/02/08 16:24:20 (4 months ago)
- Files:
-
- branches/perian-1.1 (modified) (1 prop)
- branches/perian-1.1/CPFPerianPrefPaneController.h (modified) (1 diff)
- branches/perian-1.1/CPFPerianPrefPaneController.m (modified) (7 diffs)
- branches/perian-1.1/CodecIDs.h (modified) (1 diff)
- branches/perian-1.1/FFissionCodec/FFissionCodec.r (modified) (1 diff)
- branches/perian-1.1/FFissionCodec/FFissionDecoder.cpp (modified) (1 diff)
- branches/perian-1.1/FFusionCodec.c (modified) (7 diffs)
- branches/perian-1.1/GBPerianPanePListGenerator.m (modified) (1 diff)
- branches/perian-1.1/Patches/ffmpeg-forceinline.diff (added)
- branches/perian-1.1/Patches/ffmpeg-h264dsp-crash.diff (moved) (moved from branches/perian-1.1/Patches/ffmpeg-h264dsp-chroma-mc4.diff) (5 diffs)
- branches/perian-1.1/Perian.xcodeproj/project.pbxproj (modified) (13 diffs)
- branches/perian-1.1/Release/Artwork/periandmgbg.png (modified) (previous)
- branches/perian-1.1/Release/Artwork/periandmgbg.psd (modified) (previous)
- branches/perian-1.1/Release/Artwork/periantranslations.rtf (modified) (2 diffs)
- branches/perian-1.1/Subtitles/SubATSUIRenderer.m (modified) (3 diffs)
- branches/perian-1.1/Subtitles/SubContext.h (modified) (1 diff)
- branches/perian-1.1/Subtitles/SubContext.m (modified) (1 diff)
- branches/perian-1.1/Subtitles/SubImport.mm (modified) (1 diff)
- branches/perian-1.1/Subtitles/SubUtilities.m (modified) (1 diff)
- branches/perian-1.1/Update Checker Sources/NSString+extras.m (modified) (1 diff)
- branches/perian-1.1/Update Checker Sources/UpdateCheckerAppDelegate.h (modified) (1 diff)
- branches/perian-1.1/Update Checker Sources/UpdateCheckerAppDelegate.m (modified) (4 diffs)
- branches/perian-1.1/Update Checker Sources/main.m (modified) (2 diffs)
- branches/perian-1.1/createStaticLibs.sh (modified) (4 diffs)
- branches/perian-1.1/ff_MovieImport.c (modified) (1 diff)
- branches/perian-1.1/ff_private.c (modified) (3 diffs)
- trunk/PerianPrefPane.nib/info.nib (modified) (1 diff)
- trunk/PerianPrefPane.nib/keyedobjects.nib (modified) (previous)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/perian-1.1
- Property svn:externals changed from
ffmpeg -r 13239 svn://svn.mplayerhq.hu/ffmpeg/trunk
libebml -r 1306 https://services.corecodec.com/svn/matroska/trunk/libebml
libmatroska -r 1306 https://services.corecodec.com/svn/matroska/trunk/libmatroska
a52codec -r 64 http://svn.cod3r.com/a52codec/trunk
to
ffmpeg -r 14508 svn://svn.mplayerhq.hu/ffmpeg/trunk
libebml -r 1306 https://services.corecodec.com/svn/matroska/trunk/libebml
libmatroska -r 1306 https://services.corecodec.com/svn/matroska/trunk/libmatroska
a52codec -r 64 http://svn.cod3r.com/a52codec/trunk
- Property svn:externals changed from
branches/perian-1.1/CPFPerianPrefPaneController.h
r685 r923 56 56 IBOutlet NSButton *button_install; 57 57 IBOutlet NSTextField *textField_installStatus; 58 IBOutlet NSProgressIndicator *progress_install;59 58 60 59 IBOutlet NSTextField *textField_currentVersion; 60 IBOutlet NSTextField *textField_updateStatus; 61 61 IBOutlet NSButton *button_updateCheck; 62 IBOutlet NSProgressIndicator *progress_updateCheck;63 62 IBOutlet NSButton *button_autoUpdateCheck; 64 63 branches/perian-1.1/CPFPerianPrefPaneController.m
r904 r923 403 403 404 404 - (void) dealloc { 405 [[NSDistributedNotificationCenter defaultCenter] removeObserver:self name:UPDATE_STATUS_NOTIFICATION object:nil]; 405 406 [perianForumURL release]; 406 407 [perianDonateURL release]; … … 657 658 auth = nil; 658 659 659 int tag = 0;660 660 componentPath = [[self quickTimeComponentDir:userInstalled] stringByAppendingPathComponent:@"Perian.component"]; 661 661 if(auth != nil && !userInstalled) … … 688 688 - (IBAction)installUninstall:(id)sender 689 689 { 690 [progress_install startAnimation:sender];691 690 if(installStatus == InstallStatusInstalled) 692 691 [NSThread detachNewThreadSelector:@selector(uninstall:) toTarget:self withObject:nil]; … … 697 696 - (void)installComplete:(id)sender 698 697 { 699 [progress_install stopAnimation:sender];700 698 [self checkForInstallation]; 701 699 } … … 779 777 780 778 #pragma mark Check Updates 779 - (void)updateCheckStatusChanged:(NSNotification*)notification 780 { 781 NSString *status = [notification object]; 782 783 //FIXME localize these 784 if ([status isEqualToString:@"Starting"]) { 785 [textField_updateStatus setStringValue:@"Checking..."]; 786 } else if ([status isEqualToString:@"Error"]) { 787 [textField_updateStatus setStringValue:@"Couldn't reach the update server."]; 788 } else if ([status isEqualToString:@"NoUpdates"]) { 789 [textField_updateStatus setStringValue:@"There are no updates."]; 790 } else if ([status isEqualToString:@"NoUpdates"]) { 791 [textField_updateStatus setStringValue:@"Updates found!"]; 792 } 793 } 794 781 795 - (IBAction)updateCheck:(id)sender 782 796 { 783 797 FSRef updateCheckRef; 784 798 799 [[NSDistributedNotificationCenter defaultCenter] removeObserver:self name:UPDATE_STATUS_NOTIFICATION object:nil]; 800 [[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(updateCheckStatusChanged:) name:UPDATE_STATUS_NOTIFICATION object:nil]; 785 801 CFPreferencesSetAppValue((CFStringRef)NEXT_RUN_KEY, NULL, perianAppID); 786 802 CFPreferencesSetAppValue((CFStringRef)MANUAL_RUN_KEY, [NSNumber numberWithBool:YES], perianAppID); … … 800 816 else 801 817 CFPreferencesSetAppValue(key, [NSDate distantFuture], perianAppID); 818 819 CFPreferencesAppSynchronize(perianAppID); 802 820 } 803 821 … … 901 919 { 902 920 [self setKey:ExternalSubtitlesKey forAppID:perianAppID fromBool:(BOOL)[sender state]]; 921 CFPreferencesAppSynchronize(perianAppID); 903 922 } 904 923 branches/perian-1.1/CodecIDs.h
r681 r923 93 93 kAudioFormatRealLossless = 'RALF', 94 94 kAudioFormatRealAtrac3 = 'ATRC', 95 kAudioFormatNellymoser = 'NELL', 95 96 96 97 kSubFormatUTF8 = 'SRT ', branches/perian-1.1/FFissionCodec/FFissionCodec.r
r636 r923 98 98 #define kComponentInfo "An AudioCodec that decodes DCA Audio into linear PCM" 99 99 #include "XCAResources.r" 100 101 #define kPrimaryResourceID 146 102 #define kComponentType 'adec' 103 #define kComponentSubtype kAudioFormatNellymoser 104 #define kComponentName "Nellymoser ASAO" 105 #define kComponentInfo "An AudioCodec that decodes Nellymoser ASAO into linear PCM" 106 #include "XCAResources.r" branches/perian-1.1/FFissionCodec/FFissionDecoder.cpp
r690 r923 48 48 { kAudioFormatTTA, CODEC_ID_TTA }, 49 49 { kAudioFormatDTS, CODEC_ID_DTS }, 50 { kAudioFormatNellymoser, CODEC_ID_NELLYMOSER }, 50 51 { 0, CODEC_ID_NONE } 51 52 }; branches/perian-1.1/FFusionCodec.c
r887 r923 162 162 163 163 extern void init_FFmpeg(); 164 extern CFMutableStringRef GetHomeDirectory();164 extern CFMutableStringRef CopyHomeDirectory(); 165 165 166 166 #define FFusionDebugPrint(x...) if (glob->fileLog) Codecprintf(glob->fileLog, x); … … 194 194 } 195 195 196 Boolean FFusionAlreadyRanUpdateCheck = 0; 197 196 198 void FFusionRunUpdateCheck() 197 199 { 200 if (FFusionAlreadyRanUpdateCheck) return; 201 198 202 CFDateRef lastRunDate = CFPreferencesCopyAppValue(CFSTR("NextRunDate"), CFSTR("org.perian.Perian")); 199 203 CFAbsoluteTime now = CFAbsoluteTimeGetCurrent(); 200 204 201 if (lastRunDate != nil && CFDateGetAbsoluteTime(lastRunDate) > now) 202 return; 203 204 if(lastRunDate != nil) 205 CFRelease(lastRunDate); 205 FFusionAlreadyRanUpdateCheck = 1; 206 207 if (lastRunDate) { 208 Boolean exit = CFDateGetAbsoluteTime(lastRunDate) > now; 209 CFRelease(lastRunDate); 210 if (exit) return; 211 } 206 212 207 213 //Two places to check, home dir and / 208 214 209 CFMutableStringRef location = GetHomeDirectory();215 CFMutableStringRef location = CopyHomeDirectory(); 210 216 CFStringAppend(location, CFSTR("/Library/PreferencePanes/Perian.prefPane/Contents/Resources/PerianUpdateChecker.app")); 211 217 … … 522 528 Handle imgDescExt; 523 529 OSErr err = noErr; 530 enum PixelFormat pixelFormat = PIX_FMT_NONE; 524 531 525 532 // We first open libavcodec library and the codec corresponding … … 771 778 err = featureUnsupported; 772 779 780 // this format doesn't have enough information in its headers 781 // we have to decode the first frame 782 if (glob->avContext->pix_fmt == PIX_FMT_NONE && p->bufferSize) { 783 AVFrame temp; 784 int got_picture; 785 avcodec_open(glob->avContext, glob->avCodec); 786 avcodec_decode_video(glob->avContext, &temp, 787 &got_picture, (UInt8*)p->data, p->bufferSize); 788 789 avcodec_close(glob->avContext); 790 pixelFormat = glob->avContext->pix_fmt; 791 } 792 773 793 // some hooks into ffmpeg's buffer allocation to get frames in 774 794 // decode order without delay more easily … … 789 809 } 790 810 811 if (pixelFormat == PIX_FMT_NONE) 812 pixelFormat = glob->avContext->pix_fmt; 791 813 } 792 814 … … 827 849 828 850 if (!err) { 829 switch ( glob->avContext->pix_fmt)851 switch (pixelFormat) 830 852 { 831 853 case PIX_FMT_BGR24: … … 1701 1723 { 1702 1724 got_picture = 0; 1703 len = 1;1704 1725 Codecprintf(glob->fileLog, "Error while decoding frame\n"); 1705 1726 branches/perian-1.1/GBPerianPanePListGenerator.m
r378 r923 53 53 [plist setObject:components forKey:ComponentInfoDictionaryKey]; 54 54 [plist writeToFile:[NSString stringWithUTF8String:argv[3]] atomically:YES]; 55 [plist release]; 55 56 [pool release]; 56 57 branches/perian-1.1/Patches/ffmpeg-h264dsp-crash.diff
r879 r923 1 1 Index: ffmpeg/libavcodec/i386/dsputil_h264_template_mmx.c 2 2 =================================================================== 3 --- ffmpeg/libavcodec/i386/dsputil_h264_template_mmx.c (revision 1 3183)3 --- ffmpeg/libavcodec/i386/dsputil_h264_template_mmx.c (revision 14508) 4 4 +++ ffmpeg/libavcodec/i386/dsputil_h264_template_mmx.c (working copy) 5 5 @@ -185,8 +185,12 @@ … … 16 16 "pxor %%mm7, %%mm7 \n\t" 17 17 "movd %5, %%mm2 \n\t" 18 Index: ffmpeg/libavcodec/i386/dsputil_mmx.c 19 =================================================================== 20 --- ffmpeg/libavcodec/i386/dsputil_mmx.c (revision 14508) 21 +++ ffmpeg/libavcodec/i386/dsputil_mmx.c (working copy) 22 @@ -2626,6 +2626,8 @@ 23 H264_QPEL_FUNCS(3, 2, sse2); 24 H264_QPEL_FUNCS(3, 3, sse2); 25 } 26 +#undef H264_QPEL_FUNCS 27 +#define H264_QPEL_FUNCS(x, y, CPU) 28 #ifdef HAVE_SSSE3 29 if(mm_flags & MM_SSSE3){ 30 H264_QPEL_FUNCS(1, 0, ssse3); 18 31 Index: ffmpeg/libavcodec/i386/h264dsp_mmx.c 19 32 =================================================================== 20 --- ffmpeg/libavcodec/i386/h264dsp_mmx.c (revision 1 3183)33 --- ffmpeg/libavcodec/i386/h264dsp_mmx.c (revision 14508) 21 34 +++ ffmpeg/libavcodec/i386/h264dsp_mmx.c (working copy) 22 @@ -19 12,6 +1912,7 @@35 @@ -1922,6 +1922,7 @@ 23 36 #define H264_CHROMA_OP4(S,D,T) 24 37 #define H264_CHROMA_MC8_TMPL put_h264_chroma_mc8_mmx … … 28 41 #define H264_CHROMA_MC8_MV0 put_pixels8_mmx 29 42 #include "dsputil_h264_template_mmx.c" 30 @@ -19 29,6 +1930,7 @@43 @@ -1939,6 +1940,7 @@ 31 44 #undef H264_CHROMA_OP4 32 45 #undef H264_CHROMA_MC8_TMPL … … 36 49 #undef H264_CHROMA_MC8_MV0 37 50 38 @@ -19 37,6 +1939,7 @@51 @@ -1947,6 +1949,7 @@ 39 52 "pavgb " #T ", " #D " \n\t" 40 53 #define H264_CHROMA_MC8_TMPL avg_h264_chroma_mc8_mmx2 … … 46 59 Index: ffmpeg/libavcodec/dsputil.c 47 60 =================================================================== 48 --- ffmpeg/libavcodec/dsputil.c (revision 1 3183)61 --- ffmpeg/libavcodec/dsputil.c (revision 14508) 49 62 +++ ffmpeg/libavcodec/dsputil.c (working copy) 50 63 @@ -1592,7 +1592,7 @@ branches/perian-1.1/Perian.xcodeproj/project.pbxproj
r888 r923 48 48 buildConfigurationList = F5CFD2EA0B5012E800616865 /* Build configuration list for PBXAggregateTarget "A52Codec" */; 49 49 buildPhases = ( 50 3D79C0540DFBA1FF00EEFE22 /* ShellScript */, 50 51 F5CFD2E00B5012BC00616865 /* CopyFiles */, 51 52 F5CFD2E30B5012DB00616865 /* CopyFiles */, … … 111 112 3D41BEB40BCD3B510069E7C2 /* libuniversaldetector.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D41BE9A0BCD3B330069E7C2 /* libuniversaldetector.a */; }; 112 113 3D4A7A990B5533BC004C5D6A /* ColorConversions.c in Sources */ = {isa = PBXBuildFile; fileRef = 3D4A7A980B5533BC004C5D6A /* ColorConversions.c */; settings = {COMPILER_FLAGS = "-O3 -fweb -fno-reorder-blocks -fomit-frame-pointer"; }; }; 113 3DAD32DA0B6DB26100DA0A72 /* StdIOCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 61CB114D0ACDF3C2007994BD /* StdIOCallback.cpp */; }; 114 3D95B9010E208965007C8F51 /* libbz2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D95B9000E208965007C8F51 /* libbz2.dylib */; }; 115 3D95B9020E20896F007C8F51 /* libbz2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D95B9000E208965007C8F51 /* libbz2.dylib */; }; 114 116 3DB2BB290B6C92F000416863 /* SubATSUIRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DB2BB280B6C92F000416863 /* SubATSUIRenderer.m */; }; 115 117 6116E5510B43C27B0020F1CE /* ACBaseCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6116E5370B43C27B0020F1CE /* ACBaseCodec.cpp */; }; … … 453 455 1162A0530B51ECE1006591C8 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/WebKit.framework; sourceTree = "<absolute>"; }; 454 456 116C42520B5041BD00FB0738 /* PerianUpdateChecker.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PerianUpdateChecker.app; sourceTree = BUILT_PRODUCTS_DIR; }; 455 116C42540B5041BD00FB0738 /* PerianUpdateChecker-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text. xml; name = "PerianUpdateChecker-Info.plist"; path = "Plists/PerianUpdateChecker-Info.plist"; sourceTree = "<group>"; };457 116C42540B5041BD00FB0738 /* PerianUpdateChecker-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "PerianUpdateChecker-Info.plist"; path = "Plists/PerianUpdateChecker-Info.plist"; sourceTree = "<group>"; }; 456 458 116C42650B50426700FB0738 /* UpdateCheckerAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UpdateCheckerAppDelegate.h; sourceTree = "<group>"; }; 457 459 116C42660B50426700FB0738 /* UpdateCheckerAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UpdateCheckerAppDelegate.m; sourceTree = "<group>"; }; … … 469 471 1184A38B0B505A9800C8452A /* SUStatusController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SUStatusController.h; sourceTree = "<group>"; }; 470 472 1184A38C0B505A9800C8452A /* SUStatusController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SUStatusController.m; sourceTree = "<group>"; }; 471 11A709DA0A3CFCB6002058D4 /* Perian-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text. xml; name = "Perian-Info.plist"; path = "Plists/Perian-Info.plist"; sourceTree = "<group>"; };473 11A709DA0A3CFCB6002058D4 /* Perian-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Perian-Info.plist"; path = "Plists/Perian-Info.plist"; sourceTree = "<group>"; }; 472 474 11A70AC10A3D0105002058D4 /* Perian.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Perian.component; sourceTree = BUILT_PRODUCTS_DIR; }; 473 475 11BEFB2C0C18E23E00BC9324 /* Read Me.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = "Read Me.rtf"; path = "Release/Read Me.rtf"; sourceTree = "<group>"; }; … … 496 498 3D4A7A970B5533BC004C5D6A /* ColorConversions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ColorConversions.h; sourceTree = "<group>"; }; 497 499 3D4A7A980B5533BC004C5D6A /* ColorConversions.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ColorConversions.c; sourceTree = "<group>"; }; 500 3D95B9000E208965007C8F51 /* libbz2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libbz2.dylib; path = /usr/lib/libbz2.dylib; sourceTree = "<absolute>"; }; 498 501 3DB2BB270B6C92F000416863 /* SubATSUIRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SubATSUIRenderer.h; path = Subtitles/SubATSUIRenderer.h; sourceTree = "<group>"; }; 499 502 3DB2BB280B6C92F000416863 /* SubATSUIRenderer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SubATSUIRenderer.m; path = Subtitles/SubATSUIRenderer.m; sourceTree = "<group>"; }; … … 655 658 61FD41320B4F6F0800BEEFEA /* MatroskaImportPrivate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MatroskaImportPrivate.cpp; sourceTree = "<group>"; }; 656 659 83D1D6C80B4C794700E09EC9 /* Perian.prefPane */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Perian.prefPane; sourceTree = BUILT_PRODUCTS_DIR; }; 657 83D1D6C90B4C794800E09EC9 /* PerianPane-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text. xml; name = "PerianPane-Info.plist"; path = "Plists/PerianPane-Info.plist"; sourceTree = "<group>"; };660 83D1D6C90B4C794800E09EC9 /* PerianPane-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "PerianPane-Info.plist"; path = "Plists/PerianPane-Info.plist"; sourceTree = "<group>"; }; 658 661 83D1D6CE0B4C7AC400E09EC9 /* PreferencePanes.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PreferencePanes.framework; path = /System/Library/Frameworks/PreferencePanes.framework; sourceTree = "<absolute>"; }; 659 662 83D1D6DD0B4C7F8300E09EC9 /* PerianPrefPane.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; path = PerianPrefPane.nib; sourceTree = "<group>"; }; … … 710 713 3D211A1D0B6B18880051299D /* Foundation.framework in Frameworks */, 711 714 3D41BEB40BCD3B510069E7C2 /* libuniversaldetector.a in Frameworks */, 715 3D95B9020E20896F007C8F51 /* libbz2.dylib in Frameworks */, 712 716 ); 713 717 runOnlyForDeploymentPostprocessing = 0; … … 734 738 F53E18E50B4F483C003A0471 /* Security.framework in Frameworks */, 735 739 F57755F50B51EB1800C7D833 /* CoreFoundation.framework in Frameworks */, 740 3D95B9010E208965007C8F51 /* libbz2.dylib in Frameworks */, 736 741 ); 737 742 runOnlyForDeploymentPostprocessing = 0; … … 766 771 isa = PBXGroup; 767 772 children = ( 773 3D95B9000E208965007C8F51 /* libbz2.dylib */, 768 774 F539CD110B62BC82005A72C9 /* Foundation.framework */, 769 775 1162A0530B51ECE1006591C8 /* WebKit.framework */, … … 1539 1545 shellScript = "# Xcode auto-versioning script for Subversion\n# by Axel Andersson, modified by Daniel Jalkut to add\n# \"--revision HEAD\" to the svn info line, which allows\n# the latest revision to always be used.\n\n# further modified by Augie Fackler to be gross and sh-based in places\n# so that you can have svn installed anywhere\nPATH=$PATH:/usr/local/bin:/usr/bin:/sw/bin:/opt/local/bin\nffmpeg_rev=`cat \"$SYMROOT/Universal/buildid\"`\nREV=`svnversion -n ./`\necho $REV\n\necho | perl <<EOF\nuse strict;\ndie \"\\$0: Must be run from Xcode\" unless \\$ENV{\"BUILT_PRODUCTS_DIR\"};\n\nmy \\$INFO = \"\\$ENV{BUILT_PRODUCTS_DIR}/\\$ENV{WRAPPER_NAME}/Contents/Info.plist\";\n\nmy \\$version = \"$REV\";\n\n# (Match the last group of digits and optional letter M/S):\n\n# ugly yet functional (barely) regex by Daniel Jalkut:\n#$version =~ s/([\\d]*:)(\\d+[M|S]*).*/$2/;\n\n# better yet still functional regex via Kevin \"Regex Nerd\" Ballard\n(\\$version =~ m/\\d+[MS]*\\$/) && (\\$version = \\$&);\n\nopen(FH, \"\\$INFO\") or die \"\\$0: \\$INFO: $!\";\nmy \\$info = join(\"\", <FH>);\nclose(FH);\n\n#\\$info =~ s/([\\t ]+<key>CFBundleVersion<\\/key>\\n[\\t ]+<string>).*?(<\\/string>)/\\$1\\$version\\$2/;\n\\$info =~ s/SVNREVISION/\\$version/;\n\\$info =~ s/FFMPEGREVISION/$ffmpeg_rev/;\n\nopen(FH, \">\\$INFO\") or die \"\\$0: \\$INFO: \\$!\";\nprint FH \\$info;\nclose(FH);\nEOF\n"; 1540 1546 }; 1547 3D79C0540DFBA1FF00EEFE22 /* ShellScript */ = { 1548 isa = PBXShellScriptBuildPhase; 1549 buildActionMask = 2147483647; 1550 files = ( 1551 ); 1552 inputPaths = ( 1553 ); 1554 outputPaths = ( 1555 ); 1556 runOnlyForDeploymentPostprocessing = 0; 1557 shellPath = /bin/sh; 1558 shellScript = "pushd a52codec/build\nln -s Deployment+Debug Development || true\nln -s Development Deployment || true\nln -s Deployment Deployment+Debug || true\npopd"; 1559 }; 1541 1560 F535FCD50B4D605900F00D14 /* ShellScript */ = { 1542 1561 isa = PBXShellScriptBuildPhase; … … 1629 1648 3D211A230B6B1A660051299D /* SubUtilities.m in Sources */, 1630 1649 3DB2BB290B6C92F000416863 /* SubATSUIRenderer.m in Sources */, 1631 3DAD32DA0B6DB26100DA0A72 /* StdIOCallback.cpp in Sources */,1632 1650 6156986F0BCDA87700E17ADE /* ringbuffer.cpp in Sources */, 1633 1651 F57676060BE1A18300B2434B /* FrameBuffer.c in Sources */, … … 1867 1885 GCC_PRECOMPILE_PREFIX_HEADER = YES; 1868 1886 GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; 1869 GCC_PREPROCESSOR_DEFINITIONS = DEBUG_BUILD;1870 1887 GCC_WARN_ABOUT_RETURN_TYPE = YES; 1871 1888 GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES; … … 1955 1972 GCC_ALTIVEC_EXTENSIONS = YES; 1956 1973 GCC_MODEL_TUNING = G5; 1974 GCC_PREPROCESSOR_DEFINITIONS = DEBUG_BUILD; 1957 1975 OTHER_LDFLAGS = ( 1958 1976 "-read_only_relocs", branches/perian-1.1/Release/Artwork/periantranslations.rtf
r717 r923 1 {\rtf1\ mac\ansicpg10000\cocoartf824\cocoasubrtf4202 {\fonttbl\f0\fnil\fcharset 77 LucidaGrande;\f1\fnil\fcharset102 STHeiti;\f2\fnil\fcharset78 HiraMaruPro-W4;1 {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf330 2 {\fonttbl\f0\fnil\fcharset0 LucidaGrande;\f1\fnil\fcharset134 STHeiti;\f2\fnil\fcharset128 HiraMaruPro-W4; 3 3 } 4 4 {\colortbl;\red255\green255\blue255;} … … 8 8 \f0\fs26 \cf0 Double-click Perian.prefPane to begin\ 9 9 Dubbelklik op Perian.prefPane om te beginnen\ 10 Double-clique sur le Perian.prefPane \'88commencer\10 Double-cliquez sur Perian.prefPane pour commencer\ 11 11 Doppelklick auf Perian.prefPane um zu beginnen\ 12 12 Doppio clica su Perian.prefPane per cominciare\ 13 13 Haga doble clic Perian.prefPane para empezar\ 14 D\' 90 um clique duplo Perian.prefpane come\'8dar\14 D\'ea um clique duplo Perian.prefpane come\'e7ar\ 15 15 16 \f1 \'cb\'ab\'bb\'f717 \f0 Perian.prefPane18 \f1 \'bf\'aa\'ca\'bc\16 \f1\b \'cb\'ab\'bb\'f7 17 \f0\b0 Perian.prefPane 18 \f1\b \'bf\'aa\'ca\'bc\ 19 19 20 \f0 \uc0\u1044 \u1074 \u1086 \u1081 \u1085 \u1086 \u1081 \u1097 \u1077 \u1083 \u1095 \u1086 \u1082 Perian.prefPane, \u1095 \u1090 \u1086 \u1073 \u1099 \u1085 \u1072 \u1095 \u1072 \u1090 \u1100 \u1089 \u1103 \20 \f0\b0 \uc0\u1044 \u1074 \u1086 \u1081 \u1085 \u1086 \u1081 \u1097 \u1077 \u1083 \u1095 \u1086 \u1082 Perian.prefPane, \u1095 \u1090 \u1086 \u1073 \u1099 \u1085 \u1072 \u1095 \u1072 \u1090 \u1100 \u1089 \u1103 \ 21 21 22 22 \f2 \'8e\'6e\'82\'df\'82\'e9\'82\'c9\'82\'cd branches/perian-1.1/Subtitles/SubATSUIRenderer.m
r902 r923 350 350 -(void*)completedStyleParsing:(SubStyle*)s 351 351 { 352 const ATSUAttributeTag tags[] = {kATSUStyleRenderingOptionsTag, kATSUSizeTag, kATSUQDBoldfaceTag, kATSUQDItalicTag, kATSUQDUnderlineTag, kATSUStyleStrikeThroughTag, kATSUFontTag}; 353 const ByteCount sizes[] = {sizeof(ATSStyleRenderingOptions), sizeof(Fixed), sizeof(Boolean), sizeof(Boolean), sizeof(Boolean), sizeof(Boolean), sizeof(ATSUFontID)}; 354 355 ATSUFontID font = GetFontIDForSSAName(s->fontname); 352 const ATSUAttributeTag tags[] = {kATSUStyleRenderingOptionsTag, kATSUSizeTag, kATSUQDBoldfaceTag, kATSUQDItalicTag, kATSUQDUnderlineTag, kATSUStyleStrikeThroughTag, kATSUFontTag, kATSUVerticalCharacterTag}; 353 const ByteCount sizes[] = {sizeof(ATSStyleRenderingOptions), sizeof(Fixed), sizeof(Boolean), sizeof(Boolean), sizeof(Boolean), sizeof(Boolean), sizeof(ATSUFontID), sizeof(ATSUVerticalCharacterType)}; 354 355 NSString *fn = s->fontname; 356 ATSUVerticalCharacterType vertical = ParseFontVerticality(&fn) ? kATSUStronglyVertical : kATSUStronglyHorizontal; 357 ATSUFontID font = GetFontIDForSSAName(fn); 356 358 ATSFontRef fontRef = font; 357 359 ATSStyleRenderingOptions opt = kATSStyleApplyAntiAliasing; … … 360 362 ATSUStyle style; 361 363 362 const ATSUAttributeValuePtr vals[] = {&opt, &size, &b, &i, &u, &st, &font };364 const ATSUAttributeValuePtr vals[] = {&opt, &size, &b, &i, &u, &st, &font, &vertical}; 363 365 364 366 if (!s->platformSizeScale) s->platformSizeScale = GetWinFontSizeScale(fontRef); … … 462 464 sv(); 463 465 { 466 ATSUVerticalCharacterType vertical = ParseFontVerticality(&sval) ? kATSUStronglyVertical : kATSUStronglyHorizontal; 464 467 ATSUFontID font = GetFontIDForSSAName(sval); 465 468 466 if (font) SetATSUStyleOther(spanEx->style, kATSUFontTag, sizeof(ATSUFontID), &font); 469 if (font) { 470 SetATSUStyleFlag(spanEx->style, kATSUVerticalCharacterTag, vertical); 471 SetATSUStyleOther(spanEx->style, kATSUFontTag, sizeof(ATSUFontID), &font); 472 } 467 473 } 468 474 break; branches/perian-1.1/Subtitles/SubContext.h
r887 r923 55 55 56 56 extern UInt8 SSA2ASSAlignment(UInt8 a); 57 void ParseASSAlignment(UInt8 a, UInt8 *alignH, UInt8 *alignV);57 extern void ParseASSAlignment(UInt8 a, UInt8 *alignH, UInt8 *alignV); 58 58 extern SubRGBAColor ParseSSAColor(unsigned rgb); 59 extern BOOL ParseFontVerticality(NSString **fontname); branches/perian-1.1/Subtitles/SubContext.m
r893 r923 62 62 case 3: case 6: case 9: *alignH = kSubAlignmentRight; break; 63 63 } 64 } 65 66 BOOL ParseFontVerticality(NSString **fontname) 67 { 68 if ([*fontname characterAtIndex:0] == '@') { 69 *fontname = [*fontname substringFromIndex:1]; 70 return YES; 71 } 72 return NO; 64 73 } 65 74 branches/perian-1.1/Subtitles/SubImport.mm
r902 r923 1046 1046 { 1047 1047 priv = [[SubSerializer alloc] init]; 1048 CFRetain(priv); 1048 1049 } 1049 1050 1050 1051 CXXSubSerializer::~CXXSubSerializer() 1051 1052 { 1052 if (priv) { [(SubSerializer*)priv release]; priv = NULL;}1053 if (priv) {CFRelease(priv); [(SubSerializer*)priv release]; priv = NULL;} 1053 1054 } 1054 1055 branches/perian-1.1/Subtitles/SubUtilities.m
r887 r923 141 141 } 142 142 143 CFMutableStringRef GetHomeDirectory()143 CFMutableStringRef CopyHomeDirectory() 144 144 { 145 145 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; branches/perian-1.1/Update Checker Sources/NSString+extras.m
r269 r923 81 81 82 82 [componentsCopy removeObjectsInRange: NSMakeRange (ix, len - ix)]; 83 [componentsCopy autorelease]; 83 84 84 85 return [componentsCopy componentsJoinedByString: @" "]; branches/perian-1.1/Update Checker Sources/UpdateCheckerAppDelegate.h
r624 r923 18 18 #define UPDATE_URL_KEY @"UpdateFeedURL" 19 19 #define SKIPPED_VERSION_KEY @"SkippedVersion" 20 #define UPDATE_STATUS_NOTIFICATION @"org.perian.UpdateCheckStatus" 20 21 #define TIME_INTERVAL_TIL_NEXT_RUN 7*24*60*60 21 22 branches/perian-1.1/Update Checker Sources/UpdateCheckerAppDelegate.m
r624 r923 35 35 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 36 36 lastRunDate = [[defaults objectForKey:NEXT_RUN_KEY] retain]; 37 if (lastRunDate == nil || [lastRunDate laterDate:[NSDate date]] != lastRunDate) { 38 //this means we should in fact run 39 [defaults setObject:[NSDate dateWithTimeIntervalSinceNow:TIME_INTERVAL_TIL_NEXT_RUN] forKey:NEXT_RUN_KEY]; 40 manualRun = [defaults boolForKey:MANUAL_RUN_KEY]; 41 [defaults removeObjectForKey:MANUAL_RUN_KEY]; 42 [self doUpdateCheck]; 43 } else { 44 //another instance was already started and therefore we don't need to do this again 45 [[NSApplication sharedApplication] terminate:self]; 46 } 37 38 [defaults setObject:[NSDate dateWithTimeIntervalSinceNow:TIME_INTERVAL_TIL_NEXT_RUN] forKey:NEXT_RUN_KEY]; 39 manualRun = [defaults boolForKey:MANUAL_RUN_KEY]; 40 [defaults removeObjectForKey:MANUAL_RUN_KEY]; 41 [defaults synchronize]; 42 [self doUpdateCheck]; 47 43 } 48 44 … … 56 52 updateUrlString = [[updateUrlString substringToIndex:[updateUrlString length]-4] stringByAppendingFormat:@"-%@.xml", betaAppcastUrl]; 57 53 #endif 54 if(manualRun) 55 [[NSDistributedNotificationCenter defaultCenter] postNotificationName:UPDATE_STATUS_NOTIFICATION object:@"Starting"]; 58 56 59 57 SUAppcast *appcast = [[SUAppcast alloc] init]; … … 81 79 NSString *panePath = [[[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent] stringByDeletingLastPathComponent] stringByDeletingLastPathComponent]; 82 80 updateAvailable = (updateAvailable && (SUStandardVersionComparison([latest fileVersion], [[NSBundle bundleWithPath:panePath] objectForInfoDictionaryKey:@"CFBundleVersion"]) == NSOrderedAscending)); 81 82 if (![panePath isEqualToString:@"Perian.prefPane"]) { 83 NSLog(@"The update checker needs to be run from inside the preference pane, quitting..."); 84 updateAvailable = 0; 85 } 86 83 87 NSString *skippedVersion = [[NSUserDefaults standardUserDefaults] objectForKey:SKIPPED_VERSION_KEY]; 84 88 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 85 89 if (updateAvailable && (!skippedVersion || 86 90 (skippedVersion && ![skippedVersion isEqualToString:[latest versionString]]))) { 91 if(manualRun) 92 [[NSDistributedNotificationCenter defaultCenter] postNotificationName:UPDATE_STATUS_NOTIFICATION object:@"YesUpdates"]; 87 93 [self showUpdatePanelForItem:latest]; 88 94 } else { 89 95 if(manualRun) 90 NSRunAlertPanel(SULocalizedString(@"No Update Found!", nil), SULocalizedString(@"Your copy of Perian is up to date", nil), nil, nil, nil);96 [[NSDistributedNotificationCenter defaultCenter] postNotificationName:UPDATE_STATUS_NOTIFICATION object:@"NoUpdates"]; 91 97 [[NSApplication sharedApplication] terminate:self]; 92 98 } 99 100 [appcast release]; 93 101 } 94 102 … … 97 105 [self updateFailed]; 98 106 if(manualRun) 99 [self showUpdateErrorAlertWithInfo:SULocalizedString(@"An error occurred while trying to load Perian's version info. Please try again later.", nil)]; 107 [[NSDistributedNotificationCenter defaultCenter] postNotificationName:UPDATE_STATUS_NOTIFICATION object:@"Error"]; 108 [appcast release]; 100 109 [[NSApplication sharedApplication] terminate:self]; 101 110 } branches/perian-1.1/Update Checker Sources/main.m
r887 r923 13 13 #define lockPath "/tmp/PerianUpdateLock" 14 14 15 static int fp = -1; 16 17 static void deleteLock() 18 { 19 close(fp); 20 unlink(lockPath); 21 } 22 15 23 int main(int argc, char *argv[]) 16 24 { 17 intfp = open(lockPath, O_CREAT | O_EXCL);18 if(fp = -1)25 fp = open(lockPath, O_CREAT | O_EXCL); 26 if(fp == -1) 19 27 { 20 28 struct stat lockfile; … … 31 39 if(fp == -1) 32 40 return 0; 41 42 atexit(deleteLock); 33 43 34 44 int ret = NSApplicationMain(argc, (const char **) argv); 35 45 36 unlink(lockPath);37 38 46 return ret; 39 47 } branches/perian-1.1/createStaticLibs.sh
r893 r923 27 27 generalConfigureOptions="$generalConfigureOptions --disable-decoder=cavs --disable-decoder=vc1 --disable-decoder=wmv3 --disable-mmx --enable-shared" 28 28 fi 29 29 30 if [ "$CC" = "" ]; then 31 CC="gcc" 32 export CC 33 fi 34 30 35 export sdkflags 31 36 … … 68 73 fi 69 74 70 patch -p0 < Patches/ffmpeg-h264dsp-chroma-mc4.diff 75 patch -p0 < Patches/ffmpeg-h264dsp-crash.diff 76 patch -p0 < Patches/ffmpeg-forceinline.diff 71 77 touch ffmpeg/patched 72 78 … … 106 112 if [ "$oldbuildid_ffmpeg" != "quick" ] ; then 107 113 if [ `arch` = ppc ] ; then 108 "$SRCROOT/ffmpeg/configure" -- enable-cross-compile --arch=i386 --extra-ldflags="$sdkflags -arch i386" --extra-cflags="-arch i386 $sdkflags $optCFlags" $extraConfigureOptions $generalConfigureOptions --cpu=pentium-m114 "$SRCROOT/ffmpeg/configure" --cc=$CC --enable-cross-compile --arch=i386 --extra-ldflags="$sdkflags -arch i386" --extra-cflags="-arch i386 $sdkflags $optCFlags" $extraConfigureOptions $generalConfigureOptions --cpu=pentium-m 109 115 else 110 "$SRCROOT/ffmpeg/configure" -- extra-cflags='$sdkflags $optCFlags'$extraConfigureOptions $generalConfigureOptions --cpu=pentium-m116 "$SRCROOT/ffmpeg/configure" --cc=$CC --extra-cflags="$sdkflags $optCFlags" $extraConfigureOptions $generalConfigureOptions --cpu=pentium-m 111 117 fi 112 118 … … 136 142 if [ "$oldbuildid_ffmpeg" != "quick" ] ; then 137 143 if [ `arch` = ppc ] ; then 138 "$SRCROOT/ffmpeg/configure" -- extra-cflags='-faltivec $sdkflags $optCFlags'$extraConfigureOptions $generalConfigureOptions144 "$SRCROOT/ffmpeg/configure" --cc=$CC --extra-cflags="-faltivec $sdkflags $optCFlags" $extraConfigureOptions $generalConfigureOptions 139 145 else 140 "$SRCROOT/ffmpeg/configure" -- enable-cross-compile --arch=ppc --extra-ldflags="$sdkflags -arch ppc" --extra-cflags="-faltivec -arch ppc $sdkflags $optCFlags" $extraConfigureOptions $generalConfigureOptions146 "$SRCROOT/ffmpeg/configure" --cc=$CC --enable-cross-compile --arch=ppc --extra-ldflags="$sdkflags -arch ppc" --extra-cflags="-faltivec -arch ppc $sdkflags $optCFlags" $extraConfigureOptions $generalConfigureOptions 141 147 fi 142 148 branches/perian-1.1/ff_MovieImport.c
r887 r923 118 118 REGISTER_DECODER(tta); 119 119 REGISTER_DECODER(dca); 120 REGISTER_DECODER(nellymoser); 120 121 121 122 REGISTER_DECODER(dvdsub); branches/perian-1.1/ff_private.c
r900 r923 169 169 (*imgHdl)->idSize = sizeof(ImageDescription); 170 170 171 if ( codec->codec_tag)171 if (!((*imgHdl)->cType = map_video_codec_to_mov_tag(codec->codec_id))) 172 172 (*imgHdl)->cType = BSWAP(codec->codec_tag); 173 else174 // need to lookup the fourcc from the codec_id175 (*imgHdl)->cType = map_video_codec_to_mov_tag(codec->codec_id);176 173 // FourCCprintf("fourcc: ", (*imgHdl)->cType); 177 174 … … 389 386 case CODEC_ID_TTA: 390 387 asbd->mFormatID = kAudioFormatTTA; 388 break; 389 case CODEC_ID_NELLYMOSER: 390 asbd->mFormatID = kAudioFormatNellymoser; 391 391 break; 392 392 default: … … 1137 1137 1138 1138 if(err == noErr) 1139 err =MovieExecuteWiredActions(movie, 0, container);1139 MovieExecuteWiredActions(movie, 0, container); 1140 1140 1141 1141 err = QTDisposeAtomContainer(container); trunk/PerianPrefPane.nib/info.nib
<
