summaryrefslogtreecommitdiffstats
path: root/libswresample
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2015-04-12 19:43:08 +0200
committerMichael Niedermayer <michaelni@gmx.at>2015-04-12 22:21:34 +0200
commitd7b9cb2f7a51351586791e65fa22e6536ee58c9f (patch)
tree1318ef39375afcce3319123623cf3c07d8d327f0 /libswresample
parent14edc9f3a3924237e4fd57bac301a9cbd263ab79 (diff)
downloadffmpeg-streaming-d7b9cb2f7a51351586791e65fa22e6536ee58c9f.zip
ffmpeg-streaming-d7b9cb2f7a51351586791e65fa22e6536ee58c9f.tar.gz
swresample: Allow reinitialization without ever setting channel counts
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libswresample')
-rw-r--r--libswresample/options.c12
-rw-r--r--libswresample/swresample.c4
-rw-r--r--libswresample/swresample_internal.h4
3 files changed, 14 insertions, 6 deletions
diff --git a/libswresample/options.c b/libswresample/options.c
index 01cdb1e..e970d3b 100644
--- a/libswresample/options.c
+++ b/libswresample/options.c
@@ -35,12 +35,12 @@
#define PARAM AV_OPT_FLAG_AUDIO_PARAM
static const AVOption options[]={
-{"ich" , "set input channel count" , OFFSET( in.ch_count ), AV_OPT_TYPE_INT , {.i64=0 }, 0 , SWR_CH_MAX, PARAM},
-{"in_channel_count" , "set input channel count" , OFFSET( in.ch_count ), AV_OPT_TYPE_INT , {.i64=0 }, 0 , SWR_CH_MAX, PARAM},
-{"och" , "set output channel count" , OFFSET(out.ch_count ), AV_OPT_TYPE_INT , {.i64=0 }, 0 , SWR_CH_MAX, PARAM},
-{"out_channel_count" , "set output channel count" , OFFSET(out.ch_count ), AV_OPT_TYPE_INT , {.i64=0 }, 0 , SWR_CH_MAX, PARAM},
-{"uch" , "set used channel count" , OFFSET(used_ch_count ), AV_OPT_TYPE_INT , {.i64=0 }, 0 , SWR_CH_MAX, PARAM},
-{"used_channel_count" , "set used channel count" , OFFSET(used_ch_count ), AV_OPT_TYPE_INT , {.i64=0 }, 0 , SWR_CH_MAX, PARAM},
+{"ich" , "set input channel count" , OFFSET(user_in_ch_count ), AV_OPT_TYPE_INT, {.i64=0 }, 0 , SWR_CH_MAX, PARAM},
+{"in_channel_count" , "set input channel count" , OFFSET(user_in_ch_count ), AV_OPT_TYPE_INT, {.i64=0 }, 0 , SWR_CH_MAX, PARAM},
+{"och" , "set output channel count" , OFFSET(user_out_ch_count ), AV_OPT_TYPE_INT, {.i64=0 }, 0 , SWR_CH_MAX, PARAM},
+{"out_channel_count" , "set output channel count" , OFFSET(user_out_ch_count ), AV_OPT_TYPE_INT, {.i64=0 }, 0 , SWR_CH_MAX, PARAM},
+{"uch" , "set used channel count" , OFFSET(user_used_ch_count), AV_OPT_TYPE_INT, {.i64=0 }, 0 , SWR_CH_MAX, PARAM},
+{"used_channel_count" , "set used channel count" , OFFSET(user_used_ch_count), AV_OPT_TYPE_INT, {.i64=0 }, 0 , SWR_CH_MAX, PARAM},
{"isr" , "set input sample rate" , OFFSET( in_sample_rate), AV_OPT_TYPE_INT , {.i64=0 }, 0 , INT_MAX , PARAM},
{"in_sample_rate" , "set input sample rate" , OFFSET( in_sample_rate), AV_OPT_TYPE_INT , {.i64=0 }, 0 , INT_MAX , PARAM},
{"osr" , "set output sample rate" , OFFSET(out_sample_rate), AV_OPT_TYPE_INT , {.i64=0 }, 0 , INT_MAX , PARAM},
diff --git a/libswresample/swresample.c b/libswresample/swresample.c
index c2be82c..cb17e16 100644
--- a/libswresample/swresample.c
+++ b/libswresample/swresample.c
@@ -164,6 +164,10 @@ av_cold int swr_init(struct SwrContext *s){
return AVERROR(EINVAL);
}
+ s->out.ch_count = s-> user_out_ch_count;
+ s-> in.ch_count = s-> user_in_ch_count;
+ s->used_ch_count = s->user_used_ch_count;
+
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 77ec9bb..c9e8476 100644
--- a/libswresample/swresample_internal.h
+++ b/libswresample/swresample_internal.h
@@ -112,6 +112,10 @@ struct SwrContext {
int used_ch_count; ///< number of used input channels (mapped channel count if channel_map, otherwise in.ch_count)
int engine;
+ int user_in_ch_count; ///< User set input channel count
+ int user_out_ch_count; ///< User set output channel count
+ int user_used_ch_count; ///< User set used channel count
+
struct DitherContext dither;
int filter_size; /**< length of each FIR filter in the resampling filterbank relative to the cutoff frequency */
OpenPOWER on IntegriCloud