X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fsound_asset.cc;h=e3adff45d86dca0a432ef40555d8942111877995;hb=943af65e7833ef96bcfcfa957f1703d3a425c9ff;hp=ffafe46c316945bd5ffbca88b62f9ed9641b6627;hpb=a68b877d96a9e9f366f27752e071bc0e895e9dc7;p=libdcp.git
diff --git a/src/sound_asset.cc b/src/sound_asset.cc
index ffafe46c..e3adff45 100644
--- a/src/sound_asset.cc
+++ b/src/sound_asset.cc
@@ -16,6 +16,19 @@
You should have received a copy of the GNU General Public License
along with libdcp. If not, see .
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of portions of this program with the
+ OpenSSL library under certain conditions as described in each
+ individual source file, and distribute linked combinations
+ including the two.
+
+ You must obey the GNU General Public License in all respects
+ for all of the code used other than OpenSSL. If you modify
+ file(s) with this exception, you may extend this exception to your
+ version of the file(s), but you are not obligated to do so. If you
+ do not wish to do so, delete this exception statement from your
+ version. If you delete this exception statement from all source
+ files in the program, then also delete it here.
*/
/** @file src/sound_mxf.cc
@@ -29,17 +42,14 @@
#include "sound_asset_writer.h"
#include "sound_asset_reader.h"
#include "compose.hpp"
-#include "KM_fileio.h"
-#include "AS_DCP.h"
#include "dcp_assert.h"
+#include
+#include
#include
#include
-#include
#include
using std::string;
-using std::stringstream;
-using std::ostream;
using std::vector;
using std::list;
using boost::shared_ptr;
@@ -107,21 +117,48 @@ SoundAsset::equals (shared_ptr other, EqualityOptions opt, NoteHand
boost::throw_exception (DCPReadError ("could not read audio MXF information"));
}
- if (
- desc_A.EditRate != desc_B.EditRate ||
- desc_A.AudioSamplingRate != desc_B.AudioSamplingRate ||
- desc_A.Locked != desc_B.Locked ||
- desc_A.ChannelCount != desc_B.ChannelCount ||
- desc_A.QuantizationBits != desc_B.QuantizationBits ||
- desc_A.BlockAlign != desc_B.BlockAlign ||
- desc_A.AvgBps != desc_B.AvgBps ||
- desc_A.LinkedTrackID != desc_B.LinkedTrackID ||
- desc_A.ContainerDuration != desc_B.ContainerDuration
-// desc_A.ChannelFormat != desc_B.ChannelFormat ||
- ) {
-
- note (DCP_ERROR, "audio MXF picture descriptors differ");
+ if (desc_A.EditRate != desc_B.EditRate) {
+ note (
+ DCP_ERROR,
+ String::compose (
+ "audio edit rates differ: %1/%2 cf %3/%4",
+ desc_A.EditRate.Numerator, desc_A.EditRate.Denominator, desc_B.EditRate.Numerator, desc_B.EditRate.Denominator
+ )
+ );
return false;
+ } else if (desc_A.AudioSamplingRate != desc_B.AudioSamplingRate) {
+ note (
+ DCP_ERROR,
+ String::compose (
+ "audio sampling rates differ: %1 cf %2",
+ desc_A.AudioSamplingRate.Numerator, desc_A.AudioSamplingRate.Denominator,
+ desc_B.AudioSamplingRate.Numerator, desc_B.AudioSamplingRate.Numerator
+ )
+ );
+ return false;
+ } else if (desc_A.Locked != desc_B.Locked) {
+ note (DCP_ERROR, String::compose ("audio locked flags differ: %1 cf %2", desc_A.Locked, desc_B.Locked));
+ return false;
+ } else if (desc_A.ChannelCount != desc_B.ChannelCount) {
+ note (DCP_ERROR, String::compose ("audio channel counts differ: %1 cf %2", desc_A.ChannelCount, desc_B.ChannelCount));
+ return false;
+ } else if (desc_A.QuantizationBits != desc_B.QuantizationBits) {
+ note (DCP_ERROR, String::compose ("audio bits per sample differ: %1 cf %2", desc_A.QuantizationBits, desc_B.QuantizationBits));
+ return false;
+ } else if (desc_A.BlockAlign != desc_B.BlockAlign) {
+ note (DCP_ERROR, String::compose ("audio bytes per sample differ: %1 cf %2", desc_A.BlockAlign, desc_B.BlockAlign));
+ return false;
+ } else if (desc_A.AvgBps != desc_B.AvgBps) {
+ note (DCP_ERROR, String::compose ("audio average bps differ: %1 cf %2", desc_A.AvgBps, desc_B.AvgBps));
+ return false;
+ } else if (desc_A.LinkedTrackID != desc_B.LinkedTrackID) {
+ note (DCP_ERROR, String::compose ("audio linked track IDs differ: %1 cf %2", desc_A.LinkedTrackID, desc_B.LinkedTrackID));
+ return false;
+ } else if (desc_A.ContainerDuration != desc_B.ContainerDuration) {
+ note (DCP_ERROR, String::compose ("audio container durations differ: %1 cf %2", desc_A.ContainerDuration, desc_B.ContainerDuration));
+ return false;
+ } else if (desc_A.ChannelFormat != desc_B.ChannelFormat) {
+ /* XXX */
}
shared_ptr other_sound = dynamic_pointer_cast (other);