[RK3288][Android6.0] Audio播放时的pcm数据dump思路

xiaoxiao2021-02-28  59

Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 其实这块RK已经写了,不过它的思路很好,即通过动态调节property而来决定是否需要dump data,这样的话在不用reboot的情况下就可以拿数据了,适合处理once的bug,其他模块也可以用这个思路。 static ssize_t out_write(struct audio_stream_out *stream, const void* buffer, size_t bytes) { ...... //通过property来控制是否要dump pcm data property_get("media.audio.record", value, NULL); // prop_pcm = atoi(value); //非0的值决定要dump多少数据才停止,单位是M if (prop_pcm > 0) { dump_out_data(buffer, bytes, &prop_pcm); } ...... } dump_out_data(): static void dump_out_data(const void* buffer,size_t bytes, int *size) { ALOGD("dump pcm file."); static FILE* fd; static int offset = 0; if(fd == NULL) { fd=fopen("/data/debug.pcm","wb+"); if(fd == NULL) { ALOGD("DEBUG open /data/debug.pcm error =%d ,errno = %d",fd,errno); offset = 0; } } //写pcm数据 fwrite(buffer,bytes,1,fd); offset += bytes; fflush(fd); //比如size是1,那么就是1M后停止dump数据 if(offset >= (*size)*1024*1024) { *size = 0; fclose(fd); offset = 0; system("setprop media.audio.record 0"); ALOGD("TEST playback pcmfile end"); } }
转载请注明原文地址: https://www.6miu.com/read-42033.html

最新回复(0)