Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions cpp/moq/MIGRATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

## Unreleased

### `moq::VideoInit::lower` takes either producer kind ([#7699](https://github.com/moq-dev/moq/pull/7699))

`lower` is `std::optional<moq::MediaProducer>` instead of a `std::shared_ptr<moq::MediaTrackProducer>`. Assign `moq::MediaProducer(moq::MediaProducer::kTrack{producer})`, or `kStream` for a `moq::MediaTrackStreamProducer`.

### Media setup refusals are typed

Audio and video subscribe setup now reports `moq::Error::kUnsupportedConfig` when the decoder refuses a codec, layout, or description. Handle this variant to try another rendition instead of inspecting an audio/video error message or `Unsupported`. Decoder faults, such as a backend that fails to open, and later peer and decode failures keep their existing errors. Regenerate bindings and rebuild the matching native library together.
Expand Down
2 changes: 1 addition & 1 deletion cpp/obs/src/moq-output.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -850,7 +850,7 @@ void MoQOutput::VideoInit(obs_encoder_t *encoder)
if (below == video_tracks.end())
return;
if (below->second.producer) {
config.lower = below->second.producer;
config.lower = moq::MediaProducer(moq::MediaProducer::kTrack{below->second.producer});
lower_bps = (uint64_t)lower_kbps * 1000ULL;
}
}
Expand Down
4 changes: 4 additions & 0 deletions dart/moq/MIGRATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ How to update your code for each breaking change, newest first.

## Unreleased

### `VideoInit.lower` takes either producer kind ([#7699](https://github.com/moq-dev/moq/pull/7699))

`VideoInit.lower` is a `Producer` (`MoqMediaProducer`) instead of a `TrackProducer`. Pass `TrackMoqMediaProducer(producer: ...)`, or `StreamMoqMediaProducer(producer: ...)` for a byte-stream rendition.

### Media setup refusals are typed

Audio and video subscribe setup now reports `UnsupportedConfigMoqException` when the decoder refuses a codec, layout, or description. Handle this variant to try another rendition instead of inspecting an audio/video error message or `Unsupported`. Decoder faults, such as a backend that fails to open, and later peer and decode failures keep their existing errors. Regenerate bindings and rebuild the matching native library together.
Expand Down
3 changes: 3 additions & 0 deletions dart/moq/lib/media.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ typedef TrackProducer = MoqMediaTrackProducer;
/// The write side of a media track fed a raw byte stream, with frame boundaries inferred.
typedef TrackStreamProducer = MoqMediaTrackStreamProducer;

/// A single-track producer of either kind, such as a video rendition's `lower`.
typedef Producer = MoqMediaProducer;

/// The write side of a container, which publishes each track it describes.
typedef ContainerProducer = MoqMediaContainerProducer;

Expand Down
Loading
Loading