Skip to content

Commit

Permalink
Fix empty plots when first track is not a video track
Browse files Browse the repository at this point in the history
Signed-off-by: Maxime Gervais <[email protected]>
  • Loading branch information
g-maxime committed Dec 18, 2024
1 parent 025572d commit e5be536
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 10 deletions.
2 changes: 1 addition & 1 deletion Source/Core/CommonStats.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ class CommonStats
double* y_Max; // Maximum y by plot
double FirstTimeStamp; // Time stamp of the first frame
char** comments; // Comments per frame (utf-8)
int streamIndex; // Stream index in the container

// Status
int Type_Get();
Expand Down Expand Up @@ -184,7 +185,6 @@ class CommonStats

// Info
double Frequency;
int streamIndex;

// Memory management
size_t Data_Reserved; // Count of frames reserved in memory;
Expand Down
27 changes: 18 additions & 9 deletions Source/Core/FileInformation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1060,11 +1060,16 @@ FileInformation::FileInformation (SignalServer* signalServer, const QString &Fil
QObject::connect(m_mediaParser, &QAVPlayer::audioFrame, m_mediaParser, [this](const QAVAudioFrame &frame) {
qDebug() << "audio frame came from: " << frame.filterName() << frame.stream() << frame.stream().index();

if (frame.filterName() == astats && frame.stream().index() < Stats.size()) {
auto stat = Stats[frame.stream().index()];
if (frame.filterName() == astats) {
auto it = std::find_if(Stats.begin(), Stats.end(), [&](CommonStats* stat) {
return stat->streamIndex == frame.stream().index();
});

stat->TimeStampFromFrame(frame, stat->x_Current);
stat->StatsFromFrame(frame, 0, 0);
if(it != Stats.end()) {
auto stat = *it;
stat->TimeStampFromFrame(frame, stat->x_Current);
stat->StatsFromFrame(frame, 0, 0);
}
}
},
// Qt::QueuedConnection
Expand All @@ -1074,12 +1079,16 @@ FileInformation::FileInformation (SignalServer* signalServer, const QString &Fil
QObject::connect(m_mediaParser, &QAVPlayer::videoFrame, m_mediaParser, [this](const QAVVideoFrame &frame) {
qDebug() << "video frame came from: " << frame.filterName() << frame.stream() << frame.stream().index();

if(frame.filterName() == stats && frame.stream().index() < Stats.size()) {
auto stat = Stats[frame.stream().index()];

stat->TimeStampFromFrame(frame, stat->x_Current);
stat->StatsFromFrame(frame, frame.size().width(), frame.size().height());
if(frame.filterName() == stats) {
auto it = std::find_if(Stats.begin(), Stats.end(), [&](CommonStats* stat) {
return stat->streamIndex == frame.stream().index();
});

if(it != Stats.end()) {
auto stat = *it;
stat->TimeStampFromFrame(frame, stat->x_Current);
stat->StatsFromFrame(frame, frame.size().width(), frame.size().height());
}
} else if(frame.filterName().startsWith(panelOutputPrefix)) {
auto indexString = frame.filterName().mid(panelOutputPrefix.length());
auto index = indexString.toInt();
Expand Down

0 comments on commit e5be536

Please sign in to comment.