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);
Native如何使用Tunnel Mode的更多相关文章
- DNS Tunnel隧道隐蔽通信实验 && 尝试复现特征向量化思维方式检测
1. DNS隧道简介 DNS隧道技术是指利用 DNS协议建立隐蔽信 道,实现隐蔽数据传输.最早是在2004年 DanKaminsky 在 Defcon大会上发布的基于 NSTX 的 DNS隐蔽 隧道工 ...
- Expo大作战(三)--针对已经开发过react native项目开发人员有针对性的介绍了expo,expo的局限性,开发时项目选型注意点等
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- HTTP tunnel
HTTP Tunneling is a technique by which communications performed using various network protocols are ...
- 记一次tomcat线程创建异常调优:unable to create new native thread
测试在进行一次性能测试的时候发现并发300个请求时出现了下面的异常: HTTP Status 500 - Handler processing failed; nested exception is ...
- UWP开发之Mvvmlight实践六:MissingMetadataException解决办法(.Net Native下Default.rd.xml配置问题)
最近完成一款UWP应用,在手机端测试发布版(Release)的时候应用莫名奇妙的强行关闭,而同样的应用包在PC端一点问题都没有,而且Debug版在两个平台都没有问题,唯独手机的Release版有问题. ...
- React Native 之 Text的使用
前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...
- React Native环境配置之Windows版本搭建
接近年底了,回想这一年都做了啥,学习了啥,然后突然发现,这一年买了不少书,看是看了,就没有完整看完的.悲催. 然后,最近项目也不是很紧了,所以抽空学习了H5.自学啃书还是很无趣的,虽然Head Fir ...
- 史上最全Windows版本搭建安装React Native环境配置
史上最全Windows版本搭建安装React Native环境配置 配置过React Native 环境的都知道,在Windows React Native环境配置有很多坑要跳,为了帮助新手快速无误的 ...
- [Xamarin] 透過Native Code呼叫 JavaScript function (转帖)
今天我們來聊聊關於如何使用WebView 中的Javascript 來呼叫 Native Code 的部分 首先,你得先來看看這篇[Xamarin] 使用Webview 來做APP因為這篇文章至少講解 ...
- 【腾讯Bugly干货分享】React Native项目实战总结
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/577e16a7640ad7b4682c64a7 “8小时内拼工作,8小时外拼成长 ...
随机推荐
- 元启发式算法库 MEALPY 初体验-遗传算法为例
简介 官网: MealPY官网 开源许可: (GPL) V3 MEALPY简介 官网简介翻译 MEALPY (MEta-heuristic ALgorithms in PYthon) 是一个提供最新自 ...
- HarmonyOS 极客马拉松2023 正式启动,诚邀极客们用键盘码出无限可能!
原文:https://mp.weixin.qq.com/s/p2yIs0rMmDE2BwhzsAtr7A,点击链接查看更多技术内容. 2023年6月15日, HarmonyOS极客马拉松2023开 ...
- Linux0.12内核源码解读(2)-Bootsect.S
大家好,我是呼噜噜,在上一篇文章聊聊x86计算机启动发生的事?我们了解了x86计算机启动过程,MBR.0x7c00是什么?其中当bios引导结束后,操作系统接过计算机的控制权后,发生了哪些事?本文将揭 ...
- 51nod 1268
51nod 1268 基础dfs 题目如下: 给出 N 个正整数组成的数组 A,求能否从中选出若干个,使他们的和 为 K.如果可以,输出:"Yes",否则输出"No&qu ...
- redis 简单整理——哨兵原理[三十一]
前言 简单介绍一下哨兵的原理. 正文 一套合理的监控机制是Sentinel节点判定节点不可达的重要保证,Redis Sentinel通过三个定时监控任务完成对各个节点发现和监控: 1)每隔10秒,每个 ...
- 英文A+B
A+B 题目描述 读入两个小于100的正整数A和B,计算A+B. 需要注意的是:A和B的每一位数字由对应的英文单词给出. 输入描述: 测试输入包含若干测试用例,每个测试用例占一行,格式为"A ...
- Oracle 查询超级慢之buffer sort
查询超级慢之buffer sort 在视图中增加了一个临时表作为一个数据源进行id和名称的转换,没加的时候一秒不到,加了以后14秒,感觉有点问题,于是打开了解释计划看了下,发现这个buffer sor ...
- Flink Sort-Shuffle 实现简介
简介:Sort-Shuffle 使 Flink 在应对大规模批数据处理任务时更加游刃有余 本文介绍 Sort-Shuffle 如何帮助 Flink 在应对大规模批数据处理任务时更加游刃有余.主要内容包 ...
- Flink 和 Pulsar 的批流融合
简介: 如何通过 Apache Pulsar 原生的存储计算分离的架构提供批流融合的基础,以及 Apache Pulsar 如何与 Flink 结合,实现批流一体的计算. 简介:StreamNativ ...
- 数据智能构建管理平台Dataphin V2.9.4.3版本发布
简介: Dataphin发布V2.9.4.3版本升级多项产品能力,该版本在产品功能和用户体验上都进行了优化和提升,旨在为用户提供更完善的产品能力和体验,以加速企业数据中台建设进程. -更多关于数智化转 ...