audioconvert: support alaw/ulaw conversion

This commit is contained in:
Wim Taymans 2021-08-17 17:33:29 +02:00
parent df9f79d869
commit e9679afb12
3 changed files with 18 additions and 6 deletions

View file

@ -398,7 +398,7 @@ static int port_enum_formats(void *object,
info.info.raw.format == SPA_AUDIO_FORMAT_F32P || info.info.raw.format == SPA_AUDIO_FORMAT_F32P ||
info.info.raw.format == SPA_AUDIO_FORMAT_F32) { info.info.raw.format == SPA_AUDIO_FORMAT_F32) {
spa_pod_builder_add(builder, spa_pod_builder_add(builder,
SPA_FORMAT_AUDIO_format, SPA_POD_CHOICE_ENUM_Id(20, SPA_FORMAT_AUDIO_format, SPA_POD_CHOICE_ENUM_Id(22,
info.info.raw.format, info.info.raw.format,
SPA_AUDIO_FORMAT_F32P, SPA_AUDIO_FORMAT_F32P,
SPA_AUDIO_FORMAT_F32, SPA_AUDIO_FORMAT_F32,
@ -418,7 +418,9 @@ static int port_enum_formats(void *object,
SPA_AUDIO_FORMAT_S8P, SPA_AUDIO_FORMAT_S8P,
SPA_AUDIO_FORMAT_S8, SPA_AUDIO_FORMAT_S8,
SPA_AUDIO_FORMAT_U8P, SPA_AUDIO_FORMAT_U8P,
SPA_AUDIO_FORMAT_U8), SPA_AUDIO_FORMAT_U8,
SPA_AUDIO_FORMAT_ULAW,
SPA_AUDIO_FORMAT_ALAW),
0); 0);
} else { } else {
spa_pod_builder_add(builder, spa_pod_builder_add(builder,
@ -601,6 +603,8 @@ static int calc_width(struct spa_audio_info *info)
case SPA_AUDIO_FORMAT_U8: case SPA_AUDIO_FORMAT_U8:
case SPA_AUDIO_FORMAT_S8P: case SPA_AUDIO_FORMAT_S8P:
case SPA_AUDIO_FORMAT_S8: case SPA_AUDIO_FORMAT_S8:
case SPA_AUDIO_FORMAT_ALAW:
case SPA_AUDIO_FORMAT_ULAW:
return 1; return 1;
case SPA_AUDIO_FORMAT_S16P: case SPA_AUDIO_FORMAT_S16P:
case SPA_AUDIO_FORMAT_S16: case SPA_AUDIO_FORMAT_S16:

View file

@ -691,7 +691,7 @@ static int port_enum_formats(void *object,
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat, SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_audio), SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_audio),
SPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw), SPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw),
SPA_FORMAT_AUDIO_format, SPA_POD_CHOICE_ENUM_Id(20, SPA_FORMAT_AUDIO_format, SPA_POD_CHOICE_ENUM_Id(22,
SPA_AUDIO_FORMAT_F32P, SPA_AUDIO_FORMAT_F32P,
SPA_AUDIO_FORMAT_F32P, SPA_AUDIO_FORMAT_F32P,
SPA_AUDIO_FORMAT_F32, SPA_AUDIO_FORMAT_F32,
@ -710,8 +710,10 @@ static int port_enum_formats(void *object,
SPA_AUDIO_FORMAT_S16_OE, SPA_AUDIO_FORMAT_S16_OE,
SPA_AUDIO_FORMAT_S8P, SPA_AUDIO_FORMAT_S8P,
SPA_AUDIO_FORMAT_S8, SPA_AUDIO_FORMAT_S8,
SPA_AUDIO_FORMAT_U8P,
SPA_AUDIO_FORMAT_U8, SPA_AUDIO_FORMAT_U8,
SPA_AUDIO_FORMAT_U8P), SPA_AUDIO_FORMAT_ULAW,
SPA_AUDIO_FORMAT_ALAW),
SPA_FORMAT_AUDIO_rate, SPA_POD_CHOICE_RANGE_Int( SPA_FORMAT_AUDIO_rate, SPA_POD_CHOICE_RANGE_Int(
rate, 1, INT32_MAX), rate, 1, INT32_MAX),
SPA_FORMAT_AUDIO_channels, SPA_POD_CHOICE_RANGE_Int( SPA_FORMAT_AUDIO_channels, SPA_POD_CHOICE_RANGE_Int(
@ -912,6 +914,8 @@ static int calc_width(struct spa_audio_info *info)
case SPA_AUDIO_FORMAT_U8P: case SPA_AUDIO_FORMAT_U8P:
case SPA_AUDIO_FORMAT_S8: case SPA_AUDIO_FORMAT_S8:
case SPA_AUDIO_FORMAT_S8P: case SPA_AUDIO_FORMAT_S8P:
case SPA_AUDIO_FORMAT_ULAW:
case SPA_AUDIO_FORMAT_ALAW:
return 1; return 1;
case SPA_AUDIO_FORMAT_S16P: case SPA_AUDIO_FORMAT_S16P:
case SPA_AUDIO_FORMAT_S16: case SPA_AUDIO_FORMAT_S16:

View file

@ -445,7 +445,7 @@ static int port_enum_formats(void *object,
SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat, SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_audio), SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_audio),
SPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw), SPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw),
SPA_FORMAT_AUDIO_format, SPA_POD_CHOICE_ENUM_Id(20, SPA_FORMAT_AUDIO_format, SPA_POD_CHOICE_ENUM_Id(22,
SPA_AUDIO_FORMAT_F32P, SPA_AUDIO_FORMAT_F32P,
SPA_AUDIO_FORMAT_F32P, SPA_AUDIO_FORMAT_F32P,
SPA_AUDIO_FORMAT_F32, SPA_AUDIO_FORMAT_F32,
@ -465,7 +465,9 @@ static int port_enum_formats(void *object,
SPA_AUDIO_FORMAT_S8P, SPA_AUDIO_FORMAT_S8P,
SPA_AUDIO_FORMAT_S8, SPA_AUDIO_FORMAT_S8,
SPA_AUDIO_FORMAT_U8P, SPA_AUDIO_FORMAT_U8P,
SPA_AUDIO_FORMAT_U8), SPA_AUDIO_FORMAT_U8,
SPA_AUDIO_FORMAT_ULAW,
SPA_AUDIO_FORMAT_ALAW),
SPA_FORMAT_AUDIO_rate, SPA_POD_CHOICE_RANGE_Int( SPA_FORMAT_AUDIO_rate, SPA_POD_CHOICE_RANGE_Int(
rate, 1, INT32_MAX), rate, 1, INT32_MAX),
SPA_FORMAT_AUDIO_channels, SPA_POD_CHOICE_RANGE_Int( SPA_FORMAT_AUDIO_channels, SPA_POD_CHOICE_RANGE_Int(
@ -667,6 +669,8 @@ static int calc_width(struct spa_audio_info *info)
case SPA_AUDIO_FORMAT_U8P: case SPA_AUDIO_FORMAT_U8P:
case SPA_AUDIO_FORMAT_S8: case SPA_AUDIO_FORMAT_S8:
case SPA_AUDIO_FORMAT_S8P: case SPA_AUDIO_FORMAT_S8P:
case SPA_AUDIO_FORMAT_ULAW:
case SPA_AUDIO_FORMAT_ALAW:
return 1; return 1;
case SPA_AUDIO_FORMAT_S16P: case SPA_AUDIO_FORMAT_S16P:
case SPA_AUDIO_FORMAT_S16: case SPA_AUDIO_FORMAT_S16: