zoukankan      html  css  js  c++  java
  • java layer调用native层的android_media_AudioTrack_get_min_buff_size()确定audio track buffer的min size

    java layer调用native层的android_media_AudioTrack_get_min_buff_size()确定audio track buffer的min size,再根据这个size创建AudioTrack

    // ----------------------------------------------------------------------------
    // returns the minimum required size for the successful creation of a streaming AudioTrack
    // returns -1 if there was an error querying the hardware.
    static jint android_media_AudioTrack_get_min_buff_size(JNIEnv *env,  jobject thiz,
        jint sampleRateInHertz, jint channelCount, jint audioFormat) {
    
        size_t frameCount;
        const status_t status = AudioTrack::getMinFrameCount(&frameCount, AUDIO_STREAM_DEFAULT,
                sampleRateInHertz);
        if (status != NO_ERROR) {
            ALOGE("AudioTrack::getMinFrameCount() for sample rate %d failed with status %d",
                    sampleRateInHertz, status);
            return -1;
        }
        const audio_format_t format = audioFormatToNative(audioFormat);
        if (audio_has_proportional_frames(format)) {
            const size_t bytesPerSample = audio_bytes_per_sample(format);
            return frameCount * channelCount * bytesPerSample;
        } else {
            return frameCount;
        }
    }
    

      

  • 相关阅读:
    函数和指针
    SQL Server 2005 存储过程
    位数组
    C的名字空间
    C奇特的声明
    位字段
    Git忽略规则
    常用C库简介
    《SQL Server 2005 编程入门经典》第一到十二章
    Linus:利用二级指针删除单向链表
  • 原文地址:https://www.cnblogs.com/aspirs/p/11482000.html
Copyright © 2011-2022 走看看