mirror of
https://github.com/facefusion/facefusion.git
synced 2026-06-03 03:08:01 +02:00
get rid of aom obus stuff again
This commit is contained in:
@@ -10,7 +10,7 @@ from starlette.websockets import WebSocket, WebSocketState
|
||||
from facefusion import rtc_store, session_context, session_manager, state_manager
|
||||
from facefusion.apis.api_helper import get_sec_websocket_protocol
|
||||
from facefusion.apis.session_helper import extract_access_token
|
||||
from facefusion.codecs.aom import create_aom_encoder, destroy_aom_encoder, encode_aom_buffer, extract_aom_obus
|
||||
from facefusion.codecs.aom import create_aom_encoder, destroy_aom_encoder, encode_aom_buffer
|
||||
from facefusion.codecs.opus import create_opus_encoder, destroy_opus_encoder, encode_opus_buffer
|
||||
from facefusion.codecs.vpx import create_vpx_encoder, destroy_vpx_encoder, encode_vpx_buffer
|
||||
from facefusion.streamer import process_vision_frame
|
||||
@@ -65,8 +65,7 @@ def run_aom_encode_loop(vision_frame_deque : deque[VisionFrame], session_id : Se
|
||||
frame_buffer = encode_aom_buffer(aom_encoder, yuv_frame.tobytes(), frame_resolution, pts)
|
||||
|
||||
if frame_buffer:
|
||||
for obu_buffer in extract_aom_obus(frame_buffer):
|
||||
rtc_store.send_rtc_video(session_id, obu_buffer)
|
||||
rtc_store.send_rtc_video(session_id, frame_buffer)
|
||||
|
||||
pts += 1
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import ctypes
|
||||
import struct
|
||||
from typing import List, Optional
|
||||
from typing import Optional
|
||||
|
||||
from facefusion.libraries import aom as aom_module
|
||||
from facefusion.types import AomEncoder, BitRate, Resolution
|
||||
@@ -65,47 +65,6 @@ def collect_aom_buffer(aom_encoder : AomEncoder) -> bytes:
|
||||
return output_buffer
|
||||
|
||||
|
||||
# TODO: try to eliminate this
|
||||
def extract_aom_obus(frame_buffer : bytes) -> List[bytes]:
|
||||
obu_list : List[bytes] = []
|
||||
offset = 0
|
||||
|
||||
while offset < len(frame_buffer):
|
||||
header_offset = offset
|
||||
header = frame_buffer[offset]
|
||||
obu_type = (header >> 3) & 0x0F
|
||||
has_extension = (header >> 2) & 0x01
|
||||
has_size = (header >> 1) & 0x01
|
||||
offset += 1 + has_extension
|
||||
|
||||
obu_size = 0
|
||||
|
||||
if has_size:
|
||||
shift = 0
|
||||
|
||||
while offset < len(frame_buffer):
|
||||
leb_byte = frame_buffer[offset]
|
||||
offset += 1
|
||||
obu_size |= (leb_byte & 0x7F) << shift
|
||||
shift += 7
|
||||
|
||||
if not (leb_byte & 0x80):
|
||||
break
|
||||
|
||||
payload_offset = offset
|
||||
offset += obu_size
|
||||
|
||||
if obu_type != 2:
|
||||
clean_header = bytes([ header & 0xFD ])
|
||||
|
||||
if has_extension:
|
||||
clean_header += frame_buffer[header_offset + 1:header_offset + 2]
|
||||
|
||||
obu_list.append(clean_header + frame_buffer[payload_offset:payload_offset + obu_size])
|
||||
|
||||
return obu_list
|
||||
|
||||
|
||||
def destroy_aom_encoder(aom_encoder : AomEncoder) -> None:
|
||||
aom_library = aom_module.create_static_library()
|
||||
|
||||
|
||||
@@ -258,6 +258,7 @@ def define_rtc_packetizer_init() -> ctypes.Structure:
|
||||
('sequenceNumber', ctypes.c_uint16),
|
||||
('timestamp', ctypes.c_uint32),
|
||||
('maxFragmentSize', ctypes.c_uint16),
|
||||
('nalSeparator', ctypes.c_int),
|
||||
('obuPacketization', ctypes.c_int)
|
||||
]
|
||||
})()
|
||||
|
||||
@@ -122,6 +122,7 @@ def add_video_track(peer_connection : PeerConnection, media_direction : MediaDir
|
||||
video_packetizer.maxFragmentSize = 1200
|
||||
|
||||
if video_codec == 'av1':
|
||||
video_packetizer.obuPacketization = 1
|
||||
datachannel_library.rtcSetAV1Packetizer(video_track, ctypes.byref(video_packetizer))
|
||||
if video_codec == 'vp8':
|
||||
datachannel_library.rtcSetVP8Packetizer(video_track, ctypes.byref(video_packetizer))
|
||||
|
||||
@@ -36,7 +36,7 @@ def test_encode_opus_buffer() -> None:
|
||||
assert create_hash(encode_opus_buffer(opus_encoder, audio_sample.tobytes(), 960)) == '8abe71cf'
|
||||
|
||||
if is_macos():
|
||||
assert create_hash(encode_opus_buffer(opus_encoder, audio_sample.tobytes(), 960)) == '8ecd1108'
|
||||
assert create_hash(encode_opus_buffer(opus_encoder, audio_sample.tobytes(), 960)) == 'f595020f'
|
||||
|
||||
|
||||
def test_destroy_opus_encoder() -> None:
|
||||
|
||||
Reference in New Issue
Block a user