티스토리 뷰

사용자 삽입 이미지

 

1. 목적

위 그림은 MoviX 부팅 후 Edit-Mplayer Options으로 들어가면 볼 수 있는 화면입니다.

4개의 Video Output Driver(이하 VO Driver라 표기)를 선택할 수 있는데

기본으로 하나가 정해지고 그 외에 3가지를 선택할 수 있습니다.

(이 때 기본 항목이나 기본 외 항목은 사양에 따라 달라질 수 있습니다.)


VO Driver에 따라 화질/퍼모먼스에서 차이가 있습니다.

그리고 어떤 사양에서 어떤 VO Driver는 전혀 재생을 못 하기도 하고

어떤 것은 재생은 하되 심하게 왜곡되기도 하죠.

그리고 특정 드라이버는 자막을 화면과 별도로 오버레이하는 기능도 있습니다.

(바꿔말하면 화면 밖에 자막을 표현가능하다는......)


결론적으로 MoviX를 쓰면서 본인이 선호하는 VO Driver가 있을 것인데

그 드라이버가 부팅 직후 기본값으로 설정되지 않은 경우 변경이 번거로울 것입니다.

그래서 부팅 후에 원하는 VO Driver가 기본으로 설정되어 있게 수정하는 방법을 다룹니다.

(인간이 어디까지 간사할 수 있을런지 ^^;)


역으로 본인이 원하는 드라이버가 기본값으로 선택 되는 경우에는 필요없는 팁입니다.


※ Video Output Driver

동영상 재생 시 디코딩 방식을 결정하는 출력 드라이버로 이해하시면 됩니다.



 

 

2. MoviX의 VO Driver 선택

MoviX에서는 몇 가지 VO Driver를 제공합니다.


그 종류로는 아래의 것들이 있습니다.

fbdev / vesa / sdl / mga / tdfxfb / dxr3 / aa


이 때 MoviX는 movix.pl 이라는 펄 스크립트 파일을 통해서

CPU와 VGA 등의 사양에 대한 정보를 수집한 후 그에 알맞은 VO Driver를 기본값으로 선택합니다.

문제는 이것이 항상 적절한 결과를 낳지만은 않는다는 점입니다.

그리고 제작자의 코딩 상 사소한 실수도 발견할 수 있었습니다.

 


 

 

3. sdl을 기본 VO Driver로 설정하고자 할 때...

3-1. 800MHz 이상의 CPU 사용 시

경험상 sdl은 fbdev에 비해 화질,퍼포먼스 모두 나은 결과물을 보여줍니다.

또한 sdl은 자막파일을 화면 외부에 표현하는 것이 가능합니다.

 

MoviX는 아래의 조건이 충족되면 sdl을 기본 VO Driver로 선택합니다.

(1) MoviX의 기본언어가 CN이나 TW일 때

여기서 CN은 China, TW은 Taiwan의 약자입니다.

바꿔 말하면 MoviX의 기본언어가 중국어일 때가 됩니다.

(2) CPU 동작클럭이 800MHz 이상일 때


이 조건들은 AND 조건이므로 모두 충족되어야 sdl이 기본 VO Driver로 선택됩니다.

여기서 첫번째 조건에 대한 이유로 제작자는 주석에서 밝히고 있는데 대략 해석하면...


"중국어 사용 시 CCE 프롬프트에 대한 문제를 제거할 수 있는 가장 좋은 선택이기 때문이다"


정도가 되는 것 같군요.


그러나 기본언어인 영어환경에서도 sdl 사용에 아무런 문제점은 없습니다.

반면 중국어 외의 환경에서는 CPU가 아무리 고클럭이라도

sdl은 기본 VO Driver로 선택되지 않도록 코딩되어 있는 것이죠.


그러므로 첫번째 중국어에 대한 조건만 제거하면

언어에 무관히 CPU 클럭이 800MHz 를 넘어가면 sdl이 기본 VO Driver로 선택됩니다.


시디 내의  /movix/movix.pl 파일을 수정하면 되는데 563~579 라인까지 보면 아래와 같습니다.


### Set the default vo driver
# By default we use fbdev if /dev/fb/0 exist
$vo_driver = -e "/dev/fb/0" ? "fbdev" : "vesa";
if ( -e "/proc/em8300/0" ) {
  $vo_driver = "dxr3";
} elsif ( -e "/dev/mga_vid" ) {
  $vo_driver = "mga";
} elsif ( $videoCard eq "3Dfx" and $ENV{"LABEL"} eq "FB" ) {
  $vo_driver = "tdfxfb";
  ### with Chinese currently sdl is the best choice since is the only
  ### driver that manages to eliminate the annoying cce prompt
} elsif( $ENV{LANG} =~ /^cn$|^tw$/i and $mhz >= $sdlMHZ ) {
  $vo_driver = "sdl";
  ### if CPU is very slow (< 200MHz) then use 'vesa'
} elsif( $vesaMHZ >= $mhz and $videoCardLine !~ /ATI Techno|G200|G400|G450|G550|CyberBlade/i ) {
  $vo_driver = "vesa";
}


여기서 녹색으로 반전된 라인, 즉 574라인의 조건항에서 파란색 반전 부분만 제거하면 됩니다.


} elsif( $mhz >= $sdlMHZ ) {


즉 위와 같은 식으로 변경해줍니다.

이렇게 변경할 경우 CPU 클럭이 800MHz를 넘어가면 기본 VO Driver는 sdl로 선택됩니다.


※ 참고로 위의 변수 중 $mhz는 현재 CPU의 클럭이고 $sdlMHZ는 800으로 설정되어 있습니다.


3-2. 800MHz 미만의 CPU 사용 시

이것은 제작자의 권장사항이 아니라는 점에서 조금 더 주의를 기울여야 하는 부분입니다.

다른 부품은 완전히 동일하나 CPU 클럭만 400, 600, 900으로 다른 3가지 경우로 해보니

600, 900일 때는 sdl로 원활한 재생이 되었지만 400일 때는 재생이 불가능했습니다.

(퍼포먼스의 문제가 아닌 올바른 출력 자체가 안 되더군요.)

 

그러므로 400~600 사이의 어떤 값을 기준으로 sdl을 선택하도록 수정하면 되는데

정확한 값을 필자도 모르는바 최저 500MHz면 sdl 사용이 가능하다는 전제로 설명합니다.

 

예를 들어...

CPU 클럭이 533MHz인데 sdl로 원활한 재생이 되므로 sdl을 기본으로 선택하고 싶다면...

 

(1) 3-1에서 해준 것 같이 574라인의 중국어 조건항을 제거합니다.

 

(2) 다음으로 533일 때도 sdl이 선택되도록 수정하는데 몇 가지 방법이 가능할 겁니다.

 

① 574라인을 아래처럼 수정

} elsif( $mhz >= 500 ) {

 

만약 500MHz인 CPU에서 sdl의 원활한 사용이 가능하고 sdl을 기본으로 선택하고 싶다면

500보다는 495라던가 498 이런 식으로 약간 유격을 두기를 권합니다.

(이유는 500MHz인 CPU라고 정확히 500으로 동작하지는 않기 때문입니다.)

 

② 또는 $sdlMHZ 수치를 직접 수정

movix.pl 파일의 513라인을 보면 $sdlMHZ 값이 800으로 지정되어 있습니다.

그러므로 574라인에서는 중국어 조건만 제거하고 513라인에서 수치를 변경해도 됩니다.

아래 같은 식으로...


my $sdlMHZ  = 500;

......(중략).....

} elsif( $mhz >= $sdlMHZ ) {


이상의 3-2 설명은 sdl 사용이 가능한 최저 임계클럭을 확인하지 못한 관계로

500MHz라 가정하여 설명드린 것입니다.

어차피 해보면 알 수 있으므로 중요하지는 않지만 제가 보장하는 최저클럭은 600 입니다.




 

 

4. fbdev를 기본 VO Driver로 사용하고자 할 때

아주 저클럭 CPU가 아니라면 sdl 사용은 무리지만 fbdev로 재생은 가능합니다.

그런데 fbdev로 가능한 사양임에도 불구하고 기본 VO Driver는 vesa로 잡힐 수도 있습니다.

이를 fbdev로 바꾸는 방법입니다.

 

참고로 이것은 팁이라기보다는 제작자의 실수를 수정하는 것입니다.

주석을 통해 파악한 제작자의 코딩 의도의 큰 줄기는 기본 VO Driver로

CPU 클럭 200MHz 미만에서는 vesa,

CPU 클럭 200 이상에서는 fbdev,

CPU 클럭 800 이상이고 중국어 사용시는 sdl

...이 선택되도록 하고 있습니다.


그러나 실제로 코딩 내용을 보면 약간의 실수가 보입니다.


movix.pl 파일의 563~579 라인을 다시 보겠습니다.


### Set the default vo driver
# By default we use fbdev if /dev/fb/0 exist
$vo_driver = -e "/dev/fb/0" ? "fbdev" : "vesa";
if ( -e "/proc/em8300/0" ) {
  $vo_driver = "dxr3";
} elsif ( -e "/dev/mga_vid" ) {
  $vo_driver = "mga";
} elsif ( $videoCard eq "3Dfx" and $ENV{"LABEL"} eq "FB" ) {
  $vo_driver = "tdfxfb";
  ### with Chinese currently sdl is the best choice since is the only
  ### driver that manages to eliminate the annoying cce prompt
} elsif( $ENV{LANG} =~ /^cn$|^tw$/i and $mhz >= $sdlMHZ ) {
  $vo_driver = "sdl";
  ### if CPU is very slow (< 200MHz) then use 'vesa'
} elsif( $vesaMHZ >= $mhz and $videoCardLine !~ /ATI Techno|G200|G400|G450|G550|CyberBlade/i ) {
  $vo_driver = "vesa";
}


녹색 반전은 각각의 VO Driver에 대한 조건식입니다.


첫번째 조건식과 두번째 조건식에서

특정 파일의 존재 유무를 따져보고 참이면 각각 dxr3와 mga를 기본 VO Driver로 선택합니다.

아마 특정사양에서는 부팅 시 특정 파일을 로딩하고

VO Driver 선택 시 그 파일의 존재 유무로 기본 VO Driver를 결정하는 것 같습니다.

(필자가 4장의 VGA와 400~2200MHz 사이의 8개의 CPU 클럭으로 테스트한 바로는

어떤 경우에도 선택되지 않았고 목록에도 오르지 않았으므로 평범한 조건은 아닙니다.)


세번째 조건식에서

3dfx의 VGA면 tdfxfb를 기본 VO Driver로 잡는데 추가조건으로 LABEL이 FB일 때입니다.

LABEL은 부팅 시 "boot :" 프롬프트에서 선택되는 항목이므로

기본 부팅했다면 VGA가 3dfx의 제품이라도 이 항목이 선택되지는 않습니다.


네번째 조건식에서

기본언어가 중국어이고 CPU 클럭이 $sdlMHZ보다 높으면 sdl을 선택하는데

파란 반전부분을 앞선 3번에서는 제거했으나 여기서는 제거하지 않습니다.

만약 CPU 클럭이 800MHz 미만이면 어차피 sdl이 선택되지 않으므로 제거해도 무방합니다.

반면 CPU 클럭이 800MHz 이상에서도 fbdev를 기본 VO Driver로 선택하고 싶다면

위의 파란 반전 항목은 그냥 둬야 합니다. (혹은 제거하되 sdlMHZ 값을 더 높여도 됩니다.)


마지막 조건식에서

CPU 클럭이 $vesaMHZ의 값 이하이고 추가 조건식에 부합되면

vesa가 기본 VO Driver로 선택됩니다. (아직 추가 조건식은 완전히 이해하지 못 했습니다.)


그런데 마지막 조건 식의 바로 위 분홍색 반전 영문주석 내용을 보면

CPU 클럭이 200 이하일 때 vesa를 기본 VO Driver로 선택하고

그 때 비교값이 $vesaMHz이므로 $vesaMHZ는 200인 것이 맞는 것으로 보이며

512라인의 $vesaMHZ 값은 500으로 되어있는데 제작자의 실수로 생각됩니다.


그리고 이런 잘못된 설정 상의 이유로 해서 200~500 의 CPU 사용 시에도

기본 VO Driver로 fvdev가 선택되지 않고 vesa로 선택되게 됩니다.


그러므로 512 라인을 아래와 같이 수정합니다.


my $vesaMHZ = 200;


만약 200MHz 이하의 CPU에서도 fbdev가 기본 VO Driver로 선택되길 원한다면

위의 512라인에서 $vesaMHZ 값을 더 낮은 값으로 수정해주면 됩니다.

그러나 실제로 fbdev로 정상적인 재생이 가능한 최저값은 필자도 아는 바가 없습니다.





5. 기타 나머지 드라이버에 대해서

기타 나머지 드라이버들인 aa, dxr3, mga 에 대해서는

아직 어떤 조건에서 선택되는지 파악도 못 했고 예상하기에 사용될 빈도도 적기에

따로 내용을 적지도 않았고 추가할 예정도 없습니다. (사실 테스트할 환경이 안 되는군요)


만약 추가한다면 tdfxfb에 대해서만 추가할 것 같습니다.

(세컨 중에 voodoo3 3000이 있는 관계로...)


그리고 수정하는 방법은 위에서 제가 적은 것 외에도 여러가지 있을 수 있습니다.

MoviX는 사양을 분석하고 그에 따라서 조건에 맞춰서 VO Driver를 선택하는데

조건과 비교하는 과정들을 무시하고 VO Driver 값을 단순히 하나로 정할 수도 있을 것입니다.

이런 경우 융통성을 떨어지겠지만 그 융통성을 발휘할 일이 전혀 없다면

즉 그 PC 말고 다른 PC에서 쓸 일이 없다면 그렇게 해도 무방할 것입니다.


위에서 예를 든 것을 그대로 가져다 쓰셔도 대부분의 사양에서는 문제가 안 되리라 봅니다만

문제가 될 수도 있는 소수의 사양도 있을 것이므로 따라하기보다는

이해를 돕고자 하는 방향으로 적다보니 글이 좀 장문이 된 것 같습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크