2015-01-14 8 views
0

decoding entropy encoded DC values in JPEG (또는 entropy encoded prediction differences in lossless JPEG) 일 때 마커와 허프만 코딩 된 값 앞에 바이트를 채우기 위해 채워진 1 비트를 어떻게 구별합니까?패딩/스터프 비트 처리 엔트로피 인코딩 된 JPEG

0xAF 0xFF 0xD9 

나는 이미 내가 어떻게 다음 0xF 패딩 또는 디코딩해야하는지 알 수 있습니다, [0xA]의 비트를 소비 한 예를 들면 다음과 같습니다

나는 본다면?

이것은 JPEG 규격에서이다

F.1.2.3 바이트 스터핑 디코딩없이 압축 화상 데이터에 위치 할 수있는 마커 코드 대한 코드 공간을 제공하기 위해, 바이트 스터핑이 사용됩니다.

정상적인 인코딩 과정에서 코드 문자열에 바이트 값 X'FF '이 생성 될 때마다 X'00'바이트가 이 코드 문자열에 채워집니다. X'00 '바이트가 X'FF'바이트 다음에 발견되면 디코더는이를 버려야합니다. 바이트가 0이 아닌 경우 마커가 감지되었으며 스캔 디코딩을 완료하는 데 필요한 범위 인 으로 해석되어야합니다.

마커의 바이트 정렬은 불완전한 바이트를 1 비트 패딩하여 얻을 수 있습니다. 1 비트로 패딩하면 X'FF '값이 생성되고 마커를 추가하기 전에 0 바이트가 채워집니다.

답변

1

압축 된 데이터 스트림에는 FF 값에 대해 두 가지 가능성이 있습니다.

  1. Restart Marker; 또는
  2. FF00은 FF를 나타냅니다.

스트림을 디코딩하는 경우 다시 시작 마커가 필요할 때 다시 시작 간격에서 알 수 있습니다. 재시작 마커를 찾아야하는 부분을 디코딩 할 때 현재 바이트의 나머지 비트는 무시합니다.

+0

재시작 마커를 치기 전에'EOI (0xFF, 0xD9)'를 치면 어떨까요? –

+0

모든 MCU를 디코딩하지 않고 EOI 시장에 진입하면 데이터에 문제가있는 것입니다. – user3344003

+0

[DRI]를 사용하는 것은 선택 사항입니다 (https://en.wikipedia.org/wiki/JPEG#Syntax_and_structure). –