-
Notifications
You must be signed in to change notification settings - Fork 1
/
TODO
115 lines (77 loc) · 4.4 KB
/
TODO
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
LibPlay TODO -- Tasks that need implementing.
* KNOWN BUGS
+ play/play0.c: Fix play_get_property when property stores an object.
We need to add a new test for property "scene" of media. And after
fixing this we need to update 'tests/test-lua-play0-media-get.lua'.
+ lib/lp-scene.c: Handle window closing gracefully.
When the video sink window is closed the sink posts an error to
pipeline. Currently, we're not handling this error---the application
simply crashes due to an unmet assertion. One way of handling it is by
posting an lp_EventQuit any client blocked on lp_event_receive(). This
way the client is resumed with a quit event.
+ lib/lp-scene.c: Handle scene bootstrap errors gracefully.
Cf. lp_scene_constructed(). We're assuming that scene_state_unlocked()
will always work.
+ lib/lp-media.c: Handle the destruction of individual media objects.
Currently, we do not support the destruction of individual media
objects---only the whole scene may be destroyed. One possible way to
cope with this is via some _lp_media_make_orphan() call, which could
stop the media object and set its parent scene to NULL.
This bug also affects the Lua bindings. It prevents garbage collector
from unref-ing the media object in __l_media_gc().
+ tests/test-lp-media-stop-random.c: Check random failures.
The failures are probably due to the assertion on lp_event_stop() call.
In the test, before stopping the media object we must be sure that it's
started.
+ tests/test-lp-media-stop-broken-audio.c: Check media stop.
The test is failing cause its video file has an empty audio stream. We
can start the video, but not stop it. For some reason, the stop-probe
does not get called for the audio pad.
* FEATURES OR PROBLEMS
+ lib/lp-media.c: Add rate parameter to lp_media_seek.
Preliminary tests with positive rates (fast-forwarding) are promising.
But in order for it to work we need to add the pitch filter (or any
other filter that handles rate changes) to the audio graph of media
objects. Negative rates are more problematic though. They didn't work
as expected probably due to the overhead imposed on the decoder. Maybe
we could use buffer queues (or uridecodebin buffering) to alleviate the
decoder's overhead.
+ lib/lp-media.c: Make full_uri a read-only media property.
So users may query the real URI that is being used by the player.
+ lib/lp-media.c: Handle more async errors.
Currently, we only handle a specific type of async start error.
We need to detect and handle other async errors.
+ lib/lp-scene.c: Use fakesrc to generate a blank video stream in scene.
Currently, we're using videotestsrc for this job, which is overkill.
Moreover, it cannot generate a transparent stream. We could use the
fakesrc element, e.g.,
gst-launch-1.0 fakesrc filltype=2 format=3
! capsfilter
caps="video/x-raw,format=ARGB,framerate=0/1,width=800,height=600"
! videoconvert ! imagefreeze ! compositor name=comp sink_0::alpha=0
! autovideosink videotestsrc ! comp.
+ lib/lp-scene.c, lib/lp-media.c: Expose text properties
The textoverlay element has lots of properties to control the appearance
and position of the overlaid text. We could expose these as
properties in the lp_Scene and lp_Media APIs.
+ lib/lp-media.c: Add support to URIs pointing to text files.
We could use the textrender element to render text files, e.g.,
gst-launch-1.0 filesrc location=TEXT-FILE
! capsfilter caps=text/x-raw,format=utf8 ! textrender ! imagefreeze
! compositor ! videoconvert ! xvimagesink
+ Generate API documentation using gtk-doc.
Cf. GLib sources.
* OPTIMIZATION AND CLEAN UP
+ tests/test-lp-media-start-fail.c: Check leaks reported by Valgrind.
============================================================================
Copyright (C) 2015-2018 PUC-Rio/Laboratorio TeleMidia
Permission is granted to copy, distribute and/or modify this document under
the terms of the GNU Free Documentation License, Version 1.3 or any later
version published by the Free Software Foundation; with no Invariant
Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy
of the license is included in the "GNU Free Documentation License" file as
part of this distribution.
Local Variables:
mode: outline
outline-regexp: " *[-+*.] \\|"
End: