libmoq 0.5.13

Media over QUIC, C bindings
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.5.13]https://github.com/moq-dev/moq/compare/libmoq-v0.5.12...libmoq-v0.5.13 - 2026-09-02

### Added

- *(moq-audio)* expose Opus DTX classification ([#3238]https://github.com/moq-dev/moq/pull/3238)

## [0.5.12]https://github.com/moq-dev/moq/compare/libmoq-v0.5.11...libmoq-v0.5.12 - 2026-09-01

### Added

- *(moq-net)* add moq-transport draft-20 (moqt-20) ([#3255]https://github.com/moq-dev/moq/pull/3255)

### Other

- restore Swatinem Rust cache ([#3273]https://github.com/moq-dev/moq/pull/3273)
- try mr boxington cache ([#3175]https://github.com/moq-dev/moq/pull/3175)
- *(rs)* point shared dependencies at [workspace.dependencies] [#3098](https://github.com/moq-dev/moq/pull/3098)

## [0.5.11]https://github.com/moq-dev/moq/compare/libmoq-v0.5.10...libmoq-v0.5.11 - 2026-08-26

### Other

- updated the following local packages: moq-net, moq-mux, moq-native, moq-video, hang, moq-json, moq-loc, moq-audio

## [0.5.10]https://github.com/moq-dev/moq/compare/libmoq-v0.5.9...libmoq-v0.5.10 - 2026-08-24

### Added

- *(audio)* decode AAC-LC ([#2968]https://github.com/moq-dev/moq/pull/2968)

## [0.5.9]https://github.com/moq-dev/moq/compare/libmoq-v0.5.8...libmoq-v0.5.9 - 2026-08-20

### Added

- *(video)* give the bindings the NVIDIA codecs, and warn when Auto falls to software ([#2950]https://github.com/moq-dev/moq/pull/2950)
- *(hang)* signal stalled video renditions ([#2865]https://github.com/moq-dev/moq/pull/2865)

## [0.5.8]https://github.com/moq-dev/moq/compare/libmoq-v0.5.7...libmoq-v0.5.8 - 2026-08-14

### Added

- *(libmoq)* declare the catalog container for manually authored renditions ([#2805]https://github.com/moq-dev/moq/pull/2805)

## [0.5.7]https://github.com/moq-dev/moq/compare/libmoq-v0.5.6...libmoq-v0.5.7 - 2026-08-13

### Added

- *(native)* start dialing before the AAAA answer lands ([#2749]https://github.com/moq-dev/moq/pull/2749)
- *(moq-video)* advertise the catalog rendition before the first keyframe ([#2768]https://github.com/moq-dev/moq/pull/2768)

## [0.5.6]https://github.com/moq-dev/moq/compare/libmoq-v0.5.5...libmoq-v0.5.6 - 2026-08-07

### Added

- *(libmoq)* add a client config handle, and advanced settings to the OBS plugin ([#2650]https://github.com/moq-dev/moq/pull/2650)

### Other

- drop Intel macOS release targets ([#2715]https://github.com/moq-dev/moq/pull/2715)

## [0.5.5]https://github.com/moq-dev/moq/compare/libmoq-v0.5.4...libmoq-v0.5.5 - 2026-08-06

### Fixed

- *(libmoq)* stop holding the global locks across a video encode ([#2663]https://github.com/moq-dev/moq/pull/2663)
- *(libmoq)* fix the generated CMake package config for Windows and installs ([#2671]https://github.com/moq-dev/moq/pull/2671)
- *(libmoq)* unbreak the Linux C link list, and make VAAPI opt-in ([#2669]https://github.com/moq-dev/moq/pull/2669)

## [0.5.4]https://github.com/moq-dev/moq/compare/libmoq-v0.5.3...libmoq-v0.5.4 - 2026-08-05

### Added

- *(bindings)* publish raw video with a native encoder ([#2608]https://github.com/moq-dev/moq/pull/2608)

### Fixed

- *(moq-video)* reject unrepresentable sizes, and unbreak the macOS build ([#2648]https://github.com/moq-dev/moq/pull/2648)

## [0.5.3]https://github.com/moq-dev/moq/compare/libmoq-v0.5.2...libmoq-v0.5.3 - 2026-08-03

### Other

- updated the following local packages: moq-video

## [0.5.2]https://github.com/moq-dev/moq/compare/libmoq-v0.5.1...libmoq-v0.5.2 - 2026-07-29

### Other

- updated the following local packages: moq-audio, moq-video

## [0.5.1]https://github.com/moq-dev/moq/compare/libmoq-v0.5.0...libmoq-v0.5.1 - 2026-07-27

### Other

- updated the following local packages: moq-json, moq-audio

## [0.5.0]https://github.com/moq-dev/moq/compare/libmoq-v0.4.2...libmoq-v0.5.0 - 2026-07-25

### Added

- *(bindings)* expose shared video properties ([#2457]https://github.com/moq-dev/moq/pull/2457)

### Other

- *(moq-video)* [**breaking**] one raw Frame type, and carry timestamps through encode ([#2503]https://github.com/moq-dev/moq/pull/2503)

## [0.4.2]https://github.com/moq-dev/moq/compare/libmoq-v0.4.1...libmoq-v0.4.2 - 2026-07-24

### Other

- updated the following local packages: moq-mux, moq-audio, moq-video

## [0.4.1]https://github.com/moq-dev/moq/compare/libmoq-v0.4.0...libmoq-v0.4.1 - 2026-07-23

### Other

- updated the following local packages: moq-json, moq-audio, moq-video

## [0.4.0]https://github.com/moq-dev/moq/compare/libmoq-v0.3.14...libmoq-v0.4.0 - 2026-07-22

### Fixed

- [**breaking**] correct catalog, timeline, token, and teardown contracts found in API review ([#2439]https://github.com/moq-dev/moq/pull/2439)

### Other

- [**breaking**] pre-bump API polish across the release batch ([#2423]https://github.com/moq-dev/moq/pull/2423)
- *(net)* [**breaking**] route everything through create_broadcast, gate announce on Route.live ([#2396]https://github.com/moq-dev/moq/pull/2396)
- Merge branch 'main' into dev

### Fixed

- Linking `libmoq.a` on macOS no longer fails on undefined Apple framework
  symbols, and the CMake package config carries the same libraries the
  pkg-config file does.
- `moq_track_info.timescale_valid` documented that it overrides a default
  millisecond timescale. The default is and was microseconds, matching the
  `timestamp_us` units used everywhere else in the ABI. Only the doc was wrong.

### Changed

- Producer teardown is now spelled `_finish`, not `_close`, so the name states
  the end-of-stream semantics and no longer reads as a synonym for the `_abort`
  that sits next to it: `moq_publish_close` -> `moq_publish_finish`, and the
  same for `moq_publish_media_close`, `moq_publish_track_close`,
  `moq_publish_group_close`, `moq_publish_json_snapshot_close`,
  `moq_publish_json_stream_close`, and `moq_publish_audio_raw_close`.
  `moq_publish_track_finish` now also pairs with `moq_publish_track_finish_at`.
  `_close` keeps its other two meanings (stop a listener, close a connection),
  so `moq_consume_*_close`, `moq_origin_*_close`, and `moq_session_close` are
  unchanged.
- `moq_origin_publish` / `moq_origin_unpublish` -> `moq_origin_announce` /
  `moq_origin_unannounce`, so the C ABI uses the same announce verb as every
  other layer. The `origin_publish` / `origin_consume` parameters of
  `moq_session_connect` keep their names: they name a direction, not this
  operation.
- `moq_remove_catalog_section` -> `moq_publish_catalog_section_remove`, putting
  it under the `moq_publish_catalog_section` sibling it belongs to instead of
  breaking the verb-prefix scheme.
- Dropped the `_ordered` suffix, which leaked a long-gone internal type:
  `moq_publish_media_ordered` -> `moq_publish_media`,
  `moq_consume_video_ordered` -> `moq_consume_video`, and
  `moq_consume_audio_ordered` -> `moq_consume_audio`. These now match the
  `publish_media` / `subscribe_media` names moq-ffi already uses.
- The native libraries an external linker needs alongside `libmoq.a` now come
  from `rs/libmoq/native-libs/`, so the pkg-config file and the CMake package
  config can no longer drift apart. This adds the Apple media frameworks, the
  capture frameworks, and the C++ runtime on macOS, `libva` and the C++ runtime
  on Linux, and the full system library set on Windows.
- JSON snapshot C ABI renamed for symmetry with the stream mode, so the caller
  opts explicitly into one of the two modes: `moq_json_config` ->
  `moq_json_snapshot_config`, `moq_publish_json` -> `moq_publish_json_snapshot`
  (and `_update` / `_finish`), and `moq_consume_json` ->
  `moq_consume_json_snapshot`. The shared `moq_json_value`,
  `moq_consume_json_value{,_close}`, and `moq_consume_json_close` are unchanged.

### Added

- Raw track APIs for explicit group sequences, known track ends, and track or
  group aborts.
- Raw track options for the C ABI: `moq_publish_track` now accepts
  `moq_track_info`, and `moq_consume_track` now accepts `moq_subscription`;
  subscriptions can be updated with `moq_consume_track_update`.
- Native video decode C API: `moq_consume_video_raw` (+ `_close`, `_frame`,
  `_frame_free`) subscribes to an H.264 track and hands back decoded I420 frames,
  the video counterpart to `moq_consume_audio_raw`. Decoding happens inside
  libmoq (VideoToolbox / openh264), so consumers no longer need ffmpeg.

## [0.3.14]https://github.com/moq-dev/moq/compare/libmoq-v0.3.13...libmoq-v0.3.14 - 2026-07-18

### Fixed

- *(libmoq)* write moq.pc under a profile-scoped path so debug/release don't collide ([#2379]https://github.com/moq-dev/moq/pull/2379)

## [0.3.13]https://github.com/moq-dev/moq/compare/libmoq-v0.3.12...libmoq-v0.3.13 - 2026-07-16

### Other

- updated the following local packages: moq-audio

## [0.3.12]https://github.com/moq-dev/moq/compare/libmoq-v0.3.11...libmoq-v0.3.12 - 2026-07-12

### Other

- split into snapshot/stream modules and expose JSON tracks through moq-ffi/libmoq ([#2196]https://github.com/moq-dev/moq/pull/2196)

## [0.3.11]https://github.com/moq-dev/moq/compare/libmoq-v0.3.10...libmoq-v0.3.11 - 2026-07-09

### Other

- updated the following local packages: moq-audio

## [0.3.10]https://github.com/moq-dev/moq/compare/libmoq-v0.3.9...libmoq-v0.3.10 - 2026-07-04

### Other

- [codex] Future-proof moq-net metadata structs ([#2046]https://github.com/moq-dev/moq/pull/2046)
- allowing container be probed and select depending on the what on wire ([#2040]https://github.com/moq-dev/moq/pull/2040)

## [0.3.9]https://github.com/moq-dev/moq/compare/libmoq-v0.3.8...libmoq-v0.3.9 - 2026-06-30

### Other

- API cleanup before the semver bump ([#1941]https://github.com/moq-dev/moq/pull/1941)
- Backport moq-mux to main (adapted to main's moq-net, no wire/API breaks) ([#1918]https://github.com/moq-dev/moq/pull/1918)

## [0.3.8]https://github.com/moq-dev/moq/compare/libmoq-v0.3.7...libmoq-v0.3.8 - 2026-06-23

### Added

- *(catalog)* expose untyped catalog extensions via moq-ffi and libmoq ([#1886]https://github.com/moq-dev/moq/pull/1886)

### Fixed

- link macOS CoreServices for the bundled notify/FSEvents backend ([#1875]https://github.com/moq-dev/moq/pull/1875)

## [0.3.7]https://github.com/moq-dev/moq/compare/libmoq-v0.3.6...libmoq-v0.3.7 - 2026-06-19

### Fixed

- *(libmoq)* use .cast() for c_char pointer to fix arm64 clippy ([#1782]https://github.com/moq-dev/moq/pull/1782)

## [0.3.5]https://github.com/moq-dev/moq/compare/libmoq-v0.3.4...libmoq-v0.3.5 - 2026-06-16

### Fixed

- *(native)* surface terminal auth connect errors ([#1649]https://github.com/moq-dev/moq/pull/1649)

## [0.3.4]https://github.com/moq-dev/moq/compare/libmoq-v0.3.3...libmoq-v0.3.4 - 2026-06-10

### Added

- *(hang,json,moq-mux)* generic catalog with application extensions ([#1658]https://github.com/moq-dev/moq/pull/1658)

### Fixed

- *(moq-relay)* classify malformed auth-API JSON as an upstream 502

### Other

- Revert accidental commit 24d25604 (moq-native connect/reconnect refactor)
- *(moq-native)* migrate from anyhow to thiserror ([#1651]https://github.com/moq-dev/moq/pull/1651)
- cross-compile all x86_64-darwin release artifacts on Apple Silicon ([#1623]https://github.com/moq-dev/moq/pull/1623)

## [0.3.3]https://github.com/moq-dev/moq/compare/libmoq-v0.3.2...libmoq-v0.3.3 - 2026-06-03

### Other

- updated the following local packages: moq-audio

## [0.3.2]https://github.com/moq-dev/moq/compare/libmoq-v0.3.1...libmoq-v0.3.2 - 2026-06-02

### Other

- expose moq_error(), stop logging FFI errors ([#1586]https://github.com/moq-dev/moq/pull/1586)
- shrink moq-ffi & libmoq staticlibs with LTO (unblocks the moq-go mirror push) ([#1577]https://github.com/moq-dev/moq/pull/1577)

## [0.3.1]https://github.com/moq-dev/moq/compare/libmoq-v0.3.0...libmoq-v0.3.1 - 2026-05-30

### Other

- add moq_origin_consume_announced to wait for a broadcast ([#1552]https://github.com/moq-dev/moq/pull/1552)
- route Android logs to logcat ([#1541]https://github.com/moq-dev/moq/pull/1541)

## [0.3.0]https://github.com/moq-dev/moq/compare/libmoq-v0.2.17...libmoq-v0.3.0 - 2026-05-30

### Other

- terminal-callback lifetime contract for C consumers ([#1546]https://github.com/moq-dev/moq/pull/1546)
- auto-reconnect sessions; conducer-based Reconnect notifications ([#1544]https://github.com/moq-dev/moq/pull/1544)
- Add libmoq catalog producer + raw moq-net track API ([#1533]https://github.com/moq-dev/moq/pull/1533)
- lint shell, workflows, TOML, Nix, and justfiles via nix devShell ([#1519]https://github.com/moq-dev/moq/pull/1519)

### Added

- Catalog producer API to author renditions directly (`moq_publish_video_config`, `moq_publish_audio_config`, `moq_publish_video_remove`, `moq_publish_audio_remove`), mirroring the consume-side config queries.
- Raw moq-net track API for arbitrary (non-media) byte tracks, mirroring the moq-ffi primitives:
  - Publish: `moq_publish_track`, `moq_publish_track_group`, `moq_publish_track_frame`, `moq_publish_group_frame`, `moq_publish_group_close`, `moq_publish_track_close`.
  - Consume: `moq_consume_track`, `moq_consume_track_frame`, `moq_consume_track_frame_close`, `moq_consume_track_close`.

## [0.2.17]https://github.com/moq-dev/moq/compare/libmoq-v0.2.16...libmoq-v0.2.17 - 2026-05-24

### Added

- add moq-audio crate, raw-audio FFI, and rename moq-codec to moq-video ([#1484]https://github.com/moq-dev/moq/pull/1484)

## [0.2.16]https://github.com/moq-dev/moq/compare/libmoq-v0.2.15...libmoq-v0.2.16 - 2026-05-23

### Other

- Package moq-gst for release via Nix-built tarballs ([#1453]https://github.com/moq-dev/moq/pull/1453)

## [0.2.15]https://github.com/moq-dev/moq/compare/libmoq-v0.2.14...libmoq-v0.2.15 - 2026-05-20

### Other

- rename moq-lite package to moq-net ([#1428]https://github.com/moq-dev/moq/pull/1428)

## [0.2.14]https://github.com/moq-dev/moq/compare/libmoq-v0.2.13...libmoq-v0.2.14 - 2026-05-07

### Other

- moq-mux backport + dual-API cleanup ([#1341]https://github.com/moq-dev/moq/pull/1341)
- tighten public API surface and remove deprecated methods ([#1378]https://github.com/moq-dev/moq/pull/1378)
- Revert moq-lite FETCH/Subscription API changes ([#1372]https://github.com/moq-dev/moq/pull/1372)
- backport Subscription model API for FETCH readiness ([#1348]https://github.com/moq-dev/moq/pull/1348)
- add OriginConsumer::wait_for_broadcast; deprecate consume_broadcast ([#1340]https://github.com/moq-dev/moq/pull/1340)
- hop-based clustering ([#1322]https://github.com/moq-dev/moq/pull/1322)

## [0.2.13]https://github.com/moq-dev/moq/compare/libmoq-v0.2.12...libmoq-v0.2.13 - 2026-03-18

### Other

- Fix FFI test panic strategy mismatch ([#1128]https://github.com/moq-dev/moq/pull/1128)
- Remove unused dev-dependencies and bump @moq/qmux ([#1126]https://github.com/moq-dev/moq/pull/1126)

## [0.2.12]https://github.com/moq-dev/moq/compare/libmoq-v0.2.11...libmoq-v0.2.12 - 2026-03-13

### Other

- Validate libmoq IDs fit in i32 at creation time ([#1087]https://github.com/moq-dev/moq/pull/1087)
- Fix libmoq test races by using monotonic IDs ([#1086]https://github.com/moq-dev/moq/pull/1086)
- Set MSRV to 1.85 (edition 2024) ([#1083]https://github.com/moq-dev/moq/pull/1083)
- Add comprehensive FFI integration tests for libmoq broadcast ([#1068]https://github.com/moq-dev/moq/pull/1068)
- Improve libmoq C bindings ([#1061]https://github.com/moq-dev/moq/pull/1061)

## [0.2.10]https://github.com/moq-dev/moq/compare/libmoq-v0.2.9...libmoq-v0.2.10 - 2026-03-03

### Other

- OrderedProducer API with max_group_duration ([#1007]https://github.com/moq-dev/moq/pull/1007)
- Add typed initialization for Opus and AAC in moq-mux ([#1034]https://github.com/moq-dev/moq/pull/1034)
- Add moq-msf crate for MSF catalog support ([#993]https://github.com/moq-dev/moq/pull/993)
- Replace tokio::sync::watch with custom Producer/Subscriber ([#996]https://github.com/moq-dev/moq/pull/996)

## [0.2.8]https://github.com/moq-dev/moq/compare/libmoq-v0.2.7...libmoq-v0.2.8 - 2026-02-12

### Other

- Error cleanup ([#944]https://github.com/moq-dev/moq/pull/944)
- Reduce the moq-lite API size ([#943]https://github.com/moq-dev/moq/pull/943)

## [0.2.7]https://github.com/moq-dev/moq/compare/libmoq-v0.2.6...libmoq-v0.2.7 - 2026-02-09

### Other

- Use `moq` instead of `hang` for some crates ([#906]https://github.com/moq-dev/moq/pull/906)
- Remove priority from the catalog ([#905]https://github.com/moq-dev/moq/pull/905)

## [0.2.6]https://github.com/moq-dev/moq/compare/libmoq-v0.2.5...libmoq-v0.2.6 - 2026-02-03

### Other

- updated the following local packages: moq-lite, hang

## [0.2.5]https://github.com/moq-dev/moq/compare/libmoq-v0.2.4...libmoq-v0.2.5 - 2026-01-24

### Other

- Add a builder pattern for constructing clients/servers ([#862]https://github.com/moq-dev/moq/pull/862)
- Add universal libmoq build for macos  ([#861]https://github.com/moq-dev/moq/pull/861)
- Add #[non_exhaustive] to moq-native configuration. ([#850]https://github.com/moq-dev/moq/pull/850)
- upgrade to Rust edition 2024 ([#838]https://github.com/moq-dev/moq/pull/838)

## [0.2.4]https://github.com/moq-dev/moq/compare/libmoq-v0.2.3...libmoq-v0.2.4 - 2026-01-12

## [0.2.3]https://github.com/moq-dev/moq/compare/libmoq-v0.2.2...libmoq-v0.2.3 - 2026-01-10

### Added

- iroh support ([#794]https://github.com/moq-dev/moq/pull/794)

### Other

- Add generic time system with Timescale type ([#824]https://github.com/moq-dev/moq/pull/824)
- support WebSocket fallback for clients ([#812]https://github.com/moq-dev/moq/pull/812)
- target_link_libraries ([#802]https://github.com/moq-dev/moq/pull/802)

## [0.2.2]https://github.com/moq-dev/moq/compare/libmoq-v0.2.1...libmoq-v0.2.2 - 2025-12-19

### Other

- Add HLS import module ([#789]https://github.com/moq-dev/moq/pull/789)

## [0.1.0]https://github.com/moq-dev/moq/releases/tag/libmoq-v0.1.0 - 2025-12-13

### Other

- Use BufList for hang::Frame ([#769]https://github.com/moq-dev/moq/pull/769)
- Fix and over-optimize the H.264 annex.b import ([#766]https://github.com/moq-dev/moq/pull/766)
- Don't use 0 index for the slab. ([#758]https://github.com/moq-dev/moq/pull/758)
- Fix the include.h path ([#755]https://github.com/moq-dev/moq/pull/755)
- kixelated -> moq-dev ([#749]https://github.com/moq-dev/moq/pull/749)
- Revamp the C API and have it use hang/import ([#732]https://github.com/moq-dev/moq/pull/732)

## [0.7.0]https://github.com/moq-dev/moq/compare/libmoq-v0.6.1...libmoq-v0.7.0 - 2025-11-26

### Other

- Add initial C bindings for moq ([#722]https://github.com/kixelated/moq/pull/722)