| Index: webrtc/sdk/objc/Framework/Classes/RTCI420Shader.mm
|
| diff --git a/webrtc/sdk/objc/Framework/Classes/RTCI420Shader.mm b/webrtc/sdk/objc/Framework/Classes/RTCI420Shader.mm
|
| index d325840cf5d5853e8c019e16b3c4bc622e39f5d9..3665a8cfb9b5b2ca320c105f8d2eb795735fe2d1 100644
|
| --- a/webrtc/sdk/objc/Framework/Classes/RTCI420Shader.mm
|
| +++ b/webrtc/sdk/objc/Framework/Classes/RTCI420Shader.mm
|
| @@ -188,32 +188,34 @@ static const char kI420FragmentShaderSource[] =
|
| GLint textureOffset = _currentTextureSet * 3;
|
| NSAssert(textureOffset + 3 <= kNumTextures, @"invalid offset");
|
|
|
| - if (frame.yPitch != static_cast<int32_t>(frame.width) ||
|
| - frame.uPitch != static_cast<int32_t>(frame.chromaWidth) ||
|
| - frame.vPitch != static_cast<int32_t>(frame.chromaWidth)) {
|
| + const int chromaWidth = (frame.width + 1) / 2;
|
| + const int chromaHeight = (frame.height + 1) / 2;
|
| + if (frame.strideY != frame.width ||
|
| + frame.strideU != chromaWidth ||
|
| + frame.strideV != chromaWidth) {
|
| _planeBuffer.resize(frame.width * frame.height);
|
| }
|
|
|
| - [self uploadPlane:frame.yPlane
|
| + [self uploadPlane:frame.dataY
|
| sampler:_ySampler
|
| offset:textureOffset
|
| width:frame.width
|
| height:frame.height
|
| - stride:frame.yPitch];
|
| + stride:frame.strideY];
|
|
|
| - [self uploadPlane:frame.uPlane
|
| + [self uploadPlane:frame.dataU
|
| sampler:_uSampler
|
| offset:textureOffset + 1
|
| - width:frame.chromaWidth
|
| - height:frame.chromaHeight
|
| - stride:frame.uPitch];
|
| + width:chromaWidth
|
| + height:chromaHeight
|
| + stride:frame.strideU];
|
|
|
| - [self uploadPlane:frame.vPlane
|
| + [self uploadPlane:frame.dataV
|
| sampler:_vSampler
|
| offset:textureOffset + 2
|
| - width:frame.chromaWidth
|
| - height:frame.chromaHeight
|
| - stride:frame.vPitch];
|
| + width:chromaWidth
|
| + height:chromaHeight
|
| + stride:frame.strideV];
|
|
|
| _currentTextureSet = (_currentTextureSet + 1) % kNumTextureSets;
|
| return YES;
|
|
|