/***************************************************************************\ * * MPEG Layer3-Audio Decoder * © 1997-2006 by Fraunhofer IIS * All Rights Reserved * * filename: mp3sscdef.h * project : --- * author : Martin Sieler * date : 1998-02-16 * contents/description: ssc definitions (Structured Status Code) * * \***************************************************************************/ /* * $Date: 2010/11/17 20:46:04 $ * $Id: mp3sscdef.h,v 1.1 2010/11/17 20:46:04 audiodsp Exp $ */ #ifndef __MP3SSCDEF_H__ #define __MP3SSCDEF_H__ /*------------------------- includes --------------------------------------*/ /*-------------------------- defines --------------------------------------*/ /*-------------------------------------------------------------------------*\ * * Standard error/return values are 32 bit values layed out as follows: * * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 * +---+-+-+-----------------------+-------------------------------+ * |Sev|C|R| Handler | Code | * +---+-+-+-----------------------+-------------------------------+ * * where * * Sev - is the severity code * * 00 - Success * 01 - Informational * 10 - Warning * 11 - Error * * C - is the Customer code flag * * R - is a reserved bit * * Handler - is the handler code * * Code - is the facility's status code * \*-------------------------------------------------------------------------*/ /* * define the Severity codes */ #define SSC_SEV_SUCCESS 0x00000000L #define SSC_SEV_INFO 0x40000000L #define SSC_SEV_WARNING 0x80000000L #define SSC_SEV_ERROR 0xc0000000L /* * define masks to extract the fields */ #define SSC_MASK_SEVERITY 0xc0000000L #define SSC_MASK_HANDLER 0x0fff0000L #define SSC_MASK_CODE 0x0000ffffL /* * define MACROS to test an error/return code */ #define SSC_GETSEV(x) ( (x) & SSC_MASK_SEVERITY ) /* Check, if an SSC indicates success */ #define SSC_SUCCESS(x) (((SSC_GETSEV(x)==SSC_SEV_SUCCESS)||(SSC_GETSEV(x)==SSC_SEV_INFO))?1:0) /* Check, if an SSC indicates an information */ #define SSC_INFO(x) ((SSC_GETSEV(x)==SSC_SEV_INFO)?1:0) /* Check, if an SSC indicates a warning */ #define SSC_WARNING(x) ((SSC_GETSEV(x)==SSC_SEV_WARNING)?1:0) /* Check, if an SSC indicates an error */ #define SSC_ERROR(x) ((SSC_GETSEV(x)==SSC_SEV_ERROR)?1:0) /*-------------------------------------------------------------------------*\ * * SSC classes (handler) * \*-------------------------------------------------------------------------*/ #define SSC_HANDLER_GEN 0x00000000L #define SSC_I_GEN (SSC_SEV_INFO | SSC_HANDLER_GEN) #define SSC_W_GEN (SSC_SEV_WARNING | SSC_HANDLER_GEN) #define SSC_E_GEN (SSC_SEV_ERROR | SSC_HANDLER_GEN) /*-------------------------------------------------------------------------*/ #define SSC_HANDLER_IO 0x00010000L #define SSC_I_IO (SSC_SEV_INFO | SSC_HANDLER_IO) #define SSC_W_IO (SSC_SEV_WARNING | SSC_HANDLER_IO) #define SSC_E_IO (SSC_SEV_ERROR | SSC_HANDLER_IO) /*-------------------------------------------------------------------------*/ #define SSC_HANDLER_MPGA 0x01010000L #define SSC_I_MPGA (SSC_SEV_INFO | SSC_HANDLER_MPGA) #define SSC_W_MPGA (SSC_SEV_WARNING | SSC_HANDLER_MPGA) #define SSC_E_MPGA (SSC_SEV_ERROR | SSC_HANDLER_MPGA) /*-------------------------------------------------------------------------*\ * * SSC codes * \*-------------------------------------------------------------------------*/ typedef enum { SSC_OK = 0x00000000L, SSC_E_WRONGPARAMETER = (SSC_E_GEN | 1), SSC_E_OUTOFMEMORY = (SSC_E_GEN | 2), SSC_E_INVALIDHANDLE = (SSC_E_GEN | 3), SSC_E_IO_GENERIC = (SSC_W_IO | 1), SSC_E_IO_OPENFAILED = (SSC_W_IO | 2), SSC_E_IO_CLOSEFAILED = (SSC_W_IO | 3), SSC_E_IO_READFAILED = (SSC_W_IO | 4), SSC_I_MPGA_CRCERROR = (SSC_I_MPGA | 1), SSC_I_MPGA_NOMAINDATA = (SSC_I_MPGA | 2), SSC_E_MPGA_GENERIC = (SSC_E_MPGA | 1), SSC_E_MPGA_WRONGLAYER = (SSC_E_MPGA | 2), SSC_E_MPGA_BUFFERTOOSMALL = (SSC_E_MPGA | 3), SSC_W_MPGA_SYNCSEARCHED = (SSC_W_MPGA | 1), SSC_W_MPGA_SYNCLOST = (SSC_W_MPGA | 2), SSC_W_MPGA_SYNCNEEDDATA = (SSC_W_MPGA | 3), SSC_W_MPGA_SYNCEOF = (SSC_W_MPGA | 4) } SSC; /*-------------------------------------------------------------------------*/ #endif