/*
 
 Owner: Peter Baumgartner		peter@baumgartner.com
		Achim Breidenbach		achim@boinx.com
		Michael Ehrmann			michael@boinx.com	
		Leon von Tippelskirch   leon@boinx.com
 
 Company: Boinx Software Ltd., Germany
 
 Copyright:		© 2005-2008 by IMAGINE GbR - All Rights Reserved
				© 2005-2008 by Boinx Software - All Rights Reserved
 
 Projects: BXQuicktime
 
 Abstract: Cocoa Interface, replicates the functions of UQuicktimeAtom.h / .mm
 
 Related: UQuickTimeAtom.mm
 
 */

#if !__LP64__

/******************************************************************************************************
 READ ME
 ******************************************************************************************************/

#pragma mark READ ME

// This class provides methods for accessing values in QTAtomContainers. The methods are
// guarded for thread-safe access...



/******************************************************************************************************
 INCLUDES
 ******************************************************************************************************/

#pragma mark INCLUDES	

#import <Cocoa/Cocoa.h>
#import <Carbon/Carbon.h>
#import <QuickTime/QuickTime.h>


#pragma mark

/******************************************************************************************************
 UQuickTimeAtom
 ******************************************************************************************************/


@interface BXUQuickTimeAtom : NSObject {
}
#pragma mark
	
	// Generic Accessors...
+ (BOOL) atomContainer:(QTAtomContainer) inAtomContainer containsAtomType:(QTAtomType) inAtomType parentAtom:(QTAtom) inParentAtom currentChild:(QTAtom) inCurrentChild;
+ (BOOL) dataFromAtomContainer:(QTAtomContainer) inAtomContainer atomType:(QTAtomType) inAtomType outAtomData:(void *) outAtomData parentAtom:(QTAtom) inParentAtom currentChild:(QTAtom) inCurrentChild;
	
+ (BOOL) setDataInAtomContainer:(QTAtomContainer) inAtomContainer atomType:(QTAtomType) inAtomType inAtomData:(void *) inAtomData parentAtom:(QTAtom) inParentAtom currentChild:(QTAtom) inCurrentChild;
+ (void) logAtomContainer:(QTAtomContainer) atomContainer prefix:(NSString *) prefix parentAtom:(QTAtom) inParentAtom currentChild:(QTAtom) inCurrentChild;

#pragma mark
	
+ (SCSpatialSettings) getSpatialSettingsFromAtomContainer:(QTAtomContainer) inAtomContainer inConvertToNative:(BOOL) inConvertToNative;
+ (SCSpatialSettings) spatialSettings_BtoN:(SCSpatialSettings) inSpatialSettings;
+ (SCSpatialSettings) spatialSettings_NtoB:(SCSpatialSettings) inSpatialSettings;
	
#pragma mark
	
+ (SCTemporalSettings) getTemporalSettingsFromAtomContainer:(QTAtomContainer) inAtomContainer inConvertToNative:(BOOL) inConvertToNative;
+ (SCTemporalSettings) temporalSettings_BtoN:(SCTemporalSettings) inTemporalSettings;
+ (SCTemporalSettings) temporalSettings_NtoB:(SCTemporalSettings) inTemporalSettings;

#pragma mark

+ (SCDataRateSettings) getDataRateSettingsFromAtomContainer:(QTAtomContainer) inAtomContainer inConvertToNative:(BOOL) inConvertToNative;
+ (SCDataRateSettings) dataRateSettings_BtoN:(SCDataRateSettings) inDataRateSettings;
+ (SCDataRateSettings) dataRateSettings_NtoB:(SCDataRateSettings) inDataRateSettings;

#pragma mark

+ (double) getFrameRateFromAtomContainer:(QTAtomContainer) inAtomContainer;
+ (BOOL) setFrameRate:(double) inFrameRate inAtomContainer:(QTAtomContainer) inAtomContainer;
+ (int) getWidthFromAtomContainer:(QTAtomContainer) inAtomContainer;
+ (BOOL) setWidth:(int) inWidth inAtomContainer:(QTAtomContainer) inAtomContainer;
+ (int) getHeightFromAtomContainer:(QTAtomContainer) inAtomContainer;
+ (BOOL) setHeight:(int) inHeight inAtomContainer:(QTAtomContainer) inAtomContainer;
+ (NSString *) getCodecName:(CodecType) inCodecType;
	


@end

#endif