int ch;
int off=0;
const int os= (out->planar ? 1 :out->ch_count) *out->bps;
+ unsigned misaligned = 0;
av_assert0(ctx->channels == out->ch_count);
+ if (ctx->in_simd_align_mask) {
+ int planes = in->planar ? in->ch_count : 1;
+ unsigned m = 0;
+ for (ch = 0; ch < planes; ch++)
+ m |= (intptr_t)in->ch[ch];
+ misaligned |= m & ctx->in_simd_align_mask;
+ }
+ if (ctx->out_simd_align_mask) {
+ int planes = out->planar ? out->ch_count : 1;
+ unsigned m = 0;
+ for (ch = 0; ch < planes; ch++)
+ m |= (intptr_t)out->ch[ch];
+ misaligned |= m & ctx->out_simd_align_mask;
+ }
+
//FIXME optimize common cases
- if(ctx->simd_f && !ctx->ch_map){
+ if(ctx->simd_f && !ctx->ch_map && !misaligned){
off = len&~15;
av_assert1(off>=0);
av_assert1(off<=len);