Mercurial > mplayer.hg
view stream/freesdp/common.h @ 33173:b86ea534cfc7
Build the geq video filter with shared FFmpeg.
geq works fine with shared FFmpeg, so do not require static builds for it.
patch by Alexis Ballier, alexis.ballier gmail com
author | diego |
---|---|
date | Fri, 15 Apr 2011 07:48:41 +0000 |
parents | 0f1b5b68af32 |
children | 08a90b0e44e1 |
line wrap: on
line source
/* This file is part of FreeSDP. Copyright (C) 2001,2002,2003 Federico Montesino Pouzols <fedemp@altern.org> FreeSDP 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 */ /** * @file common.h * @ingroup common * @short Public header common for both parsing and formatting modules. **/ #ifndef FSDP_COMMON_H #define FSDP_COMMON_H /* Macros to avoid name mangling when compiling with a C++ compiler */ #ifdef __cplusplus # define BEGIN_C_DECLS extern "C" { # define END_C_DECLS } #else /* !__cplusplus */ # define BEGIN_C_DECLS # define END_C_DECLS #endif /* __cplusplus */ #include <sys/time.h> #include <time.h> BEGIN_C_DECLS /** * @defgroup common FreeSDP Common Facilities * * Data types and routines common for both parsing and formatting * modules. **/ /** @addtogroup common */ /*@{*/ /** * @enum fsdp_error_t freesdp/common.h * @short Error codes in the FreeSDP library. * * There is a FSDPE_MISSING_XXXX for each mandatory line, as * FSDPE_MISSING_OWNER. This kind of error is reported when a * mandatory description line, such as the owner line, is not found * where it should be in the SDP description. There are also several * error codes like FSDPE_INVALID_XXXX. These are returned when there * is a recognized line in the parsed description that violates the * SDP syntax or gives wrong parameters, for instance "c=foo bar", * which would cause a FSDPE_INVALID_CONNECTION error code to be * returned. **/ typedef enum { FSDPE_OK = 0, FSDPE_ILLEGAL_CHARACTER, /**< Misplaced '\r', '\n' or '\0' */ FSDPE_MISSING_VERSION, /**< The first line is not like v=... */ FSDPE_INVALID_VERSION, /**< Parse error in version line, perhaps, the version specified in v=... is not valid for FreeSDP */ FSDPE_MISSING_OWNER, /**< No owner line found in its place */ FSDPE_INVALID_OWNER, /**< Parse error in owner line */ FSDPE_MISSING_NAME, /**< No session name found in its place */ FSDPE_EMPTY_NAME, /**< Empty session name line */ FSDPE_INVALID_CONNECTION, /**< Syntax error in connection line */ FSDPE_INVALID_CONNECTION_ADDRTYPE, /**< Unrecognized address type in connection line */ FSDPE_INVALID_CONNECTION_NETTYPE, /**< Unrecognized network type in connection line */ FSDPE_INVALID_BANDWIDTH, /**< Parse error in bandwidth line */ FSDPE_MISSING_TIME, /**< No time period has been given for the session */ FSDPE_INVALID_TIME, /**< Parse error in time line */ FSDPE_INVALID_REPEAT, /**< Parse error in repeat time line */ FSDPE_INVALID_TIMEZONE, /**< Parse error in timezone line */ FSDPE_INVALID_ENCRYPTION_METHOD, /**< Unknown encryption method */ FSDPE_INVALID_ATTRIBUTE, /**< Syntax error in an attribute line */ FSDPE_INVALID_ATTRIBUTE_RTPMAP,/**< Parse error in a=rtpmap:... line */ FSDPE_INVALID_SESSION_TYPE, /**< An unknown session type has been specified in a `type:' session-level attribute */ FSDPE_INVALID_MEDIA, /**< Parse error in media line */ FSDPE_UNKNOWN_MEDIA_TYPE, /**< Unknown media type in media line */ FSDPE_UNKNOWN_MEDIA_TRANSPORT, /**< A media transport has been specified that is unknown */ FSDPE_OVERFILLED, /**< extra unknown lines are at the end of the description */ FSDPE_INVALID_LINE, /**< a line unknown to FreeSDP has been found */ FSDPE_MISSING_CONNECTION_INFO, /**< No connection information has been provided for the whole session nor one or more media */ FSDPE_INVALID_INDEX, /* FSDPE_MAXSIZE, description does not fit requested maximun size */ FSDPE_INTERNAL_ERROR, FSDPE_INVALID_PARAMETER, /**< Some parameter of the called FreeSDP routine has been given an invalid value. This includes cases such as NULL pointers. */ FSDPE_BUFFER_OVERFLOW } fsdp_error_t; /** * @short Type of network * * Initially, SDP defines "Internet". New network types may be * registered with IANA. However, the number of types is expected to * be small and rarely extended. In addition, every new network type * requires at least one new address type. **/ typedef enum { FSDP_NETWORK_TYPE_UNDEFINED, /**< Not provided */ FSDP_NETWORK_TYPE_INET /**< Internet */ } fsdp_network_type_t; /** * @short Type of address * * Initially, IPv4 and IPv6 are defined for the network type * Internet. New address types may be registered with IANA. **/ typedef enum { FSDP_ADDRESS_TYPE_UNDEFINED, /**< Not provided */ FSDP_ADDRESS_TYPE_IPV4, /**< IP version 4 */ FSDP_ADDRESS_TYPE_IPV6 /**< IP version 6 */ } fsdp_address_type_t; /** * @short Type of bandwith modifiers * * Bandwidth modifiers specify the meaning of the bandwidth * value. Initially "Conference Total" and "Application Specific" are * defined. Both use kilobits as bandwidth unit. "Conference Total" * specifies that the bandwidth value is a proposed upper limit to the * session bandwidth. "Application Specific" specifies thath the * bandwidth value is the application concept of maximum bandwidth. **/ typedef enum { FSDP_BW_MOD_TYPE_UNDEFINED, /**< Not provided */ FSDP_BW_MOD_TYPE_UNKNOWN, /**< Unknown bandwidth modifier (FreeSDP ignores it) */ FSDP_BW_MOD_TYPE_CONFERENCE_TOTAL, /**< "CT - Conference Total" */ FSDP_BW_MOD_TYPE_APPLICATION_SPECIFIC, /**< "AS - Application specific" */ FSDP_BW_MOD_TYPE_RTCP_SENDERS, /**< "RS - RTCP bandwidth for senders */ FSDP_BW_MOD_TYPE_RTCP_RECEIVERS, /**< "RR - RTCP bandwidth for receivers */ } fsdp_bw_modifier_type_t; /** * @short encryption method * * The encryption method specifies the way to get the encryption key. **/ typedef enum { FSDP_ENCRYPTION_METHOD_UNDEFINED, /**< Not provided */ FSDP_ENCRYPTION_METHOD_CLEAR, /**< The key field is the untransformed key */ FSDP_ENCRYPTION_METHOD_BASE64, /**< The key is base64 encoded */ FSDP_ENCRYPTION_METHOD_URI, /**< The key value provided is a URI pointing to the actual key */ FSDP_ENCRYPTION_METHOD_PROMPT /**< The key is not provided but should be got prompting the user */ } fsdp_encryption_method_t; /** * @short Advised reception/transmission mode * * Depending on wheter sendrecv, recvonly, sendonly or inactive * attribute is given, the tools used to participate in the session * should be started in the corresponding transmission * mode. FSDP_SENDRECV_SENDRECV is the default for sessions which are * not of the conference type broadcast or H332. **/ typedef enum { FSDP_SENDRECV_UNDEFINED, /**< Not specified */ FSDP_SENDRECV_SENDRECV, /**< Send and receive */ FSDP_SENDRECV_RECVONLY, /**< Receive only */ FSDP_SENDRECV_SENDONLY, /**< Send only */ FSDP_SENDRECV_INACTIVE /**< Do not send nor receive */ } fsdp_sendrecv_mode_t; /** * @short Values for `orient' media attribute. * * Normally used with whiteboard media, this attribute specifies the * orientation of the whiteboard. **/ typedef enum { FSDP_ORIENT_UNDEFINED, /**< Not specified */ FSDP_ORIENT_PORTRAIT, /**< Portrait */ FSDP_ORIENT_LANDSCAPE, /**< Landscape */ FSDP_ORIENT_SEASCAPE /**< Upside down landscape */ } fsdp_orient_t; /** * @short Type of the conference * * The following types are initially defined: broadcast, meeting, * moderated, test and H332. **/ typedef enum { FSDP_SESSION_TYPE_UNDEFINED, /**< Not specified */ FSDP_SESSION_TYPE_BROADCAST, /**< Broadcast session */ FSDP_SESSION_TYPE_MEETING, /**< Meeting session */ FSDP_SESSION_TYPE_MODERATED, /**< Moderated session */ FSDP_SESSION_TYPE_TEST, /**< Test (do not display) */ FSDP_SESSION_TYPE_H332 /**< H332 session */ } fsdp_session_type_t; /** * @short Media type * * The following types are defined initially: audio, video, * application, data and control. **/ typedef enum { FSDP_MEDIA_UNDEFINED, /**< Not specified */ FSDP_MEDIA_VIDEO, /**< Video */ FSDP_MEDIA_AUDIO, /**< Audio */ FSDP_MEDIA_APPLICATION, /**< Application, such as whiteboard */ FSDP_MEDIA_DATA, /**< bulk data */ FSDP_MEDIA_CONTROL /**< Control channel */ } fsdp_media_t; /** * @short Transport protocol * * The transport protocol used depends on the address type. Initially, * RTP over UDP Audio/Video Profile, and UDP are defined. * **/ typedef enum { FSDP_TP_UNDEFINED, /**< Not specified */ FSDP_TP_RTP_AVP, /**< RTP Audio/Video Profile */ FSDP_TP_UDP, /**< UDP */ FSDP_TP_TCP, /**< TCP */ FSDP_TP_UDPTL, /**< ITU-T T.38*/ FSDP_TP_VAT, /**< old vat protocol (historic)*/ FSDP_TP_OLD_RTP, /**< old rtp protocols (historic)*/ FSDP_TP_H320 /**< TODO: add to the parser */ } fsdp_transport_protocol_t; /** * Session-level attributes whose value is specified as a character * string in FreeSDP. These values are usually given to * fsdp_get_strn_att() in order to get the corresponding value. * **/ typedef enum { FSDP_SESSION_STR_ATT_CATEGORY, FSDP_SESSION_STR_ATT_KEYWORDS, FSDP_SESSION_STR_ATT_TOOL, FSDP_SESSION_STR_ATT_CHARSET, } fsdp_session_str_att_t; /** * @short FreeSDP SDP description media object. * * Object for media specific information in SDP descriptions. Each SDP * description may include any number of media section. A * fsdp_media_description_t object encapsulates the information in a * media section, such as video, audio or whiteboard. **/ typedef struct fsdp_media_description_t_s fsdp_media_description_t; /** * @short FreeSDP SDP session description object. * * Contains all the information extracted from a textual SDP * description, including all the media announcements. **/ typedef struct fsdp_description_t_s fsdp_description_t; /** * Allocates memory and initializes values for a new * fsdp_description_t object. If you call this routine, do not forget * about <code>fsdp_description_delete()</code> * * @return new fsdp_description_t object **/ fsdp_description_t *fsdp_description_new (void); /** * Destroys a fsdp_description_t object. * * @param dsc pointer to the fsdp_description_t object to delete. **/ void fsdp_description_delete (fsdp_description_t * dsc); /** * Calling this function over a description is equivalent to calling * fsdp_description_delete and then fsdp_description_delete. This * function is however more suitable and efficient for description * processing loops. * * @param dsc pointer to the fsdp_description_t object to * renew/recycle. **/ void fsdp_description_recycle (fsdp_description_t * dsc); /** * * Returns a string correspondent to the error number. * * * * @param err_no error number. * **/ const char *fsdp_strerror (fsdp_error_t err_no); /*@}*//* closes addtogroup common */ END_C_DECLS #endif /* FSDP_COMMON_H */