summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorclsid2 <clsid2@3b938f2f-1a1a-0410-8054-a526ea5ff92c>2011-03-07 00:46:59 +0000
committerMichael Niedermayer <michaelni@gmx.at>2011-04-03 22:52:58 +0200
commitba7a28045f0de749f5e84fbefeb626da9952226c (patch)
tree75b7cfaf390b30e4773fc36712d1051950e27e8d /libavcodec
parentc9d6da73a8d3b0ff7201b37b1bb2d5f717b8aa37 (diff)
Float output for libavcodec Vorbis decoder
git-svn-id: https://ffdshow-tryout.svn.sourceforge.net/svnroot/ffdshow-tryout@3771 3b938f2f-1a1a-0410-8054-a526ea5ff92c
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/vorbis_dec.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/libavcodec/vorbis_dec.c b/libavcodec/vorbis_dec.c
index 637f510df4..5ed3631950 100644
--- a/libavcodec/vorbis_dec.c
+++ b/libavcodec/vorbis_dec.c
@@ -1007,7 +1007,12 @@ static av_cold int vorbis_decode_init(AVCodecContext *avccontext)
avccontext->channels = vc->audio_channels;
avccontext->sample_rate = vc->audio_samplerate;
avccontext->frame_size = FFMIN(vc->blocksize[0], vc->blocksize[1]) >> 2;
+ /* ffdshow custom code */
+#if CONFIG_AUDIO_FLOAT
+ avccontext->sample_fmt = AV_SAMPLE_FMT_FLT;
+#else
avccontext->sample_fmt = AV_SAMPLE_FMT_S16;
+#endif
return 0 ;
}
@@ -1635,9 +1640,15 @@ static int vorbis_decode_frame(AVCodecContext *avccontext,
len * ff_vorbis_channel_layout_offsets[vc->audio_channels - 1][i];
}
+ /* ffdshow custom code */
+#if CONFIG_AUDIO_FLOAT
+ float_interleave(data, channel_ptrs, len, vc->audio_channels);
+ *data_size = len * sizeof(float) * vc->audio_channels;
+#else
vc->fmt_conv.float_to_int16_interleave(data, channel_ptrs, len,
vc->audio_channels);
*data_size = len * 2 * vc->audio_channels;
+#endif
return buf_size ;
}