You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
3.6 KiB
131 lines
3.6 KiB
/*
|
|
The mediastreamer library aims at providing modular media processing and I/O
|
|
for linphone, but also for any telephony application.
|
|
Copyright (C) 2001 Simon MORLAT simon.morlat@linphone.org
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with this library; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
|
|
#ifndef MEDIASTREAM_H
|
|
#define MEDIASTREAM_H
|
|
|
|
#include "msrtprecv.h"
|
|
#include "msrtpsend.h"
|
|
#include "ms.h"
|
|
#include "msosswrite.h"
|
|
#include "msossread.h"
|
|
#include "msread.h"
|
|
#include "mswrite.h"
|
|
#include "mstimer.h"
|
|
#include "mscodec.h"
|
|
#ifdef HAVE_SPEEX
|
|
#include "msspeexdec.h"
|
|
#endif
|
|
#include "msringplayer.h"
|
|
|
|
|
|
struct _AudioStream
|
|
{
|
|
MSSync *timer;
|
|
RtpSession *send_session;
|
|
RtpSession *recv_session;
|
|
MSFilter *soundread;
|
|
MSFilter *soundwrite;
|
|
MSFilter *encoder;
|
|
MSFilter *decoder;
|
|
MSFilter *rtprecv;
|
|
MSFilter *rtpsend;
|
|
};
|
|
|
|
|
|
typedef struct _AudioStream AudioStream;
|
|
|
|
struct _RingStream
|
|
{
|
|
MSSync *timer;
|
|
MSFilter *source;
|
|
MSFilter *sndwrite;
|
|
};
|
|
|
|
typedef struct _RingStream RingStream;
|
|
|
|
/* start a thread that does sampling->encoding->rtp_sending|rtp_receiving->decoding->playing */
|
|
AudioStream *audio_stream_start (RtpProfile * prof, int locport, char *remip,
|
|
int remport, int profile, int jitt_comp);
|
|
|
|
AudioStream *audio_stream_start_with_sndcards(RtpProfile * prof, int locport, char *remip4,
|
|
int remport, int profile, int jitt_comp, SndCard *playcard, SndCard *captcard);
|
|
|
|
AudioStream *audio_stream_start_with_files (RtpProfile * prof, int locport,
|
|
char *remip4, int remport,
|
|
int profile, int jitt_comp,
|
|
gchar * infile, gchar * outfile);
|
|
void audio_stream_set_rtcp_information(AudioStream *st, const char *cname);
|
|
|
|
|
|
/* stop the above process*/
|
|
void audio_stream_stop (AudioStream * stream);
|
|
|
|
RingStream *ring_start (gchar * file, gint interval, SndCard *sndcard);
|
|
RingStream *ring_start_with_cb(gchar * file, gint interval, SndCard *sndcard, MSFilterNotifyFunc func,gpointer user_data);
|
|
void ring_stop (RingStream * stream);
|
|
|
|
/* returns the latency in samples if the audio device with id dev_id is openable in full duplex mode, else 0 */
|
|
gint test_audio_dev (int dev_id);
|
|
|
|
/* send a dtmf */
|
|
gint audio_stream_send_dtmf (AudioStream * stream, gchar dtmf);
|
|
|
|
void audio_stream_set_default_card(int cardindex);
|
|
|
|
|
|
#ifdef VIDEO_ENABLED
|
|
|
|
/*****************
|
|
Video Support
|
|
*****************/
|
|
|
|
|
|
|
|
struct _VideoStream
|
|
{
|
|
MSSync *timer;
|
|
RtpSession *send_session;
|
|
RtpSession *recv_session;
|
|
MSFilter *source;
|
|
MSFilter *output;
|
|
MSFilter *encoder;
|
|
MSFilter *decoder;
|
|
MSFilter *rtprecv;
|
|
MSFilter *rtpsend;
|
|
gboolean show_local;
|
|
};
|
|
|
|
|
|
typedef struct _VideoStream VideoStream;
|
|
|
|
VideoStream *video_stream_start(RtpProfile *profile, int locport, char *remip4, int remport,
|
|
int payload, int jitt_comp, gboolean show_local, const gchar *source, const gchar *device);
|
|
void video_stream_set_rtcp_information(VideoStream *st, const char *cname);
|
|
void video_stream_stop (VideoStream * stream);
|
|
|
|
VideoStream * video_preview_start(const gchar *source, const gchar *device);
|
|
void video_preview_stop(VideoStream *stream);
|
|
|
|
#endif
|
|
|
|
#endif
|