6#define AVMediaType XAVMediaType
20 CVPixelBufferRelease(CVPixelBufferRef(
data));
28 CVImageVideoBuffer(CVImageBufferRef imageBuffer)
31 CVPixelBufferRetain(imageBuffer);
36 CVImageVideoBuffer::unmap();
37 CVPixelBufferRelease(m_buffer);
45 CVPixelBufferLockBaseAddress(
56 mapData.
data[0] =
static_cast<uchar *
>(CVPixelBufferGetBaseAddress(m_buffer));
57 mapData.
size[0] = CVPixelBufferGetDataSize(m_buffer);
66 mapData.
data[
i] =
static_cast<uchar *
>(CVPixelBufferGetBaseAddressOfPlane(m_buffer,
i));
77 CVPixelBufferUnlockBaseAddress(
84 CVImageBufferRef m_buffer;
93 AVHWFramesContext *
ctx = (AVHWFramesContext *)hwContext->data;
95 frame->hw_frames_ctx = av_buffer_ref(hwContext);
99 frame->data[3] = (uint8_t *)pixbuf;
100 CVPixelBufferRetain(pixbuf);
103 frame->format = AV_PIX_FMT_VIDEOTOOLBOX;
104 if (
frame->
width != (
int)CVPixelBufferGetWidth(pixbuf)
105 ||
frame->
height != (
int)CVPixelBufferGetHeight(pixbuf)) {
128 if (!delegate.m_accel)
131 auto avFrame =
allocHWFrame(delegate.m_accel->hwFramesContextAsBuffer(), imageBuffer);
139 const int ret = av_hwframe_transfer_data(swFrame.get(), avFrame.get(), 0);
141 qWarning() <<
"Error transferring the data to system memory:" <<
ret;
143 avFrame = std::move(swFrame);
148 avFrame->pts = delegate.startTime - *delegate.baseTime;
155 if (!(self = [super
init]))
160 frameHandler = std::move(handler);
167- (
void)captureOutput:(AVCaptureOutput *)captureOutput
168 didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
169 fromConnection:(AVCaptureConnection *)connection
177 CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
180 qWarning() <<
"Cannot get image buffer from sample buffer";
184 const CMTime
time = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);
193 qWarning() <<
"Cannot get get video format for image buffer"
194 << CVPixelBufferGetWidth(imageBuffer) <<
'x'
195 << CVPixelBufferGetHeight(imageBuffer);
201 auto frame = createHwVideoFrame(*self, imageBuffer,
format);
202 if (!
frame.isValid())
217- (
void)setVideoFormatFrameRate:(
qreal)rate
The QAbstractVideoBuffer class is an abstraction for video data. \inmodule QtMultimedia.
virtual void unmap()=0
Releases the memory mapped by the map() function.
virtual QVideoFrame::MapMode mapMode() const =0
The QVideoFrame class represents a frame of video data.
MapMode
Enumerates how a video buffer's data is mapped to system memory.
QMap< QString, QString > map
[6]
QVideoFrameFormat videoFormatForImageBuffer(CVImageBufferRef buffer, bool openGL=false)
AVFrameUPtr makeAVFrame()
std::unique_ptr< AVFrame, AVDeleter< decltype(&av_frame_free), &av_frame_free > > AVFrameUPtr
static QFFmpeg::AVFrameUPtr allocHWFrame(AVBufferRef *hwContext, const CVPixelBufferRef &pixbuf)
static QT_USE_NAMESPACE void releaseHwFrame(void *, uint8_t *data)
AVBufferRef * hwFramesContext
std::unique_ptr< QFFmpeg::HWAccel > m_accel
std::optional< qint64 > baseTime
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction function
DBusConnection * connection
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLint GLsizei GLsizei GLenum format
static QAbstractVideoBuffer::MapData mapData(const camera_frame_nv12_t &frame, unsigned char *baseAddress)
static QT_BEGIN_NAMESPACE void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharAttributes *attributes)