summaryrefslogtreecommitdiff
path: root/src/AS_DCP_JP2K.cpp
diff options
context:
space:
mode:
authorjhurst <jhurst@cinecert.com>2011-07-27 21:01:49 +0000
committerjhurst <>2011-07-27 21:01:49 +0000
commit23f5d8c9bae5c51cfa084a006a6f589cf97ae001 (patch)
tree6d91ee70ecddf4b7d7f615799c94b47d5a4c98bc /src/AS_DCP_JP2K.cpp
parent0a815c035a2cc3742507aebd059d5c042a111527 (diff)
high frame rate stereo
Diffstat (limited to 'src/AS_DCP_JP2K.cpp')
-rwxr-xr-xsrc/AS_DCP_JP2K.cpp47
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);
}