allfilters.h   allfilters.h 
skipping to change at line 110 skipping to change at line 110
MS_H264_DEC_ID, MS_H264_DEC_ID,
MS_IOUNIT_READ_ID, MS_IOUNIT_READ_ID,
MS_IOUNIT_WRITE_ID, MS_IOUNIT_WRITE_ID,
MS_ANDROID_SOUND_READ_ID, MS_ANDROID_SOUND_READ_ID,
MS_ANDROID_SOUND_WRITE_ID, MS_ANDROID_SOUND_WRITE_ID,
MS_JPEG_WRITER_ID, MS_JPEG_WRITER_ID,
MS_X11VIDEO_ID, MS_X11VIDEO_ID,
MS_ANDROID_DISPLAY_ID, MS_ANDROID_DISPLAY_ID,
MS_ANDROID_VIDEO_READ_ID, MS_ANDROID_VIDEO_READ_ID,
MS_ANDROID_VIDEO_WRITE_ID, MS_ANDROID_VIDEO_WRITE_ID,
MS_TONE_DETECTOR_ID MS_TONE_DETECTOR_ID,
MS_VP8_ENC_ID,
MS_VP8_DEC_ID,
MS_G722_ENC_ID,
MS_G722_DEC_ID,
MS_G726_40_ENC_ID,
MS_G726_32_ENC_ID,
MS_G726_24_ENC_ID,
MS_G726_16_ENC_ID,
MS_AAL2_G726_40_ENC_ID,
MS_AAL2_G726_32_ENC_ID,
MS_AAL2_G726_24_ENC_ID,
MS_AAL2_G726_16_ENC_ID,
MS_G726_40_DEC_ID,
MS_G726_32_DEC_ID,
MS_G726_24_DEC_ID,
MS_G726_16_DEC_ID,
MS_AAL2_G726_40_DEC_ID,
MS_AAL2_G726_32_DEC_ID,
MS_AAL2_G726_24_DEC_ID,
MS_AAL2_G726_16_DEC_ID,
MS_L16_ENC_ID,
MS_L16_DEC_ID
} MSFilterId; } MSFilterId;
#endif #endif
 End of changes. 1 change blocks. 
1 lines changed or deleted 23 lines changed or added


 config.h   config.h 
skipping to change at line 50 skipping to change at line 50
/* Define to 1 if you have the `getifaddrs' function. */ /* Define to 1 if you have the `getifaddrs' function. */
#define HAVE_GETIFADDRS 1 #define HAVE_GETIFADDRS 1
/* Tells wheter localisation is possible */ /* Tells wheter localisation is possible */
#define HAVE_GETTEXT 1 #define HAVE_GETTEXT 1
/* Define to 1 if you have the `get_current_dir_name' function. */ /* Define to 1 if you have the `get_current_dir_name' function. */
#define HAVE_GET_CURRENT_DIR_NAME 1 #define HAVE_GET_CURRENT_DIR_NAME 1
/* Defined when gtk osx is used */
/* #undef HAVE_GTK_OSX */
/* Define to 1 if you have the <history.h> header file. */ /* Define to 1 if you have the <history.h> header file. */
/* #undef HAVE_HISTORY_H */ /* #undef HAVE_HISTORY_H */
/* Define if you have the iconv() function. */ /* Define if you have the iconv() function. */
/* #undef HAVE_ICONV */ /* #undef HAVE_ICONV */
/* Define to 1 if you have the <inttypes.h> header file. */ /* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1 #define HAVE_INTTYPES_H 1
/* Define to 1 if you have the `eXosip2' library (-leXosip2). */ /* Define to 1 if you have the `eXosip2' library (-leXosip2). */
#define HAVE_LIBEXOSIP2 1 #define HAVE_LIBEXOSIP2 1
/* Define to 1 if you have the `osip2' library (-losip2). */
/* #undef HAVE_LIBOSIP2 */
/* Define to 1 if you have the `osipparser2' library (-losipparser2). */
/* #undef HAVE_LIBOSIPPARSER2 */
/* Define to 1 if you have the <memory.h> header file. */ /* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1 #define HAVE_MEMORY_H 1
/* NOTIFY1 support */
/* #undef HAVE_NOTIFY1 */
/* NOTIFY4 support */
#define HAVE_NOTIFY4 1
/* Define to 1 if you have the <readline.h> header file. */ /* Define to 1 if you have the <readline.h> header file. */
/* #undef HAVE_READLINE_H */ /* #undef HAVE_READLINE_H */
/* Define to 1 if you have the <readline/history.h> header file. */ /* Define to 1 if you have the <readline/history.h> header file. */
#define HAVE_READLINE_HISTORY_H 1 #define HAVE_READLINE_HISTORY_H 1
/* Define to 1 if you have the <readline/readline.h> header file. */ /* Define to 1 if you have the <readline/readline.h> header file. */
#define HAVE_READLINE_READLINE_H 1 #define HAVE_READLINE_READLINE_H 1
/* Define if sighandler_t available */ /* Define if sighandler_t available */
skipping to change at line 108 skipping to change at line 123
/* Define to 1 if you have the <sys/types.h> header file. */ /* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1 #define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the <unistd.h> header file. */ /* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1 #define HAVE_UNISTD_H 1
/* Define to 1 if you have the <X11/Xlib.h> header file. */ /* Define to 1 if you have the <X11/Xlib.h> header file. */
#define HAVE_X11_XLIB_H 1 #define HAVE_X11_XLIB_H 1
/* All supported languages */ /* All supported languages */
#define LINPHONE_ALL_LANGS "fr it de ja es pl cs nl sv pt_BR hu ru zh_CN" #define LINPHONE_ALL_LANGS "fr it de ja es pl cs nl sv pt_BR hu ru zh_CN nb _NO zh_TW"
/* Windows appdata subdir where linphonerc can be found */ /* Windows appdata subdir where linphonerc can be found */
#define LINPHONE_CONFIG_DIR "Linphone" #define LINPHONE_CONFIG_DIR "Linphone"
/* path of liblinphone plugins, not mediastreamer2 plugins */ /* path of liblinphone plugins, not mediastreamer2 plugins */
#define LINPHONE_PLUGINS_DIR "/home/ut/testing/linphone/3.4.3/lib/liblinpho ne/plugins" #define LINPHONE_PLUGINS_DIR "/home/ut/testing/linphone/3.4.99.4/lib/liblin phone/plugins"
/* Linphone's version number */ /* Linphone's version number */
#define LINPHONE_VERSION "3.4.3" #define LINPHONE_VERSION "3.4.99.4"
/* Define to the sub-directory in which libtool stores uninstalled librarie s. /* Define to the sub-directory in which libtool stores uninstalled librarie s.
*/ */
#define LT_OBJDIR ".libs/" #define LT_OBJDIR ".libs/"
/* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* Define to 1 if your C compiler doesn't accept -c and -o together. */
/* #undef NO_MINUS_C_MINUS_O */ /* #undef NO_MINUS_C_MINUS_O */
/* Name of package */ /* Name of package */
#define PACKAGE "linphone" #define PACKAGE "linphone"
/* Define to the address where bug reports for this package should be sent. */ /* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "linphone-developers@nongnu.org" #define PACKAGE_BUGREPORT "linphone-developers@nongnu.org"
/* Defines the place where data are found */ /* Defines the place where data are found */
#define PACKAGE_DATA_DIR "/home/ut/testing/linphone/3.4.3/share" #define PACKAGE_DATA_DIR "/home/ut/testing/linphone/3.4.99.4/share"
/* Defines the place where locales can be found */ /* Defines the place where locales can be found */
#define PACKAGE_LOCALE_DIR "/home/ut/testing/linphone/3.4.3/share/locale" #define PACKAGE_LOCALE_DIR "/home/ut/testing/linphone/3.4.99.4/share/locale "
/* Define to the full name of this package. */ /* Define to the full name of this package. */
#define PACKAGE_NAME "linphone" #define PACKAGE_NAME "linphone"
/* Defines the place where linphone sounds are found */ /* Defines the place where linphone sounds are found */
#define PACKAGE_SOUND_DIR "/home/ut/testing/linphone/3.4.3/share/sounds/lin phone" #define PACKAGE_SOUND_DIR "/home/ut/testing/linphone/3.4.99.4/share/sounds/ linphone"
/* Define to the full name and version of this package. */ /* Define to the full name and version of this package. */
#define PACKAGE_STRING "linphone 3.4.3" #define PACKAGE_STRING "linphone 3.4.99.4"
/* Define to the one symbol short name of this package. */ /* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "linphone" #define PACKAGE_TARNAME "linphone"
/* Define to the home page for this package. */ /* Define to the home page for this package. */
#define PACKAGE_URL "" #define PACKAGE_URL ""
/* Define to the version of this package. */ /* Define to the version of this package. */
#define PACKAGE_VERSION "3.4.3" #define PACKAGE_VERSION "3.4.99.4"
/* Define to 1 if you have the ANSI C header files. */ /* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1 #define STDC_HEADERS 1
/* Tell whether date_version.h must be used */ /* Tell whether date_version.h must be used */
/* #undef USE_BUILDDATE_VERSION */ /* #undef USE_BUILDDATE_VERSION */
/* Version number of package */ /* Version number of package */
#define VERSION "3.4.3" #define VERSION "3.4.99.4"
/* defined if video support is available */ /* defined if video support is available */
#define VIDEO_ENABLED 1 #define VIDEO_ENABLED 1
/* Tell whether RSVP support should be compiled. */ /* Tell whether RSVP support should be compiled. */
/* #undef VINCENT_MAURY_RSVP */ /* #undef VINCENT_MAURY_RSVP */
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */ significant byte first (like Motorola and SPARC, unlike Intel). */
#if defined AC_APPLE_UNIVERSAL_BUILD #if defined AC_APPLE_UNIVERSAL_BUILD
 End of changes. 12 change blocks. 
9 lines changed or deleted 24 lines changed or added


 dtmfgen.h   dtmfgen.h 
skipping to change at line 23 skipping to change at line 23
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef dtmfgen_h #ifndef dtmfgen_h
#define dtmfgen_h #define dtmfgen_h
#include "msfilter.h" #include <mediastreamer2/msfilter.h>
#define MS_DTMF_GEN_PUT MS_FILTER_METHOD(MS_DTMF_GEN_ID,0,co nst char) #define MS_DTMF_GEN_PUT MS_FILTER_METHOD(MS_DTMF_GEN_ID,0,co nst char)
/** Plays dtmf tone given in argument with default duration*/ /** Plays dtmf tone given in argument with default duration*/
#define MS_DTMF_GEN_PLAY MS_FILTER_METHOD(MS_DTMF_GEN_ID,0,co nst char) /*alias to put*/ #define MS_DTMF_GEN_PLAY MS_FILTER_METHOD(MS_DTMF_GEN_ID,0,co nst char) /*alias to put*/
/**Start playing a given dtmf, then it has to be stopped using MS_DTMF_GEN_ STOP */ /**Start playing a given dtmf, then it has to be stopped using MS_DTMF_GEN_ STOP */
#define MS_DTMF_GEN_START MS_FILTER_METHOD(MS_DTMF_GEN_ID,1,co nst char) #define MS_DTMF_GEN_START MS_FILTER_METHOD(MS_DTMF_GEN_ID,1,co nst char)
/**Stop currently played dtmf*/ /**Stop currently played dtmf*/
#define MS_DTMF_GEN_STOP MS_FILTER_METHOD_NO_ARG(MS_DTMF_GEN_ ID,2) #define MS_DTMF_GEN_STOP MS_FILTER_METHOD_NO_ARG(MS_DTMF_GEN_ ID,2)
/** /**
* Structure describing a custom tone. * Structure describing a custom tone.
**/ **/
struct _MSDtmfGenCustomTone{ struct _MSDtmfGenCustomTone{
int duration; /**<Duration of the tone in milliseconds*/ int duration; /**<Duration of the tone in milliseconds*/
int frequency; /**<Frequency of the tone to be played */ int frequency; /**<Frequency of the tone to be played */
float amplitude; /**<Amplitude of the tone, 1.0 being the 0dbm norma lized level*/ float amplitude; /**<Amplitude of the tone, 1.0 being the 0dbm norma lized level*/
int interval; /**<Interval 'between tones' in milliseconds*/
}; };
typedef struct _MSDtmfGenCustomTone MSDtmfGenCustomTone; typedef struct _MSDtmfGenCustomTone MSDtmfGenCustomTone;
/**Play a custom tone according to the supplied tone description*/ /**Play a custom tone according to the supplied tone description*/
#define MS_DTMF_GEN_PLAY_CUSTOM MS_FILTER_METHOD(MS_DTMF_GEN_ID,3,MS DtmfGenCustomTone) #define MS_DTMF_GEN_PLAY_CUSTOM MS_FILTER_METHOD(MS_DTMF_GEN_ID,3,MS DtmfGenCustomTone)
/**Sets default amplitude for dtmfs, expressed in the 0..1 range*/ /**Sets default amplitude for dtmfs, expressed in the 0..1 range*/
#define MS_DTMF_GEN_SET_DEFAULT_AMPLITUDE MS_FILTER_METHOD(MS_DTMF_GEN_ID,4 ,float) #define MS_DTMF_GEN_SET_DEFAULT_AMPLITUDE MS_FILTER_METHOD(MS_DTMF_GEN_ID,4 ,float)
 End of changes. 2 change blocks. 
1 lines changed or deleted 2 lines changed or added


 event.h   event.h 
skipping to change at line 44 skipping to change at line 44
#endif #endif
socklen_t addrlen; socklen_t addrlen;
}RtpEndpoint; }RtpEndpoint;
struct _OrtpEventData{ struct _OrtpEventData{
mblk_t *packet; /* most events are associated to a received packet * / mblk_t *packet; /* most events are associated to a received packet * /
RtpEndpoint *ep; RtpEndpoint *ep;
union { union {
int telephone_event; int telephone_event;
int payload_type; int payload_type;
bool_t zrtp_stream_encrypted;
struct _ZrtpSas{
char sas[5]; // 4 characters
bool_t verified;
} zrtp_sas;
} info; } info;
}; };
typedef struct _OrtpEventData OrtpEventData; typedef struct _OrtpEventData OrtpEventData;
#ifdef __cplusplus #ifdef __cplusplus
extern "C"{ extern "C"{
#endif #endif
RtpEndpoint *rtp_endpoint_new(struct sockaddr *addr, socklen_t addrlen); RtpEndpoint *rtp_endpoint_new(struct sockaddr *addr, socklen_t addrlen);
RtpEndpoint *rtp_endpoint_dup(const RtpEndpoint *ep); RtpEndpoint *rtp_endpoint_dup(const RtpEndpoint *ep);
OrtpEvent * ortp_event_new(OrtpEventType tp); OrtpEvent * ortp_event_new(OrtpEventType tp);
OrtpEventType ortp_event_get_type(const OrtpEvent *ev); OrtpEventType ortp_event_get_type(const OrtpEvent *ev);
/* type is one of the following*/ /* type is one of the following*/
#define ORTP_EVENT_STUN_PACKET_RECEIVED 1 #define ORTP_EVENT_STUN_PACKET_RECEIVED 1
#define ORTP_EVENT_PAYLOAD_TYPE_CHANGED 2 #define ORTP_EVENT_PAYLOAD_TYPE_CHANGED 2
#define ORTP_EVENT_TELEPHONE_EVENT 3 #define ORTP_EVENT_TELEPHONE_EVENT 3
#define ORTP_EVENT_RTCP_PACKET_RECEIVED 4 #define ORTP_EVENT_RTCP_PACKET_RECEIVED 4 /**<when a RTCP pa
cket is received from far end */
#define ORTP_EVENT_RTCP_PACKET_EMITTED 5 /**<fired when oRTP decide
s to send an automatic RTCP SR or RR */
#define ORTP_EVENT_ZRTP_ENCRYPTION_CHANGED 6
#define ORTP_EVENT_ZRTP_SAS_READY 7
OrtpEventData * ortp_event_get_data(OrtpEvent *ev); OrtpEventData * ortp_event_get_data(OrtpEvent *ev);
void ortp_event_destroy(OrtpEvent *ev); void ortp_event_destroy(OrtpEvent *ev);
OrtpEvent *ortp_event_dup(OrtpEvent *ev); OrtpEvent *ortp_event_dup(OrtpEvent *ev);
typedef struct OrtpEvQueue{ typedef struct OrtpEvQueue{
queue_t q; queue_t q;
ortp_mutex_t mutex; ortp_mutex_t mutex;
} OrtpEvQueue; } OrtpEvQueue;
OrtpEvQueue * ortp_ev_queue_new(void); OrtpEvQueue * ortp_ev_queue_new(void);
 End of changes. 2 change blocks. 
1 lines changed or deleted 12 lines changed or added


 ice.h   ice.h 
skipping to change at line 23 skipping to change at line 23
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef ice_hh #ifndef ice_hh
#define ice_hh #define ice_hh
#include "msfilter.h" #include <mediastreamer2/msfilter.h>
#include "ortp/stun_udp.h" #include "ortp/stun_udp.h"
#include "ortp/stun.h" #include "ortp/stun.h"
#include "ortp/ortp.h" #include "ortp/ortp.h"
/* list of state for STUN connectivity check */ /* list of state for STUN connectivity check */
#define ICE_PRUNED -1 #define ICE_PRUNED -1
#define ICE_FROZEN 0 #define ICE_FROZEN 0
#define ICE_WAITING 1 #define ICE_WAITING 1
#define ICE_IN_PROGRESS 2 /* STUN request was sent */ #define ICE_IN_PROGRESS 2 /* STUN request was sent */
#define ICE_SUCCEEDED 3 #define ICE_SUCCEEDED 3
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 linphonecore.h   linphonecore.h 
skipping to change at line 153 skipping to change at line 153
LinphoneCallDir dir; /**< The direction of the call*/ LinphoneCallDir dir; /**< The direction of the call*/
LinphoneCallStatus status; /**< The status of the call*/ LinphoneCallStatus status; /**< The status of the call*/
LinphoneAddress *from; /**<Originator of the call as a LinphoneAddre ss object*/ LinphoneAddress *from; /**<Originator of the call as a LinphoneAddre ss object*/
LinphoneAddress *to; /**<Destination of the call as a LinphoneAddres s object*/ LinphoneAddress *to; /**<Destination of the call as a LinphoneAddres s object*/
char start_date[128]; /**<Human readable string containg the start d ate*/ char start_date[128]; /**<Human readable string containg the start d ate*/
int duration; /**<Duration of the call in seconds*/ int duration; /**<Duration of the call in seconds*/
char *refkey; char *refkey;
void *user_pointer; void *user_pointer;
rtp_stats_t local_stats; rtp_stats_t local_stats;
rtp_stats_t remote_stats; rtp_stats_t remote_stats;
float quality;
struct _LinphoneCore *lc; struct _LinphoneCore *lc;
} LinphoneCallLog; } LinphoneCallLog;
/*public: */ /*public: */
void linphone_call_log_set_user_pointer(LinphoneCallLog *cl, void *up); void linphone_call_log_set_user_pointer(LinphoneCallLog *cl, void *up);
void *linphone_call_log_get_user_pointer(const LinphoneCallLog *cl); void *linphone_call_log_get_user_pointer(const LinphoneCallLog *cl);
void linphone_call_log_set_ref_key(LinphoneCallLog *cl, const char *refkey) ; void linphone_call_log_set_ref_key(LinphoneCallLog *cl, const char *refkey) ;
const char *linphone_call_log_get_ref_key(const LinphoneCallLog *cl); const char *linphone_call_log_get_ref_key(const LinphoneCallLog *cl);
const rtp_stats_t *linphone_call_log_get_local_stats(const LinphoneCallLog *cl); const rtp_stats_t *linphone_call_log_get_local_stats(const LinphoneCallLog *cl);
const rtp_stats_t *linphone_call_log_get_remote_stats(const LinphoneCallLog *cl); const rtp_stats_t *linphone_call_log_get_remote_stats(const LinphoneCallLog *cl);
skipping to change at line 178 skipping to change at line 179
* dynamically. * dynamically.
**/ **/
struct _LinphoneCallParams; struct _LinphoneCallParams;
typedef struct _LinphoneCallParams LinphoneCallParams; typedef struct _LinphoneCallParams LinphoneCallParams;
LinphoneCallParams * linphone_call_params_copy(const LinphoneCallParams *cp ); LinphoneCallParams * linphone_call_params_copy(const LinphoneCallParams *cp );
void linphone_call_params_enable_video(LinphoneCallParams *cp, bool_t enabl ed); void linphone_call_params_enable_video(LinphoneCallParams *cp, bool_t enabl ed);
bool_t linphone_call_params_video_enabled(const LinphoneCallParams *cp); bool_t linphone_call_params_video_enabled(const LinphoneCallParams *cp);
void linphone_call_params_enable_early_media_sending(LinphoneCallParams *cp , bool_t enabled); void linphone_call_params_enable_early_media_sending(LinphoneCallParams *cp , bool_t enabled);
bool_t linphone_call_params_early_media_sending_enabled(const LinphoneCallP arams *cp); bool_t linphone_call_params_early_media_sending_enabled(const LinphoneCallP arams *cp);
bool_t linphone_call_params_local_conference_mode(const LinphoneCallParams *cp);
void linphone_call_params_set_audio_bandwidth_limit(LinphoneCallParams *cp, int bw); void linphone_call_params_set_audio_bandwidth_limit(LinphoneCallParams *cp, int bw);
void linphone_call_params_destroy(LinphoneCallParams *cp); void linphone_call_params_destroy(LinphoneCallParams *cp);
/** /**
* Enum describing failure reasons. * Enum describing failure reasons.
* @ingroup initializing * @ingroup initializing
**/ **/
enum _LinphoneReason{ enum _LinphoneReason{
LinphoneReasonNone, LinphoneReasonNone,
LinphoneReasonNoResponse, /**<No response received from remote*/ LinphoneReasonNoResponse, /**<No response received from remote*/
skipping to change at line 231 skipping to change at line 233
LinphoneCallEnd, /**<The call ended normally*/ LinphoneCallEnd, /**<The call ended normally*/
LinphoneCallPausedByRemote, /**<The call is paused by remote end*/ LinphoneCallPausedByRemote, /**<The call is paused by remote end*/
LinphoneCallUpdatedByRemote, /**<The call's parameters are updated, used for example when video is asked by remote */ LinphoneCallUpdatedByRemote, /**<The call's parameters are updated, used for example when video is asked by remote */
LinphoneCallIncomingEarlyMedia, /**<We are proposing early media to an incoming call */ LinphoneCallIncomingEarlyMedia, /**<We are proposing early media to an incoming call */
LinphoneCallUpdated, /**<The remote accepted the call update initiat ed by us */ LinphoneCallUpdated, /**<The remote accepted the call update initiat ed by us */
LinphoneCallReleased /**< The call object is no more retained by the core */ LinphoneCallReleased /**< The call object is no more retained by the core */
} LinphoneCallState; } LinphoneCallState;
const char *linphone_call_state_to_string(LinphoneCallState cs); const char *linphone_call_state_to_string(LinphoneCallState cs);
LinphoneCore *linphone_call_get_core(const LinphoneCall *call);
LinphoneCallState linphone_call_get_state(const LinphoneCall *call); LinphoneCallState linphone_call_get_state(const LinphoneCall *call);
bool_t linphone_call_asked_to_autoanswer(LinphoneCall *call); bool_t linphone_call_asked_to_autoanswer(LinphoneCall *call);
const LinphoneAddress * linphone_core_get_current_call_remote_address(struc t _LinphoneCore *lc); const LinphoneAddress * linphone_core_get_current_call_remote_address(struc t _LinphoneCore *lc);
const LinphoneAddress * linphone_call_get_remote_address(const LinphoneCall *call); const LinphoneAddress * linphone_call_get_remote_address(const LinphoneCall *call);
char *linphone_call_get_remote_address_as_string(const LinphoneCall *call); char *linphone_call_get_remote_address_as_string(const LinphoneCall *call);
LinphoneCallDir linphone_call_get_dir(const LinphoneCall *call); LinphoneCallDir linphone_call_get_dir(const LinphoneCall *call);
void linphone_call_ref(LinphoneCall *call); LinphoneCall * linphone_call_ref(LinphoneCall *call);
void linphone_call_unref(LinphoneCall *call); void linphone_call_unref(LinphoneCall *call);
LinphoneCallLog *linphone_call_get_call_log(const LinphoneCall *call); LinphoneCallLog *linphone_call_get_call_log(const LinphoneCall *call);
const char *linphone_call_get_refer_to(const LinphoneCall *call); const char *linphone_call_get_refer_to(const LinphoneCall *call);
bool_t linphone_call_has_transfer_pending(const LinphoneCall *call); bool_t linphone_call_has_transfer_pending(const LinphoneCall *call);
LinphoneCall *linphone_call_get_replaced_call(LinphoneCall *call); LinphoneCall *linphone_call_get_replaced_call(LinphoneCall *call);
int linphone_call_get_duration(const LinphoneCall *call); int linphone_call_get_duration(const LinphoneCall *call);
const LinphoneCallParams * linphone_call_get_current_params(const LinphoneC all *call); const LinphoneCallParams * linphone_call_get_current_params(const LinphoneC all *call);
void linphone_call_enable_camera(LinphoneCall *lc, bool_t enabled); void linphone_call_enable_camera(LinphoneCall *lc, bool_t enabled);
bool_t linphone_call_camera_enabled(const LinphoneCall *lc); bool_t linphone_call_camera_enabled(const LinphoneCall *lc);
int linphone_call_take_video_snapshot(LinphoneCall *call, const char *file) ; int linphone_call_take_video_snapshot(LinphoneCall *call, const char *file) ;
LinphoneReason linphone_call_get_reason(const LinphoneCall *call); LinphoneReason linphone_call_get_reason(const LinphoneCall *call);
const char *linphone_call_get_remote_user_agent(LinphoneCall *call); const char *linphone_call_get_remote_user_agent(LinphoneCall *call);
float linphone_call_get_play_volume(LinphoneCall *call); float linphone_call_get_play_volume(LinphoneCall *call);
float linphone_call_get_record_volume(LinphoneCall *call); float linphone_call_get_record_volume(LinphoneCall *call);
float linphone_call_get_current_quality(LinphoneCall *call);
float linphone_call_get_average_quality(LinphoneCall *call);
void *linphone_call_get_user_pointer(LinphoneCall *call); void *linphone_call_get_user_pointer(LinphoneCall *call);
void linphone_call_set_user_pointer(LinphoneCall *call, void *user_pointer) ; void linphone_call_set_user_pointer(LinphoneCall *call, void *user_pointer) ;
/** /**
* Enables or disable echo cancellation for this call * Enables or disable echo cancellation for this call
* @param call * @param call
* @param val * @param val
* *
* @ingroup media_parameters * @ingroup media_parameters
**/ **/
void linphone_call_enable_echo_cancellation(LinphoneCall *call, bool_t val) ; void linphone_call_enable_echo_cancellation(LinphoneCall *call, bool_t val) ;
skipping to change at line 361 skipping to change at line 366
LinphoneRegistrationState linphone_proxy_config_get_state(const LinphonePro xyConfig *obj); LinphoneRegistrationState linphone_proxy_config_get_state(const LinphonePro xyConfig *obj);
bool_t linphone_proxy_config_is_registered(const LinphoneProxyConfig *obj); bool_t linphone_proxy_config_is_registered(const LinphoneProxyConfig *obj);
const char *linphone_proxy_config_get_domain(const LinphoneProxyConfig *cfg ); const char *linphone_proxy_config_get_domain(const LinphoneProxyConfig *cfg );
const char *linphone_proxy_config_get_route(const LinphoneProxyConfig *obj) ; const char *linphone_proxy_config_get_route(const LinphoneProxyConfig *obj) ;
const char *linphone_proxy_config_get_identity(const LinphoneProxyConfig *o bj); const char *linphone_proxy_config_get_identity(const LinphoneProxyConfig *o bj);
bool_t linphone_proxy_config_publish_enabled(const LinphoneProxyConfig *obj ); bool_t linphone_proxy_config_publish_enabled(const LinphoneProxyConfig *obj );
const char *linphone_proxy_config_get_addr(const LinphoneProxyConfig *obj); const char *linphone_proxy_config_get_addr(const LinphoneProxyConfig *obj);
int linphone_proxy_config_get_expires(const LinphoneProxyConfig *obj); int linphone_proxy_config_get_expires(const LinphoneProxyConfig *obj);
bool_t linphone_proxy_config_register_enabled(const LinphoneProxyConfig *ob j); bool_t linphone_proxy_config_register_enabled(const LinphoneProxyConfig *ob j);
void linphone_proxy_config_refresh_register(LinphoneProxyConfig *obj);
struct _LinphoneCore * linphone_proxy_config_get_core(const LinphoneProxyCo nfig *obj); struct _LinphoneCore * linphone_proxy_config_get_core(const LinphoneProxyCo nfig *obj);
bool_t linphone_proxy_config_get_dial_escape_plus(const LinphoneProxyConfig *cfg); bool_t linphone_proxy_config_get_dial_escape_plus(const LinphoneProxyConfig *cfg);
const char * linphone_proxy_config_get_dial_prefix(const LinphoneProxyConfi g *cfg); const char * linphone_proxy_config_get_dial_prefix(const LinphoneProxyConfi g *cfg);
LinphoneReason linphone_proxy_config_get_error(const LinphoneProxyConfig *c fg); LinphoneReason linphone_proxy_config_get_error(const LinphoneProxyConfig *c fg);
/* destruction is called automatically when removing the proxy config */ /* destruction is called automatically when removing the proxy config */
void linphone_proxy_config_destroy(LinphoneProxyConfig *cfg); void linphone_proxy_config_destroy(LinphoneProxyConfig *cfg);
void linphone_proxy_config_set_sip_setup(LinphoneProxyConfig *cfg, const ch ar *type); void linphone_proxy_config_set_sip_setup(LinphoneProxyConfig *cfg, const ch ar *type);
skipping to change at line 516 skipping to change at line 522
LinphoneGlobalOn, LinphoneGlobalOn,
LinphoneGlobalShutdown LinphoneGlobalShutdown
}LinphoneGlobalState; }LinphoneGlobalState;
const char *linphone_global_state_to_string(LinphoneGlobalState gs); const char *linphone_global_state_to_string(LinphoneGlobalState gs);
/**Call state notification callback prototype*/ /**Call state notification callback prototype*/
typedef void (*LinphoneGlobalStateCb)(struct _LinphoneCore *lc, LinphoneGlo balState gstate, const char *message); typedef void (*LinphoneGlobalStateCb)(struct _LinphoneCore *lc, LinphoneGlo balState gstate, const char *message);
/**Call state notification callback prototype*/ /**Call state notification callback prototype*/
typedef void (*LinphoneCallStateCb)(struct _LinphoneCore *lc, LinphoneCall *call, LinphoneCallState cstate, const char *message); typedef void (*LinphoneCallStateCb)(struct _LinphoneCore *lc, LinphoneCall *call, LinphoneCallState cstate, const char *message);
/**Call encryption changed callback prototype*/
typedef void (*CallEncryptionChangedCb)(struct _LinphoneCore *lc, LinphoneC
all *call, bool_t on, const char *authentication_token);
/** @ingroup Proxies /** @ingroup Proxies
* Registration state notification callback prototype * Registration state notification callback prototype
* */ * */
typedef void (*LinphoneRegistrationStateCb)(struct _LinphoneCore *lc, Linph oneProxyConfig *cfg, LinphoneRegistrationState cstate, const char *message) ; typedef void (*LinphoneRegistrationStateCb)(struct _LinphoneCore *lc, Linph oneProxyConfig *cfg, LinphoneRegistrationState cstate, const char *message) ;
/** Callback prototype */ /** Callback prototype */
typedef void (*ShowInterfaceCb)(struct _LinphoneCore *lc); typedef void (*ShowInterfaceCb)(struct _LinphoneCore *lc);
/** Callback prototype */ /** Callback prototype */
typedef void (*DisplayStatusCb)(struct _LinphoneCore *lc, const char *messa ge); typedef void (*DisplayStatusCb)(struct _LinphoneCore *lc, const char *messa ge);
/** Callback prototype */ /** Callback prototype */
typedef void (*DisplayMessageCb)(struct _LinphoneCore *lc, const char *mess age); typedef void (*DisplayMessageCb)(struct _LinphoneCore *lc, const char *mess age);
skipping to change at line 589 skipping to change at line 598
TextMessageReceived text_received; /**< A text message has been rece ived */ TextMessageReceived text_received; /**< A text message has been rece ived */
DtmfReceived dtmf_received; /**< A dtmf has been received received * / DtmfReceived dtmf_received; /**< A dtmf has been received received * /
ReferReceived refer_received; /**< An out of call refer was received */ ReferReceived refer_received; /**< An out of call refer was received */
BuddyInfoUpdated buddy_info_updated; /**< a LinphoneFriend's BuddyIn fo has changed*/ BuddyInfoUpdated buddy_info_updated; /**< a LinphoneFriend's BuddyIn fo has changed*/
NotifyReceivedCb notify_recv; /**< Other notifications*/ NotifyReceivedCb notify_recv; /**< Other notifications*/
DisplayStatusCb display_status; /**< Callback that notifies various events with human readable text.*/ DisplayStatusCb display_status; /**< Callback that notifies various events with human readable text.*/
DisplayMessageCb display_message;/**< Callback to display a message to the user */ DisplayMessageCb display_message;/**< Callback to display a message to the user */
DisplayMessageCb display_warning;/** Callback to display a warning t o the user */ DisplayMessageCb display_warning;/** Callback to display a warning t o the user */
DisplayUrlCb display_url; DisplayUrlCb display_url;
ShowInterfaceCb show; /**< Notifies the application that it should s how up*/ ShowInterfaceCb show; /**< Notifies the application that it should s how up*/
CallEncryptionChangedCb call_encryption_changed; /**<Notifies on cha nge in the encryption of call streams */
} LinphoneCoreVTable; } LinphoneCoreVTable;
/** /**
* @} * @}
**/ **/
typedef struct _LCCallbackObj typedef struct _LCCallbackObj
{ {
LinphoneCoreCbFunc _func; LinphoneCoreCbFunc _func;
void * _user_data; void * _user_data;
skipping to change at line 653 skipping to change at line 663
bool_t linphone_core_inc_invite_pending(LinphoneCore*lc); bool_t linphone_core_inc_invite_pending(LinphoneCore*lc);
bool_t linphone_core_in_call(const LinphoneCore *lc); bool_t linphone_core_in_call(const LinphoneCore *lc);
LinphoneCall *linphone_core_get_current_call(const LinphoneCore *lc); LinphoneCall *linphone_core_get_current_call(const LinphoneCore *lc);
int linphone_core_accept_call(LinphoneCore *lc, LinphoneCall *call); int linphone_core_accept_call(LinphoneCore *lc, LinphoneCall *call);
int linphone_core_terminate_call(LinphoneCore *lc, LinphoneCall *call); int linphone_core_terminate_call(LinphoneCore *lc, LinphoneCall *call);
int linphone_core_redirect_call(LinphoneCore *lc, LinphoneCall *call, const
char *redirect_uri);
int linphone_core_terminate_all_calls(LinphoneCore *lc); int linphone_core_terminate_all_calls(LinphoneCore *lc);
int linphone_core_pause_call(LinphoneCore *lc, LinphoneCall *call); int linphone_core_pause_call(LinphoneCore *lc, LinphoneCall *call);
int linphone_core_pause_all_calls(LinphoneCore *lc); int linphone_core_pause_all_calls(LinphoneCore *lc);
int linphone_core_resume_call(LinphoneCore *lc, LinphoneCall *call); int linphone_core_resume_call(LinphoneCore *lc, LinphoneCall *call);
int linphone_core_update_call(LinphoneCore *lc, LinphoneCall *call, const L inphoneCallParams *params); int linphone_core_update_call(LinphoneCore *lc, LinphoneCall *call, const L inphoneCallParams *params);
skipping to change at line 689 skipping to change at line 701
void linphone_core_enable_ipv6(LinphoneCore *lc, bool_t val); void linphone_core_enable_ipv6(LinphoneCore *lc, bool_t val);
LinphoneAddress *linphone_core_get_primary_contact_parsed(LinphoneCore *lc) ; LinphoneAddress *linphone_core_get_primary_contact_parsed(LinphoneCore *lc) ;
const char * linphone_core_get_identity(LinphoneCore *lc); const char * linphone_core_get_identity(LinphoneCore *lc);
/*0= no bandwidth limit*/ /*0= no bandwidth limit*/
void linphone_core_set_download_bandwidth(LinphoneCore *lc, int bw); void linphone_core_set_download_bandwidth(LinphoneCore *lc, int bw);
void linphone_core_set_upload_bandwidth(LinphoneCore *lc, int bw); void linphone_core_set_upload_bandwidth(LinphoneCore *lc, int bw);
int linphone_core_get_download_bandwidth(const LinphoneCore *lc); int linphone_core_get_download_bandwidth(const LinphoneCore *lc);
int linphone_core_get_upload_bandwidth(const LinphoneCore *lc); int linphone_core_get_upload_bandwidth(const LinphoneCore *lc);
void linphone_core_enable_adaptive_rate_control(LinphoneCore *lc, bool_t en
abled);
bool_t linphone_core_adaptive_rate_control_enabled(const LinphoneCore *lc);
/** /**
* set audio packetization time linphone expect to received from peer * set audio packetization time linphone expect to receive from peer
* @ingroup media_parameters * @ingroup media_parameters
* *
*/ */
void linphone_core_set_download_ptime(LinphoneCore *lc, int ptime); void linphone_core_set_download_ptime(LinphoneCore *lc, int ptime);
/** /**
* get audio packetization time linphone expect to received from peer, 0 me ans unspecified * get audio packetization time linphone expect to receive from peer, 0 mea ns unspecified
* @ingroup media_parameters * @ingroup media_parameters
*/ */
int linphone_core_get_download_ptime(LinphoneCore *lc); int linphone_core_get_download_ptime(LinphoneCore *lc);
void linphone_core_set_upload_ptime(LinphoneCore *lc, int ptime);
int linphone_core_get_upload_ptime(LinphoneCore *lc);
/* returns a MSList of PayloadType */ /* returns a MSList of PayloadType */
const MSList *linphone_core_get_audio_codecs(const LinphoneCore *lc); const MSList *linphone_core_get_audio_codecs(const LinphoneCore *lc);
int linphone_core_set_audio_codecs(LinphoneCore *lc, MSList *codecs); int linphone_core_set_audio_codecs(LinphoneCore *lc, MSList *codecs);
/* returns a MSList of PayloadType */ /* returns a MSList of PayloadType */
const MSList *linphone_core_get_video_codecs(const LinphoneCore *lc); const MSList *linphone_core_get_video_codecs(const LinphoneCore *lc);
int linphone_core_set_video_codecs(LinphoneCore *lc, MSList *codecs); int linphone_core_set_video_codecs(LinphoneCore *lc, MSList *codecs);
bool_t linphone_core_payload_type_enabled(LinphoneCore *lc, PayloadType *pt ); bool_t linphone_core_payload_type_enabled(LinphoneCore *lc, PayloadType *pt );
skipping to change at line 777 skipping to change at line 796
bool_t linphone_core_get_use_rfc2833_for_dtmf(LinphoneCore *lc); bool_t linphone_core_get_use_rfc2833_for_dtmf(LinphoneCore *lc);
void linphone_core_set_sip_port(LinphoneCore *lc, int port); void linphone_core_set_sip_port(LinphoneCore *lc, int port);
int linphone_core_get_sip_port(LinphoneCore *lc); int linphone_core_get_sip_port(LinphoneCore *lc);
int linphone_core_set_sip_transports(LinphoneCore *lc, const LCSipTransport s *transports); int linphone_core_set_sip_transports(LinphoneCore *lc, const LCSipTransport s *transports);
int linphone_core_get_sip_transports(LinphoneCore *lc, LCSipTransports *tra nsports); int linphone_core_get_sip_transports(LinphoneCore *lc, LCSipTransports *tra nsports);
/**
* @ingroup IOS
* Give access to the UDP sip socket. Can be useful to configure this socke
t as persistent I.E kCFStreamNetworkServiceType set to kCFStreamNetworkServ
iceTypeVoIP)
* @param lc #LinphoneCore
* @return socket file descriptor
*/
ortp_socket_t linphone_core_get_sip_socket(LinphoneCore *lc); ortp_socket_t linphone_core_get_sip_socket(LinphoneCore *lc);
void linphone_core_set_inc_timeout(LinphoneCore *lc, int seconds); void linphone_core_set_inc_timeout(LinphoneCore *lc, int seconds);
int linphone_core_get_inc_timeout(LinphoneCore *lc); int linphone_core_get_inc_timeout(LinphoneCore *lc);
void linphone_core_set_stun_server(LinphoneCore *lc, const char *server); void linphone_core_set_stun_server(LinphoneCore *lc, const char *server);
const char * linphone_core_get_stun_server(const LinphoneCore *lc); const char * linphone_core_get_stun_server(const LinphoneCore *lc);
skipping to change at line 825 skipping to change at line 849
const char * linphone_core_get_ringer_device(LinphoneCore *lc); const char * linphone_core_get_ringer_device(LinphoneCore *lc);
const char * linphone_core_get_playback_device(LinphoneCore *lc); const char * linphone_core_get_playback_device(LinphoneCore *lc);
const char * linphone_core_get_capture_device(LinphoneCore *lc); const char * linphone_core_get_capture_device(LinphoneCore *lc);
int linphone_core_set_ringer_device(LinphoneCore *lc, const char * devid); int linphone_core_set_ringer_device(LinphoneCore *lc, const char * devid);
int linphone_core_set_playback_device(LinphoneCore *lc, const char * devid) ; int linphone_core_set_playback_device(LinphoneCore *lc, const char * devid) ;
int linphone_core_set_capture_device(LinphoneCore *lc, const char * devid); int linphone_core_set_capture_device(LinphoneCore *lc, const char * devid);
char linphone_core_get_sound_source(LinphoneCore *lc); char linphone_core_get_sound_source(LinphoneCore *lc);
void linphone_core_set_sound_source(LinphoneCore *lc, char source); void linphone_core_set_sound_source(LinphoneCore *lc, char source);
void linphone_core_set_ring(LinphoneCore *lc, const char *path); void linphone_core_set_ring(LinphoneCore *lc, const char *path);
const char *linphone_core_get_ring(const LinphoneCore *lc); const char *linphone_core_get_ring(const LinphoneCore *lc);
void linphone_core_set_root_ca(LinphoneCore *lc, const char *path);
void linphone_core_set_ringback(LinphoneCore *lc, const char *path); void linphone_core_set_ringback(LinphoneCore *lc, const char *path);
const char * linphone_core_get_ringback(const LinphoneCore *lc); const char * linphone_core_get_ringback(const LinphoneCore *lc);
void linphone_core_set_remote_ringback_tone(LinphoneCore *lc,const char *); void linphone_core_set_remote_ringback_tone(LinphoneCore *lc,const char *);
const char *linphone_core_get_remote_ringback_tone(const LinphoneCore *lc); const char *linphone_core_get_remote_ringback_tone(const LinphoneCore *lc);
int linphone_core_preview_ring(LinphoneCore *lc, const char *ring,LinphoneC oreCbFunc func,void * userdata); int linphone_core_preview_ring(LinphoneCore *lc, const char *ring,LinphoneC oreCbFunc func,void * userdata);
void linphone_core_enable_echo_cancellation(LinphoneCore *lc, bool_t val); void linphone_core_enable_echo_cancellation(LinphoneCore *lc, bool_t val);
bool_t linphone_core_echo_cancellation_enabled(LinphoneCore *lc); bool_t linphone_core_echo_cancellation_enabled(LinphoneCore *lc);
skipping to change at line 899 skipping to change at line 924
float linphone_core_get_static_picture_fps(LinphoneCore *lc); float linphone_core_get_static_picture_fps(LinphoneCore *lc);
/*function to be used for eventually setting window decorations (icons, tit le...)*/ /*function to be used for eventually setting window decorations (icons, tit le...)*/
unsigned long linphone_core_get_native_video_window_id(const LinphoneCore * lc); unsigned long linphone_core_get_native_video_window_id(const LinphoneCore * lc);
void linphone_core_set_native_video_window_id(LinphoneCore *lc, unsigned lo ng id); void linphone_core_set_native_video_window_id(LinphoneCore *lc, unsigned lo ng id);
unsigned long linphone_core_get_native_preview_window_id(const LinphoneCore *lc); unsigned long linphone_core_get_native_preview_window_id(const LinphoneCore *lc);
void linphone_core_set_native_preview_window_id(LinphoneCore *lc, unsigned long id); void linphone_core_set_native_preview_window_id(LinphoneCore *lc, unsigned long id);
void linphone_core_use_preview_window(LinphoneCore *lc, bool_t yesno); void linphone_core_use_preview_window(LinphoneCore *lc, bool_t yesno);
void linphone_core_set_device_rotation(LinphoneCore *lc, int rotation);
/*play/record support: use files instead of soundcard*/ /*play/record support: use files instead of soundcard*/
void linphone_core_use_files(LinphoneCore *lc, bool_t yesno); void linphone_core_use_files(LinphoneCore *lc, bool_t yesno);
void linphone_core_set_play_file(LinphoneCore *lc, const char *file); void linphone_core_set_play_file(LinphoneCore *lc, const char *file);
void linphone_core_set_record_file(LinphoneCore *lc, const char *file); void linphone_core_set_record_file(LinphoneCore *lc, const char *file);
void linphone_core_play_dtmf(LinphoneCore *lc, char dtmf, int duration_ms); void linphone_core_play_dtmf(LinphoneCore *lc, char dtmf, int duration_ms);
void linphone_core_stop_dtmf(LinphoneCore *lc); void linphone_core_stop_dtmf(LinphoneCore *lc);
int linphone_core_get_current_call_duration(const LinphoneCore *lc); int linphone_core_get_current_call_duration(const LinphoneCore *lc);
int linphone_core_get_mtu(const LinphoneCore *lc); int linphone_core_get_mtu(const LinphoneCore *lc);
void linphone_core_set_mtu(LinphoneCore *lc, int mtu); void linphone_core_set_mtu(LinphoneCore *lc, int mtu);
/** /**
* @ingroup network_parameters
* This method is called by the application to notify the linphone core lib rary when network is reachable. * This method is called by the application to notify the linphone core lib rary when network is reachable.
* Calling this method with true trigger linphone to initiate a registratio n process for all proxy * Calling this method with true trigger linphone to initiate a registratio n process for all proxy
* configuration with parameter register set to enable. * configuration with parameter register set to enable.
* This method disable the automatic registration mode. It means you must c all this method after each network state changes * This method disable the automatic registration mode. It means you must c all this method after each network state changes
* *
*/ */
void linphone_core_set_network_reachable(LinphoneCore* lc,bool_t value); void linphone_core_set_network_reachable(LinphoneCore* lc,bool_t value);
/** /**
* @ingroup network_parameters
* return network state either as positioned by the application or by linph one * return network state either as positioned by the application or by linph one
*/ */
bool_t linphone_core_is_network_reachabled(LinphoneCore* lc); bool_t linphone_core_is_network_reachabled(LinphoneCore* lc);
/** /**
* @ingroup network_parameters
* enable signaling keep alive. small udp packet sent periodically to keep udp NAT association * enable signaling keep alive. small udp packet sent periodically to keep udp NAT association
*/ */
void linphone_core_enable_keep_alive(LinphoneCore* lc,bool_t enable); void linphone_core_enable_keep_alive(LinphoneCore* lc,bool_t enable);
/** /**
* @ingroup network_parameters
* Is signaling keep alive * Is signaling keep alive
*/ */
bool_t linphone_core_keep_alive_enabled(LinphoneCore* lc); bool_t linphone_core_keep_alive_enabled(LinphoneCore* lc);
void *linphone_core_get_user_data(LinphoneCore *lc); void *linphone_core_get_user_data(LinphoneCore *lc);
/* returns LpConfig object to read/write to the config file: usefull if you wish to extend /* returns LpConfig object to read/write to the config file: usefull if you wish to extend
the config file with your own sections */ the config file with your own sections */
struct _LpConfig *linphone_core_get_config(LinphoneCore *lc); struct _LpConfig *linphone_core_get_config(LinphoneCore *lc);
/* attempts to wake up another linphone engine already running.
The "show" callback is called for the other linphone, causing gui to show u
p.
call_addr is an optional sip-uri to call immediately after waking up.
The method returns 0 if an already running linphone was found*/
int linphone_core_wake_up_possible_already_running_instance(
const char * config_file, const char * call_addr);
/*set a callback for some blocking operations, it takes you informed of the progress of the operation*/ /*set a callback for some blocking operations, it takes you informed of the progress of the operation*/
void linphone_core_set_waiting_callback(LinphoneCore *lc, LinphoneWaitingCa llback cb, void *user_context); void linphone_core_set_waiting_callback(LinphoneCore *lc, LinphoneWaitingCa llback cb, void *user_context);
/*returns the list of registered SipSetup (linphonecore plugins) */ /*returns the list of registered SipSetup (linphonecore plugins) */
const MSList * linphone_core_get_sip_setups(LinphoneCore *lc); const MSList * linphone_core_get_sip_setups(LinphoneCore *lc);
void linphone_core_destroy(LinphoneCore *lc); void linphone_core_destroy(LinphoneCore *lc);
/*for advanced users:*/ /*for advanced users:*/
void linphone_core_set_audio_transports(LinphoneCore *lc, RtpTransport *rtp , RtpTransport *rtcp); void linphone_core_set_audio_transports(LinphoneCore *lc, RtpTransport *rtp , RtpTransport *rtcp);
void linphone_core_set_video_transports(LinphoneCore *lc, RtpTransport *rtp , RtpTransport *rtcp);
int linphone_core_get_current_call_stats(LinphoneCore *lc, rtp_stats_t *loc al, rtp_stats_t *remote); int linphone_core_get_current_call_stats(LinphoneCore *lc, rtp_stats_t *loc al, rtp_stats_t *remote);
const MSList *linphone_core_get_calls(LinphoneCore *lc); const MSList *linphone_core_get_calls(LinphoneCore *lc);
LinphoneGlobalState linphone_core_get_global_state(const LinphoneCore *lc); LinphoneGlobalState linphone_core_get_global_state(const LinphoneCore *lc);
/** /**
* force registration refresh to be initiated upon next iterate * force registration refresh to be initiated upon next iterate
* @ingroup proxies * @ingroup proxies
*/ */
void linphone_core_refresh_registers(LinphoneCore* lc); void linphone_core_refresh_registers(LinphoneCore* lc);
void linphone_call_send_vfu_request(LinphoneCall *call);
/* Path to the file storing secrets cache */
void linphone_core_set_zrtp_secrets_file(LinphoneCore *lc, const char* file
);
bool_t linphone_call_are_all_streams_encrypted(LinphoneCall *call);
const char* linphone_call_get_authentication_token(LinphoneCall *call);
bool_t linphone_call_get_authentication_token_verified(LinphoneCall *call);
const LinphoneCall* linphone_core_find_call_from_uri(LinphoneCore *lc, cons
t char *uri);
int linphone_core_add_to_conference(LinphoneCore *lc, LinphoneCall *call);
int linphone_core_add_all_to_conference(LinphoneCore *lc);
int linphone_core_remove_from_conference(LinphoneCore *lc, LinphoneCall *ca
ll);
bool_t linphone_core_is_in_conference(const LinphoneCore *lc);
int linphone_core_enter_conference(LinphoneCore *lc);
int linphone_core_leave_conference(LinphoneCore *lc);
float linphone_core_get_conference_local_input_volume(LinphoneCore *lc);
int linphone_core_terminate_conference(LinphoneCore *lc);
int linphone_core_get_conference_size(LinphoneCore *lc);
int linphone_core_get_max_calls(LinphoneCore *lc);
bool_t linphone_core_sound_resources_locked(LinphoneCore *lc);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
void linphone_call_send_vfu_request(LinphoneCall *call);
#endif #endif
 End of changes. 24 change blocks. 
15 lines changed or deleted 69 lines changed or added


 linphonecore_utils.h   linphonecore_utils.h 
skipping to change at line 67 skipping to change at line 67
**/ **/
typedef enum { typedef enum {
LinphoneEcCalibratorInProgress, LinphoneEcCalibratorInProgress,
LinphoneEcCalibratorDone, LinphoneEcCalibratorDone,
LinphoneEcCalibratorFailed LinphoneEcCalibratorFailed
}LinphoneEcCalibratorStatus; }LinphoneEcCalibratorStatus;
typedef void (*LinphoneEcCalibrationCallback)(LinphoneCore *lc, LinphoneEcC alibratorStatus status, int delay_ms, void *data); typedef void (*LinphoneEcCalibrationCallback)(LinphoneCore *lc, LinphoneEcC alibratorStatus status, int delay_ms, void *data);
/** /**
*
* Start an echo calibration of the sound devices, in order to find adequat e settings for the echo canceller automatically. * Start an echo calibration of the sound devices, in order to find adequat e settings for the echo canceller automatically.
**/ **/
int linphone_core_start_echo_calibration(LinphoneCore *lc, LinphoneEcCalibr ationCallback cb, void *cb_data); int linphone_core_start_echo_calibration(LinphoneCore *lc, LinphoneEcCalibr ationCallback cb, void *cb_data);
#if TARGET_OS_IPHONE
/** /**
* IOS special function to warm up dtmf feeback stream. #linphone_core_sto * @ingroup IOS
p_dtmf_stream must be called before entering BG mode * Special function to warm up dtmf feeback stream. #linphone_core_stop_dt
mf_stream must() be called before entering FG mode
*/ */
void linphone_core_start_dtmf_stream(const LinphoneCore* lc); void linphone_core_start_dtmf_stream(LinphoneCore* lc);
/** /**
* IOS special function to stop dtmf feed back function. Must be called bef * @ingroup IOS
ore entering BG mode * Special function to stop dtmf feed back function. Must be called before
entering BG mode
*/ */
void linphone_core_stop_dtmf_stream(const LinphoneCore* lc); void linphone_core_stop_dtmf_stream(LinphoneCore* lc);
#endif
typedef bool_t (*LinphoneCoreIterateHook)(void *data);
void linphone_core_add_iterate_hook(LinphoneCore *lc, LinphoneCoreIterateHo
ok hook, void *hook_data);
void linphone_core_remove_iterate_hook(LinphoneCore *lc, LinphoneCoreIterat
eHook hook, void *hook_data);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif
 End of changes. 6 change blocks. 
8 lines changed or deleted 17 lines changed or added


 lpconfig.h   lpconfig.h 
skipping to change at line 90 skipping to change at line 90
* @ingroup misc * @ingroup misc
**/ **/
void lp_config_set_string(LpConfig *lpconfig,const char *section, const cha r *key, const char *value); void lp_config_set_string(LpConfig *lpconfig,const char *section, const cha r *key, const char *value);
/** /**
* Sets an integer config item * Sets an integer config item
* *
* @ingroup misc * @ingroup misc
**/ **/
void lp_config_set_int(LpConfig *lpconfig,const char *section, const char * key, int value); void lp_config_set_int(LpConfig *lpconfig,const char *section, const char * key, int value);
/** /**
* Sets a float config item
*
* @ingroup misc
**/
void lp_config_set_float(LpConfig *lpconfig,const char *section, const char
*key, float value);
/**
* Writes the config file to disk. * Writes the config file to disk.
* *
* @ingroup misc * @ingroup misc
**/ **/
int lp_config_sync(LpConfig *lpconfig); int lp_config_sync(LpConfig *lpconfig);
/** /**
* Returns 1 if a given section is present in the configuration. * Returns 1 if a given section is present in the configuration.
* *
* @ingroup misc * @ingroup misc
**/ **/
 End of changes. 1 change blocks. 
0 lines changed or deleted 7 lines changed or added


 mediastream.h   mediastream.h 
skipping to change at line 23 skipping to change at line 23
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef MEDIASTREAM_H #ifndef MEDIASTREAM_H
#define MEDIASTREAM_H #define MEDIASTREAM_H
#include "mediastreamer2/msfilter.h" #include <mediastreamer2/msfilter.h>
#include "mediastreamer2/msticker.h" #include <mediastreamer2/msticker.h>
#include "mediastreamer2/mssndcard.h" #include <mediastreamer2/mssndcard.h>
#include "mediastreamer2/mswebcam.h" #include <mediastreamer2/mswebcam.h>
#include "mediastreamer2/msvideo.h" #include <mediastreamer2/msvideo.h>
#include "ortp/ortp.h" #include <mediastreamer2/bitratecontrol.h>
#include "ortp/event.h" #include <mediastreamer2/qualityindicator.h>
#include <ortp/ortp.h>
#include <ortp/event.h>
#include <ortp/zrtp.h>
#include <ortp/ortp_srtp.h>
#define PAYLOAD_TYPE_FLAG_CAN_RECV PAYLOAD_TYPE_USER_FLAG_1
#define PAYLOAD_TYPE_FLAG_CAN_SEND PAYLOAD_TYPE_USER_FLAG_2
typedef enum EchoLimiterType{ typedef enum EchoLimiterType{
ELInactive, ELInactive,
ELControlMic, ELControlMic,
ELControlFull ELControlFull
} EchoLimiterType; } EchoLimiterType;
struct _AudioStream struct _AudioStream
{ {
MSTicker *ticker; MSTicker *ticker;
skipping to change at line 57 skipping to change at line 64
MSFilter *dtmfgen; MSFilter *dtmfgen;
MSFilter *dtmfgen_rtp; MSFilter *dtmfgen_rtp;
MSFilter *ec;/*echo canceler*/ MSFilter *ec;/*echo canceler*/
MSFilter *volsend,*volrecv; /*MSVolumes*/ MSFilter *volsend,*volrecv; /*MSVolumes*/
MSFilter *read_resampler; MSFilter *read_resampler;
MSFilter *write_resampler; MSFilter *write_resampler;
MSFilter *equalizer; MSFilter *equalizer;
uint64_t last_packet_count; uint64_t last_packet_count;
time_t last_packet_time; time_t last_packet_time;
EchoLimiterType el_type; /*use echo limiter: two MSVolume, measured input level controlling local output level*/ EchoLimiterType el_type; /*use echo limiter: two MSVolume, measured input level controlling local output level*/
int ec_tail_len; /*milliseconds*/
int ec_delay; /*milliseconds*/
int ec_framesize; /* number of fft points */
OrtpEvQueue *evq; OrtpEvQueue *evq;
MSBitrateController *rc;
MSQualityIndicator *qi;
time_t start_time;
bool_t play_dtmfs; bool_t play_dtmfs;
bool_t use_gc; bool_t use_gc;
bool_t use_agc; bool_t use_agc;
bool_t eq_active; bool_t eq_active;
bool_t use_ng;/*noise gate*/ bool_t use_ng;/*noise gate*/
bool_t use_rc;
bool_t is_beginning;
OrtpZrtpContext *ortpZrtpContext;
srtp_t srtp_session;
}; };
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
typedef struct _AudioStream AudioStream; typedef struct _AudioStream AudioStream;
struct _RingStream struct _RingStream
{ {
skipping to change at line 116 skipping to change at line 127
/* those two function do the same as audio_stream_start() but in two steps /* those two function do the same as audio_stream_start() but in two steps
this is useful to make sure that sockets are open before sending an invite; this is useful to make sure that sockets are open before sending an invite;
or to start to stream only after receiving an ack.*/ or to start to stream only after receiving an ack.*/
MS2_PUBLIC AudioStream *audio_stream_new(int locport, bool_t ipv6); MS2_PUBLIC AudioStream *audio_stream_new(int locport, bool_t ipv6);
MS2_PUBLIC int audio_stream_start_now(AudioStream * stream, RtpProfile * pr of, const char *remip, int remport, int rem_rtcp_port, int payload_type, i nt jitt_comp,MSSndCard *playcard, MSSndCard *captcard, bool_t echo_cancel); MS2_PUBLIC int audio_stream_start_now(AudioStream * stream, RtpProfile * pr of, const char *remip, int remport, int rem_rtcp_port, int payload_type, i nt jitt_comp,MSSndCard *playcard, MSSndCard *captcard, bool_t echo_cancel);
MS2_PUBLIC void audio_stream_set_relay_session_id(AudioStream *stream, cons t char *relay_session_id); MS2_PUBLIC void audio_stream_set_relay_session_id(AudioStream *stream, cons t char *relay_session_id);
/*returns true if we are still receiving some data from remote end in the l ast timeout seconds*/ /*returns true if we are still receiving some data from remote end in the l ast timeout seconds*/
MS2_PUBLIC bool_t audio_stream_alive(AudioStream * stream, int timeout); MS2_PUBLIC bool_t audio_stream_alive(AudioStream * stream, int timeout);
/*execute background tasks related to audio processing*/
MS2_PUBLIC void audio_stream_iterate(AudioStream *stream);
/*enable echo-limiter dispositve: one MSVolume in input branch controls a M SVolume in the output branch*/ /*enable echo-limiter dispositve: one MSVolume in input branch controls a M SVolume in the output branch*/
MS2_PUBLIC void audio_stream_enable_echo_limiter(AudioStream *stream, EchoL imiterType type); MS2_PUBLIC void audio_stream_enable_echo_limiter(AudioStream *stream, EchoL imiterType type);
/*enable gain control, to be done before start() */ /*enable gain control, to be done before start() */
MS2_PUBLIC void audio_stream_enable_gain_control(AudioStream *stream, bool_ t val); MS2_PUBLIC void audio_stream_enable_gain_control(AudioStream *stream, bool_ t val);
/*enable automatic gain control, to be done before start() */ /*enable automatic gain control, to be done before start() */
MS2_PUBLIC void audio_stream_enable_automatic_gain_control(AudioStream *str eam, bool_t val); MS2_PUBLIC void audio_stream_enable_automatic_gain_control(AudioStream *str eam, bool_t val);
/*to be done before start */ /*to be done before start */
MS2_PUBLIC void audio_stream_set_echo_canceller_params(AudioStream *st, int tail_len_ms, int delay_ms, int framesize); MS2_PUBLIC void audio_stream_set_echo_canceller_params(AudioStream *st, int tail_len_ms, int delay_ms, int framesize);
/*enable adaptive rate control */
MS2_PUBLIC void audio_stream_enable_adaptive_bitrate_control(AudioStream *s
t, bool_t enabled);
MS2_PUBLIC void audio_stream_set_mic_gain(AudioStream *stream, float gain); MS2_PUBLIC void audio_stream_set_mic_gain(AudioStream *stream, float gain);
/* enable/disable rtp stream */ /* enable/disable rtp stream */
MS2_PUBLIC void audio_stream_mute_rtp(AudioStream *stream, bool_t val); MS2_PUBLIC void audio_stream_mute_rtp(AudioStream *stream, bool_t val);
/*enable noise gate, must be done before start()*/ /*enable noise gate, must be done before start()*/
MS2_PUBLIC void audio_stream_enable_noise_gate(AudioStream *stream, bool_t val); MS2_PUBLIC void audio_stream_enable_noise_gate(AudioStream *stream, bool_t val);
/*enable parametric equalizer in the stream that goes to the speaker*/ /*enable parametric equalizer in the stream that goes to the speaker*/
MS2_PUBLIC void audio_stream_enable_equalizer(AudioStream *stream, bool_t e nabled); MS2_PUBLIC void audio_stream_enable_equalizer(AudioStream *stream, bool_t e nabled);
skipping to change at line 156 skipping to change at line 173
MS2_PUBLIC void ring_stop (RingStream * stream); MS2_PUBLIC void ring_stop (RingStream * stream);
/* send a dtmf */ /* send a dtmf */
MS2_PUBLIC int audio_stream_send_dtmf (AudioStream * stream, char dtmf); MS2_PUBLIC int audio_stream_send_dtmf (AudioStream * stream, char dtmf);
MS2_PUBLIC void audio_stream_set_default_card(int cardindex); MS2_PUBLIC void audio_stream_set_default_card(int cardindex);
/* retrieve RTP statistics*/ /* retrieve RTP statistics*/
MS2_PUBLIC void audio_stream_get_local_rtp_stats(AudioStream *stream, rtp_s tats_t *stats); MS2_PUBLIC void audio_stream_get_local_rtp_stats(AudioStream *stream, rtp_s tats_t *stats);
/* returns a realtime indicator of the stream quality between 0 and 5 */
MS2_PUBLIC float audio_stream_get_quality_rating(AudioStream *stream);
/* returns the quality rating as an average since the start of the streamin
g session.*/
MS2_PUBLIC float audio_stream_get_average_quality_rating(AudioStream *strea
m);
/* enable ZRTP on the audio stream */
MS2_PUBLIC void audio_stream_enable_zrtp(AudioStream *stream, OrtpZrtpParam
s *params);
/* enable SRTP on the audio stream */
MS2_PUBLIC bool_t audio_stream_enable_strp(AudioStream* stream, enum ortp_s
rtp_crypto_suite_t suite, const char* snd_key, const char* rcv_key);
/***************** /*****************
Video Support Video Support
*****************/ *****************/
typedef void (*VideoStreamRenderCallback)(void *user_pointer, const MSPictu re *local_view, const MSPicture *remote_view); typedef void (*VideoStreamRenderCallback)(void *user_pointer, const MSPictu re *local_view, const MSPicture *remote_view);
typedef void (*VideoStreamEventCallback)(void *user_pointer, const MSFilter *f, const unsigned int event_id, const void *args); typedef void (*VideoStreamEventCallback)(void *user_pointer, const MSFilter *f, const unsigned int event_id, const void *args);
typedef enum _VideoStreamDir{ typedef enum _VideoStreamDir{
VideoStreamSendRecv, VideoStreamSendRecv,
VideoStreamSendOnly, VideoStreamSendOnly,
skipping to change at line 198 skipping to change at line 227
VideoStreamRenderCallback rendercb; VideoStreamRenderCallback rendercb;
void *render_pointer; void *render_pointer;
VideoStreamEventCallback eventcb; VideoStreamEventCallback eventcb;
void *event_pointer; void *event_pointer;
char *display_name; char *display_name;
unsigned long window_id; unsigned long window_id;
unsigned long preview_window_id; unsigned long preview_window_id;
VideoStreamDir dir; VideoStreamDir dir;
MSWebCam *cam; MSWebCam *cam;
bool_t use_preview_window; bool_t use_preview_window;
bool_t adapt_bitrate; bool_t use_rc;
bool_t pad[2];
int device_orientation; /* warning: meaning of this variable depends
on the platform (Android, iOS, ...) */
OrtpZrtpContext *ortpZrtpContext;
srtp_t srtp_session;
MSBitrateController *rc;
}; };
typedef struct _VideoStream VideoStream; typedef struct _VideoStream VideoStream;
MS2_PUBLIC VideoStream *video_stream_new(int locport, bool_t use_ipv6); MS2_PUBLIC VideoStream *video_stream_new(int locport, bool_t use_ipv6);
MS2_PUBLIC void video_stream_set_direction(VideoStream *vs, VideoStreamDir dir); MS2_PUBLIC void video_stream_set_direction(VideoStream *vs, VideoStreamDir dir);
MS2_PUBLIC void video_stream_enable_adaptive_bitrate_control(VideoStream *s , bool_t yesno); MS2_PUBLIC void video_stream_enable_adaptive_bitrate_control(VideoStream *s , bool_t yesno);
MS2_PUBLIC void video_stream_set_render_callback(VideoStream *s, VideoStrea mRenderCallback cb, void *user_pointer); MS2_PUBLIC void video_stream_set_render_callback(VideoStream *s, VideoStrea mRenderCallback cb, void *user_pointer);
MS2_PUBLIC void video_stream_set_event_callback(VideoStream *s, VideoStream EventCallback cb, void *user_pointer); MS2_PUBLIC void video_stream_set_event_callback(VideoStream *s, VideoStream EventCallback cb, void *user_pointer);
MS2_PUBLIC void video_stream_set_display_filter_name(VideoStream *s, const char *fname); MS2_PUBLIC void video_stream_set_display_filter_name(VideoStream *s, const char *fname);
skipping to change at line 229 skipping to change at line 263
MS2_PUBLIC void video_stream_iterate(VideoStream *stream); MS2_PUBLIC void video_stream_iterate(VideoStream *stream);
MS2_PUBLIC void video_stream_send_vfu(VideoStream *stream); MS2_PUBLIC void video_stream_send_vfu(VideoStream *stream);
MS2_PUBLIC void video_stream_stop(VideoStream * stream); MS2_PUBLIC void video_stream_stop(VideoStream * stream);
MS2_PUBLIC void video_stream_set_sent_video_size(VideoStream *stream, MSVid eoSize vsize); MS2_PUBLIC void video_stream_set_sent_video_size(VideoStream *stream, MSVid eoSize vsize);
MS2_PUBLIC void video_stream_enable_self_view(VideoStream *stream, bool_t v al); MS2_PUBLIC void video_stream_enable_self_view(VideoStream *stream, bool_t v al);
MS2_PUBLIC unsigned long video_stream_get_native_window_id(VideoStream *str eam); MS2_PUBLIC unsigned long video_stream_get_native_window_id(VideoStream *str eam);
MS2_PUBLIC void video_stream_set_native_window_id(VideoStream *stream, unsi gned long id); MS2_PUBLIC void video_stream_set_native_window_id(VideoStream *stream, unsi gned long id);
MS2_PUBLIC void video_stream_set_native_preview_window_id(VideoStream *stre am, unsigned long id); MS2_PUBLIC void video_stream_set_native_preview_window_id(VideoStream *stre am, unsigned long id);
MS2_PUBLIC unsigned long video_stream_get_native_preview_window_id(VideoStr eam *stream); MS2_PUBLIC unsigned long video_stream_get_native_preview_window_id(VideoStr eam *stream);
MS2_PUBLIC void video_stream_use_preview_video_window(VideoStream *stream, bool_t yesno); MS2_PUBLIC void video_stream_use_preview_video_window(VideoStream *stream, bool_t yesno);
MS2_PUBLIC void video_stream_set_device_rotation(VideoStream *stream, int o rientation);
/*provided for compatibility, use video_stream_set_direction() instead */ /*provided for compatibility, use video_stream_set_direction() instead */
MS2_PUBLIC int video_stream_recv_only_start(VideoStream *videostream, RtpPr ofile *profile, const char *addr, int port, int used_pt, int jitt_comp); MS2_PUBLIC int video_stream_recv_only_start(VideoStream *videostream, RtpPr ofile *profile, const char *addr, int port, int used_pt, int jitt_comp);
MS2_PUBLIC int video_stream_send_only_start(VideoStream *videostream, MS2_PUBLIC int video_stream_send_only_start(VideoStream *videostream,
RtpProfile *profile, const char *addr, int p ort, int rtcp_port, RtpProfile *profile, const char *addr, int p ort, int rtcp_port,
int used_pt, int jitt_comp, MSWebCam *devic e); int used_pt, int jitt_comp, MSWebCam *devic e);
MS2_PUBLIC void video_stream_recv_only_stop(VideoStream *vs); MS2_PUBLIC void video_stream_recv_only_stop(VideoStream *vs);
MS2_PUBLIC void video_stream_send_only_stop(VideoStream *vs); MS2_PUBLIC void video_stream_send_only_stop(VideoStream *vs);
/* enable ZRTP on the video stream using information from the audio stream
*/
MS2_PUBLIC void video_stream_enable_zrtp(VideoStream *vstream, AudioStream
*astream, OrtpZrtpParams *param);
/* enable SRTP on the video stream */
MS2_PUBLIC bool_t video_stream_enable_strp(VideoStream* stream, enum ortp_s
rtp_crypto_suite_t suite, const char* snd_key, const char* rcv_key);
/** /**
* Small API to display a local preview window. * Small API to display a local preview window.
**/ **/
typedef VideoStream VideoPreview; typedef VideoStream VideoPreview;
MS2_PUBLIC VideoPreview * video_preview_new(); MS2_PUBLIC VideoPreview * video_preview_new();
#define video_preview_set_size(p,s) video_stream_set_sent_video_size(p,s) #define video_preview_set_size(p,s) video_stream_set_sent_video_size(p,s)
#define video_preview_set_display_filter_name(p,dt) video_stream_set_dis play_filter_name(p,dt) #define video_preview_set_display_filter_name(p,dt) video_stream_set_dis play_filter_name(p,dt)
#define video_preview_set_native_window_id(p,id) video_stream _set_native_preview_window_id (p,id) #define video_preview_set_native_window_id(p,id) video_stream _set_native_preview_window_id (p,id)
 End of changes. 10 change blocks. 
11 lines changed or deleted 61 lines changed or added


 msaudiomixer.h   msaudiomixer.h 
skipping to change at line 22 skipping to change at line 22
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef msaudiomixer_h #ifndef msaudiomixer_h
#define msaudiomixer_h #define msaudiomixer_h
#include "mediastreamer2/msfilter.h" #include <mediastreamer2/msfilter.h>
typedef struct MSAudioMixerCtl{ typedef struct MSAudioMixerCtl{
int pin; int pin;
float gain; union param_t {
float gain; /**<gain correction */
int active; /**< to mute or unmute the channel */
} param;
} MSAudioMixerCtl; } MSAudioMixerCtl;
#define MS_AUDIO_MIXER_SET_INPUT_GAIN MS_FILTER_METHOD(MS_AUDIO_MIXER_ID,0 #define MS_AUDIO_MIXER_SET_INPUT_GAIN MS_FILTER_METHOD(MS_
,MSAudioMixerCtl) AUDIO_MIXER_ID,0,MSAudioMixerCtl)
#define MS_AUDIO_MIXER_SET_ACTIVE MS_FILTER_ME
THOD(MS_AUDIO_MIXER_ID,1,MSAudioMixerCtl)
#define MS_AUDIO_MIXER_ENABLE_CONFERENCE_MODE MS_FILTER_METHOD(MS_AUDIO_MI
XER_ID,2,int)
#endif #endif
 End of changes. 3 change blocks. 
4 lines changed or deleted 11 lines changed or added


 mschanadapter.h   mschanadapter.h 
skipping to change at line 22 skipping to change at line 22
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef mchanadapter_h #ifndef mchanadapter_h
#define mchanadapter_h #define mchanadapter_h
#include "msfilter.h" #include <mediastreamer2/msfilter.h>
#define MS_CHANNEL_ADAPTER_SET_OUTPUT_NCHANNELS MS_FILTER_METHOD(MS_ CHANNEL_ADAPTER_ID,0,int) #define MS_CHANNEL_ADAPTER_SET_OUTPUT_NCHANNELS MS_FILTER_METHOD(MS_ CHANNEL_ADAPTER_ID,0,int)
#define MS_CHANNEL_ADAPTER_GET_OUTPUT_NCHANNELS MS_FILTER_METHOD(MS_ CHANNEL_ADAPTER_ID,1,int) #define MS_CHANNEL_ADAPTER_GET_OUTPUT_NCHANNELS MS_FILTER_METHOD(MS_ CHANNEL_ADAPTER_ID,1,int)
#endif #endif
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 mscommon.h   mscommon.h 
skipping to change at line 96 skipping to change at line 96
#define ms_return_val_if_fail(_expr_,_ret_)\ #define ms_return_val_if_fail(_expr_,_ret_)\
if (!(_expr_)) { ms_error("assert "#_expr_ "failed"); return (_ret_) ;} if (!(_expr_)) { ms_error("assert "#_expr_ "failed"); return (_ret_) ;}
#define ms_return_if_fail(_expr_) \ #define ms_return_if_fail(_expr_) \
if (!(_expr_)){ ms_error("assert "#_expr_ "failed"); return ;} if (!(_expr_)){ ms_error("assert "#_expr_ "failed"); return ;}
#define ms_thread_t ortp_thread_t #define ms_thread_t ortp_thread_t
#define ms_thread_create ortp_thread_create #define ms_thread_create ortp_thread_create
#define ms_thread_join ortp_thread_join #define ms_thread_join ortp_thread_join
typedef struct MSTimeSpec{
int64_t tv_sec;
int64_t tv_nsec;
}MSTimeSpec;
struct _MSList { struct _MSList {
struct _MSList *next; struct _MSList *next;
struct _MSList *prev; struct _MSList *prev;
void *data; void *data;
}; };
typedef struct _MSList MSList; typedef struct _MSList MSList;
#define ms_list_next(elem) ((elem)->next) #define ms_list_next(elem) ((elem)->next)
typedef int (*MSCompareFunc)(const void *a, const void *b); typedef int (*MSCompareFunc)(const void *a, const void *b);
#ifdef __cplusplus #ifdef __cplusplus
extern "C"{ extern "C"{
#endif #endif
void ms_thread_exit(void* ret_val); void ms_thread_exit(void* ret_val);
MS2_PUBLIC void ms_get_cur_time(MSTimeSpec *ret);
MS2_PUBLIC MSList * ms_list_append(MSList *elem, void * data); MS2_PUBLIC MSList * ms_list_append(MSList *elem, void * data);
MS2_PUBLIC MSList * ms_list_prepend(MSList *elem, void * data); MS2_PUBLIC MSList * ms_list_prepend(MSList *elem, void * data);
MS2_PUBLIC MSList * ms_list_free(MSList *elem); MS2_PUBLIC MSList * ms_list_free(MSList *elem);
MS2_PUBLIC MSList * ms_list_concat(MSList *first, MSList *second); MS2_PUBLIC MSList * ms_list_concat(MSList *first, MSList *second);
MS2_PUBLIC MSList * ms_list_remove(MSList *first, void *data); MS2_PUBLIC MSList * ms_list_remove(MSList *first, void *data);
MS2_PUBLIC int ms_list_size(const MSList *first); MS2_PUBLIC int ms_list_size(const MSList *first);
MS2_PUBLIC void ms_list_for_each(const MSList *list, void (*func)(void *)); MS2_PUBLIC void ms_list_for_each(const MSList *list, void (*func)(void *));
MS2_PUBLIC void ms_list_for_each2(const MSList *list, void (*func)(void *, void *), void *user_data); MS2_PUBLIC void ms_list_for_each2(const MSList *list, void (*func)(void *, void *), void *user_data);
MS2_PUBLIC MSList *ms_list_remove_link(MSList *list, MSList *elem); MS2_PUBLIC MSList *ms_list_remove_link(MSList *list, MSList *elem);
MS2_PUBLIC MSList *ms_list_find(MSList *list, void *data); MS2_PUBLIC MSList *ms_list_find(MSList *list, void *data);
skipping to change at line 216 skipping to change at line 222
* This function will call ms_set_payload_max_size(mtu-[ipv6 header size]). * This function will call ms_set_payload_max_size(mtu-[ipv6 header size]).
**/ **/
MS2_PUBLIC void ms_set_mtu(int mtu); MS2_PUBLIC void ms_set_mtu(int mtu);
/** @} */ /** @} */
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#ifdef MS2_INTERNAL
# ifdef HAVE_CONFIG_H
# include "mediastreamer-config.h" /*necessary to know if ENABLE_NLS is th
ere*/
# endif
# if defined(ENABLE_NLS)
# include <libintl.h>
# define _(String) dgettext (GETTEXT_PACKAGE, String)
# else
# define _(String) (String)
# endif // ENABLE_NLS
#define N_(String) (String)
#endif // MS2_INTERNAL
#ifdef ANDROID #ifdef ANDROID
#include "mediastreamer2/msjava.h" #include "mediastreamer2/msjava.h"
#endif #endif
#endif #endif
 End of changes. 3 change blocks. 
0 lines changed or deleted 20 lines changed or added


 mseventqueue.h   mseventqueue.h 
skipping to change at line 23 skipping to change at line 23
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef mseventqueue_h #ifndef mseventqueue_h
#define mseventqueue_h #define mseventqueue_h
#include "mediastreamer2/mscommon.h" #include <mediastreamer2/mscommon.h>
typedef struct _MSEventQueue MSEventQueue; typedef struct _MSEventQueue MSEventQueue;
/** /**
* Creates an event queue to receive notifications from MSFilters. * Creates an event queue to receive notifications from MSFilters.
* *
* The queue can be installed to be global with ms_set_global_event_queue() . * The queue can be installed to be global with ms_set_global_event_queue() .
* The application can then schedule the callbacks for the events * The application can then schedule the callbacks for the events
* received by the queue by calling ms_event_queue_pump() * received by the queue by calling ms_event_queue_pump()
**/ **/
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 msextdisplay.h   msextdisplay.h 
skipping to change at line 22 skipping to change at line 22
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef msextdisplay_h #ifndef msextdisplay_h
#define msextdisplay_h #define msextdisplay_h
#include "mediastreamer2/msfilter.h" #include <mediastreamer2/msfilter.h>
#include "mediastreamer2/msvideo.h" #include <mediastreamer2/msvideo.h>
typedef struct _MSExtDisplayOutput{ typedef struct _MSExtDisplayOutput{
MSPicture remote_view; MSPicture remote_view;
MSPicture local_view; MSPicture local_view;
}MSExtDisplayOutput; }MSExtDisplayOutput;
/* a synchronous event generated by the filter when a new picture is to be drawn */ /* a synchronous event generated by the filter when a new picture is to be drawn */
#define MS_EXT_DISPLAY_ON_DRAW MS_FILTER_EVENT(MS_EXT_DISPLAY_ID,0,MSExtDis playOutput) #define MS_EXT_DISPLAY_ON_DRAW MS_FILTER_EVENT(MS_EXT_DISPLAY_ID,0,MSExtDis playOutput)
#endif #endif
 End of changes. 1 change blocks. 
2 lines changed or deleted 2 lines changed or added


 msfileplayer.h   msfileplayer.h 
skipping to change at line 22 skipping to change at line 22
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef msfileplayer_h #ifndef msfileplayer_h
#define msfileplayer_h #define msfileplayer_h
#include "msfilter.h" #include <mediastreamer2/msfilter.h>
/*methods*/ /*methods*/
#define MS_FILE_PLAYER_OPEN MS_FILTER_METHOD(MS_FILE_PLAYER_ID,0,const c har*) #define MS_FILE_PLAYER_OPEN MS_FILTER_METHOD(MS_FILE_PLAYER_ID,0,const c har*)
#define MS_FILE_PLAYER_START MS_FILTER_METHOD_NO_ARG(MS_FILE_PLAYER_ID,1) #define MS_FILE_PLAYER_START MS_FILTER_METHOD_NO_ARG(MS_FILE_PLAYER_ID,1)
#define MS_FILE_PLAYER_STOP MS_FILTER_METHOD_NO_ARG(MS_FILE_PLAYER_ID,2) #define MS_FILE_PLAYER_STOP MS_FILTER_METHOD_NO_ARG(MS_FILE_PLAYER_ID,2)
#define MS_FILE_PLAYER_CLOSE MS_FILTER_METHOD_NO_ARG(MS_FILE_PLAYER_ID,3) #define MS_FILE_PLAYER_CLOSE MS_FILTER_METHOD_NO_ARG(MS_FILE_PLAYER_ID,3)
/* set loop mode: /* set loop mode:
-1: no looping, -1: no looping,
0: loop at end of file, 0: loop at end of file,
x>0, loop after x miliseconds after eof x>0, loop after x miliseconds after eof
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 msfilerec.h   msfilerec.h 
skipping to change at line 22 skipping to change at line 22
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef msfilerec_h #ifndef msfilerec_h
#define msfilerec_h #define msfilerec_h
#include "msfilter.h" #include <mediastreamer2/msfilter.h>
extern MSFilterDesc ms_file_rec_desc; extern MSFilterDesc ms_file_rec_desc;
#define MS_FILE_REC_OPEN MS_FILTER_METHOD(MS_FILE_REC_ID,0,const char ) #define MS_FILE_REC_OPEN MS_FILTER_METHOD(MS_FILE_REC_ID,0,const char )
#define MS_FILE_REC_START MS_FILTER_METHOD_NO_ARG(MS_FILE_REC_ID,1) #define MS_FILE_REC_START MS_FILTER_METHOD_NO_ARG(MS_FILE_REC_ID,1)
#define MS_FILE_REC_STOP MS_FILTER_METHOD_NO_ARG(MS_FILE_REC_ID,2) #define MS_FILE_REC_STOP MS_FILTER_METHOD_NO_ARG(MS_FILE_REC_ID,2)
#define MS_FILE_REC_CLOSE MS_FILTER_METHOD_NO_ARG(MS_FILE_REC_ID,3) #define MS_FILE_REC_CLOSE MS_FILTER_METHOD_NO_ARG(MS_FILE_REC_ID,3)
#endif #endif
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 msfilter.h   msfilter.h 
skipping to change at line 142 skipping to change at line 142
MSQueue **inputs; MSQueue **inputs;
MSQueue **outputs; MSQueue **outputs;
MSFilterNotifyFunc notify; MSFilterNotifyFunc notify;
void *notify_ud; void *notify_ud;
void *data; void *data;
struct _MSTicker *ticker; struct _MSTicker *ticker;
/*private attributes */ /*private attributes */
uint32_t last_tick; uint32_t last_tick;
MSFilterStats *stats; MSFilterStats *stats;
bool_t seen; bool_t seen;
bool_t synchronous_notifies;
}; };
/** /**
* Structure to create/link/unlink/destroy filter's object. * Structure to create/link/unlink/destroy filter's object.
* @var MSFilter * @var MSFilter
*/ */
typedef struct _MSFilter MSFilter; typedef struct _MSFilter MSFilter;
struct _MSConnectionPoint{ struct _MSConnectionPoint{
MSFilter *filter; MSFilter *filter;
skipping to change at line 223 skipping to change at line 222
* Existing Public plugins: * Existing Public plugins:
* iLBC * iLBC
* *
* @param mime A string indicating the codec. * @param mime A string indicating the codec.
* *
* Returns: a MSFilterDesc if successfull, NULL otherwise. * Returns: a MSFilterDesc if successfull, NULL otherwise.
*/ */
MS2_PUBLIC MSFilterDesc * ms_filter_get_decoder(const char *mime); MS2_PUBLIC MSFilterDesc * ms_filter_get_decoder(const char *mime);
/** /**
* Lookup a mediastreamer2 filter using its name.
* If found, the descriptor (MSFilterDesc) is returned.
* This descriptor can be used to instanciate the filter using ms_filter_ne
w_from_desc()
* This function can be useful to query the presence of a filter loaded as
a plugin, for example.
*
* @param name The filter name.
**/
MS2_PUBLIC MSFilterDesc *ms_filter_lookup_by_name(const char *filter_name);
/**
* Create encoder filter according to codec name. * Create encoder filter according to codec name.
* *
* Internal supported codecs: * Internal supported codecs:
* PCMU, PCMA, speex, gsm * PCMU, PCMA, speex, gsm
* Existing Public plugins: * Existing Public plugins:
* iLBC * iLBC
* *
* @param mime A string indicating the codec. * @param mime A string indicating the codec.
* *
* Returns: a MSFilter if successfull, NULL otherwise. * Returns: a MSFilter if successfull, NULL otherwise.
skipping to change at line 336 skipping to change at line 345
* @param arg A private user data for the filter. * @param arg A private user data for the filter.
* *
* Returns: 0 if successfull, -1 otherwise. * Returns: 0 if successfull, -1 otherwise.
*/ */
MS2_PUBLIC int ms_filter_call_method(MSFilter *f, unsigned int id, void *ar g); MS2_PUBLIC int ms_filter_call_method(MSFilter *f, unsigned int id, void *ar g);
/** /**
* Call a filter's method to set options. * Call a filter's method to set options.
* *
* @param f A MSFilter object. * @param f A MSFilter object.
* @param id A private filter ID for the option. * @param id A method ID.
* *
* Returns: 0 if successfull, -1 otherwise. * Returns: 0 if successfull, -1 otherwise.
*/ */
MS2_PUBLIC int ms_filter_call_method_noarg(MSFilter *f, unsigned int id); MS2_PUBLIC int ms_filter_call_method_noarg(MSFilter *f, unsigned int id);
/** /**
* Returns whether the filter implements a given method
*
* @param f A MSFilter object.
* @param id A method ID.
*
* Returns: 0 if successfull, -1 otherwise.
*/
MS2_PUBLIC bool_t ms_filter_has_method(MSFilter *f, unsigned int id);
/**
* Set a callback on filter's to be informed of private filter's event. * Set a callback on filter's to be informed of private filter's event.
* This callback is called from the filter's MSTicker, unless a global even t queue * This callback is called from the filter's MSTicker, unless a global even t queue
* is created to receive all filter's notification asynchronously. * is created to receive all filter's notification asynchronously.
* See ms_event_queue_new() for details. * See ms_event_queue_new() for details.
* *
* @param f A MSFilter object. * @param f A MSFilter object.
* @param fn A MSFilterNotifyFunc that will be called. * @param fn A MSFilterNotifyFunc that will be called.
* @param userdata A pointer to private data. * @param userdata A pointer to private data.
* *
* *
*/ */
MS2_PUBLIC void ms_filter_set_notify_callback(MSFilter *f, MSFilterNotifyFu nc fn, void *userdata); MS2_PUBLIC void ms_filter_set_notify_callback(MSFilter *f, MSFilterNotifyFu nc fn, void *userdata);
/** /**
* Forces the filter to synchronously send notifications, that is
* the notify callback will be called from MSTicker thread instead of being
* run by a MSEventQueue.
*/
MS2_PUBLIC void ms_filter_enable_synchronous_notifcations(MSFilter *f, bool
_t yesno);
/**
* Get MSFilterId's filter. * Get MSFilterId's filter.
* *
* @param f A MSFilter object. * @param f A MSFilter object.
* *
* Returns: MSFilterId if successfull, -1 otherwise. * Returns: MSFilterId if successfull, -1 otherwise.
*/ */
MS2_PUBLIC MSFilterId ms_filter_get_id(MSFilter *f); MS2_PUBLIC MSFilterId ms_filter_get_id(MSFilter *f);
/** /**
* Obtain the list of current filter's neighbours, ie filters that are part of same graph. * Obtain the list of current filter's neighbours, ie filters that are part of same graph.
skipping to change at line 508 skipping to change at line 520
#define MS_FILTER_GET_MTU MS_FILTER_BASE_METHOD(10,int) #define MS_FILTER_GET_MTU MS_FILTER_BASE_METHOD(10,int)
/**Filters can return their latency in milliseconds (if known) using this m ethod:*/ /**Filters can return their latency in milliseconds (if known) using this m ethod:*/
#define MS_FILTER_GET_LATENCY MS_FILTER_BASE_METHOD(11,int) #define MS_FILTER_GET_LATENCY MS_FILTER_BASE_METHOD(11,int)
enum _MSFilterInterfaceId{ enum _MSFilterInterfaceId{
MSFilterInterfaceBegin=16384, MSFilterInterfaceBegin=16384,
MSFilterPlayerInterface, MSFilterPlayerInterface,
MSFilterRecorderInterface, MSFilterRecorderInterface,
MSFilterVideoDisplayInterface, MSFilterVideoDisplayInterface,
MSFilterEchoCancellerInterface, MSFilterEchoCancellerInterface,
MSFilterVideoDecoderInterface MSFilterVideoDecoderInterface,
MSFilterVideoCaptureInterface,
}; };
typedef enum _MSFilterInterfaceId MSFilterInterfaceId; typedef enum _MSFilterInterfaceId MSFilterInterfaceId;
/* more specific methods: to be moved into implementation specific header f iles*/ /* more specific methods: to be moved into implementation specific header f iles*/
#define MS_FILTER_SET_FILTERLENGTH MS_FILTER_BASE_METHOD(12,int) #define MS_FILTER_SET_FILTERLENGTH MS_FILTER_BASE_METHOD(12,int)
#define MS_FILTER_SET_OUTPUT_SAMPLE_RATE MS_FILTER_BASE_METHOD(13,int) #define MS_FILTER_SET_OUTPUT_SAMPLE_RATE MS_FILTER_BASE_METHOD(13,int)
#define MS_FILTER_ENABLE_DIRECTMODE MS_FILTER_BASE_METHOD(14,int) #define MS_FILTER_ENABLE_DIRECTMODE MS_FILTER_BASE_METHOD(14,int)
#define MS_FILTER_ENABLE_VAD MS_FILTER_BASE_METHOD(15,int) #define MS_FILTER_ENABLE_VAD MS_FILTER_BASE_METHOD(15,int)
#define MS_FILTER_GET_STAT_DISCARDED MS_FILTER_BASE_METHOD(16,int) #define MS_FILTER_GET_STAT_DISCARDED MS_FILTER_BASE_METHOD(16,int)
#define MS_FILTER_GET_STAT_MISSED MS_FILTER_BASE_METHOD(17,int) #define MS_FILTER_GET_STAT_MISSED MS_FILTER_BASE_METHOD(17,int)
#define MS_FILTER_GET_STAT_INPUT MS_FILTER_BASE_METHOD(18,int) #define MS_FILTER_GET_STAT_INPUT MS_FILTER_BASE_METHOD(18,int)
#define MS_FILTER_GET_STAT_OUTPUT MS_FILTER_BASE_METHOD(19,int) #define MS_FILTER_GET_STAT_OUTPUT MS_FILTER_BASE_METHOD(19,int)
#define MS_FILTER_ENABLE_AGC MS_FILTER_BASE_METHOD(20,int) #define MS_FILTER_ENABLE_AGC MS_FILTER_BASE_METHOD(20,int)
#define MS_FILTER_SET_PLAYBACKDELAY MS_FILTER_BASE_METHOD(21,int) #define MS_FILTER_SET_PLAYBACKDELAY MS_FILTER_BASE_METHOD(21,int)
#define MS_FILTER_ENABLE_HALFDUPLEX MS_FILTER_BASE_METHOD(22,int) #define MS_FILTER_ENABLE_HALFDUPLEX MS_FILTER_BASE_METHOD(22,int)
#define MS_FILTER_SET_VAD_PROB_START MS_FILTER_BASE_METHOD(23,int) #define MS_FILTER_SET_VAD_PROB_START MS_FILTER_BASE_METHOD(23,int)
#define MS_FILTER_SET_VAD_PROB_CONTINUE MS_FILTER_BASE_METHOD(24,int) #define MS_FILTER_SET_VAD_PROB_CONTINUE MS_FILTER_BASE_METHOD(24,int)
#define MS_FILTER_SET_MAX_GAIN MS_FILTER_BASE_METHOD(25,int) #define MS_FILTER_SET_MAX_GAIN MS_FILTER_BASE_METHOD(25,int)
#define MS_VIDEO_CAPTURE_SET_AUTOFOCUS MS_FILTER_BASE_METHOD(26,int)
/* pass value of type MSRtpPayloadPickerContext copied by the filter*/
#define MS_FILTER_SET_RTP_PAYLOAD_PICKER MS_FILTER_BASE_METHOD(27,void*)
#define MS_CONF_SPEEX_PREPROCESS_MIC MS_FILTER_EVENT(MS_CONF_ID, 1, void* ) #define MS_CONF_SPEEX_PREPROCESS_MIC MS_FILTER_EVENT(MS_CONF_ID, 1, void* )
#define MS_CONF_CHANNEL_VOLUME MS_FILTER_EVENT(MS_CONF_ID, 3, void*) #define MS_CONF_CHANNEL_VOLUME MS_FILTER_EVENT(MS_CONF_ID, 3, void*)
/** @} */ /** @} */
/*protected/ private methods*/ /*protected/ private methods*/
void ms_filter_process(MSFilter *f); void ms_filter_process(MSFilter *f);
void ms_filter_preprocess(MSFilter *f, struct _MSTicker *t); void ms_filter_preprocess(MSFilter *f, struct _MSTicker *t);
void ms_filter_postprocess(MSFilter *f); void ms_filter_postprocess(MSFilter *f);
bool_t ms_filter_inputs_have_data(MSFilter *f); bool_t ms_filter_inputs_have_data(MSFilter *f);
void ms_filter_notify(MSFilter *f, unsigned int id, void *arg); void ms_filter_notify(MSFilter *f, unsigned int id, void *arg);
void ms_filter_notify_synchronous(MSFilter *f, unsigned int id, void *arg);
void ms_filter_notify_no_arg(MSFilter *f, unsigned int id); void ms_filter_notify_no_arg(MSFilter *f, unsigned int id);
#define ms_filter_lock(f) ms_mutex_lock(&(f)->lock) #define ms_filter_lock(f) ms_mutex_lock(&(f)->lock)
#define ms_filter_unlock(f) ms_mutex_unlock(&(f)->lock) #define ms_filter_unlock(f) ms_mutex_unlock(&(f)->lock)
void ms_filter_unregister_all(void); void ms_filter_unregister_all(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#include "msinterfaces.h" #include "msinterfaces.h"
/* used by awk script in Makefile.am to generate alldescs.c */ /* used by awk script in Makefile.am to generate alldescs.c */
#define MS_FILTER_DESC_EXPORT(desc) #define MS_FILTER_DESC_EXPORT(desc)
/* xgettext markup */
#define N_(String) String
#endif #endif
 End of changes. 9 change blocks. 
14 lines changed or deleted 29 lines changed or added


 msinterfaces.h   msinterfaces.h 
skipping to change at line 99 skipping to change at line 99
#define MS_ECHO_CANCELLER_SET_DELAY \ #define MS_ECHO_CANCELLER_SET_DELAY \
MS_FILTER_METHOD(MSFilterEchoCancellerInterface,0,int) MS_FILTER_METHOD(MSFilterEchoCancellerInterface,0,int)
#define MS_ECHO_CANCELLER_SET_FRAMESIZE \ #define MS_ECHO_CANCELLER_SET_FRAMESIZE \
MS_FILTER_METHOD(MSFilterEchoCancellerInterface,1,int) MS_FILTER_METHOD(MSFilterEchoCancellerInterface,1,int)
/** sets tail length in milliseconds */ /** sets tail length in milliseconds */
#define MS_ECHO_CANCELLER_SET_TAIL_LENGTH \ #define MS_ECHO_CANCELLER_SET_TAIL_LENGTH \
MS_FILTER_METHOD(MSFilterEchoCancellerInterface,2,int) MS_FILTER_METHOD(MSFilterEchoCancellerInterface,2,int)
/** Interface definitions for video decoders */
#define MS_VIDEO_DECODER_DECODING_ERRORS \
MS_FILTER_EVENT_NO_ARG(MSFilterVideoDecoderInterface,0)
/** put filter in bypass mode */ /** put filter in bypass mode */
#define MS_ECHO_CANCELLER_SET_BYPASS_MODE \ #define MS_ECHO_CANCELLER_SET_BYPASS_MODE \
MS_FILTER_METHOD(MSFilterEchoCancellerInterface,3,bool_t) MS_FILTER_METHOD(MSFilterEchoCancellerInterface,3,bool_t)
/** get filter bypass mode */ /** get filter bypass mode */
#define MS_ECHO_CANCELLER_GET_BYPASS_MODE \ #define MS_ECHO_CANCELLER_GET_BYPASS_MODE \
MS_FILTER_METHOD(MSFilterEchoCancellerInterface,4,bool_t) MS_FILTER_METHOD(MSFilterEchoCancellerInterface,4,bool_t)
/** retrieve echo canceller internal state, as a base64 encoded string */
#define MS_ECHO_CANCELLER_GET_STATE_STRING \
MS_FILTER_METHOD(MSFilterEchoCancellerInterface,5,char **)
/** restore a previous state suppling the echo canceller config as base64 e
ncoded string */
#define MS_ECHO_CANCELLER_SET_STATE_STRING \
MS_FILTER_METHOD(MSFilterEchoCancellerInterface,6, const char *)
/** Interface definitions for video decoders */
#define MS_VIDEO_DECODER_DECODING_ERRORS \
MS_FILTER_EVENT_NO_ARG(MSFilterVideoDecoderInterface,0)
/** Interface definitions for video capture */
#define MS_VIDEO_CAPTURE_SET_DEVICE_ORIENTATION \
MS_FILTER_METHOD(MSFilterVideoCaptureInterface,0,int)
#endif #endif
 End of changes. 2 change blocks. 
4 lines changed or deleted 18 lines changed or added


 msitc.h   msitc.h 
skipping to change at line 22 skipping to change at line 22
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef msitc_h #ifndef msitc_h
#define msitc_h #define msitc_h
#include "msfilter.h" #include <mediastreamer2/msfilter.h>
#define MS_ITC_SINK_CONNECT MS_FILTER_METHOD(MS_ITC_SINK_ID,0,MSFilter) #define MS_ITC_SINK_CONNECT MS_FILTER_METHOD(MS_ITC_SINK_ID,0,MSFilter)
#define MS_ITC_SOURCE_UPDATED MS_FILTER_EVENT_NO_ARG(MS_ITC_SOURCE_ID,0) #define MS_ITC_SOURCE_UPDATED MS_FILTER_EVENT_NO_ARG(MS_ITC_SOURCE_ID,0)
#endif #endif
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 msjpegwriter.h   msjpegwriter.h 
skipping to change at line 23 skipping to change at line 23
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef msjpegwriter_h #ifndef msjpegwriter_h
#define msjpegwriter_h #define msjpegwriter_h
#include "mediastreamer2/msfilter.h" #include <mediastreamer2/msfilter.h>
#define MS_JPEG_WRITER_TAKE_SNAPSHOT MS_FILTER_METHOD(MS_JPEG_WRITER_ID,0 ,const char) #define MS_JPEG_WRITER_TAKE_SNAPSHOT MS_FILTER_METHOD(MS_JPEG_WRITER_ID,0 ,const char)
#endif #endif
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 msqueue.h   msqueue.h 
skipping to change at line 22 skipping to change at line 22
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef MSQUEUE_H #ifndef MSQUEUE_H
#define MSQUEUE_H #define MSQUEUE_H
#include "ortp/str_utils.h" #include <ortp/str_utils.h>
#include "mediastreamer2/mscommon.h" #include <mediastreamer2/mscommon.h>
/* for the moment these are stupid queues limited to one element*/
typedef struct _MSCPoint{ typedef struct _MSCPoint{
struct _MSFilter *filter; struct _MSFilter *filter;
int pin; int pin;
} MSCPoint; } MSCPoint;
typedef struct _MSQueue typedef struct _MSQueue
{ {
queue_t q; queue_t q;
MSCPoint prev; MSCPoint prev;
skipping to change at line 76 skipping to change at line 74
/*yes these functions need to be public for plugins to work*/ /*yes these functions need to be public for plugins to work*/
/*init a queue on stack*/ /*init a queue on stack*/
MS2_PUBLIC void ms_queue_init(MSQueue *q); MS2_PUBLIC void ms_queue_init(MSQueue *q);
MS2_PUBLIC void ms_queue_flush(MSQueue *q); MS2_PUBLIC void ms_queue_flush(MSQueue *q);
MS2_PUBLIC void ms_queue_destroy(MSQueue *q); MS2_PUBLIC void ms_queue_destroy(MSQueue *q);
#define __mblk_set_flag(m,pos,bitval) \
(m)->reserved2=(m->reserved2 & ~(1<<pos)) | ((!!bitval)<<pos)
#define mblk_set_timestamp_info(m,ts) (m)->reserved1=(ts); #define mblk_set_timestamp_info(m,ts) (m)->reserved1=(ts);
#define mblk_get_timestamp_info(m) ((m)->reserved1) #define mblk_get_timestamp_info(m) ((m)->reserved1)
#define mblk_set_marker_info(m,bit) (m)->reserved2=((m)->reserved2|bit) #define mblk_set_marker_info(m,bit) __mblk_set_flag(m,0,bit)
#define mblk_get_marker_info(m) ((m)->reserved2&0x1) #define mblk_get_marker_info(m) ((m)->reserved2&0x1) /*bit 1*/
#define mblk_set_rate(m,bits) (m)->reserved2=((m)->reserved2|(bits) #define mblk_set_precious_flag(m,bit) __mblk_set_flag(m,1,bit) /*use to
<<1) prevent mirroring*/
#define mblk_get_rate(m) (((m)->reserved2>>1)&0x3) #define mblk_get_precious_flag(m) (((m)->reserved2)>>1 & 0x1) /*bit 2*/
#define mblk_set_payload_type(m,bits) (m)->reserved2=((m)->reserved2|(bits< #define mblk_set_cseq(m,value) (m)->reserved2=(m)->reserved2| ((value&0xFFF
<3)) F)<<16);
#define mblk_get_payload_type(m) (((m)->reserved2>>3)&0x7F) #define mblk_get_cseq(m) ((m)->reserved2>>16)
#define mblk_set_precious_flag(m,bit) (m)->reserved2=(m)->reserved2|((bi
t & 0x1)<<10) /*use to prevent mirroring*/
#define mblk_get_precious_flag(m) (((m)->reserved2)>>10 & 0x1)
#define mblk_set_video_orientation(m,o) do{\
if (o==MS_VIDEO_LANDSCAPE) (m)->reserved2=(m)->reserved2 & ~(1<<11);
\
else (m)->reserved2|=(1<<11); \
}while(0)
#define mblk_get_video_orientation(m) (((m)->reserved2 & (1<<11)) ? MS_VID
EO_PORTRAIT : MS_VIDEO_LANDSCAPE)
struct _MSBufferizer{ struct _MSBufferizer{
queue_t q; queue_t q;
int size; int size;
}; };
typedef struct _MSBufferizer MSBufferizer; typedef struct _MSBufferizer MSBufferizer;
/*allocates and initialize */ /*allocates and initialize */
MS2_PUBLIC MSBufferizer * ms_bufferizer_new(void); MS2_PUBLIC MSBufferizer * ms_bufferizer_new(void);
 End of changes. 3 change blocks. 
22 lines changed or deleted 13 lines changed or added


 msrtp.h   msrtp.h 
skipping to change at line 23 skipping to change at line 23
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef msrtp_hh #ifndef msrtp_hh
#define msrtp_hh #define msrtp_hh
#include "msfilter.h" #include <mediastreamer2/msfilter.h>
#include "ice.h" #include <mediastreamer2/ice.h>
#include "ortp/ortp.h" #include <ortp/ortp.h>
#define MS_RTP_RECV_SET_SESSION MS_FILTER_METHOD(MS_RTP_RECV _ID,0,RtpSession*) #define MS_RTP_RECV_SET_SESSION MS_FILTER_METHOD(MS_RTP_RECV _ID,0,RtpSession*)
#define MS_RTP_SEND_SET_SESSION MS_FILTER_METHOD(MS_RTP_SEND _ID,0,RtpSession*) #define MS_RTP_SEND_SET_SESSION MS_FILTER_METHOD(MS_RTP_SEND _ID,0,RtpSession*)
#define MS_RTP_SEND_SEND_DTMF MS_FILTER_METHOD(MS_RTP_SEND_ID,1,co nst char) #define MS_RTP_SEND_SEND_DTMF MS_FILTER_METHOD(MS_RTP_SEND_ID,1,co nst char)
#define MS_RTP_SEND_MUTE_MIC MS_FILTER_METHOD_NO_ARG(MS_RTP_SEND_ ID,3) #define MS_RTP_SEND_MUTE_MIC MS_FILTER_METHOD_NO_ARG(MS_RTP_SEND_ ID,3)
#define MS_RTP_SEND_UNMUTE_MIC MS_FILTER_METHOD_NO_ARG(MS_RTP_SEND_ ID,4) #define MS_RTP_SEND_UNMUTE_MIC MS_FILTER_METHOD_NO_ARG(MS_RTP_SEND_ ID,4)
 End of changes. 1 change blocks. 
3 lines changed or deleted 3 lines changed or added


 mssndcard.h   mssndcard.h 
skipping to change at line 23 skipping to change at line 23
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef sndcard_h #ifndef sndcard_h
#define sndcard_h #define sndcard_h
#include "mscommon.h" #include <mediastreamer2/mscommon.h>
/** /**
* @file mssndcard.h * @file mssndcard.h
* @brief mediastreamer2 mssndcard.h include file * @brief mediastreamer2 mssndcard.h include file
* *
* This file provide the API needed to manage * This file provide the API needed to manage
* soundcard filters. * soundcard filters.
* *
*/ */
skipping to change at line 436 skipping to change at line 436
/** /**
* Create a alsa card with user supplied pcm name and mixer name. * Create a alsa card with user supplied pcm name and mixer name.
* @param pcmdev The pcm device name following alsa conventions (ex: plughw :0) * @param pcmdev The pcm device name following alsa conventions (ex: plughw :0)
* @param mixdev The mixer device name following alsa conventions. * @param mixdev The mixer device name following alsa conventions.
* *
* Returns: a MSSndCard object, NULL if alsa support is not available. * Returns: a MSSndCard object, NULL if alsa support is not available.
*/ */
MS2_PUBLIC MSSndCard * ms_alsa_card_new_custom(const char *pcmdev, const ch ar *mixdev); MS2_PUBLIC MSSndCard * ms_alsa_card_new_custom(const char *pcmdev, const ch ar *mixdev);
/**
* Use supplied sample rate to open alsa devices (forced rate).
* Has no interest except workarouding driver bugs.
* Use -1 to revert to normal behavior.
**/
MS2_PUBLIC void ms_alsa_card_set_forced_sample_rate(int samplerate);
/** @} */ /** @} */
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
/** @} */ /** @} */
#endif #endif
 End of changes. 2 change blocks. 
1 lines changed or deleted 8 lines changed or added


 mstee.h   mstee.h 
skipping to change at line 22 skipping to change at line 22
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef mstee_h #ifndef mstee_h
#define mstee_h #define mstee_h
#include "msfilter.h" #include <mediastreamer2/msfilter.h>
/*mute/unmute some outputs of the MSTee */ /*mute/unmute some outputs of the MSTee */
#define MS_TEE_UNMUTE MS_FILTER_METHOD(MS_TEE_ID,0,int) #define MS_TEE_UNMUTE MS_FILTER_METHOD(MS_TEE_ID,0,int)
#define MS_TEE_MUTE MS_FILTER_METHOD(MS_TEE_ID,1,int) #define MS_TEE_MUTE MS_FILTER_METHOD(MS_TEE_ID,1,int)
#endif #endif
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 msticker.h   msticker.h 
skipping to change at line 23 skipping to change at line 23
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef MS_TICKER_H #ifndef MS_TICKER_H
#define MS_TICKER_H #define MS_TICKER_H
#include "msfilter.h" #include <mediastreamer2/msfilter.h>
#include "mscommon.h"
/** /**
* @file msticker.h * @file msticker.h
* @brief mediastreamer2 msticker.h include file * @brief mediastreamer2 msticker.h include file
* *
* This file provide the API needed to create, start * This file provide the API needed to create, start
* and stop a graph. * and stop a graph.
* *
*/ */
skipping to change at line 47 skipping to change at line 46
* @ingroup mediastreamer2_api * @ingroup mediastreamer2_api
* @{ * @{
*/ */
/** /**
* Structure for method getting time in miliseconds from an external source . * Structure for method getting time in miliseconds from an external source .
* @var MSTickerTimeFunc * @var MSTickerTimeFunc
*/ */
typedef uint64_t (*MSTickerTimeFunc)(void *); typedef uint64_t (*MSTickerTimeFunc)(void *);
/**
* Enum for ticker priority
**/
enum _MSTickerPrio{
MS_TICKER_PRIO_NORMAL, /**<the default OS priority for threads*/
MS_TICKER_PRIO_HIGH, /**<Increased priority: done by setpriority() o
r sched_setschedparams() with SCHED_RR on linux/MacOS*/
MS_TICKER_PRIO_REALTIME /**<Topmost priority, running SCHED_FIFO on
linux */
};
typedef enum _MSTickerPrio MSTickerPrio;
struct _MSTicker struct _MSTicker
{ {
ms_mutex_t lock; ms_mutex_t lock;
ms_cond_t cond; ms_cond_t cond;
MSList *execution_list; /* the list of source filters to be exec uted.*/ MSList *execution_list; /* the list of source filters to be exec uted.*/
ms_thread_t thread; /* the thread ressource*/ ms_thread_t thread; /* the thread ressource*/
int interval; /* in miliseconds*/ int interval; /* in miliseconds*/
int exec_id; int exec_id;
uint32_t ticks; uint32_t ticks;
uint64_t time; /* a time since the start of the ticker expressed in milisec*/ uint64_t time; /* a time since the start of the ticker expressed in milisec*/
uint64_t orig; /* a relative time to take in account difference betw een time base given by consecutive get_cur_time_ptr() functions.*/ uint64_t orig; /* a relative time to take in account difference betw een time base given by consecutive get_cur_time_ptr() functions.*/
MSTickerTimeFunc get_cur_time_ptr; MSTickerTimeFunc get_cur_time_ptr;
void *get_cur_time_data; void *get_cur_time_data;
char *name; char *name;
double av_load; /*average load of the ticker */
MSTickerPrio prio;
bool_t run; /* flag to indicate whether the ticker must be run or not */ bool_t run; /* flag to indicate whether the ticker must be run or not */
#ifdef WIN32_TIMERS
HANDLE TimeEvent;
#endif
}; };
/** /**
* Structure for ticker object. * Structure for ticker object.
* @var MSTicker * @var MSTicker
*/ */
typedef struct _MSTicker MSTicker; typedef struct _MSTicker MSTicker;
#ifdef __cplusplus #ifdef __cplusplus
extern "C"{ extern "C"{
skipping to change at line 91 skipping to change at line 100
* Returns: MSTicker * if successfull, NULL otherwise. * Returns: MSTicker * if successfull, NULL otherwise.
*/ */
MS2_PUBLIC MSTicker *ms_ticker_new(void); MS2_PUBLIC MSTicker *ms_ticker_new(void);
/** /**
* Set a name to the ticker (used for logging) * Set a name to the ticker (used for logging)
**/ **/
MS2_PUBLIC void ms_ticker_set_name(MSTicker *ticker, const char *name); MS2_PUBLIC void ms_ticker_set_name(MSTicker *ticker, const char *name);
/** /**
* Set priority to the ticker
**/
MS2_PUBLIC void ms_ticker_set_priority(MSTicker *ticker, MSTickerPrio prio)
;
/**
* Attach a chain of filters to a ticker. * Attach a chain of filters to a ticker.
* The processing chain will be executed until ms_ticker_detach * The processing chain will be executed until ms_ticker_detach
* will be called. * will be called.
* *
* @param ticker A #MSTicker object. * @param ticker A #MSTicker object.
* @param f A #MSFilter object. * @param f A #MSFilter object.
* *
* Returns: 0 if successfull, -1 otherwise. * Returns: 0 if successfull, -1 otherwise.
*/ */
MS2_PUBLIC int ms_ticker_attach(MSTicker *ticker,MSFilter *f); MS2_PUBLIC int ms_ticker_attach(MSTicker *ticker,MSFilter *f);
skipping to change at line 140 skipping to change at line 154
*/ */
MS2_PUBLIC void ms_ticker_set_time_func(MSTicker *ticker, MSTickerTimeFunc func, void *user_data); MS2_PUBLIC void ms_ticker_set_time_func(MSTicker *ticker, MSTickerTimeFunc func, void *user_data);
/** /**
* Print on stdout all filters of a ticker. (INTERNAL: DO NOT USE) * Print on stdout all filters of a ticker. (INTERNAL: DO NOT USE)
* *
* @param ticker A #MSTicker object. * @param ticker A #MSTicker object.
*/ */
MS2_PUBLIC void ms_ticker_print_graphs(MSTicker *ticker); MS2_PUBLIC void ms_ticker_print_graphs(MSTicker *ticker);
/**
* Get the average load of the ticker.
* It is expressed as the ratio between real time spent in processing all g
raphs for a tick divided by the
* tick interval (default is 10 ms).
* This value is averaged over several ticks to get consistent and useful v
alue.
* A load greater than 100% clearly means that the ticker is over loaded an
d runs late.
**/
MS2_PUBLIC float ms_ticker_get_average_load(MSTicker *ticker);
/* private functions:*/ /* private functions:*/
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
/** @} */ /** @} */
#endif #endif
 End of changes. 6 change blocks. 
5 lines changed or deleted 34 lines changed or added


 mstonedetector.h   mstonedetector.h 
skipping to change at line 24 skipping to change at line 24
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef mstonedetector_h #ifndef mstonedetector_h
#define mstonedetector_h #define mstonedetector_h
#include "mediastreamer2/msfilter.h" #include <mediastreamer2/msfilter.h>
/** /**
* Structure describing which tone is to be detected. * Structure describing which tone is to be detected.
**/ **/
struct _MSToneDetectorDef{ struct _MSToneDetectorDef{
char tone_name[8]; char tone_name[8];
int frequency; /**<Expected frequency of the tone*/ int frequency; /**<Expected frequency of the tone*/
int min_duration; /**<Min duration of the tone in milliseconds */ int min_duration; /**<Min duration of the tone in milliseconds */
float min_amplitude; /**<Minimum amplitude of the tone, 1.0 correspo nding to the normalized 0dbm level */ float min_amplitude; /**<Minimum amplitude of the tone, 1.0 correspo nding to the normalized 0dbm level */
}; };
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 msv4l.h   msv4l.h 
skipping to change at line 23 skipping to change at line 23
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef msv4l_h #ifndef msv4l_h
#define msv4l_h #define msv4l_h
#include "msfilter.h" #include <mediastreamer2/msfilter.h>
#define MS_V4L_START MS_FILTER_METHOD_NO_ARG(MS_V4L_ID,0) #define MS_V4L_START MS_FILTER_METHOD_NO_ARG(MS_V4L_ID,0)
#define MS_V4L_STOP MS_FILTER_METHOD_NO_ARG(MS_V 4L_ID,1) #define MS_V4L_STOP MS_FILTER_METHOD_NO_ARG(MS_V 4L_ID,1)
#define MS_V4L_SET_DEVICE MS_FILTER_METHOD(MS_V4L_ID,2,int) #define MS_V4L_SET_DEVICE MS_FILTER_METHOD(MS_V4L_ID,2,int)
#define MS_V4L_SET_IMAGE MS_FILTER_METHOD(MS_V4L_ID,3,char) #define MS_V4L_SET_IMAGE MS_FILTER_METHOD(MS_V4L_ID,3,char)
#endif #endif
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 msvideo.h   msvideo.h 
skipping to change at line 23 skipping to change at line 23
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef msvideo_h #ifndef msvideo_h
#define msvideo_h #define msvideo_h
#include "msfilter.h" #include <mediastreamer2/msfilter.h>
/* some global constants for video MSFilter(s) */ /* some global constants for video MSFilter(s) */
#define MS_VIDEO_SIZE_SQCIF_W 128 #define MS_VIDEO_SIZE_SQCIF_W 128
#define MS_VIDEO_SIZE_SQCIF_H 96 #define MS_VIDEO_SIZE_SQCIF_H 96
#define MS_VIDEO_SIZE_WQCIF_W 256 #define MS_VIDEO_SIZE_WQCIF_W 256
#define MS_VIDEO_SIZE_WQCIF_H 144 #define MS_VIDEO_SIZE_WQCIF_H 144
#define MS_VIDEO_SIZE_QCIF_W 176 #define MS_VIDEO_SIZE_QCIF_W 176
#define MS_VIDEO_SIZE_QCIF_H 144 #define MS_VIDEO_SIZE_QCIF_H 144
skipping to change at line 53 skipping to change at line 53
#define MS_VIDEO_SIZE_4CIF_W 704 #define MS_VIDEO_SIZE_4CIF_W 704
#define MS_VIDEO_SIZE_4CIF_H 576 #define MS_VIDEO_SIZE_4CIF_H 576
#define MS_VIDEO_SIZE_W4CIF_W 1024 #define MS_VIDEO_SIZE_W4CIF_W 1024
#define MS_VIDEO_SIZE_W4CIF_H 576 #define MS_VIDEO_SIZE_W4CIF_H 576
#define MS_VIDEO_SIZE_QQVGA_W 160 #define MS_VIDEO_SIZE_QQVGA_W 160
#define MS_VIDEO_SIZE_QQVGA_H 120 #define MS_VIDEO_SIZE_QQVGA_H 120
#define MS_VIDEO_SIZE_HQVGA_W 160
#define MS_VIDEO_SIZE_HQVGA_H 240
#define MS_VIDEO_SIZE_QVGA_W 320 #define MS_VIDEO_SIZE_QVGA_W 320
#define MS_VIDEO_SIZE_QVGA_H 240 #define MS_VIDEO_SIZE_QVGA_H 240
#define MS_VIDEO_SIZE_HVGA_W 320
#define MS_VIDEO_SIZE_HVGA_H 480
#define MS_VIDEO_SIZE_VGA_W 640 #define MS_VIDEO_SIZE_VGA_W 640
#define MS_VIDEO_SIZE_VGA_H 480 #define MS_VIDEO_SIZE_VGA_H 480
#define MS_VIDEO_SIZE_SVGA_W 800 #define MS_VIDEO_SIZE_SVGA_W 800
#define MS_VIDEO_SIZE_SVGA_H 600 #define MS_VIDEO_SIZE_SVGA_H 600
#define MS_VIDEO_SIZE_NS1_W 324 #define MS_VIDEO_SIZE_NS1_W 324
#define MS_VIDEO_SIZE_NS1_H 248 #define MS_VIDEO_SIZE_NS1_H 248
#define MS_VIDEO_SIZE_QSIF_W 176 #define MS_VIDEO_SIZE_QSIF_W 176
#define MS_VIDEO_SIZE_QSIF_H 120 #define MS_VIDEO_SIZE_QSIF_H 120
#define MS_VIDEO_SIZE_SIF_W 352 #define MS_VIDEO_SIZE_SIF_W 352
#define MS_VIDEO_SIZE_SIF_H 240 #define MS_VIDEO_SIZE_SIF_H 240
#define MS_VIDEO_SIZE_IOS_MEDIUM_W 480
#define MS_VIDEO_SIZE_IOS_MEDIUM_H 360
#define MS_VIDEO_SIZE_ISIF_W 352 #define MS_VIDEO_SIZE_ISIF_W 352
#define MS_VIDEO_SIZE_ISIF_H 480 #define MS_VIDEO_SIZE_ISIF_H 480
#define MS_VIDEO_SIZE_4SIF_W 704 #define MS_VIDEO_SIZE_4SIF_W 704
#define MS_VIDEO_SIZE_4SIF_H 480 #define MS_VIDEO_SIZE_4SIF_H 480
#define MS_VIDEO_SIZE_288P_W 512 #define MS_VIDEO_SIZE_288P_W 512
#define MS_VIDEO_SIZE_288P_H 288 #define MS_VIDEO_SIZE_288P_H 288
#define MS_VIDEO_SIZE_432P_W 768 #define MS_VIDEO_SIZE_432P_W 768
skipping to change at line 159 skipping to change at line 168
/*deprecated: use MS_VIDEO_SIZE_SVGA*/ /*deprecated: use MS_VIDEO_SIZE_SVGA*/
#define MS_VIDEO_SIZE_800X600_W MS_VIDEO_SIZE_SVGA_W #define MS_VIDEO_SIZE_800X600_W MS_VIDEO_SIZE_SVGA_W
#define MS_VIDEO_SIZE_800X600_H MS_VIDEO_SIZE_SVGA_H #define MS_VIDEO_SIZE_800X600_H MS_VIDEO_SIZE_SVGA_H
#define MS_VIDEO_SIZE_800X600 MS_VIDEO_SIZE_SVGA #define MS_VIDEO_SIZE_800X600 MS_VIDEO_SIZE_SVGA
/*deprecated use MS_VIDEO_SIZE_XGA*/ /*deprecated use MS_VIDEO_SIZE_XGA*/
#define MS_VIDEO_SIZE_1024_W 1024 #define MS_VIDEO_SIZE_1024_W 1024
#define MS_VIDEO_SIZE_1024_H 768 #define MS_VIDEO_SIZE_1024_H 768
#define MS_VIDEO_SIZE_1024 MS_VIDEO_SIZE_XGA #define MS_VIDEO_SIZE_1024 MS_VIDEO_SIZE_XGA
typedef enum{
MS_NO_MIRROR,
MS_HORIZONTAL_MIRROR, /*according to a vertical line in the center o
f buffer*/
MS_CENTRAL_MIRROR, /*both*/
MS_VERTICAL_MIRROR /*according to an horizontal line*/
}MSMirrorType;
typedef enum MSVideoOrientation{ typedef enum MSVideoOrientation{
MS_VIDEO_LANDSCAPE = 0, MS_VIDEO_LANDSCAPE = 0,
MS_VIDEO_PORTRAIT =1 MS_VIDEO_PORTRAIT =1
}MSVideoOrientation; }MSVideoOrientation;
typedef enum{ typedef enum{
MS_YUV420P, MS_YUV420P,
MS_YUYV, MS_YUYV,
MS_RGB24, MS_RGB24,
MS_RGB24_REV, /*->microsoft down-top bitmaps */ MS_RGB24_REV, /*->microsoft down-top bitmaps */
skipping to change at line 197 skipping to change at line 213
#endif #endif
MS2_PUBLIC int ms_pix_fmt_to_ffmpeg(MSPixFmt fmt); MS2_PUBLIC int ms_pix_fmt_to_ffmpeg(MSPixFmt fmt);
MS2_PUBLIC MSPixFmt ffmpeg_pix_fmt_to_ms(int fmt); MS2_PUBLIC MSPixFmt ffmpeg_pix_fmt_to_ms(int fmt);
MS2_PUBLIC MSPixFmt ms_fourcc_to_pix_fmt(uint32_t fourcc); MS2_PUBLIC MSPixFmt ms_fourcc_to_pix_fmt(uint32_t fourcc);
MS2_PUBLIC void ms_ffmpeg_check_init(void); MS2_PUBLIC void ms_ffmpeg_check_init(void);
MS2_PUBLIC int ms_yuv_buf_init_from_mblk(MSPicture *buf, mblk_t *m); MS2_PUBLIC int ms_yuv_buf_init_from_mblk(MSPicture *buf, mblk_t *m);
MS2_PUBLIC int ms_yuv_buf_init_from_mblk_with_size(MSPicture *buf, mblk_t * m, int w, int h); MS2_PUBLIC int ms_yuv_buf_init_from_mblk_with_size(MSPicture *buf, mblk_t * m, int w, int h);
MS2_PUBLIC int ms_picture_init_from_mblk_with_size(MSPicture *buf, mblk_t * m, MSPixFmt fmt, int w, int h); MS2_PUBLIC int ms_picture_init_from_mblk_with_size(MSPicture *buf, mblk_t * m, MSPixFmt fmt, int w, int h);
MS2_PUBLIC mblk_t * ms_yuv_buf_alloc(MSPicture *buf, int w, int h); MS2_PUBLIC mblk_t * ms_yuv_buf_alloc(MSPicture *buf, int w, int h);
MS2_PUBLIC mblk_t * ms_yuv_buf_alloc_from_buffer(int w, int h, mblk_t* buff er);
MS2_PUBLIC void ms_yuv_buf_copy(uint8_t *src_planes[], const int src_stride s[], MS2_PUBLIC void ms_yuv_buf_copy(uint8_t *src_planes[], const int src_stride s[],
uint8_t *dst_planes[], const int dst_strides[3], MSVideoSize roi); uint8_t *dst_planes[], const int dst_strides[3], MSVideoSize roi);
MS2_PUBLIC void ms_yuv_buf_mirror(YuvBuf *buf); MS2_PUBLIC void ms_yuv_buf_mirror(YuvBuf *buf);
MS2_PUBLIC void ms_yuv_buf_mirrors(YuvBuf *buf,const MSMirrorType type);
MS2_PUBLIC void rgb24_mirror(uint8_t *buf, int w, int h, int linesize); MS2_PUBLIC void rgb24_mirror(uint8_t *buf, int w, int h, int linesize);
MS2_PUBLIC void rgb24_revert(uint8_t *buf, int w, int h, int linesize); MS2_PUBLIC void rgb24_revert(uint8_t *buf, int w, int h, int linesize);
MS2_PUBLIC void rgb24_copy_revert(uint8_t *dstbuf, int dstlsz, MS2_PUBLIC void rgb24_copy_revert(uint8_t *dstbuf, int dstlsz,
const uint8_t *srcbuf, int srclsz, MSVideoSi ze roi); const uint8_t *srcbuf, int srclsz, MSVideoSi ze roi);
MS2_PUBLIC void ms_rgb_to_yuv(const uint8_t rgb[3], uint8_t yuv[3]); MS2_PUBLIC void ms_rgb_to_yuv(const uint8_t rgb[3], uint8_t yuv[3]);
#ifdef __arm__
MS2_PUBLIC void rotate_plane_neon_clockwise(int wDest, int hDest, int full_
width, uint8_t* src, uint8_t* dst);
MS2_PUBLIC void rotate_plane_neon_anticlockwise(int wDest, int hDest, int f
ull_width, uint8_t* src, uint8_t* dst);
MS2_PUBLIC void rotate_cbcr_to_cr_cb(int wDest, int hDest, int full_width,
uint8_t* cbcr_src, uint8_t* cr_dst, uint8_t* cb_dst,bool_t clockWise);
MS2_PUBLIC void deinterlace_and_rotate_180_neon(uint8_t* ysrc, uint8_t* cbc
rsrc, uint8_t* ydst, uint8_t* udst, uint8_t* vdst, int w, int h, int y_byte
_per_row,int cbcr_byte_per_row);
void deinterlace_down_scale_and_rotate_180_neon(uint8_t* ysrc, uint8_t* cbc
rsrc, uint8_t* ydst, uint8_t* udst, uint8_t* vdst, int w, int h, int y_byte
_per_row,int cbcr_byte_per_row,bool_t down_scale);
void deinterlace_down_scale_neon(uint8_t* ysrc, uint8_t* cbcrsrc, ui
nt8_t* ydst, uint8_t* u_dst, uint8_t* v_dst, int w, int h, int y_byte_per_r
ow,int cbcr_byte_per_row,bool_t down_scale);
mblk_t *copy_ycbcrbiplanar_to_true_yuv_with_rotation_and_down_scale_
by_2(uint8_t* y, uint8_t * cbcr, int rotation, int w, int h, int y_byte_per
_row,int cbcr_byte_per_row, bool_t uFirstvSecond, bool_t down_scale);
#endif
static inline bool_t ms_video_size_greater_than(MSVideoSize vs1, MSVideoSiz e vs2){ static inline bool_t ms_video_size_greater_than(MSVideoSize vs1, MSVideoSiz e vs2){
return (vs1.width>=vs2.width) && (vs1.height>=vs2.height); return (vs1.width>=vs2.width) && (vs1.height>=vs2.height);
} }
static inline bool_t ms_video_size_area_greater_than(MSVideoSize vs1, MSVid eoSize vs2){ static inline bool_t ms_video_size_area_greater_than(MSVideoSize vs1, MSVid eoSize vs2){
return (vs1.width*vs1.height >= vs2.width*vs2.height); return (vs1.width*vs1.height >= vs2.width*vs2.height);
} }
static inline MSVideoSize ms_video_size_max(MSVideoSize vs1, MSVideoSize vs 2){ static inline MSVideoSize ms_video_size_max(MSVideoSize vs1, MSVideoSize vs 2){
return ms_video_size_greater_than(vs1,vs2) ? vs1 : vs2; return ms_video_size_greater_than(vs1,vs2) ? vs1 : vs2;
skipping to change at line 275 skipping to change at line 303
MS2_PUBLIC MSScalerContext *ms_scaler_create_context(int src_w, int src_h, MSPixFmt src_fmt, MS2_PUBLIC MSScalerContext *ms_scaler_create_context(int src_w, int src_h, MSPixFmt src_fmt,
int dst_w, int dst_h, MSPixFmt ds t_fmt, int flags); int dst_w, int dst_h, MSPixFmt ds t_fmt, int flags);
MS2_PUBLIC int ms_scaler_process(MSScalerContext *ctx, uint8_t *src[], int src_strides[], uint8_t *dst[], int dst_strides[]); MS2_PUBLIC int ms_scaler_process(MSScalerContext *ctx, uint8_t *src[], int src_strides[], uint8_t *dst[], int dst_strides[]);
MS2_PUBLIC void ms_scaler_context_free(MSScalerContext *ctx); MS2_PUBLIC void ms_scaler_context_free(MSScalerContext *ctx);
MS2_PUBLIC void ms_video_set_scaler_impl(MSScalerDesc *desc); MS2_PUBLIC void ms_video_set_scaler_impl(MSScalerDesc *desc);
MS2_PUBLIC mblk_t *copy_ycbcrbiplanar_to_true_yuv_with_rotation(uint8_t* y,
uint8_t* cbcr, int rotation, int w, int h, int y_byte_per_row,int cbcr_byt
e_per_row, bool_t uFirstvSecond);
/*** Encoder Helpers ***/
/* Frame rate controller */
struct _MSFrameRateController {
unsigned int start_time;
int th_frame_count;
float fps;
};
typedef struct _MSFrameRateController MSFrameRateController;
MS2_PUBLIC void ms_video_init_framerate_controller(MSFrameRateController* c
trl, float fps);
MS2_PUBLIC bool_t ms_video_capture_new_frame(MSFrameRateController* ctrl, u
int32_t current_time);
/* Average FPS calculator */
struct _MSAverageFPS {
unsigned int last_frame_time, last_print_time;
float mean_inter_frame;
float expected_fps;
};
typedef struct _MSAverageFPS MSAverageFPS;
MS2_PUBLIC void ms_video_init_average_fps(MSAverageFPS* afps, float expecte
dFps);
MS2_PUBLIC void ms_video_update_average_fps(MSAverageFPS* afps, uint32_t cu
rrent_time);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#define MS_FILTER_SET_VIDEO_SIZE MS_FILTER_BASE_METHOD(100,MSVideoSiz e) #define MS_FILTER_SET_VIDEO_SIZE MS_FILTER_BASE_METHOD(100,MSVideoSiz e)
#define MS_FILTER_GET_VIDEO_SIZE MS_FILTER_BASE_METHOD(101,MSVideoSiz e) #define MS_FILTER_GET_VIDEO_SIZE MS_FILTER_BASE_METHOD(101,MSVideoSiz e)
#define MS_FILTER_SET_PIX_FMT MS_FILTER_BASE_METHOD(102,MSPixFmt) #define MS_FILTER_SET_PIX_FMT MS_FILTER_BASE_METHOD(102,MSPixFmt)
#define MS_FILTER_GET_PIX_FMT MS_FILTER_BASE_METHOD(103,MSPixFmt) #define MS_FILTER_GET_PIX_FMT MS_FILTER_BASE_METHOD(103,MSPixFmt)
 End of changes. 9 change blocks. 
1 lines changed or deleted 70 lines changed or added


 msvolume.h   msvolume.h 
skipping to change at line 23 skipping to change at line 23
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef msvolume_h #ifndef msvolume_h
#define msvolume_h #define msvolume_h
#include "msfilter.h" #include <mediastreamer2/msfilter.h>
/** /**
* The Volume MSFilter can do: * The Volume MSFilter can do:
* - measurements of the input signal power, returned in dbm0 or linear scale * - measurements of the input signal power, returned in dbm0 or linear scale
* - apply a gain to the input signal and output this amplified signal to its output. * - apply a gain to the input signal and output this amplified signal to its output.
* By default gain is 1, in which case the filter does not modify the signa l (and even does not * By default gain is 1, in which case the filter does not modify the signa l (and even does not
* copy the buffers, just post them on its output queue. * copy the buffers, just post them on its output queue.
**/ **/
/*returns a volume meter in db0 (max=0 db0)*/ /*returns a volume meter in db0 (max=0 db0)*/
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 mswebcam.h   mswebcam.h 
skipping to change at line 23 skipping to change at line 23
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef webcam_h #ifndef webcam_h
#define webcam_h #define webcam_h
#include "mscommon.h" #include <mediastreamer2/mscommon.h>
/** /**
* @file mswebcam.h * @file mswebcam.h
* @brief mediastreamer2 mswebcam.h include file * @brief mediastreamer2 mswebcam.h include file
* *
* This file provide the API needed to manage * This file provide the API needed to manage
* soundcard filters. * soundcard filters.
* *
*/ */
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 ortp.h   ortp.h 
skipping to change at line 117 skipping to change at line 117
if (ortp_logv_out!=NULL && ortp_log_level_enabled(level)) \ if (ortp_logv_out!=NULL && ortp_log_level_enabled(level)) \
ortp_logv_out(level,fmt,args);\ ortp_logv_out(level,fmt,args);\
if ((level)==ORTP_FATAL) abort();\ if ((level)==ORTP_FATAL) abort();\
}while(0) }while(0)
#else #else
void ortp_logv(int level, const char *fmt, va_list args); void ortp_logv(int level, const char *fmt, va_list args);
#endif #endif
void ortp_set_log_level_mask(int levelmask); void ortp_set_log_level_mask(int levelmask);
#ifdef __GNUC__
#define CHECK_FORMAT_ARGS(m,n) __attribute__((format(printf,m,n)))
#else
#define CHECK_FORMAT_ARGS(m,n)
#endif
#ifdef ORTP_DEBUG_MODE #ifdef ORTP_DEBUG_MODE
static inline void ortp_debug(const char *fmt,...) static inline void CHECK_FORMAT_ARGS(1,2) ortp_debug(const char *fmt,...)
{ {
va_list args; va_list args;
va_start (args, fmt); va_start (args, fmt);
ortp_logv(ORTP_DEBUG, fmt, args); ortp_logv(ORTP_DEBUG, fmt, args);
va_end (args); va_end (args);
} }
#else #else
#define ortp_debug(...) #define ortp_debug(...)
#endif #endif
#ifdef ORTP_NOMESSAGE_MODE #ifdef ORTP_NOMESSAGE_MODE
#define ortp_log(...) #define ortp_log(...)
#define ortp_message(...) #define ortp_message(...)
#define ortp_warning(...) #define ortp_warning(...)
#else #else
static inline void ortp_log(OrtpLogLevel lev, const char *fmt,...){ static inline void CHECK_FORMAT_ARGS(2,3) ortp_log(OrtpLogLevel lev, const char *fmt,...) {
va_list args; va_list args;
va_start (args, fmt); va_start (args, fmt);
ortp_logv(lev, fmt, args); ortp_logv(lev, fmt, args);
va_end (args); va_end (args);
} }
static inline void ortp_message(const char *fmt,...) static inline void CHECK_FORMAT_ARGS(1,2) ortp_message(const char *fmt,...)
{ {
va_list args; va_list args;
va_start (args, fmt); va_start (args, fmt);
ortp_logv(ORTP_MESSAGE, fmt, args); ortp_logv(ORTP_MESSAGE, fmt, args);
va_end (args); va_end (args);
} }
static inline void ortp_warning(const char *fmt,...) static inline void CHECK_FORMAT_ARGS(1,2) ortp_warning(const char *fmt,...)
{ {
va_list args; va_list args;
va_start (args, fmt); va_start (args, fmt);
ortp_logv(ORTP_WARNING, fmt, args); ortp_logv(ORTP_WARNING, fmt, args);
va_end (args); va_end (args);
} }
#endif #endif
static inline void ortp_error(const char *fmt,...) static inline void CHECK_FORMAT_ARGS(1,2) ortp_error(const char *fmt,...)
{ {
va_list args; va_list args;
va_start (args, fmt); va_start (args, fmt);
ortp_logv(ORTP_ERROR, fmt, args); ortp_logv(ORTP_ERROR, fmt, args);
va_end (args); va_end (args);
} }
static inline void ortp_fatal(const char *fmt,...) static inline void CHECK_FORMAT_ARGS(1,2) ortp_fatal(const char *fmt,...)
{ {
va_list args; va_list args;
va_start (args, fmt); va_start (args, fmt);
ortp_logv(ORTP_FATAL, fmt, args); ortp_logv(ORTP_FATAL, fmt, args);
va_end (args); va_end (args);
} }
/****************/ /****************/
/*statistics api*/ /*statistics api*/
/****************/ /****************/
extern rtp_stats_t ortp_global_stats; extern rtp_stats_t ortp_global_stats;
void ortp_global_stats_reset(void); void ortp_global_stats_reset(void);
rtp_stats_t *ortp_get_global_stats(void); rtp_stats_t *ortp_get_global_stats(void);
void ortp_global_stats_display(void); void ortp_global_stats_display(void);
void rtp_stats_display(const rtp_stats_t *stats, const char *header); void rtp_stats_display(const rtp_stats_t *stats, const char *header);
void rtp_stats_reset(rtp_stats_t *stats); void rtp_stats_reset(rtp_stats_t *stats);
#if defined(_MSC_VER)
#define ORTP_PUBLIC __declspec(dllexport)
#else
#define ORTP_PUBLIC
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif
 End of changes. 8 change blocks. 
6 lines changed or deleted 18 lines changed or added


 payloadtype.h   payloadtype.h 
skipping to change at line 50 skipping to change at line 50
#define PAYLOAD_TYPE_PRIV3 (1<<3) #define PAYLOAD_TYPE_PRIV3 (1<<3)
/* user flags, can be used by the application on top of oRTP */ /* user flags, can be used by the application on top of oRTP */
#define PAYLOAD_TYPE_USER_FLAG_0 (1<<4) #define PAYLOAD_TYPE_USER_FLAG_0 (1<<4)
#define PAYLOAD_TYPE_USER_FLAG_1 (1<<5) #define PAYLOAD_TYPE_USER_FLAG_1 (1<<5)
#define PAYLOAD_TYPE_USER_FLAG_2 (1<<6) #define PAYLOAD_TYPE_USER_FLAG_2 (1<<6)
/* ask for more if you need*/ /* ask for more if you need*/
#define PAYLOAD_AUDIO_CONTINUOUS 0 #define PAYLOAD_AUDIO_CONTINUOUS 0
#define PAYLOAD_AUDIO_PACKETIZED 1 #define PAYLOAD_AUDIO_PACKETIZED 1
#define PAYLOAD_VIDEO 2 #define PAYLOAD_VIDEO 2
#define PAYLOAD_TEXT 4
#define PAYLOAD_OTHER 3 /* ?? */ #define PAYLOAD_OTHER 3 /* ?? */
struct _PayloadType struct _PayloadType
{ {
int type; /**< one of PAYLOAD_* macros*/ int type; /**< one of PAYLOAD_* macros*/
int clock_rate; /**< rtp clock rate*/ int clock_rate; /**< rtp clock rate*/
char bits_per_sample; /* in case of continuous audio data */ char bits_per_sample; /* in case of continuous audio data */
char *zero_pattern; char *zero_pattern;
int pattern_length; int pattern_length;
/* other useful information for the application*/ /* other useful information for the application*/
skipping to change at line 175 skipping to change at line 176
VAR_DECLSPEC PayloadType payload_type_l16_mono; VAR_DECLSPEC PayloadType payload_type_l16_mono;
VAR_DECLSPEC PayloadType payload_type_l16_stereo; VAR_DECLSPEC PayloadType payload_type_l16_stereo;
VAR_DECLSPEC PayloadType payload_type_lpc1016; VAR_DECLSPEC PayloadType payload_type_lpc1016;
VAR_DECLSPEC PayloadType payload_type_g729; VAR_DECLSPEC PayloadType payload_type_g729;
VAR_DECLSPEC PayloadType payload_type_g7231; VAR_DECLSPEC PayloadType payload_type_g7231;
VAR_DECLSPEC PayloadType payload_type_g7221; VAR_DECLSPEC PayloadType payload_type_g7221;
VAR_DECLSPEC PayloadType payload_type_g726_40; VAR_DECLSPEC PayloadType payload_type_g726_40;
VAR_DECLSPEC PayloadType payload_type_g726_32; VAR_DECLSPEC PayloadType payload_type_g726_32;
VAR_DECLSPEC PayloadType payload_type_g726_24; VAR_DECLSPEC PayloadType payload_type_g726_24;
VAR_DECLSPEC PayloadType payload_type_g726_16; VAR_DECLSPEC PayloadType payload_type_g726_16;
VAR_DECLSPEC PayloadType payload_type_aal2_g726_40;
VAR_DECLSPEC PayloadType payload_type_aal2_g726_32;
VAR_DECLSPEC PayloadType payload_type_aal2_g726_24;
VAR_DECLSPEC PayloadType payload_type_aal2_g726_16;
VAR_DECLSPEC PayloadType payload_type_gsm; VAR_DECLSPEC PayloadType payload_type_gsm;
VAR_DECLSPEC PayloadType payload_type_lpc; VAR_DECLSPEC PayloadType payload_type_lpc;
VAR_DECLSPEC PayloadType payload_type_lpc1015; VAR_DECLSPEC PayloadType payload_type_lpc1015;
VAR_DECLSPEC PayloadType payload_type_speex_nb; VAR_DECLSPEC PayloadType payload_type_speex_nb;
VAR_DECLSPEC PayloadType payload_type_speex_wb; VAR_DECLSPEC PayloadType payload_type_speex_wb;
VAR_DECLSPEC PayloadType payload_type_speex_uwb; VAR_DECLSPEC PayloadType payload_type_speex_uwb;
VAR_DECLSPEC PayloadType payload_type_ilbc; VAR_DECLSPEC PayloadType payload_type_ilbc;
VAR_DECLSPEC PayloadType payload_type_amr; VAR_DECLSPEC PayloadType payload_type_amr;
VAR_DECLSPEC PayloadType payload_type_amrwb; VAR_DECLSPEC PayloadType payload_type_amrwb;
VAR_DECLSPEC PayloadType payload_type_truespeech; VAR_DECLSPEC PayloadType payload_type_truespeech;
VAR_DECLSPEC PayloadType payload_type_evrc0; VAR_DECLSPEC PayloadType payload_type_evrc0;
VAR_DECLSPEC PayloadType payload_type_evrcb0; VAR_DECLSPEC PayloadType payload_type_evrcb0;
VAR_DECLSPEC PayloadType payload_type_silk_nb;
VAR_DECLSPEC PayloadType payload_type_silk_mb;
VAR_DECLSPEC PayloadType payload_type_silk_wb;
VAR_DECLSPEC PayloadType payload_type_silk_swb;
/* video */ /* video */
VAR_DECLSPEC PayloadType payload_type_mpv; VAR_DECLSPEC PayloadType payload_type_mpv;
VAR_DECLSPEC PayloadType payload_type_h261; VAR_DECLSPEC PayloadType payload_type_h261;
VAR_DECLSPEC PayloadType payload_type_h263; VAR_DECLSPEC PayloadType payload_type_h263;
VAR_DECLSPEC PayloadType payload_type_h263_1998; VAR_DECLSPEC PayloadType payload_type_h263_1998;
VAR_DECLSPEC PayloadType payload_type_h263_2000; VAR_DECLSPEC PayloadType payload_type_h263_2000;
VAR_DECLSPEC PayloadType payload_type_mp4v; VAR_DECLSPEC PayloadType payload_type_mp4v;
VAR_DECLSPEC PayloadType payload_type_theora; VAR_DECLSPEC PayloadType payload_type_theora;
VAR_DECLSPEC PayloadType payload_type_h264; VAR_DECLSPEC PayloadType payload_type_h264;
VAR_DECLSPEC PayloadType payload_type_x_snow; VAR_DECLSPEC PayloadType payload_type_x_snow;
VAR_DECLSPEC PayloadType payload_type_jpeg; VAR_DECLSPEC PayloadType payload_type_jpeg;
VAR_DECLSPEC PayloadType payload_type_vp8;
VAR_DECLSPEC PayloadType payload_type_t140;
VAR_DECLSPEC PayloadType payload_type_g722; VAR_DECLSPEC PayloadType payload_type_g722;
/* text */
VAR_DECLSPEC PayloadType payload_type_t140;
VAR_DECLSPEC PayloadType payload_type_t140_red;
/* non standard file transfer over UDP */ /* non standard file transfer over UDP */
VAR_DECLSPEC PayloadType payload_type_x_udpftp; VAR_DECLSPEC PayloadType payload_type_x_udpftp;
/* telephone-event */ /* telephone-event */
VAR_DECLSPEC PayloadType payload_type_telephone_event; VAR_DECLSPEC PayloadType payload_type_telephone_event;
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
 End of changes. 7 change blocks. 
2 lines changed or deleted 15 lines changed or added


 port.h   port.h 
skipping to change at line 311 skipping to change at line 311
#if (defined(WIN32) || defined(_WIN32_WCE)) && !defined(ORTP_STATIC) #if (defined(WIN32) || defined(_WIN32_WCE)) && !defined(ORTP_STATIC)
#ifdef ORTP_EXPORTS #ifdef ORTP_EXPORTS
#define VAR_DECLSPEC __declspec(dllexport) #define VAR_DECLSPEC __declspec(dllexport)
#else #else
#define VAR_DECLSPEC __declspec(dllimport) #define VAR_DECLSPEC __declspec(dllimport)
#endif #endif
#else #else
#define VAR_DECLSPEC extern #define VAR_DECLSPEC extern
#endif #endif
/*define __ios when we are compiling for ios.
The TARGET_OS_IPHONE macro is stupid, it is defined to 0 when compiling on
mac os x.
*/
#if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE==1
#define __ios 1
#endif
#endif #endif
 End of changes. 1 change blocks. 
0 lines changed or deleted 8 lines changed or added


 rfc3984.h   rfc3984.h 
skipping to change at line 23 skipping to change at line 23
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef rfc3984_h #ifndef rfc3984_h
#define rfc3984_h #define rfc3984_h
#include "mediastreamer2/mscommon.h" #include <mediastreamer2/mscommon.h>
#include "mediastreamer2/msqueue.h" #include <mediastreamer2/msqueue.h>
/* /*
This file declares an API useful to pack/unpack H264 nals as described in R FC3984 This file declares an API useful to pack/unpack H264 nals as described in R FC3984
It is part of the public API to allow external H264 plugins use this api. It is part of the public API to allow external H264 plugins use this api.
*/ */
#ifdef __cplusplus #ifdef __cplusplus
extern "C"{ extern "C"{
#endif #endif
 End of changes. 1 change blocks. 
2 lines changed or deleted 2 lines changed or added


 rtcp.h   rtcp.h 
skipping to change at line 25 skipping to change at line 25
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
#ifndef RTCP_H #ifndef RTCP_H
#define RTCP_H #define RTCP_H
#include <ortp/port.h> #include <ortp/port.h>
#define RTCP_MAX_RECV_BUFSIZE 1024 #define RTCP_MAX_RECV_BUFSIZE 1500
#define RTCP_SENDER_INFO_SIZE 20 #define RTCP_SENDER_INFO_SIZE 20
#define RTCP_REPORT_BLOCK_SIZE 24 #define RTCP_REPORT_BLOCK_SIZE 24
#define RTCP_COMMON_HEADER_SIZE 4 #define RTCP_COMMON_HEADER_SIZE 4
#define RTCP_SSRC_FIELD_SIZE 4 #define RTCP_SSRC_FIELD_SIZE 4
#ifdef __cplusplus #ifdef __cplusplus
extern "C"{ extern "C"{
#endif #endif
skipping to change at line 49 skipping to change at line 49
RTCP_SR = 200, RTCP_SR = 200,
RTCP_RR = 201, RTCP_RR = 201,
RTCP_SDES = 202, RTCP_SDES = 202,
RTCP_BYE = 203, RTCP_BYE = 203,
RTCP_APP = 204 RTCP_APP = 204
} rtcp_type_t; } rtcp_type_t;
typedef struct rtcp_common_header typedef struct rtcp_common_header
{ {
#ifdef ORTP_BIGENDIAN #ifdef ORTP_BIGENDIAN
uint16_t version:2; uint16_t version:2;
uint16_t padbit:1; uint16_t padbit:1;
uint16_t rc:5; uint16_t rc:5;
uint16_t packet_type:8; uint16_t packet_type:8;
#else #else
uint16_t rc:5; uint16_t rc:5;
uint16_t padbit:1; uint16_t padbit:1;
uint16_t version:2; uint16_t version:2;
uint16_t packet_type:8; uint16_t packet_type:8;
#endif #endif
uint16_t length:16; uint16_t length:16;
} rtcp_common_header_t; } rtcp_common_header_t;
#define rtcp_common_header_set_version(ch,v) (ch)->version=v #define rtcp_common_header_set_version(ch,v) (ch)->version=v
#define rtcp_common_header_set_padbit(ch,p) (ch)->padbit=p #define rtcp_common_header_set_padbit(ch,p) (ch)->padbit=p
#define rtcp_common_header_set_rc(ch,rc) (ch)->rc=rc #define rtcp_common_header_set_rc(ch,rc) (ch)->rc=rc
#define rtcp_common_header_set_packet_type(ch,pt) (ch)->packet_type=pt #define rtcp_common_header_set_packet_type(ch,pt) (ch)->packet_type=pt
#define rtcp_common_header_set_length(ch,l) (ch)->length=htons(l) #define rtcp_common_header_set_length(ch,l) (ch)->length=htons(l)
skipping to change at line 196 skipping to change at line 196
typedef struct rtcp_app{ typedef struct rtcp_app{
rtcp_common_header_t ch; rtcp_common_header_t ch;
uint32_t ssrc; uint32_t ssrc;
char name[4]; char name[4];
} rtcp_app_t; } rtcp_app_t;
struct _RtpSession; struct _RtpSession;
void rtp_session_rtcp_process_send(struct _RtpSession *s); void rtp_session_rtcp_process_send(struct _RtpSession *s);
void rtp_session_rtcp_process_recv(struct _RtpSession *s); void rtp_session_rtcp_process_recv(struct _RtpSession *s);
#define RTCP_DEFAULT_REPORT_INTERVAL 5 #define RTCP_DEFAULT_REPORT_INTERVAL 5000 /*ms*/
/* packet parsing api */ /* packet parsing api */
/*in case of coumpound packet, set read pointer of m to the beginning of th e next RTCP /*in case of coumpound packet, set read pointer of m to the beginning of th e next RTCP
packet */ packet */
bool_t rtcp_next_packet(mblk_t *m); bool_t rtcp_next_packet(mblk_t *m);
/* put the read pointer at the first RTCP packet of the compound packet (as before any previous calls ot rtcp_next_packet() */ /* put the read pointer at the first RTCP packet of the compound packet (as before any previous calls ot rtcp_next_packet() */
void rtcp_rewind(mblk_t *m); void rtcp_rewind(mblk_t *m);
/* get common header*/ /* get common header*/
const rtcp_common_header_t * rtcp_get_common_header(const mblk_t *m); const rtcp_common_header_t * rtcp_get_common_header(const mblk_t *m);
 End of changes. 4 change blocks. 
9 lines changed or deleted 9 lines changed or added


 rtp.h   rtp.h 
skipping to change at line 64 skipping to change at line 64
uint32_t csrc[16]; uint32_t csrc[16];
} rtp_header_t; } rtp_header_t;
typedef struct rtp_stats typedef struct rtp_stats
{ {
uint64_t packet_sent; uint64_t packet_sent;
uint64_t sent; /* bytes sent */ uint64_t sent; /* bytes sent */
uint64_t recv; /* bytes of payload received and delivered i n time to the application */ uint64_t recv; /* bytes of payload received and delivered i n time to the application */
uint64_t hw_recv; /* bytes of payload received */ uint64_t hw_recv; /* bytes of payload received */
uint64_t packet_recv; /* number of packets received */ uint64_t packet_recv; /* number of packets received */
uint64_t unavaillable; /* totally useless*/
uint64_t outoftime; /* number of packets that were recei ved too late */ uint64_t outoftime; /* number of packets that were recei ved too late */
uint64_t cum_packet_loss; /* cumulative number of packet lost */ uint64_t cum_packet_loss; /* cumulative number of packet lost */
uint64_t bad; /* packets that did not appear to be RTP */ uint64_t bad; /* packets that did not appear to be RTP */
uint64_t discarded; /* incoming packets discarded becaus e the queue exceeds its max size */ uint64_t discarded; /* incoming packets discarded becaus e the queue exceeds its max size */
uint64_t sent_rtcp_packets; /* sent RTCP packets counter (only p ackets that embed a report block are considered) */
} rtp_stats_t; } rtp_stats_t;
typedef struct jitter_stats
{
uint32_t jitter; /* interarrival jitter at la
st emitted sender report */
uint32_t max_jitter; /* biggest interarrival jitter (valu
e in stream clock unit) */
uint64_t sum_jitter; /* sum of all interarrival jitter (v
alue in stream clock unit) */
uint64_t max_jitter_ts; /* date (in ms since Epoch) of the b
iggest interarrival jitter */
} jitter_stats_t;
#define RTP_TIMESTAMP_IS_NEWER_THAN(ts1,ts2) \ #define RTP_TIMESTAMP_IS_NEWER_THAN(ts1,ts2) \
((uint32_t)((uint32_t)(ts1) - (uint32_t)(ts2))< (uint32_t)(1<<31)) ((uint32_t)((uint32_t)(ts1) - (uint32_t)(ts2))< (uint32_t)(1<<31))
#define RTP_TIMESTAMP_IS_STRICTLY_NEWER_THAN(ts1,ts2) \ #define RTP_TIMESTAMP_IS_STRICTLY_NEWER_THAN(ts1,ts2) \
( ((uint32_t)((uint32_t)(ts1) - (uint32_t)(ts2))< (uint32_t)(1<<31)) && (ts1)!=(ts2) ) ( ((uint32_t)((uint32_t)(ts1) - (uint32_t)(ts2))< (uint32_t)(1<<31)) && (ts1)!=(ts2) )
#define TIME_IS_NEWER_THAN(t1,t2) RTP_TIMESTAMP_IS_NEWER_THAN(t1,t2) #define TIME_IS_NEWER_THAN(t1,t2) RTP_TIMESTAMP_IS_NEWER_THAN(t1,t2)
#define TIME_IS_STRICTLY_NEWER_THAN(t1,t2) RTP_TIMESTAMP_IS_STRICTLY_NEWER_ THAN(t1,t2) #define TIME_IS_STRICTLY_NEWER_THAN(t1,t2) RTP_TIMESTAMP_IS_STRICTLY_NEWER_ THAN(t1,t2)
skipping to change at line 95 skipping to change at line 103
/* packet api */ /* packet api */
/* the first argument is a mblk_t. The header is supposed to be not splitte d */ /* the first argument is a mblk_t. The header is supposed to be not splitte d */
#define rtp_set_markbit(mp,value) ((rtp_header_t*)((mp)->b_rpt r))->markbit=(value) #define rtp_set_markbit(mp,value) ((rtp_header_t*)((mp)->b_rpt r))->markbit=(value)
#define rtp_set_seqnumber(mp,seq) ((rtp_header_t*)((mp)->b_rptr))->seq _number=(seq) #define rtp_set_seqnumber(mp,seq) ((rtp_header_t*)((mp)->b_rptr))->seq _number=(seq)
#define rtp_set_timestamp(mp,ts) ((rtp_header_t*)((mp)->b_rptr))->tim estamp=(ts) #define rtp_set_timestamp(mp,ts) ((rtp_header_t*)((mp)->b_rptr))->tim estamp=(ts)
#define rtp_set_ssrc(mp,_ssrc) ((rtp_header_t*)((mp)->b_rptr))->ssr c=(_ssrc) #define rtp_set_ssrc(mp,_ssrc) ((rtp_header_t*)((mp)->b_rptr))->ssr c=(_ssrc)
void rtp_add_csrc(mblk_t *mp ,uint32_t csrc); void rtp_add_csrc(mblk_t *mp ,uint32_t csrc);
#define rtp_set_payload_type(mp,pt) ((rtp_header_t*)((mp)->b_rptr))->pay type=(pt) #define rtp_set_payload_type(mp,pt) ((rtp_header_t*)((mp)->b_rptr))->pay type=(pt)
#define rtp_get_markbit(mp) (((rtp_header_t*)((mp)->b_rptr))->markbit) #define rtp_get_markbit(mp) (((rtp_header_t*)((mp)->b_rptr))->markbit)
#define rtp_get_extbit(mp) (((rtp_header_t*)((mp)->b_rptr))->extbit)
#define rtp_get_timestamp(mp) (((rtp_header_t*)((mp)->b_rptr))->timestamp) #define rtp_get_timestamp(mp) (((rtp_header_t*)((mp)->b_rptr))->timestamp)
#define rtp_get_seqnumber(mp) (((rtp_header_t*)((mp)->b_rptr))->seq_number ) #define rtp_get_seqnumber(mp) (((rtp_header_t*)((mp)->b_rptr))->seq_number )
#define rtp_get_payload_type(mp) (((rtp_header_t*)((mp)->b_rptr))->pa ytype) #define rtp_get_payload_type(mp) (((rtp_header_t*)((mp)->b_rptr))->pa ytype)
#define rtp_get_ssrc(mp) (((rtp_header_t*)((mp)->b_rptr))->ss rc) #define rtp_get_ssrc(mp) (((rtp_header_t*)((mp)->b_rptr))->ss rc)
#define rtp_get_cc(mp) (((rtp_header_t*)((mp)->b_rptr))->cc) #define rtp_get_cc(mp) (((rtp_header_t*)((mp)->b_rptr))->cc)
#define rtp_get_csrc(mp, idx) (((rtp_header_t*)((mp)->b_rptr))->cs rc[idx]) #define rtp_get_csrc(mp, idx) (((rtp_header_t*)((mp)->b_rptr))->cs rc[idx])
int rtp_get_payload(mblk_t *packet, unsigned char **start); int rtp_get_payload(mblk_t *packet, unsigned char **start);
int rtp_get_extheader(mblk_t *packet, uint16_t *profile, uint8_t **start_ex t);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif
 End of changes. 5 change blocks. 
1 lines changed or deleted 15 lines changed or added


 rtpsession.h   rtpsession.h 
skipping to change at line 92 skipping to change at line 92
typedef struct _RtpTransport typedef struct _RtpTransport
{ {
void *data; void *data;
ortp_socket_t (*t_getsocket)(struct _RtpTransport *t); ortp_socket_t (*t_getsocket)(struct _RtpTransport *t);
int (*t_sendto)(struct _RtpTransport *t, mblk_t *msg , int flags, c onst struct sockaddr *to, socklen_t tolen); int (*t_sendto)(struct _RtpTransport *t, mblk_t *msg , int flags, c onst struct sockaddr *to, socklen_t tolen);
int (*t_recvfrom)(struct _RtpTransport *t, mblk_t *msg, int flags, struct sockaddr *from, socklen_t *fromlen); int (*t_recvfrom)(struct _RtpTransport *t, mblk_t *msg, int flags, struct sockaddr *from, socklen_t *fromlen);
struct _RtpSession *session;//<back pointer to the owning session, s et by oRTP struct _RtpSession *session;//<back pointer to the owning session, s et by oRTP
} RtpTransport; } RtpTransport;
typedef struct _OrtpNetworkSimulatorParams{
int enabled;
float max_bandwidth; /*IP bandwidth, in bit/s*/
float loss_rate;
}OrtpNetworkSimulatorParams;
typedef struct _OrtpNetworkSimulatorCtx{
OrtpNetworkSimulatorParams params;
int bit_budget;
int qsize;
queue_t q;
struct timeval last_check;
}OrtpNetworkSimulatorCtx;
typedef struct _RtpStream typedef struct _RtpStream
{ {
ortp_socket_t socket; ortp_socket_t socket;
struct _RtpTransport *tr; struct _RtpTransport *tr;
int sockfamily; int sockfamily;
int max_rq_size; int max_rq_size;
int time_jump; int time_jump;
uint32_t ts_jump; uint32_t ts_jump;
queue_t rq; queue_t rq;
queue_t tev_rq; queue_t tev_rq;
skipping to change at line 129 skipping to change at line 143
uint32_t rcv_query_ts_offset; /* the first user timestamp asked by the application */ uint32_t rcv_query_ts_offset; /* the first user timestamp asked by the application */
uint32_t rcv_last_ts; /* the last stream timestamp got by the appl ication */ uint32_t rcv_last_ts; /* the last stream timestamp got by the appl ication */
uint32_t rcv_last_app_ts; /* the last application timestamp asked by the application */ uint32_t rcv_last_app_ts; /* the last application timestamp asked by the application */
uint32_t rcv_last_ret_ts; /* the timestamp of the last sample return ed (only for continuous audio)*/ uint32_t rcv_last_ret_ts; /* the timestamp of the last sample return ed (only for continuous audio)*/
uint32_t hwrcv_extseq; /* last received on socket extended sequence number */ uint32_t hwrcv_extseq; /* last received on socket extended sequence number */
uint32_t hwrcv_seq_at_last_SR; uint32_t hwrcv_seq_at_last_SR;
uint32_t hwrcv_since_last_SR; uint32_t hwrcv_since_last_SR;
uint32_t last_rcv_SR_ts; /* NTP timestamp (middle 32 bits) of la st received SR */ uint32_t last_rcv_SR_ts; /* NTP timestamp (middle 32 bits) of la st received SR */
struct timeval last_rcv_SR_time; /* time at which last SR was rece ived */ struct timeval last_rcv_SR_time; /* time at which last SR was rece ived */
uint16_t snd_seq; /* send sequence number */ uint16_t snd_seq; /* send sequence number */
uint32_t last_rtcp_report_snt_r; /* the time of the last rtcp
report sent, in recv timestamp unit */
uint32_t last_rtcp_report_snt_s; /* the time of the last rtcp
report sent, in send timestamp unit */
uint32_t rtcp_report_snt_interval; /* the interval in timestamp unit
between rtcp report sent */
uint32_t last_rtcp_packet_count; /*the sender's octet count in the l ast sent RTCP SR*/ uint32_t last_rtcp_packet_count; /*the sender's octet count in the l ast sent RTCP SR*/
uint32_t sent_payload_bytes; /*used for RTCP sender reports*/ uint32_t sent_payload_bytes; /*used for RTCP sender reports*/
unsigned int sent_bytes; /* used for bandwidth estimation */ unsigned int sent_bytes; /* used for bandwidth estimation */
struct timeval send_bw_start; /* used for bandwidth estimation */ struct timeval send_bw_start; /* used for bandwidth estimation */
unsigned int recv_bytes; /* used for bandwidth estimation */ unsigned int recv_bytes; /* used for bandwidth estimation */
struct timeval recv_bw_start; /* used for bandwidth estimation */ struct timeval recv_bw_start; /* used for bandwidth estimation */
rtp_stats_t stats; rtp_stats_t stats;
int recv_errno; int recv_errno;
int send_errno; int send_errno;
int snd_socket_size; int snd_socket_size;
int rcv_socket_size; int rcv_socket_size;
int ssrc_changed_thres; int ssrc_changed_thres;
jitter_stats_t jitter_stats;
}RtpStream; }RtpStream;
typedef struct _RtcpStream typedef struct _RtcpStream
{ {
ortp_socket_t socket; ortp_socket_t socket;
int sockfamily; int sockfamily;
struct _RtpTransport *tr; struct _RtpTransport *tr;
mblk_t *cached_mp; mblk_t *cached_mp;
#ifdef ORTP_INET6 #ifdef ORTP_INET6
struct sockaddr_storage rem_addr; struct sockaddr_storage rem_addr;
#else #else
struct sockaddr_in rem_addr; struct sockaddr_in rem_addr;
#endif #endif
int rem_addrlen; int rem_addrlen;
int interval;
uint32_t last_rtcp_report_snt_r; /* the time of the last rtcp
report sent, in recv timestamp unit */
uint32_t last_rtcp_report_snt_s; /* the time of the last rtcp
report sent, in send timestamp unit */
uint32_t rtcp_report_snt_interval_r; /* the interval in timestamp un
it for receive path between rtcp report sent */
uint32_t rtcp_report_snt_interval_s; /* the interval in timestamp un
it for send path between rtcp report sent */
bool_t enabled; /*tells whether we can send RTCP packets */ bool_t enabled; /*tells whether we can send RTCP packets */
} RtcpStream; } RtcpStream;
typedef struct _RtpSession RtpSession; typedef struct _RtpSession RtpSession;
/** /**
* An object representing a bi-directional RTP session. * An object representing a bi-directional RTP session.
* It holds sockets, jitter buffer, various counters (timestamp, sequence n umbers...) * It holds sockets, jitter buffer, various counters (timestamp, sequence n umbers...)
* Applications SHOULD NOT try to read things within the RtpSession object but use * Applications SHOULD NOT try to read things within the RtpSession object but use
* instead its public API (the rtp_session_* methods) where RtpSession is u sed as a * instead its public API (the rtp_session_* methods) where RtpSession is u sed as a
* pointer. * pointer.
* rtp_session_new() allocates and initialize a RtpSession. * rtp_session_new() allocates and initialize a RtpSession.
**/ **/
struct _RtpSession struct _RtpSession
{ {
RtpSession *next; /* next RtpSession, when the session are enq ueued by the scheduler */ RtpSession *next; /* next RtpSession, when the session are enq ueued by the scheduler */
int mask_pos; /* the position in the scheduler mask of RtpSession : do not move this field: it is part of the ABI since the session_set macro s use it*/ int mask_pos; /* the position in the scheduler mask of RtpSession : do not move this field: it is part of the ABI since the session_set macro s use it*/
struct { struct {
RtpProfile *profile; RtpProfile *profile;
int pt; int pt;
unsigned int ssrc; unsigned int ssrc;
WaitPoint wp; WaitPoint wp;
int telephone_events_pt; /* the payload type used for telepho int telephone_events_pt; /* the payload type used for
ny events */ telephony events */
} snd,rcv; } snd,rcv;
unsigned int inc_ssrc_candidate; unsigned int inc_ssrc_candidate;
int inc_same_ssrc_count; int inc_same_ssrc_count;
int hw_recv_pt; /* recv payload type before jitter buffer */ int hw_recv_pt; /* recv payload type before jitter buffer */
int recv_buf_size; int recv_buf_size;
RtpSignalTable on_ssrc_changed; RtpSignalTable on_ssrc_changed;
RtpSignalTable on_payload_type_changed; RtpSignalTable on_payload_type_changed;
RtpSignalTable on_telephone_event_packet; RtpSignalTable on_telephone_event_packet;
RtpSignalTable on_telephone_event; RtpSignalTable on_telephone_event;
RtpSignalTable on_timestamp_jump; RtpSignalTable on_timestamp_jump;
skipping to change at line 212 skipping to change at line 229
int multicast_ttl; int multicast_ttl;
int multicast_loopback; int multicast_loopback;
void * user_data; void * user_data;
/* FIXME: Should be a table for all session participants. */ /* FIXME: Should be a table for all session participants. */
struct timeval last_recv_time; /* Time of receiving the RTP/RTCP pac ket. */ struct timeval last_recv_time; /* Time of receiving the RTP/RTCP pac ket. */
mblk_t *pending; mblk_t *pending;
/* telephony events extension */ /* telephony events extension */
mblk_t *current_tev; /* the pending telephony events */ mblk_t *current_tev; /* the pending telephony events */
mblk_t *sd; mblk_t *sd;
queue_t contributing_sources; queue_t contributing_sources;
unsigned int lost_packets_test_vector;
unsigned int interarrival_jitter_test_vector;
unsigned int delay_test_vector;
float rtt;/*last round trip delay calculated*/
OrtpNetworkSimulatorCtx *net_sim_ctx;
bool_t symmetric_rtp; bool_t symmetric_rtp;
bool_t permissive; /*use the permissive algorithm*/ bool_t permissive; /*use the permissive algorithm*/
bool_t use_connect; /* use connect() on the socket */ bool_t use_connect; /* use connect() on the socket */
bool_t ssrc_set; bool_t ssrc_set;
}; };
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
{ {
#endif #endif
skipping to change at line 236 skipping to change at line 258
void rtp_session_set_blocking_mode(RtpSession *session, int yesno); void rtp_session_set_blocking_mode(RtpSession *session, int yesno);
void rtp_session_set_profile(RtpSession *session, RtpProfile *profile); void rtp_session_set_profile(RtpSession *session, RtpProfile *profile);
void rtp_session_set_send_profile(RtpSession *session,RtpProfile *profile); void rtp_session_set_send_profile(RtpSession *session,RtpProfile *profile);
void rtp_session_set_recv_profile(RtpSession *session,RtpProfile *profile); void rtp_session_set_recv_profile(RtpSession *session,RtpProfile *profile);
RtpProfile *rtp_session_get_profile(RtpSession *session); RtpProfile *rtp_session_get_profile(RtpSession *session);
RtpProfile *rtp_session_get_send_profile(RtpSession *session); RtpProfile *rtp_session_get_send_profile(RtpSession *session);
RtpProfile *rtp_session_get_recv_profile(RtpSession *session); RtpProfile *rtp_session_get_recv_profile(RtpSession *session);
int rtp_session_signal_connect(RtpSession *session,const char *signal_name, RtpCallback cb, unsigned long user_data); int rtp_session_signal_connect(RtpSession *session,const char *signal_name, RtpCallback cb, unsigned long user_data);
int rtp_session_signal_disconnect_by_callback(RtpSession *session,const cha r *signal_name, RtpCallback cb); int rtp_session_signal_disconnect_by_callback(RtpSession *session,const cha r *signal_name, RtpCallback cb);
void rtp_session_set_ssrc(RtpSession *session, uint32_t ssrc); void rtp_session_set_ssrc(RtpSession *session, uint32_t ssrc);
uint32_t rtp_session_get_send_ssrc(RtpSession* session);
void rtp_session_set_seq_number(RtpSession *session, uint16_t seq); void rtp_session_set_seq_number(RtpSession *session, uint16_t seq);
uint16_t rtp_session_get_seq_number(RtpSession *session); uint16_t rtp_session_get_seq_number(RtpSession *session);
void rtp_session_enable_jitter_buffer(RtpSession *session , bool_t enabled) ; void rtp_session_enable_jitter_buffer(RtpSession *session , bool_t enabled) ;
bool_t rtp_session_jitter_buffer_enabled(const RtpSession *session); bool_t rtp_session_jitter_buffer_enabled(const RtpSession *session);
void rtp_session_set_jitter_buffer_params(RtpSession *session, const JBPara meters *par); void rtp_session_set_jitter_buffer_params(RtpSession *session, const JBPara meters *par);
void rtp_session_get_jitter_buffer_params(RtpSession *session, JBParameters *par); void rtp_session_get_jitter_buffer_params(RtpSession *session, JBParameters *par);
/*deprecated jitter control functions*/ /*deprecated jitter control functions*/
void rtp_session_set_jitter_compensation(RtpSession *session, int milisec); void rtp_session_set_jitter_compensation(RtpSession *session, int milisec);
skipping to change at line 292 skipping to change at line 315
int rtp_session_set_recv_payload_type(RtpSession *session, int pt); int rtp_session_set_recv_payload_type(RtpSession *session, int pt);
int rtp_session_set_payload_type(RtpSession *session, int pt); int rtp_session_set_payload_type(RtpSession *session, int pt);
void rtp_session_set_symmetric_rtp (RtpSession * session, bool_t yesno); void rtp_session_set_symmetric_rtp (RtpSession * session, bool_t yesno);
void rtp_session_set_connected_mode(RtpSession *session, bool_t yesno); void rtp_session_set_connected_mode(RtpSession *session, bool_t yesno);
void rtp_session_enable_rtcp(RtpSession *session, bool_t yesno); void rtp_session_enable_rtcp(RtpSession *session, bool_t yesno);
void rtp_session_set_rtcp_report_interval(RtpSession *session, int value_ms
);
void rtp_session_set_ssrc_changed_threshold(RtpSession *session, int numpac kets); void rtp_session_set_ssrc_changed_threshold(RtpSession *session, int numpac kets);
/*low level recv and send functions */ /*low level recv and send functions */
mblk_t * rtp_session_recvm_with_ts (RtpSession * session, uint32_t user_ts) ; mblk_t * rtp_session_recvm_with_ts (RtpSession * session, uint32_t user_ts) ;
mblk_t * rtp_session_create_packet(RtpSession *session,int header_size, con st uint8_t *payload, int payload_size); mblk_t * rtp_session_create_packet(RtpSession *session,int header_size, con st uint8_t *payload, int payload_size);
mblk_t * rtp_session_create_packet_with_data(RtpSession *session, uint8_t * payload, int payload_size, void (*freefn)(void*)); mblk_t * rtp_session_create_packet_with_data(RtpSession *session, uint8_t * payload, int payload_size, void (*freefn)(void*));
mblk_t * rtp_session_create_packet_in_place(RtpSession *session,uint8_t *bu ffer, int size, void (*freefn)(void*) ); mblk_t * rtp_session_create_packet_in_place(RtpSession *session,uint8_t *bu ffer, int size, void (*freefn)(void*) );
int rtp_session_sendm_with_ts (RtpSession * session, mblk_t *mp, uint32_t u serts); int rtp_session_sendm_with_ts (RtpSession * session, mblk_t *mp, uint32_t u serts);
/* high level recv and send functions */ /* high level recv and send functions */
int rtp_session_recv_with_ts(RtpSession *session, uint8_t *buffer, int len, uint32_t ts, int *have_more); int rtp_session_recv_with_ts(RtpSession *session, uint8_t *buffer, int len, uint32_t ts, int *have_more);
skipping to change at line 323 skipping to change at line 348
uint32_t rtp_session_get_current_send_ts(RtpSession *session); uint32_t rtp_session_get_current_send_ts(RtpSession *session);
uint32_t rtp_session_get_current_recv_ts(RtpSession *session); uint32_t rtp_session_get_current_recv_ts(RtpSession *session);
void rtp_session_flush_sockets(RtpSession *session); void rtp_session_flush_sockets(RtpSession *session);
void rtp_session_release_sockets(RtpSession *session); void rtp_session_release_sockets(RtpSession *session);
void rtp_session_resync(RtpSession *session); void rtp_session_resync(RtpSession *session);
void rtp_session_reset(RtpSession *session); void rtp_session_reset(RtpSession *session);
void rtp_session_destroy(RtpSession *session); void rtp_session_destroy(RtpSession *session);
const rtp_stats_t * rtp_session_get_stats(const RtpSession *session); const rtp_stats_t * rtp_session_get_stats(const RtpSession *session);
const jitter_stats_t * rtp_session_get_jitter_stats( const RtpSession *sess ion );
void rtp_session_reset_stats(RtpSession *session); void rtp_session_reset_stats(RtpSession *session);
void rtp_session_set_data(RtpSession *session, void *data); void rtp_session_set_data(RtpSession *session, void *data);
void *rtp_session_get_data(const RtpSession *session); void *rtp_session_get_data(const RtpSession *session);
void rtp_session_set_recv_buf_size(RtpSession *session, int bufsize); void rtp_session_set_recv_buf_size(RtpSession *session, int bufsize);
void rtp_session_set_rtp_socket_send_buffer_size(RtpSession * session, unsi gned int size); void rtp_session_set_rtp_socket_send_buffer_size(RtpSession * session, unsi gned int size);
void rtp_session_set_rtp_socket_recv_buffer_size(RtpSession * session, unsi gned int size); void rtp_session_set_rtp_socket_recv_buffer_size(RtpSession * session, unsi gned int size);
/* in use with the scheduler to convert a timestamp in scheduler time unit (ms) */ /* in use with the scheduler to convert a timestamp in scheduler time unit (ms) */
skipping to change at line 358 skipping to change at line 384
mblk_t* rtp_session_create_rtcp_sdes_packet(RtpSession *session); mblk_t* rtp_session_create_rtcp_sdes_packet(RtpSession *session);
void rtp_session_get_last_recv_time(RtpSession *session, struct timeval *tv ); void rtp_session_get_last_recv_time(RtpSession *session, struct timeval *tv );
int rtp_session_bye(RtpSession *session, const char *reason); int rtp_session_bye(RtpSession *session, const char *reason);
int rtp_session_get_last_send_error_code(RtpSession *session); int rtp_session_get_last_send_error_code(RtpSession *session);
void rtp_session_clear_send_error_code(RtpSession *session); void rtp_session_clear_send_error_code(RtpSession *session);
int rtp_session_get_last_recv_error_code(RtpSession *session); int rtp_session_get_last_recv_error_code(RtpSession *session);
void rtp_session_clear_recv_error_code(RtpSession *session); void rtp_session_clear_recv_error_code(RtpSession *session);
float rtp_session_get_round_trip_propagation(RtpSession *session);
void rtp_session_enable_network_simulation(RtpSession *session, const OrtpN
etworkSimulatorParams *params);
void rtp_session_rtcp_set_lost_packet_value( RtpSession *session, const uns
igned int value );
void rtp_session_rtcp_set_jitter_value(RtpSession *session, const unsigned
int value );
void rtp_session_rtcp_set_delay_value(RtpSession *session, const unsigned i
nt value );
mblk_t * rtp_session_pick_with_cseq (RtpSession * session, const uint16_t s
equence_number);
/*private */ /*private */
void rtp_session_init(RtpSession *session, int mode); void rtp_session_init(RtpSession *session, int mode);
#define rtp_session_set_flag(session,flag) (session)->flags|=(flag) #define rtp_session_set_flag(session,flag) (session)->flags|=(flag)
#define rtp_session_unset_flag(session,flag) (session)->flags&=~(flag) #define rtp_session_unset_flag(session,flag) (session)->flags&=~(flag)
void rtp_session_uninit(RtpSession *session); void rtp_session_uninit(RtpSession *session);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
 End of changes. 10 change blocks. 
13 lines changed or deleted 53 lines changed or added


 stun_udp.h   stun_udp.h 
skipping to change at line 56 skipping to change at line 56
#if defined(WIN32) || defined(_WIN32_WCE) #if defined(WIN32) || defined(_WIN32_WCE)
#define snprintf _snprintf #define snprintf _snprintf
#include <winsock2.h> #include <winsock2.h>
/* #include <io.h> */ /* #include <io.h> */
typedef int socklen_t; typedef int socklen_t;
typedef SOCKET Socket; typedef SOCKET Socket;
#ifndef EWOULDBLOCK
#define EWOULDBLOCK WSAEWOULDBLOCK #define EWOULDBLOCK WSAEWOULDBLOCK
#endif
#ifndef EINPROGRESS
#define EINPROGRESS WSAEINPROGRESS #define EINPROGRESS WSAEINPROGRESS
#endif
#ifndef EALREADY
#define EALREADY WSAEALREADY #define EALREADY WSAEALREADY
#endif
#ifndef ENOTSOCK
#define ENOTSOCK WSAENOTSOCK #define ENOTSOCK WSAENOTSOCK
#endif
#ifndef EDESTADDRREQ
#define EDESTADDRREQ WSAEDESTADDRREQ #define EDESTADDRREQ WSAEDESTADDRREQ
#endif
#ifndef EMSGSIZE
#define EMSGSIZE WSAEMSGSIZE #define EMSGSIZE WSAEMSGSIZE
#endif
#ifndef EPROTOTYPE
#define EPROTOTYPE WSAEPROTOTYPE #define EPROTOTYPE WSAEPROTOTYPE
#endif
#ifndef ENOPROTOOPT
#define ENOPROTOOPT WSAENOPROTOOPT #define ENOPROTOOPT WSAENOPROTOOPT
#endif
#ifndef EPROTONOSUPPORT
#define EPROTONOSUPPORT WSAEPROTONOSUPPORT #define EPROTONOSUPPORT WSAEPROTONOSUPPORT
#endif
#ifndef ESOCKTNOSUPPORT
#define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT #define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
#endif
#ifndef EOPNOTSUPP
#define EOPNOTSUPP WSAEOPNOTSUPP #define EOPNOTSUPP WSAEOPNOTSUPP
#endif
#ifndef EPFNOSUPPORT
#define EPFNOSUPPORT WSAEPFNOSUPPORT #define EPFNOSUPPORT WSAEPFNOSUPPORT
#endif
#ifndef EAFNOSUPPORT
#define EAFNOSUPPORT WSAEAFNOSUPPORT #define EAFNOSUPPORT WSAEAFNOSUPPORT
#endif
#ifndef EADDRINUSE
#define EADDRINUSE WSAEADDRINUSE #define EADDRINUSE WSAEADDRINUSE
#endif
#ifndef EADDRNOTAVAIL
#define EADDRNOTAVAIL WSAEADDRNOTAVAIL #define EADDRNOTAVAIL WSAEADDRNOTAVAIL
#endif
#ifndef ENETDOWN
#define ENETDOWN WSAENETDOWN #define ENETDOWN WSAENETDOWN
#endif
#ifndef ENETUNREACH
#define ENETUNREACH WSAENETUNREACH #define ENETUNREACH WSAENETUNREACH
#endif
#ifndef ENETRESET
#define ENETRESET WSAENETRESET #define ENETRESET WSAENETRESET
#endif
#ifndef ECONNABORTED
#define ECONNABORTED WSAECONNABORTED #define ECONNABORTED WSAECONNABORTED
#endif
#ifndef ECONNRESET
#define ECONNRESET WSAECONNRESET #define ECONNRESET WSAECONNRESET
#endif
#ifndef ENOBUFS
#define ENOBUFS WSAENOBUFS #define ENOBUFS WSAENOBUFS
#endif
#ifndef EISCONN
#define EISCONN WSAEISCONN #define EISCONN WSAEISCONN
#endif
#ifndef ENOTCONN
#define ENOTCONN WSAENOTCONN #define ENOTCONN WSAENOTCONN
#endif
#ifndef ESHUTDOWN
#define ESHUTDOWN WSAESHUTDOWN #define ESHUTDOWN WSAESHUTDOWN
#endif
#ifndef ETOOMANYREFS
#define ETOOMANYREFS WSAETOOMANYREFS #define ETOOMANYREFS WSAETOOMANYREFS
#endif
#ifndef ETIMEDOUT
#define ETIMEDOUT WSAETIMEDOUT #define ETIMEDOUT WSAETIMEDOUT
#endif
#ifndef ECONNREFUSED
#define ECONNREFUSED WSAECONNREFUSED #define ECONNREFUSED WSAECONNREFUSED
#endif
#ifndef ELOOP
#define ELOOP WSAELOOP #define ELOOP WSAELOOP
#endif
#ifndef EHOSTDOWN
#define EHOSTDOWN WSAEHOSTDOWN #define EHOSTDOWN WSAEHOSTDOWN
#endif
#ifndef EHOSTUNREACH
#define EHOSTUNREACH WSAEHOSTUNREACH #define EHOSTUNREACH WSAEHOSTUNREACH
#endif
#ifndef EPROCLIM
#define EPROCLIM WSAEPROCLIM #define EPROCLIM WSAEPROCLIM
#endif
#ifndef EUSERS
#define EUSERS WSAEUSERS #define EUSERS WSAEUSERS
#endif
#ifndef EDQUOT
#define EDQUOT WSAEDQUOT #define EDQUOT WSAEDQUOT
#endif
#ifndef ESTALE
#define ESTALE WSAESTALE #define ESTALE WSAESTALE
#endif
#ifndef EREMOTE
#define EREMOTE WSAEREMOTE #define EREMOTE WSAEREMOTE
#endif
typedef LONGLONG Int64; typedef LONGLONG Int64;
#else #else
typedef int Socket; typedef int Socket;
#ifndef INVALID_SOCKET #ifndef INVALID_SOCKET
#define INVALID_SOCKET -1 #define INVALID_SOCKET -1
#endif #endif
#ifndef SOCKET_ERROR #ifndef SOCKET_ERROR
#define SOCKET_ERROR -1 #define SOCKET_ERROR -1
 End of changes. 36 change blocks. 
1 lines changed or deleted 70 lines changed or added


 waveheader.h   waveheader.h 
skipping to change at line 23 skipping to change at line 23
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
/* the following code was taken from a free software utility that I don't r emember the name. */ /* the following code was taken from a free software utility that I don't r emember the name. */
/* sorry */ /* sorry */
#ifdef HAVE_CONFIG_H
#include "mediastreamer-config.h"
#endif
#ifndef waveheader_h #ifndef waveheader_h
#define waveheader_h #define waveheader_h
#ifdef swap16 #ifdef swap16
#else #else
/* all integer in wav header must be read in least endian order */ /* all integer in wav header must be read in least endian order */
static inline uint16_t swap16(uint16_t a) static inline uint16_t swap16(uint16_t a)
{ {
return ((a & 0xFF) << 8) | ((a & 0xFF00) >> 8); return ((a & 0xFF) << 8) | ((a & 0xFF00) >> 8);
} }
 End of changes. 1 change blocks. 
4 lines changed or deleted 0 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/