Disambiguate export formats with different encoder settings
Disambiguate export formats with different encoder qualities, sample-formats or settings (wav/bwav). This allows to export multipe mp3 with different bitrates.
This commit is contained in:
parent
3715154a8e
commit
4b5333a721
@ -80,6 +80,7 @@ class LIBARDOUR_API ExportFormatSpecification : public ExportFormatBase {
|
|||||||
|
|
||||||
void set_format (std::shared_ptr<ExportFormat> format);
|
void set_format (std::shared_ptr<ExportFormat> format);
|
||||||
bool is_format (std::shared_ptr<ExportFormat> format) const;
|
bool is_format (std::shared_ptr<ExportFormat> format) const;
|
||||||
|
bool operator== (ExportFormatSpecification const&) const;
|
||||||
|
|
||||||
void set_name (std::string const & name) { _name = name; }
|
void set_name (std::string const & name) { _name = name; }
|
||||||
|
|
||||||
|
@ -581,6 +581,27 @@ ExportFormatSpecification::is_complete () const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ExportFormatSpecification::operator== (ExportFormatSpecification const& other) const
|
||||||
|
{
|
||||||
|
const int a = format_id() | sample_format() | endianness();
|
||||||
|
const int b = other.format_id() | other.sample_format() | other.endianness();
|
||||||
|
if (a != b) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* BWF has the same format id with wav, so we need to check this. */
|
||||||
|
if (has_broadcast_info () != other.has_broadcast_info ()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_has_codec_quality && other._has_codec_quality) {
|
||||||
|
if (_codec_quality != other._codec_quality) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ExportFormatSpecification::is_format (std::shared_ptr<ExportFormat> format) const
|
ExportFormatSpecification::is_format (std::shared_ptr<ExportFormat> format) const
|
||||||
{
|
{
|
||||||
|
@ -327,7 +327,9 @@ ExportGraphBuilder::Encoder::destroy_writer (bool delete_out_file)
|
|||||||
bool
|
bool
|
||||||
ExportGraphBuilder::Encoder::operator== (FileSpec const & other_config) const
|
ExportGraphBuilder::Encoder::operator== (FileSpec const & other_config) const
|
||||||
{
|
{
|
||||||
return get_real_format (config) == get_real_format (other_config);
|
ExportFormatSpecification const& a = *config.format;
|
||||||
|
ExportFormatSpecification const& b = *other_config.format;
|
||||||
|
return a == b;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@ -649,7 +651,21 @@ ExportGraphBuilder::SFC::operator== (FileSpec const& other_config) const
|
|||||||
ExportFormatSpecification const& a = *config.format;
|
ExportFormatSpecification const& a = *config.format;
|
||||||
ExportFormatSpecification const& b = *other_config.format;
|
ExportFormatSpecification const& b = *other_config.format;
|
||||||
|
|
||||||
bool id = a.sample_format() == b.sample_format();
|
bool id;
|
||||||
|
if (a.analyse () || b.analyse ()) {
|
||||||
|
/* Show dedicated analysis result for files with different
|
||||||
|
* quality or wav/bwav. This adds a dedicated SFC for each
|
||||||
|
* format, rater than only running dedicated Encoders as
|
||||||
|
* childs of of the same SFC.
|
||||||
|
*
|
||||||
|
* TODO: separate normalizer, and limiter into a dedicated
|
||||||
|
* graph-node, so that it can be shared.
|
||||||
|
*/
|
||||||
|
id = a == b;
|
||||||
|
} else {
|
||||||
|
/* delegate disambiguation to Encoder::operator== */
|
||||||
|
id = a.sample_format() == b.sample_format();
|
||||||
|
}
|
||||||
|
|
||||||
if (a.normalize_loudness () == b.normalize_loudness ()) {
|
if (a.normalize_loudness () == b.normalize_loudness ()) {
|
||||||
id &= a.normalize_lufs () == b.normalize_lufs ();
|
id &= a.normalize_lufs () == b.normalize_lufs ();
|
||||||
|
Loading…
Reference in New Issue
Block a user