| /*************************************************************************** |
| * __________ __ ___. |
| * Open \______ \ ____ ____ | | _\_ |__ _______ ___ |
| * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / |
| * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < |
| * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ |
| * \/ \/ \/ \/ \/ |
| * $Id$ |
| * |
| * Copyright (C) 2005 by Linus Nielsen Feltzing |
| * Copyright (C) 2006-2013 by Michael Sevakis |
| * |
| * This program is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU General Public License |
| * as published by the Free Software Foundation; either version 2 |
| * of the License, or (at your option) any later version. |
| * |
| * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| * KIND, either express or implied. |
| * |
| ****************************************************************************/ |
| #ifndef PCM_RECORD_H |
| #define PCM_RECORD_H |
| |
| /** Warnings (recording may continue with possible data loss) |
| ** Reset of recording clears, otherwise see notes below |
| */ |
| |
| /* PCM buffer has overflowed; PCM samples were dropped */ |
| /* persists until: stop, new file, clear */ |
| #define PCMREC_W_PCM_BUFFER_OVF 0x00000001 |
| /* encoder output buffer has overflowed; encoded data was dropped */ |
| /* persists until: stop, new file, clear */ |
| #define PCMREC_W_ENC_BUFFER_OVF 0x00000002 |
| /* encoder and set/detected sample rates do not match */ |
| /* persists until: rates match, clear */ |
| #define PCMREC_W_SAMPR_MISMATCH 0x00000004 |
| /* PCM frame skipped because of recoverable DMA error */ |
| /* persists until: clear */ |
| #define PCMREC_W_DMA 0x00000008 |
| /* internal file size limit was reached; encoded data was dropped */ |
| /* persists until: stop, new file, clear */ |
| #define PCMREC_W_FILE_SIZE 0x00000010 |
| |
| /* all warning flags */ |
| #define PCMREC_W_ALL 0x0000001f |
| |
| /** Errors (recording should be reset) |
| ** |
| ** Stopping recording if recording clears internally and externally visible |
| ** status must be cleared with audio_error_clear() |
| ** reset of recording clears |
| */ |
| |
| /* DMA callback has reported an error */ |
| #define PCMREC_E_DMA 0x80010000 |
| /* failed to load encoder */ |
| #define PCMREC_E_LOAD_ENCODER 0x80020000 |
| /* error originating in encoder */ |
| #define PCMREC_E_ENCODER 0x80040000 |
| /* error from encoder setup of stream parameters */ |
| #define PCMREC_E_ENC_SETUP 0x80080000 |
| /* error writing to output stream */ |
| #define PCMREC_E_ENCODER_STREAM 0x80100000 |
| /* I/O error has occurred */ |
| #define PCMREC_E_IO 0x80200000 |
| |
| /* all error flags */ |
| #define PCMREC_E_ALL 0x803f0000 |
| |
| /* Functions called by audio_thread.c */ |
| void pcm_rec_error_clear(void); |
| unsigned int pcm_rec_status(void); |
| uint32_t pcm_rec_get_warnings(void); |
| #ifdef HAVE_SPDIF_IN |
| unsigned long pcm_rec_sample_rate(void); |
| #endif |
| |
| void recording_init(void); |
| |
| /* audio.h contains audio_* recording functions */ |
| |
| #endif /* PCM_RECORD_H */ |