X window에서 Xv extension이라는 것이 꼭 필요한 데 이거 될 때

익명 사용자의 이미지

XvQueryExtension함수를 쓰면 Success를 잘 반환하다가 갑자기 안되는 군요.

왜 그럴까요?

될 때도 있고 안 될 때도 있고...

Xv가 먼지 개념도 없고 자료를 찾을 만한데도 없고 ㅠ.ㅠ

미치겠습니다.

익명 사용자의 이미지


return 값을 확인 해 보시는게 좋겠네요.
추즉하건대 메모리 사용상의 문제일 가능성이
보입니다. 사용한 메모리는 반드시 돌려 주시는게 좋을 듯

man Xv하면 관련 함수들이 상세히 나오니 참조 하세요.

Returned Values
[Success]
Returns True if XvQueryExtension(3X) completed successfully.
[XvBadExtension]
Returned if the Xv video extension is not available for the named
display.
[XvBadAlloc]
Returned if XvQueryExtension(3X) failed to allocate memory to
process the request.

익명 사용자의 이미지

return 값을 확인 해 보시는게 좋겠네요.
추즉하건대 메모리 사용상의 문제일 가능성이
보입니다. 사용한 메모리는 반드시 돌려 주시는게 좋을 듯

메모리 문제는 아닌 것 같습니다.

메모리 문제라면 리부팅하면 잘 되어야 하는 데 그렇지가 않군요.

지금 몇번해봤는 데 그대로군요...

Returned Values
[Success]
Returns True if XvQueryExtension(3X) completed successfully.
[XvBadExtension]
Returned if the Xv video extension is not available for the named
display.
[XvBadAlloc]
Returned if XvQueryExtension(3X) failed to allocate memory to
process the request.

XvBadExtension이 나오는 군요.....

잘 되던 것이 왜 갑자기 XvBadExtension로 바뀌었을까요?.....

엑스 윈도우를 다시 설정한 것도 아닌 데요...

Xlib extension "XVideo" missing on display "0.0".

라는 메세지도 나오는 군요. ^^;;

답변 갑사합니다.

꾸벅 ^^

즐거운 하루 되세요~~ ^^

익명 사용자의 이미지

어떤 목적으로 사용하시는지는 모르겠지만

혹시 YUV 출력을 하드웨어가속기능을 위해 출력하
려는 거라면

SDL ( http//www.libsdl.org ) 을 사용해보는 것도
괜찮은 방법입니다.

관련 코드도 내부 소스코드를 보셔도 좋구요.

다른 좀더 간편한 코드를 윈하시면,

mplayer(기본적으론 이녀석도 SDL을 사용해
XVideo extension을 사용합니다.) 나
xine같은 리눅스용 미디어 재생기의 Xv사용코드를
봐보시는게 좋습니다.
( http//freshmeat.net 에서 검색해보세요.)

( 근데 기본적으로 YUV 컬러모델 시리즈에 대한
이해가 있어야 한다는건 당근 알고 계시겠죠? ^^;; )

이상 허접 답변이었습니다.

doogle.

익명 사용자의 이미지

실은 그 xine이라는 녀석을 띄웠을 때 잘 될 때도 있고 화면이 끊길 때도 있더군요.

차이점을 알아봤더니 Xv라는 녀석이 될 때도 있고 안 될 때도 있어서....

지금 X-window 소스코드 까지 보구 있습니다.

아~~이게 머하는 짓인지.....

괴로워요 ㅠ.

익명 사용자의 이미지

비디오 카드를 어떤거 쓰시는지 궁금하군요.
(저는 Voodoo Banshee PCI (비데오램16M)사용중)

XVideo extension은 아직 버그가 많다는 느낌입니다.
yootiong님께서는 그냥 재생에 문제가 있다고 하시지만
저같은 경우는 특정 사이즈의 미디어 재생의 경우
X서버가 바로 죽어버립니다. -_-;;; 미칠 노릇이죠.

대표적으로 640x480 ...

(mplayer나 aviplay가 이런 식이구요. xine은 미디어
크기가 아닌 자체적으로 특정크기로 재생하므로
그럭저럭 잘 볼 수 있는 상태입니다.)

xine등 재생기에서 xv를 사용하는 것은 일차적으로
미디어가 YUV출력을 지원하느냐 안하느냐에
달려있습니다. 근데 근래 파일들은 대부분 YUV출력
을 지원하니 별 상관은 없구요.(예전의 무슨 Indeo
코덱이나 , 시네파크 코덱같은 경우 RGB출력인
경우가 있습니다. 이런경우는 xv를 강제로 설정하지
않으면 그냥 rgb로 출력하기도 하죠. 뭐.. 다들 아시는
내용일거구..)

결과적으로 X서버 내부 하드웨어 관련 문제죠. 쩝.

그나저나 x-window소스까지 보시다니....
저는 소스받아놓고 볼려다가 포기했다는... @o@;;;

( 참고로 제 카드는 DRI도 제대로 안되는 상태예요.
윈도모드에서 돌다가 아예 시스템자체가
멈춰버리죠. T_T
근데 요상하게 전체화면모드는 잘 됨. )

Doogle.

익명 사용자의 이미지

xine등 재생기에서 xv를 사용하는 것은 일차적으로
미디어가 YUV출력을 지원하느냐 안하느냐에
달려있습니다. 근데 근래 파일들은 대부분 YUV출력
을 지원하니 별 상관은 없구요.(예전의 무슨 Indeo
코덱이나 , 시네파크 코덱같은 경우 RGB출력인
경우가 있습니다. 이런경우는 xv를 강제로 설정하지
않으면 그냥 rgb로 출력하기도 하죠. 뭐.. 다들 아시는
내용일거구..)

둘째줄의 미디어가 어떤 것을 지칭하는 거죠?

비디오 카드? 파일포멧?

mpeg파일이구요 비디오 카드는 Lynx EM4+입니다.

전 파일포멧이나 하드웨어는 전혀 모릅니다. -.-;;;

근데 xine은 Xv가 안 되면 xshm을 쓰는 데요....

XShmPutImage에서 쓰는 XImage라는 이미지 데이터도 YUV아닌가요?

그나저나 x-window소스까지 보시다니....
저는 소스받아놓고 볼려다가 포기했다는... @o@;;;

지금 보구 있는 데 머가 먼 지 하나도 모르겠군요 @o@;;

익명 사용자의 이미지

>> 둘째줄의 미디어가 어떤 것을 지칭하는 거죠?

앗! 죄송. 제가 좀 애매하게 말을 써놨군요.
미디어파일입니다.

>> mpeg파일이구요
음냐.. 잘 기억이 안나네요. 소스코드를 좀 봐야하는데... 저도 파일포맷에 대해서는
잘 모르거든요. 이녀석이 YUV랑 RGB출력 다 지원하던가... 쩝...
mpeg도 또 mpeg1(일반 mpg, VCD(mpeg layer-1) ), mpeg2(DVD), mpeg4 (DivX) ...
이렇게 여러가지가 있으니... 제가 지금 써놓고도 이부분은 잘 모릅니당. 틀릴수도 있음.

>> 비디오 카드는 Lynx EM4+입니다.
처음보는 그래픽 카드 이름이네요. ^^;;;
혹시 시스템이 노트북이거나 on-board 형식의 비도오 카드인가요?

>>XShmPutImage에서 쓰는 XImage라는 이미지 데이터도 YUV아닌가요?
당연히 아닙니다.
XImage는 RGB포맷입니다.
따러서 만약 미디어파일이 YUV로만 출력을 지원할 경우 일단 YUV형식으로 읽어들여
이를 RGB로 컬러 공간 변환을 수행합니다.
(이 변환과정에서 MMX같은 CPU가속기능이 있느냐 없는냐도 수행성능에 많은 영향을
끼칩니다.)
그리고나서 변환된 RGB값을 XImage로 사용해 출력하는 겁니다.
(XShm사용했을때와 Xv 사용했을때 재생질이 천지차이죠. 게다가 성능또한... )

혹시라도 바이너리 버젼의 xine을 깔아서 사용중이시면,
홈페이지가서 최신버젼 소스코드 받아다가 직접 컴파일 해보시죠.
(뭐 당근 이미 해보셨겠죠... 이미 x-window 소스코드 파고 계신다니... )

결국 뭐 제대로된 답변은 못드리네요. 저도 허접인지라. 죄송할따름입니다. T_T;;;

doogle.

익명 사용자의 이미지

>> 비디오 카드는 Lynx EM4+입니다.
처음보는 그래픽 카드 이름이네요. ^^;;;
혹시 시스템이 노트북이거나 on-board 형식의 비도오 카드인가요?

네 온보드 형식이에요 ^^;;

>>XShmPutImage에서 쓰는 XImage라는 이미지 데이터도 YUV아닌가요?
당연히 아닙니다.
XImage는 RGB포맷입니다.

흠...이상하네요....

RGB는 한 점을 표현하는 데 세개의 변수가 필요하고 YUV는 두 개가 필요한 것
아닌 가요?

근데 XImage->data를 바꿔보면 두 변수가 하나의 점을 표현하던데요..

즉 XImage->data[0]이랑 XImage->data[1]이 맨 위의 왼쪽 점을 표현하고
XImage->data[2]이랑 XImage->data[3]이 맨 위쪽의 왼쪽에서 두 번째 점을 표
현하는 것 같은 데요.

흠...방향은 확실하진 않습니다.

뒤집었던 것 같기도 하구...

확실한 건 두개의 char형 data가 한 점을 표현한다는 것이었습니다.

혹시라도 바이너리 버젼의 xine을 깔아서 사용중이시면,
홈페이지가서 최신버젼 소스코드 받아다가 직접 컴파일 해보시죠.
(뭐 당근 이미 해보셨겠죠... 이미 x-window 소스코드 파고 계신다니... )

방금 깔아봤는 데 0.9.7버전이 오늘 나왔군요 -)

많이 좋아진 것 같군요 ^^

결국 뭐 제대로된 답변은 못드리네요. 저도 허접인지라. 죄송할따름입니
다. T_T;;;

아닙니다.

님같은 고수님이 이렇게 계속 답변을 해주시니 고마울 따름입니다.

답변 모두 모두 감사드립니다. -)

익명 사용자의 이미지

그냥 메일로 보내드릴까하다고 그래도 이 허접답변이
다른사람들에게 조금이라도 도움이 될까해서 그냥
게시판에 씁니당.

RGB가 한점을 표현하는데 세개의 변수가 필요한 것은
맞습니다.

하지만 세개의 변수가 꼭 3byte라는 의미는 아니죠?
만약 16bit 모드라면 2byte당 1pixel을 만들어 냅니다.
16bit면 RGB => 565 ( 5 + 6 + 5 = 16bit)
15bit면 RGB => 1555 ( 1 + 5*3 = 16bit 1비트는 사용하지 않음)
24bit가 되야 비로소 RGB 각 1byte씩 차지합니다.
32bit는 3바이트는 RGB로 쓰고 나머지 1바이트는
사용하지 않거나 alpha blending용으로 사용합니다.

대충 이정도죠.
지금 잘 생각은 안나지만 XImage 구조체를 X라이브
러리 헤더나 문서를 참조해서 봐보세요.

bits_per_pixel같은 1pixel당 몇 bit를 사용하는지를
알 수 있는 속성값이 있을 겁니다.
그걸 참조해 보면 15나 16으로 나올 경우
2byte당 1pixel을 나타내게 됩니다.
만약 이런 상태라면 yootiong님께서 말씀하신대로
비슷한 결과가 나올 겁니다. ^^;;

뒤집히는지 아닌지는 bit_order던가... 그걸로
확인하고... 또 byte order도 있어요. 음냐... 머리아프
네요. -_-;;;

YUV는 아시다시피 planer모드와 packed모드가
있습니다.
planer모드인 경우는 각 컬러 백터 성분이 따로 떨어
져 있는 경우고 (YV12, I420, 등등... )
packed모드인 경우에는 RGB처럼 YUV성분들이
픽셀단위로 모여있는 경우죠.(YUV2, UYUV 등등..)

packed 모드에서는 대체적으로 2byte에 1pixel씩
적용되기는 합니다.

한텀에서
xvinfo
해보시면, 맨 마지막에
지원되는 YUV(보통 오버레이라고도 함) 모드가
쭈욱 나옵니다.
xv가 시스템에서 어느정도 지원되는지도
일목요연하게 알수 있고말이죠.

doogle.

익명 사용자의 이미지

그랬군요...

감사합니다.

꾸벅.

아...엑스윈도우를 업글해볼까?...

댓글 달기

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