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的更多相关文章

  1. DNS Tunnel隧道隐蔽通信实验 && 尝试复现特征向量化思维方式检测

    1. DNS隧道简介 DNS隧道技术是指利用 DNS协议建立隐蔽信 道,实现隐蔽数据传输.最早是在2004年 DanKaminsky 在 Defcon大会上发布的基于 NSTX 的 DNS隐蔽 隧道工 ...

  2. Expo大作战(三)--针对已经开发过react native项目开发人员有针对性的介绍了expo,expo的局限性,开发时项目选型注意点等

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  3. HTTP tunnel

    HTTP Tunneling is a technique by which communications performed using various network protocols are ...

  4. 记一次tomcat线程创建异常调优:unable to create new native thread

    测试在进行一次性能测试的时候发现并发300个请求时出现了下面的异常: HTTP Status 500 - Handler processing failed; nested exception is ...

  5. UWP开发之Mvvmlight实践六:MissingMetadataException解决办法(.Net Native下Default.rd.xml配置问题)

    最近完成一款UWP应用,在手机端测试发布版(Release)的时候应用莫名奇妙的强行关闭,而同样的应用包在PC端一点问题都没有,而且Debug版在两个平台都没有问题,唯独手机的Release版有问题. ...

  6. React Native 之 Text的使用

    前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...

  7. React Native环境配置之Windows版本搭建

    接近年底了,回想这一年都做了啥,学习了啥,然后突然发现,这一年买了不少书,看是看了,就没有完整看完的.悲催. 然后,最近项目也不是很紧了,所以抽空学习了H5.自学啃书还是很无趣的,虽然Head Fir ...

  8. 史上最全Windows版本搭建安装React Native环境配置

    史上最全Windows版本搭建安装React Native环境配置 配置过React Native 环境的都知道,在Windows React Native环境配置有很多坑要跳,为了帮助新手快速无误的 ...

  9. [Xamarin] 透過Native Code呼叫 JavaScript function (转帖)

    今天我們來聊聊關於如何使用WebView 中的Javascript 來呼叫 Native Code 的部分 首先,你得先來看看這篇[Xamarin] 使用Webview 來做APP因為這篇文章至少講解 ...

  10. 【腾讯Bugly干货分享】React Native项目实战总结

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/577e16a7640ad7b4682c64a7 “8小时内拼工作,8小时外拼成长 ...

随机推荐

  1. Avalonia下拉可搜索树(TreeComboBox)

    1.需求分析   树形下拉的功能是ComboBox和TreeView的功能结合起来,再结合数据模板来实现这一功能. 2.代码实现   1.创建UserControl集成TreeView控件   2.将 ...

  2. c# 优化代码的一些规则——判断null值得不同写法[六]

    前言 先来看一个例子: 假设updated 是一个委托: if(updated!=null) { updated(); } 请问上面写法在多线程中安全吗?如果不安全会抛出什么异常呢? 正文 上面的答案 ...

  3. python读取文件时,删除重复行并计数

    from collections import Counterwith open('a.txt', 'r+') as f: a = f.readlines() for i in range(len(a ...

  4. CentOS+Django+uWSGI+Celery+Supervisor配置

    目录 背景 目录 安装 配置Supervisor 1.生成配置文件 2. 修改配置文件 3. 创建进程文件 创建 uwsgi.conf 进程文件 创建celery进程文件 启动supervisor 启 ...

  5. 鸿蒙HarmonyOS实战-ArkUI组件(Canvas)

    一.Canvas Canvas组件是一种图形渲染组件,它提供了一个画布(canvas),开发者可以在上面绘制各种图形.文本等.Canvas组件通常用于创建游戏.数据可视化等需要动态绘制图形的应用程序. ...

  6. 嘉楠k210 多线程 点亮流水灯

    from Maix import GPIO from fpioa_manager import fm import _thread import time fm.register(24, fm.fpi ...

  7. C#S7.NET实现西门子PLCDB块数据采集的完整步骤

    前言 本文介绍了如何使用S7.NET库实现对西门子PLC DB块数据的读写,记录了使用计算机仿真,模拟PLC,自至完成测试的详细流程,并重点介绍了在这个过程中的易错点,供参考. 用到的软件: 1.Wi ...

  8. 力扣535(java)-TinyURL的加密与解密(中等)

    题目: TinyURL 是一种 URL 简化服务, 比如:当你输入一个 URL https://leetcode.com/problems/design-tinyurl 时,它将返回一个简化的URL  ...

  9. DB2查找最耗时SQL

    两种方法:db2top和snapshot for dynamic sql 1. db2top -d <dbname>

  10. 第三章-常用的渗透测试工具-(sqlmap)

    常用渗透测试工具 1.sqlmap 支持的数据库:MySQL.Oracle.PostgreSQL.SQL Server.Access.IBM DB2.SQLite.Firebird.Sybase.SA ...