Originally committed as revision 14531 to svn://svn.ffmpeg.org/ffmpeg/trunk
Peter Ross authored on 2008/08/04 16:35:07... | ... |
@@ -33,6 +33,7 @@ OBJS-$(CONFIG_BFI_DEMUXER) += bfi.o |
33 | 33 |
OBJS-$(CONFIG_C93_DEMUXER) += c93.o vocdec.o voc.o |
34 | 34 |
OBJS-$(CONFIG_CRC_MUXER) += crcenc.o |
35 | 35 |
OBJS-$(CONFIG_DAUD_DEMUXER) += daud.o |
36 |
+OBJS-$(CONFIG_DAUD_MUXER) += daud.o |
|
36 | 37 |
OBJS-$(CONFIG_DIRAC_DEMUXER) += raw.o |
37 | 38 |
OBJS-$(CONFIG_DIRAC_MUXER) += raw.o |
38 | 39 |
OBJS-$(CONFIG_DSICIN_DEMUXER) += dsicin.o |
... | ... |
@@ -68,7 +68,7 @@ void av_register_all(void) |
68 | 68 |
REGISTER_DEMUXER (BFI, bfi); |
69 | 69 |
REGISTER_DEMUXER (C93, c93); |
70 | 70 |
REGISTER_MUXER (CRC, crc); |
71 |
- REGISTER_DEMUXER (DAUD, daud); |
|
71 |
+ REGISTER_MUXDEMUX (DAUD, daud); |
|
72 | 72 |
REGISTER_MUXDEMUX (DIRAC, dirac); |
73 | 73 |
REGISTER_DEMUXER (DSICIN, dsicin); |
74 | 74 |
REGISTER_MUXDEMUX (DTS, dts); |
... | ... |
@@ -47,6 +47,24 @@ static int daud_packet(AVFormatContext *s, AVPacket *pkt) { |
47 | 47 |
return ret; |
48 | 48 |
} |
49 | 49 |
|
50 |
+static int daud_write_header(struct AVFormatContext *s) |
|
51 |
+{ |
|
52 |
+ AVCodecContext *codec = s->streams[0]->codec; |
|
53 |
+ if (codec->channels!=6 || codec->sample_rate!=96000) |
|
54 |
+ return -1; |
|
55 |
+ return 0; |
|
56 |
+} |
|
57 |
+ |
|
58 |
+static int daud_write_packet(struct AVFormatContext *s, AVPacket *pkt) |
|
59 |
+{ |
|
60 |
+ put_be16(s->pb, pkt->size); |
|
61 |
+ put_be16(s->pb, 0x8010); // unknown |
|
62 |
+ put_buffer(s->pb, pkt->data, pkt->size); |
|
63 |
+ put_flush_packet(s->pb); |
|
64 |
+ return 0; |
|
65 |
+} |
|
66 |
+ |
|
67 |
+#if CONFIG_DAUD_DEMUXER |
|
50 | 68 |
AVInputFormat daud_demuxer = { |
51 | 69 |
"daud", |
52 | 70 |
NULL_IF_CONFIG_SMALL("D-Cinema audio format"), |
... | ... |
@@ -58,3 +76,20 @@ AVInputFormat daud_demuxer = { |
58 | 58 |
NULL, |
59 | 59 |
.extensions = "302", |
60 | 60 |
}; |
61 |
+#endif |
|
62 |
+ |
|
63 |
+#ifdef CONFIG_DAUD_MUXER |
|
64 |
+AVOutputFormat daud_muxer = |
|
65 |
+{ |
|
66 |
+ "daud", |
|
67 |
+ NULL_IF_CONFIG_SMALL("D-Cinema audio format"), |
|
68 |
+ NULL, |
|
69 |
+ "302", |
|
70 |
+ 0, |
|
71 |
+ CODEC_ID_PCM_S24DAUD, |
|
72 |
+ CODEC_ID_NONE, |
|
73 |
+ daud_write_header, |
|
74 |
+ daud_write_packet, |
|
75 |
+ .flags= AVFMT_NOTIMESTAMPS, |
|
76 |
+}; |
|
77 |
+#endif |