diff options
author | Naveen Saini <naveen.kumar.saini@intel.com> | 2019-06-13 15:36:38 +0800 |
---|---|---|
committer | Anuj Mittal <anuj.mittal@intel.com> | 2019-06-13 16:11:25 +0800 |
commit | a7748e0cadf67918aee1f4910e2763de43284356 (patch) | |
tree | b74f2b44e9fe1775ced5db30a379a4a04915194f /recipes-multimedia/libyami | |
parent | c941d896c08d6d83694ba0af1fdf4f4dcb625e9f (diff) | |
download | meta-intel-a7748e0cadf67918aee1f4910e2763de43284356.tar.gz |
libyami: fix build error with gcc9
GCC9 causing multiple build failures:
| ../../git/codecparsers/h264Parser.cpp: In constructor 'YamiParser::H264::PPS::PPS()':
| ../../git/codecparsers/h264Parser.cpp:140:41: error: 'void* memset(void*, int, size_t)' clearing an object of type 'struct YamiParser::H264::PPS' with no trivial copy-assignment; use assignment or value-initialization instead [-Werror=class-memaccess]
| 140 | memset(this, 0, offsetof(PPS, m_sps));
...
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
Diffstat (limited to 'recipes-multimedia/libyami')
-rw-r--r-- | recipes-multimedia/libyami/libyami/0010-h26xparser-Fix-build-error-with-GCC9.patch | 157 | ||||
-rw-r--r-- | recipes-multimedia/libyami/libyami_1.3.1.bb | 1 |
2 files changed, 158 insertions, 0 deletions
diff --git a/recipes-multimedia/libyami/libyami/0010-h26xparser-Fix-build-error-with-GCC9.patch b/recipes-multimedia/libyami/libyami/0010-h26xparser-Fix-build-error-with-GCC9.patch new file mode 100644 index 00000000..be69ab71 --- /dev/null +++ b/recipes-multimedia/libyami/libyami/0010-h26xparser-Fix-build-error-with-GCC9.patch | |||
@@ -0,0 +1,157 @@ | |||
1 | From fdb8185749098eaf55050c4ec5c0f21c5be1e326 Mon Sep 17 00:00:00 2001 | ||
2 | From: Naveen Saini <naveen.kumar.saini@intel.com> | ||
3 | Date: Tue, 4 Jun 2019 16:53:16 +0800 | ||
4 | Subject: [PATCH] h26xparser: Fix build error with GCC9 | ||
5 | |||
6 | GCC9 causing build failure: | ||
7 | |||
8 | | ../../git/codecparsers/h264Parser.cpp: In constructor 'YamiParser::H264::PPS::PPS()': | ||
9 | | ../../git/codecparsers/h264Parser.cpp:140:41: error: 'void* memset(void*, int, size_t)' clearing an object of type 'struct YamiParser::H264::PPS' with no trivial copy-assignment; use assignment or value-initialization instead [-Werror=class-memaccess] | ||
10 | | 140 | memset(this, 0, offsetof(PPS, m_sps)); | ||
11 | | | ^ | ||
12 | | In file included from ../../git/codecparsers/h264Parser.cpp:21: | ||
13 | | ../../git/codecparsers/h264Parser.h:292:8: note: 'struct YamiParser::H264::PPS' declared here | ||
14 | | 292 | struct PPS { | ||
15 | | | ^~~ | ||
16 | | ../../git/codecparsers/h264Parser.cpp: In constructor 'YamiParser::H264::SliceHeader::SliceHeader()': | ||
17 | | ../../git/codecparsers/h264Parser.cpp:686:49: error: 'void* memset(void*, int, size_t)' clearing an object of type 'class YamiParser::H264::SliceHeader' with no trivial copy-assignment; use assignment or value-initialization instead [-Werror=class-memaccess] | ||
18 | | 686 | memset(this, 0, offsetof(SliceHeader, m_pps)); | ||
19 | | | ^ | ||
20 | | In file included from ../../git/codecparsers/h264Parser.cpp:21: | ||
21 | | ../../git/codecparsers/h264Parser.h:371:7: note: 'class YamiParser::H264::SliceHeader' declared here | ||
22 | | 371 | class SliceHeader { | ||
23 | | | ^~~~~~~~~~~ | ||
24 | | ../../git/codecparsers/h265Parser.cpp: In constructor 'YamiParser::H265::VPS::VPS()': | ||
25 | | ../../git/codecparsers/h265Parser.cpp:165:53: error: 'void* memset(void*, int, size_t)' clearing an object of type 'struct YamiParser::H265::VPS' with no trivial copy-assignment; use assignment or value-initialization instead [-Werror=class-memaccess] | ||
26 | | 165 | memset(this, 0, offsetof(VPS, hrd_layer_set_idx)); | ||
27 | | | ^ | ||
28 | | In file included from ../../git/codecparsers/h265Parser.cpp:21: | ||
29 | | ../../git/codecparsers/h265Parser.h:256:12: note: 'struct YamiParser::H265::VPS' declared here | ||
30 | | 256 | struct VPS { | ||
31 | | | ^~~ | ||
32 | | ../../git/codecparsers/h265Parser.cpp: In constructor 'YamiParser::H265::SPS::SPS()': | ||
33 | | ../../git/codecparsers/h265Parser.cpp:174:39: error: 'void* memset(void*, int, size_t)' clearing an object of type 'struct YamiParser::H265::SPS' with no trivial copy-assignment; use assignment or value-initialization instead [-Werror=class-memaccess] | ||
34 | | 174 | memset(this, 0, offsetof(SPS, vps)); | ||
35 | | | ^ | ||
36 | | In file included from ../../git/codecparsers/h265Parser.cpp:21: | ||
37 | | ../../git/codecparsers/h265Parser.h:290:12: note: 'struct YamiParser::H265::SPS' declared here | ||
38 | | 290 | struct SPS { | ||
39 | | | ^~~ | ||
40 | | ../../git/codecparsers/h265Parser.cpp: In constructor 'YamiParser::H265::PPS::PPS()': | ||
41 | | ../../git/codecparsers/h265Parser.cpp:179:39: error: 'void* memset(void*, int, size_t)' clearing an object of type 'struct YamiParser::H265::PPS' with no trivial copy-assignment; use assignment or value-initialization instead [-Werror=class-memaccess] | ||
42 | | 179 | memset(this, 0, offsetof(PPS, sps)); | ||
43 | | | ^ | ||
44 | | In file included from ../../git/codecparsers/h265Parser.cpp:21: | ||
45 | | ../../git/codecparsers/h265Parser.h:362:12: note: 'struct YamiParser::H265::PPS' declared here | ||
46 | | 362 | struct PPS { | ||
47 | | | ^~~ | ||
48 | | ../../git/codecparsers/h265Parser.cpp: In constructor 'YamiParser::H265::SliceHeader::SliceHeader()': | ||
49 | | ../../git/codecparsers/h265Parser.cpp:184:47: error: 'void* memset(void*, int, size_t)' clearing an object of type 'struct YamiParser::H265::SliceHeader' with no trivial copy-assignment; use assignment or value-initialization instead [-Werror=class-memaccess] | ||
50 | | 184 | memset(this, 0, offsetof(SliceHeader, pps)); | ||
51 | | | ^ | ||
52 | | In file included from ../../git/codecparsers/h265Parser.cpp:21: | ||
53 | | ../../git/codecparsers/h265Parser.h:499:12: note: 'struct YamiParser::H265::SliceHeader' declared here | ||
54 | | 499 | struct SliceHeader { | ||
55 | | | ^~~~~~~~~~~ | ||
56 | | ../../git/codecparsers/mpeg2_parser.cpp: In constructor 'YamiParser::MPEG2::SeqHeader::SeqHeader()': | ||
57 | | ../../git/codecparsers/mpeg2_parser.cpp:163:59: error: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct YamiParser::MPEG2::SeqHeader'; use assignment or value-initialization instead [-Werror=class-memaccess] | ||
58 | | 163 | SeqHeader::SeqHeader() { memset(this, 0, sizeof(*this)); } | ||
59 | | | ^ | ||
60 | | In file included from ../../git/codecparsers/mpeg2_parser.cpp:34: | ||
61 | | ../../git/codecparsers/mpeg2_parser.h:153:12: note: 'struct YamiParser::MPEG2::SeqHeader' declared here | ||
62 | | 153 | struct SeqHeader { | ||
63 | | | ^~~~~~~~~ | ||
64 | | cc1plus: all warnings being treated as errors | ||
65 | |||
66 | By typecasting structure pointer to void pointer, GCC9 does normal memset operation where offsetof() give correct | ||
67 | number of bytes to set. | ||
68 | |||
69 | Status: Submitted [https://github.com/intel/libyami/pull/876] | ||
70 | |||
71 | Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> | ||
72 | --- | ||
73 | codecparsers/h264Parser.cpp | 4 ++-- | ||
74 | codecparsers/h265Parser.cpp | 8 ++++---- | ||
75 | codecparsers/mpeg2_parser.cpp | 3 ++- | ||
76 | 3 files changed, 8 insertions(+), 7 deletions(-) | ||
77 | |||
78 | diff --git a/codecparsers/h264Parser.cpp b/codecparsers/h264Parser.cpp | ||
79 | index 22117a1..6f7959e 100644 | ||
80 | --- a/codecparsers/h264Parser.cpp | ||
81 | +++ b/codecparsers/h264Parser.cpp | ||
82 | @@ -137,7 +137,7 @@ static bool scalingList(NalReader& br, uint8_t* sl, uint32_t size, uint32_t inde | ||
83 | |||
84 | PPS::PPS() | ||
85 | { | ||
86 | - memset(this, 0, offsetof(PPS, m_sps)); | ||
87 | + memset((void*)this, 0, offsetof(PPS, m_sps)); | ||
88 | } | ||
89 | |||
90 | PPS::~PPS() | ||
91 | @@ -683,7 +683,7 @@ Parser::searchSps(uint8_t id) const | ||
92 | |||
93 | SliceHeader::SliceHeader() | ||
94 | { | ||
95 | - memset(this, 0, offsetof(SliceHeader, m_pps)); | ||
96 | + memset((void*)this, 0, offsetof(SliceHeader, m_pps)); | ||
97 | } | ||
98 | |||
99 | bool SliceHeader::refPicListModification(NalReader& br, RefPicListModification* pm0, | ||
100 | diff --git a/codecparsers/h265Parser.cpp b/codecparsers/h265Parser.cpp | ||
101 | index 0dea3a6..d7e6740 100644 | ||
102 | --- a/codecparsers/h265Parser.cpp | ||
103 | +++ b/codecparsers/h265Parser.cpp | ||
104 | @@ -162,7 +162,7 @@ static const uint8_t DefaultScalingList2[64] = { | ||
105 | |||
106 | VPS::VPS() | ||
107 | { | ||
108 | - memset(this, 0, offsetof(VPS, hrd_layer_set_idx)); | ||
109 | + memset((void*)this, 0, offsetof(VPS, hrd_layer_set_idx)); | ||
110 | } | ||
111 | |||
112 | VPS::~VPS() | ||
113 | @@ -171,17 +171,17 @@ VPS::~VPS() | ||
114 | |||
115 | SPS::SPS() | ||
116 | { | ||
117 | - memset(this, 0, offsetof(SPS, vps)); | ||
118 | + memset((void*)this, 0, offsetof(SPS, vps)); | ||
119 | } | ||
120 | |||
121 | PPS::PPS() | ||
122 | { | ||
123 | - memset(this, 0, offsetof(PPS, sps)); | ||
124 | + memset((void*)this, 0, offsetof(PPS, sps)); | ||
125 | } | ||
126 | |||
127 | SliceHeader::SliceHeader() | ||
128 | { | ||
129 | - memset(this, 0, offsetof(SliceHeader, pps)); | ||
130 | + memset((void*)this, 0, offsetof(SliceHeader, pps)); | ||
131 | } | ||
132 | |||
133 | SliceHeader::~SliceHeader() | ||
134 | diff --git a/codecparsers/mpeg2_parser.cpp b/codecparsers/mpeg2_parser.cpp | ||
135 | index 21032b1..173da39 100644 | ||
136 | --- a/codecparsers/mpeg2_parser.cpp | ||
137 | +++ b/codecparsers/mpeg2_parser.cpp | ||
138 | @@ -33,6 +33,7 @@ | ||
139 | #include "common/log.h" | ||
140 | #include "mpeg2_parser.h" | ||
141 | #include <inttypes.h> | ||
142 | +#include <cstddef> | ||
143 | |||
144 | namespace YamiParser { | ||
145 | namespace MPEG2 { | ||
146 | @@ -160,7 +161,7 @@ namespace MPEG2 { | ||
147 | |||
148 | SeqExtension::SeqExtension() { memset(this, 0, sizeof(*this)); } | ||
149 | |||
150 | - SeqHeader::SeqHeader() { memset(this, 0, sizeof(*this)); } | ||
151 | + SeqHeader::SeqHeader() { memset((void*)this, 0, offsetof(SeqHeader, quantizationMatrices)); } | ||
152 | |||
153 | StreamHeader::StreamHeader() { memset(this, 0, sizeof(*this)); } | ||
154 | |||
155 | -- | ||
156 | 2.17.0 | ||
157 | |||
diff --git a/recipes-multimedia/libyami/libyami_1.3.1.bb b/recipes-multimedia/libyami/libyami_1.3.1.bb index 58895c81..83845935 100644 --- a/recipes-multimedia/libyami/libyami_1.3.1.bb +++ b/recipes-multimedia/libyami/libyami_1.3.1.bb | |||
@@ -17,6 +17,7 @@ SRC_URI = "git://github.com/intel/libyami.git;branch=apache \ | |||
17 | file://0007-Delete-unused-variables.patch \ | 17 | file://0007-Delete-unused-variables.patch \ |
18 | file://0008-NalUnit-is-declared-in-different-namespace.patch \ | 18 | file://0008-NalUnit-is-declared-in-different-namespace.patch \ |
19 | file://0009-Fix-clang-warnings.patch \ | 19 | file://0009-Fix-clang-warnings.patch \ |
20 | file://0010-h26xparser-Fix-build-error-with-GCC9.patch \ | ||
20 | " | 21 | " |
21 | SRCREV = "fb48083de91f837ddbf599dd4b5ad1eb1239e1cf" | 22 | SRCREV = "fb48083de91f837ddbf599dd4b5ad1eb1239e1cf" |
22 | S = "${WORKDIR}/git" | 23 | S = "${WORKDIR}/git" |