r125: This commit was manufactured by cvs2svn to create tag 'r1_1_7-last'.
[cinelerra_cv/mob.git] / hvirtual / libmpeg3 / mpeg3io.h.unbuffered
blob4d44afc890b221534d771e48c3433c76b7010158
1 #ifndef MPEG3IO_H
2 #define MPEG3IO_H
5 #include <stdio.h>
6 #include "mpeg3css.h"
7 #include "mpeg3private.inc"
9 /* Filesystem structure */
11 typedef struct
13         FILE *fd;
14         mpeg3_css_t *css;          /* Encryption object */
15         char path[MPEG3_STRLEN];
16 /* Hypothetical position of file pointer */
17         long current_byte;
18         long total_bytes;
19 } mpeg3_fs_t;
21 #define mpeg3io_tell(fs) (((mpeg3_fs_t *)(fs))->current_byte)
23 // End of file
24 #define mpeg3io_eof(fs) (((mpeg3_fs_t *)(fs))->current_byte >= ((mpeg3_fs_t *)(fs))->total_bytes)
26 // Beginning of file
27 #define mpeg3io_bof(fs) (((mpeg3_fs_t *)(fs))->current_byte < 0)
29 #define mpeg3io_get_fd(fs) (fileno(((mpeg3_fs_t *)(fs))->fd))
31 #define mpeg3io_total_bytes(fs) (((mpeg3_fs_t *)(fs))->total_bytes)
33 extern inline unsigned int mpeg3io_read_int32(mpeg3_fs_t *fs)
35         int a, b, c, d;
36         unsigned int result;
37 /* Do not fread.  This breaks byte ordering. */
38         a = (unsigned char)fgetc(fs->fd);
39         b = (unsigned char)fgetc(fs->fd);
40         c = (unsigned char)fgetc(fs->fd);
41         d = (unsigned char)fgetc(fs->fd);
42         result = ((int)a << 24) |
43                                         ((int)b << 16) |
44                                         ((int)c << 8) |
45                                         ((int)d);
46         fs->current_byte += 4;
47         return result;
50 extern inline unsigned int mpeg3io_read_char(mpeg3_fs_t *fs)
52         fs->current_byte++;
53         return fgetc(fs->fd);
56 #endif