|
Rex Dieter |
1dd89f2 |
diff -up libpgf/src/Decoder.cpp.r148 libpgf/src/Decoder.cpp
|
|
Rex Dieter |
1dd89f2 |
--- libpgf/src/Decoder.cpp.r148 2015-08-10 10:46:21.632558343 -0500
|
|
Rex Dieter |
1dd89f2 |
+++ libpgf/src/Decoder.cpp 2015-08-10 10:46:21.945565702 -0500
|
|
Rex Dieter |
1dd89f2 |
@@ -87,29 +87,6 @@ CDecoder::CDecoder(CPGFStream* stream, P
|
|
Rex Dieter |
1dd89f2 |
|
|
Rex Dieter |
1dd89f2 |
int count, expected;
|
|
Rex Dieter |
1dd89f2 |
|
|
Rex Dieter |
1dd89f2 |
- // set number of threads
|
|
Rex Dieter |
1dd89f2 |
-#ifdef LIBPGF_USE_OPENMP
|
|
Rex Dieter |
1dd89f2 |
- m_macroBlockLen = omp_get_num_procs();
|
|
Rex Dieter |
1dd89f2 |
-#else
|
|
Rex Dieter |
1dd89f2 |
- m_macroBlockLen = 1;
|
|
Rex Dieter |
1dd89f2 |
-#endif
|
|
Rex Dieter |
1dd89f2 |
-
|
|
Rex Dieter |
1dd89f2 |
- if (useOMP && m_macroBlockLen > 1) {
|
|
Rex Dieter |
1dd89f2 |
-#ifdef LIBPGF_USE_OPENMP
|
|
Rex Dieter |
1dd89f2 |
- omp_set_num_threads(m_macroBlockLen);
|
|
Rex Dieter |
1dd89f2 |
-#endif
|
|
Rex Dieter |
1dd89f2 |
-
|
|
Rex Dieter |
1dd89f2 |
- // create macro block array
|
|
Rex Dieter |
1dd89f2 |
- m_macroBlocks = new(std::nothrow) CMacroBlock*[m_macroBlockLen];
|
|
Rex Dieter |
1dd89f2 |
- if (!m_macroBlocks) ReturnWithError(InsufficientMemory);
|
|
Rex Dieter |
1dd89f2 |
- for (int i=0; i < m_macroBlockLen; i++) m_macroBlocks[i] = new CMacroBlock();
|
|
Rex Dieter |
1dd89f2 |
- m_currentBlock = m_macroBlocks[m_currentBlockIndex];
|
|
Rex Dieter |
1dd89f2 |
- } else {
|
|
Rex Dieter |
1dd89f2 |
- m_macroBlocks = 0;
|
|
Rex Dieter |
1dd89f2 |
- m_macroBlockLen = 1; // there is only one macro block
|
|
Rex Dieter |
1dd89f2 |
- m_currentBlock = new CMacroBlock();
|
|
Rex Dieter |
1dd89f2 |
- }
|
|
Rex Dieter |
1dd89f2 |
-
|
|
Rex Dieter |
1dd89f2 |
// store current stream position
|
|
Rex Dieter |
1dd89f2 |
m_startPos = m_stream->GetPos();
|
|
Rex Dieter |
1dd89f2 |
|
|
Rex Dieter |
1dd89f2 |
@@ -209,6 +186,30 @@ CDecoder::CDecoder(CPGFStream* stream, P
|
|
Rex Dieter |
1dd89f2 |
|
|
Rex Dieter |
1dd89f2 |
// store current stream position
|
|
Rex Dieter |
1dd89f2 |
m_encodedHeaderLength = UINT32(m_stream->GetPos() - m_startPos);
|
|
Rex Dieter |
1dd89f2 |
+
|
|
Rex Dieter |
1dd89f2 |
+ // set number of threads
|
|
Rex Dieter |
1dd89f2 |
+#ifdef LIBPGF_USE_OPENMP
|
|
Rex Dieter |
1dd89f2 |
+ m_macroBlockLen = omp_get_num_procs();
|
|
Rex Dieter |
1dd89f2 |
+#else
|
|
Rex Dieter |
1dd89f2 |
+ m_macroBlockLen = 1;
|
|
Rex Dieter |
1dd89f2 |
+#endif
|
|
Rex Dieter |
1dd89f2 |
+
|
|
Rex Dieter |
1dd89f2 |
+ if (useOMP && m_macroBlockLen > 1) {
|
|
Rex Dieter |
1dd89f2 |
+#ifdef LIBPGF_USE_OPENMP
|
|
Rex Dieter |
1dd89f2 |
+ omp_set_num_threads(m_macroBlockLen);
|
|
Rex Dieter |
1dd89f2 |
+#endif
|
|
Rex Dieter |
1dd89f2 |
+
|
|
Rex Dieter |
1dd89f2 |
+ // create macro block array
|
|
Rex Dieter |
1dd89f2 |
+ m_macroBlocks = new(std::nothrow) CMacroBlock*[m_macroBlockLen];
|
|
Rex Dieter |
1dd89f2 |
+ if (!m_macroBlocks) ReturnWithError(InsufficientMemory);
|
|
Rex Dieter |
1dd89f2 |
+ for (int i = 0; i < m_macroBlockLen; i++) m_macroBlocks[i] = new CMacroBlock();
|
|
Rex Dieter |
1dd89f2 |
+ m_currentBlock = m_macroBlocks[m_currentBlockIndex];
|
|
Rex Dieter |
1dd89f2 |
+ } else {
|
|
Rex Dieter |
1dd89f2 |
+ m_macroBlocks = 0;
|
|
Rex Dieter |
1dd89f2 |
+ m_macroBlockLen = 1; // there is only one macro block
|
|
Rex Dieter |
1dd89f2 |
+ m_currentBlock = new(std::nothrow) CMacroBlock();
|
|
Rex Dieter |
1dd89f2 |
+ if (!m_currentBlock) ReturnWithError(InsufficientMemory);
|
|
Rex Dieter |
1dd89f2 |
+ }
|
|
Rex Dieter |
1dd89f2 |
}
|
|
Rex Dieter |
1dd89f2 |
|
|
Rex Dieter |
1dd89f2 |
/////////////////////////////////////////////////////////////////////
|