Как конвертировать RTCVideoFrame в YUV в webrtc iOSIOS

Программируем под IOS
Ответить
Anonymous
 Как конвертировать RTCVideoFrame в YUV в webrtc iOS

Сообщение Anonymous »

Это мой код, преобразованный рендеринг yuv иногда нормальный, иногда ненормальный, есть ли проблемы?

Код: Выделить всё

    func convertRTCVideoFrameToYUV(frame: RTCVideoFrame) -> (yData: Data, uData: Data, vData: Data) {

let i420Buffer = frame.buffer.toI420()

let width = Int(i420Buffer.width)
let height = Int(i420Buffer.height)

let ySize = Int(width * height)

//        let uvWidth = (width + 1) / 2
//        let uvHeight = (height + 1) / 2

//        let uSize = Int(uvWidth * uvHeight)
//        let vSize = Int(uvWidth * uvHeight)
let uSize = Int((width / 2) * (height / 2))
let vSize = Int((width / 2) * (height / 2))

var yData = Data(count: ySize)
var uData = Data(count: uSize)
var vData = Data(count: vSize)

yData.withUnsafeMutableBytes { yBuffer in
guard let yPtr = yBuffer.baseAddress?.assumingMemoryBound(to: UInt8.self) else { return }
let yPlane = i420Buffer.dataY
memcpy(yPtr, yPlane, ySize)
}

uData.withUnsafeMutableBytes { uBuffer in
guard let uPtr = uBuffer.baseAddress?.assumingMemoryBound(to: UInt8.self) else { return }
let uPlane = i420Buffer.dataU
memcpy(uPtr, uPlane, uSize)
}

vData.withUnsafeMutableBytes { vBuffer in
guard let vPtr = vBuffer.baseAddress?.assumingMemoryBound(to: UInt8.self) else { return }
let vPlane = i420Buffer.dataV
memcpy(vPtr, vPlane, vSize)
}

//        adjustForRotation(&yData, &uData, &vData, width, height, frame.rotation)

return (yData, uData, vData)
}
Я испробовал множество методов преобразования, но не смог найти проблему с отображением цветочного экрана

Подробнее здесь: https://stackoverflow.com/questions/785 ... webrtc-ios
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»