0

Ich entwickle VoIP-Anwendung mit geringer Latenz schnellen Pfad, das Problem ist, dass, wenn ich die Audio-Route zu Lautsprecher ändern, bemerkte ich, dass der Recorder Rückruf alle 100ms anstelle von 5 ms, wie es funktionieren soll und der folgende Fehler erzeugt wird:Android niedrige Latenz OpenSLES: Recorder aufhören zu arbeiten Audio Route ändern zu Lautsprecher

E/ACDB-LOADER( 183): Error: ACDB AudProc vol returned = -19 
D/audio_hw_primary( 183): enable_snd_device: snd_device(32: speaker-mic) 
D/audio_hw_primary( 183): enable_audio_route: apply and update mixer path: low-latency-record 
D/audio_hw_primary( 183): disable_audio_route: reset and update mixer path: low-latency-record 
D/audio_hw_primary( 183): disable_snd_device: snd_device(32: speaker-mic) 
E/AudioFlinger( 183): read failed: framesRead=-2147483631 
D/audio_hw_primary( 183): select_devices: out_snd_device(0: none) in_snd_device(32: speaker-mic) 
D/msm8974_platform( 183): platform_send_audio_calibration: sending audio calibration for snd_device(32) acdb_id(11) 
D/  ( 183): Failed to fetch the lookup information of the device 0000000B 
E/ACDB-LOADER( 183): Error: ACDB AudProc vol returned = -19 
D/audio_hw_primary( 183): enable_snd_device: snd_device(32: speaker-mic) 
D/audio_hw_primary( 183): enable_audio_route: apply and update mixer path: low-latency-record 
D/audio_hw_primary( 183): disable_audio_route: reset and update mixer path: low-latency-record 
D/audio_hw_primary( 183): disable_snd_device: snd_device(32: speaker-mic) 
E/AudioFlinger( 183): read failed: framesRead=-2147483631 
D/audio_hw_primary( 183): select_devices: out_snd_device(0: none) in_snd_device(32: speaker-mic) 
D/msm8974_platform( 183): platform_send_audio_calibration: sending audio calibration for snd_device(32) acdb_id(11) 
D/  ( 183): Failed to fetch the lookup information of the device 0000000B 
E/ACDB-LOADER( 183): Error: ACDB AudProc vol returned = -19 
D/audio_hw_primary( 183): enable_snd_device: snd_device(32: speaker-mic) 
D/audio_hw_primary( 183): enable_audio_route: apply and update mixer path: low-latency-record 
D/audio_hw_primary( 183): disable_audio_route: reset and update mixer path: low-latency-record 
D/audio_hw_primary( 183): disable_snd_device: snd_device(32: speaker-mic) 
E/AudioFlinger( 183): read failed: framesRead=-2147483631 
D/audio_hw_primary( 183): select_devices: out_snd_device(0: none) in_snd_device(32: speaker-mic) 
D/msm8974_platform( 183): platform_send_audio_calibration: sending audio calibration for snd_device(32) acdb_id(11) 
D/  ( 183): Failed to fetch the lookup information of the device 0000000B 
E/ACDB-LOADER( 183): Error: ACDB AudProc vol returned = -19 
D/audio_hw_primary( 183): enable_snd_device: snd_device(32: speaker-mic) 
D/audio_hw_primary( 183): enable_audio_route: apply and update mixer path: low-latency-record 
D/audio_hw_primary( 183): disable_audio_route: reset and update mixer path: low-latency-record 
D/audio_hw_primary( 183): disable_snd_device: snd_device(32: speaker-mic) 
E/AudioFlinger( 183): read failed: framesRead=-2147483631 
D/audio_hw_primary( 183): select_devices: out_snd_device(0: none) in_snd_device(32: speaker-mic) 
D/msm8974_platform( 183): platform_send_audio_calibration: sending audio calibration for snd_device(32) acdb_id(11) 
D/  ( 183): Failed to fetch the lookup information of the device 0000000B 
E/ACDB-LOADER( 183): Error: ACDB AudProc vol returned = -19 
D/audio_hw_primary( 183): enable_snd_device: snd_device(32: speaker-mic) 
D/audio_hw_primary( 183): enable_audio_route: apply and update mixer path: low-latency-record 
D/audio_hw_primary( 183): disable_audio_route: reset and update mixer path: low-latency-record 
D/audio_hw_primary( 183): disable_snd_device: snd_device(32: speaker-mic) 
E/AudioFlinger( 183): read failed: framesRead=-2147483631 
  • Device: Nexus 5 Android 5.0.1
  • Mutterpuffergröße 240 Proben (Shorts)
  • Mutterfrequenzrate 48000 Hz Spielen Preset er:
    SL_ANDROID_STREAM_VOICE
  • Recorder Preset: SL_ANDROID_RECORDING_PRESET_VOICE_COMMUNICATION
  • Audio-Manager auf MODE_IN_COMMUNICATION

Es ist wichtig zu beachten, dass, wenn die Audio-Route am Headset bleibt es funktioniert gut. Kennt jemand das Problem?

Antwort

0

Ihr Code funktioniert gut mit Headset sagt mir, dass die Änderung der Route zu Ihrem Lautsprecher die Verzögerung erzeugt.

OpenSL routet die Audiowiedergabe standardmäßig zum Lautsprecher. Wenn Sie jetzt streamType auf SL_ANDROID_STREAM_VOICE einstellen, leitet es den Ton zu Ihrem Headset. Wenn Sie das Audio zurück zum Lautsprecher leiten, müssen Sie möglicherweise streamType als Standard festlegen und den Player erneut initialisieren.

Ich weiß nicht den genauen Grund, warum Ihr Recorder Rückruf nach 100 ms statt 5 ms ausgelöst wird. Aber egal, ich denke du hast die audio sampling rate of your device richtig eingestellt.

Und es gibt noch etwas zu überprüfen, ist die Puffergröße. Ja 240 ist in Ordnung. Sie können jedoch versuchen, eine niedrigere Größe einzustellen, da Sie den Recorder-Rückruf häufig auslösen müssen.

Hoffe, dass hilft.

+0

Danke für die Antwort, der Recorder feuert alle 5ms, bis ich Audio-Route zu Lautsprecher ändern, so funktioniert der Recorder gut, bis etwas falsch auftritt. Du sagst also, dass ich den Player bei jeder Audio-Route neu initialisieren muss? – VitalyD

+0

Ich habe es nicht verstanden. Es tut uns leid. Was ist wieder dein Problem? –

+0

Das Problem ist, dass, wenn ich die Audio-Route zum Lautsprecher ändere, die entfernte Seite mich nicht hören kann, da mein Rekorder-Callback nicht mehr funktioniert. Es passiert nur, wenn ich den schnellen Pfad verwende, also nur wenn ich native Puffergröße und Abtastrate verwende. – VitalyD

Verwandte Themen