Я пытаюсь написать видео-приложение на PyQt4, и я использовал Python ctypes, чтобы подключиться к старой устаревшей библиотеке видеодекодера. Библиотека дает мне 32-битные данные ARGB, и мне нужно превратить их в QImage. У меня это работает следующим образом:
# Copy the rgb image data from the pointer into the buffer
memmove(self.rgb_buffer, self.rgb_buffer_ptr, self.buffer_size)
# Copy the buffer to a python string
imgdata = ""
for a in self.rgb_buffer:
imgdata = imgdata + a
# Create a QImage from the string data
img = QImage(imgdata, 720, 288, QImage.Format_ARGB32)
Проблема в том, что ctypes выводит данные как тип "ctypes.c_char_Array_829440
", и мне нужно превратить их в строку python, чтобы я мог создать QImage. Мой механизм копирования в настоящее время занимает почти 300 мс на изображение, поэтому он мучительно медленный. Часть процесса декодирования и отображения занимает всего около 50 мс.
Кто-нибудь может вспомнить какие-нибудь хитрые ярлыки, которые я могу использовать, чтобы ускорить этот процесс и избежать необходимости дважды копировать буфер, как я делаю в настоящее время?