OSDN Git Service

Add raw muxers/demuxers for F64/F32/S32/S24/U32/U24 PCM audio.
[coroid/ffmpeg_saccubus.git] / libavformat / raw.c
index 4c4f555..f8b3f5d 100644 (file)
@@ -27,8 +27,8 @@
 #include "avformat.h"
 #include "raw.h"
 
-#ifdef CONFIG_MUXERS
 /* simple formats */
+#ifdef CONFIG_FLAC_MUXER
 static int flac_write_header(struct AVFormatContext *s)
 {
     static const uint8_t header[8] = {
@@ -42,8 +42,9 @@ static int flac_write_header(struct AVFormatContext *s)
     }
     return 0;
 }
+#endif
 
-
+#ifdef CONFIG_ROQ_MUXER
 static int roq_write_header(struct AVFormatContext *s)
 {
     static const uint8_t header[] = {
@@ -55,12 +56,16 @@ static int roq_write_header(struct AVFormatContext *s)
 
     return 0;
 }
+#endif
 
+#ifdef CONFIG_NULL_MUXER
 static int null_write_packet(struct AVFormatContext *s, AVPacket *pkt)
 {
     return 0;
 }
+#endif
 
+#ifdef CONFIG_MUXERS
 static int raw_write_packet(struct AVFormatContext *s, AVPacket *pkt)
 {
     put_buffer(s->pb, pkt->data, pkt->size);
@@ -69,6 +74,7 @@ static int raw_write_packet(struct AVFormatContext *s, AVPacket *pkt)
 }
 #endif
 
+#ifdef CONFIG_DEMUXERS
 /* raw input */
 static int raw_read_header(AVFormatContext *s, AVFormatParameters *ap)
 {
@@ -156,7 +162,9 @@ static int raw_read_partial_packet(AVFormatContext *s, AVPacket *pkt)
     pkt->size = ret;
     return ret;
 }
+#endif
 
+#ifdef CONFIG_RAWVIDEO_DEMUXER
 static int rawvideo_read_packet(AVFormatContext *s, AVPacket *pkt)
 {
     int packet_size, ret, width, height;
@@ -180,7 +188,9 @@ static int rawvideo_read_packet(AVFormatContext *s, AVPacket *pkt)
         return 0;
     }
 }
+#endif
 
+#ifdef CONFIG_INGENIENT_DEMUXER
 // http://www.artificis.hu/files/texts/ingenient.txt
 static int ingenient_read_packet(AVFormatContext *s, AVPacket *pkt)
 {
@@ -216,7 +226,9 @@ static int ingenient_read_packet(AVFormatContext *s, AVPacket *pkt)
     pkt->size = ret;
     return ret;
 }
+#endif
 
+#ifdef CONFIG_DEMUXERS
 int pcm_read_seek(AVFormatContext *s,
                   int stream_index, int64_t timestamp, int flags)
 {
@@ -288,7 +300,9 @@ static int video_read_header(AVFormatContext *s,
 
     return 0;
 }
+#endif
 
+#ifdef CONFIG_MPEGVIDEO_DEMUXER
 #define SEQ_START_CODE          0x000001b3
 #define GOP_START_CODE          0x000001b8
 #define PICTURE_START_CODE      0x00000100
@@ -320,7 +334,9 @@ static int mpegvideo_probe(AVProbeData *p)
         return AVPROBE_SCORE_MAX/2+1; // +1 for .mpg
     return 0;
 }
+#endif
 
+#ifdef CONFIG_M4V_DEMUXER
 #define VISUAL_OBJECT_START_CODE       0x000001b5
 #define VOP_START_CODE                 0x000001b6
 
@@ -347,7 +363,9 @@ static int mpeg4video_probe(AVProbeData *probe_packet)
         return AVPROBE_SCORE_MAX/2;
     return 0;
 }
+#endif
 
+#ifdef CONFIG_H264_DEMUXER
 static int h264_probe(AVProbeData *p)
 {
     uint32_t code= -1;
@@ -392,7 +410,9 @@ static int h264_probe(AVProbeData *p)
         return AVPROBE_SCORE_MAX/2+1; // +1 for .mpg
     return 0;
 }
+#endif
 
+#ifdef CONFIG_H263_DEMUXER
 static int h263_probe(AVProbeData *p)
 {
     int code;
@@ -405,7 +425,9 @@ static int h263_probe(AVProbeData *p)
     }
     return 0;
 }
+#endif
 
+#ifdef CONFIG_H261_DEMUXER
 static int h261_probe(AVProbeData *p)
 {
     int code;
@@ -418,7 +440,9 @@ static int h261_probe(AVProbeData *p)
     }
     return 0;
 }
+#endif
 
+#ifdef CONFIG_DTS_DEMUXER
 #define DCA_MARKER_14B_BE 0x1FFFE800
 #define DCA_MARKER_14B_LE 0xFF1F00E8
 #define DCA_MARKER_RAW_BE 0x7FFE8001
@@ -451,7 +475,9 @@ static int dts_probe(AVProbeData *p)
 
     return 0;
 }
+#endif
 
+#ifdef CONFIG_DIRAC_DEMUXER
 static int dirac_probe(AVProbeData *p)
 {
     if (AV_RL32(p->buf) == MKTAG('B', 'B', 'C', 'D'))
@@ -459,7 +485,9 @@ static int dirac_probe(AVProbeData *p)
     else
         return 0;
 }
+#endif
 
+#ifdef CONFIG_AC3_DEMUXER
 static int ac3_probe(AVProbeData *p)
 {
     int max_frames, first_frames = 0, frames;
@@ -492,16 +520,20 @@ static int ac3_probe(AVProbeData *p)
     else if(max_frames>=1) return 1;
     else                   return 0;
 }
+#endif
 
+#ifdef CONFIG_FLAC_DEMUXER
 static int flac_probe(AVProbeData *p)
 {
     if(memcmp(p->buf, "fLaC", 4)) return 0;
     else                          return AVPROBE_SCORE_MAX / 2;
 }
+#endif
 
 
 /* Note: Do not forget to add new entries to the Makefile as well. */
 
+#ifdef CONFIG_AAC_DEMUXER
 AVInputFormat aac_demuxer = {
     "aac",
     NULL_IF_CONFIG_SMALL("ADTS AAC"),
@@ -513,6 +545,7 @@ AVInputFormat aac_demuxer = {
     .extensions = "aac",
     .value = CODEC_ID_AAC,
 };
+#endif
 
 #ifdef CONFIG_AC3_DEMUXER
 AVInputFormat ac3_demuxer = {
@@ -543,6 +576,7 @@ AVOutputFormat ac3_muxer = {
 };
 #endif
 
+#ifdef CONFIG_DIRAC_DEMUXER
 AVInputFormat dirac_demuxer = {
     "dirac",
     NULL_IF_CONFIG_SMALL("raw Dirac"),
@@ -553,6 +587,7 @@ AVInputFormat dirac_demuxer = {
     .flags= AVFMT_GENERIC_INDEX,
     .value = CODEC_ID_DIRAC,
 };
+#endif
 
 #ifdef CONFIG_DIRAC_MUXER
 AVOutputFormat dirac_muxer = {
@@ -569,6 +604,7 @@ AVOutputFormat dirac_muxer = {
 };
 #endif
 
+#ifdef CONFIG_DTS_DEMUXER
 AVInputFormat dts_demuxer = {
     "dts",
     NULL_IF_CONFIG_SMALL("raw DTS"),
@@ -580,6 +616,7 @@ AVInputFormat dts_demuxer = {
     .extensions = "dts",
     .value = CODEC_ID_DTS,
 };
+#endif
 
 #ifdef CONFIG_DTS_MUXER
 AVOutputFormat dts_muxer = {
@@ -596,6 +633,7 @@ AVOutputFormat dts_muxer = {
 };
 #endif
 
+#ifdef CONFIG_FLAC_DEMUXER
 AVInputFormat flac_demuxer = {
     "flac",
     NULL_IF_CONFIG_SMALL("raw FLAC"),
@@ -607,6 +645,7 @@ AVInputFormat flac_demuxer = {
     .extensions = "flac",
     .value = CODEC_ID_FLAC,
 };
+#endif
 
 #ifdef CONFIG_FLAC_MUXER
 AVOutputFormat flac_muxer = {
@@ -623,6 +662,7 @@ AVOutputFormat flac_muxer = {
 };
 #endif
 
+#ifdef CONFIG_GSM_DEMUXER
 AVInputFormat gsm_demuxer = {
     "gsm",
     NULL_IF_CONFIG_SMALL("GSM"),
@@ -634,7 +674,9 @@ AVInputFormat gsm_demuxer = {
     .extensions = "gsm",
     .value = CODEC_ID_GSM,
 };
+#endif
 
+#ifdef CONFIG_H261_DEMUXER
 AVInputFormat h261_demuxer = {
     "h261",
     NULL_IF_CONFIG_SMALL("raw H.261"),
@@ -646,6 +688,7 @@ AVInputFormat h261_demuxer = {
     .extensions = "h261",
     .value = CODEC_ID_H261,
 };
+#endif
 
 #ifdef CONFIG_H261_MUXER
 AVOutputFormat h261_muxer = {
@@ -662,6 +705,7 @@ AVOutputFormat h261_muxer = {
 };
 #endif
 
+#ifdef CONFIG_H263_DEMUXER
 AVInputFormat h263_demuxer = {
     "h263",
     NULL_IF_CONFIG_SMALL("raw H.263"),
@@ -673,6 +717,7 @@ AVInputFormat h263_demuxer = {
 //    .extensions = "h263", //FIXME remove after writing mpeg4_probe
     .value = CODEC_ID_H263,
 };
+#endif
 
 #ifdef CONFIG_H263_MUXER
 AVOutputFormat h263_muxer = {
@@ -689,6 +734,7 @@ AVOutputFormat h263_muxer = {
 };
 #endif
 
+#ifdef CONFIG_H264_DEMUXER
 AVInputFormat h264_demuxer = {
     "h264",
     NULL_IF_CONFIG_SMALL("raw H.264 video format"),
@@ -700,6 +746,7 @@ AVInputFormat h264_demuxer = {
     .extensions = "h26l,h264,264", //FIXME remove after writing mpeg4_probe
     .value = CODEC_ID_H264,
 };
+#endif
 
 #ifdef CONFIG_H264_MUXER
 AVOutputFormat h264_muxer = {
@@ -716,6 +763,7 @@ AVOutputFormat h264_muxer = {
 };
 #endif
 
+#ifdef CONFIG_INGENIENT_DEMUXER
 AVInputFormat ingenient_demuxer = {
     "ingenient",
     NULL_IF_CONFIG_SMALL("Ingenient MJPEG"),
@@ -727,7 +775,9 @@ AVInputFormat ingenient_demuxer = {
     .extensions = "cgi", // FIXME
     .value = CODEC_ID_MJPEG,
 };
+#endif
 
+#ifdef CONFIG_M4V_DEMUXER
 AVInputFormat m4v_demuxer = {
     "m4v",
     NULL_IF_CONFIG_SMALL("raw MPEG-4 video format"),
@@ -739,6 +789,7 @@ AVInputFormat m4v_demuxer = {
     .extensions = "m4v", //FIXME remove after writing mpeg4_probe
     .value = CODEC_ID_MPEG4,
 };
+#endif
 
 #ifdef CONFIG_M4V_MUXER
 AVOutputFormat m4v_muxer = {
@@ -755,6 +806,7 @@ AVOutputFormat m4v_muxer = {
 };
 #endif
 
+#ifdef CONFIG_MJPEG_DEMUXER
 AVInputFormat mjpeg_demuxer = {
     "mjpeg",
     NULL_IF_CONFIG_SMALL("MJPEG video"),
@@ -766,6 +818,7 @@ AVInputFormat mjpeg_demuxer = {
     .extensions = "mjpg,mjpeg",
     .value = CODEC_ID_MJPEG,
 };
+#endif
 
 #ifdef CONFIG_MJPEG_MUXER
 AVOutputFormat mjpeg_muxer = {
@@ -782,6 +835,7 @@ AVOutputFormat mjpeg_muxer = {
 };
 #endif
 
+#ifdef CONFIG_MLP_DEMUXER
 AVInputFormat mlp_demuxer = {
     "mlp",
     NULL_IF_CONFIG_SMALL("raw MLP"),
@@ -793,6 +847,7 @@ AVInputFormat mlp_demuxer = {
     .extensions = "mlp",
     .value = CODEC_ID_MLP,
 };
+#endif
 
 #ifdef CONFIG_MPEG1VIDEO_MUXER
 AVOutputFormat mpeg1video_muxer = {
@@ -824,6 +879,7 @@ AVOutputFormat mpeg2video_muxer = {
 };
 #endif
 
+#ifdef CONFIG_MPEGVIDEO_DEMUXER
 AVInputFormat mpegvideo_demuxer = {
     "mpegvideo",
     NULL_IF_CONFIG_SMALL("MPEG video"),
@@ -834,6 +890,7 @@ AVInputFormat mpegvideo_demuxer = {
     .flags= AVFMT_GENERIC_INDEX,
     .value = CODEC_ID_MPEG1VIDEO,
 };
+#endif
 
 #ifdef CONFIG_NULL_MUXER
 AVOutputFormat null_muxer = {
@@ -854,6 +911,7 @@ AVOutputFormat null_muxer = {
 };
 #endif
 
+#ifdef CONFIG_RAWVIDEO_DEMUXER
 AVInputFormat rawvideo_demuxer = {
     "rawvideo",
     NULL_IF_CONFIG_SMALL("raw video format"),
@@ -865,6 +923,7 @@ AVInputFormat rawvideo_demuxer = {
     .extensions = "yuv,cif,qcif,rgb",
     .value = CODEC_ID_RAWVIDEO,
 };
+#endif
 
 #ifdef CONFIG_RAWVIDEO_MUXER
 AVOutputFormat rawvideo_muxer = {
@@ -896,6 +955,7 @@ AVOutputFormat roq_muxer =
 };
 #endif
 
+#ifdef CONFIG_SHORTEN_DEMUXER
 AVInputFormat shorten_demuxer = {
     "shn",
     NULL_IF_CONFIG_SMALL("raw Shorten"),
@@ -907,7 +967,9 @@ AVInputFormat shorten_demuxer = {
     .extensions = "shn",
     .value = CODEC_ID_SHORTEN,
 };
+#endif
 
+#ifdef CONFIG_VC1_DEMUXER
 AVInputFormat vc1_demuxer = {
     "vc1",
     NULL_IF_CONFIG_SMALL("raw VC-1"),
@@ -918,6 +980,7 @@ AVInputFormat vc1_demuxer = {
     .extensions = "vc1",
     .value = CODEC_ID_VC1,
 };
+#endif
 
 /* PCM formats */
 
@@ -973,6 +1036,29 @@ AVOutputFormat pcm_ ## name ## _muxer = {\
 #define LE_DEF(s) s
 #endif
 
+PCMDEF(f64be, "PCM 64 bit floating-point big-endian format",
+       NULL, CODEC_ID_PCM_F64BE)
+
+PCMDEF(f64le, "PCM 64 bit floating-point little-endian format",
+       NULL, CODEC_ID_PCM_F64LE)
+
+PCMDEF(f32be, "PCM 32 bit floating-point big-endian format",
+       NULL, CODEC_ID_PCM_F32BE)
+
+PCMDEF(f32le, "PCM 32 bit floating-point little-endian format",
+       NULL, CODEC_ID_PCM_F32LE)
+
+PCMDEF(s32be, "PCM signed 32 bit big-endian format",
+       NULL, CODEC_ID_PCM_S32BE)
+
+PCMDEF(s32le, "PCM signed 32 bit little-endian format",
+       NULL, CODEC_ID_PCM_S32LE)
+
+PCMDEF(s24be, "PCM signed 24 bit big-endian format",
+       NULL, CODEC_ID_PCM_S24BE)
+
+PCMDEF(s24le, "PCM signed 24 bit little-endian format",
+       NULL, CODEC_ID_PCM_S24LE)
 
 PCMDEF(s16be, "PCM signed 16 bit big-endian format",
        BE_DEF("sw"), CODEC_ID_PCM_S16BE)
@@ -983,6 +1069,18 @@ PCMDEF(s16le, "PCM signed 16 bit little-endian format",
 PCMDEF(s8, "PCM signed 8 bit format",
        "sb", CODEC_ID_PCM_S8)
 
+PCMDEF(u32be, "PCM unsigned 32 bit big-endian format",
+       NULL, CODEC_ID_PCM_U32BE)
+
+PCMDEF(u32le, "PCM unsigned 32 bit little-endian format",
+       NULL, CODEC_ID_PCM_U32LE)
+
+PCMDEF(u24be, "PCM unsigned 24 bit big-endian format",
+       NULL, CODEC_ID_PCM_U24BE)
+
+PCMDEF(u24le, "PCM unsigned 24 bit little-endian format",
+       NULL, CODEC_ID_PCM_U24LE)
+
 PCMDEF(u16be, "PCM unsigned 16 bit big-endian format",
        BE_DEF("uw"), CODEC_ID_PCM_U16BE)