KR101627568B1 - 동화상 부호화 장치, 동화상 부호화 방법 및 동화상 부호화용 컴퓨터 프로그램 - Google Patents

동화상 부호화 장치, 동화상 부호화 방법 및 동화상 부호화용 컴퓨터 프로그램 Download PDF

Info

Publication number
KR101627568B1
KR101627568B1 KR1020157002906A KR20157002906A KR101627568B1 KR 101627568 B1 KR101627568 B1 KR 101627568B1 KR 1020157002906 A KR1020157002906 A KR 1020157002906A KR 20157002906 A KR20157002906 A KR 20157002906A KR 101627568 B1 KR101627568 B1 KR 101627568B1
Authority
KR
South Korea
Prior art keywords
group
block
decoding
bit
picture
Prior art date
Application number
KR1020157002906A
Other languages
English (en)
Other versions
KR20150028835A (ko
Inventor
기미히꼬 가즈이
사또시 시마다
아끼라 나까가와
히데노부 미요시
준페이 고야마
Original Assignee
후지쯔 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후지쯔 가부시끼가이샤 filed Critical 후지쯔 가부시끼가이샤
Publication of KR20150028835A publication Critical patent/KR20150028835A/ko
Application granted granted Critical
Publication of KR101627568B1 publication Critical patent/KR101627568B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

동화상 부호화 장치는, 복수의 그룹 중, 각 블록이 속하는 그룹을 결정하는 그룹 결정부와, 그룹마다 복호 시각을 산출하는 그룹 복호 시각 정보 산출부와, 각 블록이 속하는 그룹을 나타내는 그룹 정보를 출력 데이터에 부가하는 그룹 정보 부가부와, 그룹에 포함되는 모든 블록의 복호에 필요한 데이터가, 소정의 전송 레이트로 동화상 복호 장치에 전송된 경우에, 그 그룹의 복호 시각까지 동화상 복호 장치의 스트림 수신 버퍼에 도달하도록, 그 그룹에 포함되는 각 블록의 부호량을 제어하는 부호량 제어부와, 부호량의 제어 정보에 기초하여 각 블록을 부호화하는 부호화 처리부를 갖는다.

Description

동화상 부호화 장치, 동화상 부호화 방법 및 동화상 부호화용 컴퓨터 프로그램{DYNAMIC IMAGE ENCODING DEVICE, DYNAMIC IMAGE ENCODING METHOD, AND COMPUTER PROGRAM FOR DYNAMIC IMAGE ENCODING}
본 발명은, 예를 들면, 각 픽쳐를 복수의 블록으로 분할하여 블록마다 부호화하는 동화상 부호화 장치, 동화상 부호화 방법 및 동화상 부호화용 컴퓨터 프로그램에 관한 것이다.
최근의 동화상 부호화에서는, 각 픽쳐는 압축 효율이 다른 부호화의 모드 중 어느 하나에 따라서 부호화된다. 예를 들면, 각 픽쳐는, 픽쳐 내 예측만을 이용하여 부호화되는 화면 내 예측 픽쳐(I 픽쳐)와, 픽쳐간 예측을 이용하는 한쪽 방향 예측 픽쳐(P 픽쳐)와, 쌍방향 예측 픽쳐(B 픽쳐) 중 어느 하나에 따라서 부호화된다. 픽쳐의 타입 또는 화상의 복잡함에 따라서 발생하는 부호량이 다르고, 각 시각에서 발생하는 부호량에 치우침이 발생하게 된다. 이 때문에, 일정한 전송 레이트로 부호화된 동화상을 포함하는 데이터 스트림을 전송하기 위해서는, 스트림의 송신 버퍼와, 수신 버퍼가 필요해진다. 이 버퍼에 의해 버퍼 지연이 발생하는 것이, 동화상 복호 장치에 있어서의 표시 지연의 1개의 요인으로 되고 있다. 버퍼의 사이즈를 작게 하면, 픽쳐간에서의 부호량 배분의 자유도가 감소하므로, 동화상 복호 장치는, 화질이 열화되는 경향이 있지만 버퍼 지연을 감소시킬 수 있다.
종래의 동화상 부호화의 국제 표준인 MPEG-2Video(ISOㆍIEC 13818-2/ITU-T H.262, 이하 MPEG-2라고 함) 또는 MPEG-4AVC/H.264(ISOㆍIEC 14496-10/ITU-T H.264, 이하 H.264라고 함)에서는, 각각 Video Buffering Verifier(VBV)와 Coded Picture Buffer(CPB)라고 불리는, 이상 복호 장치에 있어서의 스트림 수신 버퍼의 동작을 규정하고 있다. 동화상 부호화 장치는, 이상 복호 장치의 수신 버퍼를, 오버플로 및 언더플로시키지 않도록, 부호량을 제어해야만 한다. 이상 복호 장치는, 복호 처리에 필요로 하는 시간이 0인 순시 복호를 행한다고 규정되어 있다. 예를 들면, 특허문헌 1에 VBV에 관한 동화상 부호화 장치의 제어 방법이 개시되어 있다.
일본 특허 출원 공개 평3-148981호 공보
MPEG-2 Test Model 5. April 1993. ISO-IEC/JTC1/SC29/WG11/N0400(http://www.mpeg.org/MPEG/MSSG/tm5/) JCTVC-A116, "Description of video coding technology proposal by Fraunhofer HHI", Joint Collaborative Team on Video Coding of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, April 2010
동화상 부호화 장치는, 이상 복호 장치의 수신 버퍼에 오버플로 및 언더플로를 일으키지 않기 때문에, 이상 복호 장치가, 어떤 픽쳐를 복호할 시각에, 그 픽쳐의 데이터가 수신 버퍼에 갖추어져 있는 것을 보증하도록 부호량을 제어한다.
수신 버퍼의 언더플로란, 동화상 부호화 장치가 일정한 전송 레이트로 데이터 스트림을 송신한 경우에, 각 픽쳐의 부호량이 많고, 동화상 복호 장치가 복호ㆍ표시해야 할 시각까지 픽쳐를 복호하는 데 필요한 데이터의 전송이 완료되지 않고, 복호 수신 버퍼 내에 필요 데이터가 존재하고 있지 않은 것이다. 이 경우, 동화상 복호 장치는 복호 처리를 행할 수 없으므로, 프레임 스킵이 발생하게 된다.
동화상 복호 장치는, 수신 버퍼의 언더플로를 일으키지 않고 복호 처리할 수 있도록, 스트림을 수신 시각으로부터 소정의 시간만큼 지연시키고 나서 픽쳐를 표시한다.
상술한 바와 같이, 이상 복호 장치에서는, 처리 시간 0에서, 순간적으로 복호 처리가 완료된다고 규정된다. 그로 인해, 동화상 부호화 장치로의 i번째 픽쳐의 입력 시각을 t(i), 이상 복호 장치에 있어서의, i번째 픽쳐의 복호 시각을 dt(i)로 하면, 그 픽쳐가 표시 가능해지는 시각은, 마찬가지로 dt(i)가 된다. 모든 픽쳐에 있어서 픽쳐의 표시 기간 {t(i+1)-t(i)}와 {dt(i+1)-dt(i)}가 동등하게 되므로, 복호 시각 dt(i)는, 입력 시각 t(i)로부터 고정 시간 dly분만큼 지연시킨 시각 {dt(i)=t(i)+dly}가 된다. 따라서, 동화상 부호화 장치는, 시각 dt(i)까지 복호에 필요한 데이터를 동화상 복호 장치의 수신 버퍼에 전송 완료시켜야만 한다.
도 1을 참조하면서, 종래의 수신 버퍼의 모습을 설명한다. 도 1에 있어서 횡축은 시각을 나타내고, 종축은 수신 버퍼의 버퍼 점유량을 나타낸다. 그리고 실선의 그래프(100)는, 각 시각에서의 버퍼 점유량을 나타낸다.
수신 버퍼에서는, 소정의 전송 레이트로 버퍼 점유량이 회복되고, 각 픽쳐의 복호 시각에 그 픽쳐를 복호하기 위해 이용되는 만큼 데이터가 버퍼로부터 검색된다. i번째 픽쳐의 데이터가, 시각 at(i)로부터 수신 버퍼에 입력 개시되고, i번째 픽쳐의 최후의 데이터가 시각 ft(i)에 입력된다. 이상 복호 장치는 시각 dt(i)에서 i번째 픽쳐의 복호를 완료하고, 그 시각 dt(i)에 있어서 i번째 픽쳐가 표시 가능해진다.
이상 복호 장치가 순간 복호인 한편, 실제의 동화상 복호 장치는 소정의 복호 처리 시간을 필요로 하고, 일반적으로는 1픽쳐의 복호 처리 시간은 픽쳐의 표시 기간보다도 짧지만, 픽쳐의 표시 기간에 가까운 시간이 필요해진다. 시각 at(i)로부터 ft(i)까지 i번째 픽쳐의 데이터가 수신 버퍼에 입력되지만, 각 블록의 복호에 필요한 데이터가 at(i)로부터 ft(i) 내의 어느 시각에 도착할지 보증되지 않는다. 그 때문에, 실제의 동화상 복호 장치는, 시각 ft(i)로부터 i번째 픽쳐의 복호 처리를 개시하게 된다. 따라서, 1픽쳐의 복호 처리에 필요한 최악의 처리 시간을 ct로 하면, 실제의 동화상 복호 장치는 시각 ft(i)+ct밖에 복호 처리를 완료하는 것을 보증할 수 없다.
동화상 부호화 장치가 보증하고 있는 것은, 시각 dt(i)까지, 그 픽쳐의 복호에 필요한 데이터가 복호 수신 버퍼에 도착하고 있는 것, 즉, ft(i)가 dt(i) 이전이 되는 것이다. 그로 인해, ft(i)가 가장 지연되는 경우, ft(i)는 dt(i)와 동등하게 된다. 이때, 복호 처리가 완료되는 것이 보증되는 시각은, dt(i)+ct가 된다. 표시하는 픽쳐의 간격이 일정해지도록, 모든 픽쳐를 표시하기 위해서는, 동화상 복호 장치는, 각 픽쳐의 표시 시각을 이상 복호 장치보다도 적어도 ct만큼 지연시켜야만 한다.
따라서 본 명세서는, 복호 처리의 지연을 저감하는 동화상 부호화 장치 및 동화상 부호화 방법을 제공하는 것을 목적으로 한다.
하나의 실시 형태에 따르면, 동화상 데이터에 포함되는 각 픽쳐를 복수의 블록으로 분할하여 부호화하는 동화상 부호화 장치가 제공된다. 이 동화상 부호화 장치는, 복수의 그룹 중, 각 블록이 속하는 그룹을 결정하는 그룹 결정부와, 그룹마다 복호 시각을 산출하는 그룹 복호 시각 정보 산출부와, 각 블록이 속하는 그룹을 나타내는 그룹 정보를 출력 데이터에 부가하는 그룹 정보 부가부와, 그룹에 포함되는 모든 블록의 복호에 필요한 데이터가, 소정의 전송 레이트로 동화상 복호 장치에 전송된 경우에, 복호 시각 정보 산출부에 의해 산출된 그 그룹의 복호 시각까지 동화상 복호 장치의 스트림 수신 버퍼에 도달하도록, 그 그룹에 포함되는 각 블록의 부호량을 제어하는 부호량 제어부와, 부호량의 제어 정보에 기초하여 각 블록을 부호화하는 부호화 처리부를 갖는다.
또한 다른 실시 형태에 따르면, 동화상 데이터에 포함되는 각 픽쳐를 복수의 블록으로 분할하여 부호화하는 동화상 부호화 방법이 제공된다. 이 동화상 부호화 방법은, 복수의 그룹 중, 각 블록이 속하는 그룹을 결정하고, 그룹마다 복호 시각을 산출하고, 각 블록이 속하는 그룹을 나타내는 그룹 정보를 출력 데이터에 부가하고, 그룹에 포함되는 모든 블록의 복호에 필요한 데이터가, 소정의 전송 레이트로 동화상 복호 장치에 전송된 경우에, 그 그룹의 복호 시각까지 동화상 복호 장치의 스트림 수신 버퍼에 도달하도록, 그 그룹에 포함되는 각 블록의 부호량을 제어하고, 부호량의 제어 정보에 기초하여 각 블록을 부호화하는 것을 포함한다.
또 다른 실시 형태에 따르면, 동화상 데이터에 포함되는 각 픽쳐를 복수의 블록으로 분할하여 부호화하는 동화상 부호화용 컴퓨터 프로그램이 제공된다. 이 동화상 부호화용 컴퓨터 프로그램은, 복수의 그룹 중, 각 블록이 속하는 그룹을 결정하고, 그룹마다 복호 시각을 산출하고, 각 블록이 속하는 그룹을 나타내는 그룹 정보를 출력 데이터에 부가하고, 그룹에 포함되는 모든 블록의 복호에 필요한 데이터가, 소정의 전송 레이트로 동화상 복호 장치에 전송된 경우에, 그 그룹의 복호 시각까지 동화상 복호 장치의 스트림 수신 버퍼에 도달하도록, 그 그룹에 포함되는 각 블록의 부호량을 제어하고, 부호량의 제어 정보에 기초하여 각 블록을 부호화하는 것을 컴퓨터에 실현시키는 명령을 포함한다.
본 발명의 목적 및 이점은, 청구항에 있어서 특별히 지적된 엘리먼트 및 조합에 의해 실현되고, 또한 달성된다.
상기의 일반적인 기술 및 하기의 상세한 기술의 어느 것이나, 예시적 또한 설명적인 것이고, 청구항과 같이, 본 발명을 한정하는 것이 아닌 것을 이해하기 바란다.
본 명세서에 개시된 동화상 부호화 장치 및 동화상 부호화 방법은, 복호 처리의 지연을 저감할 수 있다.
도 1은 종래 기술에 의한 수신 버퍼의 버퍼 점유량의 천이를 나타내는 도면이다.
도 2는 하나의 실시 형태에 따른, 동화상 부호화 장치의 개략 구성도이다.
도 3은 하나의 실시 형태에 따른 동화상 부호화 장치에 의해 전송되는 부호화 동화상 데이터 스트림이 축적되는 수신 버퍼의 버퍼 점유량의 천이를 나타내는 도면이다.
도 4는 최초 그룹의 복호 시각을 지연시킨 경우에서의, 수신 버퍼의 버퍼 점유량의 천이를 나타내는 도면이다.
도 5는 하나의 실시 형태에 따른 동화상 부호화 처리의 동작 플로우차트를 나타내는 도면이다.
도 6은 제1 실시 형태에 따른 블록의 최종 비트의 설명도이다.
도 7은 제2 실시 형태에 따른 블록의 최종 비트의 설명도이다.
도 8의 (a)는 제3 실시 형태에 따른 하나의 블록의 압축 데이터의 구조를 도시하는 도면이다.
도 8의 (b)는 압축 데이터와, 가변 길이 부호화에 의해 변환된 비트열의 관계를 설명하는 도면이다.
도 9의 (a)는 제3 실시 형태에 따른 가변 길이 부호화부에 의해 가변 길이 부호화된 블록의 최종 비트 위치를 도출하는 플로우차트 (1)이다.
도 9의 (b)는 제3 실시 형태에 따른 가변 길이 부호화부에 의해 가변 길이 부호화된 블록의 최종 비트 위치를 도출하는 플로우차트 (2)이다.
도 9의 (c)는 제3 실시 형태에 따른 가변 길이 부호화부에 의해 가변 길이 부호화된 블록의 최종 비트 위치를 도출하는 플로우차트 (3)이다.
도 10은 제4 실시 형태에 따른 가변 길이 부호화부가 갖는 엔트로피 부호화부의 개략 구성도이다.
도 11은 제4 실시 형태에 따른 블록의 최종 비트의 설명도이다.
도 12는 제4 실시 형태에 따른 가변 길이 부호화부의 빈(bin) 부호화부 및 다중화부의 거동의 설명도이다.
도 13의 (a)는 제4 실시 형태에 따른 가변 길이 부호화부에 의해 가변 길이 부호화된 블록의 최종 비트 위치를 도출하는 플로우차트 (1)이다.
도 13의 (b)는 제4 실시 형태에 따른 가변 길이 부호화부에 의해 가변 길이 부호화된 블록의 최종 비트 위치를 도출하는 플로우차트 (2)이다.
도 13의 (c)는 제4 실시 형태에 따른 가변 길이 부호화부에 의해 가변 길이 부호화된 블록의 최종 비트 위치를 도출하는 플로우차트 (3)이다.
이하, 도면을 참조하면서, 하나의 실시 형태에 따른 동화상 부호화 장치에 대해서 설명한다.
도 2는, 하나의 실시 형태에 따른, 동화상 부호화 장치의 개략 구성도이다. 동화상 부호화 장치(10)는 부호화 처리부(11)와, 부호량 제어부(12)와, 그룹 결정부(13)와, 그룹 복호 시각 정보 산출부(14)와, 그룹 정보 부가부(15)와, 비트 카운터(25)를 갖는다. 동화상 부호화 장치(10)가 갖는 이들의 각 부는, 각각, 별개의 회로로서 동화상 부호화 장치(10)에 실장된다. 혹은, 동화상 부호화 장치(10)가 갖는 이들의 각 부는, 그 각 부의 기능을 실현하는 회로가 집적된 하나의 집적 회로로서 동화상 부호화 장치(10)에 실장되어도 좋다. 혹은 또한, 동화상 부호화 장치(10)가 갖는 이들의 각 부는, 동화상 부호화 장치(10)가 갖는 프로세서상에서 실행되는 컴퓨터 프로그램에 의해 실현되는 기능 모듈이어도 좋다.
동화상 데이터에 포함되는 부호화 대상 픽쳐는, 도시하지 않은 제어부에 의해 블록 단위로 분할되고, 블록마다 부호화 처리부(11)에 입력된다. 각 블록은, 예를 들면, 16×16화소를 갖는다.
각 블록은 직교 변환부(21)에 입력된다. 그리고 직교 변환부(21)는, 각 블록에 대해서, 각각, 예를 들면 이산 코사인 변환(Discrete Cosine Transform, DCT) 등의 직교 변환 처리를 행하여 주파수 계수의 조(組)를 산출한다. 산출된 주파수 계수의 조는 양자화부(22)에 입력된다. 또한, 각 블록에 대해서, 이미 부호화된 픽쳐를 움직임 보상하는 것 등에 의해 예측 화상이 생성되는 경우에는, 각 블록과 예측 화상간의 차분 연산에 의해 구해지는 예측 오차 화상이 직교 변환부(21)에 입력되어도 좋다.
또한, 픽쳐는 프레임 또는 필드 중 어느 것이어도 좋다. 프레임은 동화상 데이터 중 하나의 정지 화상이고, 한편, 필드는 프레임으로부터 홀수행의 데이터 혹은 짝수행의 데이터만을 취출함으로써 얻어지는 정지 화상이다.
또한, 부호화된 동화상은 컬러 동화상이어도 좋고, 혹은, 모노크롬 동화상이어도 좋다.
양자화부(22)는, 예를 들면, 부호량 제어부(12)의 양자화값 산출부(24)에 의해 산출된 양자화값에 따라서 결정되는 양자화 스케일로 각 주파수 계수를 제산함으로써, 각 주파수 계수를 양자화한다. 이 양자화에 의해, 각 주파수 계수의 정보가 삭감된다. 양자화값이 커질수록, 양자화의 정밀도가 나빠지고, 각 주파수 계수의 정보가 크게 삭감된다.
양자화부(22)에 의해 양자화된 각 주파수 계수는, 가변 길이 부호화부(23)에 입력된다. 또한 양자화된 각 주파수 계수는, 이후에 부호화되는 픽쳐 또는 블록에 대한 예측 화상을 작성하기 위해 역양자화되고, 또한 역직교 변환되어 도시하지 않은 화상 메모리에 기억되어도 좋다.
가변 길이 부호화부(23)는, 블록의 압축 데이터(양자화된 각 주파수 계수 및 부호화 모드 등의 블록 헤더 정보를 포함함)를 가변 길이 부호화한다. 그리고 가변 길이 부호화부(23)는, 그 가변 길이 부호로 표시되는 비트 계열을 출력 데이터 스트림에 포함시킨다.
또한, 가변 길이 부호화부(23)에서 발생한 비트 계열의 비트량은 블록마다 비트 카운터(25)에서 가산되고, 발생 부호량으로서 부호량 제어부(12)의 버퍼 점유량 산출부(26)로 통지된다.
가변 길이 부호화부(23)의 실시 형태의 상세에 대해서는 후술한다.
그룹 결정부(13)는 부호화 처리 중 블록이 속하는 그룹을, 도시하지 않은 제어부로부터 수취한 블록 카운터 정보에 기초하여 소정 방법에 따라서 결정한다. 블록 카운터 정보는, 픽쳐에 포함되는 각 블록의 번호를 나타내는 정보이고, 예를 들면, 픽쳐의 좌상단의 블록에 대한 번호가 1로 설정되고, 래스터 주사순에 따라서 각 블록에 번호가 할당된다. 그리고 픽쳐의 우하단의 블록에 대해서, 최대의 번호가 할당된다. 또한, 블록 카운터 정보는, 다른 순서에 따라서 각 블록에 할당된 번호를 포함해도 좋다.
그룹 결정부(13)는, 그룹마다의 복호 처리 시간을 균등화하기 위해, 각 그룹에 포함되는 블록의 수가 가능한 한 동등하게 되도록 복수의 그룹을 결정하는 것이 바람직하다. 예를 들면, 그룹 결정부(13)는, 블록 라인 단위에 의해 각 블록을 그룹으로 분할하면, 임의의 픽쳐 사이즈에 있어서 각 그룹에 포함되는 블록의 수를 동등하게 할 수 있다. 예를 들면, 픽쳐 사이즈가, 고선명도 텔레비전 방송(High Definition Television, HDTV) 상당의 1920화소×1088화소이고, 블록 사이즈가 16화소×16화소이면, 블록 라인수는 68이다. 따라서, 이 경우, 부호화 대상 픽쳐에 포함되는 각 블록은, 68개의 그룹 중 어느 하나로 분류된다.
또한, 그룹에 포함되는 블록의 수는, 1로부터 화면 전체의 블록수까지의 사이의 값으로 해도 좋다.
그룹 결정부(13)는, 부호화 대상 블록이 속하는 그룹의 식별 정보를 부호량 제어부(12)의 버퍼 점유량 산출부(26)로 통지한다. 또한 그룹 결정부(13)는, 그룹의 총수 N을 그룹 복호 시각 정보 산출부(14) 및 그룹 정보 부가부(15)로 통지한다. 또한, 그룹 결정부(13)는, 각 그룹의 선두에 위치하는 블록의 인덱스를 그룹 정보 부가부(15)로 통지해도 좋다.
이하, 부호화 대상 픽쳐에 포함되는 수평 방향의 블록수를 M, 수직 방향의 블록수를 N으로서, 전체 블록을 1 블록 라인 단위에 의해 N개의 그룹으로 등분할한 경우를 예로 설명한다.
그룹 복호 시각 정보 산출부(14)는, 부호화 대상 픽쳐가 부호화순을 따라서 i번째의 픽쳐인 것으로서, i번째 픽쳐의 입력 시각 t(i)로부터 소정의 지연 시간 dly분 지연시킨 그 픽쳐의 복호 시각 dt(i) {=t(i)+dly}에 기초하여, n번째의 그룹이 복호되는 시각을 나타내는 복호 시각 dgt(i, n)을 산출한다. 또는, 그룹 복호 시각 정보 산출부(14)는 복호 시각으로서, dgt(i, n) 대신에, dgt(i, n)과 등가인 {dgt(i, n)-dgt(i, n-1)}을 산출해도 좋다. 또한, 그룹 복호 시각 정보 산출부(14)는 복호 시각을, 적당한 단위, 예를 들면, 1/90000초 단위의 배수가 되도록 사사오입해도 좋다.
그룹 복호 시각 정보 산출부(14)는, 예를 들면, 각 그룹의 복호 시각을, 각 그룹의 복호 처리에 필요로 하는 시간을 균등하게 하기 위해, 1픽쳐당의 복호 처리에 필요로 하는 시간을 그룹수 N으로 등분할하도록 결정한다. 이 경우, n번째(n=1, 2, …, N)의 그룹의 복호 시각은, 다음 식에 따라서 산출된다.
Figure 112015011473354-pat00001
또한, 복호 처리에 필요로 하는 시간은, 그룹마다 균등하지 않아도 좋다. 특히, 그룹 복호 시각 정보 산출부(14)는, 다음 식과 같이, 최초로 부호화ㆍ복호되는 그룹에 대응하는 복호 시각 dgt(i, 1)만, 1픽쳐당의 복호 처리에 필요로 하는 시간을 등분할한 경우의 복호 시각보다도 지연시켜도 좋다.
Figure 112015011473354-pat00002
또한, dt(i), dt(i-1)은, 각각, i번째의 픽쳐 및 (i-1)번째의 픽쳐의 복호 시각이다.
또한 그룹 복호 시각 정보 산출부(14)는, 2번째 이후에 부호화ㆍ복호되는 그룹의 복호 시각 dgt(i, n)(n≥2)를, 다음 식과 같이 결정해도 좋다.
Figure 112015011473354-pat00003
이와 같이 복호 시각을 결정함으로써, 그룹 복호 시각 정보 산출부(14)는, 버퍼 점유량 산출부(26)에 의해 산출되는 버퍼 점유량을 최초 그룹의 부호화 처리 개시 전에 크게 할 수 있다. 그 결과, 부호량 제어에 있어서의 자유도가 향상된다.
그룹 복호 시각 정보 산출부(14)는, 각 그룹의 복호 시각을 포함하는 복호 시각 정보를, 버퍼 점유량 산출부(26) 및 그룹 정보 부가부(15)로 출력한다.
버퍼 점유량 산출부(26)는, 이상 복호 장치의 스트림 수신 버퍼의 버퍼 점유량의 추정값을 계산한다. 전송하는 비트 레이트를 R로 하고, 버퍼 점유량을 d로 나타낸다. 부호화 처리 중 블록의 가변 길이 부호화 처리가 완료되고, 그 발생 부호량이 b이었던 경우, b가 비트 카운터(25)로부터 버퍼 점유량 산출부(26)로 통지된다. 그리고 버퍼 점유량 산출부(26)는, d로부터 b를 감산한다.
버퍼 점유량 산출부(26)는, 각 그룹의 최후 블록의 부호화 처리가 행해진 후에, 다음 식에 따라서 버퍼 점유량 d를 회복시킨다.
Figure 112015011473354-pat00004
버퍼 점유량 산출부(26)는, 하나의 블록에 대한 가변 길이 부호화 처리가 종료될 때마다, 구한 버퍼 점유량 d를 양자화값 산출부(24)로 통지한다.
양자화값 산출부(24)는, 버퍼 점유량에 기초하여, 각 블록에 대한 양자화값을 산출한다. 그 때, 양자화값 산출부(24)는, 그룹에 포함되는 모든 블록의 발생 부호량의 합계가, 그 그룹의 최초 블록의 부호화 처리를 개시하기 직전의 버퍼 점유량 d 이하가 되도록, 즉, 부호화 처리 중에 d가 마이너스값이 되지 않도록 양자화값을 제어한다.
양자화값 산출부(24)는, 예를 들면, MPEG-2에 있어서의 표준화 단체 참조 소프트웨어 Test Model5(비특허문헌 1을 참조)에 있어서의 양자화값 산출 방법에 따라서 양자화값을 산출한다. 다음에, 양자화값 산출부(24)는, 버퍼 점유량 d를 소정의 임계값 DTH1과 비교한다. 양자화값을 그 취할 수 있는 값의 범위 중의 최대값으로 하였을 때에, 각 블록에서 발생하는 최대의 부호량을 b0, 부호화 처리 중 블록이 속하는 그룹에서, 아직 부호화 처리를 행하지 않은 블록의 수를 M0으로 하면, 임계값 DTH1은, 다음 식으로 표시된다.
Figure 112015011473354-pat00005
수학식 5에 있어서의 offset은 마진항이다. d와 임계값 DTH1을 비교한 결과, d가 DTH1보다도 작으면, 양자화값 산출부(24)는 양자화값을 최대값으로 한다.
또한 b0으로서, 주파수 계수를 모두 0으로 하였을 때의 블록의 부호량을 이용해도 좋다. 이때, d가 DTH1보다도 작으면, 양자화값 산출부(24)는 부호화 대상 블록의 모든 주파수 계수가 0으로 양자화되도록 양자화값을 결정한다. 이 제어에 의해, 그룹 내의 부호화 처리가 완료되어 있지 않은 나머지 블록의 부호량의 평균값이 b0을 초과하지 않으면, 가상적인 복호 수신 버퍼는 언더플로하지 않는다.
이에 의해, 부호량 제어부(12)는, 동화상 부호화 장치(10)로부터의 출력 스트림을 실제로 소정의 레이트(R)에 따라서 동화상 복호 장치로 전송하면, 동화상 복호 장치의 수신 버퍼가 언더플로하지 않도록 동화상 데이터의 부호량을 제어하는 것이 가능해진다.
양자화값 산출부(24)는, 구한 양자화값을 양자화부(22)로 통지한다.
동화상 부호화 장치(10)는, 동화상 복호 장치와, 각 블록이 속하는 그룹 및 그룹마다의 복호 시각을 공유하기 위해, 적어도, 각 그룹에 속하는 블록을 나타내는 그룹 정보 및 각 그룹의 복호 시각을 포함하는 복호 시각 정보를 출력 데이터 스트림에 부가한다. 그리고 동화상 부호화 장치(10)는, 그룹 정보 및 복호 시각 정보를 동화상 복호 장치로 통지한다.
따라서, 그룹 정보 부가부(15)는, 예를 들면, 그룹 정보를, 각 픽쳐, 혹은 소정의 픽쳐 간격으로, 출력 데이터 스트림의 헤더 정보에 부가한다.
헤더 정보는, 예를 들면, MPEG-2에 규정되는, 시퀀스 헤더(Sequence Header), 또는 H.264에 규정되는 시퀀스 파라미터 세트(Sequence Parameter Set) 혹은 Supplemental Enhancement Information이라고 할 수 있다. 또한, 그룹마다의 복호 시각은, MPEG-2에 규정되는 픽쳐 헤더(Picture Header), 또는 H.264에 규정되는 슬라이스 헤더(Slice Header) 등, 각 픽쳐에 반드시 부수되는 헤더 정보에 부가되어도 좋다.
각 그룹에 포함되는 블록의 수가 동등하게 되도록 그룹이 결정되어 있는 경우, 동화상 부호화 장치(10)는 동화상 복호 장치로 전체 블록이 N개의 그룹으로 등분할된 것을 통지한다. 그 때문에, 그룹 결정부(13)로부터 그룹 정보 부가부(15)에, 그룹 정보로서 그룹수 N이 통지된다. 그룹 정보 부가부(15)는, 그 그룹 정보를 부호화한다. MPEG-2 및 H.264에서는, 매크로 블록이라고 불리는 16×16화소의 블록 단위로 부호화가 행해져 있고, 이 블록수는 통상 20bit로 표현 가능한 범위를 초과하지 않는다. 그룹의 수 N의 최대값은, 기껏해야 블록수의 최대값과 동등하므로, N의 부호화도 고정 bit 길이로 부호화하면 좋다.
또한, 각 그룹에 포함되는 블록의 수가 동등하다고 한정되지 않는 경우, 그룹 결정부(13)로부터 그룹 정보 부가부(15)에 대해서, 그룹수 N과 함께, 각 그룹의 선두 블록의 인덱스 정보가 그룹 정보로서 통지된다. 그룹 정보 부가부(15)는 우선, 그룹수 N을 부호화하고, 순차적으로 각 그룹의 선두 블록의 인덱스 정보를 부호화한다. 선두 블록의 인덱스 정보에 대한 부호화 방법도, 예를 들면, 고정 bit 길이의 부호화 방식이 이용된다. 또한, 그룹 정보 부가부(15)는, 그룹수 N 및 각 그룹의 선두 블록의 인덱스 정보를 부호화하기 위해, 허프만 부호 등의 가변 길이 부호화 방식 등, 다른 부호화 방식을 이용해도 좋다.
또한, 그룹마다의 복호 시각이, 그룹 복호 시각 정보 산출부(14)로부터 그룹 정보 부가부(15)로 통지된다. 그 때, 1번째의 그룹으로부터 최후 그룹인 N번째의 그룹까지, 복호 시각은 dgt(i, n)-dgt(i, n-1)과 차분값의 형식으로 하여 그룹 복호 시각 정보 산출부(14)로부터 그룹 정보 부가부(15)로 통지된다. 또한, 제1 그룹의 복호 시각에 관해서, dgt(i, 0)은 직전 픽쳐의 최후 그룹의 복호 시각 dgt(i-1,N) {=dt(i-1)}로 설정된다. 그룹 정보 부가부(15)는, 각 그룹의 복호 시각을 부호화하고, 그 부호화된 복호 시각을 각 픽쳐의 데이터에 부가하여, 동화상 복호 장치로 통지한다. 그룹 정보 부가부(15)는, 각 차분값을, 적당한 정밀도, 예를 들면, 1/90000초의 정밀도로 양자화한 후에, 32bit 정도의 고정 bit 길이로 부호화하면 된다. 또한, 여기서는, 고정 bit 길이로 부호화하는 예를 설명하였지만, 그룹 정보 부가부(15)는, 각 그룹의 복호 시각을 나타내는 차분값을, 임의의 가변 길이 부호화 방식을 이용하여 부호화해도 좋다.
동화상 복호 장치는, 통지된 그룹수 N과 각 그룹의 복호 시각 정보에 기초하여, 표시 지연량을 산출한다. 각 그룹에 포함되는 블록수가 동등하게 되도록 각 그룹이 설정되어 있는 경우, 표시 지연량은 1픽쳐의 복호 처리에 필요한 최악의 처리 시간을 ct로 하여, ct/N이 된다.
상기의 실시 형태에 따른 동화상 부호화 장치(10)에 의해, 동화상 복호 장치에 있어서의 동화상의 복호의 저지연화가 도모되는 것을, 도 3 및 도 4를 참조하면서 설명한다.
도 3은, 동화상 부호화 장치(10)에 의해 전송되는 부호화 동화상 데이터 스트림이 축적되는 수신 버퍼의 버퍼 점유량의 천이를 나타내는 도면이다. 또한 도 4는, 제1 그룹의 복호 시각을 지연시킨 경우에서의, 수신 버퍼의 버퍼 점유량의 천이를 나타내는 도면이다. 또한, 도 3 및 도 4에 있어서, 횡축은 시간을 나타내고, 종축은 버퍼 점유량을 나타낸다. 또한, 그룹수 N=4인 것으로 한다. 그리고 도 3에 있어서의 그래프(300)는, 버퍼 점유량의 시간 천이를 나타낸다. 또한 화살표(301)로 표시되는 기간은, 각 그룹의 복호에 필요로 하는 최대 시간 ct/N을 나타낸다. 마찬가지로, 도 4에 있어서의 그래프(400)는, 버퍼 점유량의 시간 천이를 나타낸다.
n번째의 그룹에 포함되는 블록을 복호하는 데 필요한 데이터가, 수학식 1로 표시되는 시각 dgt(i, n)까지 수신 버퍼에 도착하도록, 동화상 부호화 장치(10)는 각 블록의 부호량을 제어한다. 1픽쳐의 복호 처리에 필요한 최악의 처리 시간 ct와 (i-1)번째의 픽쳐 및 i번째의 픽쳐의 최후 그룹의 복호 시각 dt(i-1) {=dgt(i-1,N)}, dt(i) {=dgt(i, N)}의 사이에 다음 식이 성립된다.
Figure 112015011473354-pat00006
여기서, 각 그룹에 포함되는 블록수가 동등한 경우, 도 3에 도시하는 바와 같이 다음 식이 성립되므로, i번째의 픽쳐의 최후 그룹의 복호 시각 dgt(i, N)까지, i번째의 픽쳐의 1 내지 (N-1)번째의 그룹의 블록에 대한 복호 처리가 완료되어 있다.
Figure 112015011473354-pat00007
N번째 그룹에 포함되는 블록의 복호에 필요한 데이터가 시각 dgt(i, N)에 동화상 복호 장치의 수신 버퍼에 도착하였다고 하면, 거기서부터 N번째 그룹의 복호 처리를 개시하였다고 하여, 복호 처리 시간으로서 ct/N이 필요해진다. 그 때문에, 다음 식에서 나타내어지는 시각에 전체 블록의 복호가 완료되어, 표시 가능해진다. 따라서, 이상 복호 장치에 대한 표시 가능 시각의 지연이, ct로부터 ct/N으로 단축한다.
Figure 112015011473354-pat00008
그룹 단위로 복호 시각을 산출하는 경우, i번째의 픽쳐의 제1 그룹의 복호 시각 dgt(i, 1)은, i번째의 픽쳐의 복호 시각 dt(i)와 비교하여, {dt(i)-dt(i-1)} (N-1)/N만큼, 빠르게 된다. 그 때문에, 도 1 및 도 3의 점선(302)으로 나타내어지는 1픽쳐 단위의 버퍼 점유량이 나타내는 바와 같이, 종래 기술과 비교해서 수신 버퍼의 점유량이 저하되고, 그 그룹에 사용 가능한 부호량이 감소함과 함께, 그룹간에서의 부호량의 배분의 자유도가 감소한다. 도 1과 같이 수신 버퍼에 각 픽쳐의 데이터가 입력되고 나서, 1픽쳐의 표시 기간 정도로, 각 픽쳐가 복호되는 저지연에 있어서는, 버퍼 점유량이 작게 되므로, 상대적으로 버퍼 점유량이 감소하는 영향이 크게 된다.
이와 같은 문제를 회피하기 위해, 버퍼 점유량을 회복시키는 것을 목적으로서, 수학식 2에서 나타내는 바와 같이 제1 그룹의 복호 시각을 느리게 하는 것이 바람직하다. 제1 그룹의 복호 시각을 지연시킴으로써, 도 4에 도시하는 바와 같이, 버퍼에 전송 가능한 비트량이 증가하고, 따라서, 픽쳐의 발생 부호량의 자유도를 향상시킬 수 있다. 이때, 가장 느린 복호 완료 시각은, 다음 식에 의해 산출되는 값이 된다.
Figure 112015011473354-pat00009
또한, 함수 min(x, y)는, 변수 x, y 중, 작은 쪽의 값을 되돌리는 함수이다.
수학식 9를 수학식 8과 비교하면, 제1 그룹의 복호 시각을 지연시켜도, ct가 큰 동화상 복호 장치에 대해서는, 제1 그룹의 복호 시각을 지연시키지 않는 경우에 대해서 지연이 증가하지만, ct가 충분히 짧은 동화상 복호 장치에서는, 지연은 증가하지 않는 것을 알 수 있다.
도 5는, 하나의 실시 형태에 따른 동화상 부호화 장치(10)에 의해 실행되는 동화상 부호화 처리의 동작 플로우차트이다. 동화상 부호화 장치(10)는 픽쳐마다, 이하의 동화상 부호화 처리를 실행한다.
그룹 결정부(13)는, 각 블록이 속하는 그룹을 결정한다(스텝 S101). 그리고 그룹 결정부(13)는, 블록이 속하는 그룹을 나타내는 식별 정보를 부호량 제어부(12)의 버퍼 점유량 산출부(26)로 통지한다. 또한 그룹 결정부(13)는, 그룹의 총수 N을 그룹 복호 시각 정보 산출부(14) 및 그룹 정보 부가부(15)로 통지한다. 또한, 그룹 결정부(13)는, 각 그룹의 선두에 위치하는 블록의 인덱스를 그룹 정보 부가부(15)로 통지해도 좋다.
다음으로, 그룹 복호 시각 정보 산출부(14)는, 그룹마다 복호 시각을 산출한다(스텝 S102). 그리고 그룹 복호 시각 정보 산출부(14)는, 각 그룹의 복호 시각을 나타내는 정보를 버퍼 점유량 산출부(26) 및 그룹 정보 부가부(15)로 통지한다.
또한, 그룹 정보 부가부(15)는, 각 블록이 속하는 그룹을 나타내는 그룹 정보 및 복호 시각 정보를 부호화하고, 그 부호화된 그룹 정보 및 복호 시각 정보를 출력 데이터 스트림에 부가한다(스텝 S103).
한편, 버퍼 점유량 산출부(26)는, 그룹에 포함되는 모든 블록의 복호에 필요한 데이터가, 소정의 전송 레이트로 동화상 복호 장치에 전송된 경우에서의, 각 그룹의 복호 시각에서의 수신 버퍼의 버퍼 점유량을 추정한다(스텝 S104). 그 때, 버퍼 점유량 산출부(26)는 비트 카운터(25)로부터 수취한, 지금까지 부호화된 그룹 내의 블록의 부호량을 참조한다. 그리고 버퍼 점유량 산출부(26)는, 추정한 버퍼 점유량을 부호량 제어부(12)의 양자화값 산출부(24)로 통지한다. 양자화값 산출부(24)는, 각 그룹의 복호 시각까지 각 그룹의 모든 데이터가 동화상 복호 장치의 스트림 수신 버퍼에 도달하도록, 각 그룹에 속하는 블록의 부호량을 제어한다(스텝 S105). 그리고 양자화값 산출부(24)는, 그 부호량에 따른 양자화값을 부호량의 제어 정보로서 산출하고, 그 양자화값을 부호화 처리부(11)의 양자화부(22)로 통지한다.
부호화 처리부(11)의 직교 변환부(21)는, 각 블록마다 직교 변환 처리를 행하여, 각 블록의 주파수 계수의 조를 산출한다(스텝 S106). 그리고 직교 변환부(21)는, 각 블록의 주파수 계수의 조를 양자화부(22)로 출력한다.
양자화부(22)는 부호량의 제어 정보인 양자화값에 기초하여 각 블록의 주파수 계수의 조를 양자화한다(스텝 S107). 그리고 양자화부(22)는 양자화된 각 주파수 계수를 부호화 처리부(11)의 가변 길이 부호화부(23)로 출력한다. 가변 길이 부호화부(23)는 양자화된 각 주파수 계수를 가변 길이 부호화한다(스텝 S108). 그리고 가변 길이 부호화부(23)는 얻어진 가변 길이 부호를 출력한다. 이 가변 길이 부호와 그룹 정보 부가부(15)로부터의 출력된 그룹 정보, 복호 시각 정보 등이 출력 데이터 스트림에 저장된다. 또한 가변 길이 부호화부(23)는 블록마다의 부호량을 비트 카운터(25)로 출력한다.
스텝 S108 이후, 동화상 부호화 장치(10)는 동화상 부호화 처리를 종료한다.
이하에, 4개의 가변 길이 부호화부(23)의 실시 형태 및 각 실시 형태에 있어서의, 그룹의 최종 비트의 정의를 설명한다. 그룹의 최종 비트는, 그룹 내의 최종 블록의 최종 비트라고 정의된다.
제1 실시 형태에 따른 가변 길이 부호화부(23)는, MPEG-4AVC/H.264에 규정되는 Context-based Adaptive Variable Length Coding(CAVLC)에 준거하여, 블록의 압축 데이터를 가변 길이 부호화한다.
도 6은, 제1 실시 형태에 따른 가변 길이 부호화부(23)에 의해 생성된 출력 데이터 스트림에 있어서의, 각 블록의 최종 비트의 설명도이다. 도 6에 있어서, 가장 위에 도시된, 하나의 블록의 압축 데이터(1100)는 매크로 블록 스킵 런(이하, MbSkipRun이라고 표기함)(1110)과, 매크로 블록 레이어(이하, MacroblockLayer라고 표기함)(1111)를 포함할 수 있다.
MbSkipRun(1110)은, 직전 블록과 현재 블록 사이의, 스킵된 블록의 수를 나타낸다. 따라서, MbSkipRun(1110)이 0이면, 직전 블록과 현재 블록 사이의 모든 블록은 스킵되지 않는다. 또한 MacroblockLayer(1111)는, 블록 부호화 종별, 움직임 벡터 정보 및 양자화 DCT 계수 등의 블록 압축 데이터이다. 블록의 스킵이란, 그 스킵된 블록의 MacroblockLayer(1111)가 출력 데이터 스트림에 포함되지 않는 것을 의미한다.
픽쳐가 인트라 부호화 픽쳐인 경우, 블록의 스킵은 허용되지 않으므로, MbSkipRun(1110)은 항상 0이 된다. 그로 인해, 출력 데이터 스트림에 MbSkipRun(1110)은 포함되지 않는다.
우선, MbSkipRun(1110)이 0인 경우의 블록(인트라 픽쳐 내의 모든 블록을 포함함)이 그룹 내의 최종 블록이 되는 경우에 대해서 설명한다. 이 경우에서, 출력 데이터 스트림 내의 비트열(1200)에는, 최종 블록 x의 압축 데이터에 관한 비트열(1202)과, 최종 블록 x(x는 1 이상의 정수)로부터 이전의 블록(∼(x-1))에 대응하는 비트열 전체(1201)가 포함된다.
비트열(1202)은, 최종 블록 x의 MbSkipRun(=0) 및 MacroblockLayer를 가변 길이 부호화한 비트열이다. 비트열(1202) 중, Code 0은 MbSkipRun을 가변 길이 부호화한 비트열이고, Code M(M=[1, N[x])은, MacroblockLayer의 각 요소를 가변 길이 부호화한 비트열이다. N[x]는, 최종 블록 x의 MacroblockLayer의 요소수이다.
이 예에서는, 최종 블록 x의 최종 비트는, 화살표(1210)로 나타내어지는, 비트열 Code N[x]의 최종 비트가 된다.
다음에, MbSkipRun이 (L-1)(단, (L-1)>0)이고, 또한 출력 데이터 스트림에 있어서 다음의 픽쳐 헤더 및 슬라이스 헤더가 출현하기 전에, 후속하는 블록의 MacroblockLayer가 출현하는 경우에서의 최종 비트에 대해서 설명한다. 이 경우에서, 출력 데이터 스트림 내의 비트열(1300)에는, 스킵되는 블록 직전의 블록(x-L)에 관한 비트열(1301)과, 스킵되는 블록의 직후 블록 x에 관한 비트열(1302)이 포함된다. 그리고 비트열(1301)은, 블록(x-L)의 MbSkipRun 및 MacroblockLayer를 가변 길이 부호화한 비트열이다. 마찬가지로, 비트열(1302)은 블록 x의 MbSkipRun 및 MacroblockLayer를 가변 길이 부호화한 비트열이다. 비트열(1302)에 포함되는 MbSkipRun에 상당하는 Code 0은, 값(L-1)을 가변 길이 부호화한 비트열이다.
이 예에서는, 블록(x-L)과 블록 x 사이에는, MacroblockLayer가 출력 데이터 스트림에 포함되지 않는, (L-1)개의 블록(x-L+1) 내지 블록(x-1)이 존재한다. 따라서, 블록(x-L+1) 내지 블록(x-1) 중 어느 하나가 최종 블록이 되는 경우, 이들 블록의 최종 비트는, 화살표(1310)로 나타내어지는, MbSkipRun=(L-1)에 상당하는 코드 Code 0의 최종 비트가 된다. 또한 블록 x가 최종 블록이 되는 경우, 블록 x의 최종 비트는, 화살표(1311)로 나타내어지는, 비트열(1302)에 포함되는 Code N[x]의 최종 비트가 된다.
다음에, MbSkipRun이 (L-1)(단, (L-1)>0)이고, 또한 출력 데이터 스트림에 있어서, 동일 픽쳐에 속하는 다음의 슬라이스 헤더가, 후속하는 블록의 MacroblockLayer보다도 앞서 출현하는 경우에서의 최종 비트에 대해서 설명한다. 이 경우에, 출력 데이터 스트림 내의 비트열(1400)에는, 스킵되는 블록 직전의 블록 y에 관한 비트열(1401)과, 스킵되는 블록(y+1) 이후의 블록에 대응하는 MbSkipRun을 가변 길이 부호화한 비트열(1402)이 포함된다. 그리고 비트열(1401)은, 블록 y의 MbSkipRun 및 MacroblockLayer를 가변 길이 부호화한 비트열이다. 또한 비트열(1402)에 포함되는 Code 0은, 값(L-1)을 가변 길이 부호화한 비트열이다.
또한, 비트열(1400)에는, 슬라이스의 종단을 나타내는 비트열(이하, RbspTrailingBits라고 표기함)(1403)과, 다음의 슬라이스의 선두를 나타내는 비트열인 슬라이스 헤더(이하, SliceHeader라고 표기함)(1404)가 포함된다. RbspTrailingBits(1403)는, 이 RbspTrailingBits가 출현하기 전의 슬라이스의 비트열의 종단을 나타내는, 미리 설정된 소정의 값을 갖는 비트열이다. RbspTrailingBits(1403)는, 동화상 복호 장치가 적어도 RbspTrailingBits(1403)의 선두 비트를 참조함으로써, 슬라이스의 종단인 것을 알 수 있는 바와 같이 설정된다. 또한 슬라이스 헤더(1404)에는, 슬라이스 선두 블록 어드레스를 의미하는 파라미터 FirstMbInSlice를 포함한다. 이 예에서는, 파라미터 FirstMbInSlice는 z인 것으로 한다.
이 경우, 블록 y와, 다음의 슬라이스의 선두 블록 z 사이에는, MacroblockLayer가 출력 데이터 스트림에 포함되지 않는, (L-1)개의 블록(y+1) 내지 블록(y+L-1(=z-1))이 존재한다. 따라서, 블록(y+1) 내지 블록(y+L-1(=z-1)) 중 어느 하나가 최종 블록이 되는 경우, 이들 블록의 최종 비트는, 화살표(1410)로 나타내어지는, 비트열 RbspTrailingBits(1403)의 선두 비트가 된다. 또한, 이 경우의 최종 비트는, 비트열 RbspTrailingBits(1403) 내의 선두 비트보다도 이후의 비트로 설정되어도 좋다.
다음에, MbSkipRun이 (L-1)(단, (L-1)>0)이고, 또한 출력 데이터 스트림에 있어서, 다른 픽쳐에 속하는 슬라이스 헤더, 혹은 픽쳐 헤더가 후속하는 블록의 MacroblockLayer보다도 앞서 출현하는 경우에서의 최종 비트에 대해서 설명한다. 이 경우에서, 출력 데이터 스트림 내의 비트열(1500)에는, 스킵되는 블록 직전의 블록 y에 관한 비트열(1501)과, 스킵되는 블록(y+1) 이후의 블록에 대응하는 MbSkipRun을 가변 길이 부호화한 비트열(1502)이 포함된다. 그리고 비트열(1501)은, 블록 y의 MbSkipRun 및 MacroblockLayer를 가변 길이 부호화한 비트열이다. 또한 비트열(1502)에 포함되는 Code 0은, 값(L-1)을 가변 길이 부호화한 비트열이다.
또한, 비트열(1500)에는, 슬라이스의 종단을 나타내는 RbspTrailingBits(1503)와, 다음의 픽쳐의 선두를 나타내는 픽쳐 헤더(1504)와, 다음의 슬라이스의 선두를 나타내는 비트열인 SliceHeader(1505)가 포함된다. 이 경우, 다음의 슬라이스의 선두 블록은 픽쳐의 최초 블록이므로, SliceHeader(1505)에 포함되는 파라미터 FirstMbInSlice의 값은 0이 된다.
이 경우, 블록 y 이후, 픽쳐의 최종 블록(w-1)까지, MacroblockLayer가 출력 데이터 스트림에 포함되지 않는, (L-1)개의 블록(y+1) 내지 블록(y+L-1(=w-1))이 존재한다. 또한 w는, 픽쳐 내의 블록 총수이다. 따라서, 블록(y+1) 내지 블록(y+L-1(=w-1)) 중 어느 하나가 최종 블록이 되는 경우, 이들 블록의 최종 비트는, 화살표(1510)로 나타내어지는, 비트열 RbspTrailingBits(1503)의 선두 비트가 된다. 또한, 이 경우의 최종 비트는, 비트열 RbspTrailingBits(1503) 내의 선두 비트보다도 이후의 비트로 설정되어도 좋다.
다음에, 제2 실시 형태에 따른 가변 길이 부호화부(23)에 대해서 설명한다. 제2 실시 형태에 따른 가변 길이 부호화부(23)도, MPEG-4AVC/H.264에 규정되는 CAVLC에 준거하여 블록의 압축 데이터를 가변 길이 부호화한다. 그러나, 제1 실시 형태와 달리, 이 실시 형태에서는 블록의 압축 데이터의 구조에 있어서, 스킵된 블록수를 표현하는 MbSkipRun 대신에, 개개의 블록이 스킵된 것을 나타내는 매크로 블록 스킵 플래그가 이용된다. 또한, 각 블록의 압축 데이터에는, 그 블록이 분할되었는지 여부를 나타내는 스플리트 플래그가 부가된다.
도 7은, 제2 실시 형태에 따른 가변 길이 부호화부(23)에 의해 생성된 출력 데이터 스트림에 있어서의, 각 블록의 최종 비트의 설명도이다. 도 7에 있어서, 하나의 블록의 압축 데이터(2100)는, 선두로부터 순서대로, 스플리트 플래그(이하, MbSplitFlag라고 표기함)(2110)와, 스킵 플래그(이하, MbSkipFlag라고 표기함)(2111)와, MacroblockLayer(2112)를 포함할 수 있다.
MbSplitFlag(2110)는, 현재 블록(예를 들면, 16화소×16화소의 매크로 블록)이 4개의 서브 블록(예를 들면, 8화소×8화소의 블록)으로 분할되었는지 여부를 나타낸다. 예를 들면, 현재 블록이 분할되어 있는 경우에는, MbSplitFlag(2110)는 '1'이 되고, 한편, 현재 블록이 분할되어 있지 않거나, 혹은, 현재 블록이 스킵되어 있으면, MbSplitFlag(2110)는 '0'이 된다.
MbSkipFlag(2111)는, 현재 블록이 스킵되었는지 여부를 나타낸다. 예를 들면, 현재 블록이 스킵되어 있는 경우에는, MbSkipFlag(2111)는 '1'이 되고, 한편, 현재 블록이 스킵되어 있지 않으면, MbSkipFlag(2111)는 '0'이 된다. 또한 MacroblockLayer(2112)는 블록 부호화 종별, 움직임 벡터 정보 및 양자화 DCT 계수 등의 블록 압축 데이터이다. 블록의 스킵이란, 그 스킵된 블록의 MacroblockLayer(2112)가 출력 데이터 스트림에 포함되지 않는 것을 의미한다.
또한, 현재 블록이 분할되어 있는 경우에는, MbSkipFlag(2111)는 '0'으로 간주되므로, 출력 데이터 스트림 내에서 MbSkipFlag(2111)는 생략되어도 좋다. 그리고 이 경우, 출력 데이터 스트림에는 MbSplitFlag(2110)에 계속해서 4개의 서브 블록 각각의 압축 데이터가 저장된다.
픽쳐가 인트라 부호화 픽쳐인 경우, 블록의 스킵은 허용되지 않으므로, MbSkipFlag(2111)는 항상 '0'이 된다. 그로 인해, 출력 데이터 스트림에 MbSkipFlag(2111)는 포함되지 않는다.
우선, MbSkipFlag(2111)가 '0'인 경우의 블록(인트라 픽쳐 내의 모든 블록을 포함함)이 그룹 내의 최종 블록이 되는 경우에 대해서 설명한다. 이 경우에서, 출력 데이터 스트림 내의 비트열(2200)에는, 최종 블록 x의 압축 데이터에 관한 비트열(2202)과, 최종 블록 x(x는 1 이상의 정수)보다 이전의 블록(∼(x-1))에 대응하는 비트열 전체(2201)가 포함된다. 또한 비트열(2202)의 다음의 Code 0은, 블록(x+1)의 압축 데이터에 관한 비트열을 나타낸다.
비트열(2202)은, 최종 블록 x의 MbSplitFlag(=0), MbSkipFlag(=0) 및 MacroblockLayer를 가변 길이 부호화한 비트열이다. 비트열(2202) 중, Sp는 MbSplitFlag를 가변 길이 부호화한 비트열이고, Sk는 MbSkipFlag를 가변 길이 부호화한 비트열이다. 또한 Code M(M=[1, N[x])은, MacroblockLayer의 각 요소를 가변 길이 부호화한 비트열이다. N[x]는, 최종 블록 x의 MacroblockLayer의 요소수이다.
이 예에서는, 최종 블록 x의 최종 비트는, 화살표(2210)로 나타내어지는, 비트열 Code N[x]의 최종 비트가 된다.
다음에, 값이 1의 MbSkipFlag를 갖는 블록, 즉 스킵되는 블록이, (L-1)(단, (L-1)>0)개 연속한 후에, 값이 '0'인 MbSkipFlag를 갖는 블록, 즉 스킵되지 않는 블록이 출현하는 경우에서의 최종 비트에 대해서 설명한다. 출력 데이터 스트림 내의 비트열(2300)에는, 스킵되지 않는 블록(x-L)의 압축 데이터에 관한 비트열(2301)이 포함된다. 또한, 비트열(2300)에는 비트열(2301)에 계속해서, 스킵되는 블록(x-L+1) 내지 블록(x-1)의 MbSplitFlag(=0), MbSkipFlag(=1) 및 그 이후의 블록 x의 압축 데이터에 관한 비트열(2302)이 포함된다. 또한 비트열(2302)의 다음의 Code 0은, 블록(x+1)의 압축 데이터에 관한 비트열을 나타낸다.
이 예에서는, 블록(x-L)과 블록 x 사이에는, MacroblockLayer가 출력 데이터 스트림에 포함되지 않는, (L-1)개의 블록(x-L+1) 내지 블록(x-1)이 존재한다. 따라서, 블록(x-L+p)(p={1, …, L-1}) 중 어느 하나가 최종 블록이 되는 경우, 이들 블록의 최종 비트는, 화살표(2310)로 나타내어지는, (L-1)개의 MbSkipFlag(=1) 코드의 내, 좌측으로부터 p번째의 코드의 최종 비트가 된다. 또한 블록 x가 최종 블록이 되는 경우, 블록 x의 최종 비트는, 화살표(2311)로 나타내어지는, 비트열(2302)에 포함되는 Code N[x]의 최종 비트가 된다.
다음에, 값이 '1'인 MbSkipFlag를 갖는 블록이 (L-1)(단, (L-1)>0)개 연속한 후에, 동일 픽쳐에 속하는 다음의 슬라이스 헤더가 출현하는 경우에서의 최종 비트에 대해서 설명한다. 이 경우에, 출력 데이터 스트림 내의 비트열(2400)에는, 스킵되는 블록 직전의 블록 y의 압축 데이터에 관한 비트열(2401)이 포함된다. 또한, 비트열(2400)에는 비트열(2401)에 계속해서, 스킵되는 블록(y+1) 이후의 블록에 대응하는 MbSplitFlag(=0), MbSkipFlag(=1)을 가변 길이 부호화한 비트열(2402)이 포함된다. 그리고 비트열(2401)은 블록 y의 MbSplitFlag(=0), MbSkipFlag(=0) 및 MacroblockLayer를 가변 길이 부호화한 비트열이다.
또한, 비트열(2400)에는, 슬라이스의 종단을 나타내는 RbspTrailingBits(2403)와, 다음의 슬라이스의 선두를 나타내는 SliceHeader(2404)가 포함된다. RbspTrailingBits(2403)는, 이 RbspTrailingBits가 출현하기 전의 슬라이스의 비트열의 종단을 나타내는, 미리 설정된 소정의 값을 갖는 비트열이다. RbspTrailingBits(2403)는 동화상 복호 장치가 적어도 RbspTrailingBits(2403)의 선두 비트를 참조함으로써, 슬라이스의 종단인 것을 알 수 있는 바와 같이 설정된다. 또한 슬라이스 헤더(2404)에는 슬라이스 선두 블록 어드레스를 의미하는 파라미터 FirstMbInSlice를 포함한다. 이 예에서는, 파라미터 FirstMbInSlice는 z인 것으로 한다.
이 경우, 블록 y와, 다음의 슬라이스의 선두 블록 z 사이에는, MacroblockLayer가 출력 데이터 스트림에 포함되지 않는, (L-1)개의 블록(y+1) 내지 블록(y+L-1(=z-1))이 존재한다. 따라서, 블록(y+p)(p={1, …, L-2}) 중 어느 하나가 최종 블록이 되는 경우, 이들 블록의 최종 비트는, 화살표(2410)로 나타내어지는, (L-2)개의 MbSkipFlag(=1) 코드의 내, 좌측으로부터 p번째의 코드의 최종 비트가 된다. 또한 블록(z-1)이 최종 블록이 되는 경우, 최종 비트는, 화살표(2411)로 나타내어지는, 비트열 RbspTrailingBits(2403)의 선두 비트가 된다. 또한, 이 경우의 최종 비트는, 비트열 RbspTrailingBits(2403) 내의 선두 비트보다도 이후의 비트로 설정되어도 좋다.
다음에, 값이 1의 MbSkipFlag를 갖는 블록이 (L-1)(단, (L-1)>0)개 연속한 후에, 다른 픽쳐에 속하는 슬라이스 헤더, 혹은 픽쳐 헤더가 출현하는 경우에서의 최종 비트에 대해서 설명한다. 이 경우에, 출력 데이터 스트림 내의 비트열(2500)에는, 스킵되는 블록 직전의 블록 y의 압축 데이터에 관한 비트열(2501)이 포함된다. 또한, 비트열(2500)에는 비트열(2501)에 계속해서, 스킵되는 블록(y+1) 이후의 블록에 대응하는 MbSplitFlag(=0), MbSkipFlag(=1)을 가변 길이 부호화한 비트열(2502)이 포함된다. 그리고 비트열(2501)은 블록 y의 MbSplitFlag(=0), MbSkipFlag(=0) 및 MacroblockLayer를 가변 길이 부호화한 비트열이다.
또한, 비트열(2500)에는, 슬라이스의 종단을 나타내는 RbspTrailingBits(2503)와, 다음의 픽쳐의 선두를 나타내는 픽쳐 헤더(2504)와, 다음의 슬라이스의 선두를 나타내는 비트열인 SliceHeader(2505)가 포함된다. 이 경우, 다음의 슬라이스의 선두 블록은 픽쳐의 최초 블록이므로, SliceHeader(2505)에 포함되는 파라미터 FirstMbInSlice의 값은 0이 된다.
이 경우, 블록 y 이후, 픽쳐의 최종 블록(w-1)까지, MacroblockLayer가 출력 데이터 스트림에 포함되지 않는, (L-1)개의 블록(y+1) 내지 블록(y+L-1(=w-1))이 존재한다. 또한 w는, 픽쳐 내의 블록 총수이다. 따라서, 블록(y+p)(p={1, …, L-2}) 중 어느 하나가 최종 블록이 되는 경우, 이들 블록의 최종 비트는, 화살표(2510)로 나타내어지는, (L-2)개의 MbSkipFlag(=1) 코드의 내, 좌측으로부터 p번째의 코드의 최종 비트가 된다. 또한 블록(w-1)이 최종 블록이 되는 경우, 최종 비트는, 화살표(2511)로 나타내어지는, 비트열 RbspTrailingBits(2503)의 선두 비트가 된다. 또한, 이 경우의 최종 비트는, 비트열 RbspTrailingBits(2503) 내의 선두 비트보다도 이후의 비트로 설정되어도 좋다.
이 제2 실시 형태의 변형예에 따르면, MbSplitFlag는 생략되어도 좋다. MbSplitFlag가 생략되는 경우도, 최종 블록의 최종 비트는, 도 7에 관해서 상술한 바와 같이 결정된다.
다음에, 제3 실시 형태에 따른 가변 길이 부호화부(23)에 대해서 설명한다. 제3 실시 형태에 따른 가변 길이 부호화부(23)는, MPEG-4AVC/H.264에 규정되는 Content-based Adaptive Binary Arithmetic Coding(CABAC)에 준거하여 블록의 압축 데이터를 가변 길이 부호화한다. CABAC는, 산술 부호화 처리의 일례이다.
도 8의 (a) 및 도 8의 (b)를 참조하면서, 출력 데이터의 비트 스트림에 있어서의, 각 블록의 최종 비트에 대해서 설명한다. 도 8의 (a)는, 하나의 블록의 압축 데이터의 구조를 도시하는 도면이다. 도 8의 (a)에 도시되는 바와 같이, 하나의 블록의 압축 데이터(3100)는, 선두로부터 순서대로, MbSkipFlag(3110)와, MacroblockLayer(3111)와, 슬라이스 엔드 플래그(이하, EndOfSliceFlag라고 표기함)(3112)를 포함할 수 있다.
MbSkipFlag(3110)는, 현재 블록이 스킵되었는지 여부를 나타낸다. 예를 들면, 현재 블록이 스킵되어 있는 경우에는, MbSkipFlag(3110)는 '1'이 되고, 한편, 현재 블록이 스킵되어 있지 않으면, MbSkipFlag(3110)는 '0'이 된다. 또한 MacroblockLayer(3111)는 블록 부호화 종별, 움직임 벡터 정보 및 양자화 DCT 계수 등의 블록 압축 데이터이다. 블록의 스킵이란, 그 스킵된 블록의 MacroblockLayer(3111)가 출력 데이터 스트림에 포함되지 않는 것을 의미한다.
픽쳐가 인트라 부호화 픽쳐인 경우, 블록의 스킵은 허용되지 않으므로, MbSkipFlag(3110)는 항상 '0'이 된다. 그로 인해, 출력 데이터 스트림에 MbSkipFlag(3110)는 포함되지 않는다.
EndOfSliceFlag(3112)는, 현재 블록이 슬라이스의 최종 블록인지 여부를 나타낸다. 예를 들면, 현재 블록이 최종 블록인 경우에는, EndOfSliceFlag(3112)는 '1'이 되고, 한편, 현재 블록이 최종 블록이 아니면, EndOfSliceFlag(3112)는 '0'이 된다.
도 8의 (b)는, 압축 데이터와, 가변 길이 부호화에 의해 변환된 비트열의 관계를 설명하는 도면이다. CABAC는 CAVLC와 달리, 압축 데이터의 비트마다 산술 부호화를 적용한다. 그 때문에, 변환된 비트열과 변환 전의 압축 데이터의 관계가 일대일은 아니다. 변환된 비트열 내의 하나의 비트가, 압축 데이터의 복수의 비트에 대응하는 경우가 있다.
도 8의 (b)에 도시되는 바와 같이, 출력 데이터 스트림의 비트열의 일례인 비트열(3210)은 12개의 비트를 포함한다. 이 경우에서, 도트의 집합(3211)은, 비트열(3210)에 포함되는 각 비트에 대응하는, 비트열(3210)을 산술 복호함으로써 얻어지는 압축 데이터에 포함되는 빈을 나타낸다. 빈(bin)이란, 압축 데이터를 바이너리 표현한 것이고, 각 부호어에 대응하는 압축 데이터 중의 비트 또는 비트열이다. 이 예에서는, 비트열(3210)은 빈 0 내지 빈 7에 대응한다. 그리고, 빈 0 내지 빈 2는 블록 0에 포함되고, 빈 3 내지 빈 5는 블록 1에 포함되고, 빈 6은 블록 2에 포함되고, 빈 7은 블록 3에 포함된다. 도트의 집합(3211)에 포함되는 각 도트는, 각각, 그 도트의 상방에 나타내어진 변환 후의 비트열(3210)에 포함되는 비트가, 그 도트의 좌측에 나타내어진 빈을 복호하기 위해 사용되는 것을 나타낸다. 예를 들면 빈 0은, 0번째의 비트와 1번째의 비트를 이용하여 복호된다. 또한 빈 1은, 1번째의 비트를 이용하여 복호된다. 또한 빈 5는, 3번째의 비트로부터 11번째의 비트를 이용하여 복호된다.
CABAC에 의해 부호화된 블록의 최종 비트는, 그 블록의 압축 데이터에 포함되는 빈 x의 복호에 이용되는 비트열의 최후 비트가 된다. 단 빈 x는, 블록의 압축 데이터를 순서대로 바이너리화하였을 때의 최후 비트이다. 도 8의 (b)에 도시한 예에서는, 블록 0의 최종 비트는, 화살표(3250)로 나타내어지는, 비트열(3210)의 3번째의 비트이다. 또한, 블록 1 내지 블록 3의 최종 비트는, 각각, 화살표(3251)로 나타내어지는, 비트열(3210)의 11번째의 비트이다. 이와 같이, 복수의 블록이 공통인 최종 비트를 갖는 경우가 있다.
CABAC에 의해 블록이 부호화되는 경우, 블록의 압축 데이터의 바이너리화 데이터의 최종 비트는 항상 EndOfSliceFlag이다. 그리고 픽쳐 중에 블록이 w개 있었던 경우, 출력 데이터 스트림 중에는 반드시 w개의 MbSkipFlag와 w개의 EndOfSliceFlag가 있다. 그 때문에, 픽쳐 내의 x번째의 블록의 최종 비트는, x번째의 EndOfSliceFlag의 복호에 이용되는 비트열 내의 최후 비트가 된다.
도 9의 (a) 내지 도 9의 (c)는, 제3 실시 형태에 따른, 출력 데이터의 비트 스트림 중 그룹의 최종 비트를 특정하는 처리의 플로우차트이다. 동화상 부호화 장치(10)의 가변 길이 부호화부(23)는, 이 플로우차트에 따라서, 출력 데이터의 비트 스트림에 있어서의, i번째의 픽쳐의 j번째의 그룹 G(i, j)에 속하는 최종 블록의 최종 비트의 위치 BitEnd(i, j)를 도출한다. 동화상 부호화 장치(10)는, BitEnd(i, j)의 위치의 비트가 동화상 부호화 장치(10)의 송신 버퍼에 입력되었을 때에, 그룹 G(i, j)를 복호하기 위해 필요한 모든 비트가 동화상 부호화 장치(10)의 송신 버퍼에 입력되었다고 판단한다.
이 플로우차트는, i번째의 픽쳐의 헤더(픽쳐 헤더 및 슬라이스 헤더)가 부호화된 직후로부터 개시된다. 그리고 우선, 가변 길이 부호화부(23)는 변수 j, m, c를 초기화한다(스텝 S201). 변수 j, m, c는, 각각, 픽쳐 내의 그룹의 인덱스, 픽쳐 내의 블록의 인덱스, 캐리수를 나타낸다. 또한, 캐리수 c에 대해서는 후술한다.
다음에, 가변 길이 부호화부(23)는 인덱스 m의 블록의 압축 처리, 압축 데이터의 바이너리화 및 콘텍스트 모델화를 행함으로써, 산술 부호화 처리[MPEG-4AVC/H.264에 규정되는 EncodingDecision()에 대응]의 대상의 빈의 배열 B[]를 취득한다(스텝 S202). 또한, 상기의 압축 처리는 블록이 슬라이스의 최종 블록인지 여부를 나타내는 EndOfSliceFlag를 제외하는 처리이다. 여기서, 블록 m의 산술 부호화 처리 대상의 빈의 총수는 getNumBins(m)로서 표현된다. 가변 길이 부호화부(23)는, 처리 대상의 빈의 인덱스 b0을 0으로 설정하고, 또한 블록 m의 최종 빈의 인덱스 b1을 getNumBins(m)로 설정한다.
가변 길이 부호화부(23)는, b0번째의 빈을 산술 부호화하기 전의 비트 스트림의 최종 비트 위치 p를 취득한다(스텝 S203). 그리고 가변 길이 부호화부(23)는, b0번째의 빈을 산술 부호화한다(스텝 S204). 이에 의해, 예를 들면, 0비트로부터 7비트의 사이에서, 새로운 생성 비트가 비트 스트림의 최후에 부가된다. 그리고 가변 길이 부호화부(23)는, b0번째의 빈의 산술 부호화 처리 후의 비트 스트림의 최종 비트 위치 q를 취득한다(스텝 S205).
스텝 S205 이후, 가변 길이 부호화부(23)는 캐리수 c가 1 이상인지 여부를 판정한다(스텝 S206). 캐리수 c는, 어떤 그룹의 최후 블록의 EndOfSliceFlag를 산술 부호화 처리하였을 때에, 새로운 비트가 비트 스트림에 추가되지 않았던 경우에 1 증가하는 수이다. 즉, 캐리수 c가 1 이상인 값을 갖는 경우, 캐리수 c는, 그룹 x(x =j-1, …, j-c)의 복호 처리에 필요한 전체 비트가 비트 스트림으로서 출력되어 있지 않은 것을 의미한다.
캐리수 c가 1 이상이면(스텝 S206- '예'), 가변 길이 부호화부(23)는 b0번째의 빈을 산술 부호화하기 전의 비트 스트림의 최종 비트 위치 p를 b0번째의 빈을 산술 부호화한 후의 비트 스트림의 최종 비트 위치 q와 비교한다(스텝 S207).
비트 위치 p가 비트 위치 q와 다른 경우(스텝 S207- '예'), b0번째의 빈의 산술 부호화 처리에 의해 새로운 비트가 생성된다. 이 경우에는, b0번째의 빈 및 그 이전에 산술 부호화 처리되었지만, 비트 스트림으로서 출력되지 않았던, 그룹 x(x =j-1, …, j-c)의 최후 블록의 EndOfSliceFlag에 상당하는 비트가 비트 스트림으로서 출력되어 있다. 즉 그룹 x의 복호에 필요한 전체 비트가 q의 위치에서 출력되어 있다. 가변 길이 부호화부(23)는, 이 시점에서 출력된 각 그룹을 복호하는 데 필요한 비트열의 최종 비트 위치 BitEnd()를 비트 위치 q로 설정한다(스텝 S208). 또한, 스텝 S208의 처리의 상세에 대해서는 후술한다.
이 시점에서, 인덱스가 j보다도 작은 모든 그룹에 대해서, 복호 처리에 필요한 전체 비트가 비트 스트림으로서 출력되어 있다. 따라서, 가변 길이 부호화부(23)는, 캐리수 c를 0으로 리셋한다(스텝 S209).
스텝 S209 이후, 가변 길이 부호화부(23)는, 산술 부호화 처리 대상의 빈 배열 B[] 내의 모든 빈을 처리하였는지 여부, 즉, b0이 b1과 동등한지 여부를 판단한다(스텝 S210). b0이 b1 미만인 경우(스텝 S210- '아니오'), 가변 길이 부호화부(23)는, b0을 1 인크리먼트한 후, 스텝 S203 이후의 처리를 반복한다. 그리고 가변 길이 부호화부(23)는, 빈 배열 B[] 내의 남은 빈의 처리를 행한다. 한편, b0이 b1과 동등한 경우(스텝 S210- '예'), 가변 길이 부호화부(23)는, b0을 1 인크리먼트한 후, 스텝 S211 이후의 처리를 실행한다. 또한, b0이 b1 미만이어도, b1과 동등해도, b0은, b1과의 비교 후에 1만큼 증가하지만, b0이 b1과 동등한 경우는 후에 스텝 S202에서 b0은 0으로 리셋된다.
또한, 스텝 S206에 있어서 캐리수 c가 0이면(스텝 S206- '아니오'), 가변 길이 부호화부(23)는, 스텝 S207 내지 S209의 처리를 행하지 않고, 스텝 S210의 처리를 실행한다. 또한, 스텝 S207에 있어서, 비트 위치 p가 비트 위치 q와 동등한 경우(스텝 S207- '아니오'), b0번째의 빈을 산술 부호화함으로써 새로운 비트가 생성되어 있지 않다. 이 경우도, 가변 길이 부호화부(23)는, 스텝 S208 내지 S209의 처리를 행하지 않고 스텝 S210의 처리를 실행한다.
도 9의 (b)에 도시되는 바와 같이, 가변 길이 부호화부(23)는 EndOfSliceFlag를 산술 부호화하기 전의 비트 스트림의 최종 비트 위치 p를 취득한다(스텝 S211). 그리고 가변 길이 부호화부(23)는 EndOfSliceFlag를 산술 부호화하고(스텝 S212), EndOfSliceFlag를 산술 부호화한 후의 비트 스트림의 최종 비트 위치 q를 취득한다(스텝 S213).
가변 길이 부호화부(23)는 캐리수 c가 1 이상인지 여부, 또한, EndOfSliceFlag를 산술 부호화하기 전의 비트 스트림의 최종 비트 위치 p와 EndOfSliceFlag를 산술 부호화한 후의 비트 스트림의 최종 비트 위치 q가 다른지 여부를 판정한다(스텝 S214). 캐리수 c가 1 이상, 또한, 최종 비트 위치 p와 최종 비트 위치 q가 다른 경우(스텝 S214- '예'), 그룹 x(x =j-1, …, j-c)의 최후 블록의 EndOfSliceFlag가 비트 스트림으로서 출력되어 있다. 즉, 그룹 x를 복호하는 데 필요한 전체 비트가 비트 스트림으로서 출력되어 있다. 따라서 가변 길이 부호화부(23)는, 이 시점에서 출력된 각 그룹을 복호하는 데 필요한 비트열의 최종 비트 위치 BitEnd()를 비트 위치 q로 설정하고(스텝 S215), 그 후 캐리수 c를 0으로 리셋한다(스텝 S216).
스텝 S216 이후, 혹은 스텝 S214에서 캐리수 c가 0 또는 최종 비트 위치 p가 최종 비트 위치 q와 동등한 경우(스텝 S214- '아니오'), 가변 길이 부호화부(23)는, 현재 블록 m이 그룹 j의 최종 블록인지 여부를 판정한다(스텝 S217). 또한, getLastBlock(j)는, 그룹 j의 최후 블록의 인덱스를 나타낸다. 현재 블록 m이 그룹 j의 최종 블록이 아닌 경우(스텝 S217- '아니오'), 그룹 j 내에 미처리의 블록이 있다. 따라서 가변 길이 부호화부(23)는 m을 1 인크리먼트한 후, 스텝 S202 이후의 처리를 반복한다.
한편, 블록 m이 그룹 j의 최종 블록인 경우(스텝 S217- '예'), 가변 길이 부호화부(23)는 m을 1 인크리먼트한다. 그리고 가변 길이 부호화부(23)는, EndOfSliceFlag를 산술 부호화하기 전의 비트 스트림의 최종 비트 위치 p와, EndOfSliceFlag를 산술 부호화한 후의 비트 스트림의 최종 비트 위치 q를 비교한다(스텝 S218).
최종 비트 위치 p가 최종 비트 위치 q와 다른 경우(스텝 S218- '예'), EndOfSliceFlag를 산술 부호화함으로써 새로운 비트가 생성되어 있다. 따라서, 그룹 j의 최종 블록의 모두를 복호하는 데 필요한 모든 비트가 비트 스트림으로서 출력되어 있다. 따라서 가변 길이 부호화부(23)는, 이 시점에서 출력된 그룹 j를 복호하는 데 필요한 비트열의 최종 비트 위치 BitEnd()를 비트 위치 q로 설정하고(스텝 S219), 또한 그룹의 인덱스 j를 1 인크리먼트한다(스텝 S220).
한편, 최종 비트 위치 p가 최종 비트 위치 q와 동등한 경우(스텝 S218- '아니오'), EndOfSliceFlag가 산술 부호화되어도 새로운 비트가 생성되어 있지 않다. 따라서, 가변 길이 부호화부(23)는 캐리수 c를 1 인크리먼트하고, 또한 그룹의 인덱스 j를 1 인크리먼트한다(스텝 S221).
스텝 S220 또는 스텝 S221의 처리 후에, 가변 길이 부호화부(23)는, 현재 블록 m이 픽쳐 내의 최종 블록인지 여부를 판정한다(스텝 S222). 또한, getNumBlockInPic()은, 픽쳐 내의 총 블록수를 나타낸다.
현재 블록 m이 픽쳐 내의 최종 블록이 아니면(스텝 S222- '아니오'), 픽쳐 내에 미처리의 블록이 있으므로, 가변 길이 부호화부(23)는, 스텝 S202 이후의 처리를 반복한다. 한편, 현재 블록 m이 픽쳐 내의 최종 블록이면(스텝 S222- '예'), 가변 길이 부호화부(23)는, 1픽쳐의 모든 블록의 부호화를 완료하였으므로, 최종 비트 특정 처리를 종료한다.
도 9의 (c)를 참조하면서, 스텝 S208, S215 및 S219에서 행해지는 최종 비트 위치의 설정 처리의 플로우를 설명한다.
가변 길이 부호화부(23)는, i번째의 픽쳐의 (j-c)번째의 그룹을 복호하는 데 필요한 비트열의 최종 비트 위치 BitEnd(i,(j-c))를 q로 설정한다(스텝 S250). 그 후, 가변 길이 부호화부(23)는 캐리수 c가 0 이하인지 여부를 판정한다(스텝 S251). 캐리수 c가 0보다 큰 경우(스텝 S251- '아니오'), 최종 비트 위치 BitEnd()를 설정할 필요가 있는 그룹이 아직 남아 있다. 따라서 가변 길이 부호화부(23)는 캐리수 c를 1만큼 감산하고, 그 후 재차 스텝 S250의 처리를 실행한다. 한편, 캐리수 c가 0 이하인 경우(스텝 S251- '예'), 최종 비트 위치 BitEnd()를 설정할 필요가 있는 그룹은 없다. 그 때문에, 가변 길이 부호화부(23)는 최종 비트 위치의 설정 처리를 종료한다.
다음에, 제4 실시 형태에 따른 가변 길이 부호화부(23)에 대해서 설명한다. 제4 실시 형태에 따른 가변 길이 부호화부(23)는, 비특허문헌 2에 개시된 방법에 따라서 블록의 압축 데이터를 가변 길이 부호화한다.
비특허문헌 2에 개시된 방법은, 기본적으로 CABAC와 마찬가지로 산술 부호화 기술을 이용한다. 그러나, 이 방법에서는, 바이너리화된 압축 데이터를 1비트씩 산술 부호화하는 대신에, 바이너리화된 압축 데이터의 각 비트의 추정 확률에 기초하는 복수개의 산술 부호화부가 이용된다. 각 산술 부호화부에는, 각각 별개의 추정 확률이 할당되고, 바이너리화된 압축 데이터의 각 비트는, 그 추정 확률에 대응하는 산술 부호화부에 있어서 산술 부호화된다.
이 방법에서는, 각 산술 부호화부는, 고정의 추정 확률의 비트열을 처리하기 때문에, 실제로는, 산술 부호화 연산을 행하는 대신에, 입력되는 n비트를 m비트의 출력에 맵핑함으로써, 압축 데이터를 가변 길이 부호화해도 좋다. 또한, m, n은, 각각 1 이상의 정수이다. 본 명세서에서는, 편의상, 출력되는 m비트를 워드라고 부른다. 가변 길이 부호화된 압축 데이터는 출력 데이터의 비트 스트림에 워드 단위로 출력된다.
비특허문헌 2에 개시된 방법에서는, CABAC와 마찬가지로, 변환된 비트열과 변환 전의 압축 데이터의 관계가 일대일은 아니다. 또한, 앞서 산술 부호화부에 입력된 빈에 상당하는 워드가, 그 빈보다도 이후에 산술 부호화부에 입력된 빈에 상당하는 워드보다도 이후에 출력 데이터의 비트 스트림에 출현하는 경우도 있다.
도 10은, 제4 실시 형태에 따른 가변 길이 부호화부(23)가 갖는 엔트로피 부호화부(700)의 개략 구성도이다. 엔트로피 부호화부(700)는 입력된 블록의 압축 데이터를 엔트로피 부호화하고, 그 결과 얻어진 스트림을 출력한다. 그 때문에 엔트로피 부호화부(700)는 바이너리화부(701)와, 콘텍스트 모델화부(702)와, 확률 양자화부(703)와, K개의 빈 부호화부(704-1∼704-k)(단 K는 2 이상의 정수)와, 다중화부(705)를 갖는다.
바이너리화부(701)는 입력된 블록의 압축 데이터에 포함되는 각 심볼을 바이너리화하고, 각 심볼을 비트열로 나타낸다. 그 때문에, 바이너리화부(701)는, 예를 들면, MPEG-4AVC/H.264에 준거하여, 각 심볼을 바이너리화한다. 예를 들면, I-Slice 내의 매크로 블록 종별 mbType이 4×4인트라 예측, 혹은 8×8인트라 예측을 나타내는 심볼 "INxN"인 경우, 그 심볼은 '0'으로 표시된다. 또한, 블록 종별 mbType이 PCM 부호화를 나타내는 심볼 "IPCM"인 경우에는, 그 심볼은 '11'로 표시된다. 바이너리화부(701)로부터 출력된 비트열은 콘텍스트 모델화부(702)에 입력된다.
콘텍스트 모델화부(702)는 바이너리화부(701)로부터 입력된 비트열의 각 비트에 대해, 개개에 콘텍스트를 할당한다. 콘텍스트는, 예를 들면, 주위 블록의 압축 데이터로부터 결정된다. 그리고, 엔트로피 부호화하고자 하는 블록의 압축 데이터가 주위 블록의 압축 데이터와 유사한 경우와 그렇지 않은 경우로, 다른 콘텍스트가 이용됨으로써, 산술 부호화의 효율이 향상된다. 콘텍스트 모델화부(702)는 비트열의 비트마다, 그 값(0 또는 1)과, 결정된 콘텍스트의 Least Probable bit(LPB) 및 LPB 확률을 출력하고, 출력된 비트, LPB 및 LPB 확률은 확률 양자화부(703)에 입력된다. LPB는, 과거에 그 콘텍스트와 페어로 되어 콘텍스트 모델화부(702)로부터 출력된 비트열의 각 비트에 있어서의, 출현 빈도의 작은 쪽의 값을 나타낸다. 또한 LPB 확률은, LPB의 발생 확률을 나타낸다. 예를 들면, 과거의 비트열에 포함되는 10개의 비트가 [0, 0, 0, 1, 1, 1, 1, 1, 1, 1]의 경우, LPB는 0이고, LPB 확률은 0.3이 된다.
확률 양자화부(703)는, 콘텍스트 모델화부(702)로부터 출력된 각 비트의 LPB 확률을 각각 양자화한다. 예를 들면, 확률 양자화부(703)는 0으로부터 1의 연속하는 확률값을, K개의 이산적인 값으로 양자화한다. 예를 들면 LPB 확률이 0.3이고, K가 4인 경우, 확률 양자화부(703)는 LPB 확률의 값 0.3의 양자화값을 0.25(=1/4)로 한다. 확률 양자화부(703)로부터 출력된 비트는, K개의 빈 부호화부(704-1 내지 704-k) 중, 그 비트의 LPB 확률의 양자화값에 따른 빈 부호화부에 입력된다.
빈 부호화부(704-1 내지 704-k)는, 각각, 서로 다른 LPB 확률의 양자화값에 대응하는 비트를 산술 부호화한다. 예를 들면, 상기한 바와 같이, LPB 확률의 양자화값이 1/4이면, 그 LPB 확률에 대응하는 비트는, 빈 부호화부(704-1 내지 704-k) 중 이산적 확률 1/4에 대응하는 빈 부호화부에 입력된다. 그리고 각 빈 부호화부는, 다중화부(705)의 버퍼 내에 저장되어 있는 엔트리의 비트열 중, 빈 부호화부에 대응하는 양자화 LPB 확률의 엔트리의 비트열에 그 비트를 추가한다. 그리고 각 빈 부호화부는 비트열이 변환 가능하게 될 때마다, 그 비트열을 워드로 변환한다.
다중화부(705)는, 예를 들면, 버퍼를 갖고, 각 빈 부호화부로부터 기입된 비트열 및 비트열에 대응하는 워드를 그 버퍼에 저장한다. 다중화부(705)는 워드가 출력 가능하게 될 때까지, 그 워드를 버퍼 내에 저장한다. 그리고 다중화부(705)는, 저장되어 있는 워드가 출력 가능하게 된 시점에서, 그 워드를 출력 데이터의 비트 스트림으로서 출력한다.
또한, 각 빈 부호화부에 입력되는 비트(빈)는 동일한 LPB를 갖는다고 가정할 수 있으므로, 각 빈 부호화부 및 다중화부는 산술 부호화 바로 그것을 행하는 대신에, 복수의 입력 비트를 포함하는 비트열을 하나의 빈 열로서 가변 길이 부호화해도 좋다. 이 경우, 예를 들면, 비트열(빈 열)과 워드의 관계를 나타내는 변환 테이블이 각 빈 부호화부에 기억된다. 그리고 각 빈 부호화부는, 그 변환 테이블을 참조해서 빈 열을 워드로 변환한다. 예를 들면, LPB가 1이고 LPB 확률이 0.15(즉 0의 발생 확률이 0.85)인 경우, 입력 빈 열 "0000"은 "1"로, 입력 빈 열 "11"은 "00001"로 변환된다.
도 11을 참조하면서, 출력 데이터의 비트 스트림에 있어서의, 각 블록의 최종 비트에 대해서 설명한다. 도 11은, 압축 데이터와, 가변 길이 부호화에 의해 변환된 비트열의 관계를 설명하는 도면이다. 또한, 블록의 압축 데이터의 구조는, 도 8의 (a)에 도시되는 구조와 동일하다.
도 11에 도시되는 바와 같이, 출력 데이터 스트림의 비트열의 일례인 비트열(4100)은 15개의 비트를 포함한다. 이 경우에, 도트의 집합(4101)은, 비트열(4100)에 포함되는 각 비트에 대응하는, 비트열(4100)을 산술 복호함으로써 얻어지는 압축 데이터에 포함되는 빈을 나타낸다. 이 예에서는, 비트열(4100)은 빈 0 내지 빈 10에 대응한다. 그리고, 빈 0 내지 빈 2는 블록 0에 포함되고, 빈 3 내지 빈 5는 블록 1에 포함되고, 빈 6, 7은 블록 2에 포함되고, 빈 8 내지 빈 10은 블록 3에 포함된다. 도트의 집합(4101)에 포함되는 각 도트는, 각각, 그 도트의 상방에 나타내어진 변환 후의 비트열(4100)에 포함되는 비트가, 그 도트의 좌측에 나타내어진 빈을 복호하기 위해 사용되는 것을 나타낸다. 예를 들면 빈 0, 빈 5 및 빈 7은, 0번째 내지 3번째의 비트를 이용하여 복호된다. 반대로 말하면, 빈 0, 빈 5 및 빈 7의 3비트가, 비트열(4100) 중의 0번째 내지 3번째의 4비트로 변환된다.
도트 집합(4101)으로부터 명백해지는 바와 같이, 블록 1에 속하는 최후의 빈 5을 복호하기 위해 필요한 비트열(비트 0 내지 비트 3)은, 블록 1에 속하는 최초의 빈 3을 복호하기 위해 필요한 비트열(비트 7 내지 비트 8)보다도 앞서 출력 데이터의 비트 스트림(4100) 내에 출현한다. 이와 같이, 제4 실시 형태에서는, 제3 실시 형태와 달리, 블록의 각 빈의 순번에 대해서, 출력 데이터의 비트 스트림 상에서의 대응하는 워드의 순번이 역전되는 경우가 있다.
블록의 최종 비트는, 이하와 같게 된다.
CABAC에 의해 블록이 부호화되는 경우와 마찬가지로, 블록의 압축 데이터의 바이너리화 데이터의 선두 비트 및 최종 비트는, 항상 MbSkipFlag 및 EndOfSliceFlag이다. 그리고 픽쳐 중에 블록이 w개 있었던 경우, 출력 데이터의 비트 스트림 중에는 반드시 w개의 MbSkipFlag와 w개의 EndOfSliceFlag가 있다.
그러나, 이 실시 형태에서는, 가변 길이 부호화된 블록 x의 최종 비트는, 블록 x의 압축 데이터의 바이너리화 데이터의 각 비트를 복호하기 위해 필요한 워드 중에서, 출력 데이터의 비트 스트림 중의 위치가 가장 뒤쪽의 워드 A의 최후 비트가 된다. 도 11에 나타낸 예에서는, 블록 0, 블록 1 및 블록 2의 최종 비트는, 각각, 화살표(4200)로 나타내어지는, 비트열(4100)의 8번째의 비트이다. 또한, 블록 3의 최종 비트는, 화살표(4201)로 나타내어지는, 비트열(4100)의 14번째의 비트이다.
도 12는, 제4 실시 형태에 따른 가변 길이 부호화부의 빈 부호화부 및 다중화부의 거동의 설명도이다. 빈 부호화부(704-1 내지 704-k)는 입력 빈 열로부터 출력 워드로의 변환 맵(800)을 참조하여, 동일한 양자화 LPB 확률을 갖는 비트로 이루어지 입력 빈 열을 워드로 변환한다. 설명의 간략화를 위해, 다중화부(705)는, 각 빈 부호화부(704-1 내지 704-k)로부터 다중화부(705)에 입력되는 빈 열에 대해서 동일한 변환 맵을 적용하는 것으로 한다. 예를 들면 빈 열 "0000"은 워드 "1"로 변환된다.
이 예에서, 입력 비트열(801)의 각 비트에 대해서, 양자화 LPB 확률을 나타내는 확률 인덱스(802)가 확률 양자화부(703)에 의해 부가된다. 이 예에서는, LPB 확률은 4개의 값 중 어느 하나에 양자화되는 것으로 하고, 각 양자화 LPB 확률에는, 각각, 확률 인덱스 0 내지 3이 할당된다. 그리고 입력 비트열(801)의 각 비트는, 선두 비트(850)로부터 순서대로, 그 비트의 확률 인덱스에 대응하는 빈 부호화부에 입력된다. 예를 들면, 확률 인덱스가 '0'인 비트는, 빈 부호화부(704-1)에 입력되고, 확률 인덱스가 '1'인 비트는, 빈 부호화부(704-2)에 입력된다.
테이블(860 내지 863)은, 각각, 비트(850 내지 853)가 어느 하나의 빈 부호화부에 입력된 시점에서의, 다중화부(705)가 갖는 버퍼에 저장된 데이터를 나타낸다.
테이블(860 내지 863)에 있어서, 하나의 행이, 다중화부(705)의 버퍼 내에 저장된 하나의 엔트리에 대응한다. 그리고 각 테이블 내에는, 생성된 순서에 따라서, 위로부터 순서대로 엔트리가 표기된다. 다중화부(705)는 출력 데이터의 비트 스트림으로서, 버퍼 내에 저장된 엔트리의 워드를, 위로부터 아래의 순번을 따라서 출력한다. "#"은 버퍼 내의 엔트리의 인덱스이다. "Idx"는 대응하는 빈 부호화부의 인덱스이고, 이 예에서는, 이해를 쉽게 하기 위해, 빈 부호화부의 인덱스는, 그 빈 부호화부에 입력되는 입력 비트에 부가된 확률 인덱스와 동일한 값을 갖는다. 「입력」은, 입력된 비트열(빈 열)이다. 「워드」는 입력된 비트열에 대응하는 워드이다. 만약 입력 비트열에 대응하는 워드가 존재하지 않는 경우(예를 들면, 입력 비트열이 "00"인 경우), 각 테이블에 있어서 워드는 "N/A"로 표기된다.
빈 부호화부(704-1 내지 704-k) 중 어느 하나에 비트(850)가 입력되기 전의 상태에서는, 다중화부(705)의 버퍼는 비어 있는 것으로 한다.
다중화부(705)의 버퍼가 비어 있는 상태에서, 비트가 빈 부호화부에 입력되면, 비트가 입력된 빈 부호화부는 다중화부(705)의 버퍼에 새로운 엔트리를 작성한다. 이 예에서는, 테이블(860)에 도시되는 바와 같이, 확률 인덱스가 '0'이고, 또한 값이 '0'인 비트(850)가 빈 부호화부(704-1)로 입력됨으로써, 다중화부(705)의 버퍼 내에 엔트리 인덱스가 '0'인 최초의 엔트리가 작성된다. 비트(850)의 확률 인덱스가 '0'이므로, 이 엔트리의 "Idx"는 '0'이다. 또한 비트(850)의 값이 '0'이므로, 최초의 엔트리의 입력 비트열은 "0"이 된다. 워드는 아직 미완성이므로, 이 엔트리의 워드는 "N/A"이다.
다음에, 빈 부호화부(704-2)로, 확률 인덱스가 '1'이고, 또한 값이 '0'인 비트(851)가 입력된다. 이 경우, 이 비트의 확률 인덱스에 상당하는 엔트리는 아직 다중화부(705)의 버퍼 내에 존재하지 않으므로, 테이블(861)에 도시되는 바와 같이, 새로운 엔트리가 생성된다. 이 2번째의 엔트리의 "Idx"는 '1'이다. 또한 워드는 아직 미완성이고, 2번째의 엔트리의 워드는 "N/A"이다.
이후, 새로운 비트가 빈 부호화부로 입력될 때마다, 빈 부호화부(704-1 내지 704-k) 및 다중화부(705)는, 이하의 1) 내지 4)의 규칙에 따라서, 다중화부(705)의 버퍼 내의 엔트리의 빈 열을 워드로 변환하고, 또한 적절히 출력 가능하게 된 엔트리의 워드를 출력한다.
1) 빈 부호화부(704-1 내지 704-k)는, 입력 비트의 확률 인덱스에 대응하는 엔트리를, 다중화부(705)의 버퍼 내의 엔트리 인덱스의 오름 차순으로 탐색한다.
2) 만약 입력 비트의 확률 인덱스에 대응하는, 워드가 "N/A"인 엔트리가 있으면, 빈 부호화부(704-1 내지 704-k)는, 그 엔트리의 입력 비트열을 갱신한다. 구체적으로는, 빈 부호화부(704-1 내지 704-k)는, 그 엔트리의 입력 비트열의 뒤쪽에 새로운 입력 비트를 부가한다. 다중화부(705)는 갱신된 비트열이, 변환 테이블(800)의 빈 열 중 어느 하나와 일치하는지 여부를 판정한다. 만약 일치하는 빈 열이 있으면, 빈 부호화부(704-1 내지 704-k)는, 그 빈 열에 대응하는 워드를 이 엔트리의 워드로 한다.
3) 만약 입력 비트의 확률 인덱스에 대응하는, 워드가 "N/A"가 아닌 엔트리가 없으면, 빈 부호화부(704-1 내지 704-k)는, 그 확률 인덱스에 대응하는 새로운 엔트리를 작성한다.
4) 워드가 "N/A"가 아닌 엔트리는 비트 스트림으로서 출력 가능하지만, 엔트리의 출력 순서는 다중화부(705)의 버퍼 내의 엔트리 인덱스의 내림 차순에 따른다. 이것은, 동화상 복호 장치가 다중화된 워드를 정상적으로 복호(워드로부터 빈 열로의 역변환)하기 위해 필요한 제한이다. 만약 주목하는 엔트리의 엔트리 인덱스보다 작고, 또한 워드가 "N/A"의 엔트리가 다중화부(705)의 버퍼에 남아 있는 경우에는, 주목하는 엔트리의 워드가 "N/A"가 아니어도, 다중화부(705)는, 그 주목하는 엔트리를 출력할 수는 없다.
다중화부(705)는 엔트리를 출력하는 경우, 그 엔트리의 워드를 출력 데이터의 비트 스트림에 추가한다. 출력된 엔트리는 다중화 버퍼로부터 제외된다.
테이블(862)은 빈 부호화부(704-1)로, 확률 인덱스가 '0'이고, 또한 값이 '0'인 비트(852)가 입력된 시점에서의, 다중화부(705)의 버퍼의 상태를 나타낸다. 이 경우, 엔트리 인덱스가 '1' 내지 '4'인 엔트리는 출력 가능한 상태이다. 그러나, 엔트리 인덱스가 '0'인 엔트리의 워드가 "N/A" 이므로, 다중화부(705)는, 모든 엔트리의 워드를 아직 비트 스트림으로서 출력할 수 없다. 즉 가변 길이 부호화의 지연이 생긴다.
테이블(863)은 빈 부호화부(704-1)로, 확률 인덱스가 '0'이고, 또한 값이 '1'인 비트(853)가 입력된 시점에서의, 다중화부(705)의 버퍼의 상태를 나타낸다. 이 시점에서, 처음으로 엔트리 인덱스가 '0'인 엔트리의 워드가 "N/A"가 아니게 된다. 그 때문에, 다중화부(705)는 엔트리 인덱스가 '0' 내지 '4'인 엔트리 모두를 출력할 수 있다.
엔트리 인덱스가 '0' 내지 '4'인 엔트리 모두를 출력한 직후에, 새롭게 추가되는 엔트리의 인덱스는 '5'가 된다. 즉, 신규 엔트리의 엔트리 인덱스는, 출력된 엔트리를 포함하는 전체 엔트리 중의 최대 인덱스에 1을 가산한 값이 된다. 다중화부(705)는 비트 스트림으로서 출력한 최후 엔트리의 엔트리 인덱스에 1을 가산한 값을, 다음의 비트 스트림의 출력 엔트리 선두 인덱스 FirstIndex로서 기억한다. 또한 FirstIndex는 픽쳐 부호화 개시시에 0으로 리셋된다.
도 13의 (a) 내지 도 13의 (c)는, 제4 실시 형태에 따른, 출력 데이터의 비트 스트림 중 그룹의 최종 비트를 특정하는 처리의 플로우차트이다. 동화상 부호화 장치(10)의 가변 길이 부호화부(23)는, 이 플로우차트에 따라서, 출력 데이터의 비트 스트림에 있어서의, i번째의 픽쳐의 j번째의 그룹 G(i, j)에 속하는 최종 블록의 최종 비트의 위치 BitEnd(i, j)를 도출한다. 동화상 부호화 장치(10)는, BitEnd(i, j)의 위치의 비트가 동화상 부호화 장치(10)의 송신 버퍼에 입력되었을 때에, 그룹 G(i, j)를 복호하기 위해 필요한 모든 비트가 동화상 부호화 장치(10)의 송신 버퍼에 입력되었다고 판단한다.
도 13의 (a) 내지 도 13의 (c)에 도시되는 플로우차트의 각 스텝의 처리는, 이하에 설명하는 스텝을 제외하고, 도 9의 (a) 내지 도 9의 (c)에 도시한 플로우차트가 대응하는 스텝의 처리와 동일하다. 예를 들면, 스텝 S301의 처리는, 스텝 S201의 처리와 동일하다. 그 때문에, 이하에 설명하는 스텝 이외의 스텝의 상세에 관해서는, 도 9의 (a) 내지 도 9의 (c)에 도시한 플로우차트에 관련되는 설명을 참조하길 바란다.
가변 길이 부호화부(23)의 빈 부호화부(704-1 내지 704-k)가 b0번째의 빈을 부호화하고, b0번째의 빈(또한 b0번째의 빈을 포함하는 비트열이 변환 가능한 경우에는, 대응하는 워드)이 다중화부(705)의 버퍼에 저장된다(스텝 S304). 그 후, 가변 길이 부호화부(23)는 다중화부(705)가 비트 스트림으로서 출력한 비트열의 최종 비트 위치 q를 취득한다(스텝 S305). 또한, 가변 길이 부호화부(23)는 다중화부(705)로부터 다음의 비트 스트림의 선두 엔트리 인덱스 FirstIndex를 취득하고, 그 인덱스를 t로 한다.
그 후, 스텝 S306에서 캐리수 c가 1 이상이면, 가변 길이 부호화부(23)는 b0번째의 빈을 산술 부호화하기 전의 비트 스트림의 최종 비트 위치 p를 b0번째의 빈을 산술 부호화한 후의 비트 스트림의 최종 비트 위치 q와 비교한다. 또한 가변 길이 부호화부(23)는, 다음의 비트 스트림의 선두 엔트리 인덱스 t가 인덱스 s보다도 큰 것인지 여부를 판정한다(스텝 S307). 또한, 인덱스 s는, 이미 산술 부호화되었지만 비트 스트림으로서 출력되어 있지 않은 EndOfSliceFlag에 대응하는 엔트리 중, 가장 큰 엔트리 인덱스를 나타낸다.
최종 비트 위치 p가 최종 비트 위치 q와 서로 다르고, 또한, 인덱스 t가 인덱스 s보다도 큰 경우(스텝 S307- '예'), b0번째의 빈의 산술 부호화 처리에 의해 새로운 비트가 생성된다. 이 경우에는, 이전에 산술 부호화되었지만, 비트 스트림으로서 출력되어 있지 않았던 그룹 x(x=j-1, …, j-c)의 최후 블록의 EndOfSliceFlag에 대응하는 최후의 워드가 비트 스트림으로서 출력되어 있다. 즉 그룹 x의 복호에 필요한 전체 비트가 q의 위치에서 출력되어 있다. 따라서 가변 길이 부호화부(23)는, 이 시점에서 출력된 각 그룹을 복호하는 데 필요한 비트열의 최종 비트 위치 BitEnd()를 비트 위치 q로 설정한다(스텝 S308).
한편, 최종 비트 위치 p가 최종 비트 위치 q와 동등하거나, 혹은, 인덱스 t가 인덱스 s와 동등한 경우(스텝 S307- '아니오'), 새로운 비트가 생성되어 있지 않다. 그 때문에, 가변 길이 부호화부(23)는, 스텝 S308 및 S309의 처리를 행하지 않고 스텝 S310의 처리를 행한다.
도 13의 (b)에 도시되는 바와 같이, 가변 길이 부호화부(23)는 EndOfSliceFlag를 산술 부호화하고(스텝 S312), 그 후, EndOfSliceFlag를 산술 부호화한 후의 비트 스트림의 최종 비트 위치 q를 취득한다(스텝 S313). 또한, 가변 길이 부호화부(23)는 다중화부(705)보다 다음의 비트 스트림의 선두 엔트리 인덱스 FirstIndex를 취득하고, 그 인덱스를 t로 한다. 또한 가변 길이 부호화부(23)는 다중화부(705)보다, 이미 산술 부호화되었지만 비트 스트림으로서 출력되어 있지 않은 EndOfSliceFlag에 대응하는 엔트리 중, 가장 큰 엔트리 인덱스를 취득하고, 그 인덱스를 s로 한다.
가변 길이 부호화부(23)는 캐리수 c가 1 이상, 또한, EndOfSliceFlag를 산술 부호화하기 전의 비트 스트림의 최종 비트 위치 p와, EndOfSliceFlag를 산술 부호화한 후의 비트 스트림의 최종 비트 위치 q가 다른지 여부를 판정한다. 또한 가변 길이 부호화부(23)는 인덱스 t가 인덱스 s보다도 큰지 여부를 판정한다(스텝 S314). 캐리수 c가 1 이상이고, p가 q와 서로 다르고, 또한 t가 s보다 큰 경우(스텝 S314- '예'), 그룹 x(x =j-1, …, j-c)의 최후 블록의 EndOfSliceFlag가 비트 스트림으로서 출력되어 있다. 즉, 그룹 x를 복호하는 데 필요한 전체 비트가 비트 스트림으로서 출력되어 있다. 따라서 가변 길이 부호화부(23)는, 이 시점에서 출력된 각 그룹을 복호하는 데 필요한 비트열의 최종 비트 위치 BitEnd()를 비트 위치 q로 설정한다(스텝 S315).
한편, 캐리수 c가 0, 또는 p가 q와 동등하거나, 혹은 t가 s와 동등한 경우(스텝 S314- '아니오'), 그룹 x를 복호하는 데 필요한 전체 비트가 출력되어 있지 않다. 따라서 가변 길이 부호화부(23)는, 스텝 S315 및 S316의 처리를 행하지 않고, 현재 블록 m이 그룹 j의 최종 블록인지 여부를 판정한다(스텝 S317). 현재 블록 m이 그룹 j의 최종 블록이 아닌 경우(스텝 S317- '아니오'), 그룹 j 내에 미처리의 블록이 있다. 따라서 가변 길이 부호화부(23)는 m을 1 인크리먼트한 후, 스텝 S302 이후의 처리를 반복한다.
한편, 블록 m이 그룹 j의 최종 블록인 경우(스텝 S317- '예'), 가변 길이 부호화부(23)는 m을 1 인크리먼트한다. 그리고 가변 길이 부호화부(23)는 EndOfSliceFlag를 산술 부호화하기 전의 비트 스트림의 최종 비트 위치 p와, EndOfSliceFlag를 산술 부호화한 후의 비트 스트림의 최종 비트 위치 q를 비교하고, 또한, 인덱스 t와 인덱스 s를 비교한다(스텝 S318).
p가 q와 서로 다르고, 또한 t가 s보다 큰 경우(스텝 S318- '예'), EndOfSliceFlag를 산술 부호화함으로써 새로운 비트가 생성되어 있다. 따라서, 그룹 j의 최종 블록의 모두를 복호하는 데 필요한 모든 비트가 비트 스트림으로서 출력되어 있다. 따라서 가변 길이 부호화부(23)는, 이 시점에서 출력된 그룹 j를 복호하는 데 필요한 비트열의 최종 비트 위치 BitEnd()를 비트 위치 q로 설정한다(스텝 S319).
한편, p가 q와 동등하거나, 혹은 t가 s와 동등한 경우(스텝 S318- '아니오'), EndOfSliceFlag가 산술 부호화되어도 새로운 비트가 생성되어 있지 않다. 따라서, 가변 길이 부호화부(23)는 캐리수 c를 1 인크리먼트하고, 또한 그룹의 인덱스 j를 1 인크리먼트한다(스텝 S321).
이상으로 설명해 온 바와 같이, 이 동화상 부호화 장치는 픽쳐를 분할한 블록을 그룹 단위로 분류하고, 그 그룹마다 추정되는 복호 시각에 따라서, 그룹에 포함되는 블록의 부호량을 조정함으로써, 복호 지연을 저감시킬 수 있다.
컴퓨터상에서 실행됨으로써, 상술한 실시 형태 또는 그 변형예에 의한 동화상 부호화 장치의 각 부의 기능을 실현하는 컴퓨터 프로그램은, 반도체 메모리 또는 광 기록 매체 등의 기록 매체에 기록되어 배포되어도 좋다.
상술한 실시 형태 또는 그 변형예에 의한 동화상 부호화 장치는, 다양한 용도로 이용된다. 예를 들면, 이 동화상 부호화 장치는 비디오 카메라, 영상 송신 장치, 영상 수신 장치, 영상 전화 시스템, 컴퓨터 혹은 휴대 전화기에 삽입된다.
여기에 든 모든 예 및 특정한 용어는, 독자가, 본 발명 및 상기 기술의 촉진에 대한 본 발명자에 의해 기여된 개념을 이해하는 것을 돕는, 교시적인 목적에 있어서 의도된 것이고, 본 발명의 우위성 및 열등성을 나타내는 것에 관한, 본 명세서의 어떠한 예의 구성, 그와 같은 특정한 것을 든 예 및 조건에 한정되지 않도록 해석되어야 할 것이다. 본 발명의 실시 형태는 상세하게 설명되어 있지만, 본 발명의 정신 및 범위로부터 벗어나는 일 없이, 다양한 변경, 치환 및 수정을 이에 가하는 것이 가능한 것을 이해하기 바란다.
10 : 동화상 부호화 장치
11 : 부호화 처리부
12 : 부호량 제어부
13 : 그룹 결정부
14 : 그룹 복호 시각 정보 산출부
15 : 그룹 정보 부가부
21 : 직교 변환부
22 : 양자화부
23 : 가변 길이 부호화부
24 : 양자화값 산출부
25 : 비트 카운터
26 : 버퍼 점유량 산출부
700 : 엔트로피 부호화부
701 : 바이너리화부
702 : 콘텍스트 모델화부
703 : 확률 양자화부
704-1 내지 704-k : 빈 부호화부
705 : 다중화부

Claims (6)

  1. 동화상 데이터에 포함되는 각 픽쳐를 복수의 블록으로 분할하여 부호화하는 동화상 부호화 장치로서,
    상기 픽쳐를 임의의 크기의 복수의 그룹으로 분할했을 때, 상기 복수의 그룹 중 적어도 하나의 그룹에 포함되는 블록 수가 다른 그룹에 포함되는 블록 수와 다르게 되도록 각 블록이 속하는 그룹을 결정하는 그룹 결정부와,
    상기 그룹마다 그룹의 직전의 그룹의 복호 시각과의 차분으로 복호 시각을 산출하는 그룹 복호 시각 정보 산출부와,
    상기 각 블록이 속하는 그룹을 나타내는 그룹 정보와, 상기 그룹 정보에 대응하는 복호 시각 정보를 출력 데이터에 부가하는 그룹 정보 부가부와,
    상기 그룹에 포함되는 모든 블록의 복호에 필요한 데이터가, 소정의 전송 레이트로 동화상 복호 장치에 전송된 경우에, 상기 그룹 복호 시각 정보 산출부에 의해 산출된 그 그룹의 복호 시각까지 그 동화상 복호 장치의 스트림 수신 버퍼에 도달하도록, 그 그룹에 포함되는 각 블록의 부호량을 제어하는 부호량 제어부와,
    상기 부호량의 제어 정보에 기초하여 상기 각 블록을 부호화하는 부호화 처리부
    를 갖는 동화상 부호화 장치.
  2. 제1항에 있어서,
    상기 그룹 복호 시각 정보 산출부는, 부호화 대상 픽쳐의 최초 그룹에 대응하는 상기 복호 시각과, 상기 부호화 대상 픽쳐의 직전 픽쳐의 최후 그룹에 대응하는 상기 복호 시각의 차분값이, 상기 부호화 대상 픽쳐의 2번째 이후의 그룹에 포함되는, 연속하는 두개의 그룹 각각의 상기 복호 시각간의 차분값보다도 크게 되도록 상기 그룹마다의 복호 시각을 산출하는 동화상 부호화 장치.
  3. 동화상 데이터에 포함되는 각 픽쳐를 복수의 블록으로 분할하여 부호화하는 동화상 부호화 방법으로서,
    상기 픽쳐를 임의의 크기의 복수의 그룹으로 분할했을 때, 상기 복수의 그룹 중 적어도 하나의 그룹에 포함되는 블록 수가 다른 그룹에 포함되는 블록 수와 다르게 되도록 각 블록이 속하는 그룹을 결정하고,
    상기 그룹마다 그룹의 직전의 그룹의 복호 시각과의 차분으로 복호 시각을 산출하고,
    상기 각 블록이 속하는 그룹을 나타내는 그룹 정보와, 상기 그룹 정보에 대응하는 복호 시각 정보를 출력 데이터에 부가하고,
    상기 그룹에 포함되는 모든 블록의 복호에 필요한 데이터가, 소정의 전송 레이트로 동화상 복호 장치에 전송된 경우에, 그 그룹의 복호 시각까지 그 동화상 복호 장치의 스트림 수신 버퍼에 도달하도록, 그 그룹에 포함되는 각 블록의 부호량을 제어하고,
    상기 부호량의 제어 정보에 기초하여 상기 각 블록을 부호화하는
    것을 포함하는 동화상 부호화 방법.
  4. 제3항에 있어서,
    상기 그룹마다의 복호 시각은, 부호화 대상 픽쳐의 최초 그룹에 대응하는 상기 복호 시각과, 상기 부호화 대상 픽쳐의 직전 픽쳐의 최후 그룹에 대응하는 상기 복호 시각의 차분값이, 상기 부호화 대상 픽쳐의 2번째 이후의 그룹에 포함되는, 연속하는 두개의 그룹 각각의 상기 복호 시각간의 차분값보다도 크게 되도록 산출되는 동화상 부호화 방법.
  5. 동화상 데이터에 포함되는 각 픽쳐를 복수의 블록으로 분할하여 부호화하는 것을 컴퓨터에 실행시키는 동화상 부호화용 컴퓨터 프로그램으로서,
    상기 픽쳐를 임의의 크기의 복수의 그룹으로 분할했을 때, 상기 복수의 그룹 중 적어도 하나의 그룹에 포함되는 블록 수가 다른 그룹에 포함되는 블록 수와 다르게 되도록 각 블록이 속하는 그룹을 결정하고,
    상기 그룹마다 그룹의 직전의 그룹의 복호 시각과의 차분으로 복호 시각을 산출하고,
    상기 각 블록이 속하는 그룹을 나타내는 그룹 정보와, 상기 그룹 정보에 대응하는 복호 시각 정보를 출력 데이터에 부가하고,
    상기 그룹에 포함되는 모든 블록의 복호에 필요한 데이터가, 소정의 전송 레이트로 동화상 복호 장치에 전송된 경우에, 그 그룹의 복호 시각까지 그 동화상 복호 장치의 스트림 수신 버퍼에 도달하도록, 그 그룹에 포함되는 각 블록의 부호량을 제어하고,
    상기 부호량의 제어 정보에 기초하여 상기 각 블록을 부호화하는
    것을 컴퓨터에 실행시키는 동화상 부호화용 컴퓨터 프로그램이 기록된 컴퓨터 판독가능한 기록매체.
  6. 제5항에 있어서,
    상기 그룹마다의 복호 시각은, 부호화 대상 픽쳐의 최초 그룹에 대응하는 상기 복호 시각과, 상기 부호화 대상 픽쳐의 직전 픽쳐의 최후 그룹에 대응하는 상기 복호 시각의 차분값이, 상기 부호화 대상 픽쳐의 2번째 이후의 그룹에 포함되는, 연속하는 두개의 그룹 각각의 상기 복호 시각간의 차분값보다도 크게 되도록 산출되는 기록매체.
KR1020157002906A 2010-09-30 2011-01-13 동화상 부호화 장치, 동화상 부호화 방법 및 동화상 부호화용 컴퓨터 프로그램 KR101627568B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JPJP-P-2010-222247 2010-09-30
JP2010222247 2010-09-30
PCT/JP2011/050462 WO2012042916A1 (ja) 2010-09-30 2011-01-13 動画像符号化装置、動画像符号化方法及び動画像符号化用コンピュータプログラム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020137010375A Division KR101503190B1 (ko) 2010-09-30 2011-01-13 동화상 부호화 장치, 동화상 부호화 방법 및 동화상 부호화용 컴퓨터 프로그램

Publications (2)

Publication Number Publication Date
KR20150028835A KR20150028835A (ko) 2015-03-16
KR101627568B1 true KR101627568B1 (ko) 2016-06-09

Family

ID=45892402

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020137010375A KR101503190B1 (ko) 2010-09-30 2011-01-13 동화상 부호화 장치, 동화상 부호화 방법 및 동화상 부호화용 컴퓨터 프로그램
KR1020157002906A KR101627568B1 (ko) 2010-09-30 2011-01-13 동화상 부호화 장치, 동화상 부호화 방법 및 동화상 부호화용 컴퓨터 프로그램

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020137010375A KR101503190B1 (ko) 2010-09-30 2011-01-13 동화상 부호화 장치, 동화상 부호화 방법 및 동화상 부호화용 컴퓨터 프로그램

Country Status (7)

Country Link
US (1) US9621886B2 (ko)
EP (1) EP2624554B1 (ko)
JP (2) JP5720691B2 (ko)
KR (2) KR101503190B1 (ko)
CN (1) CN103202015B (ko)
ES (1) ES2750328T3 (ko)
WO (1) WO2012042916A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5994367B2 (ja) 2012-04-27 2016-09-21 富士通株式会社 動画像符号化装置、動画像符号化方法
JP6234660B2 (ja) * 2012-04-27 2017-11-22 富士通株式会社 動画像復号装置
JP6234659B2 (ja) * 2012-04-27 2017-11-22 富士通株式会社 動画像復号装置
US10958989B2 (en) 2016-02-25 2021-03-23 Synamedia Limited Framework for embedding data in encoded video
JP6146502B2 (ja) * 2016-03-07 2017-06-14 富士通株式会社 動画像符号化復号システム及び動画像符号化復号方法
JP6194974B2 (ja) * 2016-03-07 2017-09-13 富士通株式会社 動画像復号装置及び動画像復号方法
JP6288129B2 (ja) * 2016-03-07 2018-03-07 富士通株式会社 動画像復号装置及び動画像復号方法
JP6194973B2 (ja) * 2016-03-07 2017-09-13 富士通株式会社 動画像復号装置及び動画像復号方法
JP6164324B2 (ja) * 2016-03-14 2017-07-19 富士通株式会社 動画像復号方法
JP6249040B2 (ja) * 2016-04-11 2017-12-20 富士通株式会社 動画像復号方法
CN110022481B (zh) * 2018-01-10 2023-05-02 中兴通讯股份有限公司 视频码流的解码、生成方法及装置、存储介质、电子装置
US20210176475A1 (en) * 2019-12-05 2021-06-10 Mediatek Inc. Specifying Layout In Video Pictures

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003535523A (ja) * 2000-06-01 2003-11-25 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 映像信号符号化およびバッファ管理
US20060088094A1 (en) 2004-09-17 2006-04-27 Mitsubishi Denki Kabushiki Kaisha Rate adaptive video coding

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2787599B2 (ja) 1989-11-06 1998-08-20 富士通株式会社 画像信号符号化制御方式
JPH0993537A (ja) * 1995-09-27 1997-04-04 Mitsubishi Electric Corp ディジタル映像信号記録再生装置及びディジタル映像信号符号化方法
JP2001509354A (ja) * 1997-01-21 2001-07-10 サーノフ コーポレイション 接続点の存在を示す情報ストリームシンタックス
JP3299185B2 (ja) 1998-06-10 2002-07-08 日本ビクター株式会社 符号化装置
JP2001251616A (ja) * 2000-03-02 2001-09-14 Media Glue Corp 多重化音響・動画圧縮符号化信号変換方法、装置および変換プログラムを記録した媒体
JP2001346201A (ja) 2000-03-27 2001-12-14 Sony Corp 画像符号化装置とその方法、画像復号化装置とその方法、画像記録装置、画像伝送装置
US6819714B2 (en) * 2000-04-20 2004-11-16 Matsushita Electric Industrial Co., Ltd. Video encoding apparatus that adjusts code amount by skipping encoding of image data
US7418007B1 (en) * 2000-09-20 2008-08-26 General Instrument Corporation Method and apparatus for determining a transmission bit rate in a statistical multiplexer
US7532670B2 (en) * 2002-07-02 2009-05-12 Conexant Systems, Inc. Hypothetical reference decoder with low start-up delays for compressed image and video
TWI249356B (en) * 2002-11-06 2006-02-11 Nokia Corp Picture buffering for prediction references and display
KR100882077B1 (ko) * 2003-07-11 2009-02-10 파나소닉 주식회사 디스플레이 세트의 병렬처리를 수행할 수 있는 재생장치, 기록매체, 기록방법, 재생방법, 및 컴퓨터 판독가능한 기록매체
JP5072893B2 (ja) * 2009-03-25 2012-11-14 株式会社東芝 画像符号化方法および画像復号化方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003535523A (ja) * 2000-06-01 2003-11-25 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 映像信号符号化およびバッファ管理
US20060088094A1 (en) 2004-09-17 2006-04-27 Mitsubishi Denki Kabushiki Kaisha Rate adaptive video coding

Also Published As

Publication number Publication date
US9621886B2 (en) 2017-04-11
EP2624554A1 (en) 2013-08-07
US20130208793A1 (en) 2013-08-15
EP2624554A4 (en) 2015-01-07
KR20130070645A (ko) 2013-06-27
EP2624554B1 (en) 2019-09-18
JP5720691B2 (ja) 2015-05-20
JPWO2012042916A1 (ja) 2014-02-06
KR20150028835A (ko) 2015-03-16
CN103202015A (zh) 2013-07-10
KR101503190B1 (ko) 2015-03-16
WO2012042916A1 (ja) 2012-04-05
CN103202015B (zh) 2016-08-03
JP2015057909A (ja) 2015-03-26
JP5983704B2 (ja) 2016-09-06
ES2750328T3 (es) 2020-03-25

Similar Documents

Publication Publication Date Title
KR101627568B1 (ko) 동화상 부호화 장치, 동화상 부호화 방법 및 동화상 부호화용 컴퓨터 프로그램
KR101494562B1 (ko) 동화상 부호화 장치, 동화상 부호화 방법 및 동화상 부호화용 컴퓨터 프로그램이 기록된 컴퓨터 판독가능한 기록 매체
KR102391908B1 (ko) 비디오 신호를 인코딩, 디코딩하는 방법 및 장치
EP1649697B1 (en) Intra coding video data apparatuses
US11336921B2 (en) Acceleration of context adaptive binary arithmetic coding (CABAC) in video codecs
KR101710619B1 (ko) 단계적인 영상 부호화, 복호화 방법 및 장치
US20140269896A1 (en) Multi-Frame Compression
WO2011148887A1 (ja) 動画像配信システム、動画像送信装置、動画像配信方法および動画像配信プログラム
US9014274B2 (en) Video image encoding device, video image encoding method
KR101427516B1 (ko) 변환 계수의 분포에 기반한 예측 방법 및 장치
US10448035B2 (en) Information compression device, information compression method, non-volatile recording medium, and video coding device
CN107995496B (zh) 确定用于变换系数的二进制码字的方法
WO2022209032A1 (ja) 映像符号化装置、映像復号装置、映像符号化方法、映像復号方法および映像システム
JP4847423B2 (ja) 動画像符号化装置、および、コンピュータプログラム
EP1750452B1 (en) Apparatus for intra coding video data
EP3149948B1 (en) Acceleration of context adaptive binary arithmetic coding (cabac) in video codecs
JP2022548685A (ja) 画像データの符号化及び復号化

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
FPAY Annual fee payment

Payment date: 20190429

Year of fee payment: 4