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:
parent
9948b5e701
commit
f67e50e920
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user