summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormsheby <msheby@cinecert.com>2010-02-18 19:30:01 +0000
committermsheby <>2010-02-18 19:30:01 +0000
commitb8f6cd62d308e3cdb88e55f675b4883257767b79 (patch)
tree1222833f9a98272c5352541d2ecd1484ee19b723 /src
parent3198199840fb69e99acae9ca044481d378296e8c (diff)
Add VC project files.
Diffstat (limited to 'src')
-rwxr-xr-xsrc/AS_DCP.h4
-rwxr-xr-xsrc/AS_DCP_JP2K.cpp47
-rwxr-xr-xsrc/AS_DCP_PCM.cpp59
-rw-r--r--src/Makefile.am15
-rwxr-xr-xsrc/PCMParserList.cpp2
-rwxr-xr-xsrc/Wav.cpp4
-rwxr-xr-xsrc/asdcp-test.cpp13
-rw-r--r--src/blackwave.cpp2
-rwxr-xr-xsrc/h__Reader.cpp1
-rwxr-xr-xsrc/wavesplit.cpp4
10 files changed, 97 insertions, 54 deletions
diff --git a/src/AS_DCP.h b/src/AS_DCP.h
index f8711d1..9c9165f 100755
--- a/src/AS_DCP.h
+++ b/src/AS_DCP.h
@@ -785,7 +785,7 @@ namespace ASDCP {
struct AudioDescriptor
{
- Rational SampleRate; // rate of frame wrapping
+ Rational EditRate; // rate of frame wrapping
Rational AudioSamplingRate; // rate of audio sample
ui32_t Locked; //
ui32_t ChannelCount; // number of channels
@@ -811,7 +811,7 @@ namespace ASDCP {
// Returns number of samples per frame of data described by ADesc
inline ui32_t CalcSamplesPerFrame(const AudioDescriptor& ADesc)
{
- double tmpd = ADesc.AudioSamplingRate.Quotient() / ADesc.SampleRate.Quotient();
+ double tmpd = ADesc.AudioSamplingRate.Quotient() / ADesc.EditRate.Quotient();
return (ui32_t)ceil(tmpd);
}
diff --git a/src/AS_DCP_JP2K.cpp b/src/AS_DCP_JP2K.cpp
index 9fcd2c4..86327c2 100755
--- a/src/AS_DCP_JP2K.cpp
+++ b/src/AS_DCP_JP2K.cpp
@@ -326,9 +326,34 @@ lh__Reader::OpenRead(const char* filename, EssenceType_t type)
}
else if ( type == ASDCP::ESS_JPEG_2000_S )
{
- if ( ! ( m_EditRate == EditRate_24 && m_SampleRate == EditRate_48 ) )
+ if ( m_EditRate == EditRate_24 )
{
- DefaultLogSink().Error("EditRate and SampleRate not correct for 24/48 stereoscopic essence.\n");
+ if ( m_SampleRate != EditRate_48 )
+ {
+ DefaultLogSink().Error("EditRate and SampleRate not correct for 24/48 stereoscopic essence.\n");
+ return RESULT_FORMAT;
+ }
+ }
+ else if ( m_EditRate == EditRate_25 )
+ {
+ if ( m_SampleRate != EditRate_50 )
+ {
+ DefaultLogSink().Error("EditRate and SampleRate not correct for 25/50 stereoscopic essence.\n");
+ return RESULT_FORMAT;
+ }
+ }
+ else if ( m_EditRate == EditRate_30 )
+ {
+ if ( m_SampleRate != EditRate_60 )
+ {
+ DefaultLogSink().Error("EditRate and SampleRate not correct for 30/60 stereoscopic essence.\n");
+ return RESULT_FORMAT;
+ }
+ }
+ else
+ {
+ DefaultLogSink().Error("EditRate not correct for stereoscopic essence: %d/%d.\n",
+ m_EditRate.Numerator, m_EditRate.Denominator);
return RESULT_FORMAT;
}
}
@@ -1006,9 +1031,11 @@ ASDCP::JP2K::MXFSWriter::OpenWrite(const char* filename, const WriterInfo& Info,
else
m_Writer = new h__SWriter(DefaultInteropDict());
- if ( PDesc.EditRate != ASDCP::EditRate_24 )
+ if ( PDesc.EditRate != ASDCP::EditRate_24
+ && PDesc.EditRate != ASDCP::EditRate_25
+ && PDesc.EditRate != ASDCP::EditRate_30 )
{
- DefaultLogSink().Error("Stereoscopic wrapping requires 24 fps input streams.\n");
+ DefaultLogSink().Error("Stereoscopic wrapping requires 24, 25 or 30 fps input streams.\n");
return RESULT_FORMAT;
}
@@ -1022,9 +1049,17 @@ ASDCP::JP2K::MXFSWriter::OpenWrite(const char* filename, const WriterInfo& Info,
if ( ASDCP_SUCCESS(result) )
{
PictureDescriptor TmpPDesc = PDesc;
- TmpPDesc.EditRate = ASDCP::EditRate_48;
- result = m_Writer->SetSourceStream(TmpPDesc, JP2K_S_PACKAGE_LABEL, ASDCP::EditRate_24);
+ if ( PDesc.EditRate == ASDCP::EditRate_24 )
+ TmpPDesc.EditRate = ASDCP::EditRate_48;
+
+ else if ( PDesc.EditRate == ASDCP::EditRate_25 )
+ TmpPDesc.EditRate = ASDCP::EditRate_50;
+
+ else if ( PDesc.EditRate == ASDCP::EditRate_30 )
+ TmpPDesc.EditRate = ASDCP::EditRate_60;
+
+ result = m_Writer->SetSourceStream(TmpPDesc, JP2K_S_PACKAGE_LABEL, PDesc.EditRate);
}
if ( ASDCP_FAILURE(result) )
diff --git a/src/AS_DCP_PCM.cpp b/src/AS_DCP_PCM.cpp
index 073a809..9795c9d 100755
--- a/src/AS_DCP_PCM.cpp
+++ b/src/AS_DCP_PCM.cpp
@@ -53,7 +53,7 @@ Result_t
PCM_ADesc_to_MD(PCM::AudioDescriptor& ADesc, MXF::WaveAudioDescriptor* ADescObj)
{
ASDCP_TEST_NULL(ADescObj);
- ADescObj->SampleRate = ADesc.SampleRate;
+ ADescObj->SampleRate = ADesc.EditRate;
ADescObj->AudioSamplingRate = ADesc.AudioSamplingRate;
ADescObj->Locked = ADesc.Locked;
ADescObj->ChannelCount = ADesc.ChannelCount;
@@ -88,7 +88,7 @@ ASDCP::Result_t
MD_to_PCM_ADesc(MXF::WaveAudioDescriptor* ADescObj, PCM::AudioDescriptor& ADesc)
{
ASDCP_TEST_NULL(ADescObj);
- ADesc.SampleRate = ADescObj->SampleRate;
+ ADesc.EditRate = ADescObj->SampleRate;
ADesc.AudioSamplingRate = ADescObj->AudioSamplingRate;
ADesc.Locked = ADescObj->Locked;
ADesc.ChannelCount = ADescObj->ChannelCount;
@@ -120,7 +120,7 @@ MD_to_PCM_ADesc(MXF::WaveAudioDescriptor* ADescObj, PCM::AudioDescriptor& ADesc)
std::ostream&
ASDCP::PCM::operator << (std::ostream& strm, const AudioDescriptor& ADesc)
{
- strm << " SampleRate: " << ADesc.SampleRate.Numerator << "/" << ADesc.SampleRate.Denominator << std::endl;
+ strm << " SampleRate: " << ADesc.EditRate.Numerator << "/" << ADesc.EditRate.Denominator << std::endl;
strm << " AudioSamplingRate: " << ADesc.AudioSamplingRate.Numerator << "/" << ADesc.AudioSamplingRate.Denominator << std::endl;
strm << " Locked: " << (unsigned) ADesc.Locked << std::endl;
strm << " ChannelCount: " << (unsigned) ADesc.ChannelCount << std::endl;
@@ -141,7 +141,7 @@ ASDCP::PCM::AudioDescriptorDump(const AudioDescriptor& ADesc, FILE* stream)
stream = stderr;
fprintf(stream, "\
- SampleRate: %d/%d\n\
+ EditRate: %d/%d\n\
AudioSamplingRate: %d/%d\n\
Locked: %u\n\
ChannelCount: %u\n\
@@ -150,8 +150,8 @@ ASDCP::PCM::AudioDescriptorDump(const AudioDescriptor& ADesc, FILE* stream)
AvgBps: %u\n\
LinkedTrackID: %u\n\
ContainerDuration: %u\n",
- ADesc.SampleRate.Numerator ,ADesc.SampleRate.Denominator,
- ADesc.AudioSamplingRate.Numerator ,ADesc.AudioSamplingRate.Denominator,
+ ADesc.EditRate.Numerator, ADesc.EditRate.Denominator,
+ ADesc.AudioSamplingRate.Numerator, ADesc.AudioSamplingRate.Denominator,
ADesc.Locked,
ADesc.ChannelCount,
ADesc.QuantizationBits,
@@ -225,23 +225,22 @@ ASDCP::PCM::MXFReader::h__Reader::OpenRead(const char* filename)
// check for sample/frame rate sanity
if ( ASDCP_SUCCESS(result)
- && m_ADesc.SampleRate != EditRate_24
- && m_ADesc.SampleRate != EditRate_25
- && m_ADesc.SampleRate != EditRate_30
- && m_ADesc.SampleRate != EditRate_48
- && m_ADesc.SampleRate != EditRate_50
- && m_ADesc.SampleRate != EditRate_60
- && m_ADesc.SampleRate != EditRate_23_98 )
+ && m_ADesc.EditRate != EditRate_24
+ && m_ADesc.EditRate != EditRate_25
+ && m_ADesc.EditRate != EditRate_30
+ && m_ADesc.EditRate != EditRate_48
+ && m_ADesc.EditRate != EditRate_50
+ && m_ADesc.EditRate != EditRate_60
+ && m_ADesc.EditRate != EditRate_23_98 )
{
- DefaultLogSink().Error("PCM file SampleRate is not 24/1, 48/1 or 24000/1001: %08x/%08x\n", // lu
- m_ADesc.SampleRate.Numerator, m_ADesc.SampleRate.Denominator);
+ DefaultLogSink().Error("PCM file EditRate is not a supported value: %d/%d\n", // lu
+ m_ADesc.EditRate.Numerator, m_ADesc.EditRate.Denominator);
// oh, they gave us the audio sampling rate instead, assume 24/1
- if ( m_ADesc.SampleRate == SampleRate_48k )
+ if ( m_ADesc.EditRate == SampleRate_48k )
{
- DefaultLogSink().Warn("adjusting SampleRate to 24/1\n");
- m_ADesc.SampleRate.Numerator = 24;
- m_ADesc.SampleRate.Denominator = 1;
+ DefaultLogSink().Warn("adjusting EditRate to 24/1\n");
+ m_ADesc.EditRate = EditRate_24;
}
else
{
@@ -429,16 +428,16 @@ ASDCP::PCM::MXFWriter::h__Writer::SetSourceStream(const AudioDescriptor& ADesc)
if ( ! m_State.Test_INIT() )
return RESULT_STATE;
- if ( ADesc.SampleRate != EditRate_24
- && ADesc.SampleRate != EditRate_25
- && ADesc.SampleRate != EditRate_30
- && ADesc.SampleRate != EditRate_48
- && ADesc.SampleRate != EditRate_50
- && ADesc.SampleRate != EditRate_60
- && ADesc.SampleRate != EditRate_23_98 )
+ if ( ADesc.EditRate != EditRate_24
+ && ADesc.EditRate != EditRate_25
+ && ADesc.EditRate != EditRate_30
+ && ADesc.EditRate != EditRate_48
+ && ADesc.EditRate != EditRate_50
+ && ADesc.EditRate != EditRate_60
+ && ADesc.EditRate != EditRate_23_98 )
{
- DefaultLogSink().Error("AudioDescriptor.SampleRate is not 24/1, 48/1 or 24000/1001: %d/%d\n",
- ADesc.SampleRate.Numerator, ADesc.SampleRate.Denominator);
+ DefaultLogSink().Error("AudioDescriptor.EditRate is not a supported value: %d/%d\n",
+ ADesc.EditRate.Numerator, ADesc.EditRate.Denominator);
return RESULT_RAW_FORMAT;
}
@@ -451,12 +450,14 @@ ASDCP::PCM::MXFWriter::h__Writer::SetSourceStream(const AudioDescriptor& ADesc)
assert(m_Dict);
m_ADesc = ADesc;
+ ui32_t TCFrameRate = ( ADesc.EditRate == EditRate_23_98 ) ? 24 : m_ADesc.EditRate.Numerator;
+
Result_t result = PCM_ADesc_to_MD(m_ADesc, (WaveAudioDescriptor*)m_EssenceDescriptor);
if ( ASDCP_SUCCESS(result) )
result = WriteMXFHeader(PCM_PACKAGE_LABEL, UL(m_Dict->ul(MDD_WAVWrapping)),
SOUND_DEF_LABEL, UL(m_Dict->ul(MDD_SoundDataDef)),
- m_ADesc.SampleRate, 24 /* TCFrameRate */, calc_CBR_frame_size(m_Info, m_ADesc));
+ m_ADesc.EditRate, TCFrameRate, calc_CBR_frame_size(m_Info, m_ADesc));
if ( ASDCP_SUCCESS(result) )
{
diff --git a/src/Makefile.am b/src/Makefile.am
index a4a4134..336867e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -85,11 +85,14 @@ libasdcp_la_CPPFLAGS = -DASDCP_PLATFORM=\"@host@\"
if PYTHON_USE
lib_LTLIBRARIES += libpyasdcp.la
-nodist_libpyasdcp_la_SOURCES = asdcp_python.cpp asdcp_python.h \
- asdcp_python_writerinfo.h asdcp_python_misc.cpp \
- asdcp_python_reader.cpp asdcp_python_writer.cpp asdcp_wrappers.h \
- asdcp_python_descriptor.cpp \
- kumu_python.cpp kumu_python.h
+nodist_libpyasdcp_la_SOURCES = \
+ kumu_python.cpp kumu_python.h \
+ asdcp_python.cpp asdcp_python.h \
+ asdcp_python_descriptor.cpp \
+ asdcp_python_misc.cpp asdcp_python_writerinfo.h \
+ asdcp_wrappers.h asdcp_python_mxf.cpp
+
+# asdcp_python_reader.cpp asdcp_python_writer.cpp
libpyasdcp_la_CPPFLAGS = @PYTHON_CPPFLAGS@
libpyasdcp_la_LDFLAGS = @PYTHON_LSPEC@
@@ -105,7 +108,7 @@ kumu_la_CPPFLAGS = @PYTHON_CPPFLAGS@
kumu_la_LDFLAGS = @PYTHON_LSPEC@ -avoid-version -module
kumu_la_LIBADD = libpyasdcp.la
-nodist_asdcp_la_SOURCES = pyasdcp.cpp asdcp_python.h asdcp_wrappers.h
+nodist_asdcp_la_SOURCES = pyasdcp.cpp kumu_python.h asdcp_python.h asdcp_wrappers.h
asdcp_la_CPPFLAGS = @PYTHON_CPPFLAGS@
asdcp_la_LDFLAGS = @PYTHON_LSPEC@ -avoid-version -module
asdcp_la_LIBADD = libpyasdcp.la
diff --git a/src/PCMParserList.cpp b/src/PCMParserList.cpp
index 09bd44c..b7c2e59 100755
--- a/src/PCMParserList.cpp
+++ b/src/PCMParserList.cpp
@@ -58,7 +58,7 @@ ASDCP::ParserInstance::OpenRead(const char* filename, Rational& PictureRate)
if ( ASDCP_SUCCESS(result) )
{
- ADesc.SampleRate = PictureRate;
+ ADesc.EditRate = PictureRate;
m_SampleSize = PCM::CalcSampleSize(ADesc);
result = FB.Capacity(PCM::CalcFrameBufferSize(ADesc));
}
diff --git a/src/Wav.cpp b/src/Wav.cpp
index 27a57d8..7275ab9 100755
--- a/src/Wav.cpp
+++ b/src/Wav.cpp
@@ -54,7 +54,7 @@ ASDCP::Wav::SimpleWaveHeader::SimpleWaveHeader(ASDCP::PCM::AudioDescriptor& ADes
void
ASDCP::Wav::SimpleWaveHeader::FillADesc(ASDCP::PCM::AudioDescriptor& ADesc, ASDCP::Rational PictureRate) const
{
- ADesc.SampleRate = PictureRate;
+ ADesc.EditRate = PictureRate;
ADesc.LinkedTrackID = 0;
ADesc.Locked = 0;
@@ -260,7 +260,7 @@ extended_to_Rat(const byte_t* buf)
void
ASDCP::AIFF::SimpleAIFFHeader::FillADesc(ASDCP::PCM::AudioDescriptor& ADesc, ASDCP::Rational PictureRate) const
{
- ADesc.SampleRate = PictureRate;
+ ADesc.EditRate = PictureRate;
ADesc.ChannelCount = numChannels;
ADesc.AudioSamplingRate = extended_to_Rat(sampleRate);
diff --git a/src/asdcp-test.cpp b/src/asdcp-test.cpp
index 04498c6..2af20f2 100755
--- a/src/asdcp-test.cpp
+++ b/src/asdcp-test.cpp
@@ -1215,7 +1215,7 @@ write_PCM_file(CommandOptions& Options)
{
Parser.FillAudioDescriptor(ADesc);
- ADesc.SampleRate = PictureRate;
+ ADesc.EditRate = PictureRate;
FrameBuffer.Capacity(PCM::CalcFrameBufferSize(ADesc));
ADesc.ChannelFormat = Options.channel_fmt;
@@ -1345,10 +1345,13 @@ read_PCM_file(CommandOptions& Options)
{
Reader.FillAudioDescriptor(ADesc);
- if ( ADesc.SampleRate != EditRate_23_98
- && ADesc.SampleRate != EditRate_24
- && ADesc.SampleRate != EditRate_48 )
- ADesc.SampleRate = Options.PictureRate();
+ if ( ADesc.EditRate != EditRate_23_98
+ && ADesc.EditRate != EditRate_24
+ && ADesc.EditRate != EditRate_25
+ && ADesc.EditRate != EditRate_48
+ && ADesc.EditRate != EditRate_50
+ && ADesc.EditRate != EditRate_60 )
+ ADesc.EditRate = Options.PictureRate();
FrameBuffer.Capacity(PCM::CalcFrameBufferSize(ADesc));
diff --git a/src/blackwave.cpp b/src/blackwave.cpp
index a049bee..3e75c3e 100644
--- a/src/blackwave.cpp
+++ b/src/blackwave.cpp
@@ -152,7 +152,7 @@ make_black_wav_file(CommandOptions& Options)
PCM::FrameBuffer FrameBuffer;
PCM::AudioDescriptor ADesc;
- ADesc.SampleRate = Rational(24,1);
+ ADesc.EditRate = Rational(24,1);
ADesc.AudioSamplingRate = ASDCP::SampleRate_48k;
ADesc.Locked = 0;
ADesc.ChannelCount = 1;
diff --git a/src/h__Reader.cpp b/src/h__Reader.cpp
index 6d74b9d..a463ae1 100755
--- a/src/h__Reader.cpp
+++ b/src/h__Reader.cpp
@@ -345,6 +345,7 @@ ASDCP::h__Reader::ReadEKLVPacket(ui32_t FrameNum, ui32_t SequenceNum, ASDCP::Fra
memcpy(FrameBuf.Data(), ess_p, tmp_len);
FrameBuf.Size(tmp_len);
+ FrameBuf.FrameNumber(FrameNum);
FrameBuf.SourceLength(SourceLength);
FrameBuf.PlaintextOffset(PlaintextOffset);
}
diff --git a/src/wavesplit.cpp b/src/wavesplit.cpp
index 90e7e93..f3dd3fd 100755
--- a/src/wavesplit.cpp
+++ b/src/wavesplit.cpp
@@ -200,7 +200,7 @@ wav_file_info(CommandOptions& Options)
if ( ASDCP_SUCCESS(result) )
{
Parser.FillAudioDescriptor(ADesc);
- ADesc.SampleRate = PictureRate;
+ ADesc.EditRate = PictureRate;
fprintf(stderr, "48Khz PCM Audio, %s fps (%u spf)\n", "24",
PCM::CalcSamplesPerFrame(ADesc));
fputs("AudioDescriptor:\n", stderr);
@@ -253,7 +253,7 @@ split_wav_file(CommandOptions& Options)
{
Parser.FillAudioDescriptor(ADesc);
- ADesc.SampleRate = PictureRate;
+ ADesc.EditRate = PictureRate;
ui32_t fb_size = PCM::CalcFrameBufferSize(ADesc);
assert((fb_size % 2) == 0);
FrameBuffer.Capacity(fb_size);