Optimize YUV channel splitting function
Your multiplication expressions aren't ideal; instead (which might be faster) you could add 4 and subtract srcStride from the previous value at the top of each loop.

Apart from that (and this is just a guess) I guess some other things might in theory make this faster.


Have three loops: write to Luma in the 1st loop, then write to ChromaV in the 2nd loop, and write to ChromaU in the 3rd loop.
Calibrate the length of (number of bytes moved in) each loop, so that the chunk of input data stays in cache for each of the three loops
Use some kind of read-ahead, to ensure that the byte is read before it needs to be written, for example:

Read 1st byte
Read 2nd byte
Read 3rd byte
Read 4th byte
Write 1st byte
Read 5th byte
Write 2nd byte
etc.

Read 4 or 8 bytes at a time, for example into a struct which contains 4 or 8 byte-fields and is a union with an int32 or int64 field.