/* $Id$ */ /* * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com) * Copyright (C) 2003-2008 Benny Prijono * * 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 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef __PJMEDIA_ERRNO_H__ #define __PJMEDIA_ERRNO_H__ /** * @file errno.h Error Codes * @brief PJMEDIA specific error codes. */ #include #include /** * @defgroup PJMEDIA_ERRNO Error Codes * @ingroup PJMEDIA_BASE * @brief PJMEDIA specific error codes. * @{ */ PJ_BEGIN_DECL /** * Start of error code relative to PJ_ERRNO_START_USER. */ #define PJMEDIA_ERRNO_START (PJ_ERRNO_START_USER + PJ_ERRNO_SPACE_SIZE) #define PJMEDIA_ERRNO_END (PJMEDIA_ERRNO_START + PJ_ERRNO_SPACE_SIZE - 1) /** * Mapping from PortAudio error codes to pjmedia error space. */ #define PJMEDIA_PORTAUDIO_ERRNO_START (PJMEDIA_ERRNO_END-10000) #define PJMEDIA_PORTAUDIO_ERRNO_END (PJMEDIA_PORTAUDIO_ERRNO_START + 10000 -1) /** * Convert PortAudio error code to PJMEDIA error code. * PortAudio error code range: 0 >= err >= -10000 */ #define PJMEDIA_ERRNO_FROM_PORTAUDIO(err) ((int)PJMEDIA_PORTAUDIO_ERRNO_START-err) #if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) /** * Mapping from LibSRTP error codes to pjmedia error space. */ #define PJMEDIA_LIBSRTP_ERRNO_START (PJMEDIA_ERRNO_END-10200) #define PJMEDIA_LIBSRTP_ERRNO_END (PJMEDIA_LIBSRTP_ERRNO_START + 200 - 1) /** * Convert LibSRTP error code to PJMEDIA error code. * LibSRTP error code range: 0 <= err < 200 */ #define PJMEDIA_ERRNO_FROM_LIBSRTP(err) (PJMEDIA_LIBSRTP_ERRNO_START+err) #endif /************************************************************ * GENERIC/GENERAL PJMEDIA ERRORS ***********************************************************/ /** * @hideinitializer * General/unknown PJMEDIA error. */ #define PJMEDIA_ERROR (PJMEDIA_ERRNO_START+1) /* 220001 */ /************************************************************ * SDP ERRORS ***********************************************************/ /** * @hideinitializer * Generic invalid SDP descriptor. */ #define PJMEDIA_SDP_EINSDP (PJMEDIA_ERRNO_START+20) /* 220020 */ /** * @hideinitializer * Invalid SDP version. */ #define PJMEDIA_SDP_EINVER (PJMEDIA_ERRNO_START+21) /* 220021 */ /** * @hideinitializer * Invalid SDP origin (o=) line. */ #define PJMEDIA_SDP_EINORIGIN (PJMEDIA_ERRNO_START+22) /* 220022 */ /** * @hideinitializer * Invalid SDP time (t=) line. */ #define PJMEDIA_SDP_EINTIME (PJMEDIA_ERRNO_START+23) /* 220023 */ /** * @hideinitializer * Empty SDP subject/name (s=) line. */ #define PJMEDIA_SDP_EINNAME (PJMEDIA_ERRNO_START+24) /* 220024 */ /** * @hideinitializer * Invalid SDP connection info (c=) line. */ #define PJMEDIA_SDP_EINCONN (PJMEDIA_ERRNO_START+25) /* 220025 */ /** * @hideinitializer * Missing SDP connection info line. */ #define PJMEDIA_SDP_EMISSINGCONN (PJMEDIA_ERRNO_START+26) /* 220026 */ /** * @hideinitializer * Invalid attribute (a=) line. */ #define PJMEDIA_SDP_EINATTR (PJMEDIA_ERRNO_START+27) /* 220027 */ /** * @hideinitializer * Invalid rtpmap attribute. */ #define PJMEDIA_SDP_EINRTPMAP (PJMEDIA_ERRNO_START+28) /* 220028 */ /** * @hideinitializer * rtpmap attribute is too long. */ #define PJMEDIA_SDP_ERTPMAPTOOLONG (PJMEDIA_ERRNO_START+29) /* 220029 */ /** * @hideinitializer * rtpmap is missing for dynamic payload type. */ #define PJMEDIA_SDP_EMISSINGRTPMAP (PJMEDIA_ERRNO_START+30) /* 220030 */ /** * @hideinitializer * Invalid SDP media (m=) line. */ #define PJMEDIA_SDP_EINMEDIA (PJMEDIA_ERRNO_START+31) /* 220031 */ /** * @hideinitializer * No payload format in the media stream. */ #define PJMEDIA_SDP_ENOFMT (PJMEDIA_ERRNO_START+32) /* 220032 */ /** * @hideinitializer * Invalid payload type in media. */ #define PJMEDIA_SDP_EINPT (PJMEDIA_ERRNO_START+33) /* 220033 */ /** * @hideinitializer * Invalid SDP "fmtp" attribute. */ #define PJMEDIA_SDP_EINFMTP (PJMEDIA_ERRNO_START+34) /* 220034 */ /** * @hideinitializer * Invalid SDP "rtcp" attribute. */ #define PJMEDIA_SDP_EINRTCP (PJMEDIA_ERRNO_START+35) /* 220035 */ /** * @hideinitializer * Invalid SDP media transport protocol. */ #define PJMEDIA_SDP_EINPROTO (PJMEDIA_ERRNO_START+36) /* 220036 */ /** * @hideinitializer * Invalid SDP bandwidth info (b=) line. */ #define PJMEDIA_SDP_EINBANDW (PJMEDIA_ERRNO_START+37) /* 220037 */ /** * @hideinitializer * Invalid SDP "ssrc" attribute. */ #define PJMEDIA_SDP_EINSSRC (PJMEDIA_ERRNO_START+38) /* 220038 */ /************************************************************ * SDP NEGOTIATOR ERRORS ***********************************************************/ /** * @hideinitializer * Invalid state to perform the specified operation. */ #define PJMEDIA_SDPNEG_EINSTATE (PJMEDIA_ERRNO_START+40) /* 220040 */ /** * @hideinitializer * No initial local SDP. */ #define PJMEDIA_SDPNEG_ENOINITIAL (PJMEDIA_ERRNO_START+41) /* 220041 */ /** * @hideinitializer * No currently active SDP. */ #define PJMEDIA_SDPNEG_ENOACTIVE (PJMEDIA_ERRNO_START+42) /* 220042 */ /** * @hideinitializer * No current offer or answer. */ #define PJMEDIA_SDPNEG_ENONEG (PJMEDIA_ERRNO_START+43) /* 220043 */ /** * @hideinitializer * Media count mismatch in offer and answer. */ #define PJMEDIA_SDPNEG_EMISMEDIA (PJMEDIA_ERRNO_START+44) /* 220044 */ /** * @hideinitializer * Media type is different in the remote answer. */ #define PJMEDIA_SDPNEG_EINVANSMEDIA (PJMEDIA_ERRNO_START+45) /* 220045 */ /** * @hideinitializer * Transport type is different in the remote answer. */ #define PJMEDIA_SDPNEG_EINVANSTP (PJMEDIA_ERRNO_START+46) /* 220046 */ /** * @hideinitializer * No common media payload is provided in the answer. */ #define PJMEDIA_SDPNEG_EANSNOMEDIA (PJMEDIA_ERRNO_START+47) /* 220047 */ /** * @hideinitializer * No media is active after negotiation. */ #define PJMEDIA_SDPNEG_ENOMEDIA (PJMEDIA_ERRNO_START+48) /* 220048 */ /** * @hideinitializer * No suitable codec for remote offer. */ #define PJMEDIA_SDPNEG_NOANSCODEC (PJMEDIA_ERRNO_START+49) /* 220049 */ /** * @hideinitializer * No suitable telephone-event for remote offer. */ #define PJMEDIA_SDPNEG_NOANSTELEVENT (PJMEDIA_ERRNO_START+50) /* 220050 */ /** * @hideinitializer * No suitable answer for unknown remote offer. */ #define PJMEDIA_SDPNEG_NOANSUNKNOWN (PJMEDIA_ERRNO_START+51) /* 220051 */ /************************************************************ * SDP COMPARISON STATUS ***********************************************************/ /** * @hideinitializer * SDP media stream not equal. */ #define PJMEDIA_SDP_EMEDIANOTEQUAL (PJMEDIA_ERRNO_START+60) /* 220060 */ /** * @hideinitializer * Port number in SDP media descriptor not equal. */ #define PJMEDIA_SDP_EPORTNOTEQUAL (PJMEDIA_ERRNO_START+61) /* 220061 */ /** * @hideinitializer * Transport in SDP media descriptor not equal. */ #define PJMEDIA_SDP_ETPORTNOTEQUAL (PJMEDIA_ERRNO_START+62) /* 220062 */ /** * @hideinitializer * Media format in SDP media descriptor not equal. */ #define PJMEDIA_SDP_EFORMATNOTEQUAL (PJMEDIA_ERRNO_START+63) /* 220063 */ /** * @hideinitializer * SDP connection description not equal. */ #define PJMEDIA_SDP_ECONNNOTEQUAL (PJMEDIA_ERRNO_START+64) /* 220064 */ /** * @hideinitializer * SDP attributes not equal. */ #define PJMEDIA_SDP_EATTRNOTEQUAL (PJMEDIA_ERRNO_START+65) /* 220065 */ /** * @hideinitializer * SDP media direction not equal. */ #define PJMEDIA_SDP_EDIRNOTEQUAL (PJMEDIA_ERRNO_START+66) /* 220066 */ /** * @hideinitializer * SDP fmtp attribute not equal. */ #define PJMEDIA_SDP_EFMTPNOTEQUAL (PJMEDIA_ERRNO_START+67) /* 220067 */ /** * @hideinitializer * SDP ftpmap attribute not equal. */ #define PJMEDIA_SDP_ERTPMAPNOTEQUAL (PJMEDIA_ERRNO_START+68) /* 220068 */ /** * @hideinitializer * SDP session descriptor not equal. */ #define PJMEDIA_SDP_ESESSNOTEQUAL (PJMEDIA_ERRNO_START+69) /* 220069 */ /** * @hideinitializer * SDP origin not equal. */ #define PJMEDIA_SDP_EORIGINNOTEQUAL (PJMEDIA_ERRNO_START+70) /* 220070 */ /** * @hideinitializer * SDP name/subject not equal. */ #define PJMEDIA_SDP_ENAMENOTEQUAL (PJMEDIA_ERRNO_START+71) /* 220071 */ /** * @hideinitializer * SDP time not equal. */ #define PJMEDIA_SDP_ETIMENOTEQUAL (PJMEDIA_ERRNO_START+72) /* 220072 */ /************************************************************ * CODEC ***********************************************************/ /** * @hideinitializer * Unsupported codec. */ #define PJMEDIA_CODEC_EUNSUP (PJMEDIA_ERRNO_START+80) /* 220080 */ /** * @hideinitializer * Codec internal creation error. */ #define PJMEDIA_CODEC_EFAILED (PJMEDIA_ERRNO_START+81) /* 220081 */ /** * @hideinitializer * Codec frame is too short. */ #define PJMEDIA_CODEC_EFRMTOOSHORT (PJMEDIA_ERRNO_START+82) /* 220082 */ /** * @hideinitializer * PCM buffer is too short. */ #define PJMEDIA_CODEC_EPCMTOOSHORT (PJMEDIA_ERRNO_START+83) /* 220083 */ /** * @hideinitializer * Invalid codec frame length. */ #define PJMEDIA_CODEC_EFRMINLEN (PJMEDIA_ERRNO_START+84) /* 220084 */ /** * @hideinitializer * Invalid PCM frame length. */ #define PJMEDIA_CODEC_EPCMFRMINLEN (PJMEDIA_ERRNO_START+85) /* 220085 */ /** * @hideinitializer * Invalid mode. */ #define PJMEDIA_CODEC_EINMODE (PJMEDIA_ERRNO_START+86) /* 220086 */ /** * @hideinitializer * Bad or corrupted bitstream. */ #define PJMEDIA_CODEC_EBADBITSTREAM (PJMEDIA_ERRNO_START+87) /* 220087 */ /************************************************************ * MEDIA ***********************************************************/ /** * @hideinitializer * Invalid remote IP address (in SDP). */ #define PJMEDIA_EINVALIDIP (PJMEDIA_ERRNO_START+100) /* 220100 */ /** * @hideinitializer * Asymetric codec is not supported. */ #define PJMEDIA_EASYMCODEC (PJMEDIA_ERRNO_START+101) /* 220101 */ /** * @hideinitializer * Invalid payload type. */ #define PJMEDIA_EINVALIDPT (PJMEDIA_ERRNO_START+102) /* 220102 */ /** * @hideinitializer * Missing rtpmap. */ #define PJMEDIA_EMISSINGRTPMAP (PJMEDIA_ERRNO_START+103) /* 220103 */ /** * @hideinitializer * Invalid media type. */ #define PJMEDIA_EINVALIMEDIATYPE (PJMEDIA_ERRNO_START+104) /* 220104 */ /** * @hideinitializer * Remote does not support DTMF. */ #define PJMEDIA_EREMOTENODTMF (PJMEDIA_ERRNO_START+105) /* 220105 */ /** * @hideinitializer * Invalid DTMF digit. */ #define PJMEDIA_RTP_EINDTMF (PJMEDIA_ERRNO_START+106) /* 220106 */ /** * @hideinitializer * Remote does not support RFC 2833 */ #define PJMEDIA_RTP_EREMNORFC2833 (PJMEDIA_ERRNO_START+107) /* 220107 */ /** * @hideinitializer * Invalid or bad format */ #define PJMEDIA_EBADFMT (PJMEDIA_ERRNO_START+108) /* 220108 */ /** * @hideinitializer * Unsupported media type. */ #define PJMEDIA_EUNSUPMEDIATYPE (PJMEDIA_ERRNO_START+109) /* 220109 */ /************************************************************ * RTP SESSION ERRORS ***********************************************************/ /** * @hideinitializer * General invalid RTP packet error. */ #define PJMEDIA_RTP_EINPKT (PJMEDIA_ERRNO_START+120) /* 220120 */ /** * @hideinitializer * Invalid RTP packet packing. */ #define PJMEDIA_RTP_EINPACK (PJMEDIA_ERRNO_START+121) /* 220121 */ /** * @hideinitializer * Invalid RTP packet version. */ #define PJMEDIA_RTP_EINVER (PJMEDIA_ERRNO_START+122) /* 220122 */ /** * @hideinitializer * RTP SSRC id mismatch. */ #define PJMEDIA_RTP_EINSSRC (PJMEDIA_ERRNO_START+123) /* 220123 */ /** * @hideinitializer * RTP payload type mismatch. */ #define PJMEDIA_RTP_EINPT (PJMEDIA_ERRNO_START+124) /* 220124 */ /** * @hideinitializer * Invalid RTP packet length. */ #define PJMEDIA_RTP_EINLEN (PJMEDIA_ERRNO_START+125) /* 220125 */ /** * @hideinitializer * RTP session restarted. */ #define PJMEDIA_RTP_ESESSRESTART (PJMEDIA_ERRNO_START+130) /* 220130 */ /** * @hideinitializer * RTP session in probation */ #define PJMEDIA_RTP_ESESSPROBATION (PJMEDIA_ERRNO_START+131) /* 220131 */ /** * @hideinitializer * Bad RTP sequence number */ #define PJMEDIA_RTP_EBADSEQ (PJMEDIA_ERRNO_START+132) /* 220132 */ /** * @hideinitializer * RTP media port destination is not configured */ #define PJMEDIA_RTP_EBADDEST (PJMEDIA_ERRNO_START+133) /* 220133 */ /** * @hideinitializer * RTP is not configured. */ #define PJMEDIA_RTP_ENOCONFIG (PJMEDIA_ERRNO_START+134) /* 220134 */ /************************************************************ * PORT ERRORS ***********************************************************/ /** * @hideinitializer * Generic incompatible port error. */ #define PJMEDIA_ENOTCOMPATIBLE (PJMEDIA_ERRNO_START+160) /* 220160 */ /** * @hideinitializer * Incompatible clock rate */ #define PJMEDIA_ENCCLOCKRATE (PJMEDIA_ERRNO_START+161) /* 220161 */ /** * @hideinitializer * Incompatible samples per frame */ #define PJMEDIA_ENCSAMPLESPFRAME (PJMEDIA_ERRNO_START+162) /* 220162 */ /** * @hideinitializer * Incompatible media type */ #define PJMEDIA_ENCTYPE (PJMEDIA_ERRNO_START+163) /* 220163 */ /** * @hideinitializer * Incompatible bits per sample */ #define PJMEDIA_ENCBITS (PJMEDIA_ERRNO_START+164) /* 220164 */ /** * @hideinitializer * Incompatible bytes per frame */ #define PJMEDIA_ENCBYTES (PJMEDIA_ERRNO_START+165) /* 220165 */ /** * @hideinitializer * Incompatible number of channels */ #define PJMEDIA_ENCCHANNEL (PJMEDIA_ERRNO_START+166) /* 220166 */ /************************************************************ * FILE ERRORS ***********************************************************/ /** * @hideinitializer * Not a valid WAVE file. */ #define PJMEDIA_ENOTVALIDWAVE (PJMEDIA_ERRNO_START+180) /* 220180 */ /** * @hideinitializer * Unsupported WAVE file. */ #define PJMEDIA_EWAVEUNSUPP (PJMEDIA_ERRNO_START+181) /* 220181 */ /** * @hideinitializer * Wave file too short. */ #define PJMEDIA_EWAVETOOSHORT (PJMEDIA_ERRNO_START+182) /* 220182 */ /** * @hideinitializer * Sound frame is too large for file buffer. */ #define PJMEDIA_EFRMFILETOOBIG (PJMEDIA_ERRNO_START+183) /* 220183 */ /** * @hideinitializer * Unsupported AVI file. */ #define PJMEDIA_EAVIUNSUPP (PJMEDIA_ERRNO_START+191) /* 220191 */ /************************************************************ * SOUND DEVICE ERRORS ***********************************************************/ /** * @hideinitializer * No suitable audio capture device. */ #define PJMEDIA_ENOSNDREC (PJMEDIA_ERRNO_START+200) /* 220200 */ /** * @hideinitializer * No suitable audio playback device. */ #define PJMEDIA_ENOSNDPLAY (PJMEDIA_ERRNO_START+201) /* 220201 */ /** * @hideinitializer * Invalid sound device ID. */ #define PJMEDIA_ESNDINDEVID (PJMEDIA_ERRNO_START+202) /* 220202 */ /** * @hideinitializer * Invalid sample format for sound device. */ #define PJMEDIA_ESNDINSAMPLEFMT (PJMEDIA_ERRNO_START+203) /* 220203 */ #if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) /************************************************************ * SRTP TRANSPORT ERRORS ***********************************************************/ /** * @hideinitializer * SRTP crypto-suite name not match the offerer tag. */ #define PJMEDIA_SRTP_ECRYPTONOTMATCH (PJMEDIA_ERRNO_START+220) /* 220220 */ /** * @hideinitializer * Invalid SRTP key length for specific crypto. */ #define PJMEDIA_SRTP_EINKEYLEN (PJMEDIA_ERRNO_START+221) /* 220221 */ /** * @hideinitializer * Unsupported SRTP crypto-suite. */ #define PJMEDIA_SRTP_ENOTSUPCRYPTO (PJMEDIA_ERRNO_START+222) /* 220222 */ /** * @hideinitializer * SRTP SDP contains ambigue answer. */ #define PJMEDIA_SRTP_ESDPAMBIGUEANS (PJMEDIA_ERRNO_START+223) /* 220223 */ /** * @hideinitializer * Duplicated crypto tag. */ #define PJMEDIA_SRTP_ESDPDUPCRYPTOTAG (PJMEDIA_ERRNO_START+224) /* 220224 */ /** * @hideinitializer * Invalid crypto attribute. */ #define PJMEDIA_SRTP_ESDPINCRYPTO (PJMEDIA_ERRNO_START+225) /* 220225 */ /** * @hideinitializer * Invalid crypto tag. */ #define PJMEDIA_SRTP_ESDPINCRYPTOTAG (PJMEDIA_ERRNO_START+226) /* 220226 */ /** * @hideinitializer * Invalid SDP media transport for SRTP. */ #define PJMEDIA_SRTP_ESDPINTRANSPORT (PJMEDIA_ERRNO_START+227) /* 220227 */ /** * @hideinitializer * SRTP crypto attribute required in SDP. */ #define PJMEDIA_SRTP_ESDPREQCRYPTO (PJMEDIA_ERRNO_START+228) /* 220228 */ /** * @hideinitializer * Secure transport required in SDP media descriptor. */ #define PJMEDIA_SRTP_ESDPREQSECTP (PJMEDIA_ERRNO_START+229) /* 220229 */ /** * @hideinitializer * SRTP parameters negotiation still in progress. */ #define PJMEDIA_SRTP_EKEYNOTREADY (PJMEDIA_ERRNO_START+230) /* 220230 */ /** * @hideinitializer * No matching SRTP crypto-suite after DTLS nego. */ #define PJMEDIA_SRTP_DTLS_ENOCRYPTO (PJMEDIA_ERRNO_START+240) /* 220240 */ /** * @hideinitializer * No certificate supplied by peer in DTLS nego. */ #define PJMEDIA_SRTP_DTLS_EPEERNOCERT (PJMEDIA_ERRNO_START+241) /* 220241 */ /** * @hideinitializer * Fingerprint from signalling not match to actual fingerprint. */ #define PJMEDIA_SRTP_DTLS_EFPNOTMATCH (PJMEDIA_ERRNO_START+242) /* 220242 */ /** * @hideinitializer * Fingerprint not found. */ #define PJMEDIA_SRTP_DTLS_ENOFPRINT (PJMEDIA_ERRNO_START+243) /* 220243 */ /** * @hideinitializer * No valid SRTP protection profile for DTLS. */ #define PJMEDIA_SRTP_DTLS_ENOPROFILE (PJMEDIA_ERRNO_START+244) /* 220244 */ #endif /* PJMEDIA_HAS_SRTP */ /** * Get error message for the specified error code. Note that this * function is only able to decode PJMEDIA specific error code. * Application should use pj_strerror(), which should be able to * decode all error codes belonging to all subsystems (e.g. pjlib, * pjmedia, pjsip, etc). * * @param status The error code. * @param buffer The buffer where to put the error message. * @param bufsize Size of the buffer. * * @return The error message as NULL terminated string, * wrapped with pj_str_t. */ PJ_DECL(pj_str_t) pjmedia_strerror( pj_status_t status, char *buffer, pj_size_t bufsize); PJ_END_DECL /** * @} */ #endif /* __PJMEDIA_ERRNO_H__ */