Skip to content
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

Closed
dckc opened this issue Dec 3, 2015 · 20 comments
Closed

screencasts of newly released features #1806

dckc opened this issue Dec 3, 2015 · 20 comments
Assignees
Labels

Comments

@dckc
Copy link

dckc commented Dec 3, 2015

See #1000 (comment)

@chelmuth chelmuth added the doc label Dec 10, 2015
@m-stein m-stein self-assigned this Feb 10, 2016
@m-stein
Copy link
Contributor

m-stein commented Feb 10, 2016

I've ported avconv and the avdevice lib and currently trying to feed the fbdev input of avconv with an interposed framebuffer session.

@dckc
Copy link
Author

dckc commented Feb 10, 2016

Interesting... it didn't occur to me that you'd have to port screen-capture tools to genode to do this.

@m-stein
Copy link
Contributor

m-stein commented Feb 11, 2016

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.

@m-stein
Copy link
Contributor

m-stein commented Feb 11, 2016

@dckc Maybe you can share your idea?

@dckc
Copy link
Author

dckc commented Feb 11, 2016

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.

m-stein pushed a commit to m-stein/genode that referenced this issue Feb 23, 2016
m-stein pushed a commit to m-stein/genode that referenced this issue Feb 23, 2016
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
m-stein pushed a commit to m-stein/genode that referenced this issue Feb 23, 2016
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
m-stein pushed a commit to m-stein/genode that referenced this issue Feb 23, 2016
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
@m-stein
Copy link
Contributor

m-stein commented Feb 23, 2016

@chelmuth I've uploaded a state (branch) that might be added to the upcoming release as port of avconv. This state can be used also to create screencasts of the Turmvilla scenario. I'll provide details about that in my corresponding release notes contribution.

@dckc
Copy link
Author

dckc commented Apr 7, 2016

I see 16.02 is out. Did anybody happen to record the process of grabbing the code and getting it going?

@dckc
Copy link
Author

dckc commented Apr 7, 2016

I made a 6 minute screencast that shows getting the toolchain and following the getting started docs up to make run/demo.

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.

@ehmry
Copy link
Contributor

ehmry commented Apr 8, 2016

Can you upload it somewhere public?

@dckc
Copy link
Author

dckc commented Apr 8, 2016

I thought I did... oops! I screwed up the sharing settings. Try again?

@ssumpf
Copy link
Member

ssumpf commented Apr 8, 2016

@dckc: It works now ;)

@dckc
Copy link
Author

dckc commented Sep 15, 2016

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

  • get the .iso flie
  • get the .ova file; open it to start virtualbox
  • use settings to point the ide controller to the .iso file
  • start the VM
    and voila!

@chelmuth
Copy link
Member

Screenshots can now be done via http://genodians.org/ehmry/2019-01-31-flif_capture

@m-stein
Copy link
Contributor

m-stein commented Mar 14, 2019

The initial avconv already worked and I also used it to publish a pretty fluent Genode screencast. The only thing that kept us from merging the port was that it uses two ioctls that were implemented the old way and we planned to introduce a new way to do this (via a common file for each ioctl). Has the new way, in the mean time, become stable and should I try to rebase the port?

@cnuke
Copy link
Member

cnuke commented Mar 14, 2019

No, there is, however, a proof-of-concept implementation on my libc_ioctl_fs branch.

@m-stein
Copy link
Contributor

m-stein commented Mar 14, 2019

@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.

@cnuke
Copy link
Member

cnuke commented Mar 14, 2019

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.

m-stein pushed a commit to m-stein/genode that referenced this issue Mar 26, 2019
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
m-stein pushed a commit to m-stein/genode that referenced this issue Mar 26, 2019
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
m-stein pushed a commit to m-stein/genode that referenced this issue Mar 26, 2019
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
@m-stein
Copy link
Contributor

m-stein commented Mar 26, 2019

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):
https://github.com/m-stein/genode/commits/1806_screencasts_of_newly_released_features

Next, I'll try to create source archives and a package out of this and then to deploy it on my sculpt machine.

@m-stein
Copy link
Contributor

m-stein commented Mar 27, 2019

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:
https://github.com/m-stein/genode/commits/1806_screencasts_of_newly_released_features
https://github.com/m-stein/genode-world/commits/1806_screencasts_of_newly_released_features

alex-ab pushed a commit to alex-ab/genode that referenced this issue Dec 18, 2019
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
alex-ab pushed a commit to alex-ab/genode that referenced this issue Dec 18, 2019
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
alex-ab pushed a commit to alex-ab/genode that referenced this issue Dec 19, 2019
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
alex-ab added a commit to alex-ab/genode that referenced this issue Dec 19, 2019
alex-ab added a commit to alex-ab/genode that referenced this issue Dec 19, 2019
alex-ab added a commit to alex-ab/genode that referenced this issue Dec 19, 2019
alex-ab added a commit to alex-ab/genode that referenced this issue Dec 20, 2019
alex-ab added a commit to alex-ab/genode that referenced this issue Dec 20, 2019
alex-ab added a commit to alex-ab/genode that referenced this issue Dec 20, 2019
alex-ab added a commit to alex-ab/genode that referenced this issue Dec 20, 2019
alex-ab pushed a commit to alex-ab/genode-world that referenced this issue Jan 10, 2020
alex-ab pushed a commit to alex-ab/genode-world that referenced this issue Jan 10, 2020
alex-ab added a commit to alex-ab/genode that referenced this issue Jan 10, 2020
alex-ab pushed a commit to alex-ab/genode that referenced this issue Mar 17, 2020
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
alex-ab pushed a commit to alex-ab/genode that referenced this issue Mar 17, 2020
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
alex-ab added a commit to alex-ab/genode that referenced this issue Mar 17, 2020
alex-ab added a commit to alex-ab/genode that referenced this issue Mar 17, 2020
alex-ab added a commit to alex-ab/genode that referenced this issue Mar 17, 2020
alex-ab added a commit to alex-ab/genode that referenced this issue Mar 17, 2020
alex-ab added a commit to alex-ab/genode that referenced this issue Mar 17, 2020
@nfeske
Copy link
Member

nfeske commented Feb 26, 2021

We side-stepped the technicalities by using Sculpt with an HDMI grabber.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

7 participants