mirror of
https://github.com/facefusion/facefusion.git
synced 2026-05-12 18:32:18 +02:00
introduce opus and vpx to libraries (#1091)
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import ctypes
|
||||
from functools import lru_cache
|
||||
from typing import Optional
|
||||
|
||||
from facefusion.common_helper import is_linux, is_macos, is_windows
|
||||
|
||||
|
||||
def resolve_library_file() -> Optional[str]:
|
||||
if is_linux():
|
||||
return 'libopus.so.0'
|
||||
if is_macos():
|
||||
return 'libopus.dylib'
|
||||
if is_windows():
|
||||
return 'opus.dll'
|
||||
return None
|
||||
|
||||
|
||||
@lru_cache
|
||||
def create_static_library() -> Optional[ctypes.CDLL]:
|
||||
library_file = resolve_library_file()
|
||||
|
||||
if library_file:
|
||||
library = ctypes.CDLL(library_file)
|
||||
|
||||
if library:
|
||||
return init_ctypes(library)
|
||||
|
||||
return None
|
||||
|
||||
|
||||
def init_ctypes(library : ctypes.CDLL) -> ctypes.CDLL:
|
||||
library.opus_encoder_create.argtypes = [ ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.POINTER(ctypes.c_int) ]
|
||||
library.opus_encoder_create.restype = ctypes.c_void_p
|
||||
|
||||
library.opus_encode_float.argtypes = [ ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int, ctypes.c_char_p, ctypes.c_int ]
|
||||
library.opus_encode_float.restype = ctypes.c_int
|
||||
|
||||
library.opus_encoder_destroy.argtypes = [ ctypes.c_void_p ]
|
||||
library.opus_encoder_destroy.restype = None
|
||||
|
||||
library.opus_encoder_ctl.argtypes = [ ctypes.c_void_p, ctypes.c_int, ctypes.c_int ]
|
||||
library.opus_encoder_ctl.restype = ctypes.c_int
|
||||
|
||||
return library
|
||||
@@ -0,0 +1,53 @@
|
||||
import ctypes
|
||||
from functools import lru_cache
|
||||
from typing import Optional
|
||||
|
||||
from facefusion.common_helper import is_linux, is_macos, is_windows
|
||||
|
||||
|
||||
def resolve_library_file() -> Optional[str]:
|
||||
if is_linux():
|
||||
return 'libvpx.so'
|
||||
if is_macos():
|
||||
return 'libvpx.dylib'
|
||||
if is_windows():
|
||||
return 'vpx.dll'
|
||||
return None
|
||||
|
||||
|
||||
@lru_cache
|
||||
def create_static_library() -> Optional[ctypes.CDLL]:
|
||||
library_file = resolve_library_file()
|
||||
|
||||
if library_file:
|
||||
library = ctypes.CDLL(library_file)
|
||||
|
||||
if library:
|
||||
return init_ctypes(library)
|
||||
|
||||
return None
|
||||
|
||||
|
||||
def init_ctypes(library : ctypes.CDLL) -> ctypes.CDLL:
|
||||
library.vpx_codec_enc_config_default.argtypes = [ ctypes.c_void_p, ctypes.c_void_p, ctypes.c_uint ]
|
||||
library.vpx_codec_enc_config_default.restype = ctypes.c_int
|
||||
|
||||
library.vpx_codec_enc_init_ver.argtypes = [ ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p, ctypes.c_long, ctypes.c_int ]
|
||||
library.vpx_codec_enc_init_ver.restype = ctypes.c_int
|
||||
|
||||
library.vpx_codec_encode.argtypes = [ ctypes.c_void_p, ctypes.c_void_p, ctypes.c_int64, ctypes.c_ulong, ctypes.c_long, ctypes.c_ulong ]
|
||||
library.vpx_codec_encode.restype = ctypes.c_int
|
||||
|
||||
library.vpx_codec_get_cx_data.argtypes = [ ctypes.c_void_p, ctypes.POINTER(ctypes.c_void_p) ]
|
||||
library.vpx_codec_get_cx_data.restype = ctypes.c_void_p
|
||||
|
||||
library.vpx_codec_destroy.argtypes = [ ctypes.c_void_p ]
|
||||
library.vpx_codec_destroy.restype = ctypes.c_int
|
||||
|
||||
library.vpx_img_wrap.argtypes = [ ctypes.c_void_p, ctypes.c_int, ctypes.c_uint, ctypes.c_uint, ctypes.c_uint, ctypes.c_void_p ]
|
||||
library.vpx_img_wrap.restype = ctypes.c_void_p
|
||||
|
||||
library.vpx_codec_control_.argtypes = [ ctypes.c_void_p, ctypes.c_int, ctypes.c_int ]
|
||||
library.vpx_codec_control_.restype = ctypes.c_int
|
||||
|
||||
return library
|
||||
Reference in New Issue
Block a user