Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(95)

Unified Diff: core/src/fxcodec/codec/fx_codec_jbig.cpp

Issue 1380243004: Various changes to JBig2 cache: (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Addressed comment Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « core/src/fxcodec/codec/codec_int.h ('k') | core/src/fxcodec/jbig2/JBig2_BitStream.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: core/src/fxcodec/codec/fx_codec_jbig.cpp
diff --git a/core/src/fxcodec/codec/fx_codec_jbig.cpp b/core/src/fxcodec/codec/fx_codec_jbig.cpp
index 18a665784a7382cc3d70c8ce9b6ec36376ad44f5..1524b68df06c2cae1d7d6959184b3359e6df3eee 100644
--- a/core/src/fxcodec/codec/fx_codec_jbig.cpp
+++ b/core/src/fxcodec/codec/fx_codec_jbig.cpp
@@ -7,14 +7,41 @@
#include "../../../include/fxcodec/fx_codec.h"
#include "codec_int.h"
+// Holds per-document JBig2 related data.
+class JBig2DocumentContext : public CFX_DestructObject {
+ public:
+ std::list<CJBig2_CachePair>* GetSymbolDictCache() {
+ return &m_SymbolDictCache;
+ }
+
+ ~JBig2DocumentContext() {
+ for (auto it : m_SymbolDictCache) {
+ delete it.second;
+ }
+ }
+
+ private:
+ std::list<CJBig2_CachePair> m_SymbolDictCache;
+};
+
+JBig2DocumentContext* GetJBig2DocumentContext(CCodec_Jbig2Module* pModule,
+ CFX_PrivateData* pPrivateData) {
+ void* pModulePrivateData = pPrivateData->GetPrivateData(pModule);
+ if (pModulePrivateData) {
+ CFX_DestructObject* pDestructObject =
+ reinterpret_cast<CFX_DestructObject*>(pModulePrivateData);
+ return static_cast<JBig2DocumentContext*>(pDestructObject);
+ }
+ JBig2DocumentContext* pJBig2DocumentContext = new JBig2DocumentContext();
+ pPrivateData->SetPrivateObj(pModule, pJBig2DocumentContext);
+ return pJBig2DocumentContext;
+}
+
CCodec_Jbig2Context::CCodec_Jbig2Context() {
FXSYS_memset(this, 0, sizeof(CCodec_Jbig2Context));
}
CCodec_Jbig2Module::~CCodec_Jbig2Module() {
- for (auto it : m_SymbolDictCache) {
- delete it.second;
- }
}
void* CCodec_Jbig2Module::CreateJbig2Context() {
@@ -29,31 +56,31 @@ void CCodec_Jbig2Module::DestroyJbig2Context(void* pJbig2Content) {
pJbig2Content = NULL;
}
FXCODEC_STATUS CCodec_Jbig2Module::StartDecode(void* pJbig2Context,
+ CFX_PrivateData* pPrivateData,
FX_DWORD width,
FX_DWORD height,
- const uint8_t* src_buf,
- FX_DWORD src_size,
- const uint8_t* global_data,
- FX_DWORD global_size,
+ CPDF_StreamAcc* src_stream,
+ CPDF_StreamAcc* global_stream,
uint8_t* dest_buf,
FX_DWORD dest_pitch,
IFX_Pause* pPause) {
if (!pJbig2Context) {
return FXCODEC_STATUS_ERR_PARAMS;
}
+ JBig2DocumentContext* pJBig2DocumentContext =
+ GetJBig2DocumentContext(this, pPrivateData);
CCodec_Jbig2Context* m_pJbig2Context = (CCodec_Jbig2Context*)pJbig2Context;
m_pJbig2Context->m_width = width;
m_pJbig2Context->m_height = height;
- m_pJbig2Context->m_src_buf = (unsigned char*)src_buf;
- m_pJbig2Context->m_src_size = src_size;
- m_pJbig2Context->m_global_data = global_data;
- m_pJbig2Context->m_global_size = global_size;
+ m_pJbig2Context->m_pSrcStream = src_stream;
+ m_pJbig2Context->m_pGlobalStream = global_stream;
m_pJbig2Context->m_dest_buf = dest_buf;
m_pJbig2Context->m_dest_pitch = dest_pitch;
m_pJbig2Context->m_pPause = pPause;
FXSYS_memset(dest_buf, 0, height * dest_pitch);
m_pJbig2Context->m_pContext = CJBig2_Context::CreateContext(
- global_data, global_size, src_buf, src_size, &m_SymbolDictCache, pPause);
+ global_stream, src_stream, pJBig2DocumentContext->GetSymbolDictCache(),
+ pPause);
if (!m_pJbig2Context->m_pContext) {
return FXCODEC_STATUS_ERROR;
}
« no previous file with comments | « core/src/fxcodec/codec/codec_int.h ('k') | core/src/fxcodec/jbig2/JBig2_BitStream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698