config.h   config.h 
skipping to change at line 114 skipping to change at line 114
/* 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"
/* 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.0/lib/liblinpho ne/plugins" #define LINPHONE_PLUGINS_DIR "/home/ut/testing/linphone/3.4.1/lib/liblinpho ne/plugins"
/* Linphone's version number */ /* Linphone's version number */
#define LINPHONE_VERSION "3.4.0" #define LINPHONE_VERSION "3.4.1"
/* 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.0/share" #define PACKAGE_DATA_DIR "/home/ut/testing/linphone/3.4.1/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.0/share/locale" #define PACKAGE_LOCALE_DIR "/home/ut/testing/linphone/3.4.1/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.0/share/sounds/lin phone" #define PACKAGE_SOUND_DIR "/home/ut/testing/linphone/3.4.1/share/sounds/lin phone"
/* 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.0" #define PACKAGE_STRING "linphone 3.4.1"
/* 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.0" #define PACKAGE_VERSION "3.4.1"
/* 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.0" #define VERSION "3.4.1"
/* 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. 8 change blocks. 
8 lines changed or deleted 8 lines changed or added


 dtmfgen.h   dtmfgen.h 
skipping to change at line 50 skipping to change at line 50
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*/
}; };
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*/
#define MS_DTMF_GEN_SET_DEFAULT_AMPLITUDE MS_FILTER_METHOD(MS_DTMF_GEN_ID,4
,float)
/** /**
* Structure carried by MS_DTMF_GEN_EVENT * Structure carried by MS_DTMF_GEN_EVENT
**/ **/
struct _MSDtmfGenEvent{ struct _MSDtmfGenEvent{
uint64_t tone_start_time; uint64_t tone_start_time;
char tone_name[8]; char tone_name[8];
}; };
typedef struct _MSDtmfGenEvent MSDtmfGenEvent; typedef struct _MSDtmfGenEvent MSDtmfGenEvent;
 End of changes. 1 change blocks. 
0 lines changed or deleted 4 lines changed or added


 linphonecore_utils.h   linphonecore_utils.h 
skipping to change at line 70 skipping to change at line 70
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
p_dtmf_stream must be called before entering BG mode
*/
void linphone_core_start_dtmf_stream(const LinphoneCore* lc);
/**
* IOS special function to stop dtmf feed back function. Must be called bef
ore entering BG mode
*/
void linphone_core_stop_dtmf_stream(const LinphoneCore* lc);
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif
 End of changes. 1 change blocks. 
0 lines changed or deleted 13 lines changed or added


 mediastream.h   mediastream.h 
skipping to change at line 86 skipping to change at line 86
MSTicker *ticker; MSTicker *ticker;
MSFilter *source; MSFilter *source;
MSFilter *gendtmf; MSFilter *gendtmf;
MSFilter *write_resampler; MSFilter *write_resampler;
MSFilter *sndwrite; MSFilter *sndwrite;
}; };
typedef struct _RingStream RingStream; typedef struct _RingStream RingStream;
/* start a thread that does sampling->encoding->rtp_sending|rtp_receiving-> decoding->playing */ /* start a thread that does sampling->encoding->rtp_sending|rtp_receiving-> decoding->playing */
AudioStream *audio_stream_start (RtpProfile * prof, int locport, const char *remip, MS2_PUBLIC AudioStream *audio_stream_start (RtpProfile * prof, int locport, const char *remip,
int remport, int payload_type, int jitt_com p, bool_t echo_cancel); int remport, int payload_type, int jitt_com p, bool_t echo_cancel);
AudioStream *audio_stream_start_with_sndcards(RtpProfile * prof, int locpor t, const char *remip4, int remport, int payload_type, int jitt_comp, MSSndC ard *playcard, MSSndCard *captcard, bool_t echocancel); MS2_PUBLIC AudioStream *audio_stream_start_with_sndcards(RtpProfile * prof, int locport, const char *remip4, int remport, int payload_type, int jitt_c omp, MSSndCard *playcard, MSSndCard *captcard, bool_t echocancel);
int audio_stream_start_with_files (AudioStream * stream, RtpProfile * prof, MS2_PUBLIC int audio_stream_start_with_files (AudioStream * stream, RtpProf ile * prof,
const char *remip, int remport, int rem_rtcp_port, const char *remip, int remport, int rem_rtcp_port,
int pt, int jitt_comp, int pt, int jitt_comp,
const char * infile, const char * outfile); const char * infile, const char * outfile);
int audio_stream_start_full(AudioStream *stream, RtpProfile *profile, const char *remip,int remport, MS2_PUBLIC int audio_stream_start_full(AudioStream *stream, RtpProfile *pro file, const char *remip,int remport,
int rem_rtcp_port, int payload,int jitt_comp, const char *infile, co nst char *outfile, int rem_rtcp_port, int payload,int jitt_comp, const char *infile, co nst char *outfile,
MSSndCard *playcard, MSSndCard *captcard, bool_t use_ec); MSSndCard *playcard, MSSndCard *captcard, bool_t use_ec);
void audio_stream_play(AudioStream *st, const char *name); MS2_PUBLIC void audio_stream_play(AudioStream *st, const char *name);
void audio_stream_record(AudioStream *st, const char *name); MS2_PUBLIC void audio_stream_record(AudioStream *st, const char *name);
void audio_stream_set_rtcp_information(AudioStream *st, const char *cname, const char *tool); MS2_PUBLIC void audio_stream_set_rtcp_information(AudioStream *st, const ch ar *cname, const char *tool);
void audio_stream_play_received_dtmfs(AudioStream *st, bool_t yesno); MS2_PUBLIC void audio_stream_play_received_dtmfs(AudioStream *st, bool_t ye sno);
/* 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.*/
AudioStream *audio_stream_new(int locport, bool_t ipv6); MS2_PUBLIC AudioStream *audio_stream_new(int locport, bool_t ipv6);
int audio_stream_start_now(AudioStream * stream, RtpProfile * prof, const MS2_PUBLIC int audio_stream_start_now(AudioStream * stream, RtpProfile * pr
char *remip, int remport, int rem_rtcp_port, int payload_type, int jitt_com of, const char *remip, int remport, int rem_rtcp_port, int payload_type, i
p,MSSndCard *playcard, MSSndCard *captcard, bool_t echo_cancel); nt jitt_comp,MSSndCard *playcard, MSSndCard *captcard, bool_t echo_cancel);
void audio_stream_set_relay_session_id(AudioStream *stream, const char *rel MS2_PUBLIC void audio_stream_set_relay_session_id(AudioStream *stream, cons
ay_session_id); 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*/
bool_t audio_stream_alive(AudioStream * stream, int timeout); MS2_PUBLIC bool_t audio_stream_alive(AudioStream * stream, int timeout);
/*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*/
void audio_stream_enable_echo_limiter(AudioStream *stream, EchoLimiterType 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() */
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() */
void audio_stream_enable_automatic_gain_control(AudioStream *stream, 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 */
void audio_stream_set_echo_canceller_params(AudioStream *st, int tail_len_m s, 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);
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 */
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()*/
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*/
void audio_stream_enable_equalizer(AudioStream *stream, bool_t enabled); MS2_PUBLIC void audio_stream_enable_equalizer(AudioStream *stream, bool_t e nabled);
void audio_stream_equalizer_set_gain(AudioStream *stream, int frequency, fl oat gain, int freq_width); MS2_PUBLIC void audio_stream_equalizer_set_gain(AudioStream *stream, int fr equency, float gain, int freq_width);
/* stop the audio streaming thread and free everything*/ /* stop the audio streaming thread and free everything*/
void audio_stream_stop (AudioStream * stream); MS2_PUBLIC void audio_stream_stop (AudioStream * stream);
RingStream *ring_start (const char * file, int interval, MSSndCard *sndcard MS2_PUBLIC RingStream *ring_start (const char * file, int interval, MSSndCa
); rd *sndcard);
RingStream *ring_start_with_cb(const char * file, int interval, MSSndCard * MS2_PUBLIC RingStream *ring_start_with_cb(const char * file, int interval,
sndcard, MSFilterNotifyFunc func, void * user_data); MSSndCard *sndcard, MSFilterNotifyFunc func, void * user_data);
void ring_stop (RingStream * stream); MS2_PUBLIC void ring_stop (RingStream * stream);
/* send a dtmf */ /* send a dtmf */
int audio_stream_send_dtmf (AudioStream * stream, char dtmf); MS2_PUBLIC int audio_stream_send_dtmf (AudioStream * stream, char dtmf);
void audio_stream_set_default_card(int cardindex); MS2_PUBLIC void audio_stream_set_default_card(int cardindex);
/* retrieve RTP statistics*/ /* retrieve RTP statistics*/
void audio_stream_get_local_rtp_stats(AudioStream *stream, rtp_stats_t *sta ts); MS2_PUBLIC void audio_stream_get_local_rtp_stats(AudioStream *stream, rtp_s tats_t *stats);
/***************** /*****************
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,
skipping to change at line 203 skipping to change at line 203
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 adapt_bitrate;
}; };
typedef struct _VideoStream VideoStream; typedef struct _VideoStream VideoStream;
VideoStream *video_stream_new(int locport, bool_t use_ipv6); MS2_PUBLIC VideoStream *video_stream_new(int locport, bool_t use_ipv6);
void video_stream_set_direction(VideoStream *vs, VideoStreamDir dir); MS2_PUBLIC void video_stream_set_direction(VideoStream *vs, VideoStreamDir
void video_stream_enable_adaptive_bitrate_control(VideoStream *s, bool_t ye dir);
sno); MS2_PUBLIC void video_stream_enable_adaptive_bitrate_control(VideoStream *s
void video_stream_set_render_callback(VideoStream *s, VideoStreamRenderCall , bool_t yesno);
back cb, void *user_pointer); MS2_PUBLIC void video_stream_set_render_callback(VideoStream *s, VideoStrea
void video_stream_set_event_callback(VideoStream *s, VideoStreamEventCallba mRenderCallback cb, void *user_pointer);
ck cb, void *user_pointer); MS2_PUBLIC void video_stream_set_event_callback(VideoStream *s, VideoStream
void video_stream_set_display_filter_name(VideoStream *s, const char *fname EventCallback cb, void *user_pointer);
); MS2_PUBLIC void video_stream_set_display_filter_name(VideoStream *s, const
int video_stream_start(VideoStream * stream, RtpProfile *profile, const cha char *fname);
r *remip, int remport, int rem_rtcp_port, MS2_PUBLIC int video_stream_start(VideoStream * stream, RtpProfile *profile
, const char *remip, int remport, int rem_rtcp_port,
int payload, int jitt_comp, MSWebCam *device); int payload, int jitt_comp, MSWebCam *device);
void video_stream_set_relay_session_id(VideoStream *stream, const char *rel MS2_PUBLIC void video_stream_set_relay_session_id(VideoStream *stream, cons
ay_session_id); t char *relay_session_id);
void video_stream_set_rtcp_information(VideoStream *st, const char *cname, MS2_PUBLIC void video_stream_set_rtcp_information(VideoStream *st, const ch
const char *tool); ar *cname, const char *tool);
void video_stream_change_camera(VideoStream *stream, MSWebCam *cam); MS2_PUBLIC void video_stream_change_camera(VideoStream *stream, MSWebCam *c
am);
/* Calling video_stream_set_sent_video_size() or changing the bitrate value in the used PayloadType during a stream is running does nothing. /* Calling video_stream_set_sent_video_size() or changing the bitrate value in the used PayloadType during a stream is running does nothing.
The following function allows to take into account new parameters by redraw ing the sending graph*/ The following function allows to take into account new parameters by redraw ing the sending graph*/
void video_stream_update_video_params(VideoStream *stream); MS2_PUBLIC void video_stream_update_video_params(VideoStream *stream);
/*function to call periodically to handle various events */ /*function to call periodically to handle various events */
void video_stream_iterate(VideoStream *stream); MS2_PUBLIC void video_stream_iterate(VideoStream *stream);
void video_stream_send_vfu(VideoStream *stream); MS2_PUBLIC void video_stream_send_vfu(VideoStream *stream);
void video_stream_stop(VideoStream * stream); MS2_PUBLIC void video_stream_stop(VideoStream * stream);
void video_stream_set_sent_video_size(VideoStream *stream, MSVideoSize vsiz MS2_PUBLIC void video_stream_set_sent_video_size(VideoStream *stream, MSVid
e); eoSize vsize);
void video_stream_enable_self_view(VideoStream *stream, bool_t val); MS2_PUBLIC void video_stream_enable_self_view(VideoStream *stream, bool_t v
unsigned long video_stream_get_native_window_id(VideoStream *stream); al);
void video_stream_set_native_window_id(VideoStream *stream, unsigned long i MS2_PUBLIC unsigned long video_stream_get_native_window_id(VideoStream *str
d); eam);
void video_stream_set_native_preview_window_id(VideoStream *stream, unsigne MS2_PUBLIC void video_stream_set_native_window_id(VideoStream *stream, unsi
d long id); gned long id);
unsigned long video_stream_get_native_preview_window_id(VideoStream *stream MS2_PUBLIC void video_stream_set_native_preview_window_id(VideoStream *stre
); am, unsigned long id);
void video_stream_use_preview_video_window(VideoStream *stream, bool_t yesn MS2_PUBLIC unsigned long video_stream_get_native_preview_window_id(VideoStr
o); eam *stream);
MS2_PUBLIC void video_stream_use_preview_video_window(VideoStream *stream,
bool_t yesno);
/*provided for compatibility, use video_stream_set_direction() instead */ /*provided for compatibility, use video_stream_set_direction() instead */
int video_stream_recv_only_start(VideoStream *videostream, RtpProfile *prof MS2_PUBLIC int video_stream_recv_only_start(VideoStream *videostream, RtpPr
ile, const char *addr, int port, int used_pt, int jitt_comp); ofile *profile, const char *addr, int port, int used_pt, int jitt_comp);
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);
void video_stream_recv_only_stop(VideoStream *vs); MS2_PUBLIC void video_stream_recv_only_stop(VideoStream *vs);
void video_stream_send_only_stop(VideoStream *vs); MS2_PUBLIC void video_stream_send_only_stop(VideoStream *vs);
/** /**
* Small API to display a local preview window. * Small API to display a local preview window.
**/ **/
typedef VideoStream VideoPreview; typedef VideoStream VideoPreview;
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)
#define video_preview_get_native_window_id(p) video_stream _get_native_preview_window_id (p) #define video_preview_get_native_window_id(p) video_stream _get_native_preview_window_id (p)
void video_preview_start(VideoPreview *stream, MSWebCam *device); MS2_PUBLIC void video_preview_start(VideoPreview *stream, MSWebCam *device)
void video_preview_stop(VideoPreview *stream); ;
MS2_PUBLIC void video_preview_stop(VideoPreview *stream);
bool_t ms_is_ipv6(const char *address); MS2_PUBLIC bool_t ms_is_ipv6(const char *address);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif
 End of changes. 32 change blocks. 
75 lines changed or deleted 80 lines changed or added


 mscommon.h   mscommon.h 
skipping to change at line 47 skipping to change at line 47
#define ms_mutex_lock ortp_mutex_lock #define ms_mutex_lock ortp_mutex_lock
#define ms_mutex_unlock ortp_mutex_unlock #define ms_mutex_unlock ortp_mutex_unlock
#define ms_cond_t ortp_cond_t #define ms_cond_t ortp_cond_t
#define ms_cond_init ortp_cond_init #define ms_cond_init ortp_cond_init
#define ms_cond_wait ortp_cond_wait #define ms_cond_wait ortp_cond_wait
#define ms_cond_signal ortp_cond_signal #define ms_cond_signal ortp_cond_signal
#define ms_cond_broadcast ortp_cond_broadcast #define ms_cond_broadcast ortp_cond_broadcast
#define ms_cond_destroy ortp_cond_destroy #define ms_cond_destroy ortp_cond_destroy
#if defined(_MSC_VER)
#define MS2_PUBLIC __declspec(dllexport)
#else
#define MS2_PUBLIC
#endif
#if defined(_WIN32_WCE) #if defined(_WIN32_WCE)
time_t ms_time (time_t *t); time_t ms_time (time_t *t);
#else #else
#define ms_time time #define ms_time time
#endif #endif
#ifdef WIN32 #ifdef WIN32
static inline void ms_debug(const char *fmt,...) static inline void ms_debug(const char *fmt,...)
{ {
va_list args; va_list args;
skipping to change at line 107 skipping to change at line 113
#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);
MSList * ms_list_append(MSList *elem, void * data); MS2_PUBLIC MSList * ms_list_append(MSList *elem, void * data);
MSList * ms_list_prepend(MSList *elem, void * data); MS2_PUBLIC MSList * ms_list_prepend(MSList *elem, void * data);
MSList * ms_list_free(MSList *elem); MS2_PUBLIC MSList * ms_list_free(MSList *elem);
MSList * ms_list_concat(MSList *first, MSList *second); MS2_PUBLIC MSList * ms_list_concat(MSList *first, MSList *second);
MSList * ms_list_remove(MSList *first, void *data); MS2_PUBLIC MSList * ms_list_remove(MSList *first, void *data);
int ms_list_size(const MSList *first); MS2_PUBLIC int ms_list_size(const MSList *first);
void ms_list_for_each(const MSList *list, void (*func)(void *)); MS2_PUBLIC void ms_list_for_each(const MSList *list, void (*func)(void *));
void ms_list_for_each2(const MSList *list, void (*func)(void *, void *), vo MS2_PUBLIC void ms_list_for_each2(const MSList *list, void (*func)(void *,
id *user_data); void *), void *user_data);
MSList *ms_list_remove_link(MSList *list, MSList *elem); MS2_PUBLIC MSList *ms_list_remove_link(MSList *list, MSList *elem);
MSList *ms_list_find(MSList *list, void *data); MS2_PUBLIC MSList *ms_list_find(MSList *list, void *data);
MSList *ms_list_find_custom(MSList *list, MSCompareFunc compare_func, const MS2_PUBLIC MSList *ms_list_find_custom(MSList *list, MSCompareFunc compare_
void *user_data); func, const void *user_data);
void * ms_list_nth_data(const MSList *list, int index); MS2_PUBLIC void * ms_list_nth_data(const MSList *list, int index);
int ms_list_position(const MSList *list, MSList *elem); MS2_PUBLIC int ms_list_position(const MSList *list, MSList *elem);
int ms_list_index(const MSList *list, void *data); MS2_PUBLIC int ms_list_index(const MSList *list, void *data);
MSList *ms_list_insert_sorted(MSList *list, void *data, MSCompareFunc compa MS2_PUBLIC MSList *ms_list_insert_sorted(MSList *list, void *data, MSCompar
re_func); eFunc compare_func);
MSList *ms_list_insert(MSList *list, MSList *before, void *data); MS2_PUBLIC MSList *ms_list_insert(MSList *list, MSList *before, void *data)
MSList *ms_list_copy(const MSList *list); ;
MS2_PUBLIC MSList *ms_list_copy(const MSList *list);
#undef MIN #undef MIN
#define MIN(a,b) ((a)>(b) ? (b) : (a)) #define MIN(a,b) ((a)>(b) ? (b) : (a))
#undef MAX #undef MAX
#define MAX(a,b) ((a)>(b) ? (a) : (b)) #define MAX(a,b) ((a)>(b) ? (a) : (b))
/** /**
* @file mscommon.h * @file mscommon.h
* @brief mediastreamer2 mscommon.h include file * @brief mediastreamer2 mscommon.h include file
* *
skipping to change at line 150 skipping to change at line 156
* @defgroup mediastreamer2_init Init API - manage mediastreamer2 library. * @defgroup mediastreamer2_init Init API - manage mediastreamer2 library.
* @ingroup mediastreamer2_api * @ingroup mediastreamer2_api
* @{ * @{
*/ */
/** /**
* Initialize the mediastreamer2 library. * Initialize the mediastreamer2 library.
* *
* This must be called once before calling any other API. * This must be called once before calling any other API.
*/ */
void ms_init(void); MS2_PUBLIC void ms_init(void);
/** /**
* Load plugins from a specific directory. * Load plugins from a specific directory.
* This method basically loads all libraries in the specified directory and attempts to call a C function called * This method basically loads all libraries in the specified directory and attempts to call a C function called
* \<libraryname\>_init. For example if a library 'libdummy.so' or 'libdumm y.dll' is found, then the loader tries to locate * \<libraryname\>_init. For example if a library 'libdummy.so' or 'libdumm y.dll' is found, then the loader tries to locate
* a C function called 'libdummy_init()' and calls it if it exists. * a C function called 'libdummy_init()' and calls it if it exists.
* ms_load_plugins() can be used to load non-mediastreamer2 plugins as it d oes not expect mediastreamer2 specific entry points. * ms_load_plugins() can be used to load non-mediastreamer2 plugins as it d oes not expect mediastreamer2 specific entry points.
* *
* @param directory A directory where plugins library are available. * @param directory A directory where plugins library are available.
* *
* Returns: >0 if successfull, 0 if not plugins loaded, -1 otherwise. * Returns: >0 if successfull, 0 if not plugins loaded, -1 otherwise.
*/ */
int ms_load_plugins(const char *directory); MS2_PUBLIC int ms_load_plugins(const char *directory);
/** /**
* Release resource allocated in the mediastreamer2 library. * Release resource allocated in the mediastreamer2 library.
* *
* This must be called once before closing program. * This must be called once before closing program.
*/ */
void ms_exit(void); MS2_PUBLIC void ms_exit(void);
struct _MSSndCardDesc; struct _MSSndCardDesc;
void ms_sleep(int seconds); MS2_PUBLIC void ms_sleep(int seconds);
void ms_usleep(uint64_t usec); MS2_PUBLIC void ms_usleep(uint64_t usec);
/** /**
* The max payload size allowed. * The max payload size allowed.
* Filters that generate data that can be sent through RTP should make pack ets * Filters that generate data that can be sent through RTP should make pack ets
* whose size is below ms_get_payload_max_size(). * whose size is below ms_get_payload_max_size().
* The default value is 1440 computed as the standard internet MTU minus IP v6 header, * The default value is 1440 computed as the standard internet MTU minus IP v6 header,
* UDP header and RTP header. As IPV4 header is smaller than IPv6 header, t his * UDP header and RTP header. As IPV4 header is smaller than IPv6 header, t his
* value works for both. * value works for both.
* *
**/ **/
int ms_get_payload_max_size(); MS2_PUBLIC int ms_get_payload_max_size();
void ms_set_payload_max_size(int size); MS2_PUBLIC void ms_set_payload_max_size(int size);
/** /**
* Returns the network Max Transmission Unit to reach destination_host. * Returns the network Max Transmission Unit to reach destination_host.
* This will attempt to send one or more big packets to destination_host, t o a random port. * This will attempt to send one or more big packets to destination_host, t o a random port.
* Those packets are filled with zeroes. * Those packets are filled with zeroes.
**/ **/
int ms_discover_mtu(const char *destination_host); MS2_PUBLIC int ms_discover_mtu(const char *destination_host);
/** /**
* Set mediastreamer default mtu, used to compute the default RTP max paylo ad size. * Set mediastreamer default mtu, used to compute the default RTP max paylo ad size.
* 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]).
**/ **/
void ms_set_mtu(int mtu); MS2_PUBLIC void ms_set_mtu(int mtu);
/** @} */ /** @} */
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#ifdef ANDROID #ifdef ANDROID
#include "mediastreamer2/msjava.h" #include "mediastreamer2/msjava.h"
#endif #endif
 End of changes. 11 change blocks. 
29 lines changed or deleted 36 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"
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()
**/ **/
MSEventQueue *ms_event_queue_new(); MS2_PUBLIC MSEventQueue *ms_event_queue_new();
/** /**
* Install a global event queue. * Install a global event queue.
* *
* All filters currently scheduled by MSTickers will send events (notificat ions) * All filters currently scheduled by MSTickers will send events (notificat ions)
* to the event queue. * to the event queue.
* *
**/ **/
void ms_set_global_event_queue(MSEventQueue *q); MS2_PUBLIC void ms_set_global_event_queue(MSEventQueue *q);
/** /**
* Run callbacks associated to the events received. * Run callbacks associated to the events received.
* The user can register a notify callback per filter using * The user can register a notify callback per filter using
* ms_filter_set_notify_callback() in order to be informed * ms_filter_set_notify_callback() in order to be informed
* of various events generated by a MSFilter. * of various events generated by a MSFilter.
**/ **/
void ms_event_queue_pump(MSEventQueue *q); MS2_PUBLIC void ms_event_queue_pump(MSEventQueue *q);
/** /**
* Discard all pending events. * Discard all pending events.
**/ **/
void ms_event_queue_skip(MSEventQueue *q); MS2_PUBLIC void ms_event_queue_skip(MSEventQueue *q);
/** /**
* Destroys an event queue. * Destroys an event queue.
**/ **/
void ms_event_queue_destroy(MSEventQueue *q); MS2_PUBLIC void ms_event_queue_destroy(MSEventQueue *q);
#endif #endif
 End of changes. 6 change blocks. 
5 lines changed or deleted 7 lines changed or added


 msfilter.h   msfilter.h 
skipping to change at line 192 skipping to change at line 192
* transparently from the application. * transparently from the application.
* *
* ms_filter_get_encoder, ms_filter_get_decoder, * ms_filter_get_encoder, ms_filter_get_decoder,
* ms_filter_create_encoder, ms_filter_create_decoder * ms_filter_create_encoder, ms_filter_create_decoder
* and ms_filter_codec_supported * and ms_filter_codec_supported
* can then be used as if the codec was internally. * can then be used as if the codec was internally.
* supported. * supported.
* *
* @param desc a filter description. * @param desc a filter description.
*/ */
void ms_filter_register(MSFilterDesc *desc); MS2_PUBLIC void ms_filter_register(MSFilterDesc *desc);
/** /**
* Retrieve encoders according to codec name. * Retrieve encoders 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 MSFilterDesc if successfull, NULL otherwise. * Returns: a MSFilterDesc if successfull, NULL otherwise.
*/ */
MSFilterDesc * ms_filter_get_encoder(const char *mime); MS2_PUBLIC MSFilterDesc * ms_filter_get_encoder(const char *mime);
/** /**
* Retrieve decoders according to codec name. * Retrieve decoders 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 MSFilterDesc if successfull, NULL otherwise. * Returns: a MSFilterDesc if successfull, NULL otherwise.
*/ */
MSFilterDesc * ms_filter_get_decoder(const char *mime); MS2_PUBLIC MSFilterDesc * ms_filter_get_decoder(const char *mime);
/** /**
* 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.
*/ */
MSFilter * ms_filter_create_encoder(const char *mime); MS2_PUBLIC MSFilter * ms_filter_create_encoder(const char *mime);
/** /**
* Create decoder filter according to codec name. * Create decoder 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.
*/ */
MSFilter * ms_filter_create_decoder(const char *mime); MS2_PUBLIC MSFilter * ms_filter_create_decoder(const char *mime);
/** /**
* Check if a encode or decode filter exists for a codec name. * Check if a encode or decode filter exists for a 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: TRUE if successfull, FALSE otherwise. * Returns: TRUE if successfull, FALSE otherwise.
*/ */
bool_t ms_filter_codec_supported(const char *mime); MS2_PUBLIC bool_t ms_filter_codec_supported(const char *mime);
/** /**
* Create decoder filter according to a filter's MSFilterId. * Create decoder filter according to a filter's MSFilterId.
* *
* @param id A MSFilterId identifier for the filter. * @param id A MSFilterId identifier for the filter.
* *
* Returns: a MSFilter if successfull, NULL otherwise. * Returns: a MSFilter if successfull, NULL otherwise.
*/ */
MSFilter *ms_filter_new(MSFilterId id); MS2_PUBLIC MSFilter *ms_filter_new(MSFilterId id);
/** /**
* Create decoder filter according to a filter's name. * Create decoder filter according to a filter's name.
* *
* @param name A name for the filter. * @param name A name for the filter.
* *
* Returns: a MSFilter if successfull, NULL otherwise. * Returns: a MSFilter if successfull, NULL otherwise.
*/ */
MSFilter *ms_filter_new_from_name(const char *name); MS2_PUBLIC MSFilter *ms_filter_new_from_name(const char *name);
/** /**
* Create decoder filter according to a filter's description. * Create decoder filter according to a filter's description.
* *
* The primary use is to create your own filter's in your * The primary use is to create your own filter's in your
* application and avoid registration inside mediastreamer2. * application and avoid registration inside mediastreamer2.
* *
* @param desc A MSFilterDesc for the filter. * @param desc A MSFilterDesc for the filter.
* *
* Returns: a MSFilter if successfull, NULL otherwise. * Returns: a MSFilter if successfull, NULL otherwise.
*/ */
MSFilter *ms_filter_new_from_desc(MSFilterDesc *desc); MS2_PUBLIC MSFilter *ms_filter_new_from_desc(MSFilterDesc *desc);
/** /**
* Link one OUTPUT pin from a filter to an INPUT pin of another filter. * Link one OUTPUT pin from a filter to an INPUT pin of another filter.
* *
* All data coming from the OUTPUT pin of one filter will be distributed * All data coming from the OUTPUT pin of one filter will be distributed
* to the INPUT pin of the second filter. * to the INPUT pin of the second filter.
* *
* @param f1 A MSFilter object containing the OUTPUT pin * @param f1 A MSFilter object containing the OUTPUT pin
* @param pin1 An index of an OUTPUT pin. * @param pin1 An index of an OUTPUT pin.
* @param f2 A MSFilter object containing the INPUT pin * @param f2 A MSFilter object containing the INPUT pin
* @param pin2 An index of an INPUT pin. * @param pin2 An index of an INPUT pin.
* *
* Returns: 0 if sucessful, -1 otherwise. * Returns: 0 if sucessful, -1 otherwise.
*/ */
int ms_filter_link(MSFilter *f1, int pin1, MSFilter *f2, int pin2); MS2_PUBLIC int ms_filter_link(MSFilter *f1, int pin1, MSFilter *f2, int pin 2);
/** /**
* Unlink one OUTPUT pin from a filter to an INPUT pin of another filter. * Unlink one OUTPUT pin from a filter to an INPUT pin of another filter.
* *
* @param f1 A MSFilter object containing the OUTPUT pin * @param f1 A MSFilter object containing the OUTPUT pin
* @param pin1 An index of an OUTPUT pin. * @param pin1 An index of an OUTPUT pin.
* @param f2 A MSFilter object containing the INPUT pin * @param f2 A MSFilter object containing the INPUT pin
* @param pin2 An index of an INPUT pin. * @param pin2 An index of an INPUT pin.
* *
* Returns: 0 if sucessful, -1 otherwise. * Returns: 0 if sucessful, -1 otherwise.
*/ */
int ms_filter_unlink(MSFilter *f1, int pin1, MSFilter *f2, int pin2); MS2_PUBLIC int ms_filter_unlink(MSFilter *f1, int pin1, MSFilter *f2, int p in2);
/** /**
* Call a filter's method to set or get options. * Call a filter's method to set or get options.
* *
* @param f A MSFilter object. * @param f A MSFilter object.
* @param id A private filter ID for the option. * @param id A private filter ID for the option.
* @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.
*/ */
int ms_filter_call_method(MSFilter *f, unsigned int id, void *arg); 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 private filter ID for the option.
* *
* Returns: 0 if successfull, -1 otherwise. * Returns: 0 if successfull, -1 otherwise.
*/ */
int ms_filter_call_method_noarg(MSFilter *f, unsigned int id); MS2_PUBLIC int ms_filter_call_method_noarg(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.
* *
* *
*/ */
void ms_filter_set_notify_callback(MSFilter *f, MSFilterNotifyFunc 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 * Forces the filter to synchronously send notifications, that is
* the notify callback will be called from MSTicker thread instead of being * the notify callback will be called from MSTicker thread instead of being
* run by a MSEventQueue. * run by a MSEventQueue.
*/ */
void ms_filter_enable_synchronous_notifcations(MSFilter *f, bool_t yesno); 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.
*/ */
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.
* *
* Returns: a MSList of MSFilter, that needs to be freed by the caller when no more needed. * Returns: a MSList of MSFilter, that needs to be freed by the caller when no more needed.
**/ **/
MSList * ms_filter_find_neighbours(MSFilter *me); MS2_PUBLIC MSList * ms_filter_find_neighbours(MSFilter *me);
/** /**
* Destroy a filter object. * Destroy a filter object.
* *
* @param f A MSFilter object. * @param f A MSFilter object.
* *
*/ */
void ms_filter_destroy(MSFilter *f); MS2_PUBLIC void ms_filter_destroy(MSFilter *f);
/** /**
* Initialize a MSConnectionHelper. * Initialize a MSConnectionHelper.
* *
* @param h A MSConnectionHelper, usually (but not necessarily) on stack * @param h A MSConnectionHelper, usually (but not necessarily) on stack
* *
**/ **/
void ms_connection_helper_start(MSConnectionHelper *h); MS2_PUBLIC void ms_connection_helper_start(MSConnectionHelper *h);
/** /**
* \brief Enter a MSFilter to be connected into the MSConnectionHelper obje ct. * \brief Enter a MSFilter to be connected into the MSConnectionHelper obje ct.
* *
* This functions enters a MSFilter to be connected into the MSConnectionHe lper * This functions enters a MSFilter to be connected into the MSConnectionHe lper
* object and connects it to the last entered if not the first one. * object and connects it to the last entered if not the first one.
* The MSConnectionHelper is useful to reduce the amount of code necessary to create graphs in case * The MSConnectionHelper is useful to reduce the amount of code necessary to create graphs in case
* the connections are made in an ordered manner and some filters are prese nt conditionally in graphs. * the connections are made in an ordered manner and some filters are prese nt conditionally in graphs.
* For example, instead of writing * For example, instead of writing
* \code * \code
skipping to change at line 431 skipping to change at line 431
* if (my_condition) ms_connection_helper_link(&h,f2,1,0); * if (my_condition) ms_connection_helper_link(&h,f2,1,0);
* \endcode * \endcode
* *
* @param h a connection helper * @param h a connection helper
* @param f a MSFilter * @param f a MSFilter
* @param inpin an input pin number with which the MSFilter needs to connec t to previously entered MSFilter * @param inpin an input pin number with which the MSFilter needs to connec t to previously entered MSFilter
* @param outpin an output pin number with which the MSFilter needs to be c onnected to the next entered MSFilter * @param outpin an output pin number with which the MSFilter needs to be c onnected to the next entered MSFilter
* *
* Returns: the return value of ms_filter_link() that is called internally to this function. * Returns: the return value of ms_filter_link() that is called internally to this function.
**/ **/
int ms_connection_helper_link(MSConnectionHelper *h, MSFilter *f, int inpin , int outpin); MS2_PUBLIC int ms_connection_helper_link(MSConnectionHelper *h, MSFilter *f , int inpin, int outpin);
/** /**
* \brief Enter a MSFilter to be disconnected into the MSConnectionHelper o bject. * \brief Enter a MSFilter to be disconnected into the MSConnectionHelper o bject.
* Process exactly the same way as ms_connection_helper_link() but calls ms _filter_unlink() on the * Process exactly the same way as ms_connection_helper_link() but calls ms _filter_unlink() on the
* entered filters. * entered filters.
**/ **/
int ms_connection_helper_unlink(MSConnectionHelper *h, MSFilter *f, int inp in, int outpin); MS2_PUBLIC int ms_connection_helper_unlink(MSConnectionHelper *h, MSFilter *f, int inpin, int outpin);
/** /**
* \brief Enable processing time measurements statistics for filters. * \brief Enable processing time measurements statistics for filters.
* *
**/ **/
void ms_filter_enable_statistics(bool_t enabled); MS2_PUBLIC void ms_filter_enable_statistics(bool_t enabled);
/** /**
* \brief Reset processing time statistics for filters. * \brief Reset processing time statistics for filters.
* *
**/ **/
void ms_filter_reset_statistics(void); MS2_PUBLIC void ms_filter_reset_statistics(void);
/** /**
* \brief Retrieves statistics for running filters. * \brief Retrieves statistics for running filters.
* Returns a list of MSFilterStats * Returns a list of MSFilterStats
**/ **/
const MSList * ms_filter_get_statistics(void); MS2_PUBLIC const MSList * ms_filter_get_statistics(void);
/** /**
* \brief Logs runtime statistics for running filters. * \brief Logs runtime statistics for running filters.
* *
**/ **/
void ms_filter_log_statistics(void); MS2_PUBLIC void ms_filter_log_statistics(void);
/* I define the id taking the lower bits of the address of the MSFilterDesc object, /* I define the id taking the lower bits of the address of the MSFilterDesc object,
the method index (_cnt_) and the argument size */ the method index (_cnt_) and the argument size */
/* I hope using this to avoid type mismatch (calling a method on the wrong filter)*/ /* I hope using this to avoid type mismatch (calling a method on the wrong filter)*/
#define MS_FILTER_METHOD_ID(_id_,_cnt_,_argsize_) \ #define MS_FILTER_METHOD_ID(_id_,_cnt_,_argsize_) \
( (((unsigned long)(_id_)) & 0xFFFF)<<16 | (_cnt_<<8) | (_argsize_ & 0xFF )) ( (((unsigned long)(_id_)) & 0xFFFF)<<16 | (_cnt_<<8) | (_argsize_ & 0xFF ))
#define MS_FILTER_METHOD(_id_,_count_,_argtype_) \ #define MS_FILTER_METHOD(_id_,_count_,_argtype_) \
MS_FILTER_METHOD_ID(_id_,_count_,sizeof(_argtype_)) MS_FILTER_METHOD_ID(_id_,_count_,sizeof(_argtype_))
 End of changes. 25 change blocks. 
25 lines changed or deleted 25 lines changed or added


 msqueue.h   msqueue.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 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"
/* for the moment these are stupid queues limited to one element*/ /* 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
{ {
skipping to change at line 66 skipping to change at line 67
static inline bool_t ms_queue_empty(MSQueue *q){ static inline bool_t ms_queue_empty(MSQueue *q){
return qempty(&q->q); return qempty(&q->q);
} }
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
{ {
#endif #endif
/*yes these functions need to be public for plugins to work*/
/*init a queue on stack*/ /*init a queue on stack*/
void ms_queue_init(MSQueue *q); MS2_PUBLIC void ms_queue_init(MSQueue *q);
void ms_queue_flush(MSQueue *q); MS2_PUBLIC void ms_queue_flush(MSQueue *q);
void ms_queue_destroy(MSQueue *q); MS2_PUBLIC void ms_queue_destroy(MSQueue *q);
#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) (m)->reserved2=((m)->reserved2|bit)
#define mblk_get_marker_info(m) ((m)->reserved2&0x1) #define mblk_get_marker_info(m) ((m)->reserved2&0x1)
#define mblk_set_rate(m,bits) (m)->reserved2=((m)->reserved2|(bits) <<1) #define mblk_set_rate(m,bits) (m)->reserved2=((m)->reserved2|(bits) <<1)
#define mblk_get_rate(m) (((m)->reserved2>>1)&0x3) #define mblk_get_rate(m) (((m)->reserved2>>1)&0x3)
#define mblk_set_payload_type(m,bits) (m)->reserved2=((m)->reserved2|(bits< <3)) #define mblk_set_payload_type(m,bits) (m)->reserved2=((m)->reserved2|(bits< <3))
#define mblk_get_payload_type(m) (((m)->reserved2>>3)&0x7F) #define mblk_get_payload_type(m) (((m)->reserved2>>3)&0x7F)
#define mblk_set_precious_flag(m,bit) (m)->reserved2=(m)->reserved2|((bi t & 0x1)<<10) /*use to prevent mirroring*/ #define mblk_set_precious_flag(m,bit) (m)->reserved2=(m)->reserved2|((bi t & 0x1)<<10) /*use to prevent mirroring*/
skipping to change at line 97 skipping to change at line 100
#define mblk_get_video_orientation(m) (((m)->reserved2 & (1<<11)) ? MS_VID EO_PORTRAIT : MS_VIDEO_LANDSCAPE) #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 */
MSBufferizer * ms_bufferizer_new(void); MS2_PUBLIC MSBufferizer * ms_bufferizer_new(void);
/*initialize in memory */ /*initialize in memory */
void ms_bufferizer_init(MSBufferizer *obj); void ms_bufferizer_init(MSBufferizer *obj);
void ms_bufferizer_put(MSBufferizer *obj, mblk_t *m); MS2_PUBLIC void ms_bufferizer_put(MSBufferizer *obj, mblk_t *m);
/* put every mblk_t from q, into the bufferizer */ /* put every mblk_t from q, into the bufferizer */
void ms_bufferizer_put_from_queue(MSBufferizer *obj, MSQueue *q); MS2_PUBLIC void ms_bufferizer_put_from_queue(MSBufferizer *obj, MSQueue *q) ;
int ms_bufferizer_read(MSBufferizer *obj, uint8_t *data, int datalen); MS2_PUBLIC int ms_bufferizer_read(MSBufferizer *obj, uint8_t *data, int dat alen);
/* returns the number of bytes available in the bufferizer*/ /* returns the number of bytes available in the bufferizer*/
static inline int ms_bufferizer_get_avail(MSBufferizer *obj){ static inline int ms_bufferizer_get_avail(MSBufferizer *obj){
return obj->size; return obj->size;
} }
void ms_bufferizer_skip_bytes(MSBufferizer *obj, int bytes); MS2_PUBLIC void ms_bufferizer_skip_bytes(MSBufferizer *obj, int bytes);
/* purge all data pending in the bufferizer */ /* purge all data pending in the bufferizer */
void ms_bufferizer_flush(MSBufferizer *obj); MS2_PUBLIC void ms_bufferizer_flush(MSBufferizer *obj);
void ms_bufferizer_uninit(MSBufferizer *obj); void ms_bufferizer_uninit(MSBufferizer *obj);
void ms_bufferizer_destroy(MSBufferizer *obj); MS2_PUBLIC void ms_bufferizer_destroy(MSBufferizer *obj);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif
 End of changes. 12 change blocks. 
10 lines changed or deleted 13 lines changed or added


 mssndcard.h   mssndcard.h 
skipping to change at line 157 skipping to change at line 157
* @defgroup mediastreamer2_soundcardmanager Sound Card Manager API * @defgroup mediastreamer2_soundcardmanager Sound Card Manager API
* @ingroup mediastreamer2_soundcard * @ingroup mediastreamer2_soundcard
* @{ * @{
*/ */
/** /**
* Retreive a sound card manager object. * Retreive a sound card manager object.
* *
* Returns: MSSndCardManager if successfull, NULL otherwise. * Returns: MSSndCardManager if successfull, NULL otherwise.
*/ */
MSSndCardManager * ms_snd_card_manager_get(void); MS2_PUBLIC MSSndCardManager * ms_snd_card_manager_get(void);
/** /**
* Destroy a sound card manager object. * Destroy a sound card manager object.
* *
*/ */
void ms_snd_card_manager_destroy(void); MS2_PUBLIC void ms_snd_card_manager_destroy(void);
/** /**
* Retreive a sound card object based on its name. * Retreive a sound card object based on its name.
* *
* @param m A sound card manager containing sound cards. * @param m A sound card manager containing sound cards.
* @param id A name for card to search. * @param id A name for card to search.
* *
* Returns: MSSndCard if successfull, NULL otherwise. * Returns: MSSndCard if successfull, NULL otherwise.
*/ */
MSSndCard * ms_snd_card_manager_get_card(MSSndCardManager *m, const char *i d); MS2_PUBLIC MSSndCard * ms_snd_card_manager_get_card(MSSndCardManager *m, co nst char *id);
/** /**
* Retreive the default sound card object. * Retreive the default sound card object.
* *
* @param m A sound card manager containing sound cards. * @param m A sound card manager containing sound cards.
* *
* Returns: MSSndCard if successfull, NULL otherwise. * Returns: MSSndCard if successfull, NULL otherwise.
*/ */
MSSndCard * ms_snd_card_manager_get_default_card(MSSndCardManager *m); MS2_PUBLIC MSSndCard * ms_snd_card_manager_get_default_card(MSSndCardManage r *m);
/** /**
* Retreive the default capture sound card object. * Retreive the default capture sound card object.
* *
* @param m A sound card manager containing sound cards. * @param m A sound card manager containing sound cards.
* *
* Returns: MSSndCard if successfull, NULL otherwise. * Returns: MSSndCard if successfull, NULL otherwise.
*/ */
MSSndCard * ms_snd_card_manager_get_default_capture_card(MSSndCardManager * m); MS2_PUBLIC MSSndCard * ms_snd_card_manager_get_default_capture_card(MSSndCa rdManager *m);
/** /**
* Retreive the default playback sound card object. * Retreive the default playback sound card object.
* *
* @param m A sound card manager containing sound cards. * @param m A sound card manager containing sound cards.
* *
* Returns: MSSndCard if successfull, NULL otherwise. * Returns: MSSndCard if successfull, NULL otherwise.
*/ */
MSSndCard * ms_snd_card_manager_get_default_playback_card(MSSndCardManager *m); MS2_PUBLIC MSSndCard * ms_snd_card_manager_get_default_playback_card(MSSndC ardManager *m);
/** /**
* Retreive the list of sound card objects. * Retreive the list of sound card objects.
* *
* @param m A sound card manager containing sound cards. * @param m A sound card manager containing sound cards.
* *
* Returns: MSList of cards if successfull, NULL otherwise. * Returns: MSList of cards if successfull, NULL otherwise.
*/ */
const MSList * ms_snd_card_manager_get_list(MSSndCardManager *m); MS2_PUBLIC const MSList * ms_snd_card_manager_get_list(MSSndCardManager *m) ;
/** /**
* Add a sound card object in a sound card manager's list. * Add a sound card object in a sound card manager's list.
* *
* @param m A sound card manager containing sound cards. * @param m A sound card manager containing sound cards.
* @param c A sound card object. * @param c A sound card object.
* *
*/ */
void ms_snd_card_manager_add_card(MSSndCardManager *m, MSSndCard *c); MS2_PUBLIC void ms_snd_card_manager_add_card(MSSndCardManager *m, MSSndCard *c);
/** /**
* Register a sound card description in a sound card manager. * Register a sound card description in a sound card manager.
* *
* @param m A sound card manager containing sound cards. * @param m A sound card manager containing sound cards.
* @param desc A sound card description object. * @param desc A sound card description object.
* *
*/ */
void ms_snd_card_manager_register_desc(MSSndCardManager *m, MSSndCardDesc * desc); MS2_PUBLIC void ms_snd_card_manager_register_desc(MSSndCardManager *m, MSSn dCardDesc *desc);
/** /**
* Ask all registered MSSndCardDesc to re-detect their soundcards. * Ask all registered MSSndCardDesc to re-detect their soundcards.
* @param m The sound card manager. * @param m The sound card manager.
**/ **/
void ms_snd_card_manager_reload(MSSndCardManager *m); MS2_PUBLIC void ms_snd_card_manager_reload(MSSndCardManager *m);
/** @} */ /** @} */
/** /**
* @defgroup mediastreamer2_soundcardfilter Sound Card Filter API * @defgroup mediastreamer2_soundcardfilter Sound Card Filter API
* @ingroup mediastreamer2_soundcard * @ingroup mediastreamer2_soundcard
* @{ * @{
*/ */
/** /**
* Create an INPUT filter based on the selected sound card. * Create an INPUT filter based on the selected sound card.
* *
* @param obj A sound card object. * @param obj A sound card object.
* *
* Returns: A MSFilter if successfull, NULL otherwise. * Returns: A MSFilter if successfull, NULL otherwise.
*/ */
struct _MSFilter * ms_snd_card_create_reader(MSSndCard *obj); MS2_PUBLIC struct _MSFilter * ms_snd_card_create_reader(MSSndCard *obj);
/** /**
* Create an OUPUT filter based on the selected sound card. * Create an OUPUT filter based on the selected sound card.
* *
* @param obj A sound card object. * @param obj A sound card object.
* *
* Returns: A MSFilter if successfull, NULL otherwise. * Returns: A MSFilter if successfull, NULL otherwise.
*/ */
struct _MSFilter * ms_snd_card_create_writer(MSSndCard *obj); MS2_PUBLIC struct _MSFilter * ms_snd_card_create_writer(MSSndCard *obj);
/** /**
* Create a new sound card object. * Create a new sound card object.
* *
* @param desc A sound card description object. * @param desc A sound card description object.
* *
* Returns: MSSndCard if successfull, NULL otherwise. * Returns: MSSndCard if successfull, NULL otherwise.
*/ */
MSSndCard * ms_snd_card_new(MSSndCardDesc *desc); MS2_PUBLIC MSSndCard * ms_snd_card_new(MSSndCardDesc *desc);
/** /**
* Create a new sound card object. * Create a new sound card object.
* *
* @param desc A sound card description object. * @param desc A sound card description object.
* @param card mame * @param card mame
* *
* Returns: MSSndCard if successfull, NULL otherwise. * Returns: MSSndCard if successfull, NULL otherwise.
*/ */
MSSndCard * ms_snd_card_new_with_name(MSSndCardDesc *desc,const char * name); MS2_PUBLIC MSSndCard * ms_snd_card_new_with_name(MSSndCardDesc *desc,const char* name);
/** /**
* Destroy sound card object. * Destroy sound card object.
* *
* @param obj A MSSndCard object. * @param obj A MSSndCard object.
*/ */
void ms_snd_card_destroy(MSSndCard *obj); MS2_PUBLIC void ms_snd_card_destroy(MSSndCard *obj);
/** /**
* Duplicate a sound card object. * Duplicate a sound card object.
* *
* This helps to open several time a sound card. * This helps to open several time a sound card.
* *
* @param card A sound card object. * @param card A sound card object.
* *
* Returns: MSSndCard if successfull, NULL otherwise. * Returns: MSSndCard if successfull, NULL otherwise.
*/ */
MSSndCard * ms_snd_card_dup(MSSndCard *card); MS2_PUBLIC MSSndCard * ms_snd_card_dup(MSSndCard *card);
/** /**
* Retreive a sound card's driver type string. * Retreive a sound card's driver type string.
* *
* Internal driver types are either: "OSS, ALSA, WINSND, PASND, CA" * Internal driver types are either: "OSS, ALSA, WINSND, PASND, CA"
* *
* @param obj A sound card object. * @param obj A sound card object.
* *
* Returns: a string if successfull, NULL otherwise. * Returns: a string if successfull, NULL otherwise.
*/ */
const char *ms_snd_card_get_driver_type(const MSSndCard *obj); MS2_PUBLIC const char *ms_snd_card_get_driver_type(const MSSndCard *obj);
/** /**
* Retreive a sound card's name. * Retreive a sound card's name.
* *
* @param obj A sound card object. * @param obj A sound card object.
* *
* Returns: a string if successfull, NULL otherwise. * Returns: a string if successfull, NULL otherwise.
*/ */
const char *ms_snd_card_get_name(const MSSndCard *obj); MS2_PUBLIC const char *ms_snd_card_get_name(const MSSndCard *obj);
/** /**
* Retreive sound card's name ($driver_type: $name). * Retreive sound card's name ($driver_type: $name).
* *
* @param obj A sound card object. * @param obj A sound card object.
* *
* Returns: A string if successfull, NULL otherwise. * Returns: A string if successfull, NULL otherwise.
*/ */
const char *ms_snd_card_get_string_id(MSSndCard *obj); MS2_PUBLIC const char *ms_snd_card_get_string_id(MSSndCard *obj);
/** /**
* Retreive sound card's capabilities. * Retreive sound card's capabilities.
* *
* <PRE> * <PRE>
* MS_SND_CARD_CAP_CAPTURE * MS_SND_CARD_CAP_CAPTURE
* MS_SND_CARD_CAP_PLAYBACK * MS_SND_CARD_CAP_PLAYBACK
* MS_SND_CARD_CAP_CAPTURE|MS_SND_CARD_CAP_PLAYBACK * MS_SND_CARD_CAP_CAPTURE|MS_SND_CARD_CAP_PLAYBACK
* </PRE> * </PRE>
* *
* @param obj A sound card object. * @param obj A sound card object.
* *
* Returns: A unsigned int if successfull, 0 otherwise. * Returns: A unsigned int if successfull, 0 otherwise.
*/ */
unsigned int ms_snd_card_get_capabilities(const MSSndCard *obj); MS2_PUBLIC unsigned int ms_snd_card_get_capabilities(const MSSndCard *obj);
/** /**
* Set some mixer level value. * Set some mixer level value.
* *
* <PRE> * <PRE>
* MS_SND_CARD_MASTER, * MS_SND_CARD_MASTER,
* MS_SND_CARD_PLAYBACK, * MS_SND_CARD_PLAYBACK,
* MS_SND_CARD_CAPTURE * MS_SND_CARD_CAPTURE
* </PRE> * </PRE>
* Note: not implemented on all sound card filters. * Note: not implemented on all sound card filters.
* *
* @param obj A sound card object. * @param obj A sound card object.
* @param e A sound card mixer object. * @param e A sound card mixer object.
* @param percent A volume level. * @param percent A volume level.
* *
*/ */
void ms_snd_card_set_level(MSSndCard *obj, MSSndCardMixerElem e, int percen t); MS2_PUBLIC void ms_snd_card_set_level(MSSndCard *obj, MSSndCardMixerElem e, int percent);
/** /**
* Get some mixer level value. * Get some mixer level value.
* *
* <PRE> * <PRE>
* MS_SND_CARD_MASTER, * MS_SND_CARD_MASTER,
* MS_SND_CARD_PLAYBACK, * MS_SND_CARD_PLAYBACK,
* MS_SND_CARD_CAPTURE * MS_SND_CARD_CAPTURE
* </PRE> * </PRE>
* Note: not implemented on all sound card filters. * Note: not implemented on all sound card filters.
* *
* @param obj A sound card object. * @param obj A sound card object.
* @param e A sound card mixer object. * @param e A sound card mixer object.
* *
* Returns: A int if successfull, <0 otherwise. * Returns: A int if successfull, <0 otherwise.
*/ */
int ms_snd_card_get_level(MSSndCard *obj, MSSndCardMixerElem e); MS2_PUBLIC int ms_snd_card_get_level(MSSndCard *obj, MSSndCardMixerElem e);
/** /**
* Set some source for capture. * Set some source for capture.
* *
* <PRE> * <PRE>
* MS_SND_CARD_MIC, * MS_SND_CARD_MIC,
* MS_SND_CARD_LINE * MS_SND_CARD_LINE
* </PRE> * </PRE>
* Note: not implemented on all sound card filters. * Note: not implemented on all sound card filters.
* *
* @param obj A sound card object. * @param obj A sound card object.
* @param c A sound card capture value. * @param c A sound card capture value.
* *
* Returns: A int if successfull, 0 otherwise. * Returns: A int if successfull, 0 otherwise.
*/ */
void ms_snd_card_set_capture(MSSndCard *obj, MSSndCardCapture c); MS2_PUBLIC void ms_snd_card_set_capture(MSSndCard *obj, MSSndCardCapture c) ;
/** /**
* Set some mixer control. * Set some mixer control.
* *
* <PRE> * <PRE>
* MS_SND_CARD_MASTER_MUTE, -> 0: unmute, 1: mute * MS_SND_CARD_MASTER_MUTE, -> 0: unmute, 1: mute
* MS_SND_CARD_PLAYBACK_MUTE, -> 0: unmute, 1: mute * MS_SND_CARD_PLAYBACK_MUTE, -> 0: unmute, 1: mute
* MS_SND_CARD_CAPTURE_MUTE -> 0: unmute, 1: mute * MS_SND_CARD_CAPTURE_MUTE -> 0: unmute, 1: mute
* </PRE> * </PRE>
* Note: not implemented on all sound card filters. * Note: not implemented on all sound card filters.
* *
* @param obj A sound card object. * @param obj A sound card object.
* @param e A sound card control object. * @param e A sound card control object.
* @param percent A value for control. * @param percent A value for control.
* *
* Returns: 0 if successfull, <0 otherwise. * Returns: 0 if successfull, <0 otherwise.
*/ */
int ms_snd_card_set_control(MSSndCard *obj, MSSndCardControlElem e, int val ); MS2_PUBLIC int ms_snd_card_set_control(MSSndCard *obj, MSSndCardControlElem e, int val);
/** /**
* Get some mixer control. * Get some mixer control.
* *
* <PRE> * <PRE>
* MS_SND_CARD_MASTER_MUTE, -> return 0: unmute, 1: mute * MS_SND_CARD_MASTER_MUTE, -> return 0: unmute, 1: mute
* MS_SND_CARD_PLAYBACK_MUTE, -> return 0: unmute, 1: mute * MS_SND_CARD_PLAYBACK_MUTE, -> return 0: unmute, 1: mute
* MS_SND_CARD_CAPTURE_MUTE -> return 0: unmute, 1: mute * MS_SND_CARD_CAPTURE_MUTE -> return 0: unmute, 1: mute
* </PRE> * </PRE>
* Note: not implemented on all sound card filters. * Note: not implemented on all sound card filters.
* *
* @param obj A sound card object. * @param obj A sound card object.
* @param e A sound card mixer object. * @param e A sound card mixer object.
* *
* Returns: A int if successfull, <0 otherwise. * Returns: A int if successfull, <0 otherwise.
*/ */
int ms_snd_card_get_control(MSSndCard *obj, MSSndCardControlElem e); MS2_PUBLIC int ms_snd_card_get_control(MSSndCard *obj, MSSndCardControlElem e);
/** /**
* 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.
*/ */
MSSndCard * ms_alsa_card_new_custom(const char *pcmdev, const char *mixdev) ; MS2_PUBLIC MSSndCard * ms_alsa_card_new_custom(const char *pcmdev, const ch ar *mixdev);
/** @} */ /** @} */
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
/** @} */ /** @} */
#endif #endif
 End of changes. 26 change blocks. 
26 lines changed or deleted 26 lines changed or added


 msticker.h   msticker.h 
skipping to change at line 83 skipping to change at line 83
#ifdef __cplusplus #ifdef __cplusplus
extern "C"{ extern "C"{
#endif #endif
/** /**
* Create a ticker that will be used to start * Create a ticker that will be used to start
* and stop a graph. * and stop a graph.
* *
* Returns: MSTicker * if successfull, NULL otherwise. * Returns: MSTicker * if successfull, NULL otherwise.
*/ */
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)
**/ **/
void ms_ticker_set_name(MSTicker *ticker, const char *name); MS2_PUBLIC void ms_ticker_set_name(MSTicker *ticker, const char *name);
/** /**
* 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.
*/ */
int ms_ticker_attach(MSTicker *ticker,MSFilter *f); MS2_PUBLIC int ms_ticker_attach(MSTicker *ticker,MSFilter *f);
/** /**
* Dettach a chain of filters to a ticker. * Dettach a chain of filters to a ticker.
* The processing chain will no more be executed. * The processing chain will no more be executed.
* *
* @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.
*/ */
int ms_ticker_detach(MSTicker *ticker,MSFilter *f); MS2_PUBLIC int ms_ticker_detach(MSTicker *ticker,MSFilter *f);
/** /**
* Destroy a ticker. * Destroy a ticker.
* *
* @param ticker A #MSTicker object. * @param ticker A #MSTicker object.
* *
*/ */
void ms_ticker_destroy(MSTicker *ticker); MS2_PUBLIC void ms_ticker_destroy(MSTicker *ticker);
/** /**
* Override MSTicker's time function. * Override MSTicker's time function.
* This can be used to control the ticker from an external time provider, f or example the * This can be used to control the ticker from an external time provider, f or example the
* clock of a sound card. * clock of a sound card.
* *
* @param ticker A #MSTicker object. * @param ticker A #MSTicker object.
* @param func A replacement method for calculating "current time" * @param func A replacement method for calculating "current time"
* @param user_data Any pointer to user private data. * @param user_data Any pointer to user private data.
*/ */
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.
*/ */
void ms_ticker_print_graphs(MSTicker *ticker); MS2_PUBLIC void ms_ticker_print_graphs(MSTicker *ticker);
/* private functions:*/ /* private functions:*/
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
/** @} */ /** @} */
#endif #endif
 End of changes. 7 change blocks. 
7 lines changed or deleted 7 lines changed or added


 msvideo.h   msvideo.h 
skipping to change at line 189 skipping to change at line 189
uint8_t *planes[4]; /*we usually use 3 planes, 4th is for compatibil ity */ uint8_t *planes[4]; /*we usually use 3 planes, 4th is for compatibil ity */
int strides[4]; /*with ffmpeg's swscale.h */ int strides[4]; /*with ffmpeg's swscale.h */
}MSPicture; }MSPicture;
typedef struct _MSPicture YuvBuf; /*for backward compatibility*/ typedef struct _MSPicture YuvBuf; /*for backward compatibility*/
#ifdef __cplusplus #ifdef __cplusplus
extern "C"{ extern "C"{
#endif #endif
int ms_pix_fmt_to_ffmpeg(MSPixFmt fmt); MS2_PUBLIC int ms_pix_fmt_to_ffmpeg(MSPixFmt fmt);
MSPixFmt ffmpeg_pix_fmt_to_ms(int fmt); MS2_PUBLIC MSPixFmt ffmpeg_pix_fmt_to_ms(int fmt);
MSPixFmt ms_fourcc_to_pix_fmt(uint32_t fourcc); MS2_PUBLIC MSPixFmt ms_fourcc_to_pix_fmt(uint32_t fourcc);
void ms_ffmpeg_check_init(void); MS2_PUBLIC void ms_ffmpeg_check_init(void);
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);
int ms_yuv_buf_init_from_mblk_with_size(MSPicture *buf, mblk_t *m, int w, i MS2_PUBLIC int ms_yuv_buf_init_from_mblk_with_size(MSPicture *buf, mblk_t *
nt h); m, int w, int h);
int ms_picture_init_from_mblk_with_size(MSPicture *buf, mblk_t *m, MSPixFmt MS2_PUBLIC int ms_picture_init_from_mblk_with_size(MSPicture *buf, mblk_t *
fmt, int w, int h); m, MSPixFmt fmt, int w, int h);
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);
void ms_yuv_buf_copy(uint8_t *src_planes[], const int src_strides[], 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);
void ms_yuv_buf_mirror(YuvBuf *buf); MS2_PUBLIC void ms_yuv_buf_mirror(YuvBuf *buf);
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);
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);
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);
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]);
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){
skipping to change at line 235 skipping to change at line 235
} }
static inline MSVideoSize ms_video_size_area_min(MSVideoSize vs1, MSVideoSi ze vs2){ static inline MSVideoSize ms_video_size_area_min(MSVideoSize vs1, MSVideoSi ze vs2){
return ms_video_size_area_greater_than(vs1,vs2) ? vs2 : vs1; return ms_video_size_area_greater_than(vs1,vs2) ? vs2 : vs1;
} }
static inline bool_t ms_video_size_equal(MSVideoSize vs1, MSVideoSize vs2){ static inline bool_t ms_video_size_equal(MSVideoSize vs1, MSVideoSize vs2){
return vs1.width==vs2.width && vs1.height==vs2.height; return vs1.width==vs2.width && vs1.height==vs2.height;
} }
MSVideoSize ms_video_size_get_just_lower_than(MSVideoSize vs); MS2_PUBLIC MSVideoSize ms_video_size_get_just_lower_than(MSVideoSize vs);
static inline MSVideoOrientation ms_video_size_get_orientation(MSVideoSize vs){ static inline MSVideoOrientation ms_video_size_get_orientation(MSVideoSize vs){
return vs.width>=vs.height ? MS_VIDEO_LANDSCAPE : MS_VIDEO_PORTRAIT; return vs.width>=vs.height ? MS_VIDEO_LANDSCAPE : MS_VIDEO_PORTRAIT;
} }
static inline MSVideoSize ms_video_size_change_orientation(MSVideoSize vs, MSVideoOrientation o){ static inline MSVideoSize ms_video_size_change_orientation(MSVideoSize vs, MSVideoOrientation o){
MSVideoSize ret; MSVideoSize ret;
if (o!=ms_video_size_get_orientation(vs)){ if (o!=ms_video_size_get_orientation(vs)){
ret.width=vs.height; ret.width=vs.height;
ret.height=vs.width; ret.height=vs.width;
skipping to change at line 266 skipping to change at line 266
struct _MSScalerDesc { struct _MSScalerDesc {
MSScalerContext * (*create_context)(int src_w, int src_h, MSPixFmt s rc_fmt, MSScalerContext * (*create_context)(int src_w, int src_h, MSPixFmt s rc_fmt,
int dst_w, int dst_h, MSPixFmt dst _fmt, int flags); int dst_w, int dst_h, MSPixFmt dst _fmt, int flags);
int (*context_process)(MSScalerContext *ctx, uint8_t *src[], int src _strides[], uint8_t *dst[], int dst_strides[]); int (*context_process)(MSScalerContext *ctx, uint8_t *src[], int src _strides[], uint8_t *dst[], int dst_strides[]);
void (*context_free)(MSScalerContext *ctx); void (*context_free)(MSScalerContext *ctx);
}; };
typedef struct _MSScalerDesc MSScalerDesc; typedef struct _MSScalerDesc MSScalerDesc;
MSScalerContext *ms_scaler_create_context(int src_w, int src_h, MSPixFmt sr c_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);
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[]);
void ms_scaler_context_free(MSScalerContext *ctx); MS2_PUBLIC void ms_scaler_context_free(MSScalerContext *ctx);
void ms_video_set_scaler_impl(MSScalerDesc *desc); MS2_PUBLIC void ms_video_set_scaler_impl(MSScalerDesc *desc);
#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. 8 change blocks. 
21 lines changed or deleted 22 lines changed or added


 mswebcam.h   mswebcam.h 
skipping to change at line 94 skipping to change at line 94
#ifdef __cplusplus #ifdef __cplusplus
extern "C"{ extern "C"{
#endif #endif
/** /**
* Retreive a webcam manager object. * Retreive a webcam manager object.
* *
* Returns: MSWebCamManager if successfull, NULL otherwise. * Returns: MSWebCamManager if successfull, NULL otherwise.
*/ */
MSWebCamManager * ms_web_cam_manager_get(void); MS2_PUBLIC MSWebCamManager * ms_web_cam_manager_get(void);
/** /**
* Destroy the webcam manager object. * Destroy the webcam manager object.
* *
*/ */
void ms_web_cam_manager_destroy(void); MS2_PUBLIC void ms_web_cam_manager_destroy(void);
/** /**
* Retreive a webcam object based on its name. * Retreive a webcam object based on its name.
* *
* @param m A webcam manager containing webcam. * @param m A webcam manager containing webcam.
* @param id A name for card to search. * @param id A name for card to search.
* *
* Returns: MSWebCam if successfull, NULL otherwise. * Returns: MSWebCam if successfull, NULL otherwise.
*/ */
MSWebCam * ms_web_cam_manager_get_cam(MSWebCamManager *m, const char *id); MS2_PUBLIC MSWebCam * ms_web_cam_manager_get_cam(MSWebCamManager *m, const char *id);
/** /**
* Retreive the default webcam object. * Retreive the default webcam object.
* *
* @param m A webcam manager containing webcams. * @param m A webcam manager containing webcams.
* *
* Returns: MSWebCam if successfull, NULL otherwise. * Returns: MSWebCam if successfull, NULL otherwise.
*/ */
MSWebCam * ms_web_cam_manager_get_default_cam(MSWebCamManager *m); MS2_PUBLIC MSWebCam * ms_web_cam_manager_get_default_cam(MSWebCamManager *m );
/** /**
* Retreive the list of webcam objects. * Retreive the list of webcam objects.
* *
* @param m A webcam manager containing webcams. * @param m A webcam manager containing webcams.
* *
* Returns: MSList of cards if successfull, NULL otherwise. * Returns: MSList of cards if successfull, NULL otherwise.
*/ */
const MSList * ms_web_cam_manager_get_list(MSWebCamManager *m); MS2_PUBLIC const MSList * ms_web_cam_manager_get_list(MSWebCamManager *m);
/** /**
* Add a webcam object in a webcam manager's list. * Add a webcam object in a webcam manager's list.
* *
* @param m A webcam manager containing webcams * @param m A webcam manager containing webcams
* @param c A web cam object. * @param c A web cam object.
* *
*/ */
void ms_web_cam_manager_add_cam(MSWebCamManager *m, MSWebCam *c); MS2_PUBLIC void ms_web_cam_manager_add_cam(MSWebCamManager *m, MSWebCam *c) ;
/** /**
* Add a webcam object on top of list of the webcam manager's list. * Add a webcam object on top of list of the webcam manager's list.
* *
* @param m A webcam manager containing webcams * @param m A webcam manager containing webcams
* @param c A web cam object. * @param c A web cam object.
* *
*/ */
void ms_web_cam_manager_prepend_cam(MSWebCamManager *m, MSWebCam *c); MS2_PUBLIC void ms_web_cam_manager_prepend_cam(MSWebCamManager *m, MSWebCam *c);
/** /**
* Register a webcam descriptor in a webcam manager. * Register a webcam descriptor in a webcam manager.
* *
* @param m A webcam manager containing sound cards. * @param m A webcam manager containing sound cards.
* @param desc A webcam descriptor object. * @param desc A webcam descriptor object.
* *
*/ */
void ms_web_cam_manager_register_desc(MSWebCamManager *m, MSWebCamDesc *des c); MS2_PUBLIC void ms_web_cam_manager_register_desc(MSWebCamManager *m, MSWebC amDesc *desc);
/** /**
* Ask all registered MSWebCamDesc to detect the webcams again. * Ask all registered MSWebCamDesc to detect the webcams again.
* *
* @param m A webcam manager * @param m A webcam manager
**/ **/
void ms_web_cam_manager_reload(MSWebCamManager *m); MS2_PUBLIC void ms_web_cam_manager_reload(MSWebCamManager *m);
/** /**
* Create an INPUT filter based on the selected camera. * Create an INPUT filter based on the selected camera.
* *
* @param obj A webcam object. * @param obj A webcam object.
* *
* Returns: A MSFilter if successfull, NULL otherwise. * Returns: A MSFilter if successfull, NULL otherwise.
*/ */
struct _MSFilter * ms_web_cam_create_reader(MSWebCam *obj); MS2_PUBLIC struct _MSFilter * ms_web_cam_create_reader(MSWebCam *obj);
/** /**
* Create a new webcam object. * Create a new webcam object.
* *
* @param desc A webcam description object. * @param desc A webcam description object.
* *
* Returns: MSWebCam if successfull, NULL otherwise. * Returns: MSWebCam if successfull, NULL otherwise.
*/ */
MSWebCam * ms_web_cam_new(MSWebCamDesc *desc); MS2_PUBLIC MSWebCam * ms_web_cam_new(MSWebCamDesc *desc);
/** /**
* Destroy webcam object. * Destroy webcam object.
* *
* @param obj A MSWebCam object. * @param obj A MSWebCam object.
*/ */
void ms_web_cam_destroy(MSWebCam *obj); MS2_PUBLIC void ms_web_cam_destroy(MSWebCam *obj);
/** /**
* Retreive a webcam's driver type string. * Retreive a webcam's driver type string.
* *
* Internal driver types are either: "V4L V4LV2" * Internal driver types are either: "V4L V4LV2"
* *
* @param obj A webcam object. * @param obj A webcam object.
* *
* Returns: a string if successfull, NULL otherwise. * Returns: a string if successfull, NULL otherwise.
*/ */
const char *ms_web_cam_get_driver_type(const MSWebCam *obj); MS2_PUBLIC const char *ms_web_cam_get_driver_type(const MSWebCam *obj);
/** /**
* Retreive a webcam's name. * Retreive a webcam's name.
* *
* @param obj A webcam object. * @param obj A webcam object.
* *
* Returns: a string if successfull, NULL otherwise. * Returns: a string if successfull, NULL otherwise.
*/ */
const char *ms_web_cam_get_name(const MSWebCam *obj); MS2_PUBLIC const char *ms_web_cam_get_name(const MSWebCam *obj);
/** /**
* Retreive webcam's id: ($driver_type: $name). * Retreive webcam's id: ($driver_type: $name).
* *
* @param obj A webcam object. * @param obj A webcam object.
* *
* Returns: A string if successfull, NULL otherwise. * Returns: A string if successfull, NULL otherwise.
*/ */
const char *ms_web_cam_get_string_id(MSWebCam *obj); MS2_PUBLIC const char *ms_web_cam_get_string_id(MSWebCam *obj);
/*specific methods for static image:*/ /*specific methods for static image:*/
void ms_static_image_set_default_image(const char *path); MS2_PUBLIC void ms_static_image_set_default_image(const char *path);
/** method for the "nowebcam" filter */ /** method for the "nowebcam" filter */
#define MS_STATIC_IMAGE_SET_IMAGE \ #define MS_STATIC_IMAGE_SET_IMAGE \
MS_FILTER_METHOD(MS_STATIC_IMAGE_ID,0,const char) MS_FILTER_METHOD(MS_STATIC_IMAGE_ID,0,const char)
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
/** @} */ /** @} */
 End of changes. 16 change blocks. 
16 lines changed or deleted 16 lines changed or added


 rfc3984.h   rfc3984.h 
skipping to change at line 26 skipping to change at line 26
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
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
typedef struct Rfc3984Context{ typedef struct Rfc3984Context{
MSQueue q; MSQueue q;
mblk_t *m; mblk_t *m;
int maxsz; int maxsz;
uint32_t last_ts; uint32_t last_ts;
uint8_t mode; uint8_t mode;
bool_t stap_a_allowed; bool_t stap_a_allowed;
uint8_t reserved; uint8_t reserved;
} Rfc3984Context; } Rfc3984Context;
Rfc3984Context *rfc3984_new(void); MS2_PUBLIC Rfc3984Context *rfc3984_new(void);
void rfc3984_destroy(Rfc3984Context *ctx); MS2_PUBLIC void rfc3984_destroy(Rfc3984Context *ctx);
void rfc3984_init(Rfc3984Context *ctx); void rfc3984_init(Rfc3984Context *ctx);
void rfc3984_set_mode(Rfc3984Context *ctx, int mode); MS2_PUBLIC void rfc3984_set_mode(Rfc3984Context *ctx, int mode);
/* some stupid phones don't decode STAP-A packets ...*/ /* some stupid phones don't decode STAP-A packets ...*/
void rfc3984_enable_stap_a(Rfc3984Context *ctx, bool_t yesno); MS2_PUBLIC void rfc3984_enable_stap_a(Rfc3984Context *ctx, bool_t yesno);
/*process NALUs and pack them into rtp payloads */ /*process NALUs and pack them into rtp payloads */
void rfc3984_pack(Rfc3984Context *ctx, MSQueue *naluq, MSQueue *rtpq, uint3 2_t ts); MS2_PUBLIC void rfc3984_pack(Rfc3984Context *ctx, MSQueue *naluq, MSQueue * rtpq, uint32_t ts);
/*process incoming rtp data and output NALUs, whenever possible*/ /*process incoming rtp data and output NALUs, whenever possible*/
void rfc3984_unpack(Rfc3984Context *ctx, mblk_t *im, MSQueue *naluq); MS2_PUBLIC void rfc3984_unpack(Rfc3984Context *ctx, mblk_t *im, MSQueue *na luq);
void rfc3984_uninit(Rfc3984Context *ctx); void rfc3984_uninit(Rfc3984Context *ctx);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif
 End of changes. 6 change blocks. 
6 lines changed or deleted 12 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/