FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavformat
avio_internal.h
Go to the documentation of this file.
1
/*
2
*
3
* This file is part of FFmpeg.
4
*
5
* FFmpeg is free software; you can redistribute it and/or
6
* modify it under the terms of the GNU Lesser General Public
7
* License as published by the Free Software Foundation; either
8
* version 2.1 of the License, or (at your option) any later version.
9
*
10
* FFmpeg is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
* Lesser General Public License for more details.
14
*
15
* You should have received a copy of the GNU Lesser General Public
16
* License along with FFmpeg; if not, write to the Free Software
17
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
*/
19
20
#ifndef AVFORMAT_AVIO_INTERNAL_H
21
#define AVFORMAT_AVIO_INTERNAL_H
22
23
#include "
avio.h
"
24
#include "
url.h
"
25
26
#include "
libavutil/log.h
"
27
28
extern
const
AVClass
ffio_url_class
;
29
30
int
ffio_init_context
(
AVIOContext
*
s
,
31
unsigned
char
*
buffer
,
32
int
buffer_size,
33
int
write_flag,
34
void
*opaque,
35
int
(*
read_packet
)(
void
*opaque,
uint8_t
*
buf
,
int
buf_size),
36
int
(*
write_packet
)(
void
*opaque,
uint8_t
*buf,
int
buf_size),
37
int64_t (*seek)(
void
*opaque, int64_t
offset
,
int
whence));
38
39
40
/**
41
* Read size bytes from AVIOContext, returning a pointer.
42
* Note that the data pointed at by the returned pointer is only
43
* valid until the next call that references the same IO context.
44
* @param s IO context
45
* @param buf pointer to buffer into which to assemble the requested
46
* data if it is not available in contiguous addresses in the
47
* underlying buffer
48
* @param size number of bytes requested
49
* @param data address at which to store pointer: this will be a
50
* a direct pointer into the underlying buffer if the requested
51
* number of bytes are available at contiguous addresses, otherwise
52
* will be a copy of buf
53
* @return number of bytes read or AVERROR
54
*/
55
int
ffio_read_indirect
(
AVIOContext
*s,
unsigned
char
*buf,
int
size
,
const
unsigned
char
**
data
);
56
57
/**
58
* Read size bytes from AVIOContext into buf.
59
* This reads at most 1 packet. If that is not enough fewer bytes will be
60
* returned.
61
* @return number of bytes read or AVERROR
62
*/
63
int
ffio_read_partial
(
AVIOContext
*s,
unsigned
char
*buf,
int
size
);
64
65
void
ffio_fill
(
AVIOContext
*s,
int
b
,
int
count
);
66
67
static
av_always_inline
void
ffio_wfourcc
(
AVIOContext
*pb,
const
uint8_t
*s)
68
{
69
avio_wl32
(pb,
MKTAG
(s[0], s[1], s[2], s[3]));
70
}
71
72
/**
73
* Rewind the AVIOContext using the specified buffer containing the first buf_size bytes of the file.
74
* Used after probing to avoid seeking.
75
* Joins buf and s->buffer, taking any overlap into consideration.
76
* @note s->buffer must overlap with buf or they can't be joined and the function fails
77
*
78
* @param s The read-only AVIOContext to rewind
79
* @param buf The probe buffer containing the first buf_size bytes of the file
80
* @param buf_size The size of buf
81
* @return >= 0 in case of success, a negative value corresponding to an
82
* AVERROR code in case of failure
83
*/
84
int
ffio_rewind_with_probe_data
(
AVIOContext
*s,
unsigned
char
**buf,
int
buf_size);
85
86
uint64_t
ffio_read_varlen
(
AVIOContext
*bc);
87
88
/** @warning must be called before any I/O */
89
int
ffio_set_buf_size
(
AVIOContext
*s,
int
buf_size);
90
91
/**
92
* Ensures that the requested seekback buffer size will be available
93
*
94
* Will ensure that when reading sequentially up to buf_size, seeking
95
* within the current pos and pos+buf_size is possible.
96
* Once the stream position moves outside this window this gurantee is lost.
97
*/
98
int
ffio_ensure_seekback
(
AVIOContext
*s,
int
buf_size);
99
100
int
ffio_limit
(
AVIOContext
*s,
int
size
);
101
102
void
ffio_init_checksum
(
AVIOContext
*s,
103
unsigned
long
(*update_checksum)(
unsigned
long
c
,
const
uint8_t
*p,
unsigned
int
len
),
104
unsigned
long
checksum);
105
unsigned
long
ffio_get_checksum
(
AVIOContext
*s);
106
unsigned
long
ff_crc04C11DB7_update
(
unsigned
long
checksum,
const
uint8_t
*buf,
107
unsigned
int
len
);
108
109
/**
110
* Open a write only packetized memory stream with a maximum packet
111
* size of 'max_packet_size'. The stream is stored in a memory buffer
112
* with a big-endian 4 byte header giving the packet size in bytes.
113
*
114
* @param s new IO context
115
* @param max_packet_size maximum packet size (must be > 0)
116
* @return zero if no error.
117
*/
118
int
ffio_open_dyn_packet_buf
(
AVIOContext
**s,
int
max_packet_size);
119
120
/**
121
* Create and initialize a AVIOContext for accessing the
122
* resource referenced by the URLContext h.
123
* @note When the URLContext h has been opened in read+write mode, the
124
* AVIOContext can be used only for writing.
125
*
126
* @param s Used to return the pointer to the created AVIOContext.
127
* In case of failure the pointed to value is set to NULL.
128
* @return >= 0 in case of success, a negative value corresponding to an
129
* AVERROR code in case of failure
130
*/
131
int
ffio_fdopen
(
AVIOContext
**s,
URLContext
*h);
132
133
/**
134
* Open a write-only fake memory stream. The written data is not stored
135
* anywhere - this is only used for measuring the amount of data
136
* written.
137
*
138
* @param s new IO context
139
* @return zero if no error.
140
*/
141
int
ffio_open_null_buf
(
AVIOContext
**s);
142
143
/**
144
* Close a null buffer.
145
*
146
* @param s an IO context opened by ffio_open_null_buf
147
* @return the number of bytes written to the null buffer
148
*/
149
int
ffio_close_null_buf
(
AVIOContext
*s);
150
151
#endif
/* AVFORMAT_AVIO_INTERNAL_H */
Generated on Sun Mar 23 2014 23:50:10 for FFmpeg by
1.8.2