• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.
3  */
4 
5 #include "src/plugin/hispeed_plugin.h"
6 
7 #ifdef USE_HISPEED_PLUGIN
8 
9 #if (defined(__aarch64__))
10 static const char *HISPEED_IMAGE_SO_PATH = "/system/lib64/libhispeed_image.so";
11 #else
12 static const char *HISPEED_IMAGE_SO_PATH = "/system/lib/libhispeed_image.so";
13 #endif
14 static void *hispeedImageHandle = NULL;
15 HSDPlugin_VP8ParseResiduals g_vp8ParseResidualsHandle = NULL;                  // HSDImage_VP8ParseResiduals
16 HSDPlugin_VP8ParseIntraModeRow g_vp8ParseIntraModeRowHandle = NULL;            // HSDImage_VP8ParseIntraModeRow
17 HSDPlugin_VFilter16i g_vFilter16iHandle = NULL;                                // HSDImage_VFilter16i
18 HSDPlugin_HFilter16 g_hFilter16Handle = NULL;                                  // HSDImage_HFilter16
19 HSDPlugin_HFilter16i g_hFilter16iHandle = NULL;                                // HSDImage_HFilter16i
20 HSDPlugin_HFilter8 g_hFilter8Handle = NULL;                                    // HSDImage_HFilter8
21 HSDPlugin_HFilter8i g_hFilter8iHandle = NULL;                                  // HSDImage_HFilter8i
22 HSDPlugin_UpsampleYuvToRgbaLinePair g_upsampleYuvToRgbaLinePairHandle = NULL;  // HSDImage_UpsampleYuvToRgbaLinePair
23 
WebPLoadHispeedPlugin()24 void WebPLoadHispeedPlugin()
25 {
26     hispeedImageHandle = dlopen(HISPEED_IMAGE_SO_PATH, RTLD_LAZY);
27     if (hispeedImageHandle == NULL) {
28         return;
29     }
30     g_vp8ParseResidualsHandle = (HSDPlugin_VP8ParseResiduals)dlsym(hispeedImageHandle, "HSDImage_VP8ParseResiduals");
31     g_vp8ParseIntraModeRowHandle =
32         (HSDPlugin_VP8ParseIntraModeRow)dlsym(hispeedImageHandle, "HSDImage_VP8ParseIntraModeRow");
33     g_vFilter16iHandle = (HSDPlugin_VFilter16i)dlsym(hispeedImageHandle, "HSDImage_VFilter16i");
34     g_hFilter16Handle = (HSDPlugin_HFilter16)dlsym(hispeedImageHandle, "HSDImage_HFilter16");
35     g_hFilter16iHandle = (HSDPlugin_HFilter16i)dlsym(hispeedImageHandle, "HSDImage_HFilter16i");
36     g_hFilter8Handle = (HSDPlugin_HFilter8)dlsym(hispeedImageHandle, "HSDImage_HFilter8");
37     g_hFilter8iHandle = (HSDPlugin_HFilter8i)dlsym(hispeedImageHandle, "HSDImage_HFilter8i");
38     g_upsampleYuvToRgbaLinePairHandle =
39         (HSDPlugin_UpsampleYuvToRgbaLinePair)dlsym(hispeedImageHandle, "HSDImage_UpsampleYuvToRgbaLinePair");
40 }
41 
WebPUnloadHispeedPlugin()42 void WebPUnloadHispeedPlugin()
43 {
44     if (hispeedImageHandle != NULL) {
45         dlclose(hispeedImageHandle);
46         hispeedImageHandle = NULL;
47         g_vp8ParseResidualsHandle = NULL;
48         g_vp8ParseIntraModeRowHandle = NULL;
49         g_vFilter16iHandle = NULL;
50         g_hFilter16Handle = NULL;
51         g_hFilter16iHandle = NULL;
52         g_hFilter8Handle = NULL;
53         g_hFilter8iHandle = NULL;
54         g_upsampleYuvToRgbaLinePairHandle = NULL;
55     }
56 }
57 
58 #endif