view dstep/qtkit/QTSampleBuffer.d @ 16:19885b43130e

Huge update, the bridge actually works now
author Jacob Carlborg <doob@me.com>
date Sun, 03 Jan 2010 22:06:11 +0100
parents
children b9de51448c6b
line wrap: on
line source

/**
 * Copyright: Copyright (c) 2009 Jacob Carlborg.
 * Authors: Jacob Carlborg
 * Version: Initial created: Sep 28, 2009 
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
 */
module dstep.qtkit.QTSampleBuffer;

import dstep.coreaudio.CoreAudioTypes;
import dstep.foundation.Foundation;
import dstep.objc.bridge.Bridge;
import dstep.objc.objc;
import dstep.qtkit.QTFormatDescription;
import dstep.qtkit.QTKitDefines;
import dstep.qtkit.QTTime;

import bindings = dstep.qtkit.QTSampleBuffer_bindings;

alias NSUInteger QTSampleBufferAudioBufferListOptions;

private
{
	NSString QTSampleBufferSMPTETimeAttribute_;
	NSString QTSampleBufferDateRecordedAttribute_;
	NSString QTSampleBufferHostTimeAttribute_;
	NSString QTSampleBufferSceneChangeTypeAttribute_;
	NSString QTSampleBufferExplicitSceneChange_;
	NSString QTSampleBufferTimeStampDiscontinuitySceneChange_;
}

NSString QTSampleBufferSMPTETimeAttribute ()
{
	if (QTSampleBufferSMPTETimeAttribute_)
		return QTSampleBufferSMPTETimeAttribute_;

	return QTSampleBufferSMPTETimeAttribute_ = new NSString(bindings.QTSampleBufferSMPTETimeAttribute);
}

NSString QTSampleBufferDateRecordedAttribute ()
{
	if (QTSampleBufferDateRecordedAttribute_)
		return QTSampleBufferDateRecordedAttribute_;

	return QTSampleBufferDateRecordedAttribute_ = new NSString(bindings.QTSampleBufferDateRecordedAttribute);
}

NSString QTSampleBufferHostTimeAttribute ()
{
	if (QTSampleBufferHostTimeAttribute_)
		return QTSampleBufferHostTimeAttribute_;

	return QTSampleBufferHostTimeAttribute_ = new NSString(bindings.QTSampleBufferHostTimeAttribute);
}

NSString QTSampleBufferSceneChangeTypeAttribute ()
{
	if (QTSampleBufferSceneChangeTypeAttribute_)
		return QTSampleBufferSceneChangeTypeAttribute_;

	return QTSampleBufferSceneChangeTypeAttribute_ = new NSString(bindings.QTSampleBufferSceneChangeTypeAttribute);
}

NSString QTSampleBufferExplicitSceneChange ()
{
	if (QTSampleBufferExplicitSceneChange_)
		return QTSampleBufferExplicitSceneChange_;

	return QTSampleBufferExplicitSceneChange_ = new NSString(bindings.QTSampleBufferExplicitSceneChange);
}

NSString QTSampleBufferTimeStampDiscontinuitySceneChange ()
{
	if (QTSampleBufferTimeStampDiscontinuitySceneChange_)
		return QTSampleBufferTimeStampDiscontinuitySceneChange_;

	return QTSampleBufferTimeStampDiscontinuitySceneChange_ = new NSString(bindings.QTSampleBufferTimeStampDiscontinuitySceneChange);
}

enum
{
	QTSampleBufferAudioBufferListOptionAssure16ByteAlignment = (1L << 0)
}

const TQTSampleBufferUseCount = `

	NSUInteger sampleUseCount ()
	{
		return invokeObjcSelf!(NSUInteger, "sampleUseCount");
	}

	void incrementSampleUseCount ()
	{
		return invokeObjcSelf!(void, "incrementSampleUseCount");
	}

	void decrementSampleUseCount ()
	{
		return invokeObjcSelf!(void, "decrementSampleUseCount");
	}

	//mixin ObjcBindMethod!(sampleUseCount, "sampleUseCount");
	//mixin ObjcBindMethod!(incrementSampleUseCount, "incrementSampleUseCount");
	//mixin ObjcBindMethod!(decrementSampleUseCount, "decrementSampleUseCount");

`;

const TQTAudioSampleBuffer = `

	bool getAudioStreamPacketDescriptions (AudioStreamPacketDescription* audioStreamPacketDescriptions, NSRange range)
	{
		return invokeObjcSelf!(bool, "getAudioStreamPacketDescriptions:inRange:", AudioStreamPacketDescription*, NSRange)(audioStreamPacketDescriptions, range);
	}

	//mixin ObjcBindMethod!(getAudioStreamPacketDescriptions, "getAudioStreamPacketDescriptions:inRange:");

`;

class QTSampleBuffer : NSObject
{
	mixin (ObjcWrap);

	QTFormatDescription formatDescription ()
	{
		return invokeObjcSelf!(QTFormatDescription, "formatDescription");
	}

	QTTime duration ()
	{
		return invokeObjcSelf!(QTTime, "duration");
	}

	QTTime decodeTime ()
	{
		return invokeObjcSelf!(QTTime, "decodeTime");
	}

	QTTime presentationTime ()
	{
		return invokeObjcSelf!(QTTime, "presentationTime");
	}

	NSUInteger numberOfSamples ()
	{
		return invokeObjcSelf!(NSUInteger, "numberOfSamples");
	}

	NSDictionary sampleBufferAttributes ()
	{
		return invokeObjcSelf!(NSDictionary, "sampleBufferAttributes");
	}

	Object attributeForKey (NSString key)
	{
		return invokeObjcSelf!(Object, "attributeForKey:", NSString)(key);
	}
	
	// QTSampleBufferUseCount
	NSUInteger sampleUseCount ()
	{
		return invokeObjcSelf!(NSUInteger, "sampleUseCount");
	}

	void incrementSampleUseCount ()
	{
		return invokeObjcSelf!(void, "incrementSampleUseCount");
	}

	void decrementSampleUseCount ()
	{
		return invokeObjcSelf!(void, "decrementSampleUseCount");
	}
	
	// QTAudioSampleBuffer
	bool getAudioStreamPacketDescriptions (AudioStreamPacketDescription* audioStreamPacketDescriptions, NSRange range)
	{
		return invokeObjcSelf!(bool, "getAudioStreamPacketDescriptions:inRange:", AudioStreamPacketDescription*, NSRange)(audioStreamPacketDescriptions, range);
	}
}