Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
savoirfairelinux
jami-daemon
Commits
20882241
Commit
20882241
authored
Feb 10, 2009
by
Emmanuel Milou
Browse files
Add configuration panel for audio record module
parent
3dd14d02
Changes
10
Hide whitespace changes
Inline
Side-by-side
sflphone-gtk/src/audioconf.c
View file @
20882241
...
...
@@ -798,7 +798,7 @@ GtkWidget* create_audio_configuration()
box
=
codecs_box
();
gtk_container_add
(
GTK_CONTAINER
(
codecs_conf
)
,
box
);
// Box for the
codec
s
// Box for the
ringtone
s
ringtones_conf
=
gtk_frame_new
(
_
(
"Ringtones"
));
gtk_box_pack_start
(
GTK_BOX
(
ret
),
ringtones_conf
,
FALSE
,
FALSE
,
0
);
gtk_widget_show
(
ringtones_conf
);
...
...
sflphone-gtk/src/configwindow.c
View file @
20882241
...
...
@@ -672,37 +672,36 @@ create_general_settings ()
return
ret
;
}
void
record_path_changed
(
GtkFileChooser
*
chooser
,
GtkLabel
*
label
UNUSED
)
{
// gchar* tone = gtk_file_chooser_get_filename( GTK_FILE_CHOOSER( chooser ));
// dbus_set_ringtone_choice( tone );
gchar
*
path
;
path
=
gtk_file_chooser_get_uri
(
GTK_FILE_CHOOSER
(
chooser
));
dbus_set_record_path
(
path
);
}
GtkWidget
*
create_recording_settings
()
{
int
curPort
;
int
n
;
gchar
*
defaultSavePath
=
"/home/alexandresavard/"
;
GtkWidget
*
ret
;
GtkWidget
*
label
;
GtkWidget
*
table
;
GtkWidget
*
savePathFrame
;
GtkWidget
*
savePathText
;
GtkWidget
*
folderChooser
;
gchar
*
dftPath
;
/* Get the path where to save audio files */
dftPath
=
dbus_get_record_path
();
// Main widget
ret
=
gtk_vbox_new
(
FALSE
,
10
);
gtk_container_set_border_width
(
GTK_CONTAINER
(
ret
),
10
);
// Recorded file saving path
savePathFrame
=
gtk_frame_new
(
_
(
"
Recorded File Saving Path
"
));
gtk_box_pack_start
(
GTK_BOX
(
ret
),
savePathFrame
,
FALSE
,
FALSE
,
0
);
savePathFrame
=
gtk_frame_new
(
_
(
"
General
"
));
gtk_box_pack_start
(
GTK_BOX
(
ret
),
savePathFrame
,
FALSE
,
FALSE
,
5
);
gtk_widget_show
(
savePathFrame
);
table
=
gtk_table_new
(
1
,
2
,
FALSE
);
...
...
@@ -712,20 +711,16 @@ create_recording_settings ()
gtk_container_add
(
GTK_CONTAINER
(
savePathFrame
),
table
);
// label
label
=
gtk_label_new_with_mnemonic
(
_
(
"_
Save Path
"
));
gtk_table_attach
(
GTK_TABLE
(
table
),
label
,
0
,
1
,
3
,
4
,
GTK_EXPAND
|
GTK_FILL
,
GTK_EXPAND
|
GTK_FILL
,
0
,
0
);
label
=
gtk_label_new_with_mnemonic
(
_
(
"_
Destination folder
"
));
gtk_table_attach
(
GTK_TABLE
(
table
),
label
,
0
,
1
,
0
,
1
,
GTK_EXPAND
|
GTK_FILL
,
GTK_EXPAND
|
GTK_FILL
,
0
,
5
);
gtk_misc_set_alignment
(
GTK_MISC
(
label
),
0
,
0
.
5
);
savePathText
=
gtk_entry_new
();
gtk_label_set_mnemonic_widget
(
GTK_LABEL
(
label
),
savePathText
);
gtk_entry_set_text
(
GTK_ENTRY
(
savePathText
),
defaultSavePath
);
gtk_table_attach
(
GTK_TABLE
(
table
),
savePathText
,
1
,
2
,
3
,
4
,
GTK_EXPAND
|
GTK_FILL
,
GTK_EXPAND
|
GTK_FILL
,
0
,
0
);
// folder chooser button
folderChooser
=
gtk_file_chooser_button_new
(
_
(
"
Choose a path
"
),
GTK_FILE_CHOOSER_ACTION_
OPEN
);
gtk_file_chooser_set_current_folder
(
GTK_FILE_CHOOSER
(
folderChooser
)
,
g_get_home_dir
());
g_signal_connect
(
G_OBJECT
(
folderChooser
)
,
"recordPath_changed"
,
G_CALLBACK
(
record_path_changed
)
,
NULL
);
gtk_
box_pack_start
(
GTK_BOX
(
ret
)
,
folderChooser
,
TRUE
,
TRUE
,
1
);
// gtk_container_add(GTK_CONTAINER(savePathFrame), folder
);
folderChooser
=
gtk_file_chooser_button_new
(
_
(
"
Select a folder
"
),
GTK_FILE_CHOOSER_ACTION_
SELECT_FOLDER
);
gtk_file_chooser_set_current_folder
(
GTK_FILE_CHOOSER
(
folderChooser
)
,
(
strcmp
(
dftPath
,
""
)
==
0
)
?
g_get_home_dir
()
:
dftPath
);
gtk_
table_attach
(
GTK_TABLE
(
table
),
folderChooser
,
1
,
2
,
0
,
1
,
GTK_EXPAND
|
GTK_FILL
,
GTK_EXPAND
|
GTK_FILL
,
0
,
5
);
g_signal_connect
(
G_OBJECT
(
folderChooser
)
,
"selection_changed"
,
G_CALLBACK
(
record_path_changed
)
,
NULL
);
gtk_widget_show_all
(
ret
);
...
...
@@ -776,7 +771,7 @@ show_config_window ()
// Recording tab
tab
=
create_recording_settings
();
gtk_notebook_append_page
(
GTK_NOTEBOOK
(
notebook
),
tab
,
gtk_label_new
(
_
(
"Record
ing Settings
"
)));
gtk_notebook_append_page
(
GTK_NOTEBOOK
(
notebook
),
tab
,
gtk_label_new
(
_
(
"Record"
)));
gtk_notebook_page_num
(
GTK_NOTEBOOK
(
notebook
),
tab
);
gtk_notebook_set_current_page
(
GTK_NOTEBOOK
(
notebook
)
,
1
);
...
...
sflphone-gtk/src/dbus.c
View file @
20882241
...
...
@@ -178,7 +178,7 @@ error_alert(DBusGProxy *proxy UNUSED,
}
static
void
nameOwnerChanged
(
DBusGProxy
*
proxy
UNUSED
,
char
*
name
,
char
*
old_owner
,
char
*
new_owner
,
gpointer
data
UNUSED
)
static
void
nameOwnerChanged
(
DBusGProxy
*
proxy
UNUSED
,
char
*
name
,
char
*
old_owner
UNUSED
,
char
*
new_owner
UNUSED
,
gpointer
data
UNUSED
)
{
#if 0
g_print("******************************************************************\n");
...
...
@@ -1301,6 +1301,35 @@ dbus_set_record(const call_t * c)
g_print
(
"called dbus_set_record on CallManager
\n
"
);
}
void
dbus_set_record_path
(
const
gchar
*
path
)
{
GError
*
error
=
NULL
;
org_sflphone_SFLphone_ConfigurationManager_set_record_path
(
configurationManagerProxy
,
path
,
&
error
);
if
(
error
)
{
g_error_free
(
error
);
}
}
gchar
*
dbus_get_record_path
(
void
)
{
GError
*
error
=
NULL
;
gchar
*
path
;
org_sflphone_SFLphone_ConfigurationManager_get_record_path
(
configurationManagerProxy
,
&
path
,
&
error
);
if
(
error
)
{
g_error_free
(
error
);
}
return
path
;
}
void
dbus_set_max_calls
(
const
guint
calls
)
...
...
sflphone-gtk/src/dbus.h
View file @
20882241
...
...
@@ -436,4 +436,8 @@ gint dbus_stun_is_enabled (void);
void
dbus_enable_stun
(
void
);
void
dbus_set_record
(
const
call_t
*
c
);
void
dbus_set_record_path
(
const
gchar
*
path
);
gchar
*
dbus_get_record_path
(
void
);
#endif
src/call.cpp
View file @
20882241
...
...
@@ -18,6 +18,7 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include "call.h"
#include "manager.h"
Call
::
Call
(
const
CallID
&
id
,
Call
::
CallType
type
)
:
_callMutex
()
...
...
@@ -40,7 +41,7 @@ Call::Call(const CallID& id, Call::CallType type)
FILE_TYPE
fileType
=
FILE_WAV
;
SOUND_FORMAT
soundFormat
=
INT16
;
recAudio
.
setRecordingOption
(
fileType
,
soundFormat
,
44100
);
recAudio
.
setRecordingOption
(
fileType
,
soundFormat
,
44100
,
Manager
::
instance
().
getConfigString
(
AUDIO
,
RECORD_PATH
)
);
_debug
(
"CALL::Constructor for this clss is called
\n
"
);
}
...
...
src/call.h
View file @
20882241
...
...
@@ -33,6 +33,8 @@
typedef
std
::
string
CallID
;
class
AudioRecord
;
class
Call
{
public:
/**
...
...
src/managerimpl.cpp
View file @
20882241
...
...
@@ -1410,7 +1410,7 @@ ManagerImpl::getRecordPath( void )
void
ManagerImpl
::
setRecordPath
(
const
std
::
string
&
recPath
)
{
setConfig
(
AUDIO
,
RECORD_PATH
,
recPath
);
setConfig
(
AUDIO
,
RECORD_PATH
,
recPath
.
substr
(
7
)
);
}
int
...
...
src/plug-in/audiorecorder/audiorecord.cpp
View file @
20882241
...
...
@@ -19,6 +19,22 @@
#include "audiorecord.h"
// structure for the wave header
struct
wavhdr
{
char
riff
[
4
];
// "RIFF"
SINT32
file_size
;
// in bytes
char
wave
[
4
];
// "WAVE"
char
fmt
[
4
];
// "fmt "
SINT32
chunk_size
;
// in bytes (16 for PCM)
SINT16
format_tag
;
// 1=PCM, 2=ADPCM, 3=IEEE float, 6=A-Law, 7=Mu-Law
SINT16
num_chans
;
// 1=mono, 2=stereo
SINT32
sample_rate
;
SINT32
bytes_per_sec
;
SINT16
bytes_per_samp
;
// 2=16-bit mono, 4=16-bit stereo
SINT16
bits_per_samp
;
char
data
[
4
];
// "data"
SINT32
data_length
;
// in bytes
};
AudioRecord
::
AudioRecord
(){
...
...
@@ -38,9 +54,11 @@ void AudioRecord::setSndSamplingRate(int smplRate){
sndSmplRate_
=
smplRate
;
}
void
AudioRecord
::
setRecordingOption
(
FILE_TYPE
type
,
SOUND_FORMAT
format
,
int
sndSmplRate
){
void
AudioRecord
::
setRecordingOption
(
FILE_TYPE
type
,
SOUND_FORMAT
format
,
int
sndSmplRate
,
std
::
string
path
){
fileType_
=
type
;
std
::
string
fName
;
fileType_
=
type
;
sndFormat_
=
format
;
channels_
=
1
;
sndSmplRate_
=
sndSmplRate
;
...
...
@@ -57,6 +75,11 @@ void AudioRecord::setRecordingOption(FILE_TYPE type, SOUND_FORMAT format, int sn
strcat
(
fileName_
,
".wav"
);
}
}
fName
=
fileName_
;
savePath_
=
path
+
"/"
;
savePath_
.
append
(
fName
);
}
void
AudioRecord
::
openFile
(){
...
...
@@ -64,16 +87,6 @@ void AudioRecord::openFile(){
_debug
(
"AudioRecord::openFile()
\n
"
);
savePath_
=
getenv
(
"HOME"
);
std
::
string
fName
(
fileName_
);
savePath_
+=
"/"
;
savePath_
.
append
(
fName
);
bool
result
=
false
;
_debug
(
"AudioRecord::openFile()
\n
"
);
...
...
src/plug-in/audiorecorder/audiorecord.h
View file @
20882241
...
...
@@ -17,34 +17,17 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef _AUDIO_RECORD_H
#define _AUDIO_RECORD_H
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <sstream>
#include "global.h"
#include "plug-in/plugin.h"
using
namespace
std
;
// structure for the wave header
struct
wavhdr
{
char
riff
[
4
];
// "RIFF"
SINT32
file_size
;
// in bytes
char
wave
[
4
];
// "WAVE"
char
fmt
[
4
];
// "fmt "
SINT32
chunk_size
;
// in bytes (16 for PCM)
SINT16
format_tag
;
// 1=PCM, 2=ADPCM, 3=IEEE float, 6=A-Law, 7=Mu-Law
SINT16
num_chans
;
// 1=mono, 2=stereo
SINT32
sample_rate
;
SINT32
bytes_per_sec
;
SINT16
bytes_per_samp
;
// 2=16-bit mono, 4=16-bit stereo
SINT16
bits_per_samp
;
char
data
[
4
];
// "data"
SINT32
data_length
;
// in bytes
};
typedef
std
::
string
CallID
;
class
AudioRecord
...
...
@@ -56,7 +39,7 @@ public:
void
setSndSamplingRate
(
int
smplRate
);
void
setRecordingOption
(
FILE_TYPE
type
,
SOUND_FORMAT
format
,
int
sndSmplRate
);
void
setRecordingOption
(
FILE_TYPE
type
,
SOUND_FORMAT
format
,
int
sndSmplRate
,
std
::
string
path
);
/**
* Check if no otehr file is opened, then create a new one
...
...
@@ -201,3 +184,5 @@ protected:
};
#endif // _AUDIO_RECORD_H
src/voiplink.h
View file @
20882241
...
...
@@ -23,8 +23,8 @@
#ifndef __VOIP_LINK_H__
#define __VOIP_LINK_H__
#include "call.h"
#include "account.h"
#include "call.h"
class
AudioCodec
;
class
Account
;
...
...
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