Skip to content
Snippets Groups Projects
Commit db6c7596 authored by Silas Della Contrada's avatar Silas Della Contrada
Browse files

Fixed another error

parent 5430c83e
Branches
No related tags found
1 merge request!3Finished MMAL decoder
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
<component name="CidrRootsConfiguration">
<excludeRoots>
<file path="$PROJECT_DIR$/build-qt59" />
</excludeRoots>
</component>
<component name="ProjectPlainTextFileTypeManager">
<file url="file://$PROJECT_DIR$/AVQt/mainpage.dox" />
</component>
......
......@@ -284,20 +284,6 @@ namespace AVQt {
for (const auto &cb: d->m_cbList) {
// cbFutures.append(QtConcurrent::run([=] {
AVFrame *cbFrame = av_frame_clone(frame);
cbFrame->pts = av_rescale_q(frame->pts, d->m_timebase,
av_make_q(1, 1000000)); // Rescale pts to microseconds for easier processing
qDebug("Calling video frame callback for PTS: %ld, Timebase: %d/%d", cbFrame->pts, d->m_timebase.num,
AVFrame *cbFrame = av_frame_clone(frame);
cbFrame->pts = av_rescale_q(frame->pts, d->m_timebase,
av_make_q(1, 1000000)); // Rescale pts to microseconds for easier processing
qDebug("Calling video frame callback for PTS: %ld, Timebase: %d/%d", cbFrame->pts, d->m_timebase.num,
d->m_timebase.den);
QTime time = QTime::currentTime();
cb->onFrame(this, cbFrame, static_cast<int64_t>(av_q2d(av_inv_q(d->m_framerate)) * 1000.0));
qDebug() << "Video CB time:" << time.msecsTo(QTime::currentTime());
av_frame_unref(cbFrame);
av_frame_free(&cbFrame);
AVFrame *cbFrame = av_frame_clone(frame);
cbFrame->pts = av_rescale_q(frame->pts, d->m_timebase,
av_make_q(1, 1000000)); // Rescale pts to microseconds for easier processing
qDebug("Calling video frame callback for PTS: %lld, Timebase: %d/%d", cbFrame->pts, d->m_timebase.num,
......@@ -332,4 +318,4 @@ namespace AVQt {
}
}
}
}
}
\ No newline at end of file
......@@ -318,7 +318,7 @@ namespace AVQt {
cb->start(this);
}
}
while (!d->m_inputQueue.isEmpty()) {
if (!d->m_inputQueue.isEmpty()) {
QPair<AVFrame *, int64_t> frame;
{
QMutexLocker lock(&d->m_inputQueueMutex);
......@@ -339,12 +339,14 @@ namespace AVQt {
AVPacket *packet = av_packet_alloc();
while (true) {
ret = avcodec_receive_packet(d->m_pCodecCtx, packet);
qDebug("[AVQt::EncoderVAAPI] Got packet from encoder with PTS: %lld, timebase: %d/%d", packet->pts,
d->m_pCodecCtx->time_base.num, d->m_pCodecCtx->time_base.den);
if (ret == AVERROR_EOF || ret == AVERROR(EAGAIN)) {
break;
} else if (ret < 0) {
} else if (ret != 0) {
qFatal("%i: Could not receive packet from encoder: %s", ret, av_make_error_string(strBuf, strBufSize, ret));
}
{
if (packet->buf) {
QMutexLocker lock(&d->m_cbListMutex);
for (const auto &cb: d->m_cbList) {
AVPacket *cbPacket = av_packet_clone(packet);
......@@ -352,6 +354,7 @@ namespace AVQt {
av_packet_free(&cbPacket);
}
}
av_packet_unref(packet);
}
} else {
msleep(1);
......
......@@ -4,6 +4,7 @@
#include <QFileDialog>
#include <csignal>
#include <iostream>
#include <qglobal.h>
constexpr auto LOGFILE_LOCATION = "libAVQt.log";
......@@ -59,11 +60,11 @@ int main(int argc, char *argv[]) {
inputFile->open(QIODevice::ReadOnly);
AVQt::Demuxer demuxer(inputFile);
AVQt::AudioDecoder decoder;
AVQt::OpenALAudioOutput output;
// AVQt::AudioDecoder decoder;
// AVQt::OpenALAudioOutput output;
demuxer.registerCallback(&decoder, AVQt::IPacketSource::CB_AUDIO);
decoder.registerCallback(&output);
// demuxer.registerCallback(&decoder, AVQt::IPacketSource::CB_AUDIO);
// decoder.registerCallback(&output);
AVQt::IDecoder *videoDecoder;
#ifdef Q_OS_LINUX
......@@ -73,21 +74,21 @@ int main(int argc, char *argv[]) {
#else
#error "Unsupported OS"
#endif
AVQt::OpenGLRenderer renderer;
// AVQt::OpenGLRenderer renderer;
// AVQt::IEncoder *encoder = new AVQt::EncoderVAAPI("hevc_vaapi");
AVQt::IEncoder *encoder = new AVQt::EncoderVAAPI("hevc_vaapi");
demuxer.registerCallback(videoDecoder, AVQt::IPacketSource::CB_VIDEO);
// videoDecoder->registerCallback(encoder);
videoDecoder->registerCallback(encoder);
QFile outputFile("output.ts");
outputFile.open(QIODevice::ReadWrite | QIODevice::Truncate);
AVQt::Muxer muxer(&outputFile);
// encoder->registerCallback(&muxer, AVQt::IPacketSource::CB_VIDEO);
videoDecoder->registerCallback(&renderer);
encoder->registerCallback(&muxer, AVQt::IPacketSource::CB_VIDEO);
// videoDecoder->registerCallback(&renderer);
renderer.setMinimumSize(QSize(360, 240));
// renderer.setMinimumSize(QSize(360, 240));
// QObject::connect(&renderer, &AVQt::OpenGLRenderer::paused, [&](bool paused) {
// output.pause(nullptr, paused);
......@@ -98,7 +99,7 @@ int main(int argc, char *argv[]) {
demuxer.init();
output.syncToOutput(&renderer);
// output.syncToOutput(&renderer);
demuxer.start();
......@@ -109,4 +110,4 @@ int main(int argc, char *argv[]) {
});
return QApplication::exec();
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment