annotate daud.c @ 2932:f5de41d943e2 libavformat

user specifyable maximum amount of memory to use for the index. patch by Paul Kelly paul stjohnspoint co uk with some changes by me
author michael
date Sun, 13 Jan 2008 13:33:37 +0000
parents d52c718e83f9
children 65f48adb4cc9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
847
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
1 /*
1415
3b00fb8ef8e4 replace coder/decoder file description in libavformat by muxer/demuxer
aurel
parents: 1358
diff changeset
2 * D-Cinema audio demuxer
2240
6ebff294b07c ISO8859-1 --> UTF-8
diego
parents: 1415
diff changeset
3 * Copyright (c) 2005 Reimar Döffinger
847
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
4 *
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1169
diff changeset
5 * This file is part of FFmpeg.
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1169
diff changeset
6 *
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1169
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
847
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
9 * License as published by the Free Software Foundation; either
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1169
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
847
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
11 *
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1169
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
847
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
15 * Lesser General Public License for more details.
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
16 *
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1169
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
896
edbe5c3717f9 Update licensing information: The FSF changed postal address.
diego
parents: 847
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
847
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
20 */
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
21 #include "avformat.h"
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
22
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
23 static int daud_header(AVFormatContext *s, AVFormatParameters *ap) {
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
24 AVStream *st = av_new_stream(s, 0);
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
25 st->codec->codec_type = CODEC_TYPE_AUDIO;
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
26 st->codec->codec_id = CODEC_ID_PCM_S24DAUD;
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
27 st->codec->codec_tag = MKTAG('d', 'a', 'u', 'd');
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
28 st->codec->channels = 6;
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
29 st->codec->sample_rate = 96000;
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
30 st->codec->bit_rate = 3 * 6 * 96000 * 8;
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
31 st->codec->block_align = 3 * 6;
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
32 st->codec->bits_per_sample = 24;
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
33 return 0;
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
34 }
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
35
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
36 static int daud_packet(AVFormatContext *s, AVPacket *pkt) {
2771
d52c718e83f9 Use dynamically allocated ByteIOContext in AVFormatContext
andoma
parents: 2274
diff changeset
37 ByteIOContext *pb = s->pb;
847
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
38 int ret, size;
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
39 if (url_feof(pb))
2274
b21c2af60bc9 Replace all occurrences of AVERROR_IO with AVERROR(EIO).
takis
parents: 2240
diff changeset
40 return AVERROR(EIO);
847
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
41 size = get_be16(pb);
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
42 get_be16(pb); // unknown
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
43 ret = av_get_packet(pb, pkt, size);
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
44 pkt->stream_index = 0;
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
45 return ret;
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
46 }
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
47
1169
d18cc9a1fd02 allow individual selection of muxers and demuxers
mru
parents: 1167
diff changeset
48 AVInputFormat daud_demuxer = {
847
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
49 "daud",
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
50 "D-Cinema audio format",
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
51 0,
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
52 NULL,
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
53 daud_header,
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
54 daud_packet,
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
55 NULL,
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
56 NULL,
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
57 .extensions = "302",
f5a33919749a Support D-Cinema audio demuxing.
reimar
parents:
diff changeset
58 };