18#ifndef __FPSDK_COMMON_VIDEO_HPP__
19#define __FPSDK_COMMON_VIDEO_HPP__
187 double t_conv_ = 0.0;
240 virtual std::optional<ImageData>
DecodeFrame(
const uint8_t* data,
const std::size_t size) = 0;
249 std::optional<ImageData>
DecodeFrame(
const std::vector<uint8_t>& data);
bool Init()
Initialise video decoder.
std::optional< ImageData > DecodeFrame(const std::vector< uint8_t > &data)
Decode video data.
VideoDecoderParams params_
Params.
virtual ~VideoFrameDecoder()
Destructor.
virtual std::optional< ImageData > DecodeFrame(const uint8_t *data, const std::size_t size)=0
Decode one frame.
VideoFrameDecoder(const VideoDecoderParams ¶ms)
Constructor.
virtual bool IsOkay() const =0
Check if decoder is in error state.
@ RGB24
Packed RGB 8:8:8, 24bpp, RGBRGB... (= FFmpeg AV_PIX_FMT_RGB24)
@ GBRP
Planar GBR, 24bpp [R][R][R]...[G][G][G]...[B][B][B]... (~ FFmpeg AV_PIX_FMT_GBRP/AV_PIX_FMT_GBR24P)
@ Y8
Planar Y (greyscale), 8bpp (= FFmpeg AV_PIX_FMT_GRAY8)
const char * ScalingQualToStr(const ScalingQual qual)
Stringify scaling method enum.
HwAccel HwAccelFromStrOr(const char *str, const HwAccel def)
Convert scaling method string to enum.
PixelFmt PixelFmtFromStrOr(const char *str, const PixelFmt def)
Convert pixel format string to enum.
ScalingQual ScalingQualFromStrOr(const char *str, const ScalingQual def)
Convert scaling method string to enum.
@ UNSPECIFIED
Unspecified.
@ H265
H.265 High Efficiency Video Coding (HEVC)
@ H264
H.264 Advanced Video Coding (AVC)
const char * HwAccelToStr(const HwAccel accel)
Stringify hw accel method enum.
ScalingQual
Scaling method (only for sw decoding)
@ LANCZOS
High quality, slower (radius=3.0)
@ SINC
Very high quality, very slow (radius=3.0)
@ BILINEAR
Low quality, very fast.
@ BICUBIC
Medium/high quality, fast (B=0.0, C=0.5, "Catmull-Rom")
std::unique_ptr< VideoFrameDecoder > VideoFrameDecoderPtr
Pointer to a VideoFrameDecoder instance, see CreateVideoFrameDecoder()
const char * VideoCodecToStr(const VideoCodec codec)
Stringify video codec enum.
const char * PixelFmtToStr(const PixelFmt fmt)
Stringify pixel format enum.
VideoCodec VideoCodecFromStrOr(const char *str, const VideoCodec def)
Convert codec ID string to enum.
VideoFrameDecoderPtr CreateVideoFrameDecoder(const VideoDecoderParams ¶ms)
Create a video frame decoder.
@ HW
Use hw acceleration (currently, Linux Video Acceleration API, VA-API)
@ SW
Do not use any hw acceleration, use pure software implementation.
@ AUTO
Use hw accel if possible, fallback to SW.
Fixposition SDK: Common library.
Decoded, converted and scaled image.
std::vector< uint8_t > data_
Image data, memory layout depends on fmt_.
PixelFmt fmt_
Pixel format (of data_)
VideoFrameDecoder params and their defaults.
ScalingQual qual_
Scaling method.
HwAccel accel_
Hw acceleration.
PixelFmt fmt_
Pixel format (of decoded image)
double scale_
Scale factor (of decoded image), range 0.1-1.0.
std::string name_
Name (for debug logging)