define synchronized playback contracts
This commit is contained in:
@@ -0,0 +1,34 @@
|
|||||||
|
package playback
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
|
// SyncFrame contains one video frame and its corresponding audio batch.
|
||||||
|
//
|
||||||
|
// Both payloads may borrow reader-owned memory and are valid only until the
|
||||||
|
// next ReadSync call or until the reader is closed.
|
||||||
|
type SyncFrame struct {
|
||||||
|
Video VideoFrame
|
||||||
|
Audio AudioFrame
|
||||||
|
}
|
||||||
|
|
||||||
|
// SyncReader reads synchronized audio/video pairs.
|
||||||
|
//
|
||||||
|
// ReadSync must not be called again until both frame payloads have been
|
||||||
|
// consumed.
|
||||||
|
type SyncReader interface {
|
||||||
|
ReadSync(context.Context) (SyncFrame, error)
|
||||||
|
Close() error
|
||||||
|
}
|
||||||
|
|
||||||
|
// SyncReaderFactory opens one synchronized reader for two configured feeds.
|
||||||
|
//
|
||||||
|
// Native MXL implementations may require the feeds to use the same domain.
|
||||||
|
// Future manual synchronization may support different domains behind another
|
||||||
|
// implementation of this interface.
|
||||||
|
type SyncReaderFactory interface {
|
||||||
|
OpenSync(
|
||||||
|
context.Context,
|
||||||
|
FeedConfig,
|
||||||
|
FeedConfig,
|
||||||
|
) (SyncReader, error)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user