Changeset 842

Show
Ignore:
Timestamp:
05/26/2009 08:34:59 AM (3 years ago)
Author:
gbooker
Message:

Added DTS passthrough.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/CoreData/SapphireFrappliance/Players/SapphireVideoPlayerController.m

    r713 r842  
    3030#define A52_DOMIAN                      (CFStringRef)@"com.cod3r.a52codec" 
    3131 
    32 #define SOUND_STATE_SOUND_ENABLED               1 
    33 #define SOUND_STATE_SOUND_PASSTHROUGH   2 
    34 #define SOUND_STATE_PLAYER_TORNDOWN             4 
     32#define DTS_PASSTHROUGH_KEY CFSTR("attemptDTSPassthrough") 
     33#define PERIAN_DOMAIN CFSTR("org.perian.Perian") 
     34 
     35#define SOUND_STATE_SOUND_ENABLED                                       1 
     36#define SOUND_STATE_AC3_PASSTHROUGH_WAS_ENABLED         2 
     37#define SOUND_STATE_PLAYER_TORNDOWN                                     4 
     38#define SOUND_STATE_DTS_PASSTHROUGH_WAS_ENABLED         8 
    3539 
    3640@interface BRVideoPlayerController (compat) 
     
    178182        SapphireSettings *settings = [SapphireSettings sharedSettings]; 
    179183        BOOL useAC3Passthrough = NO; 
     184        BOOL useDTSPassthrough = NO; 
    180185 
    181186        if([settings useAC3Passthrough]) 
     
    186191                if((type == 'ac-3' || type == 0x6D732000) && setupAudioOutput((int)sampleRate)) 
    187192                        useAC3Passthrough = YES; 
     193                else if((type == 'DTS ') && setupAudioOutput((int)sampleRate)) 
     194                        useDTSPassthrough = YES; 
    188195        } 
    189196         
    190197        Boolean temp; 
    191         BOOL passthrough = CFPreferencesGetAppBooleanValue(PASSTHROUGH_KEY, A52_DOMIAN, &temp); 
     198        BOOL AC3PassthroughEnabled = CFPreferencesGetAppBooleanValue(PASSTHROUGH_KEY, A52_DOMIAN, &temp); 
     199        BOOL DTSPassthroughEnabled = CFPreferencesGetAppBooleanValue(DTS_PASSTHROUGH_KEY, PERIAN_DOMAIN, &temp); 
    192200        BOOL soundsWereEnabled = NO; 
    193         if(useAC3Passthrough) 
     201        if(useAC3Passthrough || useDTSPassthrough) 
    194202        { 
    195203                RUIPreferences *prefs = [SapphireFrontRowCompat sharedFrontRowPreferences]; 
     
    197205                if(soundsWereEnabled) 
    198206                        [prefs setBool:NO forKey:@"PlayFrontRowSounds"]; 
     207        } 
     208        if(useAC3Passthrough) 
    199209                CFPreferencesSetAppValue(PASSTHROUGH_KEY, (CFNumberRef)[NSNumber numberWithInt:1], A52_DOMIAN); 
    200         } 
    201210        else 
    202211                CFPreferencesSetAppValue(PASSTHROUGH_KEY, (CFNumberRef)[NSNumber numberWithInt:0], A52_DOMIAN); 
    203         soundState = (passthrough ? SOUND_STATE_SOUND_PASSTHROUGH : 0) | (soundsWereEnabled ? SOUND_STATE_SOUND_ENABLED : 0); 
     212        if(useDTSPassthrough) 
     213                CFPreferencesSetAppValue(DTS_PASSTHROUGH_KEY, (CFNumberRef)[NSNumber numberWithInt:1], PERIAN_DOMAIN); 
     214        else 
     215                CFPreferencesSetAppValue(DTS_PASSTHROUGH_KEY, (CFNumberRef)[NSNumber numberWithInt:0], PERIAN_DOMAIN); 
     216        soundState = (AC3PassthroughEnabled ? SOUND_STATE_AC3_PASSTHROUGH_WAS_ENABLED : 0) | 
     217                                 (soundsWereEnabled ? SOUND_STATE_SOUND_ENABLED : 0) | 
     218                                 (DTSPassthroughEnabled ? SOUND_STATE_DTS_PASSTHROUGH_WAS_ENABLED : 0); 
    204219        CFPreferencesAppSynchronize(A52_DOMIAN); 
     220        CFPreferencesAppSynchronize(PERIAN_DOMAIN); 
    205221} 
    206222 
     
    218234        soundState |= SOUND_STATE_PLAYER_TORNDOWN; 
    219235        //Turn off the AC3 Passthrough hack 
    220         CFPreferencesSetAppValue(PASSTHROUGH_KEY, (CFNumberRef)[NSNumber numberWithInt:((soundState & SOUND_STATE_SOUND_PASSTHROUGH)? 1 : 0)], A52_DOMIAN); 
     236        CFPreferencesSetAppValue(PASSTHROUGH_KEY, (CFNumberRef)[NSNumber numberWithInt:((soundState & SOUND_STATE_AC3_PASSTHROUGH_WAS_ENABLED)? 1 : 0)], A52_DOMIAN); 
    221237        CFPreferencesAppSynchronize(A52_DOMIAN); 
     238        CFPreferencesSetAppValue(DTS_PASSTHROUGH_KEY, (CFNumberRef)[NSNumber numberWithInt:((soundState & SOUND_STATE_DTS_PASSTHROUGH_WAS_ENABLED)? 1 : 0)], PERIAN_DOMAIN); 
     239        CFPreferencesAppSynchronize(PERIAN_DOMAIN); 
    222240        if(soundState & SOUND_STATE_SOUND_ENABLED) 
    223241                [[SapphireFrontRowCompat sharedFrontRowPreferences] setBool:YES forKey:@"PlayFrontRowSounds"];