sim/sim_alsa: modify buffer_size in GET_BUFFERINFO when offload capture.

1. when offload capture, apb buffer must big enough to fill
samples of encoder.
2. pass samplerate, channels to encoder.
This commit is contained in:
qiaohaijiao1 2023-05-16 19:19:29 +08:00 committed by Xiang Xiao
parent 9948b5e701
commit f67e50e920
2 changed files with 17 additions and 9 deletions

View File

@ -409,6 +409,7 @@ static int sim_audio_configure(struct audio_lowerhalf_s *dev,
#endif
{
struct sim_audio_s *priv = (struct sim_audio_s *)dev;
struct audio_info_s info;
int ret = 0;
switch (caps->ac_type)
@ -439,6 +440,15 @@ static int sim_audio_configure(struct audio_lowerhalf_s *dev,
priv->frame_size = priv->bps / 8 * priv->channels;
sim_audio_config_ops(priv, caps->ac_subtype);
info.samplerate = priv->sample_rate;
info.channels = priv->channels;
priv->codec = priv->ops->init(&info);
if (priv->codec == NULL)
{
ret = -ENOSYS;
}
break;
default:
@ -471,12 +481,6 @@ static int sim_audio_start(struct audio_lowerhalf_s *dev)
return -ENOMEM;
}
priv->codec = priv->ops->init(NULL);
if (priv->codec == NULL)
{
return -ENOSYS;
}
return sim_audio_open(priv);
}
@ -581,6 +585,13 @@ static int sim_audio_ioctl(struct audio_lowerhalf_s *dev, int cmd,
info->nbuffers = priv->nbuffers;
info->buffer_size = priv->buffer_size;
if (priv->ops->get_samples)
{
info->buffer_size = MAX(info->buffer_size,
priv->ops->get_samples(priv->codec) *
priv->frame_size);
}
}
break;

View File

@ -454,9 +454,6 @@ void *sim_audio_lame_init(struct audio_info_s *info)
{
lame_set_num_channels(codec->gfp, info->channels);
lame_set_mode(codec->gfp, info->channels > 1 ? STEREO : MONO);
lame_set_in_samplerate (codec->gfp, info->samplerate);
lame_set_out_samplerate(codec->gfp, info->samplerate);
}
ret = lame_init_params(codec->gfp);