101 friend class StormByte::Multimedia::Backend::Pipeline::Frame;
131 explicit operator
bool() const noexcept;
158 bool CopyProps(const
AVFrame& other) noexcept;
165 bool GetBuffer(
int align = 0) noexcept;
171 bool MakeWritable() noexcept;
177 bool Writable() const noexcept;
187 bool AllocVideo(
int width,
int height,
int format,
int align = 0) noexcept;
197 bool AllocAudio(
int nb_samples,
int format, const
AVChannelLayout& layout,
int sample_rate) noexcept;
202 void Unref() noexcept;
208 int Width() const noexcept;
214 void Width(
int width) noexcept;
220 int Height() const noexcept;
226 void Height(
int height) noexcept;
232 int Format() const noexcept;
238 void Format(
int format) noexcept;
244 bool Hardware() const noexcept;
250 static
int FormatNone() noexcept;
256 static
int FormatGray8() noexcept;
262 static
int FormatRgba() noexcept;
295 static
AVFrame DecodeImage(const std::uint8_t* data, std::
size_t size,
296 std::string_view hint = {})
noexcept;
302 std::int64_t
Pts() const noexcept;
308 void Pts(std::int64_t pts) noexcept;
314 std::int64_t BestEffortTimestamp() const noexcept;
320 void BestEffortTimestamp(std::int64_t ts) noexcept;
326 std::int64_t DurationTicks() const noexcept;
332 void DurationTicks(std::int64_t duration) noexcept;
338 int ColorRange() const noexcept;
344 void ColorRange(
int range) noexcept;
350 int ColorSpace() const noexcept;
356 void ColorSpace(
int space) noexcept;
362 int ColorPrimaries() const noexcept;
368 void ColorPrimaries(
int primaries) noexcept;
374 int ColorTransfer() const noexcept;
380 void ColorTransfer(
int transfer) noexcept;
386 int ChromaLocation() const noexcept;
392 void ChromaLocation(
int location) noexcept;
410 int PictType() const noexcept;
416 void PictType(
int type) noexcept;
422 bool KeyFrame() const noexcept;
428 void KeyFrame(
bool key) noexcept;
434 int RepeatPict() const noexcept;
440 void RepeatPict(
int repeat) noexcept;
446 bool Interlaced() const noexcept;
453 void Interlaced(
bool interlaced,
bool top_first) noexcept;
459 bool TopFieldFirst() const noexcept;
465 int CropLeft() const noexcept;
471 int CropRight() const noexcept;
477 int CropTop() const noexcept;
483 int CropBottom() const noexcept;
492 void Crop(
int left,
int right,
int top,
int bottom) noexcept;
499 bool ApplyCropping(
int flags = 0) noexcept;
505 int PlaneCount() const noexcept;
512 int PlaneWidth(
int plane) const noexcept;
519 int PlaneHeight(
int plane) const noexcept;
525 int BitsPerComponent() const noexcept;
531 const
char* FormatName() const noexcept;
538 const uint8_t* Data(
int plane) const noexcept;
545 uint8_t* Data(
int plane) noexcept;
552 int Linesize(
int plane) const noexcept;
558 int NbSamples() const noexcept;
564 void NbSamples(
int samples) noexcept;
570 int SampleRate() const noexcept;
576 void SampleRate(
int rate) noexcept;
582 int Channels() const noexcept;
601 uint8_t** ExtendedData() noexcept;
607 const uint8_t* const* ExtendedData() const noexcept;
614 const AVFrameSideData* SideData(
int type) const noexcept;
621 AVFrameSideData* SideData(
int type) noexcept;
627 void RemoveSideData(
int type) noexcept;
633 int SideDataCount() const noexcept;
640 const AVFrameSideData* SideDataAt(
int index) const noexcept;
648 uint8_t* NewSideData(
int type,
int size) noexcept;
654 void CopyPrimaryBuffer(
StormByte::Buffer::DataType& out) const noexcept;
660 void WriteHdr10(const
StormByte::Multimedia::Property::HDR10& hdr10) noexcept;
666 void WriteSideData(const std::vector<
StormByte::Multimedia::Pipeline::SideData>& attachments) noexcept;
676 bool ScaleTo(
AVFrame& dst,
int dst_w,
int dst_h,
int flags = 0) const noexcept;
701 void Free() noexcept override;