Changeset 806

Show
Ignore:
Timestamp:
02/09/08 13:55:44 (6 months ago)
Author:
astrange
Message:

Merge 1.1 to trunk. If you're switching, delete ffmpeg/ first!
I haven't merged the nib changes, so the component manager is missing again.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/perian-1.1/PerianPrefPane.nib/info.nib

    r802 r806  
    99        <key>IBOpenObjects</key> 
    1010        <array> 
    11                 <integer>32</integer> 
     11                <integer>5</integer> 
    1212        </array> 
    1313        <key>IBSystem Version</key> 
  • trunk/CAPublicUtility/CAStreamBasicDescription.cpp

    r219 r806  
    5050        #include <Endian.h> 
    5151#endif 
     52 
     53#import "CodecIDs.h" 
    5254 
    5355const AudioStreamBasicDescription       CAStreamBasicDescription::sEmpty = { 0.0, 0, 0, 0, 0, 0, 0, 0, 0 }; 
     
    272274                 
    273275                case kAudioFormatAC3: 
     276                case kAudioFormatAC3MS: 
    274277                        strcpy(outName, "AC-3"); 
    275278                        break; 
  • trunk/CommonUtils.c

    r585 r806  
    7070        { "he", "heb", langHebrew }, 
    7171        { "hi", "hin", langHindi }, 
    72         { "",   "hmn", langHungarian }, 
     72        { "hu", "hun", langHungarian }, 
    7373        { "is", "ice", langIcelandic }, 
    7474        { "is", "isl", langIcelandic }, 
  • trunk/FFusionCodec.c

    r736 r806  
    4141#include "FrameBuffer.h" 
    4242#include "CommonUtils.h" 
     43#include "pthread.h" 
    4344 
    4445void inline swapFrame(AVFrame * *a, AVFrame * *b) 
     
    164165#include <QuickTime/ComponentDispatchHelper.c> 
    165166 
     167void *launchUpdateChecker(void *args) 
     168{ 
     169        FSRef *ref = (FSRef *)args; 
     170    LSOpenFSRef(ref, NULL); 
     171        free(ref); 
     172        return NULL; 
     173} 
     174 
    166175void FFusionRunUpdateCheck() 
    167176{ 
     
    181190     
    182191    char fileRep[1024]; 
    183     FSRef updateCheckRef
     192    FSRef *updateCheckRef = malloc(sizeof(FSRef))
    184193    Boolean doCheck = FALSE; 
    185194     
    186195    if(CFStringGetFileSystemRepresentation(location, fileRep, 1024)) 
    187         if(FSPathMakeRef((UInt8 *)fileRep, &updateCheckRef, NULL) == noErr) 
     196        if(FSPathMakeRef((UInt8 *)fileRep, updateCheckRef, NULL) == noErr) 
    188197            doCheck = TRUE; 
    189198     
     
    193202        CFStringRef absLocation = CFSTR("/Library/PreferencePanes/Perian.prefPane/Contents/Resources/PerianUpdateChecker.app"); 
    194203        if(CFStringGetFileSystemRepresentation(absLocation, fileRep, 1024)) 
    195             if(FSPathMakeRef((UInt8 *)fileRep, &updateCheckRef, NULL) != noErr) 
     204            if(FSPathMakeRef((UInt8 *)fileRep, updateCheckRef, NULL) != noErr) 
    196205                return;  //We have failed 
    197206    } 
    198      
    199     LSOpenFSRef(&updateCheckRef, NULL);     
     207        pthread_t thread; 
     208        pthread_create(&thread, NULL, launchUpdateChecker, updateCheckRef); 
    200209} 
    201210 
     
    290299            Codecprintf(glob->fileLog, "Error opening the base image decompressor! Exiting.\n"); 
    291300        } 
     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); 
    292305        FFusionRunUpdateCheck(); 
    293306    } 
     
    315328            DisposeImageCodecMPDrawBandUPP(glob->drawBandUPP); 
    316329        } 
    317          
    318         if (glob->avCodec) 
    319         { 
    320             avcodec_close(glob->avContext); 
    321         } 
    322330                                 
    323331        if (glob->avContext) 
     
    326334                                free(glob->avContext->extradata); 
    327335                                                 
     336                        if (glob->avContext->codec) avcodec_close(glob->avContext); 
    328337            av_free(glob->avContext); 
    329338        } 
     
    344353                        fclose(glob->fileLog); 
    345354                 
     355        memset(glob, 0, sizeof(FFusionGlobalsRecord)); 
    346356        DisposePtr((Ptr)glob); 
    347357    } 
     
    453463        long count = 0; 
    454464        Handle imgDescExt; 
     465        OSErr err = noErr; 
    455466         
    456467    // We first open libavcodec library and the codec corresponding 
     
    678689                        ffusionParseExtraData(glob->begin.parser, glob->avContext->extradata, glob->avContext->extradata_size); 
    679690                 
     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                 
    680696                // some hooks into ffmpeg's buffer allocation to get frames in  
    681697                // decode order without delay more easily 
     
    693709            Codecprintf(glob->fileLog, "Error opening avcodec!\n"); 
    694710             
    695             return -2
     711                       err = paramErr
    696712        } 
    697713                 
    698                 // we allocate some space for copying the frame data since we need some padding at the end 
    699                 // for ffmpeg's optimized bitstream readers. Size doesn't really matter, it'll grow if need be 
    700                 FFusionDataSetup(&(glob->data), 256, 64*1024); 
    701714    } 
    702715     
     
    736749    index = 0; 
    737750         
     751        if (!err) { 
    738752        switch (glob->avContext->pix_fmt) 
    739753        { 
     
    756770                        break; 
    757771        } 
     772        } 
    758773     
    759774    pos[index++] = 0; 
     
    771786        capabilities->flags |= codecCanAsync | codecCanAsyncWhen; 
    772787         
    773      
    774     return noErr; 
     788    return err; 
    775789} 
    776790 
     
    833847        myDrp->frameData = NULL; 
    834848        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        } 
    835854         
    836855        if(myDrp->decoded) 
  • trunk/FFusionCodec.h

    r708 r806  
    2929//--------------------------------------------------------------------------- 
    3030 
    31 #define kFFusionCodecVersion            (0x00030002
     31#define kFFusionCodecVersion            (0x00030003
    3232 
    3333#define kDivX1CodecInfoResID            256 
  • trunk/FrameBuffer.c

    r641 r806  
    3939                free(data->frames[i]); 
    4040        } 
    41         free(data->buffer); 
     41        free(data->frames); 
     42        av_free(data->buffer); 
    4243} 
    4344 
  • trunk/MatroskaCodecIDs.cpp

    r726 r806  
    427427} 
    428428 
     429static const unsigned char aac_lc_vos[] = {0x11, 0x90}; 
     430 
    429431static Handle CreateEsdsExt(KaxTrackEntry *tr_entry, bool audio) 
    430432{ 
     
    436438    uint8_t *vosBuf = codecPrivate ? codecPrivate->GetBuffer() : NULL; 
    437439        size_t esdsLen; 
     440         
     441        if (!vosBuf) { // minimal AAC-LC descriptor 
     442                vosBuf = (uint8_t*)aac_lc_vos; 
     443                vosLen = 2; 
     444        } 
    438445 
    439446        Handle esdsExt = NewHandleClear(4); 
     
    720727                                 
    721728                        case kAudioFormatAC3: 
     729                        case kAudioFormatAC3MS: 
    722730                                acl = ac3ChannelLayouts[channelIndex]; 
    723731                                break; 
     
    753761        { kAudioFormatMPEGLayer2, 0x50 }, 
    754762        { kAudioFormatMPEGLayer3, 0x55 }, 
    755         { kAudioFormatAC3, 0x2000 }, 
     763        { kAudioFormatAC3MS, 0x2000 }, 
    756764        { kAudioFormatDTS, 0x2001 }, 
    757765        { kAudioFormatMPEG4AAC, 0xff }, 
     
    795803        { kAudioFormatMPEGLayer2, "A_MPEG/L2" }, 
    796804        { kAudioFormatMPEGLayer3, "A_MPEG/L3" }, 
    797         { kAudioFormatAC3, "A_AC3" }, 
     805        { kAudioFormatAC3MS, "A_AC3" }, 
    798806        { kAudioFormatAC3MS, "A_AC3" }, 
    799807        // 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" }, 
    802810        { kAudioFormatXiphVorbis, "A_VORBIS" }, 
    803811        { kAudioFormatXiphFLAC, "A_FLAC" }, 
  • trunk/MatroskaImport.cpp

    r794 r806  
    116116        err = store->ImportDataRef((Handle)alias, rAliasType, theMovie, targetTrack, 
    117117                                                           usedTrack, atTime, durationAdded, inFlags, outFlags); 
    118         if (err) goto bail; 
    119          
    120         LoadExternalSubtitles(&theFileFSRef, theMovie); 
    121          
     118                 
    122119bail: 
    123120        if (alias) 
     
    131128                                                                          Track *usedTrack, TimeValue atTime, TimeValue *durationAdded, long inFlags, long *outFlags) 
    132129{ 
    133         return store->ImportDataRef(dataRef, dataRefType, theMovie, targetTrack, 
     130        ComponentResult res = store->ImportDataRef(dataRef, dataRefType, theMovie, targetTrack, 
    134131                                                                usedTrack, atTime, durationAdded, inFlags, outFlags); 
     132         
     133        LoadExternalSubtitlesFromFileDataRef(dataRef, dataRefType, theMovie); 
     134        return res; 
    135135} 
    136136 
     
    254254                        // invalid file, validate should catch this 
    255255                        return invalidMovie; 
    256                  
     256                                
    257257                err = SetupMovie(); 
    258258                if (err) return err; 
  • trunk/MatroskaImportPrivate.cpp

    r714 r806  
    657657                                                                           dataRef, HandleDataHandlerSubType); 
    658658        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); 
    660661                DisposeMovieTrack(chapterTrack); 
    661                 return GetMoviesError()
     662                return err
    662663        } 
    663664         
     
    966967        bool replaceSoundDesc = false; 
    967968         
    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                } 
    972976        } 
    973977         
  • trunk/MatroskaImportVersion.h

    r794 r806  
    2424 
    2525// The high word is the codecInterfaceVersion 
    26 #define kMatroskaImportVersion          (0x00020001
     26#define kMatroskaImportVersion          (0x00020002
  • trunk/Perian.xcodeproj/project.pbxproj

    r792 r806  
    18041804                        buildSettings = { 
    18051805                                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\""; 
    18111806                                GCC_DYNAMIC_NO_PIC = NO; 
    18121807                                GCC_ENABLE_FIX_AND_CONTINUE = YES; 
     
    18361831                        buildSettings = { 
    18371832                                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\""; 
    18431833                                GCC_ENABLE_FIX_AND_CONTINUE = NO; 
    18441834                                GCC_ENABLE_OBJC_EXCEPTIONS = YES; 
     
    18681858                                DEAD_CODE_STRIPPING = NO; 
    18691859                                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\""; 
    18771860                                GCC_DYNAMIC_NO_PIC = NO; 
    18781861                                GCC_ENABLE_FIX_AND_CONTINUE = YES; 
     
    18971880                                INFOPLIST_FILE = "Plists/Perian-Info.plist"; 
    18981881                                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; 
    19041883                                OTHER_LDFLAGS = ( 
    19051884                                        "-framework", 
     
    19151894                                PRODUCT_NAME = Perian; 
    19161895                                REZ_PREPROCESSOR_DEFINITIONS = ""; 
    1917                                 SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; 
    19181896                                WRAPPER_EXTENSION = component; 
    19191897                                ZERO_LINK = NO; 
     
    19291907                                GCC_DYNAMIC_NO_PIC = NO; 
    19301908                                GCC_ENABLE_FIX_AND_CONTINUE = NO; 
     1909                                GCC_ENABLE_OBJC_GC = YES; 
    19311910                                GCC_GENERATE_DEBUGGING_SYMBOLS = NO; 
    19321911                                GCC_MODEL_TUNING = G5; 
     
    19471926                                INFOPLIST_FILE = "Plists/Perian-Info.plist"; 
    19481927                                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; 
    19531929                                OTHER_CFLAGS = "$(OTHER_CFLAGS_$(CURRENT_ARCH))"; 
    19541930                                OTHER_CFLAGS_i386 = "-march=pentium-m -mtune=nocona $(OTHER_CFLAGS)"; 
     
    19831959                                GCC_ALTIVEC_EXTENSIONS = YES; 
    19841960                                GCC_MODEL_TUNING = G5; 
     1961                                OTHER_LDFLAGS = ( 
     1962                                        "-read_only_relocs", 
     1963                                        suppress, 
     1964                                ); 
    19851965                                SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; 
    19861966                        }; 
     
    19991979                                GCC_STRICT_ALIASING = YES; 
    20001980                                MACOSX_DEPLOYMENT_TARGET = 10.4; 
     1981                                OTHER_LDFLAGS = ( 
     1982                                        "-read_only_relocs", 
     1983                                        suppress, 
     1984                                ); 
    20011985                                SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; 
    20021986                                STRIP_INSTALLED_PRODUCT = NO; 
     
    20492033                                DEAD_CODE_STRIPPING = YES; 
    20502034                                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\""; 
    20582035                                GCC_ALTIVEC_EXTENSIONS = YES; 
    20592036                                GCC_DYNAMIC_NO_PIC = NO; 
    20602037                                GCC_ENABLE_FIX_AND_CONTINUE = NO; 
     2038                                GCC_ENABLE_OBJC_GC = YES; 
    20612039                                GCC_FAST_MATH = YES; 
    20622040                                GCC_MODEL_TUNING = G5; 
     
    20782056                                INFOPLIST_FILE = "Plists/Perian-Info.plist"; 
    20792057                                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; 
    20852059                                OTHER_CFLAGS = "$(OTHER_CFLAGS_$(CURRENT_ARCH))"; 
    20862060                                OTHER_CFLAGS_i386 = "-march=pentium-m -mtune=nocona $(OTHER_CFLAGS)"; 
     
    20962070                                PRESERVE_DEAD_CODE_INITS_AND_TERMS = YES; 
    20972071                                PRODUCT_NAME = Perian; 
    2098                                 SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; 
    20992072                                WRAPPER_EXTENSION = component; 
    21002073                                ZERO_LINK = NO; 
     
    21872160                                PREBINDING = NO; 
    21882161                                PRODUCT_NAME = Perian; 
    2189                                 SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; 
    21902162                                WRAPPER_EXTENSION = prefPane; 
    21912163                                ZERO_LINK = NO; 
     
    21972169                        buildSettings = { 
    21982170                                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\""; 
    22042171                                GCC_ENABLE_FIX_AND_CONTINUE = NO; 
    22052172                                GCC_ENABLE_OBJC_EXCEPTIONS = YES; 
     
    22312198                                GCC_PREPROCESSOR_DEFINITIONS = DEBUG_BUILD; 
    22322199                                GCC_STRICT_ALIASING = YES; 
     2200                                OTHER_LDFLAGS = ( 
     2201                                        "-read_only_relocs", 
     2202                                        suppress, 
     2203                                ); 
    22332204                                SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; 
    22342205                                STRIP_INSTALLED_PRODUCT = NO; 
     
    23362307                                PREBINDING = NO; 
    23372308                                PRODUCT_NAME = Perian; 
    2338                                 SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; 
    23392309                                WRAPPER_EXTENSION = prefPane; 
    23402310                                ZERO_LINK = YES; 
     
    23612331                                PREBINDING = NO; 
    23622332                                PRODUCT_NAME = Perian; 
    2363                                 SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; 
    23642333                                WRAPPER_EXTENSION = prefPane; 
    23652334                                ZERO_LINK = NO; 
  • trunk/PerianAviImporter.r

    r708 r806  
    2121****************************************************************************/ 
    2222 
    23 #define kChristophManufacturer 'Rafz
     23#define kChristophManufacturer 'Peri
    2424 
    2525#define thng_RezTemplateVersion 2 
  • trunk/Plists/Perian-Info.plist

    r612 r806  
    88        <string>Perian</string> 
    99        <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> 
    1111        <key>CFBundleIdentifier</key> 
    1212        <string>org.perian.Perian</string> 
     
    1616        <string>BNDL</string> 
    1717        <key>CFBundleShortVersionString</key> 
    18         <string>1.0.9999</string> 
     18        <string>1.1</string> 
    1919        <key>CFBundleSignature</key> 
    2020        <string>????</string> 
    2121        <key>CFBundleVersion</key> 
    22         <string>1.0.9999</string> 
     22        <string>1.1</string> 
    2323        <key>CSResourcesFileMapped</key> 
    2424        <string>yes</string> 
  • trunk/Plists/PerianPane-Info.plist

    r612 r806  
    3333        <string>????</string> 
    3434        <key>CFBundleVersion</key> 
    35         <string>1.0.9999</string> 
     35        <string>1.1</string> 
    3636        <key>CFBundleName</key> 
    3737        <string>Perian</string> 
  • trunk/Plists/PerianUpdateChecker-Info.plist

    r612 r806  
    1818        <string>????</string> 
    1919        <key>CFBundleVersion</key> 
    20         <string>1.0.9999</string> 
     20        <string>1.1</string> 
    2121        <key>NSMainNibFile</key> 
    2222        <string>UpdateCheckerMainMenu</string> 
  • trunk/Release/Changes.txt

    r731 r806  
    33- TrueAudio, MP1, and DTS audio support 
    44- Slice-based multithreaded decoding for MPEG-1/2/H.264 
    5 - Better support for interlaced H.264 
    6 - Compatibility fixes for QuickTime 7.2 and Leopard 
     5- Apple H.264 now handles AVCHD/interlaced video 
     6- Compatibility fixes for QuickTime 7.4 and Leopard 
    77- Objective-C GC compatibility 
    88- Fixed a crash in Toast 
  • trunk/Release/Makefile

    r528 r806  
    44# Check the Perian.component target and PerianPane target. 
    55 
    6 VERSION=1.0b5 
     6VERSION=1.1 
    77BETA=FALSE 
    88SRC_DIR=.. 
  • trunk/Release/Read Me.rtf

    r792 r806  
    22{\fonttbl\f0\fswiss\fcharset0 Helvetica;} 
    33{\colortbl;\red255\green255\blue255;} 
     4\margl1440\margr1440\vieww16040\viewh15820\viewkind0 
    45\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural 
    56 
    67\f0\b\fs24 \cf0 About 
    78\b0 \ 
    8 Perian aims at providing a single package to provide all your playback needs.  It is a collection of QuickTime components incorporating several libraries:\ 
     9Perian aims to provide a single package for all your playback needs.  It is a collection of QuickTime components incorporating several libraries:\ 
    910 \'95 libavcodec, from the ffmpeg project, along with code from the old FFusion component:\ 
    1011        \'95 MS-MPEG4 v1 & v2\ 
    1112        \'95 DivX\ 
    12         \'95 3ivX
     13        \'95 3ivx
    1314        \'95 H.264\ 
    1415        \'95 Flash Video\ 
     
    1920        \'95 HuffYUV\ 
    2021        \'95 ffvhuff\ 
    21         \'95 MPEG-1 & 2 video\ 
    22         \'95 FRAPS
     22        \'95 MPEG-1 & 2 Video\ 
     23        \'95 Fraps (up to v4)
    2324        \'95 Windows Media Audio v1 & v2\ 
    2425        \'95 Flash ADPCM\ 
    2526        \'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\ 
    2730 \'95 libavformat, from the ffmpeg project. along with AVIImporter.component:\ 
    2831        \'95 AVI file format\ 
     
    3033 \'95 libmatroska, along with matroska-qt.component:\ 
    3134        \'95 MKV file format\ 
    32  \'95 Subtitle parsing
     35 \'95 Subtitles:
    3336        \'95 SSA file format\ 
    3437        \'95 SRT file format\ 
    35  \'95 liba52, via A52Codec
     38 \'95 liba52, via A52Codec:
    3639        \'95 AC3 audio\ 
    3740\ 
    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/>.\ 
     41The 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/>.\ 
     42The 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/>.\ 
    4043\ 
    4144 
     
    5861\b0 \ 
    5962J\'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
     64The FFmpeg project for providing such a rich library.\ 
     65(http://ffmpeg.mplayerhq.hu/)\ 
     66
    6167The 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\ 
    6270Adrian Thurston for the Ragel parser generator.\ 
     71(http://www.cs.queensu.ca/~thurston/ragel/)\ 
     72\ 
    6373Matroska for their library.\ 
     74(http://www.matroska.org/)\ 
    6475\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 \ 
     77Bryan Bortz for the icon.\ 
     78(http://www.owlboy.com/)\ 
    6679\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 \ 
     81All 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
    6883\ 
    6984\ 
  • trunk/Subtitles/SubATSUIRenderer.m

    r731 r806  
    262262        free(ubuffer); 
    263263        UCDisposeTextBreakLocator(&breakLocator); 
     264        ATSUDisposeTextLayout(layout); 
    264265        [super dealloc]; 
    265266} 
     
    269270        free(ubuffer); 
    270271        UCDisposeTextBreakLocator(&breakLocator); 
     272        ATSUDisposeTextLayout(layout); 
    271273        [super finalize]; 
    272274} 
     
    349351} 
    350352 
    351 -(void)releaseStyleEx:(void*)ex 
     353-(void)releaseStyleExtra:(void*)ex 
    352354{ 
    353355        ATSUDisposeStyle(ex); 
     
    541543} 
    542544 
    543 static void GetTypographicRectangleForLayout(ATSUTextLayout layout, UniCharArrayOffset *breaks, ItemCount breakCount, Fixed *lX, Fixed *lY, Fixed *height, Fixed *width) 
     545static void GetTypographicRectangleForLayout(ATSUTextLayout layout, UniCharArrayOffset *breaks, ItemCount breakCount, Fixed extraHeight, Fixed *lX, Fixed *lY, Fixed *height, Fixed *width) 
    544546{ 
    545547        ATSTrapezoid trap = {0}; 
     
    555557                ATSUGetGlyphBounds(layout, 0, baseY, breaks[i], end-breaks[i], kATSUseDeviceOrigins, 1, &trap, &trapCount); 
    556558 
    557                 baseY += GetLineHeight(layout, breaks[i])
     559                baseY += GetLineHeight(layout, breaks[i]) + extraHeight
    558560                 
    559561                rect.bottom = MAX(trap.lowerLeft.y, trap.lowerRight.y); 
     
    575577        *width = largeRect.right - largeRect.left; 
    576578} 
     579 
     580#if 0 
     581static 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 
    577610 
    578611enum {fillc, strokec}; 
     
    806839                ATSUTextMeasurement lineWidth, lineHeight, lineX, lineY; 
    807840                UniCharArrayOffset breaks[2] = {thisBreak, thisBreak + lineLen}; 
    808                 G