15d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* 25d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * compress_offload.h - compress offload header definations 35d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 45d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Copyright (C) 2011 Intel Corporation 55d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Authors: Vinod Koul <vinod.koul@linux.intel.com> 65d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> 75d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 85d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 95d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * This program is free software; you can redistribute it and/or modify 105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * it under the terms of the GNU General Public License as published by 115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * the Free Software Foundation; version 2 of the License. 125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * This program is distributed in the hope that it will be useful, but 145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * WITHOUT ANY WARRANTY; without even the implied warranty of 155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * General Public License for more details. 175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * You should have received a copy of the GNU General Public License along 195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * with this program; if not, write to the Free Software Foundation, Inc., 205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#ifndef __COMPRESS_OFFLOAD_H 265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define __COMPRESS_OFFLOAD_H 275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/types.h> 295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <sound/asound.h> 305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <sound/compress_params.h> 315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_COMPRESS_VERSION SNDRV_PROTOCOL_VERSION(0, 1, 2) 345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/** 355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * struct snd_compressed_buffer: compressed buffer 365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @fragment_size: size of buffer fragment in bytes 375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @fragments: number of such fragments 385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_compressed_buffer { 405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 fragment_size; 415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 fragments; 425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__((packed, aligned(4))); 435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/** 455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * struct snd_compr_params: compressed stream params 465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @buffer: buffer description 475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @codec: codec parameters 485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @no_wake_mode: dont wake on fragment elapsed 495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_compr_params { 515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_compressed_buffer buffer; 525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_codec codec; 535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u8 no_wake_mode; 545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__((packed, aligned(4))); 555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/** 575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * struct snd_compr_tstamp: timestamp descriptor 585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @byte_offset: Byte offset in ring buffer to DSP 595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @copied_total: Total number of bytes copied from/to ring buffer to/by DSP 605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @pcm_frames: Frames decoded or encoded by DSP. This field will evolve by 615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * large steps and should only be used to monitor encoding/decoding 625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * progress. It shall not be used for timing estimates. 635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @pcm_io_frames: Frames rendered or received by DSP into a mixer or an audio 645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * output/input. This field should be used for A/V sync or time estimates. 655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @sampling_rate: sampling rate of audio 665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_compr_tstamp { 685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 byte_offset; 695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u64 copied_total; 705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 pcm_frames; 715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 pcm_io_frames; 725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 sampling_rate; 735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint64_t timestamp; 745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__((packed, aligned(4))); 755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/** 775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * struct snd_compr_avail: avail descriptor 785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @avail: Number of bytes available in ring buffer for writing/reading 795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @tstamp: timestamp infomation 805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_compr_avail { 825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u64 avail; 835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_compr_tstamp tstamp; 845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__((packed, aligned(4))); 855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum snd_compr_direction { 875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SND_COMPRESS_PLAYBACK = 0, 885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SND_COMPRESS_CAPTURE 895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/** 925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * struct snd_compr_caps: caps descriptor 935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @codecs: pointer to array of codecs 945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @direction: direction supported. Of type snd_compr_direction 955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @min_fragment_size: minimum fragment supported by DSP 965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @max_fragment_size: maximum fragment supported by DSP 975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @min_fragments: min fragments supported by DSP 985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @max_fragments: max fragments supported by DSP 995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @num_codecs: number of codecs supported 1005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @reserved: reserved field 1015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 1025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_compr_caps { 1035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 num_codecs; 1045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 direction; 1055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 min_fragment_size; 1065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 max_fragment_size; 1075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 min_fragments; 1085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 max_fragments; 1095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 codecs[MAX_NUM_CODECS]; 1105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 reserved[11]; 1115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__((packed, aligned(4))); 1125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/** 1145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * struct snd_compr_codec_caps: query capability of codec 1155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @codec: codec for which capability is queried 1165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @num_descriptors: number of codec descriptors 1175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @descriptor: array of codec capability descriptor 1185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 1195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_compr_codec_caps { 1205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 codec; 1215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 num_descriptors; 1225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_codec_desc descriptor[MAX_NUM_CODEC_DESCRIPTORS]; 1235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__((packed, aligned(4))); 1245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/** 1265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * struct snd_compr_audio_info: compressed input audio information 1275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @frame_size: legth of the encoded frame with valid data 1285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @reserved: reserved for furture use 1295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 1305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_compr_audio_info { 1315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t frame_size; 1325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin uint32_t reserved[15]; 1335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__((packed, aligned(4))); 1345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/** 1365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @SNDRV_COMPRESS_ENCODER_PADDING: no of samples appended by the encoder at the 1375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * end of the track 1385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @SNDRV_COMPRESS_ENCODER_DELAY: no of samples inserted by the encoder at the 1395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * beginning of the track 1405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 1415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum { 1425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_COMPRESS_ENCODER_PADDING = 1, 1435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_COMPRESS_ENCODER_DELAY = 2, 1445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_COMPRESS_MIN_BLK_SIZE = 3, 1455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_COMPRESS_MAX_BLK_SIZE = 4, 1465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/** 1495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * struct snd_compr_metadata: compressed stream metadata 1505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @key: key id 1515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @value: key value 1525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 1535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_compr_metadata { 1545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 key; 1555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 value[8]; 1565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__((packed, aligned(4))); 1575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/** 1595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * compress path ioctl definitions 1605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * SNDRV_COMPRESS_GET_CAPS: Query capability of DSP 1615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * SNDRV_COMPRESS_GET_CODEC_CAPS: Query capability of a codec 1625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * SNDRV_COMPRESS_SET_PARAMS: Set codec and stream parameters 1635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Note: only codec params can be changed runtime and stream params cant be 1645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * SNDRV_COMPRESS_GET_PARAMS: Query codec params 1655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * SNDRV_COMPRESS_TSTAMP: get the current timestamp value 1665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * SNDRV_COMPRESS_AVAIL: get the current buffer avail value. 1675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * This also queries the tstamp properties 1685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * SNDRV_COMPRESS_PAUSE: Pause the running stream 1695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * SNDRV_COMPRESS_RESUME: resume a paused stream 1705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * SNDRV_COMPRESS_START: Start a stream 1715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * SNDRV_COMPRESS_STOP: stop a running stream, discarding ring buffer content 1725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * and the buffers currently with DSP 1735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * SNDRV_COMPRESS_DRAIN: Play till end of buffers and stop after that 1745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * SNDRV_COMPRESS_SET_NEXT_TRACK_PARAM: send codec specific data for the next 1755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * track in gapless 1765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * SNDRV_COMPRESS_IOCTL_VERSION: Query the API version 1775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 1785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_COMPRESS_IOCTL_VERSION _IOR('C', 0x00, int) 1795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_COMPRESS_GET_CAPS _IOWR('C', 0x10, struct snd_compr_caps) 1805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_COMPRESS_GET_CODEC_CAPS _IOWR('C', 0x11,\ 1815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_compr_codec_caps) 1825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_COMPRESS_SET_PARAMS _IOW('C', 0x12, struct snd_compr_params) 1835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_COMPRESS_GET_PARAMS _IOR('C', 0x13, struct snd_codec) 1845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_COMPRESS_SET_METADATA _IOW('C', 0x14,\ 1855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_compr_metadata) 1865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_COMPRESS_GET_METADATA _IOWR('C', 0x15,\ 1875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_compr_metadata) 1885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_COMPRESS_TSTAMP _IOR('C', 0x20, struct snd_compr_tstamp) 1895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_COMPRESS_AVAIL _IOR('C', 0x21, struct snd_compr_avail) 1905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_COMPRESS_PAUSE _IO('C', 0x30) 1915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_COMPRESS_RESUME _IO('C', 0x31) 1925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_COMPRESS_START _IO('C', 0x32) 1935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_COMPRESS_STOP _IO('C', 0x33) 1945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_COMPRESS_DRAIN _IO('C', 0x34) 1955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_COMPRESS_NEXT_TRACK _IO('C', 0x35) 1965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_COMPRESS_PARTIAL_DRAIN _IO('C', 0x36) 1975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_COMPRESS_SET_NEXT_TRACK_PARAM\ 1985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW('C', 0x80, union snd_codec_options) 1995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* 2005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * TODO 2015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 1. add mmap support 2025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 2035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 2045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SND_COMPR_TRIGGER_DRAIN 7 /*FIXME move this to pcm.h */ 2055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SND_COMPR_TRIGGER_NEXT_TRACK 8 2065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SND_COMPR_TRIGGER_PARTIAL_DRAIN 9 2075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_COMPRESS_METADATA_MODE _IOW('C', 0x99, bool) 2095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif 210