当前位置: 首页 > article >正文

android13 RK3588芯片,录音没有声音

针对安卓apk录音需要添加如下:

diff --git a/tinyalsa_hal/audio_hw.c b/tinyalsa_hal/audio_hw.c
index fb1471e..607ae6f 100755
--- a/tinyalsa_hal/audio_hw.c
+++ b/tinyalsa_hal/audio_hw.c
@@ -2870,6 +2870,27 @@ static void in_apply_ramp(struct stream_in *in, int16_t *buffer, size_t frames)
     in->ramp_frames -= frames;
 }

+static void record_set_volume(void* buffer, size_t bytes, int gain)
+{
+    short *pcm_data = (short *)buffer;
+    int pcm_val;
+    int i;
+
+    for(i=0; i<(bytes/2); i++) {
+        pcm_val = pcm_data[i] * gain;
+        if (pcm_val < abs(32767) ) {
+            pcm_data[i] = pcm_val;
+        }
+        else if (pcm_val > 32767) {
+            pcm_data[i] = 32767;
+        }
+        else if (pcm_val < -32767) {
+            pcm_data[i] = -32767
+        }
+    }
+}
+
 /**
  * @brief in_read
  *
@@ -2930,6 +2951,8 @@ static ssize_t in_read(struct audio_stream_in *stream, void* buffer,
         bytes = frames_rd * audio_stream_in_frame_size(stream);
     }

+    if (in->device & AUDIO_DEVICE_IN_BUILTIN_MIC)
+        record_set_volume(buffer, bytes, 6);
     dump_in_data(buffer, bytes);

添加上声卡的名字:

/hardware/rockchip/audio/tinyalsa_hal$ git diff ./
diff --git a/tinyalsa_hal/audio_hw.c b/tinyalsa_hal/audio_hw.c
index 4b3b614..f5778c2 100644
--- a/tinyalsa_hal/audio_hw.c
+++ b/tinyalsa_hal/audio_hw.c

@@ -307,6 +307,7 @@ struct dev_proc_info SPEAKER_OUT_NAME[] = /* add codes& dai name here*/
     {"rockchiprt5640c", "rt5640-aif1",},
     {"rockchiprt5670c", NULL,},
     {"rockchiprt5672c", NULL,},
+    {"yourcardname", NULL,},
     {NULL, NULL}, /* Note! Must end with NULL, else will cause crash */
 };
@@ -353,6 +354,7 @@ struct dev_proc_info MIC_IN_NAME[] =
     {"rockchiprt5640c", NULL,},
     {"rockchiprt5670c", NULL,},
     {"rockchiprt5672c", NULL,},
+    {"yourcardname", NULL,},
     {NULL, NULL}, /* Note! Must end with NULL, else will cause crash */
 };

http://www.kler.cn/news/315514.html

相关文章:

  • AIGC时代算法工程师的面试秘籍(第二十二式2024.9.2-9.15) |【三年面试五年模拟】
  • SVN笔记-SVN安装
  • 【Hot100】LeetCode—295. 数据流的中位数
  • 五、CAN总线
  • C++:动态内存分配(new、delete 相比 malloc、free的优势)与运算符重载
  • 线程池动态设置线程大小踩坑
  • Hadoop的安装和使用
  • 【JavaScript】数据结构之树
  • Qt 学习第十天:小项目:QListWidget的使用
  • 【基于Spring Boot的汽车租赁系统】
  • 【微信小程序】连续拍照功能实现
  • kafka 消息位移提交几种方式:消息重复消息、消息丢失的关键
  • Docker_基础初识
  • 新能源汽车知识点集萃
  • Python办公自动化教程(003):PDF的加密
  • HarmonyOS Next开发----使用XComponent自定义绘制
  • 【乐企-工具篇】有关乐企发票文件生成- OFD和PDF文件生成
  • 四、JVM原理-4.1、JVM介绍
  • vue中 <template> 与 <template lang=“jade“>的对比,哪个性能好
  • 数据结构之希尔排序
  • 轻代码的概念学习笔记
  • http和https的区别及get和post请求的区别
  • Vue3新组件transition(动画过渡)
  • Java API 之集合框架进阶
  • 软件测试面试题(5)——二面(游戏测试)
  • 【PLW003】设备器材云端管理平台v1.0(SpringBoot+Mybatis+NodeJS+MySQL前后端分离)
  • LeetCode题练习与总结:回文链表--234
  • [JavaEE]———进程、进程的数据结构、进程的调度
  • 【优选算法之二分查找】No.5--- 经典二分查找算法
  • Linux之实战命令03:stat应用实例(三十七)