[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Redisplay hook
From: |
raman |
Subject: |
Re: Redisplay hook |
Date: |
Mon, 04 Jul 2016 14:57:39 -0700 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.0.95 (gnu/linux) |
Clément Pit--Claudel <address@hidden> writes:
Could you try capturing audio as well? Would help recording demos of
emacspeak:-)> On 2016-07-04 16:37, Robert Weiner wrote:
>>> Additionally, since Emacs is driving, I can record plenty of
>>> per-frame data, such as which key is being pressed with each frame.
>>> Here's an example, which was fairly easy to assemble using this new
>>> hook and a bit of ImageMagick:
>>> http://web.mit.edu/cpitcla/www/emacs-screencast-annot.gif (it may
>>> take a bit of time to load). What do you think of the result?
>>
>> This is great and I would love to see this as a package and see it
>> explained in more detail.. A simple way to capture Emacs
>> screencasts, potentially with an audio overlay, would lead to many
>> more demonstrations of Emacs packages leading to broader
>> understanding and usage.
>
> Thanks Bob :) Here's a quick outline of how it's done; hopefully we can
> implement the necessary hook, and then I'll make an ELPA package out of it.
>
> Essentially, my code adds two hooks:
>
> - A pre-command-hook, to update a variable tracking (this-command-keys-vector)
>
> - A post-display-hook, to capture screenshots.
>
> The post-display hook records the current time and the current value of
> (this-command-keys-vector), then synchronously calls ‘xwd’ to take a
> screenshot
> (‘import’ would also work, but it is much slower). The resulting file name is
> saved into a list of captured frames (annotated with the current time and
> value
> of (this-command-keys-vector))
>
> Finally, to finish the capture, I run a humongous ImageMagick command to
> stitch
> together all frames and add text overlays. The delay between consecutive
> frames
> is computed using the timestamps recorded in each frame.
>
> The implementation of the full thing is pretty short (about 200 lines), and it
> works fairly well. The one downside is that the temporary files that it
> generates tend to take a lot of space (about 3.5MB per screenshot). Saving
> compressed screenshots is possible, but it tends to slow Emacs down more
> significantly. Of course, one could imagine capturing uncompressed frames,
> and
> compressing them in a separate thread; I have not investigated this option
> yet.
> Alternatively, one could measure the time taken to capture the frame, and
> adjust
> inter-frames delays in proportion when generating the movie.
>
> I'll send the code once I have a bit of time to clean it up.
>
> Cheers,
> Clément.
>
--
- Re: Redisplay hook, (continued)
- Re: Redisplay hook, Eli Zaretskii, 2016/07/04
- Re: Redisplay hook, Stefan Monnier, 2016/07/04
- Re: Redisplay hook, Eli Zaretskii, 2016/07/04
- Re: Redisplay hook, Clément Pit--Claudel, 2016/07/04
- Re: Redisplay hook, Robert Weiner, 2016/07/04
- Re: Redisplay hook, Clément Pit--Claudel, 2016/07/04
- Re: Redisplay hook, Robert Weiner, 2016/07/04
- Re: Redisplay hook, Clément Pit--Claudel, 2016/07/04
- RE: Redisplay hook, Drew Adams, 2016/07/04
- Re: Redisplay hook, Clément Pit--Claudel, 2016/07/04
- Re: Redisplay hook,
raman <=
- Re: Redisplay hook, Clément Pit--Claudel, 2016/07/04
- Re: Redisplay hook, Richard Stallman, 2016/07/05
- Re: Redisplay hook, Clément Pit--Claudel, 2016/07/05
Re: Redisplay hook, Richard Stallman, 2016/07/03
Re: Redisplay hook, Mark Oteiza, 2016/07/03
Re: Redisplay hook, Eli Zaretskii, 2016/07/03
Re: Redisplay hook, Andreas Schwab, 2016/07/04
Re: Redisplay hook, Eli Zaretskii, 2016/07/04