audio
aningxiaoxixi
此人很聪明,一看就会,所以不写
展开
-
ffplay音视频同步之视频同步音频
对于音视频同步是有三种方案的,一种是以外部时钟为基准,音频时钟和视频时钟在播放时都以外部时钟为参考系,谁快了就等待,慢了就丢帧;第二种是以视频时钟为基准,音频时钟在播放的过程中参考视频时钟;第三种是以音频时钟为基准,视频时钟在播放的过程中参考音频时钟。由于人体器官对视觉的敏感读没有听觉的灵敏度高,因此为了更好的体验,在音视频同步时一般都是以音频时钟为基准的方案。那是不是说其他两种方案没有用处呢?也不是的,比如说一个只有视频没有音频的的视频文件,在播放的时候就需要以视频为基准了。转载 2023-08-20 23:25:52 · 85 阅读 · 0 评论 -
SDP协议是什么,详解SDP协议
SDP(Session Description Protocol)是一种会话描述协议,用于描述多媒体会话的参数。它是一种文本协议,通常用于VoIP(Voice over Internet Protocol)和视频会议等应用中。SDP协议定义了一种标准的格式,用于描述会话的各种参数,包括媒体类型、媒体格式、媒体地址等。SDP协议最初由IETF(Internet Engineering Task Force)在RFC 2327中定义,后来又在RFC 4566中进行了更新和扩展。原创 2023-08-17 08:45:46 · 391 阅读 · 0 评论 -
RTSP、RTMP、HLS流媒体协议的区别与联系
https://zhuanlan.zhihu.com/p/546452574https://blog.csdn.net/m0_60259116/article/details/124729523转载 2023-06-26 08:37:06 · 245 阅读 · 0 评论 -
声音卡顿与噪声
当cpu负载过高时,系统可能无法及时处理音频数据,导致声音卡顿。原创 2023-05-23 08:10:10 · 560 阅读 · 0 评论 -
linux kernel switch driver(android headset device detection) 例如(耳机)
android native层的input flinger会去读这个event,读到后往android java层notify,notify给InputManagerService/WiredAccessoryManager,WiredAccessoryManager在处理这个msg,比如当收到的msg表示有耳机接入时,会将外放mute掉。上面的CallVoidMethod调用就是native层call java层的函数,call的对应的java层的函数是InputManagerService类中的方法。.转载 2022-09-01 00:24:31 · 532 阅读 · 0 评论 -
MP4格式解析
文件类型不太常见,则用ffprobe 显示。工具 mp4info。原创 2022-08-26 08:10:41 · 962 阅读 · 0 评论 -
android AV流程
音视频原创 2022-08-15 20:48:56 · 6142 阅读 · 0 评论 -
MP3格式音频文件结构解析
MP3简介MP3简介MP3的全称是MPEG Audio Layer3,它是一种高效的计算机音频编码方案,它以较大的压缩比将音频文件转换成较小的扩展名为.MP3的文件,基本保持原文件的音质。MP3是ISO/MPEG标准的一部分,ISO/MPEG标准描述了使用高性能感知编码方案的音频压缩,此标准一直在不断更新以满足“质高量小”的追求,现已形成MPEGLayer1、Layer2、Layer3三个音频编码解码方案。......转载 2022-08-14 11:07:02 · 6773 阅读 · 1 评论 -
安卓audio外接设备连接,大致流程图
audiomanager原创 2022-06-28 22:59:55 · 642 阅读 · 0 评论 -
android audio volume 知识点
volume原创 2022-06-26 13:49:21 · 949 阅读 · 0 评论 -
audiosever 基础知识点
audio 零散知识点原创 2022-06-23 23:54:10 · 1165 阅读 · 0 评论 -
hdmi基础知识
hdmi原创 2022-06-18 07:41:44 · 641 阅读 · 0 评论 -
安卓audio init进程与audiosever进程
安卓 audio原创 2022-06-13 23:00:18 · 247 阅读 · 0 评论 -
安卓音频定位手段
【ALSA音频】一、音频定位手段原创 2022-03-23 23:32:50 · 240 阅读 · 0 评论 -
android 音量调整
1 流程图2 audio_policy_volumes.xml阐述了 流跟device 的音量范围【Android Audio】5、EngineBase加载音量曲线和策略 【基于Android Q 】原创 2022-04-25 00:01:44 · 3380 阅读 · 0 评论 -
android 有线耳机插拔
framework 流程log打印logcat |grep -E “WiredAccessoryManager|AudioPolicy|AudioService”04-23 11:42:07.280 1557 1557 I SystemServer: StartAudioService //strat SystemServer04-23 11:42:07.280 1557 1557 I SystemServiceManag原创 2022-04-23 20:10:39 · 3266 阅读 · 0 评论 -
安卓 device 编号
分为 c++ 层 跟 java 层java 层在 frameworks/base/media/java/android/media/AudioSystem.java 里面 public static final int DEVICE_NONE = 0x0; // reserved bits public static final int DEVICE_BIT_IN = 0x80000000; public static final int DEVICE_BIT_DEFAU原创 2022-04-23 10:49:52 · 325 阅读 · 0 评论 -
pcm跟i2s区别
I2S和PCM区别PCM接口详细介绍–TDM方式常见的音频接口PCM:传输单声道数据,比如麦克风;IIS:传输双声道数据,比如喇叭;TDM:传输两个以上声道数据,同时区别于IIS特定格式。原创 2022-03-24 00:40:53 · 1303 阅读 · 0 评论 -
MediaPlayer nuplayer audioflinger
MediaPlayer::MediaPlayer(){ ALOGV("constructor"); mListener = NULL; mCookie = NULL; mStreamType = AUDIO_STREAM_MUSIC; mAudioAttributesParcel = NULL; mCurrentPosition = -1; mSeekPosition = -1; mCurrentState = MEDIA_PLAYER_ID原创 2022-02-22 23:35:56 · 115 阅读 · 0 评论 -
安卓 audio stream 类型
1offloadThread线程的创建,其实依赖于audio_policy.conf中是否有配置,如果有配置,则才会有创建该线程的逻辑。2offload跟mixer线程的区别,其实主要是基本上没有mixer的处理,直接绕过audioflinger的采样率、format、采样精度、通道数等的转变,所以其实offload的逻辑是更简单的。参考高通audio offload学习Android智能手机中各种音频场景下的audio data path...原创 2022-02-20 23:08:08 · 1367 阅读 · 0 评论 -
Android Audio代码分析2 - 函数getMinBufferSize
Android Audio代码分析2 - 函数getMinBufferSize原创 2021-12-22 17:21:38 · 1501 阅读 · 0 评论 -
audio 音量
mastervolume 是针对所有的声音执行 先执行 audioflinger 的初始化,会给mastervolume mastermute 还有 stream的 volume mute初始化。然后 执行 audioflinger 的 loadhwmodule查看 setstreamvolume 是否是对 mstreamtypes!!!!!首先 audiotrack 使用 setvolume 左右声道数据 放到 语音 buf的头部...原创 2021-03-10 23:39:13 · 186 阅读 · 0 评论 -
hal 层总结
1 一旦 没有 stream 录音 或者播放 那么 mOutputDevices mInputDevice 就是 置于 0,同时输入输出设备关闭2 mic模拟增益步长是6,如果调增益时需要到 7,则模拟增益 5格,数字增益 1个原创 2021-03-04 20:34:46 · 229 阅读 · 1 评论 -
openOutput
AudioFlinger::openOutputAudioFlinger::openOutput_lAudioHwDevice::openOutputStreamAudioStreamOut::open厂家的类 openOutputStream原创 2021-01-11 19:53:57 · 285 阅读 · 0 评论 -
audio 临时总结
audioflinger 如何连接 hal1 audio_hw_hal.cpp : audio_hw_device 这个文件塑造出 audio_hw_device2struct legacy_audio_device {struct audio_hw_device device; 向上提供struct AudioHardwareInterface *hwif; 向下提供};3 audio_hw_hal.cpp 文件中 legacy_adev_open 函数里面有原创 2021-01-11 00:30:07 · 682 阅读 · 1 评论 -
audio的Framework层到hal 如何调用(以setparameters为例)
首先查看AudioManager之setParameters从应用到hal流程分析 android6.0看到最后两个格:audio_hw_device_t ->set_parameters() 是上层 调用hal层的接口导致 下层***audio_hw->adev_set_parameters()*** 执行。他们之间的联系,通过legacy_adev_open 建立联系。legacy_adev_open 是干什么的?1 首先链接 audio_hw_device_t(h原创 2020-12-15 14:25:47 · 1612 阅读 · 0 评论 -
alsa的新理解
1 snd_open 开始分析从 snd_minors[ ]中取出新的file_operations2 snd_register_device_for_dev 通过这个函数 构造出 snd_minors[ ] 这个数组3 一个函数通过 snd_register_device_for_dev 构造出了,控制设备4 一个函数通过 snd_register_device_for_dev 构造出了 pcm设备这个函数会 创建 一个输出设备,一个输入设备......原创 2020-12-09 23:55:28 · 226 阅读 · 0 评论 -
音量大小设置
关键词1 音频流类型2 输出设备3 设置音量大小4 设备切换路由Android杂谈:音频调试小计原创 2020-11-30 10:02:33 · 300 阅读 · 0 评论 -
asoc 知识点
triggertrigger的执行会在上层的alsalib调用write的函数触发用户层的write到内核里面都是通过ioctl来做的,这里面会触发trigger函数的执行,等trigger执行完以后,才会真正调用函数把用户层的东西copy到dma分配的空间;tinyalsa1 hal 库 文件操作硬件是依赖 tinyalsa 里面的 pcm.c 里面的函数的2 如何控制 可以参考 里面的 tinymix.c tinycap.c tinycap.c 可以了解到 函原创 2020-11-24 18:30:42 · 352 阅读 · 0 评论 -
alsa DMA 切入点
描述 DMA 的重点参数snd_pcm_substream是pcm中间层的核心,绝大部分任务都是在substream中处理,尤其是他的ops(snd_pcm_ops)字段,许多user空间的应用程序通过alsa-lib对驱动程序的请求都是由该结构中的函数处理。它的runtime字段则指向snd_pcm_runtime结构,snd_pcm_runtime记录这substream的一些重要的软件和硬件运行环境和参数。在声卡的hw_params阶段,snd_soc_platform_driver结构的op原创 2020-11-15 21:37:58 · 620 阅读 · 0 评论 -
pcm_new 调用
pcm_new (一般指的是 platfrom 中的参数段)在这一句被调用ret = component->driver->pcm_new(rtd)从下到上一次被调用soc_new_pcmsoc_probe_link_daisstatic int snd_soc_instantiate_cardsnd_soc_register_card从中可知 pcm_new 在card 初始话的时候被调用...原创 2020-11-15 11:57:31 · 218 阅读 · 0 评论 -
hw_params 被调用流程
索引 ->hw_paramserr = substream->ops->hw_params(substream, params);被调用 snd_pcm_hw_params上面又被snd_pcm_hw_params_usersnd_pcm_kernel_ioctlsnd_pcm_hw_params_old_usersnd_pcm_hw_params_user 会被 pcm_open调用[RK3288][Android6.0] 调试笔记 — 修改录音采样率提示报错问题原创 2020-11-15 11:35:45 · 875 阅读 · 0 评论 -
snd_soc_platform 之 ops:snd_pcm_ops 分析
snd_pcm_ops注意其中的 音频数据流向图 就是 dpam 中 流向图原创 2020-11-14 22:12:51 · 453 阅读 · 0 评论 -
kcontrol 总结
kcontrol 表示一种功能 控制一个或多个寄存器tinymix 可以看出 kcontrol 名字对应的 序号如何使用kcontrol首先 open 打开 dev/snd 里面 控制节点所有的 kcontrol 都会经过 tinyalsa 里面的 control.c 文件中的 snd_ctl_ioctlsnd_soc_dapm_path不需要自己定义,会在注册snd_soc_dapm_route时动态地生成。...原创 2020-11-11 00:04:04 · 745 阅读 · 1 评论 -
alsa 启动
alsa声卡分析alsa-utils调用过程(一)-tinyplayhttps://www.cnblogs.com/linhaostudy/archive/2018/03/07/8515277.htmlAndroid tinyplay与tinycap流程https://blog.csdn.net/u010164190/article/details/103396270PCM的open流程https://blog.csdn.net/qq_30295609/article/details/106497原创 2020-11-02 00:08:09 · 317 阅读 · 0 评论 -
Android中的PCM设备
1 pcm 文件命名2 tinyalsa 函数3 使用场景(USECASE)与 PCM文件 相关的 xml文件Android中的PCM设备原创 2020-10-28 21:56:26 · 289 阅读 · 0 评论 -
asoc总结 2
1 因为 snd_soc_register_codec snd_soc_register_dai 函数都需要 platform_device 相关数据。所以 在probe 函数中调用codec注意 :1.codec_name = “wm8976-codec”, // 对应驱动 codec 文件.codec_dai_name = “wm8976-iis”, // 对应驱动 codec 文件.cpu_dai_name = “s3c2440-iis”,2原创 2020-10-21 23:49:55 · 236 阅读 · 0 评论 -
asoc 总结 1
ASoC框架分为3部分:platform(用来描述芯片的DAI接口,负责数据传输):含有 DMADAI:snd_soc_dai_driver,用来表示支持哪些格式数据,提供设置格式的函数,启动数据传输数据传输:snd_soc_platform_drivercodec (用来描述音频编解码芯片,含有2部分:DAI接口,控制接口):DAI:snd_soc_dai_driver,用来表示支持哪些格式数据,提供设置格式的函数控制接口:snd_soc_codec_driver读写芯片的原创 2020-10-20 22:46:49 · 315 阅读 · 0 评论 -
2020-10-06
1 线程是内核切换的基本单元2 ps -T 查看线程3 ps 查看 进程pid x然后 cd /proc/x/task4 top 可以查看资源使用率使用 while 会占用大量 cpu资源5 sem 信号量 实现 同步6 app通过设置 audio track 的 volume 单独改变自己 app的音量,而不影响到其他app7 set_master_volume 应该是是对 codec 进行音量的设置set_master_mute 应该原创 2020-10-06 14:25:34 · 124 阅读 · 1 评论 -
切换声音通道流程
5.4 切换声音通道流程A. 在驱动程序中切换:比如: 插上耳麦发生中断, 在中断处理程序中设置声卡让声音从耳机中输出B. 把输出通道的选择权交给android系统驱动程序上报音频拔插事件,该事件为某个device插入或拔出,Android系统需要切换声音通道,过程为(核心文件为frameworks/av/services/audiopolicy/AudioPolicyManager.cpp):(核心函数为 setDeviceConnectionState)a. checkOutputsF原创 2020-09-29 22:50:28 · 1030 阅读 · 0 评论