KR20060109338A - 인코딩 장치 및 방법, 그리고 디코딩 장치 및 방법 - Google Patents

인코딩 장치 및 방법, 그리고 디코딩 장치 및 방법 Download PDF

Info

Publication number
KR20060109338A
KR20060109338A KR20060033989A KR20060033989A KR20060109338A KR 20060109338 A KR20060109338 A KR 20060109338A KR 20060033989 A KR20060033989 A KR 20060033989A KR 20060033989 A KR20060033989 A KR 20060033989A KR 20060109338 A KR20060109338 A KR 20060109338A
Authority
KR
South Korea
Prior art keywords
decoding
video stream
unit
frame
position information
Prior art date
Application number
KR20060033989A
Other languages
English (en)
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 KR20060109338A publication Critical patent/KR20060109338A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor
    • 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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/89Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Television Signal Processing For Recording (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

영상 스트림 내의 프레임의 위치를 나타내는 프레임 위치 정보의 기록을 제어하는 프레임 위치 기록 제어 단계; 및 상기 영상 스트림을 디코딩할 때 처리 단위로서 사용되는 단위 영역(unit region)의 위치를 나타내는 단위 영역 위치 정보의 기록을 제어하는 단위 영역 위치 기록 제어 단계를 포함하는 인코딩 방법이다.
영상 스트림, 인코딩, 디코딩, 시작 위치, 분할, 프레임, 픽처, 슬라이스

Description

인코딩 장치 및 방법, 그리고 디코딩 장치 및 방법 {ENCODING APPARATUS AND METHOD, AND DECODING APPARATUS AND METHOD}
도 1은 복수의 프로세서가 영상 스트림의 병렬 디코딩하는 경우, 관련 기술의 처리 분할의 일례를 설명하는 도면이다.
도 2는 본 발명의 일 실시예를 적용한 AV 처리 시스템의 일례를 나타낸 블록도이다.
도 3은 도 2에 도시된 CPU로 구현되는 디코딩 유닛의 기능의 구성의 일례를 나타낸 블록도이다.
도 4는 도 3에 도시된 디코딩 유닛에 의해 실행되는 디코딩 처리를 설명하는 흐름도이다.
도 5는 도 3에 도시된 디코딩 유닛에 의해 실행되는 디코딩 처리를 설명하는 흐름도이다.
도 6은 도 3에 도시된 디코딩 유닛에 의해 영상 스트림이 병렬 디코딩되는 경우의 처리 분할의 일례를 설명하는 도면이다.
도 7은 도 2에 도시된 CPU로 구현되는 인코딩 유닛의 구성의 일례를 나타낸 블록도이다.
도 8은 도 2에 도시된 CPU로 구현되는 디코딩 유닛의 기능의 구성의 다른 예 를 나타낸 블록도이다.
도 9는 픽처 위치 정보(picture-position information)의 데이터 구성의 일례를 나타낸 도면이다.
도 10은 슬라이스 위치 정보(slice-position information)의 데이터 구성의 일례를 나타낸 도면이다.
도 11은 도 7에 도시된 인코딩 유닛에 의해 실행되는 인코딩 처리를 설명하는 흐름도이다.
도 12는 도 11의 단계 S105의 픽처층 이하의 인코딩 처리를 상세하게 설명하는 흐름도이다.
도 13은 도 8의 도시된 디코딩 유닛에 의해 실행되는 디코딩 처리를 설명하는 흐름도이다.
도 14는 도 8에 도시된 디코딩 유닛에 의해 실행되는 디코딩 처리를 설명하는 흐름도이다.
도 15는 도 8에 도시된 디코딩 유닛에 의해 실행되는 디코딩 시작 위치 검출 처리를 설명하는 흐름도이다.
도 16은 도 2에 도시된 CPU로 구현되는 인코딩 유닛의 기능 구성의 다른 예를 나타낸 블록도이다.
도 17은 도 2에 도시된 CPU로 구현되는 디코딩 유닛의 기능 구성의 또 다른 예를 나타낸 블록도이다.
도 18은 클립 위치 정보(clip-position information)의 데이터 구성의 일례 를 나타낸 도면이다.
도 19는 도 18에 도시된 클립 위치 정보에 포함되는 픽처 위치 정보의 데이터 구성의 일례를 나타낸 도면이다.
도 20은 도 18에 도시된 클립 위치 정보에 포함되는 슬라이스 위치 정보의 데이터 구성의 일례를 나타낸 도면이다.
도 21은 도 16에 도시된 인코딩 유닛에 의해 실행되는 인코딩 처리를 설명하는 흐름도이다.
도 22는 도 17에 도시된 디코딩 유닛에 의해 실행되는 디코딩 처리를 설명하는 흐름도이다.
도 23은 도 17에 도시된 디코딩 유닛에 의해 실행되는 디코딩 처리를 설명하는 흐름도이다.
도 24는 도 2에 도시된 CPU로 구현되는 디코딩 유닛의 기능 구성의 또 다른 예를 나타낸 블록도이다.
도 25는 도 24에 도시된 디코딩 유닛에 의해 실행되는 디코딩 처리를 설명하는 흐름도이다.
도 26은 도 24에 도시된 디코딩 유닛에 의해 실행되는 디코딩 처리를 설명하는 흐름도이다.
도 27은 본 발명의 일 실시예를 적용한 AV 처리 시스템의 일례를 나타낸 블록도이다.
도 28은 도 27에 도시된 CPU로 구현되는 디코딩 유닛의 기능 구성의 일례를 나타낸 블록도이다.
도 29는 도 27에 도시된 CPU로 구현되는 디코딩 유닛의 기능 구성의 다른 예를 나타낸 블록도이다.
도 30은 28에 도시된 디코딩 유닛에 의해 실행되는 디코딩 처리를 설명하는 흐름도이다.
도 31은 도 28에 도시된 디코딩 유닛에 의해 실행되는 디코딩 처리를 설명하는 흐름도이다.
도 32는 도 31의 단계 S464의 디코딩의 전반 처리를 상세하게 설명하는 흐름도이다.
도 33은 도 28에 도시된 디코딩 유닛 및 도 29에 도시된 디코딩 유닛에 의해 실행되는 디코딩의 후반 처리를 설명하는 흐름도이다.
도 34는 도 33의 단계 S423의 IDCT 처리를 상세하게 설명하는 흐름도이다.
도 35는 IDCT 처리에 의해 생성되는 데이터의 천이를 설명하는 도면이다.
도 36은 매크로블록을 구성하는 정보(pieces of information)의 정렬을 설명하는 도면이다.
도 37은 슬라이스 내의 정보의 배열을 설명하기 위한 도면이다.
관련출원의 상호참조
본 발명은 2005년 8월 24일자로 일본 특허청에 출원한 일본 특허출원 제2005-241992호와 관련된 대상 발명을 포함하고 있으며, 그 내용 전부는 참조에 의해 본 명세서에 포함된다.
본 발명은 인코딩 장치 및 방법, 그리고 디코딩 장치 및 방법에 관한 것이며, 특히 영상 스트림 디코딩의 고속화를 실현하기 위한 인코딩 장치 및 방법, 그리고 디코딩 장치 및 방법에 관한 것이다.
영상 스트림의 디코딩을 신속히 시작하는 위해, 영상 스트림을 인코딩할 때, 사용자에 의해 지정된 프레임 기록 위치(frame-recoding position)를 인덱스 데이터(index data)로서 기록하고, 영상 스트림을 디코딩할 때, 인덱스 데이터를 사용하여 영상 스트림의 디코딩을 시작하는 위치를 검출하는 것이 제안되어 있다(예를 들면, 일본 공개특허공보 평 11-341437호 참조).
또, 영상 스트림 디코딩의 고속화하기 위해, 디코딩 처리를 복수의 스레드(treadh)로 분할하여, 복수의 프로세서를 사용하여 스레드를 병렬로 실행하는 것이 가능하다. 예를 들면, MPEG2(Moving Picture Experts Group-2)에 따라 인코딩된 영상 스트림의 경우, 영상 스트림의 디코딩은 픽처 내의 각 슬라이스를 단위로 분할된다. 구체적으로, 디코딩이 4개의 프로세서에 의해 분할된 형태로 수행되는 경우, 도 1의 좌측에 나타낸 바와 같이, 1개의 픽처가 16개의 슬라이스를 포함하는 경우, 프로세스들은 픽처 내의 상위 슬라이스(top slice)로부터 차례로 1개씩 슬라이스를 병렬로 디코딩한다. 즉, 프로세스들은 도 1의 우측에 나타낸, 슬라이스 1-1 내지 1-4, 슬라이스 2-1 내지 2-4, 슬라이스 3-1 내지 3-4, 그리고 슬라이스 4-1 내지 4-4의 4세트의 슬라이스 중 어느 하나를 디코딩한다.
그러나, 도 1에 나타낸 바와 같이 디코딩을 분할한 경우, 각 프로세서는 1개의 슬라이스를 디코딩할 때마다, 다음에 디코딩할 슬라이스의 위치를 검출할 필요가 있어, 각 프로세서의 디코딩 위치의 검출에 필요한 시간이 증대한다. 또, 일본 공개특허공보 평 11-341437호에 개시된 발명을 적용하더라도, 슬라이스 위치를 검출하는 시간은 단축되지 않기 때문에, 각 프로세서의 디코딩 위치의 검출 처리에 필요한 시간은 거의 줄어들지 않는다.
본 발명은 전술한 상황을 감안하여 이루어진 것이며, 고속으로 영상 스트림의 디코딩을 가능하게 하는 것이다.
본 발명의 실시예에 따르면, 영상 스트림 내의 프레임의 위치를 나타내는 프레임 위치 정보의 기록을 제어하는 프레임 위치 기록 제어 단계와, 영상 스트림을 디코딩할 때 사용되는 처리 단위인 단위 영역(unit region)의 위치를 나타내는 단위 영역 위치 정보의 기록을 제어하는 단위 영역 위치 기록 제어 단계를 포함하는 인코딩 방법이 제공된다.
프레임 위치 기록 제어 단계에서, 영상 스트림이 인코딩된 형태인 경우에, 그 영상 스트림 내에 프레임 위치 정보를 기록하도록 프레임 위치 정보의 기록을 제어할 수 있으며, 단위 영역 위치 기록 제어 단계에서, 영상 스크림이 인코딩된 형태인 경우에, 그 영상 스트림 내에 단위 영역 위치 정보를 기록하도록 단위 영역 위치 정보의 기록을 제어할 수 있다.
프레임 위치 기록 제어 단계에서, 영상 스트림의 파일과는 상이한 파일에 프레임 위치 정보를 기록하도록 프레임 위치 정보의 기록을 제어할 수 있으며, 단위 영역 위치 기록 제어 단계에서, 상이한 파일에 단위 영역 위치 정보를 기록하도록 단위 영역 위치 정보의 기록을 제어할 수 있다.
영상 스트림은 MPEG(Moving Picture Experts Group) 표준에 의해 인코딩될 수 있으며, 단위 영역은 슬라이스(slice)이다.
프레임 위치 기록 제어 단계에서, MPEG 표준에 따라 인코딩된 영상 스트림에 포함되어 있는 시퀀스층의 사용자 데이터 필드와 GOP(Group Of Pictures)층의 사용자 데이터 필드 중 하나에 프레임 위치 정보를 기록하도록 프레임 위치 정보의 기록을 제어할 수 있고, 단위 영역 위치 기록 제어 단계에서, MPEG 표준에 따라 인코딩된 영상 스트림의 픽처층의 사용자 데이터 영역에 단위 영역 위치 정보를 기록하도록 단위 영역 위치 정보의 기록을 제어할 수 있다.
프레임 위치 정보는 영상 스트림의 선두(beginning)에 대한 프레임의 상대적인 위치를 나타내는 정보를 포함할 수 있으며, 단위 영역 위치 정보는 영상 스트림의 선두에 대한 단위 영역의 상대적인 위치를 나타내는 정보를 포함할 수 있다.
프레임 위치 정보는 프레임에 할당된 번호 및 프레임의 데이터 길이를 나타내는 정보를 포함할 수 있으며, 단위 영역 위치 정보는 프레임 내의 단위 영역에 할당된 번호 및 단위 영역의 데이터 길이를 나타내는 정보를 포함할 수 있다.
프레임 위치 정보는 데이터 기록 매체에 프레임을 기록하는 위치를 나타내는 정보를 포함할 수 있으며, 단위 영역 위치 정보는 데이터 기록 매체에 단위 영역을 기록하는 위치를 나타내는 정보를 포함할 수 있다.
프레임 위치 정보는 프레임에 할당된 번호 및 프레임의 데이터 길이를 나타내는 정보를 포함할 수 있으며, 단위 영역 위치 정보는 프레임 내의 단위 영역에 할당된 번호 및 단위 영역의 데이터 길이를 나타내는 정보를 포함할 수 있다.
본 발명의 다른 실시예에 따르면, 영상 스트림을 인코딩하는 인코딩 수단과, 영상 스트림 내의 프레임의 위치를 나타내는 정보인 프레임 위치 정보 및 영상 스트림을 디코딩할 때 사용되는 처리 단위인 단위 영역의 위치를 나타내는 단위 영역 위치 정보의 기록을 제어하는 기록 제어 수단을 포함하는 인코딩 장치가 제공된다.
본 발명의 다른 실시예에 따르면, 영상 스트림 내의 프레임의 위치를 나타내는 프레임 위치 정보 및 영상 스트림을 디코딩할 때 사용되는 처리 단위인 단위 영역의 적어도 하나의 위치를 나타내는 단위 영역 위치 정보에 기초하여, 영상 스트림의 디코딩을 시작하는 적어도 하나의 디코딩 시작 위치를 검출하는 검출 단계와, 영상 스트램의 디코딩이 디코딩 시작 위치에서 시작되도록 제어하는 단계를 포함하는 디코딩 방법이 제공된다.
상기 디코딩 방법은 영상 스트림으로부터 프레임 위치 정보를 추출하는 프레임 위치 정보 추출 단계와, 영상 스트림으로부터 단위 영역 위치 정보를 추출하는 단위 영역 위치 정보 추출 단계를 추가로 포함할 수 있다.
상기 디코딩 방법은 영상 스트림의 파일과는 상이한 파일로부터 프레임 위치 정보 및 단위 영역 위치 정보의 취득을 제어하는 취득 제어 단계를 추가로 포함할 수 있다.
영상 스트림은 MPEG 표준에 따라 인코딩될 수 있으며, 단위 영역은 슬라이스일 수 있다.
검출 단계에서, 프레임 위치 정보 및 단위 영역 위치 정보에 기초하여, 영상 스트림의 병렬 디코딩을 수행하는 복수의 디코딩 수단에 대응하는 디코딩 시작 위치를 검출할 수 있으며, 디코딩 제어 단계에서, 복수의 디코딩 수단이 디코딩 시작 위치에서 병렬 디코딩을 시작하도록 영상 스트림의 디코딩을 제어할 수 있다.
상기 디코딩 방법은 영상 스트림의 1 프레임의 화상에 대응하는 영역을, 복수의 디코딩 수단의 수로 나누어 취득되고, 각각이, 단위 영역을 포함하는 분할 영역을 설정하는 설정 단계를 추가로 포함하며, 디코딩 제어 단계에서, 프레임 내의 분할 영역을 복수의 디코딩 수단이 병렬로 디코딩하도록 영상 스트림의 디코딩을 제어할 수 있다.
프레임 위치 정보는 영상 스트림의 선두에 대한 프레임의 상대적인 위치를 나타내는 정보를 포함할 수 있으며, 단위 영역 위치 정보는 영상 스트림의 선두에 대한 단위 영역의 상대적인 위치를 나타내는 정보를 포함할 수 있다.
프레임 위치 정보는 프레임에 할당된 번호 및 프레임의 데이터 길이를 나타내는 정보를 포함할 수 있으며, 단위 영역 위치 정보는 프레임 내의 단위 영역에 할당된 번호 및 단위 영역의 데이터 길이를 나타내는 정보를 포함할 수 있다.
프레임 위치 정보는 데이터 기록 매체에 프레임을 기록하는 위치를 나타내는 정보를 포함할 수 있으며, 단위 영역 위치 정보는 데이터 기록 매체에 단위 영역을 기록하는 위치를 나타내는 정보를 포함할 수 있다.
프레임 위치 정보는 프레임에 할당된 번호 및 프레임의 데이터 길이를 나타내는 정보를 포함할 수 있으며, 단위 영역 위치 정보는 프레임 내의 단위 영역에 할당된 번호 및 단위 영역의 데이터 길이를 나타내는 정보를 포함할 수 있다.
본 발명의 다른 실시예에 따르면, 영상 스트림을 디코딩하는 디코딩 장치로서, 영상 스트림 내의 프레임의 위치를 나타내는 프레임 위치 정보 및 영상 스트림을 디코딩할 때 사용되는 처리 단위인 단위 영역의 위치를 나타내는 단위 영역 위치 정보에 기초하여, 영상 스트림의 디코딩을 시작하는 디코딩 시작 위치를 검출하는 검출 수단과, 디코딩 시작 위치에서 디코딩을 시작하도록 영상 스트림의 디코딩을 제어하는 디코딩 제어 수단을 포함하는 디코딩 장치가 제공된다.
본 발명의 다른 실시예에 따르면, 영상 스트림의 1 픽처에 대응하는 영역을, 제1 디코딩 수단의 수로 나누어 취득되며, 각각이, 제1 디코딩 수단 및 제2 디코딩 수단이 영상 스트림을 디코딩할 때 제1 디코딩 수단 및 제2 디코딩 수단의 처리 단위로서 사용되는 단위 영역을 복수 개 포함하는 분할 영역을 설정하는 설정 단계; 각 분할 영역 내의 단위 영역들에 대해, 미리 정해진(소정의) 중간 스테이지(stage)까지, 각 디코딩 수단에 할당되어 있는 디코딩이 디코딩 수단 중 다른 것에 의한 디코딩과 병렬로 실행되도록, 제1 디코딩 수단을 제어하는 전반 제어를 수행하는 단계; 및 제1 디코딩 수단에 의한 디코딩과 병렬로, 미리 정해진 중간 스테이지까지 디코딩되는 단위 영역들에 대한 나머지 스테이지 디코딩을 실행하도록, 제2 디코딩 수단을 제어하는 후반 제어를 수행하는 단계를 포함하는 디코딩 제어 방법이 제공된다.
영상 스트림은 MPEG 표준에 따라 인코딩될 수 있다.
전반 제어를 수행하는 단계에서, 슬라이스의 가변 길이 코딩 및 역양자화를 포함하는 디코딩을 수행하도록 제1 디코딩 수단을 제어할 수 있으며, 후반 제어를 수행하는 단계에서, 슬라이스에 대한 역이산코사인변환(inverse-discrete-cosine-transform)을 포함하는 디코딩을 수행하도록 제2 디코딩 수단을 제어할 수 있다.
상기 디코딩 제어 방법에서, 단위 영역은 슬라이스일 수 있다.
상기 디코딩 제어 방법은 제1 디코딩 수단 및 제2 디코딩 수단과 상이한 하드웨어로 실현될 수 있다.
제2 디코딩 수단은 그래픽 처리 유닛에 의해 실현될 수 있다.
후반 제어를 수행하는 단계에서, 각각의 제2 디코딩 수단은 단위 영역들의 디코딩을 종료하는 스테이지를 나타내는 정보를 공급받을 수 있다.
본 발명의 다른 실시예에 따르면, 영상 스트림의 1 픽처에 대응하는 영역을, 제1 디코딩 수단의 수로 나누어 취득되며, 각각이, 제1 디코딩 수단 및 제2 디코딩 수단이 영상 스트림을 디코딩할 때, 제1 디코딩 수단 및 제2 디코딩 수단의 처리 단위로서 사용되는 단위 영역을 복수 개 포함하는 분할 영역을 설정하는 설정 수단; 및 각 분할 영역 내의 단위 영역들에 대해, 미리 정해진 중간 스테이지까지, 각 디코딩 수단에 할당되어 있는 디코딩이 디코딩 수단 중 다른 것에 의한 디코딩과 병렬로 실행되도록, 제1 디코딩 수단을 제어하고, 제1 디코딩 수단에 의한 디코딩과 병렬로, 미리 정해진 중간 스테이지까지 디코딩되는 단위 영역들에 대한 나머 지 스테이지 디코딩을 실행하도록, 제2 디코딩 수단을 제어하는 디코딩 제어 수단을 포함하는 디코딩 제어 장치가 제공된다.
본 발명의 실시예에서, 영상 스트림 내의 프레임의 위치를 나타내는 프레임 위치 정보의 기록이 제어되며, 영상 스트림을 디코딩할 때의 처리 단위인 단위 영역을 나타내는 단위 영역 위치 정보의 기록을 제어한다.
본 발명의 실시예에서, 영상 스트림 내의 프레임의 위치를 나타내는 프레임 위치 정보와, 영상 스트림을 디코딩할 때의 처리 단위인 단위 영역을 나타내는 단위 영역 위치 정보에 기초하여, 영상 스트림의 디코딩을 시작하는 디코딩 시작 위치를 검출하며, 영상 스트림의 디코딩은 디코딩 시작 위치에서 시작하도록 제어된다.
본 발명의 실시예에 따르면, 영상 스트림의 디코딩이 시작되는 위치를 검출하는데 필요한 시간을 단축시킬 수 있다. 또, 영상 스트림을 증대된 속도로 디코딩할 수 있다.
[실시예]
이하, 도면을 참조하여 본 발명의 실시예에 있어 설명한다.
도 2는 본 발명을 적용한 AV(Audio/Visual) 처리 시스템(101)의 일례를 나타낸 도면이다. AV 처리 시스템(101)은 AV 처리 장치(111), 드라이브(112), 외부 영상 기록/재생 장치(113-1 내지 113-n), 마우스(114), 및 키보드(115)를 포함한다.
AV 처리 장치(111)는 영상 스트림, 음성 스트림, 영상 스트림과 음성 스트림이 다중화된 AV(Audio/Visual) 스트림, 및 정지 화상 데이터와 같은 AV 데이터의 재생, 기록, 표시, 출력, 디코딩, 및 인코딩 등의 처리를 수행한다.
드라이브(112)는 AV 처리 장치(111)의 인터페이스(I/F)(129-3)에 접속되어 있다. 필요한 경우, 자기 디스크, 광자기 디스크, 또는 반도체 메모리와 같은 탈착 가능한 매체(116)가 드라이(112)에 접속된다. 드라이브(112)는 탈착 가능한 매체(116)로부터 판독한 각종 데이터를 AV 처리 장치(111)에 입력하고, AV 처리 장치(111)로부터 출력되는 각종 데이터를 탈착 가능한 매체(116)에 저장한다.
또, 필요한 경우, 자기 디스크, 광자기 디스크, 또는 반도체 메모리와 같은 탈착 가능한 매체(117)가 드라이브(112)에 접속된다. 탈착 가능한 매체(117)로부터 판독된 프로그램은 하드 디스크 드라이브(124)에 인스톨된다(installed).
외부 영상 기록/재생 장치(113-1 내지 113-n)는 AV 처리 장치(111)의 인터페이스(I/F)(129-2)에 접속되어 있다. 외부 영상 기록/재생 장치(113-1 내지 113-n) 각각은 AV 스트림, 영상 스트림, 음성 스트림, 및 정지 화상 데이터와 같은 AV 데이터를 재생하고, 재생한 데이터를 AV 처리 장치(111)에 입력한다. 또, 각각의 외부 영상 기록/재생 장치(113-1 내지 113-n)는 AV 스트림, 영상 스트림, 음성 스트림, 및 정지 화상 데이터과 같은 AV 데이터를 기록한다.
외부 영상 기록/재생 장치(113-1 내지 113-n)는 또한 AV 처리 장치(111)의 영상특수효과(video-special-effect) 음성믹싱(audio-mixing) 처리 유닛(126)에 접속되어 있다. 각 외부 영상 기록/재생 장치(113-1 내지 113-n)는 AV 스트림, 영상 스트림, 음성 스트림, 및 정지 화상 데이터와 같은 AV 데이터를 영상특수효과 음성믹싱 처리 유닛(126)에 입력하고, 다양한 특수 효과 처리된 AV 데이터 또는 믹싱 처리된 AV 데이터를 영상특수효과 음성믹싱 처리 유닛(126)으로부터 취득한다.
이하의 설명에서, 각 외부 영상 기록/재생 장치(113-1 내지 113-n)를 구별할 필요가 없는 경우, 단지 "외부 영상 기록/재생 장치(113)"라고 한다.
마우스(114) 및 키보드(115)는 인터페이스(I/F)(129-1)에 접속되어 있다.
AV 처리 장치(111)는 중앙 처리 장치(CPU, Central Processing Unit)(121), ROM(Read Only Memory)(122), RAM(Random Access Memory)(123), 하드 디스크(HDD)(124), 신호 처리 유닛(125), 영상특수효과 음성믹싱 처리 유닛(126), 디스플레이(127), 스피커(128), 및 인터페이스(I/F)(129-1 내지 129-3)를 포함한다.
CPU(121), R0M(122), RAM(123), HDD(124), 신호 처리 유닛(125), 영상특수효과 음성믹싱 처리 유닛(126), 및 인터페이스(129-1 내지 129-3)는 버스(130)에 의해 서로 접속되어 있다.
인터페이스(129-1) 및 버스(130)를 사용하여, 사용자가 마우스(114) 또는 키보드(115)로 입력하는 처리 지시 및 데이터 입력을 받은 후, 받은 지시나 데이터에 기초하여, CPU(121)는 ROM(122)에 기억되어 있는 프로그램이나 HDD(124)로부터 RAM(123)에 로드된 프로그램에 따라 각종 처리를 실행한다.
CPU(121)는 AV 스트림, 영상 스트림, 음성 스트림, 및 정지 화상 데이터와 같은 AV 데이터에 대해 각종 처리(예를 들면, 다중화, 분리, 인코딩, 디코딩 등)를 수행한다. CPU(121)는 예를 들면 멀티코어(multicore) 프로세서에 의해 구성된다. 도 4 등을 참조하여 후술하는 바와 같이, 미리 정해진 프로그램을 실행함으로써, CPU(121)는 미리 정해진 표준(예를 들면, MPEG2)으로 인코딩된 영상 스트림의 디코 딩을 복수의 스레드로 분할하고, 복수의 프로세서 코어를 사용하여 영상 스트림의 스레드를 병렬로 디코딩한다. 또, CPU(121)는 미리 정해진 표준(예를 들면, MPEG2)를 사용하여 인코딩 전의 기저대역 신호(baseband signal)인 영상 스트림을 인코딩한다.
ROM(122)은 CPU(121)가 사용하는 프로그램 및 연산용 파라미터 중 기본적으로 고정된 데이터를 저장억한다.
RAM(123)은 CPU(121)에 의해 실행되는 프로그램, 그리고 필요한 경우 프로그램 실행 시에 변화하는 파라미터 및 데이터를 저장한다.
HDD(124)는, 예를 들면 CPU(121)에 의해 실행되는 프로그램, 및 정보를 기록하거나 재생한다.
신호 처리 유닛(125)은 하드웨어를 사용하여 AV 스트림, 영상 스트림, 음성 스트림, 및 정지 화상 데이터와 같은 AV 데이터에 대한 각종 처리(예를 들면, 다중화, 분리, 인코딩, 디코딩 등)를 실행한다. 신호 처리 유닛(125)은 또한, 입력된 영상 스트림으로부터 디스플레이(127)의 규격에 적합한 영상 신호를 생성하고, 생성된 영상 신호를 디스플레이(127)에 공급한다. 신호 처리 유닛(125)은 또한, 입력된 음성 스트림으로부터 스피커(128)의 규격에 적합한 음성 신호를 생성하고, 생성된 음성 신호를 스피커(128)에 공급한다.
영상특수효과 음성믹싱 처리 유닛(126)은 신호 처리 유닛(125) 또는 외부 영상 기록/재생 장치(113)로부터 공급되는 영상 스트림, 음성 스트림, 및 정지 화상 데이터와 같은 AV 데이터에 대해 각종 특수 효과 처리(예를 들면, 화상의 합성, 분 할, 변환 등) 또는 믹싱(예를 들면, 음성의 합성 등)을 수행한다. 영상특수효과 음성믹싱 처리 유닛(126)은 처리된 AV 데이터를 CPU(121), 신호 처리 유닛(125), 또는 외부 영상 기록/재생 장치(113)에 공급한다.
디스플레이(127)는, 예를 들면 음극선관(CRT, Cathode Ray Tube), ㅇ애액Llㅈ정 디스플레이(LCD, Liquid Crystal Display) 등에 의해 구성되며, 신호 처리 유닛(125)으로부터 공급되는 영상 신호에 기초하여 영상을 표시한다.
스피커(128)는 신호 처리 유닛(125)으로부터 공급되는 음성 신호에 기초하여 음성을 출력한다.
이하, AV 처리 장치(111)가 MPEG2를 사용하여 영상 스트림을 인코딩 또는 디코딩하는 경우의 처리의 일례를 설명한다.
도 3은 미리 정해진 프로그램을 실행하는 CPU(121)로 구현되는 디코딩 유닛(151)의 기능 구성의 일례를 나타낸 도면이다. 디코딩 유닛(151)은 스트림 판독 제어부(161), 스트림 해석부(162), 디코딩 영역 설정부(163), 디코딩 제어부(164), 디코더(165-1 내지 165-4), 및 기저대역 출력 제어부(166)를 포함한다.
스트림 판독 제어부(161)는 드라이브(112)를 제어하여, 탈착 가능한 매체(116)에 기록되어 있는 영상 스트림을 판독한다. 스트림 판독 제어부(161)는 인터페이스(129-3)와 버스(130)를 사용하여 드라이브(112)에 의해 판독된 영상 스트림을 취득한다. 스트림 판독 제어부(161)는 또한 버스(130)를 통하여 HDD(124)에 기록되어 있는 영상 스트림을 판독한다. 스트림 판독 제어부(161)는 필요에 따라, 취득한 영상 스트림을, 예를 들어 CPU(121) 내의 캐시 메모리로 구성되는 스트림용 메모리(152)에 일시적으로 기억한다. 스트림 판독 제어부(161)는, 필요에 따라, 취득한 영상 스트림을 스트림 해석부(162) 또는 디코더(165-1 내지 165-4)에 공급한다.
스트림 해석부(162)는 영상 스트림의 픽처층까지의 층을 디코딩하고, 디코딩함으로써 층들을 디코딩하여 얻은 정보를 디코딩 제어부(164)에 공급한다. 스트림 해석부(162)는 또한 층들을 디코딩하여 얻은 정보 및 영상 스트림의 화상 크기(화상의 종횡의 화소 수)를 나타내는 정보를 디코딩 영역 설정부(163)에 공급한다.
도 4 및 도 5를 참조하여 후술하는 바와 같이, 디코딩 영역 설정부(163)는 영상 스트림의 영상 크기 및 디코딩 유닛(151)의 디코더의 수에 따라, 영상 스트림의 각 프레임에 대해, 디코더(165-1 내지 165-4)에 의해 분할하여 디코딩되는 영역(이하, "분할 디코딩 영역"이라 한다)을 설정한다. 디코딩 영역 설정부(163)는 설정한 분할 디코딩 영역을 나타내는 정보를 디코딩 제어부(164)에 공급한다.
디코딩 제어부(164)는, 사용자가 마우스(114) 또는 키보드(115)를 사용하여 입력한 디코딩의 지시, 및 AV 처리 장치(111)의 각 부, 또는 CPU(121)로 구현되는 디코딩 유닛(151)과 상이한 기능 블록으로부터 입력되는 디코딩의 지시 중 어느 하나에 기초하여 디코딩 유닛(151)의 처리를 제어한다. 디코딩 제어부(164)는, 스트림 해석부(162) 또는 디코더(165-1 내지 165-4)에 영상 스트림의 공급을 지시하는 정보를 스트림 판독 제어부(161)에 공급한다. 디코딩 제어부(164)는 또한 디코딩의 시작을 지시하는 정보를 디코더(165-1 내지 165-4)에 공급한다.
디코딩 제어부(164)는 디코더(165-1 내지 165-4)로부터 디코딩의 종료 또는 에러의 발생을 통지하는 정보를 취득한다. 디코딩의 에러의 발생을 통지하는 정보를 취득한 경우, 디코딩 제어부(164)는 디코딩을 재개하는 위치를 결정하고, 결정한 위치에서의 디코딩 재개를 지시하는 정보를 에러가 발생한 디코더에 공급한다. 디코딩 제어부(164)는 또한 영상 스트림을 디코딩하여 얻고, 기저대역 신호인 영상 스트림의 출력을 지시하는 정보를 기저대역 출력 제어부(166)에 공급한다.
디코더(165-1 내지 165-4)에 할당된, 영상 스트림의 각 프레임 내의 분할 디코딩 영역을 디코더(165-1 내지 165-4)는 병렬로 디코딩한다. 즉, 디코더(165-1 내지 165-4)는 영상 스트림의 슬라이스층 이하를 디코딩한다. 디코더(165-1 내지 165-4)는 디코딩한 데이터를 기저대역 출력 제어부(166)에 공급한다. 이하의 설명에서, 디코더(165-1 내지 165-4)를 별개로 구별할 필요가 없는 경우, 단지 디코더(165)이라고 한다.
기저대역 출력 제어부(166)는 디코더(165-1 내지 165-4)로부터 공급된 데이터를 결합하여, 디코딩 후에 얻어지는 기저대역 신호인 영상 스트림을 생성한다. 기저대역 출력 제어부(166)는 필요에 따라, 예를 들면 CPU(121) 내의 캐시 메모리(도시되지 않음)로 구성되는 기저대역용 메모리(153)에 생성한 영상 스트림을 일시적으로 기억한다. 기저대역 출력 제어부(166)는 디코딩 제어부(164)의 지시에 기초하여 영상 스트림을 외부[예를 들면, 버스(130)를 통해 신호 처리 유닛(125)]에 출력한다.
다음에, 도 4 및 도 5의 흐름도를 참조하여, 디코딩 유닛(151)에 의해 실행되는 디코딩 처리를 설명한다. 디코딩 처리는, 디코딩 제어부(164)가 사용자가 마 우스(114) 또는 키보드(115)를 사용하여 입력한 디코딩 지시를, 인터페이스(129-1) 및 버스(130)를 통해 취득한 경우, 시작된다. 또, 이하, 탈착 가능한 매체(116)에 기록되어 있는 영상 스트림을 디코딩하는 일례를 설명한다.
단계 S1에서, 디코딩 제어부(164)는 영상 스트림을 전부 디코딩하였는지 여부를 판정한다. 사용자에 의해 디코딩이 지시된 범위의 영상 스트림을 아직 전부 디코딩하지 않은 경우, 디코딩 제어부(164)는 영상 스트림을 전부 디코딩하지 않은것으로 판정하고, 처리는 단계 S2로 진행한다.
단계 S2에서, 스트림 해석부(162)는 시퀀스층을 디코딩한다. 구체적으로, 디코딩 제어부(164)는 디코딩할 영상 스트림의 슬라이스층의 판독을 지시하는 정보를 스트림 판독 제어부(161)에 공급한다. 스트림 판독 제어부(161)의 제어하에서, 드라이브(112)는 디코딩할 영상 스트림의 슬라이스층을 탈착 가능한 매체(116)로부터 판독하고, 판독한 데이터를 인터페이스(129-3) 및 버스(130)를 통해 스트림 판독 제어부(161)에 공급한다. 스트림 판독 제어부(161)는 영상 스트림의 슬라이스층을 스트림 해석부(162)에 공급한다. 스트림 해석부(162)는 슬라이스층을 디코딩하고, 디코딩하여 얻은 정보를 디코딩 제어부(164)에 공급한다.
단계 S3에서, 스트림 해석부(162)는 영상 스트림의 화상 크기를 검출한다. 구체적으로, 스트림 해석부(162)는 영상 스트림의 슬라이스층의 정보에 기초하여 영상 스트림의 화상 크기를 검출한다. 스트림 해석부(162)는 검출한 화상 크기 정보를 디코딩 영역 설정부(163)에 공급한다.
단계 S4에서, 디코딩 영역 설정부(163)는 디코더(165)에 의해 디코딩될 영역 을 설정한다. 구체적으로, 먼저, 디코딩 영역 설정부(163)는 디코더(165)에 의해 디코딩될 프레임당 슬라이스수("분할 슬라이스수"라고도 한다)를 계산한다. 이하의 설명에서, 각 슬라이스의 가로 방향의 폭은 프레임(픽처)의 폭과 같고, 1 슬라이스는 행간에 배치되지 않는다.
디코딩 영역 설정부(163)는 영상 스트림의 화상 크기에 기초하여 영상 스트림의 1 프레임(픽처) 내에 포함되는 슬라이스수를 검출한다. 예를 들면, 영상 스트림의 세로 방향의 화상 크기를 Spv로 나타내고, 슬라이스의 세로 방향의 크기를 Ssv로 나타내면, 1 프레임 당의 슬라이스수 Nsf는, 이하의 식((1))에 의해 검출 된다.
Nsf = Spv ÷ Ssv (1)
디코딩 영역 설정부(163)는 검출한 1 프레임당 슬라이스수를 디코더(165)의 수로 나누어 분할 슬라이스수를 계산한다. 예를 들면, 디코더(165)의 수를 Nd로 나타내면, 분할 슬라이스수 X는, 식 (2)에 의해 계산된다.
X = Nsf ÷ Nd (2)
따라서, 디코더(165)에 의해 디코딩될 슬라이스수는 동등하게 되고, 프레임 당 디코딩될 데이터량은 대략 동등하게 된다.
예를 들면, 영상 스트림의 세로 방향의 화상 크기가 1088 화소이고, 슬라이스의 세로 방향의 크기가 16 화소이며, 디코더(165)의 수가 4인 경우, 분할 슬라이 스수 X는 다음과 같이 17이 된다.
Nsf = 1088 ÷ 16 = 68
X = 68 ÷ 4 = 17
다음에, 디코딩 영역 설정부(163)는 프레임 내의 슬라이스를 분할 슬라이스수로 나누어 분할 디코딩 영역을 설정한다. 예를 들면, 도 6의 좌측에 도시한 바와 같이, 1 프레임 내에 16개의 슬라이스가 포함되어 있고, 4개의 디코더에 의해 병렬로 디코딩되는 경우, 분할 슬라이스수는 4이다. 따라서, 프레임 내의 슬라이스를 위로부터 차례로 4개로 분할하여 얻은 4개의 영역이 분할 디코딩 영역으로 설정된다. 이 4개의 영역은 슬라이스(181-1 내지 181-4)를 포함하는 영역, 슬라이스 (182-1 내지 182-4)를 포함하는 영역, 슬라이스(183-1 내지 183-4)를 포함하는 영역, 및 슬라이스(184-1 내지 184-4)를 포함하는 영역의 4개의 영역이 분할 디코딩 영역에 설정된다.
MPEG2로 인코딩된 영상 스트림에서, 슬라이스(슬라이스층)는 선두에 시작 코드가 부가되어 영상 스트림의 해석 없이도 시작 위치를 검출할 수 있는 최하층(lowest layer)이며, 영상 스트림을 디코딩하는 경우에 최소 처리 단위가 된다. 따라서, 분할 디코딩 영역은 디코더(165)의 처리 단위로 사용되는 슬라이스를 복수개 포함하고, 영상 스트림의 픽처에 대한 영역을 디코더(165)의 수에 따라 분할하여 얻어진다. 또, 영상 스트림 상의 연속하는 슬라이스는 프레임(픽처) 내에서 가장 위에서부터 차례로 배치되어 있다. 따라서, 분할 디코딩 영역 내의 슬라이스는 분할 디코딩 영역의 가장 위에서부터 아래 방향으로 차례로 연속하여 위치되어 있다.
디코딩 영역 설정부(163)는 설정한 분할 디코딩 영역의 정보를 디코딩 제어부(164)에 공급한다.
단계 S5에서, 디코딩 제어부(164)는 모든 GOP(Group Of Pictures)를 디코딩하였는지 여부를 판정한다. 구체적으로, 디코딩 제어부(164)는 단계 S2에서 디코딩된 시퀀스층 아래에 포함되어 있는 모든 GOP가 디코딩되었는지 여부를 판정한다. 모든 GOP가 디코딩되지 않은 것으로 판정된 경우, 처리는 단계 S6으로 진행한다.
단계 S6에서, 스트림 해석부(162)는 GOP층을 디코딩한다. 구체적으로, 디코딩 제어부(164)는 다음에 디코딩할 GOP의 판독을 지시하는 정보를 스트림 판독 제어부(161)에 공급한다. 스트림 판독 제어부(161)의 제어하에, 드라이브(112)는 다음에 디코딩할 GOP를 탈착 가능한 매체(116)로부터 판독하고, 판독한 G0P를 인터페이스(129-3) 및 버스(130)를 통해 스트림 판독 제어부(161)에 공급한다. 스트림 판독 제어부(161)는 취득한 GOP를 스트림용 메모리(152)에 일시적으로 기억한다. 스트림 판독 제어부(161)는 취득한 GOP를 스트림 해석부(162)에 공급한다. GOP층을 디코딩한 후, 스트림 해석부(162)는 디코딩하여 얻은 정보를 디코딩 제어부(164)에 공급한다.
단계 S6에서, 복수의 GOP를 한번에 탈착 가능한 매체(116)로부터 판독한 후, GOP를 스트림용 메모리(152)에 기억시킬 수도 있다.
단계 S7에서, 디코딩 제어부(164)는 G0P 내의 모든 픽처를 디코딩하였는지 여부를 판정한다. 아직 GOP 내의 모든 픽처가 디코딩되지 않은 것으로 판정된 경우, 처리는 단계 S8로 진행한다.
단계 S8에서, 스트림 판독 제어부(161)는 디코딩할 다음 픽처의 픽처층을 판독한다. 구체적으로, 디코딩 제어부(164)는 디코딩할 다음 픽처의 픽처층의 판독을 지시하는 정보를 스트림 판독 제어부(161)에 공급한다. 스트림 판독 제어부(161)는 스트림용 메모리(152)에 기억되어 있는 GOP에 대하여, 디코딩할 다음 픽처의 시작 위치(픽처 시작 코드)를 GOP의 선두로부터 검색하고, 검출한 시작 위치로부터 디코딩할 다음 픽처의 픽처층을 판독한다. 스트림 판독 제어부(161)는 판독한 픽처층을 스트림 해석부(162)에 공급한다.
단계 S9에서, 스트림 해석부(162)는 픽처층을 디코딩한다. 스트림 해석부(162)는 픽처층을 디코딩하여 얻은 정보를 디코딩 제어부(164)에 공급한다.
단계 S10에서, 디코딩 제어부(164)는 디코딩의 시작을 지시한다. 구체적으로, 디코딩 제어부(164)는 디코더(165)에 할당된 분할 디코딩 영역에 포함된 슬라이스의 디코더(165)에의 공급을 지시하는 정보를 스트림 판독 제어부(161)에 공급한다. 디코딩 제어부(164)는 또한 디코딩의 시작을 지시하는 정보를 각 디코더(165)에 공급한다.
단계 S11에서, 스트림 판독 제어부(161)는 각 분할 디코딩 영역의 시작 위치를 검출한다. 구체적으로, 스트림 판독 제어부(161)는 스트림용 메모리(152)에 기억되어 있는 GOP에 대하여, 디코딩할 다음 픽처의 슬라이스층의 시작 위치(슬라이스 시작 코드)를 순차적으로 검색하여, 각 디코더(165)에 할당되어 있는 분할 디코 딩 영역의 첫 번째 슬라이스의 시작 위치, 즉, 각 디코더(165)가 디코딩을 시작하는 위치를 검출한다.
단계 S12에서, 디코더(165)는 디코딩을 시작한다. 구체적으로, 스트림용 메모리(152)로부터, 각 분할 디코딩 영역의 시작 위치에서 시작되는 분할 디코딩 영역의 번호와 동일한 번호의 스라이스, 즉 각 분할 디코딩 영역에 포함된 슬라이스를, 스트림 판독 제어부(161)가 차례로 판독한다. 스트림 판독 제어부(161)는 판독한 슬라이스를, 분할 디코딩 영역 각각에 대해, 분할 디코딩 영역이 할당된 디코더(165)에 공급한다. 디코더(165)는 분할 디코딩 영역 내의 첫 번째 슬라이스에서부터 디코딩을 시작한다. 디코더(165)는 디코딩한 데이터를 차례로 기저대역 출력 제어부(166)에 공급한다. 기저대역 출력 제어부(166)는 공급된 데이터를 기저대역용 메모리(153)에 기억시킨다.
단계 S13에서, 디코딩 제어부(164)는 에러가 발생하였는지 여부를 판정한다. 구체적으로, 디코딩 제어부(164)는 디코더(165)로부터 에러의 발생을 통지하는 정보를 받은 경우, 에러가 발생하였다고 판정하고, 처리는 단계 S14로 진행한다.
단계 S14에서, 디코딩 제어부(164)는 디코딩을 재개할 위치를 결정한다. 디코딩 제어부(164)는 예를 들면 디코딩을 실패한 슬라이스의 다음 슬라이스를 디코딩을 재개하는 위치로 결정한다.
단계 S15에서, 디코더(165)는 디코딩을 재개한다. 구체적으로, 디코딩 제어부(164)는, 에러가 발생한 슬라이스의 다음 슬라이스에서부터 디코딩의 재개를 지시하는 정보를 에러가 발생한 디코더(165)에 공급한다.
단계 S13에서, 디코딩 제어부(164)는 디코더(165)로부터 에러의 발생을 통지하는 정보를 받지 않은 경우, 에러가 발생하지 않았다고 판정한다. 그런 다음, 단계 S14 및 S15의 처리는 건너뛰고, 처리는 단계 S16으로 진행한다.
단계 S16에서, 디코딩 제어부(164)는 모든 디코더(165)의 처리가 종료하였는지 여부를 판정한다. 구체적으로, 디코딩 제어부(164)는 디코더(165)에 할당된 분할 디코딩 영역의 모든 슬라이스의 디코딩의 종료를 통지하는 정보를, 모든 디코더(165)로부터 받았는지 여부를 판정한다. 디코딩 제어부(164)는 디코더(165)에 할당된 분할 디코딩 영역의 모든 슬라이스의 디코딩의 종료를 통지하는 정보를, 아직 모든 디코더(165)로부터 받지 않은 경우, 아직 모든 디코더(165)의 처리가 종료하지 않은 것으로 판정하고, 처리는 단계 S13으로 복귀한다. 단계 S16에서 모든 디코더(165)의 처리를 종료하였다고 판정될 때까지, 단계 S13 내지 S16의 처리가 반복 실행된다.
만약, 단계 S16에서, 모든 디코더(165)의 처리가 종료했다고 판정된 경우, 즉, 디코더(165)에 할당된 분할 디코딩 영역의 모든 슬라이스의 디코딩 종료를 통지하는 정보가 모든 디코더(165)로부터 디코딩 제어부(164)에 공급된 경우, 처리는 단계 S17로 진행한다.
단계 S17에서, 기저대역 출력 제어부(166)는 1 프레임에 대한 데이터를 출력한다. 구체적으로, 디코딩 제어부(164)는 1 프레임의 데이터 출력을 지시하는 정보를 기저대역 출력 제어부(166)에 공급한다. 기저대역 출력 제어부(166)는 기저대역용 메모리(153)에 기억되어 있는 1 프레임의 데이터를 외부[예를 들면, 버 스(130)를 통해 신호 처리 유닛(125)]에 출력한다. 그 후, 처리는 단계 S7로 복귀한다.
단계 S7에서, 아직 GOP 내의 모든 픽처가 디코딩되지 않은 것으로 판정된 경우, 처리는 단계 S8으로 진행하고, 단계 S8 및 후속하는 단계에서의 처리가 실행된다. 즉, 다음 픽처가 디코딩된다.
단계 S7에서, GOP 내의 모든 픽처가 디코딩되었다고 판정된 경우, 처리는 단계 S5로 되돌아간다.
단계 S5에서, 아직 모든 GOP가 디코딩되지 않은 것으로 판정된 경우, 처리는 단계 S6으로 진행하고, 단계 S6 및 후속 단계에서의 처리가 실행된다. 즉, 다음의 GOP가 디코딩된다.
단계 S5에서, 모든 GOP가 디코딩되었다고 판정된 경우, 처리는 단계 S1로 되돌아간다.
단계 S1에서, 아직 영상 스트림이 모두 디코딩되지 않은 것으로 판정된 경우, 처리는 단계 S2으로 진행하고, 단계 S2 및 후속하는 단계가 실행된다. 즉, 영상 스트림의 다음 시퀀스층이 디코딩된다.
단계 S1에서, 영상 스트림이 모두 디코딩되었다고 판정된 경우, 디코딩 처리는 종료한다.
전술한 바와 같이, 각 프레임(픽처)에 대하여, 각 디코더(165)가 디코딩을 시작하는 위치로서, 각 분할 디코딩 영역의 시작 위치 검출만을 필요로 한다. 따라서, 디코더(165)가 디코딩을 위치를 검출하는 시간이 단축되어 영상 스트림의 디 코딩을 고속화할 수 있다.
다음에, 도 7 내지 도 15를 참조하여 영상 스트림의 디코딩을 고속화하는 다른 실시예에 대하여 이하에 설명한다.
도 7은 소정의 프로그램을 실행하는 CPU(121)로 구현되는 인코딩 유닛(201)의 기능 구성의 일례를 나타낸 블록도이다.
인코딩 유닛(201)은 인코더(211), 픽처 카운팅부(212), 슬라이스 카운팅부(213), 시작 위치 메모리(214), 시작 위치 기록 제어부(215), 및 스트림 출력 제어부(216)를 포함한다.
사용자가 마우스(114) 또는 키보드(115)를 사용하여 입력하는 인코딩 지시, 또는 AV 처리 장치(111)의 각 부(portion)나 CPU(121)에 실현되는 인코딩 유닛(201)과 상이한 기능 블록으로부터 입력되는 인코딩의 지시에 기초하여, 인코더(212)는 외부로부터 입력되는 인코딩 전의 기저대역 신호인 영상 스트림을, MPEG2를 사용하여 인코딩하고, 인코딩한 데이터를 스트림 출력 제어부(216)에 공급한다.
또, 인코더(212)는 픽처(픽처층)의 인코딩을 시작할 때마다, 픽처의 인코딩 시작을 통지하는 정보를 픽처 카운팅부(212) 및 시작 위치 기록 제어부(215)에 공급한다. 인코더(212)는 인코딩한 영상 스트림의 각 프레임(픽처)의 시작 위치를 나타내는 정보(이하, "픽처 시작 위치 정보"라고 한다)를, 시작 위치 메모리(214)에 기록한다. 각 픽처의 인코딩이 종료될 때마다, 인코더(212)는 픽처의 인코딩 종료를 나타내는 정보를 슬라이스 카운팅부(213) 및 시작 위치 기록 제어부(215)에 공급한다. 또한, 인코더(212)는 인코딩한 픽처의 데이터 길이를 나타내는 정보(이하, "픽처 데이터 길이 정보"라고 한다)를, 시작 위치 메모리(214)에 기록한다.
인코더(212)는 슬라이스(슬라이스층)의 인코딩을 시작할 때마다, 슬라이스의 인코딩의 시작을 통지하는 정보를 슬라이스 카운팅부(213) 및 시작 위치 기록 제어부(215)에 공급한다. 인코더(212)는 인코딩한 영상 스트림의 시작 위치를 나타내는 정보(이하, "슬라이스 시작 위치 정보"라고 한다)를, 시작 위치 메모리(214)에 기록한다. 각 슬라이스의 인코딩을 종료할 때마다, 인코더(212)는 슬라이스의 인코딩의 종료를 통지하는 정보를 시작 위치 기록 제어부(215)에 공급한다. 인코더(212)는 인코딩한 슬라이스의 데이터 길이를 나타내는 정보(이하, "슬라이스 데이터 길이 정보"라고 한다)를, 시작 위치 기록 제어부(215)에 기록한다.
픽처 카운팅부(212)는 영상 스트림을 기록 매체 상에서 관리하는 단위인 클립(clip) 내의 픽처의 수를 카운팅한다. 구체적으로, 픽처 카운팅부(212)는, 픽처 카운터를 관리하고, 인코더(211)가 픽처의 인코딩 시작을 통지하는 정보를 공급할 때마다, 픽처 카운터의 값을 인크리먼트(increment, 증분)한다. 픽처 카운팅부(212)는 픽처 카운터의 값을 나타내는 정보를 시작 위치 기록 제어부(215)에 공급한다.
슬라이스 카운팅부(213)는 픽처 내의 슬라이스의 수를 카운팅한다. 구체적으로, 슬라이스 카운팅부(213)는 슬라이스 카운터를 관리하고, 인코더(211)가 슬라이스의 인코딩 시작을 통지하는 정보를 공급할 때마다, 슬라이스 카운터의 값을 인크리먼트한다. 또, 슬라이스 카운팅부(213)는, 인코더(211)가 픽처의 인코딩 종료 를 통지하는 정보를 공급하는 경우, 슬라이스 카운터의 값을 리셋(reset)한다.
시작 위치 기록 제어부(215)는 시작 위치 메모리(214)에 기록되어 있는 픽처 시작 위치 정보, 슬라이스 시작 위치 정보, 픽처 데이터 길이 정보, 및 슬라이스 데이터 길이 정보 중 하나를 판독한다. 시작 위치 기록 제어부(215)는 또한 픽처 카운터의 값을 나타내는 정보를 픽처 카운팅부(212)로부터 취득한다. 시작 위치 기록 제어부(215)는 슬라이스 카운터의 값을 나타내는 정보를 슬라이스 카운팅부(213)로부터 취득한다.
시작 위치 기록 제어부(215)는, 픽처 카운터의 값, 픽처 시작 위치 정보, 및 픽처 데이터 길이 정보에 기초하고, 각 픽처의 위치를 나타내는 정보(이하, "픽처 위치 정보"라고 한다)의 영상 스트림에의 기록을 지시하는 정보를 스트림 출력 제어부(216)에 공급함으로써, 픽처 위치 정보의 기록을 제어한다. 또한, 시작 위치 기록 제어부(215)는, 슬라이스 카운터의 값, 슬라이스 시작 위치 정보, 및 슬라이스 데이터 길이 정보에 기초하고, 각 슬라이스의 위치를 나타내는 정보(이하, "슬라이스 위치 정보"라고 한다)의 영상 스트림에의 기록을 지시하는 정보를 스트림 출력 제어부(216)에 공급함으로써, 슬라이스 위치 정보의 기록을 제어한다.
스트림 출력 제어부(216)는 인코더(211)에 의해 인코딩된 영상 스트림을, 예를 들면 CPU(121) 내의 캐시 기억 장치 등에 의해 구성되는 스트림용 메모리(202)에 일시적으로 기억한다.
시작 위치 기록 제어부(215)의 지시에 응답하여, 스트림 출력 제어부(216)는, 예를 들면 인코딩된 영상 스트림의 각 GOP에 대응하는 GOP층의 사용자 데이터 필드에 픽처 위치 정보를 기록한다. 시퀀스층에 포함된 모든 GOP에 대응하는 픽처 위치 정보를, 영상 스트림의 시퀀스층의 확장 및 사용자 필드(extention and user field)의 사용자 데이터 필드에 기록할 수도 있다. 또, 시작 위치 기록 제어부(215)의 지시에 응답하여, 스트림 출력 제어부(216)는 예를 들면 인코딩된 영상 스트림의 각 픽처에 대응하는 픽처층의 확장 및 사용자 필드의 사용자 데이터 필드에 슬라이스 위치 정보를 기록한다.
스트림 출력 제어부(216)는 스트림용 메모리(202)에 기억되어 있는 영상 스트림을 판독하고, 판독한 영상 스트림을 외부[예를 들면, 버스(130)를 통해 드라이브(112) 또는 HDD(124)]에 출력한다.
도 8은 소정의 프로그램을 실행하는 CPU(121)로 구현되는 디코딩 유닛(251)의 기능의 구성의 일례를 나타낸 블록도이다. 디코딩 유닛(251)은 디코딩 영역 설정부(163) 대신에 시작 위치 디코딩부(271)를 구비하고 있다는 점에서 도 3에 도시된 디코딩 유닛(151)과 상이하다. 도 8에서, 도 3에 도시한 구성요소와 대응하는 부분은, 그 도면부호의 끝 2자리를 도 3의 도면부호의 끝 2자리와 동일하게 부여였다. 따라서, 동일한 기능의 설명에 대해서는, 그 설명이 반복되므로 생략한다.
디코딩 유닛(251)은 스트림 판독 제어부(261), 스트림 해석부(262), 디코딩 제어부(264), 디코더(265-1 내지 265-4), 기저대역 출력 제어부(266), 및 시작 위치 디코딩부(271)를 포함한다.
스트림 해석부(262)는, 도 3의 스트림 해석부(162)의 처리에 더해, 영상 스트림에 기록되어 있는 픽처 위치 정보 및 슬라이스 위치 정보를 추출하고, 추출한 정보를 시작 위치 디코딩부(271)에 공급한다.
디코딩 제어부(264)는, 도 3의 디코딩 제어부(164)의 처리에 더해, 픽처 번호(도 9)에 의해 지정된 픽처의 시작 위치의 검출을 지시하는 정보(이하, "시작 위치 검출 지시 정보"라고 한다), 또는 슬라이스 번호(도 10)에 의해 지정된 슬라이스의 시작 위치의 검출을 지시하는 시작 위치 검출 지시 정보를 시작 위치 디코딩부(271)에 공급한다.
시작 위치 디코딩부(271)는, 픽처 위치 정보 또는 슬라이스 위치 정보에 기초하여, 시작 위치 검출 지시 정보에 의해 지정된 픽처 또는 슬라이스의 시작 위치를 검출한다. 시작 위치 디코딩부(271)는 검출한 픽처 또는 슬라이스의 시작 위치를 나타내는 정보를 디코딩 제어부(264)에 공급한다.
이하의 설명에서, 디코더(265-1 내지 265-4)를 별개로 구별할 필요가 없는 경우, 단순히 "디코더(265)"라고 한다.
도 9는 픽처 위치 정보의 데이터 구성의 일례를 나타낸 도면이다. 픽처 위치 정보는 영상 스트림 내의 GOP마다 기록되고, 픽처 시작 어드레스 및 GOP에 포함되는 각 픽처에 대응하는 개별 정보를 포함한다.
픽처 시작 어드레스는 GOP 내의 첫 번째 픽처인 픽처 시작 위치의 클립의 선두로부터의 상대적인 위치(상대 어드레스)를 나타낸다. 영상 스트림을 기록 매체[예를 들면, 탈착 가능한 매체(116) 또는 HDD(124)]에 기록하는 경우, 픽처 시작 어드레스를 G0P 내의 첫 번째 픽처가 기록 매체에 기록되는 위치의 시작 어드레스로 사용할 수 있다.
개별 정보는, 픽처 번호, 데이터 길이, 및 오프셋(offset)을 포함한다. 픽처 번호는 클립 내의 첫 번째 픽처를 기점(origin)으로 사용하는 하는 경우에 취득되는 일련 번호이다. 픽처 번호는 클립 내에서 리셋 되지 않기 때문에, 첫 번째 클립으로부터 몇 번째 픽처인가를 나타낸다.
데이터 길이는 픽처의 데이터 길이를 나타낸다.
오프셋은 픽처 시작 어드레스로부터의 오프셋(상대 어드레스)을 나타낸다. 따라서, 픽처 시작 어드레스와 오프셋에 기초하여, 각 픽처의 시작 위치의 클립의 선두로부터의 상대 어드레스를 구할 수 있다. 영상 스트림을 기록 매체[예를 들면, 탈착 가능한 매체(116) 또는 HDD(124)]에 기록하는 경우, 각 픽처에 대하여, 오프셋 대신에 픽처가 기록 매체에 기록되는 위치의 선두 어드레스를 기록할 수 있다.
도 10은 슬라이스 위치 정보의 데이터 구성의 일례를 나타낸 도면이다. 슬라이스 위치 정보는 영상 스트림 내의 픽처마다 기록되고, 슬라이스 시작 어드레스와 각 슬라이스에 대응하는 개별 정보를 포함한다.
슬라이스 시작 어드레스는 픽처의 첫 번째 슬라이스의 시작 위치의 클립의 선두로부터의 상대 어드레스를 나타낸다. 슬라이스 시작 어드레스는, 픽처 내의 첫 번째 슬라이스가 기록 매체[예를 들면, 탈착 가능한 매체(116) 또는 HDD(124)]에 기록되는 위치의 선두의 어드레스로 사용될 수 있다.
개별 정보는 슬라이스 번호, 데이터 길이, 및 오프셋을 포함한다.
슬라이스 번호는 픽처 내의 첫 번째 슬라이스를 기점으로 사용하는 경우에 취득되는 일련 번호이다. 슬라이스 번호는 픽처가 바뀔 때마다 리셋되기 때문에, 슬라이스 번호는 픽처 내의 첫 번째 슬라이스로부터 몇 번째의 슬라이스인가를 나타낸다.
데이터 길이는 슬라이스의 데이터 길이를 나타낸다.
오프셋은 슬라이스 시작 어드레스로부터의 오프셋(상대 어드레스)을 나타낸다. 따라서, 슬라이스 시작 어드레스와 오프셋에 기초하여, 각 슬라이스의 시작 위치의 클립의 선두로부터의 상대 어드레스를 구할 수 있다. 영상 스트림을 기록 매체[예를 들면, 탈착 가능한 매체(116) 또는 HDD(124)]에 기록하는 경우, 각 슬라이스에 대하여, 오프셋 대신에, 슬라이스가 기록 매체[예를 들면, 탈착 가능한 매체(116) 또는 HDD(124)]에 기록되는 위치의 어드레스를 기록할 수 있다.
다음에, 도 11의 흐름도를 참조하여 인코딩 유닛(201)에 의해 실행되는 인코딩 처리를 이하에 설명한다. 이 처리는, 인코더(211)가 마우스(114) 또는 키보드(115)를 사용하여 입력되는 사용자에 의한 인코딩 지시를 인터페이스(129-1) 및 버스(130)를 통하여 취득한 경우, 시작된다. 외부 영상 기록/재생 장치(113-1)로부터 인코딩 전의 기저대역 신호인 영상 스트림이, 인터페이스(129-2) 및 버스(130)를 통하여 인코더(211)에 입력된 후, 인코딩된 영상 스트림이 탈착 가능한 매체(116)에 기록되는 경우의 예를 이하에 설명한다.
단계 S101에서, 인코더(212)는 모든 영상 스트림이 인코딩되었는지 여부를 판정한다. 아직 모든 영상 스트림이 인코딩되지 않은 것으로 판정된 경우, 예를 들면 외부 영상 기록/재생 장치(113-1)로부터 영상 스트림이 계속하여 입력되고 있 는 경우, 처리는 단계 S102로 진행한다.
단계 S102에서, 인코더(212)는 시퀀스층의 변경 여부를 판정한다. 시퀀스층을 변경하는 것으로 판정된 경우, 예를 들면 영상 스트림의 화상 크기를 변경하는 경우, 또는 외부로부터 인코더(211)에 시퀀스층의 변경을 지시하는 정보가 입력된 경우, 처리는 단계 S103으로 진행한다.
단계 S103에서, 인코더(212)는 영상 스트림의 시퀀스층을 인코딩한다. 인코더(212)는 인코딩한 데이터를 스트림 출력 제어부(216)에 공급한다. 스트림 출력 제어부(216)는 취득한 데이터를 스트림용 메모리(202)에 기억시킨다.
단계 S102에서, 시퀀스층을 변경하지 않는 것으로 판정된 경우, 단계 S103의 처리는 건너뛰고, 처리는 단계 S104로 진행한다.
단계 S104에서, 인코더(212)는 GOP층을 인코딩한다. 이때, 인코더(212)는 GOP층의 사용자 데이터 필드에, 픽처 위치 정보를 나중에 기록하기 위한 필드를 확보한다. 인코더(212)는 인코딩한 데이터를 스트림 출력 제어부(216)에 공급한다. 스트림 출력 제어부(216)는 공급된 데이터를 스트림용 메모리(202)에 기억시킨다.
단계 S105에서, 인코딩 유닛(201)은 픽처층 이하의 인코딩 처리를 수행한다. 픽처층 이하의 인코딩 처리에 대한 세부사항은 도 12를 참조하여 후술한다. 픽처층 이하의 인코딩 처리에서, 픽처층 이하가 인코 된다. 그 후, 처리는 단계 S101으로 복귀한다. 단계 S101에서, 영상 스트림이 모두 인코딩된 것으로 판정될 때까지, 단계 S101 내지 S105의 처리를 반복 실행하여, 영상 스트림이 인코딩된다.
단계 S101에서, 영상 스트림이 모두 인코딩된 것으로 판정된 경우, 예를 들 면 외부 영상 기록/재생 장치(113-1)로부터의 영상 스트림의 입력이 종료하고, 입력된 영상 스트림의 인코딩이 모두 종료한 경우, 인코딩 처리는 종료한다.
다음에, 도 12의 흐름도를 참조하여 단계 S105에서의 픽처층 이하 인코딩 처리를 이하 상세하게 설명한다.
단계 S121에서, GOP 내의 모든 픽처를 인코딩하였는지 여부를 판정한다. 인코더(212)는 현재 인코딩중인 GOP에 포함될 픽처를 인코딩하였는지 여부를 확인한다. 아직 현재 인코딩중인 GOP에 포함될 픽처를 인코딩하지 않은 경우, GOP 내의 모든 픽처를 인코딩하지 않은 것으로 판정하고, 처리는 단계 S122로 진행한다. 구체적으로, 인코더(212)는 다음 픽처의 인코딩 시작을 통지하는 정보를 픽처 카운팅부(212)에 공급한다. 픽처 카운팅부(212)는 픽처 카운터를 인크리먼트 한다.
단계 S123에서, 인코더(212)는 픽처의 시작 위치를 결정한다. 구체적으로, 인코더(212)는 인코딩할 다음 픽처의 기록을 시작하는 위치를 결정한다. 인코딩할 다음 픽처가 GOP의 첫 번째 픽처인 경우, 인코더(212)는 결정한 시작 위치의 클립의 선두로부터의 상대 어드레스를 나타내는 픽처 위치 정보를 시작 위치 메모리(214)에 기억시킨다. 또, 인코더(212)는, 인코딩할 다음 픽처가 GOP의 첫 번째 픽처가 아닌 경우, 결정한 시작 위치의 GOP의 첫 번째 픽처로부터의 오프셋을 나타내는 픽처 위치 정보를 시작 위치 메모리(214)에 기억시킨다.
단계 S124에서, 스트림 출력 제어부(216)에서 픽처 시작 위치를 기록한다. 구체적으로, 인코더(212)는 인코딩할 다음 픽처의 인코딩 시작을 통지하는 정보를 시작 위치 기록 제어부(215)에 공급한다. 시작 위치 기록 제어부(215)는 픽처 카 운팅부(212)로부터 픽처 카운터의 값을 나타내는 정보를 취득하고, 시작 위치 메모리(214)로부터 픽처 시작 위치 정보를 취득한다.
인코딩할 다음 픽처가 GOP의 첫 번째 픽처인 경우, 시작 위치 기록 제어부(215)의 제어하에, 스트림 출력 제어부(216)에서는 스트림용 메모리(202)에 기억되어 있는 인코딩중인 GOP에 대응하는 픽처 시작 위치 정보에 대하여, 픽처 시작 위치 정보의 값을 픽처 시작 어드레스로서 기록한다. 시작 위치 기록 제어부(215)의 제어하에, 스트림 출력 제어부(216)에서는 인코딩중인 GOP에 대응하는 픽처 위치 정보의 첫 번째 개별 정보에, 픽처 카운터의 값을 픽처 번호로서 기록하고, 영(0)을 오프셋으로 기록한다.
또, 인코딩할 다음 픽처가 GOP의 첫 번째 픽처가 아닌 경우, 시작 위치 기록 제어부(215)의 제어하에, 인코딩할 픽처에 대응하고 픽처 위치 정보 다음에 오는 개별 정보에서, 픽처 카운터의 값을 픽처 번호로서 기록하고, 픽처 시작 위치 정보의 값을 오프셋으로 기록한다.
단계 S125에서, 인코더(211)는 픽처 층을 인코딩한다. 이때, 인코더(211)는 픽처층의 사용자 데이터 필드에 슬라이스 위치 정보를 나중에 기록하기 위한 필드를 확보한다. 인코더(211)는 인코딩한 데이터를 스트림 출력 제어부(216)에 공급한다. 스트림 출력 제어부(216)는 공급받은 데이터를 스트림용 메모리(202)에 기억시킨다.
단계 S126에서, 인코더(211)는 픽처 내의 모든 슬라이스의 인코딩 여부를 판정한다. 인코더(211)는 픽처 내에 포함된 미리 정해진 수의 슬라이스를 인코딩하 였는지 여부를 확인한다. 아직 미리 정해진 수의 슬라이스를 인코딩하지 않은 경우, 인코더(211)는 아직 픽처 내의 모든 슬라이스를 인코딩하지 않은 것으로 판정하고, 처리는 단계 S127로 진행한다.
단계 S127에서, 슬라이스 카운팅부(213)는 슬라이스 카운터를 인크리먼트한다. 구체적으로, 인코더(211)는 다음 슬라이스의 인코딩 시작을 통지하는 정보를 슬라이스 카운팅부(213)에 공급한다. 슬라이스 카운팅부(213)는 슬라이스 카운터를 인크리먼트한다.
단계 S128에서, 인코더(211)는 슬라이스의 시작 위치를 결정한다. 구체적으로, 인코더(211)는 인코딩할 다음 슬라이스의 기록을 시작하는 위치를 결정한다. 인코더(211)는, 인코딩할 다음 슬라이스가 픽처의 첫 번째 슬라이스인 경우, 결정한 시작 위치의 클립의 선두로부터의 상대 어드레스를 나타내는 슬라이스 시작 위치 정보를 시작 위치 메모리(214)에 기억시킨다. 또, 인코더(211)는, 인코딩할 다음 슬라이스가 픽처의 첫 번째 슬라이스가 아닌 경우, 결정한 시작 위치의 픽처의 첫 번째 슬라이스로부터의 오프셋을 나타내는 슬라이스 시작 위치 정보를 시작 위치 메모리(214)에 기억시킨다.
단계 S129에서, 스트림 출력 제어부(216)는 슬라이스의 시작 위치를 기록한다. 구체적으로, 인코더(211)는 다음 슬라이스의 인코딩 시작을 통지하는 정보를 시작 위치 기록 제어부(215)에 공급한다. 시작 위치 기록 제어부(215)는 슬라이스 카운팅부(213)로부터 슬라이스 카운터의 값을 나타내는 정보를 취득하고, 시작 위치 메모리(214)로부터 슬라이스 시작 위치 정보를 취득한다.
인코딩할 다음 슬라이스가 픽처의 첫 번째 슬라이스인 경우, 스트림 출력 제어부(216)는 시작 위치 기록 제어부(215)의 제어하에, 스트림용 메모리(202)에 기억되어 있는 인코딩중인 픽처에 대응하는 슬라이스 위치 정보에, 슬라이스 시작 위치 정보의 값을 슬라이스 시작 어드레스로서 기록한다. 시작 위치 기록 제어부(215)의 제어하에, 스트림 출력 제어부(216)에서는 인코딩중인 픽처에 대응하는 슬라이스 시작 위치 정보 내의 첫 번째 개별 정보에, 슬라이스 카운터의 값을 슬라이스 번호로서 기록하고, 0(영)을 오프셋으로 기록한다.
또, 인코딩할 다음 슬라이스가 픽처의 첫 번째 슬라이스가 아닌 경우, 시작 위치 기록 제어부(215)의 제어하에, 스트림 출력 제어부(216)에서는 인코딩중인 픽처에 대응하는 슬라이스 시작 위치 정보 다음에 오는 인코딩할 슬라이스에 대응하는 개별 정보에, 슬라이스 카운터의 값을 슬라이스 번호로서 기록하고, 슬라이스 시작 위치 정보의 값을 오프셋으로 기록한다.
단계 S130에서, 인코더(211)는 슬라이스층 이하의 층을 인코딩한다. 인코더(211)는 인코딩한 데이터를 스트림 출력 제어부(216)에 공급한다. 스트림 출력 제어부(216)는 취득한 데이터를 스트림용 메모리(202)에 기억시킨다.
단계 S131에서, 시작 위치 기록 제어부(215)는 슬라이스의 데이터 길이를 기록한다. 구체적으로, 인코더(211)는 인코딩된 슬라이스의 데이터 길이를 나타내는 슬라이스 데이터 길이 정보를 시작 위치 메모리(214)에 기억시킨다. 인코더(211)는 또한 슬라이스의 인코딩이 종료된 것을 나타내는 정보를 시작 위치 기록 제어부(215)에 공급한다. 시작 위치 기록 제어부(215)는 시작 위치 메모리(214)로부터 슬라이스 데이터 길이 정보를 취득한다. 스트림 출력 제어부(216)는 시작 위치 기록 제어부(215)의 제어하에, 스트림용 메모리(202)에 기억되어 있는 인코딩중인 픽처에 대응하는 슬라이스 위치 정보 내의 인코딩된 슬라이스에 대응하는 개별 정보에, 슬라이스 데이터 길이 정보의 값을 데이터 길이로서 기록한다.
그 후, 처리는 단계 S126으로 복귀하고, 단계 S126에서 픽처 내의 모든 슬라이스가 인코딩될 때까지, 단계 S126 내지 S131의 처리가 반복 실행되어, 슬라이스를 인코딩한다.
단계 S126에서, 픽처 내에 포함된 미리 정해진 수의 슬라이스의 인코딩이 종료되면, 픽처 내의 모든 슬라이스를 인코딩하였다고 판정하고, 처리는 단계 S132로 진행한다.
단계 S132에서, 스트림 출력 제어부(216)는 픽처의 데이터 길이를 기록한다. 구체적으로, 인코더(211)는 인코딩된 픽처의 데이터 길이를 나타내는 픽처 데이터 길이 정보를 시작 위치 메모리(214)에 기억시킨다. 또, 인코더(211)는 픽처의 인코딩이 종료된 것을 나타내는 정보를 시작 위치 기록 제어부(215)에 공급한다. 시작 위치 기록 제어부(215)는 시작 위치 메모리(214)로부터 픽처 데이터 길이 정보를 취득한다. 스트림 출력 제어부(216)는 시작 위치 기록 제어부(215)의 제어하에, 스트림용 메모리(202)에 기억되어 있는 인코딩중인 GOP에 대응하는 픽처 위치 정보 내의 인코딩된 픽처에 대응하는 개별 정보에, 픽처 데이터 길이 정보의 값을 데이터 길이로서 기록한다.
단계 S133에서, 슬라이스 카운팅부(213)는 슬라이스 카운터를 리셋한다. 구 체적으로, 인코더(211)는 픽처의 인코딩이 종료된 것을 나타내는 정보를 슬라이스 카운팅부(213)에 공급한다. 슬라이스 카운팅부(213)는 슬라이스 카운터를 리셋한다.
그 후, 처리는 단계 S121으로 복귀하고, 단계 S121에서 GOP 내의 모든 픽처가 인코딩된 것으로 판정될 때까지, 단계 S121 내지 S133의 처리가 반복 실행되어, GOP 내의 모든 픽처가 인코딩된다.
단계 S121에서, 인코딩중인 GOP에 포함될 픽처의 인코딩이 종료되면, GOP 내의 모든 픽처를 인코딩하였다고 판정하고, 처리는 단계 S134로 진행한다.
단계 S134에서, 스트림 출력 제어부(216)는 결과로 생긴 영상 스트림을 출력하고, 픽처층 이하의 인코딩 처리는 종료한다. 구체적으로, 예를 들면 스트림 출력 제어부(216)는, 스트림용 메모리(202)의 데이터량이 소정의 임계값을 넘는 경우, 스트림용 메모리(202)에 기억되어 있는 인코딩된 영상 스트림을, 버스(130) 및 인터페이스(129-3)를 통해 드라이브(112)에 공급한다. 드라이브(112)는 탈착 가능한 매체(116)에 영상 스트림을 기록한다.
다음에, 도 13 및 도 14에 도시된 흐름도를 참조하여, 인코딩 유닛(201)에 의해 인코딩된 영상 스트림을 디코딩 유닛(251)에 의해 디코딩하는 경우에 수행되는 디코딩 처리를 설명한다. 이 처리는, 디코딩 제어부(264)가 마우스(114) 또는 키보드(115)를 사용하여 사용자가 입력한 디코딩 지시를 인터페이스(129-1) 및 버스(130)를 통해 취득한 경우에 시작된다. 또, 탈착 가능한 매체(116)에 기록되어 있는 영상 스트림을 디코딩하는 경우를 이하에 설명한다. 이하의 설명에서, 도 1 의 우측에 나타낸 바와 같이, 각 픽처에 대하여, 슬라이스는 가장 위의 슬라이스로부터 차례로 디코더(265)에 의해 하나씩 병렬로 디코딩된다.
단계 S151에서, 도 4의 단계 S1와 마찬가지로 영상 스트림이 모두 디코딩되었는지 여부를 판정된다. 아직 영상 스트림이 모두 디코딩되지 않은 것으로 판정된 경우, 처리는 단계 S152로 진행한다.
도 4의 단계 S2와 마찬가지로 단계 S152에서, 디코딩될 영상 스트림의 시퀀스층이 탈착 가능한 매체(116)로부터 판독되어, 시퀀스층이 디코딩된다.
단계 S153에서, 도 4의 단계 S5와 마찬가지로, 모든 GOP가 디코딩되었는지 여부를 판정한다. 모든 GOP가 디코딩되지 않은 것으로 판정된 경우, 처리는 단계 S154로 진행한다
도 4의 단계 S6와 마찬가지로, 디코딩할 다음 GOP가 탈착 가능한 매체(116)로부터 판독되고, 판독된 GOP의 GOP층이 디코딩된다.
단계 S155에서, 스트림 해석부(262)는 픽처 위치 정보를 추출한다. 구체적으로, 스트림 해석부(262)는 단계 S154에서 디코딩한 GOP층의 사용자 데이터 필드에 기록되어 있는 픽처 위치 정보를 추출한다. 스트림 해석부(262)는 추출한 픽처 위치 정보를 시작 위치 디코딩부(271)에 공급한다.
도 4의 단계 S7과 마찬가지로 단계 S156에서, G0P 내의 모든 픽처가 디코딩되었는지 여부를 판정한다. 아직 GOP 내의 모든 픽처가 디코딩되지 않은 것으로 판정된 경우, 처리는 단계 S157로 진행한다.
단계 S157에서, 스트림 판독 제어부(261)는 디코딩할 다음 픽처의 픽처층을 판독한다. 구체적으로, 디코딩 제어부(264)는 픽처 번호를 지정함으로써 디코딩할 다음 픽처의 시작 위치의 검출을 지시하는 시작 위치 검출 지시 정보를, 시작 위치 디코딩부(271)에 공급한다. 시작 위치 디코딩부(271)는 픽처 위치 정보에 기초하여, 지정된 픽처 번호에 대응하는 픽처의 시작 위치를 검출한다. 시작 위치 디코딩부(271)는 검출한 픽처의 시작 위치를 나타내는 정보를 디코딩 제어부(264)에 공급한다. 디코딩 제어부(264)는 시작 위치 디코딩부(271)에 의해 검출된 픽처의 시작 위치로부터 픽처층의 판독을 지시하는 정보를 스트림 판독 제어부(261)에 공급한다. 스트림 판독 제어부(261)는 지정된 시작 위치에서 시작되는 디코딩할 다음 픽처의 픽처층을, 스트림용 메모리(152)에 기억되어 있는 GOP로부터 판독한다. 스트림 판독 제어부(261)은 판독한 픽처층을 스트림 해석부(262)에 공급한다.
도 4의 단계 S9와 마찬가지로 단계 S158에서, 픽처층이 디코딩된다.
단계 S159에서, 스트림 해석부(262)는 슬라이스 위치 정보를 추출한다. 구체적으로, 스트림 해석부(262)는 단계 S158에서 디코딩한 픽처층의 사용자 데이터 필드에 기록되어 있는 슬라이스 위치 정보를 추출한다. 스트림 해석부(262)는 추출한 슬라이스 위치 정보를 시작 위치 디코딩부(271)에 공급한다.
단계 S160에서, 시작 위치 디코딩부(271)는 디코딩을 시작하는 위치를 검출한다. 구체적으로, 디코딩 제어부(264)는 슬라이스 번호를 지정함으로써, 각 디코더(265)가 디코딩할 다음 슬라이스의 시작 위치의 검출을 지시하는 시작 위치 검출 지시 정보를 시작 위치 디코딩부(271)에 공급한다. 시작 위치 디코딩부(271)는 슬라이스 위치 정보에 기초하여, 지정된 슬라이스 번호에 따라 슬라이스의 시작 위치 를 검출한다. 시작 위치 디코딩부(271)는 검출한 각 슬라이스의 시작 위치를 나타내는 정보를 디코딩 제어부(264)에 공급한다.
단계 S161에서, 디코딩 제어부(264)는 디코딩의 시작을 지시한다. 구체적으로, 디코딩 제어부(264)는 단계 S160에서 검출된 시작 위치에서 시작하는 각 슬라이스를 각 디코더(265)에 공급할 것을 지시하는 정보를 스트림 판독 제어부(261)에 공급한다. 디코딩 제어부(264)는 다음 슬라이스의 디코딩 시작을 지시하는 정보를 디코더(265)에 공급한다.
단계 S162에서, 디코더(265)는 디코딩을 시작한다. 구체적으로, 스트림 판독 제어부(261)는 디코딩 제어부(264)에 의해 지정된 시작 위치에서 시작되는 슬라이스를 스트림용 메모리(152)로부터 판독하고, 판독한 슬라이스를 디코더(265)에 공급한다. 디코더(265)는 공급받은 슬라이스의 디코딩을 시작한다. 단계 S162에서 시작한 슬라이스의 디코딩이 종료한 경우, 디코더(265)는, 디코딩이 종료한 것을 나타내는 정보를 디코딩 제어부(264)에 공급하고, 디코딩한 데이터를 기저대역 출력 제어부(266)에 공급한다. 기저대역 출력 제어부(266)은 공급받은 데이터를 기저대역용 메모리(153)에 기억시킨다.
단계 S163에서, 도 5의 단계 S13와 마찬가지로, 에러의 발생 여부를 판정한다. 에러가 발생하지 않은 것으로 판정된 경우, 처리는 단계 S164로 진행한다.
단계 S164에서, 디코딩 제어부(264)는 디코딩을 종료한 디코더(265)가 있는지 여부를 판정한다. 디코딩 제어부(264)는, 디코딩을 종료한 것을 나타내는 정보를 어느 디코더(165)로부터도 취득하지 않은 경우, 디코딩을 종료한 디코더(265)가 없는 것으로 판정하고, 처리는 단계 S163으로 복귀한다. 단계 S163에서, 에러의 발생 여부가 판정된다. 단계 S164에서 디코딩을 종료한 디코더(265)가 있는 것으로 판정될 때까지, 단계 S163 및 S164의 판정 처리가 반복 실행된다.
단계 S164에서, 디코딩 제어부(264)는, 디코딩을 종료한 것을 나타내는 정보를 적어도 하나의 디코더(165)로부터 취득한 경우, 디코딩을 종료한 디코더(265)가 존재하는 것으로 판정하고, 처리는 단계 S165로 진행한다.
단계 S165에서, 디코딩 제어부(264)는, 디코딩을 종료한 디코더(265)가 디코딩중인 픽처에 할당된 슬라이스를 모두 디코딩하였는지 여부를 판정한다. 디코딩중인 픽처에 할당된 슬라이스가 아직 모두 디코딩되지 않은 것으로 판정된 경우, 처리는 단계 S160으로 복귀하고, 단계 S160 및 후속하는 단계가 실행된다. 즉, 디코딩을 종료한 디코더(265)는, 디코딩중인 픽처에 할당되어 있는 다음 슬라이스를 디코딩한다.
단계 S163에서, 에러가 발생한 것으로 판정된 경우, 처리는 단계 S166으로 진행한다.
단계 S166에서, 디코딩 제어부(264)는 디코딩을 재개하는 위치를 결정한다. 디코딩 제어부(264)는, 예를 들면 디코딩을 실패한 슬라이스 다음에 오는 슬라이스를 디코딩의 재개 위치로 결정한다. 그 후, 처리는 단계 S160으로 복귀하고, 단계 S160 및 후속하는 단계가 실행된다. 즉, 에러가 발생한 디코더(265)는, 예러가 발생한 슬라이스의 다음 슬라이스를 디코딩한다.
단계 S165에서, 디코딩을 종료한 디코더(265)가, 디코딩중인 픽처에 할당된 슬라이스를 모두 디코딩한 것으로 판정된 경우, 처리는 단계 S167로 진행한다.
단계 S167에서, 모든 디코더(265)의 처리가 종료하였는지 여부를 판정한다. 구체적으로, 디코딩 제어부(264)는 디코딩중인 픽처에 할당된 슬라이스의 디코딩을 아직 종료하지 않는 디코더(265)의 존재 여부를 판정한다. 할당된 슬라이스의 디코딩을 종료하지 않는 디코더(265)가 있는 경우, 디코딩 제어부(264)는 아직 모든 디코더(265)의 처리가 종료하지 않은 것으로 판정하고, 처리는 단계 S163으로 복귀하고, 단계 S163 및 후속하는 단계가 실행된다. 즉, 디코딩중인 픽처에 할당된 슬라이스의 디코딩을 종료한 각 디코더(265)는 대기 상태로 둔 채로, 할당된 슬라이스의 디코딩을 종료하지 않는 각 디코더(265)의 처리가 계속하여 실행된다.
단계 S167에서, 모든 디코더(265)의 처리를 종료했다고 판정된 경우, 처리는 단계 S168로 진행한다.
단계 S168에서, 도 5의 단계 S17와 마찬가지로, 1 프레임의 데이터가 출력되고, 처리는 단계 S156로 복귀한다.
단계 S156에서, 아직 GOP 내의 모든 픽처가 디코딩되지 않은 것으로 판정된 경우, 처리는 단계 S157으로 진행하고, 단계 S157 및 후속하는 단계가 실행된다. 즉, 다음 픽처가 디코딩된다.
단계 S156에서, GOP 내의 모든 픽처가 디코딩된 것으로 판정된 경우, 처리는 단계 S153로 복귀한다.
단계 S153에서, 아직 모든 GOP가 디코딩되지 않은 것으로 판정된 경우, 처리는 단계 S154으로 진행하고, 단계 S154 및 후속하는 단계가 실행된다. 즉, 다음 GOP가 디코딩된다.
단계 S153에서, 모든 GOP가 디코딩된 것으로 판정된 경우, 처리는 단계 S151로 복귀한다.
단계 S151에서, 아직 영상 스트림이 모두 디코딩되지 않은 것으로 판정된 경우, 처리는 단계 S152으로 진행하고, 단계 S152 및 후속하는 단계가 실행된다. 즉, 영상 스트림의 다음의 시퀀스층이 디코딩된다.
단계 S151에서, 영상 스트림이 모두 디코딩되었다고 판정된 경우, 디코딩 처리는 종료한다.
다음에, 도 15의 흐름도를 참조하여, 영상 스트림을 선두에서부터 디코딩하지 않고, 사용자의 지시에 기초하여 지정된 픽처로부터 디코딩을 시작하는 경우, 디코딩 유닛(251)에 의해 실행되는 디코딩 시작 위치 검출 처리를 이하에 설명한다.
단계 S181에서, 디코딩 제어부(164)는 디코딩을 시작하는 위치를 검출한다. 구체적으로, 디코딩 제어부(164)는 사용자에 의해 지정된 시작 위치의 픽처의 픽처 번호를 검출한다.
단계 S182에서, 도 4의 단계 S2와 마찬가지로, 시퀀스층이 디코딩된다.
단계 S183에서, 도 4의 단계 S6과 마찬가지로, 디코딩을 시작하는 픽처를 포함하는 GOP의 GOP층이 디코딩된다.
단계 S184에서, 도 13의 단계 S155와 마찬가지로, 디코딩을 시작하는 픽처를 포함하는 GOP의 픽처 위치 정보가 추출된다.
단계 S185에서, 도 13의 단계 S157과 마찬가지로, 픽처 위치 정보에 기초하여 디코딩을 시작하는 픽처의 픽처층이 판독된다.
단계 S186에서, 도 13의 단계 S158와 마찬가지로, 디코딩을 시작하는 픽처의 픽처층이 디코딩된다.
단계 S187에서, 도 13의 단계 S159와 마찬가지로, 디코딩을 시작하는 픽처의 슬라이스 정보가 추출된다.
단계 S188에서, 도 13의 단계 S160과 마찬가지로, 슬라이스 위치 정보에 기초하여, 디코더(265)가 디코딩을 시작하는 슬라이스의 위치가 검출된다.
단계 S189에서, 도 13의 단계 S161와 마찬가지로, 단계 S188에서 검출된 시작 위치에서 시작되는 각 슬라이스를 각 디코더(265)에 공급할 것을 지시하는 정보가 스트림 판독 제어부(261)에 공급되고, 단계 S188에 검출된 시작 위치에서 시작되는 슬라이스의 디코딩을 시작할 것을 각 디코더(265)는 지시받는다. 그 후에 디코딩 시작 위치 검출 처리는 종료한다.
전술한 바와 같이, 스트림 해석부(262)가 픽처층을 디코딩하는 경우, 영상 스트림 상의 픽처층의 시작 위치(시작 코드)를 검색하지 않고, 픽처 위치 정보에 기초하여, 신속히 디코딩의 시작 위치를 검출한다. 또, 각 디코더(465)가 슬라이스를 디코딩하는 경우, 영상 스트림 상의 슬라이스층의 시작 위치(시작코드)를 검색하지 않고, 슬라이스 위치 정보에 기초하여, 신속히 디코딩 시작 위치를 검출한다. 따라서, 디코딩 시작 위치를 검출하는 시간이 단축되어 영상 스트림의 디코딩을 고속화할 수 있다. 마찬자지로, 분할 디코딩하지 않고 하나의 디코더를 사용하 여 디코딩을 수행하는 경우에도, 디코딩 시작 위치를 검출하는 시간이 단축되어 영상 스트림의 디코딩을 고속화할 수 있다.
픽처 위치 정보 및 슬라이스 위치 정보를, 영상 스트림 내에 기록하지 않고 , 영상 스트림의 파일과 상이한 파일에 기록할 수도 있다. 도 16 내지 도 23을 참조하여, 픽처 위치 정보 및 슬라이스 위치 정보를, 영상 스트림의 파일과 상이한 파일에 픽처 위치 정보 및 슬라이스 위치 정보를 기록하는 경우의 본 발명의 실시예를 이하에 설명한다.
도 16은 소정의 프로그램을 실행하는 CPU(121)로 구현되는 인코딩 유닛(301)의 기능 구성의 일례를 나타낸 블록도이다. 인코딩 유닛(301)은 G0P 카운팅부(321)를 포함하는 것이 도 7의 인코딩 유닛(201)과 상이하다. 도 16에서, 도 7에 도시한 것과 대응하는 부분은, 그 도면부호의 끝 2자리를 도 7의 도면부호의 끝 2자리와 동일하게 부여하였다. 따라서, 동일한 기능의 설명에 대해서는, 그 설명이 반복되므로 생략한다.
인코딩 유닛(301)은 인코더(311), 픽처 카운팅부(312), 슬라이스 카운팅부(313), 시작 위치 메모리(314), 시작 위치 기록 제어부(315), 스트림 출력 제어부(316), 및 G0P 카운팅부(321)를 포함한다.
인코더(311)는 도 7의 인코더(211)의 처리에 더해, 영상 스트림의 인코딩을 시작하는 전에, 인코딩함으로써 생성된 영상 스트림의 클립을 기록 매체[예를 들면, 탈착 가능한 매체(116) 또는 HDD(124)]에 기록하기 시작하는 위치를 나타내는 정보(이하, "클립 시작 위치 정보"라고 한다)를, 시작 위치 메모리(314)에 기억시 킨다. 또, 인코더(311)는 영상 스트림의 인코딩을 시작할 때, 영상 스트림의 인코딩 시작을 통지하는 정보를 시작 위치 기록 제어부(315)에 공급한다. GOP(GOP층)의 인코딩을 시작할 때마다, 인코더(311)는 GOP의 인코딩 시작을 통지하는 정보를 GOP 카운팅부(321) 및 시작 위치 기록 제어부(315)에 공급한다.
GOP 카운팅부(321)는 클립 내의 GOP의 수를 카운팅한다. 구체적으로, GOP 카운팅부(321)는 G0P 카운터를 관리한다. 인코더(311)가 GOP 카운팅부(321)에 GOP의 인코딩 시작을 통지하는 정보가 공급할 때마다, GOP 카운팅부(321)는 GOP 카운터의 값을 인크리먼트한다.
시작 위치 기록 제어부(315)는 시작 위치 메모리(314)에 기록되어 있는 픽처 시작 위치 정보, 슬라이스 시작 위치 정보, 픽처 데이터 길이 정보, 슬라이스 데이터 길이 정보, 및 클립 시작 위치 정보 중 하나를 판독한다. 시작 위치 기록 제어부(315)는 또한 픽처 카운터의 값을 나타내는 정보를 취득한다. 시작 위치 기록 제어부(315)는 슬라이스 카운터의 값을 나타내는 정보를 슬라이스 카운팅부(313)로부터 취득한다. 시작 위치 기록 제어부(315)는 GOP 카운터의 값을 나타내는 정보를 GOP 카운팅부(321)로부터 취득한다.
시작 위치 기록 제어부(315)는 클립 내의 각 픽처 및 각 슬라이스의 위치를 나타내는 정보(이하, "클립 위치 정보"라고 한다)를 생성한다. 시작 위치 기록 제어부(315)는 필요에 따라 스트림용 메모리(202)에 클립 위치 정보를 일시적으로 기억시키고, 클립 위치 정보를 갱신한다.
스트림 출력 제어부(316)는 인코더(311)에 의해 인코딩된 영상 스트림을 스 트림용 메모리(202)에 일시적으로 기억시킨다. 스트림 출력 제어부(316)는 트림용 메모리(202)에 기억되어 있는 영상 스트림 또는 클립 위치 정보를 판독하고, 판독한 영상 스트림 또는 클립 위치 정보를 외부[예를 들면, 버스(130)를 통해 드라이브(112) 또는 HDD(D124)]에 출력한다.
도 17은 소정의 프로그램을 실행하는 CPU(121)로 구현되는 디코딩 유닛(351)의 기능 구성의 일례를 나타낸 블록도이다. 도 17에서, 도 8에 도시한 것과대응하는 부분은, 그 도면부호의 끝 2자리를 도 8의 도면부호의 끝 2자리와 동일하게 부여하였다. 따라서, 동일한 기능의 설명에 대해서는, 그 설명이 반복되므로 생략한다.
디코딩 유닛(351)은 스트림 판독 제어부(361), 스트림 해석부(362), 디코딩 제어부(364), 디코더(365-1 내지 365-4), 기저대역 출력 제어부(366), 및 시작 위치 검출부(371)를 포함한다.
디코딩 제어부(364)는, 도 8의 디코딩 제어부(264)의 처리에 더해, 디코딩할 영상 스트림의 클립에 대응하는 클립 위치 정보의 취득을 지시하는 정보를 시작 위치 검출부(371)에 공급한다.
시작 위치 검출부(371)는 디코딩할 영상 스트림의 클립에 대응하는 클립 위치 정보를, 클립이 기록되어 있는 기록 매체로부터 판독한다. 시작 위치 검출부(371)는 클립 위치 정보에 기초하여, 디코딩 제어부(364)로부터 시작 위치 검출 지시 정보에 의해 지정된 픽처 또는 슬라이스의 시작 위치를 검출한다. 시작 위치 검출부(371)는 검출한 픽처 또는 슬라이스의 시작 위치를 나타내는 정보를 디코딩 제어부(364)에 공급한다.
디코더(365-1 내지 365-4)를 별개로 구별할 필요가 없는 경우, 단지 디코더(365)라고 한다.
도 18은 클립 위치 정보의 데이터 구성의 일례를 나타낸 도면이다. 클립 위치 정보는 영상 스트림의 클립마다 기록되고, 클립 번호, 클립 시작 어드레스, 픽처 위치 정보, 및 슬라이스 위치 정보를 포함한다.
클립 번호는 클립 위치 정보에 대응하는 클립을 식별하기 위해 사용되며, 기록 매체에 기록되어 있는 영상 스트림의 클립을 고유하게 식별하기 위해 할당된다.
클립 시작 어드레스는, 클립이 기록 매체[예를 들면, 탈착 가능한 매체(116) 또는 HDD(124)]에 기록되는 위치의 선두의 어드레스를 나타낸다.
도 19를 참조하여 후술하는 바와 같이, 픽처 위치 정보는 클립에 포함되는 각 GOP에 대하여, GOP 내의 픽처의 위치를 나타내는 정보를 포함한다.
도 20을 참조하여 후술하는 바와 같이, 슬라이스 위치 정보는 클립에 포함되는 각 픽처에 대하여, 픽처 내의 각 슬라이스의 위치를 나타내는 정보를 포함한다.
도 19는, 도 18의 클립 위치 정보에 포함된 픽처 위치 정보의 데이터 구성의 일례를 나타낸 도면이다. 클립 위치 정보의 픽처 위치 정보는, GOP 번호가 추가되어 있는 것이 도 10에 도시된 픽처 위치 정보와 상이하다. GOP 번호는 클립 내의 GOP를 고유하게 식별하기 위해 할당되며, 픽처 위치 정보에 대응하는 GOP의 GOP 번호를 나타낸다.
도 20은 도 18에 도시된 클립 위치 정보에 포함된 슬라이스 위치 정보의 데 이터 구성의 일례를 나타낸 도면이다. 클립 위치 정보의 슬라이스 위치 정보는, 픽처 번호가 추가되어 있는 것이 도 11에 도시된 슬라이스 위치 정보와 상이하다. 픽처 번호는 슬라이스 위치 정보에 대응하는 픽처의 픽처 번호를 나타낸다.
다음에, 도 21에 도시한 흐름도를 참조하여, 인코딩 유닛(301)에 의해 실행되는 인코딩 처리를 이하에 설명한다. 이 처리는, 예를 들면 인코더(311)가 마우스(114) 또는 키보드(115)를 사용하여 사용자가 입력한 인코딩의 지시를, 인터페이스(129-1) 및 버스(130)를 통해 취득한 경우, 시작된다. 인코딩 전의 기저대역 신호인 영상 스트림이, 외부 영상 기록/재생 장치(113-1)로부터 인터페이스(129-2) 및 버스(130)를 통해 인코더(311)에 입력된 후, 인코딩된 영상 스트림이 탈착 가능한 매체(116)에 기록되는 경우의 예를 이하에 설명한다.
단계 S201에서, 인코더(311)는 클립의 시작 위치를 결정한다. 구체적으로, 인코더(311)는 인코딩할 영상 스트림의 클립을 탈착 가능한 매체(116)에 기록하기 위한 시작 위치를 결정한다. 인코더(311)는 결정한 시작 위치를 나타내는 클립 시작 위치 정보를 시작 위치 메모리(314)에 기억시킨다.
단계 S202에서, 시작 위치 기록 제어부(315)는 클립 시작 위치를 기록한다. 구체적으로, 인코더(311)는 영상 스트림 인코딩의 시작을 통지하는 정보를 시작 위치 기록 제어부(315)에 공급한다. 시작 위치 기록 제어부(315)는 시작 위치 메모리(314)로부터 클립 시작 위치 정보를 취득한다. 시작 위치 기록 제어부(315)는 클립 위치 정보를 생성한다. 시작 위치 기록 제어부(315)는 인코딩을 시작할 영상 스트림의 클립의 클립 번호를 클립 위치 정보에 기록한다. 시작 위치 기록 제어 부(315)는 또한 클립 시작 위치 정보의 값을 클립 위치 정보의 클립 시작 어드레스ㄹ로서 기록한다. 시작 위치 기록 제어부(315)는 클립 위치 정보를 스트림용 메모리(152)에 기억시킨다.
단계 S203에서, 도 11의 단계 S101와 마찬가지로, 영상 스트림이 모두 인코딩되었는지 여부가 판정된다. 모든 영상 스트림이 인코딩되지 않은 것으로 판정된 경우, 처리는 단계 S204로 진행한다.
단계 S204에서, 도 11의 단계 S102와 마찬가지로, 시퀀스층을 변경하는지 여부가 판정된다. 시퀀스층을 변경하는 것으로 판정된 경우, 처리는 단계 S205로 진행한다.
단계 S205에서, 도 11의 단계 S103와 마찬가지로, 시퀀스층이 인코딩 된다.
단계 S204에서, 시퀀스층을 변경하지 않는 것으로 판정된 경우, 단계 S205의 처리는 건너뛰고, 처리는 단계 S206으로 진행한다.
단계 S206에서, GOP 카운팅부(321)는 GOP 카운터를 인크리먼트한다. 구체적으로, 인코더(311)는 다음 GOP의 인코딩 시작을 통지하는 정보를 GOP 카운팅부(321)에 공급한다. GOP 카운팅부(321)는 GOP 카운터를 인크리먼트한다.
단계 S207에서, 시작 위치 기록 제어부(315)는 GOP 번호를 기록한다. 구체적으로, 인코더(311)는 다음 GOP의 인코딩 시작을 통지하는 정보를 시작 위치 기록 제어부(315)에 공급한다. 시작 위치 기록 제어부(315)는 G0P 카운팅부(321)로부터 GOP 카운터의 값을 나타내는 정보를 취득한다. 시작 위치 기록 제어부(315)는 스트림용 메모리(202)에 기억되어 있는 클립 위치 정보 다음에 오는 인코딩할 GOP에 대응하는 픽처 위치 정보에, GOP 카운터의 값을 GOP 번호로서 기록한다.
단계 S208에서, 도 11의 단계 S104와 마찬가지로, GOP층이 인코딩된다.
단계 S209에서, 도 12를 참조하여 전술한 픽처층 이하의 인코딩 처리를 한다. 도 7의 인코더(211)에 의해 실행되는 픽처층 이하의 인코딩 처리와는 다르게, 픽처 위치 정보 및 슬라이스 위치 정보가 스트림용 메모리(202)에 기억되어 있는 클립 위치 정보에 기록된다.
그 후, 처리는 단계 S203으로 복귀하고, 단계 S203에서 영상 스트림을 모두 인코딩하였다고 판정될 때까지, 단계 S203 내지 S209의 처리가 반복하여 실행된다.
단계 S203에서, 영상 스트림이 모두 인코딩된 것으로 판정되면, 처리는 단계 S210으로 진행한다.
단계 S210에서, 스트림 출력 제어부(316)는 클립 위치 정보를 출력하고, 인코딩 처리는 종료한다. 구체적으로, 스트림 출력 제어부(316)는 스트림용 메모리(202)에 기억되어 있는 클립 위치 정보를 판독하고, 판독한 클립 위치 정보를 버스(130) 및 인터페이스(129-3)를 통해 드라이브(112)에 공급한다. 드라이브(112)는 탈착 가능한 매체(116) 내의 대응하는 클립과는 다른 파일로서 클립 위치 정보를 기록한다.
다음에, 도 22 및 도 23에 도시된 흐름도를 참조하여, 디코딩 유닛(351)에 의해 실행되는 디코딩 처리를 이하에 설명한다. 도 22 및 도 23에 도시된 흐름도는, 단계 S251의 처리가 추가되어 있는 것이 도 13 및 도 14의 흐름도와 다르다.
즉, 단계 S251에서, 시작 위치 검출부(371)는 클립 위치 정보를 취득한다. 구체적으로, 디코딩 제어부(364)는 디코딩할 영상 스트림의 클립에 대응하는 클립 위치 정보의 취득을 지시하는 정보를 시작 위치 검출부(371)에 공급한다. 시작 위치 검출부(371)의 제어하에, 드라이브(112)는 클립 위치 정보를 탈착 가능한 매체(116)로부터 판독하고, 판독한 클립 위치 정보를 인터페이스(129-3) 및 버스(130)를 통해 시작 위치 검출부(371)에 공급한다.
또, 도 22 및 도 23의 흐름도에서, 도 13 및 도 14의 흐름도와 비교해, 영상 스트림에 기록되어 있는 픽처 위치 정보 및 슬라이스 위치 정보를 추출할 필요가 없기 때문에, 단계 S155 및 S159에 상당하는 단계는 삭제되어 있다. 따라서, 픽처 위치 정보 및 슬라이스 위치 정보의 추출에 필요한 시간이 단축된다.
그 외의 단계는, 도 13 및 도 14를 참조하여 설명한 것과 마찬가지이다. 따라서, 그 설명은 반복이 되므로 생략한다. 픽처층의 디코딩 시작 위치 및 디코더(365)의 디코딩 시작 위치가 클립 위치 정보에 기초하여 검출된다.
도 3 내지 도 6을 참조하여 설명한 처리와, 도 7 내지 도 15 및 도 16 내지 도 21을 참조하여 설명한 처리를 조합함으로써, 즉 영상 스트림 상에서 연속된 슬라이스를 포함하도록 분할 디코딩 영역을 설정하고, 픽처 위치 정보와 슬라이스 위치 정보를 기록함으로써, 영상 스트림의 디코딩을 더욱 고속화할 수 있다. 도 3 내지 도 6을 참조하여 설명한 처리와, 도 7 내지 도 15를 참조하여 설명한 처리를 조합한 경우의 실시예를 이하에 설명한다. 영상 스트림 인코딩은 도 7, 도 11 및 도 12를 참조하여 설명한 처리와 마찬가지이다. 따라서, 그 설명은 반복되므로 생략한다.
도 24는 소정의 프로그램을 실행하는 CPU(121)로 구현되는 디코딩 유닛(451)의 기능 구성의 일례를 나타낸 블록도이다. 디코딩 유닛(451)은 디코딩 영역 설정부(463)를 포함하는 점이 도 8의 디코딩 유닛(251)과 다르다. 도 24에서, 도 8에 도시된 것과 대응하는 부분은, 그 도면부호의 끝 2자리를 도 8의 도면부호의 끝 2자리와 동일하게 부여하였다. 따라서, 동일한 기능의 설명에 대해서는, 그 설명이 반복되므로 생략한다.
디코딩 유닛(451)은 스트림 판독 제어부(461), 스트림 해석부(462), 디코딩 영역 설정부(463), 디코딩 제어부(464), 디코더(465-1 내지 465-4), 기저대역 출력 제어부(466), 및 시작 위치 검출부(471)를 포함한다.
스트림 해석부(462)는 영상 스트림의 픽처층까지의 층을 디코딩하고, 디코딩하여 얻은 정보를 디코딩 제어부(464)에 공급한다. 스트림 해석부(462)는 또한 영상 스트림의 시퀀스층을 디코딩하여 얻은 영상 스트림의 화상 크기를 나타내는 정보를 디코딩 영역 설정부(463)에 공급한다. 스트림 해석부(462)는 영상 스트림에 기록되어 있는 픽처 위치 정보 및 슬라이스 위치 정보를 추출하고, 추출한 픽처 위치 정보 및 슬라이스 위치 정보를 시작 위치 검출부(471)에 공급한다.
도 3의 디코딩 영역 설정부(163)와 마찬가지로, 디코딩 영역 설정부(463)는 분할 디코딩 영역을 설정한다. 디코딩 영역 설정부(463)는 설정한 분할 디코딩 영역을 나타내는 정보를 디코딩 제어부(464)에 공급한다.
도 8의 디코딩 제어부(264)의 처리에 더해, 디코딩 제어부(464)는 분할 디코딩 영역에 기초하여, 디코더(465-1 내지 465-4)가 디코딩할 슬라이스를 결정한다.
디코더(465-1 내지 465-4)를 별개로 구별할 필요가 없는 경우, 단지 디코더(465)라고 한다.
다음에, 도 25 및 도 26에 도시된 흐름도를 참조하여, 디코딩 유닛(451)에 의해 실행되는 디코딩 처리를 이하에 설명한다.
도 4의 단계 S1과 마찬가지로, 단계 S351에서, 영상 스트림이 모두 디코딩되었는지 여부가 판정된다. 영상 스트림이 모두 디코딩되지 않은 것으로 판정된 경우, 처리는 단계 S352로 진행한다.
도 4의 단계 S2와 마찬가지로, 단계 S352에서, 디코딩할 영상 스트림의 시퀀스층이 탈착 가능한 매체(116)로부터 판독되어, 시퀀스층이 디코딩된다.
도 4의 단계 S3과 마찬가지로, 단계 S353에서, 영상 스트림의 화상 크기가 검출된다.
도 4의 단계 S4와 마찬가지로, 단계 S354에서, 디코더(465)가 디코딩할 분할 디코딩 영역이 설정되고, 분할 디코딩 영역을 나타내는 정보가 디코딩 제어부(464)에 공급된다.
도 4의 단계 S5와 마찬가지로, 단계 S355에서, 모든 GOP가 디코딩되었는지 여부가 판정된다. 아직 모든 GOP가 디코딩되지 않은 것으로 판정된 경우, 처리는 단계 S356으로 진행한다
도 4의 단계 S6과 마찬가지로, 단계 S356에서, 디코딩할 다음 GOP가 탈착 가능한 매체(116)로부터 판독되어, 판독된 GOP의 GOP층이 디코딩된다.
도 13의 단계 S155와 마찬가지로, 단계 S357에서, 픽처 위치 정보가 추출되 고, 픽처 위치 정보는 시작 위치 검출부(471)에 공급된다.
도 4의 단계 S7과 마찬가지로, 단계 S358에서, G0P 내의 모든 픽처가 디코딩되었는지 여부가 판정된다. GOP 내의 모든 픽처가 디코딩되지 않은 것으로 판정된 경우, 처리는 단계 S359로 진행한다.
도 13의 단계 S157와 마찬가지로, 단계 S359에서, 디코딩할 다음 픽처의 픽처층이 판독되어, 픽처층이 스트림 해석부(462)에 공급된다.
도 4의 단계 S9와 마찬가지로, 단계 S360에서, 픽처층이 디코딩된다.
도 13의 단계 S159와 마찬가지로, 단계 S361에서, 슬라이스 위치 정보가 취득되어, 시작 위치 검출부(471)에 공급된다.
단계 S362에서, 디코딩 제어부(464)는, 시작 위치 검출부(471)는 분할 디코딩 영역의 시작 위치를 검출한다. 구체적으로, 디코딩할 다음 픽처에서 디코더(465)가 디코딩할 분할 디코딩 영역의 첫 번째 슬라이스의 슬라이스 번호를 지정함으로써, 분할 디코딩 영역의 시작 위치의 검출을 지시하는 시작 위치 검출 지시 정보를 시작 위치 검출부(471)에 공급한다. 시작 위치 검출부(471)는, 슬라이스 위치 정보에 기초하여, 지정된 슬라이스 번호에 대응하는 슬라이스의 시작 위치를 검출한다. 즉, 시작 위치 검출부(471)는 분할 디코딩 영역의 시작 위치를 검출한다. 시작 위치 검출부(471)은 검출한 시작 위치를 나타내는 정보를 디코딩 제어부(464)에 공급한다.
단계 S363에서, 디코딩 제어부(464)는 디코딩의 시작을 지시한다. 구체적으로, 디코딩 제어부(464)는 단계 S362에서 검출된 시작 위치에서 시작되는 각 분할 디코딩 영역에 포함된 슬라이스를 각 디코더(465)에 공급할 것을 지시하는 정보를 스트림 판독 제어부(461)에 공급한다. 또, 디코딩 제어부(464)는 다음 픽처의 디코딩 시작을 지시하는 정보를 디코더(465)에 공급한다.
단계 S364에서, 디코더(465)는 디코딩을 시작한다. 구체적으로, 스트림 판독 제어부(461)는 디코딩 제어부(464)에 의해 검출된 시작 위치에서 시작되는 각 분할 디코딩 영역에 포함된 슬라이스를 스트림용 메모리(152)로부터 판독한다. 각분할 디코딩 영역에 대해, 스트림 판독 제어부(461)는 판독한 슬라이스를, 분할 디코딩 영역의 디코딩이 할당된 하나의 디코더(465)에 공급한다. 디코더(465)는 분할 디코딩 영역 내의 첫 번째 슬라이스의 디코딩을 시작한다. 디코더(465)는 디코딩한 데이터를 차례로 기저대역 출력 제어부(466)에 공급한다. 기저대역 출력 제어부(466)는 공급받은 데이터를 기저대역용 메모리(153)에 기억시킨다.
도 5의 단계 S13와 마찬가지로, 단계 S365에서, 에러의 발생 여부가 판정된다. 에러가 발생한 것으로 판정된 경우, 처리는 단계 S366으로 진행한다.
단계 S366에서, 디코딩 제어부(464)는 디코딩을 재개할 위치를 결정한다. 디코딩 제어부(464)는, 예를 들면 디코딩을 실패한 슬라이스의 다음 슬라이스를 디코딩을 재개할 위치로 결정한다.
단계 S367에서, 디코더(465)는 디코딩을 재개한다. 구체적으로, 디코딩 제어부(464)는, 에러가 발생한 슬라이스의 다음에 오는 슬라이스에서 디코딩을 재개할 것을 지시하는 정보를, 에러가 발생한 디코더(465)에 공급한다. 디코더(465)는 지정된 슬라이스에서부터 디코딩을 재개한다.
단계 S365에서, 에러가 발생하지 않은 것으로 판정된 경우, 단계 S366 및 S367의 처리는 건너뛰고, 처리는 단계 S368로 진행한다.
도 5의 단계 S16와 마찬가지로, 단계 S368에서, 모든 디코더(465)의 처리가 종료하였는지 여부가 판정된다. 아직 모든 디코더(465)의 처리가 종료하지 않은 것으로 판정된 경우, 처리는 단계 S365로 복귀한다. 단계 S368에서, 모든 디코더(465)의 처리가 종료된 것으로 판정될 때까지, 단계 S365 내지 S368의 처리가 반복 실행된다.
단계 S368에서, 모든 디코더(465)의 처리가 종료된 것으로 판정된 경우, 처리는 단계 S369로 진행한다.
도 5의 단계 S17과 마찬가지로, 단계 S369에서, 1 프레임의 데이터가 출력된다. 그 후, 처리는 단계 S358로 복귀한다.
단계 S358에서, 아직 G0P 내의 모든 픽처를 디코딩하지 않은 것으로 판정된 경우, 처리는 단계 S359로 진행하고, 단계 S359 및 후속하는 단계의 처리가 실행된다. 즉, 다음의 픽처가 디코딩된다.
단계 S358에서, G0P 내의 모든 픽처가 디코딩된 것으로 판정된 경우, 처리는 단계 S355로 복귀한다.
단계 S355에서, G0P 내의 모든 픽처가 디코딩되지 않은 것으로 판정된 경우, 처리는 단계 S356으로 진행하고, 단계 S356 및 후속하는 단계의 처리가 실행된다. 즉, 다음 GOP가 디코딩된다.
단계 S355에서, 모든 G0P가 디코딩되었다고 판정된 경우, 처리는 단계 S351 로 복귀한다.
단계 S351에서, 영상 스트림을 전부 디코딩하지 않은 것으로 판정된 경우, 처리는 단계 S352로 진행하고, 단계 S352 및 후속하는 단계의 처리가 실행된다. 즉, 영상 스트림의 다음 시퀀스층이 디코딩된다.
단계 S351에서, 영상 스트림을 모두 디코딩한 것으로 판정된 경우, 디코딩 처리는 종료한다.
전술한 바와 같이, 스트림 해석부(462)가 픽처층을 디코딩하는 경우, 영상 스트림 상의 픽처층의 시작 위치(시작 코드)를 검색하지 않고, 픽처 위치 정보에 기초하여, 디코딩의 시작 위치를 신속하게 검출한다. 각 디코더(465)가 디코딩하는 경우, 각 프레임(픽처)에 대하여, 디코더(465)가 디코딩을 시작하는 위치로서, 각 분할 디코딩 영역의 시작 위치만을 검출할 필요가 있고, 영상 스트림 상의 슬라이스층의 시작 위치(시작 코드)를 검색하지 않고, 슬라이스 위치 정보에 기초하여 , 분할 디코딩 영역의 시작 위치를 신속하게 검출한다. 따라서, 디코딩 시작 위치를 검출하는 시간이 단축되어 영상 스트림의 디코딩을 고속화할 수 있다. 또한, 디코딩 처리를 분할하지 않고 하나의 디코더를 사용하는 디코딩하는 경우에도, 디코딩 시작 위치를 검출하는 시간이 단축되어 영상 스트림의 디코딩을 고속화할 수 있다.
또한, 도 3 내지 도 6을 참조하여 설명한 처리와, 도 16 내지 도 23을 참조하여 설명한 처리를 조합한 것은, 픽처 위치 정보 및 슬라이스 위치 정보가 클립위치 정보에 기록되어 있는 것을 제외하고, 도 24 내지 도 26을 참조하여 설명한 처 리와 거의 동일하므로, 설명하지 않는다.
또, 영상 스트림의 디코딩 처리를 더욱 복수의 스테이지로 분할하고, 스테이지로 분할한 디코딩 처리를 복수의 하드웨어를 병렬로 사용하여 수행함으로써, 디코딩 처리를 더욱 고속화할 수 있다.
도 27 내지 도 37을 참조하여, 디코딩 처리를 복수의 스테이지로 분할하고, 스테이지의 디코딩 처리를 복수의 하드웨어에 의해 병렬로 수행하는 경우의 실시예를 설명한다.
도 27은 디코딩 처리를 복수의 스테이지로 분할하고, 스테이지의 디코딩 처리를 복수의 하드웨어에 의해 병렬로 수행하는 AV 처리 시스템(501)의 일 실시예를 나타낸 블록도이다. 도 27에서, 도 2에 도시된 것과 대응하는 부분은 동일한 도면부호를 부여하고 있어, 그 설명은 반복되므로 하지 않는다.
도 2에 도시된 AV 처리 시스템(101)과 비교하여, AV 처리 시스템(501)은 드라이브(112), 외부 영상 기록/재생 장치(113-1 내지 113-n), 마우스(114), 및 키보드(115)를 포함하는 점이 동일하고, AV 처리 장치(1101) 대신에 AV 처리 장치(511)를 포함하는 점이 다르다.
AV 처리 장치(511)는 도 2의 AV 처리 장치(111)와 비교하여, CPU(l21), ROM(122), RAM(123), HDD(124), 신호 처리 유닛(125), 영상특수효과 음성믹싱 처리 유닛(126), 디스플레이(127), 스피커(128), 및 인터페이스(129-1 내지 129-3)을 포함하는 점이 동일하고, GPU(Graphics Processing Unit, 그래픽스 처리 유닛)(521)을 포함하는 점이 다르다. CPU(121), ROM(122), RAM(123), HDD(124), 신호 처리 유닛(125), 영상특수효과 음성믹싱 처리 유닛(126), 인터페이스(129-1 내지 129-3), 및 GPU(521)는 버스(130)를 통하여 서로 접속되어 있다.
GPU(521)는 주로 그래픽스 처리를 수행하는 프로세서이다. AV 처리 장치(511)에서, 후술하는 바와 같이, 2개의 하드웨어(프로세서), CPU(121) 및 GPU(521) 가 영상 스트림의 디코딩을 2개의 스테지로 분할하고, 스테이지의 디코딩 처리를 병렬로 실행한다.
도 28은 소정의 프로그램을 실행하는 CPU(121)로 구현되는 디코딩 유닛(551)의 기능 구성의 일례를 나타낸 블록도이다. 도 28에서, 도 24에 도시된 것과 댕으하는 부분은, 그 도면부호의 끝 2자리를 도 24의 도면부호의 끝 2자리와 동일하게 부여하였다. 따라서, 동일한 기능의 설명에 대해서는, 그 설명이 반복되므로 생략한다.
디코딩 유닛(551)은 스트림 판독 제어부(561), 스트림 해석부(562), 디코딩 영역 설정부(563), 디코딩 제어부(564), 디코더(565-1 내지 565-4), 시작 위치 검출부(571), 슬라이스 데이터 저장 메모리(572), 전송용 메모리(573), 및 메모리 전송 제어부(574)를 포함한다.
스트림 판독 제어부(561)는 드라이브(112)를 제어하여 탈착 가능한 매체(116)에 기록되어 있는 영상 스트림을 판독한다. 스트림 판독 제어부(561)는 드라이브(112)에 의해 판독된 영상 스트림을, 인터페이스(129-3) 및 버스(130)를 통하여 취득한다. 스트림 판독 제어부(561)는 버스(130)를 통해 HDD(124)에 기록되어 있는 영상 스트림을 판독한다. 스트림 판독 제어부(561)는 필요에 따라, 판독 한 영상 스트림을 CPU(121) 내의 캐시 메모리(도시하지 않음)로 구성되는 스트림용 메모리(152)에 일시적으로 기억시킨다. 또, 스트림 판독 제어부(561)은 필요에 따라, 판독한 영상 스트림을 스트림 해석부(562) 또는 디코더(565-1 내지 565-4)에 공급한다
디코딩 제어부(564)는, 도 24의 디코딩 제어부(464)의 처리에 더해, 각 분할 디코딩 영역 내의 슬라이스의 미리 정해진 중간 스테이지까지의 디코딩(도 32를 참조하여 후술하는 디코딩 전반 처리)을 실행하기 위한 스레드를 생성하고, 각 디코더에 할당된 분할 디코딩 영역에 대한 전반 디코딩 처리를 다른 디코더와 병렬로 실행하도록 디코더(565-1 내지 565-4)를 제어한다. 디코딩 제어부(564)는 또한, 디코더(565-1 내지 565-4)에 의해 중간 스테이지까지 디코딩된 슬라이스에 대한 나머지의 스테이지의 디코딩(도 33 및 도 34를 참조하여 후술하는 디코딩 후반 처리)를 실행하기 위한 스레드를 생성하고, 디코더(565-1 내지 565-4)에 의한 디코딩 전반 처리와 병렬로 디코딩 후반 처리를 실행하도록 메모리 전송 제어부(574) 및 GPU(521)를 제어한다.
디코딩 제어부(564)는, GPU(521)의 처리가 종료한 것을 통지하는 정보를 버스(130)를 통하여 GPU(521)로부터 취득한다. 디코딩 제어부(564)는 또한, GPU(521)가 처리를 실행중인지 여부를 나타내는 정보를 디코더(565-1 내지 565-4)에 공급한다. 디코딩 제어부(564)는 디코딩 전반 처리의 시작을 지시하는 정보를 디코더(565-1 내지 565-4)에 공급한다[디코딩 제어부(564)는 디코딩 전반 처리를 실행하기 위한 스레드를 호출하고, 호출한 스레드에 디코딩 전반 처리에 필요한 정 보를 공급한다].
디코딩 제어부(564)는, 디코딩 후반 처리의 시작을 지시하는 정보를 메모리 전송 제어부(574) 및 GPU(521)에 공급한다[디코딩 제어부(564)는 디코딩 후반 처리를 실행하기 위한 스레드를 호출하고, 호출한 스레드에 디코딩 후반 처리에 필요한 정보를 공급한다]. 디코딩 후반 처리의 시작을 지시하는 정보는 디코딩할 슬라이스가 어느 스테이지까지 디코딩되어 있는지를 나타내는 이력 정보를 포함한다.
디코더(565-1 내지 565-4)는, 각 디코더에 할당된 영상 스트림의 각 프레임 내의 분할 디코딩 영역에 대해 병렬 디코딩(가변길이 디코딩 및 역양자화)을 수행한다. 디코더(565-1 내지 565-4)는, VLD(Variable Length Decoder, 가변 길이 디코더)(581-1 내지 581-4) 및 IQ(Inverse Quantizer, 역양자화기)(582-1 내지 582-4) 세트를 포함한다. 이하의 설명에서, 디코더(565-1 내지 565-4)를 별개로 구별할 필요가 없는 경우, 간단히 "디코더(565)"라고 한다. VLD(581-1 내지 581-4)를 별개로 구별할 필요가 없는 경우, 간단히 "VLD(581)"라고 한다. IQ(582-1 내지 582-4)를 별개로 구별할 필요가 없는 경우, 간단히 "IQ(582)"라고 한다.
VLD(581)는 스트림 판독 제어부(561)로부터 공급된 데이터(영상 스트림)를 가변길이 디코딩하고, 가변길이 디코딩한 데이터를 IQ(582)에 공급한다. VLD(581)는 버스(130)를 사용하여, 디코딩한 데이터에 포함된 예측 모드, 움직임 벡터(motion vector), 및 프레임/필드 예측 플래그를 나타내는 정보를 GPU(521)에 공급한다. 또한, VLD(581)는 디코딩한 데이터에 포함된 양자화 스케일(quantization scale)을 나타내는 정보를 IQ(582)에 공급한다.
IQ(582)는, VLD(581)로부터 공급된 양자화 스케일에 따라, VLD(581)로부터 공급된 데이터를 역양자화하고, 역양자화한 데이터를 슬라이스 데이터 저장 메모리(572)에 기억시킨다. 또, IQ(582)는, 자신이 역양자화한 데이터가 슬라이스 데이터 저장 메모리(572)에 1 슬라이스만큼 저장되어 있는 경우, 그 1 슬라이스의 데이터를 슬라이스 데이터 저장 메모리(572)로부터 전송용 메모리(573)에 전송한다.
메모리 전송 제어부(574)는 전송용 메모리(573)에 기억되어 있는 데이터를 버스(130)를 통해 GPU(521)에 전송한다.
도 29는, 소정의 프로그램을 실행하는 GPU(521)로 구현되는 디코딩 유닛(601)의 기능 구성의 일례를 나타낸 블록도이다. 디코딩 유닛(601)은 슬라이스 데이터 메모리(611), IDCT(Inverse Discrete Cosine Transform, 역이산 코사인 변환)부(612), 움직임 보상부(613), 프레임 데이터 생성부(614), 및 프레임 메모리(615)를 포함한다.
슬라이스 데이터 메모리(611)는 버스(130)를 통해 메모리 전송 제어부(574)로부터 공급되는 1슬라이스의 역양자화된 데이터를 기억한다.
디코딩 제어부(564)의 제어하에, IDCT부(612)는 슬라이스 데이터 메모리(611)에 기억되어 있는 슬라이스에 대해, 도 34를 참조하여 후술하는 IDCT 처리를 수행한다. IDCT부(612)는 IDCT 처리를 수행하여 얻은 화상 데이터를 프레임 데이터 생성부(614)에 공급한다. IDCT부(612)는, 예를 들면, 고속(fast) IDCT 알고리즘에 기초하여, 영상 스트림의 매크로블록에 대한 IDCT를 수행한다. 고속 IDCT 알고리즘의 세부사항은, 예를 들면 Yukihiro Arai외 2명의, "Fast DCT-SQ Scheme for Images", THE TRANSACTIONS OF THE IEICE, vol. E 71, No. 1l, November 1988, pp. 1095-1097에 자세하게 개시되어 있다.
움직임 보상부(613)는 버스(130)를 통해 VLD(581)로부터, 예측 모드, 움직임 벡터, 및 프레임/필드 예측 플래그를 나타내는 정보를 취득한다.
프레임 데이터 생성부(614)가 생성하는 다음 화상 데이터가 순방향 예측 모드의 P픽처인 경우, 움직임 보상부(613)는 프레임 메모리(615)의 과거 참조 화상부(615a)에 기억되어 있는 1 프레임의 화상 데이터에 대해, VLD(581)로부터 공급된 움직임 벡터에 대응하는 움직임 보상을 수행하여, 예측 화상 데이터를 생성한다. 움직임 보상부(613)는 생성한 예측 화상 데이터를 프레임 데이터 생성부(614)에 공급한다.
프레임 데이터 생성부(614)가 생성하는 다음 화상 데이터가 B픽처인 경우, 움직임 보상부(613)는 VLD(581)로부터 공급된 예측 모드에 응답하여, 프레임 메모리(615)의 과거 참조 화상부(615a)에 기억되어 있는 화상 데이터(순방향 예측 모드의 경우), 미래 참조 화상부(615b)에 기억되어 있는 화상 데이터(역방향 예측 모드의 경우), 또는 과거 참조 화상부(615a)에 기억되어 있는 화상 데이터와 미래 참조 화상부(615b)에 기억되어 있는 화상 데이터 양자(양방향 예측 모드의 경우)에 대해, VLD(581)로부터 공급된 움직임 벡터에 대응하는 움직임 보상을 수행하여, 예측 화상 데이터를 생성한다. 움직임 보상부(613)는 생성한 예측 화상 데이터를 프레임 데이터 생성부(614)에 공급한다.
미래 화상 참조부(615b)에 기억되어 있는 화상 데이터가 P픽처이고, 그 P픽 처보다 전에 위치하는 B픽처의 디코딩이 모두 종료한 경우, 움직임 보상부(613)는 미래 화상 참조부(615b)에 기억되어 있는 P픽처를 판독하고, 판독한 P픽처를 움직임 보상을 수행하지 않고 프레임 데이터 생성부(614)에 공급한다.
디코딩 제어부(564)의 제어하에, 프레임 데이터 생성부(614)는 IDCT부(612) 로부터 공급된 화상 데이터를 저장하고, 1 프레임에 대한 화상 데이터를 생성하며, 생성한 화상 데이터를 출력한다. 구체적으로, IDCT부(612)로부터 공급된 화상 데이터가 I픽처, 또는 프레임 내(intraframe) 예측 모드의 P픽처와 B픽처 중 하나인 경우, 프레임 데이터 생성부(614)는 IDCT부(612)로부터 공급된 화상 데이터에 기초하여 1 프레임의 화상 데이터를 생성한다. 또, IDCT부(612)로부터 공급된 화상 데이터가 프레임 내 예측 모드가 없는 P픽처 또는 B픽처인 경우, 프레임 데이터 생성부(614)는 IDCT부(612)로부터 공급된 화상 데이터에 기초하여 생성된 화상 데이터에, 움직임 보상부(613)로부터 공급된 예측 화상 데이터를 가산하여, 1 프레임의 화상 데이터를 생성한다.
생성한 화상 데이터가 I픽처인 경우, 프레임 데이터 생성부(614)는 생성한 화상 데이터를 디코딩 유닛(601)의 외부[예를 들면, 버스(130)를 통해 신호 처리 유닛(125)]에 출력하고, 생성한 프레임 데이터를 프레임 메모리(615)의 과거 참조 화상부(615a) 또는 미래 참조 화상부(615b)에 기억시키다. 생성한 화상 데이터가 P픽처인 경우, 프레임 데이터 생성부(614)는 생성한 화상 데이터를 디코딩 유닛(601)의 외부에 출력하지 않고, 프레임 메모리(615)의 미래 참조 화상부(615b)에 기억시킨다. 생성한 화상 데이터가 B픽처인 경우, 프레임 데이터 생성부(614)는 생성한 화상 데이터를 디코딩 유닛(601)의 외부에 출력한다.
또, 움직임 보상부(613)가 미래 화상 참조부(615b)에 기억되어 있는 화상 데이터(P픽처)를 프레임 데이터 생성부(614)에 공급하는 경우, 프레임 데이터 생성부(614)는 공급된 화상 데이터를 디코딩 유닛(601)의 외부에 출력한다.
프레임 데이터 생성부(614)는 디코딩 후반 처리가 종료한 것을 통지하는 정보를 디코딩 제어부(564)에 공급한다.
전술한 바와 같이, 프레임 메모리(615)에서, 예측 화상 데이터를 생성하기 위해 사용하는 화상 데이터(I픽처 또는 P픽처)를 과거 참조 화상부(615a) 또는 미래 참조 화상부(615b)에 기억시킨다. 또, 필요에 따라, 호상 데이터는 과거 참조 화상부(615a)와 미래 참조 화상부(615b) 사이에 전송된다(뱅크 전환이 수행된다).
다음에, 도 30 및 도 31의 흐름도를 참조하여 디코딩 유닛(551)에 의해 실행되는 디코딩 처리를 이하에 설명한다. 설명을 간단하게 하기 위해, 각 매크로블록의 블록 타입은 인트라 타입(프레임 내 인코딩 타입)인 것으로 한다. 또, 설명을 간단하게 하기 위해, 전술한 에러 발생에 대응하는 처리(예를 들면, 도 26의 단계 S365 내지 S367)에 관한 단계는, 도 30 및 도 31의 흐름도에서 생략되어 있다.
단계 S451 및 단계 S462는, 도 25 및 도 26의 단계 S351 및 S362와 마찬가지이며, 그 설명은 반복이 되므로 생략한다.
단계 S463에서, 디코딩 제어부(564)는 디코딩 전반 처리의 시작을 지시한다. 구체적으로, 디코딩 제어부(564)는 단계 S462에서 검출된 시작 위치에서 시작되는 각 분할 디코딩 영역에 포함된 슬라이스를 각 디코더(465)에 공급할 것을 지시하는 정보를 스트림 판독 제어부(461)에 공급한다. 또, 디코딩 제어부(464)는 다음 픽처의 디코딩 전반 처리의 시작을 지시하는 정보를 각 디코더(565)에 공급한다.
단계 S464에서, 디코더(565)는 디코딩 전반 처리를 행한다. 디코딩 전반 처리의 자세한 것은 도 32를 참조하여 후술한다.
단계 S465에서, 디코딩 제어부(564)는 모든 디코더(565)의 처리가 종료하였는지 여부를 판정한다. 구체적으로, 디코딩 제어부(564)는 디코더(565)에 할당된 분할 디코딩 영역 내의 모든 슬라이스의 디코딩의 종료를 통지하는 정보가 공급되어 있는지 여부를 검출한다. 디코딩 제어부(564)는, 디코딩의 종료를 통지하는 정보가 모든 디코더로부터 공급될 때까지, 단계 S465의 판정을 반복하여 수행한다. 디코딩의 종료를 통지하는 정보가 공급된 경우, 모든 디코더(565)의 처리가 종료한 것으로 판정되고, 처리는 단계 S458로 복귀한다. 그 후, 단계 S458 및 후속하는 단계에서의 처리가 실행된다.
다음에, 도 32의 흐름도를 참조하여, 디코딩 전반 처리를 이하에 상세하게 설명한다.
단계 S501에서, VLD(581)는 가변길이 디코딩을 수행한다. 구체적으로, VLD(581)는 스트림 판독 제어부(561)로부터 공급된 슬라이스의 첫 번째 매크로블록을 가변길이 디코딩한다. VLD(581)는 가변길이 디코딩한 매크로블록을 IQ(582)에 공급한다. VLD(581)는 매크로블록의 역양자화에 사용하는 양자화 스케일에 대한 정보를 IQ(582)에 공급한다.
단계 S502에서, IQ(582)는 역양자화를 수행한다. 구체적으로, IQ(582)는, VLD(581)로부터 공급된 양자화 스케일에 따라, VLD(581)로부터 공급된 매크로블록을 역양자화한다.
단계 S503에서, IQ(582)는 단계 S502에서 역양자화한 데이터를 슬라이스 데이터 저장 메모리(572)에 기억시킨다.
단계 S504에서, IQ(582)는, 1 슬라이스의 데이터가 슬라이스 데이터 저장 메모리(572)에 저장되었는지 여부를 판정한다. 구체적으로, IQ(582)에 의해 역양자화되어 슬라이스 데이터 저장 메모리(572)에 저장되어 있는 데이터가, 1 슬라이스의 데이터량에 이르지 않은 경우, IQ(582)는 아직 1 슬라이스의 데이터가 저장되지 않은 것으로 판정하고, 처리는 단계 S501로 복귀한다. 단계 S504에서, 1 슬라이스의 데이터가 저장되었다고 판정될 때까지, 단계 S501 내지 S504의 처리가 반복 실행된다. 즉, 첫 번째 매크로블록으로부터 두 번째 및 후속하는 매크로블록이 차례로 가변길이 디코딩 및 역양자화된다.
단계 S504에서, IQ(582)에 의해 역양자화되어 슬라이스 데이터 저장 메모리(572)에 저장되어 있는 데이터가, 1 슬라이스의 데이터량에 이른 경우, IQ(582)는 1 슬라이스의 데이터가 이미 슬라이스 데이터 저장 메모리(572)에 저장되어 있는 것으로 판정하고, 처리는 단계 S505로 진행한다.
단계 S505에서, IQ(582)는 GPU(521)의 처리가 종료하였는지 여부를 판정한다. 구체적으로, IQ(582)는, GPU(521)의 처리가 실행중인지 여부를 나타내는 정보를 디코딩 제어부(564)로부터 취득한다. GPU(521)의 처리가 실행중이면, IQ(582)는 GPU(521)의 처리가 종료하지 않은 것으로 판정하고, 처리는 단계 S506으로 진행 한다.
단계 S506에서, IQ(582)는 분할 디코딩 영역 내의 모든 매크로블록을 처리하였는지 여부를 판정한다. 분할 디코딩 영역 내의 매크로블록을 아직 모두 처리하지 않았으면, 즉 아직 가변길이 디코딩 및 역양자화되지 않은 매크로블록이 IQ(582)에 할당된 분할 디코딩 영역 내에 있는 경우, 처리는 단계 S501로 복귀하고, 분할 디코딩 영역 내의 매크로블록의 가변길이 디코딩 및 역양자화가 계속하여 수행된다.
단계 S506에서, 이미 분할 디코딩 영역 내의 매크로블록을 모두 처리한 것으로 판정된 경우, 즉 IQ(582)에 할당된 분할 디코딩 영역 내의 모든 매크로블록을 가변길이 디코딩 및 역양자화한 경우, 처리는 단계 S507로 진행한다.
단계 S505와 마찬가지로, 단계 S507에서, GPU(521)의 처리가 종료하였는지 여부가 판정된다. GPU(521)의 처리가 종료한 것으로 판정될 때까지, 단계 S507의 처리는 반복 실행된다. GPU(521)의 처리가 종료하였으면, 즉 GPU(521)가 아이들 상태(idle state)인 경우, 처리는 단계 S508로 진행한다.
단계 S508에서, IQ(582)는 역양자화한 데이터를 전송한다. 구체적으로, IQ(582)에 의해 역양자화되어, 슬라이스 데이터 저장 메모리(572)에 저장되어 있는 역양자화한 데이터 중에서, 1 슬라이스에 대한 첫 번째 데이터를 IQ(582)는 전송용 메모리(573)에 전송한다.
단계 S509에서, 디코딩 제어부(564)는 후반 디코딩 처리의 시작을 지시한다. 디코딩 제어부(564)는 전송용 메모리(573)에 저장된 슬라이스에 대한 디코딩 후반 처리의 시작을 지시하는 정보를, 메모리 전송 제어부(574) 및 디코딩 유닛(601)에 공급한다. 이로써, 도 33을 참조하여 후술하는 디코딩 후반 처리가 시작된다. 그 후, 처리는 단계 S513으로 진행한다.
단계 S505에서, GPU(521)의 처리가 종료한 것으로 판정된 경우, 처리는 단계 S510으로 진행한다.
단계 S507과 마찬가지로, 단계 S510에서, 1 슬라이스의 역양자화한 데이터가 전송용 메모리(573)에 전송된다.
단계 S509와 마찬가지로, 단계 S511에서, 디코딩 후반 처리의 시작이 지시된다.
단계 S506과 마찬가지로, 단계 S512에서, 분할 디코딩 영역 내의 모든 매크로블록을 처리하였는지 여부가 판정된다. 분할 디코딩 영역 내의 매크로블록을 아직 모두 처리하지 않은 것으로 판정된 경우, 처리는 단계 S501로 복귀하고, 분할 디코딩 영역 내의 매크로블록의 가변길이 디코딩 및 역양자화가 계속하여 수행된다.
단계 S512에서, 분할 디코딩 영역 내의 모든 매크로블록을 처리한 것으로 판정된 경우, 처리는 단계 S513으로 진행한다.
단계 S513에서, IQ(582)는 역양자화한 데이터를 모두 전송하였는지 여부를 판정한다. IQ(582)는, 자신이 역양자화한 데이터 중에서 아직 전송용 메모리(573)로 전송하지 않은 데이터가 슬라이스 데이터 저장 메모리(572)에 남아 있는 경우, 역양자화한 데이터를 아직 모두 전송하지 않은 것으로 판정하고, 처리는 단계 S507 로 복귀한다. 그 후, 단계 S513에서, 역양자화한 데이터를 모두 전송한 것으로 판정될 때까지, 단계 S507, S508 및 S513의 처리가 반복 실행된다.
단계 S513에서, 역양자화한 데이터를 모두 전송한 것으로 판정된 경우, 처리는 단계 S514로 진행한다.
단계 S514에서, 디코더(565)는 디코딩 전반 처리의 종료를 통지하고, 디코딩 전반 처리는 종료한다. 구체적으로, 디코더(565)는 디코딩 전반 처리의 종료를 통지하는 정보를 디코딩 제어부(564)에 공급한다.
이상에서는, 1개의 디코더에 주목해 디코딩 전반 처리를 설명하였으나, 실제로는, 디코딩 전반 처리는 디코더(565-1 내지 565-4)에 의해 병렬로 실행된다.
디음에, 도 33의 흐름도를 참조하여, 도 32의 디코딩 전반 처리에 대응하여, 디코딩 유닛(551) 및 디코딩 유닛(601)에 의해 실행되는 디코딩 후반 처리를 이하에 설명한다. 디코딩 후반 처리는 도 32를 참조하여 전술한 각 디코더(565)에 의해 실행되는 디코딩 전반 처리와 병렬로 실행된다.
단계 S521에서, 메모리 전송 제어부(574)는 디코딩 후반 처리의 시작이 지시되었는지 여부를 판정한다. 디코딩 후반 처리의 시작이 지시된 것으로 판정될 때까지, 단계 S521의 판정 처리는 반복 실행된다. 도 32의 단계 S509 또는 S511에서, 디코딩 후반 처리의 시작을 지시하는 정보가 디코딩 제어부(564)로부터 메모리 전송 제어부(574)에 공급된 경우, 디코딩 후반 처리의 시작이 지시된 것으로 판정되고, 처리는 단계 S522로 진행한다.
단계 S522에서, 메모리 전송 제어부(574)는 데이터를 전송한다. 구체적으 로, 메모리 전송 제어부(574)는 디코딩 유닛(601)에 저장된 1 슬라이스의 역양자화된 데이터를, 버스(130)를 통해 디코딩 유닛(601)의 슬라이스 데이터 메모리(611)에 전송하고, 기억한다.
단계 S523에서, lDCT부(612)는 IDCT(역이산 코사인 변환) 처리를 행한다. IDCT 처리에 대한 자세한 것은 도 34를 참조하여 후술한다.
단계 S524에서, 프레임 데이터 생성부(614)는 1 프레임의 화상 데이터가 디코딩되었는지 여부를 판정한다. 아직 1 프레임의 화상 데이터가 디코딩되지 않은 것으로 판정된 경우, 처리는 단계 S525로 진행한다.
단계 S525에서, 프레임 데이터 생성부(614)는 1 프레임의 화상 데이터를 출력한다. 구체적으로, 프레임 데이터 생성부(614)는, 디코딩이 완료된 1 프레임의 화상 데이터를 외부[예를 들면, 버스(130)를 통해 신호 처리 유닛(125)]에 출력한다.
단계 S524에서, 1 프레임의 화상 데이터가 디코딩되지 않은 것으로 판정된 경우, 단계 S525의 처리는 건너뛰고, 처리는 단계 S526으로 진행한다.
단계 S526에서, 프레임 데이터 생성부(614)는 디코딩 후반 처리의 종료를 통지한다. 구체적으로, 프레임 데이터 생성부(614)는, 디코딩 후반 처리가 종료한 것을 통지하는 정보를, 버스(130)를 통해 디코딩 제어부(564)에 공급한다. 그 후, 처리는 단계 S521로 복귀하고, 단계 S521 및 후속하는 단계의 처리가 실행된다.
다음에, 도 34에 도시된 흐름도를 참조하여, 도 33의 단계 S523의 IDCT 처리에 대해 이하에 상세하게 설명한다.
단계 S541에서, IDCT부(612)는 텍스처(texture)를 생성한다. 구체적으로, IDCT부(612)는 슬라이스 데이터 메모리(611)에 저장되어 있는 1 슬라이스의 데이터를 판독한다.
이하에서, 1 슬라이스의 데이터는 도 35의 슬라이스(651)의 포맷(format)을 갖는 것으로 가정하여 IDCT 처리를 설명한다. 슬라이스(651)는 n개의 매크로블록(MB)을 포함한다. 1개의 매크로블록은 16 × 16개의 휘도 정보 Y, 16 × 8개의 색차 정보(color-difference information) Cb, 및 16 × 8개의 색차 정보 Cr를 포함한다. 즉, 휘도 정보 Y와 색차 정보 Cb , Cr의 3개의 성분의 비율은 4:2:2이다. 세로 16 × 가로 16개의 휘도 정보 Y, 세로 16 × 가로 8개의 색차 정보 Cb, 세로 16 × 가로 8개의 색차 정보 Cr, 세로 16 × 가로 8개의 색차 정보 Cb, 세로 16 × 가로 8개의 색차 정보 Cr 순으로 매크로블록의 선두로부터 각 정보가 배치되어 있다.
슬라이스(651)에 포함된 각 매크로블록에 대하여, IDCT부(612)는 16개의 휘도 정보 Y, 16개의 색차 정보 Cb, 16개의 색차 정보 Cr, 16개의 색차 정보 Cb, 16개의 색차 정보 Cr을 배치하여 얻은 4개의 정보의 열(column)을 생성한다. IDCT부(612)는, 각 매크로블록으로부터 생성한 4개의 정보의 열을 차례로 정렬한 4개의 텍스처(661 내지 664)를 생성한다. 따라서, 1개의 텍스처는 세로 n× 가로 128개의 정보를 포함한다.
단계 S542에서, IDCT부(612)는 행 변환(row conversion)을 수행한다. 구체적으로, 텍스처(661 내지 664)의 첫 번째(가로 방향) 행에 배열되어 있는 정보, 즉 슬라이스(651)의 첫 번째 매크로블록에 포함되는 정보로부터, IDCT부(612)는 세로 8개 × 가로 8개 × 시간(temporal) 8개의 정보를 포함하는 3차원의 블록(671-1)을 생성한다.
3차원 블록(671-1)을 구성하는 정보는, 소정의 규칙에 따라, 텍스처(661 내지 664)의 첫 번째 (가로 방향) 행의 정보에 소정의 계수를 곱하고, 소정의 계수를 곱한 정보를 가산하여, 생성된다.
또, 3차원 블록(671-1)은 위에서부터 1번째 내지 4번째 행에 휘도 정보 Y가 배치되고, 위에서부터 4번째 및 6번째 행에 색차 정보 Cb가 배치되고, 위에서부터 7번째 및 8번째 행에 색차 정보 Cr가 배치된다.
단계 S543에서, IDCT부(612)는, 행 변환이 모두 종료하였는지 여부를 판정한다. 행 변환이 아직 모두 종료하지 않은 것으로 판정된 경우, 처리는 단계 S542으로 복귀하고, 단계 S543에서, 행 변환이 모두 종료한 것으로 판정될 때까지, 단계 S542 및 S543의 처리가 반복 실행된다. 즉, 텍스처(661 내지 664)의 행에 대해, 전술한 행 변환이 차례로 수행된다. 그 결과, 3차원 블록(671-1 내지 671-n)이 생성된다.
이하, 3차원 블록(671-m)(m = 1, 2, 3, ···n)을 구성하고 세로 8개 × 가로 8개의 정보를 각각 포함하는 8개의 2차원의 블록을 "2차원 블록(671-m1 내지 671-m8)"이라고 하며, 여기서 m =1, 2, 3, ···n 이다.
단계 S543에서, 행 변환이 모두 종료한 것으로 판정된 경우, 처리는 단계 S544로 진행한다.
단계 S544에서, IDCT부(612)는 열변환(column conversion)을 수행한다. 구체적으로, 슬라이스(651)의 첫 번째 매크로블록으로부터 생성된 3차원 블록(671-1)으로부터, 소정의 규칙에 따라, IDCT부(612)는 세로 8개 × 가로 8개 × 시간(temporal) 8개의 정보를 포함하는 3차원 블록(681-1)을 생성한다.
3차원 블록(681-1)의 시간 방향의 열의 정보는, 소정의 규칙에 따른 각 열에 연관되는 3차원 블록(671-1)의 가로 방향의 행의 정보에 소정의 계수를 곱하고, 계수를 곱한 정보를 가산하여, 생성된다. 예를 들면, 3차원 블록(681-1)의 가장 바깥면의 좌측단의 시간 방향의 열의 정보는, 그 열에 대응하는 3차원 블록(671-1)을 구성하는 2차원 블록(671-11)의 가로 방향의 첫 번째 행의 정보에 소정의 계수를 곱하고, 계수를 곱한 정보를 가산하여 생성된다. 또, 블록(681-1)은 위에서부터 1번째 내지 4번째 행에 휘도 정보 Y가 배치되고, 위에서 5번째 및 6번째 행에 색차 정보 Cb가 배치되며, 위에서부터 7번째 및 8번째 행에 색차 정보 Cr이 배치된다.
단계 S545에서, IDCT부(612)는 열변환이 모두 종료하였는지 여부를 판정한다. 열변환이 아직 모두 끝나 있지 않은 것으로 판정된 경우, 처리는 단계 S544로 복귀하고, 단계 S545에서, 열변환이 모두 종료한 것으로 판정될 때까지, 단계 S544 및 S545의 처리가 반복 실행된다. 즉, 3차원 블록(671-1 내지 671-n)에 대해, 전술한 열변환이 차례로 수행된다. 그 결과, 3차원 블록(681-1 내지 681-n)이 생성된다.
3차원 블록(681-m)(m = 1, 2, 3), ···n)을 구성하는, 각각 세로 8개 × 가로 8개의 정보를 포함하는 8개의 2차원의 블록을 "2차원 블록 681-m1내지 681-m8"이라고 하며, 여기서 m = 1, 2, 3, ···n 이다.
단계 S545에서, 열변환이 모두 종료한 것으로 판정된 경우, 처리는 단계 S546으로 진행한다.
단계 S546에서, IDCT부(612)는 정보를 정렬시킨다. 구체적으로, 도 36에 나타낸 바와 같이, 3차원 블록(681-1)의 가장 바깥면[2차원 블록(681-11 내지 681-18)의 가장 위의 행)에 포함되어 있는 휘도 정보 Y로부터, IDCT부(612)는 8 × 8개의 정보를 갖는 매크로블록(711-1)을 생성한다. 마찬가지로, 블록( 681-1)의 위에서부터 2번째 면에 포함된 휘도 정보 Y로부터, IDCT부(612)는 매크로블록(711-2)을 생성한다. 위에서부터 3번째 면에 포함된 휘도 정보 Y로부터 매크로블록(711-3)을 생성하고, 위에서부터 4번째 면에 포함된 휘도 정보 Y로부터 매크로블록(711-4)을 생성한다.
디코딩중인 슬라이스를 포함하는 픽처가 필드 구조(field structure)인 경우, IDCT부(612)는 매크로블록(711-1 및 711-3)의 행을 교대로 배열한 매크로블록(712-1 및 712-2)을 생성하고, 매크로블록(711-2 및 711-4)의 행을 교대로 배열한 매크로블록(712-3 및 712-4)을 생성한다. IDCT부(612)는, 도 36에 우측 위에 도시된 바와 같이, 좌측 위의 매크로블록(712-1), 좌측 아래의 매크로블록(712-2), 우측 위의 매크로블록(712-3), 우측 아래의 매크로블록(712-4)을 가지는 16 × 16 의 매크로블록(713)을 생성한다.
디코딩중인 슬라이스를 포함하는 픽처가 프레임 구조(fram structure)인 경우, IDCT부(612)는, 도 36의 우측 아래에 도시된 바와 같이, 좌측 위의 매크로블록 (711-1), 우측 위의 매크로블록(711-2), 좌측 아래의 매크로블록(711-3), 우측 아래의 매크로블록(711-4)을 가지는 16 × 16의 매크로블록(714)을 생성한다.
IDCT부(612)는 또한 3차원 블록(681-2 내지 681-n)에 포함된 휘도 정보 Y 대하여도 마찬가지의 정렬을 행한다. 또, 3차원 블록(681-1 내지 681-n)에 포함된 색차 정보 Cr, Cb 대하여도 마찬가지의 정렬을 행한다. IDCT부(612)는 또한, 정보를 정렬한 매크로블록을 위에서부터 차례로 배열한 슬라이스(691)를 생성한다. 예를 들면, 디코딩중인 슬라이스를 포함하는 픽처가 필드 구조인 경우, 도 37에 나타낸 바와 같이, 3차원 블록(681-1)으로부터 생성된 매크로블록(712-1 내지 712-4)이 슬라이스(691)의 선두(도 39의 좌측단)에 배치되고, 마찬가지로, 3차원 블록(681-2 내지 688-n)으로부터 생성된 매크로블록이 차례로 배열된다.
단계 S547에서, IDCT부(612)는 RGB 변환을 수행하고, IDCT 처리는 종료한다. 구체적으로, 슬라이스(691)를 구성하는 휘도 정보 Y, 색차 정보 Cb, Cr을, RGB 방식의 R(red)신호, G(green)신호, B(blue)신호로 변환하여, 화상 데이터(701)를 생성한다. IDCT부(612)는 생성한 화상 데이터(701)를 공급한다. IDCT부(612)는 IDCT 처리가 종료하였다는 것을 나타내는 정보를, 버스(130)를 통해 디코딩 제어부(564)에 공급한다.
전술한 바와 같이, 슬라이스층 이하의 디코딩 처리를 CPU(121) 및 GPU(521) 를 사용하여 분할 및 병렬로 실행함으로써, 디코딩 처리에 필요한 시간을 단축할 수 있고, CPU(121)의 부하를 경감시킬 수 있다. 또, CPU와 같은 고성능 프로세서에 비해 값싼 GPU(521)를 사용함으로써, 비용을 삭감할 수 있다.
이상에서 설명한 바와 같이, 영상 스트림의 프레임의 위치를 나타내는 정보인 프레임 위치 정보의 기록을 제어하고, 영상 스트림을 디코딩할 때의 처리 단위인 단위 영역의 위치를 나타내는 단위 영역 위치 정보의 기록을 제어하고, 영상 스트림의 프레임의 위치를 나타내는 프레임 위치 정보, 및 영상 스트림을 디코딩할 때의 처리 단위인 단위 영역의 위치를 나타내는 단위 영역 위치 정보에 기초하여, 영상 스트림의 디코딩을 시작하는 디코딩 시작 위치를 검출하고, 디코딩 시작 위치로부터 디코딩을 시작하도록 영상 스트림의 디코딩을 제어하는 경우에, 영상 스트림의 디코딩의 시작 위치의 검출에 필요한 시간을 단축할 수 있고, 영상 스트림을 더욱 고속으로 디코딩하는 것이 가능하다.
이상의 설명에서는, CPU로 구현되는 디코더의 수가 4개인 예를 설명하였다. 하지만, 디코더의 수는 4 이외의 다른 값일 수 있다.
이상의 설명에서는, GPU로 구현되는 디코더의 수가 1개인 예를 설명하였다. 하지만, 단일 GPU에 의해 복수의 디코더를 실현할 수도 있으며, 복수의 디코더를 설치함으로써, 디코딩 후반 처리를 복수의 디코더에 의해 병렬로 실행할 수 도 있다.
이상의 설명에서는, CPU(121)는 멀티코어(multicore) 프로세서로 구성되지만, CPU 등의 프로세서를 복수 개 설치함으로써, CPU(121)로 구현되는 디코더의 처 리를 복수의 프로세서에 의해 병렬로 실행할 수도 있다.
이상의 설명에서는, MPEG2 방식으로 영상 스트림을 인코딩 또는 디코딩하는 경우의 예를 나타냈다. 하지만, 본 발명의 실시예는 영상 스트림의 프레임의 위치(예를 들면, 영상 스트림의 시작부터의 상대적인 위치, 기록 매체에 기록하는 위치 등), 또는 영상 스트림을 디코딩할 때 사용하는 처리 단위의 위치(예를 들면, 영상 스트림의 사직부터의 상대적인 위치, 기록 매체에 기록하는 위치 등)를 나타내는 정보를 기록하지 않는 방식으로 영상 스트림을 인코딩 또는 디코딩하는 경우에도 적용할 수 있다. 또, 본 발명의 실시예는, 복수의 디코더가, 영상 스트림의 1 프레임 화상에 대응하는 영상 스트림의 영역에 복수의 처리 단위가 포함되는 방식으로 인코딩된 영상 스트림을, 병렬로 디코딩하는 경우에 적용할 수 있다.
또, 도 30의 단계 S509 또는 S511에서, 디코딩 제어부(564)가, 전송용 메모리(573)에 기억되어 있는 슬라이스가 어느 스테이지까지 디코딩되었는지를 나타내는 이력 정보를, 전송용 메모리(573)에 기억시킬 수 있다. 이는 전송용 메모리(573)에 기억되어 있는 슬라이스가 어느 단계까지 디코딩되었는지를 명확하게 나타낸다. 따라서, 예를 들면 디코딩 처리를 3 스테이지 이상으로 분할하여 수행하는 경우, 전송용 메모리(573)에 기억되어 있는 슬라이스를 어느 디코더가 디코딩을 수행하는지를 결정하는 정보로서 사용할 수 있다.
전술한 일련의 처리는 하드웨어[예를 들면, 도 2 또는 도 27의 신호 처리 유닛(125)]에 의하거나, 또는 소프트웨어에 의해 실행될 수 있다. 전술한 일련의 처리를 소프트웨어로 실행하는 경우, 그 소프트웨어를 구성하는 프로그램은, 예를 들 면 AV 처리 장치(111) 등에, 네트워크나 기록 매체로부터 인스톨(install)된다.
이 기록 매체는 컴퓨터와는 별도로, 사용자에게 프로그램을 제공하는 위해 배포되는 프로그램을 포함하는 탈착 가능한 매체(117)에 의해 구성될 뿐만 아니라, 컴퓨터에 내장된 상태에서 사용자에게 제공되는 프로그램을 포함하는 ROM(122), HDD(124) 등으로 구성된다.
본 명세서에서, 기록 매체에 포함되는 프로그램을 구성하는 단계는 소정의 순서에 따라 시계열적으로 실행될 뿐만 아니라, 반드시 시계열적으로 실행되지 않고 병렬로 또는 개별적으로 실행된다.
본 명세서에서, "시스템"이라는 용어는 전체 장치, 복수의 수단 등을 의미하는 것이다.
설계 요건에 따라, 그리고 첨부된 청구범위나 그 등가물의 범위 내에 있는 한 다른 인자에 따라, 이 기술분야의 당업자에게 다양한 변형(modification), 조합(combination), 부조합(subcombination), 및 개조(alteration)가 가능함은 물론이다.
본 발명에 의하면, 영상 스트림의 디코딩 시작 위치의 검출에 필요한 시간을 단축할 수 있다.
또, 본 발명에 의하면, 더욱 고속으로 영상 스트림을 디코딩할 수 있다.

Claims (32)

  1. 영상 스트림(video stream) 내의 프레임(frame)의 위치를 나타내는 프레임 위치 정보의 기록을 제어하는 프레임 위치 기록 제어 단계; 및
    상기 영상 스트림을 디코딩할 때 처리 단위로서 사용되는 단위 영역(unit region)의 위치를 나타내는 단위 영역 위치 정보의 기록을 제어하는 단위 영역 위치 기록 제어 단계
    를 포함하는 인코딩 방법.
  2. 제1항에 있어서,
    상기 프레임 위치 기록 제어 단계에서, 상기 영상 스트림이 인코딩된 형태인 경우, 상기 영상 스트림 내에 상기 프레임 위치 정보를 기록하도록 상기 프레임 위치 정보의 기록을 제어하고;
    상기 단위 영역 위치 기록 제어 단계에서, 상기 영상 스트림이 인코딩(encoding)된 형태인 경우, 상기 영상 스트림 내에 상기 단위 영역 위치 정보를 기록하도록 상기 단위 영역 위치 정보의 기록을 제어하는 것을 특징으로 하는 인코딩 방법.
  3. 제1항에 있어서,
    상기 프레임 위치 기록 제어 단계에서, 상기 영상 스트림의 파일과는 상이한 파일에 상기 프레임 위치 정보를 기록하도록 상기 프레임 위치 정보의 기록을 제어하고;
    상기 단위 영역 위치 기록 제어 단계에서, 상기 상이한 파일에 상기 단위 영역 위치 정보를 기록하도록 상기 단위 영역 위치 정보의 기록을 제어하는 것을 특징으로 하는 인코딩 방법.
  4. 제1항에 있어서,
    상기 영상 스트림은 MPEG(Moving Picture Experts Group) 표준에 의해 인코딩되고, 상기 단위 영역은 슬라이스(slice)인 것을 특징으로 하는 인코딩 방법.
  5. 제4항에 있어서,
    상기 프레임 위치 기록 제어 단계에서, 상기 MPEG 표준에 따라 인코딩된 상기 영상 스트림의 시퀀스층(sequence layer)의 사용자 데이터 필드(user data field) 또는 GOP층(Group Of Pictures layer)의 사용자 데이터 필드 중 하나에 상기 프레임 위치 정보를 기록하도록 상기 프레임 위치 정보의 기록을 제어하고;
    상기 단위 영역 위치 기록 제어 단계에서, 상기 MPEG 표준에 따라 인코딩된 상기 영상 스트림의 픽처층(picture layer)의 사용자 데이터 필드에 상기 단위 영역 위치 정보를 기록하도록 상기 단위 영역 위치 정보의 기록을 제어하는 것을 특징으로 하는 인코딩 방법.
  6. 제1항에 있어서,
    상기 프레임 위치 정보는 상기 영상 스트림의 선두(beginning)에 대한 상기 프레임의 상대적인 위치를 나타내는 정보를 포함하고;
    상기 단위 영역 위치 정보는 상기 영상 스트림의 선두에 대한 상기 단위 영역의 상대적인 위치를 나타내는 정보를 포함하는 것을 특징으로 하는 인코딩 방법.
  7. 제6항에 있어서,
    상기 프레임 위치 정보는 상기 프레임에 할당된 번호 및 상기 프레임의 데이터 길이를 나타내는 정보를 더 포함하고,
    상기 단위 영역 위치 정보는 상기 프레임 내의 상기 단위 영역에 할당된 번호 및 상기 단위 영역의 데이터 길이를 나타내는 정보를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  8. 제1항에 있어서,
    상기 프레임 위치 정보는 데이터 기록 매체에 상기 프레임을 기록하는 위치를 나타내는 정보를 포함하고;
    상기 단위 영역 위치 정보는 상기 데이터 기록 매체에 상기 단위 영역을 기록하는 위치를 나타내는 정보를 포함하는 것을 특징으로 하는 인코딩 방법.
  9. 제8항에 있어서,
    상기 프레임 위치 정보는 상기 프레임에 할당된 번호 및 상기 프레임의 데이터 길이를 나타내는 정보를 더 포함하고;
    상기 단위 영역 위치 정보는 상기 프레임 내의 상기 단위 영역에 할당된 번호 및 상기 단위 영역의 데이터 길이를 나타내는 정보를 더 포함하는 것을 특징으로 하는 인코딩 방법.
  10. 영상 스트림을 인코딩하는 인코딩 수단(encoding means); 및
    상기 영상 스트림 내의 프레임의 위치를 나타내는 프레임 위치 정보, 및 상기 영상 스트림을 디코딩할 때 처리 단위로서 사용되는 단위 영역의 위치를 나타내는 단위 영역 위치 정보의 기록을 제어하는 기록 제어 수단(recording control means)
    을 포함하는 인코딩 장치.
  11. 영상 스트림 내의 프레임의 위치를 나타내는 프레임 위치 정보, 및 상기 영상 스트림을 디코딩(decoding)할 때 처리 단위로서 사용되는 단위 영역의 위치를 나타내는 단위 영역 위치 정보에 기초하여, 상기 영상 스트림의 디코딩을 시작하는 디코딩 시작 위치를 적어도 하나 검출하는 검출 단계; 및
    상기 디코딩 시작 위치에서 디코딩을 시작하도록 상기 영상 스트림의 디코딩을 제어하는 디코딩 제어 단계
    를 포함하는 디코딩 방법.
  12. 제11항에 있어서,
    상기 영상 스트림으로부터 상기 프레임 위치 정보를 추출하는 프레임 위치 정보 추출 단계;
    상기 영상 스트림으로부터 상기 단위 영역 위치 정보를 추출하는 단위 영역 위치 정보 추출 단계
    를 더 포함하는 디코딩 방법.
  13. 제11항에 있어서,
    상기 영상 스트림의 파일과는 상이한 파일로부터 상기 프레임 위치 정보 및 상기 단위 영역 위치 정보의 취득을 제어하는 취득 제어 단계를 더 포함하는 디코딩 방법.
  14. 제11항에 있어서,
    상기 영상 스트림은 MPEG 표준에 의해 인코딩되고, 상기 단위 영역은 슬라이스인 것을 특징으로 하는 디코딩 방법.
  15. 제11항에 있어서,
    상기 검출 단계에서, 상기 프레임 위치 정보 및 상기 단위 영역 위치 정보에 기초하여, 상기 영상 스트림의 디코딩을 병렬로 수행하는 복수의 디코딩 수단에 대 응하는 상기 디코딩 시작 위치가 검출되고;
    상기 디코딩 제어 단계에서, 상기 복수의 디코딩 수단이 상기 디코딩 시작 위치에서 디코딩을 시작하도록 상기 영상 스트림의 디코딩을 제어하는 것을 특징으로 하는 디코딩 방법.
  16. 제15항에 있어서,
    상기 영상 스트림의 1 프레임의 화상(image)에 대응하는 영역을 상기 복수의 디코딩 수단의 수로 분할하여 얻어지고, 각각이, 상기 단위 영역을 포함하는 분할 영역(divided region)을 설정하는 설정 단계를 더 포함하고,
    상기 디코딩 제어 단계에서, 상기 프레임 내의 상기 분할 영역을 상기 디코딩 수단이 병렬로 디코딩하도록 상기 영상 스트림의 디코딩을 제어하는 것을 특징으로 하는 디코딩 방법.
  17. 제11항에 있어서,
    상기 프레임 위치 정보는 상기 영상 스트림의 선두에 대한 상기 프레임의 상대적인 위치를 나타내는 정보를 포함하고;
    상기 단위 영역 위치 정보는 상기 영상 스트림의 선두에 대한 상기 단위 영역의 상대적인 위치를 나타내는 정보를 포함하는 것을 특징으로 하는 디코딩 방법.
  18. 제17항에 있어서,
    상기 프레임 위치 정보는 상기 프레임에 할당된 번호 및 상기 프레임의 데이터 길이를 나타내는 정보를 더 포함하고;
    상기 단위 영역 위치 정보는 상기 프레임 내의 적어도 하나의 상기 단위 영역에 할당된 번호 및 상기 적어도 하나의 단위 영역의 데이터 길이를 나타내는 정보를 포함하는 것을 특징으로 하는 디코딩 방법.
  19. 제11항에 있어서,
    상기 프레임 위치 정보는 데이터 기록 매체에 상기 프레임을 기록하는 위치를 나타내는 정보를 포함하고;
    상기 단위 영역 위치 정보는 상기 데이터 기록 매체에 상기 적어도 하나의 단위 영역을 기록하는 위치를 나타내는 정보를 포함하는 것을 특징으로 하는 디코딩 방법.
  20. 제19항에 있어서,
    상기 프레임 위치 정보는 상기 프레임에 할당된 번호 및 상기 프레임의 데이터 길이를 나타내는 정보를 더 포함하고;
    상기 단위 영역 위치 정보는 상기 프레임 내의 상기 적어도 하나의 단위 영역에 할당된 번호 및 상기 적어도 하나의 단위 영역의 데이터 길이를 나타내는 정보를 더 포함하는 디코딩 방법.
  21. 영상 스트림을 디코딩하는 디코딩 장치로서,
    상기 영상 스트림 내의 프레임의 위치를 나타내는 프레임 위치 정보, 및 상기 영상 스트림을 디코딩할 때 처리 단위로서 사용되는 단위 영역의 위치를 나타내는 단위 영역 위치 정보에 기초하여, 상기 영상 스트림의 디코딩을 시작하는 디코딩 시작 위치를 검출하는 검출 수단(detecting means); 및
    상기 디코딩 시작 위치에서 디코딩을 시작하도록 상기 영상 스트림의 디코딩을 제어하는 디코딩 제어 수단(decoding control means)
    을 포함하는 디코딩 장치.
  22. 영상 스트림의 1 픽처에 대응하는 영역을 제1 디코딩 수단의 수로 분할하여 얻어지고, 각각이, 상기 제1 디코딩 수단 및 제2 디코딩 수단이 상기 영상 스트림을 디코딩할 때, 상기 제1 디코딩 수단 및 상기 제2 디코딩 수단의 처리 단위로서 사용되는 단위 영역을 복수 개 포함하는 분할 영역을 설정하는 단계;
    미리 정해진 중간 스테이지(intermediate stage)까지, 각 분할 영역 내의 상기 단위 영역의 디코딩이 디코딩 수단 중 다른 것에 의한 디코딩과 병렬로 실행되도록, 상기 제1 디코딩 수단을 제어하는 전반 제어(first half control)를 수행하는 단계; 및
    상기 제1 디코딩 수단에 의한 디코딩과 병렬로, 상기 미리 정해진 중간 스테이지까지 디코딩된 상기 단위 영역의 디코딩이 실행되도록 상기 제2 디코딩 수단을 제어하는 후반 제어(latter half control)를 수행하는 단계
    를 포함하는 디코딩 제어 방법.
  23. 제22항에 있어서,
    상기 영상 스트림은 MPEG 표준에 따라 인코딩된 것을 특징으로 하는 디코딩 제어 방법.
  24. 제22항에 있어서,
    상기 전반 제어를 수행하는 단계에서, 슬라이스의 가변 길이 디코딩 및 역양자화를 수행하도록 상기 제1 디코딩 수단을 제어하며;
    상기 후반 제어를 수행하는 단계에서, 상기 슬라이스에 대한 역이산코사인변환(inverse-discrete-cosine-transform)을 포함하는 디코딩을 수행하도록 상기 제2 디코딩 수단을 제어하는 것을 특징으로 하는 디코딩 제어 방법.
  25. 제23항에 있어서,
    상기 단위 영역은 슬라이스인 것을 특징으로 하는 디코딩 제어 방법.
  26. 제22항에 있어서,
    상기 디코딩 제어 방법은 상기 제1 디코딩 수단 및 상기 제2 디코딩 수단과는 상이한 하드웨어로 구현되는 것을 특징으로 하는 디코딩 제어 방법.
  27. 제25항에 있어서,
    상기 제2 디코딩 수단은 그래픽스 처리 유닛(graphics processing unit)로 구현되는 것을 특징으로 하는 디코딩 제어 방법.
  28. 제22항에 있어서,
    상기 후반 제어를 수행하는 단계에서, 상기 제2 디코딩 수단은 각각 상기 단위 영역들의 디코딩을 종료하는 스테이지를 나타내는 정보를 제공받는 것을 특징으로 하는 디코딩 제어 방법.
  29. 영상 스트림의 1 픽처에 대응하는 영역을, 제1 디코딩 수단의 수로 분할하여 취득되며, 각각이, 상기 제1 디코딩 수단 및 제2 디코딩 수단이 상기 영상 스트림을 디코딩할 때, 상기 제1 디코딩 수단 및 제2 디코딩 수단의 처리 단위로서 사용되는 단위 영역을 복수 개 포함하는 분할 영역을 설정하는 설정 수단(setting means); 및
    미리 정해진 중간 스테이지까지, 각 분할 영역 내의 상기 단위 영역의 디코딩이 디코딩 수단 중 다른 것에 의한 디코딩과 병렬로 실행되도록, 상기 제1 디코딩 수단을 제어하고, 상기 제1 디코딩 수단에 의한 디코딩과 병렬로, 상기 미리 정해진 중간 스테이지까지 디코딩된 상기 단위 영역의 나머지 스테이지 디코딩을 실행하도록, 상기 제2 디코딩 수단을 제어하는 디코딩 제어 수단(decoding control means)
    을 포함하는 디코딩 제어 장치.
  30. 영상 스트림을 인코딩하는 인코더(encoder); 및
    상기 영상 스트림 내의 프레임의 위치를 나타내는 프레임 위치 정보, 및 상기 영상 스트림을 디코딩할 때 처리 단위로서 사용되는 단위 영역의 위치를 나타내는 단위 영역 위치 정보의 기록을 제어하는 기록 제어기(recording controller)
    를 포함하는 인코딩 장치.
  31. 영상 스트림을 디코딩하는 디코딩 장치로서,
    상기 영상 스트림 내의 프레임의 위치를 나타내는 프레임 위치 정보, 및 상기 영상 스트림을 디코딩할 때 처리 단위로서 사용되는 단위 영역의 위치를 나타내는 단위 영역 위치 정보에 기초하여, 상기 영상 스트림의 디코딩을 시작하는 디코딩 시작 위치를 검출하는 검출기(detector); 및
    상기 디코딩 시작 위치에서 디코딩을 시작하도록 상기 영상 스트림의 디코딩을 제어하는 디코딩 제어기(decoding controller)
    를 포함하는 디코딩 장치.
  32. 영상 스트림의 1 픽처에 대응하는 영역을 제1 디코더의 수로 분할하여 취득되며, 각각이, 상기 제1 디코더 및 제2 디코더가 상기 영상 스트림을 디코딩할 때 상기 제1 디코더 및 상기 제2 디코더의 처리 단위로서 사용되는 단위 영역을 복수 개 포함하는 분할 영역을 설정하는 설정부(setting section); 및
    미리 정해진 중간 스테이지까지, 각 분할 영역 내의 상기 단위 영역의 디코딩이 디코더 중 다른 것에 의한 디코딩과 병렬로 실행되도록, 상기 제1 디코더를 제어하고, 상기 제1 디코더에 의한 디코딩과 병렬로, 상기 미리 정해진 중간 스테이지까지 디코딩된 상기 단위 영역의 나머지 스테이지 디코딩을 실행하도록, 상기 제2 디코더를 제어하는 디코딩 제어부(decoding control section)
    를 포함하는 디코딩 제어 장치.
KR20060033989A 2005-04-15 2006-04-14 인코딩 장치 및 방법, 그리고 디코딩 장치 및 방법 KR20060109338A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2005119002 2005-04-15
JPJP-P-2005-00119002 2005-04-15
JPJP-P-2005-00241992 2005-08-24
JP2005241992A JP4374548B2 (ja) 2005-04-15 2005-08-24 復号装置および方法、記録媒体、並びに、プログラム

Publications (1)

Publication Number Publication Date
KR20060109338A true KR20060109338A (ko) 2006-10-19

Family

ID=36992782

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20060033989A KR20060109338A (ko) 2005-04-15 2006-04-14 인코딩 장치 및 방법, 그리고 디코딩 장치 및 방법

Country Status (5)

Country Link
US (1) US8670653B2 (ko)
EP (1) EP1720360A1 (ko)
JP (1) JP4374548B2 (ko)
KR (1) KR20060109338A (ko)
TW (1) TWI321428B (ko)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080152014A1 (en) * 2006-12-21 2008-06-26 On Demand Microelectronics Method and apparatus for encoding and decoding of video streams
US20080199154A1 (en) * 2007-01-24 2008-08-21 Yuichi Kanai Apparatus and method with frame-by-frame display control
US8411734B2 (en) 2007-02-06 2013-04-02 Microsoft Corporation Scalable multi-thread video decoding
US8265144B2 (en) 2007-06-30 2012-09-11 Microsoft Corporation Innovations in video decoder implementations
US9648325B2 (en) * 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
US9092408B2 (en) * 2007-08-03 2015-07-28 Sap Se Data listeners for type dependency processing
JP2009048469A (ja) * 2007-08-21 2009-03-05 Fujitsu Ltd 情報処理装置及び情報処理方法
KR100939917B1 (ko) 2008-03-07 2010-02-03 에스케이 텔레콤주식회사 움직임 예측을 통한 부호화 시스템 및 움직임 예측을 통한부호화 방법
US8094712B2 (en) * 2008-03-31 2012-01-10 Himax Technologies Limited Apparatus for processing a data stream having a hierarchical layer structure and including encoded data sets and raw data sets and method thereof
US8331446B2 (en) * 2008-08-31 2012-12-11 Netlogic Microsystems, Inc. Method and device for reordering video information
JP5067361B2 (ja) 2008-12-25 2012-11-07 ソニー株式会社 エンコーダ及びデコーダ、符号方法及び復号方法、並びに記録媒体
CN103067792B (zh) * 2010-04-01 2016-03-09 鸿富锦精密工业(深圳)有限公司 媒体数据播放装置及其回放方法
US8885729B2 (en) 2010-12-13 2014-11-11 Microsoft Corporation Low-latency video decoding
US9706214B2 (en) 2010-12-24 2017-07-11 Microsoft Technology Licensing, Llc Image and video decoding implementations
KR101803970B1 (ko) * 2011-03-16 2017-12-28 삼성전자주식회사 컨텐트를 구성하는 장치 및 방법
CA2840427C (en) 2011-06-30 2018-03-06 Microsoft Corporation Reducing latency in video encoding and decoding
US8731067B2 (en) 2011-08-31 2014-05-20 Microsoft Corporation Memory management for video decoding
US9124895B2 (en) 2011-11-04 2015-09-01 Qualcomm Incorporated Video coding with network abstraction layer units that include multiple encoded picture partitions
US9819949B2 (en) 2011-12-16 2017-11-14 Microsoft Technology Licensing, Llc Hardware-accelerated decoding of scalable video bitstreams
KR102158629B1 (ko) 2011-12-29 2020-09-22 엘지전자 주식회사 비디오 인코딩 및 디코딩 방법과 이를 이용하는 장치
JP5979406B2 (ja) * 2012-02-22 2016-08-24 ソニー株式会社 画像処理装置、画像処理方法、および画像処理システム
WO2015107925A1 (ja) * 2014-01-16 2015-07-23 ソニー株式会社 データ処理装置、及び、データ処理方法
US10277913B2 (en) * 2014-10-22 2019-04-30 Samsung Electronics Co., Ltd. Application processor for performing real time in-loop filtering, method thereof and system including the same
KR102273670B1 (ko) * 2014-11-28 2021-07-05 삼성전자주식회사 움직임 보상 정보를 수정하는 데이터 처리 시스템과 데이터 처리 방법
FR3041850B1 (fr) * 2015-09-30 2018-05-25 Vogo Procede d'encodage de flux de donnees video basees sur des groupements d'images (gop)
JP2021145157A (ja) * 2018-06-14 2021-09-24 ソニーグループ株式会社 画像処理装置および方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0128244B1 (ko) * 1992-09-23 1998-04-02 배순훈 병렬 구조를 갖는 부호 화상 데이타의 복호 장치
JP3308129B2 (ja) 1995-03-27 2002-07-29 ソニー株式会社 画像信号復号化方法及び画像信号復号化装置
JPH08307868A (ja) 1995-04-28 1996-11-22 Nec Corp 動画像復号装置
US5768429A (en) * 1995-11-27 1998-06-16 Sun Microsystems, Inc. Apparatus and method for accelerating digital video decompression by performing operations in parallel
JPH11341437A (ja) 1998-05-25 1999-12-10 Sony Corp 符号化装置、符号化方法、復号装置及び復号方法
JP4427827B2 (ja) * 1998-07-15 2010-03-10 ソニー株式会社 データ処理方法、データ処理装置及び記録媒体
JP2000253405A (ja) 1999-03-01 2000-09-14 Matsushita Electric Ind Co Ltd ビデオ復号化のためのパイプライン回路
JP2001148833A (ja) 1999-09-12 2001-05-29 Sony Computer Entertainment Inc 圧縮画像データを復号処理する方法及び電子装置、並びに補助記録装置
US6643763B1 (en) 2000-02-28 2003-11-04 International Business Machines Corporation Register pipe for multi-processing engine environment
US7292772B2 (en) * 2000-05-29 2007-11-06 Sony Corporation Method and apparatus for decoding and recording medium for a coded video stream
JP4906197B2 (ja) 2000-05-29 2012-03-28 ソニー株式会社 復号装置および方法、並びに記録媒体
JP2003009147A (ja) 2001-06-19 2003-01-10 Sony Corp デコード装置及び方法
US7444068B2 (en) * 2002-06-28 2008-10-28 Hewlett-Packard Development Company, L.P. System and method of manual indexing of image data

Also Published As

Publication number Publication date
US20060233525A1 (en) 2006-10-19
US8670653B2 (en) 2014-03-11
JP2006319943A (ja) 2006-11-24
TWI321428B (en) 2010-03-01
EP1720360A1 (en) 2006-11-08
TW200644639A (en) 2006-12-16
JP4374548B2 (ja) 2009-12-02

Similar Documents

Publication Publication Date Title
KR20060109338A (ko) 인코딩 장치 및 방법, 그리고 디코딩 장치 및 방법
JP7159427B2 (ja) 画像復号装置、画像復号方法及びプログラム
JP6766211B2 (ja) 符号化装置、復号装置、符号化方法、復号方法、及びプログラム
TWI709335B (zh) 擴展四叉樹的限制
KR100232992B1 (ko) 동화상 디코딩 회로
EP4075802B1 (en) Image coding apparatus, image coding method, image decoding apparatus, image decoding method, and storage medium
BR122022001404B1 (pt) Dispositivo de decodificação de vídeo e método de decodificação de vídeo
JP2006319944A (ja) 復号制御装置および方法、記録媒体、並びに、プログラム
US20220132102A1 (en) Mpm list-based intra prediction method and device
JP2013102298A (ja) 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
US8849022B2 (en) Methods and apparatuses for encoding and decoding image based on segments
US20140321528A1 (en) Video encoding and/or decoding method and video encoding and/or decoding apparatus
JP2023107986A (ja) 変換に基づく映像コーディング方法及びその装置
JP2008252874A (ja) 動画像符号化方法、動画像復号化方法、動画像符号化装置及び動画像復号化装置
JP2007325119A (ja) 画像処理装置及び画像処理方法
JP2006262159A (ja) 動画像符号化装置及びその制御方法、コンピュータプログラム及び記憶媒体
US20100150237A1 (en) Selecting a macroblock encoding mode
WO2012140889A1 (en) Image encoding apparatus, image encoding method, image encoding program, image decoding apparatus, image decoding method, and image decoding program
KR20230023709A (ko) 영상/비디오 코딩 시스템에서 일반 제한 정보를 처리하는 방법 및 장치
JP2018082252A (ja) 画像符号化装置及びその制御方法及びプログラム

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right