1 /*
2 * iLBC storage file format
3 * Copyright (c) 2012 Martin Storsjo
4 *
5 * This file is part of FFmpeg.
6 *
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
24
27
29 {
32
36 }
38
42 }
43
48 } else {
51 }
53 return 0;
54 }
55
57 {
59 return 0;
60 }
61
63 {
64 // Only check for "#!iLBC" which matches both formats
67 else
68 return 0;
69 }
70
72 {
76
78
80 if (!st)
94 } else {
97 }
98
99 return 0;
100 }
101
104 {
106 int ret;
107
109 return ret;
110
116 return ret < 0 ? ret :
AVERROR(EIO);
117 }
118
119 return 0;
120 }
121
129 };
130
134 .mime_type = "audio/iLBC",
135 .extensions = "lbc",
140 };
static const char mode30_header[]
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
int64_t bit_rate
the average bitrate
int64_t pos
byte position in stream, -1 if unknown
static int ilbc_read_header(AVFormatContext *s)
int block_align
number of bytes per packet if constant and known or 0 Used by some WAV based audio codecs...
static int ilbc_probe(AVProbeData *p)
int64_t duration
Duration of this packet in AVStream->time_base units, 0 if unknown.
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.
AVInputFormat ff_ilbc_demuxer
static av_always_inline int64_t avio_tell(AVIOContext *s)
ftell() equivalent for AVIOContext.
static const uint8_t header[24]
void avio_write(AVIOContext *s, const unsigned char *buf, int size)
int avio_read(AVIOContext *s, unsigned char *buf, int size)
Read size bytes from AVIOContext into buf.
int av_new_packet(AVPacket *pkt, int size)
Allocate the payload of a packet and initialize its fields with default values.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
static int ilbc_write_header(AVFormatContext *s)
AVOutputFormat ff_ilbc_muxer
static int ilbc_read_packet(AVFormatContext *s, AVPacket *pkt)
AVCodecContext * codec
Codec context associated with this stream.
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.
static int ilbc_write_packet(AVFormatContext *s, AVPacket *pkt)
int void avio_flush(AVIOContext *s)
Force flushing of buffered data.
enum AVMediaType codec_type
int sample_rate
samples per second
AVIOContext * pb
I/O context.
main external API structure.
void av_packet_unref(AVPacket *pkt)
Wipe the packet.
This structure contains the data a format has to probe a file.
int64_t start_time
Decoding: pts of the first frame of the stream in presentation order, in stream time base...
static const char mode20_header[]
int channels
number of audio channels
This structure stores compressed data.