# media

URL: https://www.caprid.com/docs/reference/typescript/caprid/relay/media/readme/

`@caprid/relay/media`: the media policy over registered tracks and subscriptions (spec/behavior.md, "Media publishing"
and "Media subscribing"). A frame writer maps encoded frames onto a track's groups; a catalog service and a document
service serve state-shaped tracks, and `mediaTrackProperties` gives a media track its default delivery timeout and publisher
priority; `mediaSubscribeParameters` gives a viewer's subscription to it the matching subscriber priority, and a
frame reader reads a subscription as frames in decode order. They know no format: a frame carries its own object
properties, a document is bytes, and the reader drives a sequencer it is given, so they pair with `@caprid/moq-media`'s
LOC and MSF helpers and its `FrameSequencer` without depending on them.

```ts
import { createCatalogService, createFrameWriter, mediaTrackProperties } from '@caprid/relay/media';

const video = createFrameWriter(
  publisher.registerTrack({
    track: 'video',
    trackProperties: [...locTrackProperties(), ...mediaTrackProperties('video', { keyframeIntervalUs: 1_000_000 })],
  }),
);
const outcome = await video.write(chunkToLocFrame(chunk, { videoConfig }));
```

## Interfaces

- [CatalogService](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/catalogservice/)
- [CatalogServiceOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/catalogserviceoptions/)
- [DocumentService](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/documentservice/)
- [Frame](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/frame/)
- [FrameOutcome](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/frameoutcome/)
- [FrameReader](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/framereader/)
- [FrameReaderOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/framereaderoptions/)
- [FrameReaderSequencer](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/framereadersequencer/)
- [FrameWriter](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/framewriter/)
- [FrameWriterOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/framewriteroptions/)
- [MediaTrackPropertiesOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/mediatrackpropertiesoptions/)
- [ReplaceableTrack](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/replaceabletrack/)
- [ReplaceableTrackCatalog](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/replaceabletrackcatalog/)
- [ReplaceableTrackOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/replaceabletrackoptions/)
- [ServeOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/serveoptions/)
- [TrackReplacement](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/trackreplacement/)

## Type Aliases

- [DocumentServiceOptions](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/type-aliases/documentserviceoptions/)
- [FrameGrouping](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/type-aliases/framegrouping/)
- [FrameOutcomeKind](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/type-aliases/frameoutcomekind/)
- [MediaKind](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/type-aliases/mediakind/)

## Functions

- [createCatalogService](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/functions/createcatalogservice/)
- [createDocumentService](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/functions/createdocumentservice/)
- [createFrameReader](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/functions/createframereader/)
- [createFrameWriter](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/functions/createframewriter/)
- [createReplaceableTrack](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/functions/createreplaceabletrack/)
- [mediaSubscribeParameters](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/functions/mediasubscribeparameters/)
- [mediaTrackProperties](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/functions/mediatrackproperties/)
