View Single Post
MSameer's Avatar
Posts: 605 | Thanked: 1,778 times | Joined on Feb 2008 @ Helsinki
#886
So more thoughts regarding camera:

- Camera in both N9 harmattan and Sailfish is built on top of GStreamer (0.10 branch) and both are using camerabin2
- Native camera in N9 is built on top of a home grown library but camera in sailfish is built on top of QtMultimedia
- Harmattan camera uses subdevsrc2 as the GStreamer source element while Sailfish uses droidcamsrc
- Harmattan video rendering is done via a custom gstreamer sink (gst-gltexture IIRC) but video rendering in sailfish is using droideglsink
- Harmattan uses the Meego GStreamer video rendering interface developed by Nokia while Sailfoish uses GStreamer video rendering interfaces developed by jolla.
- N9 used V4L2 and media controller API for camera and a custom set of OpenGLES2/EGL extensions developed by Nokia for zero copy video rendering
- Sailfish uses Android camera HAL and Android specific EGL extensions for zero-copy video playback.

Due to all the above, Sailfish native camera application will not work on N9 without modifications (Which cannot be done).

More on N9 camera stack:
There is subdevsrc2 which uses V4L2 and media controller kernel interfaces and there is libomap3camd (omap3 camera daemon library) which handles all the 3A (auto exposure, auto white balance and auto focus) as well as the high quality image capture. The video buffers are pushed from camera and being delivered to gst-gltexture sink.
The application then interacts with that sink via meeho textured video interface.

What is open and what is closed in N9 stack?
- subdevsrc is open
- omap3camd is closed
- gst-gltexture is closed
- meego gst interfaces are open.

I already reverse engineered the header file for omap3camd and managed to upgrade the legacy nokia contributed subdevsrc2 to the latest version so rebuilding that is not a problem.

What needs to be done:
1) take subdevsrc2 from nemo reporitories
2) take libomap3camd and its dependencies from harmattan.
3) use gst wayland sink for video rendering as a start
3) or develop a sink which uses the nokia specific extensions for zero copy rendering.
4) either tweak QtMultimedia and write a camera app on top of that
4) or use some other camera app built on top of GStreamer directly.

I just hope I have not missed anything. And of course I am posting that on behalf of myself and jolla should not take any responsibility of what I have typed here.
__________________
We need a coffee machine that doesn't ask for coffee beans every 10 hours
 

The Following 29 Users Say Thank You to MSameer For This Useful Post: