Example #1
0
void VoIP::decodeMessage(VoIPMessage *message){
    qDebug() << "Recv:" << message->getHost() << message->getPort() << message->payload().size();
    AudioData *outdata = new AudioData;
    audiocodec->decode(message->payload(), outdata);
    delete message;
    //qDebug() << "Decoded:" << outdata->size();
    emit decodedAudio(outdata);
}
Example #2
0
static void playNextAudioFrame(struct nodeInstanceData *context, VuoOutputTrigger(decodedAudio, VuoList_VuoAudioSamples))
{
	if(context->lastAudioSamples)
	{
		// Send Audio
		if(VuoListGetCount_VuoAudioSamples(context->lastAudioSamples) > 0)
		{
			VuoAudioSamples as = VuoListGetValueAtIndex_VuoAudioSamples(context->lastAudioSamples, 1);
			decodedAudio(context->lastAudioSamples);
		}

		VuoRelease(context->lastAudioSamples);
		context->lastAudioSamples = NULL;
	}

	uint64_t cur_time = dispatch_time(DISPATCH_TIME_NOW, 0);

	if(!context->movie) return;

	context->lastAudioSamples = VuoListCreate_VuoAudioSamples();

	double frameTimestampInSecs = 0;

	bool gotFrame = VuoMovie_getNextAudioSample(context->movie, context->lastAudioSamples, &frameTimestampInSecs);
	if(gotFrame)
	{
		VuoRetain(context->lastAudioSamples);
		context->lastAudioTimestamp = frameTimestampInSecs;
	}
	else
	{
		VLog("bad");

		if(context->lastAudioSamples)
			VuoRelease(context->lastAudioSamples);

		context->lastAudioSamples = NULL;
	}

	uint64_t presentationTime = (cur_time + NSEC_PER_SEC * AUDIO_SEC_PER_SAMPLE - 100000);
	dispatch_source_set_timer(context->audio_timer, presentationTime, DISPATCH_TIME_FOREVER, NSEC_PER_SEC / 100000 );
}