bug notes: ...frame.capturedImage in iOS 12.1 started to show green lines and wrong video frame. Fix was to take real CVPixelBufferGetBytesPerRowOfPlane instead ofCVPixelBufferGetWidth and stretch image with UV coords based on the difference between the two. https://lists.freedesktop.org/archives/gstreamer-devel/2012-November/037921.html Both the stride (bytes of padding added to each row), as well as the extended rows (rows of padding at the bottom or top of the buffer) are important. The extended rows are what changed in iOS6; you can find out how many rows of padding are added to the buffer using: CVPixelBufferGetExtendedPixels(pixelBuffer, &columnsLeft, &columnsRight, &rowsTop, &rowsBottom)
In the example you gave (Medium preset on iOS6) you should be seeingrowsBottom = 8. The stride is effectively CVPixelBufferGetBytesPerRowOfPlane() and includes padding (if any). When no padding is present CVPixelBufferGetBytesPerRowOfPlane() will be equal to CVPixelBufferGetWidth(), otherwise it'll be greater.