1 /*
2 * MD STUDIO audio demuxer
3 *
4 * Copyright (c) 2009 Benjamin Larsson
5 *
6 * This file is part of FFmpeg.
7 *
8 * FFmpeg is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * FFmpeg is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with FFmpeg; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22
27
28 #define AT1_SU_SIZE 212
29
31 {
33 return 0;
34
35 /* Magic is '00 08 00 00' in Little Endian*/
37 int ch, i;
39
40 if (ch != 1 && ch != 2)
41 return 0;
42
43 /* Check so that the redundant bsm bytes and info bytes are valid
44 * the block size mode bytes have to be the same
45 * the info bytes have to be the same
46 */
47 for (i = 2048; i + 211 < p->
buf_size; i+= 212) {
48 int bsm_s, bsm_e, inb_s, inb_e;
53
54 if (bsm_s != bsm_e || inb_s != inb_e)
55 return 0;
56 }
58 }
59 return 0;
60 }
61
63 {
65 if (!st)
67
68 /* Parse the amount of channels and skip to pos 2048(0x800) */
72
73
78
82 }
83
85
87 return 0;
88 }
89
91 {
93
95 if (ret <= 0)
97
98 return ret;
99 }
100
109 .extensions = "aea",
110 };
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
int64_t bit_rate
the average bitrate
int64_t avio_skip(AVIOContext *s, int64_t offset)
Skip given number of bytes forward.
#define AV_CH_LAYOUT_STEREO
int block_align
number of bytes per packet if constant and known or 0 Used by some WAV based audio codecs...
AVInputFormat ff_aea_demuxer
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.
static int aea_read_header(AVFormatContext *s)
static int aea_read_packet(AVFormatContext *s, AVPacket *pkt)
#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. ...
uint64_t channel_layout
Audio channel layout.
int avio_r8(AVIOContext *s)
AVCodecContext * codec
Codec context associated with this stream.
int buf_size
Size of buf except extra allocated bytes.
unsigned char * buf
Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero.
audio channel layout utility functions
static int aea_read_probe(AVProbeData *p)
enum AVMediaType codec_type
int sample_rate
samples per second
AVIOContext * pb
I/O context.
This structure contains the data a format has to probe a file.
int channels
number of audio channels
#define AV_CH_LAYOUT_MONO
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_RL32
This structure stores compressed data.