Originally committed as revision 24993 to svn://svn.ffmpeg.org/ffmpeg/trunk
| ... | ... |
@@ -21,8 +21,8 @@ OBJS-$(CONFIG_AAC_DEMUXER) += aacdec.o id3v1.o id3v2.o raw.o |
| 21 | 21 |
OBJS-$(CONFIG_AC3_DEMUXER) += ac3dec.o raw.o |
| 22 | 22 |
OBJS-$(CONFIG_AC3_MUXER) += raw.o |
| 23 | 23 |
OBJS-$(CONFIG_ADTS_MUXER) += adtsenc.o |
| 24 |
-OBJS-$(CONFIG_AEA_DEMUXER) += aea.o raw.o |
|
| 25 |
-OBJS-$(CONFIG_AIFF_DEMUXER) += aiffdec.o riff.o raw.o |
|
| 24 |
+OBJS-$(CONFIG_AEA_DEMUXER) += aea.o pcm.o |
|
| 25 |
+OBJS-$(CONFIG_AIFF_DEMUXER) += aiffdec.o riff.o pcm.o |
|
| 26 | 26 |
OBJS-$(CONFIG_AIFF_MUXER) += aiffenc.o riff.o |
| 27 | 27 |
OBJS-$(CONFIG_AMR_DEMUXER) += amr.o |
| 28 | 28 |
OBJS-$(CONFIG_AMR_MUXER) += amr.o |
| ... | ... |
@@ -35,7 +35,7 @@ OBJS-$(CONFIG_ASF_DEMUXER) += asfdec.o asf.o asfcrypt.o \ |
| 35 | 35 |
OBJS-$(CONFIG_ASF_MUXER) += asfenc.o asf.o riff.o |
| 36 | 36 |
OBJS-$(CONFIG_ASS_DEMUXER) += assdec.o |
| 37 | 37 |
OBJS-$(CONFIG_ASS_MUXER) += assenc.o |
| 38 |
-OBJS-$(CONFIG_AU_DEMUXER) += au.o raw.o |
|
| 38 |
+OBJS-$(CONFIG_AU_DEMUXER) += au.o pcm.o |
|
| 39 | 39 |
OBJS-$(CONFIG_AU_MUXER) += au.o |
| 40 | 40 |
OBJS-$(CONFIG_AVI_DEMUXER) += avidec.o riff.o avi.o |
| 41 | 41 |
OBJS-$(CONFIG_AVI_MUXER) += avienc.o riff.o avi.o |
| ... | ... |
@@ -116,7 +116,7 @@ OBJS-$(CONFIG_MJPEG_MUXER) += raw.o |
| 116 | 116 |
OBJS-$(CONFIG_MLP_DEMUXER) += raw.o |
| 117 | 117 |
OBJS-$(CONFIG_MLP_MUXER) += raw.o |
| 118 | 118 |
OBJS-$(CONFIG_MM_DEMUXER) += mm.o |
| 119 |
-OBJS-$(CONFIG_MMF_DEMUXER) += mmf.o raw.o |
|
| 119 |
+OBJS-$(CONFIG_MMF_DEMUXER) += mmf.o pcm.o |
|
| 120 | 120 |
OBJS-$(CONFIG_MMF_MUXER) += mmf.o riff.o |
| 121 | 121 |
OBJS-$(CONFIG_MOV_DEMUXER) += mov.o riff.o isom.o |
| 122 | 122 |
OBJS-$(CONFIG_MOV_MUXER) += movenc.o riff.o isom.o avc.o movenchint.o |
| ... | ... |
@@ -160,46 +160,46 @@ OBJS-$(CONFIG_OGG_DEMUXER) += oggdec.o \ |
| 160 | 160 |
vorbiscomment.o |
| 161 | 161 |
OBJS-$(CONFIG_OGG_MUXER) += oggenc.o \ |
| 162 | 162 |
vorbiscomment.o |
| 163 |
-OBJS-$(CONFIG_OMA_DEMUXER) += oma.o raw.o id3v2.o id3v1.o |
|
| 164 |
-OBJS-$(CONFIG_PCM_ALAW_DEMUXER) += raw.o |
|
| 163 |
+OBJS-$(CONFIG_OMA_DEMUXER) += oma.o pcm.o id3v2.o id3v1.o |
|
| 164 |
+OBJS-$(CONFIG_PCM_ALAW_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 165 | 165 |
OBJS-$(CONFIG_PCM_ALAW_MUXER) += raw.o |
| 166 |
-OBJS-$(CONFIG_PCM_F32BE_DEMUXER) += raw.o |
|
| 166 |
+OBJS-$(CONFIG_PCM_F32BE_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 167 | 167 |
OBJS-$(CONFIG_PCM_F32BE_MUXER) += raw.o |
| 168 |
-OBJS-$(CONFIG_PCM_F32LE_DEMUXER) += raw.o |
|
| 168 |
+OBJS-$(CONFIG_PCM_F32LE_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 169 | 169 |
OBJS-$(CONFIG_PCM_F32LE_MUXER) += raw.o |
| 170 |
-OBJS-$(CONFIG_PCM_F64BE_DEMUXER) += raw.o |
|
| 170 |
+OBJS-$(CONFIG_PCM_F64BE_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 171 | 171 |
OBJS-$(CONFIG_PCM_F64BE_MUXER) += raw.o |
| 172 |
-OBJS-$(CONFIG_PCM_F64LE_DEMUXER) += raw.o |
|
| 172 |
+OBJS-$(CONFIG_PCM_F64LE_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 173 | 173 |
OBJS-$(CONFIG_PCM_F64LE_MUXER) += raw.o |
| 174 |
-OBJS-$(CONFIG_PCM_MULAW_DEMUXER) += raw.o |
|
| 174 |
+OBJS-$(CONFIG_PCM_MULAW_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 175 | 175 |
OBJS-$(CONFIG_PCM_MULAW_MUXER) += raw.o |
| 176 |
-OBJS-$(CONFIG_PCM_S16BE_DEMUXER) += raw.o |
|
| 176 |
+OBJS-$(CONFIG_PCM_S16BE_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 177 | 177 |
OBJS-$(CONFIG_PCM_S16BE_MUXER) += raw.o |
| 178 |
-OBJS-$(CONFIG_PCM_S16LE_DEMUXER) += raw.o |
|
| 178 |
+OBJS-$(CONFIG_PCM_S16LE_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 179 | 179 |
OBJS-$(CONFIG_PCM_S16LE_MUXER) += raw.o |
| 180 |
-OBJS-$(CONFIG_PCM_S24BE_DEMUXER) += raw.o |
|
| 180 |
+OBJS-$(CONFIG_PCM_S24BE_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 181 | 181 |
OBJS-$(CONFIG_PCM_S24BE_MUXER) += raw.o |
| 182 |
-OBJS-$(CONFIG_PCM_S24LE_DEMUXER) += raw.o |
|
| 182 |
+OBJS-$(CONFIG_PCM_S24LE_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 183 | 183 |
OBJS-$(CONFIG_PCM_S24LE_MUXER) += raw.o |
| 184 |
-OBJS-$(CONFIG_PCM_S32BE_DEMUXER) += raw.o |
|
| 184 |
+OBJS-$(CONFIG_PCM_S32BE_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 185 | 185 |
OBJS-$(CONFIG_PCM_S32BE_MUXER) += raw.o |
| 186 |
-OBJS-$(CONFIG_PCM_S32LE_DEMUXER) += raw.o |
|
| 186 |
+OBJS-$(CONFIG_PCM_S32LE_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 187 | 187 |
OBJS-$(CONFIG_PCM_S32LE_MUXER) += raw.o |
| 188 |
-OBJS-$(CONFIG_PCM_S8_DEMUXER) += raw.o |
|
| 188 |
+OBJS-$(CONFIG_PCM_S8_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 189 | 189 |
OBJS-$(CONFIG_PCM_S8_MUXER) += raw.o |
| 190 |
-OBJS-$(CONFIG_PCM_U16BE_DEMUXER) += raw.o |
|
| 190 |
+OBJS-$(CONFIG_PCM_U16BE_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 191 | 191 |
OBJS-$(CONFIG_PCM_U16BE_MUXER) += raw.o |
| 192 |
-OBJS-$(CONFIG_PCM_U16LE_DEMUXER) += raw.o |
|
| 192 |
+OBJS-$(CONFIG_PCM_U16LE_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 193 | 193 |
OBJS-$(CONFIG_PCM_U16LE_MUXER) += raw.o |
| 194 |
-OBJS-$(CONFIG_PCM_U24BE_DEMUXER) += raw.o |
|
| 194 |
+OBJS-$(CONFIG_PCM_U24BE_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 195 | 195 |
OBJS-$(CONFIG_PCM_U24BE_MUXER) += raw.o |
| 196 |
-OBJS-$(CONFIG_PCM_U24LE_DEMUXER) += raw.o |
|
| 196 |
+OBJS-$(CONFIG_PCM_U24LE_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 197 | 197 |
OBJS-$(CONFIG_PCM_U24LE_MUXER) += raw.o |
| 198 |
-OBJS-$(CONFIG_PCM_U32BE_DEMUXER) += raw.o |
|
| 198 |
+OBJS-$(CONFIG_PCM_U32BE_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 199 | 199 |
OBJS-$(CONFIG_PCM_U32BE_MUXER) += raw.o |
| 200 |
-OBJS-$(CONFIG_PCM_U32LE_DEMUXER) += raw.o |
|
| 200 |
+OBJS-$(CONFIG_PCM_U32LE_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 201 | 201 |
OBJS-$(CONFIG_PCM_U32LE_MUXER) += raw.o |
| 202 |
-OBJS-$(CONFIG_PCM_U8_DEMUXER) += raw.o |
|
| 202 |
+OBJS-$(CONFIG_PCM_U8_DEMUXER) += pcmdec.o pcm.o raw.o |
|
| 203 | 203 |
OBJS-$(CONFIG_PCM_U8_MUXER) += raw.o |
| 204 | 204 |
OBJS-$(CONFIG_PVA_DEMUXER) += pva.o |
| 205 | 205 |
OBJS-$(CONFIG_QCP_DEMUXER) += qcp.o |
| ... | ... |
@@ -211,7 +211,7 @@ OBJS-$(CONFIG_RM_DEMUXER) += rmdec.o rm.o |
| 211 | 211 |
OBJS-$(CONFIG_RM_MUXER) += rmenc.o rm.o |
| 212 | 212 |
OBJS-$(CONFIG_ROQ_DEMUXER) += idroqdec.o |
| 213 | 213 |
OBJS-$(CONFIG_ROQ_MUXER) += idroqenc.o raw.o |
| 214 |
-OBJS-$(CONFIG_RSO_DEMUXER) += rsodec.o rso.o raw.o |
|
| 214 |
+OBJS-$(CONFIG_RSO_DEMUXER) += rsodec.o rso.o pcm.o |
|
| 215 | 215 |
OBJS-$(CONFIG_RSO_MUXER) += rsoenc.o rso.o |
| 216 | 216 |
OBJS-$(CONFIG_RPL_DEMUXER) += rpl.o |
| 217 | 217 |
OBJS-$(CONFIG_RTP_MUXER) += rtp.o \ |
| ... | ... |
@@ -244,8 +244,8 @@ OBJS-$(CONFIG_SEGAFILM_DEMUXER) += segafilm.o |
| 244 | 244 |
OBJS-$(CONFIG_SHORTEN_DEMUXER) += raw.o |
| 245 | 245 |
OBJS-$(CONFIG_SIFF_DEMUXER) += siff.o |
| 246 | 246 |
OBJS-$(CONFIG_SMACKER_DEMUXER) += smacker.o |
| 247 |
-OBJS-$(CONFIG_SOL_DEMUXER) += sol.o raw.o |
|
| 248 |
-OBJS-$(CONFIG_SOX_DEMUXER) += soxdec.o raw.o |
|
| 247 |
+OBJS-$(CONFIG_SOL_DEMUXER) += sol.o pcm.o |
|
| 248 |
+OBJS-$(CONFIG_SOX_DEMUXER) += soxdec.o pcm.o |
|
| 249 | 249 |
OBJS-$(CONFIG_SOX_MUXER) += soxenc.o |
| 250 | 250 |
OBJS-$(CONFIG_SPDIF_MUXER) += spdif.o |
| 251 | 251 |
OBJS-$(CONFIG_SRT_DEMUXER) += srtdec.o |
| ... | ... |
@@ -268,8 +268,8 @@ OBJS-$(CONFIG_VMD_DEMUXER) += sierravmd.o |
| 268 | 268 |
OBJS-$(CONFIG_VOC_DEMUXER) += vocdec.o voc.o |
| 269 | 269 |
OBJS-$(CONFIG_VOC_MUXER) += vocenc.o voc.o |
| 270 | 270 |
OBJS-$(CONFIG_VQF_DEMUXER) += vqf.o |
| 271 |
-OBJS-$(CONFIG_W64_DEMUXER) += wav.o riff.o raw.o |
|
| 272 |
-OBJS-$(CONFIG_WAV_DEMUXER) += wav.o riff.o raw.o |
|
| 271 |
+OBJS-$(CONFIG_W64_DEMUXER) += wav.o riff.o pcm.o |
|
| 272 |
+OBJS-$(CONFIG_WAV_DEMUXER) += wav.o riff.o pcm.o |
|
| 273 | 273 |
OBJS-$(CONFIG_WAV_MUXER) += wav.o riff.o |
| 274 | 274 |
OBJS-$(CONFIG_WC3_DEMUXER) += wc3movie.o |
| 275 | 275 |
OBJS-$(CONFIG_WEBM_MUXER) += matroskaenc.o matroska.o \ |
| 52 | 52 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,55 @@ |
| 0 |
+/* |
|
| 1 |
+ * PCM common functions |
|
| 2 |
+ * Copyright (c) 2003 Fabrice Bellard |
|
| 3 |
+ * |
|
| 4 |
+ * This file is part of FFmpeg. |
|
| 5 |
+ * |
|
| 6 |
+ * FFmpeg is free software; you can redistribute it and/or |
|
| 7 |
+ * modify it under the terms of the GNU Lesser General Public |
|
| 8 |
+ * License as published by the Free Software Foundation; either |
|
| 9 |
+ * version 2.1 of the License, or (at your option) any later version. |
|
| 10 |
+ * |
|
| 11 |
+ * FFmpeg is distributed in the hope that it will be useful, |
|
| 12 |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
| 14 |
+ * Lesser General Public License for more details. |
|
| 15 |
+ * |
|
| 16 |
+ * You should have received a copy of the GNU Lesser General Public |
|
| 17 |
+ * License along with FFmpeg; if not, write to the Free Software |
|
| 18 |
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
|
| 19 |
+ */ |
|
| 20 |
+ |
|
| 21 |
+#include "avformat.h" |
|
| 22 |
+#include "pcm.h" |
|
| 23 |
+ |
|
| 24 |
+int pcm_read_seek(AVFormatContext *s, |
|
| 25 |
+ int stream_index, int64_t timestamp, int flags) |
|
| 26 |
+{
|
|
| 27 |
+ AVStream *st; |
|
| 28 |
+ int block_align, byte_rate; |
|
| 29 |
+ int64_t pos, ret; |
|
| 30 |
+ |
|
| 31 |
+ st = s->streams[0]; |
|
| 32 |
+ |
|
| 33 |
+ block_align = st->codec->block_align ? st->codec->block_align : |
|
| 34 |
+ (av_get_bits_per_sample(st->codec->codec_id) * st->codec->channels) >> 3; |
|
| 35 |
+ byte_rate = st->codec->bit_rate ? st->codec->bit_rate >> 3 : |
|
| 36 |
+ block_align * st->codec->sample_rate; |
|
| 37 |
+ |
|
| 38 |
+ if (block_align <= 0 || byte_rate <= 0) |
|
| 39 |
+ return -1; |
|
| 40 |
+ if (timestamp < 0) timestamp = 0; |
|
| 41 |
+ |
|
| 42 |
+ /* compute the position by aligning it to block_align */ |
|
| 43 |
+ pos = av_rescale_rnd(timestamp * byte_rate, |
|
| 44 |
+ st->time_base.num, |
|
| 45 |
+ st->time_base.den * (int64_t)block_align, |
|
| 46 |
+ (flags & AVSEEK_FLAG_BACKWARD) ? AV_ROUND_DOWN : AV_ROUND_UP); |
|
| 47 |
+ pos *= block_align; |
|
| 48 |
+ |
|
| 49 |
+ /* recompute exact position */ |
|
| 50 |
+ st->cur_dts = av_rescale(pos, st->time_base.den, byte_rate * (int64_t)st->time_base.num); |
|
| 51 |
+ if ((ret = url_fseek(s->pb, pos + s->data_offset, SEEK_SET)) < 0) |
|
| 52 |
+ return ret; |
|
| 53 |
+ return 0; |
|
| 54 |
+} |
| 0 | 55 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,30 @@ |
| 0 |
+/* |
|
| 1 |
+ * PCM common functions |
|
| 2 |
+ * Copyright (C) 2007 Aurelien Jacobs <aurel@gnuage.org> |
|
| 3 |
+ * |
|
| 4 |
+ * This file is part of FFmpeg. |
|
| 5 |
+ * |
|
| 6 |
+ * FFmpeg is free software; you can redistribute it and/or |
|
| 7 |
+ * modify it under the terms of the GNU Lesser General Public |
|
| 8 |
+ * License as published by the Free Software Foundation; either |
|
| 9 |
+ * version 2.1 of the License, or (at your option) any later version. |
|
| 10 |
+ * |
|
| 11 |
+ * FFmpeg is distributed in the hope that it will be useful, |
|
| 12 |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
| 14 |
+ * Lesser General Public License for more details. |
|
| 15 |
+ * |
|
| 16 |
+ * You should have received a copy of the GNU Lesser General Public |
|
| 17 |
+ * License along with FFmpeg; if not, write to the Free Software |
|
| 18 |
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
|
| 19 |
+ */ |
|
| 20 |
+ |
|
| 21 |
+#ifndef AVFORMAT_PCM_H |
|
| 22 |
+#define AVFORMAT_PCM_H |
|
| 23 |
+ |
|
| 24 |
+#include "avformat.h" |
|
| 25 |
+ |
|
| 26 |
+int pcm_read_seek(AVFormatContext *s, |
|
| 27 |
+ int stream_index, int64_t timestamp, int flags); |
|
| 28 |
+ |
|
| 29 |
+#endif /* AVFORMAT_PCM_H */ |
| 0 | 30 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,122 @@ |
| 0 |
+/* |
|
| 1 |
+ * RAW PCM demuxers |
|
| 2 |
+ * Copyright (c) 2002 Fabrice Bellard |
|
| 3 |
+ * |
|
| 4 |
+ * This file is part of FFmpeg. |
|
| 5 |
+ * |
|
| 6 |
+ * FFmpeg is free software; you can redistribute it and/or |
|
| 7 |
+ * modify it under the terms of the GNU Lesser General Public |
|
| 8 |
+ * License as published by the Free Software Foundation; either |
|
| 9 |
+ * version 2.1 of the License, or (at your option) any later version. |
|
| 10 |
+ * |
|
| 11 |
+ * FFmpeg is distributed in the hope that it will be useful, |
|
| 12 |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 13 |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
| 14 |
+ * Lesser General Public License for more details. |
|
| 15 |
+ * |
|
| 16 |
+ * You should have received a copy of the GNU Lesser General Public |
|
| 17 |
+ * License along with FFmpeg; if not, write to the Free Software |
|
| 18 |
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
|
| 19 |
+ */ |
|
| 20 |
+ |
|
| 21 |
+#include "avformat.h" |
|
| 22 |
+#include "raw.h" |
|
| 23 |
+#include "pcm.h" |
|
| 24 |
+ |
|
| 25 |
+#define RAW_SAMPLES 1024 |
|
| 26 |
+ |
|
| 27 |
+static int raw_read_packet(AVFormatContext *s, AVPacket *pkt) |
|
| 28 |
+{
|
|
| 29 |
+ int ret, size, bps; |
|
| 30 |
+ // AVStream *st = s->streams[0]; |
|
| 31 |
+ |
|
| 32 |
+ size= RAW_SAMPLES*s->streams[0]->codec->block_align; |
|
| 33 |
+ |
|
| 34 |
+ ret= av_get_packet(s->pb, pkt, size); |
|
| 35 |
+ |
|
| 36 |
+ pkt->stream_index = 0; |
|
| 37 |
+ if (ret < 0) |
|
| 38 |
+ return ret; |
|
| 39 |
+ |
|
| 40 |
+ bps= av_get_bits_per_sample(s->streams[0]->codec->codec_id); |
|
| 41 |
+ assert(bps); // if false there IS a bug elsewhere (NOT in this function) |
|
| 42 |
+ pkt->dts= |
|
| 43 |
+ pkt->pts= pkt->pos*8 / (bps * s->streams[0]->codec->channels); |
|
| 44 |
+ |
|
| 45 |
+ return ret; |
|
| 46 |
+} |
|
| 47 |
+ |
|
| 48 |
+#define PCMDEF(name, long_name, ext, codec) \ |
|
| 49 |
+AVInputFormat pcm_ ## name ## _demuxer = {\
|
|
| 50 |
+ #name,\ |
|
| 51 |
+ NULL_IF_CONFIG_SMALL(long_name),\ |
|
| 52 |
+ 0,\ |
|
| 53 |
+ NULL,\ |
|
| 54 |
+ ff_raw_read_header,\ |
|
| 55 |
+ raw_read_packet,\ |
|
| 56 |
+ NULL,\ |
|
| 57 |
+ pcm_read_seek,\ |
|
| 58 |
+ .flags= AVFMT_GENERIC_INDEX,\ |
|
| 59 |
+ .extensions = ext,\ |
|
| 60 |
+ .value = codec,\ |
|
| 61 |
+}; |
|
| 62 |
+ |
|
| 63 |
+PCMDEF(f64be, "PCM 64 bit floating-point big-endian format", |
|
| 64 |
+ NULL, CODEC_ID_PCM_F64BE) |
|
| 65 |
+ |
|
| 66 |
+PCMDEF(f64le, "PCM 64 bit floating-point little-endian format", |
|
| 67 |
+ NULL, CODEC_ID_PCM_F64LE) |
|
| 68 |
+ |
|
| 69 |
+PCMDEF(f32be, "PCM 32 bit floating-point big-endian format", |
|
| 70 |
+ NULL, CODEC_ID_PCM_F32BE) |
|
| 71 |
+ |
|
| 72 |
+PCMDEF(f32le, "PCM 32 bit floating-point little-endian format", |
|
| 73 |
+ NULL, CODEC_ID_PCM_F32LE) |
|
| 74 |
+ |
|
| 75 |
+PCMDEF(s32be, "PCM signed 32 bit big-endian format", |
|
| 76 |
+ NULL, CODEC_ID_PCM_S32BE) |
|
| 77 |
+ |
|
| 78 |
+PCMDEF(s32le, "PCM signed 32 bit little-endian format", |
|
| 79 |
+ NULL, CODEC_ID_PCM_S32LE) |
|
| 80 |
+ |
|
| 81 |
+PCMDEF(s24be, "PCM signed 24 bit big-endian format", |
|
| 82 |
+ NULL, CODEC_ID_PCM_S24BE) |
|
| 83 |
+ |
|
| 84 |
+PCMDEF(s24le, "PCM signed 24 bit little-endian format", |
|
| 85 |
+ NULL, CODEC_ID_PCM_S24LE) |
|
| 86 |
+ |
|
| 87 |
+PCMDEF(s16be, "PCM signed 16 bit big-endian format", |
|
| 88 |
+ AV_NE("sw", NULL), CODEC_ID_PCM_S16BE)
|
|
| 89 |
+ |
|
| 90 |
+PCMDEF(s16le, "PCM signed 16 bit little-endian format", |
|
| 91 |
+ AV_NE(NULL, "sw"), CODEC_ID_PCM_S16LE) |
|
| 92 |
+ |
|
| 93 |
+PCMDEF(s8, "PCM signed 8 bit format", |
|
| 94 |
+ "sb", CODEC_ID_PCM_S8) |
|
| 95 |
+ |
|
| 96 |
+PCMDEF(u32be, "PCM unsigned 32 bit big-endian format", |
|
| 97 |
+ NULL, CODEC_ID_PCM_U32BE) |
|
| 98 |
+ |
|
| 99 |
+PCMDEF(u32le, "PCM unsigned 32 bit little-endian format", |
|
| 100 |
+ NULL, CODEC_ID_PCM_U32LE) |
|
| 101 |
+ |
|
| 102 |
+PCMDEF(u24be, "PCM unsigned 24 bit big-endian format", |
|
| 103 |
+ NULL, CODEC_ID_PCM_U24BE) |
|
| 104 |
+ |
|
| 105 |
+PCMDEF(u24le, "PCM unsigned 24 bit little-endian format", |
|
| 106 |
+ NULL, CODEC_ID_PCM_U24LE) |
|
| 107 |
+ |
|
| 108 |
+PCMDEF(u16be, "PCM unsigned 16 bit big-endian format", |
|
| 109 |
+ AV_NE("uw", NULL), CODEC_ID_PCM_U16BE)
|
|
| 110 |
+ |
|
| 111 |
+PCMDEF(u16le, "PCM unsigned 16 bit little-endian format", |
|
| 112 |
+ AV_NE(NULL, "uw"), CODEC_ID_PCM_U16LE) |
|
| 113 |
+ |
|
| 114 |
+PCMDEF(u8, "PCM unsigned 8 bit format", |
|
| 115 |
+ "ub", CODEC_ID_PCM_U8) |
|
| 116 |
+ |
|
| 117 |
+PCMDEF(alaw, "PCM A-law format", |
|
| 118 |
+ "al", CODEC_ID_PCM_ALAW) |
|
| 119 |
+ |
|
| 120 |
+PCMDEF(mulaw, "PCM mu-law format", |
|
| 121 |
+ "ul", CODEC_ID_PCM_MULAW) |
| ... | ... |
@@ -36,7 +36,7 @@ int ff_raw_write_packet(AVFormatContext *s, AVPacket *pkt) |
| 36 | 36 |
|
| 37 | 37 |
#if CONFIG_DEMUXERS |
| 38 | 38 |
/* raw input */ |
| 39 |
-static int raw_read_header(AVFormatContext *s, AVFormatParameters *ap) |
|
| 39 |
+int ff_raw_read_header(AVFormatContext *s, AVFormatParameters *ap) |
|
| 40 | 40 |
{
|
| 41 | 41 |
AVStream *st; |
| 42 | 42 |
enum CodecID id; |
| ... | ... |
@@ -81,28 +81,6 @@ static int raw_read_header(AVFormatContext *s, AVFormatParameters *ap) |
| 81 | 81 |
} |
| 82 | 82 |
|
| 83 | 83 |
#define RAW_PACKET_SIZE 1024 |
| 84 |
-#define RAW_SAMPLES 1024 |
|
| 85 |
- |
|
| 86 |
-static int raw_read_packet(AVFormatContext *s, AVPacket *pkt) |
|
| 87 |
-{
|
|
| 88 |
- int ret, size, bps; |
|
| 89 |
- // AVStream *st = s->streams[0]; |
|
| 90 |
- |
|
| 91 |
- size= RAW_SAMPLES*s->streams[0]->codec->block_align; |
|
| 92 |
- |
|
| 93 |
- ret= av_get_packet(s->pb, pkt, size); |
|
| 94 |
- |
|
| 95 |
- pkt->stream_index = 0; |
|
| 96 |
- if (ret < 0) |
|
| 97 |
- return ret; |
|
| 98 |
- |
|
| 99 |
- bps= av_get_bits_per_sample(s->streams[0]->codec->codec_id); |
|
| 100 |
- assert(bps); // if false there IS a bug elsewhere (NOT in this function) |
|
| 101 |
- pkt->dts= |
|
| 102 |
- pkt->pts= pkt->pos*8 / (bps * s->streams[0]->codec->channels); |
|
| 103 |
- |
|
| 104 |
- return ret; |
|
| 105 |
-} |
|
| 106 | 84 |
|
| 107 | 85 |
int ff_raw_read_partial_packet(AVFormatContext *s, AVPacket *pkt) |
| 108 | 86 |
{
|
| ... | ... |
@@ -150,38 +128,6 @@ static int rawvideo_read_packet(AVFormatContext *s, AVPacket *pkt) |
| 150 | 150 |
#endif |
| 151 | 151 |
|
| 152 | 152 |
#if CONFIG_DEMUXERS |
| 153 |
-int pcm_read_seek(AVFormatContext *s, |
|
| 154 |
- int stream_index, int64_t timestamp, int flags) |
|
| 155 |
-{
|
|
| 156 |
- AVStream *st; |
|
| 157 |
- int block_align, byte_rate; |
|
| 158 |
- int64_t pos, ret; |
|
| 159 |
- |
|
| 160 |
- st = s->streams[0]; |
|
| 161 |
- |
|
| 162 |
- block_align = st->codec->block_align ? st->codec->block_align : |
|
| 163 |
- (av_get_bits_per_sample(st->codec->codec_id) * st->codec->channels) >> 3; |
|
| 164 |
- byte_rate = st->codec->bit_rate ? st->codec->bit_rate >> 3 : |
|
| 165 |
- block_align * st->codec->sample_rate; |
|
| 166 |
- |
|
| 167 |
- if (block_align <= 0 || byte_rate <= 0) |
|
| 168 |
- return -1; |
|
| 169 |
- if (timestamp < 0) timestamp = 0; |
|
| 170 |
- |
|
| 171 |
- /* compute the position by aligning it to block_align */ |
|
| 172 |
- pos = av_rescale_rnd(timestamp * byte_rate, |
|
| 173 |
- st->time_base.num, |
|
| 174 |
- st->time_base.den * (int64_t)block_align, |
|
| 175 |
- (flags & AVSEEK_FLAG_BACKWARD) ? AV_ROUND_DOWN : AV_ROUND_UP); |
|
| 176 |
- pos *= block_align; |
|
| 177 |
- |
|
| 178 |
- /* recompute exact position */ |
|
| 179 |
- st->cur_dts = av_rescale(pos, st->time_base.den, byte_rate * (int64_t)st->time_base.num); |
|
| 180 |
- if ((ret = url_fseek(s->pb, pos + s->data_offset, SEEK_SET)) < 0) |
|
| 181 |
- return ret; |
|
| 182 |
- return 0; |
|
| 183 |
-} |
|
| 184 |
- |
|
| 185 | 153 |
int ff_raw_audio_read_header(AVFormatContext *s, |
| 186 | 154 |
AVFormatParameters *ap) |
| 187 | 155 |
{
|
| ... | ... |
@@ -529,7 +475,7 @@ AVInputFormat rawvideo_demuxer = {
|
| 529 | 529 |
NULL_IF_CONFIG_SMALL("raw video format"),
|
| 530 | 530 |
0, |
| 531 | 531 |
NULL, |
| 532 |
- raw_read_header, |
|
| 532 |
+ ff_raw_read_header, |
|
| 533 | 533 |
rawvideo_read_packet, |
| 534 | 534 |
.flags= AVFMT_GENERIC_INDEX, |
| 535 | 535 |
.extensions = "yuv,cif,qcif,rgb", |
| ... | ... |
@@ -581,21 +527,6 @@ AVInputFormat vc1_demuxer = {
|
| 581 | 581 |
|
| 582 | 582 |
/* PCM formats */ |
| 583 | 583 |
|
| 584 |
-#define PCMINPUTDEF(name, long_name, ext, codec) \ |
|
| 585 |
-AVInputFormat pcm_ ## name ## _demuxer = {\
|
|
| 586 |
- #name,\ |
|
| 587 |
- NULL_IF_CONFIG_SMALL(long_name),\ |
|
| 588 |
- 0,\ |
|
| 589 |
- NULL,\ |
|
| 590 |
- raw_read_header,\ |
|
| 591 |
- raw_read_packet,\ |
|
| 592 |
- NULL,\ |
|
| 593 |
- pcm_read_seek,\ |
|
| 594 |
- .flags= AVFMT_GENERIC_INDEX,\ |
|
| 595 |
- .extensions = ext,\ |
|
| 596 |
- .value = codec,\ |
|
| 597 |
-}; |
|
| 598 |
- |
|
| 599 | 584 |
#define PCMOUTPUTDEF(name, long_name, ext, codec) \ |
| 600 | 585 |
AVOutputFormat pcm_ ## name ## _muxer = {\
|
| 601 | 586 |
#name,\ |
| ... | ... |
@@ -611,15 +542,8 @@ AVOutputFormat pcm_ ## name ## _muxer = {\
|
| 611 | 611 |
}; |
| 612 | 612 |
|
| 613 | 613 |
|
| 614 |
-#if !CONFIG_MUXERS && CONFIG_DEMUXERS |
|
| 615 |
-#define PCMDEF(name, long_name, ext, codec) \ |
|
| 616 |
- PCMINPUTDEF(name, long_name, ext, codec) |
|
| 617 |
-#elif CONFIG_MUXERS && !CONFIG_DEMUXERS |
|
| 618 |
-#define PCMDEF(name, long_name, ext, codec) \ |
|
| 619 |
- PCMOUTPUTDEF(name, long_name, ext, codec) |
|
| 620 |
-#elif CONFIG_MUXERS && CONFIG_DEMUXERS |
|
| 614 |
+#if CONFIG_MUXERS |
|
| 621 | 615 |
#define PCMDEF(name, long_name, ext, codec) \ |
| 622 |
- PCMINPUTDEF(name, long_name, ext, codec)\ |
|
| 623 | 616 |
PCMOUTPUTDEF(name, long_name, ext, codec) |
| 624 | 617 |
#else |
| 625 | 618 |
#define PCMDEF(name, long_name, ext, codec) |
| ... | ... |
@@ -24,11 +24,10 @@ |
| 24 | 24 |
|
| 25 | 25 |
#include "avformat.h" |
| 26 | 26 |
|
| 27 |
-int pcm_read_seek(AVFormatContext *s, |
|
| 28 |
- int stream_index, int64_t timestamp, int flags); |
|
| 29 |
- |
|
| 30 | 27 |
int ff_raw_write_packet(AVFormatContext *s, AVPacket *pkt); |
| 31 | 28 |
|
| 29 |
+int ff_raw_read_header(AVFormatContext *s, AVFormatParameters *ap); |
|
| 30 |
+ |
|
| 32 | 31 |
int ff_raw_read_partial_packet(AVFormatContext *s, AVPacket *pkt); |
| 33 | 32 |
|
| 34 | 33 |
int ff_raw_audio_read_header(AVFormatContext *s, AVFormatParameters *ap); |