diff options
| author | msheby <msheby@cinecert.com> | 2010-02-18 19:30:01 +0000 |
|---|---|---|
| committer | msheby <> | 2010-02-18 19:30:01 +0000 |
| commit | b8f6cd62d308e3cdb88e55f675b4883257767b79 (patch) | |
| tree | 1222833f9a98272c5352541d2ecd1484ee19b723 /src | |
| parent | 3198199840fb69e99acae9ca044481d378296e8c (diff) | |
Add VC project files.
Diffstat (limited to 'src')
| -rwxr-xr-x | src/AS_DCP.h | 4 | ||||
| -rwxr-xr-x | src/AS_DCP_JP2K.cpp | 47 | ||||
| -rwxr-xr-x | src/AS_DCP_PCM.cpp | 59 | ||||
| -rw-r--r-- | src/Makefile.am | 15 | ||||
| -rwxr-xr-x | src/PCMParserList.cpp | 2 | ||||
| -rwxr-xr-x | src/Wav.cpp | 4 | ||||
| -rwxr-xr-x | src/asdcp-test.cpp | 13 | ||||
| -rw-r--r-- | src/blackwave.cpp | 2 | ||||
| -rwxr-xr-x | src/h__Reader.cpp | 1 | ||||
| -rwxr-xr-x | src/wavesplit.cpp | 4 |
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); |
