[MPlayer-dev-eng] [PATCH] vf_screenshot, output filename corresponding to the played file

Michael Niedermayer michaelni at gmx.at
Sat Nov 15 00:47:30 CET 2008


On Sat, Nov 15, 2008 at 02:28:03AM +0300, Ruslan Savchenko wrote:
> On Sat, Nov 15, 2008 at 1:16 AM, Michael Niedermayer <michaelni at gmx.at> wrote:
> > On Fri, Nov 14, 2008 at 10:24:47PM +0300, Ruslan Savchenko wrote:
[...]
> >
> > also does this code work when there are several files on the command line?
> > or does it always end up using the first filename?
> 
> It works with several files. You can even specify different options as in here:
> mplayer video1.mkv -vf screenshot=1 video2.mkv video3.mkv -vf screenshot
> I entered 's' once in each file, this produced:
> *** screenshot 'video1.mkv.[00:00:00.46].png' ***
> *** screenshot 'video2.mkv.[00:02:30.38].png' ***
> *** screenshot 'shot0002.png' ***
> 
> (shot0002.png is because i've already had shot0001.png in my directory)

Why shot000?.png instead of video3.mkv.[00:XX:YY.ZZ].png ?


> 
> >> +        /* 8 is length of ".[].png" plus '\0' */
> >> +        n = strlen(priv->fnamebase) + strlen(tstamp) + 8;
> >
> >> +        priv->fname = malloc(n);
> >> +        snprintf(priv->fname, n, "%s.[%s].png", priv->fnamebase, tstamp);
> >
> > did i miss the free() or is this a memleak?
> 
> I believe i do free() in uninit():

is uninit() called after each screenshot ?

[...]

> >
> >
> > [...]
> >> Index: mencoder.c
> >> ===================================================================
> >> --- mencoder.c        (revision 27909)
> >> +++ mencoder.c        (working copy)
> >> @@ -115,6 +115,7 @@
> >>  char* audio_lang=NULL;
> >>  char* dvdsub_lang=NULL;
> >>  static char* spudec_ifo=NULL;
> >> +char* filename=NULL;
> >>
> >>  static char** audio_codec_list=NULL;  // override audio codec
> >>  static char** video_codec_list=NULL;  // override video codec
> >> @@ -397,7 +398,6 @@
> >>  double v_timer_corr=0;
> >>
> >>  m_entry_t* filelist = NULL;
> >> -char* filename=NULL;
> >>
> >>  int decoded_frameno=0;
> >>  int next_frameno=-1;
> >
> > why?
> 
> Because in mencoder.c "filename" is declared inside main(). In
> mplayer.c "filename" is global and I moved it to global in mencoder.c.

right, mplayer doesnt use indention, how could i forget, sorry.
the filename moving is ok IMHO, mplayer & mencoder should either both
or none have a global filename.

also spliting is always better than not spliting.
And the more independant patches are the quicker some will be applied

[...]
> --- libmpcodecs/vf_screenshot.c	2008-11-15 01:50:22.000000000 +0300
> +++ ../mplayerb/libmpcodecs/vf_screenshot.c	2008-11-15 02:09:52.000000000 +0300
> @@ -157,7 +157,7 @@
>          /* allocate space to handle "shotXXXX.png" filenames */
>          priv->fname = malloc(SHOT_FNAME_LENGTH);
>      do {
> -	snprintf (priv->fname, 100, "shot%04d.png", ++priv->frameno);
> +	snprintf (priv->fname, SHOT_FNAME_LENGTH, "shot%04d.png", ++priv->frameno);
>      } while (fexists(priv->fname) && priv->frameno < 100000);
>      if (fexists(priv->fname)) {
>  	priv->fname[0] = '\0';

if that didnt depend on the other patch, it would be ok

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Frequently ignored awnser#1 FFmpeg bugs should be sent to our bugtracker. User
questions about the command line tools should be sent to the ffmpeg-user ML.
And questions about how to use libav* should be sent to the libav-user ML.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/attachments/20081115/8117ad3e/attachment.pgp>


More information about the MPlayer-dev-eng mailing list