From e97f9121bf92ef4388aa035aa6c921142a41ffd3 Mon Sep 17 00:00:00 2001 From: beveloper Date: Tue, 2 Nov 2004 01:00:39 +0000 Subject: [PATCH] Basic BDataIO binding for MatroskaParser git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9732 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../matroska/libMatroskaParser/Jamfile | 1 + .../matroska/libMatroskaParser/StreamIO.cpp | 63 +++++++++++++++++++ .../matroska/libMatroskaParser/StreamIO.h | 11 ++++ 3 files changed, 75 insertions(+) create mode 100644 src/add-ons/media/plugins/matroska/libMatroskaParser/StreamIO.cpp create mode 100644 src/add-ons/media/plugins/matroska/libMatroskaParser/StreamIO.h diff --git a/src/add-ons/media/plugins/matroska/libMatroskaParser/Jamfile b/src/add-ons/media/plugins/matroska/libMatroskaParser/Jamfile index 345541c72e..b148f8e0a5 100644 --- a/src/add-ons/media/plugins/matroska/libMatroskaParser/Jamfile +++ b/src/add-ons/media/plugins/matroska/libMatroskaParser/Jamfile @@ -4,4 +4,5 @@ UseLibraryHeaders zlib ; StaticLibrary MatroskaParser : MatroskaParser.c + StreamIO.cpp ; diff --git a/src/add-ons/media/plugins/matroska/libMatroskaParser/StreamIO.cpp b/src/add-ons/media/plugins/matroska/libMatroskaParser/StreamIO.cpp new file mode 100644 index 0000000000..693bbb1e0f --- /dev/null +++ b/src/add-ons/media/plugins/matroska/libMatroskaParser/StreamIO.cpp @@ -0,0 +1,63 @@ +#include +#include + +#include "StreamIO.h" + + +static int +stream_read(struct FileCache *cc, ulonglong pos, void *buffer, int count) +{ + return reinterpret_cast(cc)->source->ReadAt(pos, buffer, count); +} + + +static longlong +stream_scan(struct FileCache *cc,ulonglong start,unsigned signature) +{ + return 0; +} + + +static void +stream_close(struct FileCache *cc) +{ +} + + +static unsigned +stream_getsize(struct FileCache *cc) +{ + return reinterpret_cast(cc)->source->Seek(0, SEEK_END); +} + + +static const char * +stream_geterror(struct FileCache *cc) +{ + return ""; +} + + +FileCache * +CreateFileCache(BDataIO *dataio) +{ + BPositionIO *posio; + posio = dynamic_cast(dataio); + if (!posio) + return NULL; + + StreamIO *io; + io = (StreamIO *)malloc(sizeof(StreamIO)); + if (!io) + return NULL; + + io->source = posio; + io->filecache.read = &stream_read; + io->filecache.scan = &stream_scan; + io->filecache.close = &stream_close; + io->filecache.getsize = &stream_getsize; + io->filecache.geterror = &stream_geterror; + + return reinterpret_cast(io); +} + diff --git a/src/add-ons/media/plugins/matroska/libMatroskaParser/StreamIO.h b/src/add-ons/media/plugins/matroska/libMatroskaParser/StreamIO.h new file mode 100644 index 0000000000..447800d52e --- /dev/null +++ b/src/add-ons/media/plugins/matroska/libMatroskaParser/StreamIO.h @@ -0,0 +1,11 @@ + +#include + +#include "MatroskaParser.h" + +struct StreamIO { + FileCache filecache; + BPositionIO *source; +}; + +FileCache *CreateFileCache(BDataIO *dataio);