Mercurial > libavformat.hg
annotate raw.c @ 2400:fcaecfb05781 libavformat
When looking for the last packet in each
stream, so as to calculate the duration, don't stop
as soon as all streams have seen at least one packet.
Otherwise the duration will be shorter than it
should be. We must keep reading to the end-of-file.
patch by neilb suse de
author | michael |
---|---|
date | Sat, 18 Aug 2007 00:52:05 +0000 |
parents | 8715adf607ce |
children | 213268d7594e |
rev | line source |
---|---|
885 | 1 /* |
1415
3b00fb8ef8e4
replace coder/decoder file description in libavformat by muxer/demuxer
aurel
parents:
1399
diff
changeset
|
2 * RAW muxer and demuxer |
0 | 3 * Copyright (c) 2001 Fabrice Bellard. |
868
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
4 * Copyright (c) 2005 Alex Beregszaszi |
0 | 5 * |
1358
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1245
diff
changeset
|
6 * This file is part of FFmpeg. |
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1245
diff
changeset
|
7 * |
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1245
diff
changeset
|
8 * FFmpeg is free software; you can redistribute it and/or |
0 | 9 * modify it under the terms of the GNU Lesser General Public |
10 * 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:
1245
diff
changeset
|
11 * version 2.1 of the License, or (at your option) any later version. |
0 | 12 * |
1358
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1245
diff
changeset
|
13 * FFmpeg is distributed in the hope that it will be useful, |
0 | 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 | |
1358
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1245
diff
changeset
|
19 * License along with FFmpeg; if not, write to the Free Software |
896
edbe5c3717f9
Update licensing information: The FSF changed postal address.
diego
parents:
887
diff
changeset
|
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
0 | 21 */ |
22 #include "avformat.h" | |
2075 | 23 #include "ac3_parser.h" |
0 | 24 |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
25 #ifdef CONFIG_MUXERS |
0 | 26 /* simple formats */ |
1078
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
27 static int flac_write_header(struct AVFormatContext *s) |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
28 { |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
29 static const uint8_t header[8] = { |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
30 0x66, 0x4C, 0x61, 0x43, 0x80, 0x00, 0x00, 0x22 |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
31 }; |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
32 uint8_t *streaminfo = s->streams[0]->codec->extradata; |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
33 int len = s->streams[0]->codec->extradata_size; |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
34 if(streaminfo != NULL && len > 0) { |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
35 put_buffer(&s->pb, header, 8); |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
36 put_buffer(&s->pb, streaminfo, len); |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
37 } |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
38 return 0; |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
39 } |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
40 |
2076 | 41 |
42 static int roq_write_header(struct AVFormatContext *s) | |
43 { | |
44 static const uint8_t header[] = { | |
45 0x84, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0x00 | |
46 }; | |
47 | |
48 put_buffer(&s->pb, header, 8); | |
49 put_flush_packet(&s->pb); | |
50 | |
51 return 0; | |
52 } | |
53 | |
468 | 54 static int raw_write_packet(struct AVFormatContext *s, AVPacket *pkt) |
0 | 55 { |
468 | 56 put_buffer(&s->pb, pkt->data, pkt->size); |
0 | 57 put_flush_packet(&s->pb); |
58 return 0; | |
59 } | |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
60 #endif //CONFIG_MUXERS |
0 | 61 |
62 /* raw input */ | |
65 | 63 static int raw_read_header(AVFormatContext *s, AVFormatParameters *ap) |
0 | 64 { |
65 AVStream *st; | |
66 int id; | |
67 | |
68 st = av_new_stream(s, 0); | |
69 if (!st) | |
2273
7eb456c4ed8a
Replace all occurrences of AVERROR_NOMEM with AVERROR(ENOMEM).
takis
parents:
2231
diff
changeset
|
70 return AVERROR(ENOMEM); |
1003 | 71 |
0 | 72 id = s->iformat->value; |
73 if (id == CODEC_ID_RAWVIDEO) { | |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
74 st->codec->codec_type = CODEC_TYPE_VIDEO; |
0 | 75 } else { |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
76 st->codec->codec_type = CODEC_TYPE_AUDIO; |
0 | 77 } |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
78 st->codec->codec_id = id; |
0 | 79 |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
80 switch(st->codec->codec_type) { |
0 | 81 case CODEC_TYPE_AUDIO: |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
82 st->codec->sample_rate = ap->sample_rate; |
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
83 st->codec->channels = ap->channels; |
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
84 av_set_pts_info(st, 64, 1, st->codec->sample_rate); |
0 | 85 break; |
86 case CODEC_TYPE_VIDEO: | |
743 | 87 av_set_pts_info(st, 64, ap->time_base.num, ap->time_base.den); |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
88 st->codec->width = ap->width; |
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
89 st->codec->height = ap->height; |
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
90 st->codec->pix_fmt = ap->pix_fmt; |
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
91 if(st->codec->pix_fmt == PIX_FMT_NONE) |
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
92 st->codec->pix_fmt= PIX_FMT_YUV420P; |
0 | 93 break; |
94 default: | |
95 return -1; | |
96 } | |
97 return 0; | |
98 } | |
99 | |
100 #define RAW_PACKET_SIZE 1024 | |
101 | |
64 | 102 static int raw_read_packet(AVFormatContext *s, AVPacket *pkt) |
0 | 103 { |
104 int ret, size; | |
28 | 105 // AVStream *st = s->streams[0]; |
885 | 106 |
0 | 107 size= RAW_PACKET_SIZE; |
108 | |
775 | 109 ret= av_get_packet(&s->pb, pkt, size); |
0 | 110 |
111 pkt->stream_index = 0; | |
112 if (ret <= 0) { | |
2274
b21c2af60bc9
Replace all occurrences of AVERROR_IO with AVERROR(EIO).
takis
parents:
2273
diff
changeset
|
113 return AVERROR(EIO); |
0 | 114 } |
115 /* note: we need to modify the packet size here to handle the last | |
116 packet */ | |
117 pkt->size = ret; | |
118 return ret; | |
119 } | |
120 | |
389
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
121 static int raw_read_partial_packet(AVFormatContext *s, AVPacket *pkt) |
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
122 { |
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
123 int ret, size; |
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
124 |
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
125 size = RAW_PACKET_SIZE; |
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
126 |
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
127 if (av_new_packet(pkt, size) < 0) |
2274
b21c2af60bc9
Replace all occurrences of AVERROR_IO with AVERROR(EIO).
takis
parents:
2273
diff
changeset
|
128 return AVERROR(EIO); |
885 | 129 |
775 | 130 pkt->pos= url_ftell(&s->pb); |
389
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
131 pkt->stream_index = 0; |
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
132 ret = get_partial_buffer(&s->pb, pkt->data, size); |
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
133 if (ret <= 0) { |
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
134 av_free_packet(pkt); |
2274
b21c2af60bc9
Replace all occurrences of AVERROR_IO with AVERROR(EIO).
takis
parents:
2273
diff
changeset
|
135 return AVERROR(EIO); |
389
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
136 } |
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
137 pkt->size = ret; |
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
138 return ret; |
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
139 } |
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
140 |
868
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
141 // http://www.artificis.hu/files/texts/ingenient.txt |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
142 static int ingenient_read_packet(AVFormatContext *s, AVPacket *pkt) |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
143 { |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
144 int ret, size, w, h, unk1, unk2; |
885 | 145 |
868
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
146 if (get_le32(&s->pb) != MKTAG('M', 'J', 'P', 'G')) |
2274
b21c2af60bc9
Replace all occurrences of AVERROR_IO with AVERROR(EIO).
takis
parents:
2273
diff
changeset
|
147 return AVERROR(EIO); // FIXME |
868
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
148 |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
149 size = get_le32(&s->pb); |
885 | 150 |
868
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
151 w = get_le16(&s->pb); |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
152 h = get_le16(&s->pb); |
885 | 153 |
868
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
154 url_fskip(&s->pb, 8); // zero + size (padded?) |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
155 url_fskip(&s->pb, 2); |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
156 unk1 = get_le16(&s->pb); |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
157 unk2 = get_le16(&s->pb); |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
158 url_fskip(&s->pb, 22); // ascii timestamp |
885 | 159 |
868
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
160 av_log(NULL, AV_LOG_DEBUG, "Ingenient packet: size=%d, width=%d, height=%d, unk1=%d unk2=%d\n", |
887 | 161 size, w, h, unk1, unk2); |
868
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
162 |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
163 if (av_new_packet(pkt, size) < 0) |
2274
b21c2af60bc9
Replace all occurrences of AVERROR_IO with AVERROR(EIO).
takis
parents:
2273
diff
changeset
|
164 return AVERROR(EIO); |
868
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
165 |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
166 pkt->pos = url_ftell(&s->pb); |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
167 pkt->stream_index = 0; |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
168 ret = get_buffer(&s->pb, pkt->data, size); |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
169 if (ret <= 0) { |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
170 av_free_packet(pkt); |
2274
b21c2af60bc9
Replace all occurrences of AVERROR_IO with AVERROR(EIO).
takis
parents:
2273
diff
changeset
|
171 return AVERROR(EIO); |
868
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
172 } |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
173 pkt->size = ret; |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
174 return ret; |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
175 } |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
176 |
64 | 177 static int raw_read_close(AVFormatContext *s) |
0 | 178 { |
179 return 0; | |
180 } | |
181 | |
885 | 182 int pcm_read_seek(AVFormatContext *s, |
558 | 183 int stream_index, int64_t timestamp, int flags) |
306 | 184 { |
185 AVStream *st; | |
186 int block_align, byte_rate; | |
187 int64_t pos; | |
188 | |
189 st = s->streams[0]; | |
1399
5a3003271ad8
simplify pcm read seek, use av_get_bits_per_sample
bcoudurier
parents:
1358
diff
changeset
|
190 |
5a3003271ad8
simplify pcm read seek, use av_get_bits_per_sample
bcoudurier
parents:
1358
diff
changeset
|
191 block_align = st->codec->block_align ? st->codec->block_align : |
5a3003271ad8
simplify pcm read seek, use av_get_bits_per_sample
bcoudurier
parents:
1358
diff
changeset
|
192 (av_get_bits_per_sample(st->codec->codec_id) * st->codec->channels) >> 3; |
5a3003271ad8
simplify pcm read seek, use av_get_bits_per_sample
bcoudurier
parents:
1358
diff
changeset
|
193 byte_rate = st->codec->bit_rate ? st->codec->bit_rate >> 3 : |
5a3003271ad8
simplify pcm read seek, use av_get_bits_per_sample
bcoudurier
parents:
1358
diff
changeset
|
194 block_align * st->codec->sample_rate; |
885 | 195 |
306 | 196 if (block_align <= 0 || byte_rate <= 0) |
197 return -1; | |
198 | |
199 /* compute the position by aligning it to block_align */ | |
885 | 200 pos = av_rescale_rnd(timestamp * byte_rate, |
201 st->time_base.num, | |
558 | 202 st->time_base.den * (int64_t)block_align, |
203 (flags & AVSEEK_FLAG_BACKWARD) ? AV_ROUND_DOWN : AV_ROUND_UP); | |
204 pos *= block_align; | |
306 | 205 |
206 /* recompute exact position */ | |
464 | 207 st->cur_dts = av_rescale(pos, st->time_base.den, byte_rate * (int64_t)st->time_base.num); |
306 | 208 url_fseek(&s->pb, pos + s->data_offset, SEEK_SET); |
209 return 0; | |
210 } | |
211 | |
63 | 212 /* ac3 read */ |
213 static int ac3_read_header(AVFormatContext *s, | |
214 AVFormatParameters *ap) | |
215 { | |
216 AVStream *st; | |
217 | |
218 st = av_new_stream(s, 0); | |
219 if (!st) | |
2273
7eb456c4ed8a
Replace all occurrences of AVERROR_NOMEM with AVERROR(ENOMEM).
takis
parents:
2231
diff
changeset
|
220 return AVERROR(ENOMEM); |
63 | 221 |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
222 st->codec->codec_type = CODEC_TYPE_AUDIO; |
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
223 st->codec->codec_id = CODEC_ID_AC3; |
2023 | 224 st->need_parsing = AVSTREAM_PARSE_FULL; |
63 | 225 /* the parameters will be extracted from the compressed bitstream */ |
226 return 0; | |
227 } | |
228 | |
686
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
229 static int shorten_read_header(AVFormatContext *s, |
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
230 AVFormatParameters *ap) |
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
231 { |
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
232 AVStream *st; |
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
233 |
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
234 st = av_new_stream(s, 0); |
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
235 if (!st) |
2273
7eb456c4ed8a
Replace all occurrences of AVERROR_NOMEM with AVERROR(ENOMEM).
takis
parents:
2231
diff
changeset
|
236 return AVERROR(ENOMEM); |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
237 st->codec->codec_type = CODEC_TYPE_AUDIO; |
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
238 st->codec->codec_id = CODEC_ID_SHORTEN; |
2023 | 239 st->need_parsing = AVSTREAM_PARSE_FULL; |
686
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
240 /* the parameters will be extracted from the compressed bitstream */ |
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
241 return 0; |
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
242 } |
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
243 |
1070
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
244 /* flac read */ |
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
245 static int flac_read_header(AVFormatContext *s, |
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
246 AVFormatParameters *ap) |
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
247 { |
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
248 AVStream *st; |
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
249 |
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
250 st = av_new_stream(s, 0); |
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
251 if (!st) |
2273
7eb456c4ed8a
Replace all occurrences of AVERROR_NOMEM with AVERROR(ENOMEM).
takis
parents:
2231
diff
changeset
|
252 return AVERROR(ENOMEM); |
1070
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
253 st->codec->codec_type = CODEC_TYPE_AUDIO; |
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
254 st->codec->codec_id = CODEC_ID_FLAC; |
2023 | 255 st->need_parsing = AVSTREAM_PARSE_FULL; |
1070
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
256 /* the parameters will be extracted from the compressed bitstream */ |
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
257 return 0; |
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
258 } |
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
259 |
496
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
260 /* dts read */ |
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
261 static int dts_read_header(AVFormatContext *s, |
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
262 AVFormatParameters *ap) |
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
263 { |
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
264 AVStream *st; |
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
265 |
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
266 st = av_new_stream(s, 0); |
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
267 if (!st) |
2273
7eb456c4ed8a
Replace all occurrences of AVERROR_NOMEM with AVERROR(ENOMEM).
takis
parents:
2231
diff
changeset
|
268 return AVERROR(ENOMEM); |
496
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
269 |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
270 st->codec->codec_type = CODEC_TYPE_AUDIO; |
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
271 st->codec->codec_id = CODEC_ID_DTS; |
2023 | 272 st->need_parsing = AVSTREAM_PARSE_FULL; |
496
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
273 /* the parameters will be extracted from the compressed bitstream */ |
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
274 return 0; |
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
275 } |
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
276 |
931 | 277 /* aac read */ |
278 static int aac_read_header(AVFormatContext *s, | |
279 AVFormatParameters *ap) | |
280 { | |
281 AVStream *st; | |
282 | |
283 st = av_new_stream(s, 0); | |
284 if (!st) | |
2273
7eb456c4ed8a
Replace all occurrences of AVERROR_NOMEM with AVERROR(ENOMEM).
takis
parents:
2231
diff
changeset
|
285 return AVERROR(ENOMEM); |
931 | 286 |
287 st->codec->codec_type = CODEC_TYPE_AUDIO; | |
288 st->codec->codec_id = CODEC_ID_AAC; | |
2023 | 289 st->need_parsing = AVSTREAM_PARSE_FULL; |
931 | 290 /* the parameters will be extracted from the compressed bitstream */ |
291 return 0; | |
292 } | |
293 | |
0 | 294 /* mpeg1/h263 input */ |
295 static int video_read_header(AVFormatContext *s, | |
296 AVFormatParameters *ap) | |
297 { | |
298 AVStream *st; | |
299 | |
300 st = av_new_stream(s, 0); | |
301 if (!st) | |
2273
7eb456c4ed8a
Replace all occurrences of AVERROR_NOMEM with AVERROR(ENOMEM).
takis
parents:
2231
diff
changeset
|
302 return AVERROR(ENOMEM); |
0 | 303 |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
304 st->codec->codec_type = CODEC_TYPE_VIDEO; |
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
305 st->codec->codec_id = s->iformat->value; |
2023 | 306 st->need_parsing = AVSTREAM_PARSE_FULL; |
306 | 307 |
0 | 308 /* for mjpeg, specify frame rate */ |
2164 | 309 /* for mpeg4 specify it too (most mpeg4 streams do not have the fixed_vop_rate set ...)*/ |
1003 | 310 if (ap->time_base.num) { |
745 | 311 av_set_pts_info(st, 64, ap->time_base.num, ap->time_base.den); |
885 | 312 } else if ( st->codec->codec_id == CODEC_ID_MJPEG || |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
313 st->codec->codec_id == CODEC_ID_MPEG4 || |
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
314 st->codec->codec_id == CODEC_ID_H264) { |
745 | 315 av_set_pts_info(st, 64, 1, 25); |
0 | 316 } |
745 | 317 |
0 | 318 return 0; |
319 } | |
320 | |
887 | 321 #define SEQ_START_CODE 0x000001b3 |
322 #define GOP_START_CODE 0x000001b8 | |
323 #define PICTURE_START_CODE 0x00000100 | |
924 | 324 #define SLICE_START_CODE 0x00000101 |
325 #define PACK_START_CODE 0x000001ba | |
985
7f8b1a1ac020
can't have PES headers in MPEG video elementary streams so fail probe
mru
parents:
939
diff
changeset
|
326 #define VIDEO_ID 0x000001e0 |
7f8b1a1ac020
can't have PES headers in MPEG video elementary streams so fail probe
mru
parents:
939
diff
changeset
|
327 #define AUDIO_ID 0x000001c0 |
0 | 328 |
329 static int mpegvideo_probe(AVProbeData *p) | |
330 { | |
924 | 331 uint32_t code= -1; |
985
7f8b1a1ac020
can't have PES headers in MPEG video elementary streams so fail probe
mru
parents:
939
diff
changeset
|
332 int pic=0, seq=0, slice=0, pspack=0, pes=0; |
924 | 333 int i; |
49 | 334 |
924 | 335 for(i=0; i<p->buf_size; i++){ |
336 code = (code<<8) + p->buf[i]; | |
337 if ((code & 0xffffff00) == 0x100) { | |
338 switch(code){ | |
339 case SEQ_START_CODE: seq++; break; | |
340 case PICTURE_START_CODE: pic++; break; | |
341 case SLICE_START_CODE: slice++; break; | |
342 case PACK_START_CODE: pspack++; break; | |
343 } | |
1965 | 344 if ((code & 0x1f0) == VIDEO_ID) pes++; |
345 else if((code & 0x1e0) == AUDIO_ID) pes++; | |
924 | 346 } |
0 | 347 } |
985
7f8b1a1ac020
can't have PES headers in MPEG video elementary streams so fail probe
mru
parents:
939
diff
changeset
|
348 if(seq && seq*9<=pic*10 && pic*9<=slice*10 && !pspack && !pes) |
924 | 349 return AVPROBE_SCORE_MAX/2+1; // +1 for .mpg |
0 | 350 return 0; |
351 } | |
352 | |
1463
acf4dbb1a7e6
mpeg4probe patch by (Thijs Vermeir ; thijs vermeir barco com)
michael
parents:
1415
diff
changeset
|
353 #define VISUAL_OBJECT_START_CODE 0x000001b5 |
acf4dbb1a7e6
mpeg4probe patch by (Thijs Vermeir ; thijs vermeir barco com)
michael
parents:
1415
diff
changeset
|
354 #define VOP_START_CODE 0x000001b6 |
acf4dbb1a7e6
mpeg4probe patch by (Thijs Vermeir ; thijs vermeir barco com)
michael
parents:
1415
diff
changeset
|
355 |
acf4dbb1a7e6
mpeg4probe patch by (Thijs Vermeir ; thijs vermeir barco com)
michael
parents:
1415
diff
changeset
|
356 static int mpeg4video_probe(AVProbeData *probe_packet) |
acf4dbb1a7e6
mpeg4probe patch by (Thijs Vermeir ; thijs vermeir barco com)
michael
parents:
1415
diff
changeset
|
357 { |
acf4dbb1a7e6
mpeg4probe patch by (Thijs Vermeir ; thijs vermeir barco com)
michael
parents:
1415
diff
changeset
|
358 uint32_t temp_buffer= -1; |
2071
228e5fd9a357
improve mpeg4-es detection by rejecting streams with reserved startcodes (fixes 11-i_need_your_love-daw.mp3 detected as mpeg4)
michael
parents:
2038
diff
changeset
|
359 int VO=0, VOL=0, VOP = 0, VISO = 0, res=0; |
1463
acf4dbb1a7e6
mpeg4probe patch by (Thijs Vermeir ; thijs vermeir barco com)
michael
parents:
1415
diff
changeset
|
360 int i; |
acf4dbb1a7e6
mpeg4probe patch by (Thijs Vermeir ; thijs vermeir barco com)
michael
parents:
1415
diff
changeset
|
361 |
acf4dbb1a7e6
mpeg4probe patch by (Thijs Vermeir ; thijs vermeir barco com)
michael
parents:
1415
diff
changeset
|
362 for(i=0; i<probe_packet->buf_size; i++){ |
acf4dbb1a7e6
mpeg4probe patch by (Thijs Vermeir ; thijs vermeir barco com)
michael
parents:
1415
diff
changeset
|
363 temp_buffer = (temp_buffer<<8) + probe_packet->buf[i]; |
2231
7ad682f38b9a
* Getting rid of the use of GCC language extensions
romansh
parents:
2224
diff
changeset
|
364 if ((temp_buffer & 0xffffff00) != 0x100) |
7ad682f38b9a
* Getting rid of the use of GCC language extensions
romansh
parents:
2224
diff
changeset
|
365 continue; |
7ad682f38b9a
* Getting rid of the use of GCC language extensions
romansh
parents:
2224
diff
changeset
|
366 |
7ad682f38b9a
* Getting rid of the use of GCC language extensions
romansh
parents:
2224
diff
changeset
|
367 if (temp_buffer == VOP_START_CODE) VOP++; |
7ad682f38b9a
* Getting rid of the use of GCC language extensions
romansh
parents:
2224
diff
changeset
|
368 else if (temp_buffer == VISUAL_OBJECT_START_CODE) VISO++; |
7ad682f38b9a
* Getting rid of the use of GCC language extensions
romansh
parents:
2224
diff
changeset
|
369 else if (temp_buffer < 0x120) VO++; |
7ad682f38b9a
* Getting rid of the use of GCC language extensions
romansh
parents:
2224
diff
changeset
|
370 else if (temp_buffer < 0x130) VOL++; |
7ad682f38b9a
* Getting rid of the use of GCC language extensions
romansh
parents:
2224
diff
changeset
|
371 else if ( !(0x1AF < temp_buffer && temp_buffer < 0x1B7) |
7ad682f38b9a
* Getting rid of the use of GCC language extensions
romansh
parents:
2224
diff
changeset
|
372 && !(0x1B9 < temp_buffer && temp_buffer < 0x1C4)) res++; |
1463
acf4dbb1a7e6
mpeg4probe patch by (Thijs Vermeir ; thijs vermeir barco com)
michael
parents:
1415
diff
changeset
|
373 } |
acf4dbb1a7e6
mpeg4probe patch by (Thijs Vermeir ; thijs vermeir barco com)
michael
parents:
1415
diff
changeset
|
374 |
2071
228e5fd9a357
improve mpeg4-es detection by rejecting streams with reserved startcodes (fixes 11-i_need_your_love-daw.mp3 detected as mpeg4)
michael
parents:
2038
diff
changeset
|
375 if ( VOP >= VISO && VOP >= VOL && VO >= VOL && VOL > 0 && res==0) |
1463
acf4dbb1a7e6
mpeg4probe patch by (Thijs Vermeir ; thijs vermeir barco com)
michael
parents:
1415
diff
changeset
|
376 return AVPROBE_SCORE_MAX/2; |
acf4dbb1a7e6
mpeg4probe patch by (Thijs Vermeir ; thijs vermeir barco com)
michael
parents:
1415
diff
changeset
|
377 return 0; |
acf4dbb1a7e6
mpeg4probe patch by (Thijs Vermeir ; thijs vermeir barco com)
michael
parents:
1415
diff
changeset
|
378 } |
acf4dbb1a7e6
mpeg4probe patch by (Thijs Vermeir ; thijs vermeir barco com)
michael
parents:
1415
diff
changeset
|
379 |
135
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
380 static int h263_probe(AVProbeData *p) |
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
381 { |
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
382 int code; |
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
383 const uint8_t *d; |
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
384 |
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
385 d = p->buf; |
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
386 code = (d[0] << 14) | (d[1] << 6) | (d[2] >> 2); |
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
387 if (code == 0x20) { |
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
388 return 50; |
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
389 } |
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
390 return 0; |
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
391 } |
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
392 |
473
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
393 static int h261_probe(AVProbeData *p) |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
394 { |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
395 int code; |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
396 const uint8_t *d; |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
397 |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
398 d = p->buf; |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
399 code = (d[0] << 12) | (d[1] << 4) | (d[2] >> 4); |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
400 if (code == 0x10) { |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
401 return 50; |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
402 } |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
403 return 0; |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
404 } |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
405 |
1768 | 406 static int ac3_probe(AVProbeData *p) |
407 { | |
2224 | 408 int max_frames, first_frames = 0, frames; |
1931 | 409 uint8_t *buf, *buf2, *end; |
410 AC3HeaderInfo hdr; | |
1768 | 411 |
1931 | 412 max_frames = 0; |
413 buf = p->buf; | |
2304
763527841a80
additional tweaks to AC3 probe function. give a higher score to a single frame
jbr
parents:
2303
diff
changeset
|
414 end = buf + p->buf_size; |
1931 | 415 |
416 for(; buf < end; buf++) { | |
417 buf2 = buf; | |
418 | |
419 for(frames = 0; buf2 < end; frames++) { | |
420 if(ff_ac3_parse_header(buf2, &hdr) < 0) | |
421 break; | |
422 buf2 += hdr.frame_size; | |
423 } | |
424 max_frames = FFMAX(max_frames, frames); | |
425 if(buf == p->buf) | |
426 first_frames = frames; | |
1768 | 427 } |
1931 | 428 if (first_frames>=3) return AVPROBE_SCORE_MAX * 3 / 4; |
2313
7f6e22803038
10l to me. Revert recent changes to ac3_probe() which made misdetection as AC3 too probable.
jbr
parents:
2305
diff
changeset
|
429 else if(max_frames>=3) return AVPROBE_SCORE_MAX / 2; |
1931 | 430 else if(max_frames>=1) return 1; |
431 else return 0; | |
1768 | 432 } |
433 | |
2365 | 434 static int flac_probe(AVProbeData *p) |
435 { | |
436 if(memcmp(p->buf, "fLaC", 4)) return 0; | |
2368 | 437 else return AVPROBE_SCORE_MAX / 2; |
2365 | 438 } |
439 | |
1167 | 440 AVInputFormat shorten_demuxer = { |
686
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
441 "shn", |
868
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
442 "raw shorten", |
686
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
443 0, |
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
444 NULL, |
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
445 shorten_read_header, |
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
446 raw_read_partial_packet, |
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
447 raw_read_close, |
1756 | 448 .flags= AVFMT_GENERIC_INDEX, |
686
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
449 .extensions = "shn", |
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
450 }; |
e2687b784c3a
shorten decoder by (Jeff Muizelaar <jrmuizel gmail com>)
michael
parents:
637
diff
changeset
|
451 |
1167 | 452 AVInputFormat flac_demuxer = { |
1070
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
453 "flac", |
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
454 "raw flac", |
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
455 0, |
2365 | 456 flac_probe, |
1070
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
457 flac_read_header, |
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
458 raw_read_partial_packet, |
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
459 raw_read_close, |
1756 | 460 .flags= AVFMT_GENERIC_INDEX, |
1070
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
461 .extensions = "flac", |
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
462 }; |
26d75e74c7b7
Add support for raw flac decoding based on the .flac suffix of input files.
banan
parents:
1003
diff
changeset
|
463 |
1078
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
464 #ifdef CONFIG_MUXERS |
1167 | 465 AVOutputFormat flac_muxer = { |
1078
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
466 "flac", |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
467 "raw flac", |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
468 "audio/x-flac", |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
469 "flac", |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
470 0, |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
471 CODEC_ID_FLAC, |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
472 0, |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
473 flac_write_header, |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
474 raw_write_packet, |
1245
e59b75051ded
dont be too picky about timestampsbeing wrong if the destination container is without timestamps and raw of the raw video / raw audio sort
michael
parents:
1169
diff
changeset
|
475 .flags= AVFMT_NOTIMESTAMPS, |
1078
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
476 }; |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
477 #endif //CONFIG_MUXERS |
0bc9422cc0ad
Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be
banan
parents:
1070
diff
changeset
|
478 |
2022
4f62a7d9381a
Make the declaration of AVInputFormat ac3_demuxer conditional
diego
parents:
2021
diff
changeset
|
479 #ifdef CONFIG_AC3_DEMUXER |
1167 | 480 AVInputFormat ac3_demuxer = { |
0 | 481 "ac3", |
482 "raw ac3", | |
483 0, | |
1768 | 484 ac3_probe, |
63 | 485 ac3_read_header, |
389
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
486 raw_read_partial_packet, |
0 | 487 raw_read_close, |
1756 | 488 .flags= AVFMT_GENERIC_INDEX, |
0 | 489 .extensions = "ac3", |
490 }; | |
2022
4f62a7d9381a
Make the declaration of AVInputFormat ac3_demuxer conditional
diego
parents:
2021
diff
changeset
|
491 #endif |
0 | 492 |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
493 #ifdef CONFIG_MUXERS |
1167 | 494 AVOutputFormat ac3_muxer = { |
0 | 495 "ac3", |
496 "raw ac3", | |
885 | 497 "audio/x-ac3", |
0 | 498 "ac3", |
499 0, | |
500 CODEC_ID_AC3, | |
501 0, | |
2305 | 502 NULL, |
0 | 503 raw_write_packet, |
1245
e59b75051ded
dont be too picky about timestampsbeing wrong if the destination container is without timestamps and raw of the raw video / raw audio sort
michael
parents:
1169
diff
changeset
|
504 .flags= AVFMT_NOTIMESTAMPS, |
0 | 505 }; |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
506 #endif //CONFIG_MUXERS |
0 | 507 |
1167 | 508 AVInputFormat dts_demuxer = { |
496
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
509 "dts", |
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
510 "raw dts", |
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
511 0, |
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
512 NULL, |
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
513 dts_read_header, |
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
514 raw_read_partial_packet, |
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
515 raw_read_close, |
1756 | 516 .flags= AVFMT_GENERIC_INDEX, |
496
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
517 .extensions = "dts", |
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
518 }; |
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
519 |
1167 | 520 AVInputFormat aac_demuxer = { |
931 | 521 "aac", |
522 "ADTS AAC", | |
523 0, | |
524 NULL, | |
525 aac_read_header, | |
526 raw_read_partial_packet, | |
527 raw_read_close, | |
1756 | 528 .flags= AVFMT_GENERIC_INDEX, |
931 | 529 .extensions = "aac", |
530 }; | |
531 | |
2076 | 532 #ifdef CONFIG_ROQ_MUXER |
533 AVOutputFormat roq_muxer = | |
534 { | |
535 "RoQ", | |
536 "Id RoQ format", | |
537 NULL, | |
538 "roq", | |
539 0, | |
540 CODEC_ID_ROQ_DPCM, | |
541 CODEC_ID_ROQ, | |
542 roq_write_header, | |
543 raw_write_packet, | |
544 }; | |
545 #endif //CONFIG_ROQ_MUXER | |
546 | |
1167 | 547 AVInputFormat h261_demuxer = { |
473
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
548 "h261", |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
549 "raw h261", |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
550 0, |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
551 h261_probe, |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
552 video_read_header, |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
553 raw_read_partial_packet, |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
554 raw_read_close, |
1756 | 555 .flags= AVFMT_GENERIC_INDEX, |
473
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
556 .extensions = "h261", |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
557 .value = CODEC_ID_H261, |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
558 }; |
e0a66a870b7f
h261 decoder by (Maarten Daniels <maarten.daniels at student dot luc dot ac dot be>)
michael
parents:
468
diff
changeset
|
559 |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
560 #ifdef CONFIG_MUXERS |
1167 | 561 AVOutputFormat h261_muxer = { |
576
f701ba509d0c
H.261 encoder by (Maarten Daniels <maarten dot daniels at luc dot ac dot be>)
michael
parents:
567
diff
changeset
|
562 "h261", |
f701ba509d0c
H.261 encoder by (Maarten Daniels <maarten dot daniels at luc dot ac dot be>)
michael
parents:
567
diff
changeset
|
563 "raw h261", |
f701ba509d0c
H.261 encoder by (Maarten Daniels <maarten dot daniels at luc dot ac dot be>)
michael
parents:
567
diff
changeset
|
564 "video/x-h261", |
f701ba509d0c
H.261 encoder by (Maarten Daniels <maarten dot daniels at luc dot ac dot be>)
michael
parents:
567
diff
changeset
|
565 "h261", |
f701ba509d0c
H.261 encoder by (Maarten Daniels <maarten dot daniels at luc dot ac dot be>)
michael
parents:
567
diff
changeset
|
566 0, |
f701ba509d0c
H.261 encoder by (Maarten Daniels <maarten dot daniels at luc dot ac dot be>)
michael
parents:
567
diff
changeset
|
567 0, |
f701ba509d0c
H.261 encoder by (Maarten Daniels <maarten dot daniels at luc dot ac dot be>)
michael
parents:
567
diff
changeset
|
568 CODEC_ID_H261, |
2305 | 569 NULL, |
576
f701ba509d0c
H.261 encoder by (Maarten Daniels <maarten dot daniels at luc dot ac dot be>)
michael
parents:
567
diff
changeset
|
570 raw_write_packet, |
1245
e59b75051ded
dont be too picky about timestampsbeing wrong if the destination container is without timestamps and raw of the raw video / raw audio sort
michael
parents:
1169
diff
changeset
|
571 .flags= AVFMT_NOTIMESTAMPS, |
576
f701ba509d0c
H.261 encoder by (Maarten Daniels <maarten dot daniels at luc dot ac dot be>)
michael
parents:
567
diff
changeset
|
572 }; |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
573 #endif //CONFIG_MUXERS |
576
f701ba509d0c
H.261 encoder by (Maarten Daniels <maarten dot daniels at luc dot ac dot be>)
michael
parents:
567
diff
changeset
|
574 |
1167 | 575 AVInputFormat h263_demuxer = { |
135
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
576 "h263", |
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
577 "raw h263", |
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
578 0, |
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
579 h263_probe, |
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
580 video_read_header, |
389
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
581 raw_read_partial_packet, |
135
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
582 raw_read_close, |
1756 | 583 .flags= AVFMT_GENERIC_INDEX, |
135
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
584 // .extensions = "h263", //FIXME remove after writing mpeg4_probe |
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
585 .value = CODEC_ID_H263, |
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
586 }; |
56590088f801
truncated h263 decoding support / H263-ES "demuxer"
michaelni
parents:
128
diff
changeset
|
587 |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
588 #ifdef CONFIG_MUXERS |
1167 | 589 AVOutputFormat h263_muxer = { |
0 | 590 "h263", |
591 "raw h263", | |
592 "video/x-h263", | |
593 "h263", | |
594 0, | |
595 0, | |
596 CODEC_ID_H263, | |
2305 | 597 NULL, |
0 | 598 raw_write_packet, |
1245
e59b75051ded
dont be too picky about timestampsbeing wrong if the destination container is without timestamps and raw of the raw video / raw audio sort
michael
parents:
1169
diff
changeset
|
599 .flags= AVFMT_NOTIMESTAMPS, |
0 | 600 }; |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
601 #endif //CONFIG_MUXERS |
0 | 602 |
1167 | 603 AVInputFormat m4v_demuxer = { |
0 | 604 "m4v", |
605 "raw MPEG4 video format", | |
606 0, | |
1463
acf4dbb1a7e6
mpeg4probe patch by (Thijs Vermeir ; thijs vermeir barco com)
michael
parents:
1415
diff
changeset
|
607 mpeg4video_probe, /** probing for mpeg4 data */ |
0 | 608 video_read_header, |
389
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
609 raw_read_partial_packet, |
0 | 610 raw_read_close, |
1756 | 611 .flags= AVFMT_GENERIC_INDEX, |
0 | 612 .extensions = "m4v", //FIXME remove after writing mpeg4_probe |
613 .value = CODEC_ID_MPEG4, | |
614 }; | |
615 | |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
616 #ifdef CONFIG_MUXERS |
1167 | 617 AVOutputFormat m4v_muxer = { |
0 | 618 "m4v", |
619 "raw MPEG4 video format", | |
620 NULL, | |
621 "m4v", | |
622 0, | |
623 CODEC_ID_NONE, | |
624 CODEC_ID_MPEG4, | |
2305 | 625 NULL, |
0 | 626 raw_write_packet, |
1245
e59b75051ded
dont be too picky about timestampsbeing wrong if the destination container is without timestamps and raw of the raw video / raw audio sort
michael
parents:
1169
diff
changeset
|
627 .flags= AVFMT_NOTIMESTAMPS, |
0 | 628 }; |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
629 #endif //CONFIG_MUXERS |
0 | 630 |
1167 | 631 AVInputFormat h264_demuxer = { |
100 | 632 "h264", |
633 "raw H264 video format", | |
634 0, | |
635 NULL /*mpegvideo_probe*/, | |
636 video_read_header, | |
389
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
637 raw_read_partial_packet, |
100 | 638 raw_read_close, |
1756 | 639 .flags= AVFMT_GENERIC_INDEX, |
808 | 640 .extensions = "h26l,h264,264", //FIXME remove after writing mpeg4_probe |
100 | 641 .value = CODEC_ID_H264, |
642 }; | |
643 | |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
644 #ifdef CONFIG_MUXERS |
1167 | 645 AVOutputFormat h264_muxer = { |
100 | 646 "h264", |
647 "raw H264 video format", | |
648 NULL, | |
649 "h264", | |
650 0, | |
651 CODEC_ID_NONE, | |
652 CODEC_ID_H264, | |
2305 | 653 NULL, |
100 | 654 raw_write_packet, |
1245
e59b75051ded
dont be too picky about timestampsbeing wrong if the destination container is without timestamps and raw of the raw video / raw audio sort
michael
parents:
1169
diff
changeset
|
655 .flags= AVFMT_NOTIMESTAMPS, |
100 | 656 }; |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
657 #endif //CONFIG_MUXERS |
100 | 658 |
1167 | 659 AVInputFormat mpegvideo_demuxer = { |
0 | 660 "mpegvideo", |
661 "MPEG video", | |
662 0, | |
663 mpegvideo_probe, | |
664 video_read_header, | |
389
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
665 raw_read_partial_packet, |
0 | 666 raw_read_close, |
1756 | 667 .flags= AVFMT_GENERIC_INDEX, |
0 | 668 .value = CODEC_ID_MPEG1VIDEO, |
669 }; | |
670 | |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
671 #ifdef CONFIG_MUXERS |
1167 | 672 AVOutputFormat mpeg1video_muxer = { |
0 | 673 "mpeg1video", |
674 "MPEG video", | |
675 "video/x-mpeg", | |
814 | 676 "mpg,mpeg,m1v", |
0 | 677 0, |
678 0, | |
679 CODEC_ID_MPEG1VIDEO, | |
2305 | 680 NULL, |
0 | 681 raw_write_packet, |
1245
e59b75051ded
dont be too picky about timestampsbeing wrong if the destination container is without timestamps and raw of the raw video / raw audio sort
michael
parents:
1169
diff
changeset
|
682 .flags= AVFMT_NOTIMESTAMPS, |
0 | 683 }; |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
684 #endif //CONFIG_MUXERS |
0 | 685 |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
686 #ifdef CONFIG_MUXERS |
1167 | 687 AVOutputFormat mpeg2video_muxer = { |
637
76e36d97a27a
Patch for creating m2v files by (Fabrizio Gennari <fabrizio.ge tiscali it)
michael
parents:
576
diff
changeset
|
688 "mpeg2video", |
76e36d97a27a
Patch for creating m2v files by (Fabrizio Gennari <fabrizio.ge tiscali it)
michael
parents:
576
diff
changeset
|
689 "MPEG2 video", |
76e36d97a27a
Patch for creating m2v files by (Fabrizio Gennari <fabrizio.ge tiscali it)
michael
parents:
576
diff
changeset
|
690 NULL, |
76e36d97a27a
Patch for creating m2v files by (Fabrizio Gennari <fabrizio.ge tiscali it)
michael
parents:
576
diff
changeset
|
691 "m2v", |
76e36d97a27a
Patch for creating m2v files by (Fabrizio Gennari <fabrizio.ge tiscali it)
michael
parents:
576
diff
changeset
|
692 0, |
76e36d97a27a
Patch for creating m2v files by (Fabrizio Gennari <fabrizio.ge tiscali it)
michael
parents:
576
diff
changeset
|
693 0, |
76e36d97a27a
Patch for creating m2v files by (Fabrizio Gennari <fabrizio.ge tiscali it)
michael
parents:
576
diff
changeset
|
694 CODEC_ID_MPEG2VIDEO, |
2305 | 695 NULL, |
637
76e36d97a27a
Patch for creating m2v files by (Fabrizio Gennari <fabrizio.ge tiscali it)
michael
parents:
576
diff
changeset
|
696 raw_write_packet, |
1245
e59b75051ded
dont be too picky about timestampsbeing wrong if the destination container is without timestamps and raw of the raw video / raw audio sort
michael
parents:
1169
diff
changeset
|
697 .flags= AVFMT_NOTIMESTAMPS, |
637
76e36d97a27a
Patch for creating m2v files by (Fabrizio Gennari <fabrizio.ge tiscali it)
michael
parents:
576
diff
changeset
|
698 }; |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
699 #endif //CONFIG_MUXERS |
637
76e36d97a27a
Patch for creating m2v files by (Fabrizio Gennari <fabrizio.ge tiscali it)
michael
parents:
576
diff
changeset
|
700 |
1167 | 701 AVInputFormat mjpeg_demuxer = { |
0 | 702 "mjpeg", |
703 "MJPEG video", | |
704 0, | |
705 NULL, | |
706 video_read_header, | |
389
e14fcd57ad2f
decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents:
306
diff
changeset
|
707 raw_read_partial_packet, |
0 | 708 raw_read_close, |
1756 | 709 .flags= AVFMT_GENERIC_INDEX, |
0 | 710 .extensions = "mjpg,mjpeg", |
711 .value = CODEC_ID_MJPEG, | |
712 }; | |
713 | |
1167 | 714 AVInputFormat ingenient_demuxer = { |
868
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
715 "ingenient", |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
716 "Ingenient MJPEG", |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
717 0, |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
718 NULL, |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
719 video_read_header, |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
720 ingenient_read_packet, |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
721 raw_read_close, |
1756 | 722 .flags= AVFMT_GENERIC_INDEX, |
868
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
723 .extensions = "cgi", // FIXME |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
724 .value = CODEC_ID_MJPEG, |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
725 }; |
c6b1dde68f3a
Ingenient MJPEG support, more at http://www.artificis.hu/files/texts/ingenient.txt
alex
parents:
858
diff
changeset
|
726 |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
727 #ifdef CONFIG_MUXERS |
1167 | 728 AVOutputFormat mjpeg_muxer = { |
0 | 729 "mjpeg", |
730 "MJPEG video", | |
731 "video/x-mjpeg", | |
732 "mjpg,mjpeg", | |
733 0, | |
734 0, | |
735 CODEC_ID_MJPEG, | |
2305 | 736 NULL, |
0 | 737 raw_write_packet, |
1245
e59b75051ded
dont be too picky about timestampsbeing wrong if the destination container is without timestamps and raw of the raw video / raw audio sort
michael
parents:
1169
diff
changeset
|
738 .flags= AVFMT_NOTIMESTAMPS, |
0 | 739 }; |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
740 #endif //CONFIG_MUXERS |
0 | 741 |
1773 | 742 AVInputFormat vc1_demuxer = { |
743 "vc1", | |
744 "raw vc1", | |
745 0, | |
746 NULL /* vc1_probe */, | |
747 video_read_header, | |
748 raw_read_partial_packet, | |
749 raw_read_close, | |
750 .extensions = "vc1", | |
751 .value = CODEC_ID_VC1, | |
752 }; | |
753 | |
0 | 754 /* pcm formats */ |
277
a313e1080322
disable encoders where appropriate (patch courtesy of BERO
melanson
parents:
241
diff
changeset
|
755 |
306 | 756 #define PCMINPUTDEF(name, long_name, ext, codec) \ |
1167 | 757 AVInputFormat pcm_ ## name ## _demuxer = {\ |
277
a313e1080322
disable encoders where appropriate (patch courtesy of BERO
melanson
parents:
241
diff
changeset
|
758 #name,\ |
a313e1080322
disable encoders where appropriate (patch courtesy of BERO
melanson
parents:
241
diff
changeset
|
759 long_name,\ |
a313e1080322
disable encoders where appropriate (patch courtesy of BERO
melanson
parents:
241
diff
changeset
|
760 0,\ |
a313e1080322
disable encoders where appropriate (patch courtesy of BERO
melanson
parents:
241
diff
changeset
|
761 NULL,\ |
a313e1080322
disable encoders where appropriate (patch courtesy of BERO
melanson
parents:
241
diff
changeset
|
762 raw_read_header,\ |
a313e1080322
disable encoders where appropriate (patch courtesy of BERO
melanson
parents:
241
diff
changeset
|
763 raw_read_packet,\ |
a313e1080322
disable encoders where appropriate (patch courtesy of BERO
melanson
parents:
241
diff
changeset
|
764 raw_read_close,\ |
306 | 765 pcm_read_seek,\ |
1756 | 766 .flags= AVFMT_GENERIC_INDEX,\ |
277
a313e1080322
disable encoders where appropriate (patch courtesy of BERO
melanson
parents:
241
diff
changeset
|
767 .extensions = ext,\ |
a313e1080322
disable encoders where appropriate (patch courtesy of BERO
melanson
parents:
241
diff
changeset
|
768 .value = codec,\ |
a313e1080322
disable encoders where appropriate (patch courtesy of BERO
melanson
parents:
241
diff
changeset
|
769 }; |
a313e1080322
disable encoders where appropriate (patch courtesy of BERO
melanson
parents:
241
diff
changeset
|
770 |
1121
787a70a8b867
Fix compilation with all combinations of --disable-(de)muxers.
diego
parents:
1078
diff
changeset
|
771 #define PCMOUTPUTDEF(name, long_name, ext, codec) \ |
1167 | 772 AVOutputFormat pcm_ ## name ## _muxer = {\ |
0 | 773 #name,\ |
774 long_name,\ | |
775 NULL,\ | |
776 ext,\ | |
777 0,\ | |
778 codec,\ | |
779 0,\ | |
2305 | 780 NULL,\ |
0 | 781 raw_write_packet,\ |
1245
e59b75051ded
dont be too picky about timestampsbeing wrong if the destination container is without timestamps and raw of the raw video / raw audio sort
michael
parents:
1169
diff
changeset
|
782 .flags= AVFMT_NOTIMESTAMPS,\ |
0 | 783 }; |
1121
787a70a8b867
Fix compilation with all combinations of --disable-(de)muxers.
diego
parents:
1078
diff
changeset
|
784 |
787a70a8b867
Fix compilation with all combinations of --disable-(de)muxers.
diego
parents:
1078
diff
changeset
|
785 |
787a70a8b867
Fix compilation with all combinations of --disable-(de)muxers.
diego
parents:
1078
diff
changeset
|
786 #if !defined(CONFIG_MUXERS) && defined(CONFIG_DEMUXERS) |
787a70a8b867
Fix compilation with all combinations of --disable-(de)muxers.
diego
parents:
1078
diff
changeset
|
787 #define PCMDEF(name, long_name, ext, codec) \ |
787a70a8b867
Fix compilation with all combinations of --disable-(de)muxers.
diego
parents:
1078
diff
changeset
|
788 PCMINPUTDEF(name, long_name, ext, codec) |
787a70a8b867
Fix compilation with all combinations of --disable-(de)muxers.
diego
parents:
1078
diff
changeset
|
789 #elif defined(CONFIG_MUXERS) && !defined(CONFIG_DEMUXERS) |
787a70a8b867
Fix compilation with all combinations of --disable-(de)muxers.
diego
parents:
1078
diff
changeset
|
790 #define PCMDEF(name, long_name, ext, codec) \ |
787a70a8b867
Fix compilation with all combinations of --disable-(de)muxers.
diego
parents:
1078
diff
changeset
|
791 PCMOUTPUTDEF(name, long_name, ext, codec) |
787a70a8b867
Fix compilation with all combinations of --disable-(de)muxers.
diego
parents:
1078
diff
changeset
|
792 #elif defined(CONFIG_MUXERS) && defined(CONFIG_DEMUXERS) |
787a70a8b867
Fix compilation with all combinations of --disable-(de)muxers.
diego
parents:
1078
diff
changeset
|
793 #define PCMDEF(name, long_name, ext, codec) \ |
787a70a8b867
Fix compilation with all combinations of --disable-(de)muxers.
diego
parents:
1078
diff
changeset
|
794 PCMINPUTDEF(name, long_name, ext, codec)\ |
787a70a8b867
Fix compilation with all combinations of --disable-(de)muxers.
diego
parents:
1078
diff
changeset
|
795 PCMOUTPUTDEF(name, long_name, ext, codec) |
787a70a8b867
Fix compilation with all combinations of --disable-(de)muxers.
diego
parents:
1078
diff
changeset
|
796 #else |
787a70a8b867
Fix compilation with all combinations of --disable-(de)muxers.
diego
parents:
1078
diff
changeset
|
797 #define PCMDEF(name, long_name, ext, codec) |
787a70a8b867
Fix compilation with all combinations of --disable-(de)muxers.
diego
parents:
1078
diff
changeset
|
798 #endif |
0 | 799 |
800 #ifdef WORDS_BIGENDIAN | |
801 #define BE_DEF(s) s | |
802 #define LE_DEF(s) NULL | |
803 #else | |
804 #define BE_DEF(s) NULL | |
805 #define LE_DEF(s) s | |
806 #endif | |
807 | |
808 | |
885 | 809 PCMDEF(s16le, "pcm signed 16 bit little endian format", |
0 | 810 LE_DEF("sw"), CODEC_ID_PCM_S16LE) |
811 | |
885 | 812 PCMDEF(s16be, "pcm signed 16 bit big endian format", |
0 | 813 BE_DEF("sw"), CODEC_ID_PCM_S16BE) |
814 | |
885 | 815 PCMDEF(u16le, "pcm unsigned 16 bit little endian format", |
0 | 816 LE_DEF("uw"), CODEC_ID_PCM_U16LE) |
817 | |
885 | 818 PCMDEF(u16be, "pcm unsigned 16 bit big endian format", |
0 | 819 BE_DEF("uw"), CODEC_ID_PCM_U16BE) |
820 | |
885 | 821 PCMDEF(s8, "pcm signed 8 bit format", |
0 | 822 "sb", CODEC_ID_PCM_S8) |
823 | |
885 | 824 PCMDEF(u8, "pcm unsigned 8 bit format", |
0 | 825 "ub", CODEC_ID_PCM_U8) |
826 | |
885 | 827 PCMDEF(mulaw, "pcm mu law format", |
0 | 828 "ul", CODEC_ID_PCM_MULAW) |
829 | |
885 | 830 PCMDEF(alaw, "pcm A law format", |
0 | 831 "al", CODEC_ID_PCM_ALAW) |
832 | |
64 | 833 static int rawvideo_read_packet(AVFormatContext *s, AVPacket *pkt) |
0 | 834 { |
835 int packet_size, ret, width, height; | |
836 AVStream *st = s->streams[0]; | |
837 | |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
838 width = st->codec->width; |
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
839 height = st->codec->height; |
0 | 840 |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
814
diff
changeset
|
841 packet_size = avpicture_get_size(st->codec->pix_fmt, width, height); |
128 | 842 if (packet_size < 0) |
537 | 843 return -1; |
0 | 844 |
775 | 845 ret= av_get_packet(&s->pb, pkt, packet_size); |
0 | 846 |
847 pkt->stream_index = 0; | |
775 | 848 if (ret != packet_size) { |
2274
b21c2af60bc9
Replace all occurrences of AVERROR_IO with AVERROR(EIO).
takis
parents:
2273
diff
changeset
|
849 return AVERROR(EIO); |
0 | 850 } else { |
851 return 0; | |
852 } | |
853 } | |
854 | |
1167 | 855 AVInputFormat rawvideo_demuxer = { |
0 | 856 "rawvideo", |
857 "raw video format", | |
858 0, | |
859 NULL, | |
860 raw_read_header, | |
861 rawvideo_read_packet, | |
862 raw_read_close, | |
1756 | 863 .flags= AVFMT_GENERIC_INDEX, |
2099 | 864 .extensions = "yuv,cif,qcif,rgb", |
0 | 865 .value = CODEC_ID_RAWVIDEO, |
866 }; | |
867 | |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
868 #ifdef CONFIG_MUXERS |
1167 | 869 AVOutputFormat rawvideo_muxer = { |
0 | 870 "rawvideo", |
871 "raw video format", | |
872 NULL, | |
2038 | 873 "yuv,rgb", |
0 | 874 0, |
875 CODEC_ID_NONE, | |
876 CODEC_ID_RAWVIDEO, | |
2305 | 877 NULL, |
0 | 878 raw_write_packet, |
1245
e59b75051ded
dont be too picky about timestampsbeing wrong if the destination container is without timestamps and raw of the raw video / raw audio sort
michael
parents:
1169
diff
changeset
|
879 .flags= AVFMT_NOTIMESTAMPS, |
0 | 880 }; |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
881 #endif //CONFIG_MUXERS |
0 | 882 |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
883 #ifdef CONFIG_MUXERS |
468 | 884 static int null_write_packet(struct AVFormatContext *s, AVPacket *pkt) |
0 | 885 { |
886 return 0; | |
887 } | |
888 | |
1167 | 889 AVOutputFormat null_muxer = { |
0 | 890 "null", |
891 "null video format", | |
892 NULL, | |
893 NULL, | |
894 0, | |
895 #ifdef WORDS_BIGENDIAN | |
896 CODEC_ID_PCM_S16BE, | |
897 #else | |
898 CODEC_ID_PCM_S16LE, | |
899 #endif | |
900 CODEC_ID_RAWVIDEO, | |
2305 | 901 NULL, |
0 | 902 null_write_packet, |
1245
e59b75051ded
dont be too picky about timestampsbeing wrong if the destination container is without timestamps and raw of the raw video / raw audio sort
michael
parents:
1169
diff
changeset
|
903 .flags = AVFMT_NOFILE | AVFMT_RAWPICTURE | AVFMT_NOTIMESTAMPS, |
0 | 904 }; |
858
66cc656ea404
Replace CONFIG_ENCODERS/CONFIG_DECODERS with CONFIG_MUXERS/CONFIG_DEMUXERS
diego
parents:
820
diff
changeset
|
905 #endif //CONFIG_MUXERS |