get rid of aom obus stuff again

This commit is contained in:
henryruhs
2026-05-14 16:44:09 +02:00
parent 18a487347a
commit b8d00d6389
5 changed files with 6 additions and 46 deletions
+2 -3
View File
@@ -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 -42
View File
@@ -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()
+1
View File
@@ -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)
]
})()
+1
View File
@@ -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))
+1 -1
View File
@@ -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: