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

Open
dckc opened this issue Dec 3, 2015 · 19 comments
Open

screencasts of newly released features #1806

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

Comments

@dckc
Copy link

@dckc dckc commented Dec 3, 2015

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

This comment has been minimized.

Copy link
Member

@m-stein 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

This comment has been minimized.

Copy link
Author

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

This comment has been minimized.

Copy link
Member

@m-stein 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

This comment has been minimized.

Copy link
Member

@m-stein m-stein commented Feb 11, 2016

@dckc Maybe you can share your idea?

@dckc

This comment has been minimized.

Copy link
Author

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

This comment has been minimized.

Copy link
Member

@m-stein 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

This comment has been minimized.

Copy link
Author

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

This comment has been minimized.

Copy link
Author

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

@ehmry

This comment has been minimized.

Copy link
Member

@ehmry ehmry commented Apr 8, 2016

Can you upload it somewhere public?

@dckc

This comment has been minimized.

Copy link
Author

@dckc dckc commented Apr 8, 2016

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

@ssumpf

This comment has been minimized.

Copy link
Member

@ssumpf ssumpf commented Apr 8, 2016

@dckc: It works now ;)

@dckc

This comment has been minimized.

Copy link
Author

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

This comment has been minimized.

Copy link
Member

@chelmuth chelmuth commented Mar 14, 2019

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

@m-stein

This comment has been minimized.

Copy link
Member

@m-stein 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

This comment has been minimized.

Copy link
Member

@cnuke cnuke commented Mar 14, 2019

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

@m-stein

This comment has been minimized.

Copy link
Member

@m-stein 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

This comment has been minimized.

Copy link
Member

@cnuke 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 added 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 added 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 added 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

This comment has been minimized.

Copy link
Member

@m-stein 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

This comment has been minimized.

Copy link
Member

@m-stein 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 added 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 added 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 added 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 added a commit to alex-ab/genode-world that referenced this issue Jan 10, 2020
alex-ab added 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
6 participants
You can’t perform that action at this time.