[FFmpeg-cvslog] swresample: Check channel layouts and channels against each other and print human readable error messages
Michael Niedermayer
git at videolan.org
Sat Apr 25 17:04:44 CEST 2015
ffmpeg | branch: release/2.4 | Michael Niedermayer <michaelni at gmx.at> | Sun Apr 12 21:08:09 2015 +0200| [115961acc15c5d11b4b4b58a906580dd176da2f0] | committer: Michael Niedermayer
swresample: Check channel layouts and channels against each other and print human readable error messages
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
(cherry picked from commit 3c77bb5f23b2e149495c814759beab7eedeede6c)
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=115961acc15c5d11b4b4b58a906580dd176da2f0
---
libswresample/swresample.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/libswresample/swresample.c b/libswresample/swresample.c
index 17082f1..4685a89 100644
--- a/libswresample/swresample.c
+++ b/libswresample/swresample.c
@@ -152,6 +152,7 @@ av_cold void swr_close(SwrContext *s){
av_cold int swr_init(struct SwrContext *s){
int ret;
+ char l1[1024], l2[1024];
clear_context(s);
@@ -278,10 +279,18 @@ av_cold int swr_init(struct SwrContext *s){
return -1;
}
+ av_get_channel_layout_string(l1, sizeof(l1), s-> in.ch_count, s-> in_ch_layout);
+ av_get_channel_layout_string(l2, sizeof(l2), s->out.ch_count, s->out_ch_layout);
+ if (s->out_ch_layout && s->out.ch_count != av_get_channel_layout_nb_channels(s->out_ch_layout)) {
+ av_log(s, AV_LOG_ERROR, "Output channel layout %s mismatches specified channel count %d\n", l2, s->out.ch_count);
+ return AVERROR(EINVAL);
+ }
+ if (s->in_ch_layout && s->used_ch_count != av_get_channel_layout_nb_channels(s->in_ch_layout)) {
+ av_log(s, AV_LOG_ERROR, "Input channel layout %s mismatches specified channel count %d\n", l1, s->used_ch_count);
+ return AVERROR(EINVAL);
+ }
+
if ((!s->out_ch_layout || !s->in_ch_layout) && s->used_ch_count != s->out.ch_count && !s->rematrix_custom) {
- char l1[1024], l2[1024];
- av_get_channel_layout_string(l1, sizeof(l1), s-> in.ch_count, s-> in_ch_layout);
- av_get_channel_layout_string(l2, sizeof(l2), s->out.ch_count, s->out_ch_layout);
av_log(s, AV_LOG_ERROR, "Rematrix is needed between %s and %s "
"but there is not enough information to do it\n", l1, l2);
return -1;
More information about the ffmpeg-cvslog
mailing list