38 Q_ASSERT(!filePath.isEmpty());
40 const QByteArray filePathUtf8 = filePath.toUtf8();
42 std::unique_ptr<
char, AVFreeDeleter> url(
43 reinterpret_cast<
char *>(av_malloc(filePathUtf8.size() + 1)));
44 memcpy(url.get(), filePathUtf8.constData(), filePathUtf8.size() + 1);
47 auto result = avio_open2(&m_avFormatContext->pb, url.get(), AVIO_FLAG_WRITE,
nullptr,
nullptr);
49 qCDebug(qLcEncodingFormatContext)
50 <<
"opened by file path:" << url.get() <<
", result:" << result;
52 Q_ASSERT(m_avFormatContext->url ==
nullptr);
54 m_avFormatContext->url = url.release();
57 return openAVIOWithQFile(filePath);
86 if (!device->isWritable())
89 auto buffer =
static_cast<uint8_t *>(av_malloc(DefaultBufferSize));
90 m_avFormatContext->pb = avio_alloc_context(buffer, DefaultBufferSize, 1, device,
nullptr,
91 &writeQIODevice, &seekQIODevice);
92 return bool(m_avFormatContext->pb);