(+)분류 : 가져온 문서/넥스32 위키
➡️개량 버전에 대해서는 Sofdec2 문서를 참고하십시오.
Sofdec은 세가새턴에서 하드웨어 디코딩이 지원되는 동영상 포맷이 없는 문제 때문에 경쟁 기종에 비해서 동영상의 화질과 퀄리티가 떨어지는 문제를 해결해 게임 개발에 필요한 추가적인 인력 및 시간 소모를 해결하기 위해서 CRI와 세가가 협력해서 제작한 동영상 압축 코덱이다. 첫 버전은 1997년 개발되었으며, 그란디아에 첫 도입된 이래로 여러 게임에 사용되어 왔다.
현재도 판매되는 코덱으로, 상용코덱이기 때문에 기술이나 인코더, 디코더 소스는 공개되어있지 않다. 기본적으로 MPEG 기반의 디코더로, 처음에는 ‘새턴에서 돌아가는 MPEG 디코더다’라는 형태로 소개했으며, 이름인 ‘Sofdec’도 ‘Software’ + ‘Decoder’의 형태이다. 이 때문에 당초에는 ‘MPEG Sofdec’이라고 널리 불리워졌다.
처음 개발 당시에는 MPEG1 기반으로 개발된 소프트웨어 디코더 정도로 만들어진 것이었으며, 저스펙이었던 세가새턴에서 동영상과 음성을 모두 압축해서 수록한 후, 2배속 CD-ROM에서 읽어들여 디코딩을 원활히 하기 위해서 별의 별 병렬적 연산 기법을 도입해서 만들어진 코덱이다. 음성 압축에 사용되는 ADX와 더불어서 함께 개발된 것으로, Sofdec은 동영상 압축 인코딩, 디코딩만 담당하고 나머지 컨테이너나 스트리밍 등의 기능은 ADX 쪽에서 담당하게 되어있다. 때문에 MPEG 비디오 규격인 비디오CD 및 후속 포맷인 DVD에서 지원하는 멀티스트리밍, 심리스(Seamless) 재생 등을 이용한 제어계 기능은 ADX쪽에 구현해 이용한다. 이는 MPEG 등의 미디어에서 사용하는 제어 기능을 게임에서는 사운드 쪽에서 더 활용성이 높다는 점에 착안했기 때문이다. 때문에 기능적인 부분은 ADX 문서를 참고하자.
그란디아에 첫 적용되어 선보였으나, MPEG 코덱의 특성상 압축된 데이터의 화질이나 기능적 면은 나쁘지 않았으나 용량이 동시기에 새턴에서 사용되던 트루모션이나 시네팩에 비해서 라이센스 비용이나 용량 등의 문제도 있고, 또한 거의 스펙의 한계까지 쥐어짠 특성 때문에 재생에 문제가 생기거나 하는 경우가 발생하기도 해서 게임에서의 활용은 함께 만들어진 음성용 ADX와 달리 새턴 시절에는 널리 사용되지 못했다.
정작 Sofdec이 빛을 보기 시작한 것은 드림캐스트의 발표 이후 MPEG2의 압축 방식과 24비트 컬러 지원, 고해상도 지원과 게임 라이브러리와의 연동 기능이 포함되면서 및 기타 다양한 기능들이 추가되면서 드림캐스트에서는 기본 동영상 포맷으로 이용되었으며, 드림캐스트 사업 철수 후 CRI에서 미들웨어로 타 기종에 이식, 판매하면서 플레이스테이션2와 엑스박스 등의 기종에서도 사용되기에 이르렀다. 이 세대부터는 어차피 하드웨어 디코더가 없었기 때문에 CPU점유율이 낮으며 게임 속에서 활용할 수 있는 다수의 기능이 갖춰진 Sofdec을 채용하는 게임이 많이 늘어났다.
이후 계속해서 버전업을 하면서 최신 코덱에서 사용되는 각종 압축 효율화 기법과 안정화 기법이 도입되면서 7세대 게임기에서도 사용할 수 있는 수준으로 기술적인 업그레이드가 되었으나, 영상 압축 알고리즘 변경과 신규 코덱인 H264 코덱 지원을 비롯한 상위 기술의 도입과 함께 2010년 Sofdec2가 발표되었다.
사용하는 게임 소프트웨어는 게임 기동시 Sofdec 로고를 표시해야 하는 의무사항이 있었으나, 2006년 11월 1일을 기준으로 로고 표시 의무가 사라지고 엔딩 스탭롤에만 표시해도 되도록 의무가 완화되었다.
목차
1. 특성
1.1. 멀티 플랫폼
1.2. 멀티스트림 재생
1.2.1. Seamless 재생
1.2.2. 이미지 추출
1.3. 낮은 CPU 점유율
1.4. 화질 및 코덱
1.5. Sofdec FX
1.5.1. 동영상 텍스쳐
1.5.2. 이펙트 무비
1.5.3. α채널 동영상
1.5.4. Z채널 동영상
2. 파일포맷
2.1. SFD
1. 특성
1.1. 멀티 플랫폼
1.2. 멀티스트림 재생
1.2.1. Seamless 재생
1.2.2. 이미지 추출
1.3. 낮은 CPU 점유율
1.4. 화질 및 코덱
1.5. Sofdec FX
1.5.1. 동영상 텍스쳐
1.5.2. 이펙트 무비
1.5.3. α채널 동영상
1.5.4. Z채널 동영상
2. 파일포맷
2.1. SFD
1. 특성 ✎ ⊖
1.1. 멀티 플랫폼 ✎ ⊖
세가새턴을 시작으로 다양한 기종으로 이식이 되면서 한 번 작성한 파일을 다양한 플랫폼으로 이식할 때 거의 대부분 그대로 사용할 수 있다는 점이 큰 장점이다. 특히 현용기가 아닌 세가새턴을 제외하고는 모든 기기가 Sofdec을 지원하는데 큰 무리가 없기 때문에 멀티 플랫폼을 지원할 경우 번거로운 작업을 최소화 할 수 있다는 장점을 가지고 있다.
1.2. 멀티스트림 재생 ✎ ⊖
Sofdec은 ADX에서 지원하는 심리스 로드 방식을 이용해서 멀티스트림 재생을 지원한다. 여러 동영상 스트림을 병행적 및 독립적, 비동기적으로 재생할 수 있다.
하나의 파일에 여러 스트림을 묶어서 동시 로딩한 후 원하는 스트림만을 재생하거나 복합 스트림을 재생함으로서 원하는 영상을 조합하거나 동영상 텍스쳐로 활용하기 위한 실시간 버퍼링을 운용하는 것이 가능하다.
하나의 파일에 여러 스트림을 묶어서 동시 로딩한 후 원하는 스트림만을 재생하거나 복합 스트림을 재생함으로서 원하는 영상을 조합하거나 동영상 텍스쳐로 활용하기 위한 실시간 버퍼링을 운용하는 것이 가능하다.
멀티스트림 재생 데모 보기
1.2.1. Seamless 재생 ✎ ⊖
잘게 썰어놓은 여러 파일을 원하는 순서로 로드해서 재생을 시킬 수 있다. 분기별로 다른 영상을 재생한다거나 하는 것이 가능해진다. 예를 들면 Dancing Blade 제멋대로 모모텐시!같은 게임에서 루트 분기에서 선택기에 따라 약간씩 다른 영상을 불러와야 할 때 이전에는 플래그에 따른 분기에 따라 맞는 동영상을 로드함에 따라 끊김이 발생하게 되지만 Sofdec에서는 별도의 프로그래밍을 통한 버퍼링 제어 없이 끊김없이 분기나 변화 사항을 적용해 재생시킬 수 있다.
이러한 면을 보면 Sofdec과 ADX가 걸게에서 많이 사용되는 것은 결코 신기한 일이 아니다.
이러한 면을 보면 Sofdec과 ADX가 걸게에서 많이 사용되는 것은 결코 신기한 일이 아니다.
1.2.2. 이미지 추출 ✎ ⊖
동영상 내의 프레임 번호를 지정해서 JPEG 형식으로 이미지를 추출해낼 수 있다.
예를 들어서 지나간 영상을 회상하는 씬을 만든다고 생각하면 일부러 이미지를 저장해둘 필요없이 해당 프레임을 확인해서 로드시키면 JPEG 형식으로 압축된 데이터를 로드할 수 있다. 이것을 통해 단순 이미지를 불러들인다거나 텍스쳐맵핑 데이터를 저장했다가 불러들이는 등의 활용이 가능하다.
예를 들어서 지나간 영상을 회상하는 씬을 만든다고 생각하면 일부러 이미지를 저장해둘 필요없이 해당 프레임을 확인해서 로드시키면 JPEG 형식으로 압축된 데이터를 로드할 수 있다. 이것을 통해 단순 이미지를 불러들인다거나 텍스쳐맵핑 데이터를 저장했다가 불러들이는 등의 활용이 가능하다.
1.3. 낮은 CPU 점유율 ✎ ⊖
지금 글로 읽으면 잘 감흥이 일어나지 않을 코덱이지만, 스펙상 MP3 디코딩 조차 어렵던 20MHz에 불과한 세가새턴의 CPU와 보조프로세서를 말그대로 쥐어짜고 쥐어짜서 소프트웨어MPEG 디코더를 만들어낸 것이다. 당시에는 MPEG디코딩을 위해서 하드웨어 디코더 보드를 판매하던 시기였고(심지어 PC조차), 펜티엄 급이나 되어야 XING 등의 소프트웨어 디코더를 돌리던 시기이니 새턴에서 소프트웨어 MPEG디코딩이 가능했다는 것은 거의 사기에 가까운 기술이라고 할 수 있다.
이후 후속 기종인 드림캐스트의 SH-4에서 MPEG-2 비디오 코덱을 소프트웨어로 디코딩할 수 있게 버전업 되었는데, 이는 당시에도 PC에서는 DVD 재생을 위한 전용 보드가 판매되거나, 그래픽카드가 MPEG-2 가속을 지원하는 경우(ATi의 레이지 시리즈 등), 혹은 MMX가 지원되는 프로세서가 있어야 원활한 상태였기 때문에 이러한 지원은 상당한 것이었다. 특히 이 때 스펙의 향상과 함께 텍스쳐 맵핑 등에 동영상이나 동영상에 사용되는 스트림 데이터를 이용하는 기술이 사용되기 시작하면서 3D그래픽스에서 동영상 데이터를 사용할 때는 CPU 점유율이 낮은 Sofdec의 활용이 가능한 것 등이 매우 유용하게 받아들여졌다.
이후 후속 기종인 드림캐스트의 SH-4에서 MPEG-2 비디오 코덱을 소프트웨어로 디코딩할 수 있게 버전업 되었는데, 이는 당시에도 PC에서는 DVD 재생을 위한 전용 보드가 판매되거나, 그래픽카드가 MPEG-2 가속을 지원하는 경우(ATi의 레이지 시리즈 등), 혹은 MMX가 지원되는 프로세서가 있어야 원활한 상태였기 때문에 이러한 지원은 상당한 것이었다. 특히 이 때 스펙의 향상과 함께 텍스쳐 맵핑 등에 동영상이나 동영상에 사용되는 스트림 데이터를 이용하는 기술이 사용되기 시작하면서 3D그래픽스에서 동영상 데이터를 사용할 때는 CPU 점유율이 낮은 Sofdec의 활용이 가능한 것 등이 매우 유용하게 받아들여졌다.
1.4. 화질 및 코덱 ✎ ⊖
Sofdec은 위에서 설명한대로 MPEG-1 규격과 MPEG-2 규격의 비디오 압축 방식을 지원한다. 하드웨어 가속방식의 디코딩 방식이 지원 해상도에 제약이 심한데 반해서 Sofdec은 소프트웨어 디코더이기 때문에 16*16 사이즈 단위로 자유롭게 사이즈 변경이 가능하다. 즉 16의 배수로 증가하는 해상도면 특별한 규격없이 전부 디코딩이 가능하다. 컬러는 기본적으로는 24비트 컬러까지 지원한다. 8비트 및 16비트 컬러 프로필도 지원한다.
비트레이트는 표준으로는 6Mbps를 추천하고 있으며 CBR, ABR, VBR 방식으로 압축하는 것이 가능하다. 최소 및 최대 제한 비트레이트는 없지만 MPEG-1, 2 규격의 압축을 하기 때문에 MPEG-4나 H264등의 최신 코덱에 비하면 비트레이트 대비 화질면에서 불리한 면은 분명히 가지고 있다.
프레임은 기본적으로는 24프레임, 30프레임, 60프레임을 지원하지만 그외에도 MPEG비디오가 지원하는 표준 규격을 거의 모두 지원한다.
비트레이트는 표준으로는 6Mbps를 추천하고 있으며 CBR, ABR, VBR 방식으로 압축하는 것이 가능하다. 최소 및 최대 제한 비트레이트는 없지만 MPEG-1, 2 규격의 압축을 하기 때문에 MPEG-4나 H264등의 최신 코덱에 비하면 비트레이트 대비 화질면에서 불리한 면은 분명히 가지고 있다.
프레임은 기본적으로는 24프레임, 30프레임, 60프레임을 지원하지만 그외에도 MPEG비디오가 지원하는 표준 규격을 거의 모두 지원한다.
영상 스트림 | Sofdec 비디오, MPEG-1/MPEG-2 비디오 |
프레임 속도 | 60fps, 30fps, 24 fps 등 (이미지 크기, 비트레이트에 따라 다름) |
이미지 크기 | 16×16 픽셀 단위로 임의적(표준 640×480 픽셀) |
비트레이트 | 일정 범위에서 임의적(표준 약 6Mbps) |
출력 이미지 | 24비트 컬러(1600만색, YCC4:2:0 형식) |
지원 오디오 | ADX1, ADX2(특정 기종 한정) |
1.5. Sofdec FX ✎ ⊖
Sofdec FX는 Sofdec에서 지원하는 확장기능을 지칭하는 명칭이다. 동영상 텍스쳐나 스프라이트 대용으로 사용하는 등의 다양한 활용이 가능하다. 파이널 판타지7의 동영상을 배경으로 움직이는 놀이 공원 스테이지 등을 표현하기 위해서 구현된 기능들이 많다. 기본적으로 코덱 내에서 지원하는 아래의 기능들을 API를 통해서 게임 내에서 간단히 호출해서 운용할 수 있게 지원하는 기능들이다.
1.5.1. 동영상 텍스쳐 ✎ ⊖
3D그래픽스에 사용하는 텍스쳐 맵핑 데이터로 동영상을 실시간으로 맵핑해 붙일 수 있다. 게임 중에 등장하는 전광판 등에 재생되는 영상 등에 적용이 가능하다. 기본적으로는 복잡한 모델링에는 사용되기 어렵고 단순 평면에 동영상을 출력하는 형태로만 활용이 가능하다. 이론상으로는 복잡한 모델링에도 3D그래픽 처리단에서 해당 동영상을 맵핑 데이터로 쓰기위해 변용하는 과정을 추가하면 쓸 수 있긴 하겠으나, 그런 회사는 없었던 듯 하다.
동영상 텍스쳐 데모
1.5.2. 이펙트 무비 ✎ ⊖
폭발, 화염, 연기, 천둥 등 리얼타임 렌더링으로는 표현이 어려운 복잡한 이펙트나 파티클 영상효과를 미리 렌더링해둔 영상을 이용해서 쉽게 표현할 수 있다. 데스크림슨2의 오프닝에서 옥중의 대니가 죽을 때 폭발 이펙트를 이 기술로 처리했다. (상당히 언밸런스해서 어색하긴하지만)
이펙트 무비 데모
1.5.3. α채널 동영상 ✎ ⊖
동영상 데이터 자체에 α채널(투명도) 정보를 부여한 동영상을 통해서 게임 영상과 동영상의 합성을 더욱 자연스럽게 적용할 수 있게 해준다. 8비트 알파 채널을 통해서 투명도를 부여, 실시간 렌더링이 어려운 반투명한 사물을 표현해서 화면 내에 배치해줄 수 있다.
알파 채널 동영상 데모 보기
1.5.4. Z채널 동영상 ✎ ⊖
동영상 이미지에 픽셀 단위로 Z값(깊이값)을 부여해 3D 그래픽과 합쳐서 렌더링 할 때 자연스러운 그래픽 표현을 할 수 있게 해준다. 시점이 고정이라는 전제 하에서 자연스러운 유사 3D 그래픽과 같은 효과를 기대할 수 있기 때문에 활용 방안이 매우 넓다.
특히 건슈팅 게임같은 1자 진행형의 레일 게임에서 배경 그래픽을 동영상으로 도입해서 전체적인 퀄리티를 높인다거나 하는 것이 가능해진다.
특히 건슈팅 게임같은 1자 진행형의 레일 게임에서 배경 그래픽을 동영상으로 도입해서 전체적인 퀄리티를 높인다거나 하는 것이 가능해진다.
Z채널 동영상 데모2 보기
Z채널 동영상 데모3 보기
2. 파일포맷 ✎ ⊖
2.1. SFD ✎ ⊖
SFD는 Sofdec의 영상 컨테이너다. 기본적으로 MPEG-2 규격의 파일과 큰 차이는 없으나 ADX 규격에서 사용하는 헤더 정보와 인덱스, 스크립트 데이터를 포함하고 있다. 기본적으로 영상 데이터 자체는 MPEG-1이나 MPEG-2 코덱을 사용하기 때문에 파일 컨테이너만 전환시키면 여타 MPEG 디코더로도 디코딩이 가능하다.
파일 내부에 ADX오디오 트랙을 포함시킬 수 있으나, 비디오만 담아두고 SFA에서 별도 스트리밍을 읽어들여 재생하는 것도 가능하다.
기본적으로 패키징 등은 ADX에서 담당하기 때문에 Sofdec에서는 동영상 저장과 디코딩만 담당한다고 보면 된다.
파일 내부에 ADX오디오 트랙을 포함시킬 수 있으나, 비디오만 담아두고 SFA에서 별도 스트리밍을 읽어들여 재생하는 것도 가능하다.
기본적으로 패키징 등은 ADX에서 담당하기 때문에 Sofdec에서는 동영상 저장과 디코딩만 담당한다고 보면 된다.
이 문서의 내용 중 전체 또는 일부는 넥스32 위키에서 가져왔으며 GNU Free Documentation License 1.3에 따라 이용할 수 있습니다.
본 문서의 원본은 링크에서 확인할 수 있습니다.
본 문서의 원본은 링크에서 확인할 수 있습니다.