• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
using two buffers
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

using two buffers


  • Subject: using two buffers
  • From: Judith Suttrup <email@hidden>
  • Date: Thu, 04 Sep 2008 16:15:02 +0200
  • Organization: http://freemail.web.de/

Hello list,

I am trying to separate the data of two channels (left and right) into two buffers. Afterwards the data of each buffer should be displayed in a graph. The graph displays something until I try to set abl->mNumberBuffers = 2. What am I doing wrong?




OSErr						error;
	MovieAudioExtractionRef		extractionSessionRef = nil;
	AudioChannelLayout*		layout			 = nil;
	UInt32					size				= 0;
	AudioStreamBasicDescription	asbd;


	soundToPlay = [[self mMovie] quickTimeMovie];

	SetMovieActive(soundToPlay, TRUE);

	error = MovieAudioExtractionBegin(soundToPlay, 0, &extractionSessionRef);


	error = MovieAudioExtractionGetProperty(extractionSessionRef,
											kQTPropertyClass_MovieAudioExtraction_Audio,
											kQTMovieAudioExtractionAudioPropertyID_AudioStreamBasicDescription,
											sizeof (asbd), &asbd, nil);


	Boolean allChannelsDicrete = TRUE;

	error = MovieAudioExtractionSetProperty(extractionSessionRef,
											kQTPropertyClass_MovieAudioExtraction_Movie,
											kQTMovieAudioExtractionMoviePropertyID_AllChannelsDiscrete,
											sizeof (Boolean), &allChannelsDicrete);


	asbd.mFormatFlags = kAudioFormatFlagIsFloat;
	kAudioFormatFlagIsNonInterleaved;
	asbd.mChannelsPerFrame = 2;
	asbd.mBitsPerChannel = sizeof(float) * 8;
	asbd.mBytesPerFrame = sizeof(float) * asbd.mChannelsPerFrame;
	asbd.mBytesPerPacket = asbd.mBytesPerFrame;




	error = MovieAudioExtractionSetProperty(extractionSessionRef,
											kQTPropertyClass_MovieAudioExtraction_Audio,
											kQTMovieAudioExtractionAudioPropertyID_AudioStreamBasicDescription,
											sizeof (asbd), &asbd);




	float				numFramesF = asbd.mSampleRate * ((float) GetMovieDuration(soundToPlay) / (float) GetMovieTimeScale(soundToPlay));
	UInt32		        numFrames				= (UInt32) numFramesF;


	UInt32				extractionFlags			= 0;
	AudioBufferList*	        abl 					= (AudioBufferList *)calloc(1, offsetof(AudioBufferList, mBuffers[asbd.mChannelsPerFrame]));



	abl->mNumberBuffers =  asbd.mChannelsPerFrame;

	unsigned i;
	for(i = 0; i < abl->mNumberBuffers; i++) {
		abl->mBuffers[i].mNumberChannels = 1;
		abl->mBuffers[i].mDataByteSize = sizeof(float) * abl->mBuffers[0].mNumberChannels * numFrames;
		abl->mBuffers[i].mData = malloc(abl->mBuffers[i].mDataByteSize);
	}


	[self setSamples:calloc(abl->mBuffers[0].mDataByteSize, 1)];
	abl->mBuffers[0].mData = samples;                                         // samples (Byte *)
	[self setSampleCount: numFrames * abl->mBuffers[0].mNumberChannels];

	error = MovieAudioExtractionFillBuffer(extractionSessionRef, &numFrames, abl, &extractionFlags);


	error = MovieAudioExtractionEnd(extractionSessionRef);

	ExitMovies();

>>>>>>>>>>>>>>>>>>>	Putting data in MutableArray

	if (ipbuf == NULL) {

		[self setIpbuf:[[NSMutableArray alloc] init]];


	for (i = 0; i < (sampleCount / 2); i++) {
		[ipbuf addObject:[NSNumber numberWithFloat:(Float32)samples[i]]];
	}
 >>>>>>>>>>>>>>>>>>>  drawing the graph

for(; i < [ipbuf count]; i++){
		timer++;
		x =	timer;
		NSNumber * tempNum = [ipbuf objectAtIndex:i];
		y = [tempNum floatValue] * rect.size.height / 256;
		[aPath lineToPoint:NSMakePoint(x, y)];
	}


Thanks, Judith Suttrup


_______________________________________________________________________
Jetzt neu! Schützen Sie Ihren PC mit McAfee und WEB.DE. 30 Tage
kostenlos testen. http://www.pc-sicherheit.web.de/startseite/?mc=022220

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Prev by Date: Re: Effect and Instrument combined in one AU
  • Next by Date: Re: Warnings and tips for using AUGenericView
  • Previous by thread: Decoding stereo channels with audio extraction API
  • Next by thread: Re: Warnings and tips for using AUGenericView
  • Index(es):
    • Date
    • Thread