aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat
diff options
context:
space:
mode:
authorDiego Biurrun <diego@biurrun.de>2012-10-17 21:32:13 +0200
committerDiego Biurrun <diego@biurrun.de>2012-10-18 16:12:45 +0200
commit7b2121e7e2e161f0610fa89d168f3b85d2ca58fb (patch)
tree290750dc3ddbeda30fc52d9a1021c22db5abbebd /libavformat
parent0af1fe845a9d7112da0a58d33a4fc81fe7c47e95 (diff)
downloadffmpeg-7b2121e7e2e161f0610fa89d168f3b85d2ca58fb.tar.gz
riff: Move functions around to be covered by appropriate #ifdefs
This fixes compilation with --disable-muxers.
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/riff.c158
1 files changed, 79 insertions, 79 deletions
diff --git a/libavformat/riff.c b/libavformat/riff.c
index d591aa81e0..3676b76f54 100644
--- a/libavformat/riff.c
+++ b/libavformat/riff.c
@@ -531,6 +531,84 @@ void ff_put_bmp_header(AVIOContext *pb, AVCodecContext *enc, const AVCodecTag *t
if (!for_asf && enc->extradata_size & 1)
avio_w8(pb, 0);
}
+
+void ff_parse_specific_params(AVCodecContext *stream, int *au_rate, int *au_ssize, int *au_scale)
+{
+ int gcd;
+ int audio_frame_size;
+
+ /* We use the known constant frame size for the codec if known, otherwise
+ fallback to using AVCodecContext.frame_size, which is not as reliable
+ for indicating packet duration */
+ audio_frame_size = av_get_audio_frame_duration(stream, 0);
+ if (!audio_frame_size)
+ audio_frame_size = stream->frame_size;
+
+ *au_ssize= stream->block_align;
+ if (audio_frame_size && stream->sample_rate) {
+ *au_scale = audio_frame_size;
+ *au_rate= stream->sample_rate;
+ }else if(stream->codec_type == AVMEDIA_TYPE_VIDEO ||
+ stream->codec_type == AVMEDIA_TYPE_DATA ||
+ stream->codec_type == AVMEDIA_TYPE_SUBTITLE){
+ *au_scale= stream->time_base.num;
+ *au_rate = stream->time_base.den;
+ }else{
+ *au_scale= stream->block_align ? stream->block_align*8 : 8;
+ *au_rate = stream->bit_rate ? stream->bit_rate : 8*stream->sample_rate;
+ }
+ gcd= av_gcd(*au_scale, *au_rate);
+ *au_scale /= gcd;
+ *au_rate /= gcd;
+}
+
+void ff_riff_write_info_tag(AVIOContext *pb, const char *tag, const char *str)
+{
+ int len = strlen(str);
+ if (len > 0) {
+ len++;
+ ffio_wfourcc(pb, tag);
+ avio_wl32(pb, len);
+ avio_put_str(pb, str);
+ if (len & 1)
+ avio_w8(pb, 0);
+ }
+}
+
+static int riff_has_valid_tags(AVFormatContext *s)
+{
+ int i;
+ AVDictionaryEntry *t = NULL;
+
+ for (i = 0; *ff_riff_tags[i]; i++) {
+ if ((t = av_dict_get(s->metadata, ff_riff_tags[i], NULL, AV_DICT_MATCH_CASE)))
+ return 1;
+ }
+
+ return 0;
+}
+
+void ff_riff_write_info(AVFormatContext *s)
+{
+ AVIOContext *pb = s->pb;
+ int i;
+ int64_t list_pos;
+ AVDictionaryEntry *t = NULL;
+
+ ff_metadata_conv(&s->metadata, ff_riff_info_conv, NULL);
+
+ /* writing empty LIST is not nice and may cause problems */
+ if (!riff_has_valid_tags(s))
+ return;
+
+ list_pos = ff_start_tag(pb, "LIST");
+ ffio_wfourcc(pb, "INFO");
+ for (i = 0; *ff_riff_tags[i]; i++) {
+ if ((t = av_dict_get(s->metadata, ff_riff_tags[i], NULL, AV_DICT_MATCH_CASE)))
+ ff_riff_write_info_tag(s->pb, t->key, t->value);
+ }
+ ff_end_tag(pb, list_pos);
+}
#endif //CONFIG_MUXERS
#if CONFIG_DEMUXERS
@@ -632,37 +710,6 @@ int ff_get_bmp_header(AVIOContext *pb, AVStream *st)
avio_rl32(pb); /* ClrImportant */
return tag1;
}
-#endif // CONFIG_DEMUXERS
-
-void ff_parse_specific_params(AVCodecContext *stream, int *au_rate, int *au_ssize, int *au_scale)
-{
- int gcd;
- int audio_frame_size;
-
- /* We use the known constant frame size for the codec if known, otherwise
- fallback to using AVCodecContext.frame_size, which is not as reliable
- for indicating packet duration */
- audio_frame_size = av_get_audio_frame_duration(stream, 0);
- if (!audio_frame_size)
- audio_frame_size = stream->frame_size;
-
- *au_ssize= stream->block_align;
- if (audio_frame_size && stream->sample_rate) {
- *au_scale = audio_frame_size;
- *au_rate= stream->sample_rate;
- }else if(stream->codec_type == AVMEDIA_TYPE_VIDEO ||
- stream->codec_type == AVMEDIA_TYPE_DATA ||
- stream->codec_type == AVMEDIA_TYPE_SUBTITLE){
- *au_scale= stream->time_base.num;
- *au_rate = stream->time_base.den;
- }else{
- *au_scale= stream->block_align ? stream->block_align*8 : 8;
- *au_rate = stream->bit_rate ? stream->bit_rate : 8*stream->sample_rate;
- }
- gcd= av_gcd(*au_scale, *au_rate);
- *au_scale /= gcd;
- *au_rate /= gcd;
-}
int ff_read_riff_info(AVFormatContext *s, int64_t size)
{
@@ -708,51 +755,4 @@ int ff_read_riff_info(AVFormatContext *s, int64_t size)
return 0;
}
-
-static int riff_has_valid_tags(AVFormatContext *s)
-{
- int i;
- AVDictionaryEntry *t = NULL;
-
- for (i = 0; *ff_riff_tags[i]; i++) {
- if ((t = av_dict_get(s->metadata, ff_riff_tags[i], NULL, AV_DICT_MATCH_CASE)))
- return 1;
- }
-
- return 0;
-}
-
-void ff_riff_write_info_tag(AVIOContext *pb, const char *tag, const char *str)
-{
- int len = strlen(str);
- if (len > 0) {
- len++;
- ffio_wfourcc(pb, tag);
- avio_wl32(pb, len);
- avio_put_str(pb, str);
- if (len & 1)
- avio_w8(pb, 0);
- }
-}
-
-void ff_riff_write_info(AVFormatContext *s)
-{
- AVIOContext *pb = s->pb;
- int i;
- int64_t list_pos;
- AVDictionaryEntry *t = NULL;
-
- ff_metadata_conv(&s->metadata, ff_riff_info_conv, NULL);
-
- /* writing empty LIST is not nice and may cause problems */
- if (!riff_has_valid_tags(s))
- return;
-
- list_pos = ff_start_tag(pb, "LIST");
- ffio_wfourcc(pb, "INFO");
- for (i = 0; *ff_riff_tags[i]; i++) {
- if ((t = av_dict_get(s->metadata, ff_riff_tags[i], NULL, AV_DICT_MATCH_CASE)))
- ff_riff_write_info_tag(s->pb, t->key, t->value);
- }
- ff_end_tag(pb, list_pos);
-}
+#endif // CONFIG_DEMUXERS