292 Commits

Author SHA1 Message Date
Joe Turki
39dee988fe Undo OGG API deprecation
Add a warning that it's a single track / header instead.
And plan the deprecation for the next major release.
2025-12-20 21:02:13 +02:00
David Chen
7298adda01 Add an option to include SEI NALs for H264/H265 (#3313) 2025-12-20 00:56:09 +02:00
Joe Turki
604582af7d Parse ogg vorbis tags 2025-12-12 22:32:00 +02:00
Joe Turki
1584ffdeda Multi track ogg API 2025-12-12 15:25:57 +02:00
Joe Turki
19e6521edb Parse opus mappings 2025-12-12 15:18:53 +02:00
Masayuki
c6b288f937 Add WithDirectPTS option for precise RTP timestamp (#3287) 2025-12-05 03:56:04 +02:00
philipch07
39d1b3cb9d Apply go modernize suggestions 2025-09-14 18:20:19 -04:00
Sean DuBois
1527bfa2e3 Allow IVFWriter Framerate to be modified
Before was hardcoded to 30/1

Resolves #696
2025-09-09 10:45:38 -07:00
Sean DuBois
cf7625dff8 Allow IVFWriter Width/Height to be modified
Before was hardcoded to 640x480

Relates to #696
2025-09-09 09:55:13 -07:00
cnderrauber
4c1af4c3e6 H265 reader & writer
H265 raeder & writer
2025-06-30 16:14:49 +08:00
Joe Turki
22dd7b733b Replace interface{} with any 2025-06-19 23:44:08 +03:00
Joe Turki
740e5166c5 Update lint rules, force testify/assert for tests
Use testify's assert package instead of the standard library's testing
package.
2025-03-27 12:08:37 +02:00
Joe Turki
8f8c2322fb Refactor Ivfwriter.WriteRTP implemention
Break the WriteRTP function into smaller functions for each codec type.
2025-03-01 23:52:40 +02:00
Joe Turki
fd7fe3fbce Fix AV1 IVF writer using RTP depacketizer
1. Replaced the OBU reader with the AV1 depacketizer to actually handle
RTP input.
2. Now explicitly constructing OBUTemporalDelimiter to ensure proper
separation of frames.
2025-03-01 23:36:07 +02:00
Sean DuBois
70d06fd9f6 Fix ivfwriter with VP9
Use the correct values for timestamps
2025-02-12 22:26:31 -05:00
Kevin Wang
bea7ae3745 Add ivfwriter support for VP9
Adds the necessary wiring to get VP9 to work with `ivfwriter`.
Update the README of save-to-disk to inform users it supports
both VP8 and VP9.
    
ivfwriter currently assumes 30 fps but it seems that the other codecs
also assume 30 fps so that is not a net-new assumption.
2025-02-12 16:06:41 -05:00
Sean DuBois
1c45355b8c Fix H264Writer writing 0 length payloads
Before we would call Write even if no bytes were available.
2025-02-11 14:57:36 -05:00
Joe Turki
feeeebf251 Upgrade golangci-lint, more linters
Introduces new linters, upgrade golangci-lint to version (v1.63.4)
2025-01-18 07:16:06 -06:00
Xavier Drudis
cdacd1c3b0 Rewrite VP8 isKeyFrame check (#2999)
#### Description
[RFC 6386](https://www.rfc-editor.org/rfc/rfc6386#section-9.1) describes
the least significant bit of the first byte of the header as:
```
A 1-bit frame type (0 for key frames, 1 for interframes).
```

The change is functionally a no-op, but the naming implies the wrong
logic (you would assume `isKeyFrame == 1` means it is a key frame, but
the opposite is true).

#### Reference issue
Fixes #...
2025-01-11 21:32:28 -08:00
Xavier Drudis
1ee02999eb Defense against timebase with denominator 0 2025-01-02 15:33:18 -05:00
Xavier Drudis
40358b3d1e Defense against timebase with denominator 0 2025-01-02 15:33:18 -05:00
Xavier Drudis
d5e07a1bcf Restore relative timestamp 2025-01-02 15:33:18 -05:00
Xavier Drudis
04b46212a9 Nits 2025-01-02 15:33:18 -05:00
Xavier Drudis
31d8dbc720 Fix IVF timestamps 2025-01-02 15:33:18 -05:00
Xavier Drudis
8b3734e5d3 Revert "Adapt an existing test to provide coverage"
This reverts commit dbe26d34d8.
2025-01-02 15:33:18 -05:00
Xavier Drudis
0ae39fd72a Revert "IVF writer fix invalid timestamp into headers"
This reverts commit 4f40756d9c.
2025-01-02 15:33:18 -05:00
Sean DuBois
bb41f23a0f Don't use JitterBuffer in SampleBuilder
The performance of the SampleBuilder is significantly worse when using
the SampleBuilder. It would be good to evaluate improving the
performance of the JitterBuffer. However for the time being we are just
going to revert.

Resolve #2778
2024-10-10 21:18:56 -04:00
Sean DuBois
4541b73b1a Add Retransmission and FEC to TrackLocal
If the MediaEngine contains support for them a SSRC will be generated
appropriately

Co-authored-by: aggresss <aggresss@163.com>
Co-authored-by: Kevin Wang <kevmo314@gmail.com>

Resolves #1989
Resolves #1675
2024-10-03 20:44:49 -07:00
Atsushi Watanabe
c4d56d4759 SampleBuilder: add memory leak test
Test that the input RTP packets are unreferenced
after all samples are popped.
2024-08-07 00:22:20 -04:00
Radek Gruchalski
dbe26d34d8 Adapt an existing test to provide coverage 2024-08-05 11:05:46 -04:00
Radek Gruchalski
4f40756d9c IVF writer fix invalid timestamp into headers 2024-08-05 11:05:46 -04:00
Konstantin
fc3521e85c Track bytesReadSuccesfully in oggreader 2024-06-25 12:21:48 -04:00
hongkuang
bd25613af2 Fix typos across the project 2024-04-07 21:48:29 -04:00
Rob Elsner
c47f89065c SampleBuilder: Port to use jitter buffer 2024-03-25 21:42:30 -04:00
pengqiseven
94ac7794eb Fix gramatical errors in comments
Removes repetitive words
2024-03-16 21:15:04 -04:00
Sean DuBois
fda6c4f836 Fix linter errors
golangci-lint upgrade to v1.56.2 added more checks

Relates to pion/.goassets#201
2024-03-16 21:09:38 -04:00
Atsushi Watanabe
34f44c978e SampleBuilder: Remove WithPartitionHeadChecker
Deprecated by https://github.com/pion/webrtc/pull/1928

BREAKING CHANGE: samplebuilder.WithPartitionHeadChecker
                 option is removed.
2024-03-14 11:22:43 +09:00
Atsushi Watanabe
c43183890f SampleBuilder: Remove PopWithTimestamp
Use Sample.PacketTimestamp field instead.

Migration example:
- sample, timestamp := s.PopWithTimestamp()
+ sample := s.Pop()
+ timestamp := sample.PacketTimestamp

BREAKING CHANGE: SampleBuilder.PopWithTimestamp method is removed
2024-03-14 11:22:43 +09:00
Atsushi Watanabe
3f6d94a4fc SampleBuilder: Add option to return RTPHeaders
Replaces fa1f5d91 which returned only a head packet's header.
When the option WithRTPHeaders is set, SampleBuilder returns
RTP headers of the packets forming the sample as Sample.RTPHeaders.
2024-03-07 12:46:52 +09:00
Atsushi Watanabe
09a4f60c4a SampleBuilder: Add Flush method
Flush marks all valid samples in the buffer to be popped.
Useful for graceful shutdown without losing buffered data
as much as possible.
2024-02-28 10:32:32 -05:00
Atsushi Watanabe
fa1f5d913d SampleBuilder: Return header of sample head packet
To get RTP extension data associated with the sample.
2024-02-28 14:52:20 +09:00
renovate[bot]
486f54c970 Update module github.com/pion/rtp to v1.8.2
Generated by renovateBot
2023-09-25 15:03:38 +00:00
Tristan Matthews
14eb615879 Samplebuilder: Properly handle padding packets
Resolves #2323
2023-09-15 19:39:36 -04:00
Sean DuBois
dc4b591c4d Start pion/webrtc/v4
60eea43 is a breaking change
2023-09-05 11:48:14 -04:00
streamer45
f0dc0db861 OggWriter: add packet segmentation 2023-08-21 00:20:32 -04:00
digitalix
7c60bb96f3 Adds WithPacketHeadHandler to SampleBuilder
This option allows inspecting head packet for
each media.Sample and then lets the user return
their custom metadata. This might be useful
in case when you need to check whether the
given sample is a keyframe.
2023-08-02 14:16:11 -04:00
Steffen Vogel
683fc837d0 Make repo REUSE compliant 2023-05-05 11:58:49 -04:00
Pion
308f8616a3 Update CI configs to v0.10.6
Update lint scripts and CI configs.
2023-04-08 14:24:19 -04:00
mr-shitij
789623a7f7 Update code to be more Go idiomatic
No functional changes
2022-10-31 23:51:17 -04:00
Pion
c1467e4871 Update CI configs to v0.7.2
Update lint scripts and CI configs.
2022-04-27 23:00:19 -04:00