[MPlayer-dev-eng] [PATCH] vf_screenshot, output filename corresponding to the played file
Michael Niedermayer
michaelni at gmx.at
Fri Nov 28 22:47:26 CET 2008
On Tue, Nov 25, 2008 at 11:26:49PM +0300, Ruslan Savchenko wrote:
> On Tue, Nov 25, 2008 at 10:19 PM, Michael Niedermayer <michaelni at gmx.at> wrote:
> > On Sun, Nov 23, 2008 at 07:59:26PM +0300, Ruslan Savchenko wrote:
[...]
> >
> >
> > [...]
> >
> >> diff --git a/libmpcodecs/vf_screenshot.c b/libmpcodecs/vf_screenshot.c
> >> index afc6770..eb122bb 100644
> >> --- a/libmpcodecs/vf_screenshot.c
> >> +++ b/libmpcodecs/vf_screenshot.c
> >> @@ -26,10 +26,12 @@
> >> #include "m_struct.h"
> >>
> >> #define SHOT_FNAME_LENGTH 102
> >> +#define TIMESTAMP_LENGTH 20
> >>
> >> struct vf_priv_s {
> >> int frameno;
> >> char *fname;
> >> + int style;
> >> /// shot stores current screenshot mode:
> >> /// 0: don't take screenshots
> >> /// 1: take single screenshot, reset to 0 afterwards
> >> @@ -97,8 +99,37 @@ static int fexists(char *fname)
> >> else return 0;
> >> }
> >>
> >> -static void gen_fname(struct vf_priv_s* priv)
> >> +static void gen_fname(struct vf_priv_s* priv, double pts)
> >> {
> >> + char *base = "shot";
> >> + char tstamp[TIMESTAMP_LENGTH];
> >> + char ts_sep;
> >
> >> + uint32_t hour = (uint32_t) (pts/3600);
> >> + uint32_t min = (uint32_t) (pts/60) % 60;
> >> + uint32_t sec = (uint32_t) pts % 60;
> >> + uint32_t msec = (uint32_t) (pts*100) % 100;
> >
> > this code does not look like it could work reliably
> > double is not a real number in the mathematical sense its not exact,
> > the way it rounds can be different in each calculation
>
> Is the following code ok? ipts handles 2^32 msecs which is more than
> 490 days video length.
>
> long int ipts;
> uint32_t hour, min, sec, msec;
> ipts = lrint(pts * 100);
> hour = (uint32_t) (ipts/360000);
> min = (uint32_t) (ipts/6000) % 60;
> sec = (uint32_t) (ipts/100) % 60;
> msec = (uint32_t) (ipts) % 100;
i would use a int64_t in there
except that it does look ok
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
I know you won't believe me, but the highest form of Human Excellence is
to question oneself and others. -- Socrates
-------------- 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/20081128/748ad114/attachment.pgp>
More information about the MPlayer-dev-eng
mailing list