Friday, 18 December 2020

Android : NDK : Superpowered Open failed: ENOENT (No such file or directory) Error

Hello I am trying to play audio.wav from internal storage using Superpowered::AdvancedAudioPlayer but NDK always through the Open failed: ENOENT (No such file or directory) exception. Code:

//-----------------Java---------------------------------------------------------------------------------

 String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/MyFolder/";
        String myfile = path + "filename" + ".mp3";



if (samplerateString == null) samplerateString = "48000";
        if (buffersizeString == null) buffersizeString = "480";
         samplerate = Integer.parseInt(samplerateString);
         buffersize = Integer.parseInt(buffersizeString);

//-----------------Cpp------------------------------------------------------------------------------------

SoundEffects1(samplerate,     // sampling rate
                        buffersize,     // buffer size
                        myfile,        // path to .apk package
                        fileAoffset,    // offset (start) of file A in the APK
                        fileAlength,    // length of file A
                        fileBoffset,    // offset (start) of file B in the APK
                        fileBlength,     // length of file B
                        myfile,
                        myfile
            );

Extern "C"
JNIEXPORT void JNICALL
Java_com_example_superpoweredandroidtest_Dashboard_SoundEffects1(
        JNIEnv *env,
        jobject __unused ob,
        jint samplerate,
        jint buffersize,
        jstring apkPath,
        jint fileAoffset,
        jint fileAlength,
        jint fileBoffset,
        jint fileBlength,
        jstring file1Path,
        jstring file2Path
){
    const char *path = env->GetStringUTFChars(apkPath, JNI_FALSE);

    const char *file1Name = env->GetStringUTFChars(file1Path, JNI_FALSE);
    const char *file2Name = env->GetStringUTFChars(file2Path, JNI_FALSE);


    __android_log_print(ANDROID_LOG_DEBUG, APPNAME, "SoundEffects JNI Constructor %s",file1Name);
    soundEffects = new SoundEffects((unsigned int)samplerate, (unsigned int)buffersize,
                                    path, fileAoffset, fileAlength, fileBoffset, fileBlength,file1Name,file2Name);

 /*   env->ReleaseStringUTFChars(file1Path, file1Name);
    env->ReleaseStringUTFChars(file2Path, file2Name);
 */   env->ReleaseStringUTFChars(apkPath, path);
}



SoundEffects::SoundEffects (
        unsigned int samplerate, // device native sample rate
        unsigned int buffersize, // device native buffer size
        const char *path,        // path to APK package
        int fileAoffset,         // offset of file A in APK
        int fileAlength,         // length of file A
        int fileBoffset,         // offset of file B in APK
        int fileBlength,
        const char *file1Path,
        const char *file2Path
) : activeFx(0), numPlayersLoaded(0), crossFaderPosition(0.0f), volB(0.0f), volA(1.0f * headroom)
{

    initializeSDK();

    playerA = new Superpowered::AdvancedAudioPlayer(samplerate, 0);
    playerB = new Superpowered::AdvancedAudioPlayer(samplerate, 0);
    roll = new Superpowered::Roll(samplerate);
    filter = new Superpowered::Filter(Superpowered::Resonant_Lowpass, samplerate);
    flanger = new Superpowered::Flanger(samplerate);
    filter->resonance = 0.1f;


  //  stereoBuffer = (float *) memalign(16, (buffersize + 16) * sizeof(float) * 2);


  //  __android_log_print(ANDROID_LOG_DEBUG, APPNAME, "file===> %s",path);



//----------------------------------------------------------------------------------------------
    std::fopen(path, "r");

    __android_log_print(ANDROID_LOG_DEBUG, APPNAME, "SoundEffects Cpp Constructor %s",path);
      playerA->open(path);
 //   playerB->open(path);

    playerA->play();
 //-------------------working---------------------------------------------------------------------------



    //     playerA->open(path, fileAoffset, fileAlength);
//        playerB->open(path, fileBoffset, fileBlength);


    // Initialize audio engine and pass callback function.
    output = new SuperpoweredAndroidAudioIO (
            samplerate,                     // device native sample rate
            buffersize,                     // device native buffer size
            false,                          // enableInput
            true,                           // enableOutput
            audioProcessing,                // audio callback function
            this,                           // clientData
            -1,                             // inputStreamType (-1 = default)
            SL_ANDROID_STREAM_MEDIA         // outputStreamType (-1 = default)
    );

}

void SoundEffects::initializeSDK() const {
    Superpowered::Initialize(
            "ExampleLicenseKey-WillExpire-OnNextUpdate",
            false, // enableAudioAnalysis (using SuperpoweredAnalyzer, SuperpoweredLiveAnalyzer, SuperpoweredWaveform or SuperpoweredBandpassFilterbank)
            false, // enableFFTAndFrequencyDomain (using SuperpoweredFrequencyDomain, SuperpoweredFFTComplex, SuperpoweredFFTReal or SuperpoweredPolarFFT)
            false, // enableAudioTimeStretching (using SuperpoweredTimeStretching)
            true,  // enableAudioEffects (using any SuperpoweredFX class)
            true,  // enableAudioPlayerAndDecoder (using SuperpoweredAdvancedAudioPlayer or SuperpoweredDecoder)
            false, // enableCryptographics (using Superpowered::RSAPublicKey, Superpowered::RSAPrivateKey, Superpowered::hasher or Superpowered::AES)
            false  // enableNetworking (using Superpowered::httpRequest)
    );
}


from Android : NDK : Superpowered Open failed: ENOENT (No such file or directory) Error

No comments:

Post a Comment