Commit Graph

84 Commits

Author SHA1 Message Date
Winlin
3e8cb3f9d5
AI: Replace SrsSharedPtrMessage with SrsMediaPacket for unified media packet handling. v7.0.74 (#4465)
This PR introduces a major refactoring to replace `SrsSharedPtrMessage`
with `SrsMediaPacket` throughout the SRS codebase, providing a more
unified and cleaner approach to media packet handling.

---------

Co-authored-by: OSSRS-AI <winlinam@gmail.com>
2025-09-01 18:06:24 -04:00
Winlin
b834be67a9
AI: Use SrsHttpUri for URL parsing and add legacy RTMP URL conversion. v7.0.72 (#4463)
Refactors the `srs_net_url_parse_tcurl` function to use the robust
`SrsHttpUri` class for URL parsing and implements a dedicated legacy
RTMP URL conversion function to handle various URL formats consistently.

---------

Co-authored-by: OSSRS-AI <winlinam@gmail.com>
2025-09-01 10:12:27 -04:00
Winlin
1fa2cba7c0
Organize utility functions to kernel. v7.0.65 (#4455) 2025-08-27 21:35:58 -04:00
Winlin
6ec97067de
AI: Remove cygwin64, always enable WebRTC, and enforce C++98 compatibility. v7.0.60 (#4447)
This PR makes WebRTC a core feature of SRS and enforces C++98
compatibility by:

1. Always Enable WebRTC Support
- Remove `--rtc=on|off` configuration option - WebRTC is now always
enabled
- Eliminate all `#ifdef SRS_RTC` conditional compilation blocks
- Include WebRTC-related modules (RTC, SRTP, DTLS) in all builds
- Update build scripts to always link WebRTC dependencies

2. Enforce C++98 Compatibility  
- Remove `--cxx11=on|off` and `--cxx14=on|off` configuration options
- Force `SRS_CXX11=NO` and `SRS_CXX14=NO` in build system
- Move these options to deprecated section with warnings
- Ensure codebase maintains C++98 standard compatibility

3. Remove Windows/Cygwin Support
- Remove all Windows and Cygwin64 conditional compilation blocks (#ifdef
_WIN32, #ifdef CYGWIN64)
- Delete Cygwin64 build configurations from build scripts (
auto/options.sh, auto/depends.sh, configure)
- Remove Cygwin64 assembly files and State Threads platform support (
md_cygwin64.S)
- Eliminate Windows-specific GitHub Actions workflows and CI/CD jobs
- Remove NSIS packaging files and Windows installer generation
- Delete Windows documentation and update feature lists to mark support
as removed in v7.0
- Simplify OS detection to only support Unix-like systems (Linux, macOS)

4. Code Cleanup
- Remove conditional WebRTC code blocks throughout the codebase
- Simplify build configuration by removing WebRTC-related conditionals
- Update constructor delegation patterns to be C++98 compatible
- Fix vector initialization to use C++98 syntax
- Eliminate Windows-specific implementations for file operations, time
handling, and networking
- Unified platform handling with consistent POSIX API usage

---------

Co-authored-by: OSSRS-AI <winlinam@gmail.com>
2025-08-21 10:03:38 -06: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
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
d4248503e7
ASAN: Disable memory leak detection by default. v7.0.8 (#4154)
By setting the env `ASAN_OPTIONS=halt_on_error=0`, we can ignore memory
leaks, see
https://github.com/google/sanitizers/wiki/AddressSanitizerFlags

By setting env `ASAN_OPTIONS=detect_leaks=0`, we can disable memory
leaking detection in parent process when forking for daemon.
2024-08-22 18:43:45 +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
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
6a4ace900d
Support FFmpeg timecode, fix AMF0 parsing failed. v5.0.179 v6.0.77 (#3804)
Please see https://github.com/ossrs/srs/issues/3803 for detail:

1. When using FFmpeg with the `-map 0` option, there may be a 4-byte
timecode in the AMF0 Data.
2. SRS should be able to handle this packet without causing a parsing
error, as it's generally expected to be an AMF0 string, not a 4-byte
timecode.
3. Disregard the timecode since SRS doesn't utilize it.

See [Error submitting a packet to the muxer: Broken pipe, Error muxing a
packet](https://trac.ffmpeg.org/ticket/10565)

---------

Co-authored-by: john <hondaxiao@tencent.com>
2023-09-18 13:48:07 +08:00
Winlin
dc7be76bb1
Forward add question mark to the end. v6.0.30 (#3438)
Co-authored-by: pengfei.ma <pengfei.ma@ctechm.com>
Co-authored-by: chundonglinlin <chundonglinlin@163.com>
2023-02-25 19:13:48 +08:00
Winlin
b75668b509
Compatible with legacy RTMP URL. v5.0.142. v6.0.27 (#3429)
For compatibility, transform
  rtmp://ip/app...vhost...VHOST/stream
to typical format:
  rtmp://ip/app/stream?vhost=VHOST

This is used for some legacy devices, which does not
support standard HTTP url query string.

---------

Co-authored-by: chundonglinlin <chundonglinlin@163.com>
Co-authored-by: john <hondaxiao@tencent.com>
2023-02-23 10:10:11 +08:00
winlin
c46ef81ff2 SRS5: Update license date to 2023. v5.0.123
PICK 72f8ed4916
2023-01-01 08:56:20 +08:00
Haibo Chen
c5a0c5947f
API: Parse fragment of URI. v5.0.106 (#3295)
* parse fragment of uri
* adapt FMLE URL: 'rtmp://ip/app/app2#k=v/stream', then add more test case

Co-authored-by: winlin <winlin@vip.126.com>
2022-12-08 15:48:10 +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
chundonglinlin
9f4338bd9d
For #2899: Exporter: Add metrics cpu, memory and uname. (#3224)
* Exporter: metrics support cpu gauge.
* Exporter: metrics support memory and uname..
* Exporter: Ignore error when uname fail.

Co-authored-by: winlin <winlin@vip.126.com>
2022-10-31 08:53:58 +08:00
winlin
9c6774b644 STAT: Refine tcUrl for SRT/RTC. v5.0.54 2022-08-30 21:28:06 +08:00
winlin
c1df280211 HLS: Rebuild m3u8 to make ts with id, for stat. 2022-08-29 09:08:46 +08:00
winlin
28154e820c URL: Use SrsHttpUri to parse URL and query. 2022-08-28 20:24:07 +08:00
winlin
9bd3c51818 RTMP: Refine code for gussing stream by app. 2022-08-28 17:03:34 +08:00
winlin
4e3ea99ccd STAT: Refine stat for global server. 2022-08-27 20:40:34 +08:00
winlin
4edf33326d Merge branch '4.0release' into develop 2022-08-17 11:10:30 +08:00
winlin
f9941a325b RTMP URL supports domain in stream parameters. v4.0.255 2022-08-17 11:08:32 +08:00
winlin
d117145b95 Update date from 2021 to 2022. 2022-06-20 19:22:25 +08:00
winlin
fa78cf3354 Prefix with srs_protocol in protocol directory. 2022-06-09 20:26:58 +08:00
winlin
665ad564fb Rename service to protocol files. 2022-06-09 19:59:51 +08:00
Haibo Chen
67ccd589c1
Security: Enable CIDR for allow/deny play/publish (#2914)
* protocol/utility: add srs_ipv4_to_num

* protocol/utility: add srs_ipv4_within_mask

* protocol/utility: add srs_get_cidr_mask and CIDR_VALUES static struct

* protocol/utility: add srs_get_cidr_ipv4

* app/security: support cidr ip ranges in allow/deny rules

* conf: update security example with cidr ranges

* Security: Enable CIDR for allow/deny play/publish

* Security: Enable CIDR for allow/deny play/publish

* Security: Enable CIDR for allow/deny play/publish

* fix compile error on centos6

Co-authored-by: Matheus Macabu <macabu.matheus@gmail.com>
2022-03-11 12:24:35 +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
a81aa2edc5 Squash: Merge SRS 4.0 2021-10-10 12:05:26 +08:00
winlin
19e857ada4 Remove dead link for issues 2021-10-10 09:31:06 +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
13d015b8fd Squash: Fix random bug 2021-07-04 16:04:51 +08:00
winlin
642359a50e For #2424, use srandom/random to generate. 4.0.139 2021-07-04 15:50:29 +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
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
4f1d213c91 Live: Support follow HTTP/302 for HTTP/HTTPS FLV edge. 2021-03-17 16:53:39 +08:00
winlin
1df2ea5ca8 Merge branch '3.0release' into 4.0release 2020-12-27 12:56:28 +08:00
winlin
831c78062b Remove vhost in query if not present it 2020-12-27 12:55:27 +08:00
winlin
2538b02a9b Merge branch '3.0release' into 4.0release 2020-12-26 22:15:37 +08:00
winlin
6e43ef6866 For RTMP edge/forward, pass vhost in tcUrl, not in stream. 3.0.156 2020-12-26 22:11:23 +08:00
winlin
13af54171f For #1780, build fail on ubuntu:focal. 3.0.144 2020-10-10 16:20:05 +08:00
winlin
a728e02b93 RTC: Refine RTCP packets parsing 2020-08-11 09:40:27 +08:00
winlin
742826a655 Log: Use 8 bytes random string as context id 2020-07-09 16:51:20 +08:00
winlin
be746da21c Merge branch '3.0release' into 4.0release 2020-03-21 22:42:17 +08:00
winlin
f89b4b3b26 For #1651, fix return pnwrite of srs_write_large_iovs. 3.0.135 2020-03-21 20:20:40 +08:00
l
bbfb03f98a
修复srs_write_large_iovs中nwrite未累加的错误 2020-03-19 14:36:56 +08:00
winlin
04d0620dde For #1615, fix build failed and srt api issue 2020-02-25 13:45:05 +08:00