湖南移动tinytiny免流模式编写是什么

微信实时提问
在线,13小时前提问
在线,18小时前提问
在线,1天前提问
在线,1天前提问
在线,1天前提问
在线,1天前提问
在线,2天前提问
在线,2天前提问
在线,2天前提问
在线,2天前提问
在线,2天前提问
在线,2天前提问
在线,3天前提问
在线,3天前提问
在线,4天前提问
在线,4天前提问
<font color="#小时前
<font color="#小时前
<font color="#小时前
<font color="#小时前
<font color="#小时前
<font color="#小时前
<font color="#小时前
<font color="#小时前
<font color="#小时前
<font color="#小时前
<font color="#小时前
<font color="#天前
<font color="#天前
<font color="#天前
<font color="#天前
<font color="#天前
<font color="#天前
<font color="#天前
<font color="#天前
<font color="#天前
最新通信职位
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
热门通信职位
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
<span style="color: # 人
热词查询:
帖子:4971442
今日:1 (问答:0)
会员:325960
福州市,龙岩市,漳州市,泉州市,莆田市
深圳市,广州市,阳江市,湛江市,东莞市
衡水市,保定市,沧州市,邯郸市,邢台市
徐州市,连云港市,宿迁市
江西省,福建省,浙江省,广东省
昆明市,思茅市,昭通市
河南省,河北省,山西省
文山壮族苗族自治州,玉溪市
保定市,唐山市,秦皇岛市
济南市,青岛市,滨州市,德州市
保定市,廊坊市,张家口市,承德市,济南市
北京市,上海市
山东省,山西省,新疆,江西省,甘肃省
每日推荐资料
上周问答冠军上周专家指数:109
一周发帖冠军一周发帖:262
今日登陆达人连续登录天数:2039
4585人关注 10次回复
4218人关注 6次回复
3887人关注 14次回复
3161人关注 4次回复
3100人关注 2次回复
2563人关注 0次回复
2436人关注 1次回复
2400人关注 2次回复
1988人关注 2次回复
1897人关注 2次回复
初心不变—提升优化用户的测试和分析体验
MSCBSC 官方微信:mscbsc888
关注方法:打开微信的"发现",选择"扫一扫"功能对准左边二维码即可
· 绑定论坛账号就送100威望+5礼品券
· 每日签到,随时随地连续登录,得威望
· 交流平台,有问题与大家一起探讨解决
· 有问题微信反馈,超快捷;
LTE的模世界之走火入模
5月25日本周三晚斗鱼直播,主题:《通信技术学习中的一些软技巧》
个人编写的VOLTE讲课资料,涉及VOLTE无线侧与核心网侧相关知识
volte-MOS原因分析思路
华为2/3/4G一键下载解析MML/XML【智能网络管理助手】
(0)主题:10556 ,贴数:130705
最后发表:
(0)主题:204 ,贴数:6030
最后发表:
(0)主题:38 ,贴数:259
最后发表:
(0)主题:904 ,贴数:67908
最后发表:
分类版主: , ,
(0)主题:34919 ,贴数:671582
最后发表:
(0)主题:14424 ,贴数:146868
最后发表:
(0)主题:6787 ,贴数:123540
最后发表:
(0)主题:33520 ,贴数:374280
最后发表:
(0)主题:1061 ,贴数:18681
最后发表:
(0)主题:5176 ,贴数:127096
最后发表:
(0)主题:752 ,贴数:54530
最后发表:
(0)主题:5309 ,贴数:180375
最后发表:
(1)主题:102262 ,贴数:166724
最后发表:
(0)主题:6389 ,贴数:44170
最后发表:
(0)主题:5038 ,贴数:59725
最后发表:
(0)主题:13149 ,贴数:170261
最后发表:
(0)主题:1605 ,贴数:22616
最后发表:
(0)主题:46861 ,贴数:432624
最后发表:
(0)主题:14128 ,贴数:163539
最后发表:
(0)主题:47945 ,贴数:467600
最后发表:
(0)主题:2254 ,贴数:34473
最后发表:
(0)主题:2244 ,贴数:24275
最后发表:
(0)主题:2644 ,贴数:35929
最后发表:
(0)主题:9834 ,贴数:104421
最后发表:
(0)主题:3126 ,贴数:67506
最后发表:
(0)主题:8355 ,贴数:208904
最后发表:
(0)主题:8052 ,贴数:123551
最后发表:
分类版主: ,
(0)主题:8287 ,贴数:160102
最后发表:
(0)主题:27488 ,贴数:222551
最后发表:
(0)主题:878 ,贴数:22124
最后发表:
(0)主题:10212 ,贴数:130204
最后发表:
(0)主题:2383 ,贴数:20816
最后发表:
(0)主题:6717 ,贴数:27695
最后发表:
分类版主: ,
(0)主题:33384 ,贴数:112650
最后发表:
(0)主题:10982 ,贴数:153522
最后发表:
(0)主题:947 ,贴数:93606
最后发表:
MSCBSC移动通信技术论坛,通信工程师的首选技术交流平台!(本站链接专用文字和logo)
当前时区 GMT+8, 现在时间是
&&&本站统一服务邮箱:
Powered byAndroid Tinyalsa
tinyalsa位于Android的external/tinyalsa位置。
关于tinyalsa,tinyalsa是Google在Android 4.0之后推的基于alsa内核的用户层音频接口。在Android 4.0之前还一直是使用这alsa-lib接口。Google之所以推出tinyalsa,我认为有可能是因为alsa使用了GPL许可证的缘故,也有可能是因为alsa-lib的库过于复杂繁琐大部分功能在Android平台没有实际实用意义却依然占用屈指可数的内存空间。
关于alsa在Android中,在Android 4.0及之后只要你愿意还是可以使用原版alsa的,因为内核中依然是使用alsa的驱动,只需要把alsa的用户层接口alsa-lib移植到源码中即可。
tinyalsa中主要的头文件和数据结构如下,通过ioctrl和内核的alsa驱动交互。
pcm设备,通过tinyalsa的代码和查看下的音频设备节点,可知在Android中一个pcm设备最多可有一个mixer设备&/dev/snd/controlC%u&(一般是controlC0)和32个/dev/snd/pcmC%uD%uc(一般是pcmC0D0c)、/dev/snd/pcmC%uD%u%p(一般是pcmC0D0p),pcm设备中的C代表card,D代表device,c代表capture,p代表playback。当我们新增一个pcm声卡C的值会+1,D还是从0开始,可能只有c(pcmC1D0c 例如麦克风),可能只有p(pcmC1D0p 例如音响),可能同时存在c和p(pcmC1D0c pcmC1D0p )。
tinyalsa的对外提供的头文件就我上图提到的一个&asoundlib.h&,提供最基础的pcm和mixer操作。实现文件为pcm.c(实现pcm api)和mixer.c(实现mixer api)。根据asoundlib.h编写了四个小工具tinypcminfo tinyplay tinycap tinymix,这四个小工具作为命令存放在系统中,可以很方便的使用。tinyasla作为精简版的alsa-lib可能会有人想把它移植到使用,tinyasla依赖的库有libcutils && libutils,如果能把依赖的这两个库的一些方法使用Linux接口实现那么剩下的问题应该不大了吧,这个仅仅是我的猜想。 tinypcminfo的实现文件tinypcminfo.c (查看pcm设备能力) tinyplay的实现文件tinyplay.c(使用pcm设备播放wav格式的音频文件) tinycap的实现文件tinycap.c(使用pcm设备采集pcm格式的码流,并保存为wav格式的文件) tinymix的实现文件tinymix.c(对pcm设备的控制,包括音量调节、设备切换) 这几个命令使用时可以先使用tinypcminfo查看pcm设备的能力,要不当我们使用其他三个命令时使用了不合理的配置会出现parameter invalid的错误。
/* 对pcm设备节点的操作 */struct pcm *pcm_open(unsigned int card, unsigned int device, unsigned int flags, struct pcm_config *config);int pcm_close(struct pcm *pcm);int pcm_is_ready(struct pcm *pcm); /* 获取pcm设备的能力 */struct pcm_params *pcm_params_get(unsigned int card, unsigned int device, unsigned int flags);void pcm_params_free(struct pcm_params *pcm_params);unsigned int pcm_params_get_min(struct pcm_params *pcm_params, enum pcm_param param);unsigned int pcm_params_get_max(struct pcm_params *pcm_params, enum pcm_param param); /* 配置pcm设备capture和playback的规格 */int pcm_get_config(struct pcm *pcm, struct pcm_config *config);int pcm_set_config(struct pcm *pcm, struct pcm_config *config); /* 返回调用tinyalsa最后的错误信息 */const char *pcm_get_error(struct pcm *pcm); /* 设置pcm设备采集和播放的位数,位数越高越接近真实声音 */unsigned int pcm_format_to_bits(enum pcm_format format); /* pcm设备的内置缓冲之间大小、帧数、时间的转换 */unsigned int pcm_get_buffer_size(struct pcm *pcm);unsigned int pcm_frames_to_bytes(struct pcm *pcm, unsigned int frames);unsigned int pcm_bytes_to_frames(struct pcm *pcm, unsigned int bytes);unsigned int pcm_get_latency(struct pcm *pcm); // in ms /* 返回下一帧的有效帧指针和该帧时间戳,时间戳有CLOCK_MONOTONIC和CLOCK_REALTIME可选,里面使用的是CLOCK_REALTIME *//* 我认为应该需要两个时间戳,一个用于播放的时间戳(CLOCK_MONOTONIC)不受系统时间的影响,一个用于记录当前音频采集的时间戳(CLOCK_REALTIME) */int pcm_get_htimestamp(struct pcm *pcm, unsigned int *avail, struct timespec *tstamp); /* 通过FIFO把数据写入硬件用于playback或者从硬件中读取capture数据 */int pcm_write(struct pcm *pcm, const void *data, unsigned int count);int pcm_read(struct pcm *pcm, void *data, unsigned int count); /* 这是一个可选的和hardware通信的方式。 */int pcm_mmap_write(struct pcm *pcm, const void *data, unsigned int count);int pcm_mmap_read(struct pcm *pcm, void *data, unsigned int count);int pcm_mmap_begin(struct pcm *pcm, void **areas, unsigned int *offset, unsigned int *frames);int pcm_mmap_commit(struct pcm *pcm, unsigned int offset, unsigned int frames);int pcm_start(struct pcm *pcm);int pcm_stop(struct pcm *pcm);int pcm_wait(struct pcm *pcm, int timeout);int pcm_set_avail_min(struct pcm *pcm, int avail_min);
对于pcm设备的操作只需要注意所操作的设备是否存在,以及设备的能力问题不要设置设备所不能及的能力设备就可以正常工作了,其实就是需要注意channels、rate、format、period_size和period_count。
/* 对mixer设备的操作 */struct mixer *mixer_open(unsigned int card);void mixer_close(struct mixer *mixer); /* 获取mixer设备信息name */const char *mixer_get_name(struct mixer *mixer); /* 获取mixer设备的控制句柄 struct mixer_ctl */unsigned int mixer_get_num_ctls(struct mixer *mixer);struct mixer_ctl *mixer_get_ctl(struct mixer *mixer, unsigned int id);struct mixer_ctl *mixer_get_ctl_by_name(struct mixer *mixer, const char *name); /* 取mixer设备的控制信息 */const char *mixer_ctl_get_name(struct mixer_ctl *ctl);enum mixer_ctl_type mixer_ctl_get_type(struct mixer_ctl *ctl);const char *mixer_ctl_get_type_string(struct mixer_ctl *ctl);unsigned int mixer_ctl_get_num_values(struct mixer_ctl *ctl);unsigned int mixer_ctl_get_num_enums(struct mixer_ctl *ctl);const char *mixer_ctl_get_enum_string(struct mixer_ctl *ctl, unsigned int enum_id); /* Some sound cards update their controls due to external events, * such as HDMI EDID byte data changing when an HDMI cable is * connected. This API allows the count of elements to be updated. */void mixer_ctl_update(struct mixer_ctl *ctl); /* 设置和获取可控制的信息,方式有比例、数组、范围、固定值 *//* id通过mixer_get_num_ctls获得 */int mixer_ctl_get_percent(struct mixer_ctl *ctl, unsigned int id);int mixer_ctl_set_percent(struct mixer_ctl *ctl, unsigned int id, int percent); int mixer_ctl_get_value(struct mixer_ctl *ctl, unsigned int id);int mixer_ctl_get_array(struct mixer_ctl *ctl, void *array, size_t count);int mixer_ctl_set_value(struct mixer_ctl *ctl, unsigned int id, int value);int mixer_ctl_set_array(struct mixer_ctl *ctl, const void *array, size_t count);int mixer_ctl_set_enum_by_string(struct mixer_ctl *ctl, const char *string); int mixer_ctl_get_range_min(struct mixer_ctl *ctl);int mixer_ctl_get_range_max(struct mixer_ctl *ctl);
扩展: 1. 什么是pcm http://en.wikipedia.org/wiki/Pulse-code_modulation 2. 音频采样 /link?url=b9CLvaPgU4A0e0X3y5cLU4ADOI0eBuUeCys05m5unE7G-0eR2sQMBVhNxkCEvOf-Ot2CLAw2wWX5ZLhqi3D2t_#1
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'TinyBuilder-让移动开发更简单
TinyBuilder 为开发高性能 App 而生
TinyBuilder 让移动开发更快速、简单。开发者都能快速上手、所有设备都可以、所有项目都适用。
一次开发,多平台,多款终端,随处运行。TinyBuilder 与生俱来的跨平台特质,用同一份代码完美解决了不同平台、不同终端之间的适配问题,极大降低了开发者在 APP 跨平台、跨设备适配上的门槛和成本。
TinyBuilder 融合了 web 应用和原生应用的优势,自主研发的解析、渲染引擎,支持更多硬件,更容易扩展,交互更流畅,界面更优质,全方位细节把控,精工细作的同时,打造无与伦比的用户体验。
基于 TinyBuilder 开发的 APP
这些项目都是使用 TinyBuilder 平台开发的各个行业的优质项目。
针对不同企业状况,为客户提供移动端的专业开发服务。从需求分析、交互设计、UI设计、产品开发、软件测试、产品交互,我们建立了严谨的实施流程,并且提供完善、高效的服务体系。
TinyBuilder 使你能够使用基于 JavaScript 和 Web 一致的开发体验在本地平台上构建世界一流的应用程序体验。TinyBuilder 使开发人员重点放在所有开发人员关心的平台的开发效率上。
我们基于 TinyBuilder 平台,为各企业客户提供卓越的服务,帮助客户快速构建稳定、安全的产品,提升企业的竞争力。
杭州长亮金融信息服务有限公司
杭州市滨江区阡陌路智慧e谷A幢七楼 联系电话:1 邮箱
& HZCL .Co,LTD.All Rights Reserved. &阅读:1077回复:83
跳点超低,四川移动模式tiny
发布于: 00:19
亲测模式跳点低,好不好,用了就知道。
https由独醉编写,模式由蜗牛编写。支持原创
附件名称/大小
<span class="" id="J_attach_count_3
最新喜欢:
女人不花,何来貌美如花。
八云应用推荐
云币1117枚
发布于: 00:19
有没有电信的
400 || this.offsetHeight>400){if(this.offsetWidth/400 > this.offsetHeight/400){this.width=400;}else{this.height=400;}}" style="max-width:400max-height:400" onclick="if(this.parentNode.tagName!='A'&&this.width>screen.width-461) window.open(this.src);" />
发布于: 00:19
下载之后去除.zip
女人不花,何来貌美如花。
发布于: 00:19
一楼顶顶顶!!
云币3880枚
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 00:21
云币15833枚
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 00:25
感谢分享。
红尘喧嚷,我只做无言的低眉人。窗外风起不息,林木哗哗扰人,只当是春水潺潺,听与不听之间,寸心不惊。http://filemain.bybbs.org/attachment/1602/thread/32_af03a82ad1.gif
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 00:26
能在线视频啊?
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 00:26
云币10992枚
发布于: 00:31
感谢分享呢
人生如棋,我便做那颗卒,虽然行动缓慢,可你何曾见我后退~
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 00:37
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 00:37
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 00:38
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 00:38
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 00:38
云币2186枚
<span class="lou J_floor_copy" title="复制此楼地址"
data-hash="read_楼#
发布于: 00:47
四川可免,广东的有没有?
400 || this.offsetHeight>400){if(this.offsetWidth/400 > this.offsetHeight/400){this.width=400;}else{this.height=400;}}" style="max-width:400max-height:400" onclick="if(this.parentNode.tagName!='A'&&this.width>screen.width-461) window.open(this.src);" />
您需要登录后才可以回帖,&或者&
本站活跃用户
Powered by}

我要回帖

更多关于 tiny免流联通模式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信