Home
AV module

VideoContext

Base video context from which all video encoders and decoders derive.

VideoContext

#include <icy/av/videocontext.h>
struct VideoContext

Defined in src/av/include/icy/av/videocontext.h:42

Subclassed by: VideoDecoder, VideoEncoder

Base video context from which all video encoders and decoders derive.

List of all members

NameKindOwner
emittervariableDeclared here
iparamsvariableDeclared here
oparamsvariableDeclared here
streamvariableDeclared here
ctxvariableDeclared here
codecvariableDeclared here
framevariableDeclared here
convvariableDeclared here
timevariableDeclared here
ptsvariableDeclared here
secondsvariableDeclared here
errorvariableDeclared here
VideoContextfunctionDeclared here
~VideoContextfunctionDeclared here
VideoContextfunctionDeclared here
operator=functionDeclared here
VideoContextfunctionDeclared here
operator=functionDeclared here
createfunctionDeclared here
openfunctionDeclared here
closefunctionDeclared here
decodefunctionDeclared here
encodefunctionDeclared here
encodefunctionDeclared here
encodefunctionDeclared here
flushfunctionDeclared here
convertfunctionDeclared here
recreateConverterfunctionDeclared here

Public Attributes

ReturnNameDescription
PacketSignalemitter
VideoCodeciparamsinput parameters
VideoCodecoparamsoutput parameters
AVStream *streamencoder or decoder stream
AVCodecContext *ctxencoder or decoder context
const AVCodec *codecencoder or decoder codec
AVFrame *frameencoder or decoder frame
std::unique_ptr< VideoConverter >convvideo conversion context
int64_ttimestream time in codec time base
int64_tptslast packet pts value
doublesecondsvideo time in seconds
std::stringerrorerror message

emitter

PacketSignal emitter

Defined in src/av/include/icy/av/videocontext.h:103


iparams

VideoCodec iparams

Defined in src/av/include/icy/av/videocontext.h:105

input parameters


oparams

VideoCodec oparams

Defined in src/av/include/icy/av/videocontext.h:106

output parameters


stream

AVStream * stream

Defined in src/av/include/icy/av/videocontext.h:107

encoder or decoder stream


ctx

AVCodecContext * ctx

Defined in src/av/include/icy/av/videocontext.h:108

encoder or decoder context


codec

const AVCodec * codec

Defined in src/av/include/icy/av/videocontext.h:109

encoder or decoder codec


frame

AVFrame * frame

Defined in src/av/include/icy/av/videocontext.h:110

encoder or decoder frame


conv

std::unique_ptr< VideoConverter > conv

Defined in src/av/include/icy/av/videocontext.h:111

video conversion context


time

int64_t time

Defined in src/av/include/icy/av/videocontext.h:112

stream time in codec time base


pts

int64_t pts

Defined in src/av/include/icy/av/videocontext.h:113

last packet pts value


seconds

double seconds

Defined in src/av/include/icy/av/videocontext.h:114

video time in seconds


error

std::string error

Defined in src/av/include/icy/av/videocontext.h:115

error message

Public Methods

ReturnNameDescription
VideoContext
VideoContextDeleted constructor.
VideoContextDeleted constructor.
voidcreate virtualInitialise the AVCodecContext with codec-specific defaults. Overridden by VideoEncoder and VideoDecoder.
voidopen virtualOpen the codec and create the pixel format conversion context if required. Throws std::runtime_error if the codec context has not been created.
voidclose virtualClose the codec context, free the frame, and reset timestamps.
booldecode virtualDecode a compressed video packet and emit the resulting frame.
boolencode virtualEncode a buffer of interleaved video data.
boolencode virtualEncode a planar video frame.
boolencode virtualEncode a single AVFrame.
voidflush virtualFlush any frames buffered inside the codec and emit remaining output.
AVFrame *convert virtualConvert the video frame and return the result.
boolrecreateConverter virtualRecreate the VideoConverter if the input or output parameters have changed. Called automatically by open() and convert().

VideoContext

VideoContext()

Defined in src/av/include/icy/av/videocontext.h:44


VideoContext

VideoContext(const VideoContext &) = delete

Defined in src/av/include/icy/av/videocontext.h:47

Deleted constructor.


VideoContext

VideoContext(VideoContext &&) = delete

Defined in src/av/include/icy/av/videocontext.h:49

Deleted constructor.


create

virtual

virtual void create()

Defined in src/av/include/icy/av/videocontext.h:54

Initialise the AVCodecContext with codec-specific defaults. Overridden by VideoEncoder and VideoDecoder.

Reimplemented by

open

virtual

virtual void open()

Defined in src/av/include/icy/av/videocontext.h:58

Open the codec and create the pixel format conversion context if required. Throws std::runtime_error if the codec context has not been created.

Reimplemented by

close

virtual

virtual void close()

Defined in src/av/include/icy/av/videocontext.h:61

Close the codec context, free the frame, and reset timestamps.

Reimplemented by

decode

virtual

virtual bool decode(AVPacket & ipacket)

Defined in src/av/include/icy/av/videocontext.h:66

Decode a compressed video packet and emit the resulting frame.

Parameters

  • ipacket The compressed video packet to decode.

Returns

True if an output frame was decoded and emitted, false otherwise.

Reimplemented by

encode

virtual

virtual bool encode(uint8_t * data, int size, int64_t pts)

Defined in src/av/include/icy/av/videocontext.h:73

Encode a buffer of interleaved video data.

Parameters

  • data Pointer to the interleaved frame buffer.

  • size Size of the buffer in bytes.

  • pts Presentation timestamp in stream time base units.

Returns

True if an encoded packet was produced and emitted.

Reimplemented by

encode

virtual

virtual bool encode(uint8_t * data, int linesize, int64_t pts)

Defined in src/av/include/icy/av/videocontext.h:80

Encode a planar video frame.

Parameters

  • data Array of per-plane data pointers (up to 4 planes).

  • linesize Array of per-plane byte strides.

  • pts Presentation timestamp in stream time base units.

Returns

True if an encoded packet was produced and emitted.

Reimplemented by

encode

virtual

virtual bool encode(AVFrame * iframe)

Defined in src/av/include/icy/av/videocontext.h:85

Encode a single AVFrame.

Parameters

  • iframe The source video frame; must have all fields set correctly.

Returns

True if an encoded packet was produced and emitted.

Reimplemented by

flush

virtual

virtual void flush()

Defined in src/av/include/icy/av/videocontext.h:88

Flush any frames buffered inside the codec and emit remaining output.

Reimplemented by

convert

virtual

virtual AVFrame * convert(AVFrame * iframe)

Defined in src/av/include/icy/av/videocontext.h:96

Convert the video frame and return the result.

The input frame will only be converted if it doesn't match the output format. If the frame is not converted the input frame will be returned. If the input frame format does not match the [VideoConverter](icy-av-VideoConverter.html#videoconverter) context then the [VideoConverter](icy-av-VideoConverter.html#videoconverter) will be recreated with the input frame params.


recreateConverter

virtual

virtual bool recreateConverter()

Defined in src/av/include/icy/av/videocontext.h:101

Recreate the VideoConverter if the input or output parameters have changed. Called automatically by open() and convert().

Returns

True if the converter was (re)created, false if it is already up to date.