KR20250104845A - Encoding apparatus for parallel encoding and image encoding method, and decoding apparatus and image decoding method - Google Patents
Encoding apparatus for parallel encoding and image encoding method, and decoding apparatus and image decoding method Download PDFInfo
- Publication number
- KR20250104845A KR20250104845A KR1020230197645A KR20230197645A KR20250104845A KR 20250104845 A KR20250104845 A KR 20250104845A KR 1020230197645 A KR1020230197645 A KR 1020230197645A KR 20230197645 A KR20230197645 A KR 20230197645A KR 20250104845 A KR20250104845 A KR 20250104845A
- Authority
- KR
- South Korea
- Prior art keywords
- encoding
- substream
- segments
- image
- segment
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/146—Data rate or code amount at the encoder output
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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/43—Hardware specially adapted for motion estimation or compensation
- H04N19/433—Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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/436—Methods 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
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
부호화 장치에 의한 영상의 부호화 방법은, 영상으로부터 복수의 세그먼트들을 식별하는 단계; 복수의 세그먼트들을 병렬 부호화하는 단계; 병렬 부호화를 통해 생성되는 서브스트림들을 복수의 버퍼에 저장하는 단계; 서브스트림들이 복수의 버퍼에 저장되는 동안, 현재 상태가 미리 설정된 출력 조건에 대응하는 경우, 복수의 버퍼로부터 미리 결정된 크기를 갖는 서브스트림 패킷들을 획득하는 단계; 및 서브스트림 패킷들을 미리 결정된 순서에 따라 배열하고, 서브스트림 패킷들이 배열된 비트스트림을 출력하는 단계를 포함할 수 있다.A method for encoding an image by an encoding device may include: a step of identifying a plurality of segments from an image; a step of encoding the plurality of segments in parallel; a step of storing substreams generated through the parallel encoding in a plurality of buffers; a step of obtaining substream packets having a predetermined size from the plurality of buffers when a current state corresponds to a preset output condition while the substreams are stored in the plurality of buffers; and a step of arranging the substream packets in a predetermined order and outputting a bitstream in which the substream packets are arranged.
Description
본 개시는 영상의 부호화 및 복호화 분야에 관한 것으로서, 구체적으로, 본 개시는 병렬 처리 기술을 이용하여 영상을 부호화 및 복호화하는 장치 및 방법에 관한 것이다.The present disclosure relates to the field of image encoding and decoding, and more particularly, the present disclosure relates to a device and method for encoding and decoding an image using parallel processing techniques.
영상의 부호화 및 복호화에서는 영상을 블록으로 분할하고, 인터 예측(inter prediction) 또는 인트라 예측(intra prediction)을 통해 각각의 블록을 예측 부호화 및 예측 복호화할 수 있다.In encoding and decoding of images, the image is divided into blocks, and each block can be predicted and encoded or predicted and decoded through inter prediction or intra prediction.
인터 예측은 영상들 사이의 시간적인 중복성을 제거하여 영상을 압축하는 기술이다. 인터 예측에서는 참조 영상을 이용해 현재 영상의 블록들을 예측할 수 있다. 현재 블록과 가장 유사한 참조 블록을 참조 영상 내에서 검색할 수 있다. 현재 블록을 참조 블록에 기초하여 예측하고, 예측 결과 생성된 예측 블록을 현재 블록으로부터 감산하여 잔차 블록을 생성할 수 있다.Inter prediction is a technique for compressing images by removing temporal redundancy between images. In inter prediction, blocks of the current image can be predicted using a reference image. The reference block most similar to the current block can be searched for in the reference image. The current block can be predicted based on the reference block, and the prediction block generated as a result of the prediction can be subtracted from the current block to generate a residual block.
인트라 예측은 영상 내의 공간적인 중복성을 제거하여 영상을 압축하는 기술이다. 인트라 예측에서는 인트라 예측 모드에 따라 현재 블록의 주변 픽셀들에 기초하여 예측 블록을 생성할 수 있다. 그리고, 예측 블록을 현재 블록으로부터 감산하여 잔차 블록을 생성할 수 있다. Intra prediction is a technique for compressing images by removing spatial redundancy within the image. In intra prediction, a prediction block can be generated based on the surrounding pixels of the current block according to the intra prediction mode. Then, a residual block can be generated by subtracting the prediction block from the current block.
잔차 블록에 대한 정보는 비트스트림에 포함될 수 있다. 디코더는 비트스트림으로부터 잔차 블록을 획득하고, 인터 예측 또는 인트라 예측을 통해 생성된 예측 블록과 비트스트림으로부터 획득된 잔차 블록을 이용하여 현재 블록을 복원할 수 있다.Information about the residual block can be included in the bitstream. The decoder can obtain the residual block from the bitstream and reconstruct the current block using the prediction block generated through inter prediction or intra prediction and the residual block obtained from the bitstream.
멀티 코어 CPU가 모바일 기기에서도 보편적으로 이용됨에 따라 HEVC 등의 표준에서 병렬화 기술이 채용되었다. 병렬화 기술이란, 프로그램에서 처리할 데이터를 여러 단위로 분할한 후 분할된 데이터를 서로 다른 코어 또는 스레드에 할당하여 동일 작업을 병렬적으로 수행하는 방식이다. 영상의 병렬 부호화 및 병렬 복호화를 통해 부호화 및 복호화 과정에서 소요되는 시간이 감소될 수 있다.As multi-core CPUs are widely used in mobile devices, parallelization technology has been adopted in standards such as HEVC. Parallelization technology is a method of dividing data to be processed by a program into several units and then assigning the divided data to different cores or threads to perform the same task in parallel. Through parallel encoding and parallel decoding of images, the time required for encoding and decoding processes can be reduced.
일 실시예에 따른 영상의 부호화 방법은, 영상으로부터 복수의 세그먼트들을 식별하는 단계를 포함할 수 있다.A method of encoding an image according to one embodiment may include a step of identifying a plurality of segments from the image.
일 실시예에 따른 영상의 부호화 방법은, 복수의 세그먼트들을 병렬 부호화하는 단계를 포함할 수 있다.A method of encoding an image according to one embodiment may include a step of encoding a plurality of segments in parallel.
일 실시예에 따른 영상의 부호화 방법은, 병렬 부호화를 통해 생성되는 서브스트림들을 복수의 버퍼에 저장하는 단계를 포함할 수 있다.A method of encoding an image according to one embodiment may include a step of storing substreams generated through parallel encoding in a plurality of buffers.
일 실시예에 따른 영상의 부호화 방법은, 서브스트림들이 복수의 버퍼에 저장되는 동안, 현재 상태가 미리 설정된 출력 조건에 대응하는 경우, 복수의 버퍼로부터 미리 결정된 크기를 갖는 서브스트림 패킷들을 획득하는 단계를 포함할 수 있다.A method of encoding a video according to one embodiment may include a step of obtaining substream packets having a predetermined size from a plurality of buffers when a current state corresponds to a preset output condition while the substreams are stored in a plurality of buffers.
일 실시예에 따른 영상의 부호화 방법은, 서브스트림 패킷들을 미리 결정된 순서에 따라 배열하고, 서브스트림 패킷들이 배열된 비트스트림을 출력하는 단계를 포함할 수 있다.A method of encoding an image according to one embodiment may include the steps of arranging substream packets in a predetermined order and outputting a bitstream in which the substream packets are arranged.
일 실시예에 따른 영상의 복호화 방법은, 영상 내 복수의 세그먼트들을 식별하는 단계를 포함할 수 있다.A method of decoding an image according to one embodiment may include a step of identifying a plurality of segments within the image.
일 실시예에 따른 영상의 복호화 방법은, 비트스트림으로부터 미리 결정된 순서에 따라 배열된 미리 결정된 크기의 서브스트림 패킷들을 획득하는 단계를 포함할 수 있다. 일 실시예에서, 서브스트림 패킷들은 복수의 세그먼트들에 대한 병렬 부호화를 통해 생성될 수 있다.A method of decoding an image according to one embodiment may include a step of obtaining substream packets of a predetermined size arranged in a predetermined order from a bitstream. In one embodiment, the substream packets may be generated through parallel encoding of a plurality of segments.
일 실시예에 따른 영상의 복호화 방법은, 서브스트림 패킷들을 복호화하여 복수의 세그먼트들을 복원하는 단계를 포함할 수 있다.A method of decoding an image according to one embodiment may include a step of decoding substream packets to restore a plurality of segments.
일 실시예에 따른 영상의 복호화 방법은, 복원된 복수의 세그먼트들을 포함하는 복원 영상을 생성하는 단계를 포함할 수 있다.A method of decrypting an image according to one embodiment may include a step of generating a restored image including a plurality of restored segments.
일 실시예에서, 서브스트림 패킷들은 미리 결정된 순서대로 복수의 세그먼트들 각각에 대응할 수 있다.In one embodiment, the substream packets may correspond to each of the plurality of segments in a predetermined order.
일 실시예에 따른 부호화 장치는, 영상으로부터 복수의 세그먼트들을 식별하는 제어부를 포함할 수 있다.An encoding device according to one embodiment may include a control unit that identifies a plurality of segments from an image.
일 실시예에 따른 부호화 장치는, 복수의 세그먼트들을 병렬 부호화하는 적어도 하나의 코어를 포함할 수 있다.An encoding device according to one embodiment may include at least one core for encoding a plurality of segments in parallel.
일 실시예에 따른 부호화 장치는, 복수의 버퍼를 포함할 수 있다.An encoding device according to one embodiment may include a plurality of buffers.
일 실시예에서, 제어부는, 병렬 부호화를 통해 생성되는 서브스트림들을 복수의 버퍼에 저장할 수 있다.In one embodiment, the control unit can store substreams generated through parallel encoding in multiple buffers.
일 실시예에서, 제어부는, 서브스트림들이 복수의 버퍼에 저장되는 동안, 현재 상태가 미리 설정된 출력 조건에 대응하는 경우, 복수의 버퍼로부터 미리 결정된 크기를 갖는 서브스트림 패킷들을 획득할 수 있다.In one embodiment, the control unit can obtain substream packets having a predetermined size from the plurality of buffers if a current state corresponds to a preset output condition while the substreams are stored in the plurality of buffers.
일 실시예에서, 제어부는, 서브스트림 패킷들을 미리 결정된 순서에 따라 배열하고, 서브스트림 패킷들이 배열된 비트스트림을 출력할 수 있다.In one embodiment, the control unit can arrange the substream packets in a predetermined order and output a bitstream in which the substream packets are arranged.
일 실시예에 따른 복호화 장치는, 영상 내 복수의 세그먼트들을 식별하고, 비트스트림으로부터 미리 결정된 순서에 따라 배열된 미리 결정된 크기의 서브스트림 패킷들을 획득하는 제어부를 포함할 수 있다.A decoding device according to one embodiment may include a control unit that identifies a plurality of segments in an image and obtains substream packets of a predetermined size arranged in a predetermined order from a bitstream.
일 실시예에서, 서브스트림 패킷들은 복수의 세그먼트들에 대한 병렬 부호화를 통해 생성될 수 있다.In one embodiment, substream packets may be generated via parallel encoding of multiple segments.
일 실시예에 따른 복호화 장치는, 서브스트림 패킷들을 복호화하여 복수의 세그먼트들을 복원하는 적어도 하나의 코어를 포함할 수 있다.A decryption device according to one embodiment may include at least one core for decrypting substream packets to restore a plurality of segments.
일 실시예에서, 서브스트림 패킷들은 미리 결정된 순서대로 복수의 세그먼트들 각각에 대응할 수 있다.In one embodiment, the substream packets may correspond to each of the plurality of segments in a predetermined order.
일 실시예에서, 제어부는, 복원된 복수의 세그먼트들을 포함하는 복원 영상을 생성할 수 있다.In one embodiment, the control unit can generate a restored image comprising a plurality of restored segments.
도 1은 일 실시예에 따른 영상의 부호화 및 복호화 과정을 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 부호화 장치의 구성을 도시하는 블록도이다.
도 3a는 일 실시예에 따른 병렬 부호화가 적용될 수 있는 영상들을 도시하는 도면이다.
도 3b는 일 실시예에 따른 병렬 부호화가 적용될 수 있는 슬라이스들을 도시하는 도면이다.
도 3c는 일 실시예에 따른 병렬 부호화가 적용될 수 있는 타일들을 도시하는 도면이다.
도 3d는 일 실시예에 따른 병렬 부호화가 적용될 수 있는 최대 부호화 단위 행을 도시하는 도면이다.
도 4는 일 실시예에 따른 복수의 세그먼트의 할당 방법을 설명하기 위한 표이다.
도 5는 일 실시예에 따른 복수의 세그먼트들이 병렬 부호화되는 과정을 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 복수의 세그먼트들이 병렬 부호화되는 과정을 설명하기 위한 도면이다.
도 7a는 일 실시예에 따른 복수의 버퍼로부터 비트스트림이 출력되는 과정을 설명하기 위한 도면이다.
도 7b는 일 실시예에 따른 복수의 버퍼로부터 비트스트림이 출력되는 과정을 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 복수의 버퍼로부터 비트스트림이 출력되는 과정을 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 복수의 버퍼로부터 비트스트림이 출력되는 과정을 설명하기 위한 도면이다.
도 10은 일 실시예에 따른 영상의 부호화 방법을 설명하기 위한 순서도이다.
도 11은 일 실시예에 따른 복호화 장치의 구성을 도시하는 블록도이다.
도 12는 일 실시예에 따른 비트스트림으로부터 복수의 세그먼트들을 복원하는 방법을 설명하기 위한 도면이다.
도 13은 일 실시예에 따른 비트스트림으로부터 복수의 세그먼트들을 복원하는 방법을 설명하기 위한 도면이다.
도 14는 일 실시예에 따른 비트스트림으로부터 복수의 세그먼트들을 복원하는 방법을 설명하기 위한 도면이다.
도 15는 일 실시예에 따른 영상의 복호화 방법을 설명하기 위한 순서도이다.
도 16은 일 실시예에 따른 부호화 장치 또는 복호화 장치를 포함하는 단말 장치의 구성을 도시하는 블록도이다.FIG. 1 is a diagram for explaining an image encoding and decoding process according to one embodiment.
FIG. 2 is a block diagram illustrating the configuration of an encoding device according to one embodiment.
FIG. 3a is a diagram illustrating images to which parallel encoding can be applied according to one embodiment.
FIG. 3b is a diagram illustrating slices to which parallel encoding can be applied according to one embodiment.
FIG. 3c is a diagram illustrating tiles to which parallel encoding can be applied according to one embodiment.
FIG. 3d is a diagram illustrating a maximum encoding unit row to which parallel encoding can be applied according to one embodiment.
FIG. 4 is a table for explaining a method of allocating multiple segments according to one embodiment.
FIG. 5 is a diagram for explaining a process in which multiple segments are encoded in parallel according to one embodiment.
FIG. 6 is a diagram for explaining a process in which multiple segments are encoded in parallel according to one embodiment.
FIG. 7a is a diagram for explaining a process of outputting a bitstream from multiple buffers according to one embodiment.
FIG. 7b is a diagram for explaining a process of outputting a bitstream from multiple buffers according to one embodiment.
FIG. 8 is a diagram for explaining a process of outputting a bitstream from multiple buffers according to one embodiment.
FIG. 9 is a diagram for explaining a process of outputting a bitstream from multiple buffers according to one embodiment.
Fig. 10 is a flowchart for explaining a method of encoding an image according to one embodiment.
Fig. 11 is a block diagram illustrating the configuration of a decryption device according to one embodiment.
FIG. 12 is a diagram illustrating a method for restoring multiple segments from a bitstream according to one embodiment.
FIG. 13 is a diagram illustrating a method for restoring multiple segments from a bitstream according to one embodiment.
FIG. 14 is a diagram illustrating a method for restoring multiple segments from a bitstream according to one embodiment.
Fig. 15 is a flowchart for explaining a method of decoding an image according to one embodiment.
FIG. 16 is a block diagram illustrating a configuration of a terminal device including an encoding device or a decoding device according to one embodiment.
본 개시는 다양한 변경을 가할 수 있고, 여러 가지 실시예를 가질 수 있으므로, 실시예를 도면에 예시하고, 이를 상세한 설명을 통해 설명한다. 그러나, 이는 본 개시의 실시 형태에 대해 한정하려는 것이 아니며, 본 개시는 여러 실시예들의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함할 수 있다.Since the present disclosure can have various modifications and various embodiments, embodiments are illustrated in the drawings and described in detail. However, this is not intended to limit the embodiments of the present disclosure, and the present disclosure can include all modifications, equivalents, or substitutes included in the spirit and technical scope of the various embodiments.
실시예를 설명함에 있어서, 관련 공지 기술에 대한 구체적인 설명이 본 개시의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략할 수 있다. 또한, 실시예의 설명 과정에서 이용되는 숫자(예를 들어, 제 1, 제 2 등)는 하나의 구성요소를 다른 구성요소와 구분하기 위한 식별 기호에 해당할 수 있다.In describing the embodiments, if it is determined that a detailed description of a related known technology may unnecessarily obscure the gist of the present disclosure, the detailed description may be omitted. In addition, numbers (e.g., first, second, etc.) used in the description of the embodiments may correspond to identification symbols for distinguishing one component from another.
본 개시에서, "a, b 또는 c 중 적어도 하나"의 표현은 "a", "b", "c", "a 및 b", "a 및 c", "b 및 c", "a, b 및 c 모두", 혹은 그 변형들을 지칭할 수 있다.In this disclosure, the expression “at least one of a, b or c” may refer to “a”, “b”, “c”, “a and b”, “a and c”, “b and c”, “all of a, b and c”, or variations thereof.
본 개시에서, 일 구성요소가 다른 구성요소와 "연결된다" 거나 "접속된다" 등으로 언급된 때에는, 일 구성요소가 다른 구성요소와 직접 연결되거나 직접 접속될 수도 있지만, 특별히 반대되는 기재가 존재하지 않는 이상, 중간에 또 다른 구성요소를 매개하여 연결되거나 접속될 수도 있다.In this disclosure, when a component is referred to as being "connected" or "connected" to another component, the component may be directly connected or connected to the other component, but unless otherwise specifically stated, the component may also be connected or connected via another component in between.
본 개시에서 '~부(유닛)', '모듈' 등으로 표현되는 구성요소는 2개 이상의 구성요소가 하나의 구성요소로 합쳐지거나 또는 하나의 구성요소가 보다 세분화된 2개 이상의 구성요소로 나뉘어질 수도 있다. 또한, 이하에서 설명할 구성요소 각각은 자신이 담당하는 주 기능 이외에도 다른 구성요소가 담당하는 기능 중 일부 또는 전부의 기능을 추가적으로 수행할 수 있으며, 구성요소 각각이 담당하는 주 기능 중 일부 기능이 다른 구성요소에 의해 전담되어 수행될 수도 있다.In the present disclosure, components expressed as 'unit', 'module', etc. may be two or more components combined into one component, or one component may be divided into two or more more detailed components. In addition, each of the components described below may additionally perform some or all of the functions performed by other components in addition to its own main function, and some of the main functions performed by each component may be performed exclusively by other components.
본 개시에서, '영상(image)'은 픽처(picture), 정지영상, 프레임, 복수의 연속된 정지영상으로 구성된 동영상, 또는 비디오를 나타낼 수 있다.In the present disclosure, 'image' may represent a picture, a still image, a frame, a moving image composed of a plurality of consecutive still images, or a video.
본 개시에서, '샘플'은 영상의 샘플링 위치에 할당된 데이터로서 처리 대상이 되는 데이터를 의미할 수 있다. 예를 들어, 공간 영역의 영상 내 픽셀이 샘플에 해당할 수 있다.In the present disclosure, a 'sample' may mean data that is assigned to a sampling location of an image and is a target of processing. For example, a pixel in an image in a spatial domain may correspond to a sample.
본 개시에서, '블록'은 영상으로부터 분할된 슬라이스, 타일, 최대 부호화 단위, 부호화 단위, 변환 단위 또는 예측 단위를 포함할 수 있다. 블록은 하나 이상의 샘플들로 이루어질 수 있다.In the present disclosure, a 'block' may include a slice, tile, maximum coding unit, encoding unit, transform unit or prediction unit segmented from an image. A block may be composed of one or more samples.
도 1은 일 실시예에 따른 영상의 부호화 및 복호화 과정을 설명하기 위한 도면이다.FIG. 1 is a diagram for explaining an image encoding and decoding process according to one embodiment.
영상 부호화 및 복호화 시스템(100)의 부호화단(110)은 영상의 부호화를 통해 생성된 비트스트림을 전송하고, 복호화단(150)은 비트스트림을 복호화함으로써 복원 영상을 출력할 수 있다. The encoding unit (110) of the image encoding and decoding system (100) transmits a bitstream generated through encoding of an image, and the decoding unit (150) can output a restored image by decoding the bitstream.
일 실시예에서, 부호화단(110)은 후술하는 부호화 장치(200)를 포함할 수 있고, 복호화단(150)은 후술하는 복호화 장치(1100)를 포함할 수 있다.In one embodiment, the encoding unit (110) may include an encoding device (200) described below, and the decoding unit (150) may include a decoding device (1100) described below.
부호화단(110)에서, 예측 부호화부(115)는 인터 예측 또는 인트라 예측을 통해 예측 데이터를 출력할 수 있고, 변환 및 양자화부(120)는 예측 데이터와 현재 입력 영상 간의 레지듀얼 데이터의 양자화된 변환 계수를 출력할 수 있다. In the encoding unit (110), the prediction encoding unit (115) can output prediction data through inter prediction or intra prediction, and the transformation and quantization unit (120) can output quantized transformation coefficients of residual data between the prediction data and the current input image.
엔트로피 부호화부(125)는 양자화된 변환 계수를 부호화하여 비트스트림으로 출력할 수 있다. The entropy encoding unit (125) can encode quantized transform coefficients and output them as a bitstream.
양자화된 변환 계수는 역양자화 및 역변환부(130)을 거쳐 공간 영역의 레지듀얼 데이터로 복원되고, 레지듀얼 데이터와 예측 데이터로부터 공간 영역의 영상 데이터가 복원될 수 있다. 복원된 공간 영역의 영상 데이터는 디블로킹 필터링부(135) 및 루프 필터링부(140)를 거쳐 복원 영상으로 출력될 수 있다. 복원 영상은 예측 부호화부(115)를 거쳐 다음 입력 영상의 참조 영상으로 사용될 수 있다. The quantized transform coefficients are restored as residual data in the spatial domain through the inverse quantization and inverse transformation unit (130), and image data in the spatial domain can be restored from the residual data and the prediction data. The restored image data in the spatial domain can be output as a restored image through the deblocking filtering unit (135) and the loop filtering unit (140). The restored image can be used as a reference image for the next input image through the prediction encoding unit (115).
복호화단(150)으로 수신된 비트스트림 중 부호화된 영상 데이터는, 엔트로피 복호화부(155) 및 역양자화 및 역변환부(160)를 거쳐 공간 영역의 레지듀얼 데이터로 복원될 수 있다. Encoded image data from the bitstream received by the decoding unit (150) can be restored to residual data in the spatial domain through the entropy decoding unit (155) and the inverse quantization and inverse transformation unit (160).
예측 복호화부(175)로부터 출력된 예측 데이터 및 레지듀얼 데이터가 조합되어 공간 영역의 영상 데이터가 구성되고, 디블로킹 필터링부(165) 및 루프 필터링부(170)는 공간 영역의 영상 데이터에 대해 필터링을 수행하여 원본 영상에 대응하는 복원 영상을 출력할 수 있다. 복원 영상은 예측 복호화부(175)에 의해 다음 영상에 대한 참조 영상으로 이용될 수 있다. The prediction data and residual data output from the prediction decoding unit (175) are combined to form image data in the spatial domain, and the deblocking filtering unit (165) and the loop filtering unit (170) can perform filtering on the image data in the spatial domain to output a restored image corresponding to the original image. The restored image can be used as a reference image for the next image by the prediction decoding unit (175).
부호화단(110)의 루프 필터링부(140)는 사용자 입력 또는 시스템 설정에 따라 입력된 필터 정보를 이용하여 루프 필터링을 수행할 수 있다. The loop filtering unit (140) of the encoding unit (110) can perform loop filtering using filter information input according to user input or system settings.
루프 필터링부(140)에 의해 사용된 필터 정보는 엔트로피 부호화부(125)를 통해 부호화된 영상 데이터와 함께 복호화단(150)으로 전송될 수 있다. 복호화단(150)의 루프 필터링부(170)는 복호화단(150)으로 전달된 필터 정보에 기초하여 루프 필터링을 수행할 수 있다.The filter information used by the loop filtering unit (140) can be transmitted to the decoding unit (150) together with the encoded image data through the entropy encoding unit (125). The loop filtering unit (170) of the decoding unit (150) can perform loop filtering based on the filter information transmitted to the decoding unit (150).
영상의 병렬 부호화 및 병렬 복호화를 통해 영상의 부호화 및 복호화에 소요되는 시간이 감소될 수 있다. 이하에서는 병렬 처리 기술을 통해 영상을 부호화하는 부호화 장치에 대해 설명한다.The time required for encoding and decoding an image can be reduced through parallel encoding and parallel decoding of the image. Hereinafter, an encoding device that encodes an image using parallel processing technology is described.
도 2는 일 실시예에 따른 부호화 장치의 구성을 도시하는 블록도이다.FIG. 2 is a block diagram illustrating the configuration of an encoding device according to one embodiment.
부호화 장치(200)는 제어부(210), 적어도 하나의 코어(230), 및 복수의 버퍼(250)를 포함할 수 있다.The encoding device (200) may include a control unit (210), at least one core (230), and a plurality of buffers (250).
도 2는 부호화 장치(200)가 1개의 코어(230)를 포함하고 있는 것으로 도시하고 있으나, 부호화 장치(200)에 포함될 수 있는 코어(230)의 개수는 복수 개일 수 있다.Although FIG. 2 illustrates that the encoding device (200) includes one core (230), the number of cores (230) that may be included in the encoding device (200) may be multiple.
또한, 도 2는 3개의 버퍼(250a, 250b, 250c)가 부호화 장치(200)에 포함되어 있는 것으로 도시하고 있는데, 부호화 장치(200)에 포함되는 버퍼의 개수는 후술하는 병렬 처리되는 세그먼트들의 개수와 동일할 수 있다.In addition, FIG. 2 illustrates that three buffers (250a, 250b, 250c) are included in the encoding device (200), and the number of buffers included in the encoding device (200) may be the same as the number of segments to be processed in parallel, which will be described later.
일 실시예에서, 제어부(210) 및 적어도 하나의 코어(230)는 프로세서에 포함될 수 있다.In one embodiment, the control unit (210) and at least one core (230) may be included in a processor.
일 실시예에서, 제어부(210)는 제 1 프로세서에 포함되고, 적어도 하나의 코어(230)는 제 2 프로세서에 포함될 수 있다.In one embodiment, the control unit (210) may be included in the first processor, and at least one core (230) may be included in the second processor.
일 실시예에서, 부호화 장치(200)가 복수의 코어(230)를 포함할 때, 복수의 코어(230) 중 일부는 어느 하나의 프로세서에 포함되고, 다른 일부의 코어(230)는 다른 하나의 프로세서에 포함될 수도 있다.In one embodiment, when the encoding device (200) includes a plurality of cores (230), some of the plurality of cores (230) may be included in one processor, and other some of the cores (230) may be included in another processor.
일 실시예에서, 제어부(210) 및 적어도 하나의 코어(230)를 구현하기 위한 프로세서는 영상의 부호화를 위한 전용 프로세서일 수 있다. 일 실시예에서, 제어부(210) 및 적어도 하나의 코어(230)를 구현하기 위한 프로세서는 AP(application processor), CPU(central processing unit) 또는 GPU(graphic processing unit)와 같은 범용 프로세서일 수도 있다. In one embodiment, the processor for implementing the control unit (210) and the at least one core (230) may be a dedicated processor for encoding images. In one embodiment, the processor for implementing the control unit (210) and the at least one core (230) may be a general-purpose processor such as an application processor (AP), a central processing unit (CPU), or a graphic processing unit (GPU).
일 실시예서, 영상의 부호화를 위한 적어도 하나의 인스트럭션이 메모리에 저장될 수 있고, 제어부(210) 및 적어도 하나의 코어(230)는 메모리에 저장된 적어도 하나의 인스트럭션에 따라 동작할 수 있다.In one embodiment, at least one instruction for encoding an image may be stored in a memory, and the control unit (210) and at least one core (230) may operate according to the at least one instruction stored in the memory.
일 실시예에서, 복수의 버퍼(250)는 서로 간에 물리적으로 구별될 수 있다. 일 실시예에서, 복수의 버퍼(250) 각각은 하나 이상의 버퍼 내에서 하드웨어 또는 소프트웨어에 따라 식별되는 저장 영역을 의미할 수도 있다. In one embodiment, the plurality of buffers (250) may be physically distinct from one another. In one embodiment, each of the plurality of buffers (250) may mean a storage area identified by hardware or software within one or more buffers.
일 실시예에서, 복수의 버퍼(250)는 FIFO (First In First Out) 버퍼일 수 있다. 따라서, 복수의 버퍼(250)로 가장 먼저 입력된 데이터가 가장 먼저 출력될 수 있다.In one embodiment, the plurality of buffers (250) may be FIFO (First In First Out) buffers. Accordingly, the data input first into the plurality of buffers (250) may be output first.
일 실시예에서, 제어부(210)는 영상의 병렬 부호화를 위해 적어도 하나의 코어(230) 및 복수의 버퍼(250)의 동작을 제어할 수 있다.In one embodiment, the control unit (210) can control the operation of at least one core (230) and a plurality of buffers (250) for parallel encoding of an image.
일 실시예에서, 제어부(210)는 영상의 병렬 부호화를 위해 영상으로부터 복수의 세그먼트들을 식별할 수 있다.In one embodiment, the control unit (210) can identify multiple segments from an image for parallel encoding of the image.
복수의 세그먼트들이 병렬 부호화된다는 것은, 복수의 세그먼트들이 독립적으로 부호화된다는 것을 의미할 수 있다. 다시 말하면, 세그먼트들 사이에 의존성이 거의 없으므로, 어느 하나의 세그먼트의 부호화와 다른 하나의 세그먼트의 부호화가 동시에 진행될 수 있다. Parallel encoding of multiple segments may mean that multiple segments are encoded independently. In other words, since there is little dependency between the segments, encoding of one segment may proceed simultaneously with encoding of another segment.
일 실시예에서, 후술하는 WPP (wavefront parallel processing)에서와 같이, 어느 하나의 세그먼트의 부호화와 다른 하나의 세그먼트의 부호화 사이에 약간의 시간 지연이 존재할 수 있다.In one embodiment, there may be some time delay between the encoding of one segment and the encoding of another segment, such as in wavefront parallel processing (WPP) described below.
세그먼트란, 병렬 부호화의 대상이 되는 영상의 단위를 의미할 수 있다. 예를 들어, 세그먼트는 영상으로부터 분할된 블록일 수 있다. 또한, 예를 들어, 세그먼트는 영상 시퀀스를 구성하는 프레임 또는 영상일 수도 있다.A segment may mean a unit of an image that is the target of parallel encoding. For example, a segment may be a block divided from an image. In addition, for example, a segment may be a frame or image that constitutes an image sequence.
복수의 세그먼트들 각각은 적어도 하나의 코어(230)에 할당되고, 적어도 하나의 코어(230)에 의해 병렬 부호화될 수 있다.Each of the plurality of segments is assigned to at least one core (230) and can be encoded in parallel by at least one core (230).
도 3a 내지 도 3d를 참조하여 병렬 부호화의 대상인 세그먼트에 대해 설명한다.Segments that are targets of parallel encoding are described with reference to FIGS. 3a to 3d.
도 3a는 일 실시예에 따른 병렬 부호화가 적용될 수 있는 영상들을 도시하는 도면이다.FIG. 3a is a diagram illustrating images to which parallel encoding can be applied according to one embodiment.
비디오 코덱에서 GOP(group of picture)가 계층 구조에 따라 부호화 및 복호화될 수 있다. 이 경우, GOP를 구성하는 영상들이 레이어(layer)로 구분되고, 낮은 레이어의 영상들은 높은 레이어의 영상들을 참조하여 부호화 및 복호화될 수 있다. In a video codec, a group of pictures (GOP) can be encoded and decoded according to a hierarchical structure. In this case, the images that make up the GOP are divided into layers, and the images of lower layers can be encoded and decoded by referring to the images of higher layers.
특정 레이어의 영상들이 서로 간에 참조하지 않는 경우, 특정 레이어의 영상들은 병렬 처리의 대상이 될 수 있다.If the images in a specific layer do not reference each other, the images in the specific layer can be the target of parallel processing.
도 3a를 참조하면, 레이어 i+1에 속한 영상들은 레이어 i에 속한 영상을 참조하여 부호화 및 복호화될 수 있다. 레이어 i+1에 속한 영상들은 서로 간에 참조하지 않으므로, 제어부(210)는 영상 시퀀스에 포함된 영상들 중 동일 레이어에 속한 영상들, 예를 들어, 도 3a에 도시된 영상 0, 영상 1, 영상 2, 영상 3, 영상 4 및 영상 5를 복수의 세그먼트들로 식별할 수 있다.Referring to FIG. 3a, images belonging to layer i+1 can be encoded and decoded with reference to images belonging to layer i. Since images belonging to layer i+1 do not refer to each other, the control unit (210) can identify images belonging to the same layer among images included in the image sequence, for example,
적어도 하나의 코어(230)는 영상 0, 영상 1, 영상 2, 영상 3, 영상 4 및 영상 5 각각을 독립적으로 부호화될 수 있다. 일 실시예에서, 적어도 하나의 코어(230)는 영상 0, 영상 1, 영상 2, 영상 3, 영상 4 및 영상 5 각각을 복수의 최대 부호화 단위들로 분할하고, 미리 결정된 스캔 오더(예를 들어, 래스터 스캔 오더)에 따라 복수의 최대 부호화 단위들을 부호화할 수 있다.At least one core (230) can independently encode each of
도 3b는 일 실시예에 따른 병렬 부호화가 적용될 수 있는 슬라이스들을 도시하는 도면이다.FIG. 3b is a diagram illustrating slices to which parallel encoding can be applied according to one embodiment.
제어부(210)는 영상(300)을 복수의 슬라이스들로 분할할 수 있다. 복수의 슬라이스들 각각은 하나 이상의 최대 부호화 단위를 포함할 수 있다.The control unit (210) can divide the image (300) into a plurality of slices. Each of the plurality of slices can include one or more maximum coding units.
일 실시예에서, 슬라이스들은 서로 간에 의존성을 갖지 않으므로, 제어부(210)는 도 3b에 도시된 슬라이스 0, 슬라이스 1, 슬라이스 2 및 슬라이스 3을 복수의 세그먼트들로 식별할 수 있다.In one embodiment, since the slices do not have dependencies on each other, the control unit (210) can identify
적어도 하나의 코어(230)는 슬라이스 0, 슬라이스 1, 슬라이스 2 및 슬라이스 3 각각을 독립적으로 부호화할 수 있다. 일 실시예에서, 적어도 하나의 코어(230)는 슬라이스 0, 슬라이스 1, 슬라이스 2 및 슬라이스 3에 포함된 최대 부호화 단위들을 미리 결정된 스캔 오더에 따라 부호화할 수 있다.At least one core (230) can independently encode each of
도 3c는 일 실시예에 따른 병렬 부호화가 적용될 수 있는 타일들을 도시하는 도면이다.FIG. 3c is a diagram illustrating tiles to which parallel encoding can be applied according to one embodiment.
제어부(210)는 영상(300)을 복수의 타일들로 분할할 수 있다. 복수의 타일들 각각은 하나 이상의 최대 부호화 단위를 포함할 수 있다.The control unit (210) can divide the image (300) into a plurality of tiles. Each of the plurality of tiles can include one or more maximum coding units.
일 실시예에서, 타일들은 서로 간에 의존성을 갖지 않으므로, 제어부(210)는 도 3c에 도시된 타일 0, 타일 1, 타일 2 및 타일 3을 복수의 세그먼트들로 식별할 수 있다.In one embodiment, since the tiles do not have dependencies on each other, the control unit (210) can identify
적어도 하나의 코어(230)는 타일 0, 타일 1, 타일 2 및 타일 3 각각을 독립적으로 부호화할 수 있다. 일 실시예에서, 적어도 하나의 코어(230)는 타일 0, 타일 1, 타일 2 및 타일 3에 포함된 최대 부호화 단위들을 미리 결정된 스캔 오더에 따라 부호화할 수 있다.At least one core (230) can independently encode each of
도 3d는 일 실시예에 따른 병렬 부호화가 적용될 수 있는 최대 부호화 단위 행을 도시하는 도면이다.FIG. 3d is a diagram illustrating a maximum encoding unit row to which parallel encoding can be applied according to one embodiment.
HEVC 등의 코덱 표준에서 WPP(wavefront parallel processing) 기술이 채택되었다. WPP에서는 영상(300)으로부터 분할되는 최대 부호화 단위 행(row)들이 병렬 처리될 수 있다.WPP (wavefront parallel processing) technology has been adopted in codec standards such as HEVC. In WPP, maximum coding unit rows divided from an image (300) can be processed in parallel.
영상(300)은 복수의 최대 부호화 단위로 분할될 수 있고, 영상(300) 내 최대 부호화 단위 행들이 복수의 세그먼트들로 식별될 수 있다. 따라서, 도 3d에 도시된 최대 부호화 단위 행 0, 최대 부호화 단위 행 1, 최대 부호화 단위 행 2, 최대 부호화 단위 행 3 및 최대 부호화 단위 행 4가 적어도 하나의 코어(230)에 의해 병렬 부호화될 수 있다.The image (300) can be divided into a plurality of maximum coding units, and the maximum coding unit rows in the image (300) can be identified as a plurality of segments. Accordingly, the maximum
WPP에서는 어느 하나의 최대 부호화 단위 행에 포함된 최대 부호화 단위가 상부 행에 포함된 두 개의 최대 부호화 단위를 참조할 수 있으므로, 최대 부호화 단위 행들을 병렬 부호화하는 과정에서 약간의 지연이 발생할 수 있다.In WPP, since a maximum coding unit included in one maximum coding unit row can refer to two maximum coding units included in the upper row, there may be some delay in the process of parallel encoding of maximum coding unit rows.
예를 들어, 최대 부호화 단위 행 1 내 가장 좌측에 위치하는 최대 부호화 단위(321)는, 최대 부호화 단위 행 0 내에서 가장 좌측에 위치하는 최대 부호화 단위(311), 및 가장 좌측에 위치하는 최대 부호화 단위(311)의 우측에 위치하는 최대 부호화 단위(312)의 부호화 과정에서 발생되는 데이터를 참조할 수 있으므로, 최대 부호화 단위 행 0 내 두 개의 최대 부호화 단위(311, 312)의 부호화가 완료된 후, 최대 부호화 단위 행 1의 부호화가 시작될 수 있다. 마찬가지로, 최대 부호화 단위 행 1 내 두 개의 최대 부호화 단위의 부호화가 완료된 후, 최대 부호화 단위 행 2의 부호화가 시작될 수 있다For example, since the maximum coding unit (321) located at the leftmost position in the maximum
다시 도 2를 참조하면, 일 실시예에서, 제어부(210)는 영상으로부터 복수의 세그먼트들이 식별되면, 복수의 세그먼트들의 병렬 부호화를 위해 복수의 세그먼트들을 적어도 하나의 코어(230)에 할당할 수 있다.Referring again to FIG. 2, in one embodiment, when a plurality of segments are identified from an image, the control unit (210) may assign the plurality of segments to at least one core (230) for parallel encoding of the plurality of segments.
일 실시예에서, 제어부(210)는 병렬 부호화의 성능 정보를 고려하여 복수의 세그먼트들을 적어도 하나의 코어(230)에 할당할 수 있다.In one embodiment, the control unit (210) may allocate a plurality of segments to at least one core (230) by taking into account performance information of parallel encoding.
병렬 부호화의 성능 정보란, 세그먼트들을 병렬 처리할 수 있는 코어(230)의 개수, 또는 적어도 하나의 코어(230)에 의해 병렬 처리될 수 있는 스레드(thread)의 개수 중 적어도 하나를 포함할 수 있다. 일 실시예에서, 병렬 부호화를 위한 성능 정보는, 병렬 부호화될 수 있는 세그먼트의 개수를 포함할 수도 있다.The performance information for parallel encoding may include at least one of the number of cores (230) capable of parallel processing of segments, or the number of threads capable of parallel processing by at least one core (230). In one embodiment, the performance information for parallel encoding may include the number of segments capable of parallel encoding.
예를 들어, 병렬 부호화될 수 있는 세그먼트의 개수가 n (n은 1보다 큰 자연수)이고, 영상으로부터 식별된 세그먼트들의 개수가 m (m은 n보다 큰 자연수)이라면, m개의 세그먼트들 중 n개의 세그먼트가 먼저 적어도 하나의 코어(230)에 할당되어 병렬 부호화될 수 있고, m-n개의 세그먼트가 n개의 세그먼트의 부호화가 완료된 후 적어도 하나의 코어(230)에 의해 병렬 부호화될 수 있다.For example, if the number of segments that can be parallel encoded is n (n is a natural number greater than 1) and the number of segments identified from an image is m (m is a natural number greater than n), then among the m segments, n segments can be first allocated to at least one core (230) and parallel encoded, and m-n segments can be parallel encoded by at least one core (230) after encoding of the n segments is completed.
병렬 부호화의 성능 정보를 고려하여 복수의 세그먼트를 적어도 하나의 코어(230)에 할당하는 방법에 대해 도 4를 참조하여 설명한다.A method of allocating multiple segments to at least one core (230) by considering performance information of parallel encoding is described with reference to FIG. 4.
도 4는 일 실시예에 따른 복수의 세그먼트의 할당 방법을 설명하기 위한 표이다.FIG. 4 is a table for explaining a method of allocating multiple segments according to one embodiment.
영상으로부터 5개의 세그먼트들이 식별되고, 병렬 처리할 수 있는 코어(230)(또는 스레드)의 개수가 3개인 것으로 가정한다. Five segments are identified from the image, and it is assumed that the number of cores (230) (or threads) capable of parallel processing is three.
3개의 세그먼트들이 한 번에 병렬 부호화될 수 있으므로, 제어부(210)는 먼저 제 1 세그먼트, 제 2 세그먼트 및 제 3 세그먼트 각각을 제 1 코어(또는 제 1 스레드), 제 2 코어(또는 제 2 스레드) 및 제 3 코어(또는 제 3 스레드)에 할당할 수 있다. 그리고, 제어부(210)는 남은 제 4 세그먼트와 제 5 세그먼트를 제 1 코어(또는 제 1 스레드) 및 제 2 코어(또는 제 2 스레드)에 추가 할당할 수 있다.Since three segments can be parallel encoded at one time, the control unit (210) can first allocate the first segment, the second segment, and the third segment to the first core (or the first thread), the second core (or the second thread), and the third core (or the third thread), respectively. Then, the control unit (210) can additionally allocate the remaining fourth segment and fifth segment to the first core (or the first thread) and the second core (or the second thread).
제 1 코어, 제 2 코어 및 제 3 코어 각각은 제 1 세그먼트, 제 2 세그먼트 및 제 3 세그먼트를 병렬 부호화하고, 제 1 세그먼트와 제 2 세그먼트의 부호화가 완료되면, 제 1 코어와 제 2 코어 각각은 제 4 세그먼트와 제 5 세그먼트를 병렬 부호화할 수 있다.The first core, the second core, and the third core can encode the first segment, the second segment, and the third segment in parallel, respectively, and when the encoding of the first segment and the second segment is completed, the first core and the second core can encode the fourth segment and the fifth segment in parallel, respectively.
일 실시예에서, 적어도 하나의 코어(230)에 대해 멀티 스레드를 생성 및 처리할 수 있는 하이퍼 스레딩(hyper threading) 기술이 채용된 경우, 제 1 세그먼트, 제 2 세그먼트 및 제 3 세그먼트는 제 1 스레드, 제 2 스레드 및 제 3 스레드로 할당될 수 있다. 적어도 하나의 코어(230)는 제 1 스레드, 제 2 스레드 및 제 3 스레드에 해당하는 제 1 세그먼트, 제 2 세그먼트 및 제 3 세그먼트를 병렬 부호화할 수 있다. 제 1 세그먼트와 제 2 세그먼트의 병렬 부호화가 완료되면, 적어도 하나의 코어(230)는 제 1 스레드와 제 2 스레드로 추가 할당된 제 4 세그먼트와 제 5 세그먼트를 병렬 부호화할 수 있다. 일 실시예에서, 제 4 세그먼트와 제 5 세그먼트 각각은 제 4 스레드와 제 5 스레드로 할당되어 적어도 하나의 코어(230)에 의해 병렬 부호화될 수 있다.In one embodiment, when a hyper threading technology capable of generating and processing multiple threads for at least one core (230) is employed, the first segment, the second segment, and the third segment may be allocated to the first thread, the second thread, and the third thread. At least one core (230) may parallel encode the first segment, the second segment, and the third segment corresponding to the first thread, the second thread, and the third thread. When the parallel encoding of the first segment and the second segment is completed, at least one core (230) may parallel encode the fourth segment and the fifth segment additionally allocated to the first thread and the second thread. In one embodiment, each of the fourth segment and the fifth segment may be allocated to the fourth thread and the fifth thread and parallel encoded by at least one core (230).
도 5는 일 실시예에 따른 복수의 세그먼트들이 병렬 부호화되는 과정을 설명하기 위한 도면이다.FIG. 5 is a diagram for explaining a process in which multiple segments are encoded in parallel according to one embodiment.
제어부(210)는 영상으로부터 5개의 세그먼트가 식별되고, 병렬 처리에 이용될 수 있는 코어(230a, 230b, 230c)의 개수가 3개인 경우, 제 1 세그먼트 내지 제 3 세그먼트 각각을 제 1 코어(230a) 내지 제 3 코어(230c)에 할당할 수 있다. 한번에 병렬 부호화할 수 있는 세그먼트의 개수가 3개이므로, 제어부(210)는 제 4 세그먼트와 제 5 세그먼트를 제 1 코어(230a)와 제 2 코어(230b)에 추가로 할당할 수 있다.The control unit (210) can assign each of the first to third segments to the first core (230a) to the third core (230c) when five segments are identified from the image and the number of cores (230a, 230b, 230c) that can be used for parallel processing is three. Since the number of segments that can be parallel encoded at one time is three, the control unit (210) can additionally assign the fourth segment and the fifth segment to the first core (230a) and the second core (230b).
제 1 코어(230a), 제 2 코어(230b) 및 제 3 코어(230c) 각각은 제 1 세그먼트, 제 2 세그먼트 및 제 3 세그먼트를 부호화하고, 부호화 결과로 서브스트림들(240a, 240b, 240c)이 생성될 수 있다. 서브스트림들(240a, 240b, 240c)은 제 1 세그먼트, 제 2 세그먼트 및 제 3 세그먼트의 부호화를 통해 생성된 데이터들을 엔트로피 부호화한 결과를 포함할 수 있다. 서브스트림들(240a, 240b, 240c)은 0 또는 1의 값을 가지는 빈(bin)들로 이루어질 수 있다.Each of the first core (230a), the second core (230b), and the third core (230c) may encode the first segment, the second segment, and the third segment, and substreams (240a, 240b, 240c) may be generated as encoding results. The substreams (240a, 240b, 240c) may include results of entropy encoding data generated through encoding the first segment, the second segment, and the third segment. The substreams (240a, 240b, 240c) may be composed of bins having values of 0 or 1.
제 1 세그먼트, 제 2 세그먼트 및 제 3 세그먼트가 병렬 부호화됨에 따라, 제 1 코어(230a), 제 2 코어(230b) 및 제 3 코어(230c) 각각으로부터 제 1 세그먼트에 대응하는 제 1 서브스트림(240a), 제 2 세그먼트에 대응하는 제 2 서브스트림(240b) 및 제 3 세그먼트에 대응하는 제 3 서브스트림(240c)이 출력될 수 있다.As the first segment, the second segment, and the third segment are encoded in parallel, a first substream (240a) corresponding to the first segment, a second substream (240b) corresponding to the second segment, and a third substream (240c) corresponding to the third segment can be output from each of the first core (230a), the second core (230b), and the third core (230c).
제 1 서브스트림(240a), 제 2 서브스트림(240b) 및 제 3 서브스트림(240c) 각각은 복수의 버퍼(250a, 250b, 250c)에 저장될 수 있다. Each of the first substream (240a), the second substream (240b), and the third substream (240c) can be stored in multiple buffers (250a, 250b, 250c).
일 실시예에서, 부호화 장치(200)에 포함되는 버퍼(250a, 250b, 250c)의 개수는 병렬 부호화의 성능 정보로부터 확인되는 개수, 예를 들어, 코어(230a, 230b, 230c)의 개수, 스레드의 개수 또는 병렬 부호화될 수 있는 세그먼트들의 개수와 동일할 수 있다. In one embodiment, the number of buffers (250a, 250b, 250c) included in the encoding device (200) may be equal to a number determined from performance information of parallel encoding, for example, the number of cores (230a, 230b, 230c), the number of threads, or the number of segments that can be encoded in parallel.
도 5에 도시된 바와 같이, 한 번에 3개의 세그먼트가 병렬 부호화될 수 있는 경우, 부호화 장치(200)는 3개의 버퍼, 즉, 제 1 버퍼(250a), 제 2 버퍼(250b) 및 제 3 버퍼(250c)를 포함할 수 있다. 제 1 서브스트림(240a), 제 2 서브스트림(240b) 및 제 3 서브스트림(240c) 각각이 제 1 버퍼(250a), 제 2 버퍼(250b) 및 제 3 버퍼(250c)에 저장될 수 있다.As illustrated in FIG. 5, when three segments can be parallel encoded at a time, the encoding device (200) may include three buffers, i.e., a first buffer (250a), a second buffer (250b), and a third buffer (250c). The first substream (240a), the second substream (240b), and the third substream (240c) may be stored in the first buffer (250a), the second buffer (250b), and the third buffer (250c), respectively.
제 4 세그먼트와 제 5 세그먼트가 제 1 코어(230a)와 제 2 코어(230b)에 할당되었으므로, 제 1 세그먼트 및 제 2 세그먼트의 부호화가 완료되면, 제 1 코어(230a)와 제 2 코어(230b) 각각은 추가적으로 제 4 세그먼트와 제 5 세그먼트를 부호화할 수 있다. 그리고, 제 4 세그먼트에 대응하는 제 4 서브스트림은 제 1 버퍼(250a)에 저장되고, 제 5 세그먼트에 대응하는 제 5 서브스트림은 제 2 버퍼(250b)에 저장될 수 있다.Since the fourth segment and the fifth segment are assigned to the first core (230a) and the second core (230b), when the encoding of the first segment and the second segment is completed, each of the first core (230a) and the second core (230b) can additionally encode the fourth segment and the fifth segment. Then, the fourth substream corresponding to the fourth segment can be stored in the first buffer (250a), and the fifth substream corresponding to the fifth segment can be stored in the second buffer (250b).
도 6은 일 실시예에 따른 복수의 세그먼트들이 병렬 부호화되는 과정을 설명하기 위한 도면이다.FIG. 6 is a diagram for explaining a process in which multiple segments are encoded in parallel according to one embodiment.
제어부(210)는 영상으로부터 5개의 세그먼트가 식별되고, 한 번에 병렬 처리될 수 있는 스레드(235a, 235b, 235c)의 개수가 3개인 경우, 제 1 세그먼트 내지 제 3 세그먼트 각각을 제 1 스레드(235a) 내지 제 3 스레드(235c)에 할당할 수 있다. 그리고, 제어부(210)는 제 4 세그먼트와 제 5 세그먼트를 제 1 스레드(235a)와 제 2 스레드(235b)에 추가로 할당할 수 있다. The control unit (210) can assign each of the first to third segments to the first thread (235a) to the third thread (235c) when five segments are identified from the image and the number of threads (235a, 235b, 235c) that can be processed in parallel at one time is three. In addition, the control unit (210) can additionally assign the fourth segment and the fifth segment to the first thread (235a) and the second thread (235b).
일 실시예에서, 제 1 세그먼트가 제 1 스레드(235a)로 할당되고, 제 2 세그먼트가 제 2 스레드(235b)로 할당되었으므로, 제 4 세그먼트는 제 4 스레드에 할당되고, 제 5 세그먼트는 제 5 스레드에 할당될 수도 있다.In one embodiment, since the first segment is assigned to the first thread (235a) and the second segment is assigned to the second thread (235b), the fourth segment may be assigned to the fourth thread and the fifth segment may be assigned to the fifth thread.
코어(230)는 제 1 스레드(235a), 제 2 스레드(235b) 및 제 3 스레드(235c)에 해당하는 제 1 세그먼트, 제 2 세그먼트 및 제 3 세그먼트를 부호화하고, 부호화 결과로 서브스트림들(240a, 240b, 240c)이 생성될 수 있다. 서브스트림들(240a, 240b, 240c)은 제 1 세그먼트, 제 2 세그먼트 및 제 3 세그먼트의 부호화를 통해 생성된 데이터들을 엔트로피 부호화한 결과를 포함할 수 있다. 서브스트림들(240a, 240b, 240c)은 0 또는 1의 값을 가지는 빈(bin)들로 이루어질 수 있다.The core (230) may encode the first segment, the second segment, and the third segment corresponding to the first thread (235a), the second thread (235b), and the third thread (235c), and substreams (240a, 240b, 240c) may be generated as encoding results. The substreams (240a, 240b, 240c) may include results of entropy encoding data generated through encoding the first segment, the second segment, and the third segment. The substreams (240a, 240b, 240c) may be composed of bins having values of 0 or 1.
제 1 세그먼트, 제 2 세그먼트 및 제 3 세그먼트가 병렬 부호화됨에 따라, 코어(230)로부터 제 1 세그먼트에 대응하는 제 1 서브스트림(240a), 제 2 세그먼트에 대응하는 제 2 서브스트림(240b) 및 제 3 세그먼트에 대응하는 제 3 서브스트림(240c)이 출력될 수 있다.As the first segment, the second segment, and the third segment are encoded in parallel, a first substream (240a) corresponding to the first segment, a second substream (240b) corresponding to the second segment, and a third substream (240c) corresponding to the third segment can be output from the core (230).
제 1 서브스트림(240a), 제 2 서브스트림(240b) 및 제 3 서브스트림(240c) 각각이 제 1 버퍼(250a), 제 2 버퍼(250b) 및 제 3 버퍼(250c)에 저장될 수 있다.The first substream (240a), the second substream (240b), and the third substream (240c) can be stored in the first buffer (250a), the second buffer (250b), and the third buffer (250c), respectively.
제 4 세그먼트와 제 5 세그먼트가 제 1 스레드(235a)(또는 제 4 스레드)와 제 2 스레드(235b)(또는 제 5 스레드)로 할당되었으므로, 코어(230)는 제 1 세그먼트 및 제 2 세그먼트의 부호화가 완료되면, 제 1 스레드(235a)(또는 제 4 스레드)와 제 2 스레드(235b)(또는 제 5 스레드)로 할당된 제 4 세그먼트와 제 5 세그먼트를 병렬 부호화할 수 있다. 그리고, 제 4 세그먼트에 대응하는 제 4 서브스트림은 제 1 버퍼(250a)에 저장되고, 제 5 세그먼트에 대응하는 제 5 서브스트림은 제 2 버퍼(250b)에 저장될 수 있다.Since the 4th segment and the 5th segment are assigned to the 1st thread (235a) (or the 4th thread) and the 2nd thread (235b) (or the 5th thread), when the core (230) completes encoding of the 1st segment and the 2nd segment, the 4th segment and the 5th segment assigned to the 1st thread (235a) (or the 4th thread) and the 2nd thread (235b) (or the 5th thread) can be encoded in parallel. Then, the 4th substream corresponding to the 4th segment can be stored in the 1st buffer (250a), and the 5th substream corresponding to the 5th segment can be stored in the 2nd buffer (250b).
이하, 부호화 장치(200)로부터 비트스트림이 출력되는 과정에 대해 설명한다. Below, the process of outputting a bitstream from an encoding device (200) is described.
일 실시예에서, 도 5 및 도 6에 도시된 제 1 세그먼트, 제 2 세그먼트, 제 3 세그먼트, 제 4 세그먼트 및 제 5 세그먼트의 부호화가 완료되면, 제 1 세그먼트, 제 2 세그먼트, 제 3 세그먼트, 제 4 세그먼트 및 제 5 세그먼트 각각에 대응하는 제 1 서브스트림(240a), 제 2 서브스트림(240b), 제 3 서브스트림(240c), 제 4 서브스트림 및 제 5 서브스트림이 버퍼(250a, 250b, 250c)로부터 출력을 위해 획득될 수 있다. 그리고, 제 1 서브스트림(240a), 제 2 서브스트림(240b), 제 3 서브스트림(240c), 제 4 서브스트림 및 제 5 서브스트림이 부호화 순서에 따라 배열되어 비트스트림으로 출력될 수 있다. In one embodiment, when encoding of the first segment, the second segment, the third segment, the fourth segment, and the fifth segment illustrated in FIGS. 5 and 6 is completed, a first substream (240a), a second substream (240b), a third substream (240c), a fourth substream, and a fifth substream corresponding to the first segment, the second segment, the third segment, the fourth segment, and the fifth segment, respectively, can be acquired for output from the buffers (250a, 250b, 250c). Then, the first substream (240a), the second substream (240b), the third substream (240c), the fourth substream, and the fifth substream can be arranged in an encoding order and output as a bitstream.
그러나, 위와 같은 비트스트림의 출력 과정에 따르면, 영상의 부호화 및 복호화 과정에 지연이 발생할 수 있다. 구체적으로, 제 1 세그먼트 내지 제 5 세그먼트의 부호화가 완료될 때까지 소요되는 시간, 및 제 1 서브스트림(240a) 내지 제 5 서브스트림을 배열하는 시간이 부호화 과정에서 소요되므로, 서버-클라이언트 기반의 실시간 영상 전송 시스템에 적합하지 않을 수 있다.However, according to the output process of the bitstream as above, a delay may occur in the encoding and decoding process of the image. Specifically, the time required until the encoding of the first to fifth segments is completed and the time required to arrange the first to fifth substreams (240a) are required in the encoding process, so it may not be suitable for a server-client based real-time image transmission system.
일 실시예에 따르면, 병렬 부호화 대상인 세그먼트들의 부호화가 완료되기 전이라도 복수의 버퍼(250a, 250b, 250c)에 저장된 서브스트림들이 패킷화되어 전달되는 경우, 시간 지연이 최소화될 수 있다. 이에 대해 도 7a, 도 7b, 도 8 및 도 9를 참조하여 설명한다.According to one embodiment, if substreams stored in multiple buffers (250a, 250b, 250c) are packetized and transmitted even before encoding of segments that are targets of parallel encoding is completed, time delay can be minimized. This will be described with reference to FIGS. 7a, 7b, 8, and 9.
도 7a 및 도 7b는 일 실시예에 따른 복수의 버퍼로부터 비트스트림이 출력되는 과정을 설명하기 위한 도면이다.FIGS. 7A and 7B are diagrams for explaining a process of outputting a bitstream from a plurality of buffers according to one embodiment.
제 1 버퍼(250a)는 제 1 세그먼트에 대한 부호화 결과에 해당하는 제 1 서브스트림을 저장하고, 제 2 버퍼(250b)는 제 2 세그먼트에 대한 부호화 결과에 해당하는 제 2 서브스트림을 저장할 수 있다. 또한, 제 3 버퍼(250c)는 제 3 세그먼트에 대한 부호화 결과에 해당하는 제 3 서브스트림을 저장할 수 있다.The first buffer (250a) can store a first substream corresponding to an encoding result for the first segment, and the second buffer (250b) can store a second substream corresponding to an encoding result for the second segment. Additionally, the third buffer (250c) can store a third substream corresponding to an encoding result for the third segment.
병렬 부호화가 진행됨에 따라 제 1 버퍼(250a), 제 2 버퍼(250b) 및 제 3 버퍼(250c)에 제 1 서브스트림, 제 2 서브스트림 및 제 3 서브스트림이 저장되는 동안, 제어부(210)는 현재 상태가 미리 설정된 출력 조건에 대응하는 경우, 병렬 부호화가 완료되기 전이라도 제 1 버퍼(250a), 제 2 버퍼(250b) 및 제 3 버퍼(250c)를 통해 비트스트림(700)을 출력할 수 있다.While the first substream, the second substream, and the third substream are stored in the first buffer (250a), the second buffer (250b), and the third buffer (250c) as parallel encoding progresses, the control unit (210) can output the bitstream (700) through the first buffer (250a), the second buffer (250b), and the third buffer (250c) even before parallel encoding is completed, if the current state corresponds to a preset output condition.
일 실시예에서, 제어부(210)는 사용자로부터 출력 조건을 입력받을 수 있고, 또는 미리 저장된 출력 조건을 획득할 수 있다.In one embodiment, the control unit (210) can receive output conditions from a user or obtain pre-stored output conditions.
일 실시예에서, 출력 조건은, 복수의 버퍼(250a, 250b, 250c)에 저장된 서브스트림들의 전체 크기, 복수의 버퍼(250a, 250b, 250c)의 용량(capacity)과 복수의 버퍼(250a, 250b, 250c)에 저장된 서브스트림들의 전체 크기 사이의 비율, 병렬 부호화의 경과 시간 또는 복수의 세그먼트들 각각에 대한 부호화의 진행 정도 중 적어도 하나에 기반하여 설정될 수 있다.In one embodiment, the output condition may be set based on at least one of: a total size of the substreams stored in the plurality of buffers (250a, 250b, 250c), a ratio between a capacity of the plurality of buffers (250a, 250b, 250c) and the total size of the substreams stored in the plurality of buffers (250a, 250b, 250c), an elapsed time of parallel encoding, or a progress of encoding for each of the plurality of segments.
예를 들어, 복수의 버퍼(250a, 250b, 250c)에 저장된 서브스트림들의 전체 크기가 1 메가바이트(MB)일 때, 복수의 버퍼(250a, 250b, 250c)로부터 비트스트림(700)이 출력되는 것으로 출력 조건이 설정될 수 있다.For example, when the total size of substreams stored in multiple buffers (250a, 250b, 250c) is 1 megabyte (MB), an output condition can be set such that a bitstream (700) is output from multiple buffers (250a, 250b, 250c).
또한, 예를 들어, 복수의 버퍼(250a, 250b, 250c)의 용량 대비 복수의 버퍼(250a, 250b, 250c)에 저장된 서브스트림들의 전체 크기의 비율이 50%가 되면, 복수의 버퍼(250a, 250b, 250c)로부터 비트스트림(700)이 출력되는 것으로 출력 조건이 설정될 수 있다In addition, for example, when the ratio of the total size of the substreams stored in the plurality of buffers (250a, 250b, 250c) to the capacity of the plurality of buffers (250a, 250b, 250c) becomes 50%, the output condition can be set so that the bitstream (700) is output from the plurality of buffers (250a, 250b, 250c).
또한, 예를 들어, 복수의 세그먼트들에 대한 병렬 부호화가 시작된 후 10ms가 경과되면, 복수의 버퍼(250a, 250b, 250c)로부터 비트스트림(700)이 출력되는 것으로 출력 조건이 설정될 수 있다.Additionally, for example, an output condition may be set such that when 10 ms has elapsed since parallel encoding for multiple segments has started, a bitstream (700) is output from multiple buffers (250a, 250b, 250c).
또한, 예를 들어, 복수의 세그먼트들 각각에 포함된 최대 부호화 단위들 중 소정 개수(예를 들어, 10개)의 최대 부호화 단위에 대한 부호화가 완료되면, 복수의 버퍼(250a, 250b, 250c)로부터 비트스트림(700)이 출력되는 것으로 출력 조건이 설정될 수 있다.In addition, for example, when encoding of a predetermined number (e.g., 10) of maximum coding units included in each of a plurality of segments is completed, an output condition may be set such that a bitstream (700) is output from a plurality of buffers (250a, 250b, 250c).
일 실시예에서, 위에 예시된 출력 조건들이 2개 이상 결합될 수도 있다. 예를 들어, 복수의 버퍼(250a, 250b, 250c)에 저장된 서브스트림들의 전체 크기가 1 메가바이트(MB)가 되는 시간과 복수의 버퍼(250a, 250b, 250c)의 용량 대비 복수의 버퍼(250)에 저장된 서브스트림들의 전체 크기의 비율이 50%가 되는 시간 중 더 이른 시간에 비트스트림(700)이 출력되는 것으로 출력 조건이 설정될 수 있다.In one embodiment, two or more of the output conditions exemplified above may be combined. For example, the output condition may be set so that the bitstream (700) is output at an earlier time among the time when the total size of the substreams stored in the plurality of buffers (250a, 250b, 250c) becomes 1 megabyte (MB) and the time when the ratio of the total size of the substreams stored in the plurality of buffers (250a, 250b, 250c) to the capacity of the plurality of buffers becomes 50%.
일 실시예에서, 사용자 또는 부호화 과정이 적용되는 서비스가 요구하는 지연 정도에 따라 출력 조건이 설정될 수도 있다. 예를 들어, 저지연이 요구되는 경우, 복수의 버퍼(250a, 250b, 250c)로부터 짧은 주기로 비트스트림(700)이 출력되도록 출력 조건이 설정될 수 있다. 또한, 저지연이 요구되지 않는 경우, 복수의 버퍼(250a, 250b, 250c)로부터 비교적 긴 주기로 비트스트림(700)이 출력되도록 출력 조건이 설정될 수 있다.In one embodiment, the output conditions may be set according to the degree of delay required by the user or the service to which the encoding process is applied. For example, when low delay is required, the output conditions may be set so that the bitstream (700) is output from the plurality of buffers (250a, 250b, 250c) in a short period. Also, when low delay is not required, the output conditions may be set so that the bitstream (700) is output from the plurality of buffers (250a, 250b, 250c) in a relatively long period.
예를 들어, 저지연이 요구되는 경우, 복수의 버퍼(250a, 250b, 250c)에 저장된 서브스트림들의 전체 크기가 1 메가바이트(MB)일 때 비트스트림(700)이 출력되도록 출력 조건이 설정되고, 저지연이 요구되지 않으면, 복수의 버퍼(250a, 250b, 250c)에 저장된 서브스트림들의 전체 크기가 2 메가바이트(MB)일 때 비트스트림(700)이 출력되도록 출력 조건이 설정될 수 있다. For example, when low delay is required, the output condition may be set so that the bitstream (700) is output when the total size of the substreams stored in the plurality of buffers (250a, 250b, 250c) is 1 megabyte (MB), and when low delay is not required, the output condition may be set so that the bitstream (700) is output when the total size of the substreams stored in the plurality of buffers (250a, 250b, 250c) is 2 megabytes (MB).
또한, 예를 들어, 저지연이 요구되는 경우, 복수의 버퍼(250a, 250b, 250c)의 용량 대비 복수의 버퍼(250a, 250b, 250c)에 저장된 서브스트림들의 전체 크기의 비율이 50%가 될 때 비트스트림(700)이 출력되도록 출력 조건이 설정되고, 저지연이 요구되지 않으면, 복수의 버퍼(250a, 250b, 250c)의 용량 대비 복수의 버퍼(250a, 250b, 250c)에 저장된 서브스트림들의 전체 크기의 비율이 60%가 될 때 비트스트림(700)이 출력되도록 출력 조건이 설정될 수도 있다.In addition, for example, when low delay is required, the output condition may be set so that the bitstream (700) is output when the ratio of the total size of the substreams stored in the plurality of buffers (250a, 250b, 250c) to the capacity of the plurality of buffers (250a, 250b, 250c) is 50%, and when low delay is not required, the output condition may be set so that the bitstream (700) is output when the ratio of the total size of the substreams stored in the plurality of buffers (250a, 250b, 250c) to the capacity of the plurality of buffers (250a, 250b, 250c) is 60%.
일 실시예에서, 사용자는 부호화 과정의 지연 정도를 설정할 수 있고, 제어부(210)는 사용자가 설정한 지연 정도에 따라 출력 조건을 설정할 수 있다.In one embodiment, a user can set a delay level for an encoding process, and the control unit (210) can set an output condition according to the delay level set by the user.
제어부(210)는 현재 상태가 미리 설정된 출력 조건에 대응하면, 복수의 버퍼(250a, 250b, 250c) 각각으로부터 미리 결정된 크기를 갖는 서브스트림 패킷들(715, 725, 735)을 획득할 수 있다. 여기서, 서브스트림 패킷이란 비트스트림(700)에 포함되는 서브스트림의 기본 전송 단위로 이해될 수 있다. If the current state corresponds to a preset output condition, the control unit (210) can obtain substream packets (715, 725, 735) having a predetermined size from each of the plurality of buffers (250a, 250b, 250c). Here, the substream packet can be understood as a basic transmission unit of a substream included in the bitstream (700).
예를 들어, 미리 결정된 크기가 8 킬로바이트(KB)라면, 복수의 버퍼(250a, 250b, 250c) 각각으로부터 8 킬로바이트의 서브스트림들(710, 720, 730)이 서브스트림 패킷들(715, 725, 735)로 추출될 수 있다.For example, if the predetermined size is 8 kilobytes (KB), 8 kilobyte substreams (710, 720, 730) can be extracted from each of the multiple buffers (250a, 250b, 250c) as substream packets (715, 725, 735).
도 7a를 참조하면, 제어부(210)는 현재 상태가 미리 설정된 출력 조건에 대응하면, 제 1 버퍼(250a), 제 2 버퍼(250b) 및 제 3 버퍼(250c)에 저장된 서브스트림들 중 미리 결정된 크기에 해당하는 14개의 빈들을 포함하는 서브스트림들(710, 720, 730)을 서브스트림 패킷(715, 725, 735)으로 획득할 수 있다. 이에 따라, 제어부(210)는 제 1 버퍼(250a)로부터 14개의 빈들을 포함하는 제 1 서브스트림 패킷(715)을 획득하고, 제 2 버퍼(250b)로부터 14개의 빈들을 포함하는 제 2 서브스트림 패킷(725)을 획득할 수 있다. 또한, 제어부(210)는 제 3 버퍼(250c)로부터 14개의 빈들을 포함하는 제 3 서브스트림 패킷(735)을 획득할 수 있다.Referring to FIG. 7a, if the current state corresponds to a preset output condition, the control unit (210) can obtain substreams (710, 720, 730) including 14 bins corresponding to a predetermined size among the substreams stored in the first buffer (250a), the second buffer (250b), and the third buffer (250c) as substream packets (715, 725, 735). Accordingly, the control unit (210) can obtain a first substream packet (715) including 14 bins from the first buffer (250a), and a second substream packet (725) including 14 bins from the second buffer (250b). In addition, the control unit (210) can obtain a third substream packet (735) including 14 bins from the third buffer (250c).
복수의 버퍼(250)에서 복수의 서브스트림 패킷(715, 725, 735)이 획득되면, 제어부(210)는 복수의 서브스트림 패킷(715, 725, 735)을 미리 결정된 순서에 따라 배열하고, 복수의 서브스트림 패킷(715, 725, 735)이 배열된 비트스트림(700)을 출력할 수 있다.When multiple substream packets (715, 725, 735) are acquired from multiple buffers (250), the control unit (210) can arrange the multiple substream packets (715, 725, 735) in a predetermined order and output a bitstream (700) in which the multiple substream packets (715, 725, 735) are arranged.
일 실시예에서, 미리 결정된 순서는 복수의 서브스트림 패킷(715, 725, 735) 각각에 대응하는 세그먼트들의 부호화 순서에 대응할 수 있다. 예를 들어, 제 1 서브스트림 패킷(715)에 대응하는 제 1 세그먼트의 부호화 순서가 제 2 서브스트림 패킷(725)에 대응하는 제 2 세그먼트의 부호화 순서보다 빠르면, 제 1 서브스트림 패킷(715)이 제 2 서브스트림 패킷(725)보다 앞에 배열될 수 있다.In one embodiment, the predetermined order may correspond to an encoding order of segments corresponding to each of the plurality of sub-stream packets (715, 725, 735). For example, if the encoding order of the first segment corresponding to the first sub-stream packet (715) is earlier than the encoding order of the second segment corresponding to the second sub-stream packet (725), the first sub-stream packet (715) may be arranged before the second sub-stream packet (725).
일 실시예에서, 제어부(210)는 부호화 장치(200)와 복호화 장치(1100) 간에 미리 약속된 순서에 따라 서브스트림 패킷들(715, 725, 735)을 배열할 수도 있다. 예를 들어, 복수의 세그먼트들의 부호화 순서의 역순으로 서브스트림 패킷들(715, 725, 735)을 배열하기로 부호화 장치(200)와 복호화 장치(1100) 간에 약속되어 있을 수 있다.In one embodiment, the control unit (210) may arrange the substream packets (715, 725, 735) in a pre-arranged order between the encoding device (200) and the decoding device (1100). For example, it may be arranged between the encoding device (200) and the decoding device (1100) to arrange the substream packets (715, 725, 735) in the reverse order of the encoding order of the plurality of segments.
일 실시예에서, 제어부(210)는 서브스트림 패킷들(715, 725, 735)을 미리 결정된 순서에 따라 배열하고, 서브스트림 패킷들(715, 725, 735)을 복원하는데 필요한 정보를 부가하여 비트스트림(700)을 생성할 수 있다. In one embodiment, the control unit (210) may arrange the substream packets (715, 725, 735) in a predetermined order and add information necessary to restore the substream packets (715, 725, 735) to generate a bitstream (700).
일 실시예에서, 서브스트림 패킷들(715, 725, 735)을 복원하는데 필요한 정보는 비트스트림(700)의 헤더에 포함될 수 있다.In one embodiment, information necessary to restore the substream packets (715, 725, 735) may be included in the header of the bitstream (700).
일 실시예에서, 서브스트림 패킷들(715, 725, 735)을 포함하는 비트스트림(700)은 네트워크를 통해 복호화 장치(1100)로 전송될 수 있다. In one embodiment, a bitstream (700) including substream packets (715, 725, 735) may be transmitted to a decryption device (1100) over a network.
일 실시예에서, 서브스트림 패킷들(715, 725, 735)을 포함하는 비트스트림(700)은 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium) 등을 포함하는 데이터 저장 매체에 저장될 수도 있다.In one embodiment, a bitstream (700) including substream packets (715, 725, 735) may be stored on a data storage medium including a magnetic medium such as a hard disk, a floppy disk, and a magnetic tape, an optical recording medium such as a CD-ROM and a DVD, a magneto-optical medium such as a floptical disk, and the like.
일 실시예에서, 제어부(210)는 병렬 부호화되는 세그먼트들의 개수에 해당하는 서브스트림 패킷들을 미리 결정된 순서에 따라 반복하여 배열할 수 있다. 예를 들어, 한번에 병렬 부호화될 수 있는 세그먼트들의 개수가 3이라면, 3개의 세그먼트들 각각에 대응하는 서브스트림 패킷들(715, 725, 735)이 미리 결정된 순서에 따라 배열되고, 3개의 세그먼트들 각각에 대응하는 후속 서브스트림 패킷들이 기 배열된 서브스트림 패킷들(715, 725, 735)의 뒤에 미리 결정된 순서에 따라 배열될 수 있다.In one embodiment, the control unit (210) may repeatedly arrange sub-stream packets corresponding to the number of segments to be parallel-encoded in a predetermined order. For example, if the number of segments that can be parallel-encoded at one time is 3, sub-stream packets (715, 725, 735) corresponding to each of the three segments may be arranged in a predetermined order, and subsequent sub-stream packets corresponding to each of the three segments may be arranged in a predetermined order behind the previously arranged sub-stream packets (715, 725, 735).
도 7b를 참조하면, 제 1 버퍼(250a), 제 2 버퍼(250b) 및 제 3 버퍼(250c)에서 도 7a에 도시된 제 1 서브스트림 패킷(715), 제 2 서브스트림 패킷(725) 및 제 3 서브스트림 패킷(735)이 획득되어 비트스트림(700) 내에 배열되면, 제 1 버퍼(250a), 제 2 버퍼(250b) 및 제 3 버퍼(250c)에서 제 1 서브스트림 패킷(715), 제 2 서브스트림 패킷(725) 및 제 3 서브스트림 패킷(735)에 대응하는 서브스트림들이 삭제될 수 있다.Referring to FIG. 7b, when the first sub-stream packet (715), the second sub-stream packet (725), and the third sub-stream packet (735) illustrated in FIG. 7a are acquired from the first buffer (250a), the second buffer (250b), and the third buffer (250c) and arranged in the bitstream (700), the sub-streams corresponding to the first sub-stream packet (715), the second sub-stream packet (725), and the third sub-stream packet (735) in the first buffer (250a), the second buffer (250b), and the third buffer (250c) may be deleted.
제어부(210)는 현재 상태가 미리 설정된 출력 조건에 대응하면, 복수의 버퍼(250a, 250b, 250c)에 저장된 미리 결정된 크기의 제 1 서브스트림(750), 미리 결정된 크기의 제 2 서브스트림(760) 및 미리 결정된 크기의 제 3 서브스트림(770) 각각을 제 1 서브스트림 패킷(755), 제 2 서브스트림 패킷(765) 및 제 3 서브스트림 패킷(775)으로 획득하고, 획득한 서브스트림 패킷들(755, 765, 775)을 미리 결정된 순서에 따라 배열하여 비트스트림(700)을 생성할 수 있다.If the current state corresponds to a preset output condition, the control unit (210) may acquire a first substream (750) of a predetermined size, a second substream (760) of a predetermined size, and a third substream (770) of a predetermined size, each of which is stored in a plurality of buffers (250a, 250b, 250c), as a first substream packet (755), a second substream packet (765), and a third substream packet (775), and may arrange the acquired substream packets (755, 765, 775) in a predetermined order to generate a bitstream (700).
일 실시예에 따르면, 제어부(210)는 복수의 세그먼트들의 부호화가 진행 중에 있더라도 현재 상태가 기 설정된 출력 조건에 해당하면, 서브스트림들을 패킷 단위로 묶어 비트스트림을 생성하므로, 병렬 부호화 및 병렬 복호화에 따른 시간 지연이 최소화될 수 있다.According to one embodiment, the control unit (210) generates a bitstream by grouping substreams into packets if the current state corresponds to a preset output condition even when encoding of multiple segments is in progress, so that time delay due to parallel encoding and parallel decoding can be minimized.
도 8은 일 실시예에 따른 복수의 버퍼로부터 비트스트림이 출력되는 과정을 설명하기 위한 도면이다.FIG. 8 is a diagram for explaining a process of outputting a bitstream from multiple buffers according to one embodiment.
복수의 세그먼트들에 대한 부호화가 진행되어 복수의 서브스트림들이 복수의 버퍼(250a, 250b, 250c)에 저장되는 동안 다른 세그먼트에 비교하여 부호화의 진행 정도가 늦은 세그먼트가 존재할 수 있다. While encoding is in progress for multiple segments and multiple substreams are stored in multiple buffers (250a, 250b, 250c), there may be a segment whose encoding progress is slower than that of other segments.
전술한 바와 같이, 제 1 버퍼(250a), 제 2 버퍼(250b) 및 제 3 버퍼(250c)에 제 1 서브스트림, 제 2 서브스트림 및 제 3 서브스트림이 저장되는 동안, 현재 상태가 미리 설정된 출력 조건에 대응하는 경우, 제 1 버퍼(250a), 제 2 버퍼(250b) 및 제 3 버퍼(250c)에 저장된 미리 결정된 크기의 서브스트림들이 서브스트림 패킷들로 획득될 수 있다. As described above, while the first substream, the second substream, and the third substream are stored in the first buffer (250a), the second buffer (250b), and the third buffer (250c), if the current state corresponds to a preset output condition, the substreams of a predetermined size stored in the first buffer (250a), the second buffer (250b), and the third buffer (250c) can be obtained as substream packets.
부호화의 진행 정도가 늦은 세그먼트가 존재하는 경우, 해당 세그먼트에 대한 부호화를 통해 생성된 서브스트림의 크기가 미리 결정된 크기보다 작을 수 있고, 이에 따라 해당 서브스트림을 저장하는 버퍼로부터 서브스트림 패킷을 획득하기 어려울 수 있다. 예를 들어, 도 8에 도시된 바와 같이, 제 2 버퍼(250b)에 저장된 제 2 서브스트림(820)의 크기가 미리 결정된 크기 미만일 수 있다. If there is a segment whose encoding progress is slow, the size of the substream generated through encoding for the segment may be smaller than a predetermined size, and thus it may be difficult to obtain the substream packet from the buffer storing the substream. For example, as illustrated in FIG. 8, the size of the second substream (820) stored in the second buffer (250b) may be smaller than a predetermined size.
이 경우, 일 실시예에서, 제어부(210)는 제 2 버퍼(250b)로부터 제 2 서브스트림 패킷을 획득하는 대신 미리 결정된 값(예를 들어, 0)을 갖는, 미리 결정된 크기의 제 2 서브스트림 패킷(825)을 생성하고, 생성된 제 2 서브스트림 패킷(825)을 비트스트림(800) 내에 배열할 수 있다. 이때, 제 2 서브스트림 패킷(825)은 가비지(garbage) 패킷으로 이해될 수 있다.In this case, in one embodiment, instead of obtaining the second sub-stream packet from the second buffer (250b), the control unit (210) may generate a second sub-stream packet (825) having a predetermined size and a predetermined value (e.g., 0), and arrange the generated second sub-stream packet (825) in the bitstream (800). At this time, the second sub-stream packet (825) may be understood as a garbage packet.
따라서, 도 8에 도시된 바와 같이, 제 1 버퍼(250a)에 저장된 제 1 서브스트림(810)에 대응하는 제 1 서브스트림 패킷(815), 제 2 버퍼(250b)를 위해 생성된 제 2 서브스트림 패킷 (또는 가비지 패킷)(825) 및 제 3 버퍼(250c)에 저장된 제 3 서브스트림(830)에 대응하는 제 3 서브스트림 패킷(835)이 미리 결정된 순서에 따라 배열될 수 있다.Accordingly, as illustrated in FIG. 8, the first sub-stream packet (815) corresponding to the first sub-stream (810) stored in the first buffer (250a), the second sub-stream packet (or garbage packet) (825) generated for the second buffer (250b), and the third sub-stream packet (835) corresponding to the third sub-stream (830) stored in the third buffer (250c) can be arranged in a predetermined order.
제 2 버퍼(250b)에 저장된 제 2 서브스트림(820)은 제 2 서브스트림 패킷(825)을 생성하는데 이용되지 않았으므로, 제 2 버퍼(250b)에서 삭제되지 않고, 다음 출력 시점에 제 2 서브스트림 패킷에 포함될 수 있다.Since the second substream (820) stored in the second buffer (250b) is not used to generate the second substream packet (825), it is not deleted from the second buffer (250b) and can be included in the second substream packet at the next output time.
일 실시예에서, 제어부(210)는 비트스트림(800)에 포함되어 있는 제 2 서브스트림 패킷(825)의 복호화가 필요하지 않다는 정보를 비트스트림(800)에 포함시킴으로써 복호화 장치(1100)에 의해 제 2 서브스트림 패킷(825)의 복호화가 수행되지 않게 할 수 있다. 예를 들어, 제어부(210)는 제 2 서브스트림 패킷(825)의 복호화가 필요하지 않다는 정보를 비트스트림(800)의 헤더에 포함시킬 수 있다.In one embodiment, the control unit (210) may prevent the decoding device (1100) from performing decoding of the second sub-stream packet (825) by including information in the bitstream (800) indicating that decoding of the second sub-stream packet (825) included in the bitstream (800) is not required. For example, the control unit (210) may include information indicating that decoding of the second sub-stream packet (825) is not required in the header of the bitstream (800).
일 실시예에서는 버퍼로부터 서브스트림 패킷을 획득할 수 없는 경우라도 서브스트림 패킷을 생성하고, 비트스트림(800) 내에 생성된 서브스트림 패킷을 포함시킴으로써 일정한 비트레이트를 유지할 수 있다.In one embodiment, a constant bitrate can be maintained by generating a substream packet and including the generated substream packet in the bitstream (800) even if the substream packet cannot be obtained from the buffer.
도 9는 일 실시예에 따른 복수의 버퍼로부터 비트스트림이 출력되는 과정을 설명하기 위한 도면이다.FIG. 9 is a diagram for explaining a process of outputting a bitstream from multiple buffers according to one embodiment.
앞서 도 5 및 도 6을 참조하여 설명한 바와 같이, 제 4 세그먼트와 제 5 세그먼트 각각은 제 1 코어(230a) (또는 제 1 스레드(235a))와 제 2 코어(230b) (또는 제 2 스레드(235b))에 추가 할당될 수 있으므로, 제 1 세그먼트, 제 2 세그먼트 및 제 3 세그먼트에 대한 부호화가 완료된 이후에도 제 4 세그먼트와 제 5 세그먼트에 대한 부호화가 계속하여 진행될 수 있다.As described above with reference to FIGS. 5 and 6, each of the fourth segment and the fifth segment can be additionally allocated to the first core (230a) (or the first thread (235a)) and the second core (230b) (or the second thread (235b)), so that encoding of the fourth segment and the fifth segment can continue even after encoding of the first segment, the second segment, and the third segment is completed.
도 9를 참조하면, 제 3 세그먼트에 대한 부호화가 완료된 후 제 3 버퍼(250c)에 저장된 제 3 서브스트림이 모두 출력되면, 제 3 버퍼(250c)에는 더 이상의 데이터가 저장되어 있지 않을 수 있다. 그러나, 제 4 세그먼트 및 제 5 세그먼트에 대한 부호화가 진행 중에 있으므로, 제 4 세그먼트에 대한 부호화를 통해 생성되는 제 4 서브스트림은 제 1 버퍼(250a)에 저장되고, 제 5 세그먼트에 대한 부호화를 통해 생성되는 제 5 서브스트림은 제 2 버퍼(250b)에 저장될 수 있다.Referring to FIG. 9, when the encoding for the third segment is completed and all of the third substreams stored in the third buffer (250c) are output, no more data may be stored in the third buffer (250c). However, since encoding for the fourth and fifth segments is in progress, the fourth substream generated through encoding for the fourth segment may be stored in the first buffer (250a), and the fifth substream generated through encoding for the fifth segment may be stored in the second buffer (250b).
제어부(210)는 현재 상태가 기 설정된 출력 조건에 대응하면, 제 1 버퍼(250a)에 저장된 미리 결정된 크기의 제 4 서브스트림(910)을 제 4 서브스트림 패킷(915)으로 획득하고, 제 2 버퍼(250b)에 저장된 미리 결정된 크기의 제 5 서브스트림(920)을 제 5 서브스트림 패킷(925)으로 획득할 수 있다. 그리고, 제어부(210)는 제 3 버퍼(250c)에는 서브스트림이 저장되어 있지 않으므로, 미리 결정된 값을 갖는, 미리 결정된 크기의 제 6 서브스트림 패킷(935)을 생성할 수 있다.If the current state corresponds to a preset output condition, the control unit (210) can obtain a fourth substream (910) of a predetermined size stored in the first buffer (250a) as a fourth substream packet (915), and can obtain a fifth substream (920) of a predetermined size stored in the second buffer (250b) as a fifth substream packet (925). In addition, since no substream is stored in the third buffer (250c), the control unit (210) can generate a sixth substream packet (935) of a predetermined size and having a predetermined value.
제어부(210)는 제 4 서브스트림 패킷(915), 제 5 서브스트림 패킷(925) 및 제 6 서브스트림 패킷(또는 가비지 패킷)(935)을 미리 결정된 순서에 따라 배열하고, 제 4 서브스트림 패킷(915), 제 5 서브스트림 패킷(925) 및 제 6 서브스트림 패킷(935)을 포함하는 비트스트림(900)을 생성할 수 있다.The control unit (210) can arrange the fourth sub-stream packet (915), the fifth sub-stream packet (925), and the sixth sub-stream packet (or garbage packet) (935) in a predetermined order and generate a bitstream (900) including the fourth sub-stream packet (915), the fifth sub-stream packet (925), and the sixth sub-stream packet (935).
일 실시예에서, 제어부(210)는 제 6 서브스트림 패킷(935)의 복호화가 필요하지 않다는 정보를 비트스트림(900)에 추가할 수 있다.In one embodiment, the control unit (210) may add information to the bitstream (900) that decryption of the sixth substream packet (935) is not required.
도 10은 일 실시예에 따른 영상의 부호화 방법을 설명하기 위한 순서도이다.Fig. 10 is a flowchart for explaining a method of encoding an image according to one embodiment.
S1010 단계에서, 부호화 장치(200)는 영상으로부터 복수의 세그먼트들을 식별할 수 있다. At step S1010, the encoding device (200) can identify multiple segments from the image.
일 실시예에서, 복수의 세그먼트들 각각은 영상 시퀀스를 구성하는 영상, 영상으로부터 분할된 슬라이스, 영상으로부터 분할된 타일, 또는 영상으로부터 분할된 최대 부호화 단위 행에 해당할 수 있다.In one embodiment, each of the plurality of segments may correspond to an image constituting an image sequence, a slice segmented from an image, a tile segmented from an image, or a maximum coding unit row segmented from an image.
일 실시예에서, 복수의 세그먼트들 각각은 하나 이상의 최대 부호화 단위를 포함할 수 있다.In one embodiment, each of the plurality of segments may include one or more maximum coding units.
S1020 단계에서, 부호화 장치(200)는 복수의 세그먼트들을 병렬 부호화할 수 있다.At step S1020, the encoding device (200) can encode multiple segments in parallel.
일 실시예에서, 부호화 장치(200)는 복수의 세그먼트들의 병렬 부호화를 위해 복수의 세그먼트들을 복수의 코어(230) 및/또는 복수의 스레드에 할당할 수 있다.In one embodiment, the encoding device (200) may assign multiple segments to multiple cores (230) and/or multiple threads for parallel encoding of the multiple segments.
복수의 세그먼트들의 할당을 위해 부호화 장치(200)는 병렬 부호화의 성능 정보를 고려할 수 있다.For allocation of multiple segments, the encoding device (200) may consider performance information of parallel encoding.
일 실시예에서, 병렬 부호화의 성능 정보는, 세그먼트들을 병렬 처리할 수 있는 코어(230)의 개수, 적어도 하나의 코어(230)에 의해 병렬 처리될 수 있는 스레드의 개수 또는 병렬 부호화될 수 있는 세그먼트의 개수를 포함할 수 있다.In one embodiment, performance information of parallel encoding may include the number of cores (230) capable of parallel processing of segments, the number of threads capable of parallel processing by at least one core (230), or the number of segments capable of parallel encoding.
일 실시예에서, 부호화 장치(200)는 한 번에 병렬 부호화될 수 있는 세그먼트의 개수를 확인하고, 영상으로부터 식별된 복수의 세그먼트들 중 확인된 개수의 세그먼트들을 복수의 코어(230) 및/또는 복수의 스레드에 할당할 수 있다. 그리고, 부호화 장치(200)는 남은 세그먼트가 존재하는 경우, 남은 세그먼트를 복수의 코어(230) 및/또는 복수의 스레드에 추가 할당할 수 있다.In one embodiment, the encoding device (200) can determine the number of segments that can be encoded in parallel at one time, and can assign the identified number of segments among the plurality of segments identified from the image to the plurality of cores (230) and/or the plurality of threads. In addition, if there are remaining segments, the encoding device (200) can additionally assign the remaining segments to the plurality of cores (230) and/or the plurality of threads.
부호화 장치(200)는 적어도 하나의 코어(230)를 이용하여 복수의 세그먼트들을 병렬 부호화할 수 있다. 일 실시예에서, 부호화 장치(200)는 복수의 세그먼트들 각각을 최대 부호화 단위 기반으로 부호화할 수 있다.The encoding device (200) can encode a plurality of segments in parallel using at least one core (230). In one embodiment, the encoding device (200) can encode each of the plurality of segments based on a maximum encoding unit.
S1030 단계에서, 부호화 장치(200)는 복수의 세그먼트들에 대한 병렬 부호화 중에 생성되는 서브스트림들을 복수의 버퍼(250)에 저장할 수 있다. In step S1030, the encoding device (200) can store substreams generated during parallel encoding of multiple segments in multiple buffers (250).
일 실시예에서, 병렬 부호화되는 복수의 세그먼트들과 복수의 버퍼들은 1:1로 대응할 수 있다. 따라서, 복수의 세그먼트들 각각에 대한 부호화를 통해 생성되는 복수의 서브스트림들이 1:1로 복수의 버퍼들에 저장될 수 있다.In one embodiment, the plurality of segments to be encoded in parallel and the plurality of buffers may correspond 1:1. Accordingly, the plurality of substreams generated through encoding each of the plurality of segments may be stored 1:1 in the plurality of buffers.
일 실시예에서, 복수의 버퍼(250)의 개수는 세그먼트들을 병렬 처리할 수 있는 코어(230)의 개수, 적어도 하나의 코어(230)에 의해 병렬 처리될 수 있는 스레드의 개수 또는 병렬 부호화될 수 있는 세그먼트의 개수와 동일할 수 있다.In one embodiment, the number of the plurality of buffers (250) may be equal to the number of cores (230) capable of parallel processing the segments, the number of threads capable of parallel processing by at least one core (230), or the number of segments capable of parallel encoding.
S1040 단계에서, 부호화 장치(200)는 서브스트림들이 복수의 버퍼(250)에 저장되는 동안, 현재 상태가 미리 설정된 출력 조건에 대응하는 경우, 복수의 버퍼(250)로부터 미리 결정된 크기를 갖는 서브스트림 패킷들을 획득할 수 있다.At step S1040, the encoding device (200) can obtain substream packets having a predetermined size from the plurality of buffers (250) while the substreams are stored in the plurality of buffers (250), if the current state corresponds to a preset output condition.
일 실시예에서, 출력 조건은 복수의 버퍼(250)에 저장된 서브스트림들의 전체 크기, 복수의 버퍼(250)의 용량과 복수의 버퍼(250)에 저장된 서브스트림들의 전체 크기 사이의 비율, 병렬 부호화의 경과 시간 또는 복수의 세그먼트들 각각에 대한 부호화의 진행 정도 중 적어도 하나에 기반하여 설정될 수 있다.In one embodiment, the output condition may be set based on at least one of the total size of the substreams stored in the plurality of buffers (250), the ratio between the capacity of the plurality of buffers (250) and the total size of the substreams stored in the plurality of buffers (250), the elapsed time of parallel encoding, or the progress of encoding for each of the plurality of segments.
S1050 단계에서, 부호화 장치(200)는 서브스트림 패킷들을 미리 결정된 순서에 따라 배열하고, 미리 결정된 순서에 따라 배열된 서브스트림 패킷들을 포함하는 비트스트림을 출력할 수 있다.In step S1050, the encoding device (200) can arrange the substream packets in a predetermined order and output a bitstream including the substream packets arranged in the predetermined order.
일 실시예에서, 비트스트림은 서브스트림 패킷들로부터 복수의 세그먼트들을 복원하는데 필요한 부가 정보를 더 포함할 수 있다. 일 실시예에서, 부가 정보는 비트스트림의 헤더에 포함될 수 있다.In one embodiment, the bitstream may further include additional information necessary to reconstruct the plurality of segments from the substream packets. In one embodiment, the additional information may be included in a header of the bitstream.
일 실시예에서, 미리 결정된 순서는 복수의 세그먼트들의 부호화 순서에 대응할 수 있다. In one embodiment, the predetermined order may correspond to an encoding order of the plurality of segments.
일 실시예에서, 미리 결정된 순서는 부호화 장치(200)와 복호화 장치(1100) 간에 미리 약속된 순서에 대응할 수 있다.In one embodiment, the predetermined order may correspond to a pre-arranged order between the encoding device (200) and the decoding device (1100).
일 실시예에서, 부호화 장치(200)는 복수의 버퍼(250)들로부터 획득한 서브스트림 패킷들을, 미리 결정된 순서에 따라 소정 개수마다 반복하여 배열할 수 있다. 여기서, 소정 개수는 병렬 부호화의 성능 정보로부터 확인되는 개수에 해당할 수 있다.In one embodiment, the encoding device (200) may repeatedly arrange substream packets obtained from a plurality of buffers (250) in a predetermined number of sequences in a predetermined order. Here, the predetermined number may correspond to a number confirmed from performance information of parallel encoding.
이하, 도 11 내지 도 14를 참조하여 전술한 부호화 장치(200)에 대응하는 복호화 장치(1100)에 대해 설명한다.Hereinafter, a decoding device (1100) corresponding to the above-described encoding device (200) will be described with reference to FIGS. 11 to 14.
도 11은 일 실시예에 따른 복호화 장치(1100)의 구성을 도시하는 블록도이다.FIG. 11 is a block diagram illustrating the configuration of a decryption device (1100) according to one embodiment.
복호화 장치(1100)는 제어부(1110) 및 적어도 하나의 코어(1130)를 포함할 수 있다.The decryption device (1100) may include a control unit (1110) and at least one core (1130).
도 11은 복호화 장치(1100)가 1개의 코어(1130)를 포함하고 있는 것으로 도시하고 있으나, 복호화 장치(1100)에 포함될 수 있는 코어(1130)의 개수는 복수 개일 수 있다.Although FIG. 11 illustrates that the decryption device (1100) includes one core (1130), the number of cores (1130) that may be included in the decryption device (1100) may be multiple.
일 실시예에서, 제어부(1110) 및 적어도 하나의 코어(1130)는 프로세서에 포함될 수 있다.In one embodiment, the control unit (1110) and at least one core (1130) may be included in a processor.
일 실시예에서, 제어부(1110)는 제 1 프로세서에 포함되고, 적어도 하나의 코어(1130)는 제 2 프로세서에 포함될 수 있다.In one embodiment, the control unit (1110) may be included in the first processor, and at least one core (1130) may be included in the second processor.
일 실시예에서, 복호화 장치(1100)가 복수의 코어(1130)를 포함할 때, 복수의 코어(1130) 중 일부는 어느 하나의 프로세서에 포함되고, 다른 일부는 다른 하나의 프로세서에 포함될 수도 있다.In one embodiment, when the decryption device (1100) includes multiple cores (1130), some of the multiple cores (1130) may be included in one processor, and others may be included in another processor.
일 실시예에서, 제어부(1110) 및 적어도 하나의 코어(1130)를 구현하기 위한 프로세서는 영상의 복호화를 위한 전용 프로세서일 수 있다. 일 실시예에서, 제어부(1110) 및 적어도 하나의 코어(1130)를 구현하기 위한 프로세서는 AP(application processor), CPU(central processing unit) 또는 GPU(graphic processing unit)와 같은 범용 프로세서일 수도 있다. In one embodiment, the processor for implementing the control unit (1110) and the at least one core (1130) may be a dedicated processor for decoding images. In one embodiment, the processor for implementing the control unit (1110) and the at least one core (1130) may be a general-purpose processor such as an application processor (AP), a central processing unit (CPU), or a graphic processing unit (GPU).
일 실시예서, 영상의 복호화를 위한 적어도 하나의 인스트럭션이 메모리에 저장될 수 있고, 제어부(1110) 및 적어도 하나의 코어(1130)는 메모리에 저장된 적어도 하나의 인스트럭션에 따라 동작할 수 있다.In one embodiment, at least one instruction for decrypting an image may be stored in a memory, and the control unit (1110) and at least one core (1130) may operate according to the at least one instruction stored in the memory.
제어부(1110)는 영상의 부호화 결과에 해당하는 비트스트림을 획득할 수 있다.The control unit (1110) can obtain a bitstream corresponding to the encoding result of the image.
일 실시예에서, 제어부(1110)는 네트워크를 통해 부호화 장치(200)로부터 비트스트림을 수신할 수 있다. In one embodiment, the control unit (1110) can receive a bitstream from the encoding device (200) over a network.
일 실시예에서, 비트스트림은 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium) 등을 포함하는 데이터 저장 매체로부터 획득될 수도 있다.In one embodiment, the bitstream may be obtained from a data storage medium including a magnetic medium such as a hard disk, a floppy disk, and a magnetic tape, an optical storage medium such as a CD-ROM and a DVD, a magneto-optical medium such as a floptical disk, and the like.
일 실시예에서, 비트스트림은 미리 결정된 순서에 따라 배열된, 미리 결정된 크기의 서브스트림 패킷들을 포함할 수 있다.In one embodiment, a bitstream may include substream packets of a predetermined size, arranged in a predetermined order.
일 실시예에서, 제어부(1110)는 서브스트림 패킷들로부터 영상을 복원하기 위해, 복원하고자 하는 영상 내 복수의 세그먼트들을 식별할 수 있다.In one embodiment, the control unit (1110) can identify multiple segments within an image to be restored in order to restore the image from the substream packets.
복수의 세그먼트들 각각은 영상 시퀀스를 구성하는 영상, 영상으로부터 분할된 슬라이스, 영상으로부터 분할된 타일, 또는 영상으로부터 분할된 최대 부호화 단위 행에 해당할 수 있다.Each of the plurality of segments may correspond to an image constituting a video sequence, a slice segmented from an image, a tile segmented from an image, or a maximum coding unit row segmented from an image.
일 실시예에서, 제어부(1110)는 비트스트림으로부터 획득되는 서브스트림 패킷들을 적어도 하나의 코어(1130)로 전달하고, 적어도 하나의 코어(1130)는 서브스트림 패킷들을 복호화하여 복수의 세그먼트들을 복원할 수 있다.In one embodiment, the control unit (1110) transmits substream packets obtained from the bitstream to at least one core (1130), and the at least one core (1130) can decode the substream packets to restore a plurality of segments.
비트스트림에 포함된 서브스트림 패킷들은 미리 결정된 순서대로 복수의 세그먼트들 각각에 대응할 수 있다.Substream packets included in a bitstream can correspond to each of multiple segments in a predetermined order.
일 실시예에서, 미리 결정된 순서는 복수의 세그먼트들의 복호화 순서에 대응할 수 있다. 따라서, 제 1 세그먼트의 복호화 순서가 제 2 세그먼트의 복호화 순서보다 빠르면, 제 1 서브스트림 패킷과 제 2 서브스트림 패킷 중 더 앞에 배열된 서브스트림 패킷이 제 1 세그먼트에 대응하고, 뒤에 배열된 서브스트림 패킷이 제 2 세그먼트에 대응할 수 있다.In one embodiment, the predetermined order may correspond to the decoding order of the plurality of segments. Accordingly, if the decoding order of the first segment is earlier than the decoding order of the second segment, the sub-stream packet arranged earlier among the first sub-stream packet and the second sub-stream packet may correspond to the first segment, and the sub-stream packet arranged later may correspond to the second segment.
일 실시예에서, 제어부(1110)는 서브스트림 패킷들 중 어느 하나의 서브스트림 패킷이 복호화의 대상이 아니라는 정보가 비트스트림에 포함되어 있는 경우, 해당 서브스트림 패킷의 복호화를 스킵할 수 있다. 따라서, 해당 서브스트림 패킷은 삭제될 수 있고, 다음 서브스트림 패킷이 적어도 하나의 코어(1130)에 의해 복호화될 수 있다.In one embodiment, the control unit (1110) may skip decoding of a substream packet if the bitstream contains information indicating that any of the substream packets is not a target of decoding. Accordingly, the substream packet may be deleted, and the next substream packet may be decoded by at least one core (1130).
전술한 부호화 장치(200)는 복수의 세그먼트들을 병렬 부호화하여 서브스트림 패킷들을 생성할 수 있는데, 일 실시예에서, 적어도 하나의 코어(1130)는 비트스트림에 포함된 서브스트림 패킷들을 병렬 복호화할 수도 있고, 서브스트림 패킷들을 미리 결정된 순서에 따라 순차적으로 복호화할 수도 있다.The above-described encoding device (200) can encode a plurality of segments in parallel to generate substream packets. In one embodiment, at least one core (1130) can decode the substream packets included in the bitstream in parallel, or can decode the substream packets sequentially in a predetermined order.
일 실시예에서, 복호화 장치(1100)가, 부호화 장치(200)의 병렬 부호화 성능과 동일한 성능을 가지고 있는 경우, 제어부(1110)는 한 번에 병렬 복호화할 수 있는 서브스트림 패킷들을 복수의 코어(1130) 또는 복수의 스레드에 할당할 수 있다.In one embodiment, if the decoding device (1100) has the same parallel encoding performance as the encoding device (200), the control unit (1110) can allocate substream packets that can be parallel decoded at one time to multiple cores (1130) or multiple threads.
일 실시예에서, 제어부(1110)는 비트스트림에 포함된 서브스트림 패킷들 각각이 어느 세그먼트에 대한 것인지를 미리 결정할 수 있다. 서브스트림 패킷들이 적어도 하나의 코어(1130)에 의해 복호화됨에 따라 서브스트림 패킷들에 대응하는 세그먼트들이 복원될 수 있다. In one embodiment, the control unit (1110) can predetermine which segment each of the substream packets included in the bitstream is for. As the substream packets are decoded by at least one core (1130), the segments corresponding to the substream packets can be restored.
제어부(1110)는 서브스트림 패킷들 각각이 어느 세그먼트에 대한 것인지를 미리 결정할 수 있으므로, 서브스트림 패킷들의 병렬 복호화가 반드시 필요하지는 않을 수 있다. 왜냐하면, 서브스트림 패킷들이 순차적으로 복호화되더라도 복호화된 데이터가 어느 세그먼트를 위한 것인지를 알 수 있기 때문이다.Since the control unit (1110) can determine in advance which segment each of the substream packets is for, parallel decoding of the substream packets may not necessarily be necessary. This is because even if the substream packets are decoded sequentially, it is possible to know which segment the decoded data is for.
일 실시예에서, 제어부(1110)는 부호화 장치(200)의 병렬 부호화의 성능 정보를 미리 확인할 수 있다. 병렬 부호화의 성능 정보는 비트스트림에 포함될 수 있다. In one embodiment, the control unit (1110) can check in advance the performance information of the parallel encoding of the encoding device (200). The performance information of the parallel encoding can be included in the bitstream.
제어부(1110)는 병렬 부호화의 성능 정보로부터 서브스트림 패킷들이 몇 개마다 미리 결정된 순서대로 배열되는지를 알 수 있고, 그에 따라 서브스트림 패킷들 각각이 어느 세그먼트에 대한 것인지를 알 수 있다. 이에 대해, 도 12 내지 도 14를 참조하여 설명한다.The control unit (1110) can know from the performance information of parallel encoding how many substream packets are arranged in a predetermined order, and accordingly can know which segment each substream packet is for. This will be described with reference to FIGS. 12 to 14.
도 12는 일 실시예에 따른 비트스트림으로부터 복수의 세그먼트들을 복원하는 방법을 설명하기 위한 도면이다.FIG. 12 is a diagram illustrating a method for restoring multiple segments from a bitstream according to one embodiment.
도 12를 참조하면, 비트스트림에는 제 1 서브스트림 패킷 내지 제 7 서브스트림 패킷이 포함될 수 있다.Referring to FIG. 12, the bitstream may include a first substream packet to a seventh substream packet.
일 실시예에서, 제어부(1110)는 병렬 부호화의 성능 정보로부터 서브스트림 패킷들이 몇 개마다 반복되어 배열되어 있는지를 확인할 수 있다.In one embodiment, the control unit (1110) can determine how often the substream packets are arranged and repeated from the performance information of the parallel encoding.
예를 들어, 병렬 부호화의 성능 정보로부터 확인되는 개수가 4라면, 제어부(1110)는 서브스트림 패킷들이 4개마다 미리 결정된 순서에 따라 배열되어 있다는 것을 알 수 있다.For example, if the number confirmed from the performance information of parallel encoding is 4, the control unit (1110) can know that the substream packets are arranged in a predetermined order every 4.
제어부(1110)는 영상으로부터 제 1 세그먼트, 제 2 세그먼트, 제 3 세그먼트 및 제 4 세그먼트를 식별할 수 있다. 제어부(1110)는 제 1 세그먼트, 제 2 세그먼트, 제 3 세그먼트 및 제 4 세그먼트의 복호화 순서 또는 부호화 장치(200)와 미리 약속된 순서에 따라, 제 1 서브스트림 패킷은 제 1 세그먼트에 대응하고, 제 2 서브스트림 패킷은 제 2 세그먼트에 대응하고, 제 3 서브스트림 패킷은 제 3 세그먼트에 대응하고, 제 4 서브스트림 패킷은 제 4 세그먼트에 대응하는 것으로 결정할 수 있다.The control unit (1110) can identify the first segment, the second segment, the third segment, and the fourth segment from the image. The control unit (1110) can determine, based on the decoding order of the first segment, the second segment, the third segment, and the fourth segment or the order agreed upon in advance with the encoding device (200), that the first sub-stream packet corresponds to the first segment, the second sub-stream packet corresponds to the second segment, the third sub-stream packet corresponds to the third segment, and the fourth sub-stream packet corresponds to the fourth segment.
성능 정보로부터 확인되는 개수가 4인 경우, 서브스트림 패킷들이 4개마다 미리 결정된 순서로 배열되므로, 제어부(1110)는 제 5 서브스트림 패킷은 다시 제 1 세그먼트에 대응하고, 제 6 서브스트림 패킷은 제 2 세그먼트에 대응하고, 제 7 서브스트림 패킷은 제 3 세그먼트에 대응하는 것으로 결정할 수 있다.If the number confirmed from the performance information is 4, the sub-stream packets are arranged in a predetermined order every 4, so the control unit (1110) can determine that the 5th sub-stream packet corresponds to the 1st segment, the 6th sub-stream packet corresponds to the 2nd segment, and the 7th sub-stream packet corresponds to the 3rd segment.
적어도 하나의 코어(1130)는 제 1 서브스트림 패킷과 제 5 서브스트림 패킷을 복호화하여 제 1 세그먼트를 복원하고, 제 2 서브스트림 패킷과 제 6 서브스트림 패킷을 복호화하여 제 2 세그먼트를 복원하고, 제 3 서브스트림 패킷과 제 7 서브스트림 패킷을 복호화하여 제 3 세그먼트를 복원할 수 있다. 또한, 적어도 하나의 코어(1130)는 제 4 서브스트림 패킷을 복호화하여 제 4 세그먼트를 복원할 수 있다.At least one core (1130) can decrypt the first sub-stream packet and the fifth sub-stream packet to restore the first segment, decrypt the second sub-stream packet and the sixth sub-stream packet to restore the second segment, and decrypt the third sub-stream packet and the seventh sub-stream packet to restore the third segment. Additionally, at least one core (1130) can decrypt the fourth sub-stream packet to restore the fourth segment.
도 13은 일 실시예에 따른 비트스트림으로부터 복수의 세그먼트들을 복원하는 방법을 설명하기 위한 도면이다.FIG. 13 is a diagram illustrating a method for restoring multiple segments from a bitstream according to one embodiment.
도 13에 도시된 실시예에서는, 영상으로부터 제 1 세그먼트, 제 2 세그먼트, 제 3 세그먼트 및 세 4 세그먼트가 식별되고, 성능 정보로부터 확인되는 개수가 3인 것으로 가정한다.In the embodiment illustrated in FIG. 13, it is assumed that the first segment, the second segment, the third segment, and the third fourth segment are identified from the image, and the number confirmed from the performance information is 3.
이에 따르면, 제 1 서브스트림 패킷 및 제 4 서브스트림 패킷이 제 1 세그먼트에 대응하고, 제 2 서브스트림 패킷 및 제 5 서브스트림 패킷이 제 2 세그먼트에 대응하고, 제 3 서브스트림 패킷 및 제 6 서브스트림 패킷이 제 3 세그먼트에 대응할 수 있다.Accordingly, the first sub-stream packet and the fourth sub-stream packet may correspond to the first segment, the second sub-stream packet and the fifth sub-stream packet may correspond to the second segment, and the third sub-stream packet and the sixth sub-stream packet may correspond to the third segment.
일 실시예에서, 제 4 서브스트림 패킷으로부터 제 1 세그먼트의 복원이 완료되지 않았다면, 제 7 서브스트림 패킷은 제 1 세그먼트에 대응할 수 있다. 왜나하면, 서브스트림 패킷들은 3개마다 미리 결정된 순서로 배열되는데, 일곱 번째에 위치하는 제 7 서브스트림 패킷은 미리 결정된 순서에 따라 제 1 세그먼트에 대응하기 때문이다.In one embodiment, if the restoration of the first segment from the fourth sub-stream packet is not completed, the seventh sub-stream packet may correspond to the first segment. This is because the sub-stream packets are arranged in a predetermined order every three, and the seventh sub-stream packet, which is located at the seventh position, corresponds to the first segment according to the predetermined order.
일 실시예에서, 제 4 서브스트림 패킷의 복호화를 통해 제 1 세그먼트의 복원이 완료되었다면, 일곱 번째에 위치하는 제 7 서브스트림 패킷은 제 4 세그먼트에 대응할 수 있다. 즉, 이는 제 1 세그먼트와 제 4 세그먼트가 하나의 코어(1130) 또는 하나의 스레드를 통해 순차적으로 부호화되었다는 것을 의미할 수 있다.In one embodiment, if the restoration of the first segment is completed through decoding of the fourth sub-stream packet, the seventh sub-stream packet located at the seventh position may correspond to the fourth segment. That is, this may mean that the first segment and the fourth segment were sequentially encoded through one core (1130) or one thread.
도 14는 일 실시예에 따른 비트스트림으로부터 복수의 세그먼트들을 복원하는 방법을 설명하기 위한 도면이다.FIG. 14 is a diagram illustrating a method for restoring multiple segments from a bitstream according to one embodiment.
일 실시예에서, 제어부(1110)는 비트스트림으로부터 비트스트림 내 서브스트림 패킷들 중 제 2 서브스트림 패킷이 복호화의 대상이 아니라는 정보를 획득할 수 있다. 이 경우, 제 2 서브스트림 패킷에 대한 복호화는 스킵될 수 있다.In one embodiment, the control unit (1110) may obtain information from the bitstream that a second substream packet among the substream packets in the bitstream is not a target of decoding. In this case, decoding of the second substream packet may be skipped.
병렬 부호화의 성능 정보로부터 확인되는 개수가 4이고, 영상으로부터 제 1 세그먼트 내지 제 4 세그먼트가 식별된 경우, 제어부(1110)는 제 1 서브스트림 패킷은 제 1 세그먼트에 대응하는 것으로 결정할 수 있다. 제어부(1110)는 제 2 서브스트림 패킷은 복호화의 대상이 아니므로 어느 세그먼트에도 대응하지 않는 것으로 결정할 수 있다.If the number confirmed from the performance information of parallel encoding is 4 and the first to fourth segments are identified from the image, the control unit (1110) can determine that the first sub-stream packet corresponds to the first segment. The control unit (1110) can determine that the second sub-stream packet does not correspond to any segment because it is not a target of decoding.
제어부(1110)는 제 3 서브스트림 패킷은 제 3 세그먼트에 대응하고, 제 4 서브스트림 패킷은 제 4 세그먼트에 대응하는 것으로 결정할 수 있다. 4개마다 서브스트림 패킷들이 반복되어 배열되므로, 제어부(1110)는 제 5 서브스트림 패킷은 제 1 세그먼트에 대응하고, 제 6 서브스트림 패킷은 제 2 세그먼트에 대응하고, 제 7 서브스트림 패킷은 제 3 세그먼트에 대응하는 것으로 결정할 수 있다.The control unit (1110) can determine that the third sub-stream packet corresponds to the third segment, and the fourth sub-stream packet corresponds to the fourth segment. Since the sub-stream packets are arranged in a repeating manner every four, the control unit (1110) can determine that the fifth sub-stream packet corresponds to the first segment, the sixth sub-stream packet corresponds to the second segment, and the seventh sub-stream packet corresponds to the third segment.
적어도 하나의 코어(1130)는 제 1 서브스트림 패킷과 제 5 서브스트림 패킷을 복호화하여 제 1 세그먼트를 복원하고, 제 6 서브스트림 패킷을 복호화하여 제 2 세그먼트를 복원하고, 제 3 서브스트림 패킷과 제 7 서브스트림 패킷을 복호화하여 제 3 세그먼트를 복원할 수 있다. 또한, 적어도 하나의 코어(1130)는 제 4 서브스트림 패킷을 복호화하여 제 4 세그먼트를 복원할 수 있다.At least one core (1130) can decrypt the first sub-stream packet and the fifth sub-stream packet to restore the first segment, decrypt the sixth sub-stream packet to restore the second segment, and decrypt the third sub-stream packet and the seventh sub-stream packet to restore the third segment. Additionally, at least one core (1130) can decrypt the fourth sub-stream packet to restore the fourth segment.
일 실시예에서, 제어부(1110)는 적어도 하나의 코어(1130)에 의해 복수의 세그먼트들이 복원되면, 복원된 복수의 세그먼트들을 이용하여 복원 영상을 생성할 수 있다.In one embodiment, the control unit (1110) can generate a restored image using the restored plurality of segments when the plurality of segments are restored by at least one core (1130).
일 실시예에서, 제어부(1110)는 복원된 복수의 세그먼트들을 결합하여 복원 영상을 생성할 수 있다.In one embodiment, the control unit (1110) can combine multiple restored segments to generate a restored image.
일 실시예에서, 복원된 세그먼트들 사이의 경계 부분에 대해 필터링(예를 들어, 디블로킹 필터링)이 적용될 수 있다.In one embodiment, filtering (e.g., deblocking filtering) may be applied to the boundaries between restored segments.
일 실시예에서, 제어부(1110)는 복원 영상이 생성되면, 복원 영상을 디스플레이 등의 재생 장치로 전달할 수 있다.In one embodiment, when a restored image is generated, the control unit (1110) can transmit the restored image to a playback device such as a display.
도 15는 일 실시예에 따른 영상의 복호화 방법을 설명하기 위한 순서도이다.Fig. 15 is a flowchart for explaining a method of decoding an image according to one embodiment.
S1510 단계에서, 복호화 장치(1100)는 영상 내에서 복수의 세그먼트들을 식별할 수 있다.At step S1510, the decoding device (1100) can identify multiple segments within the image.
일 실시예에서, 복수의 세그먼트들 각각은 영상 시퀀스를 구성하는 영상, 영상으로부터 분할된 슬라이스, 영상으로부터 분할된 타일, 또는 영상으로부터 분할된 최대 부호화 단위 행에 해당할 수 있다.In one embodiment, each of the plurality of segments may correspond to an image constituting an image sequence, a slice segmented from an image, a tile segmented from an image, or a maximum coding unit row segmented from an image.
일 실시예에서, 복수의 세그먼트들 각각은 하나 이상의 최대 부호화 단위를 포함할 수 있다.In one embodiment, each of the plurality of segments may include one or more maximum coding units.
S1520 단계에서, 복호화 장치(1100)는 비트스트림으로부터 미리 결정된 순서에 따라 배열된 미리 결정된 크기의 서브스트림 패킷들을 획득할 수 있다.At step S1520, the decryption device (1100) can obtain substream packets of a predetermined size arranged in a predetermined order from the bitstream.
일 실시예에서, 복호화 장치(1100)는 비트스트림으로부터 부호화 장치(200)의 병렬 부호화의 성능 정보를 획득하고, 획득한 성능 정보에 기초하여 서브스트림 패킷들이 몇 개마다 반복되어 배열되어 있는지를 확인할 수 있다.In one embodiment, the decoding device (1100) can obtain performance information of parallel encoding of the encoding device (200) from the bitstream, and, based on the obtained performance information, can determine how often the substream packets are arranged and repeated.
S1530 단계에서, 복호화 장치(1100)는 적어도 하나의 코어(1130)를 통해 서브스트림 패킷들을 복호화하여 복수의 세그먼트들을 복원할 수 있다.At step S1530, the decryption device (1100) can decrypt substream packets through at least one core (1130) to restore multiple segments.
일 실시예에서, 복호화 장치(1100)는 성능 정보로부터 확인되는 개수의 서브스트림 패킷들 각각을 복수의 코어(1130) 또는 복수의 스레드에 할당하여 서브스트림 패킷들을 병렬 복호화할 수 있다.In one embodiment, the decryption device (1100) can decrypt the substream packets in parallel by assigning each of the number of substream packets identified from the performance information to a plurality of cores (1130) or a plurality of threads.
일 실시예에서, 서브스트림 패킷들은 미리 결정된 순서대로 복수의 세그먼트들 각각에 대응할 수 있으므로, 적어도 하나의 코어(1130)는 복수의 세그먼트들 각각에 대응하는 서브스트림 패킷들을 이용하여 복수의 세그먼트들을 복원할 수 있다.In one embodiment, the substream packets may correspond to each of the plurality of segments in a predetermined order, so that at least one core (1130) may restore the plurality of segments using the substream packets corresponding to each of the plurality of segments.
일 실시예에서, 복호화 장치(1100)는 복수의 세그먼트들 각각을 최대 부호화 단위 기반으로 복원할 수 있다.In one embodiment, the decoding device (1100) can restore each of the plurality of segments based on a maximum coding unit.
S1540 단계에서, 복호화 장치(1100)는 복원된 복수의 세그먼트들을 이용하여 복원 영상을 생성할 수 있다.At step S1540, the decryption device (1100) can generate a restored image using the restored plurality of segments.
일 실시예에서, 복호화 장치(1100)는 복원된 복수의 세그먼트들을 결합하여 복원 영상을 생성할 수 있다.In one embodiment, the decryption device (1100) can generate a restored image by combining multiple restored segments.
일 실시예에서, 복원된 세그먼트들 사이의 경계 부분에 대해 필터링(예를 들어, 디블로킹 필터링)이 적용될 수 있다.In one embodiment, filtering (e.g., deblocking filtering) may be applied to the boundaries between restored segments.
일 실시예에서, 복호화 장치(1100)는 복원 영상이 생성되면, 복원 영상을 디스플레이 등의 재생 장치로 전달할 수 있다.In one embodiment, when a restored image is generated, the decryption device (1100) can transmit the restored image to a playback device such as a display.
도 16은 일 실시예에 따른 부호화 장치(200) 또는 복호화 장치(1100)를 포함하는 단말 장치의 구성을 도시하는 블록도이다.FIG. 16 is a block diagram illustrating the configuration of a terminal device including an encoding device (200) or a decoding device (1100) according to one embodiment.
도 16을 참조하면, 일 실시예에 따른 단말 장치(1600)는, 튜너부(1640), 프로세서(1610), 디스플레이부(1620), 통신부(1650), 감지부(1630), 입/출력부(1670), 비디오 처리부(1680), 오디오 처리부(1685), 오디오 출력부(1660), 메모리(1690) 및 전원부(1695)를 포함할 수 있다.Referring to FIG. 16, a terminal device (1600) according to one embodiment may include a tuner unit (1640), a processor (1610), a display unit (1620), a communication unit (1650), a detection unit (1630), an input/output unit (1670), a video processing unit (1680), an audio processing unit (1685), an audio output unit (1660), a memory (1690), and a power supply unit (1695).
일 실시예에 따른 튜너부(1640)는 유선 또는 무선으로 수신되는 방송 신호를 증폭(amplification), 혼합(mixing), 공진(resonance)등을 통하여 많은 전파 성분 중 수신하고자 하는 채널의 주파수만을 튜닝(tuning)시켜 선택할 수 있다. 방송 신호는 오디오(audio), 비디오(video) 및 부가 정보(예를 들어, EPG(Electronic Program Guide))를 포함한다.A tuner unit (1640) according to one embodiment can select only the frequency of a channel to be received among many radio wave components by amplifying, mixing, resonating, etc. a broadcast signal received wired or wirelessly. The broadcast signal includes audio, video, and additional information (e.g., EPG (Electronic Program Guide)).
튜너부(1640)는 지상파 방송, 케이블 방송, 위성 방송, 인터넷 방송 등과 같이 다양한 소스로부터 방송 신호를 수신할 수 있다. 튜너부(1640)는 아날로그 방송 또는 디지털 방송 등과 같은 소스로부터 방송 신호를 수신할 수도 있다.The tuner unit (1640) can receive broadcast signals from various sources, such as terrestrial broadcasting, cable broadcasting, satellite broadcasting, and Internet broadcasting. The tuner unit (1640) can also receive broadcast signals from sources, such as analog broadcasting or digital broadcasting.
감지부(1630)는 사용자의 음성, 사용자의 영상 또는 사용자의 인터랙션을 감지하며, 마이크(1631), 카메라부(1632) 및 광 수신부(1633)를 포함할 수 있다.The detection unit (1630) detects the user's voice, the user's image, or the user's interaction, and may include a microphone (1631), a camera unit (1632), and a light receiving unit (1633).
마이크(1631)는 사용자의 발화(utterance)된 음성을 수신한다. 마이크(1631)는 수신된 음성을 전기 신호로 변환하여 프로세서(1610)로 출력할 수 있다. 사용자 음성은 예를 들어, 단말 장치(1600)의 메뉴 또는 기능에 대응되는 음성을 포함할 수 있다.The microphone (1631) receives the user's uttered voice. The microphone (1631) can convert the received voice into an electric signal and output it to the processor (1610). The user's voice may include, for example, a voice corresponding to a menu or function of the terminal device (1600).
카메라부(1632)는 영상(예를 들어, 연속되는 프레임)을 수신할 수 있다. The camera unit (1632) can receive images (e.g., consecutive frames).
광 수신부(1633)는 외부의 제어 장치에서부터 수신되는 광 신호(제어 신호를 포함)를 디스플레이부(1620)의 베젤의 광창(도시되지 아니함) 등을 통해 수신한다. 광 수신부(1633)는 제어 장치로부터 사용자 입력(예를 들어, 터치, 눌림, 터치 제스처, 음성, 또는 모션)에 대응되는 광 신호를 수신할 수 있다. 수신된 광 신호로부터 프로세서(1610)의 제어에 의해 제어 신호가 추출될 수 있다.The optical receiver (1633) receives an optical signal (including a control signal) from an external control device through an optical window (not shown) of a bezel of the display unit (1620). The optical receiver (1633) can receive an optical signal corresponding to a user input (e.g., touch, pressing, touch gesture, voice, or motion) from the control device. A control signal can be extracted from the received optical signal under the control of the processor (1610).
입/출력부(1670)는 프로세서(1610)의 제어에 의해 단말 장치(1600)의 외부에서부터 비디오(예를 들어, 동영상 등), 오디오(예를 들어, 음성, 음악 등) 및 부가 정보(예를 들어, EPG 등) 등을 수신한다. 입출력 인터페이스는 HDMI (High-Definition Multimedia Interface), MHL(Mobile High-Definition Link), USB(Universal Serial Bus), DP(Display Port), 썬더볼트(Thunderbolt), VGA(Video Graphics Array) 포트, RGB 포트, D-SUB(D-subminiature), DVI(Digital Visual Interface), 컴포넌트 잭(component jack), PC 포트(PC port) 중 어느 하나를 포함할 수 있다.The input/output unit (1670) receives video (e.g., moving images, etc.), audio (e.g., voice, music, etc.), and additional information (e.g., EPG, etc.) from the outside of the terminal device (1600) under the control of the processor (1610). The input/output interface may include any one of HDMI (High-Definition Multimedia Interface), MHL (Mobile High-Definition Link), USB (Universal Serial Bus), DP (Display Port), Thunderbolt, VGA (Video Graphics Array) port, RGB port, D-SUB (D-subminiature), DVI (Digital Visual Interface), component jack, and PC port.
프로세서(1610)는 단말 장치(1600)의 전반적인 동작 및 단말 장치(1600)의 내부 구성 요소들 사이의 신호 흐름을 제어하고, 데이터를 처리하는 기능을 수행한다. 프로세서(1610)는 사용자의 입력이 있거나 기 설정되어 저장된 조건을 만족하는 경우, 메모리(1690)에 저장된 OS(Operation System) 및 다양한 애플리케이션을 실행할 수 있다.The processor (1610) controls the overall operation of the terminal device (1600) and the signal flow between the internal components of the terminal device (1600), and performs a function of processing data. The processor (1610) can execute an OS (Operation System) and various applications stored in the memory (1690) when there is a user input or a preset and stored condition is satisfied.
프로세서(1610)는 단말 장치(1600)의 외부에서부터 입력되는 신호 또는 데이터를 저장하거나, 단말 장치(1600)에서 수행되는 다양한 작업(예를 들어, 영상의 노이즈 제거 작업)에 대응되는 저장 영역으로 사용되는 램(RAM), 단말 장치(1600)의 제어를 위한 제어 프로그램이 저장된 롬(ROM) 및 프로세서(Processor)를 포함할 수 있다.The processor (1610) may include a RAM that is used as a storage area for storing signals or data input from the outside of the terminal device (1600) or corresponding to various tasks (e.g., image noise removal tasks) performed in the terminal device (1600), a ROM that stores a control program for controlling the terminal device (1600), and a processor.
비디오 처리부(1680)는, 단말 장치(1600)가 수신한 비디오 데이터에 대한 처리를 수행한다. 비디오 처리부(1680)에서는 비디오 데이터에 대한 인코딩, 디코딩, 스케일링, 노이즈 필터링, 프레임 레이트 변환, 해상도 변환 등과 같은 다양한 이미지 처리를 수행할 수 있다.The video processing unit (1680) performs processing on video data received by the terminal device (1600). The video processing unit (1680) can perform various image processing such as encoding, decoding, scaling, noise filtering, frame rate conversion, and resolution conversion on the video data.
일 실시예에서, 전술한 부호화 장치(200)의 부호화 과정 또는 복호화 장치(1100)의 복호화 과정이 비디오 처리부(1680)에 의해 수행될 수 있다.In one embodiment, the encoding process of the aforementioned encoding device (200) or the decoding process of the decoding device (1100) may be performed by the video processing unit (1680).
오디오 처리부(1685)는 오디오 데이터에 대한 처리를 수행한다. 오디오 처리부(1685)에서는 오디오 데이터에 대한 디코딩이나 증폭, 노이즈 필터링 등과 같은 다양한 처리가 수행될 수 있다. 한편, 오디오 처리부(1685)는 복수의 컨텐츠에 대응되는 오디오를 처리하기 위해 복수의 오디오 처리 모듈을 구비할 수 있다.The audio processing unit (1685) performs processing on audio data. The audio processing unit (1685) may perform various processing such as decoding, amplification, and noise filtering on audio data. Meanwhile, the audio processing unit (1685) may be equipped with a plurality of audio processing modules to process audio corresponding to a plurality of contents.
오디오 출력부(1660)는 프로세서(1610)의 제어에 의해 튜너부(1640)를 통해 수신된 방송 신호에 포함된 오디오를 출력한다. 오디오 출력부(1660)는 통신부(1650) 또는 입/출력부(1670)를 통해 입력되는 오디오(예를 들어, 음성, 사운드)를 출력할 수 있다. 또한, 오디오 출력부(1660)는 프로세서(1610)의 제어에 의해 메모리(1690)에 저장된 오디오를 출력할 수 있다. 오디오 출력부(1660)는 스피커, 헤드폰 출력 단자 또는 S/PDIF(Sony/Philips Digital Interface: 출력 단자 중 적어도 하나를 포함할 수 있다.The audio output unit (1660) outputs audio included in a broadcast signal received through the tuner unit (1640) under the control of the processor (1610). The audio output unit (1660) can output audio (e.g., voice, sound) input through the communication unit (1650) or the input/output unit (1670). In addition, the audio output unit (1660) can output audio stored in the memory (1690) under the control of the processor (1610). The audio output unit (1660) can include at least one of a speaker, a headphone output terminal, or a S/PDIF (Sony/Philips Digital Interface: output terminal).
전원부(1695)는 프로세서(1610)의 제어에 의해 단말 장치(1600) 내부의 구성 요소들로 외부의 전원 소스에서부터 입력되는 전원을 공급한다. 또한, 전원부(1695)는 프로세서(1610)의 제어에 의해 단말 장치(1600) 내부에 위치하는 하나 또는 둘 이상의 배터리(도시되지 아니함)에서부터 출력되는 전원을 내부의 구성 요소들에게 공급할 수 있다.The power supply unit (1695) supplies power input from an external power source to components inside the terminal device (1600) under the control of the processor (1610). In addition, the power supply unit (1695) can supply power output from one or more batteries (not shown) located inside the terminal device (1600) to the internal components under the control of the processor (1610).
메모리(1690)는 프로세서(1610)의 제어에 의해 단말 장치(1600)를 구동하고 제어하기 위한 다양한 데이터, 프로그램 또는 어플리케이션을 저장할 수 있다. 메모리(1690)는 방송 수신 모듈, 채널 제어 모듈, 볼륨 제어 모듈, 통신 제어 모듈, 음성 인식 모듈, 모션 인식 모듈, 광 수신 모듈, 디스플레이 제어 모듈, 오디오 제어 모듈, 외부 입력 제어 모듈, 전원 제어 모듈, 무선(예를 들어, 블루투스)으로 연결되는 외부 장치의 전원 제어 모듈, 음성 데이터베이스(DB), 또는 모션 데이터베이스(DB)를 포함할 수 있다. 메모리(1690)의 모듈들 및 데이터 베이스는 단말 장치(1600)에서 미러링 기능, 방송 수신의 제어 기능, 채널 제어 기능, 볼륨 제어 기능, 통신 제어 기능, 음성 인식 기능, 모션 인식 기능, 광 수신 제어 기능, 디스플레이 제어 기능, 오디오 제어 기능, 외부 입력 제어 기능, 전원 제어 기능 또는 무선(예를 들어, 블루투스)으로 연결되는 외부 장치의 전원 제어 기능을 수행하기 위하여 소프트웨어 형태로 구현될 수 있다. 프로세서(1610)는 메모리(1690)에 저장된 이들 소프트웨어를 이용하여 각각의 기능을 수행할 수 있다.The memory (1690) can store various data, programs or applications for driving and controlling the terminal device (1600) under the control of the processor (1610). The memory (1690) can include a broadcast reception module, a channel control module, a volume control module, a communication control module, a voice recognition module, a motion recognition module, an optical reception module, a display control module, an audio control module, an external input control module, a power control module, a power control module for an external device connected wirelessly (for example, Bluetooth), a voice database (DB), or a motion database (DB). The modules and the database of the memory (1690) can be implemented in the form of software to perform a mirroring function, a broadcast reception control function, a channel control function, a volume control function, a communication control function, a voice recognition function, a motion recognition function, an optical reception control function, a display control function, an audio control function, an external input control function, a power control function or a power control function for an external device connected wirelessly (for example, Bluetooth) in the terminal device (1600). The processor (1610) can perform each function using the software stored in the memory (1690).
한편, 도 16에 도시된 단말 장치(1600)의 블록도는 일 실시예를 위한 블록도이다. 블록도의 각 구성요소는 실제 구현되는 단말 장치(1600)의 사양에 따라 통합, 추가, 또는 생략될 수 있다. 즉, 필요에 따라 2 이상의 구성요소가 하나의 구성요소로 합쳐지거나, 혹은 하나의 구성요소가 2 이상의 구성요소로 세분되어 구성될 수 있다. 또한, 각 블록에서 수행하는 기능은 실시예들을 설명하기 위한 것이며, 그 구체적인 동작이나 장치는 본 발명의 권리범위를 제한하지 아니한다.Meanwhile, the block diagram of the terminal device (1600) illustrated in FIG. 16 is a block diagram for one embodiment. Each component of the block diagram may be integrated, added, or omitted according to the specifications of the terminal device (1600) actually implemented. That is, two or more components may be combined into one component, or one component may be subdivided into two or more components, as needed. In addition, the functions performed by each block are for explaining embodiments, and the specific operations or devices thereof do not limit the scope of the present invention.
일 실시예는, 영상의 부호화 과정과 영상의 복호화 과정 사이의 지연을 최소화하는 것을 과제로 한다.One embodiment aims to minimize the delay between the process of encoding an image and the process of decoding the image.
또한, 일 실시예는, 영상의 병렬 부호화를 통해 생성되는 비트스트림의 출력 과정에서 발생될 수 있는 지연을 최소화하는 것을 과제로 한다.Additionally, one embodiment aims to minimize delay that may occur during the output process of a bitstream generated through parallel encoding of an image.
또한, 일 실시예는, 무선 TV, 클라우드 게임, AR(Augmented Reality) 및 VR(Virtual Reality) 등과 같이, 저지연 특성이 요구되는 응용에 적합한 코덱을 제공하는 것을 과제로 한다.In addition, one embodiment aims to provide a codec suitable for applications requiring low latency characteristics, such as wireless TV, cloud gaming, AR (Augmented Reality) and VR (Virtual Reality).
본 개시를 통해 이루고자 하는 기술적 과제는 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다. The technical problems to be achieved through the present disclosure are not limited to the technical problems mentioned above, and other technical problems not mentioned will be clearly understood by a person having ordinary skill in the technical field to which the present disclosure belongs from the description below.
일 실시예에 따른 부호화 장치(200)에 의한 영상의 부호화 방법은, 영상으로부터 복수의 세그먼트들을 식별하는 단계를 포함할 수 있다.A method of encoding an image by an encoding device (200) according to one embodiment may include a step of identifying a plurality of segments from an image.
일 실시예에 따른 부호화 장치(200)에 의한 영상의 부호화 방법은, 복수의 세그먼트들을 병렬 부호화하는 단계를 포함할 수 있다.A method of encoding an image by an encoding device (200) according to one embodiment may include a step of encoding a plurality of segments in parallel.
일 실시예에 따른 부호화 장치(200)에 의한 영상의 부호화 방법은, 병렬 부호화를 통해 생성되는 서브스트림들을 복수의 버퍼(250)에 저장하는 단계를 포함할 수 있다.A method of encoding an image by an encoding device (200) according to one embodiment may include a step of storing substreams generated through parallel encoding in a plurality of buffers (250).
일 실시예에 따른 부호화 장치(200)에 의한 영상의 부호화 방법은, 서브스트림들이 복수의 버퍼(250)에 저장되는 동안, 현재 상태가 미리 설정된 출력 조건에 대응하는 경우, 복수의 버퍼(250)로부터 미리 결정된 크기를 갖는 서브스트림 패킷들을 획득하는 단계를 포함할 수 있다.A method of encoding an image by an encoding device (200) according to one embodiment may include a step of obtaining substream packets having a predetermined size from a plurality of buffers (250) when a current state corresponds to a preset output condition while the substreams are stored in a plurality of buffers (250).
일 실시예에 따른 부호화 장치(200)에 의한 영상의 부호화 방법은, 서브스트림 패킷들을 미리 결정된 순서에 따라 배열하고, 서브스트림 패킷들이 배열된 비트스트림을 출력하는 단계를 포함할 수 있다.A method of encoding an image by an encoding device (200) according to one embodiment may include a step of arranging substream packets in a predetermined order and outputting a bitstream in which the substream packets are arranged.
일 실시예에 따른 영상의 부호화 방법에 따르면, 영상의 부호화 과정에서 발생될 수 있는 시간 지연을 최소화할 수 있다.According to a method for encoding an image according to one embodiment, a time delay that may occur during an image encoding process can be minimized.
일 실시예에서, 미리 설정된 출력 조건은, 복수의 버퍼(250)에 저장된 서브스트림들의 전체 크기, 복수의 버퍼(250)의 용량(capacity)과 복수의 버퍼(250)에 저장된 서브스트림들의 전체 크기 사이의 비율, 병렬 부호화의 경과 시간 또는 복수의 세그먼트들 각각에 대한 부호화의 진행 정도 중 적어도 하나에 기반하여 설정될 수 있다.In one embodiment, the preset output condition may be set based on at least one of the total size of the substreams stored in the plurality of buffers (250), the ratio between the capacity of the plurality of buffers (250) and the total size of the substreams stored in the plurality of buffers (250), the elapsed time of parallel encoding, or the progress of encoding for each of the plurality of segments.
일 실시예에 따르면, 다양한 출력 조건이 설정될 수 있으므로, 영상의 부호화 과정에서 발생되는 지연 정도를 다양하게 조절할 수 있다.According to one embodiment, various output conditions can be set, so that the amount of delay occurring during the encoding process of an image can be variously adjusted.
일 실시예에서, 미리 결정된 순서는, 복수의 세그먼트들의 부호화 순서에 대응하고, 제 1 세그먼트의 부호화 순서가 제 2 세그먼트의 부호화 순서보다 앞선 경우, 제 1 세그먼트에 대응하는 서브스트림 패킷은 제 2 세그먼트에 대응하는 서브스트림 패킷보다 앞에 배열될 수 있다.In one embodiment, the predetermined order corresponds to an encoding order of a plurality of segments, and if the encoding order of the first segment is earlier than the encoding order of the second segment, the sub-stream packet corresponding to the first segment may be arranged before the sub-stream packet corresponding to the second segment.
일 실시예에 따르면, 서브스트림 패킷들이 미리 결정된 순서로 배열되므로, 서브스트림 패킷들 각각이 어느 세그먼트에 대응하는 것인지를 쉽게 확인할 수 있다.In one embodiment, since the substream packets are arranged in a predetermined order, it is easy to determine which segment each substream packet corresponds to.
일 실시예에서, 출력하는 단계는, 복수의 버퍼(250) 중 제 1 버퍼에 저장된 서브스트림의 크기가 미리 결정된 크기 미만인 경우, 미리 결정된 값의 비트들로 이루어진, 미리 결정된 크기의 서브스트림 패킷을 생성하는 단계; 및 생성된 서브스트림 패킷을 미리 결정된 순서에 따라 배열하는 단계를 포함할 수 있다.In one embodiment, the outputting step may include: generating a substream packet of a predetermined size, comprising bits of a predetermined value, when a size of a substream stored in a first buffer among the plurality of buffers (250) is less than a predetermined size; and arranging the generated substream packets in a predetermined order.
일 실시예에 따르면, 버퍼에 충분한 데이터가 저장되어 있지 않더라도 가비지 패킷을 생성함으로써 일정한 비트레이트를 유지할 수 있다.In one embodiment, a constant bitrate can be maintained by generating garbage packets even if there is not enough data stored in the buffer.
일 실시예에서, 비트스트림을 출력하는 단계는, 생성된 서브스트림 패킷이 복호화의 대상이 아니라는 정보를 비트스트림에 포함시키는 단계를 포함할 수 있다.In one embodiment, the step of outputting the bitstream may include the step of including in the bitstream information that the generated substream packets are not subject to decryption.
일 실시예에 따르면, 특정 서브스트림 패킷의 복호화가 스킵될 수 있어서, 세그먼트가 잘못 복원되는 것을 방지할 수 있다.In one embodiment, decoding of certain substream packets may be skipped, thereby preventing segments from being incorrectly restored.
일 실시예에서, 복수의 세그먼트들은 복수의 코어(230a, 230b, 230c)에 의해 병렬 부호화되거나, 복수의 세그먼트들이 복수의 스레드(235a, 235b, 235c)에 할당되고, 복수의 스레드(235a, 235b, 235c)가 적어도 하나의 코어(230)에 의해 병렬 부호화될 수 있다.In one embodiment, the plurality of segments may be encoded in parallel by the plurality of cores (230a, 230b, 230c), or the plurality of segments may be assigned to the plurality of threads (235a, 235b, 235c), and the plurality of threads (235a, 235b, 235c) may be encoded in parallel by at least one core (230).
일 실시예에 따르면, 다양한 방식의 병렬 부호화를 통해 영상의 신속한 부호화가 가능해질 수 있다.In one embodiment, rapid encoding of images may be possible through various types of parallel encoding.
일 실시예에서, 복수의 세그먼트들 각각은, 슬라이스, 타일 또는 최대 부호화 단위 행을 포함할 수 있다.In one embodiment, each of the plurality of segments may include a slice, a tile, or a maximum coding unit row.
일 실시예에 따르면, 비디오 표준에 규정되어 있는 슬라이스, 타일 또는 최대 부호화 단위 행을 기반으로 병렬 부호화가 진행되므로, 다양한 응용에 활용될 수 있다.According to one embodiment, parallel encoding is performed based on slices, tiles, or maximum encoding unit rows specified in a video standard, so that it can be utilized in various applications.
일 실시예에 따른 복호화 장치(1100)에 의한 영상의 복호화 방법은, 영상 내 복수의 세그먼트들을 식별하는 단계를 포함할 수 있다.A method of decoding an image by a decoding device (1100) according to one embodiment may include a step of identifying a plurality of segments within the image.
일 실시예에 따른 복호화 장치(1100)에 의한 영상의 복호화 방법은, 비트스트림으로부터 미리 결정된 순서에 따라 배열된 미리 결정된 크기의 서브스트림 패킷들을 획득하는 단계를 포함할 수 있다. 일 실시예에서, 서브스트림 패킷들은 복수의 세그먼트들에 대한 병렬 부호화를 통해 생성될 수 있다.A method of decoding an image by a decoding device (1100) according to one embodiment may include a step of obtaining substream packets of a predetermined size arranged in a predetermined order from a bitstream. In one embodiment, the substream packets may be generated through parallel encoding of a plurality of segments.
일 실시예에 따른 복호화 장치(1100)에 의한 영상의 복호화 방법은, 서브스트림 패킷들을 복호화하여 복수의 세그먼트들을 복원하는 단계를 포함할 수 있다.A method of decoding an image by a decoding device (1100) according to one embodiment may include a step of decoding substream packets to restore a plurality of segments.
일 실시예에 따른 복호화 장치(1100)에 의한 영상의 복호화 방법은, 복원된 복수의 세그먼트들을 포함하는 복원 영상을 생성하는 단계를 포함할 수 있다.A method of decoding an image by a decoding device (1100) according to one embodiment may include a step of generating a restored image including a plurality of restored segments.
일 실시예에서, 서브스트림 패킷들은 미리 결정된 순서대로 복수의 세그먼트들 각각에 대응할 수 있다.In one embodiment, the substream packets may correspond to each of the plurality of segments in a predetermined order.
일 실시예에 따른 영상의 복호화 방법에 따르면, 영상의 부호화 과정 및 영상의 복호화 과정에서 발생될 수 있는 시간 지연을 최소화할 수 있다.According to a method for decoding an image according to one embodiment, time delay that may occur during an image encoding process and an image decoding process can be minimized.
일 실시예에서, 서브스트림 패킷들 중 제 1 서브스트림 패킷이 복호화의 대상이 아니라는 정보가 비트스트림에 포함되어 있는 경우, 제 1 서브스트림 패킷의 복호화는 스킵될 수 있다.In one embodiment, if the bitstream includes information that a first substream packet among the substream packets is not a target for decoding, decoding of the first substream packet may be skipped.
일 실시예에 따르면, 특정 서브스트림 패킷의 복호화가 스킵될 수 있어서, 세그먼트가 잘못 복원되는 것을 방지할 수 있다.In one embodiment, decoding of certain substream packets may be skipped, thereby preventing segments from being incorrectly restored.
일 실시예에서, 영상의 복호화 방법은, 비트스트림으로부터 병렬 부호화에 이용된 코어 또는 스레드의 개수 정보를 획득하는 단계를 더 포함하고, 서브스트림 패킷들은, 코어 또는 스레드의 개수마다 미리 결정된 순서에 따라 배열될 수 있다.In one embodiment, the method of decoding an image further includes the step of obtaining information on the number of cores or threads used for parallel encoding from a bitstream, and the substream packets may be arranged in a predetermined order for each number of cores or threads.
일 실시예에 따르면, 서브스트림 패킷들이 미리 결정된 순서로 배열되므로, 서브스트림 패킷들 각각이 어느 세그먼트에 대응하는 것인지를 쉽게 확인할 수 있다.In one embodiment, since the substream packets are arranged in a predetermined order, it is easy to determine which segment each substream packet corresponds to.
일 실시예에서, 코어 또는 스레드의 개수가 n개(n은 1보다 큰 자연수)이고, 복수의 세그먼트들의 개수가 m개(m은 n 이상의 자연수)인 경우, n개의 서브스트림 패킷들이 미리 결정된 순서에 따라 배열되고, n개의 서브스트림 패킷들 각각이 미리 결정된 순서대로 m개의 세그먼트들 중 n개의 세그먼트들 각각에 대응할 수 있다.In one embodiment, when the number of cores or threads is n (where n is a natural number greater than 1) and the number of multiple segments is m (where m is a natural number greater than or equal to n), the n substream packets are arranged in a predetermined order, and each of the n substream packets can correspond to each of n segments among the m segments in the predetermined order.
일 실시예에 따른 부호화 장치(200)는, 영상으로부터 복수의 세그먼트들을 식별하는 제어부(210)를 포함할 수 있다.An encoding device (200) according to one embodiment may include a control unit (210) that identifies a plurality of segments from an image.
일 실시예에 따른 부호화 장치(200)는, 복수의 세그먼트들을 병렬 부호화하는 적어도 하나의 코어(230)를 포함할 수 있다.An encoding device (200) according to one embodiment may include at least one core (230) that encodes a plurality of segments in parallel.
일 실시예에 따른 부호화 장치(200)는, 복수의 버퍼(250)를 포함할 수 있다.An encoding device (200) according to one embodiment may include a plurality of buffers (250).
일 실시예에서, 제어부(210)는, 병렬 부호화를 통해 생성되는 서브스트림들을 복수의 버퍼(250)에 저장할 수 있다.In one embodiment, the control unit (210) can store substreams generated through parallel encoding in multiple buffers (250).
일 실시예에서, 제어부(210)는, 서브스트림들이 복수의 버퍼(250)에 저장되는 동안, 현재 상태가 미리 설정된 출력 조건에 대응하는 경우, 복수의 버퍼(250)로부터 미리 결정된 크기를 갖는 서브스트림 패킷들을 획득할 수 있다.In one embodiment, the control unit (210) may obtain substream packets having a predetermined size from the plurality of buffers (250) when the current state corresponds to a preset output condition while the substreams are stored in the plurality of buffers (250).
일 실시예에서, 제어부(210)는, 서브스트림 패킷들을 미리 결정된 순서에 따라 배열(arrange)하고, 서브스트림 패킷들이 배열된 비트스트림을 출력할 수 있다.In one embodiment, the control unit (210) can arrange the substream packets in a predetermined order and output a bitstream in which the substream packets are arranged.
일 실시예에 따른 부호화 장치(200)에 따르면, 영상의 부호화 과정에서 발생될 수 있는 시간 지연을 최소화할 수 있다.According to an encoding device (200) according to one embodiment, a time delay that may occur during an image encoding process can be minimized.
일 실시예에서, 제어부(210)는, 복수의 버퍼(250) 중 제 1 버퍼에 저장된 서브스트림의 크기가 미리 결정된 크기 미만인 경우, 미리 결정된 값의 비트들로 이루어진, 미리 결정된 크기의 서브스트림 패킷을 생성하고, 생성된 서브스트림 패킷을 미리 결정된 순서에 따라 배열할 수 있다.In one embodiment, the control unit (210) may, when the size of a substream stored in a first buffer among the plurality of buffers (250) is less than a predetermined size, generate a substream packet of a predetermined size, consisting of bits of a predetermined value, and arrange the generated substream packets in a predetermined order.
일 실시예에 따르면, 버퍼에 충분한 데이터가 저장되어 있지 않더라도 가비지 패킷을 생성함으로써 일정한 비트레이트를 유지할 수 있다.In one embodiment, a constant bitrate can be maintained by generating garbage packets even if there is not enough data stored in the buffer.
일 실시예에 따른 복호화 장치(1100)는, 영상 내 복수의 세그먼트들을 식별하고, 비트스트림으로부터 미리 결정된 순서에 따라 배열된 미리 결정된 크기의 서브스트림 패킷들을 획득하는 제어부(1110)를 포함할 수 있다.A decoding device (1100) according to one embodiment may include a control unit (1110) that identifies a plurality of segments in an image and obtains substream packets of a predetermined size arranged in a predetermined order from a bitstream.
일 실시예에 따른 복호화 장치(1100)는, 서브스트림 패킷들을 복호화하여 복수의 세그먼트들을 복원하는 적어도 하나의 코어(1130)를 포함할 수 있다.A decryption device (1100) according to one embodiment may include at least one core (1130) that decrypts substream packets to restore a plurality of segments.
일 실시예에서, 서브스트림 패킷들은 복수의 세그먼트들에 대한 병렬 부호화를 통해 생성되며, 미리 결정된 순서대로 복수의 세그먼트들 각각에 대응할 수 있다.In one embodiment, the substream packets are generated through parallel encoding of a plurality of segments, and may correspond to each of the plurality of segments in a predetermined order.
일 실시예에서, 제어부(1110)는, 복원된 복수의 세그먼트들을 포함하는 복원 영상을 생성할 수 있다.In one embodiment, the control unit (1110) can generate a restored image including a plurality of restored segments.
일 실시예에 따른 복호화 장치(1100)에 의하면, 영상의 부호화 과정 및 영상의 복호화 과정에서 발생될 수 있는 시간 지연을 최소화할 수 있다.According to a decoding device (1100) according to one embodiment, time delay that may occur during an image encoding process and an image decoding process can be minimized.
일 실시예는, 영상의 부호화 과정과 영상의 복호화 과정 사이의 지연을 최소화할 수 있다.One embodiment can minimize the delay between the process of encoding an image and the process of decoding the image.
또한, 일 실시예는, 영상의 병렬 부호화를 통해 생성되는 비트스트림의 출력 과정에서 발생될 수 있는 지연을 최소화할 수 있다.Additionally, one embodiment can minimize delay that may occur during the output process of a bitstream generated through parallel encoding of an image.
또한, 일 실시예는, 무선 TV, 클라우드 게임, AR(Augmented Reality) 및 VR(Virtual Reality) 등과 같이, 저지연 특성이 요구되는 응용에 적합한 코덱을 제공할 수 있다.Additionally, one embodiment may provide a codec suitable for applications requiring low latency characteristics, such as wireless TV, cloud gaming, AR (Augmented Reality), and VR (Virtual Reality).
본 개시에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.The effects obtainable from the present disclosure are not limited to the effects mentioned above, and other effects not mentioned will be clearly understood by a person skilled in the art to which the present disclosure belongs from the description below.
한편, 상술한 본 개시의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 작성된 프로그램은 기기로 읽을 수 있는 저장매체에 저장될 수 있다.Meanwhile, the embodiments of the present disclosure described above can be written as a program that can be executed on a computer, and the written program can be stored in a storage medium that can be read by a machine.
기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, ‘비일시적 저장매체'는 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다. 예로, '비일시적 저장매체'는 데이터가 임시적으로 저장되는 버퍼를 포함할 수 있다.A storage medium that can be read by the device may be provided in the form of a non-transitory storage medium. Here, the term 'non-transitory storage medium' means only that it is a tangible device and does not contain signals (e.g., electromagnetic waves), and this term does not distinguish between cases where data is stored semi-permanently in the storage medium and cases where data is stored temporarily. For example, a 'non-transitory storage medium' may include a buffer in which data is temporarily stored.
일 실시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어를 통해 또는 두개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품(예: 다운로더블 앱(downloadable app))의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.According to one embodiment, the method according to various embodiments disclosed in the present document may be provided as included in a computer program product. The computer program product may be traded between a seller and a buyer as a commodity. The computer program product may be distributed in the form of a machine-readable storage medium (e.g., a compact disc read only memory (CD-ROM)), or may be distributed online (e.g., downloaded or uploaded) via an application store or directly between two user devices (e.g., smartphones). In the case of online distribution, at least a portion of the computer program product (e.g., a downloadable app) may be at least temporarily stored or temporarily generated in a machine-readable storage medium, such as a memory of a manufacturer's server, a server of an application store, or an intermediary server.
이상, 본 개시의 기술적 사상을 바람직한 실시예를 들어 상세하게 설명하였으나, 본 개시의 기술적 사상은 상기 실시예들에 한정되지 않고, 본 개시의 기술적 사상의 범위 내에서 당 분야에서 통상의 지식을 가진 자에 의하여 여러 가지 변형 및 변경이 가능하다.Above, the technical idea of the present disclosure has been described in detail with reference to preferred embodiments, but the technical idea of the present disclosure is not limited to the above embodiments, and various modifications and changes are possible by a person having ordinary knowledge in the relevant field within the scope of the technical idea of the present disclosure.
Claims (15)
영상으로부터 복수의 세그먼트들을 식별하는 단계;
상기 복수의 세그먼트들을 병렬 부호화하는 단계;
상기 병렬 부호화를 통해 생성되는 서브스트림들을 복수의 버퍼(250)에 저장하는 단계;
상기 서브스트림들이 상기 복수의 버퍼(250)에 저장되는 동안, 현재 상태가 미리 설정된 출력 조건에 대응하는 경우, 상기 복수의 버퍼(250)로부터 미리 결정된 크기를 갖는 서브스트림 패킷들을 획득하는 단계; 및
상기 서브스트림 패킷들을 미리 결정된 순서에 따라 배열(arrange)하고, 상기 서브스트림 패킷들이 배열된 비트스트림을 출력하는 단계를 포함하는, 영상의 부호화 방법.
In a method of encoding an image using an encoding device (200),
A step of identifying multiple segments from an image;
A step of parallel encoding the above plurality of segments;
A step of storing substreams generated through the above parallel encoding in multiple buffers (250);
While the above substreams are stored in the plurality of buffers (250), if the current state corresponds to a preset output condition, a step of obtaining substream packets having a predetermined size from the plurality of buffers (250); and
A method for encoding a video, comprising the steps of arranging the substream packets in a predetermined order and outputting a bitstream in which the substream packets are arranged.
상기 미리 설정된 출력 조건은,
상기 복수의 버퍼(250)에 저장된 상기 서브스트림들의 전체 크기, 상기 복수의 버퍼(250)의 용량(capacity)과 상기 복수의 버퍼(250)에 저장된 상기 서브스트림들의 전체 크기 사이의 비율, 상기 병렬 부호화의 경과 시간 또는 상기 복수의 세그먼트들 각각에 대한 부호화의 진행 정도 중 적어도 하나에 기반하여 설정되는, 영상의 부호화 방법.
In the first paragraph,
The above preset output conditions are:
A method for encoding a video, wherein the method is set based on at least one of the total size of the substreams stored in the plurality of buffers (250), the ratio between the capacity of the plurality of buffers (250) and the total size of the substreams stored in the plurality of buffers (250), the elapsed time of the parallel encoding, or the progress of encoding for each of the plurality of segments.
상기 미리 결정된 순서는,
상기 복수의 세그먼트들의 부호화 순서에 대응하고,
제 1 세그먼트의 부호화 순서가 제 2 세그먼트의 부호화 순서보다 앞선 경우, 상기 제 1 세그먼트에 대응하는 서브스트림 패킷은 상기 제 2 세그먼트에 대응하는 서브스트림 패킷보다 앞에 배열되는, 영상의 부호화 방법.
In any one of the first and second paragraphs,
The above predetermined order is,
Corresponding to the encoding order of the above multiple segments,
A method for encoding a video, wherein if the encoding order of the first segment is earlier than the encoding order of the second segment, the substream packet corresponding to the first segment is arranged earlier than the substream packet corresponding to the second segment.
상기 출력하는 단계는,
상기 복수의 버퍼(250) 중 제 1 버퍼에 저장된 서브스트림의 크기가 상기 미리 결정된 크기 미만인 경우, 미리 결정된 값의 비트들로 이루어진, 상기 미리 결정된 크기의 서브스트림 패킷을 생성하는 단계; 및
상기 생성된 서브스트림 패킷을 상기 미리 결정된 순서에 따라 배열하는 단계를 포함하는, 영상의 부호화 방법.
In any one of claims 1 to 3,
The above output step is,
When the size of the substream stored in the first buffer among the plurality of buffers (250) is less than the predetermined size, a step of generating a substream packet of the predetermined size, which is composed of bits of a predetermined value; and
A method for encoding a video, comprising the step of arranging the generated substream packets in the predetermined order.
상기 비트스트림을 출력하는 단계는,
상기 생성된 서브스트림 패킷이 복호화의 대상이 아니라는 정보를 상기 비트스트림에 포함시키는 단계를 포함하는, 영상의 부호화 방법.
In any one of claims 1 to 4,
The step of outputting the above bitstream is:
A method for encoding a video, comprising the step of including information in the bitstream that the generated substream packet is not a target of decoding.
상기 복수의 세그먼트들은 복수의 코어(230a, 230b, 230c)에 의해 병렬 부호화되거나, 상기 복수의 세그먼트들이 복수의 스레드(235a, 235b, 235c)에 할당되고, 복수의 스레드(235a, 235b, 235c)가 적어도 하나의 코어(230)에 의해 병렬 부호화되는, 영상의 부호화 방법.
In any one of claims 1 to 5,
A method for encoding a video, wherein the plurality of segments are encoded in parallel by a plurality of cores (230a, 230b, 230c), or the plurality of segments are allocated to a plurality of threads (235a, 235b, 235c), and the plurality of threads (235a, 235b, 235c) are encoded in parallel by at least one core (230).
상기 복수의 세그먼트들 각각은,
슬라이스, 타일 또는 최대 부호화 단위 행을 포함하는, 영상의 부호화 방법.
In any one of claims 1 to 6,
Each of the above multiple segments,
A method of encoding an image, comprising slices, tiles or rows of maximum coding units.
A computer-readable recording medium having recorded thereon a program for performing on a computer the method of encoding an image according to any one of claims 1 to 7.
영상 내 복수의 세그먼트들을 식별하는 단계;
비트스트림으로부터 미리 결정된 순서에 따라 배열된 미리 결정된 크기의 서브스트림 패킷들을 획득하는 단계, 상기 서브스트림 패킷들은 상기 복수의 세그먼트들에 대한 병렬 부호화를 통해 생성되며;
상기 서브스트림 패킷들을 복호화하여 상기 복수의 세그먼트들을 복원하는 단계; 및
상기 복원된 복수의 세그먼트들을 포함하는 복원 영상을 생성하는 단계를 포함하되,
상기 서브스트림 패킷들은 상기 미리 결정된 순서대로 상기 복수의 세그먼트들 각각에 대응하는, 영상의 복호화 방법.
In a method of decoding an image using a decoding device (1100),
A step of identifying multiple segments within an image;
A step of obtaining substream packets of a predetermined size arranged in a predetermined order from a bitstream, the substream packets being generated through parallel encoding of the plurality of segments;
a step of decrypting the above substream packets to restore the plurality of segments; and
A step of generating a restored image including the restored plurality of segments,
A method for decoding a video, wherein the substream packets correspond to each of the plurality of segments in the predetermined order.
상기 서브스트림 패킷들 중 제 1 서브스트림 패킷이 복호화의 대상이 아니라는 정보가 상기 비트스트림에 포함되어 있는 경우, 상기 제 1 서브스트림 패킷의 복호화는 스킵되는, 영상의 복호화 방법.
In Article 9,
A method for decoding a video, wherein if the bitstream includes information that a first substream packet among the above substream packets is not a target of decoding, decoding of the first substream packet is skipped.
상기 영상의 복호화 방법은,
상기 비트스트림으로부터 상기 병렬 부호화에 이용된 코어 또는 스레드의 개수 정보를 획득하는 단계를 더 포함하고,
상기 서브스트림 패킷들은, 상기 코어 또는 스레드의 개수마다 상기 미리 결정된 순서에 따라 배열된, 영상의 복호화 방법.
In any one of the clauses 9 to 10,
The method of decrypting the above video is as follows:
Further comprising a step of obtaining information on the number of cores or threads used for the parallel encoding from the bitstream,
A method for decoding a video, wherein the substream packets are arranged in a predetermined order for each number of cores or threads.
상기 코어 또는 스레드의 개수가 n개(n은 1보다 큰 자연수)이고, 상기 복수의 세그먼트들의 개수가 m개(m은 n 이상의 자연수)인 경우, n개의 서브스트림 패킷들이 상기 미리 결정된 순서에 따라 배열되고, 상기 n개의 서브스트림 패킷들 각각이 상기 미리 결정된 순서대로 m개의 세그먼트들 중 n개의 세그먼트들 각각에 대응하는, 영상의 복호화 방법.
In any one of the clauses 9 to 11,
A method for decoding a video, wherein when the number of the cores or threads is n (n is a natural number greater than 1) and the number of the plurality of segments is m (m is a natural number greater than or equal to n), n substream packets are arranged in the predetermined order, and each of the n substream packets corresponds to each of n segments among the m segments in the predetermined order.
상기 복수의 세그먼트들을 병렬 부호화하는 적어도 하나의 코어(230); 및
복수의 버퍼(250)를 포함하되,
상기 제어부(210)는,
상기 병렬 부호화를 통해 생성되는 서브스트림들을 상기 복수의 버퍼(250)에 저장하고,
상기 서브스트림들이 상기 복수의 버퍼(250)에 저장되는 동안, 현재 상태가 미리 설정된 출력 조건에 대응하는 경우, 상기 복수의 버퍼(250)로부터 미리 결정된 크기를 갖는 서브스트림 패킷들을 획득하고,
상기 서브스트림 패킷들을 미리 결정된 순서에 따라 배열(arrange)하고, 상기 서브스트림 패킷들이 배열된 비트스트림을 출력하는, 부호화 장치.
A control unit (210) for identifying multiple segments from an image;
At least one core (230) for parallel encoding of the plurality of segments; and
Including multiple buffers (250),
The above control unit (210)
The substreams generated through the above parallel encoding are stored in the plurality of buffers (250),
While the above substreams are stored in the plurality of buffers (250), if the current state corresponds to a preset output condition, substream packets having a predetermined size are obtained from the plurality of buffers (250),
An encoding device that arranges the above substream packets in a predetermined order and outputs a bitstream in which the above substream packets are arranged.
상기 제어부(210)는,
상기 복수의 버퍼(250) 중 제 1 버퍼에 저장된 서브스트림의 크기가 상기 미리 결정된 크기 미만인 경우, 미리 결정된 값의 비트들로 이루어진, 상기 미리 결정된 크기의 서브스트림 패킷을 생성하고, 상기 생성된 서브스트림 패킷을 상기 미리 결정된 순서에 따라 배열하는, 부호화 장치.
In Article 13,
The above control unit (210)
An encoding device that generates a substream packet of the predetermined size, which is composed of bits of a predetermined value, when the size of a substream stored in a first buffer among the plurality of buffers (250) is less than the predetermined size, and arranges the generated substream packets in the predetermined order.
상기 서브스트림 패킷들을 복호화하여 상기 복수의 세그먼트들을 복원하는 적어도 하나의 코어(1130)를 포함하되,
상기 서브스트림 패킷들은 상기 복수의 세그먼트들에 대한 병렬 부호화를 통해 생성되며,
상기 서브스트림 패킷들은 상기 미리 결정된 순서대로 상기 복수의 세그먼트들 각각에 대응하고,
상기 제어부(1110)는, 상기 복원된 복수의 세그먼트들을 포함하는 복원 영상을 생성하는, 복호화 장치.A control unit (1110) for identifying multiple segments in an image and obtaining substream packets of a predetermined size arranged in a predetermined order from a bitstream; and
At least one core (1130) for decrypting the above substream packets and restoring the plurality of segments,
The above substream packets are generated through parallel encoding of the above multiple segments,
The above substream packets correspond to each of the above plurality of segments in the above predetermined order,
The above control unit (1110) is a decoding device that generates a restored image including the restored plurality of segments.
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020230197645A KR20250104845A (en) | 2023-12-29 | 2023-12-29 | Encoding apparatus for parallel encoding and image encoding method, and decoding apparatus and image decoding method |
| PCT/KR2024/019458 WO2025143600A1 (en) | 2023-12-29 | 2024-12-02 | Encoding apparatus for parallel encoding and method for encoding image by using same, and decoding apparatus and method for decoding image by using same |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020230197645A KR20250104845A (en) | 2023-12-29 | 2023-12-29 | Encoding apparatus for parallel encoding and image encoding method, and decoding apparatus and image decoding method |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| KR20250104845A true KR20250104845A (en) | 2025-07-08 |
Family
ID=96219418
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020230197645A Pending KR20250104845A (en) | 2023-12-29 | 2023-12-29 | Encoding apparatus for parallel encoding and image encoding method, and decoding apparatus and image decoding method |
Country Status (2)
| Country | Link |
|---|---|
| KR (1) | KR20250104845A (en) |
| WO (1) | WO2025143600A1 (en) |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP3310050B1 (en) * | 2001-11-06 | 2019-01-30 | Panasonic Intellectual Property Corporation of America | Moving picture coding method and moving picture decoding method |
| US9979970B2 (en) * | 2014-08-08 | 2018-05-22 | Qualcomm Incorporated | System and method for determining buffer fullness for display stream compression |
| KR102633460B1 (en) * | 2016-03-29 | 2024-02-06 | 한국전자통신연구원 | Apparatus and method for distributed video endoder |
| KR101925681B1 (en) * | 2016-09-28 | 2018-12-05 | 가천대학교 산학협력단 | Parallel video processing using multicore system |
| KR20180108315A (en) * | 2017-03-24 | 2018-10-04 | 한국전자통신연구원 | Parallel encoding method and apparatus |
-
2023
- 2023-12-29 KR KR1020230197645A patent/KR20250104845A/en active Pending
-
2024
- 2024-12-02 WO PCT/KR2024/019458 patent/WO2025143600A1/en active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| WO2025143600A1 (en) | 2025-07-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR102043962B1 (en) | Low latency screen mirroring | |
| TWI811706B (en) | Method, apparatus and system for encoding and decoding video data | |
| CN109547786B (en) | Video encoding and video decoding methods and devices | |
| US7966642B2 (en) | Resource-adaptive management of video storage | |
| US20220377429A1 (en) | Methods, systems, and media for presenting media content using integrated content sources | |
| KR980007747A (en) | Memory Management System for Television Receiver | |
| EP3723381A1 (en) | Transmission of reconstruction data in a tiered signal quality hierarchy | |
| US20100266049A1 (en) | Image decoding device | |
| US9749636B2 (en) | Dynamic on screen display using a compressed video stream | |
| KR20130114734A (en) | Dynamic video switching | |
| CN113676769A (en) | Video decoding method, device, storage medium and program product | |
| US12489913B2 (en) | Partial output of a decoded picture buffer in video coding | |
| JP2006510292A (en) | Television display device | |
| US20190141352A1 (en) | Tile-based 360 vr video encoding method and tile-based 360 vr video decoding method | |
| KR20250104845A (en) | Encoding apparatus for parallel encoding and image encoding method, and decoding apparatus and image decoding method | |
| US8982128B2 (en) | Method of providing image and display apparatus applying the same | |
| KR20050088433A (en) | Television display unit | |
| KR20160008011A (en) | Apparatus for Processing super resolution image | |
| US20130287100A1 (en) | Mechanism for facilitating cost-efficient and low-latency encoding of video streams | |
| CN114760525A (en) | Video generation and playing method, device, equipment and medium | |
| JP2015519810A (en) | Apparatus and method for bitstream bit stuffing | |
| US11463699B2 (en) | Image processing apparatus and control method thereof | |
| CN118118694A (en) | Point cloud encapsulation and decapsulation method and device, medium and electronic equipment | |
| US20060215060A1 (en) | Video processing apparatus and computer system integrated with the same | |
| KR100961635B1 (en) | Broadcast receiving device and graphic video signal transmission / reception method thereof |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PA0109 | Patent application |
St.27 status event code: A-0-1-A10-A12-nap-PA0109 |
|
| PG1501 | Laying open of application |
St.27 status event code: A-1-1-Q10-Q12-nap-PG1501 |
|
| Q12 | Application published |
Free format text: ST27 STATUS EVENT CODE: A-1-1-Q10-Q12-NAP-PG1501 (AS PROVIDED BY THE NATIONAL OFFICE) |