Merge branch 'node-rework' into track-redux

This commit is contained in:
itsmattkc
2023-02-19 21:36:15 -08:00
40 changed files with 170 additions and 160 deletions
+49 -44
View File
@@ -61,7 +61,7 @@ ViewerOutput::ViewerOutput(bool create_buffer_inputs, bool create_default_stream
set_default_parameters();
}
SetFlags(kDontShowInParamView);
SetFlag(kDontShowInParamView);
workarea_ = new TimelineWorkArea(this);
markers_ = new TimelineMarkerList(this);
@@ -87,56 +87,61 @@ QString ViewerOutput::Description() const
return tr("Interface between a Viewer panel and the node system.");
}
QString ViewerOutput::duration() const
QVariant ViewerOutput::data(const DataType &d) const
{
rational using_timebase;
Timecode::Display using_display = Core::instance()->GetTimecodeDisplay();
switch (d) {
case DURATION:
{
rational using_timebase;
Timecode::Display using_display = Core::instance()->GetTimecodeDisplay();
// Get first enabled streams
VideoParams video = GetFirstEnabledVideoStream();
AudioParams audio = GetFirstEnabledAudioStream();
SubtitleParams sub = GetFirstEnabledSubtitleStream();
// Get first enabled streams
VideoParams video = GetFirstEnabledVideoStream();
AudioParams audio = GetFirstEnabledAudioStream();
SubtitleParams sub = GetFirstEnabledSubtitleStream();
if (video.is_valid() && video.video_type() != VideoParams::kVideoTypeStill) {
// Prioritize video
using_timebase = video.frame_rate_as_time_base();
} else if (audio.is_valid()) {
// Use audio as a backup
// If we're showing in a timecode, we prefer showing audio in seconds instead
if (using_display == Timecode::kTimecodeDropFrame
|| using_display == Timecode::kTimecodeNonDropFrame) {
using_display = Timecode::kTimecodeSeconds;
if (video.is_valid() && video.video_type() != VideoParams::kVideoTypeStill) {
// Prioritize video
using_timebase = video.frame_rate_as_time_base();
} else if (audio.is_valid()) {
// Use audio as a backup
// If we're showing in a timecode, we prefer showing audio in seconds instead
if (using_display == Timecode::kTimecodeDropFrame
|| using_display == Timecode::kTimecodeNonDropFrame) {
using_display = Timecode::kTimecodeSeconds;
}
using_timebase = audio.sample_rate_as_time_base();
} else if (sub.is_valid()) {
using_timebase = OLIVE_CONFIG("DefaultSequenceFrameRate").value<rational>();
}
using_timebase = audio.sample_rate_as_time_base();
} else if (sub.is_valid()) {
using_timebase = OLIVE_CONFIG("DefaultSequenceFrameRate").value<rational>();
if (!using_timebase.isNull()) {
// Return time transformed to timecode
return QString::fromStdString(Timecode::time_to_timecode(GetLength(), using_timebase, using_display));
}
break;
}
case FREQUENCY_RATE:
{
VideoParams video_stream;
if (HasEnabledVideoStreams()
&& (video_stream = GetFirstEnabledVideoStream()).video_type() != VideoParams::kVideoTypeStill) {
// This is a video editor, prioritize video streams
return tr("%1 FPS").arg(video_stream.frame_rate().toDouble());
} else if (HasEnabledAudioStreams()) {
// No video streams, return audio
AudioParams audio_stream = GetFirstEnabledAudioStream();
return tr("%1 Hz").arg(audio_stream.sample_rate());
}
break;
}
default:
break;
}
if (using_timebase.isNull()) {
// No timebase, return null
return QString();
} else {
// Return time transformed to timecode
return QString::fromStdString(Timecode::time_to_timecode(GetLength(), using_timebase, using_display));
}
}
QString ViewerOutput::rate() const
{
VideoParams video_stream;
if (HasEnabledVideoStreams()
&& (video_stream = GetFirstEnabledVideoStream()).video_type() != VideoParams::kVideoTypeStill) {
// This is a video editor, prioritize video streams
return tr("%1 FPS").arg(video_stream.frame_rate().toDouble());
} else if (HasEnabledAudioStreams()) {
// No video streams, return audio
AudioParams audio_stream = GetFirstEnabledAudioStream();
return tr("%1 Hz").arg(audio_stream.sample_rate());
}
return QString();
return super::data(d);
}
bool ViewerOutput::HasEnabledVideoStreams() const
+1 -2
View File
@@ -53,8 +53,7 @@ public:
virtual QVector<CategoryID> Category() const override;
virtual QString Description() const override;
virtual QString duration() const override;
virtual QString rate() const override;
virtual QVariant data(const DataType &d) const override;
void set_default_parameters();