Browse code

lavf: add functions for accessing the fourcc<->CodecID mapping tables.

Fixes bug 212.

Anton Khirnov authored on 2012/01/27 21:33:09
Showing 4 changed files
... ...
@@ -13,6 +13,9 @@ libavutil:   2011-04-18
13 13
 
14 14
 API changes, most recent first:
15 15
 
16
+2012-01-31 - xxxxxxx - lavf 54.01.0
17
+  Add avformat_get_riff_video_tags() and avformat_get_riff_audio_tags().
18
+
16 19
 2012-01-31 - xxxxxxx - lavc 54.01.0
17 20
   Add avcodec_is_open() function.
18 21
 
... ...
@@ -10,6 +10,7 @@ OBJS = allformats.o         \
10 10
        metadata.o           \
11 11
        options.o            \
12 12
        os_support.o         \
13
+       riff.o               \
13 14
        sdp.o                \
14 15
        seek.o               \
15 16
        utils.o              \
... ...
@@ -25,8 +26,8 @@ OBJS-$(CONFIG_ADX_DEMUXER)               += adxdec.o
25 25
 OBJS-$(CONFIG_ADX_MUXER)                 += rawenc.o
26 26
 OBJS-$(CONFIG_ADTS_MUXER)                += adtsenc.o
27 27
 OBJS-$(CONFIG_AEA_DEMUXER)               += aea.o pcm.o
28
-OBJS-$(CONFIG_AIFF_DEMUXER)              += aiffdec.o riff.o pcm.o
29
-OBJS-$(CONFIG_AIFF_MUXER)                += aiffenc.o riff.o
28
+OBJS-$(CONFIG_AIFF_DEMUXER)              += aiffdec.o pcm.o
29
+OBJS-$(CONFIG_AIFF_MUXER)                += aiffenc.o
30 30
 OBJS-$(CONFIG_AMR_DEMUXER)               += amr.o
31 31
 OBJS-$(CONFIG_AMR_MUXER)                 += amr.o
32 32
 OBJS-$(CONFIG_ANM_DEMUXER)               += anm.o
... ...
@@ -34,14 +35,14 @@ OBJS-$(CONFIG_APC_DEMUXER)               += apc.o
34 34
 OBJS-$(CONFIG_APE_DEMUXER)               += ape.o apetag.o
35 35
 OBJS-$(CONFIG_APPLEHTTP_DEMUXER)         += applehttp.o
36 36
 OBJS-$(CONFIG_ASF_DEMUXER)               += asfdec.o asf.o asfcrypt.o \
37
-                                            riff.o avlanguage.o
38
-OBJS-$(CONFIG_ASF_MUXER)                 += asfenc.o asf.o riff.o
37
+                                            avlanguage.o
38
+OBJS-$(CONFIG_ASF_MUXER)                 += asfenc.o asf.o
39 39
 OBJS-$(CONFIG_ASS_DEMUXER)               += assdec.o
40 40
 OBJS-$(CONFIG_ASS_MUXER)                 += assenc.o
41 41
 OBJS-$(CONFIG_AU_DEMUXER)                += au.o pcm.o
42 42
 OBJS-$(CONFIG_AU_MUXER)                  += au.o
43
-OBJS-$(CONFIG_AVI_DEMUXER)               += avidec.o riff.o
44
-OBJS-$(CONFIG_AVI_MUXER)                 += avienc.o riff.o
43
+OBJS-$(CONFIG_AVI_DEMUXER)               += avidec.o
44
+OBJS-$(CONFIG_AVI_MUXER)                 += avienc.o
45 45
 OBJS-$(CONFIG_AVISYNTH)                  += avisynth.o
46 46
 OBJS-$(CONFIG_AVM2_MUXER)                += swfenc.o
47 47
 OBJS-$(CONFIG_AVS_DEMUXER)               += avs.o vocdec.o voc.o
... ...
@@ -51,7 +52,7 @@ OBJS-$(CONFIG_BINK_DEMUXER)              += bink.o
51 51
 OBJS-$(CONFIG_BMV_DEMUXER)               += bmv.o
52 52
 OBJS-$(CONFIG_C93_DEMUXER)               += c93.o vocdec.o voc.o
53 53
 OBJS-$(CONFIG_CAF_DEMUXER)               += cafdec.o caf.o mov.o mov_chan.o \
54
-                                            riff.o isom.o
54
+                                            isom.o
55 55
 OBJS-$(CONFIG_CAVSVIDEO_DEMUXER)         += cavsvideodec.o rawdec.o
56 56
 OBJS-$(CONFIG_CAVSVIDEO_MUXER)           += rawenc.o
57 57
 OBJS-$(CONFIG_CDG_DEMUXER)               += cdg.o
... ...
@@ -68,7 +69,7 @@ OBJS-$(CONFIG_DTS_DEMUXER)               += dtsdec.o rawdec.o
68 68
 OBJS-$(CONFIG_DTS_MUXER)                 += rawenc.o
69 69
 OBJS-$(CONFIG_DV_DEMUXER)                += dv.o
70 70
 OBJS-$(CONFIG_DV_MUXER)                  += dvenc.o
71
-OBJS-$(CONFIG_DXA_DEMUXER)               += dxa.o riff.o
71
+OBJS-$(CONFIG_DXA_DEMUXER)               += dxa.o
72 72
 OBJS-$(CONFIG_EA_CDATA_DEMUXER)          += eacdata.o
73 73
 OBJS-$(CONFIG_EA_DEMUXER)                += electronicarts.o
74 74
 OBJS-$(CONFIG_EAC3_DEMUXER)              += ac3dec.o rawdec.o
... ...
@@ -112,7 +113,7 @@ OBJS-$(CONFIG_INGENIENT_DEMUXER)         += ingenientdec.o rawdec.o
112 112
 OBJS-$(CONFIG_IPMOVIE_DEMUXER)           += ipmovie.o
113 113
 OBJS-$(CONFIG_ISS_DEMUXER)               += iss.o
114 114
 OBJS-$(CONFIG_IV8_DEMUXER)               += iv8.o
115
-OBJS-$(CONFIG_IVF_DEMUXER)               += ivfdec.o riff.o
115
+OBJS-$(CONFIG_IVF_DEMUXER)               += ivfdec.o
116 116
 OBJS-$(CONFIG_IVF_MUXER)                 += ivfenc.o
117 117
 OBJS-$(CONFIG_JV_DEMUXER)                += jvdec.o
118 118
 OBJS-$(CONFIG_LATM_DEMUXER)              += rawdec.o
... ...
@@ -122,9 +123,9 @@ OBJS-$(CONFIG_LXF_DEMUXER)               += lxfdec.o
122 122
 OBJS-$(CONFIG_M4V_DEMUXER)               += m4vdec.o rawdec.o
123 123
 OBJS-$(CONFIG_M4V_MUXER)                 += rawenc.o
124 124
 OBJS-$(CONFIG_MATROSKA_DEMUXER)          += matroskadec.o matroska.o \
125
-                                            riff.o isom.o rmdec.o rm.o
125
+                                            isom.o rmdec.o rm.o
126 126
 OBJS-$(CONFIG_MATROSKA_MUXER)            += matroskaenc.o matroska.o \
127
-                                            riff.o isom.o avc.o \
127
+                                            isom.o avc.o \
128 128
                                             flacenc_header.o avlanguage.o
129 129
 OBJS-$(CONFIG_MD5_MUXER)                 += md5enc.o
130 130
 OBJS-$(CONFIG_MJPEG_DEMUXER)             += rawdec.o
... ...
@@ -133,9 +134,9 @@ OBJS-$(CONFIG_MLP_DEMUXER)               += rawdec.o
133 133
 OBJS-$(CONFIG_MLP_MUXER)                 += rawenc.o
134 134
 OBJS-$(CONFIG_MM_DEMUXER)                += mm.o
135 135
 OBJS-$(CONFIG_MMF_DEMUXER)               += mmf.o pcm.o
136
-OBJS-$(CONFIG_MMF_MUXER)                 += mmf.o riff.o
137
-OBJS-$(CONFIG_MOV_DEMUXER)               += mov.o riff.o isom.o mov_chan.o
138
-OBJS-$(CONFIG_MOV_MUXER)                 += movenc.o riff.o isom.o avc.o \
136
+OBJS-$(CONFIG_MMF_MUXER)                 += mmf.o
137
+OBJS-$(CONFIG_MOV_DEMUXER)               += mov.o isom.o mov_chan.o
138
+OBJS-$(CONFIG_MOV_MUXER)                 += movenc.o isom.o avc.o \
139 139
                                             movenchint.o rtpenc_chain.o \
140 140
                                             mov_chan.o
141 141
 OBJS-$(CONFIG_MP2_MUXER)                 += mp3enc.o rawenc.o
... ...
@@ -164,9 +165,9 @@ OBJS-$(CONFIG_MXG_DEMUXER)               += mxg.o
164 164
 OBJS-$(CONFIG_NC_DEMUXER)                += ncdec.o
165 165
 OBJS-$(CONFIG_NSV_DEMUXER)               += nsvdec.o
166 166
 OBJS-$(CONFIG_NULL_MUXER)                += nullenc.o
167
-OBJS-$(CONFIG_NUT_DEMUXER)               += nutdec.o nut.o riff.o
168
-OBJS-$(CONFIG_NUT_MUXER)                 += nutenc.o nut.o riff.o
169
-OBJS-$(CONFIG_NUV_DEMUXER)               += nuv.o riff.o
167
+OBJS-$(CONFIG_NUT_DEMUXER)               += nutdec.o nut.o
168
+OBJS-$(CONFIG_NUT_MUXER)                 += nutenc.o nut.o
169
+OBJS-$(CONFIG_NUV_DEMUXER)               += nuv.o
170 170
 OBJS-$(CONFIG_OGG_DEMUXER)               += oggdec.o         \
171 171
                                             oggparsecelt.o   \
172 172
                                             oggparsedirac.o  \
... ...
@@ -176,7 +177,6 @@ OBJS-$(CONFIG_OGG_DEMUXER)               += oggdec.o         \
176 176
                                             oggparsespeex.o  \
177 177
                                             oggparsetheora.o \
178 178
                                             oggparsevorbis.o \
179
-                                            riff.o \
180 179
                                             vorbiscomment.o
181 180
 OBJS-$(CONFIG_OGG_MUXER)                 += oggenc.o \
182 181
                                             vorbiscomment.o
... ...
@@ -301,28 +301,28 @@ OBJS-$(CONFIG_VMD_DEMUXER)               += sierravmd.o
301 301
 OBJS-$(CONFIG_VOC_DEMUXER)               += vocdec.o voc.o
302 302
 OBJS-$(CONFIG_VOC_MUXER)                 += vocenc.o voc.o
303 303
 OBJS-$(CONFIG_VQF_DEMUXER)               += vqf.o
304
-OBJS-$(CONFIG_W64_DEMUXER)               += wav.o riff.o pcm.o
305
-OBJS-$(CONFIG_WAV_DEMUXER)               += wav.o riff.o pcm.o
306
-OBJS-$(CONFIG_WAV_MUXER)                 += wav.o riff.o
304
+OBJS-$(CONFIG_W64_DEMUXER)               += wav.o pcm.o
305
+OBJS-$(CONFIG_WAV_DEMUXER)               += wav.o pcm.o
306
+OBJS-$(CONFIG_WAV_MUXER)                 += wav.o
307 307
 OBJS-$(CONFIG_WC3_DEMUXER)               += wc3movie.o
308 308
 OBJS-$(CONFIG_WEBM_MUXER)                += matroskaenc.o matroska.o \
309
-                                            riff.o isom.o avc.o \
309
+                                            isom.o avc.o \
310 310
                                             flacenc_header.o avlanguage.o
311 311
 OBJS-$(CONFIG_WSAUD_DEMUXER)             += westwood_aud.o
312 312
 OBJS-$(CONFIG_WSVQA_DEMUXER)             += westwood_vqa.o
313 313
 OBJS-$(CONFIG_WTV_DEMUXER)               += wtv.o asfdec.o asf.o asfcrypt.o \
314
-                                            avlanguage.o mpegts.o isom.o riff.o
314
+                                            avlanguage.o mpegts.o isom.o
315 315
 OBJS-$(CONFIG_WV_DEMUXER)                += wv.o apetag.o
316 316
 OBJS-$(CONFIG_XA_DEMUXER)                += xa.o
317
-OBJS-$(CONFIG_XMV_DEMUXER)               += xmv.o riff.o
318
-OBJS-$(CONFIG_XWMA_DEMUXER)              += xwma.o riff.o
317
+OBJS-$(CONFIG_XMV_DEMUXER)               += xmv.o
318
+OBJS-$(CONFIG_XWMA_DEMUXER)              += xwma.o
319 319
 OBJS-$(CONFIG_YOP_DEMUXER)               += yop.o
320 320
 OBJS-$(CONFIG_YUV4MPEGPIPE_MUXER)        += yuv4mpeg.o
321 321
 OBJS-$(CONFIG_YUV4MPEGPIPE_DEMUXER)      += yuv4mpeg.o
322 322
 
323 323
 # external libraries
324
-OBJS-$(CONFIG_LIBNUT_DEMUXER)            += libnut.o riff.o
325
-OBJS-$(CONFIG_LIBNUT_MUXER)              += libnut.o riff.o
324
+OBJS-$(CONFIG_LIBNUT_DEMUXER)            += libnut.o
325
+OBJS-$(CONFIG_LIBNUT_MUXER)              += libnut.o
326 326
 
327 327
 # protocols I/O
328 328
 OBJS+= avio.o aviobuf.o
... ...
@@ -1601,6 +1601,30 @@ int av_match_ext(const char *filename, const char *extensions);
1601 1601
 int avformat_query_codec(AVOutputFormat *ofmt, enum CodecID codec_id, int std_compliance);
1602 1602
 
1603 1603
 /**
1604
+ * @defgroup riff_fourcc RIFF FourCCs
1605
+ * @{
1606
+ * Get the tables mapping RIFF FourCCs to libavcodec CodecIDs. The tables are
1607
+ * meant to be passed to av_codec_get_id()/av_codec_get_tag() as in the
1608
+ * following code:
1609
+ * @code
1610
+ * uint32_t tag = MKTAG('H', '2', '6', '4');
1611
+ * const struct AVCodecTag *table[] = { avformat_get_riff_video_tags(), 0 };
1612
+ * enum CodecID id = av_codec_get_id(table, tag);
1613
+ * @endcode
1614
+ */
1615
+/**
1616
+ * @return the table mapping RIFF FourCCs for video to libavcodec CodecID.
1617
+ */
1618
+const struct AVCodecTag *avformat_get_riff_video_tags(void);
1619
+/**
1620
+ * @return the table mapping RIFF FourCCs for audio to CodecID.
1621
+ */
1622
+const struct AVCodecTag *avformat_get_riff_audio_tags(void);
1623
+/**
1624
+ * @}
1625
+ */
1626
+
1627
+/**
1604 1628
  * @}
1605 1629
  */
1606 1630
 
... ...
@@ -3874,3 +3874,12 @@ int ff_add_param_change(AVPacket *pkt, int32_t channels,
3874 3874
     }
3875 3875
     return 0;
3876 3876
 }
3877
+
3878
+const struct AVCodecTag *avformat_get_riff_video_tags(void)
3879
+{
3880
+    return ff_codec_bmp_tags;
3881
+}
3882
+const struct AVCodecTag *avformat_get_riff_audio_tags(void)
3883
+{
3884
+    return ff_codec_wav_tags;
3885
+}