aboutsummaryrefslogtreecommitdiff
path: root/Src/nsmkv/file_mkv_reader.cpp
diff options
context:
space:
mode:
authorJean-Francois Mauguit <jfmauguit@mac.com>2024-09-24 09:03:25 -0400
committerGitHub <noreply@github.com>2024-09-24 09:03:25 -0400
commitbab614c421ed7ae329d26bf028c4a3b1d2450f5a (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/nsmkv/file_mkv_reader.cpp
parent4bde6044fddf053f31795b9eaccdd2a5a527d21f (diff)
parent20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (diff)
downloadwinamp-bab614c421ed7ae329d26bf028c4a3b1d2450f5a.tar.gz
Merge pull request #5 from WinampDesktop/community
Merge to main
Diffstat (limited to 'Src/nsmkv/file_mkv_reader.cpp')
-rw-r--r--Src/nsmkv/file_mkv_reader.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/Src/nsmkv/file_mkv_reader.cpp b/Src/nsmkv/file_mkv_reader.cpp
new file mode 100644
index 00000000..d2f3db17
--- /dev/null
+++ b/Src/nsmkv/file_mkv_reader.cpp
@@ -0,0 +1,55 @@
+#include "file_mkv_reader.h"
+
+MKVReaderFILE::MKVReaderFILE(FILE *f) : f(f)
+{
+}
+MKVReaderFILE::MKVReaderFILE(const wchar_t *filename)
+{
+ f = _wfopen(filename, L"rb");
+}
+
+int MKVReaderFILE::Read(void *buffer, size_t read_length, size_t *bytes_read)
+{
+ *bytes_read = fread(buffer, 1, read_length, f);
+ return nsmkv::READ_OK;
+}
+
+int MKVReaderFILE::Peek(void *buffer, size_t read_length, size_t *bytes_read)
+{
+ *bytes_read = fread(buffer, 1, read_length, f);
+ fseek(f, (long)(-read_length), SEEK_CUR);
+ return nsmkv::READ_OK;
+}
+
+int MKVReaderFILE::Seek(uint64_t position)
+{
+ fsetpos(f, (const fpos_t *)&position);
+ return nsmkv::READ_OK;
+}
+
+uint64_t MKVReaderFILE::Tell()
+{
+ uint64_t pos;
+ fgetpos(f, (fpos_t *)&pos);
+ return pos;
+}
+
+int MKVReaderFILE::Skip(uint64_t skip_bytes)
+{
+ _fseeki64(f, skip_bytes, SEEK_CUR);
+ return nsmkv::READ_OK;
+}
+
+MKVReaderFILE::~MKVReaderFILE()
+{
+ fclose(f);
+}
+
+uint64_t MKVReaderFILE::GetContentLength()
+{
+ uint64_t old = Tell();
+ Seek(0);
+ uint64_t content_length = Tell();
+ Seek(old);
+ return content_length;
+} \ No newline at end of file