blob: b583ea3368ceb4c7e8fa48c12fbd3a77bc4b69c0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
//not arranged
- 0: agree over a common coding style (I'd suggest gobject/gstreamer plus gnome
coding guidelines) as pointed here:
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/faq/html/chapter-developing.html
cap: I am ok, but I am not using emacs, so I let you run the re-indent script
cap: Can someone RE execute a re-indent script ? thx because it seems the first execution failed
(for example gst-libs/gst/gl/gstgldisplay.c seems to be NOT indented)
(DONE) - 1: make Filippo's GstGLEffects work on this repository.
(DONE) - 2: use GstGLShader in the GLSL colorspace conversion.
(DONE) - 3: add GLEW check in configure.ac
(DONE) - 4: make the plugin (any pipeline) properly shutdown when Shader compilation failed.
(using "return GST_FLOW_UNEXPECTED")
(DONE) - 5: make the plugin (any pipeline) properly shutdown when one of the "check requirements" failed.
(for example when FBO extension is not available)
For now it properly shutdown only when using the glimagesink
(DONE) - 6: make an example named "filterxoverlay" similar to gtkxoverlay one. But use a more complex pipeline
involving several glfilters. In order to test switching bettween gst states on it.
- 7: put the pipelines listed in tests/pipelines to an automated test that attempts to reach some states.
- 8: make two elements named "gltee" (attach as much texture (to its fbo) as tee src pads) and "glqueue".
In order to have something like that:
videotestsrc ! glupload ! glfilterA ! gltee name=t \
t. ! glqueue ! glfilterB ! glimagesink \
t. ! glqueue ! glfilterC ! glimagesink
Assuming glfilterA is GPU consumming and so do not need to duplicate it.
- 9: rewrite the freeglut part that I minimized. Although I removed 90% of the orignal code,
it should be rewrite with the GLib API. To have a better design and handle X/WIN32 with interfaces
instead of having a lot of "define WIN32" scopes.
And make it thread safe in order to have one glthread per GstGLDisplay, instead of having a global glthread.
The tests/examples/doublecube test shows the limitation of having only one (global) glthread.
(I am not really sure about this last remark since I made a modification in this example. Now the video speed is
very clean, even after moving/resizing the window).
Maybe we just should use the lib GtkGL if there is a way to give a winId.
Filippo:
I don't know too much about it but afaik it's almost unmaintained (the
wiki says it has new maintainers but the last release is from 2006) and
it's a library to embed opengl into a gtk app or use it to draw
opengl-based widgets. I don't see how it could fit our needs, we just
need a cross platform wrapper library around those glx/wgl functions.
Anyway, I don't know, I could be wrong.
Cap: ok I agree with that.
- 10: make colorspace conversion through ColorMatrix when GLSL (and mesa YCbCr) is not available and when imaging extension
is available.
- 11: make a test to estimate how much is a colorspace conversion. I mean compare an output frame
to reference frame and estimate the differences. (usefull to compare several implementations)
(ALMOST DONE) - 12: write a cmake build or an other well known opensource and multiplatform builder.
- 13: test colorspace conversion with Apple YCbCr extension.
- 14: test again the plugin on MAC.
- 15: test the plugin on WIN CE and some other embedded operating system.
- 16: If it exists a tool that can automatically convert fragment_shader code to fragment_program code
then we would be able to do some basic stuffs as colorspace conversion even if GLSL is not available.
(And so have some more cool stuffs work on Intel card for example)
cg can convert GLSL code to ARB_fp/ARB_vp.
- 17: add a generic way to check that a given extension is available. (and set isAlive to false..)
(for examples gleffects does not check you have shaders available so it can cause segfault.)
(whereas using "gst_gl_display_gen_shader", the check is done)
- 18: use a custom debug category in GstGLShader instead of g_debug etc..
fargiolas: GstGLShader is a generic object not a gst_object, when I wrote it I
asked at gstreamer developers which debugging system was better suited and
gst_debug was not the proper choice. Maybe we can disable them is by setting
a print handler (g_set_print_handler) and enabling them with some environment variable.
- 19: update authors from the CVS repository
- 20: update AG_GST_CHECK_PLUGIN(gl) in configure.ac in order to correctly list
the gl elements that would be built
|