37 #define AU_UNKNOWN_SIZE ((uint32_t)(~0))
39 #define AU_DEFAULT_HEADER_SIZE (24+8)
62 if (p->
buf[0] ==
'.' && p->
buf[1] ==
's' &&
63 p->
buf[2] ==
'n' && p->
buf[3] ==
'd')
71 static const char * keys[] = {
79 enum { PARSE_KEY, PARSE_VALUE, PARSE_FINISHED }
state = PARSE_KEY;
93 state = PARSE_FINISHED;
94 }
else if (c ==
'=') {
103 if (c ==
'\0' || c ==
'\n') {
108 for (i = 0; keys[i] !=
NULL && key !=
NULL; i++) {
118 state = (c ==
'\0') ? PARSE_FINISHED : PARSE_KEY;
135 #define BLOCK_SIZE 1024
139 int size, data_size = 0;
142 unsigned int id, channels, rate;
148 if (tag !=
MKTAG(
'.',
's',
'n',
'd'))
164 au_read_annotation(s, size - 24);
176 if (
id ==
MKBETAG(
'7',
'2',
'6',
'2')) {
179 const uint8_t bpcss[] = {4, 0, 3, 5};
181 bps = bpcss[
id - 23];
188 if (channels == 0 || channels >= INT_MAX / (
BLOCK_SIZE * bps >> 3)) {
193 if (rate == 0 || rate > INT_MAX) {
221 .read_probe = au_probe,
222 .read_header = au_read_header,
232 typedef struct AUContext {
233 uint32_t header_size;
240 static const char * keys[] = {
255 for (i = 0; keys[i] !=
NULL; i++) {
276 char *annotations =
NULL;
292 ret = au_get_annotations(s, &annotations);
295 if (annotations !=
NULL) {
296 au->header_size = (24 + strlen(annotations) + 8) & ~7;
307 if (annotations !=
NULL) {
308 avio_write(pb, annotations, au->header_size - 24);
327 avio_wb32(pb, (uint32_t)(file_size - au->header_size));
338 .mime_type =
"audio/basic",
340 .priv_data_size =
sizeof(AUContext),
static void write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int unqueue)
void avio_wb64(AVIOContext *s, uint64_t val)
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
enum AVCodecID codec_id
Specific type of the encoded data (the codec used).
int av_dict_count(const AVDictionary *m)
Get number of entries in dictionary.
int64_t avio_seek(AVIOContext *s, int64_t offset, int whence)
fseek() equivalent for AVIOContext.
This struct describes the properties of an encoded stream.
int av_bprint_finalize(AVBPrint *buf, char **ret_str)
Finalize a print buffer.
#define av_assert0(cond)
assert() equivalent, that is always enabled.
void void avpriv_request_sample(void *avc, const char *msg,...) av_printf_format(2
Log a generic warning message about a missing feature.
unsigned int avio_rb32(AVIOContext *s)
AVStream * avformat_new_stream(AVFormatContext *s, const AVCodec *c)
Add a new stream to a media file.
AVStream ** streams
A list of all streams in the file.
void av_bprint_append_data(AVBPrint *buf, const char *data, unsigned size)
Append data to a print buffer.
AVDictionaryEntry * av_dict_get(const AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags)
Get a dictionary entry with matching key.
static av_always_inline int64_t avio_tell(AVIOContext *s)
ftell() equivalent for AVIOContext.
void avio_write(AVIOContext *s, const unsigned char *buf, int size)
static av_always_inline void ffio_wfourcc(AVIOContext *pb, const uint8_t *s)
int64_t bit_rate
The average bitrate of the encoded data (in bits per second).
AVCodecID
Identify the syntax and semantics of the bitstream.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
int av_get_bits_per_sample(enum AVCodecID codec_id)
Return codec bits per sample.
AVDictionary * metadata
Metadata that applies to the whole file.
#define AV_BPRINT_SIZE_UNLIMITED
unsigned int avio_rl32(AVIOContext *s)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max)
enum AVMediaType codec_type
General type of the encoded data.
simple assert() macros that are a bit more flexible than ISO C assert().
int avio_r8(AVIOContext *s)
unsigned char * buf
Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero.
unsigned int nb_streams
Number of elements in AVFormatContext.streams.
int block_align
Audio only.
int seekable
A combination of AVIO_SEEKABLE_ flags or 0 when the stream is not seekable.
int void avio_flush(AVIOContext *s)
Force flushing of buffered data.
int av_strcasecmp(const char *a, const char *b)
Locale-independent case-insensitive compare.
#define AV_DICT_DONT_STRDUP_VAL
Take ownership of a value that's been allocated with av_malloc() or another memory allocation functio...
GLsizei GLboolean const GLfloat * value
static int write_trailer(AVFormatContext *s1)
static const AVCodecTag codec_au_tags[]
#define AVERROR_PATCHWELCOME
Not yet implemented in FFmpeg, patches welcome.
#define AU_DEFAULT_HEADER_SIZE
#define AVIO_SEEKABLE_NORMAL
Seeking works like for a local file.
AVIOContext * pb
I/O context.
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags)
Set the given entry in *pm, overwriting an existing entry.
This structure contains the data a format has to probe a file.
int64_t duration
Decoding: duration of the stream, in stream time base.
int sample_rate
Audio only.
int64_t start_time
Decoding: pts of the first frame of the stream in presentation order, in stream time base...
#define MKBETAG(a, b, c, d)
void * priv_data
Format private data.
static void write_header(FFV1Context *f)
int bits_per_coded_sample
The number of bits per sample in the codedwords.
void avio_wb32(AVIOContext *s, unsigned int val)
AVCodecParameters * codecpar
uint32_t codec_tag
Additional information about the codec (corresponds to the AVI FOURCC).
#define MKTAG(a, b, c, d)
void av_bprint_chars(AVBPrint *buf, char c, unsigned n)
Append char c n times to a print buffer.