summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <[email protected]>2015-06-22 18:27:27 +0200
committerMichael Niedermayer <[email protected]>2015-07-18 20:23:44 +0200
commite40688ed807f2a5d4346f95c014921815a8be750 (patch)
tree2f3552450b45f9e3d8c1ef3299bc5fe34b067681
parentd403242a289aee3a346d536864485230052b7c57 (diff)
swr: Remember previously set int_sample_format from user
Signed-off-by: Michael Niedermayer <[email protected]> (cherry picked from commit d4325b2fea9e2f4f4a17d0b929f12425e9c39964) Signed-off-by: Michael Niedermayer <[email protected]>
-rw-r--r--libswresample/options.c4
-rw-r--r--libswresample/swresample.c2
-rw-r--r--libswresample/swresample_internal.h1
3 files changed, 5 insertions, 2 deletions
diff --git a/libswresample/options.c b/libswresample/options.c
index de84672834..1bc1a70510 100644
--- a/libswresample/options.c
+++ b/libswresample/options.c
@@ -49,8 +49,8 @@ static const AVOption options[]={
{"in_sample_fmt" , "set input sample format" , OFFSET( in_sample_fmt ), AV_OPT_TYPE_SAMPLE_FMT , {.i64=AV_SAMPLE_FMT_NONE}, -1 , INT_MAX, PARAM},
{"osf" , "set output sample format" , OFFSET(out_sample_fmt ), AV_OPT_TYPE_SAMPLE_FMT , {.i64=AV_SAMPLE_FMT_NONE}, -1 , INT_MAX, PARAM},
{"out_sample_fmt" , "set output sample format" , OFFSET(out_sample_fmt ), AV_OPT_TYPE_SAMPLE_FMT , {.i64=AV_SAMPLE_FMT_NONE}, -1 , INT_MAX, PARAM},
-{"tsf" , "set internal sample format" , OFFSET(int_sample_fmt ), AV_OPT_TYPE_SAMPLE_FMT , {.i64=AV_SAMPLE_FMT_NONE}, -1 , INT_MAX, PARAM},
-{"internal_sample_fmt" , "set internal sample format" , OFFSET(int_sample_fmt ), AV_OPT_TYPE_SAMPLE_FMT , {.i64=AV_SAMPLE_FMT_NONE}, -1 , INT_MAX, PARAM},
+{"tsf" , "set internal sample format" , OFFSET(user_int_sample_fmt), AV_OPT_TYPE_SAMPLE_FMT , {.i64=AV_SAMPLE_FMT_NONE}, -1 , INT_MAX, PARAM},
+{"internal_sample_fmt" , "set internal sample format" , OFFSET(user_int_sample_fmt), AV_OPT_TYPE_SAMPLE_FMT , {.i64=AV_SAMPLE_FMT_NONE}, -1 , INT_MAX, PARAM},
{"icl" , "set input channel layout" , OFFSET(user_in_ch_layout ), AV_OPT_TYPE_CHANNEL_LAYOUT, {.i64=0 }, 0 , INT64_MAX , PARAM, "channel_layout"},
{"in_channel_layout" , "set input channel layout" , OFFSET(user_in_ch_layout ), AV_OPT_TYPE_CHANNEL_LAYOUT, {.i64=0 }, 0 , INT64_MAX , PARAM, "channel_layout"},
{"ocl" , "set output channel layout" , OFFSET(user_out_ch_layout), AV_OPT_TYPE_CHANNEL_LAYOUT, {.i64=0 }, 0 , INT64_MAX , PARAM, "channel_layout"},
diff --git a/libswresample/swresample.c b/libswresample/swresample.c
index ab02bac89a..693a403f90 100644
--- a/libswresample/swresample.c
+++ b/libswresample/swresample.c
@@ -173,6 +173,8 @@ av_cold int swr_init(struct SwrContext *s){
s-> in_ch_layout = s-> user_in_ch_layout;
s->out_ch_layout = s->user_out_ch_layout;
+ s->int_sample_fmt= s->user_int_sample_fmt;
+
if(av_get_channel_layout_nb_channels(s-> in_ch_layout) > SWR_CH_MAX) {
av_log(s, AV_LOG_WARNING, "Input channel layout 0x%"PRIx64" is invalid or unsupported.\n", s-> in_ch_layout);
s->in_ch_layout = 0;
diff --git a/libswresample/swresample_internal.h b/libswresample/swresample_internal.h
index 6669cbfd70..e36faf117d 100644
--- a/libswresample/swresample_internal.h
+++ b/libswresample/swresample_internal.h
@@ -119,6 +119,7 @@ struct SwrContext {
int user_used_ch_count; ///< User set used channel count
int64_t user_in_ch_layout; ///< User set input channel layout
int64_t user_out_ch_layout; ///< User set output channel layout
+ enum AVSampleFormat user_int_sample_fmt; ///< User set internal sample format
struct DitherContext dither;