~ubuntu-branches/ubuntu/wily/hedgewars/wily

« back to all changes in this revision

Viewing changes to misc/libtremor/ivorbisfile.h

  • Committer: Package Import Robot
  • Author(s): Dmitry E. Oboukhov
  • Date: 2011-09-23 10:16:55 UTC
  • mfrom: (1.2.11 upstream)
  • Revision ID: package-import@ubuntu.com-20110923101655-3977th2gc5n0a3pv
Tags: 0.9.16-1
* New upstream version.
 + Downloadable content! Simply click to install any content.
   New voices, hats, maps, themes, translations, music, scripts...
   Hedgewars is now more customisable than ever before! As time goes
   by we will be soliciting community content to feature on this page,
   so remember to check it from time to time. If you decide you want
   to go back to standard Hedgewars, just remove the Data directory
   from your Hedgewars config directory.
 + 3-D rendering! Diorama-like rendering of the game in a variety
   of 3D modes. Let us know which ones work best for you, we didn't
   really have the equipment to test them all.
 + Resizable game window.
 + New utilities! The Time Box will remove one of your hedgehogs
   from the game for a while, protecting from attack until it returns,
   somewhere else on the map. Land spray will allow you to build bridges,
   seal up holes, or just make life unpleasant for your enemies.
 + New single player: Bamboo Thicket, That Sinking Feeling, Newton and
   the Tree and multi-player: The Specialists, Space Invaders,
   Racer - scripts! And a ton more script hooks for scripters
 + New twists on old weapons. Drill strike, seduction and fire have
   been adjusted. Defective mines have been added, rope can attach to
   hogs/crates/barrels again, grenades now have variable bounce (use
   precise key + 1-5). Portal gun is now more usable in flight and
   all game actions are a lot faster.
 + New theme - Golf, dozens of new community hats and a new
   localised Default voice, Ukranian.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/********************************************************************
 
2
 *                                                                  *
 
3
 * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE.   *
 
4
 *                                                                  *
 
5
 * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
 
6
 * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
 
7
 * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
 
8
 *                                                                  *
 
9
 * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002    *
 
10
 * BY THE Xiph.Org FOUNDATION http://www.xiph.org/                  *
 
11
 *                                                                  *
 
12
 ********************************************************************
 
13
 
 
14
 function: stdio-based convenience library for opening/seeking/decoding
 
15
 
 
16
 ********************************************************************/
 
17
 
 
18
#ifndef _OV_FILE_H_
 
19
#define _OV_FILE_H_
 
20
 
 
21
#ifdef __cplusplus
 
22
extern "C"
 
23
{
 
24
#endif /* __cplusplus */
 
25
 
 
26
#include <stdio.h>
 
27
#include "ivorbiscodec.h"
 
28
 
 
29
#define CHUNKSIZE 1024
 
30
/* The function prototypes for the callbacks are basically the same as for
 
31
 * the stdio functions fread, fseek, fclose, ftell. 
 
32
 * The one difference is that the FILE * arguments have been replaced with
 
33
 * a void * - this is to be used as a pointer to whatever internal data these
 
34
 * functions might need. In the stdio case, it's just a FILE * cast to a void *
 
35
 * 
 
36
 * If you use other functions, check the docs for these functions and return
 
37
 * the right values. For seek_func(), you *MUST* return -1 if the stream is
 
38
 * unseekable
 
39
 */
 
40
typedef struct {
 
41
  size_t (*read_func)  (void *ptr, size_t size, size_t nmemb, void *datasource);
 
42
  int    (*seek_func)  (void *datasource, ogg_int64_t offset, int whence);
 
43
  int    (*close_func) (void *datasource);
 
44
  long   (*tell_func)  (void *datasource);
 
45
} ov_callbacks;
 
46
 
 
47
#define  NOTOPEN   0
 
48
#define  PARTOPEN  1
 
49
#define  OPENED    2
 
50
#define  STREAMSET 3
 
51
#define  INITSET   4
 
52
 
 
53
typedef struct OggVorbis_File {
 
54
  void            *datasource; /* Pointer to a FILE *, etc. */
 
55
  int              seekable;
 
56
  ogg_int64_t      offset;
 
57
  ogg_int64_t      end;
 
58
  ogg_sync_state   *oy; 
 
59
 
 
60
  /* If the FILE handle isn't seekable (eg, a pipe), only the current
 
61
     stream appears */
 
62
  int              links;
 
63
  ogg_int64_t     *offsets;
 
64
  ogg_int64_t     *dataoffsets;
 
65
  ogg_uint32_t    *serialnos;
 
66
  ogg_int64_t     *pcmlengths;
 
67
  vorbis_info     *vi;
 
68
  vorbis_comment  *vc;
 
69
 
 
70
  /* Decoding working state local storage */
 
71
  ogg_int64_t      pcm_offset;
 
72
  int              ready_state;
 
73
  ogg_uint32_t     current_serialno;
 
74
  int              current_link;
 
75
 
 
76
  ogg_int64_t      bittrack;
 
77
  ogg_int64_t      samptrack;
 
78
 
 
79
  ogg_stream_state *os; /* take physical pages, weld into a logical
 
80
                          stream of packets */
 
81
  vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
 
82
  vorbis_block     vb; /* local working space for packet->PCM decode */
 
83
 
 
84
  ov_callbacks callbacks;
 
85
 
 
86
} OggVorbis_File;
 
87
 
 
88
extern int ov_clear(OggVorbis_File *vf);
 
89
extern int ov_open(FILE *f,OggVorbis_File *vf,char *initial,long ibytes);
 
90
extern int ov_open_callbacks(void *datasource, OggVorbis_File *vf,
 
91
                char *initial, long ibytes, ov_callbacks callbacks);
 
92
 
 
93
extern int ov_test(FILE *f,OggVorbis_File *vf,char *initial,long ibytes);
 
94
extern int ov_test_callbacks(void *datasource, OggVorbis_File *vf,
 
95
                char *initial, long ibytes, ov_callbacks callbacks);
 
96
extern int ov_test_open(OggVorbis_File *vf);
 
97
 
 
98
extern long ov_bitrate(OggVorbis_File *vf,int i);
 
99
extern long ov_bitrate_instant(OggVorbis_File *vf);
 
100
extern long ov_streams(OggVorbis_File *vf);
 
101
extern long ov_seekable(OggVorbis_File *vf);
 
102
extern long ov_serialnumber(OggVorbis_File *vf,int i);
 
103
 
 
104
extern ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i);
 
105
extern ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i);
 
106
extern ogg_int64_t ov_time_total(OggVorbis_File *vf,int i);
 
107
 
 
108
extern int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos);
 
109
extern int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos);
 
110
extern int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos);
 
111
extern int ov_time_seek(OggVorbis_File *vf,ogg_int64_t pos);
 
112
extern int ov_time_seek_page(OggVorbis_File *vf,ogg_int64_t pos);
 
113
 
 
114
extern ogg_int64_t ov_raw_tell(OggVorbis_File *vf);
 
115
extern ogg_int64_t ov_pcm_tell(OggVorbis_File *vf);
 
116
extern ogg_int64_t ov_time_tell(OggVorbis_File *vf);
 
117
 
 
118
extern vorbis_info *ov_info(OggVorbis_File *vf,int link);
 
119
extern vorbis_comment *ov_comment(OggVorbis_File *vf,int link);
 
120
 
 
121
extern long ov_read(OggVorbis_File *vf,char *buffer,int length,
 
122
                    int *bitstream);
 
123
 
 
124
#ifdef __cplusplus
 
125
}
 
126
#endif /* __cplusplus */
 
127
 
 
128
#endif
 
129
 
 
130