Native如何使用Tunnel Mode
mAudioSessionId = AudioSystem::newAudioUniqueId(AUDIO_UNIQUE_ID_USE_SESSION); mHwSync = AudioSystem::getAudioHwSyncForSession((audio_session_t) mAudioSessionId); format->setInt32("feature-tunneled-playback", 1); format->setInt32("audio-hw-sync", mHwSync); audio_attributes_t attr; memset(&attr, 0, sizeof(attr)); attr.usage = AUDIO_USAGE_MEDIA; attr.content_type = AUDIO_CONTENT_TYPE_MUSIC; attr.flags = (audio_flags_mask_t)(AUDIO_FLAG_MUTE_HAPTIC | AUDIO_FLAG_HW_AV_SYNC); size_t frameCount; AudioTrack::getMinFrameCount(&frameCount, AUDIO_STREAM_DEFAULT, sampleRate); ALOGD("frameCount = %d", frameCount); state->mAudioTrack = new AudioTrack(AttributionSourceState()); state->mAudioTrack->set(AUDIO_STREAM_DEFAULT, sampleRate, AUDIO_FORMAT_PCM_16_BIT, audio_channel_out_mask_from_count(channelCount), frameCount * 4, AUDIO_OUTPUT_FLAG_NONE, NULL, NULL, 0, 0, true, (audio_session_t)mAudioSessionId, AudioTrack::TRANSFER_SYNC, NULL, AttributionSourceState(), &attr ); char AvSyncHeader[20]; AvSyncHeader[0] = 0x55; AvSyncHeader[1] = 0x55; AvSyncHeader[2] = 0x00; AvSyncHeader[3] = 0x02; AvSyncHeader[4] = info->mSize >> 24; AvSyncHeader[5] = info->mSize >> 16; AvSyncHeader[6] = info->mSize >> 8; AvSyncHeader[7] = info->mSize; AvSyncHeader[8] = (info->mPresentationTimeUs*1000 >> 32) >> 24; AvSyncHeader[9] = (info->mPresentationTimeUs*1000 >> 32) >> 16; AvSyncHeader[10] = (info->mPresentationTimeUs*1000 >> 32) >> 8; AvSyncHeader[11] = (info->mPresentationTimeUs*1000 >> 32); AvSyncHeader[12] = (info->mPresentationTimeUs*1000 & 0xffffffff) >> 24; AvSyncHeader[13] = (info->mPresentationTimeUs*1000 & 0xffffffff) >> 16; AvSyncHeader[14] = (info->mPresentationTimeUs*1000 & 0xffffffff) >> 8; AvSyncHeader[15] = (info->mPresentationTimeUs*1000 & 0xffffffff); AvSyncHeader[16] = 0x00; AvSyncHeader[17] = 0x00; AvSyncHeader[18] = 0x00; AvSyncHeader[19] = 0x14; ssize_t nbytes1 = state->mAudioTrack->write(AvSyncHeader, 20); ssize_t nbytes = state->mAudioTrack->write( buffer->base() + info->mOffset, copy);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】