📄 alsapcm.java
字号:
/* * AlsaPcm.java *//* * Copyright (c) 2000 by Matthias Pfisterer <Matthias.Pfisterer@gmx.de> * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */package org.tritonus.lowlevel.alsa;import org.tritonus.TDebug;public class AlsaPcm{ public static final int SND_PCM_OPEN_PLAYBACK = 0x0001; public static final int SND_PCM_OPEN_CAPTURE = 0x0002; public static final int SND_PCM_OPEN_DUPLEX = 0x0003; public static final int SND_PCM_OPEN_NONBLOCK = 0x1000; public static final int SND_PCM_CHANNEL_PLAYBACK = 0; public static final int SND_PCM_CHANNEL_CAPTURE = 1; public static final int SND_PCM_MODE_UNKNOWN = (-1); public static final int SND_PCM_MODE_STREAM = 0; public static final int SND_PCM_MODE_BLOCK = 1; public static final int SND_PCM_SFMT_S8 = 0; public static final int SND_PCM_SFMT_U8 = 1; public static final int SND_PCM_SFMT_S16_LE = 2; public static final int SND_PCM_SFMT_S16_BE = 3; public static final int SND_PCM_SFMT_U16_LE = 4; public static final int SND_PCM_SFMT_U16_BE = 5; public static final int SND_PCM_SFMT_S24_LE = 6; /* low three bytes */ public static final int SND_PCM_SFMT_S24_BE = 7; /* low three bytes */ public static final int SND_PCM_SFMT_U24_LE = 8; /* low three bytes */ public static final int SND_PCM_SFMT_U24_BE = 9; /* low three bytes */ public static final int SND_PCM_SFMT_S32_LE = 10; public static final int SND_PCM_SFMT_S32_BE = 11; public static final int SND_PCM_SFMT_U32_LE = 12; public static final int SND_PCM_SFMT_U32_BE = 13; public static final int SND_PCM_SFMT_FLOAT_LE = 14; /* 4-byte float, IEEE-754 32-bit */ public static final int SND_PCM_SFMT_FLOAT_BE = 15; /* 4-byte float, IEEE-754 32-bit */ public static final int SND_PCM_SFMT_FLOAT64_LE = 16; /* 8-byte float, IEEE-754 64-bit */ public static final int SND_PCM_SFMT_FLOAT64_BE = 17; /* 8-byte float, IEEE-754 64-bit */ public static final int SND_PCM_SFMT_IEC958_SUBFRAME_LE = 18; /* IEC-958 subframe, Little Endian */ public static final int SND_PCM_SFMT_IEC958_SUBFRAME_BE = 19; /* IEC-958 subframe, Big Endian */ public static final int SND_PCM_SFMT_MU_LAW = 20; public static final int SND_PCM_SFMT_A_LAW = 21; public static final int SND_PCM_SFMT_IMA_ADPCM = 22; public static final int SND_PCM_SFMT_MPEG = 23; public static final int SND_PCM_SFMT_GSM = 24; public static final int SND_PCM_SFMT_SPECIAL = 31;/*#ifdef SND_LITTLE_ENDIAN public static final int SND_PCM_SFMT_S16 = SND_PCM_SFMT_S16_LE public static final int SND_PCM_SFMT_U16 SND_PCM_SFMT_U16_LE public static final int SND_PCM_SFMT_S24 SND_PCM_SFMT_S24_LE public static final int SND_PCM_SFMT_U24 SND_PCM_SFMT_U24_LE public static final int SND_PCM_SFMT_S32 SND_PCM_SFMT_S32_LE public static final int SND_PCM_SFMT_U32 SND_PCM_SFMT_U32_LE public static final int SND_PCM_SFMT_FLOAT SND_PCM_SFMT_FLOAT_LE public static final int SND_PCM_SFMT_FLOAT64 SND_PCM_SFMT_FLOAT64_LE public static final int SND_PCM_SFMT_IEC958_SUBFRAME SND_PCM_SFMT_IEC958_SUBFRAME_LE#endif#ifdef SND_BIG_ENDIAN public static final int SND_PCM_SFMT_S16 SND_PCM_SFMT_S16_BE public static final int SND_PCM_SFMT_U16 SND_PCM_SFMT_U16_BE public static final int SND_PCM_SFMT_S24 SND_PCM_SFMT_S24_BE public static final int SND_PCM_SFMT_U24 SND_PCM_SFMT_U24_BE public static final int SND_PCM_SFMT_S32 SND_PCM_SFMT_S32_BE public static final int SND_PCM_SFMT_U32 SND_PCM_SFMT_U32_BE public static final int SND_PCM_SFMT_FLOAT SND_PCM_SFMT_FLOAT_BE public static final int SND_PCM_SFMT_FLOAT64 SND_PCM_SFMT_FLOAT64_BE public static final int SND_PCM_SFMT_IEC958_SUBFRAME SND_PCM_SFMT_IEC958_SUBFRAME_BE#endif*/ public static final int SND_PCM_FMT_S8 = (1 << SND_PCM_SFMT_S8); public static final int SND_PCM_FMT_U8 = (1 << SND_PCM_SFMT_U8); public static final int SND_PCM_FMT_S16_LE = (1 << SND_PCM_SFMT_S16_LE); public static final int SND_PCM_FMT_S16_BE = (1 << SND_PCM_SFMT_S16_BE); public static final int SND_PCM_FMT_U16_LE = (1 << SND_PCM_SFMT_U16_LE); public static final int SND_PCM_FMT_U16_BE = (1 << SND_PCM_SFMT_U16_BE); public static final int SND_PCM_FMT_S24_LE = (1 << SND_PCM_SFMT_S24_LE); public static final int SND_PCM_FMT_S24_BE = (1 << SND_PCM_SFMT_S24_BE); public static final int SND_PCM_FMT_U24_LE = (1 << SND_PCM_SFMT_U24_LE); public static final int SND_PCM_FMT_U24_BE = (1 << SND_PCM_SFMT_U24_BE); public static final int SND_PCM_FMT_S32_LE = (1 << SND_PCM_SFMT_S32_LE); public static final int SND_PCM_FMT_S32_BE = (1 << SND_PCM_SFMT_S32_BE); public static final int SND_PCM_FMT_U32_LE = (1 << SND_PCM_SFMT_U32_LE); public static final int SND_PCM_FMT_U32_BE = (1 << SND_PCM_SFMT_U32_BE); public static final int SND_PCM_FMT_FLOAT_LE = (1 << SND_PCM_SFMT_FLOAT_LE); public static final int SND_PCM_FMT_FLOAT_BE = (1 << SND_PCM_SFMT_FLOAT_BE); public static final int SND_PCM_FMT_FLOAT64_LE = (1 << SND_PCM_SFMT_FLOAT64_LE); public static final int SND_PCM_FMT_FLOAT64_BE = (1 << SND_PCM_SFMT_FLOAT64_BE); public static final int SND_PCM_FMT_IEC958_SUBFRAME_LE = (1 << SND_PCM_SFMT_IEC958_SUBFRAME_LE); public static final int SND_PCM_FMT_IEC958_SUBFRAME_BE = (1 << SND_PCM_SFMT_IEC958_SUBFRAME_BE); public static final int SND_PCM_FMT_MU_LAW = (1 << SND_PCM_SFMT_MU_LAW); public static final int SND_PCM_FMT_A_LAW = (1 << SND_PCM_SFMT_A_LAW); public static final int SND_PCM_FMT_IMA_ADPCM = (1 << SND_PCM_SFMT_IMA_ADPCM); public static final int SND_PCM_FMT_MPEG = (1 << SND_PCM_SFMT_MPEG); public static final int SND_PCM_FMT_GSM = (1 << SND_PCM_SFMT_GSM); public static final int SND_PCM_FMT_SPECIAL = (1 << SND_PCM_SFMT_SPECIAL);/*#ifdef SND_LITTLE_ENDIAN public static final int SND_PCM_FMT_S16 = SND_PCM_FMT_S16_LE public static final int SND_PCM_FMT_U16 SND_PCM_FMT_U16_LE public static final int SND_PCM_FMT_S24 SND_PCM_FMT_S24_LE public static final int SND_PCM_FMT_U24 SND_PCM_FMT_U24_LE public static final int SND_PCM_FMT_S32 SND_PCM_FMT_S32_LE public static final int SND_PCM_FMT_U32 SND_PCM_FMT_U32_LE public static final int SND_PCM_FMT_FLOAT SND_PCM_FMT_FLOAT_LE public static final int SND_PCM_FMT_FLOAT64 SND_PCM_FMT_FLOAT64_LE public static final int SND_PCM_FMT_IEC958_SUBFRAME SND_PCM_FMT_IEC958_SUBFRAME_LE#endif#ifdef SND_BIG_ENDIAN public static final int SND_PCM_FMT_S16 SND_PCM_FMT_S16_BE public static final int SND_PCM_FMT_U16 SND_PCM_FMT_U16_BE public static final int SND_PCM_FMT_S24 SND_PCM_FMT_S24_BE public static final int SND_PCM_FMT_U24 SND_PCM_FMT_U24_BE public static final int SND_PCM_FMT_S32 SND_PCM_FMT_S32_BE public static final int SND_PCM_FMT_U32 SND_PCM_FMT_U32_BE public static final int SND_PCM_FMT_FLOAT SND_PCM_FMT_FLOAT_BE public static final int SND_PCM_FMT_FLOAT64 SND_PCM_FMT_FLOAT64_BE public static final int SND_PCM_FMT_IEC958_SUBFRAME SND_PCM_FMT_IEC958_SUBFRAME_BE#endif*/ public static final int SND_PCM_RATE_CONTINUOUS = (1<<0); /* continuous range */ public static final int SND_PCM_RATE_KNOT = (1<<1); /* supports more non-continuos rates */ public static final int SND_PCM_RATE_8000 = (1<<2); /* 8000Hz */ public static final int SND_PCM_RATE_11025 = (1<<3); /* 11025Hz */ public static final int SND_PCM_RATE_16000 = (1<<4); /* 16000Hz */ public static final int SND_PCM_RATE_22050 = (1<<5); /* 22050Hz */ public static final int SND_PCM_RATE_32000 = (1<<6); /* 32000Hz */ public static final int SND_PCM_RATE_44100 = (1<<7); /* 44100Hz */ public static final int SND_PCM_RATE_48000 = (1<<8); /* 48000Hz */ public static final int SND_PCM_RATE_88200 = (1<<9); /* 88200Hz */ public static final int SND_PCM_RATE_96000 = (1<<10); /* 96000Hz */ public static final int SND_PCM_RATE_176400 = (1<<11); /* 176400Hz */ public static final int SND_PCM_RATE_192000 = (1<<12); /* 192000Hz */ public static final int SND_PCM_RATE_8000_44100 = (SND_PCM_RATE_8000|SND_PCM_RATE_11025| SND_PCM_RATE_16000|SND_PCM_RATE_22050| SND_PCM_RATE_32000|SND_PCM_RATE_44100); public static final int SND_PCM_RATE_8000_48000 = (SND_PCM_RATE_8000_44100|SND_PCM_RATE_48000); public static final int SND_PCM_RATE_8000_96000 = (SND_PCM_RATE_8000_48000|SND_PCM_RATE_88200| SND_PCM_RATE_96000); public static final int SND_PCM_INFO_PLAYBACK = 0x00000001; public static final int SND_PCM_INFO_CAPTURE = 0x00000002; public static final int SND_PCM_INFO_DUPLEX = 0x00000100; public static final int SND_PCM_INFO_DUPLEX_RATE = 0x00000200; /* rate for playback & capture channels must be same!!! */ public static final int SND_PCM_INFO_DUPLEX_MONO = 0x00000400; /* in duplex mode - only mono (one channel) is supported */ public static final int SND_PCM_CHNINFO_MMAP = 0x00000001; /* hardware supports mmap */ public static final int SND_PCM_CHNINFO_STREAM = 0x00000002; /* hardware supports streaming */ public static final int SND_PCM_CHNINFO_BLOCK = 0x00000004; /* hardware supports block mode */ public static final int SND_PCM_CHNINFO_BATCH = 0x00000010; /* double buffering */ public static final int SND_PCM_CHNINFO_INTERLEAVE = 0x00000100; /* voices are interleaved */ public static final int SND_PCM_CHNINFO_NONINTERLEAVE = 0x00000200; /* voices are not interleaved */ public static final int SND_PCM_CHNINFO_BLOCK_TRANSFER = 0x00010000; /* hardware transfer block of samples */ public static final int SND_PCM_CHNINFO_OVERRANGE = 0x00020000; /* hardware supports ADC (capture) overrange detection */ public static final int SND_PCM_CHNINFO_MMAP_VALID = 0x00040000; /* fragment data are valid during transfer */ public static final int SND_PCM_CHNINFO_PAUSE = 0x00080000; /* pause ioctl is supported */ public static final int SND_PCM_CHNINFO_GLOBAL_PARAMS = 0x00100000; /* parameters can be set via switches only */ public static final int SND_PCM_START_DATA = 0; /* start when some data are written (playback) or requested (capture) */ public static final int SND_PCM_START_FULL = 1; /* start when whole queue is filled (playback) */ public static final int SND_PCM_START_GO = 2; /* start on the go command */ public static final int SND_PCM_STOP_STOP = 0; /* stop when underrun/overrun */ public static final int SND_PCM_STOP_STOP_ERASE = 1; /* stop & erase when overrun (capture) */ public static final int SND_PCM_STOP_ROLLOVER = 2; /* rollover when overrun/underrun */ public static final int SND_PCM_FILL_NONE = 0; /* don't fill the buffer with silent samples */ public static final int SND_PCM_FILL_SILENCE_WHOLE = 1; /* fill the whole buffer with silence */ public static final int SND_PCM_FILL_SILENCE = 2; /* fill the partial buffer with silence */ public static final int SND_PCM_STATUS_NOTREADY = 0; /* channel is not ready */ public static final int SND_PCM_STATUS_READY = 1; /* channel is ready for prepare call */ public static final int SND_PCM_STATUS_PREPARED = 2; /* channel is ready to go */ public static final int SND_PCM_STATUS_RUNNING = 3; /* channel is running */ public static final int SND_PCM_STATUS_UNDERRUN = 4; /* channel reached an underrun and it is not ready */ public static final int SND_PCM_STATUS_OVERRUN = 5; /* channel reached an overrun and it is not ready */ public static final int SND_PCM_STATUS_PAUSED = 6; /* channel is paused */ public static final int SND_PCM_BOUNDARY = 0xf0000000; public static final int SND_PCM_MMAP_OFFSET_CONTROL = 0x00000000; public static final int SND_PCM_MMAP_OFFSET_DATA = 0x80000000; public static final String SND_PCM_SW_RATE = "Sample Rate"; public static final String SND_PCM_SW_FORMAT = "Format"; public static final String SND_PCM_SW_VOICES = "Voices"; public static final String SND_PCM_SW_FRAGMENT_SIZE = "Fragment Size"; public static final int SND_PCM_DIG0_PROFESSIONAL = (1<<0); /* 0 = consumer, 1 = professional */ public static final int SND_PCM_DIG0_NONAUDIO = (1<<1); /* 0 = audio, 1 = non-audio */ public static final int SND_PCM_DIG0_PRO_EMPHASIS = (7<<2); /* mask - emphasis */ public static final int SND_PCM_DIG0_PRO_EMPHASIS_NOTID = (0<<2); /* emphasis not indicated */ public static final int SND_PCM_DIG0_PRO_EMPHASIS_NONE = (1<<2); /* none emphasis */ public static final int SND_PCM_DIG0_PRO_EMPHASIS_5015 = (3<<2); /* 50/15us emphasis */ public static final int SND_PCM_DIG0_PRO_EMPHASIS_CCITT = (7<<2); /* CCITT J.17 emphasis */ public static final int SND_PCM_DIG0_PRO_FREQ_UNLOCKED = (1<<5); /* source sample frequency: 0 = locked, 1 = unlocked */ public static final int SND_PCM_DIG0_PRO_FS = (3<<6); /* mask - sample frequency */ public static final int SND_PCM_DIG0_PRO_FS_NOTID = (0<<6); /* fs not indicated */ public static final int SND_PCM_DIG0_PRO_FS_44100 = (1<<6); /* 44.1kHz */ public static final int SND_PCM_DIG0_PRO_FS_48000 = (2<<6); /* 48kHz */ public static final int SND_PCM_DIG0_PRO_FS_32000 = (3<<6); /* 32kHz */ public static final int SND_PCM_DIG0_CON_NOT_COPYRIGHT = (1<<2); /* 0 = copyright, 1 = not copyright */ public static final int SND_PCM_DIG0_CON_EMPHASIS = (7<<3); /* mask - emphasis */ public static final int SND_PCM_DIG0_CON_EMPHASIS_NONE = (0<<3); /* none emphasis */ public static final int SND_PCM_DIG0_CON_EMPHASIS_5015 = (1<<3); /* 50/15us emphasis */ public static final int SND_PCM_DIG0_CON_MODE = (3<<6); /* mask - mode */ public static final int SND_PCM_DIG1_PRO_MODE = (15<<0); /* mask - channel mode */ public static final int SND_PCM_DIG1_PRO_MODE_NOTID = (0<<0); /* not indicated */ public static final int SND_PCM_DIG1_PRO_MODE_STEREOPHONIC = (2<<0); /* stereophonic - ch A is left */ public static final int SND_PCM_DIG1_PRO_MODE_SINGLE = (4<<0); /* single channel */ public static final int SND_PCM_DIG1_PRO_MODE_TWO = (8<<0); /* two channels */ public static final int SND_PCM_DIG1_PRO_MODE_PRIMARY = (12<<0); /* primary/secondary */ public static final int SND_PCM_DIG1_PRO_MODE_BYTE3 = (15<<0); /* vector to byte 3 */ public static final int SND_PCM_DIG1_PRO_USERBITS = (15<<4); /* mask - user bits */ public static final int SND_PCM_DIG1_PRO_USERBITS_NOTID = (0<<4); /* not indicated */ public static final int SND_PCM_DIG1_PRO_USERBITS_192 = (8<<4); /* 192-bit structure */ public static final int SND_PCM_DIG1_PRO_USERBITS_UDEF = (12<<4); /* user defined application */ public static final int SND_PCM_DIG1_CON_CATEGORY = 0x7f; public static final int SND_PCM_DIG1_CON_GENERAL = 0x00; public static final int SND_PCM_DIG1_CON_EXPERIMENTAL = 0x40; public static final int SND_PCM_DIG1_CON_SOLIDMEM_MASK = 0x0f; public static final int SND_PCM_DIG1_CON_SOLIDMEM_ID = 0x08; public static final int SND_PCM_DIG1_CON_BROADCAST1_MASK = 0x07; public static final int SND_PCM_DIG1_CON_BROADCAST1_ID = 0x04; public static final int SND_PCM_DIG1_CON_DIGDIGCONV_MASK = 0x07; public static final int SND_PCM_DIG1_CON_DIGDIGCONV_ID = 0x02; public static final int SND_PCM_DIG1_CON_ADC_COPYRIGHT_MASK = 0x1f; public static final int SND_PCM_DIG1_CON_ADC_COPYRIGHT_ID = 0x06; public static final int SND_PCM_DIG1_CON_ADC_MASK = 0x1f; public static final int SND_PCM_DIG1_CON_ADC_ID = 0x16; public static final int SND_PCM_DIG1_CON_BROADCAST2_MASK = 0x0f; public static final int SND_PCM_DIG1_CON_BROADCAST2_ID = 0x0e; public static final int SND_PCM_DIG1_CON_LASEROPT_MASK = 0x07; public static final int SND_PCM_DIG1_CON_LASEROPT_ID = 0x01; public static final int SND_PCM_DIG1_CON_MUSICAL_MASK = 0x07;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -