您尚未登录。

楼主 #1 2021-03-12 12:15:34

夜空中最亮的灯
会员
注册时间: 2020-05-14
已发帖子: 26
积分: 90.5

求助!v3s移植infones游戏模拟器后出现声音滞后问题

v3s移植infones游戏模拟器后出现声音滞后问题,声音大约滞后5秒钟左右。哪位知道如何解决呢?

IMG_20210312_110502.jpgIMG_20210312_110507.jpg

离线

#2 2021-03-12 13:37:42

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

Re: 求助!v3s移植infones游戏模拟器后出现声音滞后问题

是不是v3s linux驱动的问题?之前看论坛帖子好像有相关反馈

离线

#3 2021-03-12 13:42:09

raspberryman
会员
注册时间: 2019-12-27
已发帖子: 503
积分: 465

Re: 求助!v3s移植infones游戏模拟器后出现声音滞后问题

微凉VeiLiang 说:

是不是v3s linux驱动的问题?之前看论坛帖子好像有相关反馈

那个延时500ms左右,不会延迟这么久

离线

楼主 #4 2021-03-12 14:02:01

夜空中最亮的灯
会员
注册时间: 2020-05-14
已发帖子: 26
积分: 90.5

Re: 求助!v3s移植infones游戏模拟器后出现声音滞后问题

raspberryman 说:
微凉VeiLiang 说:

是不是v3s linux驱动的问题?之前看论坛帖子好像有相关反馈

那个延时500ms左右,不会延迟这么久

有什么解决办法吗?困扰很久了。。

离线

楼主 #5 2021-03-12 14:23:58

夜空中最亮的灯
会员
注册时间: 2020-05-14
已发帖子: 26
积分: 90.5

Re: 求助!v3s移植infones游戏模拟器后出现声音滞后问题

微凉VeiLiang 说:

是不是v3s linux驱动的问题?之前看论坛帖子好像有相关反馈

驱动那个帖子我看了,好像不管用。我看您也搞过nes移植,您那个是否有声音延迟问题呢?

离线

#6 2021-03-12 20:44:31

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 627
积分: 522
个人网站

Re: 求助!v3s移植infones游戏模拟器后出现声音滞后问题

夜空中最亮的灯 说:
微凉VeiLiang 说:

是不是v3s linux驱动的问题?之前看论坛帖子好像有相关反馈

驱动那个帖子我看了,好像不管用。我看您也搞过nes移植,您那个是否有声音延迟问题呢?

恩,我移植的Infones没有发现有声音延迟的问题。就是声音上有些难听,还有就是像热血格斗的打斗的声音没有,跳跃的声音很怪

离线

楼主 #7 2021-06-04 15:43:56

夜空中最亮的灯
会员
注册时间: 2020-05-14
已发帖子: 26
积分: 90.5

Re: 求助!v3s移植infones游戏模拟器后出现声音滞后问题

@微凉VeiLiang
你好,你用的内核是bsp内核还是主线内核?

离线

#8 2021-12-13 14:32:39

twzy
会员
注册时间: 2021-04-16
已发帖子: 204
积分: 351.5
个人网站

Re: 求助!v3s移植infones游戏模拟器后出现声音滞后问题

请问声音滞后的问题解决了吗,我也遇到这个问题了,但是我在f1c200s那个小板上面移植的就没问题

离线

#9 2021-12-24 10:16:20

twzy
会员
注册时间: 2021-04-16
已发帖子: 204
积分: 351.5
个人网站

Re: 求助!v3s移植infones游戏模拟器后出现声音滞后问题

发现在执行Infones的时候有这个报错

root@SnailPi:~/packet/arm-NES-linux-master/linux# ./InfoNES ~/game/h1.nes 
/dev/input/event0 dev not found 
fb width:320 height:240 
Sound Hardware Init ----
sound Init
sound Open------
ALSA lib dlmisc.c:170:(snd_dlsym_verify) unable to verify version for symbol snd_func_private_integer
ALSA lib conf.c:4556:(_snd_config_evaluate) symbol snd_func_private_integer is not defined inside (null)
ALSA lib conf.c:5047:(snd_config_expand) Evaluate error: No such device or address
ALSA lib conf.c:3694:(snd_config_hook_load) Unable to expand filenames in the pre-load section
ALSA lib conf.c:3572:(snd_config_hooks_call) function snd_config_hook_load_for_all_cards returned error: No such device or address
Sound Hardware Init doen!!----

通过增加打印记录代码
arm-NES-linux-master/linux/InfoNES_System_Linux.cpp

/*===================================================================*/
/*                                                                   */
/*        InfoNES_SoundOpen() : Sound Open                           */
/*                                                                   */
/*===================================================================*/
int InfoNES_SoundOpen( int samples_per_sync, int sample_rate )
{

    printf("open 1\n");
	//sample_rate 采样率 44100
	//samples_per_sync  735
	unsigned int rate      = sample_rate;
	snd_pcm_hw_params_t *hw_params;
	
	if(0 > snd_pcm_open(&playback_handle, "default", SND_PCM_STREAM_PLAYBACK, 0)) 
	{
		printf("snd_pcm_open err\n");
		return -1;
	}
	    printf("open 2\n");
	if(0 > snd_pcm_hw_params_malloc(&hw_params))
	{
		printf("snd_pcm_hw_params_malloc err\n");
		return -1;
	}
	    printf("open 3\n");
	if(0 > snd_pcm_hw_params_any(playback_handle, hw_params))
	{
		printf("snd_pcm_hw_params_any err\n");
		return -1;
	}
	    printf("open 4\n");
	if(0 > snd_pcm_hw_params_set_access(playback_handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED)) 
	{
		printf("snd_pcm_hw_params_any err\n");
		return -1;
	}
    printf("open 5\n");
	//8bit PCM 数据
	if(0 > snd_pcm_hw_params_set_format(playback_handle, hw_params, SND_PCM_FORMAT_U8))
	{
		printf("snd_pcm_hw_params_set_format err\n");
		return -1;
	}
    printf("open 6\n");
	if(0 > snd_pcm_hw_params_set_rate_near(playback_handle, hw_params, &rate, 0)) 
	{
		printf("snd_pcm_hw_params_set_rate_near err\n");
		return -1;
	}
    printf("open 7\n");
	//单声道 非立体声
	if(0 > snd_pcm_hw_params_set_channels(playback_handle, hw_params, 1))
	{
		printf("snd_pcm_hw_params_set_channels err\n");
		return -1;
	}
    printf("open 8\n");
	if(0 > snd_pcm_hw_params(playback_handle, hw_params)) 
	{
		printf("snd_pcm_hw_params err\n");
		return -1;
	}
	    printf("open 9\n");
	snd_pcm_hw_params_free(hw_params);
	
	if(0 > snd_pcm_prepare(playback_handle)) 
	{
		printf("snd_pcm_prepare err\n");
		return -1;
	}
	    printf("open 10\n");
	return 1;
}

打印如下记录

root@SnailPi:~/packet/arm-NES-linux-master/linux# ./InfoNES ~/game/h1.nes 
/dev/input/event0 dev not found 
fb width:320 height:240 
open 1
ALSA lib dlmisc.c:170:(snd_dlsym_verify) unable to verify version for symbol snd_func_private_integer
ALSA lib conf.c:4556:(_snd_config_evaluate) symbol snd_func_private_integer is not defined inside (null)
ALSA lib conf.c:5047:(snd_config_expand) Evaluate error: No such device or address
ALSA lib conf.c:3694:(snd_config_hook_load) Unable to expand filenames in the pre-load section
ALSA lib conf.c:3572:(snd_config_hooks_call) function snd_config_hook_load_for_all_cards returned error: No such device or address
open 2
open 3
open 4
open 5
open 6
open 7
open 8
open 9
open 10
^C

离线

#10 2021-12-24 10:19:20

twzy
会员
注册时间: 2021-04-16
已发帖子: 204
积分: 351.5
个人网站

Re: 求助!v3s移植infones游戏模拟器后出现声音滞后问题

因为我之前在F1c200s中运行时候没有报错,所以我们先出来这个问题吧。
先看这个函数

snd_pcm_open

最近编辑记录 twzy (2021-12-24 10:20:01)

离线

#11 2021-12-24 10:38:21

卓林
会员
注册时间: 2021-01-10
已发帖子: 84
积分: 141.5

Re: 求助!v3s移植infones游戏模拟器后出现声音滞后问题

我在F1C100S上出现相同的问题,声音滞后或者严重发出哒哒哒的声音,通过截取波形观察,发现音频信号是间隔输出的。
再之后我屏蔽framebuff写入的代码,声音恢复正常。
尝试将infones的游戏画面分辨率设置到100*100的小分辨率,声音效果变好了很多。
推测infoNES中画面输出与音频输出使用同一个线程操作,导致再framebuff刷新期间占用了太多时间,alsa没能填充足够的数据,导致声音延迟。
验证:在infones中,有一个调音参数数组,修改其中的值,包括采样率,数据段长度等,声音要么滞后,要么哒哒哒响。
结论:F1C100S性能拉跨,或者去优化代码。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn