Commit Graph

648 Commits

Author SHA1 Message Date
Henry Ruhs c00ea92f35 Migrate to WHIP (#1120)
* migrate to whip part1

* migrate to whip part2

* migrate to whip part3

* migrate to whip part4

* migrate to whip/whep with bidirectional

* migrate to whip/whep with bidirectional

* use next library

* add _next to lid datachannel files

* cleanup and add todos

* use internal helper rtcGetPayloadTypesForCodec

* fix lint

* refactor decode()

* move logic to codecs

* move logic to codecs

* break encoders and decoders into multiple files

* break encoders and decoders into multiple files

* cleanup more

* drop action for stream endpoints, keep type for self documentation

* restore the v4 store

* fix: align frame_width and frame_height to even in both collect() and read_resolution() in both decoders.

---------

Co-authored-by: harisreedhar <h4harisreedhar.s.s@gmail.com>
2026-05-18 16:16:06 +02:00
Harisreedhar c48c238f88 Combine encode loop methods (#1119)
* combine run_aom_encode_loop and run_vpx_encode_loop to encode_video_loop

* run_opus_encode_loop -> encode_audio_loop

* use else instead of continue

* rename to video_codec
2026-05-16 23:29:36 +05:30
Henry Ruhs dd1ded1408 Refactor/rtc cleanup 3 (#1118)
* tweak rtc store and make the decision to ban trivial testing

* clear todos for rtc_test, remove redundant tests

* clear todos for rtc_test, remove redundant tests

* break negotiation out of rtc flow, introduce create_sdp_answer and set_remote_description

* add todo

* move timeline control to the stream helper, clean send_audio|video_to_peers

* rename some methods

* fix test

* introduce detect_sdp_media

* introduce detect_sdp_media
2026-05-16 09:06:04 +02:00
Henry Ruhs 95435f842c use datachannel to create proper rtc_track_init (#1117)
* use datachannel to create proper rtc_track_init

* fix lint

* fix lint
2026-05-15 19:14:36 +02:00
Harisreedhar 0019d3ad0f Refactor stream_helper: queue-based audio/video loops with unified threading (#1116)
* rearrange methods following the flow

* add test_stream_helper.py

* fix lint

* fix lint

* refactor audio flow to match video by replacing dequeue with queue

* remove unused keyframe interval

* remove try block

* remove while True

* simplify run_aom_encode_loop and run_vp8_encode_loop

* cleanup names

* simplify run_opus_encode_loop

* move opus_encoder creation to run_opus_encode_loop

* add todos

* fix lint

* update todos and tests
2026-05-15 21:47:30 +05:30
Henry Ruhs 532464032b More RTC cleanup (#1115)
* reduce create_peer_connection like crazy

* turns out that we dont event and callback/while+sleep magic for create_sdp_offer and negotiate_sdp_answer

* test for audio/video to peers

* flag rtc methods to be revised

* fix lint
2026-05-15 15:10:51 +02:00
Henry Ruhs ad3b582c49 resolve todos in stream endpoint (#1114) 2026-05-15 12:40:50 +02:00
Henry Ruhs 98adce8a2b Refactor RTC structure (#1113)
* refactor rtc part1

* skip for macos

* merge create spd and create sdp offer

* fix lint

* add test for create_sdp_offer

* better naming for negotiate method as we get an answer

* extend tests based on mutations

* remove dead code

* rename rtc store and related methods

* clean store, move sender logic to stream helper under apis

* generate tests for rtc store
2026-05-15 11:46:51 +02:00
henryruhs 3def6c8fcd skip for macos 2026-05-15 08:47:28 +02:00
henryruhs 504f2240f7 make test more robust 2026-05-14 23:19:49 +02:00
henryruhs 061522e5b7 use bytes() over empty byte literals 2026-05-14 22:45:02 +02:00
henryruhs 37420eac7c use bytes() over empty byte literals 2026-05-14 22:44:56 +02:00
henryruhs 1562fe2fee kill the stream helper in tests 2026-05-14 22:41:54 +02:00
henryruhs dc74e1c783 event driven test_stream_video 2026-05-14 22:21:36 +02:00
henryruhs a097034889 skip test for macos 2026-05-14 19:32:14 +02:00
henryruhs d8d9d5a280 fix test for macos 2026-05-14 18:44:02 +02:00
henryruhs eeb342ce36 fix macos for aom encode 2026-05-14 17:20:18 +02:00
henryruhs b8d00d6389 get rid of aom obus stuff again 2026-05-14 16:44:09 +02:00
Henry Ruhs 18a487347a av1 support integrated (#1112) 2026-05-14 16:11:23 +02:00
Henry Ruhs b607e4a99e AV1 codec support (#1111)
* restructure xxx_encoders, introduce av1 codec

* get rid of strip_temporal_delimiters

* improve testing

* fix test for macos

* improve testing
2026-05-14 13:30:18 +02:00
Henry Ruhs b1bc0ea43c aom library for av1 support (#1110) 2026-05-14 11:41:28 +02:00
henryruhs 912d7eaa52 adjust create_string_buffer that could be measured 2026-05-13 15:31:54 +02:00
Henry Ruhs 832d954df6 use bytes over pointer for opus encoder (#1109)
* use bytes over pointer for opus encoder

* use bytes over pointer for opus encoder
2026-05-13 14:41:26 +02:00
henryruhs 78a068107a clean audio encoder too 2026-05-13 13:41:09 +02:00
Henry Ruhs 9e1c068938 improve naming, remove flags as not needed (#1108)
* improve naming, remove flags as not needed

* fix lint
2026-05-13 13:34:37 +02:00
Harisreedhar bff222a12f try to unify structure of encode_opus_buffer and encode_vpx_buffer (#1107) 2026-05-13 16:26:30 +05:30
Henry Ruhs 9453a042a1 hash based test for test_stream_image (#1104)
* hash based test for test_stream_image

* new todo for test_video_stream

* new todo for test_video_stream
2026-05-12 19:51:19 +05:30
Harisreedhar 5e39c60b5c Improve encoder tests with hash assertion (#1103)
* improve test_encode_opus_buffer

* try different hash per os

* fix lint

* add windows check

* update windows hash

* fix test and lint

* update windows hash

* update CI for test_video_encoder.py

* update hash for macos

* update method to use single cpu

* update mac hash

* update windows hash

* cleanup

* restore ci.yml

* remove argument defaults

* selected CI tests

* selected CI tests

* restore ci.yml

---------

Co-authored-by: henryruhs <info@henryruhs.com>
2026-05-12 16:36:06 +05:30
Harisreedhar 8690ccf49e rename methods (#1102) 2026-05-12 13:22:33 +05:30
Henry Ruhs e53cb63577 QA - Encoder Testing (#1101)
* testing for audio and video encoders, minor cleanups

* fix lint

* finish create_vpx_encoder, adjust unrelated order of width vs height args
2026-05-12 08:23:27 +02:00
henryruhs 717ff0aa33 restore todos 2026-05-11 21:23:50 +02:00
harisreedhar 4922be4ad3 fix audio 2026-05-11 22:30:00 +05:30
henryruhs fdf1b841b2 setup_platform is no longer needed, bring back conda.py 2026-05-11 17:42:51 +02:00
Harisreedhar 92296fc5a5 move run_video_encode_loop (#1100) 2026-05-11 21:04:56 +05:30
henryruhs 6968d8fe47 switch to final library repo 2026-05-11 16:36:23 +02:00
Henry Ruhs b6549e873b Refactor/windows libraries (#1099)
* ship libssl and libcrypto in windows

* ship libssl and libcrypto in windows
2026-05-11 16:36:23 +02:00
Harisreedhar ab7110eb92 Add audio encoder (#1096)
* add audio encoder

* add todos

* add todos

* cleannup and add todos

* fix lint

---------

Co-authored-by: henryruhs <info@henryruhs.com>
2026-05-11 16:36:23 +02:00
Henry Ruhs 9321b41e8e ship libssl and libcrypto in macos (#1097) 2026-05-11 16:36:23 +02:00
henryruhs 450075e20e fix windows 2026-05-11 16:36:23 +02:00
Henry Ruhs 20b392f760 ship libssl and libcrypto in linux (#1095) 2026-05-11 16:36:23 +02:00
Harisreedhar bb1b8ccf13 Add video_encoder.py (#1094)
* add video_encoder.py

* rename pts to presentation_timestamp

* improve test

* improve test

* cleanup

* cleanup

* fix lint
2026-05-11 16:36:23 +02:00
henryruhs 6eace4ce29 cleanup 2026-05-11 16:36:23 +02:00
henryruhs 6fe735618e cleanup 2026-05-11 16:36:23 +02:00
henryruhs 527bb0ff45 cleanup 2026-05-11 16:36:23 +02:00
henryruhs e05d13c47e cleanup 2026-05-11 16:36:23 +02:00
Henry Ruhs 8bbb6e7062 Cleanup/stream part1 (#1093)
* use find_library from cytypes, enable rtc tests again

* install libvpx and libopus for unix on CI

* bug found when sending audio first

* no need for source path guard

* add more tests for libraries

* add more tests for libraries

* fix testing

* disable tests to see what happens

* disable tests to see what happens

* debug ci

* debug ci

* debug ci

* debug ci

* debug ci

* debug ci

* debug ci

* debug ci

* debug ci

* debug ci

* debug ci

* hope to solve everything via ENV

* hope to solve everything via ENV

* hope to solve everything via ENV

* hope to solve everything via ENV

* hope to solve everything via ENV

* hope to solve everything via ENV

* hope to solve everything via ENV

* hope to solve everything via ENV

* fix testing

* fix testing

* fix testing

* fix testing

* fix testing

* fix testing

* switch to self hosted libraries

* fixes for macos

* switch to self hosted libraries

* switch to self hosted libraries

* switch to self hosted libraries

* switch to self hosted libraries

* switch to self hosted libraries

* switch to self hosted libraries

* switch to self hosted libraries

* switch to self hosted libraries
2026-05-11 16:36:23 +02:00
Henry Ruhs 76c413a2c1 Refactor/ffmpeg less stream (#1092)
* remove ffmpeg from stream to use opus and vpx, add bunch of todos

* fix testing

* improve download checkout

* fix datachannel download, fix super dirty test clients - setup logic does not belong there

* fix testing
2026-05-11 16:36:23 +02:00
Henry Ruhs 430b16ce56 introduce opus and vpx to libraries (#1091) 2026-05-11 16:36:23 +02:00
henryruhs 9a390bd5bc more uniform codebase for libraries 2026-05-11 16:36:23 +02:00
Henry Ruhs 97e0df01b1 move datachannel to libraries and follow datachannel conventions (#1090)
* move datachannel to libraries and follow new datachannel_module convention

* move datachannel to libraries and follow new datachannel_module convention
2026-05-11 16:36:23 +02:00