2017-05-09 1 views
1

Ich möchte PlaybackTime von FActiveSound Klasse erhalten. Allerdings bekomme ich immer diese Fehlermeldung:Assertion failed error bei der Suche nach Active Sound

Assertion failed: IsInAudioThread() 

, wenn ich dies nennen:

FActiveSound* ActiveSound = AudioDevice->FindActiveSound(AudioComponent->GetAudioComponentID()); 

Meine Frage ist, warum ist das so? Es mag keine Frage sein, aber ich kann es nicht an mir selbst arbeiten lassen.

EDIT: 1 Was ich atm zu tun, ist dies: Binding delegate : AudioComponent->OnAudioPlaybackPercent.AddDynamic(this, &UAudioController::GimmePlaybackPosition);

dann gibt es meine Funktion, die wie folgt aussieht:

void UAudioController::GimmePlaybackPosition(const USoundWave* SoundWave, float PlaybackPercent) { FAudioDevice* AudioDevice = GEngine->GetAudioDevice(); if (AudioDevice) { FActiveSound* ActiveSound; } //GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Red, TEXT("Delegate fire")); } Und jetzt kann ich frage mich, wie ich da meine AudioComponent, um PlaybackTime zu bekommen;/

Antwort

1

Sie müssen den Code, der im Audio-Thread auf AudioDevice zugreift, über FAudioThread::RunCommandOnAudioThread ausführen.

Hier ist ein Ausschnitt in AudioComponent.cpp verwendet:

if (FAudioDevice* AudioDevice = GetAudioDevice()) 
{ 
    const uint64 MyAudioComponentID = AudioComponentID; 
    FAudioThread::RunCommandOnAudioThread([AudioDevice, MyAudioComponentID, InName, InFloat]() 
    { 
     FActiveSound* ActiveSound = AudioDevice->FindActiveSound(MyAudioComponentID); 
     if (ActiveSound) 
     { 
      ActiveSound->SetFloatParameter(InName, InFloat); 
     } 
    }, GET_STATID(STAT_AudioSetFloatParameter)); 
} 
+0

Danke für deine Hilfe! Ich bin etwas verloren, weil Dokumentation so schlecht ist. Ich habe angefangen, nach dem Engine-Code zu suchen, was hoffentlich für mich nützlicher sein wird: D Dieser Code hat mir eine Menge geholfen, also danke! – Avengar

0

Der Fehler bedeutet normalerweise, dass Sie versuchten, auf AudioDevice von einem falschen Thread zuzugreifen. Vielleicht sollten Sie Ihren Code posten, um bessere Antworten zu erhalten.

+0

meine Frage Herausgegeben mit meinem Code. Habe immer noch keine Ahnung wie ich meine Audiokomponente weiterleiten oder von dort bekommen kann – Avengar

Verwandte Themen