mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
updated libsearch
added precompiled libcodec2 version for 64bit / 32bit / armv7 (raspberry pi). Also updated library search which is now much more flexible and (hopefully) less confusing.
This commit is contained in:
parent
8384bf8d12
commit
92cf30225e
4 changed files with 17 additions and 27 deletions
|
@ -10,6 +10,9 @@ from enum import Enum
|
||||||
import numpy as np
|
import numpy as np
|
||||||
#print("loading codec2 module", file=sys.stderr)
|
#print("loading codec2 module", file=sys.stderr)
|
||||||
from threading import Lock
|
from threading import Lock
|
||||||
|
import glob
|
||||||
|
import structlog
|
||||||
|
|
||||||
|
|
||||||
# Enum for codec2 modes
|
# Enum for codec2 modes
|
||||||
class FREEDV_MODE(Enum):
|
class FREEDV_MODE(Enum):
|
||||||
|
@ -34,41 +37,28 @@ except:
|
||||||
app_path = os.path.abspath(".")
|
app_path = os.path.abspath(".")
|
||||||
sys.path.append(app_path)
|
sys.path.append(app_path)
|
||||||
|
|
||||||
# -------------------------------------------- LOAD FREEDV
|
structlog.get_logger("structlog").info("[C2 ] Searching for libcodec2...")
|
||||||
# codec2 search pathes in descending order
|
if sys.platform == 'linux' or sys.platform == 'darwin':
|
||||||
# libcodec2.so ctests
|
files = glob.glob('**/*libcodec2*',recursive=True)
|
||||||
# pathlib.Path("codec2/build_linux/src/libcodec2.so.1.0") manual build
|
|
||||||
# pathlib.Path("lib/codec2/linux/libcodec2.so.1.0") precompiled
|
|
||||||
# pathlib.Path("../../tnc/codec2/build_linux/src/libcodec2.so.1.0") external loading manual build
|
|
||||||
# pathlib.Path("../../tnc/lib/codec2/linux/libcodec2.so.1.0") external loading precompiled
|
|
||||||
|
|
||||||
if sys.platform == 'linux':
|
|
||||||
libname = ["libcodec2.so", \
|
|
||||||
os.path.join(app_path, "codec2/build_linux/src/libcodec2.so.1.0"), \
|
|
||||||
os.path.join(app_path, "lib/codec2/linux/libcodec2.so.1.0"), \
|
|
||||||
os.path.join(app_path, "../tnc/codec2/build_linux/src/libcodec2.so.1.0"), \
|
|
||||||
os.path.join(app_path, "../tnc/lib/codec2/linux/libcodec2.so.1.0"), \
|
|
||||||
]
|
|
||||||
elif sys.platform == 'win32' or sys.platform == 'win64':
|
elif sys.platform == 'win32' or sys.platform == 'win64':
|
||||||
libname = [app_path + "\\lib\\codec2\\windows\\libcodec2.dll", \
|
files = glob.glob('**\*libcodec2*',recursive=True)
|
||||||
]
|
|
||||||
else:
|
else:
|
||||||
print(f"[C2 ] Platform not supported {sys.platform}", file=sys.stderr)
|
files = []
|
||||||
|
|
||||||
# iterate through codec2 search pathes
|
files.append('libcodec2.so')
|
||||||
for i in libname:
|
|
||||||
|
for file in files:
|
||||||
try:
|
try:
|
||||||
# this is not working for all OS. Specially windows has some more problems. We need to fix this somehow.
|
api = ctypes.CDLL(file)
|
||||||
api = ctypes.CDLL(i)
|
structlog.get_logger("structlog").info("[C2 ] Libcodec2 loaded", path=file)
|
||||||
|
|
||||||
print(f"[C2 ] Codec2 library loaded - {i}", file=sys.stderr)
|
|
||||||
break
|
break
|
||||||
except Exception as e:
|
except:
|
||||||
print(f"[C2 ] Codec2 library not loaded - {i} - {e}", file=sys.stderr)
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
# quit module if codec2 cant be loaded
|
# quit module if codec2 cant be loaded
|
||||||
if not 'api' in locals():
|
if not 'api' in locals():
|
||||||
print(f"[C2 ] Loading Codec2 library failed", file=sys.stderr)
|
structlog.get_logger("structlog").critical("[C2 ] Libcodec2 not loaded", path=file)
|
||||||
exit()
|
exit()
|
||||||
|
|
||||||
|
|
||||||
|
|
BIN
tnc/lib/codec2/linux/armv7l/libcodec2.so.1.0
Normal file
BIN
tnc/lib/codec2/linux/armv7l/libcodec2.so.1.0
Normal file
Binary file not shown.
BIN
tnc/lib/codec2/linux/ia32/libcodec2.so.1.0
Normal file
BIN
tnc/lib/codec2/linux/ia32/libcodec2.so.1.0
Normal file
Binary file not shown.
Loading…
Reference in a new issue