mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-05-07 05:53:06 +00:00
add video snapshot command to linphonec
This commit is contained in:
parent
e4a2f0ff64
commit
7132d2711f
6 changed files with 47 additions and 4 deletions
|
|
@ -1,6 +1,6 @@
|
|||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_INIT([linphone],[3.3.99.5],[linphone-developers@nongnu.org])
|
||||
AC_INIT([linphone],[3.3.99.6],[linphone-developers@nongnu.org])
|
||||
AC_CANONICAL_SYSTEM
|
||||
AC_CONFIG_SRCDIR([coreapi/linphonecore.c])
|
||||
|
||||
|
|
|
|||
|
|
@ -92,6 +92,7 @@ static int lpc_cmd_rtp_no_xmit_on_audio_mute(LinphoneCore *lc, char *args);
|
|||
#ifdef VIDEO_ENABLED
|
||||
static int lpc_cmd_camera(LinphoneCore *lc, char *args);
|
||||
static int lpc_cmd_video_window(LinphoneCore *lc, char *args);
|
||||
static int lpc_cmd_snapshot(LinphoneCore *lc, char *args);
|
||||
#endif
|
||||
static int lpc_cmd_states(LinphoneCore *lc, char *args);
|
||||
static int lpc_cmd_identify(LinphoneCore *lc, char *args);
|
||||
|
|
@ -124,7 +125,7 @@ static LPC_COMMAND *lpc_find_command(const char *name);
|
|||
|
||||
void linphonec_out(const char *fmt,...);
|
||||
|
||||
VideoParams lpc_video_params={-1,-1,-1,-1,TRUE};
|
||||
VideoParams lpc_video_params={-1,-1,-1,-1,0,TRUE};
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
|
@ -275,6 +276,9 @@ static LPC_COMMAND advanced_commands[] = {
|
|||
"'vwindow pos <x> <y>': Moves video window to x,y pixel coordinates\n"
|
||||
"'vwindow size <width> <height>': Resizes video window"
|
||||
},
|
||||
{ "snapshot", lpc_cmd_snapshot, "Take a snapshot of currently received video stream",
|
||||
"'snapshot <file path>': take a snapshot and records it in jpeg format into the supplied path\n"
|
||||
},
|
||||
#endif
|
||||
{ "states", lpc_cmd_states, "Show internal states of liblinphone, registrations and calls, according to linphonecore.h definitions",
|
||||
"'states global': shows global state of liblinphone \n"
|
||||
|
|
@ -2201,6 +2205,8 @@ static int lpc_cmd_video_window(LinphoneCore *lc, char *args){
|
|||
char subcommand[64];
|
||||
int a,b;
|
||||
int err;
|
||||
|
||||
if (!args) return 0;
|
||||
err=sscanf(args,"%s %i %i",subcommand,&a,&b);
|
||||
if (err>=1){
|
||||
if (strcmp(subcommand,"pos")==0){
|
||||
|
|
@ -2219,9 +2225,18 @@ static int lpc_cmd_video_window(LinphoneCore *lc, char *args){
|
|||
}else if (strcmp(subcommand,"hide")==0){
|
||||
lpc_video_params.show=FALSE;
|
||||
lpc_video_params.refresh=TRUE;
|
||||
}else if (strcmp(subcommand,"id")==0){
|
||||
char envbuf[128];
|
||||
if (err == 1){
|
||||
linphonec_out("vwindow id: 0x%x / SDL_WINDOWID='%s'\n",(unsigned int)lpc_video_params.wid, getenv("SDL_WINDOWID"));
|
||||
return 1;
|
||||
} else if (err != 2) return 0;
|
||||
lpc_video_params.wid=a;
|
||||
snprintf(envbuf, sizeof(envbuf)-1, "SDL_WINDOWID=0x%x", (unsigned int)lpc_video_params.wid);
|
||||
err = putenv(envbuf);
|
||||
linphonec_out("vwindow id: 0x%x / SDL_WNIDOWID='%s'\n",(unsigned int)lpc_video_params.wid, getenv("SDL_WINDOWID"));
|
||||
}else return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
|
@ -2338,6 +2353,17 @@ static int lpc_cmd_camera(LinphoneCore *lc, char *args){
|
|||
return 1;
|
||||
}
|
||||
|
||||
static int lpc_cmd_snapshot(LinphoneCore *lc, char *args){
|
||||
LinphoneCall *call;
|
||||
if (!args) return 0;
|
||||
call=linphone_core_get_current_call(lc);
|
||||
if (call!=NULL){
|
||||
linphone_call_take_video_snapshot (call,args);
|
||||
linphonec_out("Taking video snaphot in file %s\n", args);
|
||||
}else linphonec_out("There is no active call.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static int lpc_cmd_identify(LinphoneCore *lc, char *args){
|
||||
|
|
|
|||
|
|
@ -99,6 +99,7 @@ typedef struct {
|
|||
|
||||
typedef struct {
|
||||
int x,y,w,h;
|
||||
unsigned long wid;
|
||||
bool_t show;
|
||||
bool_t refresh;
|
||||
} VideoParams;
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#include "mediastreamer2/msvolume.h"
|
||||
#include "mediastreamer2/msequalizer.h"
|
||||
#include "mediastreamer2/msfileplayer.h"
|
||||
#include "mediastreamer2/msjpegwriter.h"
|
||||
|
||||
#ifdef VIDEO_ENABLED
|
||||
static MSWebCam *get_nowebcam_device(){
|
||||
|
|
@ -473,6 +474,20 @@ void linphone_call_enable_camera (LinphoneCall *call, bool_t enable){
|
|||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* Take a photo of currently received video and write it into a jpeg file.
|
||||
**/
|
||||
int linphone_call_take_video_snapshot(LinphoneCall *call, const char *file){
|
||||
#ifdef VIDEO_ENABLED
|
||||
if (call->videostream!=NULL && call->videostream->jpegwriter!=NULL){
|
||||
return ms_filter_call_method(call->videostream->jpegwriter,MS_JPEG_WRITER_TAKE_SNAPSHOT,(void*)file);
|
||||
}
|
||||
ms_warning("Cannot take snapshot: no currently running video stream on this call.");
|
||||
return -1;
|
||||
#endif
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -3492,6 +3492,7 @@ void linphone_core_stop_dtmf(LinphoneCore *lc){
|
|||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Retrieves the user pointer that was given to linphone_core_new()
|
||||
*
|
||||
|
|
|
|||
|
|
@ -225,6 +225,7 @@ int linphone_call_get_duration(const LinphoneCall *call);
|
|||
const LinphoneCallParams * linphone_call_get_current_params(const LinphoneCall *call);
|
||||
void linphone_call_enable_camera(LinphoneCall *lc, bool_t enabled);
|
||||
bool_t linphone_call_camera_enabled(const LinphoneCall *lc);
|
||||
int linphone_call_take_video_snapshot(LinphoneCall *call, const char *file);
|
||||
LinphoneError linphone_call_get_error(const LinphoneCall *call);
|
||||
const char *linphone_call_get_remote_user_agent(LinphoneCall *call);
|
||||
void *linphone_call_get_user_pointer(LinphoneCall *call);
|
||||
|
|
@ -837,7 +838,6 @@ void linphone_core_set_record_file(LinphoneCore *lc, const char *file);
|
|||
void linphone_core_play_dtmf(LinphoneCore *lc, char dtmf, int duration_ms);
|
||||
void linphone_core_stop_dtmf(LinphoneCore *lc);
|
||||
|
||||
|
||||
int linphone_core_get_current_call_duration(const LinphoneCore *lc);
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue