Commit 17818d7b authored by Rafaël Carré's avatar Rafaël Carré

Use str_format_meta for snapshots

Fixes: #9938
parent 3514f7b0
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
# include "config.h" # include "config.h"
#endif #endif
#include <assert.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/time.h> #include <sys/time.h>
...@@ -36,8 +37,10 @@ ...@@ -36,8 +37,10 @@
#include <vlc_fs.h> #include <vlc_fs.h>
#include <vlc_strings.h> #include <vlc_strings.h>
#include <vlc_block.h> #include <vlc_block.h>
#include <vlc_vout.h>
#include "snapshot.h" #include "snapshot.h"
#include "vout_internal.h"
/* */ /* */
void vout_snapshot_Init(vout_snapshot_t *snap) void vout_snapshot_Init(vout_snapshot_t *snap)
...@@ -137,12 +140,13 @@ char *vout_snapshot_GetDirectory(void) ...@@ -137,12 +140,13 @@ char *vout_snapshot_GetDirectory(void)
/* */ /* */
int vout_snapshot_SaveImage(char **name, int *sequential, int vout_snapshot_SaveImage(char **name, int *sequential,
const block_t *image, const block_t *image,
vlc_object_t *object, vout_thread_t *p_vout,
const vout_snapshot_save_cfg_t *cfg) const vout_snapshot_save_cfg_t *cfg)
{ {
/* */ /* */
char *filename; char *filename;
DIR *pathdir = vlc_opendir(cfg->path); DIR *pathdir = vlc_opendir(cfg->path);
input_thread_t *input = (input_thread_t*)p_vout->p->input;
if (pathdir != NULL) { if (pathdir != NULL) {
/* The use specified a directory path */ /* The use specified a directory path */
closedir(pathdir); closedir(pathdir);
...@@ -150,7 +154,7 @@ int vout_snapshot_SaveImage(char **name, int *sequential, ...@@ -150,7 +154,7 @@ int vout_snapshot_SaveImage(char **name, int *sequential,
/* */ /* */
char *prefix = NULL; char *prefix = NULL;
if (cfg->prefix_fmt) if (cfg->prefix_fmt)
prefix = str_format_time(cfg->prefix_fmt); prefix = str_format(input, cfg->prefix_fmt);
if (prefix) if (prefix)
filename_sanitize(prefix); filename_sanitize(prefix);
else { else {
...@@ -194,7 +198,7 @@ int vout_snapshot_SaveImage(char **name, int *sequential, ...@@ -194,7 +198,7 @@ int vout_snapshot_SaveImage(char **name, int *sequential,
free(prefix); free(prefix);
} else { } else {
/* The user specified a full path name (including file name) */ /* The user specified a full path name (including file name) */
filename = str_format_time(cfg->path); filename = str_format(input, cfg->path);
path_sanitize(filename); path_sanitize(filename);
} }
...@@ -204,12 +208,12 @@ int vout_snapshot_SaveImage(char **name, int *sequential, ...@@ -204,12 +208,12 @@ int vout_snapshot_SaveImage(char **name, int *sequential,
/* Save the snapshot */ /* Save the snapshot */
FILE *file = vlc_fopen(filename, "wb"); FILE *file = vlc_fopen(filename, "wb");
if (!file) { if (!file) {
msg_Err(object, "Failed to open '%s'", filename); msg_Err(p_vout, "Failed to open '%s'", filename);
free(filename); free(filename);
goto error; goto error;
} }
if (fwrite(image->p_buffer, image->i_buffer, 1, file) != 1) { if (fwrite(image->p_buffer, image->i_buffer, 1, file) != 1) {
msg_Err(object, "Failed to write to '%s'", filename); msg_Err(p_vout, "Failed to write to '%s'", filename);
fclose(file); fclose(file);
free(filename); free(filename);
goto error; goto error;
...@@ -225,7 +229,7 @@ int vout_snapshot_SaveImage(char **name, int *sequential, ...@@ -225,7 +229,7 @@ int vout_snapshot_SaveImage(char **name, int *sequential,
return VLC_SUCCESS; return VLC_SUCCESS;
error: error:
msg_Err(object, "could not save snapshot"); msg_Err(p_vout, "could not save snapshot");
return VLC_EGENERIC; return VLC_EGENERIC;
} }
...@@ -77,7 +77,7 @@ typedef struct { ...@@ -77,7 +77,7 @@ typedef struct {
*/ */
int vout_snapshot_SaveImage(char **name, int *sequential, int vout_snapshot_SaveImage(char **name, int *sequential,
const block_t *image, const block_t *image,
vlc_object_t *object, vout_thread_t *p_vout,
const vout_snapshot_save_cfg_t *cfg); const vout_snapshot_save_cfg_t *cfg);
#endif #endif
...@@ -431,7 +431,7 @@ static void VoutSaveSnapshot( vout_thread_t *p_vout ) ...@@ -431,7 +431,7 @@ static void VoutSaveSnapshot( vout_thread_t *p_vout )
char *psz_filename; char *psz_filename;
int i_sequence; int i_sequence;
if (vout_snapshot_SaveImage( &psz_filename, &i_sequence, if (vout_snapshot_SaveImage( &psz_filename, &i_sequence,
p_image, VLC_OBJECT(p_vout), &cfg ) ) p_image, p_vout, &cfg ) )
goto exit; goto exit;
if( cfg.is_sequential ) if( cfg.is_sequential )
var_SetInteger( p_vout, "snapshot-num", i_sequence + 1 ); var_SetInteger( p_vout, "snapshot-num", i_sequence + 1 );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment