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:
dj2ls 2022-02-04 16:24:04 +01:00
parent 8384bf8d12
commit 92cf30225e
4 changed files with 17 additions and 27 deletions

View file

@ -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()

Binary file not shown.

Binary file not shown.