Diffstat (limited to 'core/multimedia/opieplayer/libmpeg3/mpeg3io.h') (more/less context) (show whitespace changes)
-rw-r--r-- | core/multimedia/opieplayer/libmpeg3/mpeg3io.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/core/multimedia/opieplayer/libmpeg3/mpeg3io.h b/core/multimedia/opieplayer/libmpeg3/mpeg3io.h new file mode 100644 index 0000000..092e411 --- a/dev/null +++ b/core/multimedia/opieplayer/libmpeg3/mpeg3io.h @@ -0,0 +1,74 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qtopia Environment. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ +#ifndef MPEG3IO_H +#define MPEG3IO_H + + +#include <stdio.h> +#include "mpeg3css.h" +#include "mpeg3private.inc" + +/* Filesystem structure */ + +typedef struct +{ + FILE *fd; + mpeg3_css_t *css; /* Encryption object */ + char path[MPEG3_STRLEN]; +/* Hypothetical position of file pointer */ + long current_byte; + long total_bytes; +} mpeg3_fs_t; + +#define mpeg3io_tell(fs) (((mpeg3_fs_t *)(fs))->current_byte) + +// End of file +#define mpeg3io_eof(fs) (((mpeg3_fs_t *)(fs))->current_byte >= ((mpeg3_fs_t *)(fs))->total_bytes) + +// Beginning of file +#define mpeg3io_bof(fs) (((mpeg3_fs_t *)(fs))->current_byte < 0) + + +#define mpeg3io_total_bytes(fs) (((mpeg3_fs_t *)(fs))->total_bytes) + +extern inline unsigned int mpeg3io_read_int32(mpeg3_fs_t *fs) +{ + int a, b, c, d; + unsigned int result; +/* Do not fread. This breaks byte ordering. */ + a = (unsigned char)fgetc(fs->fd); + b = (unsigned char)fgetc(fs->fd); + c = (unsigned char)fgetc(fs->fd); + d = (unsigned char)fgetc(fs->fd); + result = ((int)a << 24) | + ((int)b << 16) | + ((int)c << 8) | + ((int)d); + fs->current_byte += 4; + return result; +} + +extern inline unsigned int mpeg3io_read_char(mpeg3_fs_t *fs) +{ + fs->current_byte++; + return fgetc(fs->fd); +} + +#endif |