annotate avio.h @ 584:4e3bab6555ae libavformat

When playing ftp://ftp.mplayerhq.hu/MPlayer/samples/V-codecs/QPEG/VWbig6.avi with my decoder (should appear soon) it hadn't changed palette even there are palette change chunks in that AVI. Here is small patch to make it work (zero number of colors to change in that chunk actually means to change ALL colors). patch by (Kostya <cannonball>at<bw-team>dot<com>)
author michael
date Fri, 12 Nov 2004 01:32:35 +0000
parents e1f17fcfb92c
children cdb845a57ae4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
1 #ifndef AVIO_H
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
2 #define AVIO_H
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
3
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
4 /* output byte stream handling */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
5
65
a58a8a53eb46 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 19
diff changeset
6 typedef int64_t offset_t;
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
7
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
8 /* unbuffered I/O */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
9
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
10 struct URLContext {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
11 struct URLProtocol *prot;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
12 int flags;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
13 int is_streamed; /* true if streamed (no seek possible), default = false */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
14 int max_packet_size; /* if non zero, the stream is packetized with this max packet size */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
15 void *priv_data;
19
81e87c8de3dc added url_get_filename()
bellard
parents: 0
diff changeset
16 char filename[1]; /* specified filename */
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
17 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
18
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
19 typedef struct URLContext URLContext;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
20
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
21 typedef struct URLPollEntry {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
22 URLContext *handle;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
23 int events;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
24 int revents;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
25 } URLPollEntry;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
26
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
27 #define URL_RDONLY 0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
28 #define URL_WRONLY 1
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
29 #define URL_RDWR 2
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
30
177
16c4e43f34e5 added primitive aborting system
bellard
parents: 65
diff changeset
31 typedef int URLInterruptCB(void);
16c4e43f34e5 added primitive aborting system
bellard
parents: 65
diff changeset
32
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
33 int url_open(URLContext **h, const char *filename, int flags);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
34 int url_read(URLContext *h, unsigned char *buf, int size);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
35 int url_write(URLContext *h, unsigned char *buf, int size);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
36 offset_t url_seek(URLContext *h, offset_t pos, int whence);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
37 int url_close(URLContext *h);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
38 int url_exist(const char *filename);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
39 offset_t url_filesize(URLContext *h);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
40 int url_get_max_packet_size(URLContext *h);
19
81e87c8de3dc added url_get_filename()
bellard
parents: 0
diff changeset
41 void url_get_filename(URLContext *h, char *buf, int buf_size);
81e87c8de3dc added url_get_filename()
bellard
parents: 0
diff changeset
42
177
16c4e43f34e5 added primitive aborting system
bellard
parents: 65
diff changeset
43 /* the callback is called in blocking functions to test regulary if
16c4e43f34e5 added primitive aborting system
bellard
parents: 65
diff changeset
44 asynchronous interruption is needed. -EINTR is returned in this
16c4e43f34e5 added primitive aborting system
bellard
parents: 65
diff changeset
45 case by the interrupted function. 'NULL' means no interrupt
16c4e43f34e5 added primitive aborting system
bellard
parents: 65
diff changeset
46 callback is given. */
16c4e43f34e5 added primitive aborting system
bellard
parents: 65
diff changeset
47 void url_set_interrupt_cb(URLInterruptCB *interrupt_cb);
16c4e43f34e5 added primitive aborting system
bellard
parents: 65
diff changeset
48
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
49 /* not implemented */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
50 int url_poll(URLPollEntry *poll_table, int n, int timeout);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
51
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
52 typedef struct URLProtocol {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
53 const char *name;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
54 int (*url_open)(URLContext *h, const char *filename, int flags);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
55 int (*url_read)(URLContext *h, unsigned char *buf, int size);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
56 int (*url_write)(URLContext *h, unsigned char *buf, int size);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
57 offset_t (*url_seek)(URLContext *h, offset_t pos, int whence);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
58 int (*url_close)(URLContext *h);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
59 struct URLProtocol *next;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
60 } URLProtocol;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
61
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
62 extern URLProtocol *first_protocol;
177
16c4e43f34e5 added primitive aborting system
bellard
parents: 65
diff changeset
63 extern URLInterruptCB *url_interrupt_cb;
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
64
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
65 int register_protocol(URLProtocol *protocol);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
66
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
67 typedef struct {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
68 unsigned char *buffer;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
69 int buffer_size;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
70 unsigned char *buf_ptr, *buf_end;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
71 void *opaque;
65
a58a8a53eb46 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 19
diff changeset
72 int (*read_packet)(void *opaque, uint8_t *buf, int buf_size);
554
e1f17fcfb92c write error handling
michael
parents: 418
diff changeset
73 int (*write_packet)(void *opaque, uint8_t *buf, int buf_size);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
74 int (*seek)(void *opaque, offset_t offset, int whence);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
75 offset_t pos; /* position in the file of the current buffer */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
76 int must_flush; /* true if the next seek should flush */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
77 int eof_reached; /* true if eof reached */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
78 int write_flag; /* true if open for writing */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
79 int is_streamed;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
80 int max_packet_size;
418
41da3366d341 checksuming for nut & nice checksum API for libavformat
michael
parents: 389
diff changeset
81 unsigned long checksum;
41da3366d341 checksuming for nut & nice checksum API for libavformat
michael
parents: 389
diff changeset
82 unsigned char *checksum_ptr;
41da3366d341 checksuming for nut & nice checksum API for libavformat
michael
parents: 389
diff changeset
83 unsigned long (*update_checksum)(unsigned long checksum, const uint8_t *buf, unsigned int size);
554
e1f17fcfb92c write error handling
michael
parents: 418
diff changeset
84 int error; ///< contains the error code or 0 if no error happened
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
85 } ByteIOContext;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
86
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
87 int init_put_byte(ByteIOContext *s,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
88 unsigned char *buffer,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
89 int buffer_size,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
90 int write_flag,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
91 void *opaque,
65
a58a8a53eb46 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 19
diff changeset
92 int (*read_packet)(void *opaque, uint8_t *buf, int buf_size),
554
e1f17fcfb92c write error handling
michael
parents: 418
diff changeset
93 int (*write_packet)(void *opaque, uint8_t *buf, int buf_size),
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
94 int (*seek)(void *opaque, offset_t offset, int whence));
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
95
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
96 void put_byte(ByteIOContext *s, int b);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
97 void put_buffer(ByteIOContext *s, const unsigned char *buf, int size);
65
a58a8a53eb46 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 19
diff changeset
98 void put_le64(ByteIOContext *s, uint64_t val);
a58a8a53eb46 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 19
diff changeset
99 void put_be64(ByteIOContext *s, uint64_t val);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
100 void put_le32(ByteIOContext *s, unsigned int val);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
101 void put_be32(ByteIOContext *s, unsigned int val);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
102 void put_le16(ByteIOContext *s, unsigned int val);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
103 void put_be16(ByteIOContext *s, unsigned int val);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
104 void put_tag(ByteIOContext *s, const char *tag);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
105
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
106 void put_be64_double(ByteIOContext *s, double val);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
107 void put_strz(ByteIOContext *s, const char *buf);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
108
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
109 offset_t url_fseek(ByteIOContext *s, offset_t offset, int whence);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
110 void url_fskip(ByteIOContext *s, offset_t offset);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
111 offset_t url_ftell(ByteIOContext *s);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
112 int url_feof(ByteIOContext *s);
554
e1f17fcfb92c write error handling
michael
parents: 418
diff changeset
113 int url_ferror(ByteIOContext *s);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
114
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
115 #define URL_EOF (-1)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
116 int url_fgetc(ByteIOContext *s);
206
3a493a2e5bba libavformat/avio.h compilation problem in VisualC++ by (lethean at realtime dot ssu dot ac dot kr)
michaelni
parents: 177
diff changeset
117 #ifdef __GNUC__
265
786e8286ea4a Patch for attribute(printf) by (Michel Bardiaux <mbardiaux at peaktime dot be>)
michaelni
parents: 206
diff changeset
118 int url_fprintf(ByteIOContext *s, const char *fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3)));
206
3a493a2e5bba libavformat/avio.h compilation problem in VisualC++ by (lethean at realtime dot ssu dot ac dot kr)
michaelni
parents: 177
diff changeset
119 #else
3a493a2e5bba libavformat/avio.h compilation problem in VisualC++ by (lethean at realtime dot ssu dot ac dot kr)
michaelni
parents: 177
diff changeset
120 int url_fprintf(ByteIOContext *s, const char *fmt, ...);
3a493a2e5bba libavformat/avio.h compilation problem in VisualC++ by (lethean at realtime dot ssu dot ac dot kr)
michaelni
parents: 177
diff changeset
121 #endif
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
122 char *url_fgets(ByteIOContext *s, char *buf, int buf_size);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
123
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
124 void put_flush_packet(ByteIOContext *s);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
125
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
126 int get_buffer(ByteIOContext *s, unsigned char *buf, int size);
389
e14fcd57ad2f decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents: 265
diff changeset
127 int get_partial_buffer(ByteIOContext *s, unsigned char *buf, int size);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
128 int get_byte(ByteIOContext *s);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
129 unsigned int get_le32(ByteIOContext *s);
65
a58a8a53eb46 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 19
diff changeset
130 uint64_t get_le64(ByteIOContext *s);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
131 unsigned int get_le16(ByteIOContext *s);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
132
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
133 double get_be64_double(ByteIOContext *s);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
134 char *get_strz(ByteIOContext *s, char *buf, int maxlen);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
135 unsigned int get_be16(ByteIOContext *s);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
136 unsigned int get_be32(ByteIOContext *s);
65
a58a8a53eb46 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 19
diff changeset
137 uint64_t get_be64(ByteIOContext *s);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
138
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
139 static inline int url_is_streamed(ByteIOContext *s)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
140 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
141 return s->is_streamed;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
142 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
143
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
144 int url_fdopen(ByteIOContext *s, URLContext *h);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
145 int url_setbufsize(ByteIOContext *s, int buf_size);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
146 int url_fopen(ByteIOContext *s, const char *filename, int flags);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
147 int url_fclose(ByteIOContext *s);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
148 URLContext *url_fileno(ByteIOContext *s);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
149 int url_fget_max_packet_size(ByteIOContext *s);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
150
65
a58a8a53eb46 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 19
diff changeset
151 int url_open_buf(ByteIOContext *s, uint8_t *buf, int buf_size, int flags);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
152 int url_close_buf(ByteIOContext *s);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
153
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
154 int url_open_dyn_buf(ByteIOContext *s);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
155 int url_open_dyn_packet_buf(ByteIOContext *s, int max_packet_size);
65
a58a8a53eb46 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 19
diff changeset
156 int url_close_dyn_buf(ByteIOContext *s, uint8_t **pbuffer);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
157
418
41da3366d341 checksuming for nut & nice checksum API for libavformat
michael
parents: 389
diff changeset
158 unsigned long get_checksum(ByteIOContext *s);
41da3366d341 checksuming for nut & nice checksum API for libavformat
michael
parents: 389
diff changeset
159 void init_checksum(ByteIOContext *s, unsigned long (*update_checksum)(unsigned long c, const uint8_t *p, unsigned int len), unsigned long checksum);
41da3366d341 checksuming for nut & nice checksum API for libavformat
michael
parents: 389
diff changeset
160 unsigned long update_adler32(unsigned long adler, const uint8_t *buf, unsigned int len);
41da3366d341 checksuming for nut & nice checksum API for libavformat
michael
parents: 389
diff changeset
161
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
162 /* file.c */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
163 extern URLProtocol file_protocol;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
164 extern URLProtocol pipe_protocol;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
165
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
166 /* udp.c */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
167 extern URLProtocol udp_protocol;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
168 int udp_set_remote_url(URLContext *h, const char *uri);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
169 int udp_get_local_port(URLContext *h);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
170 int udp_get_file_handle(URLContext *h);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
171
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
172 /* tcp.c */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
173 extern URLProtocol tcp_protocol;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
174
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
175 /* http.c */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
176 extern URLProtocol http_protocol;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
177
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
178 #endif
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
179