mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-29 05:40:25 -04:00
Added snd_pcm_format_physical_width...
This commit is contained in:
parent
098b4b6a96
commit
749f2ffd77
3 changed files with 42 additions and 4 deletions
|
|
@ -54,7 +54,8 @@ int snd_pcm_format_unsigned(int format);
|
|||
int snd_pcm_format_linear(int format);
|
||||
int snd_pcm_format_little_endian(int format);
|
||||
int snd_pcm_format_big_endian(int format);
|
||||
int snd_pcm_format_width(int format); /* in bits */
|
||||
int snd_pcm_format_width(int format); /* in bits */
|
||||
int snd_pcm_format_physical_width(int format); /* in bits */
|
||||
int snd_pcm_build_linear_format(int width, int unsignd, int big_endian);
|
||||
ssize_t snd_pcm_format_size(int format, size_t samples);
|
||||
unsigned char snd_pcm_format_silence(int format);
|
||||
|
|
|
|||
|
|
@ -148,6 +148,43 @@ int snd_pcm_format_width(int format)
|
|||
}
|
||||
}
|
||||
|
||||
int snd_pcm_format_physical_width(int format)
|
||||
{
|
||||
switch (format) {
|
||||
case SND_PCM_SFMT_S8:
|
||||
case SND_PCM_SFMT_U8:
|
||||
return 8;
|
||||
case SND_PCM_SFMT_S16_LE:
|
||||
case SND_PCM_SFMT_S16_BE:
|
||||
case SND_PCM_SFMT_U16_LE:
|
||||
case SND_PCM_SFMT_U16_BE:
|
||||
return 16;
|
||||
case SND_PCM_SFMT_S24_LE:
|
||||
case SND_PCM_SFMT_S24_BE:
|
||||
case SND_PCM_SFMT_U24_LE:
|
||||
case SND_PCM_SFMT_U24_BE:
|
||||
case SND_PCM_SFMT_S32_LE:
|
||||
case SND_PCM_SFMT_S32_BE:
|
||||
case SND_PCM_SFMT_U32_LE:
|
||||
case SND_PCM_SFMT_U32_BE:
|
||||
case SND_PCM_SFMT_FLOAT_LE:
|
||||
case SND_PCM_SFMT_FLOAT_BE:
|
||||
case SND_PCM_SFMT_IEC958_SUBFRAME_LE:
|
||||
case SND_PCM_SFMT_IEC958_SUBFRAME_BE:
|
||||
return 32;
|
||||
case SND_PCM_SFMT_FLOAT64_LE:
|
||||
case SND_PCM_SFMT_FLOAT64_BE:
|
||||
return 64;
|
||||
case SND_PCM_SFMT_MU_LAW:
|
||||
case SND_PCM_SFMT_A_LAW:
|
||||
return 8;
|
||||
case SND_PCM_SFMT_IMA_ADPCM:
|
||||
return 4;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
ssize_t snd_pcm_format_size(int format, size_t samples)
|
||||
{
|
||||
if (samples < 0)
|
||||
|
|
|
|||
|
|
@ -53,12 +53,12 @@ snd_pcm_plugin_t *snd_pcm_plugin_build(snd_pcm_plugin_handle_t *handle,
|
|||
plugin->name = name ? strdup(name) : NULL;
|
||||
if (src_format) {
|
||||
memcpy(&plugin->src_format, src_format, sizeof(snd_pcm_format_t));
|
||||
if ((plugin->src_width = snd_pcm_format_width(src_format->format)) < 0)
|
||||
if ((plugin->src_width = snd_pcm_format_physical_width(src_format->format)) < 0)
|
||||
return NULL;
|
||||
}
|
||||
if (dst_format) {
|
||||
memcpy(&plugin->dst_format, dst_format, sizeof(snd_pcm_format_t));
|
||||
if ((plugin->dst_width = snd_pcm_format_width(dst_format->format)) < 0)
|
||||
if ((plugin->dst_width = snd_pcm_format_physical_width(dst_format->format)) < 0)
|
||||
return NULL;
|
||||
}
|
||||
plugin->handle = handle;
|
||||
|
|
@ -771,7 +771,7 @@ static int snd_pcm_plugin_xvoices(snd_pcm_plugin_t *plugin,
|
|||
snd_pcm_plugin_voice_t *v;
|
||||
|
||||
*voices = NULL;
|
||||
if ((width = snd_pcm_format_width(format->format)) < 0)
|
||||
if ((width = snd_pcm_format_physical_width(format->format)) < 0)
|
||||
return width;
|
||||
size = format->voices * samples * width;
|
||||
if ((size % 8) != 0)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue