QT video frame viewer 관련 질문.

ar의 이미지

캠으로부터 704 x 576, raw(rgb24, 10fps) 데이터를 받아들여 이를 픽셀에 직접뿌리고자 합니다.
현재 구조로는

aucBuf에 프레임 데이터를 받아들여

memcpy(image->bits(), aucBuf, BUF_SIZE);
QPixmap pmap = QPixmap::fromImage(*image, Qt::AutoColor) ;
label1->setPixmap(pmap);
label1->show();
label1->repaint() ;

이런 구조로 뿌려주는데.. 생각보다 딜레이가 심해서 7-8 fps 밖에 못뿌리고 있습니다. -_-;;
ubuntu 가 설치되어 있는 상태이고, X윈도(Gnome) 역시 설치되어 있습니다.

질문 1. fromImage, repaint 메소드에서 100ms 이상의 딜레이가 발생하고 있습니다.
cpu 부하 역시 50%를 넘기고 있고요.. 보다 빠른 방법이 없을까요?

질문 2. frame buffer에 관련한 자료를 찾아보니 qt/embedded 에서만 사용가능하다고 하는 것 같은데..
현 시스템에서 사용이 가능한 것인지요?

레퍼런스 자료나 사이트 알려주시면 감사하겠습니다. ㅡ.ㅜ

klara의 이미지

Xv같은 별도의 라이브러리를 쓰지 않고, Qt만으로 직접 동영상을 뿌려줄려면 OpenGL(QGLWidget)을 이용하는수밖에없습니다.
라벨을 이용하지 마시고 직접 QGLWidget에 그려보세요.
그리고 repaint는 웬만해서는...이라기보다는 절대로 이용하지 않는게 좋습니다. update를 쓰세요.
사실 적으신 코드의 경우는 픽스맵을 지정하면 자동으로 갱신되므로 애시당초 repaint가 필요없지만요.

이미지를 받아와서 update를 호출하고 paintGL혹은 paintEvent에서 이미지를 그리면됩니다.
그리고 이미지를 버퍼로부터 복사해오는 과정이 있는데, 만약 버퍼에 할당된 메모리 해제가 이쪽에서 조절할 수 있다면, QImage의 생성자에 직접 버퍼를 넘겨주어서 복사에 드는 시간도 벌수 있습니다.

ar의 이미지

repaint 메쏘드를 사용하지 않으면.. fps는 최대값에 근접하나..
정상적으로 frame을 화면에 뿌리지 못하는데요.. OpenGL에 대해서
잘 몰라서 질문드립니다. 제가 아는바로는 OpenGL은 3D를 뿌릴때
최적화하여 뿌릴 수 있는 라이브러리가 아닌지요? 단순 frame를 뿌릴때는
2D인데.. 어떠한 효과가 있나요?

klara의 이미지

하드웨어에서 지원한다면 3D도 2D도 모두 가속됩니다.

repaint는 이벤트루프를 거치지 않고 직접 paintEvent를 호출합니다.
동영상 나가는 동안에 GUI관련 컨트롤이 정상적으로 작동하나요?
fps가 낮아서 그럴지도 모르겠습니다만, 일반적인 30fps정도의 동영상을 repaint로 했을때 거의 바로 죽어버린 기억이 납니다.

ar의 이미지

-

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.