KR20140077226A - 디코딩 장치, 디코딩 방법, 및 편집 장치 - Google Patents

디코딩 장치, 디코딩 방법, 및 편집 장치 Download PDF

Info

Publication number
KR20140077226A
KR20140077226A KR1020117029386A KR20117029386A KR20140077226A KR 20140077226 A KR20140077226 A KR 20140077226A KR 1020117029386 A KR1020117029386 A KR 1020117029386A KR 20117029386 A KR20117029386 A KR 20117029386A KR 20140077226 A KR20140077226 A KR 20140077226A
Authority
KR
South Korea
Prior art keywords
block
processing
decoding
blocks
slice
Prior art date
Application number
KR1020117029386A
Other languages
English (en)
Other versions
KR101645058B1 (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 KR20140077226A publication Critical patent/KR20140077226A/ko
Application granted granted Critical
Publication of KR101645058B1 publication Critical patent/KR101645058B1/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
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive 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/127Prioritisation of hardware or computational resources
    • 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/136Incoming video signal characteristics or properties
    • 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

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)

Abstract

이미지 데이터 또는 오디오 데이터의 인코딩된 데이터를 제공하기 위한 소스(22)로서, 상기 인코딩된 데이터는 독립적으로 디코딩될 수 있는 복수의 요소 데이터(element data)를 포함하고, 복수의 요소 데이터들 각각은 적어도 하나의 블록을 포함하는, 상기 소스(22); 적어도 하나의 블록 중 첫 번째로 처리될 제1 블록을 식별하는 블록 정보를 생성하기 위한 제1 처리 수단(31); 상기 블록 정보에 대응하는 요소 데이터에서의 디코딩 처리 순서에 기초하여 제1 블록에 후속하는 블록을 식별하는 블록 정보를 생성하기 위한 복수의 제2 처리 수단(32a, 32b); 상기 생성된 블록 정보 중에서 미참조 블록 정보를 참조함으로써 식별된 블록을 병렬로 디코딩하기 위한 복수의 디코딩 수단(33a, 33b); 및 디코딩된 블록을 저장하고 상기 블록에 대응하는 디코딩된 요소 데이터를 형성하기 위한 저장 수단(22)을 포함하는 장치(10, 30)가 개시된다. 이와 같은 장치를 포함하는 편집 장치도 역시 개시된다.

Description

디코딩 장치, 디코딩 방법, 및 편집 장치{DECODING APPARATUS, DECODING METHOD, AND EDITING APPARATUS}
본 발명은, 인코딩된 데이터의 디코딩 장치 및 디코딩 방법에 관한 것으로, 특히, 복수의 프로세서가 병렬로 동작하는 인코딩된 데이터의 디코딩 처리에 관한 것이다.
CPU가 프로그램을 실행할 때의 처리 단위로서 프로세스(process)와 스레드(thread)가 있다. 복수의 프로세스는 운영 체제의 멀티태스킹 기능을 사용함으로써 병렬로 동작할 수 있다. 이것은, 처리를 수행하기 위해 복수의 프로세스가 병렬로 동작하는 멀티-프로세스라 불린다. 그러나, 메모리는 기본적으로 개개의 프로세스들 사이에서 공유되지 않기 때문에, 동일한 메모리상의 데이터로의 액세스를 요구하는 처리를 수행할 때 멀티-프로세스에서의 처리 효율은 낮다.
대조적으로, 하나의 프로그램은 복수의 스레드를 생성하고 각각의 스레드를 병렬로 동작하게 할 수 있다. 이것은, 처리를 수행하기 위해 복수의 스레드가 병렬로 동작하는 멀티-스레딩이라 불린다. 동일한 메모리상의 데이터로의 액세스를 요구하는 처리를 수행할 때, 처리 효율은 멀티-스레딩의 경우에서 더 높은데, 이것은 메모리가 개개의 스레드들 사이에서 공유되기 때문이다. 복수의 CPU에 개개의 스레드를 할당하여 처리를 수행함으로써, 처리 효율이 더욱 증가된다.
인용 목록
특허 문헌
PTL1 : 일본 미심사 특허 출원, 1차 공개 제2000-20323
PTL2 : 일본 미심사 특허 출원, 1차 공개 제2008-118616
이하에서, CPU 자원을 이용하여 처리를 실행하는 N개의 처리 단위(processing unit)들이, 하나의 처리를 독립적으로 실행될 수 있는 M개의 처리 단위들로 분할하여 하나의 처리를 처리하도록 효율적으로 사용되는 것이 고려된다. 여기서, N 및 M은 정수이며, N >=1 이고 M >=1이라 가정한다. M개 처리 단위들은 MPEG2의 슬라이스인 것으로 가정된다. N개 처리 단위들은 1대1 방식으로 N개 프로세서(CPU 코어)에 대응하는 것으로 가정된다.
모든 슬라이스의 처리가 완료될 때까지 처리를 가능한 한 동등하게 모든 장치들에 할당함으로써 처리 장치들이 효율적으로 사용될 수 있다. 추가적으로, 전체 처리 시간은, 처리 장치들의 유휴 시간을 감축시킴으로써 단축될 수 있다. 여기서, 슬라이스의 처리 동안에, 처리 장치들은 I/O 처리(입력/출력 처리) 등으로 인해 유휴 상태에 진입하지 않는다고 가정한다.
M =< N인 경우, 각각의 처리 장치 내의 각각의 슬라이스를 처리하도록 M개 슬라이스들이 N개 처리 단위들 중 M개 처리 단위에 1대1 방식으로 대응하게 만드는 것이 효율적이다.
M이 N보다 충분히 클 때, 만일 각각의 슬라이스의 처리 시간이 미리 알려져 있거나 각각의 슬라이스의 처리 시간이 어느 정도 정확하게 예측될 수 있다면, 처리 시간들을 가능하다면 동등하게 하기 위해, M개 슬라이스들은 N개 그룹들로 분할되고, 그 갯수는 처리 단위의 갯수와 같으며, N개 그룹들은 1대1 방식으로 N개 처리 단위와 연관된다. 이렇게 함으로써, 각각의 슬라이스는 M =< N인 경우와 마찬가지로 각각의 처리 단위에서 처리될 수 있다.
그러나, M이 N보다 충분히 크고, 예를 들어, 만일 M이 N의 정수배가 아니고, 각 슬라이스의 처리 시간이 미리 알려지지 않거나 또는 각 슬라이스의 처리 시간이 정확히 예측될 수 없다면, 슬라이스들을 처리 단위들에 효율적으로 할당하는 것은 어렵다. 이와 같은 경우, 복수의 슬라이스로 구성된 데이터가 처리될 때, 충분한 처리 속도가 얻어질 수 없다는 문제점이 있다.
따라서, 본 발명의 목적은, 신규하고 유용한 디코딩 장치, 디코딩 방법, 및 편집 장치를 제공하는 것이다. 본 발명의 구체적인 목적은, 인코딩된 데이터를 디코딩할 때 처리 속도를 개선시키는 디코딩 장치, 디코딩 방법, 및 편집 장치를 제공하는 것이다.
본 발명의 한 양태에 따르면, 이미지 데이터 또는 오디오 데이터의 인코딩된 데이터를 디코딩하기 위한 장치가 제공되며, 이 장치는, 독립적으로 디코딩될 수 있는 복수의 요소 데이터(element data)를 포함하는 상기 인코딩된 데이터를 제공하기 위한 소스로서, 복수의 요소 데이터들 각각은 적어도 하나의 블록을 포함하는, 상기 소스; 상기 적어도 하나의 블록 중 첫 번째로 처리될 제1 블록을 식별하는 블록 정보를 생성하기 위한 제1 처리 수단; 상기 블록 정보에 대응하는 요소 데이터에서의 디코딩 처리 순서에 기초하여 제1 블록에 후속하는 블록을 식별하는 블록 정보를 생성하기 위한 복수의 제2 처리 수단; 상기 생성된 블록 정보 중에서 하나의 미참조 블록 정보를 참조함으로써 식별된 블록을 병렬로 디코딩하기 위한 복수의 디코딩 수단; 및 디코딩된 블록을 저장하고 상기 블록에 대응하는 디코딩된 요소 데이터를 형성하기 위한 저장 수단을 포함한다.
본 발명에 따르면, 복수의 디코딩 수단은, 요소 데이터를 구성하는 블록을 처리 단위로서 이용하여 요소 데이터를 디코딩한다. 디코딩시에, 하나의 미참조 블록 정보를 참조함으로써 식별된 블록이 디코딩된다. 추가적으로, 제1 블록에 후속하는 블록을 식별하는 블록 정보가, 상기 블록 정보에 대응하는 데이터 요소에서의 디코딩 처리 순서에 기초하여 생성된다. 이러한 이유로, 각각의 블록은 블록 정보에 따라 미리결정된 처리 순서로 디코딩된다. 이런 식으로, 요소 데이터가 처리 단위로서 이용되는 경우에 비해, 요소 데이터를 구성하는 블록을 처리 단위로서 사용함으로써, 각각의 디코딩 수단이 처리를 위한 그 차례를 기다리고 있고 그에 따라 처리될 대상이 제공되지 않아 일부 디코딩 수단이 유휴 상태일 가능성을 저감시키는 것이 가능하다. 따라서, 전체 디코딩 수단의 총 유휴 시간이 감소된다. 그 결과, 전체 디코딩 수단을 이용하는데 있어서의 효율이 증가된다. 따라서, 인코딩된 데이터를 디코딩할 때 처리 속도를 개선시키는 것이 가능하게 된다.
본 발명의 또 다른 양태에 따르면, 이미지 데이터 또는 오디오 데이터의 인코딩된 데이터를 디코딩하기 위한 방법이 제공되며, 이 방법은, 상기 인코딩된 데이터에 포함된 복수의 요소 데이터 각각을 구성하는 적어도 하나의 블록 중에서 첫 번째로 처리될 블록을 식별하는 블록 정보를 프로세서에서 생성하는 단계로서, 상기 요소 데이터는 독립적으로 디코딩될 수 있고, 상기 블록에 대응하는 요소 데이터에서의 디코딩 처리의 순서가 상기 블록에 주어지는, 상기 생성하는 단계; 하나의 생성된 미참조 블록 정보를 참조함으로써 식별된 블록을 복수의 프로세서에서 병렬로 디코딩하는 단계; 디코딩 처리의 순서에 기초하여 상기 디코딩된 블록으로 구성된 요소 데이터에 속하는 후속 블록을 식별하는 블록 정보를 상기 복수의 프로세서에서 병렬로 생성하는 단계; 및 모든 블록들이 디코딩될 때까지, 상기 디코딩하는 단계와, 후속 블록을 식별하는 블록 정보를 생성하는 상기 단계를 반복하는 단계를 포함한다.
본 발명에 따르면, 복수의 프로세서들은, 요소 데이터를 구성하는 블록을 처리 단위로서 이용하여 요소 데이터를 디코딩한다. 디코딩시에, 하나의 미참조 블록 정보를 참조함으로써 식별된 블록이 디코딩된다. 그 다음, 디코딩된 블록으로 구성된 요소 데이터에 속하는 후속 블록을 식별하는 블록 정보가 생성된다. 이러한 이유로, 각각의 블록은 블록 정보에 따라 미리결정된 처리 순서로 디코딩된다. 이런 식으로, 요소 데이터가 처리 단위로서 이용되는 경우에 비해, 요소 데이터를 구성하는 블록을 처리 단위로서 이용함으로써, 각각의 디코딩 수단이 처리를 위한 그 차례를 기다리고 있고 그에 따라 처리될 대상이 제공되지 않아 일부 디코딩 수단이 유휴 상태일 확률을 저감시키는 것이 가능하다. 따라서, 전체 디코딩 수단의 총 유휴 시간이 감소된다. 그 결과, 전체 디코딩 수단을 이용하는데 있어서의 효율이 증가된다. 따라서, 인코딩된 데이터를 디코딩할 때 처리 속도를 개선시키는 것이 가능하게 된다.
본 발명에 따르면, 인코딩된 데이터를 디코딩할 때 처리 속도를 개선시키는 디코딩 장치, 디코딩 방법, 및 편집 장치를 제공하는 것이 가능하다.
도 1은, 본 발명의 제1 실시예에 따른 디코딩 장치의 구성을 예시하는 블록도이다.
도 2는, MPEG-2의 슬라이스와 매크로블록을 예시하는 도면이다.
도 3은, 본 발명의 제1 실시예에 따른 디코딩 장치의 기능적 구성을 예시하는 도면이다.
도 4는, 각각의 작업기 프로세서에 블록들이 할당되는 상황을 예시하는 상황을 예시하는 도면이다.
도 5a는, 본 발명의 제1 실시예에 따른 메인 프로세서의 디코딩 처리를 예시하는 플로차트이다.
도 5b는, 본 발명의 제1 실시예에 따른 작업기 프로세서의 디코딩 처리를 예시하는 플로차트이다.
도 6은, 본 발명의 제1 실시예에 따른 작업기 프로세서의 또 다른 디코딩 처리를 예시하는 플로차트이다.
도 7은, 슬라이스와 블록의 일례를 예시하는 도면이다.
도 8은, 2개의 작업기 프로세서 #0 및 #1이 3개의 슬라이스 A, B, 및 C의 디코딩 처리를 수행할 때 각각의 작업기 프로세서에 블록들이 할당되는 상황을 예시하는 도면이다.
도 9는, 큐의 상태를 예시하는 도면이다.
도 10은, 슬라이스당 K개 블록들에 관한 가속비 R을 예시하는 그래프이다.
도 11은, 슬라이스와 블록의 일례를 예시하는 도면이다.
도 12는, 2개의 작업기 프로세서 #0 및 #1이 3개의 슬라이스 A, B, 및 C의 디코딩 처리를 수행할 때 각각의 작업기 프로세서에 블록들이 할당되는 상황을 예시하는 도면이다.
도 13은, 큐의 상태를 예시하는 도면이다.
도 14는, 2개의 작업기 프로세서 #0 및 #1이 3개의 슬라이스 A, B, 및 C의 디코딩 처리를 수행할 때 각각의 작업기 프로세서에 블록들이 할당되는 상황을 예시하는 도면이다.
도 15는, 큐의 상태를 예시하는 도면이다.
도 16은, 슬라이스와 블록의 일례를 예시하는 도면이다.
도 17은, 2개의 작업기 프로세서 #0 및 #1이 3개의 슬라이스 A, B, 및 C의 디코딩 처리를 수행할 때 각각의 작업기 프로세서에 블록들이 할당되는 상황을 예시하는 도면이다.
도 18은, 큐의 상태를 예시하는 도면이다.
도 19는, 2개의 작업기 프로세서 #0 및 #1이 3개의 슬라이스 A, B, 및 C의 디코딩 처리를 수행할 때 각각의 작업기 프로세서에 블록들이 할당되는 상황을 예시하는 도면이다.
도 20은, 큐의 상태를 예시하는 도면이다.
도 21은, 슬라이스와 블록의 일례를 예시하는 도면이다.
도 22는, 2개의 작업기 프로세서 #0 및 #1이 3개의 슬라이스 A, B, 및 C의 디코딩 처리를 수행할 때 각각의 작업기 프로세서에 블록들이 할당되는 상황을 예시하는 도면이다.
도 23은, 큐의 상태를 예시하는 도면이다.
도 24는, 본 발명의 제2 실시예에 따른 편집 장치의 하드웨어 구성을 예시하는 블록도이다.
도 25는, 본 발명의 제2 실시예에 따른 편집 장치의 기능적 구성을 예시하는 도면이다.
도 26은, 본 발명의 제2 실시예에 따른 편집 장치의 편집 화면의 일례를 예시하는 도면이다.
도 27은, 본 발명의 제2 실시예에 따른 편집 방법을 예시하는 플로차트이다.
이하에서, 본 발명에 따른 실시예들이 도면에 기초하여 설명될 것이다.
{제1 실시예}
본 발명의 제1 실시예는, 인코딩된 이미지 데이터를 디코딩하기 위한 디코딩 장치 및 디코딩 방법의 예이다. 이하의 구체적인 예에서, 제1 실시예에 따른 디코딩 장치 및 디코딩 방법이 MPEG-2에 기초하여 인코딩된 이미지 데이터의 디코딩 처리를 실행하는 것을 가정하여, 설명이 이루어질 것이다.
도 1은, 본 발명의 제1 실시예에 따른 디코딩 장치의 구성을 예시하는 블록도이다.
도 1을 참조하면, 디코딩 장치(10)는, 디코딩 처리를 실행하는 복수의 CPU(20 및 21), 인코딩된 이미지 데이터를 저장하는 RAM(22), CPU(20 및 21)에 의해 실행된 프로그램을 저장하는 ROM(23), 및 CPU(20 및 21)와 RAM(22)과 ROM(23)을 서로 접속하는 버스(24)를 포함한다.
CPU(20 및 21)는, ROM(23) 내에 기록된 프로그램을 RAM(22) 내로 로딩하여 디코딩 처리를 실행한다. CPU(20 및 21) 각각은 하나의 프로세서(CPU 코어)를 포함하지만, CPU(20 및 21) 중 적어도 하나는, 2개 이상의 프로세서를 갖는 CPU 모듈로서 구성될 수 있다. 디코딩 장치(10)가 갖는 프로세서의 갯수는 2개 이상의 임의 갯수일 수 있다.
RAM(22)은, 예를 들어, 인코딩된 이미지 데이터를 저장한다.
인코딩된 이미지 데이터는, 이미지 데이터를 형성하는 요소들인 복수의 슬라이스를 포함한다. 슬라이스는 복수의 블록들로 구성되고, 블록 단위로 디코딩된다. 설명의 간소화를 위해, 슬라이스 및 블록은 다음과 같이 정의된다. 즉, 슬라이스는 MPEG-2의 슬라이스이다. 추가적으로, 블록은 MPEG-2의 매크로블록이다.
도 2는, MPEG-2 슬라이스와 매크로블록을 예시하는 도면이다.
도 2를 참조하면, MPEG-2에서, 화면(1000)은 슬라이스(1100)로 구성되고, 각각의 슬라이스는 16-라인 폭을 가진다. 슬라이스(1100)는 16 라인 X 16 픽셀의 매크로블록(1200)으로 구성된다.
제1 실시예에서, 슬라이스를 형성하는 블록 단위로, 디코딩 처리가 처리 장치에 할당된다. 블록의 데이터 크기는 슬라이스의 데이터 크기보다 작다. 디코딩 처리를 블록 단위로 처리 장치에 할당함으로써, 처리 장치로의 디코딩 처리의 할당이 이전보다 더욱 효율적이게 된다. 이하에서, 설명의 간소화를 위해, 인코딩된 프레임의 I(인트라) 프레임만이 사용된다고 가정한다. 이하의 설명은 P (예측) 프레임 및 B (양방향 예측) 프레임의 디코딩 처리에도 마찬가지로 적용될 수 있다는 점에 유의해야 한다.
도 3은, 본 발명의 제1 실시예에 따른 디코딩 장치의 기능적 구성을 예시하는 도면이다.
도 3을 참조하면, 디코딩 장치(10)는 디코딩 처리 장치(30)로서 동작한다. CPU(20)는, RAM(22)에 로딩된 프로그램에 의해, 메인 프로세서(31), 작업기 프로세서(32a), 및 슬라이스 디코더(33a)로서 동작한다. CPU(21)는, RAM(22)에 로딩된 프로그램에 의해, 작업기 프로세서(32b), 및 슬라이스 디코더(33b)로서 동작한다.
메인 프로세서(31)는, 각 슬라이스의 블록들의 디코딩 처리를 개시하기 위해 요구되는 처리를 실행한다. 비록 도 3에서는 메인 프로세서(31)가 CPU(20)에 할당되어 있지만, 메인 프로세서(31)는 CPU(21)에 할당될 수도 있다. 작업기 프로세서(32a 및 32b)는 슬라이스 디코더(33a 및 33b)에 블록들을 할당하고, 슬라이스 디코더(33a 및 33b)는 할당된 블록들의 디코딩 처리를 실행한다.
슬라이스 디코더(33a 및 33b)는 작업기 프로세서(32a 및 32b)에 의해 할당된 블록들의 디코딩 처리를 실행한다. 각각의 작업기 프로세서와 각각의 슬라이스 디코더는 1대1 대응 관계를 가진다. 즉, 작업기 프로세서(32a)는 슬라이스 디코더(33a)와 대응 관계를 갖고, 슬라이스 디코더(33a)에 블록들을 할당하며, 슬라이스 디코더(33a)가 할당된 블록들의 디코딩 처리를 실행하게 한다. 추가로, 작업기 프로세서(32b)는 슬라이스 디코더(33b)와 대응 관계를 갖고, 슬라이스 디코더(33b)에 블록들을 할당하며, 슬라이스 디코더(33b)가 할당된 블록들의 디코딩 처리를 실행하게 한다. 비록, 이 예에서는 슬라이스 디코더가 소프트웨어에 의해 구현되는 것으로 가정하지만, 하드웨어에 의해 구현될 수도 있다.
RAM(22)은, 큐(34), 슬라이스 버퍼(35), 비디오 메모리(36), 슬라이스 콘텍스트(37), 및 카운터(38)를 가진다.
래퍼 블록(wrapper block)은 큐(34)에 저장된다. 래퍼 블록은 처리될 블록에 관한 정보를 포함한다. 인코딩된 슬라이스는 슬라이스 버퍼(35)에 저장된다. 디코딩된 슬라이스는 비디오 메모리(36)에 저장된다. 슬라이스의 디코딩 처리의 상태에 관한 정보는 슬라이스 콘텍스트(37)에 저장된다. 구체적으로, 슬라이스의 디코딩 처리의 상태에 관한 정보는, 슬라이스의 코드의 시작 위치에 관한 정보와, 슬라이스의 출력 목적지의 비디오 메모리(36) 상의 위치에 관한 정보를 포함한다. 카운터(38)에 저장된 값은 디코딩 처리의 개시때 초기화되고, 각각의 슬라이스의 디코딩 처리가 완료될 때마다 업데이트된다.
더 구체적으로, 슬라이스 디코더(33a 및 33b)에 의한 디코딩 처리는 다음과 같이 수행된다. 슬라이스의 코드의 시작 위치에 관한 정보와, 슬라이스의 출력 목적지의 비디오 메모리(36) 상의 위치에 관한 정보가 슬라이스 콘텍스트(37)에 주어지고, 슬라이스 콘텍스트(37)가 초기화된다. 슬라이스 디코더(33a 및 33b)는, 주어진 슬라이스 콘텍스트(37)에 따라 슬라이스의 첫번째 블록으로부터 한번에 하나씩 순차적으로 블록을 디코딩하고, 디코딩된 블록을 비디오 메모리(36)에 출력한다. 슬라이스 디코더(33a 및 33b)는 슬라이스의 블록이 디코딩될 때마다 슬라이스 콘텍스트(37)를 업데이트한다.
<슬라이스를 형성하는 블록들>
비록 MPEG-2의 슬라이스들이 독립적으로 디코딩될 수 있는 데이터이지만, 동일한 슬라이스에 속하는 블록(매크로블록)들은, 슬라이스의 첫번째 블록을 제외하고는 다음과 같은 3가지 의존성을 가진다.
(1) DC 예측: 현재 블록의 DC 성분은, 래스터 순서에서 현재 블록 직전에 있는 블록으로부터 예측된다.
(2) 양자화 크기: 블록의 양자화 크기는, 래스터 순서에서 그 블록의 직전에 있는 블록의 양자화 크기와 동일한 양자화 크기를 사용할 때 생략될 수 있다.
(3) 코드의 시작 위치: 어떤 블록의 코드의 시작 위치는, 선행 블록들의 모든 코드가 디코딩되지 않는 한 결정될 수 없다.
DC 예측, 양자화 크기, 및 코드의 시작 위치는 슬라이스 콘텍스트로서 저장된다.
인코딩된 스트림의 각각의 슬라이스를 디코딩하기 위하여, MPEG 헤더(시퀀스 헤더, 픽쳐 헤더 등))에 포함되는 슬라이스들에 공통된 정보(크로마 서브샘플링, DC 예측, 양자화 매트릭스 등)가 요구된다. 설명의 간소화를 위해, 이 정보는 슬라이스가 디코딩되기 이전에 분석되며, 이 정보는 슬라이스 디코더에 암묵적으로 주어진다고 가정한다.
각 슬라이스의 코드의 시작 위치는 스트림 내의 슬라이스 헤더에 의해 시그널링된다. 스트림으로부터 슬라이스 헤더를 발견함으로써, 각 슬라이스의 코드의 시작 위치가 얻어질 수 있다. 그러나, 슬라이스 내의 블록의 코드의 시작 위치는, 디코딩 처리가 수행되기 이전에 알 수는 없다.
본 발명의 제1 실시예에서, 슬라이스 S는 K개 블록들로 분할된다. 한개의 슬라이스 S를 분할하여 얻어지는 K개 블록들은 S0 /K, S1 /K, ... 및 S(K-1)/K라 언급된다. 만일 블록들의 갯수 K가 1보다 크거나 같다면 K로서 임의의 정수가 선택될 수 있지만, 다음과 같은 점을 고려하는 것이 바람직하다는 점에 유의한다.
슬라이스를 블록들로 분할하기 위한 임의의 방법이 사용될 수 있지만, 분할 폭을 적절하게 결정하는 것이 필요하다. 분할 폭은 블록의 처리 시간과 관련되어 있기 때문에, 분할 폭이 너무 크다면, 각각의 작업기 프로세서에 처리를 동등하게 할당하는 것이 어려워진다. 대조적으로, 분할 폭이 너무 작다면, 큐로의 액세스, 슬라이스의 처리 상태(슬라이스 콘텍스트)의 저장 및 복구, 슬라이스의 처리시 캐시 미스 등으로 인한 오버헤드가 증가한다.
<블록(래퍼 블록)의 의존성>
한개의 슬라이스 S를 형성하는 K개 블록들 S0 /K, S1 /K, ... , S(K-1)/K 간에는 의존성(순차성)이 존재한다. 의존성이란, 2개의 블록들 중 하나의 처리는, 다른 하나의 처리를 개시하기 이전에 완료된다는 것을 의미한다. 의존성은 S0 /K -> S1 /K - > ... S(K-1)/K로서 표현된다. Sk /K -> S(k+1)/K (k=0,..., K-1)은, 블록 Sk /K의 처리가 블록 S(k+1)/K의 처리를 개시하기 이전에 완료된다는 것을 나타낸다.
래퍼 블록은, 각 슬라이스 S의 블록들의 처리 의존성에 관한 정보를 가지며, 특히, 처리될 블록을 식별하기 위한 정보를 포함한다. 각 슬라이스 S의 래퍼 블록 Wk/K는 큐(34)로부터 가져오고, 후속 처리가 실행된다.
0 =< k < K-1인 경우: 블록 Sk /K가 처리된다. 그 다음, 다음으로 처리될 블록 S(k+1)/K에 관한 래퍼 블록 W(k+1)/K가 큐에 추가된다.
k = K-1인 경우: 블록 Sk /K가 처리되고 슬라이스 S의 디코딩 처리가 완료된다.
디코딩 처리의 초기 상태에서, 각 슬라이스의 첫번째 래퍼 블록 W0 /K가 생성되어 큐(34)에 저장된다. 작업기 프로세서(32a 및 32b)는 큐(34)로부터 슬라이스 S의 래퍼 블록 Wk /K를 가져와서, 래퍼 블록 Wk /K에 의해 지정된 슬라이스 S의 블록 Sk /K의 처리를 수행한 다음, 슬라이스 S의 다음 블록 S(k+1)/K의 처리에 관한 래퍼 블록 W(k+1)/K를 큐에 추가한다. 이런 식으로, 슬라이스 S의 블록 Sk /K의 처리가 슬라이스 S의 블록 S(k+1)/K의 처리를 개시하기 전에 완료되는 의존성이 보장된다.
<큐 제어>
도 4는, 각각의 작업기 프로세서에 래퍼 블록들이 할당되는 상황을 예시하는 상황을 예시하는 도면이다. 도 4를 참조하면, 처리되기를 기다리는 래퍼 블록들이 큐(34)에 놓이고, 작업기 프로세서(32a 및 32b)는 큐(34)로부터 래퍼 블록을 가져와서 처리한다.
도 4에 도시된 예에서, 큐(34)는 3개의 래퍼 블록들을 저장할 수 있다. 래퍼 블록이 큐(34)에 추가될 때, 래퍼 블록은 래퍼 블록들로 형성된 라인의 끝에 추가된다. 추가적으로, 큐(34)로부터 레퍼 블록을 가져올 때, 래퍼 블록들로 형성된 라인의 선두에 있는 래퍼 블록을 가져온다. 그러나, 래퍼 블록들에는 우선순위가 연관되어 있고, 큐(34)에 저장된 래퍼 블록들을, 래퍼 블록들과 연관된 내림차순 우선 순위로 가져올 수 있다. 도 4는, 3개의 래퍼 블록 A, B, 및 C가 큐(34)에 저장되어 있는 상황에서 래퍼 블록 라인의 선두에 있는 블록 A를 가져와, 가져온 래퍼 블록 A를 작업기 프로세서(32a)로 처리하는 상황을 도시한다.
복수의 작업기 프로세서가 큐(34)로부터 래퍼 블록을 가져오거나 큐(34)에 래퍼 블록을 추가하기 위해 큐(34)에 동시에 액세스할 때, 그 액세스는 상호 배타적이다. 즉, 한번에 한개 작업기 프로세서로부터의 액세스만이 허용되고, 다른 작업기 프로세서들은 큐(34)에 액세스할 수 없다. 이러한 제어에 의해, 2개 이상의 작업기 프로세서는 큐(34)로부터 동일한 래퍼 블록을 가져와서 처리할 수 없기 때문에, 큐(34)의 상태의 일관성이 유지된다.
<처리 블록들에서의 우선순위>
복수의 슬라이스들 각각에 대응하는 블록들 각각이 큐(34)에 저장될 때, 슬라이스를 분할하여 얻어지는 블록들에 우선순위 인덱스를 부여하고, 더 높은 우선순위를 갖는 블록을 우선적으로 처리함으로써, 작업기 프로세서(32a 및 32b)로의 처리의 할당은 더욱 효과적으로 되는 경향이 있다. 본 발명의 제1 실시예에서, 3개의 우선순위 P0, P1, 및 P2가 정의된다. 각각의 우선순위가 각각의 블록에 할당된다.
우선순위 P0은 슬라이스 내의 블록들의 처리의 진행률에 기초한 인덱스이다. 블록 Sk /K의 우선순위 P0 ( Sk /K)는, 수학식(1)에서, 블록 Sk /K를 포함한 후속 블록들의 처리 시간과, 전체 슬라이스 S의 처리 시간의 비율로서 정의된다.
Figure pct00001
수학식 (1)에서, T(Sj /K)는 블록 Sj /K의 처리 시간이고, T(S)는 전체 슬라이스 S의 처리 시간이다. 사실상, T(Sj /K)와 T(S)가 알려지지 않더라도, 그 비율이 어느 정도 정확히 계산될 수 있다면 우선순위 P0가 계산될 수 있다. 수학식 (1)은 수학식 (2)와 같다.
Figure pct00002
수학식 (2)는, 낮은 진행률을 갖는 슬라이스의 블록이 우선적으로 처리된다는 것을 나타낸다. 각 블록들의 처리 시간은 동일하다고 가정할 때, K개 블록들 중에서 블록 S0 /K 내지 블록 Sk -1/K를 포함하는 k개 블록들의 처리가 완료되었을 때, 처리율은 k/K로서 표현된다. 따라서, 수학식 (3)으로 정의된 우선순위 P0가 수학식 (2)로부터 얻어진다.
Figure pct00003
우선순위 P1은 슬라이스 내의 미처리 블록들의 처리 시간에 기초한 인덱스이다. 블록 Sk /K의 우선순위 P1 ( Sk /K)는, 수학식(4)에서, 블록 Sk /K를 포함한 후속 블록들의 처리 시간으로서 정의된다.
Figure pct00004
수학식 (4)에서, T(Sj /K)는 블록 Sj /K의 처리 시간이다.
T(Sj /K)가 알려지지 않을 때, T(Sj /K)는, 예를 들어, 그 처리가 완료된 블록들의 처리 시간으로부터 예측될 수 있다. 수학식 (4)는, 긴(예측된) 잔여 처리 시간을 갖는 슬라이스의 블록이 우선적으로 처리된다는 것을 나타낸다.
우선순위 P2는, 블록에 대응하는 래퍼 블록이 큐(34)에 추가되는 타이밍에 기초한 인덱스이다. 블록 Sk /K의 우선순위 P2 ( Sk /K)는 수학식 (5)에서, 블록 Sk /K에 대응하는 래퍼 블록이 큐(34)에 추가되는 시간 tk /K로서 정의된다.
Figure pct00005
수학식 (5)에 따라 마지막으로 처리된 블록이 속하는 슬라이스와 동일한 슬라이스의 블록의 처리를 우선적으로 처리함으로써, 캐시 효율이 증가되고 처리 속도가 개선된다.
블록의 분할 폭(블록의 처리 시간)이 어느 정도 크고, 동일한 우선순위 P0를 갖는 복수의 블록이 전체 슬라이스 내에 존재할 때, 예를 들어, 우선순위 P1 및 P2를 도입함으로써, 블록들의 처리는 작업기 프로세서(32a 및 32b)에 더욱 동등하게 할당될 수 있다.
도 5a는, 본 발명의 제1 실시예에 따른 메인 프로세서(31)의 디코딩 처리를 예시하는 플로차트이다.
도 5a를 참조하면, 메인 프로세서(31)는 처리 S10을 실행한다. 처리 S10은, 후술되는 단계들 S100, S101, S105, S110, S115, S116, S120, 및 S125를 포함한다.
먼저, 단계 S100에서, 하나의 장면 또는 클립의 디코딩 처리가 완료되었는지의 여부에 관한 판정의 결과에 따라 처리가 분기된다.
하나의 장면 또는 클립의 디코딩 처리가 완료되지 않았을 때, 단계 S101에서, 메인 프로세서(31)는 하나의 장면 또는 클립을 형성하는 한 프레임 내에서 처리될 슬라이스들을 선택한다.
그 다음, 단계 S105에서, 메인 프로세서(31)는, 처리될 슬라이스들의 갯수와 동일한 값을 카운터(38)에 저장한다.
그 다음, 단계 S110에서, 메인 프로세서(31)는 각 슬라이스의 첫번째 래퍼 블록을 생성한다. 이 때, 슬라이스들의 갯수와 동일한 갯수의 래퍼 블록들이 생성된다.
생성된 래퍼 블록에는 슬라이스 콘텍스트가 포함된다. 디코딩될 슬라이스의 코드가 저장되는 슬라이스 버퍼(35) 상의 위치에 관한 정보, 슬라이스의 출력 목적지의 비디오 메모리(36) 상의 위치에 관한 정보, 래퍼 블록이 속하는 슬라이스의 디코딩 처리의 진행률, 및 우선순위들이 슬라이스 콘텍스트에 포함된다.
슬라이스 버퍼(35) 상의 위치는, 디코딩될 슬라이스의 블록의 시작 위치를 나타낸다. 비디오 메모리(36) 상의 위치는, 디코딩된 블록이 저장되는 위치를 나타낸다.
진행률은, 예를 들어, (디코딩된 블록의 갯수) / (슬라이스 내에 포함된 모든 블록들의 갯수)로서 계산된다. 대안으로서, 진행률은, 예를 들어, (디코딩된 블록들의 코드 길이의 누적값) / (슬라이스 내에 포함된 모든 블록들의 코드 길이의 합계)로서 계산될 수 있다.
진행률을 계산하는데 이용되는, 슬라이스 내에 포함된 모든 블록들의 개수 또는 슬라이스 내에 포함된 모든 블록들의 코드 길이의 합계는, 전체 슬라이스의 디코딩 처리를 개시하기 이전에, 슬라이스 콘텍스트(37)에 저장된다. 블록이 디코딩될 때마다, 디코딩된 블록들의 갯수 또는 디코딩된 블록들의 코드 길이의 누계값이 업데이트되고 슬라이스 콘텍스트(37) 내에 저장된다.
우선순위는, (1 - 진행률)에 의해 얻어진 값으로서 정의된다. 이 우선순위는 우선순위 P0와 같다. 이 예에서, 우선순위 P0만이 사용되지만, 우선순위 P0에 추가하여, 우선순위 P1 및/또는 우선순위 P2도 사용될 수 있다.
단계 S110에서, 각 슬라이스의 진행률이 0이기 때문에, 각 슬라이스의 첫번째 래퍼 블록과 연관된 우선순위는 1이다. 큐(34)로부터 각 슬라이스의 첫번째 래퍼 블록을 가져올 때, 큐(34) 내에 놓인 순서대로 각 래퍼 블록을 가져온다.
그 다음, 단계 S115에서, 메인 프로세서(31)는 생성된 래퍼 블록들을 큐(34) 내에 둔다.
그 다음, 단계 S116에서, 메인 프로세서(31)는, 단계 S101에서 선택된 슬라이스의 디코딩 처리의 완료를 나타내는 통보를 작업기 프로세서(32a 및 32b)로부터 기다린다.
단계 S101에서 선택된 슬라이스의 디코딩 처리의 완료가 작업기 프로세서(32a 및 32b)로부터 통보될 때, 처리는 단계 S120으로 진행한다. 단계 S120에서, 한 프레임의 모든 슬라이스들의 디코딩 처리가 완료되었는지의 여부에 관한 판정의 결과에 따라 처리가 분기된다. 만일 다른 슬라이스들의 디코딩 처리가 후속하여 수행될 예정이라면, 단계 S101로부터의 처리가 다시 한번 실행된다. 만일 한 프레임의 모든 슬라이스들의 디코딩 처리가 완료되었다면, 단계 S100으로부터의 처리가 다시 한번 실행된다.
하나의 장면 또는 클립의 디코딩 처리가 단계 S100에서 완료되었을 때, 단계 S125에서, 메인 프로세서(31)는, 작업기 프로세서(32a 및 32b)의 갯수와 동일한 갯수의, 완료에 대한 래퍼 블록들을 생성하고, 이들을 큐(34) 내에 둔다. 예를 들어, 완료를 명시하는 정보가 완료에 대한 래퍼 블록에 포함되기 때문에, 완료에 대한 래퍼 블록을, 단계 S110에서 생성된 래퍼 블록과 구별하는 것이 가능하다. 완료에 대한 래퍼 블록을 큐(34) 내에 둔 후에, 메인 프로세서(31)는 처리 S10을 완료한다.
도 5b는, 본 발명의 제1 실시예에 따른 작업기 프로세서(32a 및 32b)의 디코딩 처리를 예시하는 플로차트이다.
도 5b를 참조하면, 작업기 프로세서(32a 및 32b)는 각각 처리(S20a 및 S20b)를 실행하고, 작업기 프로세서(32a 및 32b)는 처리(S20a 및 S20b)를 병렬로 실행한다. 처리 S20a는, 후술되는 단계들 S200, S205, S206, S210, S215, S220, S225, S230, S235, S240, S245, 및 S250을 포함한다. 처리 S20b는 처리 S20a와 동일하기 때문에, 상세한 흐름은 생략된다.
먼저, 비록 도시되지는 않았지만, 큐(34)에 어떠한 래퍼 블록도 없을 때, 작업기 프로세서(32a 및 32b)는 큐(34)에 래퍼 블록이 추가될 때까지 기다린다.
큐(34)에 래퍼 블록이 있을 때, 단계 S200에서, 작업기 프로세서(32a 및 32b)는 큐(34)의 선두로부터 래퍼 블록을 가져온다.
후속해서, 작업기 프로세서(32a 및 32b)는, 단계 S200에서 큐(34)로부터 가져온 래퍼 블록이, 완료를 위한 래퍼 블록인지의 여부를 검사한다. 만일 단계 S200에서 큐(34)로부터 가져온 래퍼 블록이 완료를 위한 래퍼 블록이라면, 단계 S206에서, 작업기 프로세서(32a 및 32b)는, 작업기 프로세서들 자신들에 의해 사용되는 RAM(22)의 영역을 릴리스하는 것과 같은, 완료 처리를 수행하고, 처리 S20a 및 S20b를 완료한다.
만일 단계 S200에서 큐(34)로부터 가져온 래퍼 블록이 완료를 위한 래퍼 블록이 아니라면, 단계 S210에서, 작업기 프로세서(32a 및 32b)는 슬라이스 디코더(33a 및 33b)로 하여금, 큐(34)로부터 가져온 래퍼 블록에 의해 표시된 처리될 블록의 디코딩 처리를 수행하게 한다.
구체적으로, 단계 S210에서, 다음과 같은 처리가 수행된다. 생성된 래퍼 블록에는 슬라이스 콘텍스트가 포함된다. 전술된 바와 같이, 디코딩될 슬라이스의 코드가 저장된 슬라이스 버퍼(35) 상의 위치에 관한 정보와, 슬라이스의 출력 목적지의 비디오 메모리(36) 상의 위치에 관한 정보가 슬라이스 콘텍스트에 저장된다. 작업기 프로세서(32a 및 32b)는 슬라이스 디코더(33a 및 33b)에 이와 같은 정보를 제공한다.
슬라이스 디코더(33a 및 33b)는 슬라이스 버퍼(35)로부터 인코딩된 슬라이스의 데이터를 비트 또는 바이트 단위로 판독하고, 판독된 데이터의 디코딩 처리를 수행한다. 블록의 디코딩 처리가 완료될 때, 슬라이스 디코더(33a 및 33b)는 디코딩된 블록의 데이터를 비디오 메모리(36)에 저장하고, 슬라이스 콘텍스트(37)를 업데이트한다.
작업기 프로세서(32a 및 32b)에 의해 슬라이스 디코더(33a 및 33b)에 주어지는, 슬라이스의 출력 목적지의 비디오 메모리(36) 상의 위치에 관한 정보는, 프레임 내의 슬라이스의 위치와 슬라이스 내의 블록의 위치에 대응하는 비디오 메모리(36) 상의 위치를 나타낸다. 슬라이스 디코더(33a 및 33b)는 디코딩된 블록의 데이터를 전술된 정보에 의해 표시된 위치에 저장한다. 한 프레임을 형성하는 모든 슬라이스의 모든 블록의 디코딩 처리가 완료되면, 비디오 메모리(36)에 저장된 각 블록은, 각각의 인코딩된 슬라이스에 대응하는 디코딩된 슬라이스를 형성한다.
그 다음, 단계 S215에서, 작업기 프로세서(32a 및 32b)는, 슬라이스 콘텍스트(37)에 기초하여, 디코딩된 블록이 속하는 슬라이스의 진행률을 계산한다. 전술된 바와 같이, 진행률은, 예를 들어, (디코딩된 블록의 갯수)/(슬라이스 내에 포함된 모든 블록들의 갯수) 또는 (디코딩된 블록의 코드 길의 누계값)/(슬라이스 내에 포함된 모든 블록의 코드 길이의 합계)로서 계산된다. 우선순위는, (1-진행률)에 의해 얻어진 값으로서 계산된다.
그 다음, 단계 S220에서, 슬라이스의 마지막 래퍼 블록이 처리되었는지의 여부에 관한 판정의 결과에 따라 처리가 분기된다. 슬라이스의 마지막 래퍼 블록이 처리되었는지의 여부에 관한 판정은, 진행률 값을 이용하여 수행될 수 있다. 즉, 만일 진행률이 1보다 작다면, 슬라이스의 마지막 래퍼 블록은 아직 처리되지 않았다. 대조적으로, 만일 진행률이 1이면, 슬라이스의 마지막 래퍼 블록은 처리되었다.
슬라이스의 마지막 래퍼 블록이 처리되었을 때, 단계 S225에서, 작업기 프로세서(32a 및 32b)는 카운터(38)의 값을 1 감소시킨다. 복수의 작업기 프로세서가 카운터(38)에 동시에 액세스할 때, 그 액세스는 상호 배타적이다.
그 다음, 단계 S230에서, 작업기 프로세서(32a 및 32b)는 카운터(38)의 값을 검사한다. 각 슬라이스의 마지막 블록이 디코딩될 때마다, 단계 S105에서 슬라이스의 갯수와 동일한 값으로 설정되었던 카운터(38)의 값이, 단계 S225에서, 1 감소된다. 따라서, 만일 카운터의 값이 0이 아니라면, 디코딩 처리가 완료되지 않은 슬라이스가 있다는 것이고, 그에 따라, 단계 S200로부터의 처리가 다시 한번 실행된다. 추가적으로, 카운터 값이 0이 된다면, 모든 슬라이스들의 래퍼 블록들의 처리가 완료되었고, 따라서, 단계 S250에서, 작업기 프로세서(32a 및 32b)는 메인 프로세서(31)에게, 도 5a의 단계 S101에서 선택된 슬라이스의 디코딩 처리의 완료를 통보한다. 그 다음, 단계 S200으로부터의 처리가 다시 한번 실행된다.
슬라이스의 마지막 래퍼 블록이 단계 S220에서 아직 처리되지 않았을 때, 단계 S235에서, 작업기 프로세서(32a 및 32b)는, 단계 S210에서 디코딩된 블록에 후속하는 블록, 즉, 단계 S210에서 디코딩된 블록이 속하는 슬라이스와 동일한 슬라이스에 속하는 블록을 식별하는 정보를 포함하는 래퍼 블록을 생성한다.
생성된 래퍼 블록에는 슬라이스 콘텍스트가 포함된다. 이 슬라이스 콘텍스트는, 디코딩될 슬라이스의 코드가 저장되는 슬라이스 버퍼(35) 상의 위치에 관한 정보, 슬라이스의 출력 목적지의 비디오 메모리(36) 상의 위치에 관한 정보, 래퍼 블록이 속하는 슬라이스의 디코딩 처리의 진행률, 및 디코딩 처리 후에 업데이트된 슬라이스 콘텍스트(37)로부터 얻어지는 단계 S215에서 계산된 우선순위들을 포함한다.
그 다음, 단계 S240에서, 작업기 프로세서(32a 및 32b)는 생성된 래퍼 블록을 큐(34) 내에 둔다.
그 다음, 단계 S245에서, 작업기 프로세서(32a 및 32b)는, 단계 S240에서 큐(34)에 추가된 래퍼 블록들을 포함한 큐(34) 내의 래퍼 블록들을, 각각의 래퍼 블록과 연관된 우선순위의 내림차순으로 정렬한다. 그 다음, 단계 S200으로부터의 처리가 다시 한번 실행된다.
슬라이스들을 포함하는 한개의 전체 프레임의 인코딩된 이미지 데이터는 다음과 같이 디코딩된다. 예를 들어, 하나의 프레임은 U개의 슬라이스들로 형성되고, 번호 1, 2, ..., U가 각각의 프레임 상부로부터 순차적으로 슬라이스에 주어진다고 가정한다. 디코딩 처리는, V개(V = < U) 슬라이스들 또는 그 이하의 슬라이스들을 단위로 실행된다. 예를 들어, 첫번째 슬라이스로부터 V번째 슬라이스까지의 V개 슬라이스들이 처리될 대상으로 선택되고(도 5a의 단계 S101에 대응), 도 5a에 도시된 플로차트에 따라 처리된다. V개 슬라이스들의 디코딩 처리가 완료된 후에, (V+1)번째 슬라이스로부터 2V번째 슬라이스까지의 V개 슬라이스들이 처리될 대상으로 선택되고(도 5a의 단계 S101에 대응), 도 5a에 도시된 플로차트에 따라 처리된다. 잔여 슬라이스들의 갯수가 V개 이하일 때, 잔여 슬라이스들 모두가 처리될 대상으로 선택되고 (도 5a의 단계 S101에 대응), 도 5a에 도시된 플로차트에 따라 처리된다. 전술된 바와 같이, 한개의 전체 프레임의 인코딩된 이미지 데이터가 디코딩된다.
인코딩된 동영상 데이터의 디코딩 처리를 수행하는 경우, 한개의 전체 프레임의 인코딩된 이미지 데이터의 디코딩 처리가 완료되었을 때, 다음 프레임에 관련된 전체 프레임의 인코딩된 이미지 데이터의 디코딩 처리가 개시된다. 전술된 처리는 실행가능한 처리의 일례이므로, 전술된 처리만으로 제한되는 것은 아니다. 예를 들어, 각각의 슬라이스의 디코딩 처리는 독립적으로 실행될 수 있기 때문에, 디코딩 처리가 반드시, 프레임 내에서 연속 배열된 슬라이스를 단위로 하여, 실행될 필요는 없다.
도 6은, 본 발명의 제1 실시예에 따른 작업기 프로세서(32a 및 32b)의 또 다른 디코딩 처리를 예시하는 플로차트이다.
도 6을 참조하면, 제1 실시예에 따른 또 다른 디코딩 방법은 우선순위를 이용하지 않는다. 이 점은 도 5b에 도시된 이전 플로차트와 상이하다. 따라서, 큐(34)로부터 래퍼 블록을 가져올 때, 큐(34) 내에 놓인 순서대로 각 래퍼 블록을 가져온다. 도 6에서, 도 5b에 도시된 처리와 동일한 처리에는 동일한 단계 번호가 부여되므로, 이하에서 그 설명은 생략될 것이고, 도 5b에 도시된 플로차트와 상이한 점만이 설명될 것이다.
비록 슬라이스의 진행률과 우선순위가 단계 S215에서 계산되지만, 도 6에 도시된 플로차트에서는 우선순위는 이용되지 않으며, 단계 S255에서 진행률만이 계산된다. 추가적으로, 도 6에 도시된 플로차트에서, 도 5b의 단계 S245의 처리는 실행되지 않는다.
<디코딩 처리의 예>
작업기 프로세서의 행동(복수의 작업기 프로세서가 큐에 동시에 액세스할 때의 중재, 블록의 처리 시간 등)은, 인터럽트의 발생과 같은 요인들 때문에 비-결정적이며, 구현에 따라 변화할 수 있다. 제1 실시예에서, 큐가 사용되는 전형적인 디코딩 처리의 예가 도시되어 있다. 게다가, 설명의 간소화를 위해, 큐에 액세스하는데 필요한 시간은 무시된다고 가정한다.
M=3이고 N=2인 경우 슬라이스의 디코딩 처리의 예가 이하에 도시된다. 이하의 예에 도시된 슬라이스 처리 방법은 반드시 최적인 것은 아니다. 이하에서, 설명의 간소화를 위해, 슬라이스를 분할하여 얻어지는 블록 및 레퍼 블록은, 구분없이, 간단히 블록이라 기술될 것이다.
도 7은, 슬라이스와 블록의 일례를 예시하는 도면이다. 도 7을 참조하면, 3개의 슬라이스 A, B, 및 C가, 동일한 처리 시간을 요하는, 동일한 분할 폭을 갖는 2개의 블록으로 분할될 수 있다. 예를 들어, 슬라이스 A는 블록 A0/2 및 블록 A1/2로 분할될 수 있다. 각 블록의 우상귀에 부여된 참조 번호는 각 블록의 처리 순서를 나타낸다. 예를 들어, 블록 A0/2의 경우, "0/2"는 처리 순서를 나타낸다. "0/2"에서 "2"는 총 블록수를 나타낸다. 블록 A0/2는 블록 A1/2보다 일찍 처리된다.
슬라이스 B는 블록 B0/2 및 블록 B1/2로 분할될 수 있다. 블록 B0/2는 블록 B1/2보다 일찍 처리된다. 슬라이스 C는 블록 C0 /2 및 블록 C1 /2로 분할될 수 있다. 블록 C0/2는 블록 C1 /2보다 일찍 처리된다.
도 8은, 2개의 작업기 프로세서 #0 및 #1이 3개의 슬라이스 A, B, 및 C를 처리할 때 각각의 작업기 프로세서에 블록들이 할당되는 상황을 예시하는 도면이다.
도 9는, 큐의 상태를 예시하는 도면이다.
모든 슬라이스들의 첫번째 블록들 A0/2, B0/2, C0 /2는 시간 t=t0에서 큐에 추가된다(도 5a의 단계 S115에 대응).
선두 블록 A0/2 및 다음 블록 B0/2가 시간 t = t0 + 델타 t(시간 t=t0 직후)에서 큐로부터 가져와지고, 블록 A0/2의 처리는 작업기 프로세서 #0에 할당되며, 블록 B0/2의 처리는 작업기 프로세서 #1에 할당된다(도 6의 단계 S205에 대응). 블록의 처리가 각각의 작업기 프로세서에 할당될 때, 각각의 작업기 프로세서는 처리를 병렬로 개시한다(도 6의 단계 S210에 대응).
블록 A0/2 및 블록 B0/2의 처리가 시간 t = t1에서 완료된 후에, 블록 A0/2 후에 처리될 블록 A1/2와 블록 B0/2 후에 처리될 블록 B1/2가 큐에 추가된다(도 6의 단계 S240에 대응). 시간 t = t0에서 후미 블록이었던 블록 C0 /2는 시간 t = t1에서 선두 블록이 되고, 블록 A1/2 및 블록 B1/2가 블록 C0 /2 후에 추가된다.
선두 블록 C0 /2 및 다음 블록 A1/2가 시간 t = t1 + 델타 t에서 큐로부터 가져와지고, 블록 C0 /2의 처리는 작업기 프로세서 #0에 할당되며, 블록 A1/2의 처리는 작업기 프로세서 #1에 할당된다(도 6의 단계 S205에 대응). 블록들의 처리가 각각의 작업기 프로세서에 할당될 때, 각각의 작업기 프로세서는 각각의 블록의 처리를 병렬로 수행한다(도 6의 단계 S210에 대응).
블록 C0 /2 및 블록 A1/2의 처리가 시간 t = t2에서 완료된 후에, 블록 C0 /2 후에 처리될 블록 C1 /2가 큐에 추가된다(도 6의 단계 S240에 대응). 블록 A1/2의 처리가 완료되었기 때문에, 슬라이스 A의 처리가 완료된다. 시간 t = t1에서 후미 블록이었던 블록 B1/2는 시간 t = t2에서 선두 블록이 되고, 블록 C1 /2가 블록 B1/2 후에 추가된다.
선두 블록 B1/2 및 다음 블록 C1 /2가 시간 t = t2 + 델타 t에서 큐로부터 가져와지고, 블록 B1/2의 처리는 작업기 프로세서 #0에 할당되며, 블록 C1 /2의 처리는 작업기 프로세서 #1에 할당된다(도 6의 단계 S205에 대응). 블록들의 처리가 각각의 작업기 프로세서에 할당될 때, 각각의 작업기 프로세서는 각각의 블록의 처리를 병렬로 수행한다(도 6의 단계 S210에 대응).
블록 B1/2 및 블록 C1 /2의 처리가 완료된 후, 슬라이스 B 및 슬라이스 C의 처리가 완료된다. 슬라이스 A의 처리가 이 시점보다 앞서 완료되기 때문에, 모든 슬라이스들의 처리는, 블록 B1/2 및 블록 C1 / 2 의 처리가 완료되었을 때 완료된다.
이 예에서, 모든 슬라이스들은 동일한 처리 시간을 갖는 블록들로 동등하게 분할되기 때문에, 블록들의 총 갯수는 작업기 프로세서들의 배수이다. 따라서, 도 8에 도시된 바와 같이, 블록들의 처리는 2개의 작업기 프로세서에 동등하게 할당될 수 있다.
<디코딩 처리 성능>
제1 실시예의 디코딩 방법에 의한 처리 성능이 예를 통해 이하에서 기술될 것이다. 이하의 설명에서, 작업기 프로세서의 처리는 스레드에 의해 실행된다고 가정한다. 추가적으로, 작업 프로세서의 갯수 N과 슬라이스들의 갯수 M간의 관계는, M >= N이며, 모든 슬라이스들의 실행 시간(실행 시간의 예측된 값)은 동등하며, 그 시간은 T이다. 이 예에서, 모든 슬라이스들은 K개 블록들로 동등하게 분할되고, 각각의 블록은 실행 시간 T/K를 요구한다. 설명의 간소화를 위해, 작업기 프로세서에 의한 처리의 전환에 요구되는 시간 및 큐로의 액세스 시간과 같은 오버헤드는 무시될 수 있다고 가정한다.
전형적으로, 작업기 프로세서에 할당되는 시간 양자(time quantum)는 약 수십 밀리초 내지 약 수백 밀리초이다. 비디오 프레임은 전형적으로 초당 30 프레임으로 구성되고, 실시간으로 이미지를 재생하기 위하여 적어도 1/30초, 즉, 약 33밀리초만에 한 프레임을 디코딩하는 것이 필요하다. 비디오 편집 시스템과 같은 실제 응용에서, 복수의 비디오 클립을 동시에 재생하거나 비디오 효과 및 천이를 적용하기 위해서는 33밀리초보다 짧은 디코딩 처리 시간이 요구된다.
참조예로서, 시간 양자가 한개 슬라이스의 처리 시간 T 보다 길거나 같을 때 M개 작업기 프로세서들에 의한 M개 슬라이스의 처리를 실행하는 경우를 고려한다. 시간 양자는 시간 슬라이스라고도 불리며, OS가 작업기 프로세서들에 의한 처리의 실행을 전환하는 간격을 의미한다. 먼저, N개의 프로세서들과 동일한 갯수의 슬라이스들의 처리는, 각각의 슬라이스에 대응하는 작업기 프로세서에 의해 개시된다.
N개 슬라이스들은 병렬로 처리되고, 그 처리는 시간 양자가 소진되기 이전에 완료된다. N개 슬라이스들의 처리가 완료될 때, 잔여 슬라이스들의 갯수가 N보다 작아질 때까지, 또 다른 N개 슬라이스들이 유사하게 병렬로 처리된다.
이하의 논의에서, 다음과 같은 심볼들(P1 및 P2)이 사용된다. 심볼(P1)은 X를 초과하지 않는 최대 정수를 나타내고, 심볼(P2)는 X보다 작지 않은 최소 정수를 나타낸다.
Figure pct00006
Figure pct00007
M이 N에 의해 나머지 없이 분할될 수 있는 경우, 병렬 처리가 M / N회 수행된다면 모든 슬라이스들의 처리가 완료된다. M이 N에 의해 나머지 없이 분할될 수 없는 경우, 병렬 처리가 D회(수학식(6)) 수행된 후에, E개(수학식(7)) 슬라이스들이 최종적으로 병렬 처리된다. 마지막 병렬 처리에서, 슬라이스들을 할당받지 않은 F개(수학식(8))의 작업 프로세서들은 유휴 상태이다.
Figure pct00008
Figure pct00009
Figure pct00010
참조예에서, 총 처리 시간 T1은 수학식(9)로 표시된다.
Figure pct00011
본 발명에서, MK 블록들의 처리는, 블록들간 의존성을 유지하면서 N개의 작업 프로세서에 의해 병렬로 처리될 수 있다. 한개 슬라이스의 처리 시간은 T이고, 한 개의 슬라이스는 K개의 블록들로 구성되므로, 각 블록의 처리 시간은 T/K이다. 각각의 작업기 프로세서는 하나의 CPU에 대응하기 때문에, 작업기 프로세서간의 전환은 슬라이스의 처리 중에는 발생하지 않는다. 참조예의 성능 논의에서 사용된 수학식 (9)에서 M을 MK로 대체하고, T를 T/K로 대체함으로써, 본 발명의 총 처리 시간 T2는 수학식 (10)에 도시된 바와 같이 계산될 수 있다.
Figure pct00012
참조예의 처리 성능과 본 발명의 처리 성능을 비교하기 위한 인덱스인 가속비 R은 수학식(11)에 의해 정의된다.
Figure pct00013
참조예의 처리 시간 T1이 본 발명의 처리 시간 T2와 같을 때, R=1이다. 따라서, 참조예의 처리 성능은 본 발명의 처리 성능과 같다. 추가적으로, 참조예의 처리 시간 T1이 본 발명의 처리 시간 T2보다 길게 될 때, R > 1이다. 따라서, 본 발명의 처리 성능은 참조예의 처리 성능을 능가한다.
이하에서, N 및 M의 일부 조합에 대해 K와 가속비 R간의 관계가 도시된다. 도 10은, 슬라이스당 K개 블록들에 관한 가속비 R을 예시하는 그래프이다.
K = 1에서, 가속비는 1이 된다. 따라서, 참조예의 처리 성능은 본 발명의 처리 성능과 같다. 총 블록수 MK가 N의 배수일 때, 가속비 R은 최대값 Rmax이다(수학식 (12)).
Figure pct00014
N=2이고 M=3인 경우, 그리고 N=4이고 M=10인 경우, K가 2 이상이 될 때, 가속비는 1을 초과한다. 따라서, 본 발명의 처리 성능은 참조예의 처리 성능을 능가한다. N=3이고 M=8인 경우, K가 3 이상이 될 때, 가속비는 1을 초과한다. 따라서, 본 발명의 처리 성능은 참조예의 처리 성능을 능가한다. 추가적으로, K가 더 커질수록, 즉, 슬라이스의 분할이 더욱 미세하게 될수록, 가속비 R은 Rmax에 더욱 근접한다.
이런 식으로, 본 발명에서, 각각의 슬라이스가, 미리결정된 갯수보다 크거나 같은 갯수의 블록들로 분할될 수 있을 때, 작업기 프로세서로의 처리의 할당은 효율적이게 되고, 가속비는 참조예에 비해 개선된다.
<우선순위 P0를 이용한 슬라이스 디코딩 처리의 예>
제1 실시예에 따른 디코딩 처리 방법으로서, 우선순위 P0가 사용되지 않을 때의 디코딩 처리의 예와, 우선순위 P0가 사용될 때의 디코딩 처리의 예가 도시된다. 설명의 간소화를 위해, 큐에 액세스하는데 필요한 시간과 블록의 재정렬에 필요한 시간은 무시할 수 있다고 가정한다.
도 11은, 슬라이스와 블록의 일례를 예시하는 도면이다. 도 11을 참조하면, 3개의 슬라이스 A, B, 및 C가 있다. 슬라이스들 A 및 B는 3개의 블록으로 구성되고, 슬라이스 C는 4개의 블록으로 구성된다. 슬라이스 A, B, 및 C의 블록들의 분할 폭(블록들의 처리 시간)은 동등하다. 따라서, 슬라이스 C의 처리 시간은 슬라이스 A 및 B의 처리 시간보다 길다.
슬라이스 A는 블록 A0/3, 블록 A1/3, 및 블록 A2/3으로 분할된다. 슬라이스 A의 각 블록은, 블록 A0/3, 블록 A1/3, 및 블록 A2/3의 순서로 처리된다. 슬라이스 B는 블록 B0/3, 블록 B1/3, 및 블록 B2/3으로 분할된다. 슬라이스 B의 각 블록은, 블록 B0/3, 블록 B1/3, 및 블록 B2/3의 순서로 처리된다. 슬라이스 C는 블록 C0 /4, 블록 C1 /4, 블록 C2 /4, 및 블록 C3 /4로 분할된다. 슬라이스 C의 각 블록은, 블록 C0 /4, 블록 C1 /4, 블록 C2/4, 및 블록 C3 /4의 순서로 처리된다.
도 12는, 2개의 작업기 프로세서 #0 및 #1이 3개의 슬라이스 A, B, 및 C를 처리할 때 각각의 작업기 프로세서에 블록들이 할당되는 상황을 예시하는 도면이다.
도 13은, 큐의 상태를 예시하는 도면이다. 도 12 및 13에 도시된 예에서, 우선순위 P0은 사용되지 않는다.
모든 슬라이스들의 첫번째 블록들 A0/3, B0/3, C0 /4가 시간 t=t0에서 큐에 추가된다(도 5a의 단계 S115에 대응).
선두 블록 A0/3 및 다음 블록 B0/3이 시간 t = t0 + 델타 t에서 큐로부터 가져와지고, 블록 A0/3의 처리는 작업기 프로세서 #0에 할당되며, 블록 B0/3의 처리는 작업기 프로세서 #1에 할당된다(도 5b의 단계 S205에 대응). 블록의 처리가 각각의 작업기 프로세서에 할당될 때, 각각의 작업기 프로세서는 처리를 병렬로 개시한다(도 6의 단계 S210에 대응).
A0/3 및 B0/3의 처리가 시간 t = t1에서 완료된 후에, 블록 A0/3 후에 처리될 블록 A1/3과 블록 B0/3 후에 처리될 블록 B1/3이 큐에 추가된다(도 6의 단계 S240에 대응). 시간 t = t0에서 후미 블록이었던 블록 C0 /4는 시간 t = t1에서 선두 블록이 되고, 블록 A1/3 및 블록 B1/3이 블록 C0 /4 후에 추가된다.
선두 블록 C0 /4 및 다음 블록 A1/3이 시간 t = t1 + 델타 t에서 큐로부터 가져와지고, 블록 C0 /4의 처리는 작업기 프로세서 #0에 할당되며, 블록 A1/3의 처리는 작업기 프로세서 #1에 할당된다(도 6의 단계 S205에 대응). 블록들의 처리가 각각의 작업기 프로세서에 할당될 때, 각각의 작업기 프로세서는 각각의 블록의 처리를 병렬로 수행한다(도 6의 단계 S210에 대응).
블록 C0 /4 및 블록 A1/3의 처리가 시간 t = t2에서 완료된 후에, 블록 C0 /4 후에 처리될 블록 C1 /4와 블록 A1/3 후에 처리될 블록 A2/3이 큐에 추가된다(도 6의 단계 S240에 대응). 시간 t = t1에서 후미 블록이었던 블록 B1/3은 시간 t = t2에서 선두 블록이 되고, 블록 C1 /4 및 블록 A2/3이 블록 B1/3 후에 추가된다.
선두 블록 B1/3 및 다음 블록 C1 /4이 시간 t = t2 + 델타 t에서 큐로부터 가져와지고, 블록 B1/3의 처리는 작업기 프로세서 #0에 할당되며, 블록 C1 /4의 처리는 작업기 프로세서 #1에 할당된다(도 6의 단계 S205에 대응). 블록들의 처리가 각각의 작업기 프로세서에 할당될 때, 각각의 작업기 프로세서는 각각의 블록의 처리를 병렬로 수행한다(도 6의 단계 S210에 대응).
블록 B1/3 및 블록 C1 /4의 처리가 시간 t = t3에서 완료된 후에, 블록 B1/3 후에 처리될 블록 B2/3과 블록 C1 /4 후에 처리될 블록 C2 /4가 큐에 추가된다(도 6의 단계 S240에 대응). 시간 t = t2에서 후미 블록이었던 블록 A2/3은 시간 t = t3에서 선두 블록이 되고, 블록 B2/3 및 블록 C2 /4가 블록 A2/3 후에 추가된다.
선두 블록 A2/3 및 다음 블록 B2/3이 시간 t = t3 + 델타 t에서 큐로부터 가져와지고, 블록 A2/3의 처리는 작업기 프로세서 #0에 할당되며, 블록 B2/3의 처리는 작업기 프로세서 #1에 할당된다(도 6의 단계 S205에 대응). 블록들의 처리가 각각의 작업기 프로세서에 할당될 때, 각각의 작업기 프로세서는 각각의 블록의 처리를 병렬로 수행한다(도 6의 단계 S210에 대응).
블록 A2/3 및 블록 B2/3의 처리가 t = t4에서 완료된 후, 슬라이스 A 및 슬라이스 B의 처리가 완료된다. 시간 t= t4에서 어떠한 블록도 큐에 추가되지 않기 때문에, 큐에 존재하는 유일한 블록은 C2 /4이다.
블록 C2 /4는 시간 t=t4 + 델타 t에서 큐로부터 가져와지고, 블록 C2 /4의 처리는 작업기 프로세서 #0에 할당된다(도 6의 단계 S205에 대응). 블록 C2 /4의 처리가 작업기 프로세서 #0에 할당될 때, 작업기 프로세서 #0는 블록 C2 /4의 처리를 수행한다(도 6의 단계 S210에 대응). 작업기 프로세서 #1에는 블록의 처리가 할당되지 않기 때문에, 작업기 프로세서 #1은 유휴 상태이다.
블록 C2 /4의 처리가 시간 t = t5에서 완료된 후에, 블록 C2 /4 후에 처리될 블록 C3 /4가 큐에 추가된다(도 6의 단계 S240에 대응). 시간 t = t5에서, 큐에 있는 유일한 블록은 블록 C3 /4이다.
블록 C3 /4는 시간 t=t5 + 델타 t에서 큐로부터 가져와지고(fetched), 블록 C3 /4의 처리는 작업기 프로세서 #0에 할당된다(도 6의 단계 S205에 대응). 블록 C3 /4의 처리가 작업기 프로세서 #0에 할당될 때, 작업기 프로세서 #0는 블록 C3 /4의 처리를 수행한다(도 6의 단계 S210에 대응). 작업기 프로세서 #1에는 블록의 처리가 할당되지 않기 때문에, 작업기 프로세서 #1은 유휴 상태이다.
블록 C3 /4의 처리가 완료된 후, 슬라이스 C의 처리가 완료된다. 슬라이스 A 및 B의 처리가 이 시점보다 앞서 완료되기 때문에, 모든 슬라이스들의 처리는, 블록 C3 / 4 의 처리가 완료되었을 때 완료된다.
이 예에서, 슬라이스 C의 처리는 슬라이스 A 및 B의 처리보다 상대적으로 나중에 처리되기 때문에, 병렬로 처리될 수 없는 슬라이스 C의 블록 C2 /4 및 C3 /4는 슬라이스 A 및 B가 완료되었을 때 남아 있게 된다.
우선순위 P0가 사용될 때 디코딩 처리의 예가 이하에 도시된다. 도 14는, 2개의 작업기 프로세서 #0 및 #1이 3개의 슬라이스 A, B, 및 C의 디코딩 처리를 수행할 때 각각의 작업기 프로세서에 블록들이 할당되는 상황을 예시하는 도면이다. 도 15는, 큐의 상태를 예시하는 도면이다. 도 14 및 15에 도시된 예에서, 우선순위 P0가 사용된다. 우선순위 P0를 이용할 때의 디코딩 처리의 예에서 사용된 슬라이스들은 도 11에 도시된 슬라이스들과 동일하다.
우선순위 P0은 다음과 같이 사용된다. 큐에 블록이 추가될 때, 블록들은 각 블록들의 우선순위 P0의 내림차순으로 정렬된다. 그 결과, 가장 높은 우선순위 P0를 갖는 블록은 큐의 선두에 놓이고, 우선적으로 가져와지게 된다. 동일한 우선순위 P0를 갖는 복수의 블록들이 존재할 때, 그 복수의 블록들은 큐에 추가되어 있는 순서로 정렬된다. 큐에 블록이 추가될 때 큐 내의 블록들의 순서가 반드시 변경될 필요는 없으며, 큐로부터 블록을 가져오기 직전에 변경될 수도 있다. 전술된 큐의 구현은 반드시 최적인 것은 아니다. 예를 들어, 히프(heap)와 같은 데이터 구조를 이용하는 것이 구현을 더욱 효율적이게 할 수 있다.
모든 슬라이스들의 첫번째 블록들 A0/3, B0/3, C0 /4는 시간 t=t0에서 큐에 추가된다(도 5a의 단계 S115에 대응). 이 때, 블록들은, 블록들 A0/3, B0/3, C0 /4의 순서로 큐에 추가된다고 가정한다. 수학식 (1)에 따르면, 각 블록들의 우선순위 P0은, P0(A0/3) = P0(B0/3) = P0(C0 /4) = 1이다. 3개 블록들의 우선순위 P0은 같기 때문에, 큐 내에서의 블록들의 순서는 변하지 않는다.
선두 블록 A0/3 및 다음 블록 B0/3이 시간 t = t0 + 델타 t에서 큐로부터 가져와지고, 블록 A0/3의 처리는 작업기 프로세서 #0에 할당되며, 블록 B0/3의 처리는 작업기 프로세서 #1에 할당된다(도 5b의 단계 S205에 대응). 블록들의 처리가 각각의 작업기 프로세서에 할당될 때, 각각의 작업기 프로세서는 처리를 병렬로 개시한다(도 6의 단계 S210에 대응).
블록 A0/3 및 블록 B0/3의 처리가 시간 t = t1에서 완료된 후에, 블록 A0/3 후에 처리될 블록 A1/3과 블록 B0/3 후에 처리될 블록 B1/3이 큐에 추가된다(도 5b의 단계 S240에 대응). 이 때, 블록들은, 블록들 A1/3 및 B1/3의 순서로 큐에 추가된다고 가정한다. 시간 t = t1에서, 블록 C0 /4, 블록 A1/3 , 및 블록 B1/3이 큐에 놓인다. 수학식 (1)에 따르면, 각각의 블록들의 우선순위 P0은, P0(C0 /4) = 1이고 P0(A1/3) = P0(B1/3) = 2/3이기 때문에, 블록들은, 블록들 C0 /4, A1/3, 및 B1/3의 순서로 정렬된다(도 5b의 단계 S245에 대응).
선두 블록 C0 /4 및 다음 블록 A1/3이 시간 t = t1 + 델타 t에서 큐로부터 가져와지고, 블록 C0 /4의 처리는 작업기 프로세서 #0에 할당되며, 블록 A1/3의 처리는 작업기 프로세서 #1에 할당된다(도 5b의 단계 S205에 대응). 블록들의 처리가 각각의 작업기 프로세서에 할당될 때, 각각의 작업기 프로세서는 각각의 블록의 처리를 병렬로 수행한다(도 5b의 단계 S210에 대응).
블록 C0 /4 및 블록 A1/3의 처리가 시간 t = t2에서 완료된 후에, 블록 C0 /4 후에 처리될 블록 C1 /4와 블록 A1/3 후에 처리될 블록 A2/3가 큐에 추가된다(도 5b의 단계 S240에 대응). 시간 t = t2에서, 블록 B1/3, 블록 C1 /4 , 및 블록 A2/3이 큐에 놓인다. 수학식 (1)에 따르면, 각각의 블록들의 우선순위 P0은, P0(B1/3) = 2/3이고 P0(C1/4) = 3/4이고 P0(A2/3) = 1/3이기 때문에, 블록들은, 블록들 C1 /4, B1/3, 및 A2/3의 순서로 정렬된다(도 5b의 단계 S245에 대응).
선두 블록 C1 /4 및 다음 블록 B1/3이 시간 t = t2 + 델타 t에서 큐로부터 가져와지고, 블록 C1 /4의 처리는 작업기 프로세서 #0에 할당되며, 블록 B1/3의 처리는 작업기 프로세서 #1에 할당된다(도 5b의 단계 S205에 대응). 블록들의 처리가 각각의 작업기 프로세서에 할당될 때, 각각의 작업기 프로세서는 각각의 블록의 처리를 병렬로 수행한다(도 5b의 단계 S210에 대응).
블록 C1 /4 및 B1/3의 처리가 시간 t = t3에서 완료된 후에, 블록 C1 /4 후에 처리될 블록 C2 /4와 블록 B1/3 후에 처리될 블록 B2/3이 큐에 추가된다(도 5b의 단계 S240에 대응). 시간 t = t3에서, 블록 A2/3, 블록 C2 /4 , 및 블록 B2/3이 큐에 놓인다. 수학식 (1)에 따르면, 각각의 블록들의 우선순위 P0은, P0(A2/3) 및 P0(B2/3) = 1/3이고 P0(C2 /4) = 2/4이기 때문에, 블록들은, 블록들 C2 /4, A2/3, 및 B2/3의 순서로 정렬된다(도 5b의 단계 S245에 대응).
선두 블록 C2 /4 및 다음 블록 A2/3이 시간 t = t3 + 델타 t에서 큐로부터 가져와지고, 블록 C2 /4의 처리는 작업기 프로세서 #0에 할당되며, 블록 A2/3의 처리는 작업기 프로세서 #1에 할당된다(도 5b의 단계 S205에 대응). 블록들의 처리가 각각의 작업기 프로세서에 할당될 때, 각각의 작업기 프로세서는 각각의 블록의 처리를 병렬로 수행한다(도 5b의 단계 S210에 대응).
블록 C2 /4 및 블록 A2/3의 처리가 시간 t = t4에서 완료된 후에, 블록 C2 /4 후에 처리될 블록 C3 /4가 큐에 추가된다(도 5b의 단계 S240에 대응). 블록 A2/3의 처리가 완료되었기 때문에, 슬라이스 A의 처리가 완료된다. 시간 t = t4에서, 블록 B2/3 및 블록 C3 /4 가 큐에 놓인다. 수학식 (1)에 따르면, 각각의 블록들의 우선순위 P0은, P0(B2/3) = 1/3이고 P0(C3 /4) = 1/4이기 때문에, 블록들은 블록들 B2/3 및 C3 /4의 순서로 정렬된다(도 5b의 단계 S245에 대응).
선두 블록 B2/3 및 다음 블록 C3 /4가 시간 t = t4 + 델타 t에서 큐로부터 가져와지고, 블록 B2/3의 처리는 작업기 프로세서 #0에 할당되며, 블록 C3 /4의 처리는 작업기 프로세서 #1에 할당된다(도 5b의 단계 S205에 대응). 블록들의 처리가 각각의 작업기 프로세서에 할당될 때, 각각의 작업기 프로세서는 각각의 블록의 처리를 병렬로 수행한다(도 5b의 단계 S210에 대응).
블록 B2/3 및 블록 C3 /4의 처리가 완료된 후, 슬라이스 B 및 슬라이스 C의 처리가 완료된다. 슬라이스 A의 처리가 이 시점보다 앞서 완료되기 때문에, 모든 슬라이스들의 처리는, 블록 B2/3 및 블록 C3 / 4 의 처리가 완료되었을 때 완료된다.
이 예에서, 우선순위 P0가 사용되지 않을 때 슬라이스 A 및 B보다 상대적으로 나중에 처리되는 슬라이스 C를 우선적으로 처리함으로써, 슬라이스들 A, B, 및 C의 처리는 거의 동등하게 진행하기 때문에, 병렬로 처리될 수 없는 블록들이 끝에 남지 않는다.
이런 식으로, 우선순위 P0를 이용함으로써 모든 슬라이스들의 처리의 진행률을 가능한 한 동등하게 유지하면서 병렬 처리가 진행될 수 있다. 처리 시간이 정확히 예측될 수 없는 경우에도, 모든 슬라이스들의 처리는 거의 동시에 완료되는데, 이것은, 모든 슬라이스들의 처리의 진행률이 가능한 한 동등하게 유지되기 때문이다. 이 때문에, 병렬로 처리될 수 없는 블록들이 좀처럼 끝에 남지 않기 때문에, 끝에서 블록들의 처리가 작업기 프로세서에 할당될 수 없는 상황이 좀처럼 발생하지 않는다. 따라서, 슬라이스들의 병렬 처리는 효율적으로 수행될 수 있다.
<우선순위 P0 및 P1을 이용한 슬라이스 디코딩 처리의 예>
우선순위 P0이 이용되는 디코딩 처리의 예와, 우선순위 P0 및 P1이 이용되는 디코딩 처리의 예가 도시된다. 설명의 간소화를 위해, 큐에 액세스하는데 필요한 시간과 블록의 재정렬에 필요한 시간은 무시할 수 있다고 가정한다.
도 16은, 슬라이스와 블록의 일례를 예시하는 도면이다. 도 16을 참조하면, 3개의 슬라이스 A, B, 및 C가 있다. 슬라이스들 A, B, 및 C는 2개 블록들로 구성된다. 슬라이스 A 및 B의 블록들의 분할 폭은 같지만, 슬라이스 C의 블록들의 분할 폭은 슬라이스 A 및 B의 블록들의 분할 폭의 2배이다. 따라서, 슬라이스 C의 처리 시간은 슬라이스 A 및 B의 처리 시간의 2배이다.
슬라이스 A는 블록 A0/2 및 블록 A1/2로 분할된다. 슬라이스 A의 각 블록은, 블록 A0/2 및 블록 A1/2의 순서로 처리된다. 슬라이스 B는 블록 B0/2 및 블록 B1/2로 분할된다. 슬라이스 B의 각 블록은, 블록 B0/2 및 블록 B1/2의 순서로 처리된다. 슬라이스 C는 블록 C0 /2 및 블록 C1 /2로 분할된다. 슬라이스 C의 각 블록은, 블록 C0 /2 및 블록 C1 /2의 순서로 처리된다.
도 17은, 2개의 작업기 프로세서 #0 및 #1이 3개의 슬라이스 A, B, 및 C를 처리할 때 각각의 작업기 프로세서에 블록들이 할당되는 상황을 예시하는 도면이다. 도 18은 큐의 상태를 예시하는 도면이다. 도 17 및 18에 도시된 예에서, 우선순위 P0이 사용된다.
모든 슬라이스들의 첫번째 블록들 A0/2, B0/2, C0 /2는 시간 t=t0에서 큐에 추가된다 (도 5a의 단계 S115에 대응) . 이 때, 블록들은 블록들 A0/2, B0/2, C0 /2의 순서로 큐에 추가된다고 가정한다. 수학식 (1)에 따르면, 각 블록들의 우선순위 P0은, P0(A0/2) = P0(B0/2) = P0(C0 /2) = 1이다. 3개 블록들의 우선순위 P0은 같기 때문에, 큐 내에서의 블록들의 순서는 변하지 않는다.
선두 블록 A0/2 및 다음 블록 B0/2가 시간 t = t0 + 델타 t에서 큐로부터 가져와지고, 블록 A0/2의 처리는 작업기 프로세서 #0에 할당되며, 블록 B0/2의 처리는 작업기 프로세서 #1에 할당된다(도 5b의 단계 S205에 대응). 블록들의 처리가 각각의 작업기 프로세서에 할당될 때, 각각의 작업기 프로세서는 처리를 병렬로 개시한다(도 5b의 단계 S210에 대응).
블록 A0/2 및 블록 B0/2의 처리가 시간 t = t1에서 완료된 후에, 블록 A0/2 후에 처리될 블록 A1/2와 블록 B0/2 후에 처리될 블록 B1/2가 큐에 추가된다(도 5b의 단계 S240에 대응). 이 때, 블록들은 블록들 A1/2 및 B1/2의 순서로 큐에 추가된다고 가정한다. 수학식 (1)에 따르면, 시간 t = t1에서 큐에 놓인 각각의 블록들의 우선순위 P0은, P0(C0 /2) = 1이고 P0(A1/2) = P0(B1/2) = 1/2이기 때문에, 블록들은, 블록들 C0/2, A1/2, 및 B1/2의 순서로 정렬된다(도 5b의 단계 S245에 대응).
선두 블록 C0 /2 및 다음 블록 A1/2가 시간 t = t1 + 델타 t에서 큐로부터 가져와지고, 블록 C0 /2의 처리는 작업기 프로세서 #0에 할당되며, 블록 A1/2의 처리는 작업기 프로세서 #1에 할당된다(도 5b의 단계 S205에 대응). 블록들의 처리가 각각의 작업기 프로세서에 할당될 때, 각각의 작업기 프로세서는 각각의 블록의 처리를 병렬로 수행한다(도 5b의 단계 S210에 대응).
블록 A1/2의 처리는 시간 t = t2에서 완료된다. 이 시점에서, 블록 C0 /2의 처리는 완료되지 않았다. 블록 A1/2의 처리가 완료되었기 때문에, 슬라이스 A의 처리가 완료된다. 시간 t = t2에서, 블록 B1/2만이 큐에 놓인다.
블록 B1/2가 시간 t = t2 + 델타 t에서 큐로부터 가져와지고, 블록 B1/2의 처리는 작업기 프로세서 #1에 할당된다(도 5b의 단계 S205에 대응). 블록 B1/2의 처리가 작업기 프로세서 #1에 할당될 때, 작업기 프로세서 #1은 블록 B1/2의 처리를 수행한다(도 5b의 단계 S210에 대응). 이 때, 작업기 프로세서 #0은 블록 C0 /2의 처리를 계속하고 있다.
블록 B1/2 및 C0 /2의 처리가 시간 t = t3에서 완료된 후에, 블록 C0 /2 후에 처리될 블록 C1 /2가 큐에 추가된다(도 5b의 단계 S240에 대응). 블록 B1/2의 처리가 완료되었기 때문에, 슬라이스 B의 처리가 완료된다. 시간 t = t3에서, 블록 C1 /2만이 큐에 놓인다.
블록 C1 /2가 시간 t = t3 + 델타 t에서 큐로부터 가져와지고, 블록 C1 /2의 처리는 작업기 프로세서 #0에 할당된다(도 5b의 단계 S205에 대응). 블록 C1 /2의 처리가 작업기 프로세서 #0에 할당될 때, 작업기 프로세서 #0은 블록 C1 /2의 처리를 수행한다(도 5b의 단계 S210에 대응). 작업기 프로세서 #1에는 블록의 처리가 할당되지 않기 때문에, 작업기 프로세서 #1은 유휴 상태이다.
블록 C1 /2의 처리가 완료된 후에, 슬라이스 C의 처리가 완료된다. 슬라이스 A 및 B의 처리가 이 시점보다 앞서 완료되기 때문에, 모든 슬라이스들의 처리는, 블록 C1 /2의 처리가 완료되었을 때 완료된다.
이 예에서, 슬라이스 A 및 B의 블록들보다 더 많은 처리 시간을 요구하는 슬라이스 C는 끝에 남아 있게 된다.
우선순위 P0에 추가하여 우선순위 P1이 사용되는 처리의 예가 이하에 도시된다. 도 19는, 2개의 작업기 프로세서 #0 및 #1이 3개의 슬라이스 A, B, 및 C를 처리할 때 각각의 작업기 프로세서에 블록들이 할당되는 상황을 예시하는 도면이다. 도 20는, 큐의 상태를 예시하는 도면이다. 도 19 및 20에 도시된 예에서, 우선순위 P0 및 P1이 사용된다. 우선순위 P0 및 P1을 이용하는 처리의 예에서 사용된 슬라이스들은 도 16에 도시된 슬라이스들과 동일하다. 슬라이스 A 및 B의 처리 시간은 T이고, 슬라이스 C의 처리 시간은 2T라고 가정한다.
우선순위 P0 및 P1은 다음과 같이 사용된다. 큐에 블록이 추가될 때, 큐 내의 블록들의 순서는 각 블록의 우선순위 P0에 기초하여 결정된다. 동일한 우선순위 P0를 갖는 복수의 블록이 존재할 때, 이 복수의 블록들의 순서는 각 블록의 우선순위 P1에 기초하여 결정된다. 동일한 우선순위 P1을 갖는 복수의 블록들이 존재할 때, 그 복수의 블록들은 큐에 추가되어 있는 순서로 정렬된다. 큐에 블록이 추가될 때 큐 내의 블록들의 순서가 반드시 변경될 필요는 없으며, 큐로부터 블록을 가져오기 직전에 변경될 수도 있다.
모든 슬라이스들의 첫번째 블록들 A0/2, B0/2, C0 /2는 시간 t=t0에서 큐에 추가된다(도 5a의 단계 S115에 대응). 이 때, 블록들은 블록들 A0/2, B0/2, C0 /2의 순서로 큐에 추가된다고 가정한다. 수학식 (1)에 따르면, 각 블록들의 우선순위 P0은, P0(A0/2) = P0(B0/2) = P0(C0 /2) = 1이다. 3개 블록들의 우선순위 P0은 같기 때문에, 우선순위 P1이 사용된다. 수학식 (4)에 따르면, P1(A0/2) = P1(B0/2) = T이고, P1(C0 /2) = 2T이므로, 블록들은, C0 /2, A0/2, 및 B0/2의 순서로 정렬된다.
선두 블록 C0 /2 및 다음 블록 A0/2이 시간 t = t0 + 델타 t에서 큐로부터 가져와지고, 블록 C0 /2의 처리는 작업기 프로세서 #0에 할당되며, 블록 A0/2의 처리는 작업기 프로세서 #1에 할당된다(도 5b의 단계 S205에 대응). 블록들의 처리가 각각의 작업기 프로세서에 할당될 때, 각각의 작업기 프로세서는 처리를 병렬로 개시한다(도 5b의 단계 S210에 대응).
블록 A0/ 2 의 처리가 시간 t = t1에서 완료된 후에, 블록 A0/2 후에 처리될 블록 A1/2가 큐에 추가된다(도 5b의 단계 S240에 대응). 이 시점에서, 블록 C0 /2의 처리는 완료되지 않았다. 시간 t = t1에서, 블록 B0/2 및 블록 A1/2 가 큐에 놓인다. 수학식 (1)에 따르면, 각각의 블록들의 우선순위 P0은, P0(B0/2) = 1이고 P0(A1/2) = 1/2이기 때문에, 블록들은 블록들 B0/2 및 A1/2의 순서로 정렬된다(도 5b의 단계 S245에 대응).
선두 블록 B0/2가 시간 t = t1 + 델타 t에서 큐로부터 가져와지고, 블록 B0/2의 처리는 작업기 프로세서 #1에 할당된다(도 5b의 단계 S205에 대응). 블록 B0/2의 처리가 작업기 프로세서 #1에 할당될 때, 작업기 프로세서 #1는 블록 B0/2의 처리를 수행한다(도 5b의 단계 S210에 대응). 이 때, 작업기 프로세서 #0은 블록 C0 /2의 처리를 계속하고 있다.
블록 C0 /2 및 블록 B0/2의 처리가 시간 t = t2에서 완료된 후에, 블록 C0 /2 후에 처리될 블록 C1 /2와 블록 B0/2 후에 처리될 블록 B1/2가 큐에 추가된다(도 5b의 단계 S240에 대응). 시간 t = t2에서, 블록 A1/2, 블록 C1 /2 , 및 블록 B1/2가 큐에 놓인다. 수학식 (1)에 따르면, 각 블록들의 우선순위 P0은, P0(A1/2) = P0(C1 /2) = P0(B1/2) = 1/2이다. 3개 블록들의 우선순위 P0은 같기 때문에, 우선순위 P1이 사용된다. 수학식 (4)에 따르면, P1(C1 /2) = T이고, P1(A1/2) = P1(B1/2) = T/2이기 때문에, 블록들은 블록들 C1 /2, A1/2, 및 B1/2의 순서로 정렬된다(도 5b의 단계 S245에 대응).
선두 블록 C1 /2 및 다음 블록 A1/2가 시간 t = t2 + 델타 t에서 큐로부터 가져와지고, 블록 C1 /2의 처리는 작업기 프로세서 #0에 할당되며, 블록 A1/2의 처리는 작업기 프로세서 #1에 할당된다(도 5b의 단계 S205에 대응). 블록들의 처리가 각각의 작업기 프로세서에 할당될 때, 각각의 작업기 프로세서는 각각의 블록의 처리를 병렬로 수행한다(도 5b의 단계 S210에 대응).
블록 A1/2의 처리는 시간 t = t3에서 완료된다. 블록 A1/2의 처리가 완료되었기 때문에, 슬라이스 A의 처리가 완료된다. 이 시점에서, 블록 C1 /2의 처리는 완료되지 않았다. 시간 t = t3에서, 블록 B1/2가 큐에 놓인다.
선두 블록 B1/2가 시간 t = t3 + 델타 t에서 큐로부터 가져와지고, 블록 B1/2의 처리는 작업기 프로세서 #1에 할당된다(도 5b의 단계 S205에 대응). 블록 B1/2의 처리가 작업기 프로세서 #1에 할당될 때, 작업기 프로세서 #1은 블록 B1/2의 처리를 수행한다(도 5b의 단계 S210에 대응). 이 때, 작업기 프로세서 #0은 블록 C1 /2의 처리를 계속하고 있다.
블록 C1 /2 및 블록 B1/2의 처리가 완료된 후, 슬라이스 C 및 슬라이스 B의 처리가 완료된다. 슬라이스 A의 처리가 이 시점보다 앞서 완료되기 때문에, 모든 슬라이스들의 처리는, 블록 C1 /2 및 블록 B1/ 2 의 처리가 완료되었을 때 완료된다.
이 예에서, 슬라이스 C의 블록은, 슬라이스 A 및 B의 처리 시간보다 많은 처리 시간을 요구하는 슬라이스 C를 우선적으로 처리함으로써 끝에서 유일하게 남아있지 않다.
이런 식으로, 우선순위 P1이 사용되기 때문에, 비교적 처리 시간이 긴 슬라이스의 블록이 좀처럼 끝에 남아 있지 않는다. 따라서, 끝에서 블록의 처리가 작업기 프로세서에 할당되지 않는 상황은 좀처럼 발생하지 않는다. 따라서, 슬라이스들의 병렬 처리가 효율적으로 수행될 수 있다.
<우선순위 P0 , P1 , 및 P2를 이용한 슬라이스 디코딩 처리의 예>
우선순위 P0 , P1 , 및 P2를 이용한 더 복잡한 디코딩 처리의 예가 도시된다. 설명의 간소화를 위해, 큐에 액세스하는데 필요한 시간과 블록의 재정렬에 필요한 시간은 무시할 수 있다고 가정한다.
도 21은, 슬라이스와 블록의 일례를 예시하는 도면이다. 도 21을 참조하면, 3개의 슬라이스 A, B, 및 C가 있다. 슬라이스들 A 및 B는 4개의 블록으로 구성되고, 슬라이스 C는 3개의 블록으로 구성된다. 슬라이스 A 및 B는 4개의 블록으로 동등하게 분할되지만, 슬라이스 C는 1:2:1 비율의 3개의 블록으로 분할된다. 슬라이스 B 및 C의 처리 시간은 동일하지만, 슬라이스 A의 처리 시간은 슬라이스 B 및 C의 처리 시간의 1.5배이다.
슬라이스 A는, 동일한 처리 시간을 요구하는 블록 A0/4, 블록 A1/4, 블록 A2/4, 및 블록 A3/4로 분할된다. 슬라이스 A의 각 블록은, 블록 A0/4, 블록 A1/4, 블록 A2/4, 및 블록 A3/4의 순서로 처리된다. 슬라이스 A의 처리 시간은 6T라고 가정한다.
슬라이스 B는, 동일한 처리 시간을 요구하는 블록 B0/4, 블록 B1/4, 블록 B2/4, 및 블록 B3/4로 분할된다. 슬라이스 B의 각 블록은, 블록 B0/4, 블록 B1/4, 블록 B2/4, 및 블록 B3/4의 순서로 처리된다. 슬라이스 B의 처리 시간은 4T라고 가정한다.
슬라이스 C는 블록 C0 /4, 블록 C1 /4, 및 블록 C3 /4로 분할된다. 블록 C0 /4 및 C3 /4의 처리 시간은 동일하지만, 블록 C1 /4의 처리 시간은 블록 C0 /4 및 C3 /4의 처리 시간의 2배이다. 슬라이스 C의 각 블록은, 블록 C0 /4, 블록 C1 /4, 및 블록 C3 /4의 순서로 처리된다.
도 22는, 2개의 작업기 프로세서 #0 및 #1이 3개의 슬라이스 A, B, 및 C의 디코딩 처리를 수행할 때 각각의 작업기 프로세서에 블록들이 할당되는 상황을 예시하는 도면이다. 도 23은 큐의 상태를 예시하는 도면이다. 도 22 및 23에 도시된 예에서, 우선순위 P0, P1, 및 P2가 사용된다.
우선순위 P0, P1, 및 P2는 다음과 같이 사용된다. 큐에 블록이 추가될 때, 큐 내의 블록들의 순서는 각 블록의 우선순위 P0에 기초하여 결정된다. 동일한 우선순위 P0을 갖는 복수의 블록이 존재할 때, 이 복수의 블록들의 순서는 각 블록의 우선순위 P1에 기초하여 결정된다. 동일한 우선순위 P1을 갖는 복수의 블록이 존재할 때, 이 복수의 블록들의 순서는 각 블록의 우선순위 P2에 기초하여 결정된다. 큐에 블록이 추가될 때 큐 내의 블록들의 순서가 반드시 변경될 필요는 없으며, 큐로부터 블록을 가져오기 직전에 변경될 수도 있다.
모든 슬라이스들의 첫번째 블록들 A0/4, B0/4, C0 /4는 시간 t=t0에서 큐에 추가된다(도 5a의 단계 S115에 대응). 이 때, 블록들은, 블록들 A0/4, B0/4, C0 /4의 순서로 큐에 추가된다고 가정한다. 수학식 (1)에 따르면, 각 블록들의 우선순위 P0은, P0(A0/4) = P0(B0/4) = P0(C0 /4) = 1이다. 3개 블록들의 우선순위 P0은 같기 때문에, 우선순위 P1이 사용된다. 수학식 (4)에 따르면, P1(A0/4) = 6T이고, P1(B0/4) = P1(C0 /4) = 4T이므로, 블록 A0/4는 블록들 B0/4 및 C0 /4의 앞에 놓인다.
추가적으로, 2개의 블록들 B0/4 및 C0 /4의 우선순위 P1은 같기 때문에, 우선순위 P2가 사용된다. 블록들 B0/4 및 C0 /4가 큐에 추가된 시간은 같기 때문에, 블록들 B0/4 및 C0 /4의 우선순위 P2는 같다. 이 때문에, 블록들 B0/4 및 C0 /4의 순서는 변경되지 않는다. 따라서, 블록들은, 블록들 A0/4, B0/4, C0 /4의 순서로 정렬된다.
선두 블록 A0/4 및 다음 블록 B0/4가 시간 t = t0 + 델타 t에서 큐로부터 가져와지고, 블록 A0/4의 처리는 작업기 프로세서 #0에 할당되며, 블록 B0/4의 처리는 작업기 프로세서 #1에 할당된다(도 5b의 단계 S205에 대응). 블록들의 처리가 각각의 작업기 프로세서에 할당될 때, 각각의 작업기 프로세서는 처리를 병렬로 개시한다(도 5b의 단계 S210에 대응).
블록 B0/4의 처리가 시간 t = t1에서 완료된 후에, 블록 B0/4 후에 처리될 블록 B1/4가 큐에 추가된다(도 5b의 단계 S240에 대응). 이 시점에서, 블록 A0/4의 처리는 완료되지 않았다. 시간 t = t1에서, 블록 C0 /4 및 블록 B1/4 가 큐에 놓인다. 수학식 (1)에 따르면, 각각의 블록들의 우선순위 P0은, P0(C0 /4) = 1이고 P0(B1/4) = 3/4이기 때문에, 블록들은 블록들 C0 /4 및 B1/4의 순서로 정렬된다(도 5b의 단계 S245에 대응).
선두 블록 C0 /4가 시간 t = t1 + 델타 t에서 큐로부터 가져와지고, 블록 C0 /4의 처리는 작업기 프로세서 #1에 할당된다(도 5b의 단계 S205에 대응). 블록 C0 /4의 처리가 작업기 프로세서 #1에 할당될 때, 작업기 프로세서 #1은 블록 C0 /4의 처리를 수행한다(도 5b의 단계 S210에 대응). 이 때, 작업기 프로세서 #0은 블록 A0/4의 처리를 계속하고 있다.
블록 A0/4의 처리가 시간 t = t2에서 완료된 후에, 블록 A0/4 후에 처리될 블록 A1/4가 큐에 추가된다(도 5b의 단계 S240에 대응). 이 시점에서, 블록 C0 /4의 처리는 완료되지 않았다. 시간 t = t2에서, 블록 B1/4 및 블록 A1/4 가 큐에 놓인다. 수학식 (1)에 따르면, 각 블록들의 우선순위 P0은, P0(B1/4) = 3/4이고, P0(A1/4) = 3/4이다. 각 블록들의 우선순위 P0은 같기 때문에, 우선순위 P1이 사용된다. 수학식 (4)에 따르면, P1(B1/4) = 3T이고 P1(A1/4) = 4.5T이기 때문에, 블록들은, 블록들 A1/4 및 B1/4의 순서로 정렬된다(도 5b의 단계 S245에 대응).
선두 블록 A1/4가 시간 t = t2 + 델타 t에서 큐로부터 가져와지고, 블록 A1/4의 처리는 작업기 프로세서 #0에 할당된다(도 5b의 단계 S205에 대응). 블록 A1/4의 처리가 작업기 프로세서 #0에 할당될 때, 작업기 프로세서 #0는 블록 A1/4의 처리를 수행한다(도 5b의 단계 S210에 대응). 이 때, 작업기 프로세서 #1은 블록 C0 /4의 처리를 계속하고 있다.
블록 C0 /4의 처리가 시간 t = t3에서 완료된 후에, 블록 C0 /4 후에 처리될 블록 C1 /4가 큐에 추가된다(도 5b의 단계 S205에 대응). 이 시점에서, 블록 A1/4의 처리는 완료되지 않았다. 시간 t = t3에서, 블록 B1/4 및 블록 C1 /4 가 큐에 놓인다. 수학식 (1)에 따르면, 각 블록들의 우선순위 P0은, P0(B1/4) = 3/4이고, P0(C1 /4) = 3/4이다. 각 블록들의 우선순위 P0은 같기 때문에, 우선순위 P1이 사용된다. 수학식 (4)에 따르면, P1(B1/4) = 3T이고, P1(C1 /4) = 3T이다.
각 블록들의 우선순위 P1은 같기 때문에, 우선순위 P2가 사용된다. 각 블록들의 우선순위 P2는, P2(B1/4) = t1이고, P2(C1 /4) = t3이다. 우선순위 P2를 이용함으로써, 블록들은, 블록들 C1 /4 및 B1/4의 순서로 정렬되고(도 5b의 단계 S245에 대응), 큐에 나중에 추가된 블록이 큐에 먼저 추가된 블록보다 우선적으로 처리된다.
선두 블록 C1 /4가 시간 t = t3 + 델타 t에서 큐로부터 가져와지고, 블록 C1 /4의 처리는 작업기 프로세서 #1에 할당된다(도 5b의 단계 S205에 대응). 블록 C1 /4의 처리가 작업기 프로세서 #1에 할당될 때, 작업기 프로세서 #1은 블록 C1 /4의 처리를 수행한다(도 5b의 단계 S210에 대응). 이 때, 작업기 프로세서 #0은 블록 A1/4의 처리를 계속하고 있다.
블록 A1/ 4 의 처리가 시간 t = t4에서 완료된 후에, 블록 A1/4 후에 처리될 블록 A2/4가 큐에 추가된다(도 5b의 단계 S240에 대응). 이 시점에서, 블록 C1 /4의 처리는 완료되지 않았다. 시간 t = t4에서, 블록 B1/4 및 블록 A2/4 가 큐에 놓인다. 수학식 (1)에 따르면, 각각의 블록들의 우선순위 P0은, P0(B1/4) = 3/4이고 P0(A2/4) = 2/4이기 때문에, 블록들은, 블록들 B1/4 및 A2/4의 순서로 정렬된다(도 5b의 단계 S245에 대응).
선두 블록 B1/4가 시간 t = t4 + 델타 t에서 큐로부터 가져와지고, 블록 B1/4의 처리는 작업기 프로세서 #0에 할당된다(도 5b의 단계 S205에 대응). 블록 B1/4의 처리가 작업기 프로세서 #0에 할당될 때, 작업기 프로세서 #0은 블록 B1/4의 처리를 수행한다(도 5b의 단계 S210에 대응). 이 때, 작업기 프로세서 #1은 블록 C1 /4의 처리를 계속하고 있다.
블록 B1/4 및 블록 C1 /4의 처리가 시간 t = t5에서 완료된 후에, 블록 B1/4 후에 처리될 블록 B2/4와 블록 C1 /4 후에 처리될 블록 C3 /4가 큐에 추가된다(도 5b의 단계 S240에 대응). 시간 t = t5에서, 블록 A2/4, 블록 B2/4 , 및 블록 C3 /4가 큐에 놓인다.
수학식 (1)에 따르면, 각각의 블록들의 우선순위 P0은, P0(A2/4) 및 P0(B2/4) = 2/4이고 P0(C3 /4) = 1/4이기 때문에, 블록들 A2/4 및 B2/4가 블록 C3 /4의 앞에 놓인다. 2개 블록들, A2/4 및 B2/4의 우선순위 P0은 같기 때문에, 우선순위 P1이 사용된다. 수학식 (4)에 따르면, P1(A2/4) = 3T이고 P1(B2/4) = 2T이므로, 블록 A2/4는 블록 B2/4 앞에 놓인다. 따라서, 시간 t = t5에서, 블록들은, 블록들 A2/4, B2/4, C3 /4의 순서로 정렬된다(도 5b의 단계 S245에 대응).
선두 블록 A2/4 및 다음 블록 B2/4가 시간 t = t5 + 델타 t에서 큐로부터 가져와지고, 블록 A2/4의 처리는 작업기 프로세서 #0에 할당되며, 블록 B2/4의 처리는 작업기 프로세서 #1에 할당된다(도 5b의 단계 S205에 대응). 블록들의 처리가 각각의 작업기 프로세서에 할당될 때, 각각의 작업기 프로세서는 처리를 병렬로 개시한다(도 5b의 단계 S210에 대응).
블록 B2/ 4 의 처리가 시간 t = t6에서 완료된 후에, 블록 B2/4 후에 처리될 블록 B3/4가 큐에 추가된다(도 5b의 단계 S240에 대응). 이 시점에서, 블록 A2/4의 처리는 완료되지 않았다. 시간 t = t6에서, 블록 C3 /4 및 블록 B3/4 가 큐에 놓인다. 수학식 (1)에 따르면, 각 블록들의 우선순위 P0은, P0(C3 /4) = P0(B3/4) = 1/4이다. 각 블록들의 우선순위 P0은 같기 때문에, 우선순위 P1이 사용된다. 수학식 (4)에 따르면, P1(C3 /4) = P1(B3/4) = T이다.
각 블록들의 우선순위 P1은 같기 때문에, 우선순위 P2가 사용된다. 각 블록들의 우선순위 P2는, P2(C3 /4) = t5이고, P2(B3/4) = t6이다. 우선순위 P2를 이용함으로써, 큐에 나중에 추가된 블록이 큐에 먼저 추가된 블록보다 우선적으로 처리된다. 따라서, 블록들은, 블록들 B3/4 및 C3 /4의 순서로 정렬된다(도 5b의 단계 S245에 대응).
선두 블록 B3/4가 시간 t = t6 + 델타 t에서 큐로부터 가져와지고, 블록 B3/4의 처리는 작업기 프로세서 #1에 할당된다(도 5b의 단계 S205에 대응). 블록 B3/4의 처리가 작업기 프로세서 #1에 할당될 때, 작업기 프로세서 #1은 블록 B3/4의 처리를 수행한다(도 5b의 단계 S210에 대응). 이 때, 작업기 프로세서 #0은 블록 A2/4의 처리를 계속하고 있다.
블록 A2/ 4 의 처리가 시간 t = t7에서 완료된 후에, 블록 A2/4 후에 처리될 블록 A3/4가 큐에 추가된다(도 5b의 단계 S240에 대응). 이 시점에서, 블록 B3/4의 처리는 완료되지 않았다. 시간 t = t7에서, 블록 C3 /4 및 블록 A3/4 가 큐에 놓인다. 수학식 (1)에 따르면, 각 블록들의 우선순위 P0은, P0(C3 /4) = P0(A3/4) = 1/4이다. 각 블록들의 우선순위 P0은 같기 때문에, 우선순위 P1이 사용된다. 수학식 (4)에 따르면, P1(C3/4) = T이고, P1(A3/4) = 1.5T이기 때문에, 블록들은 블록들 A3/4 및 C3 /4의 순서로 정렬된다(도 5b의 단계 S245에 대응).
선두 블록 A3/4가 시간 t = t7 + 델타 t에서 큐로부터 가져와지고, 블록 A3/4의 처리는 작업기 프로세서 #0에 할당된다(도 5b의 단계 S205에 대응). 블록 A3/4의 처리가 작업기 프로세서 #0에 할당될 때, 작업기 프로세서 #0은 블록 A3/4의 처리를 수행한다(도 5b의 단계 S210에 대응). 이 때, 작업기 프로세서 #1은 블록 B3/4의 처리를 계속하고 있다.
블록 B3/4의 처리는 시간 t = t8에서 완료된다. 블록 B3/4의 처리가 완료되었기 때문에, 슬라이스 B의 처리가 완료된다. 이 시점에서, 블록 A3/4의 처리는 완료되지 않았다. 시간 t = t8에서, 블록 C3 /4만이 큐에 놓인다.
선두 블록 C3 /4가 시간 t = t8 + 델타 t에서 큐로부터 가져와지고, 블록 C3 /4의 처리는 작업기 프로세서 #1에 할당된다(도 5b의 단계 S205에 대응). 블록 C3 /4의 처리가 작업기 프로세서 #1에 할당될 때, 작업기 프로세서 #1는 블록 C3 /4의 처리를 수행한다(도 5b의 단계 S210에 대응). 이 때, 작업기 프로세서 #0은 블록 A3/4의 처리를 계속하고 있다.
블록 A3/4 및 블록 C3 /4의 처리가 완료된 후, 슬라이스 A 및 슬라이스 C의 처리가 완료된다. 슬라이스 B의 처리가 이 시점보다 앞서 완료되기 때문에, 모든 슬라이스들의 처리는, 블록 A3/4 및 블록 C3 / 4 의 처리가 완료되었을 때 완료된다.
이런 식으로, 우선순위 P0가 이용되기 때문에, 가능한 한 동등하게 모든 슬라이스들의 처리의 진행률을 유지하면서 병렬 처리가 진행될 수 있다. 추가적으로, 우선순위 P1이 사용되기 때문에, 비교적 처리 시간이 긴 슬라이스 A의 블록이 유일하게 끝에 남아 있지 않는다. 따라서, 슬라이스들의 병렬 처리는 효율적으로 수행될 수 있다.
또한, 이 예에서, 우선순위 P2를 사용함으로써, 작업기 프로세서 #1은 지속적으로 슬라이스 C의 블록 C0 /4 및 C1 /4의 처리를 수행하고, 슬라이스 B의 블록 B2/4 및 B3/4의 처리를 지속적으로 수행한다. 이런 식으로, 동일한 슬라이스의 처리를 지속적으로 수행함으로써, 캐시 효율이 증가되고 처리 속도가 개선된다.
전술된 바와 같이, 제1 실시예에 따르면, 처리가 슬라이스를 분할하여 얻어진 블록 단위로 작업기 프로세서에 할당되기 때문에, 슬라이스 단위로 작업기 프로세서에 처리가 할당되는 경우에 비해, 각각의 작업기 프로세서가 처리를 위한 그 차례를 기다리고 있고 그에 따라 처리될 대상이 제공되지 않아 일부 작업기 프로세서가 유휴 상태가 되는 가능성을 줄일 수 있다. 따라서, 전체 작업기 프로세서의 총 유휴 시간이 감소된다. 그 결과, 전체 작업기 프로세서를 이용하는데 있어서의 효율이 증가된다. 따라서, 인코딩된 슬라이스의 디코딩 처리의 속도가 개선된다.
프로세서 갯수 N 및 슬라이스 갯수 M에 관계없이, 동일한 방법에 의해 슬라이스들의 처리가 가능한 한 동등하게 작업기 프로세서에 할당된다. 특히, 각 슬라이스의 처리 시간이 미리 알려지지 않거나 각 슬라이스의 처리 시간이 정확히 예측될 수 없더라도, 모든 슬라이스들의 진행을 거의 동일하게 유지하면서 처리가 진행된다. 따라서, 총 처리 시간에 대한, 처리가 병렬로 이루어질 수 있는 시간의 비율이 증가하기 때문에, 작업기 프로세서가 효율적으로 사용될 수 있다.
CPU와 1대1 방식으로 대응하는 프로세서들의 갯수와 동일한 갯수의 작업기 프로세서만이 사용되기 때문에, 슬라이스들의 처리 동안에 작업기 프로세서들간 콘텍스트 전환이 발생하지 않는다. 콘텍스트 전환은, 복수의 작업기 프로세서가 동일한 프로세서를 공유하기 위하여 프로세서의 실행 상태(콘텍스트)를 저장 및 복구하는 동작이다. 작업기 프로세서들간 콘텍스트 전환은 발생하지 않기 때문에, 처리 속도 하락이 방지된다.
슬라이스의 처리 시간이 OS의 시간 양자(time quantum)보다 작은 경우에, 각각의 작업기 프로세서는 처리를 블록 단위로 병렬로 수행할 수 있다. 짧은 간격으로 복수의 슬라이스들간을 전환함으로써, 프로세서들의 개수보다 많은 수의 슬라이스들이 병렬로 가상적으로 처리될 수 있다.
병렬로 처리될 수 있는 블록들만이 큐에 놓이고, 큐로부터 가져온 래퍼 블록은 즉시 임의의 작업기 프로세서에 할당된다. 따라서, 슬라이스의 처리 동안에 큐로의 액세스가 아닌 동기 처리는 필요하지 않다.
{제2 실시예}
본 발명의 제2 실시예는, 인코딩된 이미지 데이터를 디코딩하기 위한 편집 장치 및 편집 방법의 예이다.
도 24는, 본 발명의 제2 실시예에 따른 편집 장치의 하드웨어 구성을 예시하는 블록도이다. 제1 실시예와 공통되는 컴포넌트들에는 동일한 참조 부호가 부여되며, 그 설명이 생략될 것이라는 점에 주목해야 한다.
도 24를 참조하면, 편집 장치(100)는 광 디스크 또는 기타의 기록 매체를 구동하기 위한 드라이브(101), CPU(20), CPU(21), CPU(102), ROM(23), ROM(103), RAM(22), RAM(104), HDD(105), 통신 인터페이스(106), 입력 인터페이스(107), 출력 인터페이스(108), 비디오/오디오 인터페이스(114), 및 이들을 접속시키는 버스(110)를 포함한다.
편집 장치(100)는, 앞서의 도 1에 도시된 바와 같이 CPU(20), CPU(21), RAM(22) 및 ROM(23)으로 구성된 제1 실시예에 따른 디코딩 장치와 동일한 디코딩 장치를 가진다. 추가적으로, 비록 도 24에는 도시되지 않았지만, 편집 장치(100)는 도 3에 도시된 기능적 구성과 동일한 기능적 구성을 가진다. 편집 장치(100)는 또한 인코딩 처리 기능 및 편집 기능을 가진다. 인코딩 처리 기능은 편집 장치(100)에 필수적인 것은 아니라는 점에 유의해야 한다.
착탈가능한 매체(101a)가 드라이브(101)에 장착되고, 그 착탈가능한 매체(101a)부터 데이터가 판독된다. 드라이브(101)는 외부 드라이브일 수 있다. 드라이브(101)는 광학 디스크, 자기 디스크, 광자기 디스크, 블루레이 디스크, 반도체 메모리 등을 채용할 수 있다. 통신 인터페이스(106)를 통해 접속가능한 네트워크 상의 자원으로부터 자료 데이터가 판독될 수 있다.
CPU(102)는 ROM(103)에 기록된 제어 프로그램을 RAM(104) 내에 로드하고, 편집 장치(100)의 전체 동작을 제어한다.
HDD(105)는 편집 장치로서의 애플리케이션 프로그램을 저장한다. CPU(102)는 애플리케이션 프로그램을 RAM(104) 내에 로드하고, 컴퓨터가 편집 장치로서 동작하게 한다. 추가적으로, 착탈가능한 매체(101a)로부터 판독된 자료 데이터, 각 클립의 편집 데이터 등은 HDD(105)에 저장될 수 있다.
통신 인터페이스(106)는 USB(Universal Serial Bus), LAN, 또는 HDMI와 같은 인터페이스이다.
입력 인터페이스(107)는 키보드 또는 마우스와 같은 작동 유닛(400)을 통해 사용자 의해 입력된 명령을 수신하고, 버스(110)를 통해 CPU(102)에 작동 신호를 공급한다.
출력 인터페이스(108)는, CPU(102)로부터의 이미지 데이터 및/또는 오디오 데이터를, 출력 장치(500)에, 예를 들어, CRT 또는 LCD와 같은 디스플레이 장치나 스피커에 공급한다.
비디오/오디오 인터페이스(114)는, 편집 장치(100) 외부에 제공된 장치 및 버스(110)와 데이터를 통신한다. 예를 들어, 비디오/오디오 인터페이스(114)는 SDI(Serial Digital Interface) 등에 기초한 인터페이스이다.
도 25는, 본 발명의 제2 실시예에 따른 편집 장치의 기능적 구성을 예시하는 도면이다.
도 25를 참조하면, 편집 장치(100)의 CPU(102)는, 메모리에 로드된 애플리케이션 프로그램을 이용함으로써, 사용자 인터페이스(70), 편집기(73), 정보 입력 유닛(74), 및 정보 출력 유닛(75)의 각각의 기능 블록을 형성한다.
이와 같은 각각의 기능 블록은, 자료 데이터 및 편집 데이터를 포함한 프로젝트 파일의 임포트 기능, 각 클립의 편집 기능, 자료 데이터 및/또는 편집 데이터를 포함하는 프로젝트 파일의 엑스포트 기능, 프로젝트 파일을 엑스포팅할 때 자료 데이터에 대한 마진(margin) 설정 기능 등을 구현한다. 이하에서, 편집 기능이 상세히 설명될 것이다.
도 26은, 본 발명의 제2 실시예에 따른 편집 장치의 편집 화면의 일례를 예시하는 도면이다.
도 25와 함께 도 26을 참조하면, 편집 스크린의 디스플레이 데이터는 디스플레이 제어기(72)에 의해 생성되고 출력 장치(500)의 디스플레이에 출력된다.
편집 스크린(150)은, 편집된 콘텐츠 및/또는 취득된 자료 데이터의 재생 스크린을 표시하는 재생 윈도우(151); 각 클립이 타임라인을 따라 배치되어 있는 복수의 트랙으로 구성된 타임라인 윈도우(152); 및 취득된 자료 데이터를 아이콘등을 이용하여 디스플레이하는 빈 윈도우(153)를 포함한다.
사용자 인터페이스 유닛(70)은, 작동 유닛(400)을 통해 사용자에 의해 입력된 명령을 수신하는 명령 수신기(71); 및 디스플레이 또는 스피커와 같은 출력 장치(500)에 대한 디스플레이 제어를 수행하는 디스플레이 제어기(72)를 포함한다.
편집기(73)는, 작동 유닛(400)을 통해 사용자로부터 입력된 명령에 의해 지정된 클립에 의해 참조되는 자료 데이터, 또는 정보 입력 유닛(74)을 통해 디폴트로 지정된 프로젝트 정보를 포함하는 클립에 의해 참조되는 자료 데이터를 취득한다. 추가적으로, 편집기(73)는, 작동 유닛(400)을 통해 사용자로부터 입력된 명령 입력에 따라, 타임라인 윈도우 상에서 후술될 클립의 배열, 클립의 다듬기, 장면간 전환 설정, 비디오 필터의 적용 등과 같은 편집 처리를 수행한다.
HDD(105)에 기록된 자료 데이터가 지정되었을 때, 정보 입력 유닛(74)은 빈 윈도우(153) 상에 아이콘을 디스플레이한다. HDD(105)에 기록되지 않은 자료 데이터가 지정되었을 때, 정보 입력 유닛(74)은 네트워크, 착탈가능한 매체 등의 자원으로부터 자료 데이터를 판독하고, 빈 윈도우(153) 상에 아이콘을 디스플레이한다. 도시된 예에서, 3개의 자료 데이터가 아이콘 IC1 내지 IC3을 이용하여 디스플레이된다.
명령 수신기(71)는, 편집 스크린 상에서, 편집에 사용되는 클립의 지정, 자료 데이터의 참조 범위, 및 참조 범위에 의해 점유된 콘텐츠의 시간축 상의 시간 위치를 수신한다. 구체적으로, 명령 수신기(71)는 클립 ID의 지정, 참조 범위의 시작점 및 시간 길이, 클립이 배열되어 있는 콘텐츠에 관한 시간 정보 등을 수신한다. 따라서, 사용자는 디스플레이된 클립 명칭을 단서로서 이용하여 타임라인 상의 원하는 자료 데이터의 아이콘을 드래그앤드랍(drag and drop)한다. 명령 수신기(71)는 이 동작에 의해 클립 ID의 지정을 수신하고, 그 클립은 선택된 클립에 의해 참조되는 참조 범위에 대응하는 시간 길이와 더불어 트랙 상에 배열된다.
트랙 상에 배열된 클립의 경우, 그 클립의 시작점과 끝점, 타임라인 상의 시간 배열 등은 적절하게 변경될 수 있다. 예를 들어, 지정은, 편집 스크린 상에 표시된 마우스 커서를 이동시켜 미리결정된 동작을 수행함으로써 입력될 수 있다.
도 27은, 본 발명의 제2 실시예에 따른 편집 방법을 예시하는 플로차트이다. 예로서 압축-인코딩된 자료 데이터가 편집되는 경우를 이용하여 도 27을 참조하여, 본 발명의 제2 실시예에 따른 편집 방법이 설명될 것이다.
먼저, 단계 S400에서, 사용자가 HDD(105)에 기록된 인코딩된 자료 데이터를 지정할 때, CPU(102)는 그 지정을 수신하여 빈 윈도우(153) 상에 그 자료 데이터를 아이콘으로서 디스플레이한다. 추가로, 사용자가, 디스플레이된 아이콘을 타임라인 윈도우(152) 상에 정렬하라고 명령할 때, CPU(102)는 그 명령을 수신하여 자료의 클립을 타임라인 윈도우(152) 상에 배열한다.
그 다음, 단계 S410에서, 사용자가, 작동 유닛(400)을 통해 미리결정된 동작에 의해 표시되는 편집 콘텐츠들 중의 자료에 대해, 예를 들어, 디코딩 처리 및 확장 처리를 선택할 때, CPU(102)는 그 선택을 수신한다.
그 다음, 단계 S420에서, 디코딩 처리 및 확장 처리의 명령을 수신한 CPU(102)는 디코딩 처리 및 확장 처리의 명령을 CPU들(20 및 21)에 출력한다. CPU(102)로부터의 디코딩 처리 및 확장 처리의 명령을 입력받은 CPU(20 및 21)는, 압축-인코딩된 자료 데이터에 관해 디코딩 처리 및 확장 처리를 수행한다. 이 경우, CPU(20 및 21)는 제1 실시예에 따라 디코딩 방법을 실행함으로써 디코딩된 자료 데이터를 생성한다.
그 다음, 단계 S430에서, CPU(20 및 21)는, 단계 S420에서 생성된 자료 데이터를 버스(110)를 통해 RAM(22)에 저장한다. RAM(22)에 임시로 저장된 자료 데이터는 HDD(105)에 기록된다. HDD에 자료 데이터를 기록하는 것 대신에, 자료 데이터는 편집 장치 외부에 제공된 장치에 출력될 수 있다는 점에 유의한다.
클립의 다듬기, 장면들간의 전환 설정, 및/또는 비디오 필터의 적용은 단계 S400과 S410 사이에서 수행될 수 있다는 것에 유의한다. 이와 같은 처리를 수행하는 경우, 단계 S420에서의 디코딩 처리 및 확장 처리는, 처리될 클립 또는 클립의 일부에 대해 수행된다. 그 후, 처리된 클립 또는 클립의 일부가 저장된다. 이것은 후속 렌더링시에 또 다른 클립이나 클립의 또 다른 부분과 합성된다.
제2 실시예에 따르면, 편집 장치는 제1 실시예와 동일한 디코딩 장치를 가지며, 제1 실시예에서와 동일한 디코딩 방법을 이용하여 인코딩된 자료 데이터를 디코딩하기 때문에, 제1 실시예에서와 동일한 유익한 효과가 얻어지며, 디코딩 처리 효율이 개선된다.
디코딩 처리시에, CPU(102)는 CPU(20) 및 CPU(21)에 대한 것과 동일한 단계를 실행할 수 있다는 점에 유의한다. 특히, 단계들은, CPU(102)가 디코딩 처리가 아닌 다른 처리를 수행하지 않는 기간에 실행되는 것이 바람직할 것이다.
본 발명의 양호한 실시예들이 상세히 기술되었지만, 본 발명은 이들 특정한 실시예만으로 제한되는 것은 아니며, 특허청구범위에 정의된 본 발명의 범위 내에서 다양한 변경 및 수정이 가능하다. 예를 들어, 본 발명은 인코딩된 오디오 데이터의 디코딩 처리에도 적용될 수 있다. 예를 들어, 예로서 MPEG-2에 기초한 디코딩 처리를 이용하여 실시예들이 설명되었지만, 이것은 MPEG-2만으로 제한되지 않으며, 다른 이미지 인코딩 방법, 예를 들어, MPEG-4 비주얼, MPEG-4 AVC FRExt(Fidelity Range Extension), 오디오 인코딩 방법에도 적용될 수 있다.
<참조 번호 리스트>
10 : 디코딩 장치
20, 21 : CPU
22 : RAM
23 : ROM
30 : 디코딩 처리 장치
31 : 메인 프로세서
32a, 32b : 작업기 프로세서
33a, 33b : 슬라이스 디코더
34 : 큐
35 : 슬라이스 버퍼
36 : 비디오 메모리
37 : 슬라이스 콘텍스트
73 : 편집기
100 : 편집 장치

Claims (13)

  1. 이미지 데이터 또는 오디오 데이터의 인코딩된 데이터를 디코딩하기 위한 장치(10, 30)로서,
    독립적으로 디코딩될 수 있는 복수의 요소 데이터의 피스들(pieces of element data)를 포함하는 상기 인코딩된 데이터를 제공하기 위한 소스(22) - 상기 복수의 요소 데이터의 피스들 각각은 적어도 하나의 블록을 포함함 -;
    상기 적어도 하나의 블록 중 첫 번째로 처리될 제1 블록을 식별하는 블록 정보를 생성하기 위한 제1 처리 수단(31);
    상기 블록 정보에 대응하는 요소 데이터에서의 디코딩 처리 순서에 기초하여 상기 제1 블록에 후속하는 블록을 식별하는 블록 정보를 생성하기 위한 복수의 제2 처리 수단(32a, 32b);
    상기 생성된 블록 정보 중에서 하나의 미참조 블록 정보의 피스를 참조함으로써 식별된 블록을 병렬로 디코딩하기 위한 복수의 디코딩 수단(33a, 33b); 및
    디코딩된 블록을 저장하고 또한 상기 블록에 대응하는 디코딩된 요소 데이터를 형성하기 위한 저장 수단(22)
    을 포함하는 디코딩 장치.
  2. 제1항에 있어서, 상기 제2 처리 수단에 의해 생성된 미참조 블록 정보에 대응하는 블록에 대해, 상기 블록과 연관된 디코딩 처리 순서를 나타내는 우선순위가 계산되는, 디코딩 장치.
  3. 제2항에 있어서, 상기 우선순위는 상기 대응하는 요소 데이터의 디코딩 처리가 진행된 비율에 기초하는, 디코딩 장치.
  4. 제2항에 있어서, 상기 우선순위는 상기 대응하는 요소 데이터의 미처리 블록들의 처리 시간에 기초하는, 디코딩 장치.
  5. 제1항에 있어서, 상기 생성된 블록 정보를 저장하기 위한 저장 수단을 더 포함하고,
    상기 디코딩 수단은 상기 블록 정보가 저장되는 시간에 기초하여 식별된 블록을 우선적으로 디코딩하는, 디코딩 장치.
  6. 이미지 데이터 또는 오디오 데이터의 인코딩된 데이터를 디코딩하기 위한 방법으로서,
    상기 인코딩된 데이터에 포함된 복수의 요소 데이터의 피스들의 각각을 구성하는 적어도 하나의 블록 중에서 첫 번째로 처리될 블록을 식별하는 블록 정보를 프로세서(20)에서 생성하는 단계(S110) - 상기 요소 데이터는 독립적으로 디코딩될 수 있고, 상기 블록에 대응하는 요소 데이터에서의 디코딩 처리 순서가 상기 블록에 주어짐 -;
    하나의 생성된 미참조 블록 정보의 피스를 참조함으로써 식별된 블록을 복수의 프로세서(20, 21)에서 병렬로 디코딩하는 단계(S210);
    상기 디코딩 처리 순서에 기초하여 상기 디코딩된 블록에 의해 구성된 요소 데이터에 속하는 후속 블록을 식별하는 블록 정보를 상기 복수의 프로세서(20, 21)에서 병렬로 생성하는 단계(S235); 및
    모든 블록들이 디코딩될 때까지, 상기 디코딩하는 단계와, 상기 후속 블록을 식별하는 블록 정보를 생성하는 단계를 반복하는 단계
    를 포함하는 디코딩 방법.
  7. 제6항에 있어서, 상기 생성된 미참조 블록 정보에 대응하는 블록에 대한 디코딩 단계에서 처리 순서를 나타내는 우선순위를 계산하는 단계와, 상기 우선순위를 상기 블록과 연관시키는 단계를 더 포함하고,
    상기 블록을 디코딩하는 단계에서, 상기 복수의 프로세서는 복수의 상기 생성된 미참조 블록 정보의 피스의 우선순위들을 참조함으로써 가장 높은 우선순위를 갖는 블록 정보에 대응하는 블록을 디코딩하는, 디코딩 방법.
  8. 제7항에 있어서, 상기 우선순위는 상기 대응하는 요소 데이터의 디코딩 처리가 진행된 비율에 기초하는, 디코딩 방법.
  9. 제7항에 있어서, 상기 우선순위는 상기 대응하는 요소 데이터의 미처리 블록들의 처리 시간에 기초하는, 디코딩 방법.
  10. 제6항에 있어서, 상기 생성된 블록 정보를 메모리에 저장하는 단계를 더 포함하고, 상기 블록을 디코딩하는 단계에서 상기 복수의 프로세서는 상기 블록 정보가 상기 메모리에 저장되는 시간에 기초하여 식별된 블록을 우선적으로 디코딩하는, 디코딩 방법.
  11. 이미지 데이터 또는 오디오 데이터의 인코딩된 데이터를 디코딩하기 위한 프로그램으로서, 상기 프로그램은, 프로세서(20)로 하여금,
    이미지 데이터 또는 오디오 데이터를 포함하는 상기 인코딩된 데이터에 포함된 복수의 요소 데이터의 피스의 각각을 구성하는 적어도 하나의 블록 중에서 첫 번째로 처리될 블록을 식별하는 블록 정보를 생성하는 단계 - 상기 요소 데이터는 독립적으로 디코딩될 수 있고, 상기 블록에 대응하는 요소 데이터에서의 디코딩 처리 순서가 상기 블록에 주어짐 - 를 실행하게 하고, 또한
    복수의 프로세서(20, 21)로 하여금,
    하나의 생성된 미참조 블록 정보의 피스를 참조함으로써 식별된 블록을 병렬로 디코딩하는 단계(S210);
    상기 디코딩 처리 순서에 기초하여 상기 디코딩된 블록으로 구성된 요소 데이터에 속하는 후속 블록을 식별하는 블록 정보를 병렬로 생성하는 단계(S235); 및
    모든 블록들이 디코딩될 때까지, 상기 디코딩하는 단계와, 상기 후속 블록을 식별하는 블록 정보를 생성하는 단계를 반복하는 단계를 실행하게 하도록 구성된
    프로그램.
  12. 이미지 데이터 또는 오디오 데이터의 인코딩된 데이터를 디코딩하기 위한 프로그램을 기록한 기록 매체로서, 상기 프로그램은,
    프로세서(20)로 하여금,
    이미지 데이터 또는 오디오 데이터를 포함하는 인코딩된 데이터에 포함된 복수의 요소 데이터의 피스들의 각각을 구성하는 적어도 하나의 블록 중에서 첫 번째로 처리될 블록을 식별하는 블록 정보를 생성하는 단계 - 상기 요소 데이터는 독립적으로 디코딩될 수 있고, 상기 블록에 대응하는 요소 데이터에서의 디코딩 처리 순서가 상기 블록에 주어짐 - 를 실행하게 하고, 또한
    복수의 프로세서(20, 21)로 하여금,
    하나의 생성된 미참조 블록 정보의 피스를 참조함으로써 식별된 블록을 병렬로 디코딩하는 단계(S210);
    상기 디코딩 처리 순서에 기초하여 상기 디코딩된 블록에 의해 구성된 요소 데이터에 속하는 후속 블록을 식별하는 블록 정보를 병렬로 생성하는 단계(S235); 및
    모든 블록들이 디코딩될 때까지, 상기 디코딩하는 단계와, 상기 후속 블록을 식별하는 블록 정보를 생성하는 단계를 반복하는 단계를 실행하게 하도록 구성된
    기록 매체.
  13. 편집 장치(100)로서,
    이미지 데이터 또는 오디오 데이터의 인코딩된 데이터를 제공하기 위한 소스(22) - 상기 인코딩된 데이터는 독립적으로 디코딩될 수 있는 복수의 요소 데이터의 피스들을 포함하고, 상기 복수의 요소 데이터의 피스들의 각각은, 적어도 하나의 블록을 포함함 -;
    상기 적어도 하나의 블록 중 첫 번째로 처리될 블록을 식별하는 블록 정보를 생성하기 위한 제1 처리 수단(31);
    상기 블록 정보에 대응하는 요소 데이터에서의 디코딩 처리 순서에 기초하여 상기 첫 번째 블록에 후속하는 블록을 식별하는 블록 정보를 생성하기 위한 복수의 제2 처리 수단(32a, 32b);
    상기 생성된 블록 정보 중에서 하나의 미참조 블록 정보의 피스를 참조함으로써 식별된 블록을 병렬로 디코딩하기 위한 복수의 디코딩 수단(33a, 33b);
    상기 디코딩된 블록을 저장하고 또한 상기 블록에 대응하는 디코딩된 요소 데이터를 형성하기 위한 저장 수단(22): 및
    상기 디코딩된 요소 데이터를 편집하기 위한 편집 수단(73)
    을 포함하는 편집 장치.
KR1020117029386A 2009-06-09 2009-06-09 디코딩 장치, 디코딩 방법, 및 편집 장치 KR101645058B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/002597 WO2010143226A1 (en) 2009-06-09 2009-06-09 Decoding apparatus, decoding method, and editing apparatus

Publications (2)

Publication Number Publication Date
KR20140077226A true KR20140077226A (ko) 2014-06-24
KR101645058B1 KR101645058B1 (ko) 2016-08-02

Family

ID=41649866

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117029386A KR101645058B1 (ko) 2009-06-09 2009-06-09 디코딩 장치, 디코딩 방법, 및 편집 장치

Country Status (6)

Country Link
US (1) US20120082240A1 (ko)
EP (1) EP2441268A1 (ko)
JP (1) JP5698156B2 (ko)
KR (1) KR101645058B1 (ko)
CN (1) CN102461173B (ko)
WO (1) WO2010143226A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5914962B2 (ja) * 2010-04-09 2016-05-11 ソニー株式会社 画像処理装置および方法、プログラム、並びに、記録媒体
AU2012391251B2 (en) 2012-09-29 2016-04-21 Huawei Technologies Co., Ltd. Method, apparatus and system for encoding and decoding video
US9978156B2 (en) * 2012-10-03 2018-05-22 Avago Technologies General Ip (Singapore) Pte. Ltd. High-throughput image and video compression
EP3522554B1 (en) 2014-05-28 2020-12-02 FRAUNHOFER-GESELLSCHAFT zur Förderung der angewandten Forschung e.V. Data processor and transport of user control data to audio decoders and renderers
CN107005694B (zh) * 2014-09-30 2020-05-19 瑞典爱立信有限公司 在独立处理单元中编码和解码视频帧的方法、装置和计算机可读介质
GB2534409A (en) * 2015-01-23 2016-07-27 Sony Corp Data encoding and decoding
CN110970038B (zh) * 2019-11-27 2023-04-18 云知声智能科技股份有限公司 语音解码方法及装置
KR102192631B1 (ko) * 2019-11-28 2020-12-17 주식회사우경정보기술 병렬 포렌식 마킹 장치 및 방법
US20240040125A1 (en) * 2022-07-27 2024-02-01 Qualcomm Incorporated Tracking sample completion in video coding

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080129559A1 (en) * 2006-10-20 2008-06-05 Samsung Electronics Co.; Ltd H.264 decoder equipped with multiple operation units and method for decoding compressed image data thereof
US20080225950A1 (en) * 2007-03-13 2008-09-18 Sony Corporation Scalable architecture for video codecs
US20090034615A1 (en) * 2007-07-31 2009-02-05 Kabushiki Kaisha Toshiba Decoding device and decoding method

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02264370A (ja) * 1989-04-04 1990-10-29 Mitsubishi Electric Corp 画像処理装置
JPH031689A (ja) * 1989-05-30 1991-01-08 Mitsubishi Electric Corp マルチプロセッサ制御装置
TW395142B (en) * 1997-05-15 2000-06-21 Matsushita Electric Ind Co Ltd Compressed code decoding device and audio decoding device
JP2006211617A (ja) * 2005-01-31 2006-08-10 Toshiba Corp 動画像符号化装置・復号化装置及び符号化ストリーム生成方法
US20060256854A1 (en) * 2005-05-16 2006-11-16 Hong Jiang Parallel execution of media encoding using multi-threaded single instruction multiple data processing
JP4182442B2 (ja) * 2006-04-27 2008-11-19 ソニー株式会社 画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体
US8000388B2 (en) * 2006-07-17 2011-08-16 Sony Corporation Parallel processing apparatus for video compression
US8699561B2 (en) * 2006-08-25 2014-04-15 Sony Computer Entertainment Inc. System and methods for detecting and handling errors in a multi-threaded video data decoder
JP5042568B2 (ja) * 2006-09-07 2012-10-03 富士通株式会社 Mpegデコーダ及びmpegエンコーダ
JP2008072647A (ja) * 2006-09-15 2008-03-27 Toshiba Corp 情報処理装置、デコーダおよび再生装置の動作制御方法
MX2009003968A (es) * 2006-10-16 2009-06-01 Nokia Corp Sistema y método para usar segmentos decodificables paralelamente para codificación de video de vistas múltiples.
EP2127394A1 (en) * 2006-12-27 2009-12-02 Intel Corporation Methods and apparatus to decode and encode video information
US20080298473A1 (en) * 2007-06-01 2008-12-04 Augusta Technology, Inc. Methods for Parallel Deblocking of Macroblocks of a Compressed Media Frame
JP2009025939A (ja) * 2007-07-18 2009-02-05 Renesas Technology Corp タスク制御方法及び半導体集積回路
JP5011017B2 (ja) * 2007-07-30 2012-08-29 株式会社日立製作所 画像復号化装置
US9131240B2 (en) * 2007-08-23 2015-09-08 Samsung Electronics Co., Ltd. Video decoding method and apparatus which uses double buffering
US8121197B2 (en) * 2007-11-13 2012-02-21 Elemental Technologies, Inc. Video encoding and decoding using parallel processors

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080129559A1 (en) * 2006-10-20 2008-06-05 Samsung Electronics Co.; Ltd H.264 decoder equipped with multiple operation units and method for decoding compressed image data thereof
US20080225950A1 (en) * 2007-03-13 2008-09-18 Sony Corporation Scalable architecture for video codecs
US20090034615A1 (en) * 2007-07-31 2009-02-05 Kabushiki Kaisha Toshiba Decoding device and decoding method

Also Published As

Publication number Publication date
CN102461173A (zh) 2012-05-16
CN102461173B (zh) 2015-09-09
JP5698156B2 (ja) 2015-04-08
US20120082240A1 (en) 2012-04-05
KR101645058B1 (ko) 2016-08-02
WO2010143226A1 (en) 2010-12-16
EP2441268A1 (en) 2012-04-18
JP2012529779A (ja) 2012-11-22

Similar Documents

Publication Publication Date Title
KR101645058B1 (ko) 디코딩 장치, 디코딩 방법, 및 편집 장치
US8699581B2 (en) Image processing device, image processing method, information processing device, and information processing method
JP4519082B2 (ja) 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置
EP2593862B1 (en) Out-of-order command execution in a multimedia processor
US20040067043A1 (en) Trick playback of digital video data
US9531983B2 (en) Decoding interdependent frames of a video for display
US8548061B2 (en) Image decoding apparatus and image decoding method
CN111405288A (zh) 视频抽帧方法、装置、电子设备及计算机可读存储介质
US20060088279A1 (en) Reproduction apparatus, data processing system, reproduction method, program, and storage medium
JP2004040791A (ja) ディジタルデータレートおよび方向つき再生変更を処理する方法およびシステム
US9258569B2 (en) Moving image processing method, program and apparatus including slice switching
US20090310678A1 (en) Image encoding apparatus, method of controlling the same and computer program
WO2007051202A2 (en) Accelerating video decoding using multiple processors
JP2007219577A (ja) データ処理装置、データ処理方法、データ処理方法のプログラム及びデータ処理方法のプログラムを記録した記録媒体
US7751687B2 (en) Data processing apparatus, data processing method, data processing system, program, and storage medium
US20020106184A1 (en) Multi-rate real-time players
US8280220B2 (en) Reproduction apparatus, data processing system, reproduction method, program, and storage medium
KR20160025894A (ko) Gpu의 리소스에 대한 전력 소비 제어방법 및 장치
US7974523B2 (en) Optimal buffering and scheduling strategy for smooth reverse in a DVD player or the like
US8615165B2 (en) Video-recording and replaying apparatus, I/O scheduling method, and program
JP2010204892A (ja) 映像解析装置,映像解析方法および映像解析プログラム
US7729591B2 (en) Data processing apparatus, reproduction apparatus, data processing system, reproduction method, program, and storage medium
CN116132719A (zh) 视频处理方法、装置、电子设备及可读存储介质
JP5236386B2 (ja) 画像復号装置及び画像復号方法
JP2018011258A (ja) 処理制御装置、処理制御方法及びプログラム

Legal Events

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

Payment date: 20190724

Year of fee payment: 4