aboutsummaryrefslogtreecommitdiff
path: root/Src/nsavi/file_avi_reader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Src/nsavi/file_avi_reader.cpp')
-rw-r--r--Src/nsavi/file_avi_reader.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/Src/nsavi/file_avi_reader.cpp b/Src/nsavi/file_avi_reader.cpp
new file mode 100644
index 00000000..f6543a42
--- /dev/null
+++ b/Src/nsavi/file_avi_reader.cpp
@@ -0,0 +1,43 @@
+#include "file_avi_reader.h"
+
+AVIReaderFILE::AVIReaderFILE(const wchar_t *filename)
+{
+ f = _wfopen(filename, L"rb");
+}
+
+int AVIReaderFILE::Read(void *buffer, uint32_t read_length, uint32_t *bytes_read)
+{
+ *bytes_read = fread(buffer, 1, read_length, f);
+ return nsavi::READ_OK;
+}
+
+ int AVIReaderFILE::Peek(void *buffer, uint32_t read_length, uint32_t *bytes_read)
+ {
+ *bytes_read = fread(buffer, 1, read_length, f);
+ fseek(f, -read_length, SEEK_CUR);
+ return nsavi::READ_OK;
+ }
+
+ int AVIReaderFILE::Seek(uint64_t position)
+ {
+fsetpos(f, (const fpos_t *)&position);
+return nsavi::READ_OK;
+ }
+
+ uint64_t AVIReaderFILE::Tell()
+ {
+ uint64_t pos;
+ fgetpos(f, (fpos_t *)&pos);
+ return pos;
+ }
+
+ int AVIReaderFILE::Skip(uint32_t skip_bytes)
+ {
+ fseek(f, skip_bytes, SEEK_CUR);
+ return nsavi::READ_OK;
+ }
+
+ AVIReaderFILE::~AVIReaderFILE()
+ {
+ fclose(f);
+ } \ No newline at end of file