8#ifndef META_OCEAN_MEDIA_AVF_VIDEO_DECODER_H
9#define META_OCEAN_MEDIA_AVF_VIDEO_DECODER_H
18#include <VideoToolbox/VideoToolbox.h>
43 if (session !=
nullptr)
45 VTDecompressionSessionInvalidate(session);
164 bool initialize(
const std::string& mime,
const unsigned int width,
const unsigned int height,
const void* codecConfigData =
nullptr,
const size_t codecConfigSize = 0);
190 bool pushSample(
const void* data,
const size_t size,
const uint64_t presentationTime);
232 static bool convertAnnexBToAvcc(
const void* annexBData,
const size_t annexBSize, std::vector<uint8_t>& avccData,
const bool isCodecConfig =
false,
const std::string& mime =
"video/avc");
249 static bool isAnnexB(
const void* data,
const size_t size,
const bool isCodecConfig =
false);
281 static void decompressionOutputCallback(
void* decompressionOutputRefCon,
void* sourceFrameRefCon, OSStatus status, VTDecodeInfoFlags infoFlags, CVImageBufferRef imageBuffer, CMTime presentationTimeStamp, CMTime presentationDuration);
327 *
this = std::move(videoDecoder);
348 if (
this != &videoDecoder)
352 formatDescription_ = std::move(videoDecoder.formatDescription_);
353 decompressionSession_ = std::move(videoDecoder.decompressionSession_);
355 decodedFrames_ = std::move(videoDecoder.decodedFrames_);
357 width_ = videoDecoder.width_;
358 videoDecoder.width_ = 0u;
360 height_ = videoDecoder.height_;
361 videoDecoder.height_ = 0u;
363 isStarted_ = videoDecoder.isStarted_;
364 videoDecoder.isStarted_ =
false;
367 debugPreviousSubmittedTimestamp_ = videoDecoder.debugPreviousSubmittedTimestamp_;
370 debugPreviousDecodedTimestamp_ = videoDecoder.debugPreviousDecodedTimestamp_;
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