Как уменьшить размер CMSampleBuffer - PullRequest
0 голосов
/ 07 августа 2020

Я пытался отправить данные из расширения широковещательной рассылки с помощью peertalk, но всякий раз, когда я отправляю данные, я получаю ошибку памяти. Со звуком отправка работает нормально, хотя по какой-то причине видео вызывает ошибку памяти, я считаю, что сжатие - единственный способ обойти это, хотя здесь происходят некоторые странные вещи. Вот мой код:

let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)
CVPixelBufferLockBaseAddress(imageBuffer!, CVPixelBufferLockFlags(rawValue: 0))
let bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer!)
let height = CVPixelBufferGetHeight(imageBuffer!)
let Data = NSData(bytes: src_buff, length: bytesPerRow * height)
CVPixelBufferUnlockBaseAddress(imageBuffer!, CVPixelBufferLockFlags(rawValue: 0))
NSLog("Size: " + String(MemoryLayout.size(ofValue: (data as NSCoding)))) //For some reason this sends back a value of 8 bytes
//Send data as NSCoding

Происходят две странные вещи. Во-первых, NSLog, который регистрирует размер, записывает 8 как размер, что означает, что данные, которые я отправляю, имеют размер 8 байт. Во-вторых, несколько кадров попадают в компьютер до ошибки памяти. Я новичок в Swift, поэтому это может быть простая проблема, любая помощь будет оценена.

Также вот ошибка, которую я получаю:

Thread 3: EXC_RESOURCE RESOURCE_TYPE_MEMORY(limit=40MB, unused=0x0)

Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...