diff options
author | Mark Brown <broonie@kernel.org> | 2020-03-16 18:07:42 +0000 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2020-03-16 18:07:42 +0000 |
commit | eff4d9ecd05934ba95fca40952bd613d3e594d4e (patch) | |
tree | 3885933fd734896e0505d6f987d5c1fe03f23465 /include | |
parent | 308811a327c38364fff7752d3009160632f5dd5e (diff) | |
parent | 54ce83a3080c3d06b14faa7533a9adb4e158dcea (diff) | |
download | linux-eff4d9ecd05934ba95fca40952bd613d3e594d4e.tar.bz2 |
Merge series "ALSA: compress: Add wma, alac and ape support" from Vinod Koul <vkoul@kernel.org>:
This series adds more WMA profiles and WMA decoder parameters to UAPI and
then support for these in qcom driver. It also adds FLAC and APE IDs and
decoder parameters to UAPI and then support in qcom driver
This was tested on Dragon board RB3.
Last, bump up the compressed version so that userspace can check for the
support.
Since the series touches compress uapi and asoc, it would make sense to go
thru asoc tree with acks.
Changes in v3:
- add r-b from Srini
- use macros for FLAC channel layout tags
Changes in v2:
- use bitflags for wma profiles
Vinod Koul (9):
ALSA: compress: add wma codec profiles
ALSA: compress: Add wma decoder params
ASoC: qcom: q6asm: pass codec profile to q6asm_open_write
ASoC: qcom: q6asm: add support to wma config
ASoC: qcom: q6asm-dai: add support to wma decoder
ALSA: compress: add alac & ape decoder params
ASoC: qcom: q6asm: add support for alac and ape configs
ASoC: qcom: q6asm-dai: add support for ALAC and APE decoders
ALSA: compress: bump the version
include/uapi/sound/compress_offload.h | 2 +-
include/uapi/sound/compress_params.h | 37 +++-
sound/soc/qcom/qdsp6/q6asm-dai.c | 139 ++++++++++++++-
sound/soc/qcom/qdsp6/q6asm.c | 243 +++++++++++++++++++++++++-
sound/soc/qcom/qdsp6/q6asm.h | 51 +++++-
5 files changed, 465 insertions(+), 7 deletions(-)
--
2.24.1
Diffstat (limited to 'include')
-rw-r--r-- | include/uapi/sound/compress_offload.h | 2 | ||||
-rw-r--r-- | include/uapi/sound/compress_params.h | 37 |
2 files changed, 37 insertions, 2 deletions
diff --git a/include/uapi/sound/compress_offload.h b/include/uapi/sound/compress_offload.h index 56d95673ce0f..7184265c0b0d 100644 --- a/include/uapi/sound/compress_offload.h +++ b/include/uapi/sound/compress_offload.h @@ -31,7 +31,7 @@ #include <sound/compress_params.h> -#define SNDRV_COMPRESS_VERSION SNDRV_PROTOCOL_VERSION(0, 1, 2) +#define SNDRV_COMPRESS_VERSION SNDRV_PROTOCOL_VERSION(0, 2, 0) /** * struct snd_compressed_buffer - compressed buffer * @fragment_size: size of buffer fragment in bytes diff --git a/include/uapi/sound/compress_params.h b/include/uapi/sound/compress_params.h index 9c96fb0e4d90..79b14389ae41 100644 --- a/include/uapi/sound/compress_params.h +++ b/include/uapi/sound/compress_params.h @@ -75,7 +75,9 @@ #define SND_AUDIOCODEC_G723_1 ((__u32) 0x0000000C) #define SND_AUDIOCODEC_G729 ((__u32) 0x0000000D) #define SND_AUDIOCODEC_BESPOKE ((__u32) 0x0000000E) -#define SND_AUDIOCODEC_MAX SND_AUDIOCODEC_BESPOKE +#define SND_AUDIOCODEC_ALAC ((__u32) 0x0000000F) +#define SND_AUDIOCODEC_APE ((__u32) 0x00000010) +#define SND_AUDIOCODEC_MAX SND_AUDIOCODEC_APE /* * Profile and modes are listed with bit masks. This allows for a @@ -142,6 +144,9 @@ #define SND_AUDIOPROFILE_WMA8 ((__u32) 0x00000002) #define SND_AUDIOPROFILE_WMA9 ((__u32) 0x00000004) #define SND_AUDIOPROFILE_WMA10 ((__u32) 0x00000008) +#define SND_AUDIOPROFILE_WMA9_PRO ((__u32) 0x00000010) +#define SND_AUDIOPROFILE_WMA9_LOSSLESS ((__u32) 0x00000020) +#define SND_AUDIOPROFILE_WMA10_LOSSLESS ((__u32) 0x00000040) #define SND_AUDIOMODE_WMA_LEVEL1 ((__u32) 0x00000001) #define SND_AUDIOMODE_WMA_LEVEL2 ((__u32) 0x00000002) @@ -326,6 +331,33 @@ struct snd_dec_flac { __u16 reserved; } __attribute__((packed, aligned(4))); +struct snd_dec_wma { + __u32 encoder_option; + __u32 adv_encoder_option; + __u32 adv_encoder_option2; + __u32 reserved; +} __attribute__((packed, aligned(4))); + +struct snd_dec_alac { + __u32 frame_length; + __u8 compatible_version; + __u8 pb; + __u8 mb; + __u8 kb; + __u32 max_run; + __u32 max_frame_bytes; +} __attribute__((packed, aligned(4))); + +struct snd_dec_ape { + __u16 compatible_version; + __u16 compression_level; + __u32 format_flags; + __u32 blocks_per_frame; + __u32 final_frame_blocks; + __u32 total_frames; + __u32 seek_table_present; +} __attribute__((packed, aligned(4))); + union snd_codec_options { struct snd_enc_wma wma; struct snd_enc_vorbis vorbis; @@ -333,6 +365,9 @@ union snd_codec_options { struct snd_enc_flac flac; struct snd_enc_generic generic; struct snd_dec_flac flac_d; + struct snd_dec_wma wma_d; + struct snd_dec_alac alac_d; + struct snd_dec_ape ape_d; } __attribute__((packed, aligned(4))); /** struct snd_codec_desc - description of codec capabilities |