8#ifndef META_OCEAN_MEDIA_AVF_VIDEO_ENCODER_H
9#define META_OCEAN_MEDIA_AVF_VIDEO_ENCODER_H
18#include <VideoToolbox/VideoToolbox.h>
151 inline const std::vector<uint8_t>&
data()
const;
194 inline explicit operator bool()
const;
286 bool initialize(
const unsigned int width,
const unsigned int height,
const std::string& mime =
"video/avc",
const double frameRate = 30.0,
const unsigned int bitrate =
bitrateMbps2_,
const int iFrameInterval = 1);
374 static void compressionOutputCallback(
void* outputCallbackRefCon,
void* sourceFrameRefCon, OSStatus status, VTEncodeInfoFlags infoFlags, CMSampleBufferRef sampleBuffer);
408 data_(std::move(data)),
409 presentationTime_(presentationTime),
410 bufferFlags_(bufferFlags)
417 *
this = std::move(sample);
422 return !data_.empty();
432 return presentationTime_;
459 data_ = std::move(sample.data_);
460 presentationTime_ = sample.presentationTime_;
461 bufferFlags_ = sample.bufferFlags_;
470inline VideoEncoder::Sample::operator bool()
const
477 if (session !=
nullptr)
479 VTCompressionSessionInvalidate(session);
486 *
this = std::move(videoEncoder);
507 if (
this != &videoEncoder)
515 width_ = videoEncoder.width_;
516 videoEncoder.width_ = 0u;
518 height_ = videoEncoder.height_;
519 videoEncoder.height_ = 0u;
522 videoEncoder.isStarted_ =
false;
This class implements Ocean's image class.
Definition Frame.h:1879
This class implements a recursive lock object.
Definition Lock.h:31
static constexpr T minValue()
Returns the min scalar value.
Definition Numeric.h:3259
This class implements a scoped lock object for recursive lock objects.
Definition Lock.h:147
bool isValid() const
Returns whether this scoped object holds a valid object.
Definition ScopedObject.h:460
The namespace covering the entire Ocean framework.
Definition Accessor.h:15