Переключатели контекста должны быть в порядке, если вы используете современный компилятор (старше 10 лет) и не программируете в сборке.Компиляторы знают ABI для своих целевых платформ, поэтому вам не нужно.
Если вы включили точный код, вызвавший сбой вашего приложения, наиболее вероятной причиной являются проблемы с выравниванием.Замените _mm_load_si128
на _mm_loadu_si128
, _mm_store_si128
на _mm_storeu_si128
и посмотрите, поможет ли это.
Обновление 1: другая возможная причина - слишком быстрое завершение версии SSE, которая вызываетошибка параллелизма.Попробуйте добавить, например, Sleep( 2 )
call после цикла, если видео будет работать нормально, это означает, что вам нужно исправить код, который проталкивает или перетаскивает данные между потоками.
Обновление 2: As AlanКак указывалось выше, размер массивов (буферов) не может быть кратным 16 байтам (16 * (nSizeToMix + 7) / 8
).Это, безусловно, приведет к сбою вашего приложения или повреждению памяти.