Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: third_party/openh264/BUILD.gn

Issue 2585733002: Add assembly for x86 to OpenH264 encoder (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | third_party/openh264/openh264_sources.gni » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import("//third_party/openh264/openh264_args.gni") 5 import("//third_party/openh264/openh264_args.gni")
6 import("//third_party/openh264/openh264_sources.gni")
7 import("//third_party/yasm/yasm_assemble.gni")
6 8
7 # Config shared by all openh264 targets. 9 # Config shared by all openh264 targets.
8 config("config") { 10 config("config") {
9 cflags = [] 11 cflags = []
10 defines = [] 12 defines = []
11 13
12 # GCC and clang flags. MSVS (is_win && !is_clang) does not use cflags. 14 # GCC and clang flags. MSVS (is_win && !is_clang) does not use cflags.
13 if (!is_win || is_clang) { 15 if (!is_win || is_clang) {
14 cflags += [ 16 cflags += [
15 "-Wno-format", 17 "-Wno-format",
16 "-Wno-header-hygiene", 18 "-Wno-header-hygiene",
17 "-Wno-unused-function", 19 "-Wno-unused-function",
18 "-Wno-unused-value", 20 "-Wno-unused-value",
19 ] 21 ]
20 } 22 }
21 23
22 # Platform-specific defines. 24 # Platform-specific defines.
23 if (is_android) { 25 if (is_android) {
24 # Android NDK is necessary for its cpufeatures and this define is what 26 # Android NDK is necessary for its cpufeatures and this define is what
25 # OpenH264 code uses to check if it should be used. 27 # OpenH264 code uses to check if it should be used.
26 defines += [ "ANDROID_NDK" ] 28 defines += [ "ANDROID_NDK" ]
27 } 29 }
28 } 30 }
29 31
32 yasm_assemble("openh264_common_yasm") {
33 include_dirs = openh264_common_include_dirs
34 if (target_cpu == "x86" || target_cpu == "x64") {
35 sources = openh264_common_sources_asm_x86
36 if (target_cpu == "x86") {
37 defines = [ "X86_32" ]
38 } else { # x64
39 if (target_os == "mac") {
40 defines = [
41 "PREFIX",
42 "UNIX64",
43 ]
44 } else {
45 defines = [ "WIN64" ]
46 }
47 }
48 } else {
49 #TODO
50 }
51 }
52
53 yasm_assemble("openh264_processing_yasm") {
54 include_dirs = openh264_processing_include_dirs
55 include_dirs += [ "./src/codec/common/x86" ]
56 if (target_cpu == "x86" || target_cpu == "x64") {
57 sources = openh264_processing_sources_asm_x86
58 if (target_cpu == "x86") {
59 defines = [ "X86_32" ]
60 } else { # x64
61 if (target_os == "mac") {
kthelgason_chromium 2017/01/10 13:43:56 I believe it's conventional to use the helpers `is
62 defines = [
63 "PREFIX",
64 "UNIX64",
65 ]
66 } else {
67 defines = [ "WIN64" ]
kthelgason_chromium 2017/01/10 13:43:56 Couldn't this also be linux or iOS simulator?
68 }
69 }
70 } else {
71 #TODO
72 }
73 }
74
75 yasm_assemble("openh264_encoder_yasm") {
76 include_dirs = openh264_encoder_include_dirs
77 include_dirs += [ "./src/codec/common/x86" ]
78 if (target_cpu == "x86" || target_cpu == "x64") {
79 sources = openh264_encoder_sources_asm_x86
80 if (target_cpu == "x86") {
81 defines = [ "X86_32" ]
82 } else { # x64
83 if (target_os == "mac") {
84 defines = [
85 "PREFIX",
86 "UNIX64",
87 ]
88 } else {
89 defines = [ "WIN64" ]
90 }
91 }
92 } else {
93 #TODO
94 }
95 }
96
30 source_set("common") { 97 source_set("common") {
31 sources = [ 98 sources = openh264_common_sources
32 "src/codec/common/inc/WelsCircleQueue.h", 99 include_dirs = openh264_common_include_dirs
33 "src/codec/common/inc/WelsList.h",
34 "src/codec/common/inc/WelsLock.h",
35 "src/codec/common/inc/WelsTask.h",
36 "src/codec/common/inc/WelsTaskThread.h",
37 "src/codec/common/inc/WelsThread.h",
38 "src/codec/common/inc/WelsThreadLib.h",
39 "src/codec/common/inc/WelsThreadPool.h",
40 "src/codec/common/inc/copy_mb.h",
41 "src/codec/common/inc/cpu.h",
42 "src/codec/common/inc/cpu_core.h",
43 "src/codec/common/inc/crt_util_safe_x.h",
44 "src/codec/common/inc/deblocking_common.h",
45 "src/codec/common/inc/expand_pic.h",
46 "src/codec/common/inc/golomb_common.h",
47 "src/codec/common/inc/intra_pred_common.h",
48 "src/codec/common/inc/ls_defines.h",
49 "src/codec/common/inc/macros.h",
50 "src/codec/common/inc/mc.h",
51 "src/codec/common/inc/measure_time.h",
52 "src/codec/common/inc/memory_align.h",
53 "src/codec/common/inc/sad_common.h",
54 "src/codec/common/inc/typedefs.h",
55 "src/codec/common/inc/utils.h",
56 "src/codec/common/inc/version.h",
57 "src/codec/common/inc/welsCodecTrace.h",
58 "src/codec/common/inc/wels_common_defs.h",
59 "src/codec/common/inc/wels_const_common.h",
60 "src/codec/common/src/WelsTaskThread.cpp",
61 "src/codec/common/src/WelsThread.cpp",
62 "src/codec/common/src/WelsThreadLib.cpp",
63 "src/codec/common/src/WelsThreadPool.cpp",
64 "src/codec/common/src/common_tables.cpp",
65 "src/codec/common/src/copy_mb.cpp",
66 "src/codec/common/src/cpu.cpp",
67 "src/codec/common/src/crt_util_safe_x.cpp",
68 "src/codec/common/src/deblocking_common.cpp",
69 "src/codec/common/src/expand_pic.cpp",
70 "src/codec/common/src/intra_pred_common.cpp",
71 "src/codec/common/src/mc.cpp",
72 "src/codec/common/src/memory_align.cpp",
73 "src/codec/common/src/sad_common.cpp",
74 "src/codec/common/src/utils.cpp",
75 "src/codec/common/src/welsCodecTrace.cpp",
76 ]
77
78 include_dirs = [
79 "src/codec/api/svc",
80 "src/codec/common/inc",
81 "src/codec/common/src",
82 ]
83 100
84 configs -= [ "//build/config/compiler:chromium_code" ] 101 configs -= [ "//build/config/compiler:chromium_code" ]
85 configs += [ "//build/config/compiler:no_chromium_code" ] 102 configs += [ "//build/config/compiler:no_chromium_code" ]
86 configs += [ ":config" ] 103 configs += [ ":config" ]
87 deps = [] 104 deps = []
105 if (target_cpu == "x86" || target_cpu == "x64") {
106 defines = [ "X86_ASM" ]
107 deps += [ ":openh264_common_yasm" ]
108 }
88 if (is_android) { 109 if (is_android) {
89 deps += [ 110 deps += [
90 # Defines "android_get/setCpu..." functions. The original OpenH264 build 111 # Defines "android_get/setCpu..." functions. The original OpenH264 build
91 # files replaces these using macros for "wels_..." versions of the same 112 # files replaces these using macros for "wels_..." versions of the same
92 # functions. We do not have access to these and use the <cpu-features.h> 113 # functions. We do not have access to these and use the <cpu-features.h>
93 # ones instead. 114 # ones instead.
94 "//third_party/android_tools:cpu_features", 115 "//third_party/android_tools:cpu_features",
95 ] 116 ]
96 } 117 }
97 } 118 }
98 119
99 source_set("processing") { 120 source_set("processing") {
100 sources = [ 121 sources = openh264_processing_sources
101 "src/codec/processing/interface/IWelsVP.h", 122 include_dirs = openh264_processing_include_dirs
102 "src/codec/processing/src/adaptivequantization/AdaptiveQuantization.cpp",
103 "src/codec/processing/src/adaptivequantization/AdaptiveQuantization.h",
104 "src/codec/processing/src/backgrounddetection/BackgroundDetection.cpp",
105 "src/codec/processing/src/backgrounddetection/BackgroundDetection.h",
106 "src/codec/processing/src/common/WelsFrameWork.cpp",
107 "src/codec/processing/src/common/WelsFrameWork.h",
108 "src/codec/processing/src/common/WelsFrameWorkEx.cpp",
109 "src/codec/processing/src/common/common.h",
110 "src/codec/processing/src/common/memory.cpp",
111 "src/codec/processing/src/common/memory.h",
112 "src/codec/processing/src/common/resource.h",
113 "src/codec/processing/src/common/typedef.h",
114 "src/codec/processing/src/common/util.h",
115 "src/codec/processing/src/complexityanalysis/ComplexityAnalysis.cpp",
116 "src/codec/processing/src/complexityanalysis/ComplexityAnalysis.h",
117 "src/codec/processing/src/denoise/denoise.cpp",
118 "src/codec/processing/src/denoise/denoise.h",
119 "src/codec/processing/src/denoise/denoise_filter.cpp",
120 "src/codec/processing/src/downsample/downsample.cpp",
121 "src/codec/processing/src/downsample/downsample.h",
122 "src/codec/processing/src/downsample/downsamplefuncs.cpp",
123 "src/codec/processing/src/imagerotate/imagerotate.cpp",
124 "src/codec/processing/src/imagerotate/imagerotate.h",
125 "src/codec/processing/src/imagerotate/imagerotatefuncs.cpp",
126 "src/codec/processing/src/scenechangedetection/SceneChangeDetection.cpp",
127 "src/codec/processing/src/scenechangedetection/SceneChangeDetection.h",
128 "src/codec/processing/src/scrolldetection/ScrollDetection.cpp",
129 "src/codec/processing/src/scrolldetection/ScrollDetection.h",
130 "src/codec/processing/src/scrolldetection/ScrollDetectionFuncs.cpp",
131 "src/codec/processing/src/scrolldetection/ScrollDetectionFuncs.h",
132 "src/codec/processing/src/vaacalc/vaacalcfuncs.cpp",
133 "src/codec/processing/src/vaacalc/vaacalculation.cpp",
134 "src/codec/processing/src/vaacalc/vaacalculation.h",
135 ]
136
137 include_dirs = [
138 "src/codec/api/svc",
139 "src/codec/common/inc",
140 "src/codec/common/src",
141 "src/codec/processing/interface",
142 "src/codec/processing/interface/",
143 "src/codec/processing/src/adaptivequantization",
144 "src/codec/processing/src/backgrounddetection",
145 "src/codec/processing/src/common",
146 "src/codec/processing/src/complexityanalysis",
147 "src/codec/processing/src/denoise",
148 "src/codec/processing/src/downsample",
149 "src/codec/processing/src/imagerotate",
150 "src/codec/processing/src/scenechangedetection",
151 "src/codec/processing/src/scrolldetection",
152 "src/codec/processing/src/vaacalc",
153 ]
154 123
155 configs -= [ "//build/config/compiler:chromium_code" ] 124 configs -= [ "//build/config/compiler:chromium_code" ]
156 configs += [ "//build/config/compiler:no_chromium_code" ] 125 configs += [ "//build/config/compiler:no_chromium_code" ]
157 configs += [ ":config" ] 126 configs += [ ":config" ]
158 deps = [ 127 deps = [
159 ":common", 128 ":common",
160 ] 129 ]
130 if (target_cpu == "x86" || target_cpu == "x64") {
131 defines = [ "X86_ASM" ]
132 deps += [ ":openh264_processing_yasm" ]
133 }
161 } 134 }
162 135
163 source_set("encoder") { 136 source_set("encoder") {
164 sources = [ 137 sources = openh264_encoder_sources
165 "src/codec/encoder/core/inc/as264_common.h", 138 include_dirs = openh264_encoder_include_dirs
166 "src/codec/encoder/core/inc/au_set.h",
167 "src/codec/encoder/core/inc/deblocking.h",
168 "src/codec/encoder/core/inc/decode_mb_aux.h",
169 "src/codec/encoder/core/inc/dq_map.h",
170 "src/codec/encoder/core/inc/encode_mb_aux.h",
171 "src/codec/encoder/core/inc/encoder.h",
172 "src/codec/encoder/core/inc/encoder_context.h",
173 "src/codec/encoder/core/inc/extern.h",
174 "src/codec/encoder/core/inc/get_intra_predictor.h",
175 "src/codec/encoder/core/inc/mb_cache.h",
176 "src/codec/encoder/core/inc/md.h",
177 "src/codec/encoder/core/inc/mt_defs.h",
178 "src/codec/encoder/core/inc/mv_pred.h",
179 "src/codec/encoder/core/inc/nal_encap.h",
180 "src/codec/encoder/core/inc/param_svc.h",
181 "src/codec/encoder/core/inc/parameter_sets.h",
182 "src/codec/encoder/core/inc/paraset_strategy.h",
183 "src/codec/encoder/core/inc/picture.h",
184 "src/codec/encoder/core/inc/picture_handle.h",
185 "src/codec/encoder/core/inc/rc.h",
186 "src/codec/encoder/core/inc/ref_list_mgr_svc.h",
187 "src/codec/encoder/core/inc/sample.h",
188 "src/codec/encoder/core/inc/set_mb_syn_cabac.h",
189 "src/codec/encoder/core/inc/set_mb_syn_cavlc.h",
190 "src/codec/encoder/core/inc/slice.h",
191 "src/codec/encoder/core/inc/slice_multi_threading.h",
192 "src/codec/encoder/core/inc/stat.h",
193 "src/codec/encoder/core/inc/svc_base_layer_md.h",
194 "src/codec/encoder/core/inc/svc_enc_frame.h",
195 "src/codec/encoder/core/inc/svc_enc_golomb.h",
196 "src/codec/encoder/core/inc/svc_enc_macroblock.h",
197 "src/codec/encoder/core/inc/svc_enc_slice_segment.h",
198 "src/codec/encoder/core/inc/svc_encode_mb.h",
199 "src/codec/encoder/core/inc/svc_encode_slice.h",
200 "src/codec/encoder/core/inc/svc_mode_decision.h",
201 "src/codec/encoder/core/inc/svc_motion_estimate.h",
202 "src/codec/encoder/core/inc/svc_set_mb_syn.h",
203 "src/codec/encoder/core/inc/svc_set_mb_syn_cavlc.h",
204 "src/codec/encoder/core/inc/vlc_encoder.h",
205 "src/codec/encoder/core/inc/wels_common_basis.h",
206 "src/codec/encoder/core/inc/wels_const.h",
207 "src/codec/encoder/core/inc/wels_func_ptr_def.h",
208 "src/codec/encoder/core/inc/wels_preprocess.h",
209 "src/codec/encoder/core/inc/wels_task_base.h",
210 "src/codec/encoder/core/inc/wels_task_encoder.h",
211 "src/codec/encoder/core/inc/wels_task_management.h",
212 "src/codec/encoder/core/inc/wels_transpose_matrix.h",
213 "src/codec/encoder/core/src/au_set.cpp",
214 "src/codec/encoder/core/src/deblocking.cpp",
215 "src/codec/encoder/core/src/decode_mb_aux.cpp",
216 "src/codec/encoder/core/src/encode_mb_aux.cpp",
217 "src/codec/encoder/core/src/encoder.cpp",
218 "src/codec/encoder/core/src/encoder_data_tables.cpp",
219 "src/codec/encoder/core/src/encoder_ext.cpp",
220 "src/codec/encoder/core/src/get_intra_predictor.cpp",
221 "src/codec/encoder/core/src/md.cpp",
222 "src/codec/encoder/core/src/mv_pred.cpp",
223 "src/codec/encoder/core/src/nal_encap.cpp",
224 "src/codec/encoder/core/src/paraset_strategy.cpp",
225 "src/codec/encoder/core/src/picture_handle.cpp",
226 "src/codec/encoder/core/src/ratectl.cpp",
227 "src/codec/encoder/core/src/ref_list_mgr_svc.cpp",
228 "src/codec/encoder/core/src/sample.cpp",
229 "src/codec/encoder/core/src/set_mb_syn_cabac.cpp",
230 "src/codec/encoder/core/src/set_mb_syn_cavlc.cpp",
231 "src/codec/encoder/core/src/slice_multi_threading.cpp",
232 "src/codec/encoder/core/src/svc_base_layer_md.cpp",
233 "src/codec/encoder/core/src/svc_enc_slice_segment.cpp",
234 "src/codec/encoder/core/src/svc_encode_mb.cpp",
235 "src/codec/encoder/core/src/svc_encode_slice.cpp",
236 "src/codec/encoder/core/src/svc_mode_decision.cpp",
237 "src/codec/encoder/core/src/svc_motion_estimate.cpp",
238 "src/codec/encoder/core/src/svc_set_mb_syn_cabac.cpp",
239 "src/codec/encoder/core/src/svc_set_mb_syn_cavlc.cpp",
240 "src/codec/encoder/core/src/wels_preprocess.cpp",
241 "src/codec/encoder/core/src/wels_task_base.cpp",
242 "src/codec/encoder/core/src/wels_task_encoder.cpp",
243 "src/codec/encoder/core/src/wels_task_management.cpp",
244 "src/codec/encoder/plus/inc/welsEncoderExt.h",
245 "src/codec/encoder/plus/src/welsEncoderExt.cpp",
246
247 # Note: Purposefully excluded: 'src/codec/encoder/plus/src/DllEntry.cpp',
248 # This file is not built by the OpenH264 original build files.
249 ]
250
251 include_dirs = [
252 "src/codec/api/svc",
253 "src/codec/common/inc",
254 "src/codec/common/src",
255 "src/codec/encoder/core/inc",
256 "src/codec/encoder/core/src",
257 "src/codec/encoder/plus/inc",
258 "src/codec/encoder/plus/src",
259 "src/codec/processing/interface",
260 ]
261 139
262 configs -= [ "//build/config/compiler:chromium_code" ] 140 configs -= [ "//build/config/compiler:chromium_code" ]
263 configs += [ "//build/config/compiler:no_chromium_code" ] 141 configs += [ "//build/config/compiler:no_chromium_code" ]
264 configs += [ ":config" ] 142 configs += [ ":config" ]
265 deps = [ 143 deps = [
266 ":common", 144 ":common",
267 ":processing", 145 ":processing",
268 ] 146 ]
147 if (target_cpu == "x86" || target_cpu == "x64") {
148 defines = [ "X86_ASM" ]
149 deps += [ ":openh264_encoder_yasm" ]
150 }
269 } 151 }
OLDNEW
« no previous file with comments | « no previous file | third_party/openh264/openh264_sources.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698