cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

compress_params.h (18187B)


      1/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) AND MIT) */
      2/*
      3 *  compress_params.h - codec types and parameters for compressed data
      4 *  streaming interface
      5 *
      6 *  Copyright (C) 2011 Intel Corporation
      7 *  Authors:	Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      8 *              Vinod Koul <vinod.koul@linux.intel.com>
      9 *
     10 *  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     11 *
     12 *  This program is free software; you can redistribute it and/or modify
     13 *  it under the terms of the GNU General Public License as published by
     14 *  the Free Software Foundation; version 2 of the License.
     15 *
     16 *  This program is distributed in the hope that it will be useful, but
     17 *  WITHOUT ANY WARRANTY; without even the implied warranty of
     18 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     19 *  General Public License for more details.
     20 *
     21 *  You should have received a copy of the GNU General Public License along
     22 *  with this program; if not, write to the Free Software Foundation, Inc.,
     23 *  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
     24 *
     25 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     26 *
     27 * The definitions in this file are derived from the OpenMAX AL version 1.1
     28 * and OpenMAX IL v 1.1.2 header files which contain the copyright notice below.
     29 *
     30 * Copyright (c) 2007-2010 The Khronos Group Inc.
     31 *
     32 * Permission is hereby granted, free of charge, to any person obtaining
     33 * a copy of this software and/or associated documentation files (the
     34 * "Materials "), to deal in the Materials without restriction, including
     35 * without limitation the rights to use, copy, modify, merge, publish,
     36 * distribute, sublicense, and/or sell copies of the Materials, and to
     37 * permit persons to whom the Materials are furnished to do so, subject to
     38 * the following conditions:
     39 *
     40 * The above copyright notice and this permission notice shall be included
     41 * in all copies or substantial portions of the Materials.
     42 *
     43 * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
     44 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
     45 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
     46 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
     47 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
     48 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
     49 * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
     50 *
     51 */
     52#ifndef __SND_COMPRESS_PARAMS_H
     53#define __SND_COMPRESS_PARAMS_H
     54
     55#include <linux/types.h>
     56
     57/* AUDIO CODECS SUPPORTED */
     58#define MAX_NUM_CODECS 32
     59#define MAX_NUM_CODEC_DESCRIPTORS 32
     60#define MAX_NUM_BITRATES 32
     61#define MAX_NUM_SAMPLE_RATES 32
     62
     63/* Codecs are listed linearly to allow for extensibility */
     64#define SND_AUDIOCODEC_PCM                   ((__u32) 0x00000001)
     65#define SND_AUDIOCODEC_MP3                   ((__u32) 0x00000002)
     66#define SND_AUDIOCODEC_AMR                   ((__u32) 0x00000003)
     67#define SND_AUDIOCODEC_AMRWB                 ((__u32) 0x00000004)
     68#define SND_AUDIOCODEC_AMRWBPLUS             ((__u32) 0x00000005)
     69#define SND_AUDIOCODEC_AAC                   ((__u32) 0x00000006)
     70#define SND_AUDIOCODEC_WMA                   ((__u32) 0x00000007)
     71#define SND_AUDIOCODEC_REAL                  ((__u32) 0x00000008)
     72#define SND_AUDIOCODEC_VORBIS                ((__u32) 0x00000009)
     73#define SND_AUDIOCODEC_FLAC                  ((__u32) 0x0000000A)
     74#define SND_AUDIOCODEC_IEC61937              ((__u32) 0x0000000B)
     75#define SND_AUDIOCODEC_G723_1                ((__u32) 0x0000000C)
     76#define SND_AUDIOCODEC_G729                  ((__u32) 0x0000000D)
     77#define SND_AUDIOCODEC_BESPOKE               ((__u32) 0x0000000E)
     78#define SND_AUDIOCODEC_ALAC                  ((__u32) 0x0000000F)
     79#define SND_AUDIOCODEC_APE                   ((__u32) 0x00000010)
     80#define SND_AUDIOCODEC_MAX                   SND_AUDIOCODEC_APE
     81
     82/*
     83 * Profile and modes are listed with bit masks. This allows for a
     84 * more compact representation of fields that will not evolve
     85 * (in contrast to the list of codecs)
     86 */
     87
     88#define SND_AUDIOPROFILE_PCM                 ((__u32) 0x00000001)
     89
     90/* MP3 modes are only useful for encoders */
     91#define SND_AUDIOCHANMODE_MP3_MONO           ((__u32) 0x00000001)
     92#define SND_AUDIOCHANMODE_MP3_STEREO         ((__u32) 0x00000002)
     93#define SND_AUDIOCHANMODE_MP3_JOINTSTEREO    ((__u32) 0x00000004)
     94#define SND_AUDIOCHANMODE_MP3_DUAL           ((__u32) 0x00000008)
     95
     96#define SND_AUDIOPROFILE_AMR                 ((__u32) 0x00000001)
     97
     98/* AMR modes are only useful for encoders */
     99#define SND_AUDIOMODE_AMR_DTX_OFF            ((__u32) 0x00000001)
    100#define SND_AUDIOMODE_AMR_VAD1               ((__u32) 0x00000002)
    101#define SND_AUDIOMODE_AMR_VAD2               ((__u32) 0x00000004)
    102
    103#define SND_AUDIOSTREAMFORMAT_UNDEFINED	     ((__u32) 0x00000000)
    104#define SND_AUDIOSTREAMFORMAT_CONFORMANCE    ((__u32) 0x00000001)
    105#define SND_AUDIOSTREAMFORMAT_IF1            ((__u32) 0x00000002)
    106#define SND_AUDIOSTREAMFORMAT_IF2            ((__u32) 0x00000004)
    107#define SND_AUDIOSTREAMFORMAT_FSF            ((__u32) 0x00000008)
    108#define SND_AUDIOSTREAMFORMAT_RTPPAYLOAD     ((__u32) 0x00000010)
    109#define SND_AUDIOSTREAMFORMAT_ITU            ((__u32) 0x00000020)
    110
    111#define SND_AUDIOPROFILE_AMRWB               ((__u32) 0x00000001)
    112
    113/* AMRWB modes are only useful for encoders */
    114#define SND_AUDIOMODE_AMRWB_DTX_OFF          ((__u32) 0x00000001)
    115#define SND_AUDIOMODE_AMRWB_VAD1             ((__u32) 0x00000002)
    116#define SND_AUDIOMODE_AMRWB_VAD2             ((__u32) 0x00000004)
    117
    118#define SND_AUDIOPROFILE_AMRWBPLUS           ((__u32) 0x00000001)
    119
    120#define SND_AUDIOPROFILE_AAC                 ((__u32) 0x00000001)
    121
    122/* AAC modes are required for encoders and decoders */
    123#define SND_AUDIOMODE_AAC_MAIN               ((__u32) 0x00000001)
    124#define SND_AUDIOMODE_AAC_LC                 ((__u32) 0x00000002)
    125#define SND_AUDIOMODE_AAC_SSR                ((__u32) 0x00000004)
    126#define SND_AUDIOMODE_AAC_LTP                ((__u32) 0x00000008)
    127#define SND_AUDIOMODE_AAC_HE                 ((__u32) 0x00000010)
    128#define SND_AUDIOMODE_AAC_SCALABLE           ((__u32) 0x00000020)
    129#define SND_AUDIOMODE_AAC_ERLC               ((__u32) 0x00000040)
    130#define SND_AUDIOMODE_AAC_LD                 ((__u32) 0x00000080)
    131#define SND_AUDIOMODE_AAC_HE_PS              ((__u32) 0x00000100)
    132#define SND_AUDIOMODE_AAC_HE_MPS             ((__u32) 0x00000200)
    133
    134/* AAC formats are required for encoders and decoders */
    135#define SND_AUDIOSTREAMFORMAT_MP2ADTS        ((__u32) 0x00000001)
    136#define SND_AUDIOSTREAMFORMAT_MP4ADTS        ((__u32) 0x00000002)
    137#define SND_AUDIOSTREAMFORMAT_MP4LOAS        ((__u32) 0x00000004)
    138#define SND_AUDIOSTREAMFORMAT_MP4LATM        ((__u32) 0x00000008)
    139#define SND_AUDIOSTREAMFORMAT_ADIF           ((__u32) 0x00000010)
    140#define SND_AUDIOSTREAMFORMAT_MP4FF          ((__u32) 0x00000020)
    141#define SND_AUDIOSTREAMFORMAT_RAW            ((__u32) 0x00000040)
    142
    143#define SND_AUDIOPROFILE_WMA7                ((__u32) 0x00000001)
    144#define SND_AUDIOPROFILE_WMA8                ((__u32) 0x00000002)
    145#define SND_AUDIOPROFILE_WMA9                ((__u32) 0x00000004)
    146#define SND_AUDIOPROFILE_WMA10               ((__u32) 0x00000008)
    147#define SND_AUDIOPROFILE_WMA9_PRO            ((__u32) 0x00000010)
    148#define SND_AUDIOPROFILE_WMA9_LOSSLESS       ((__u32) 0x00000020)
    149#define SND_AUDIOPROFILE_WMA10_LOSSLESS      ((__u32) 0x00000040)
    150
    151#define SND_AUDIOMODE_WMA_LEVEL1             ((__u32) 0x00000001)
    152#define SND_AUDIOMODE_WMA_LEVEL2             ((__u32) 0x00000002)
    153#define SND_AUDIOMODE_WMA_LEVEL3             ((__u32) 0x00000004)
    154#define SND_AUDIOMODE_WMA_LEVEL4             ((__u32) 0x00000008)
    155#define SND_AUDIOMODE_WMAPRO_LEVELM0         ((__u32) 0x00000010)
    156#define SND_AUDIOMODE_WMAPRO_LEVELM1         ((__u32) 0x00000020)
    157#define SND_AUDIOMODE_WMAPRO_LEVELM2         ((__u32) 0x00000040)
    158#define SND_AUDIOMODE_WMAPRO_LEVELM3         ((__u32) 0x00000080)
    159
    160#define SND_AUDIOSTREAMFORMAT_WMA_ASF        ((__u32) 0x00000001)
    161/*
    162 * Some implementations strip the ASF header and only send ASF packets
    163 * to the DSP
    164 */
    165#define SND_AUDIOSTREAMFORMAT_WMA_NOASF_HDR  ((__u32) 0x00000002)
    166
    167#define SND_AUDIOPROFILE_REALAUDIO           ((__u32) 0x00000001)
    168
    169#define SND_AUDIOMODE_REALAUDIO_G2           ((__u32) 0x00000001)
    170#define SND_AUDIOMODE_REALAUDIO_8            ((__u32) 0x00000002)
    171#define SND_AUDIOMODE_REALAUDIO_10           ((__u32) 0x00000004)
    172#define SND_AUDIOMODE_REALAUDIO_SURROUND     ((__u32) 0x00000008)
    173
    174#define SND_AUDIOPROFILE_VORBIS              ((__u32) 0x00000001)
    175
    176#define SND_AUDIOMODE_VORBIS                 ((__u32) 0x00000001)
    177
    178#define SND_AUDIOPROFILE_FLAC                ((__u32) 0x00000001)
    179
    180/*
    181 * Define quality levels for FLAC encoders, from LEVEL0 (fast)
    182 * to LEVEL8 (best)
    183 */
    184#define SND_AUDIOMODE_FLAC_LEVEL0            ((__u32) 0x00000001)
    185#define SND_AUDIOMODE_FLAC_LEVEL1            ((__u32) 0x00000002)
    186#define SND_AUDIOMODE_FLAC_LEVEL2            ((__u32) 0x00000004)
    187#define SND_AUDIOMODE_FLAC_LEVEL3            ((__u32) 0x00000008)
    188#define SND_AUDIOMODE_FLAC_LEVEL4            ((__u32) 0x00000010)
    189#define SND_AUDIOMODE_FLAC_LEVEL5            ((__u32) 0x00000020)
    190#define SND_AUDIOMODE_FLAC_LEVEL6            ((__u32) 0x00000040)
    191#define SND_AUDIOMODE_FLAC_LEVEL7            ((__u32) 0x00000080)
    192#define SND_AUDIOMODE_FLAC_LEVEL8            ((__u32) 0x00000100)
    193
    194#define SND_AUDIOSTREAMFORMAT_FLAC           ((__u32) 0x00000001)
    195#define SND_AUDIOSTREAMFORMAT_FLAC_OGG       ((__u32) 0x00000002)
    196
    197/* IEC61937 payloads without CUVP and preambles */
    198#define SND_AUDIOPROFILE_IEC61937            ((__u32) 0x00000001)
    199/* IEC61937 with S/PDIF preambles+CUVP bits in 32-bit containers */
    200#define SND_AUDIOPROFILE_IEC61937_SPDIF      ((__u32) 0x00000002)
    201
    202/*
    203 * IEC modes are mandatory for decoders. Format autodetection
    204 * will only happen on the DSP side with mode 0. The PCM mode should
    205 * not be used, the PCM codec should be used instead.
    206 */
    207#define SND_AUDIOMODE_IEC_REF_STREAM_HEADER  ((__u32) 0x00000000)
    208#define SND_AUDIOMODE_IEC_LPCM		     ((__u32) 0x00000001)
    209#define SND_AUDIOMODE_IEC_AC3		     ((__u32) 0x00000002)
    210#define SND_AUDIOMODE_IEC_MPEG1		     ((__u32) 0x00000004)
    211#define SND_AUDIOMODE_IEC_MP3		     ((__u32) 0x00000008)
    212#define SND_AUDIOMODE_IEC_MPEG2		     ((__u32) 0x00000010)
    213#define SND_AUDIOMODE_IEC_AACLC		     ((__u32) 0x00000020)
    214#define SND_AUDIOMODE_IEC_DTS		     ((__u32) 0x00000040)
    215#define SND_AUDIOMODE_IEC_ATRAC		     ((__u32) 0x00000080)
    216#define SND_AUDIOMODE_IEC_SACD		     ((__u32) 0x00000100)
    217#define SND_AUDIOMODE_IEC_EAC3		     ((__u32) 0x00000200)
    218#define SND_AUDIOMODE_IEC_DTS_HD	     ((__u32) 0x00000400)
    219#define SND_AUDIOMODE_IEC_MLP		     ((__u32) 0x00000800)
    220#define SND_AUDIOMODE_IEC_DST		     ((__u32) 0x00001000)
    221#define SND_AUDIOMODE_IEC_WMAPRO	     ((__u32) 0x00002000)
    222#define SND_AUDIOMODE_IEC_REF_CXT            ((__u32) 0x00004000)
    223#define SND_AUDIOMODE_IEC_HE_AAC	     ((__u32) 0x00008000)
    224#define SND_AUDIOMODE_IEC_HE_AAC2	     ((__u32) 0x00010000)
    225#define SND_AUDIOMODE_IEC_MPEG_SURROUND	     ((__u32) 0x00020000)
    226
    227#define SND_AUDIOPROFILE_G723_1              ((__u32) 0x00000001)
    228
    229#define SND_AUDIOMODE_G723_1_ANNEX_A         ((__u32) 0x00000001)
    230#define SND_AUDIOMODE_G723_1_ANNEX_B         ((__u32) 0x00000002)
    231#define SND_AUDIOMODE_G723_1_ANNEX_C         ((__u32) 0x00000004)
    232
    233#define SND_AUDIOPROFILE_G729                ((__u32) 0x00000001)
    234
    235#define SND_AUDIOMODE_G729_ANNEX_A           ((__u32) 0x00000001)
    236#define SND_AUDIOMODE_G729_ANNEX_B           ((__u32) 0x00000002)
    237
    238/* <FIXME: multichannel encoders aren't supported for now. Would need
    239   an additional definition of channel arrangement> */
    240
    241/* VBR/CBR definitions */
    242#define SND_RATECONTROLMODE_CONSTANTBITRATE  ((__u32) 0x00000001)
    243#define SND_RATECONTROLMODE_VARIABLEBITRATE  ((__u32) 0x00000002)
    244
    245/* Encoder options */
    246
    247struct snd_enc_wma {
    248	__u32 super_block_align; /* WMA Type-specific data */
    249};
    250
    251
    252/**
    253 * struct snd_enc_vorbis
    254 * @quality: Sets encoding quality to n, between -1 (low) and 10 (high).
    255 * In the default mode of operation, the quality level is 3.
    256 * Normal quality range is 0 - 10.
    257 * @managed: Boolean. Set  bitrate  management  mode. This turns off the
    258 * normal VBR encoding, but allows hard or soft bitrate constraints to be
    259 * enforced by the encoder. This mode can be slower, and may also be
    260 * lower quality. It is primarily useful for streaming.
    261 * @max_bit_rate: Enabled only if managed is TRUE
    262 * @min_bit_rate: Enabled only if managed is TRUE
    263 * @downmix: Boolean. Downmix input from stereo to mono (has no effect on
    264 * non-stereo streams). Useful for lower-bitrate encoding.
    265 *
    266 * These options were extracted from the OpenMAX IL spec and Gstreamer vorbisenc
    267 * properties
    268 *
    269 * For best quality users should specify VBR mode and set quality levels.
    270 */
    271
    272struct snd_enc_vorbis {
    273	__s32 quality;
    274	__u32 managed;
    275	__u32 max_bit_rate;
    276	__u32 min_bit_rate;
    277	__u32 downmix;
    278} __attribute__((packed, aligned(4)));
    279
    280
    281/**
    282 * struct snd_enc_real
    283 * @quant_bits: number of coupling quantization bits in the stream
    284 * @start_region: coupling start region in the stream
    285 * @num_regions: number of regions value
    286 *
    287 * These options were extracted from the OpenMAX IL spec
    288 */
    289
    290struct snd_enc_real {
    291	__u32 quant_bits;
    292	__u32 start_region;
    293	__u32 num_regions;
    294} __attribute__((packed, aligned(4)));
    295
    296/**
    297 * struct snd_enc_flac
    298 * @num: serial number, valid only for OGG formats
    299 *	needs to be set by application
    300 * @gain: Add replay gain tags
    301 *
    302 * These options were extracted from the FLAC online documentation
    303 * at http://flac.sourceforge.net/documentation_tools_flac.html
    304 *
    305 * To make the API simpler, it is assumed that the user will select quality
    306 * profiles. Additional options that affect encoding quality and speed can
    307 * be added at a later stage if needed.
    308 *
    309 * By default the Subset format is used by encoders.
    310 *
    311 * TAGS such as pictures, etc, cannot be handled by an offloaded encoder and are
    312 * not supported in this API.
    313 */
    314
    315struct snd_enc_flac {
    316	__u32 num;
    317	__u32 gain;
    318} __attribute__((packed, aligned(4)));
    319
    320struct snd_enc_generic {
    321	__u32 bw;	/* encoder bandwidth */
    322	__s32 reserved[15];	/* Can be used for SND_AUDIOCODEC_BESPOKE */
    323} __attribute__((packed, aligned(4)));
    324
    325struct snd_dec_flac {
    326	__u16 sample_size;
    327	__u16 min_blk_size;
    328	__u16 max_blk_size;
    329	__u16 min_frame_size;
    330	__u16 max_frame_size;
    331	__u16 reserved;
    332} __attribute__((packed, aligned(4)));
    333
    334struct snd_dec_wma {
    335	__u32 encoder_option;
    336	__u32 adv_encoder_option;
    337	__u32 adv_encoder_option2;
    338	__u32 reserved;
    339} __attribute__((packed, aligned(4)));
    340
    341struct snd_dec_alac {
    342	__u32 frame_length;
    343	__u8 compatible_version;
    344	__u8 pb;
    345	__u8 mb;
    346	__u8 kb;
    347	__u32 max_run;
    348	__u32 max_frame_bytes;
    349} __attribute__((packed, aligned(4)));
    350
    351struct snd_dec_ape {
    352	__u16 compatible_version;
    353	__u16 compression_level;
    354	__u32 format_flags;
    355	__u32 blocks_per_frame;
    356	__u32 final_frame_blocks;
    357	__u32 total_frames;
    358	__u32 seek_table_present;
    359} __attribute__((packed, aligned(4)));
    360
    361union snd_codec_options {
    362	struct snd_enc_wma wma;
    363	struct snd_enc_vorbis vorbis;
    364	struct snd_enc_real real;
    365	struct snd_enc_flac flac;
    366	struct snd_enc_generic generic;
    367	struct snd_dec_flac flac_d;
    368	struct snd_dec_wma wma_d;
    369	struct snd_dec_alac alac_d;
    370	struct snd_dec_ape ape_d;
    371} __attribute__((packed, aligned(4)));
    372
    373/** struct snd_codec_desc - description of codec capabilities
    374 * @max_ch: Maximum number of audio channels
    375 * @sample_rates: Sampling rates in Hz, use values like 48000 for this
    376 * @num_sample_rates: Number of valid values in sample_rates array
    377 * @bit_rate: Indexed array containing supported bit rates
    378 * @num_bitrates: Number of valid values in bit_rate array
    379 * @rate_control: value is specified by SND_RATECONTROLMODE defines.
    380 * @profiles: Supported profiles. See SND_AUDIOPROFILE defines.
    381 * @modes: Supported modes. See SND_AUDIOMODE defines
    382 * @formats: Supported formats. See SND_AUDIOSTREAMFORMAT defines
    383 * @min_buffer: Minimum buffer size handled by codec implementation
    384 * @reserved: reserved for future use
    385 *
    386 * This structure provides a scalar value for profiles, modes and stream
    387 * format fields.
    388 * If an implementation supports multiple combinations, they will be listed as
    389 * codecs with different descriptors, for example there would be 2 descriptors
    390 * for AAC-RAW and AAC-ADTS.
    391 * This entails some redundancy but makes it easier to avoid invalid
    392 * configurations.
    393 *
    394 */
    395
    396struct snd_codec_desc {
    397	__u32 max_ch;
    398	__u32 sample_rates[MAX_NUM_SAMPLE_RATES];
    399	__u32 num_sample_rates;
    400	__u32 bit_rate[MAX_NUM_BITRATES];
    401	__u32 num_bitrates;
    402	__u32 rate_control;
    403	__u32 profiles;
    404	__u32 modes;
    405	__u32 formats;
    406	__u32 min_buffer;
    407	__u32 reserved[15];
    408} __attribute__((packed, aligned(4)));
    409
    410/** struct snd_codec
    411 * @id: Identifies the supported audio encoder/decoder.
    412 *		See SND_AUDIOCODEC macros.
    413 * @ch_in: Number of input audio channels
    414 * @ch_out: Number of output channels. In case of contradiction between
    415 *		this field and the channelMode field, the channelMode field
    416 *		overrides.
    417 * @sample_rate: Audio sample rate of input data in Hz, use values like 48000
    418 *		for this.
    419 * @bit_rate: Bitrate of encoded data. May be ignored by decoders
    420 * @rate_control: Encoding rate control. See SND_RATECONTROLMODE defines.
    421 *               Encoders may rely on profiles for quality levels.
    422 *		 May be ignored by decoders.
    423 * @profile: Mandatory for encoders, can be mandatory for specific
    424 *		decoders as well. See SND_AUDIOPROFILE defines.
    425 * @level: Supported level (Only used by WMA at the moment)
    426 * @ch_mode: Channel mode for encoder. See SND_AUDIOCHANMODE defines
    427 * @format: Format of encoded bistream. Mandatory when defined.
    428 *		See SND_AUDIOSTREAMFORMAT defines.
    429 * @align: Block alignment in bytes of an audio sample.
    430 *		Only required for PCM or IEC formats.
    431 * @options: encoder-specific settings
    432 * @reserved: reserved for future use
    433 */
    434
    435struct snd_codec {
    436	__u32 id;
    437	__u32 ch_in;
    438	__u32 ch_out;
    439	__u32 sample_rate;
    440	__u32 bit_rate;
    441	__u32 rate_control;
    442	__u32 profile;
    443	__u32 level;
    444	__u32 ch_mode;
    445	__u32 format;
    446	__u32 align;
    447	union snd_codec_options options;
    448	__u32 reserved[3];
    449} __attribute__((packed, aligned(4)));
    450
    451#endif