Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
BC
public
mediastreamer2
Commits
db012167
Commit
db012167
authored
Jan 20, 2016
by
Sandrine Avakian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cleaning audiostream.c .
First integrating step in vp8 . TODO : fix ugly temporary fix in mkv.c .
parent
8680e3a0
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
39 additions
and
61 deletions
+39
-61
include/mediastreamer2/mscommon.h
include/mediastreamer2/mscommon.h
+4
-0
src/base/mscommon.c
src/base/mscommon.c
+7
-1
src/videofilters/mkv.c
src/videofilters/mkv.c
+1
-1
src/videofilters/vp8.c
src/videofilters/vp8.c
+1
-1
src/voip/audiostream.c
src/voip/audiostream.c
+3
-48
src/voip/vp8rtpfmt.c
src/voip/vp8rtpfmt.c
+5
-4
src/voip/vp8rtpfmt.h
src/voip/vp8rtpfmt.h
+1
-1
tools/tones.c
tools/tones.c
+10
-5
tools/videodisplay.c
tools/videodisplay.c
+7
-0
No files found.
include/mediastreamer2/mscommon.h
View file @
db012167
...
...
@@ -139,6 +139,7 @@ typedef struct _MSList MSList;
typedef
int
(
*
MSCompareFunc
)(
const
void
*
a
,
const
void
*
b
);
typedef
void
(
*
MSIterateFunc
)(
void
*
a
);
typedef
void
(
*
MSIterate2Func
)(
void
*
a
,
void
*
b
);
typedef
void
(
*
MSIterate3Func
)(
void
*
a
,
void
*
b
,
void
*
c
);
#ifdef __cplusplus
extern
"C"
{
...
...
@@ -227,8 +228,11 @@ MS2_PUBLIC void ms_list_for_each(const MSList *list, MSIterateFunc iterate_func)
* @param list List object
* @param iterate_func Function to invoke on each element.
* @param user_data User data to pass to iterate_func function.
*
**/
MS2_PUBLIC
void
ms_list_for_each2
(
const
MSList
*
list
,
MSIterate2Func
iterate_func
,
void
*
user_data
);
MS2_PUBLIC
void
ms_list_for_each3
(
const
MSList
*
list
,
MSIterate3Func
iterate_func
,
void
*
user_data
,
void
*
factory
);
/** Finds and remove given element in list.
* @param list List in which element must be removed
...
...
src/base/mscommon.c
View file @
db012167
...
...
@@ -143,12 +143,18 @@ void ms_list_for_each(const MSList *list, void (*func)(void *)){
}
}
void
ms_list_for_each2
(
const
MSList
*
list
,
void
(
*
func
)(
void
*
,
void
*
),
void
*
user_data
){
void
ms_list_for_each2
(
const
MSList
*
list
,
void
(
*
func
)(
void
*
,
void
*
y
),
void
*
user_data
){
for
(;
list
!=
NULL
;
list
=
list
->
next
){
func
(
list
->
data
,
user_data
);
}
}
void
ms_list_for_each3
(
const
MSList
*
list
,
void
(
*
func
)(
void
*
,
void
*
,
void
*
),
void
*
user_data
,
void
*
factory
){
for
(;
list
!=
NULL
;
list
=
list
->
next
){
func
(
list
->
data
,
user_data
,
factory
);
}
}
MSList
*
ms_list_remove_link
(
MSList
*
list
,
MSList
*
elem
){
MSList
*
ret
;
if
(
elem
==
list
){
...
...
src/videofilters/mkv.c
View file @
db012167
...
...
@@ -481,7 +481,7 @@ static void vp8_module_reverse(void *obj, mblk_t *input, MSQueue *output, ms_boo
packet
->
pd
->
pid
=
0
;
mblk_set_marker_info
(
packet
->
m
,
TRUE
);
packer_input
=
ms_list_append
(
packer_input
,
packet
);
vp8rtpfmt_packer_process
(
&
mod
->
packer
,
packer_input
,
&
q
);
vp8rtpfmt_packer_process
(
&
mod
->
packer
,
packer_input
,
&
q
,
NULL
);
while
((
m
=
ms_queue_get
(
&
q
)))
{
mblk_set_cseq
(
m
,
mod
->
cseq
++
);
...
...
src/videofilters/vp8.c
View file @
db012167
...
...
@@ -544,7 +544,7 @@ static void enc_process(MSFilter *f) {
(
flags
&
VP8_EFLAG_NO_REF_LAST
)
?
"NOREFLAST"
:
" "
);
#endif
vp8rtpfmt_packer_process
(
&
s
->
packer
,
list
,
f
->
outputs
[
0
]);
vp8rtpfmt_packer_process
(
&
s
->
packer
,
list
,
f
->
outputs
[
0
]
,
f
->
factory
);
/* Handle video starter if AVPF is not enabled. */
s
->
frame_count
++
;
...
...
src/voip/audiostream.c
View file @
db012167
...
...
@@ -237,7 +237,6 @@ bool_t audio_stream_started(AudioStream *stream){
void
audio_stream_prepare_sound
(
AudioStream
*
stream
,
MSSndCard
*
playcard
,
MSSndCard
*
captcard
){
audio_stream_unprepare_sound
(
stream
);
stream
->
dummy
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_RTP_RECV_ID
);
// stream->dummy=ms_filter_new(MS_RTP_RECV_ID);
rtp_session_set_payload_type
(
stream
->
ms
.
sessions
.
rtp_session
,
0
);
rtp_session_enable_rtcp
(
stream
->
ms
.
sessions
.
rtp_session
,
FALSE
);
ms_filter_call_method
(
stream
->
dummy
,
MS_RTP_RECV_SET_SESSION
,
stream
->
ms
.
sessions
.
rtp_session
);
...
...
@@ -248,12 +247,10 @@ void audio_stream_prepare_sound(AudioStream *stream, MSSndCard *playcard, MSSndC
stream
->
soundwrite
=
ms_snd_card_create_writer
(
playcard
);
ms_filter_link
(
stream
->
dummy
,
0
,
stream
->
soundwrite
,
0
);
#else
//stream->ms.voidsink=ms_filter_new(MS_VOID_SINK_ID);
stream
->
ms
.
voidsink
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_VOID_SINK_ID
);
ms_filter_link
(
stream
->
dummy
,
0
,
stream
->
ms
.
voidsink
,
0
);
#endif
}
else
{
//stream->ms.voidsink=ms_filter_new(MS_VOID_SINK_ID);
stream
->
ms
.
voidsink
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_VOID_SINK_ID
);
ms_filter_link
(
stream
->
dummy
,
0
,
stream
->
ms
.
voidsink
,
0
);
...
...
@@ -304,8 +301,7 @@ static void setup_local_player(AudioStream *stream, int samplerate, int channels
MSConnectionHelper
cnx
;
int
master
=
0
;
/* stream->local_player=ms_filter_new(MS_FILE_PLAYER_ID);
stream->local_player_resampler=ms_filter_new(MS_RESAMPLE_ID);*/
stream
->
local_player
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_FILE_PLAYER_ID
);
stream
->
local_player_resampler
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_RESAMPLE_ID
);
...
...
@@ -383,10 +379,8 @@ static bool_t ci_ends_with(const char *filename, const char*suffix){
MSFilter
*
_ms_create_av_player
(
const
char
*
filename
,
MSFactory
*
factory
){
if
(
ci_ends_with
(
filename
,
".mkv"
))
//return ms_filter_new(MS_MKV_PLAYER_ID);
return
ms_factory_create_filter
(
factory
,
MS_MKV_PLAYER_ID
);
else
if
(
ci_ends_with
(
filename
,
".wav"
))
//return ms_filter_new(MS_FILE_PLAYER_ID);
return
ms_factory_create_filter
(
factory
,
MS_FILE_PLAYER_ID
);
return
NULL
;
}
...
...
@@ -545,7 +539,6 @@ static int open_av_player(AudioStream *stream, const char *filename){
}
}
if
(
audiofmt
&&
audiofmt
->
fmt
&&
strcasecmp
(
audiofmt
->
fmt
->
encoding
,
"pcm"
)
!=
0
){
// player->decoder=ms_filter_create_decoder(audiofmt->fmt->encoding);
player
->
decoder
=
ms_factory_create_decoder
(
stream
->
ms
.
factory
,
audiofmt
->
fmt
->
encoding
);
if
(
player
->
decoder
==
NULL
){
...
...
@@ -554,9 +547,7 @@ static int open_av_player(AudioStream *stream, const char *filename){
return
-
1
;
}
}
//player->resampler=ms_filter_new(MS_RESAMPLE_ID);
player
->
resampler
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_RESAMPLE_ID
);
// if (videofmt && videofmt->fmt) player->video_output=ms_filter_new(MS_ITC_SINK_ID);
if
(
videofmt
&&
videofmt
->
fmt
)
player
->
video_output
=
ms_factory_create_filter
(
stream
->
videostream
->
ms
.
factory
,
MS_ITC_SINK_ID
);
else
player
->
videopin
=-
1
;
...
...
@@ -608,23 +599,17 @@ static void av_recorder_handle_event(void *userdata, MSFilter *recorder, unsigne
}
static
void
setup_av_recorder
(
AudioStream
*
stream
,
int
sample_rate
,
int
nchannels
){
//stream->av_recorder.recorder=ms_filter_new(MS_MKV_RECORDER_ID);
stream
->
av_recorder
.
recorder
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_MKV_RECORDER_ID
);
if
(
stream
->
av_recorder
.
recorder
){
MSPinFormat
pinfmt
=
{
0
};
// stream->av_recorder.video_input=ms_filter_new(MS_ITC_SOURCE_ID);
// stream->av_recorder.resampler=ms_filter_new(MS_RESAMPLE_ID);
// stream->av_recorder.encoder=ms_filter_new(MS_OPUS_ENC_ID);
stream
->
av_recorder
.
video_input
=
ms_factory_create_filter
(
stream
->
videostream
->
ms
.
factory
,
MS_ITC_SOURCE_ID
);
stream
->
av_recorder
.
resampler
=
ms_factory_create_filter
(
stream
->
videostream
->
ms
.
factory
,
MS_RESAMPLE_ID
);
stream
->
av_recorder
.
encoder
=
ms_factory_create_filter
(
stream
->
videostream
->
ms
.
factory
,
MS_OPUS_ENC_ID
);
if
(
stream
->
av_recorder
.
encoder
==
NULL
){
int
g711_rate
=
8000
;
int
g711_nchannels
=
1
;
//stream->av_recorder.encoder=ms_filter_new(MS_ULAW_ENC_ID);
stream
->
av_recorder
.
encoder
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_ULAW_ENC_ID
);
ms_filter_call_method
(
stream
->
av_recorder
.
resampler
,
MS_FILTER_SET_SAMPLE_RATE
,
&
sample_rate
);
ms_filter_call_method
(
stream
->
av_recorder
.
resampler
,
MS_FILTER_SET_OUTPUT_SAMPLE_RATE
,
&
g711_rate
);
...
...
@@ -685,9 +670,6 @@ static void setup_recorder(AudioStream *stream, int sample_rate, int nchannels){
int
pin
=
1
;
MSAudioMixerCtl
mctl
=
{
0
};
// stream->recorder=ms_filter_new(MS_FILE_REC_ID);
// stream->recorder_mixer=ms_filter_new(MS_AUDIO_MIXER_ID);
// stream->recv_tee=ms_filter_new(MS_TEE_ID);
stream
->
recorder
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_FILE_REC_ID
);
stream
->
recorder_mixer
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_AUDIO_MIXER_ID
);
stream
->
recv_tee
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_TEE_ID
);
...
...
@@ -737,7 +719,6 @@ static void setup_generic_confort_noise(AudioStream *stream){
if
(
cn
&&
pt
&&
pt
->
channels
==
1
&&
pt
->
clock_rate
==
8000
){
/* RFC3389 CN can be used*/
//stream->vaddtx=ms_filter_new(MS_VAD_DTX_ID);
stream
->
vaddtx
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_VAD_DTX_ID
);
if
(
stream
->
vaddtx
)
{
ms_filter_add_notify_callback
(
stream
->
vaddtx
,
on_silence_detected
,
stream
,
TRUE
);
...
...
@@ -806,12 +787,10 @@ int audio_stream_start_from_io(AudioStream *stream, RtpProfile *profile, const c
if
(
rem_rtp_port
>
0
)
ms_filter_call_method
(
stream
->
ms
.
rtpsend
,
MS_RTP_SEND_SET_SESSION
,
rtps
);
stream
->
ms
.
rtprecv
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_RTP_RECV_ID
);
//stream->ms.rtprecv=ms_filter_new(MS_RTP_RECV_ID);
ms_filter_call_method
(
stream
->
ms
.
rtprecv
,
MS_RTP_RECV_SET_SESSION
,
rtps
);
stream
->
ms
.
sessions
.
rtp_session
=
rtps
;
if
((
stream
->
features
&
AUDIO_STREAM_FEATURE_DTMF_ECHO
)
!=
0
)
//stream->dtmfgen=ms_filter_new(MS_DTMF_GEN_ID);
stream
->
dtmfgen
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_DTMF_GEN_ID
);
else
stream
->
dtmfgen
=
NULL
;
...
...
@@ -832,14 +811,10 @@ int audio_stream_start_from_io(AudioStream *stream, RtpProfile *profile, const c
stream
->
rtp_io_session
=
io
->
input
.
session
;
pt
=
rtp_profile_get_payload
(
rtp_session_get_profile
(
stream
->
rtp_io_session
),
rtp_session_get_recv_payload_type
(
stream
->
rtp_io_session
));
//stream->soundread = ms_filter_new(MS_RTP_RECV_ID);
stream
->
soundread
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_RTP_RECV_ID
);
ms_filter_call_method
(
stream
->
soundread
,
MS_RTP_RECV_SET_SESSION
,
stream
->
rtp_io_session
);
//stream->read_decoder = ms_filter_create_decoder(pt->mime_type);
stream
->
read_decoder
=
ms_factory_create_decoder
(
stream
->
ms
.
factory
,
pt
->
mime_type
);
}
else
{
// stream->soundread=ms_filter_new(MS_FILE_PLAYER_ID);
// stream->read_resampler=ms_filter_new(MS_RESAMPLE_ID);
stream
->
soundread
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_FILE_PLAYER_ID
);
stream
->
read_resampler
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_RESAMPLE_ID
);
...
...
@@ -851,15 +826,13 @@ int audio_stream_start_from_io(AudioStream *stream, RtpProfile *profile, const c
stream
->
rtp_io_session
=
io
->
output
.
session
;
pt
=
rtp_profile_get_payload
(
rtp_session_get_profile
(
stream
->
rtp_io_session
),
rtp_session_get_send_payload_type
(
stream
->
rtp_io_session
));
// stream->soundwrite = ms_filter_new(MS_RTP_SEND_ID);
stream
->
soundwrite
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_RTP_SEND_ID
);
ms_filter_call_method
(
stream
->
soundwrite
,
MS_RTP_SEND_SET_SESSION
,
stream
->
rtp_io_session
);
//stream->write_encoder = ms_filter_create_encoder(pt->mime_type);
stream
->
write_encoder
=
ms_factory_create_decoder
(
stream
->
ms
.
factory
,
pt
->
mime_type
);
}
else
{
// stream->soundwrite=ms_filter_new(MS_FILE_REC_ID);
stream
->
soundwrite
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_FILE_REC_ID
);
}
...
...
@@ -878,7 +851,6 @@ int audio_stream_start_from_io(AudioStream *stream, RtpProfile *profile, const c
&&
(
strcasecmp
(
pt
->
mime_type
,
"pcmu"
)
==
0
||
strcasecmp
(
pt
->
mime_type
,
"pcma"
)
==
0
)){
/*if no telephone-event payload is usable and pcma or pcmu is used, we will generate
inband dtmf*/
// stream->dtmfgen_rtp=ms_filter_new (MS_DTMF_GEN_ID);
stream
->
dtmfgen_rtp
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_DTMF_GEN_ID
);
}
else
{
...
...
@@ -949,12 +921,10 @@ int audio_stream_start_from_io(AudioStream *stream, RtpProfile *profile, const c
if
((
stream
->
features
&
AUDIO_STREAM_FEATURE_VOL_SND
)
!=
0
)
stream
->
volsend
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_VOLUME_ID
);
//stream->volsend=ms_filter_new(MS_VOLUME_ID);
else
stream
->
volsend
=
NULL
;
if
((
stream
->
features
&
AUDIO_STREAM_FEATURE_VOL_RCV
)
!=
0
)
stream
->
volrecv
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_VOLUME_ID
);
//stream->volrecv=ms_filter_new(MS_VOLUME_ID);
else
stream
->
volrecv
=
NULL
;
...
...
@@ -973,7 +943,6 @@ int audio_stream_start_from_io(AudioStream *stream, RtpProfile *profile, const c
int
tmp
=
1
;
if
(
stream
->
volsend
==
NULL
)
stream
->
volsend
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_VOLUME_ID
);
// stream->volsend=ms_filter_new(MS_VOLUME_ID);
ms_filter_call_method
(
stream
->
volsend
,
MS_VOLUME_ENABLE_AGC
,
&
tmp
);
}
...
...
@@ -992,7 +961,6 @@ int audio_stream_start_from_io(AudioStream *stream, RtpProfile *profile, const c
/* give the sound filters some properties */
if
(
err1
!=
0
||
err2
!=
0
){
/* need to add resampler*/
// if (stream->read_resampler == NULL) stream->read_resampler = ms_filter_new(MS_RESAMPLE_ID);
if
(
stream
->
read_resampler
==
NULL
)
stream
->
read_resampler
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_RESAMPLE_ID
);
}
...
...
@@ -1001,7 +969,6 @@ int audio_stream_start_from_io(AudioStream *stream, RtpProfile *profile, const c
err2
=
ms_filter_call_method
(
stream
->
soundwrite
,
MS_FILTER_SET_NCHANNELS
,
&
nchannels
);
if
(
err1
!=
0
||
err2
!=
0
){
/* need to add resampler*/
// if (stream->write_resampler == NULL) stream->write_resampler = ms_filter_new(MS_RESAMPLE_ID);
if
(
stream
->
write_resampler
==
NULL
)
stream
->
write_resampler
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_RESAMPLE_ID
);
}
...
...
@@ -1017,7 +984,6 @@ int audio_stream_start_from_io(AudioStream *stream, RtpProfile *profile, const c
}
if
(
stream
->
features
&
AUDIO_STREAM_FEATURE_MIXED_RECORDING
||
stream
->
features
&
AUDIO_STREAM_FEATURE_REMOTE_PLAYING
){
// stream->outbound_mixer=ms_filter_new(MS_AUDIO_MIXER_ID);
stream
->
outbound_mixer
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_AUDIO_MIXER_ID
);
}
...
...
@@ -1052,7 +1018,6 @@ int audio_stream_start_from_io(AudioStream *stream, RtpProfile *profile, const c
/*create the equalizer*/
if
((
stream
->
features
&
AUDIO_STREAM_FEATURE_EQUALIZER
)
!=
0
){
stream
->
equalizer
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_EQUALIZER_ID
);
//stream->equalizer=ms_filter_new(MS_EQUALIZER_ID);
if
(
stream
->
equalizer
)
{
tmp
=
stream
->
eq_active
;
ms_filter_call_method
(
stream
->
equalizer
,
MS_EQUALIZER_SET_ACTIVE
,
&
tmp
);
...
...
@@ -1115,7 +1080,6 @@ int audio_stream_start_from_io(AudioStream *stream, RtpProfile *profile, const c
ms_warning
(
"MS_DECODER_HAVE_PLC function not implemented by the decoder: enable default plc"
);
}
if
(
decoder_have_plc
==
0
)
{
//stream->plc = ms_filter_new(MS_GENERIC_PLC_ID);
stream
->
plc
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_GENERIC_PLC_ID
);
}
...
...
@@ -1131,7 +1095,6 @@ int audio_stream_start_from_io(AudioStream *stream, RtpProfile *profile, const c
}
if
(
stream
->
features
&
AUDIO_STREAM_FEATURE_LOCAL_PLAYING
){
//stream->local_mixer=ms_filter_new(MS_AUDIO_MIXER_ID);
stream
->
local_mixer
=
ms_factory_create_filter
(
stream
->
ms
.
factory
,
MS_AUDIO_MIXER_ID
);
}
...
...
@@ -1404,7 +1367,6 @@ void audio_stream_set_features(AudioStream *st, uint32_t features){
AudioStream
*
audio_stream_new_with_sessions
(
const
MSMediaStreamSessions
*
sessions
,
MSFactory
*
factory
){
AudioStream
*
stream
=
(
AudioStream
*
)
ms_new0
(
AudioStream
,
1
);
// MSFilterDesc *ec_desc=ms_filter_lookup_by_name("MSWebRTCAEC");
MSFilterDesc
*
ec_desc
=
ms_factory_lookup_filter_by_name
(
factory
,
"MSWebRTAEC"
);
const
OrtpRtcpXrMediaCallbacks
rtcp_xr_media_cbs
=
{
audio_stream_get_rtcp_xr_plc_status
,
...
...
@@ -1418,13 +1380,9 @@ AudioStream *audio_stream_new_with_sessions(const MSMediaStreamSessions *session
stream
->
ms
.
type
=
MSAudio
;
stream
->
ms
.
sessions
=
*
sessions
;
media_stream_init
(
&
stream
->
ms
,
factory
);
// media_stream_init(&stream->ms, ms_factory_get_fallback());
ms_factory_enable_statistics
(
factory
,
TRUE
);
ms_factory_reset_statistics
(
factory
);
// ms_filter_enable_statistics(TRUE);
//ms_filter_reset_statistics();
if
(
sessions
->
zrtp_context
!=
NULL
)
{
ms_zrtp_set_stream_sessions
(
sessions
->
zrtp_context
,
&
(
stream
->
ms
.
sessions
));
...
...
@@ -1434,17 +1392,14 @@ AudioStream *audio_stream_new_with_sessions(const MSMediaStreamSessions *session
}
rtp_session_resync
(
stream
->
ms
.
sessions
.
rtp_session
);
/*some filters are created right now to allow configuration by the application before start() */
// stream->ms.rtpsend=ms_filter_new(MS_RTP_SEND_ID);
stream
->
ms
.
rtpsend
=
ms_factory_create_filter
(
factory
,
MS_RTP_SEND_ID
);
stream
->
ms
.
ice_check_list
=
NULL
;
stream
->
ms
.
qi
=
ms_quality_indicator_new
(
stream
->
ms
.
sessions
.
rtp_session
);
ms_quality_indicator_set_label
(
stream
->
ms
.
qi
,
"audio"
);
stream
->
ms
.
process_rtcp
=
audio_stream_process_rtcp
;
if
(
ec_desc
!=
NULL
){
//stream->ec=ms_filter_new_from_desc(ec_desc);
stream
->
ec
=
ms_factory_create_filter_from_desc
(
factory
,
ec_desc
);
}
else
{
//stream->ec=ms_filter_new(MS_SPEEX_EC_ID);
stream
->
ec
=
ms_factory_create_filter
(
factory
,
MS_SPEEX_EC_ID
);
}
stream
->
play_dtmfs
=
TRUE
;
...
...
src/voip/vp8rtpfmt.c
View file @
db012167
...
...
@@ -964,14 +964,15 @@ int vp8rtpfmt_unpacker_get_frame(Vp8RtpFmtUnpackerCtx *ctx, MSQueue *out, Vp8Rtp
}
static
void
packer_process_frame_part
(
void
*
p
,
void
*
c
)
{
static
void
packer_process_frame_part
(
void
*
p
,
void
*
c
,
void
*
f
)
{
Vp8RtpFmtPacket
*
packet
=
(
Vp8RtpFmtPacket
*
)
p
;
Vp8RtpFmtPackerCtx
*
ctx
=
(
Vp8RtpFmtPackerCtx
*
)
c
;
MSFactory
*
factory
=
(
MSFactory
*
)
f
;
mblk_t
*
pdm
=
NULL
;
mblk_t
*
dm
=
NULL
;
uint8_t
*
rptr
;
uint8_t
pdsize
=
1
;
int
max_size
=
ms_get_payload_max_size
();
int
max_size
=
ms_
factory_
get_payload_max_size
(
factory
);
int
dlen
;
bool_t
marker_info
=
mblk_get_marker_info
(
packet
->
m
);
...
...
@@ -1058,9 +1059,9 @@ void vp8rtpfmt_packer_init(Vp8RtpFmtPackerCtx *ctx) {
void
vp8rtpfmt_packer_uninit
(
Vp8RtpFmtPackerCtx
*
ctx
)
{
}
void
vp8rtpfmt_packer_process
(
Vp8RtpFmtPackerCtx
*
ctx
,
MSList
*
in
,
MSQueue
*
out
)
{
void
vp8rtpfmt_packer_process
(
Vp8RtpFmtPackerCtx
*
ctx
,
MSList
*
in
,
MSQueue
*
out
,
MSFactory
*
f
)
{
ctx
->
output_queue
=
out
;
ms_list_for_each
2
(
in
,
packer_process_frame_part
,
ctx
);
ms_list_for_each
3
(
in
,
packer_process_frame_part
,
ctx
,
f
);
ms_list_for_each
(
in
,
free_packet
);
ms_list_free
(
in
);
}
src/voip/vp8rtpfmt.h
View file @
db012167
...
...
@@ -124,7 +124,7 @@ extern "C"{
void
vp8rtpfmt_packer_init
(
Vp8RtpFmtPackerCtx
*
ctx
);
void
vp8rtpfmt_packer_uninit
(
Vp8RtpFmtPackerCtx
*
ctx
);
void
vp8rtpfmt_packer_process
(
Vp8RtpFmtPackerCtx
*
ctx
,
MSList
*
in
,
MSQueue
*
out
);
void
vp8rtpfmt_packer_process
(
Vp8RtpFmtPackerCtx
*
ctx
,
MSList
*
in
,
MSQueue
*
out
,
MSFactory
*
f
);
void
vp8rtpfmt_unpacker_init
(
Vp8RtpFmtUnpackerCtx
*
ctx
,
MSFilter
*
f
,
bool_t
avpf_enabled
,
bool_t
freeze_on_error
,
bool_t
output_partitions
);
void
vp8rtpfmt_unpacker_uninit
(
Vp8RtpFmtUnpackerCtx
*
ctx
);
...
...
tools/tones.c
View file @
db012167
...
...
@@ -38,14 +38,19 @@ static void tone_sent_cb(void *data, MSFilter *f, unsigned int event_id, MSDtmfG
int
main
(
int
argc
,
char
*
argv
[]){
MSFilter
*
src
,
*
gen
,
*
det
,
*
rec
;
MSTicker
*
ticker
;
MSFactory
*
factory
;
//ms_base_init();
ms_base_init
();
factory
=
ms_factory_new
();
ms_factory_init_voip
(
factory
);
ms_factory_init_plugins
(
factory
);
ortp_set_log_level_mask
(
ORTP_LOG_DOMAIN
,
ORTP_MESSAGE
|
ORTP_WARNING
|
ORTP_ERROR
|
ORTP_FATAL
);
src
=
ms_f
ilter_new
(
MS_FILE_PLAYER_ID
);
rec
=
ms_f
ilter_new
(
MS_FILE_REC_ID
);
gen
=
ms_f
ilter_new
(
MS_DTMF_GEN_ID
);
det
=
ms_f
ilter_new
(
MS_TONE_DETECTOR_ID
);
src
=
ms_f
actory_create_filter
(
factory
,
MS_FILE_PLAYER_ID
);
rec
=
ms_f
actory_create_filter
(
factory
,
MS_FILE_REC_ID
);
gen
=
ms_f
actory_create_filter
(
factory
,
MS_DTMF_GEN_ID
);
det
=
ms_f
actory_create_filter
(
factory
,
MS_TONE_DETECTOR_ID
);
ms_filter_link
(
src
,
0
,
gen
,
0
);
ms_filter_link
(
gen
,
0
,
det
,
0
);
...
...
tools/videodisplay.c
View file @
db012167
...
...
@@ -34,11 +34,17 @@ int main(int argc, char *argv[]){
VideoStream
*
vs
;
MSWebCam
*
cam
;
MSVideoSize
vsize
;
MSFactory
*
factory
;
int
i
;
vsize
.
width
=
MS_VIDEO_SIZE_CIF_W
;
vsize
.
height
=
MS_VIDEO_SIZE_CIF_H
;
factory
=
ms_factory_new
();
ms_factory_init_voip
(
factory
);
ms_factory_init_plugins
(
factory
);
ortp_init
();
ortp_set_log_level_mask
(
ORTP_LOG_DOMAIN
,
ORTP_MESSAGE
|
ORTP_WARNING
|
ORTP_ERROR
|
ORTP_FATAL
);
ms_init
();
...
...
@@ -50,6 +56,7 @@ int main(int argc, char *argv[]){
for
(
i
=
0
;
i
<
1
;
++
i
){
int
n
;
vs
=
video_preview_new
();
vs
->
factory
=
factory
;
/*video_preview_set_display_filter_name(vs,"MSVideoOut");*/
video_preview_set_size
(
vs
,
vsize
);
video_preview_start
(
vs
,
cam
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment