diff options
| author | jhurst <jhurst@cinecert.com> | 2011-07-27 21:01:49 +0000 |
|---|---|---|
| committer | jhurst <> | 2011-07-27 21:01:49 +0000 |
| commit | 23f5d8c9bae5c51cfa084a006a6f589cf97ae001 (patch) | |
| tree | 6d91ee70ecddf4b7d7f615799c94b47d5a4c98bc /src/AS_DCP_JP2K.cpp | |
| parent | 0a815c035a2cc3742507aebd059d5c042a111527 (diff) | |
high frame rate stereo
Diffstat (limited to 'src/AS_DCP_JP2K.cpp')
| -rwxr-xr-x | src/AS_DCP_JP2K.cpp | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/src/AS_DCP_JP2K.cpp b/src/AS_DCP_JP2K.cpp index b8a156e..72b975d 100755 --- a/src/AS_DCP_JP2K.cpp +++ b/src/AS_DCP_JP2K.cpp @@ -315,7 +315,12 @@ lh__Reader::OpenRead(const char* filename, EssenceType_t type) DefaultLogSink().Warn("EditRate and SampleRate do not match (%.03f, %.03f).\n", m_EditRate.Quotient(), m_SampleRate.Quotient()); - if ( m_EditRate == EditRate_24 && m_SampleRate == EditRate_48 ) + if ( m_EditRate == EditRate_24 && m_SampleRate == EditRate_48 || + m_EditRate == EditRate_25 && m_SampleRate == EditRate_50 || + m_EditRate == EditRate_30 && m_SampleRate == EditRate_60 || + m_EditRate == EditRate_48 && m_SampleRate == EditRate_96 || + m_EditRate == EditRate_50 && m_SampleRate == EditRate_100 || + m_EditRate == EditRate_60 && m_SampleRate == EditRate_120 ) { DefaultLogSink().Debug("File may contain JPEG Interop stereoscopic images.\n"); return RESULT_SFORMAT; @@ -350,6 +355,30 @@ lh__Reader::OpenRead(const char* filename, EssenceType_t type) return RESULT_FORMAT; } } + else if ( m_EditRate == EditRate_48 ) + { + if ( m_SampleRate != EditRate_96 ) + { + DefaultLogSink().Error("EditRate and SampleRate not correct for 48/96 stereoscopic essence.\n"); + return RESULT_FORMAT; + } + } + else if ( m_EditRate == EditRate_50 ) + { + if ( m_SampleRate != EditRate_100 ) + { + DefaultLogSink().Error("EditRate and SampleRate not correct for 50/100 stereoscopic essence.\n"); + return RESULT_FORMAT; + } + } + else if ( m_EditRate == EditRate_60 ) + { + if ( m_SampleRate != EditRate_120 ) + { + DefaultLogSink().Error("EditRate and SampleRate not correct for 60/120 stereoscopic essence.\n"); + return RESULT_FORMAT; + } + } else { DefaultLogSink().Error("EditRate not correct for stereoscopic essence: %d/%d.\n", @@ -1064,9 +1093,12 @@ ASDCP::JP2K::MXFSWriter::OpenWrite(const char* filename, const WriterInfo& Info, if ( PDesc.EditRate != ASDCP::EditRate_24 && PDesc.EditRate != ASDCP::EditRate_25 - && PDesc.EditRate != ASDCP::EditRate_30 ) + && PDesc.EditRate != ASDCP::EditRate_30 + && PDesc.EditRate != ASDCP::EditRate_48 + && PDesc.EditRate != ASDCP::EditRate_50 + && PDesc.EditRate != ASDCP::EditRate_60 ) { - DefaultLogSink().Error("Stereoscopic wrapping requires 24, 25 or 30 fps input streams.\n"); + DefaultLogSink().Error("Stereoscopic wrapping requires 24, 25, 30, 48, 50 or 60 fps input streams.\n"); return RESULT_FORMAT; } @@ -1090,6 +1122,15 @@ ASDCP::JP2K::MXFSWriter::OpenWrite(const char* filename, const WriterInfo& Info, else if ( PDesc.EditRate == ASDCP::EditRate_30 ) TmpPDesc.EditRate = ASDCP::EditRate_60; + else if ( PDesc.EditRate == ASDCP::EditRate_48 ) + TmpPDesc.EditRate = ASDCP::EditRate_96; + + else if ( PDesc.EditRate == ASDCP::EditRate_50 ) + TmpPDesc.EditRate = ASDCP::EditRate_100; + + else if ( PDesc.EditRate == ASDCP::EditRate_60 ) + TmpPDesc.EditRate = ASDCP::EditRate_120; + result = m_Writer->SetSourceStream(TmpPDesc, JP2K_S_PACKAGE_LABEL, PDesc.EditRate); } |
