벌써 이
Video Playback Plugin에 관한 글만 이것으로 4번째이다. 왜 이렇게 여기에 집착하는 건지 내 자신도 모르겠다. 지난번의 포스팅에서도 잠깐 언급했다시피, 이
Video Playback Plugin(이후 Video plugin)에서 동영상을 크기를 확대 했을때 Compiz의 Texture Filter 설정값에 따라 동영상의 품질이 달라진다고 했다.
그 이유는 이 Video Plugin이 진짜 xv 출력(하드웨어 가속)을 하는 것이 아니고, 실제로는 x11에 출력을 하면서 xv 옵션에 맞춰서 가짜로 xv에 출력과 연동되는 것인데, mplayer의 x11 출력을 써본 사람은 알겠지만 CPU 점유율이 상당히 높다. 하지만
Video Plugin의 경우 적절한 mplayer의 scale 옵션(화질 보정 필터)등을 사용해서 적절한 수준에서 CPU 점유율을 낮추고 마치 x11에 출력한 것과 같이 Compiz 효과와 영상이 연동이 된다.
때문에 이런
scale 옵션(화질 보정 필터)의 경우 Compiz의 Texture Filter의 영향을 받는다. 어떻게 해서 이렇게 되는지는 정확히 모른다. 나는 그다지 좋은 사양의 컴퓨터를 가진 것이 아니고, 이전의 많은 포스팅에서도 언급했듯이
좀 더 나은 속도를 위해서 16bit(색상) depth 환경을 사용한다.
하지만 속도를 중요시하던 나도 Video Plugin 때문에 한동안 Texure Filter는 Good으로 사용했었다. 그만큼 속도면에서 희생했었다.
Compiz의 Benchmark Plugin으로 확인 해봤을 때, Texture Filter가 Fast일 때와 Good일 때 상당히 수치 차이가 나는 것을 보고는
'동영상을 재생할 때만 Texture Filter를 Good으로 바꿀 수 없을까?' 하는 생각을 했고, dbus-send를 이용하면 될 것 같다는 생각을 가졌다. 이런 생각을 머리속에 가진채로 몇주를 헤맨것 같다. 그러다가 어제 오늘 집중적으로 구글링을 한 결과 해결할 방법을 찾았다.
나는
아래 쉘 스크립트를 /usr/bin/Mplayer로 만들고, mplayer 대신에 Mplayer를 사용한다.1 #!/bin/sh
2 if [ `dbus-send --print-reply --type=method_call --dest=org.freedesktop.compiz /org/freedesktop/compiz/core/allscreens/active_plugins org.freedesktop.compiz.get | grep video | wc -l` -gt 0 ]
3 then
4 dbus-send --print-reply --dest=org.freedesktop.compiz /org/freedesktop/compiz/core/allscreens/texture_filter org.freedesktop.compiz.set int32:1
5 mplayer "$1"
6 dbus-send --print-reply --dest=org.freedesktop.compiz /org/freedesktop/compiz/core/allscreens/texture_filter org.freedesktop.compiz.set int32:0
7 else
8 mplayer "$1"
9 fi
if 로 시작하는 두번째 줄은 현재 video playback 플러그인이 동작중인지 확인하는 부분이다. 확인 후 만약 동작 중이라면
dbus-send로 시작하는 네번째 줄의 명령을 통해서 Texture Filter를 Good으로 바꾸고, 다섯번째 줄에서 mplayer로 동영상을 재생한 후,
dbus-send 로 시작하는 여섯번째 줄이 다시 Texture Filter를 Fast로 바꾼다. 만약 video playback 플러그인이 꺼저 있는 상태라면 Texture Filter에 영향을 주지 않을 채 동영상을 재생한다.
('08. 2. 8 스크립트 수정) 동영상을 재생할 때는 약간의 속도 감소가 있겠지만, 최대한 쾌적하게 동영상을 보기 위해서 스크립트를 만들어 봤
위의 스크립트 파일