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小时外拼成长 ...
随机推荐
- 知识图谱在RAG中的应用探讨
在这篇文章中,我们来详细探讨知识图谱(KG)在RAG流程中的具体应用场景. 缘起 关于知识图谱在现在的RAG中能发挥出什么样的作用,之前看了360 刘焕勇的一个分享,简单的提了使用知识图谱增强大模型的 ...
- spring cloud 学习笔记 基础工程的构建(一)
前言 学习一下spring cloud,只是过一遍微服务的一些现代化工具,微服务其实一直都存在,去公司的时候发现一个问题,即使有些项目没有用到现代这些什么docker.k8s,其实也是微服务,微服务一 ...
- Scratch3之AI集成 - flappy bird AI版本
AI神秘且有趣,我们一个经典的游戏flappy bird集成AI,实现自训练成长的聪明的笨鸟.先上效果: 初始化的笨鸟拥有分身,每个分身都有自我学习功能,根据自己的移动轨迹和得分情况进行汇总,进行新一 ...
- 实训篇-Html-多媒体标签
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Phoenix 时区问题
最近在测试flink从trino查询数据插入到phoenix5的功能,发现一个时间的问题: 明明插入的时间是 '1940-06-01',查询出来的时间会少一天,同样的 Timestamp 也会自动少掉 ...
- 在RockyLinux 9.2环境中编译CockroachDB 23.1
目的 CockroachDB自 23.1开始,编译模式逐步放弃了Makefile,改用Bazel构建.实际上在23.1代码执行make buildshort 能够成功,但make build应该就会因 ...
- 基于 eBPF 的 Kubernetes 可观测实践
简介: 阿里云可观测团队构建了 kubernetes 统一监控,无侵入式地提供多语言.应用性能黄金指标,支持多种协议,结合 Kubernetes 管控层与网络系统层监控,提供全栈一体式的可观测体验.通 ...
- Docker部署Node应用简单实践
简介: 本文将从零至一,介绍如何在云服务器上通过 Docker 容器运行一个简单的Node应用. 前言 本文将从零至一,介绍如何在云服务器上通过 Docker 容器运行一个简单的Node应用.本文假设 ...
- 直播回顾:准确性提升到 5 秒级,ssar 独创的 load5s 指标有多硬核?| 龙蜥技术
简介: 你还在为分析机器负载高而苦恼?这款 ssar 工具独创 load5s 指标精准定位超硬核. 编者按:本文整理自龙蜥SIG技术周会,作者闻茂泉,阿里云计算平台事业部SRE运维专家,是龙蜥社区跟 ...
- 使用友盟+的APM服务实现对移动端APP的性能监控
简介: 对于信息系统服务,一般我们的重点监控对象都是核心的后端服务,通常会采用一些主流的APM(Application Performance Management)框架进行监控.告警.分析.那么对 ...