Control Flow Integrity [1] indirect call checking verifies that function
pointers only call valid functions with a matching type signature. This
change eliminates some function pointer casts that I missed in my last
CL https://crrev.com/c/780144.
BUG=chromium:776905
[1] https://www.chromium.org/developers/testing/control-flow-integrity
Change-Id: I1c7adbdfffa4fe0b62e993bfb31d06e64b022d66
}
#if !CONFIG_REALTIME_ONLY
}
#if !CONFIG_REALTIME_ONLY
-static int first_pass_worker_hook(EncWorkerData *const thread_data,
- MultiThreadHandle *multi_thread_ctxt) {
+static int first_pass_worker_hook(void *arg1, void *arg2) {
+ EncWorkerData *const thread_data = (EncWorkerData *)arg1;
+ MultiThreadHandle *multi_thread_ctxt = (MultiThreadHandle *)arg2;
VP9_COMP *const cpi = thread_data->cpi;
const VP9_COMMON *const cm = &cpi->common;
const int tile_cols = 1 << cm->log2_tile_cols;
VP9_COMP *const cpi = thread_data->cpi;
const VP9_COMMON *const cm = &cpi->common;
const int tile_cols = 1 << cm->log2_tile_cols;
- launch_enc_workers(cpi, (VPxWorkerHook)first_pass_worker_hook,
- multi_thread_ctxt, num_workers);
+ launch_enc_workers(cpi, first_pass_worker_hook, multi_thread_ctxt,
+ num_workers);
first_tile_col = &cpi->tile_data[0];
for (i = 1; i < tile_cols; i++) {
first_tile_col = &cpi->tile_data[0];
for (i = 1; i < tile_cols; i++) {
-static int temporal_filter_worker_hook(EncWorkerData *const thread_data,
- MultiThreadHandle *multi_thread_ctxt) {
+static int temporal_filter_worker_hook(void *arg1, void *arg2) {
+ EncWorkerData *const thread_data = (EncWorkerData *)arg1;
+ MultiThreadHandle *multi_thread_ctxt = (MultiThreadHandle *)arg2;
VP9_COMP *const cpi = thread_data->cpi;
const VP9_COMMON *const cm = &cpi->common;
const int tile_cols = 1 << cm->log2_tile_cols;
VP9_COMP *const cpi = thread_data->cpi;
const VP9_COMMON *const cm = &cpi->common;
const int tile_cols = 1 << cm->log2_tile_cols;
- launch_enc_workers(cpi, (VPxWorkerHook)temporal_filter_worker_hook,
- multi_thread_ctxt, num_workers);
+ launch_enc_workers(cpi, temporal_filter_worker_hook, multi_thread_ctxt,
+ num_workers);
}
#endif // !CONFIG_REALTIME_ONLY
}
#endif // !CONFIG_REALTIME_ONLY
-static int enc_row_mt_worker_hook(EncWorkerData *const thread_data,
- MultiThreadHandle *multi_thread_ctxt) {
+static int enc_row_mt_worker_hook(void *arg1, void *arg2) {
+ EncWorkerData *const thread_data = (EncWorkerData *)arg1;
+ MultiThreadHandle *multi_thread_ctxt = (MultiThreadHandle *)arg2;
VP9_COMP *const cpi = thread_data->cpi;
const VP9_COMMON *const cm = &cpi->common;
const int tile_cols = 1 << cm->log2_tile_cols;
VP9_COMP *const cpi = thread_data->cpi;
const VP9_COMMON *const cm = &cpi->common;
const int tile_cols = 1 << cm->log2_tile_cols;
- launch_enc_workers(cpi, (VPxWorkerHook)enc_row_mt_worker_hook,
- multi_thread_ctxt, num_workers);
+ launch_enc_workers(cpi, enc_row_mt_worker_hook, multi_thread_ctxt,
+ num_workers);
for (i = 0; i < num_workers; i++) {
VPxWorker *const worker = &cpi->workers[i];
for (i = 0; i < num_workers; i++) {
VPxWorker *const worker = &cpi->workers[i];