summaryrefslogtreecommitdiffstats
path: root/stream/rar.h
diff options
context:
space:
mode:
Diffstat (limited to 'stream/rar.h')
-rw-r--r--stream/rar.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/stream/rar.h b/stream/rar.h
new file mode 100644
index 0000000000..6b001244a5
--- /dev/null
+++ b/stream/rar.h
@@ -0,0 +1,60 @@
+/*****************************************************************************
+ * rar.h: uncompressed RAR parser
+ *****************************************************************************
+ * Copyright (C) 2008-2010 Laurent Aimar
+ * $Id: 4dea45925c2d8f319d692475bc0307fdd9f6cfe7 $
+ *
+ * Author: Laurent Aimar <fenrir _AT_ videolan _DOT_ org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#ifndef MP_RAR_H
+#define MP_RAR_H
+
+#include <inttypes.h>
+#include <sys/types.h>
+
+typedef struct {
+ char *mrl;
+ uint64_t offset;
+ uint64_t size;
+ uint64_t cummulated_size;
+} rar_file_chunk_t;
+
+typedef struct {
+ char *name;
+ uint64_t size;
+ bool is_complete;
+
+ int chunk_count;
+ rar_file_chunk_t **chunk;
+ uint64_t real_size; /* Gathered size */
+
+ // When actually reading the data
+ struct MPOpts *opts;
+ uint64_t i_pos;
+ stream_t *s;
+ rar_file_chunk_t *current_chunk;
+} rar_file_t;
+
+int RarProbe(struct stream *);
+void RarFileDelete(rar_file_t *);
+int RarParse(struct stream *, int *, rar_file_t ***);
+
+int RarSeek(rar_file_t *file, uint64_t position);
+ssize_t RarRead(rar_file_t *file, void *data, size_t size);
+
+#endif