Raytrix Light Field SDK  v3.0
Logo
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Properties Events Groups Pages
Rx::FileIO::CFFmpegEnc_Impl Class Reference

Detailed Description

FFMpeg video encode codec.

Inherits Rx::FileIO::IVideoEncode, and Rx::FileIO::IParameterVideoEncode.

Public Member Functions

 CFFmpegEnc_Impl ()
 Default constructor. Applies all necessary options for the encoder and initializes the FFMpeg libraries. More...
 
 ~CFFmpegEnc_Impl ()
 Destructor. Frees all by the constructor allocated memory and finalizes the FFmpeg libraries. More...
 
virtual void AddImage (const Rx::Interop::Runtime28::IImage *pSrcImg)
 Adds a single picture for encoding to video data. The picture must have the same format as specified in the image format in Open(). More...
 
virtual void Close ()
 Closes the video file. If there some delayed pictures in the encoding pipeline, they will be encoded before the video is closed. More...
 
virtual void Destroy ()
 Destroys this object. More...
 
virtual void GetParameters (H264 &xParameters)
 Gets the current parameters and writes them into the given H264 struct. When this function is called the first time without calling SetParameters() before it will fill the struct with the default values for the used video encoder. This function may be called at any state of the object. More...
 
virtual void Open (const Rx::CRxString &sxOutputVideopath, const Rx::CRxImageFormat &xFormat)
 Opens the video file at the specified path and sets last option based on the provided image format. More...
 
virtual void SetParameters (const H264 &xParameters)
 Sets the new parameters for the video encoder from the H264 struct. This function must not be called after the first image was added, but it is not necessary to call GetParameters() before this function. More...
 

Protected Member Functions

void GenerateFilterString (Rx::CRxString &sxFilterString, bool bCrop, int iTransposeLvl)
 Generates the string containing the commands used for initializing the filter chain. This function is called by SetupAndOpenEncoder() as part of the setup. More...
 
void InitFilters (const Rx::CRxString &sxFilterDescription)
 Initializes the filters by the string containing LibavFilter commands. Command list can be found at the FFmpeg documentation or at the Libavfilter documentation. This function is called by SetupAndOpenEncoder() as part of the setup. More...
 
void RxPixelFormatToAVPixelFormat (AVPixelFormat &avFormat, const Rx::CRxImageFormat &rxFormat)
 Converts Raytrix pixel format to Libav pixel format. This function is called by Open(). More...
 
void SetupAndOpenEncoder (AVFormatContext *pxAVFormatContext, AVCodec *pxAVCodec, AVStream *pxAVStream)
 Opens the video encoder, setups the filter chain and allocates the image buffer inside the frames. This function is called once when the first image is added via AddImage(). More...
 

Constructor & Destructor Documentation

Rx::FileIO::CFFmpegEnc_Impl::CFFmpegEnc_Impl ( )

Default constructor. Applies all necessary options for the encoder and initializes the FFMpeg libraries.

Rx::FileIO::CFFmpegEnc_Impl::~CFFmpegEnc_Impl ( )

Destructor. Frees all by the constructor allocated memory and finalizes the FFmpeg libraries.

Member Function Documentation

virtual void Rx::FileIO::CFFmpegEnc_Impl::AddImage ( const Rx::Interop::Runtime28::IImage pSrcImg)
virtual

Adds a single picture for encoding to video data. The picture must have the same format as specified in the image format in Open().

Parameters
pSrcImg[in] Source image.

Implements Rx::FileIO::IVideoEncode.

virtual void Rx::FileIO::CFFmpegEnc_Impl::Close ( )
virtual

Closes the video file. If there some delayed pictures in the encoding pipeline, they will be encoded before the video is closed.

Implements Rx::FileIO::IVideoEncode.

virtual void Rx::FileIO::CFFmpegEnc_Impl::Destroy ( )
virtual

Destroys this object.

Implements Rx::FileIO::IVideoEncode.

void Rx::FileIO::CFFmpegEnc_Impl::GenerateFilterString ( Rx::CRxString sxFilterString,
bool  bCrop,
int  iTransposeLvl 
)
protected

Generates the string containing the commands used for initializing the filter chain. This function is called by SetupAndOpenEncoder() as part of the setup.

Parameters
sxFilterString[out] The string containing the generated filter chain.
bCrop[in] True to allow frame cropping.
iTransposeLvl[in] The transpose level.
virtual void Rx::FileIO::CFFmpegEnc_Impl::GetParameters ( H264 xParameters)
virtual

Gets the current parameters and writes them into the given H264 struct. When this function is called the first time without calling SetParameters() before it will fill the struct with the default values for the used video encoder. This function may be called at any state of the object.

Parameters
xParameters[out] The H264 struct which contains the current parameters.

Implements Rx::FileIO::IParameterVideoEncode.

void Rx::FileIO::CFFmpegEnc_Impl::InitFilters ( const Rx::CRxString sxFilterDescription)
protected

Initializes the filters by the string containing LibavFilter commands. Command list can be found at the FFmpeg documentation or at the Libavfilter documentation. This function is called by SetupAndOpenEncoder() as part of the setup.

Parameters
sxFilterDescription[in] Information describing the Libav filter.
virtual void Rx::FileIO::CFFmpegEnc_Impl::Open ( const Rx::CRxString sxOutputVideopath,
const Rx::CRxImageFormat xFormat 
)
virtual

Opens the video file at the specified path and sets last option based on the provided image format.

Parameters
sxOutputVideopath[in] The path for the output video file.
xFormat[in] Describes the format of the input images.

Implements Rx::FileIO::IVideoEncode.

void Rx::FileIO::CFFmpegEnc_Impl::RxPixelFormatToAVPixelFormat ( AVPixelFormat &  avFormat,
const Rx::CRxImageFormat rxFormat 
)
protected

Converts Raytrix pixel format to Libav pixel format. This function is called by Open().

Parameters
avFormat[out] The av format.
rxFormat[in] The raytrix format.
virtual void Rx::FileIO::CFFmpegEnc_Impl::SetParameters ( const H264 xParameters)
virtual

Sets the new parameters for the video encoder from the H264 struct. This function must not be called after the first image was added, but it is not necessary to call GetParameters() before this function.

Parameters
xParameters[in] The H264 struct containing the new parameters.

Implements Rx::FileIO::IParameterVideoEncode.

void Rx::FileIO::CFFmpegEnc_Impl::SetupAndOpenEncoder ( AVFormatContext *  pxAVFormatContext,
AVCodec *  pxAVCodec,
AVStream *  pxAVStream 
)
protected

Opens the video encoder, setups the filter chain and allocates the image buffer inside the frames. This function is called once when the first image is added via AddImage().

Parameters
pxAVFormatContext[in] The AV format context.
pxAVCodec[in] The AV codec.
pxAVStream[in] The AV stream.