fengjiongmax / fltgst

Use GStreamer in your Flutter project on all supported platforms.
https://www.youtube.com/playlist?list=PLmUt0wXRF1HjsKy2XPPWFvuGA5DKDkpAc
4 stars 2 forks source link

gstreamer play video in android #4

Closed Larryyuan2015 closed 6 months ago

Larryyuan2015 commented 6 months ago

Hi fengjiongmax,

I put test.mp4 in the android equipment. It was ok to play the video by other gstreamer appwith the same pipeline on same android equiment. and I modified the native_binding.c file like below in this flutter project. but there was no image to come out. Could you help to check the issue? Thank you very much!

//m FFI_PLUGIN_EXPORT void setup_pipeline(void) { // Setup pipeline gchar *pipeline_description = g_strdup("filesrc location=/sdcard/test.mp4 ! qtdemux ! h264parse ! avdec_h264 ! autovideosink"); data->pipeline = gst_parse_launch(pipeline_description, NULL); g_free(pipeline_description);

if (!data->pipeline) {
    g_printerr("Pipeline could not be created.\n");
    return;
}

// Set pipeline state
gst_element_set_state(data->pipeline, GST_STATE_READY);

// Get overlay interface
data->overlay = gst_bin_get_by_interface(GST_BIN(data->pipeline), GST_TYPE_VIDEO_OVERLAY);

}

Larryyuan2015 commented 6 months ago

I didn't find any exception information the log from android.

D:\temp\23.txt(124): 06-16 12:19:55.339 1118 1211 I PackageManager: /data/app/com.example.fltgst-1 changed; collecting certs D:\temp\23.txt(138): 06-16 12:19:55.137 1118 1211 W PackageManager: Package com.example.fltgst desires unavailable shared library androidx.window.extensions; ignoring! D:\temp\23.txt(139): 06-16 12:19:55.137 1118 1211 W PackageManager: Package com.example.fltgst desires unavailable shared library androidx.window.sidecar; ignoring! D:\temp\23.txt(154): 06-16 12:19:57.521 1118 1118 W PackageManager: Package com.example.fltgst desires unavailable shared library androidx.window.extensions; ignoring! D:\temp\23.txt(155): 06-16 12:19:57.521 1118 1118 W PackageManager: Package com.example.fltgst desires unavailable shared library androidx.window.sidecar; ignoring! D:\temp\23.txt(1000): 06-16 12:20:41.895 1118 1942 I ActivityManager: START u0 {act=android.intent.action.DELETE dat=package:com.example.fltgst flg=0x10800000 cmp=com.android.packageinstaller/.UninstallerActivity (has extras)} from uid 10048 on display 0 D:\temp\23.txt(1003): 06-16 12:20:42.745 1118 1158 I ActivityManager: Force stopping com.example.fltgst appid=10085 user=0: deletePackageX D:\temp\23.txt(1005): 06-16 12:20:42.628 1118 1194 I ActivityManager: Force stopping com.example.fltgst appid=10085 user=0: pkg removed D:\temp\23.txt(1018): 06-16 12:20:56.295 1118 1194 W PackageManager: Package com.example.fltgst desires unavailable shared library androidx.window.extensions; ignoring! D:\temp\23.txt(1019): 06-16 12:20:56.295 1118 1194 W PackageManager: Package com.example.fltgst desires unavailable shared library androidx.window.sidecar; ignoring! D:\temp\23.txt(1021): 06-16 12:20:56.257 1118 1194 W PackageManager.DexOptimizer: com.android.internal.os.InstallerConnection$InstallerException: Failed to execute dexopt [/data/app/vmdl888199500.tmp/base.apk, 39999, com.example.fltgst, arm64, 1, /data/app/vmdl888199500.tmp/oat, 18, interpret-only, null, null]: -1 D:\temp\23.txt(1036): 06-16 12:20:56.247 1118 1194 W PackageManager: Package com.example.fltgst desires unavailable shared library androidx.window.extensions; ignoring! D:\temp\23.txt(1037): 06-16 12:20:56.247 1118 1194 W PackageManager: Package com.example.fltgst desires unavailable shared library androidx.window.sidecar; ignoring! D:\temp\23.txt(1038): 06-16 12:20:56.105 1118 1194 V BackupManagerService: restoreAtInstall pkg=com.example.fltgst token=1 restoreSet=0 D:\temp\23.txt(1092): 06-16 12:21:01.393 1118 3041 W PackageManager.DexOptimizer: com.android.internal.os.InstallerConnection$InstallerException: Failed to execute dexopt [/data/app/com.example.fltgst-1/base.apk, 50090, com.example.fltgst, arm64, 1, /data/app/com.example.fltgst-1/oat, 48, verify-profile, null, null]: -1 D:\temp\23.txt(1118): 06-16 12:21:07.877 1118 1145 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.fltgst/.MainActivity bnds=[704,386][960,586] (has extras)} from uid 10048 on display 0 D:\temp\23.txt(1119): 06-16 12:21:07.828 1118 1916 I ActivityManager: Start proc 3081:com.example.fltgst/u0a90 for activity com.example.fltgst/.MainActivity D:\temp\23.txt(1126): 06-16 12:21:44.062 1118 1942 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.fltgst/.MainActivity bnds=[704,386][960,586] (has extras)} from uid 10048 on display 0 D:\temp\23.txt(1130): 06-16 12:22:27.777 1118 1570 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.fltgst/.MainActivity bnds=[704,386][960,586] (has extras)} from uid 10048 on display 0 D:\temp\23.txt(1148): 06-16 12:27:51.792 1118 1914 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.fltgst/.MainActivity bnds=[704,386][960,586] (has extras)} from uid 10048 on display 0 D:\temp\23.txt(1150): 06-16 12:27:55.933 1118 1570 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.fltgst/.MainActivity bnds=[704,386][960,586] (has extras)} from uid 10048 on display 0 D:\temp\23.txt(1152): 06-16 12:27:58.943 1118 1974 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.fltgst/.MainActivity bnds=[704,386][960,586] (has extras)} from uid 10048 on display 0 D:\temp\23.txt(1165): 06-16 12:42:35.074 1118 1357 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.fltgst/.MainActivity bnds=[704,386][960,586] (has extras)} from uid 10048 on display 0 D:\temp\23.txt(1178): 06-16 12:46:14.530 1118 1398 I ActivityManager: START u0 {act=android.intent.action.DELETE dat=package:com.example.fltgst flg=0x10800000 cmp=com.android.packageinstaller/.UninstallerActivity (has extras)} from uid 10048 on display 0 D:\temp\23.txt(1180): 06-16 12:46:15.488 1118 1158 I ActivityManager: Force stopping com.example.fltgst appid=10090 user=0: deletePackageX D:\temp\23.txt(1181): 06-16 12:46:15.487 1118 1158 I ActivityManager: Killing 3081:com.example.fltgst/u0a90 (adj 700): stop com.example.fltgst D:\temp\23.txt(1183): 06-16 12:46:15.486 1118 1158 I ActivityManager: Force finishing activity ActivityRecord{3c8c997 u0 com.example.fltgst/.MainActivity t261} D:\temp\23.txt(1184): 06-16 12:46:15.451 1118 1570 I WindowManager: WIN DEATH: Window{43847ee u0 com.example.fltgst/com.example.fltgst.MainActivity} D:\temp\23.txt(1185): 06-16 12:46:15.450 1118 1570 W WindowManager: Force-removing child win Window{13334b0 u0 SurfaceView - com.example.fltgst/com.example.fltgst.MainActivity} from container Window{43847ee u0 com.example.fltgst/com.example.fltgst.MainActivity} D:\temp\23.txt(1186): 06-16 12:46:15.437 1118 1570 W WindowManager: Force-removing child win Window{cfb3f29 u0 SurfaceView - com.example.fltgst/com.example.fltgst.MainActivity} from container Window{43847ee u0 com.example.fltgst/com.example.fltgst.MainActivity} D:\temp\23.txt(1201): 06-16 12:46:15.343 1118 1194 I ActivityManager: Force stopping com.example.fltgst appid=10090 user=0: pkg removed D:\temp\23.txt(1282): 06-16 12:48:36.402 1118 1194 W PackageManager: Package com.example.fltgst desires unavailable shared library androidx.window.extensions; ignoring! D:\temp\23.txt(1283): 06-16 12:48:36.402 1118 1194 W PackageManager: Package com.example.fltgst desires unavailable shared library androidx.window.sidecar; ignoring! D:\temp\23.txt(1284): 06-16 12:48:36.400 1118 1194 I PackageManager.DexOptimizer: Running dexopt (dex2oat) on: /data/app/vmdl242882580.tmp/base.apk pkg=com.example.fltgst isa=arm64 vmSafeMode=false debuggable=false target-filter=interpret-only oatDir = /data/app/vmdl242882580.tmp/oat sharedLibraries=null D:\temp\23.txt(1289): 06-16 12:48:36.368 1118 1194 W PackageManager.DexOptimizer: com.android.internal.os.InstallerConnection$InstallerException: Failed to execute dexopt [/data/app/vmdl242882580.tmp/base.apk, 39999, com.example.fltgst, arm64, 1, /data/app/vmdl242882580.tmp/oat, 18, interpret-only, null, null]: -1 D:\temp\23.txt(1304): 06-16 12:48:36.355 1118 1194 W PackageManager: Package com.example.fltgst desires unavailable shared library androidx.window.extensions; ignoring! D:\temp\23.txt(1305): 06-16 12:48:36.355 1118 1194 W PackageManager: Package com.example.fltgst desires unavailable shared library androidx.window.sidecar; ignoring! D:\temp\23.txt(1306): 06-16 12:48:36.303 1118 1194 W PackageManager: Not granting permission android.permission.CHANGE_CONFIGURATION to package com.example.fltgst (protectionLevel=50 flags=0x3808be44) D:\temp\23.txt(1307): 06-16 12:48:36.303 1118 1194 W PackageManager: Unknown permission android.permission.FOREGROUND_SERVICE in package com.example.fltgst D:\temp\23.txt(1308): 06-16 12:48:36.303 1118 1194 W PackageManager: Not granting permission android.permission.MOUNT_UNMOUNT_FILESYSTEMS to package com.example.fltgst (protectionLevel=18 flags=0x3808be44) D:\temp\23.txt(1309): 06-16 12:48:36.246 744 744 D installd: Detected label change from u:object_r:system_data_file:s0 to u:object_r:app_data_file:s0:c512,c768 at /data/data/com.example.fltgst; running recursive restorecon D:\temp\23.txt(1310): 06-16 12:48:36.245 744 744 D installd: Detected label change from u:object_r:system_data_file:s0 to u:object_r:app_data_file:s0:c512,c768 at /data/user_de/0/com.example.fltgst; running recursive restorecon D:\temp\23.txt(1311): 06-16 12:48:36.244 1118 1194 V BackupManagerService: restoreAtInstall pkg=com.example.fltgst token=2 restoreSet=0 D:\temp\23.txt(1347): 06-16 12:48:46.392 1118 1941 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.fltgst/.MainActivity bnds=[704,386][960,586] (has extras)} from uid 10048 on display 0 D:\temp\23.txt(1404): 06-16 12:48:46.364 1118 1357 I ActivityManager: Start proc 5863:com.example.fltgst/u0a91 for activity com.example.fltgst/.MainActivity D:\temp\23.txt(1407): 06-16 12:48:46.295 5863 5863 W art : Method Landroid/view/ViewStructure;.addChildCount is abstract, but the declaring class is neither abstract nor an interface in dex file /data/app/com.example.fltgst-1/base.apk D:\temp\23.txt(1408): 06-16 12:48:46.295 5863 5863 W art : Method Landroid/view/ViewStructure;.newChild is abstract, but the declaring class is neither abstract nor an interface in dex file /data/app/com.example.fltgst-1/base.apk D:\temp\23.txt(1409): 06-16 12:48:46.295 5863 5863 W art : Method Landroid/view/ViewStructure;.setDimens is abstract, but the declaring class is neither abstract nor an interface in dex file /data/app/com.example.fltgst-1/base.apk D:\temp\23.txt(1410): 06-16 12:48:46.294 5863 5863 W art : Method Landroid/view/ViewStructure;.setHint is abstract, but the declaring class is neither abstract nor an interface in dex file /data/app/com.example.fltgst-1/base.apk D:\temp\23.txt(1411): 06-16 12:48:46.294 5863 5863 W art : Method Landroid/view/ViewStructure;.setVisibility is abstract, but the declaring class is neither abstract nor an interface in dex file /data/app/com.example.fltgst-1/base.apk D:\temp\23.txt(1425): 06-16 12:48:46.278 5863 5863 I art : Caused by: java.lang.ClassNotFoundException: Didn't find class "android.window.OnBackInvokedCallback" on path: DexPathList[[zip file "/data/app/com.example.fltgst-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.fltgst-1/lib/arm64, /data/app/com.example.fltgst-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]] D:\temp\23.txt(1443): 06-16 12:48:46.227 5863 5863 D ApplicationLoaders: ignored Vulkan layer search path /data/app/com.example.fltgst-1/lib/arm64:/data/app/com.example.fltgst-1/base.apk!/lib/arm64-v8a for namespace 0x7fad4ae0f0 D:\temp\23.txt(1479): 06-16 12:48:46.069 5863 5863 I art : Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.window.sidecar.SidecarInterface$SidecarCallback" on path: DexPathList[[zip file "/data/app/com.example.fltgst-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.fltgst-1/lib/arm64, /data/app/com.example.fltgst-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]] D:\temp\23.txt(1535): 06-16 12:48:46.068 5863 5863 I art : Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.window.sidecar.SidecarInterface$SidecarCallback" on path: DexPathList[[zip file "/data/app/com.example.fltgst-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.fltgst-1/lib/arm64, /data/app/com.example.fltgst-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]] D:\temp\23.txt(1581): 06-16 12:48:47.951 1118 1181 I ActivityManager: Displayed com.example.fltgst/.MainActivity: +425ms (total +2m31s593ms) D:\temp\23.txt(1714): 06-16 12:49:33.430 1118 1942 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.fltgst/.MainActivity bnds=[704,386][960,586] (has extras)} from uid 10048 on display 0 D:\temp\23.txt(1721): 06-16 12:49:33.288 1118 1181 I ActivityManager: Displayed com.example.fltgst/.MainActivity: +125ms D:\temp\23.txt(4202): 06-16 12:50:16.614 1118 1941 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.fltgst/.MainActivity bnds=[704,386][960,586] (has extras)} from uid 10048 on display 0 D:\temp\23.txt(4232): 06-16 12:50:16.428 1118 1181 I ActivityManager: Displayed com.example.fltgst/.MainActivity: +174ms D:\temp\23.txt(8482): 06-16 12:50:55.775 1118 1145 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.fltgst/.MainActivity bnds=[704,386][960,586] (has extras)} from uid 10048 on display 0 D:\temp\23.txt(8511): 06-16 12:50:55.608 1118 1181 I ActivityManager: Displayed com.example.fltgst/.MainActivity: +155ms

fengjiongmax commented 6 months ago

I'm not sure, did you add permission to access files to the android app? https://stackoverflow.com/questions/1992953/file-operations-in-android-ndk And please put logs in following format:

[output here]

MatteoGigerSR commented 6 months ago

You are using new elements in your pipeline like avdec_h264 which belongs to the libav plugin. Did you include this new plugin? If not you will not get an image but it will compile and run with no error.

I included the plugin "libav" in CMAKE and added it to gst_plugin_init_android but then you get a bunch of unreferenced symbol errors to av functions:

 ld: error: undefined symbol: av_malloc
[        ]   >>> referenced by gstavutils.c:454

[        ]   >>> referenced 7 more times
[        ]   ld: error: undefined symbol: av_codec_iterate

and linking the library gstlibav doesn't help either

MatteoGigerSR commented 6 months ago

I managed to get raw video streaming over udp working but this is not very ideal... Unfortunately decodebin produces no output for me. Do you have any experience with decoding on android @fengjiongmax ?

fengjiongmax commented 6 months ago

@MatteoGigerSR I have some experience on audio, but I have not tried video before, can you create a sample repo so I can check on that?

MatteoGigerSR commented 6 months ago

Thanks, that would be amazing. I can create a repo tomorrow but if you manage to get the gstreamer plugin libav working that would already be amazing. Libav provides software decoding you will have to link the libraries avformat avcodec avutil but at this point I run in to a compile time relocation error (can't provide output right now but I will do so once I can). The 2nd option is hardware decoding. There is a gstreamer plugin called androidmedia but I can't find any documentation on it (only info: https://stackoverflow.com/questions/74607854/androidmedia-plugin-pad-templates) I also tried decodebin element which should select optimal decoding for you but there I get no video whatsoever.

Larryyuan2015 commented 6 months ago

@fengjiongmax I tried the below permissions in AndroidManifest.xml, There is still the same issue. As @MatteoGigerSR said, it can compile and run with no error but there is no image, I don't know how to output the log as you want. I just use adb logcat to catch the app related log as the information on https://github.com/fengjiongmax/fltgst/issues/4#issuecomment-2014739223

...

I'm not sure, did you add permission to access files to the android app? https://stackoverflow.com/questions/1992953/file-operations-in-android-ndk And please put logs in following format:

[output here]

MatteoGigerSR commented 6 months ago

Here's an attempt of option one (including libav plugin): https://github.com/MatteoGigerSR/fltgst/tree/videodisplay And here's the output:

[        ] C/C++: ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_32; recompile with -fPIC
[        ] C/C++: ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_32 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to
allow text relocations in the output
[        ] C/C++: ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_64; recompile with -fPIC
[        ] C/C++: ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_64 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to
allow text relocations in the output
[        ] C/C++: ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_128; recompile with -fPIC
[        ] C/C++: ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_128 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to
allow text relocations in the output
[        ] C/C++: ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_256; recompile with -fPIC
[        ] C/C++: ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_256 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to
allow text relocations in the output
[        ] C/C++: ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_512; recompile with -fPIC
[        ] C/C++: ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_512 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to
allow text relocations in the output
[        ] C/C++: ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_1024; recompile with -fPIC
[        ] C/C++: ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_1024 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to
allow text relocations in the output
[        ] C/C++: ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_2048; recompile with -fPIC
[        ] C/C++: ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_2048 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to
allow text relocations in the output
[        ] C/C++: ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_4096; recompile with -fPIC
[        ] C/C++: ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_4096 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to
allow text relocations in the output
[        ] C/C++: ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_8192; recompile with -fPIC
[        ] C/C++: ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_8192 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to
allow text relocations in the output
[        ] C/C++: ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_16384; recompile with -fPIC
[        ] C/C++: ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_16384 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to
allow text relocations in the output
[        ] C/C++: ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)
[        ] C/C++: clang: error: linker command failed with exit code 1 (use -v to see invocation)
[        ] :native_binding:buildCMakeRelWithDebInfo[arm64-v8a] (Thread[Execution worker Thread 11,5,main]) completed. Took 0.111 secs.
[        ] 6 actionable tasks: 2 executed, 4 up-to-date
[        ] FAILURE: Build failed with an exception.
[        ] * What went wrong:
[        ] Execution failed for task ':native_binding:buildCMakeRelWithDebInfo[arm64-v8a]'.
[        ] > com.android.ide.common.process.ProcessException: ninja: Entering directory `/home/user/file/fltgst/app/native_binding/android/.cxx/RelWithDebInfo/3a4sd2o3/arm64-v8a'
[        ]   [1/1] Linking C shared library /home/user/file/fltgst/app/fltgst/build/native_binding/intermediates/cxx/RelWithDebInfo/3a4sd2o3/obj/arm64-v8a/libnative_binding.so
[        ]   FAILED: /home/user/file/fltgst/app/fltgst/build/native_binding/intermediates/cxx/RelWithDebInfo/3a4sd2o3/obj/arm64-v8a/libnative_binding.so 
[        ]   : && /home/user/Android/Sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/linux-x86_64/bin/clang --target=aarch64-none-linux-android21
--gcc-toolchain=/home/user/Android/Sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/linux-x86_64
--sysroot=/home/user/Android/Sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/linux-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables
-fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security  -O2 -g -DNDEBUG  -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings
-Wl,--no-undefined -Qunused-arguments -shared -Wl,-soname,libnative_binding.so -o
/home/user/file/fltgst/app/fltgst/build/native_binding/intermediates/cxx/RelWithDebInfo/3a4sd2o3/obj/arm64-v8a/libnative_binding.so CMakeFiles/native_binding.dir/native_binding.c.o
CMakeFiles/native_binding.dir/gst_plugin_init_android.c.o -L/home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib
-L/home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0 -lgstreamer-1.0  -lgobject-2.0  -lglib-2.0  -lgstcoreelements  -lgstcoretracers
-lgstadder  -lgstapp  -lgstaudioconvert  -lgstaudiorate  -lgstaudiotestsrc  -lgstvideotestsrc  -lgstgio  -lgstautodetect  -lgstopensles  -lgstipcpipeline  -lgstopengl  -lgstlibav  -lintl  -lffi
-liconv  -lgmodule-2.0  -lpcre2-8  -lgstbase-1.0  -lgstaudio-1.0  -lgstvideo-1.0  -lgstgl-1.0  -lgstcontroller-1.0  -lpng16  -lgraphene-1.0  -ljpeg  -lorc-0.4  -lgstapp-1.0  -lgio-2.0  -landroid
-llog  -lz  -lOpenSLES  -lEGL  -lGLESv2  -lavutil  -lavcodec  -lavformat  -latomic -lm && :
[        ]   ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_32; recompile with -fPIC
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:526 (./libavutil/aarch64/asm.S:526)
[        ]   >>>               fft_neon.o:(fft32_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_32 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:526 (./libavutil/aarch64/asm.S:526)
[        ]   >>>               fft_neon.o:(fft32_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_64; recompile with -fPIC
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:527 (./libavutil/aarch64/asm.S:527)
[        ]   >>>               fft_neon.o:(fft64_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_64 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:527 (./libavutil/aarch64/asm.S:527)
[        ]   >>>               fft_neon.o:(fft64_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_128; recompile with -fPIC
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:528 (./libavutil/aarch64/asm.S:528)
[        ]   >>>               fft_neon.o:(fft128_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_128 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:528 (./libavutil/aarch64/asm.S:528)
[        ]   >>>               fft_neon.o:(fft128_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_256; recompile with -fPIC
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:529 (./libavutil/aarch64/asm.S:529)
[        ]   >>>               fft_neon.o:(fft256_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_256 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:529 (./libavutil/aarch64/asm.S:529)
[        ]   >>>               fft_neon.o:(fft256_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_512; recompile with -fPIC
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:530 (./libavutil/aarch64/asm.S:530)
[        ]   >>>               fft_neon.o:(fft512_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_512 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:530 (./libavutil/aarch64/asm.S:530)
[        ]   >>>               fft_neon.o:(fft512_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_1024; recompile with -fPIC
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:531 (./libavutil/aarch64/asm.S:531)
[        ]   >>>               fft_neon.o:(fft1024_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_1024 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:531 (./libavutil/aarch64/asm.S:531)
[        ]   >>>               fft_neon.o:(fft1024_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_2048; recompile with -fPIC
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:532 (./libavutil/aarch64/asm.S:532)
[        ]   >>>               fft_neon.o:(fft2048_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_2048 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:532 (./libavutil/aarch64/asm.S:532)
[        ]   >>>               fft_neon.o:(fft2048_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_4096; recompile with -fPIC
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:533 (./libavutil/aarch64/asm.S:533)
[        ]   >>>               fft_neon.o:(fft4096_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_4096 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:533 (./libavutil/aarch64/asm.S:533)
[        ]   >>>               fft_neon.o:(fft4096_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_8192; recompile with -fPIC
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:534 (./libavutil/aarch64/asm.S:534)
[        ]   >>>               fft_neon.o:(fft8192_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_8192 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:534 (./libavutil/aarch64/asm.S:534)
[        ]   >>>               fft_neon.o:(fft8192_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_16384; recompile with -fPIC
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:535 (./libavutil/aarch64/asm.S:535)
[        ]   >>>               fft_neon.o:(fft16384_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_16384 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ]   >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ]   >>> referenced by asm.S:535 (./libavutil/aarch64/asm.S:535)
[        ]   >>>               fft_neon.o:(fft16384_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ]   ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)
[        ]   clang: error: linker command failed with exit code 1 (use -v to see invocation)
[        ]   ninja: build stopped: subcommand failed.
[        ]   C++ build system [build] failed while executing:
[        ]       /home/user/Android/Sdk/cmake/3.18.1/bin/ninja \
[        ]         -C \
[        ]         /home/user/file/fltgst/app/native_binding/android/.cxx/RelWithDebInfo/3a4sd2o3/arm64-v8a \
[        ]         native_binding
[        ]     from /home/user/file/fltgst/app/native_binding/android
[        ] * Try:
[        ] > Run with --debug option to get more log output.
[        ] > Run with --scan to get full insights.
[        ] * Exception is:
[        ] org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':native_binding:buildCMakeRelWithDebInfo[arm64-v8a]'.
[        ]      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:142)
[        ]      at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)
[        ]      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:140)
[        ]      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:128)
[        ]      at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
[        ]      at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
[        ]      at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
[        ]      at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
[        ]      at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
[        ]      at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
[        ]      at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
[        ]      at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
[        ]      at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
[        ]      at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
[        ]      at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:69)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:327)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:314)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:307)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:293)
[        ]      at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:417)
[        ]      at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:339)
[        ]      at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
[        ]      at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
[        ]      at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[        ]      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[        ]      at java.base/java.lang.Thread.run(Thread.java:840)
[        ] Caused by: org.gradle.internal.UncheckedException: com.android.ide.common.process.ProcessException: ninja: Entering directory
`/home/user/file/fltgst/app/native_binding/android/.cxx/RelWithDebInfo/3a4sd2o3/arm64-v8a'
[        ] [1/1] Linking C shared library /home/user/file/fltgst/app/fltgst/build/native_binding/intermediates/cxx/RelWithDebInfo/3a4sd2o3/obj/arm64-v8a/libnative_binding.so
[        ] FAILED: /home/user/file/fltgst/app/fltgst/build/native_binding/intermediates/cxx/RelWithDebInfo/3a4sd2o3/obj/arm64-v8a/libnative_binding.so 
[        ] : && /home/user/Android/Sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/linux-x86_64/bin/clang --target=aarch64-none-linux-android21
--gcc-toolchain=/home/user/Android/Sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/linux-x86_64
--sysroot=/home/user/Android/Sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/linux-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables
-fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security  -O2 -g -DNDEBUG  -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings
-Wl,--no-undefined -Qunused-arguments -shared -Wl,-soname,libnative_binding.so -o
/home/user/file/fltgst/app/fltgst/build/native_binding/intermediates/cxx/RelWithDebInfo/3a4sd2o3/obj/arm64-v8a/libnative_binding.so CMakeFiles/native_binding.dir/native_binding.c.o
CMakeFiles/native_binding.dir/gst_plugin_init_android.c.o -L/home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib
-L/home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0 -lgstreamer-1.0  -lgobject-2.0  -lglib-2.0  -lgstcoreelements  -lgstcoretracers
-lgstadder  -lgstapp  -lgstaudioconvert  -lgstaudiorate  -lgstaudiotestsrc  -lgstvideotestsrc  -lgstgio  -lgstautodetect  -lgstopensles  -lgstipcpipeline  -lgstopengl  -lgstlibav  -lintl  -lffi
-liconv  -lgmodule-2.0  -lpcre2-8  -lgstbase-1.0  -lgstaudio-1.0  -lgstvideo-1.0  -lgstgl-1.0  -lgstcontroller-1.0  -lpng16  -lgraphene-1.0  -ljpeg  -lorc-0.4  -lgstapp-1.0  -lgio-2.0  -landroid
-llog  -lz  -lOpenSLES  -lEGL  -lGLESv2  -lavutil  -lavcodec  -lavformat  -latomic -lm && :
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_32; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:526 (./libavutil/aarch64/asm.S:526)
[        ] >>>               fft_neon.o:(fft32_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_32 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow text
relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:526 (./libavutil/aarch64/asm.S:526)
[        ] >>>               fft_neon.o:(fft32_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_64; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:527 (./libavutil/aarch64/asm.S:527)
[        ] >>>               fft_neon.o:(fft64_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_64 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow text
relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:527 (./libavutil/aarch64/asm.S:527)
[        ] >>>               fft_neon.o:(fft64_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_128; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:528 (./libavutil/aarch64/asm.S:528)
[        ] >>>               fft_neon.o:(fft128_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_128 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow text
relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:528 (./libavutil/aarch64/asm.S:528)
[        ] >>>               fft_neon.o:(fft128_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_256; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:529 (./libavutil/aarch64/asm.S:529)
[        ] >>>               fft_neon.o:(fft256_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_256 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow text
relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:529 (./libavutil/aarch64/asm.S:529)
[        ] >>>               fft_neon.o:(fft256_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_512; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:530 (./libavutil/aarch64/asm.S:530)
[        ] >>>               fft_neon.o:(fft512_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_512 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow text
relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:530 (./libavutil/aarch64/asm.S:530)
[        ] >>>               fft_neon.o:(fft512_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_1024; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:531 (./libavutil/aarch64/asm.S:531)
[        ] >>>               fft_neon.o:(fft1024_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_1024 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:531 (./libavutil/aarch64/asm.S:531)
[        ] >>>               fft_neon.o:(fft1024_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_2048; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:532 (./libavutil/aarch64/asm.S:532)
[        ] >>>               fft_neon.o:(fft2048_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_2048 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:532 (./libavutil/aarch64/asm.S:532)
[        ] >>>               fft_neon.o:(fft2048_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_4096; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:533 (./libavutil/aarch64/asm.S:533)
[        ] >>>               fft_neon.o:(fft4096_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_4096 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:533 (./libavutil/aarch64/asm.S:533)
[        ] >>>               fft_neon.o:(fft4096_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_8192; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:534 (./libavutil/aarch64/asm.S:534)
[        ] >>>               fft_neon.o:(fft8192_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_8192 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:534 (./libavutil/aarch64/asm.S:534)
[        ] >>>               fft_neon.o:(fft8192_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_16384; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:535 (./libavutil/aarch64/asm.S:535)
[        ] >>>               fft_neon.o:(fft16384_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_16384 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:535 (./libavutil/aarch64/asm.S:535)
[        ] >>>               fft_neon.o:(fft16384_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)
[        ] clang: error: linker command failed with exit code 1 (use -v to see invocation)
[        ] ninja: build stopped: subcommand failed.
[        ] C++ build system [build] failed while executing:
[        ]     /home/user/Android/Sdk/cmake/3.18.1/bin/ninja \
[        ]       -C \
[        ]       /home/user/file/fltgst/app/native_binding/android/.cxx/RelWithDebInfo/3a4sd2o3/arm64-v8a \
[        ]       native_binding
[        ]   from /home/user/file/fltgst/app/native_binding/android
[        ]      at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:68)
[        ]      at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:41)
[        ]      at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:128)
[        ]      at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
[        ]      at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
[        ]      at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
[        ]      at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:236)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
[        ]      at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:221)
[        ]      at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:204)
[        ]      at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:187)
[        ]      at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:165)
[        ]      at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:89)
[        ]      at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:40)
[        ]      at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:53)
[        ]      at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
[        ]      at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:50)
[        ]      at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:40)
[        ]      at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)
[        ]      at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)
[        ]      at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
[        ]      at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
[        ]      at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
[        ]      at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
[        ]      at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29)
[        ]      at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.executeDelegateBroadcastingChanges(CaptureStateAfterExecutionStep.java:124)
[        ]      at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:80)
[        ]      at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:58)
[        ]      at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)
[        ]      at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36)
[        ]      at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:181)
[        ]      at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:71)
[        ]      at org.gradle.internal.Either$Right.fold(Either.java:175)
[        ]      at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59)
[        ]      at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:69)
[        ]      at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:47)
[        ]      at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:36)
[        ]      at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:25)
[        ]      at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
[        ]      at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
[        ]      at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:110)
[        ]      at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:56)
[        ]      at java.base/java.util.Optional.orElseGet(Optional.java:364)
[        ]      at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:56)
[        ]      at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
[        ]      at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:73)
[        ]      at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44)
[        ]      at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
[        ]      at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
[        ]      at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:89)
[        ]      at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:50)
[        ]      at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:114)
[        ]      at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:57)
[        ]      at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:76)
[        ]      at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:50)
[        ]      at org.gradle.internal.execution.steps.SkipEmptyWorkStep.executeWithNoEmptySources(SkipEmptyWorkStep.java:254)
[        ]      at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:91)
[        ]      at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:56)
[        ]      at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:32)
[        ]      at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:21)
[        ]      at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
[        ]      at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:43)
[        ]      at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:31)
[        ]      at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)
[        ]      at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:281)
[        ]      at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)
[        ]      at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
[        ]      at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
[        ]      at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
[        ]      at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44)
[        ]      at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33)
[        ]      at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)
[        ]      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:139)
[        ]      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:128)
[        ]      at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
[        ]      at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
[        ]      at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
[        ]      at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
[        ]      at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
[        ]      at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
[        ]      at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
[        ]      at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
[        ]      at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
[        ]      at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
[        ]      at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:69)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:327)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:314)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:307)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:293)
[        ]      at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:417)
[        ]      at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:339)
[        ]      at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
[        ]      at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
[        ]      at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[        ]      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[        ]      at java.base/java.lang.Thread.run(Thread.java:840)
[        ] Caused by: com.android.ide.common.process.ProcessException: ninja: Entering directory
`/home/user/file/fltgst/app/native_binding/android/.cxx/RelWithDebInfo/3a4sd2o3/arm64-v8a'
[        ] [1/1] Linking C shared library /home/user/file/fltgst/app/fltgst/build/native_binding/intermediates/cxx/RelWithDebInfo/3a4sd2o3/obj/arm64-v8a/libnative_binding.so
[        ] FAILED: /home/user/file/fltgst/app/fltgst/build/native_binding/intermediates/cxx/RelWithDebInfo/3a4sd2o3/obj/arm64-v8a/libnative_binding.so 
[        ] : && /home/user/Android/Sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/linux-x86_64/bin/clang --target=aarch64-none-linux-android21
--gcc-toolchain=/home/user/Android/Sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/linux-x86_64
--sysroot=/home/user/Android/Sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/linux-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables
-fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security  -O2 -g -DNDEBUG  -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings
-Wl,--no-undefined -Qunused-arguments -shared -Wl,-soname,libnative_binding.so -o
/home/user/file/fltgst/app/fltgst/build/native_binding/intermediates/cxx/RelWithDebInfo/3a4sd2o3/obj/arm64-v8a/libnative_binding.so CMakeFiles/native_binding.dir/native_binding.c.o
CMakeFiles/native_binding.dir/gst_plugin_init_android.c.o -L/home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib
-L/home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0 -lgstreamer-1.0  -lgobject-2.0  -lglib-2.0  -lgstcoreelements  -lgstcoretracers
-lgstadder  -lgstapp  -lgstaudioconvert  -lgstaudiorate  -lgstaudiotestsrc  -lgstvideotestsrc  -lgstgio  -lgstautodetect  -lgstopensles  -lgstipcpipeline  -lgstopengl  -lgstlibav  -lintl  -lffi
-liconv  -lgmodule-2.0  -lpcre2-8  -lgstbase-1.0  -lgstaudio-1.0  -lgstvideo-1.0  -lgstgl-1.0  -lgstcontroller-1.0  -lpng16  -lgraphene-1.0  -ljpeg  -lorc-0.4  -lgstapp-1.0  -lgio-2.0  -landroid
-llog  -lz  -lOpenSLES  -lEGL  -lGLESv2  -lavutil  -lavcodec  -lavformat  -latomic -lm && :
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_32; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:526 (./libavutil/aarch64/asm.S:526)
[        ] >>>               fft_neon.o:(fft32_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_32 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow text
relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:526 (./libavutil/aarch64/asm.S:526)
[        ] >>>               fft_neon.o:(fft32_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_64; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:527 (./libavutil/aarch64/asm.S:527)
[        ] >>>               fft_neon.o:(fft64_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_64 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow text
relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:527 (./libavutil/aarch64/asm.S:527)
[        ] >>>               fft_neon.o:(fft64_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_128; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:528 (./libavutil/aarch64/asm.S:528)
[        ] >>>               fft_neon.o:(fft128_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_128 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow text
relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:528 (./libavutil/aarch64/asm.S:528)
[        ] >>>               fft_neon.o:(fft128_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_256; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:529 (./libavutil/aarch64/asm.S:529)
[        ] >>>               fft_neon.o:(fft256_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_256 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow text
relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:529 (./libavutil/aarch64/asm.S:529)
[        ] >>>               fft_neon.o:(fft256_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_512; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:530 (./libavutil/aarch64/asm.S:530)
[        ] >>>               fft_neon.o:(fft512_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_512 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow text
relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:530 (./libavutil/aarch64/asm.S:530)
[        ] >>>               fft_neon.o:(fft512_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_1024; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:531 (./libavutil/aarch64/asm.S:531)
[        ] >>>               fft_neon.o:(fft1024_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_1024 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:531 (./libavutil/aarch64/asm.S:531)
[        ] >>>               fft_neon.o:(fft1024_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_2048; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:532 (./libavutil/aarch64/asm.S:532)
[        ] >>>               fft_neon.o:(fft2048_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_2048 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:532 (./libavutil/aarch64/asm.S:532)
[        ] >>>               fft_neon.o:(fft2048_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_4096; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:533 (./libavutil/aarch64/asm.S:533)
[        ] >>>               fft_neon.o:(fft4096_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_4096 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:533 (./libavutil/aarch64/asm.S:533)
[        ] >>>               fft_neon.o:(fft4096_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_8192; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:534 (./libavutil/aarch64/asm.S:534)
[        ] >>>               fft_neon.o:(fft8192_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_8192 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:534 (./libavutil/aarch64/asm.S:534)
[        ] >>>               fft_neon.o:(fft8192_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_16384; recompile with -fPIC
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:535 (./libavutil/aarch64/asm.S:535)
[        ] >>>               fft_neon.o:(fft16384_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: can't create dynamic relocation R_AARCH64_ADD_ABS_LO12_NC against symbol: ff_cos_16384 in readonly segment; recompile object files with -fPIC or pass '-Wl,-z,notext' to allow
text relocations in the output
[        ] >>> defined in /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a(fft_float.o)
[        ] >>> referenced by asm.S:535 (./libavutil/aarch64/asm.S:535)
[        ] >>>               fft_neon.o:(fft16384_neon) in archive /home/user/file/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/libavcodec.a
[        ] ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)
[        ] clang: error: linker command failed with exit code 1 (use -v to see invocation)
[        ] ninja: build stopped: subcommand failed.
[        ] C++ build system [build] failed while executing:
[        ]     /home/user/Android/Sdk/cmake/3.18.1/bin/ninja \
[        ]       -C \
[        ]       /home/user/file/fltgst/app/native_binding/android/.cxx/RelWithDebInfo/3a4sd2o3/arm64-v8a \
[        ]       native_binding
[        ]   from /home/user/file/fltgst/app/native_binding/android
[        ]      at com.android.build.gradle.internal.cxx.process.ExecuteProcessKt.execute(ExecuteProcess.kt:274)
[        ]      at com.android.build.gradle.internal.cxx.process.ExecuteProcessKt$executeProcess$1.invoke(ExecuteProcess.kt:106)
[        ]      at com.android.build.gradle.internal.cxx.process.ExecuteProcessKt$executeProcess$1.invoke(ExecuteProcess.kt:104)
[        ]      at com.android.build.gradle.internal.cxx.timing.TimingEnvironmentKt.time(TimingEnvironment.kt:32)
[        ]      at com.android.build.gradle.internal.cxx.process.ExecuteProcessKt.executeProcess(ExecuteProcess.kt:104)
[        ]      at com.android.build.gradle.internal.cxx.process.ExecuteProcessKt.executeProcess$default(ExecuteProcess.kt:84)
[        ]      at com.android.build.gradle.internal.cxx.build.CxxRegularBuilder.executeProcessBatch(CxxRegularBuilder.kt:331)
[        ]      at com.android.build.gradle.internal.cxx.build.CxxRegularBuilder.build(CxxRegularBuilder.kt:128)
[        ]      at com.android.build.gradle.tasks.ExternalNativeBuildTask$doTaskAction$$inlined$recordTaskAction$1.invoke(BaseTask.kt:70)
[        ]      at com.android.build.gradle.internal.tasks.Blocks.recordSpan(Blocks.java:51)
[        ]      at com.android.build.gradle.tasks.ExternalNativeBuildTask.doTaskAction(ExternalNativeBuildTask.kt:136)
[        ]      at com.android.build.gradle.internal.tasks.UnsafeOutputsTask$taskAction$$inlined$recordTaskAction$1.invoke(BaseTask.kt:65)
[        ]      at com.android.build.gradle.internal.tasks.Blocks.recordSpan(Blocks.java:51)
[        ]      at com.android.build.gradle.internal.tasks.UnsafeOutputsTask.taskAction(UnsafeOutputsTask.kt:61)
[        ]      at jdk.internal.reflect.GeneratedMethodAccessor400.invoke(Unknown Source)
[        ]      at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[        ]      at java.base/java.lang.reflect.Method.invoke(Method.java:568)
[        ]      at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125)
[        ]      ... 116 more
[        ] Caused by: com.android.ide.common.process.ProcessException: Error while executing process /home/user/Android/Sdk/cmake/3.18.1/bin/ninja with arguments {-C
/home/user/file/fltgst/app/native_binding/android/.cxx/RelWithDebInfo/3a4sd2o3/arm64-v8a native_binding}
[        ]      at com.android.build.gradle.internal.process.GradleProcessResult.buildProcessException(GradleProcessResult.java:73)
[        ]      at com.android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.java:48)
[        ]      at com.android.build.gradle.internal.cxx.process.ExecuteProcessKt.execute(ExecuteProcess.kt:269)
[        ]      ... 133 more
[        ] Caused by: org.gradle.process.internal.ExecException: Process 'command '/home/user/Android/Sdk/cmake/3.18.1/bin/ninja'' finished with non-zero exit value 1
[        ]      at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:415)
[        ]      at com.android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.java:46)
[        ]      ... 134 more
[        ] * Get more help at https://help.gradle.org
[        ] BUILD FAILED in 903ms
[ +347 ms] Running Gradle task 'assembleRelease'... (completed in 1,332ms)
[   +3 ms] "flutter apk" took 1,716ms.
[   +2 ms] Gradle task assembleRelease failed with exit code 1
[        ] 
           #0      throwToolExit (package:flutter_tools/src/base/common.dart:10:3)
           #1      AndroidGradleBuilder.buildGradleApp (package:flutter_tools/src/android/gradle.dart:506:9)
           <asynchronous suspension>
           #2      AndroidGradleBuilder.buildApk (package:flutter_tools/src/android/gradle.dart:224:5)
           <asynchronous suspension>
           #3      BuildApkCommand.runCommand (package:flutter_tools/src/commands/build_apk.dart:142:5)
           <asynchronous suspension>
           #4      FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1389:27)
           <asynchronous suspension>
           #5      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
           <asynchronous suspension>
           #6      CommandRunner.runCommand (package:args/command_runner.dart:212:13)
           <asynchronous suspension>
           #7      FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:355:9)
           <asynchronous suspension>
           #8      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
           <asynchronous suspension>
           #9      FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:295:5)
           <asynchronous suspension>
           #10     run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:119:9)
           <asynchronous suspension>
           #11     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
           <asynchronous suspension>
           #12     main (package:flutter_tools/executable.dart:90:3)
           <asynchronous suspension>
Larryyuan2015 commented 6 months ago

@MatteoGigerSR

Could you share the sample about playing raw video streaming over udp?Many thanks!

I managed to get raw video streaming over udp working but this is not very ideal... Unfortunately decodebin produces no output for me. Do you have any experience with decoding on android @fengjiongmax ?

MatteoGigerSR commented 6 months ago

use this as your pipeline in the app instead (make sure you include all plugins necessary for the elements otherwise you will see no error and no video)

data->pipeline = gst_parse_launch(
        "udpsrc port=5000 caps=application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264 ! rtph264depay ! decodebin ! videoconvert ! autovideosink",
        NULL); 

for sending you can use: gst-launch-1.0 videotestsrc ! rtpvrawpay ! udpsink host="insert_correct_ip_here" port=5000

fengjiongmax commented 6 months ago

Now I remember, in the Android emulator, when listening to a port, it will only listen to localhost or 127.0.0.1, so if the IP you use is your LAN IP, the stream may not reach your Android emulator.

I have a solution for this for an app I built, which combines http://www.brokestream.com/udp_redirect.html, and a shell script, and I have pushed it to the repo: https://github.com/fengjiongmax/fltgst-portforward

You can check the read me for how to use it.

Larryyuan2015 commented 6 months ago

@MatteoGigerSR Could you help to provide the CMakelist.txt with all related plugins list? Thank you very much!

use this as your pipeline in the app instead (make sure you include all plugins necessary for the elements otherwise you will see no error and no video)

MatteoGigerSR commented 6 months ago

Now I remember, in the Android emulator, when listening to a port, it will only listen to localhost or 127.0.0.1, so if the IP you use is your LAN IP, the stream may not reach your Android emulator.

I have a solution for this for an app I built, which combines http://www.brokestream.com/udp_redirect.html, and a shell script, and I have pushed it to the repo: https://github.com/fengjiongmax/fltgst-portforward

You can check the read me for how to use it.

I'm assuming your saying that to @Larryyuan2015 's issue. I'm not using Android Emulator I'm using my real phone. I don't think my issue is related to networking as streaming raw video works fine.

@Larryyuan2015 Here's my plugin list make sure to register and declare them as shown in @fengjiongmax 's video LIST(APPEND GST_PLUGINS coreelements coretracers adder app audioconvert audiorate audiotestsrc videotestsrc videorate videofilter videoconvertscale videoparsersbad udp gio autodetect opensles ipcpipeline opengl playback rtp rawparse androidmedia)

also link the required libs here's my list LIST(APPEND LINK_LIBS intl ffi iconv gmodule-2.0 pcre2-8 gstbase-1.0 gstaudio-1.0 gstvideo-1.0 gstgl-1.0 gstcontroller-1.0 gstpbutils-1.0 gsttag-1.0 gstrtp-1.0 gstnet-1.0 png16 graphene-1.0 jpeg orc-0.4 gstapp-1.0 gio-2.0 android log z OpenSLES EGL GLESv2 gstcodecparsers-1.0 gstphotography-1.0)

fengjiongmax commented 6 months ago

@MatteoGigerSR I got the app compiles but did not try if it the pipeline works. replace your

  LIST(APPEND LINK_LIBS intl ffi iconv gmodule-2.0 pcre2-8 gstbase-1.0 gstaudio-1.0 gstvideo-1.0 gstgl-1.0 gstcontroller-1.0 png16 graphene-1.0 jpeg orc-0.4 gstapp-1.0 gio-2.0 android log z OpenSLES EGL GLESv2 avutil avcodec avformat)

with

  LIST(APPEND LINK_LIBS intl ffi iconv gmodule-2.0 pcre2-8 gstbase-1.0 gstaudio-1.0 gstvideo-1.0 gstgl-1.0 gstcontroller-1.0 png16 graphene-1.0 jpeg orc-0.4 gstapp-1.0 gio-2.0 android log z OpenSLES EGL GLESv2 avutil avcodec avformat gstpbutils-1.0 avfilter swresample bz2 gsttag-1.0)

  SET(CMAKE_C_FLAGS " -Wl,-Bsymbolic ")

Hope it works!

Reference:

MatteoGigerSR commented 6 months ago

Thanks a lot for looking into this! Can you run the app? I can compile now as well but now it crashes on start for me.

fengjiongmax commented 6 months ago

Sorry, I didn't check beforehand, replace with this instead:


  LIST(APPEND LINK_LIBS intl ffi iconv gmodule-2.0 pcre2-8 gstbase-1.0 gstaudio-1.0 gstvideo-1.0 gstgl-1.0 gstcontroller-1.0 png16 graphene-1.0 jpeg orc-0.4 gstapp-1.0 gio-2.0 android log z OpenSLES EGL GLESv2 avutil avcodec avformat gstpbutils-1.0 avfilter swresample bz2 gsttag-1.0)

  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-Bsymbolic")
MatteoGigerSR commented 6 months ago

Amazing thanks! I now have software decoding working.

Larryyuan2015 commented 6 months ago

@fengjiongmax @MatteoGigerSR

I used the below configuration in CMakelist.txt, but there are some compile errors. Could you help me out? Many thanks!

LIST(APPEND GST_PLUGINS coreelements coretracers adder app audioconvert audiorate audiotestsrc videotestsrc videorate videofilter videoconvertscale videoparsersbad udp gio autodetect opensles ipcpipeline opengl playback rtp rawparse androidmedia)

LIST(APPEND LINK_LIBS intl ffi iconv gmodule-2.0 pcre2-8 gstbase-1.0 gstaudio-1.0 gstvideo-1.0 gstgl-1.0 gstcontroller-1.0 png16 graphene-1.0 jpeg orc-0.4 gstapp-1.0 gio-2.0 android log z OpenSLES EGL GLESv2 avutil avcodec avformat gstpbutils-1.0 avfilter swresample bz2 gsttag-1.0)

SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-Bsymbolic")

output log

referenced by gsth264parse.c:351 (../gst/videoparsers/gsth264parse.c:351) gsth264parse.c.o:(gst_h264_parse_start) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: undefined symbol: gst_h264_nal_parser_free

referenced by gsth264parse.c:376 (../gst/videoparsers/gsth264parse.c:376) gsth264parse.c.o:(gst_h264_parse_stop) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: undefined symbol: gst_h264_parser_identify_nalu_avc

referenced by gsth264parse.c:1300 (../gst/videoparsers/gsth264parse.c:1300) gsth264parse.c.o:(gst_h264_parse_handle_frame) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a referenced by gsth264parse.c:1344 (../gst/videoparsers/gsth264parse.c:1344) gsth264parse.c.o:(gst_h264_parse_handle_frame) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: undefined symbol: gst_h264_parser_identify_nalu

referenced by gsth264parse.c:1944 (../gst/videoparsers/gsth264parse.c:1944) gsth264parse.c.o:(gst_h264_parse_handle_frame) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: undefined symbol: gst_h264_parser_parse_sps

referenced by gsth264parse.c:1620 (../gst/videoparsers/gsth264parse.c:1620) gsth264parse.c.o:(gst_h264_parse_handle_frame) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a referenced by gsth264parse.c:1071 (../gst/videoparsers/gsth264parse.c:1071) gsth264parse.c.o:(gst_h264_parse_process_nal) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: undefined symbol: gst_h264_parser_parse_subset_sps

referenced by gsth264parse.c:1631 (../gst/videoparsers/gsth264parse.c:1631) gsth264parse.c.o:(gst_h264_parse_handle_frame) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a referenced by gsth264parse.c:1065 (../gst/videoparsers/gsth264parse.c:1065) gsth264parse.c.o:(gst_h264_parse_process_nal) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: undefined symbol: gst_h264_parser_parse_pps

referenced by gsth264parse.c:1628 (../gst/videoparsers/gsth264parse.c:1628) gsth264parse.c.o:(gst_h264_parse_handle_frame) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a referenced by gsth264parse.c:1106 (../gst/videoparsers/gsth264parse.c:1106) gsth264parse.c.o:(gst_h264_parse_process_nal) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: undefined symbol: gst_h264_parser_identify_nalu_unchecked

referenced by gsth264parse.c:1917 (../gst/videoparsers/gsth264parse.c:1917) gsth264parse.c.o:(gst_h264_parse_handle_frame) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: undefined symbol: gst_h264_sei_clear

referenced by gsth264parse.c:3663 (../gst/videoparsers/gsth264parse.c:3663) gsth264parse.c.o:(gst_h264_parse_pre_push_frame) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a referenced by gsth264parse.c:3663 (../gst/videoparsers/gsth264parse.c:3663) gsth264parse.c.o:(gst_h264_parse_pre_push_frame) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: undefined symbol: gst_h264_create_sei_memory

referenced by gsth264parse.c:3667 (../gst/videoparsers/gsth264parse.c:3667) gsth264parse.c.o:(gst_h264_parse_pre_push_frame) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: undefined symbol: gst_h264_create_sei_memory_avc

referenced by gsth264parse.c:3669 (../gst/videoparsers/gsth264parse.c:3669) gsth264parse.c.o:(gst_h264_parse_pre_push_frame) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: undefined symbol: gst_h264_parser_parse_decoder_config_record

referenced by gsth264parse.c:4116 (../gst/videoparsers/gsth264parse.c:4116) gsth264parse.c.o:(gst_h264_parse_set_caps) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: undefined symbol: gst_h264_decoder_config_record_free

referenced by gsth264parse.c:4143 (../gst/videoparsers/gsth264parse.c:4143) gsth264parse.c.o:(gst_h264_parse_set_caps) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: undefined symbol: gst_h264_pps_clear

referenced by gsth264parse.c:1131 (../gst/videoparsers/gsth264parse.c:1131) gsth264parse.c.o:(gst_h264_parse_process_nal) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: undefined symbol: gst_h264_parser_parse_sei

referenced by gsth264parse.c:663 (../gst/videoparsers/gsth264parse.c:663) gsth264parse.c.o:(gst_h264_parse_process_nal) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: undefined symbol: gst_h264_sps_clear

referenced by gsth264parse.c:1096 (../gst/videoparsers/gsth264parse.c:1096) gsth264parse.c.o:(gst_h264_parse_process_nal) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: undefined symbol: gst_h264_video_calculate_framerate

referenced by gsth264parse.c:2689 (../gst/videoparsers/gsth264parse.c:2689) gsth264parse.c.o:(gst_h264_parse_update_src_caps) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: undefined symbol: gst_h264_parser_parse_nal

referenced by gsth264parse.c gsth264parse.c.o:(OUTLINED_FUNCTION_110) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: undefined symbol: gst_h264_parser_parse_slice_hdr

referenced by gsth264parse.c gsth264parse.c.o:(OUTLINED_FUNCTION_112) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: undefined symbol: gst_mpeg_video_parse

referenced by gstmpegvideoparse.c:659 (../gst/videoparsers/gstmpegvideoparse.c:659) gstmpegvideoparse.c.o:(gst_mpegv_parse_handle_frame) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a referenced by gstmpegvideoparse.c:696 (../gst/videoparsers/gstmpegvideoparse.c:696) gstmpegvideoparse.c.o:(gst_mpegv_parse_handle_frame) in archive /home/yhl/projects/fltgst-videodisplay/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0/libgstvideoparsersbad.a

ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors) clang: error: linker command failed with exit code 1 (use -v to see invocation) ninja: build stopped: subcommand failed.

C++ build system [build] failed while executing: /home/yhl/Android/Sdk/cmake/3.18.1/bin/ninja \ -C \ /home/yhl/projects/fltgst-videodisplay/app/native_binding/android/.cxx/RelWithDebInfo/m6k592y8/arm64-v8a \ native_binding from /home/yhl/projects/fltgst-videodisplay/app/native_binding/android

BUILD FAILED in 1s Running Gradle task 'assembleRelease'... 2,185ms Gradle task assembleRelease failed with exit code 1

fengjiongmax commented 6 months ago

@Larryyuan2015 use these on LINK_LIBS

  LIST(APPEND LINK_LIBS intl ffi iconv gmodule-2.0 pcre2-8 gstbase-1.0 gstaudio-1.0 gstvideo-1.0 gstgl-1.0 gstcontroller-1.0 png16 graphene-1.0 jpeg orc-0.4 gstapp-1.0 gio-2.0 android log z OpenSLES EGL GLESv2 avutil avcodec avformat gstpbutils-1.0 avfilter swresample bz2 gsttag-1.0 gstcodecparsers-1.0 gstnet-1.0 gstrtp-1.0 gstphotography-1.0)

You can watch this part of the tutorial video so that you don't have to wait for us to reply.

Larryyuan2015 commented 6 months ago

@MatteoGigerSR
Thank you for the reply! I have met a problem on building fltgst using below LIST GST_PLUGINS and I added such as gstvideoscale libraries in LIST LINK_LIBS. But it has the same error. I have no idea how to resolve it. Can you please help on this? Thank you!

LIST(APPEND GST_PLUGINS coreelements coretracers adder app audioconvert audiomixer audiorate audioresample audiotestsrc compositor gio overlaycomposition pango rawparse typefindfunctions videoconvert videorate videoscale videotestsrc volume autodetect videofilter playback subparse ogg theora vorbis opus ivorbisdec alaw apetag audioparsers auparse avi dv flac flv flxdec icydemux id3demux isomp4 jpeg lame matroska mpg123 mulaw multipart png speex taglib vpx wavenc wavpack wavparse y4menc adpcmdec adpcmenc bz2 dash dvbsuboverlay dvdspu hls id3tag kate midi mxf openh264 opusparse pcapparse pnm rfbsrc siren smoothstreaming subenc videoparsersbad y4mdec jpegformat gdp rsvg openjpeg spandsp sbc zbar androidmedia tcp rtsp rtp rtpmanager soup udp dtls netsim rist rtmp2 rtpmanagerbad sctp sdpelem srtp srt webrtc nice rtspclientsink opengl ipcpipeline opensles asfmux dtsdec mpegpsdemux mpegpsmux mpegtsdemux mpegtsmux voaacenc a52dec amrnb amrwbdec asf dvdsub dvdlpcmdec xingmux realmedia x264 libav) //this plugins list is copyed from other gstreamer app.

FAILURE: Build failed with an exception.

BUILD FAILED in 59s Running Gradle task 'assembleDebug'... 60.4s Gradle task assembleDebug failed with exit code 1

fengjiongmax commented 6 months ago

@Larryyuan2015 Sorry, replace the entire CMakeLists.txt with the following:

# The Flutter tooling requires that developers have CMake 3.10 or later
# installed. You should not increase this version, as doing so will cause
# the plugin to fail to compile for some customers of the plugin.
cmake_minimum_required(VERSION 3.10)

project(native_binding_library VERSION 0.0.1 LANGUAGES C)

find_package(PkgConfig REQUIRED)

pkg_search_module(GST REQUIRED gstreamer-1.0)

IF(WIN32)
  find_program(CMAKE_PKGCONFIG_EXECUTABLE pkg-config)
  IF(CMAKE_PKGCONFIG_EXECUTABLE)
  # pkg-config.exe gstreamer-1.0 --libs --msvc-syntax
    EXEC_PROGRAM(${CMAKE_PKGCONFIG_EXECUTABLE}
    ARGS " --libs --msvc-syntax gstreamer-1.0"
    OUTPUT_VARIABLE GST_LDFLAGS)
    # replace spaces with semicolons so that we don't have quotation marks in command line option
    string(REPLACE " " ";" GST_LDFLAGS ${GST_LDFLAGS})
    message("GST_LDFLAGS: ${GST_LDFLAGS}")
  ENDIF()
ENDIF()

IF(ANDROID OR __ANDROID__)
  SET(GST_FOLDER ${CMAKE_CURRENT_SOURCE_DIR}/../third-party/gst-android)
  SET(ABI_SUFFIX ${ANDROID_ABI})

  IF(${ANDROID_ABI} STREQUAL "armeabi-v7a")
    SET(ABI_SUFFIX armv7)
  ELSEIF(${ANDROID_ABI} STREQUAL "arm64-v8a")
    SET(ABI_SUFFIX arm64)
  ELSEIF(${ANDROID_ABI} STREQUAL "x86")
    # skipped
  ELSEIF(${ANDROID_ABI} STREQUAL "x86_64")
    # skipped
  ENDIF()

  SET(GST_ROOT ${GST_FOLDER}/${ABI_SUFFIX})

  # -I/usr/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
  include_directories(
    ${GST_ROOT}/include/gstreamer-1.0
    ${GST_ROOT}/include/glib-2.0
    ${GST_ROOT}/lib/glib-2.0/include
  )

  link_directories(
    ${GST_ROOT}/lib
    ${GST_ROOT}/lib/gstreamer-1.0
  )

  SET(PLUGINS_DECLARATION)
  SET(PLUGINS_REGISTRATION)

  # Gstreamer plugins which bundles elements that you will be using in your pipeline
  LIST(APPEND GST_PLUGINS coreelements coretracers adder app audioconvert audiorate audiotestsrc videotestsrc videorate videofilter videoconvertscale videoparsersbad udp gio autodetect opensles ipcpipeline opengl playback rtp rawparse androidmedia)
  foreach(GST_P ${GST_PLUGINS})
    LIST(APPEND LINK_LIBS "gst${GST_P}")
    LIST(APPEND PLUGINS_DECLARATION "\nGST_PLUGIN_STATIC_DECLARE(${GST_P})")
    LIST(APPEND PLUGINS_REGISTRATION "\nGST_PLUGIN_STATIC_REGISTER(${GST_P})")
  endforeach()

  configure_file(gst_android.c.in ${CMAKE_CURRENT_SOURCE_DIR}/gst_plugin_init_android.c)

  LIST(APPEND APPENDED_SOURCE gst_plugin_init_android.c)

  # libraries required by above lists
  LIST(APPEND LINK_LIBS intl ffi iconv gmodule-2.0 pcre2-8 gstbase-1.0 gstaudio-1.0 gstvideo-1.0 gstgl-1.0 gstcontroller-1.0 png16 graphene-1.0 jpeg orc-0.4 gstapp-1.0 gio-2.0 android log z OpenSLES EGL GLESv2 avutil avcodec avformat gstpbutils-1.0 avfilter swresample bz2 gsttag-1.0 gstcodecparsers-1.0 gstnet-1.0 gstrtp-1.0 gstphotography-1.0)
ELSE()
  include_directories(${GST_INCLUDE_DIRS})
ENDIF()

add_library(native_binding SHARED
  "native_binding.c"
  ${APPENDED_SOURCE}
)

IF(WIN32)
  target_link_options(native_binding PRIVATE ${GST_LDFLAGS})
ELSE()
  target_link_libraries(native_binding PRIVATE ${GST_LDFLAGS} ${LINK_LIBS})
ENDIF()

set_target_properties(native_binding PROPERTIES
  PUBLIC_HEADER native_binding.h
  OUTPUT_NAME "native_binding"
)

target_compile_definitions(native_binding PUBLIC DART_SHARED_LIB)
Larryyuan2015 commented 6 months ago

@fengjiongmax @MatteoGigerSR It is OK for build apk. Thanks for your help. I used your CMakeLists.txt with the following GST_PLUGINS. LIST(APPEND GST_PLUGINS coreelements coretracers adder app audioconvert audiorate audiotestsrc videotestsrc videorate videofilter videoconvertscale videoparsersbad udp gio autodetect opensles ipcpipeline opengl playback rtp rawparse androidmedia libav)

but there is no image to test below two pipelines. 1. filesrc location=/sdcard/test.mp4 ! qtdemux ! h264parse ! avdec_h264 ! autovideosink 2. udpsrc port=5000 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' ! rtph264depay ! decodebin ! videoconvert ! autovideosink

there is a same error from log of device. Do you have any experience with this?

2024-01-04 04:11:33.273 3822-4098 libEGL com.example.fltgst E validate_display:99 error 3008 (EGL_BAD_DISPLAY)

fengjiongmax commented 6 months ago

How do you create the pipeline and the elements? I suggest you use gst_element_factory_make to create the elements individually, and then do a null check so that elements are created. If you did use gst_element_factory_make to create elements, then please create an example repository so that I can check on that. @Larryyuan2015

Larryyuan2015 commented 6 months ago

Hi fengjiongmax,

I used the following method to create the pipeline.

FFI_PLUGIN_EXPORT void setup_pipeline(void) { // Setup pipeline gchar pipeline_description = g_strdup("filesrc location=/sdcard/test.mp4 ! qtdemux ! h264parse ! avdec_h264 ! autovideosink"); //gchar pipeline_description = g_strdup("udpsrc port=5000 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' ! rtph264depay ! decodebin ! videoconvert ! autovideosink");

data->pipeline = gst_parse_launch(pipeline_description, NULL);
g_free(pipeline_description);

if (!data->pipeline) {
    g_printerr("Pipeline could not be created.\n");
    return;
}

// Set pipeline state
gst_element_set_state(data->pipeline, GST_STATE_READY);

// Get overlay interface
data->overlay = gst_bin_get_by_interface(GST_BIN(data->pipeline), GST_TYPE_VIDEO_OVERLAY);

}

then I changed the method like the below as your suggestion.

FFI_PLUGIN_EXPORT void setup_pipeline(void) { // Setup pipeline GstElement filesrc, qtdemux, h264parse, avdec_h264, *autovideosink;

filesrc = gst_element_factory_make("filesrc", NULL);
qtdemux = gst_element_factory_make("qtdemux", NULL);
h264parse = gst_element_factory_make("h264parse", NULL);
avdec_h264 = gst_element_factory_make("avdec_h264", NULL);
autovideosink = gst_element_factory_make("autovideosink", NULL);

// Check if elements are created successfully
if (!filesrc || !qtdemux || !h264parse || !avdec_h264 || !autovideosink) {
    g_printerr("Failed to create elements. Exiting.\n");
    // Clean up
    if (filesrc) gst_object_unref(filesrc);
    if (qtdemux) gst_object_unref(qtdemux);
    if (h264parse) gst_object_unref(h264parse);
    if (avdec_h264) gst_object_unref(avdec_h264);
    if (autovideosink) gst_object_unref(autovideosink);
    return;
}

// Set the location for filesrc
g_object_set(G_OBJECT(filesrc), "location", "/sdcard/test.mp4", NULL);

// Create the pipeline
data->pipeline = gst_pipeline_new("test-pipeline");
if (!data->pipeline) {
    g_printerr("Pipeline could not be created.\n");
    return;
}

// Add elements to the pipeline
gst_bin_add_many(GST_BIN(data->pipeline), filesrc, qtdemux, h264parse, avdec_h264, autovideosink, NULL);

// Link the elements
if (!gst_element_link_many(filesrc, qtdemux, h264parse, avdec_h264, autovideosink, NULL)) {
    g_printerr("Failed to link elements. Exiting.\n");
    gst_object_unref(data->pipeline);
    return;
}

// Set pipeline state
gst_element_set_state(data->pipeline, GST_STATE_READY);

// Get overlay interface
data->overlay = gst_bin_get_by_interface(GST_BIN(data->pipeline), GST_TYPE_VIDEO_OVERLAY);

}

fengjiongmax commented 6 months ago

Great, were the elements created successfully? or you can open the Android folder in fltgst and put a breakpoint at the null check line and see if all those elements are created.

Larryyuan2015 commented 6 months ago

@fengjiongmax As your suggestion,I set a breakpoint and debug the code with android Emulator Pixel 4a API 31,and these variables output the information as below. there is NULL for qtdemux element and it fails to create the pipeline .

filesrc = gst_element_factory_make("filesrc", NULL);
qtdemux = gst_element_factory_make("qtdemux", NULL);
h264parse = gst_element_factory_make("h264parse", NULL);
avdec_h264 = gst_element_factory_make("avdec_h264", NULL);
autovideosink = gst_element_factory_make("autovideosink", NULL);

filesrc: 0x7a2ed0812420 qtdemux: 0x0(NULL) h264parse: 0x7a2e807e30f0 avdec_h264: 0x7a2e308b4f80 autovideosink: 0x7a2ea0824040

Then I added the plugin isomp4 again like this. LIST(APPEND GST_PLUGINS coreelements coretracers adder app audioconvert audiorate audiotestsrc videotestsrc videorate videofilter videoconvertscale videoparsersbad udp gio autodetect opensles ipcpipeline opengl playback rtp rawparse androidmedia libav isomp4)

LIST(APPEND LINK_LIBS intl ffi iconv gmodule-2.0 pcre2-8 gstbase-1.0 gstaudio-1.0 gstvideo-1.0 gstgl-1.0 gstcontroller-1.0 png16 graphene-1.0 jpeg orc-0.4 gstapp-1.0 gio-2.0 android log z OpenSLES EGL GLESv2 avutil avcodec avformat gstpbutils-1.0 avfilter swresample bz2 gsttag-1.0 gstcodecparsers-1.0 gstnet-1.0 gstrtp-1.0 gstphotography-1.0 gstisomp4)

But but the same error occurs. [ +1 ms] ld: error: undefined symbol: gst_riff_init [ ] >>> referenced by qtdemux.c:442 (../gst/isomp4\qtdemux.c:442) [ ] >>> qtdemux.c.o:(gst_qtdemux_class_intern_init) in archive E:/flutter/20240301/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0\libgstisomp4.a [ ] ld: error: undefined symbol: gst_riff_parse_strf_auds [ ] >>> referenced by qtdemux.c:13678 (../gst/isomp4\qtdemux.c:13678) [ ] >>> qtdemux.c.o:(qtdemux_parse_trak) in archive E:/flutter/20240301/fltgst/app/native_binding/src/../third-party/gst-android/arm64/lib/gstreamer-1.0\libgstisomp4.a

fengjiongmax commented 6 months ago

Then you need to add gstriff-1.0 to LINK_LIBS, then the app should build.

Larryyuan2015 commented 6 months ago

@fengjiongmax Thanks very much . After add gstriff-1.0, it works and it can play the video. Thanks again for your kindly help.

fengjiongmax commented 6 months ago

Great! Then I'll close this issue.