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
No related branches found
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.
Finish editing this message first!
Please register or to comment