-
Notifications
You must be signed in to change notification settings - Fork 250
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
screencasts of newly released features #1806
Comments
I've ported avconv and the avdevice lib and currently trying to feed the fbdev input of avconv with an interposed framebuffer session. |
Interesting... it didn't occur to me that you'd have to port screen-capture tools to genode to do this. |
Of course, it's only one option to do that. As parts of the avlib are already ported (avplay, avcodec, avfilter, avformat, avutil), I think it's a low-hanging fruit and has the benefit of bringing a broad feature set. Apart from the screencast topic, it can be used to convert all kinds of video and audio streams. I also thought about re-implementing how avconv utilizes libav to get a screen-capture component from scratch. But I've decided aginst it for now. |
@dckc Maybe you can share your idea? |
I didn't really have an idea. I hadn't thought it through. But as I mull over it now... When I ran the genode Aurora example, I didn't boot into genode. Genode ran under qemu or something in linux and it created one window; it didn't take over my whole screen. Likewise, the build process was just one of many windows on my machine. I would expect that normal screen cast recording tools running outside genode could capture what's going on in the genode build and run windows. But I have no direct experience with these tools. |
The LXFB file system provides the dataspace of a Framebuffer session as a Linux character-device file. The read and write operations are not supported for that file but an mmap operation. In contrast to the default mmap in Genodes Libc VFS that merely creates a copy of the Dataspace content, the LXFB mmap returns the virtual address of the original Dataspace after mapping the Dataspace locally. Furthermore, an LXFB file supports two new IOCTLs to read the variable as well as the fixed Screeninfo. The Screeninfos are set according to the mode information of the underlying Framebuffer session. Ref genodelabs#1806
EXPERIMENTAL: This is a temporary feature and should not be used broadly. The Framebuffer splitter provides an underlying Framebuffer session to multiple clients. Normally, Framebuffer drivers allow a single client only. The splitter simply forwards all requests to the underlying session without further management except that it serializes them as it has only one entrypoint. Ref genodelabs#1806
The port of avconv is done via the already existing contrib code of libav and the corresponding library ports. Additionally, as we want to use avconv with the fbdev input format, we have to build libav with avdevice in general. The commit adds a port of avdevice and adapts all other users of libav to the change. The avdevice port supports only fbdev by now. The commit adds the run/avconv test that records an instance of eglgears for 30 seconds. The output is written to persistent storage so that it can be accessed by the host system afterwards. Ref genodelabs#1806
I see 16.02 is out. Did anybody happen to record the process of grabbing the code and getting it going? |
I made a 6 minute screencast that shows getting the toolchain and following the getting started docs up to It could probably be edited down to something shorter, but it's something. p.s. I'm pruning large files from my google drive, so I moved this to archive.org. |
Can you upload it somewhere public? |
I thought I did... oops! I screwed up the sharing settings. Try again? |
@dckc: It works now ;) |
the .iso and .ova files for 16.08 are great... I got the seL4 example scenario running in just a few minutes. The hardest part was figuring out that all I needed to do was
|
Screenshots can now be done via http://genodians.org/ehmry/2019-01-31-flif_capture |
The initial |
No, there is, however, a proof-of-concept implementation on my libc_ioctl_fs branch. |
@cnuke A pity... but thanks for the update! Do you see the proof-of-concept make its way to master in the near future? I think, especially in the context of our current priorities, screencasts would be a really helpful thing to have. |
I do not plan to actively pursue it for the time being (the commits might need to be adapted for the recent VFS changes but should work so far - the Device_file_system needs to be reworked to be fit for upstreaming it though). Regarding creating screencasts in Sculpt, you could easily provide a pkg archive whose bin archive contains all the changes you might need in the binaries as interims solution. |
The LXFB file system provides the dataspace of a Framebuffer session as a Linux character-device file. The read and write operations are not supported for that file but an mmap operation. In contrast to the default mmap in Genodes Libc VFS that merely creates a copy of the Dataspace content, the LXFB mmap returns the virtual address of the original Dataspace after mapping the Dataspace locally. Furthermore, an LXFB file supports two new IOCTLs to read the variable as well as the fixed Screeninfo. The Screeninfos are set according to the mode information of the underlying Framebuffer session. Ref genodelabs#1806
EXPERIMENTAL: This is a temporary feature and should not be used broadly. The Framebuffer splitter provides an underlying Framebuffer session to multiple clients. Normally, Framebuffer drivers allow a single client only. The splitter simply forwards all requests to the underlying session without further management except that it serializes them as it has only one entrypoint. Ref genodelabs#1806
The port of avconv is done via the already existing contrib code of libav and the corresponding library ports. Additionally, as we want to use avconv with the fbdev input format, we have to build libav with avdevice in general. The commit adds a port of avdevice and adapts all other users of libav to the change. The avdevice port supports only fbdev by now. The commit adds the run/avconv test that records an instance of eglgears for 30 seconds. The output is written to persistent storage so that it can be accessed by the host system afterwards. Ref genodelabs#1806
I've rebased my old avconv work to staging and the screencast demo is almost running again (using my lxfb file system addition for vfs/libc): Next, I'll try to create source archives and a package out of this and then to deploy it on my sculpt machine. |
The demo runs now and avconv seems to read the framebuffer regularly with the right screen settings but for some reason it doesn't produce a valid output file nor does it finish after the configured time: |
EXPERIMENTAL: This is a temporary feature and should not be used broadly. The Framebuffer splitter provides an underlying Framebuffer session to multiple clients. Normally, Framebuffer drivers allow a single client only. The splitter simply forwards all requests to the underlying session without further management except that it serializes them as it has only one entrypoint. Ref genodelabs#1806
The LXFB file system provides the dataspace of a Framebuffer session as a Linux character-device file. The read and write operations are not supported for that file but an mmap operation. In contrast to the default mmap in Genodes Libc VFS that merely creates a copy of the Dataspace content, the LXFB mmap returns the virtual address of the original Dataspace after mapping the Dataspace locally. Furthermore, an LXFB file supports two new IOCTLs to read the variable as well as the fixed Screeninfo. The Screeninfos are set according to the mode information of the underlying Framebuffer session. Ref genodelabs#1806
The LXFB file system provides the dataspace of a Framebuffer session as a Linux character-device file. The read and write operations are not supported for that file but an mmap operation. In contrast to the default mmap in Genodes Libc VFS that merely creates a copy of the Dataspace content, the LXFB mmap returns the virtual address of the original Dataspace after mapping the Dataspace locally. Furthermore, an LXFB file supports two new IOCTLs to read the variable as well as the fixed Screeninfo. The Screeninfos are set according to the mode information of the underlying Framebuffer session. Ref genodelabs#1806
depends on genodelabs/genode#1806
EXPERIMENTAL: This is a temporary feature and should not be used broadly. The Framebuffer splitter provides an underlying Framebuffer session to multiple clients. Normally, Framebuffer drivers allow a single client only. The splitter simply forwards all requests to the underlying session without further management except that it serializes them as it has only one entrypoint. Ref genodelabs#1806
The LXFB file system provides the dataspace of a Framebuffer session as a Linux character-device file. The read and write operations are not supported for that file but an mmap operation. In contrast to the default mmap in Genodes Libc VFS that merely creates a copy of the Dataspace content, the LXFB mmap returns the virtual address of the original Dataspace after mapping the Dataspace locally. Furthermore, an LXFB file supports two new IOCTLs to read the variable as well as the fixed Screeninfo. The Screeninfos are set according to the mode information of the underlying Framebuffer session. Ref genodelabs#1806
We side-stepped the technicalities by using Sculpt with an HDMI grabber. |
See #1000 (comment)
The text was updated successfully, but these errors were encountered: