You've already forked android_translation_layer
mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-10-27 11:48:10 -07:00
api-impl-jni/audio/android_media_AudioTrack.c: make this stuff noop by default
this particular implementation never worked particularly great, and thanks to hardcoding could cause more harm then good. export `HAX_AUDIOTRACK_PCM_DEVICE=sysdefault:CARD=Generic_1` to restore previous behavior TODO: use libOpenSLES to implement this maybe? we have to have it anyway...
This commit is contained in:
@@ -9,7 +9,8 @@
|
|||||||
|
|
||||||
#include "../generated_headers/android_media_AudioTrack.h"
|
#include "../generated_headers/android_media_AudioTrack.h"
|
||||||
|
|
||||||
#define PCM_DEVICE "sysdefault:CARD=Generic_1"
|
//#define PCM_DEVICE "sysdefault:CARD=Generic_1"
|
||||||
|
#define PCM_DEVICE getenv("HAX_AUDIOTRACK_PCM_DEVICE")
|
||||||
|
|
||||||
void helper_hw_params_init(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *params, unsigned int rate, unsigned int channels, snd_pcm_format_t format)
|
void helper_hw_params_init(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *params, unsigned int rate, unsigned int channels, snd_pcm_format_t format)
|
||||||
{
|
{
|
||||||
@@ -36,6 +37,8 @@ void helper_hw_params_init(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *params, u
|
|||||||
|
|
||||||
JNIEXPORT void JNICALL Java_android_media_AudioTrack_native_1constructor(JNIEnv *env, jobject this, jint streamType, jint rate, jint channels, jint audioFormat, jint buffer_size, jint mode)
|
JNIEXPORT void JNICALL Java_android_media_AudioTrack_native_1constructor(JNIEnv *env, jobject this, jint streamType, jint rate, jint channels, jint audioFormat, jint buffer_size, jint mode)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
snd_pcm_t *pcm_handle;
|
snd_pcm_t *pcm_handle;
|
||||||
snd_pcm_hw_params_t *params;
|
snd_pcm_hw_params_t *params;
|
||||||
|
|
||||||
@@ -44,6 +47,9 @@ JNIEXPORT void JNICALL Java_android_media_AudioTrack_native_1constructor(JNIEnv
|
|||||||
|
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
if(!PCM_DEVICE)
|
||||||
|
return; // STUB
|
||||||
|
|
||||||
/* Open the PCM device in playback mode */
|
/* Open the PCM device in playback mode */
|
||||||
ret = snd_pcm_open(&pcm_handle, PCM_DEVICE, SND_PCM_STREAM_PLAYBACK, 0);
|
ret = snd_pcm_open(&pcm_handle, PCM_DEVICE, SND_PCM_STREAM_PLAYBACK, 0);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
@@ -127,6 +133,9 @@ JNIEXPORT jint JNICALL Java_android_media_AudioTrack_getMinBufferSize(JNIEnv *en
|
|||||||
}
|
}
|
||||||
// ---
|
// ---
|
||||||
|
|
||||||
|
if(!PCM_DEVICE)
|
||||||
|
return 256; // STUB
|
||||||
|
|
||||||
ret = snd_pcm_open(&pcm_handle, PCM_DEVICE, SND_PCM_STREAM_PLAYBACK, 0);
|
ret = snd_pcm_open(&pcm_handle, PCM_DEVICE, SND_PCM_STREAM_PLAYBACK, 0);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
printf("Error calling snd_pcm_open: %s\n", snd_strerror(ret));
|
printf("Error calling snd_pcm_open: %s\n", snd_strerror(ret));
|
||||||
@@ -160,6 +169,9 @@ void periodic_update_callback(snd_async_handler_t *pcm_callback)
|
|||||||
int getenv_ret;
|
int getenv_ret;
|
||||||
int attach_ret = -1;
|
int attach_ret = -1;
|
||||||
|
|
||||||
|
if(!PCM_DEVICE)
|
||||||
|
return; // STUB
|
||||||
|
|
||||||
// printf("periodic_update_callback called!\n");
|
// printf("periodic_update_callback called!\n");
|
||||||
|
|
||||||
JNIEnv *env;
|
JNIEnv *env;
|
||||||
@@ -221,6 +233,9 @@ JNIEXPORT jint JNICALL Java_android_media_AudioTrack_write(JNIEnv *env, jobject
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
if(!PCM_DEVICE)
|
||||||
|
return 0; // STUB
|
||||||
|
|
||||||
jint channels = _GET_INT_FIELD(this, "channels");
|
jint channels = _GET_INT_FIELD(this, "channels");
|
||||||
snd_pcm_t *pcm_handle = _PTR(_GET_LONG_FIELD(this, "pcm_handle"));
|
snd_pcm_t *pcm_handle = _PTR(_GET_LONG_FIELD(this, "pcm_handle"));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user