메아리 저널

T.81과 ISO 15948의 차이점

심심할 때마다 하는 일이라는 것 중 하나가 파일 포맷 들여다 보고 분석하거나 스펙 보면서 구현해 보고 하는 건데, 최근에 JPEG를 한 번 들여다 봐야 겠다고 마음을 먹고 스펙을 보긴 했다...만.

도저히 뭔 말인지 알아 먹기가 힘들어 orz

PNG 파일 포맷과 JPEG 파일 포맷은 모두 국제적인 표준으로 등록되어 있다. PNG의 경우 ISO 15948, JPEG의 경우 ITU T.81에 해당하는데, 나 같은 경우 PNG 스펙은 술술 읽히는 데 비해서 JPEG 스펙은 도저히 뭔 말인지 알 수 없을 정도로 헷갈린다. 몇 번 읽어 보다가 왜 이런 차이가 일어 나는 지 생각해 보니까, 뭔가 실마리가 잡히는 듯 싶었다.

  • 일단 JPEG 표준 자체가 상당히 복잡한 편이라는 게 가장 큰 이유일 것이다. JPEG에 정의된 코딩 방법은 무려 14종류(큰 갈래만 치자면 4종류)인데, 실제로는 몇몇 방법만이 쓰일 뿐이다. 덕분에 스펙의 양도 많아져서, PNG 스펙은 약 60여 쪽 정도 되지만 JPEG 스펙은 180여 쪽이나 된다.
  • JPEG 표준은 1992년에 나온 것이지만 PNG 표준은 2003년에 나온 것이다. JPEG 표준이 훨씬 이전에 나왔기 때문에 최근에 나온 것보다 익숙하지 않을 수 밖에 없다. 예를 들어서, 16진수를 X'BEEF'라고 표시한다던지 난데 없는 순서도가 나온다던지 하는 경우가 있는데, 이런 게 한 두 개 나오는 게 아니라 순서도 같은 경우에는 수십 개가 나오기 때문에 헷갈리기 일쑤이다.
  • 가장 신경질 나는 것은, JPEG 스펙의 중요한 부분들이 거의 다 부록 쪽으로 가 버렸다는 것이다. 예를 들어서 JPEG 파일 포맷의 전체적인 overview는 Annex B에 있다던지 하는 식이다. 이런 구성은 스펙을 참고하면서 뭔가 하려는 사람들에게 큰 좌절과 함께 신경질을 안겨다 준다. -_-
  • JPEG JFIF 스펙 같은 것도 위와 비슷한 이유로 보통 사람들한테 친숙한 스타일로 스펙이 쓰여 있지 않은 편이다. 차라리 T.81보다는 낫지만.

DCT 같은 수학적 개념은 사실 어려운 게 아닌데 이런 이유로 인해서 JPEG 스펙은 정말 읽기 힘들다. orz 인터넷에서 적당한 tutorial을 찾아 보려고도 했으나 변변한 걸 찾지 못 했다. -_- 아무래도 PNG 디코더나 먼저 만들어 보고 JPEG를 다시 들여다 봐야 할까 싶다.

이 글은 본래 http://tokigun.net/blog/entry.php?blogid=8에 썼던 것을 옮겨 온 것입니다.


(rev 553c824afb91)