forked from Freescale/gstreamer-imx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
372 lines (284 loc) · 15.4 KB
/
ChangeLog
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
==== version 0.12.2 (2016-07-25) ====
* imxv4l2videosrc:
* Stricter checks for video device capabilities
* Add support for more video formats like 8/16-bit grayscale
* pxp: Fix incorrect return code which broke blitter with GStreamer 1.8
* blitter:
* Improvements in error logging
* Fixes for RGBx framebuffer format detection
* Fix for subtle tearing problem by implementing triple buffering
* audio:
* Replace objdump-based scan during build configuration
Codec filenames are instead moved to the C code; the libdir
path of the libfslaudiocodec.pc file is used to know where on
the target the files are placed
* Explicitely add the libfslaudiocodec.pc libdir to the MP3 encoder
Fixes build errors in buildroot
* Minor logging fixes
* misc:
* Proper check for region copies in phys_mem_meta
* Add missing G_END_DECLS lines in headers
==== version 0.12.1 (2016-04-06) ====
* compositor: Rename ImxCompositor(Pad) to ImxVideoCompositor(Pad)
* Add switches to wscript configuration to enable/disable plugins
Until now, all plugins were built (unless their dependencies were
missing). On some i.MX machines, some features are missing. For
example, the i.MX7 has no VPU. To ensure deterministic builds, it is
useful to selectively disable plugins in the build.
* ipu+pxp: : Fix deadlocks and incorrect logging in case of init error
This was causing a freeze if for example one tries to use PxP elements
on an i.MX6 Dual/Quad
* imxv4l2videosrc fixes and enhancements:
* fixes to interlacing support (incl. workarounds for analog TV input)
* remove format restriction in get_caps function
this removes the limitation on I420 formats
* simplified determination of fps (necessary due to driver limitations)
* eglvivsink: wayland: Do not commit before buffers are swapped
This fixes eglSwapBuffer swaps with damaged frames
* Documentation additions
Adds GPU memory leak notess to the FAQ
* vpu: encoder: Expose motion estimation range as property
* vpu: decoder: Drop output frame if its buffer cannot be allocated
==== version 0.12.0 (2015-12-29) ====
* vpu: Completely rewritten plugin code
The VPU elements are now based on libimxvpuapi instead of libfslvpuwrap.
This yields several benefits:
* Overall:
* Code is considerably clearer and easier to maintain
* libimxvpuapi logging fully integrated into the GStreamer logging
framework
* Encoder related:
* imxvpuenc_h264 inserts SPS/PPS data in front of I/IDR frames
* imxvpuenc_mjpeg's quality factor actually has an effect, and is
equivalent to the libjpeg's quality factor (it is used in exactly the
same way to scale the quantization matrix' coefficients)
* the encoder's output buffers no longer have to use DMA memory; they
use regular system memory instead
* Decoder related:
* new support in imxvpudec (referred to as "chroma interleaving") for
NV12, NV16, NV24 as output formats as an alternative to the I420,
Y42B, Y444 formats
* Removed all of the system frame number tracking code, since it is
unnecessary; Instead, the libimxvpuapi's context fields are used to
associate input/output frames with GstVideoCodecFrame system frame
numbers
* vpu: Add missing buffer pool unref'ing, which lead to memory leaks
(similar to the leak fix for the IPU)
* imxv4l2src fixes and enhancements:
* Add crop metadata to be able to let video transform and sink elements
downstream display a sub region of a captured frame
* Set the selected format instead of a format by default
This ensures that the element uses the width, height etc. of the format
that the device actually uses during operation
* Implement autofocus control based on GstPhotography, and make the
gstphotography library an imxv4l2videosrc dependency; if not found, it
will not be built
* Add missing break in switch-case block that lead to incorrect GLib
warnings
* Make sure the buffer array is freed *after* releasing all buffers
Previously, segmentation faults occasionally happened due to attempts
to access buffers that were freed before
* Use the framerate from the standard (PAL/NTSC/SECAM) and query the
actual fps the hardware uses
* eglvivsink fixes and enhancements:
* Remove extra g_free() calls, which lead to runtime errors
* Remove GLESv2 VIVANTE link dependencies
* Add Android platform
* Manually retrieve VIV direct texture functions
With this and the link dependency elimination, this means that for
platforms except the framebuffer one, no Vivante specific headers and
libraries are needed anymore
* Fix blocking issue in the Wayland platform mainloop
wl_display_dispatch can block, so wl_display_dispatch_pending is used
instead. Since the platform code uses wl_display_read_events, the
wl_display_dispatch usage was anyway incorrect (according to the
Wayland client API documentation).
* Improved and expanded documentation; there is now an FAQ page as well as
explanations for zerocopy and the blitter architecture as well as build
instructions for popular Linux embedded distributions
* pxp: NV16 *is* supported after all (it was actually a bug in GStreamer
pre-1.5.91)
NOTE: this does not break compatibility with GStreamer versions older
than 1.5.91
* compositor: Update backported aggregator code to GStreamer 1.6
* blitter fixes and enhancements:
* Error handling improvements
* Add missing buffer pool unref'ing, which lead to memory leaks
* Add missing compositor dependency to blitter base
* uniaudio fixes and enhancements:
* Only build the uniaudio plugin if at least one codec was found during
configuration
* Disable plugin if the gstaudio library is not available
* Add AAC profile field to the sink caps with GStreamer >= 1.4.4
The uniaudio AAC decoder only supports LC (low-complexity) AAC streams.
GStreamer's aacparse has a "profile" field in the caps since version
1.4.4. With this field, it is possible to limit the uniaudio AAC
decoder to LC. This way, GStreamer can auto-select a different AAC
decoder for streams that use other a profile other than the LC one.
* Fix wscripts for better Android support
* ipu: Increase fill frame width from 8 to 64 pixels to make IPU fill
operations work with pre-3.14 Freescale kernels
* g2d: Use padding pixels when setting surface parameters
This fixes G2D failures with frame sizes that aren't aligned
* Fix installation paths for the common, blitter, and compositor libraries
==== version 0.11.1 (2015-07-29) ====
* vpu: decoder: Keep track of unfinished gstvideo frames
This was causing pipeline errors and memory leaks with GStreamer 1.4
* blitter fixes and enhancements:
* Fix vsync setup in video sink base class
* Cropping reintroduced in video sinks and transform elements
* videotransform: offset, offset-end, and duration of input buffers are now
copied
* ipu: All pages are now cleared when page flipping is used (needed for vsync),
not just the first one
* compositor: Added support for cropping input streams
* imxv4l2src fixes and enhancements:
* Use GLib gchar instead of char
* Add support for imxv4l2://<devicename> URIs via the GstUriHandler
* Add special case to support YUYV data (GStreamer expects YUY2 in its place)
==== version 0.11.0 (2015-07-23) ====
* new common codebase for rectangular regions and video canvases
* new blitter-based video sink with full support for vsync to eliminate tearing
* complete rewrite of blitter base code to better support aspect ratio correction,
rotation, empty region filling, and compositing
* new compositor elements, API compatible with the upstream GStreamer compositor
These new elements allow for combining N input video streams into one output
stream with alpha blending, scaling, rotation, color space conversions etc.
and hardware accelerated via G2D, IPU, PxP
* vpu: decoder: Memory leaks fixed
Decoder is now drained when stopping
Fixed incorrect gst_allocator_free() call
GstImxPhysMemory slices weren't being freed properly
VPU allocator instances are now instantiated per-decoder
* vpu: encoder: Bitrate can now be set on the fly
* eglvivsink: In Wayland, window x/y coordinates are now supported
* several v4l2src fixes:
Removed experimental and deprectated WITH_CHIP_IDENTIFICATION ioctl
Use pixelformat reported by the driver instead of hardcoding I420
The format fourcc is now read properly (not just as a string)
Call VIDIOC_QUERYBUF twice to get a physical address (important for zerocopy)
Add interlace-mode to src caps to allow for deinterlacing camera feeds
If possible, the actual frame rate is retrieved
==== version 0.10.2 (2015-06-02) ====
* uniaudio: Create correct config header even if no codecs were found
This prevents compilation errors in this case
* g2d/ipu/pxp blitter sink: Respect aspect ratio also in 90/270 degree rotations
For these rotations, width and height have to be swapped prior to calculating
the aspect-corrected frame
* v4l2src: Call the buffer pool baseclass stop() function
This fixes segmentation faults during shutdown
* audio: new MP3 encoder element using the libfslcodec MP3 encoder
This encoder is suitable for real-time encoding, since it encodes much faster
than LAME for example (though not reaching LAME's compression efficiency)
* pxp: Remove broken/unsupported formats
PxP unfortunately does not have consistent format support; the formats that
actually work properly had to be determined empirically
* eglvivsink: Fix double mutex unlock
Double unlocks occurred in X11 builds with gst-play and gtk-play
* Cleanup phys mem meta naming
==== version 0.10.1 (2015-02-12) ====
* uniaudio: fix memory leak in decoder
Decoded buffers weren't freed properly, leading to rapidly
increasing memory leaks
* eglvivsink: fix deadlock
This deadlock occurred in the NULL->READY state change if said
state change failed
* vpu: encoder: pass input video codec state to derived classes
This is interesting for the MJPEG encoder for example, to properly
choose the configured color format
* vpu: decoder: handle missing width and height values in caps
Typically, containers do have this information and set it in the caps,
but there are corner cases where this isn't true. Before, these caused
assertions inside the decoder. Now they are handled properly. (The
values detected by the VPU are used then.)
* fixed video info size bug in phys mem buffer pool
This bug caused a mismatch between the configured size and the actual
size of video buffers. This lead to excessive physmem free calls
in the buffer pool, which in turn means that physical memory was
constantly being allocated and freed.
* fixes to base blitter:
* don't draw anything if the video region is invisible
* set output and video region visibility to FULL by default, fixing
some cases of "green screen" output (which means nothing was being
blitted)
==== version 0.10.0 (2014-12-27) ====
* new codebase for 2D blitter based video sinks and transform elements
The new code introduces the GstImxBaseBlitter base class, which is the
foundation for blitter-based elements. This class, along with the
GstImxBlitterVideoTransform and GstImxBlitterVideoSink base classes,
take care of most of the work for blitter-based operations. Derived
classes mostly just implement their blitter specific parts on top.
This makes it easy to support G2D, IPU, and PxP based operations.
The GstImxBlitterVideoSink also preserves the aspect ratio, and
areas left empty by the correction are filled with black pixels.
* new G2D elements: imxg2dvideosink imxg2dvideotransform
G2D is an API on top of the Vivante GPU's Pixel Engine. Starting with
this release, imxg2dvideosink is considered the video sink of choice,
along with imxeglvivsink. G2D is generally easier to operate than IPU.
* new PxP elements: imxpxpvideosink imxpxpvideotransform
The PxP system is particularly useful with cameras, since it is the
only one which can convert from the Y42B colorspace to another one,
and Y42B is often used by USB webcams.
* ipu: rewrite code from scratch to be based on the blitter base classes
Note that imxipusink has been renamed to imxipuvideosink. Also, thanks
to the GstImxBlitterVideoSink, the IPU sink now preserves the aspect ratio.
* ipu: fix memory protection bits in mmap() calls
* phys mem buffer pool now uses a default horizontal alignment of 16 instead of 8
This alignment works better with all blitters
* eglvivsink: fix deadlock in set_caps() function
The deadlock appeared in some situations when the eglvivsink was embedded
inside another window
* vpu: decoder: add interlace information to output buffers
* vpu: encoder:
* fix gst_buffer that was not set to NULL after unref
* configure bitrate and intra refresh period in set_format() call
* fix get_property() requests for slice size and intra refresh period
* IDR interval was sometimes unsetting the nForceIPicture flag even if it was
set before (for example, because the frame is a sync point)
* new elements for audio decoding based on Freescale's unified audio (UniAudio) architecture
These elements depend on the libfslcodec library. Tested with libfslcodec 4.0.1.
Supported formats:
* MPEG-1 layer 1/2/3
* Ogg Vorbis
* AAC Low Complexity (LC)
* WMA (up to WMA version 10) (*)
* AMR-Narrowband
* AMR-Wideband
(*) codec is not included in libfslcodec by default; to obtain the specific
codec, a license for this format must be presented to your Freescale FAE
* preliminary support for Android builds
Android requires some changes in the building process. Most importantly, the
plugins and common lib must be built as static libraries.
==== version 0.9.9 (2014-09-21) ====
* ipu, vpu, v4l2src: use reference counting for resources
This ensures that resources are freed only after when every entity
that uses them has been shut down
ipu: use a global FD and increase/decrease refcount for each blitter
instance and for every (de)allocation
vpu: increment/decrement refcount not only when creating/shutting down
decoder instances, but also for every (de)allocation
v4l2src: instead of using a raw FD, use a reference-counted FD object
* ipu: use a global FD instead of per-blitter FDs
This circumvents bugs in the IPU kernel driver which are triggered
when multiple IPU FDs are open at the same time
* introduce a proper physical address type and a printf conversion specifier
* remove cpu address from GstImxPhysMemory and add an "internal" pointer
as an optional, internal, allocator-specific extra parameter
(for example, a handle to an internal DMA buffer object)
* rplace obsolete "padding" member in phys mem meta with better defined
x_padding/y_padding ones
This avoids having to do calculations like "padding / stride" to get to
the number of additional rows, for example
* use a reference counter for mapping physical memory
Necessary because the same physical memory might get mapped multiple times
(commonly done by gst_video_frame_map() and multi-planar formats like I420)
until now, it was mapped the first time, and subsequent mapping calls were
just ignored, but a reference counter is much cleaner and safer
* ipu: fix kernel version detection and include paths in wscript
Now, the <3.5.0 kernel version check works properly
* eglvivsink: remove RGB from the list of supported formats
Vivante direct textures support various RGBA/RGBx formats, but not RGB
* Miscelleanous:
* Logging improvements
* Added notes to functions that return floating references
* Removed obsolete todo file