임베디드 리눅스의 GUI 에 관한 질문드려요!

whasj35의 이미지

안녕하세요~
임베디드 리눅스의 GUI에 대한 초보적인 질문을 드리려고 합니다.

DVR 개발에 대한 질문인데요
(실시간 영상을 화면을 출력하고, 해당 어플리케이션을 띄우는 것입니다..^^)

어떤 GUI를 사용하는 것이 가장 최적일까요?

---------GUI툴킷-----------
QTE
Qutopia
GTK+
SDL
Microwindows
miniGUI
SDL
GTKFB
PicoGUI, ParaGui, Tiny-X, wGui... 등등
-----------------------------------

---------------사양----------------
* CPU : 440ED - 333Mhz
* 메모리 : SDRAM - 64M
Flash - 16M
* OSD : 트루컬러
-----------------------------------

-------------개발 수준(?)----------
기본적으로 영상이 재생되는 레이어가 있고,
그 위에 제어할 수 있는 프로그램이 뜹니다.
여기에는 콤보박스, 팝업창 등의 제어가 필요합니다.
(현란한 수준은 아니지만, 사용자 편이를 고려해 간편히 사용할 수 있을 정도..)
----------------------------------

DVR개발에 가장 많이 사용되는 GUI Toolkit이 궁금합니다.
아무래도 선호하는 것이 그만큼 좋은것 아닐까 생각되서요..

실제 DVR개발에 많이 사용되는 것이나, 추천해주실 만한 것을
조언해 주시면 감사하겠습니다~
(상용 라이센스 비용이 발생하지 않는 것이면 더 기쁠것 같습니다..ㅎㅎ)

irondog의 이미지

일단 마이크로프로세서의 속도나 메모리 용량이라던가 OSD를 쓰시는 것인지 아니면 비디오 카드에서 멀티레이어를 제공 하는 것인지 등에 대한 정보가 없으니 뭐라고 말씀 드리기가 애매하군요. 장비 특성상 OSD를 쓸 확률이 높을 것 같은데, 트루 컬러인지 팔레트 사용인지도 중요 할 것 같습니다.

일단 무거운 GTK+나 Qutopia류 보다는 한단계 낮은 microwindows(nano-x로 이름 바뀌었음)로 테스트를 해보시고 그 보다 무거운 gui를 쓸 것인지 더 낮은 단계의 것을 쓸것인지 판단해 보시는 것이 좋을 것 같습니다.

whasj35의 이미지

글을 수정했습니다 제가 너무 정보없이 질문을 드린것 같아서 ^^;

물론 검색해서 더 찾아볼 수는 있겠지만
처음 시작을 좋지 않는것으로 했다가 결국 뒤엎는 사태를 막기 위해 질문을 드리는 것입니다..

위의 상황을 고려했을 때에도 마이크로윈도우가 적당할까요?
라이센스 비용이 문제되지 않으면서 일정 수준의 GUI구현이 가능한것들이 뭐가 있을까요
(물론 돈들인만큼 좋은 결과가 나오겠지만...-.-)

답변 감사드립니다~

irondog의 이미지

솔직히 업계에서는 간단한 GUI 라이브러리를 자기들이 만들어서 제작하고 있습니다. 스피드 때문에 육중한 framework를 쓰는 것도 불가능 했지만, 그런 framework을 이해하는 수준의 사람도 드물기 때문입니다.

자체 제작한 OSD를 사용하는 라이브러리 수준은 대부분 옛날 dos에서 그래픽 라이브러리 쓰는듯한 형태이고, 대부분 스파게티 소스에 가깝다고 보시면 됩니다. 윈도우 형태의 이벤트 처리나 callback함수는 완전히 사치죠.

심지어 이런류의 칩셋과 레퍼런스 보드를 판매하는 전문 업체의 것들도 보면 그 수준에서 더 나은게 없다고 단언할 정도로 한심한 편입니다.

지금의 스펙이라 하셔도 osd가 얼마나 좋은건지 알 수는 없지만 nano-x(마이크로윈도)도 육중한 편이거나 겨우 사용 할 수 있는 수준이라고 보입니다. 아주 가벼운 라이브러리를 선택 하셔서 이미지 뿌려주는 형태로 가시는게 유리할듯 합니다.

제가 지금 바로 나가야 해서 자세한 이야기는 갔다와서 다시 하도록 하겠습니다. 건투를 빕니다. ^^

whasj35의 이미지

답변 감사합니다 ^^

저같은 경우에도 복잡한 GUI가 아니었기 때문에 라이브러리를 만들어 사용했습니다.
이미지를 출력하는 그런 형태였는데,
좀 더 사용자가 쓰기 편리한 GUI를 개발해야 해서요~
일단 테스트부터 해보는게 우선이겠네요^^
감사합니다 좋은하루 보내세요~

Hyun의 이미지

예전(약 7년 전) nanox를 이용해 UI를 구현했다가 너무 느려서 fb에 창관리자 등 여러 API를 직접 만들어 사용했던 경험이 있습니다.
범용 어플리케이션을 돌릴일이 없으면, 2D 가속이 없으면 직접 만들어 사용하는게 편할 수도 있습니다. 또한, 해당 UI 라이브러리를 사용하려면 해당 라이브러리의 렌더링과 내부 구조를 완전히 파악하고 진행하시는게 좋습니다.


나도 세벌식을 씁니다
whasj35의 이미지

네 답변 감사합니다~
적당한 수준의 툴킷으로 테스트부터 해야겠어요!
좋은하루 보내세요 ^^

philnet의 이미지

요즘 DVR 제품이면 그래도 사양이 어느 정도 받쳐 줘서, nano-X 정도는 무리가 없을 것 같습니다. DVR이라면 MPEG-2/4 decoder가 있을 테고, 웬만한 그런 코덱 칩들은, OSD로도 640x480 해상도에 8bit(256 color)는 문제 없이 지원해 줄 겁니다. 요즘 나오는 괜찮은 HD 디코더 칩들은 1280x720에 32 bit true color도 지원하는 것들이 많죠.

예전에는 frame buffer에 자체 drawing library를 올려서 하는 경우도 많았겠지만, 저는, nano-X + FLTK 조합으로 개발했습니다. nano-X는 (event 처리 + drawing) 기능을 제공하고, FLTK은 가벼운 C++ GUI 개발 프레임워크입니다. MFC나 QT 등의 C++ 프레임워크에 익숙하시다면, FLTK도 괜찮을 것이고요, 그냥 C로 개발하신다면 nano-X 만으로 충분할 것입니다. (참고로 제가 개발했던 환경은, 300 Mhz mips CPU에 64 MB 메모리, 그리고 코덱 칩의 OSD가 32 bit true color를 지원했는데, 위 조합으로 큰 문제 없이 개발했습니다.)

제가 아는 사람들이 근무한 다른 회사들도 아마도 라이센스 비용 때문이었겠지만, QTE나 Qutopia는 대체로 피했던 것 같고요, 몇 년 전에는 nano-X가 많이 쓰였던 것 같은데, 최근 1 ~ 2년 사이에는 DirectFB 가 많이 쓰이는 것 같습니다. DirectFB는 칩 업체에서 HW 가속 기능을 지원하는 게 용이해서 그런지, 멀티미디어 디코더 칩들의 경우 칩 업체에서 지원을 하는 경우도 제법 많이 있습니다.

게다가 DirectFB는 거기에 부가적으로 얹을 수 있는, 예를 들어 GTK 등 라이브러리도 꽤 있어서 좋은 선택 중 하나가 될 수 있겠네요.

whasj35의 이미지

네~ 언급하신 그런 사양들 정도는 됩니다.
아마 말씀하신 그 툴킷들을 제가 참고하면 좋을 것 같아요~
QTE는 사양도 그렇고, 라이센스 비용 때문에 일단 뒤로 미뤄두고 있습니다.
알려주신 것들을 참고로 해서 테스트를 해봐야겠습니다~
좋은답변 주셔서 감사합니다 ^^

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.