ffmpeg | branch: master | James Almer <jamr...@gmail.com> | Fri Mar 25 16:46:46 2022 -0300| [f2967490f16393cc9c3c1a74db1672ada129e06f] | committer: James Almer
avutil/channel_layout: return earlier on UNSPEC layouts in av_channel_layout_subset() No point running all 64 iterations in the loop to never write anything to ret. Also make ambisonic layouts check its mask too while at it. Signed-off-by: James Almer <jamr...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f2967490f16393cc9c3c1a74db1672ada129e06f --- libavutil/channel_layout.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/libavutil/channel_layout.c b/libavutil/channel_layout.c index c28b8928da..21b70173b7 100644 --- a/libavutil/channel_layout.c +++ b/libavutil/channel_layout.c @@ -989,12 +989,16 @@ uint64_t av_channel_layout_subset(const AVChannelLayout *channel_layout, uint64_t ret = 0; int i; - if (channel_layout->order == AV_CHANNEL_ORDER_NATIVE) + switch (channel_layout->order) { + case AV_CHANNEL_ORDER_NATIVE: + case AV_CHANNEL_ORDER_AMBISONIC: return channel_layout->u.mask & mask; - - for (i = 0; i < 64; i++) - if (mask & (1ULL << i) && av_channel_layout_index_from_channel(channel_layout, i) >= 0) - ret |= (1ULL << i); + case AV_CHANNEL_ORDER_CUSTOM: + for (i = 0; i < 64; i++) + if (mask & (1ULL << i) && av_channel_layout_index_from_channel(channel_layout, i) >= 0) + ret |= (1ULL << i); + break; + } return ret; } _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".