Skip to content

OkutaniDaichi0106/gomoqt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gomoqt

gomoqt is an original implementation of Media over QUIC in Golang, based on MOQTransport and MOQTransfork.

Features and Differences

1. Streams

Streams completely based on MOQTranfork draft04.

2. Messages

Messages primarily based on MOQTransfork, some messages and fields are derived from MOQTransport

Differences from MOQTransfork draft04

  • GOAWAY messages are transmitted on the Session Stream.
  • GROUP messages have a Publisher Priority field.
  • Two types of priorities: Subscriber Priority and Publisher Priority are implemented
  • No Track Path Parts field

Implemented sections

Section Implemented Tested
2. Data Model
2.1. Frame
2.3. Group
2.4. Track
2.4.1. Track Naming and Scopes 🚧
2.4.2. Scope 🚧
2.4.3. Connection URL 🚧
3. Sessions
3.1. Session establishment
3.1.1. WebTransport
3.1.2. QUIC
3.2. Version and Extension Negotiation
3.3. Session initialization
3.4. Stream Cancellation 🚧
3.5. Termination
3.6. Migration 🚧
4. Data Transmittions
4.1 Publisher Priority Control 🚧
4.2 Subscriber Priority Control 🚧
4.3 Group Order Control 🚧
4.4 Cache 🚧
5. Relays
5.1. Subscriber Interactions
5.1.1. Graceful Publisher Relay Switchover
5.2. Publisher Interactions
5.2.1. Graceful Publisher Network Switchover
5.2.2. Graceful Publisher Relay Switchover
5.3. Relay Object Handling 🚧
Control Streams
6.1. Session Stream
6.2. Announce Stream
6.3. Subscribe Stream
6.4. Fetch Stream
6.5. Info Stream
Control Messages
6.1. Parameters 🚧
6.1.1. Version Specific Parameters
6.2. SESSION_CLIENT
6.2. SESSION_SERVER
6.2. SESSION_UPDATE 🚧
6.2.1. Versions
6.2.2. Setup Parameters
6.3. GOAWAY
6.4. ANNOUNCE_INTEREST
6.5. ANNOUNCE
6.6. SUBSCRIBE
6.7. SUBSCRIBE_UPDATE
6.12. SUBSCRIBE_GAP 🚧
6.8. INFO
6.9. INFO_REQUEST
6.10. FETCH
6.11. FETCH_UPDATE
Data Stream
7.3. Group Streams
Data Message
7.2. GROUP
7.2. FRAME
Datagram
7.2. Datagram
Security Considerations
8.1. Resource Exhaustion

Interoperablity test

We haven't conducted interoperability testing with other implementations yet

TODO

  • ANNOUNCE message's Status field
  • Priority Control
  • Handling the Group Expires
  • LOC (Low Overhead Container)
  • Common Catalog Format for moq

About

Pure Go implementation of the Media over QUIC

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Languages