Winlin
1fa2cba7c0
Organize utility functions to kernel. v7.0.65 ( #4455 )
2025-08-27 21:35:58 -04:00
Winlin
6e1134fe9b
Use clang format. v7.0.52 ( #4433 )
...
---------
Co-authored-by: ChenGH <chengh_math@126.com>
2025-08-11 23:19:19 -04:00
Winlin
b2a827f8cf
Refine code and add tests for #4289 . v7.0.45 ( #4412 )
...
Use AI to understand, add comments, add utests, refactor code for PR
#4289
2025-07-04 17:26:12 -04:00
Haibo Chen(陈海博)
0c88ddbcdf
rtmp2rtc: Support RTMP-to-WebRTC conversion with HEVC. v7.0.33 ( #4289 )
...
```bash
C:\Program Files\Google\Chrome\Application>"C:\Program Files\Google\Chrome\Application\chrome.exe" --enable-features=WebRtcAllowH265Receive --force-fieldtrials=WebRTC-Video-H26xPacketBuffer/Enabled
open -a "Google Chrome" --args --enable-features=WebRtcAllowH265Receive --force-fieldtrials=WebRTC-Video-H26xPacketBuffer/Enabled
```
> Note: The latest Chrome browser (version 136) fully enables this by
default, so there's no need to launch it with any extra parameters.
```bash
./objs/srs -c conf/rtmp2rtc.conf
```
```bash
ffmpeg -stream_loop -1 -re -i input.mp4 -c:v libx265 -preset fast -b:v 2000k -maxrate 2000k -bufsize 4000k -bf 0 -c:a aac -b:a 128k -ar 44100 -ac 2 -f flv rtmp://localhost/live/livestream
```
```bash
http://localhost:1985/rtc/v1/whep/?app=live&stream=livestream
```

sendrecv offer
```bash
--enable-features=WebRtcAllowH265Send,PlatformHEVCEncoderSupport,WebRtcAllowH265Receive --force-fieldtrials=WebRTC-Video-H26xPacketBuffer/Enabled
```
sendonly offer
```bash
--enable-features=WebRtcAllowH265Send,PlatformHEVCEncoderSupport
```
recvonly offer
```bash
--enable-features=WebRtcAllowH265Receive --force-fieldtrials=WebRTC-Video-H26xPacketBuffer/Enabled
```
* Browser Test for supporting H265
https://webrtc.github.io/samples/src/content/peerconnection/change-codecs/

* How to test Safari: https://github.com/ossrs/srs/pull/3441
* Debug in Safari

---------
Co-authored-by: chundonglinlin <chundonglinlin@163.com>
Co-authored-by: winlin <winlinvip@gmail.com>
Co-authored-by: john <hondaxiao@tencent.com>
---------
Co-authored-by: chundonglinlin <chundonglinlin@163.com>
Co-authored-by: john <hondaxiao@tencent.com>
2025-05-14 07:49:04 -04:00
ChenGH
13597d1b7f
update copyright to 2025. v5.0.218 v6.0.159 v7.0.21 ( #4271 )
...
update copyright to 2025
---------
Co-authored-by: john <hondaxiao@tencent.com>
Co-authored-by: winlin <winlinvip@gmail.com>
2025-01-14 17:35:18 +08:00
Winlin
23d2602c34
UniquePtr: Support SrsUniquePtr to replace SrsAutoFree. v6.0.136 ( #4109 )
...
To manage an object:
```cpp
// Before
MyClass* ptr = new MyClass();
SrsAutoFree(MyClass, ptr);
ptr->do_something();
// Now
SrsUniquePtr<MyClass> ptr(new MyClass());
ptr->do_something();
```
To manage an array of objects:
```cpp
// Before
char* ptr = new char[10];
SrsAutoFreeA(char, ptr);
ptr[0] = 0xf;
// Now
SrsUniquePtr<char[]> ptr(new char[10]);
ptr[0] = 0xf;
```
In fact, SrsUniquePtr is a limited subset of SrsAutoFree, mainly
managing pointers and arrays. SrsUniquePtr is better than SrsAutoFree
because it has the same API to standard unique ptr.
```cpp
SrsUniquePtr<MyClass> ptr(new MyClass());
ptr->do_something();
MyClass* p = ptr.get();
```
SrsAutoFree actually uses a pointer to a pointer, so it can be set to
NULL, allowing the pointer's value to be changed later (this usage is
different from SrsUniquePtr).
```cpp
// OK to free ptr correctly.
MyClass* ptr;
SrsAutoFree(MyClass, ptr);
ptr = new MyClass();
// Crash because ptr is an invalid pointer.
MyClass* ptr;
SrsUniquePtr<MyClass> ptr(ptr);
ptr = new MyClass();
```
Additionally, SrsAutoFreeH can use specific release functions, which
SrsUniquePtr does not support.
---------
Co-authored-by: Jacob Su <suzp1984@gmail.com>
2024-07-09 10:29:36 +08:00
Winlin
9dba99a1cc
SmartPtr: Support shared ptr for RTC source. v6.0.128 ( #4085 )
...
---------
Co-authored-by: Haibo Chen <495810242@qq.com>
2024-06-14 08:07:26 +08:00
winlin
2a2da2253f
Switch to 2013-2024. v6.0.109
2024-01-01 10:51:24 +08:00
winlin
29eff1a242
Refine LICENSE.
2023-10-23 14:33:19 +08:00
winlin
c46ef81ff2
SRS5: Update license date to 2023. v5.0.123
...
PICK 72f8ed4916
2023-01-01 08:56:20 +08:00
Winlin
368356c223
Support address sanitizer for utest and fix some leaks. ( #3242 )
...
* MP4: Fix memory leak when error.
* Kernel: Support free global objects for utest.
* HTTP: Fix memory leak when error.
* MP4: Support more sample rate for audio.
* RTMP: Support free field for utest.
* UTest: Support address sanitizer.
2022-11-18 11:19:01 +08:00
winlin
9c81a0e1bd
UTest: Fix utest warnings.
2022-10-06 16:09:07 +08:00
winlin
0c6d30861b
Merge branch '4.0release' into develop
2022-09-27 14:53:23 +08:00
winlin
386b92e9ab
For #3167 : WebRTC: Refine sequence jitter algorithm. v4.0.266
2022-09-27 14:53:05 +08:00
winlin
d117145b95
Update date from 2021 to 2022.
2022-06-20 19:22:25 +08:00
ChenGH
ab81696102
Bugfix: Fix rtcp nack blp encode bug ( #2966 ). v4.0.248
...
Co-authored-by: Winlin <winlin@vip.126.com>
2022-03-15 08:43:03 +08:00
ChenGH
70aa6b66bb
bugfix: fix rtcp nack blp encode bug ( #2966 )
...
Co-authored-by: Winlin <winlin@vip.126.com>
2022-03-15 08:40:06 +08:00
winlin
d5c86dc5fa
Switch LICENSE from MIT to **MIT or MulanPSL-2.0**. v5.0.21
2022-01-13 18:40:22 +08:00
winlin
f05e67e1a6
Squash: Fix bugs
2021-12-13 09:24:16 +08:00
long
4decc1fa6b
RTC: Fix nack encode seqnum ( #2766 )
...
* fix nack encode seqnum
* add nack encode utest
* change Variable naming
Co-authored-by: liyalong1 <liyalong1@100tal.com>
2021-12-06 12:42:39 +08:00
winlin
8576fa7052
Squash: Merge v4.0.203
2021-12-04 11:21:35 +08:00
john
f3c4023c25
Fix bugs for RTC2RTMP. ( #2768 )
...
1. Cache IDR frame's rtp timestamp instead of avsync timestamp.
2. Cache clock rate calculate by sender report.
3. Using srs_rtp_seq_distance instead of direct minus.
4. Add utest of av timestamp sync when duplicated sender report.
2021-12-04 11:15:02 +08:00
winlin
85620a34f5
Squash: Fix rtc to rtmp sync timestamp using sender report. #2470
2021-08-17 07:25:03 +08:00
john
ea8cff6163
RTC: Fix rtc to rtmp sync timestamp using sender report. ( #2470 )
...
* fix annotation spell failed
* RTC to RTMP using SenderReport to sync av timestamp
* update pion/webrtc versio from v3.0.4 -> v3.0.13, auto config sender/receiver report
* Add rtc push flv play regression test
* Add unit test of ntp and av sync time
* Take flag CXX to makefile of utest
* Add annotation about rtc unit test
* Fix compiler error in C++98
* Add FFmpeg log callback funciton.
2021-08-17 06:32:35 +08:00
Winlin
c8a1e0f3da
Refine AUTHORS.txt to AUTHORS.md, etc. 5.0.8 ( #2464 )
...
* Refine AUTHORS.txt to AUTHORS.md, etc. 5.0.8
* Update README.md
* Update README.md
* Refine format for AUTHORS.md
2021-07-08 14:30:47 +08:00
winlin
15901cacee
SquashSRS4: Use SPDX-License-Identifier: MIT. 5.0.3
2021-05-31 13:42:20 +08:00
winlin
3cd22b6e6e
Use SPDX-License-Identifier: MIT. 4.0.124
2021-05-31 12:59:21 +08:00
winlin
a1d7fe46c1
SquashSRS4: Rename SrsRtpPacket2 to SrsRtpPacket.
2021-05-15 08:53:54 +08:00
winlin
ddd7a378b1
Rename SrsRtpPacket2 to SrsRtpPacket. 4.0.111
2021-05-15 08:47:09 +08:00
winlin
ab0979a4ea
RTC: Remove DTLS utests, cover by regression test
2021-05-14 18:14:00 +08:00
winlin
717e811002
Change virtual public to public. 4.0.109
2021-05-14 09:13:15 +08:00
winlin
ea1f32526a
RTC: Remove DTLS utest, cover by regression test
2021-04-27 18:54:10 +08:00
winlin
8b74c7cb89
SquashSRS4: Happy 2021
2021-04-16 09:29:43 +08:00
winlin
d01e603b25
Happy 2021
2021-04-16 09:25:55 +08:00
winlin
e74810230a
SquashSRS4: Regine DTLS and add regression tests. 4.0.84
2021-03-10 08:29:40 +08:00
winlin
62987aa01f
DTLS: Refine retransmit between ClientHello and Certificate.
2021-03-09 22:12:23 +08:00
winlin
dc93836489
SquashSRS4: Refine DTLS init, use specified API by role
2021-03-09 12:01:23 +08:00
winlin
3c6e466280
DTLS: Use specified init API, to decrease packet size
2021-03-09 11:54:27 +08:00
winlin
de87dd427d
Fix utest fail
2021-03-04 14:18:54 +08:00
winlin
6bacccd1b8
Fix utest fail
2021-02-19 18:54:16 +08:00
winlin
044df17791
Fix utest fail
2021-02-19 18:53:23 +08:00
winlin
b6843428c6
Fix build warnings
2021-01-08 14:09:28 +08:00
winlin
81d78310a0
Fix build warnings
2021-01-08 13:29:32 +08:00
winlin
155587d2c1
RTC: Fix parse error stap playload crash bug
2021-01-05 10:56:05 +08:00
winlin
ba6462aab4
RTC: Refine DTLS ARQ, use step interval
2020-10-03 21:34:34 +08:00
winlin
e61391028e
RTC: Refine utest for DTLS
2020-10-03 20:10:42 +08:00
winlin
776f24cf3d
Refine resource manager, ignore unsubscribed handler
2020-10-02 09:13:41 +08:00
winlin
1a33452e95
Refine resource manager, fix loop and context switching bug
2020-09-20 22:09:03 +08:00
winlin
033e2f9210
Add utest for resource manager
2020-09-20 21:10:48 +08:00
winlin
4e2fca2b0f
Fix utest fail
2020-09-19 12:37:39 +08:00