[FFmpeg-cvslog] swr: automatically choose s16/flt/ dbl to preserve input precision unless user overrides.
Michael Niedermayer
git at videolan.org
Wed May 2 01:18:42 CEST 2012
ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Wed May 2 00:51:06 2012 +0200| [33f7033452ad59c86d1b34fd57c30f2c693bf04a] | committer: Michael Niedermayer
swr: automatically choose s16/flt/dbl to preserve input precision unless user overrides.
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=33f7033452ad59c86d1b34fd57c30f2c693bf04a
---
libswresample/swresample.c | 15 ++++++++++-----
1 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/libswresample/swresample.c b/libswresample/swresample.c
index 87a885b..6566199 100644
--- a/libswresample/swresample.c
+++ b/libswresample/swresample.c
@@ -208,11 +208,16 @@ int swr_init(struct SwrContext *s){
return AVERROR(EINVAL);
}
- //FIXME should we allow/support using FLT on material that doesnt need it ?
- if(av_get_planar_sample_fmt(s->in_sample_fmt) <= AV_SAMPLE_FMT_S16P || s->int_sample_fmt==AV_SAMPLE_FMT_S16P){
- s->int_sample_fmt= AV_SAMPLE_FMT_S16P;
- }else
- s->int_sample_fmt= AV_SAMPLE_FMT_FLTP;
+ if(s->int_sample_fmt == AV_SAMPLE_FMT_NONE){
+ if(av_get_planar_sample_fmt(s->in_sample_fmt) <= AV_SAMPLE_FMT_S16P){
+ s->int_sample_fmt= AV_SAMPLE_FMT_S16P;
+ }else if(av_get_planar_sample_fmt(s->in_sample_fmt) <= AV_SAMPLE_FMT_FLTP){
+ s->int_sample_fmt= AV_SAMPLE_FMT_FLTP;
+ }else{
+ av_log(s, AV_LOG_DEBUG, "Using double precission mode\n");
+ s->int_sample_fmt= AV_SAMPLE_FMT_DBLP;
+ }
+ }
if( s->int_sample_fmt != AV_SAMPLE_FMT_S16P
&&s->int_sample_fmt != AV_SAMPLE_FMT_S32P
More information about the ffmpeg-cvslog
mailing list