ArrayUtils IndexOfBytes needs to move its startIndex back if a partially successful match ends up mismatching. Otherwise a match that starts within this attempted match will be missed.
I noticed this happen in H264Slicer.Slice. It missed a second nal unit start marker (0001) because the bytes contained 00001 which matched the start marker up to 000 and correctly gave up the match when the next 0 didn't match the needed 1. But then it continued without moving the start index back, so missed the 0001 match and returned -1.
My video still played regardless. The nal unit type was type 8 and I'm not sure what that impacts.
I added a test case to cover this.
ArrayUtils IndexOfBytes needs to move its startIndex back if a partially successful match ends up mismatching. Otherwise a match that starts within this attempted match will be missed. I noticed this happen in H264Slicer.Slice. It missed a second nal unit start marker (0001) because the bytes contained 00001 which matched the start marker up to 000 and correctly gave up the match when the next 0 didn't match the needed 1. But then it continued without moving the start index back, so missed the 0001 match and returned -1. My video still played regardless. The nal unit type was type 8 and I'm not sure what that impacts. I added a test case to cover this.