私はPyQt4でビデオアプリケーションを作成しようとしています。Pythonのctypesを使用して古いレガシービデオデコーダライブラリをフックしています。ライブラリは私に32ビットのARGBデータを与え、私はそれをQImageに変換する必要があります。私は次のように働いて持っている:ctypesデータをできるだけ早くPython文字列に変換する
# 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
」としてデータを出力し、私はQImageのを構築することができるようにPythonの文字列にそれを有効にする必要があるということです。私のコピーメカニズムは現在、画像あたり約300msかかるため、痛いほど遅いです。プロセスのデコードと表示部分は約50msしかかかりません。
誰もがこのプロセスをスピードアップし、私が現在やっているようにバッファを2回コピーする必要を避けるために取ることができる任意の賢明なショートカットを考えることができますか?
ありがとう、string_at関数がトリックを行いました。私は本当にドキュメントを読むことでより良くなる必要があります。私はそれらを数回チェックして、まだそれを逃した! – chrism1