Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AudioEncoderBuilder ¶
type AudioEncoderBuilder interface { // RTPCodec represents the codec metadata RTPCodec() *RTPCodec // BuildAudioEncoder builds audio encoder by given media params and audio input BuildAudioEncoder(r audio.Reader, p prop.Media) (ReadCloser, error) }
AudioEncoderBuilder is the interface that wraps basic operations that are necessary to build the audio encoder.
This interface is for codec implementors to provide codec specific params, but still giving generality for the users.
type BaseParams ¶
type BaseParams struct { // Target bitrate in bps. BitRate int // Expected interval of the keyframes in frames. KeyFrameInterval int }
BaseParams represents an codec's encoding properties
type BitRateController ¶
type BitRateController interface { EncoderController // SetBitRate sets current target bitrate, lower bitrate means smaller data will be transmitted // but this also means that the quality will also be lower. SetBitRate(int) error }
BitRateController is a interface representing an encoder which can have a variable bit rate
type Controllable ¶
type Controllable interface {
Controller() EncoderController
}
Controllable is a interface representing a encoder which can be controlled after it's initialisation with an EncoderController
type EncoderController ¶
type EncoderController interface{}
EncoderController is the interface allowing to control the encoder behaviour after it's initialisation. It will possibly have common control method in the future. A controller can have optional methods represented by *Controller interfaces
type KeyFrameController ¶
type KeyFrameController interface { EncoderController // ForceKeyFrame forces the next frame to be a keyframe, aka intra-frame. ForceKeyFrame() error }
KeyFrameController is a interface representing an encoder that can be forced to produce key frame on demand
type RTPCodec ¶
type RTPCodec struct { webrtc.RTPCodecParameters rtp.Payloader // Latency of static frame size codec. Latency time.Duration }
RTPCodec wraps webrtc.RTPCodec. RTPCodec might extend webrtc.RTPCodec in the future.
func NewRTPH264Codec ¶
NewRTPH264Codec is a helper to create an H264 codec
func NewRTPOpusCodec ¶
NewRTPOpusCodec is a helper to create an Opus codec
func NewRTPVP8Codec ¶
NewRTPVP8Codec is a helper to create an VP8 codec
func NewRTPVP9Codec ¶
NewRTPVP9Codec is a helper to create an VP9 codec
type ReadCloser ¶
type ReadCloser interface { Read() (b []byte, release func(), err error) Close() error Controllable }
ReadCloser is an io.ReadCloser with a controller
type VideoEncoderBuilder ¶
type VideoEncoderBuilder interface { // RTPCodec represents the codec metadata RTPCodec() *RTPCodec // BuildVideoEncoder builds video encoder by given media params and video input BuildVideoEncoder(r video.Reader, p prop.Media) (ReadCloser, error) }
VideoEncoderBuilder is the interface that wraps basic operations that are necessary to build the video encoder.
This interface is for codec implementors to provide codec specific params, but still giving generality for the users.
Directories ¶
Path | Synopsis |
---|---|
internal
|
|
codectest
Package codectest provides shared test for codec implementations.
|
Package codectest provides shared test for codec implementations. |
Package mmal implements a hardware accelerated H264 encoder for raspberry pi.
|
Package mmal implements a hardware accelerated H264 encoder for raspberry pi. |
Package vaapi implements hardware accelerated codecs.
|
Package vaapi implements hardware accelerated codecs. |
Package vpx implements VP8 and VP9 encoder.
|
Package vpx implements VP8 and VP9 encoder. |
Package x264 implements H264 encoder.
|
Package x264 implements H264 encoder. |