使用 NPAPI 时,您可以控制两个函数:NPP_WriteReady和NPP_Write。这基本上是一个数据推送模型。
但是我需要实现对新文件格式的支持。我正在使用的库采用以下源模型的任何具体子类(简化的 c++ 代码):
struct compressed_source {
virtual int read(char *buf, int num_bytes) = 0;
}
在处理 FILE* (C) 或套接字 (BSD) 和其他 (s) 时,此模型很容易实现,因为它们符合拉数据模型。但是,我看不到如何从 NPAPI推送模型中填充此拉取模型。
据我了解,我无法NPP_Write
在我的具体实现中明确调用::read(char *, size_t)
.
这里的解决方案是什么?
编辑:
我不想添加太多细节以避免混淆答案。仅供参考,我想构建一个 OpenJPEG/NPAPI 插件。OpenJPEG是一个庞大的库,底层的 JPEG 2000 实现确实需要一个拉数据模型来允许对大量图像进行精细访问(例如:由于低级索引信息,100000 x 100000 图像的特定子区域)。换句话说,我真的需要一个拉数据模型插件接口。