PSPlayer 2.0

0. 2.0 버전에서 추가되거나 달라진 점.

* FFMPEG 기반으로 동영상 플레이 기능이 추가되었습니다. 기존의 PSPlayerMT의 기능을 대부분 이어받았습니다. FFMPEG의 거의 최신소스를 사용하였습니다.
* 하드웨어 디코딩을 이용한 동영상 재생만을 지원합니다. 단, AC3 제외. 지원되는 코덱은 H264/AVC, MPEG4(xvid etc), AC3, MP3, AAC 코덱입니다. 이외의 소프트웨어 코덱들은 배터리만 많이 먹고 pbp 사이즈만 커지는 것 같아 제외하였습니다.
* avi/mov(mp4) 컨테이너만을 지원합니다. 기타 컨테이너들도 그다지 사용되지 않을 것 같아 제외하였습니다.
* 동영상 지원에 따라 옵션이 추가되었고 북마크 갯수를 120개까지로 확장하였습니다.
* 자막 기능이 추가되었습니다. sami 형식의 자막 및 기타 형식의 자막이 지원됩니다. 다만 자막 자체내의 컬러, 폰트, 정렬 등에 대한 설정은 지원하지 않습니다. 자막 파일의 인코딩은 멀티바이트 인코딩을 사용해야합니다. (보통의 경우 변환 불필요)
* 실시간 볼륨 조절 기능이 추가되었습니다. 비디오 재생 또는 음악 재생화면에서 아날로그 위/아래를 눌러 실시간으로 볼륨을 조정합니다. 시스템 볼륨과는 별개로 동작하며 수동 Replay Gain 효과라 할 수 있겠네요.
* PSPLink(host0:/)/usbhostfs/nethostfs 등에 대한 지원이 추가되었습니다. 단, PSPLink 또는 irshell 등을 이용하여 미리 활성화해야 합니다. PSPlayer에서는 별도의 활성화 기능을 지원하지 않습니다.
* 파일 지우는 기능이 추가되었습니다. 파일 보기에서 START를 누르면 나오는 추가메뉴에서 고를 수 있습니다.

0.1 PSPlayer의 동영상 플레이 기능의 특장점 및 참고사항

* Mpeg4 video(xvid 등) 사용시 YUV 컬러 데이터를 PSP 비디오 프로세서를 이용하여 렌더링합니다. PSPlayerMT에 사용된 정확한 컬러 컨버전 및 크로마 채널 필터링으로 차별화된 이미지를 보여줍니다.
* Mpeg4 AVC(H264) 코덱 디코딩 시 B-frame을 지원합니다. B-frame 사용시 10-20% 비트레이트 대비 화질이 향상되는 효과가 있다고 합니다.(H264 기본셋팅)
* avi 컨테이너를 이용하므로 비교적 편리하게 인코딩할 수 있습니다. 바닥 최신 버전 사용시 별다른 추가 설정 없이 xvid/h264/mp3/aac로 인코딩하면 됩니다.
* avi 파일의 인덱스를 읽는 부분을 수정하여 매우 적은 메모리를 사용하며 로딩 시간을 획기적으로 줄였습니다. 그럼에도 불구하고 빨리 찾기(FF/REW)에는 거의 영향이 없습니다.
* smi 파일을 변환없이 그대로 사용할 수 있습니다. 다만 자막의 폰트/컬러 등의 설정은 무시되며 비트맵 폰트를 확대하므로 퀄리티가 떨어집니다.
* 대용량 동영상의 경우 인덱스에 필요한 메모리가 부족할 수 있고 이로 인해 재생시 에러가 날 수 있습니다. MP4 파일이 에러가 나면 avi를 사용해 보십시오. avi 파일은 인덱스에 필요한 메모리가 더 적도록 수정되었습니다.
* YUV 컬러 데이터를 이용할 경우 메모리를 적게 차지하므로 긴 동영상 재생에 유리할 수 있습니다.
* 옵션에 따라 Mpeg4 video도 PSP Vme를 이용한 컬러 컨버전을 통해 RGB렌더링할 수 있습니다.
* 동영상 파일에 포함된 MP3 트랙은 MAD를 사용하지 않습니다.
* 멀티 트랙 오디오 파일을 지원하지 않습니다. 첫번째 오디오트랙만 사용.
* 최대 해상도는 480x272 크기입니다. 프레임레이트에 별다른 제한은 없습니다.
* nethostfs로는 거의 재생이 불가능한 수준이라고 할 수 있겠네요.
* 비디오 인코딩 소프트웨어로는 avi로 인코딩 시 바닥(http:/www.kipple.co.kr)을 추천하며 mp4로 인코딩 시 XviD4PSP 5.0(http://www.winnydows.com)을 추천합니다. 이외의 인코딩 소프트웨어는 테스트하지 않았고 동작하거나 오동작할 수 있습니다.
* 하드웨어 xvid 디코더는 b-vop(b frame), gmc, qpel을 지원하지 않습니다. 인코딩 시 이 옵션을 끄고 인코딩해야합니다. (mencoder용 추가옵션. -xvidencopts max_bframes=0:nogmc:noqpel)
* avi 파일은 설정 클럭에서 10MHz, ac3는 50MHz의 CPU 클럭을 추가로 사용합니다.

0.2 비디오 파일 재생 중 콘트롤 설명

←→ : 빨리 찾기 (다음 키프레임으로)
↑↓ : 빨리 찾기 (30초단위 키프레임)
L1/R1 : 빨리 찾기 (5분단위)
△ : 영상 확대 모드 변경
Ⅹ : 재생 정지
□ : 디버그 정보 표시
START : 재생 일시 정지
Analog Up/Down : 볼륨 부스터 1x-20x

0.3 추가옵션 설명

aviClockBoost : 50 <- 동영상 재생시 추가되는 클럭
mpeg4vmecsc : 0 <- mpeg4(xvid 등) 재생시 me를 사용하여 컬러 컨버전.
scaleMode : 1 <- 영상 확대모드. 동영상 재생시 실시간 변경 가능.

0.xx 1.9 버전에서 추가되거나 달라진 점.

* 최신 버전의 PSPSDK 사용 및 최신 버전의 커널에 맞게 수정되었습니다.
* MP3/TXT 파일 읽을 때 async 모드 읽기를 사용합니다. 메모리 스틱 접근 빈도가 줄어듭니다.
* 기본 옵션에서 동작 클럭을 20MHz로 설정합니다. 파워세이브모드에서는 10MHz.
* AAC LC로 인코딩된 AAC/MP4/M4A 파일의 재생기능이 추가되었습니다. (ME 이용)
* PSP Media Engine을 이용한 MP3 재생 기능이 추가되었습니다.
* OGG 파일의 재생 기능이 추가되었습니다.
* MP3를 libmad를 이용하는 옵션이 추가되었습니다.
* 음악 재생 시 필요에 따라 CPU 클럭을 자동으로 조정합니다. (예, libmad로 mp3 재생시 40MHz 클럭 추가)
* PSP display driver를 이용하여 화면이 꺼질 때 LCD 백라이트도 차단합니다. LightMP3의 support.prx를 그냥 갖다 썼습니다.
* PSP 리모콘 기능과 USB 연결 기능이 신 버전의 커널에서도 작동되도록 수정되었습니다.
* 몇 가지 옵션이 추가되었습니다.
* 클럭, FPS 등을 표시할 수 있습니다. (START로 추가 메뉴가 나올 때마다 전환)
* MP3 플레이 리스트에서 현재 재생중인 파일과 현재 선택하고 있는 파일을 구별하여 표시합니다.
* PSPlayer가 실행 중인 동안에는 PSP 자체의 자동 꺼짐 기능을 비활성합니다. (자동꺼짐을 자체적으로 구현)
* 음악 재생 시 FF/REW가 좀 더 정확하게 동작합니다.
* 이전 버전까지의 readme는 readme.old로 변경되었습니다.
* 마호로 씨와는 작별 인사를 했습니다.

1. PSPlayer란?

PSP용 텍스트 보기, 음악 듣기, 그림 보기를 지원하는 자작 프로그램(Homebrew Software)입니다. 지원이 가능한 파일은 멀티바이트 형식의 일반 텍스트(txt), mp3, aac, mp4(m4a, aac only), ogg, jpg, png, bmp, gif 형식입니다.

2. 설치 방법

PSP 버전에 따라 설치 방법이 달라지니 자세한 설치 방법은 자작 프로그램 설치 방법을 다룬 다른 문서를 참고하시기 바랍니다.

2.1 PSP System Software Version 1.5에서의 설치

1.5 폴더 안에 있는...
__SCE_PSPlayer / %__SCE_PSPlayer 두 폴더를 Game 폴더에 복사합니다.

2.2 신버전 커널 이용시 (3.xx 이상)

PSPlayer4XX 폴더를 Game (또는 Game3XX/Game4XX 등) 폴더에 복사합니다.

3. 기본 사용법

PSPlayer는 주로 3개의 화면으로 구성되며 각각 음악 듣기, 파일 탐색, 텍스트 보기를 담당합니다.
추가로 처음의 로고 화면과 USB 연결 화면으로 구성됩니다.

3.1 로고 화면

로고 화면은 처음 실행시에만 보여지며 ○를 눌러 마지막 종료한 상태를 복원하며,
Ⅹ를 눌러 기본 설정만을 로딩하고 파일 탐색기를 시작합니다.

3.2 파일 탐색 화면

파일 탐색기는 메모리 스틱의 파일을 탐색하고 실행합니다.
또 그림 보기에도 사용됩니다.

디지탈 패드 : 파일 고르기
○ : 파일선택
Ⅹ : 그림 보기 (그림 파일 보기시 사용)
□ : 강제 텍스트 보기 (txt 파일이 아닌 텍스트 파일에 사용)
△ : 오디오 멈추기

START : 보조메뉴 팝업
START - ○ : 날짜 시간 표시 토글
START - Ⅹ : 폴더에 있는 모든 음악 듣기
START - □ : m3u 리스트 저장하기
START - △ : 태그로만 보기 (id3 등)
START - ← : ms0:/psp/photo 폴더로 이동
START - ↑ : 
START - ↓ : 바탕화면 모드 전환(이미지/단색)
START - → : 옵션 다시 읽기
START - L1 : ms0:/psp/music 폴더로 이동
START - R1 : ms0:/text 폴더로 이동
START - SELECT : USB 연결화면
START - 아날로그 좌우 : 자동꺼짐 시간 설정

3.2.1 음악 파일 및 m3u 파일의 선택

MP3 등의 음악 파일을 선택하거나 m3u 파일을 선택하면 자동으로 음악 듣기의 리스트에 추가되며(기존 리스트는 없어짐), 음악 듣기 화면으로 이동합니다.

3.2.2 txt 파일의 선택

txt 파일을 선택하면 텍스트 보기 화면이 선택된 텍스트로 전환됩니다.
□로 강제 텍스트 보기를 선택해도 마찬가지로 동작합니다.

3.2.3 그림 파일의 선택 및 그림 보기

그림 파일(BMP, JPG, PNG, GIF)를 선택하면 그 그림이 배경으로 지정되면서 자동으로 그림 보기 상태로 변경됩니다.

그림 보기 상태에서는 다음 버튼을 사용합니다.

Ⅹ : 파일 보기로 이동
← : 부드러운 확대
→ : 부드러운 축소
START - ← : 빠르게 확대
START - → : 빠르게 축소
L1 : 이전 파일
R1 : 다음 파일
아날로그 : 그림 이동

디지탈 좌우 버튼을 이용하여 확대/축소를 실행하고 아날로그 스틱을 이용하여 그림을 이동합니다.

3.3 음악 재생 화면

음악 재생화면에서는 현재 리스트에 포함된 파일들의 리스트를 볼 수 있습니다.
또, 리스트에서 파일을 골라 그 음악을 재생할 수 있습니다.

디지탈 패드 : 파일 고르기
○ : 음악 재생 시작 (또는 다시 시작)
Ⅹ : 음악 재생 정지
□ : 랜덤 재생 On/Off
△ : 재생 일시 정지
아날로그 좌우 : 빨리 찾기 (버튼을 놓으면 재생 시작)
L1 : 곡 맨 처음으로 또는 이전 트랙
R1 : 다음 트랙

START : 보조메뉴 팝업
START - ○ : 반복모드 On/Off
START - Ⅹ : 태그로만 보기 (id3 등)
START - ↓ : 바탕화면 모드 전환(이미지/단색)
START - → : 옵션 다시 읽기
START - SELECT : USB 연결화면
START - 아날로그 좌우 : 자동꺼짐 시간 설정

3.4 텍스트 보기 화면

텍스트 보기에서는 선택한 텍스트를 보여줍니다.
기본적으로 모든 키를 이용하여 텍스트를 스크롤할 수 있습니다.
읽을 수 있는 텍스트의 최대 라인 수는 자동 줄바꿈되는 라인을 포함해서 약 2백만 라인입니다.

최대 20개까지 북마크를 저장합니다. 직접 위치를 지정할 수는 없고 종료시 마지막 읽은 라인을 기억하여 보여줍니다. 북마크는 파일 크기를 기준으로 파일을 구별합니다.

↑,△ : 한 줄 위로
↓,Ⅹ : 한 줄 아래로
←,Ⅹ : 한 페이지 위로
→,○ : 한 페이지 아래로
L1 : 한 페이지 아래로
R1 : 한 페이지 아래로
아날로그 위/아래 : 한 줄 위/아래로
아날로그 좌/우 : 한 페이지 위/아래로

L1+아날로그 위/아래 : 3 줄 위/아래로
R1+아날로그 위/아래 : 10 줄 위/아래로
L1+R1+아날로그 위/아래 : 100 줄 위/아래로

L1+아날로그 좌/우 : 3 페이지 위/아래로
R1+아날로그 좌/우 : 10 페이지 위/아래로
L1+R1+아날로그 좌/우 : 100 페이지 위/아래로

START : 보조메뉴 팝업
START - ○ : 음악 재생
START - Ⅹ : 음악 중지
START - □ : 전체 화면으로 텍스트보기
START - △ : 음악 일시 정지
START - L1 : 음악 이전 트랙
START - R1 : 음악 다음 트랙
START - ← : 줄간격 늘이기
START - ↑ : 폰트 크기 변경(12<->14)
START - ↓ : 바탕화면 모드 전환(이미지/단색)
START - → : 옵션 다시 읽기
START - SELECT : USB 연결화면
START - 아날로그 좌우 : 자동꺼짐 시간 설정

3.5 USB 연결화면

START - SELECT로 들어가는 USB 연결화면에서는 USB 연결상태를 표시합니다. ○를 눌러서 연결하고 ←+□를 눌러서 연결을 해제합니다.

4. 옵션 파일의 설정

PSPlayer의 옵션은 pbp 파일이 있는 폴더 내의 option.txt를 이용해 설정할 수 있습니다.
또한 마지막으로 재생하던 음악 리스트는 역시 같은 폴더의 playlist.m3u 파일에 저장됩니다.

4.1 옵션 파일의 설명(option.txt)

옵션 파일은 프로그램 내에서는 편집하는 기능을 제공하지 않고 usb를 이용해서 수정한 뒤 START - → 키를 눌러 적용합니다. 단 랜덤 재생 설정과 같은 일부 옵션은 프로그램 실행시 키를 이용하여 변경이 가능한 것도 있습니다. 

LastDir : GNHDDADK <- 파일보기의 현재 폴더(인코딩됨)
Random : 0 <- 음악 재생 랜덤 선택 (0/1)
autoRepeat : 1 <- 음악 재생 반복모드 선택 (0/1)
ShowBG : 0 <- 이미지/단색 배경보기 선택 (0/1)
useLargeFont : 1 <- 텍스트 보기시 14 크기 폰트 선택 (0/1)
bgColor : ff605030 <- 배경 글자 컬러 (alpha/bb/gg/rr)
titleColor : ffffffff <- 타이틀 글자 컬러 (alpha/bb/gg/rr)
playtextColor : ff00ffff <- 재생중 파일 글자 컬러 (alpha/bb/gg/rr)
generalTextColor : ffffffff <- 보통 글자 컬러 (alpha/bb/gg/rr)
selectedTextColor : ff00c0ff <- 선택파일 글자 컬러 (alpha/bb/gg/rr)
playingTextColor : ffff5050 <- 리스트에서 재생중 글자 컬러 (alpha/bb/gg/rr)
textViewerColor : ffffffff <- 텍스트보기 글자 컬러 (alpha/bb/gg/rr)
shadowColor : b0000000 <- 그림자 글자 컬러 (alpha/bb/gg/rr)
showTagOnly : 0 <- 태그로만 보여주기
filterMode : 0 <- 필터모드
showDateSize : 1 <- 날짜 시간 보기 선택 (0/1)
normalCPUClock : 20 <- 보통 때 CPU Clock
normalBusClock : 20 <- 보통 때 Bus Clock. 설정대로 동작하지 않음)
powerSaveCPUClock : 10 <- 절약모드일 때 CPU Clock
powerSaveBusClock : 10 <- 절약모드일 때 Bus Clock. 설정대로 동작하지 않음)
autoSaveMode : 1 <- 자동 전원꺼짐 켜기 (0/1)
timeZoneOffset : 9 <- 표준 시간대 설정(GMT+9:서울)
powerSaveModeTime : 120 <- 입력 없을 때 절약모드 전환 시간(화면 꺼짐)
remoteTextControl : 0
lineGap : 2 <- 줄간격 설정
suspendTime : 300
displayOffWhenHold : 1 <- HOLD 시 절약 모드 전환
forceTrimLeft : 1 <- 텍스트보기에서 첫 빈칸 없애기 (0/1)
fullScreenText : 1 <- 전체 화면으로 텍스트보기 (0/1)
libmadClockBoost : 40 <- libmad로 mp3 재생 시 추가될 CPU Clock
oggvorbisClockBoost : 50 <- ogg 재생 시 추가될 CPU Clock
meClockBoost : 0 <- me이용 mp3/aac/mp4 재생시 추가될 CPU Clock
useLibMAD : 0 <- libmad 이용 mp3 재생 선택 (0:me/1:mad)

5. 기타 유용한 정보들

* PSP 리모콘을 사용가능합니다. 리모콘은 상식적인 선에서 음악재생 중에 동작합니다.
이는 본체의 HOLD와 무관하게 동작하므로 음악 재생에 유용할 수 있습니다. (다만 본인도 안 씁니다.)
* 디스플레이를 끄고 음악을 재생할 경우 약 10시간 전후의 재생이 가능합니다.
* 3.80/3.90M33의 경우 3.71의 fatmsmod.prx를 설치하면 한글로 된 파일을 열 수 있습니다.

6. 알려진 문제점과 한계

* 그림 파일은 인코딩 방법에 따라 디코딩에 필요한 메모리량이 달라지며 높은 해상도의 그림 파일은 메모리 용량 한계로 인해 읽어지지 않을 수 있습니다.
* 높은 해상도의 그림 파일은 화면 표시 속도가 매우 느리고 키에 대한 반응이 떨어질 수 있습니다.
* 한글 파일 이름의 경우 제대로 보여주지 못합니다.
* 동일한 글자수의 한글 파일이 같은 폴더에 있을 경우 정상적으로 읽어지지 않습니다. (예, 가나다라.txt, 마바사아.txt)
* 태그 정보는 ID3 tag V1만 지원하고 일부 파일 형식에서는 태그 정보가 지원되지 않습니다.
* VBR로 인코딩된 MP3/AAC의 재생 시간의 추측이 엉터리입니다. VBR 파일에 사용되는 추가정보나 헤더를 전혀 사용하지 않습니다.
* ADIF 헤더를 사용하는 AAC 파일은 지원하지 않습니다.
* 일부 파일 형식은 빨리 찾기를 지원하지 않습니다. (OGG/MP4/M4A)
* 파일은 확장자를 기준으로 연결되고 파일의 실제 형식이 확장자와 같은지는 검사하지 않습니다. 확장자와 내용이 다른 파일들로 인해 프로그램이 오동작하거나 다운될 수 있습니다.
* async 읽기 부분의 오류로 텍스트 보기가 깨져 보일 경우가 있습니다. 파일을 다시 열면 해결될 수 있습니다. 슬립 모드로 갔다오는 방법도 있는데 복잡하니 설명 패스. 보통은 메모리 스틱을 뺐다가 꽂으면 발생하죠.

7. 소스 코드 및 라이센스

별도의 라이브러리 코드를 제외한 소스 코드는 매번 릴리스에 포함해서 배포합니다. 라이센스는 GPL에 따릅니다. 첨부된 license.txt 를 참고하세요.

7.1 소스 코드 컴파일

소스 코드를 컴파일하기 위해서는 추가적인 라이브러리들을 미리 컴파일하고 설치해두어야 합니다. 또한 Makefile을 각 시스템에 맞게 적절히 수정해주어 파일들이 적절히 링크되도록 하여야 합니다.

필요한 라이브러리에는 libmad, libid3tag, libtremor, jpeg-6b, zlib123, libpng, libungif 등이 필요합니다.

PSPSDK(toolchain)는 7월 초쯤의 버전이 사용되었습니다. 최신 버전으로 업그레이드해도 무방하리라 생각합니다.

8. Special Thanks To

- Sakya : 클럭 조정, 디스플레이 끄기, 볼륨값 얻기를 위해 support.prx를 사용하였습니다.
- cooleyes : VME를 이용한 MP3/AAC/Mpeg4/h264 재생, MP4 파일 등. 참조한 것이 많습니다.
- tyRaNid : PSPLink 덕분에 개발 기간이 10배는 단축되었습니다.
- and all other PSP developers









