-
Notifications
You must be signed in to change notification settings - Fork 53
/
Copy pathChangeLog
175 lines (148 loc) · 7.91 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
==== version 2.3.1 (2025-02-07) ====
* vpu: Add more options, flags, and frameskipping support to encoder API
* vpu: Deprecate min_intra_refresh_mb_count and replace it with flag
This is more practical, since the macroblock count if anyway usually set
to resemble the GOP length, so this might as well be automatically
calculated.
* vpu: encoder: Add GOP size checks
* vpu: encoder: Add imx_vpu_api_enc_get_encoded_frame_ext()
This is a preparation for reworked intra refresh support. In intra
refresh encoding, only the first frame is an I/IDR frame; all followup
frames are P frames. The start of an intra refresh interval qualifies
as a sync point. But since only P frames are present, callers callers
can't rely on the frame type to detect sync points. To fix this, the
imx_vpu_api_enc_get_encoded_frame_ext() is added to the API to be able
to communicate to callers that a sync point was produced.
* imx8m-hantro: Rewrite encoder to directly use the Hantro H1 API
This allows for more fine grained control of the H1 encoder.
Most notably, intra refresh works properly, and skipped frames
are correctly handled.
* imx8m-hantro: encoder: Add closed GOP interval support
* imx8m-hantro: encoder: Rework intra refresh
Use codec specific features for intra refresh. For h.264, use the Hantro
GDR (Gradual Decoder Refresh) feature, since it also takes care of filling
SEI message and SPS/PPS NALUs appropriately. For VP8, implement a manual
method. (Intra refresh is not officially supported in VP8 though. See the
note about VP8 intra refresh in the comment blocks in this commit.)
* imx6-coda: return IMX_VPU_API_ENC_RETURN_CODE_INVALID_CALL from
imx_vpu_api_enc_get_skipped_frame_info()
This keeps the imx6 backend consistent with the API. Previously, that
backend's implementation of that function was not returning anything at all.
* imx8m-hantro: implement imx_vpu_api_enc_get_skipped_frame_info() stubs for
all encoders
Implement this function for all encoders to fix a linker error in
gstreamer-imx.
These encoders never return IMX_VPU_API_ENC_OUTPUT_CODE_FRAME_SKIPPED,
so we always return IMX_VPU_API_ENC_RETURN_CODE_INVALID_CALL from
imx_vpu_api_enc_get_skipped_frame_info().
* imx8m-hantro: dummy_encoder: implement imx_vpu_api_enc_get_encoded_frame_ext()
Linking gstreamer-imx will fail if imx_vpu_api_enc_get_encoded_frame_ext)
is not available.
==== version 2.3.0 (2023-07-30) ====
* vpu: Implement first working version of VC8000E encoder integration
This adds support for the Hanto VC8000E encoder that can be found on
the i.MX8m plus. The VC8000E encoder integration is not finished.
h.264 encoding works fine. h.265 encoding is not yet done. And,
changing framerate mid-stream is currently not supported.
* Replace mxcfb.h with ipu.h in option description
Some BSPs no longer ship with the mxcfb.h header.
* imx6-coda: Fix ENC_ENABLE_SOF_STUFF check
The check was being performed incorrectly, leading to nullbytes
being inserted at the end of the SOF0 marker.
* imx6-coda: Insert JFIF APP0 segment
The VPU does not insert this segment on its own. Some programs need
JFIF data to be present in JPEG files, so insert APP0 manually.
* imx6-coda: Fix decoder and encoder alignments
* imx6-coda: Add more IPU detiler logging
* imx6-coda: Fix decoder Y/U/V offset alignments
As it turns out, these must be aligned to 8-byte boundaries, not to
4096 byte ones. The latter caused incorrect offset calculations.
==== version 2.2.2 (2022-12-28) ====
* imx6-coda: Skip incomplete frames instead of just reporting them
* imx6-coda: Only flush bit buffer when framebuffers were registered
This prevents misleading error-level log lines from occurring
* imx6-coda: Prefer semi planar modes over fully planar ones
* imx8m-hantro: Reset decoder write_offset to fill_level when moving read_offset
* Add imx_vpu_api_is_color_format_tiled() function
* update waf to 2.0.24
* Add closed_gop_interval field to ImxVpuApiEncOpenParams
This allows for enforcing regularly occurring IDR
boundaries when encoding to h.264
* imx8m-hantro: Fix supported decoder color formats and include tiled formats
* Fix and improve h.264 max level estimation for encoding
* imx6-coda: Use 2-row alignment in encoder
* imx6-coda: Fix JPEG encoding quantization parameter handling in encoder
==== version 2.2.1 (2022-05-10) ====
* Add option to not compile examples
* imx8m-hantro: Allow for reusing decoder after drain mode finishes
* imx6-coda: Reset drain mode after EOS processed
* imx6-coda: Reset drain mode flags when flushing
* Use libimxdmabuffer sync access functions to ensure cache coherence
* Add imx_vpu_api_is_color_format_10bit() function
* Documentation fixes
==== version 2.2.0 (2021-06-14) ====
* Add IMX_VPU_API_DEC_OUTPUT_CODE_VIDEO_PARAMETERS_CHANGED output code
* Deprecate drain mode, better document decoder drain mode
* Various documentation fixes and new overviews about en- and
decoding to help with the basic concepts
* Add note about the current state of i.MX8m plus support
* New functions:
imx_vpu_api_is_color_format_rgb()
imx_vpu_api_vp8_profile_number()
imx_vpu_api_vp8_partition_count_number()
imx_vpu_api_vp9_profile_number()
imx_vpu_api_enc_set_frame_rate()
* imx6-coda: Fix decoded frame fb_context
This was causing crashes when callers relied on said fb_context
==== version 2.1.2 (2021-04-25) ====
* imx6-coda: Fix skipped frame reporting
* imx8m-hantro: Handle CODEC_ERROR_FRAME codec state
* imx8m-hantro: Limit supported formats and profiles if building for m8xmm
==== version 2.1.1 (2021-04-23) ====
* imx6 coda: fix bug in IPU based detiling related to frame width/height
* imx6 coda: use the frame width/height from open params if available
* imx6 coda: fix duplicate VPU firmware unloading
* imx8 hantro encoder: fix mid-stream bitrate changes and bitrate logging
==== version 2.1.0 (2020-10-18) ====
* introduce RGB and packed YUV formats since the Hantro encoder
supports those
* remove hardware specific public headers since they only added
tiled pixel formats; instead, migrate these tiled formats into
ImxVpuApiColorFormat
* imx8 hantro decoder: reorder list of supported decoder color
formats to favor 10 bit output
* imx8 hantro decoder: clear new framebuffer fields to zero
* imx8 hantro encoder: fix segfault caused by trying to unmap
non existing staged raw frame
==== version 2.0.1 (2020-04-19) ====
* imx6: replace mxcfb.h check with i.MX6 specific imx header check
the mcxfb.h check only makes sense with i.MX6 devices, so requiring
those for others like i.MX8 led to build errors
* update waf to 2.0.12 and switch wscript to use Python 3
* imx6: fix encoder pointer usage in vpu_EncGiveCommand() call
==== version 2.0.0 (2019-07-21) ====
* complete rewrite to support i.MX6, i.MX8m, i.MX8mm VPUs
==== version 0.10.3 (2016-10-12) ====
* properly pass on color format in simplified JPEG encoder interface
* add alternative write-callback-style encoding mode
also add encode example variant which uses write-callback style output
* add support for "fake grayscale mode" in encoders
this is done by using I420 internally and filling the U and V planes
with 0x80 bytes
* make sure JPEG quantization table is copied in standardized zig zag order
the VPU does not, so this has to be done explicitely
==== version 0.10.2 (2016-05-01) ====
* fix AUD NAL positioning in h.264 encoder output
(SPS/PPS/AUD were ordered incorrectly - AUD has to come first, not last)
* fix build error with examples when --enable-static is used
* pass quality factor in simplified JPEG encoder interface correctly
* add functions for querying and setting header data
useful for modifying headers, like VUI data in the SPS RBSP
* documentation updates
==== version 0.10.1 (2015-11-30) ====
* add debian packaging files
* update waf to version 1.8.16
* add workaround in wscript to prevent stale pkg-config .pc files
* fix memory leak by adding missing IOFreeVirtMem() call in vpulib backend
==== version 0.10.0 (2015-11-02) ====
Initial release