KR20200119435A - Real-time segmented video transcoding device and method - Google Patents
Real-time segmented video transcoding device and method Download PDFInfo
- Publication number
- KR20200119435A KR20200119435A KR1020190041176A KR20190041176A KR20200119435A KR 20200119435 A KR20200119435 A KR 20200119435A KR 1020190041176 A KR1020190041176 A KR 1020190041176A KR 20190041176 A KR20190041176 A KR 20190041176A KR 20200119435 A KR20200119435 A KR 20200119435A
- Authority
- KR
- South Korea
- Prior art keywords
- video stream
- gpu
- resolution
- tile
- task
- Prior art date
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/40—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
-
- 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/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- 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/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- 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
-
- 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/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
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
Description
본 발명은 트랜스코딩 기술에 관한 것으로, 더욱 상세하게는 복수의 GPU(Graphics Processing Unit)를 이용하여 실시간으로 타일을 고품질로 트랜스코딩하는 실시간 분할 영상 트랜스코딩 장치 및 방법에 관한 것이다.The present invention relates to a transcoding technology, and more particularly, to a real-time segmented image transcoding apparatus and method for transcoding tiles with high quality in real time using a plurality of GPUs (Graphics Processing Units).
최근 다양한 고품질의 영상들이 사용자에게 제공되고 있으며, 그 중에서 360 VR 영상은 스테리오(stereo)로 구성되어 일반적인 4K 영상(3840×2160)보다 더욱 큰 해상도(4096×4096 이상)를 요구한다. 즉 360 VR 영상은 2D 영상과 달리 360°에 해당하는 영상을 스트리밍하기 때문에 평면 영상을 나타내는 2D 영상보다 많은 대역폭을 필요로 한다.Recently, various high-quality images have been provided to users, and among them, 360 VR images are composed of stereos and require a higher resolution (4096×4096 or higher) than a general 4K image (3840×2160). In other words, unlike a 2D image, a 360 VR image requires more bandwidth than a 2D image representing a flat image because it streams an image corresponding to 360°.
한편 360 VR 영상은 많은 대역폭의 필요성뿐만 아니라 영상의 특성상 영상 시청자가 영상 전체를 한 번에 보는 것이 아니고, 영상의 일부만을 보기 때문에 현재 화면에 보이지 않는 영역을 고품질로 전송하면 대역폭을 낭비하는 문제를 가지고 있다. 이에 이러한 문제를 해결하기 위해 다양한 연구를 하였으나, 대역폭을 낭비하지 않으면서 효과적으로 360 VR 영상을 스트리밍하는 기술이 개발되지는 못하였다.On the other hand, 360 VR video not only requires a lot of bandwidth, but due to the nature of the video, viewers do not view the entire video at once, but only a part of the video. Have. Accordingly, various studies have been conducted to solve this problem, but a technology for effectively streaming 360 VR images without wasting bandwidth has not been developed.
본 발명이 이루고자 하는 기술적 과제는 원본 비디오 스트림(video stream)을 공간 분할하고, 분할된 타일을 실시간으로 트랜스코딩하는 실시간 분할 영상 트랜스코딩 장치 및 방법을 제공하는데 목적이 있다.An object of the present invention is to provide a real-time segmented image transcoding apparatus and method for spatially segmenting an original video stream and transcoding the segmented tiles in real time.
상기 목적을 달성하기 위해 본 발명의 실시간 분할 영상 트랜스코딩 장치는 원본 비디오 스트림(video stream)을 입력받는 입력부 및 상기 입력된 원본 비디오 스트림을 공간 분할하여 타일을 생성하고, 상기 생성된 타일의 프레임(Tiled frame)을 복수의 GPU(Graphics Processing Unit)를 이용하여 병렬구조로 인코딩하고, 상기 인코딩된 프레임을 재배열하여 제1 해상도를 가지는 제1 비디오 스트림, 제1 해상도보다 낮은 해상도인 제2 해상도를 가지는 제2 비디오 스트림 및 제2 해상도보다 낮은 해상도인 제3 해상도를 가지는 제3 비디오 스트림을 생성하는 제어부를 포함한다.In order to achieve the above object, the real-time segmented image transcoding apparatus of the present invention generates a tile by spatially dividing an input unit receiving an original video stream and the input original video stream, and a frame of the generated tile ( Tiled frames) are encoded in a parallel structure using a plurality of GPUs (Graphics Processing Units), and the encoded frames are rearranged to obtain a first video stream having a first resolution and a second resolution lower than the first resolution. The branch includes a control unit for generating a second video stream and a third video stream having a third resolution lower than the second resolution.
또한 상기 제어부는, 상기 원본 비디오 스트림을 기 설정된 개수의 타일로 분할하여 타일을 생성하는 영상 공간 분할부, 상기 생성된 타일의 프레임과 관련된 작업량을 산출하고, 상기 산출된 작업량에 따라 상기 복수의 GPU에 작업을 할당하는 GPU 작업 관리부, 상기 복수의 GPU를 병렬구조로 구비하고, 각 GPU마다 할당된 작업에 대한 비디오 스트림의 인코딩을 수행하는 GPU부 및 상기 인코딩된 비디오 스트림을 동기화하고, 상기 동기화된 비디오 스트림을 재배열하여 상기 제1 비디오 스트림, 상기 제2 비디오 스트림 및 상기 제3 비디오 스트림을 생성하는 비디오 후처리부를 포함하는 것을 특징으로 한다.In addition, the control unit may further include an image space dividing unit for generating tiles by dividing the original video stream into a preset number of tiles, calculating an amount of work related to a frame of the generated tile, and the plurality of GPUs according to the calculated amount of work. A GPU task management unit that allocates a job to a GPU, and a GPU unit that includes the plurality of GPUs in a parallel structure, performs encoding of a video stream for a job assigned to each GPU, and synchronizes the encoded video stream, and the synchronized And a video post-processor configured to rearrange the video streams to generate the first video stream, the second video stream, and the third video stream.
또한 상기 영상 공간 분할부는, 상기 타일의 가로와 세로의 픽셀 수가 128배수로 분할하는 것을 특징으로 한다.In addition, the image space division unit is characterized in that the number of horizontal and vertical pixels of the tile is divided by a multiple of 128.
또한 상기 영상 공간 분할부는, 상기 타일 중 하단 마지막 가로의 타일과 우측 마지막 세로의 타일의 경우, 픽셀 수에 제한을 두지 않는 것을 특징으로 한다.In addition, in the case of the last horizontal tile at the lower end and the last vertical tile at the right, among the tiles, the image space division unit does not limit the number of pixels.
또한 상기 GPU 작업 관리부는, 각 GPU의 평균 작업 완료 시간 및 할당된 작업 큐(queue)의 크기에 따라 상기 작업을 할당하는 것을 특징으로 한다.In addition, the GPU task manager may allocate the task according to an average task completion time of each GPU and a size of an assigned task queue.
또한 상기 GPU 작업 관리부는, 각 GPU의 작업 종류에 따른 평균 작업 시간을 기준으로 각 GPU의 작업 완료 시간을 예상하여 상기 작업을 할당하는 것을 특징으로 한다.In addition, the GPU task manager may predict a task completion time of each GPU based on an average task time according to a task type of each GPU and allocate the task.
또한 상기 GPU 작업 관리부는, 각 작업을 GOP(Group of Pictures) 사이즈 만큼 타일의 프레임을 GPU에 순차 복사하는 것을 특징으로 한다.In addition, the GPU task management unit is characterized in that each task is sequentially copied to the GPU by the frame of the tile as a GOP (Group of Pictures) size.
또한 상기 GPU 작업 관리부는, 상기 작업과 관련된 정보를 각 GPU에 전달할 때 프레임 번호 정보를 더 포함하여 전달하는 것을 특징으로 한다.In addition, the GPU task manager may further include and transmit frame number information when delivering information related to the task to each GPU.
또한 상기 비디오 후처리부는, 상기 제1 비디오 스트림, 상기 제2 비디오 스트림 및 상기 제3 비디오 스트림에 해당하는 각각의 멀티플렉서를 포함하는 것을 특징으로 한다.In addition, the video post-processing unit may include multiplexers corresponding to the first video stream, the second video stream, and the third video stream.
본 발명에 따른 실시간 타일 트랜스코딩 방법은 분할 영상 트랜스코딩 장치가 원본 비디오 스트림을 입력받는 단계, 상기 분할 영상 트랜스코딩 장치가 상기 입력된 원본 비디오 스트림을 공간 분할하여 타일을 생성하는 단계, 상기 분할 영상 트랜스코딩 장치가 상기 생성된 타일의 프레임을 복수의 GPU를 이용하여 병렬구조로 인코딩하는 단계 및 상기 분할 영상 트랜스코딩 장치가 상기 인코딩된 프레임을 재배열하여 제1 해상도를 가지는 제1 비디오 스트림, 제1 해상도보다 낮은 해상도인 제2 해상도를 가지는 제2 비디오 스트림 및 제2 해상도보다 낮은 해상도인 제3 해상도를 가지는 제3 비디오 스트림을 생성하는 단계를 포함한다.The real-time tile transcoding method according to the present invention includes the steps of receiving an original video stream by a segmented image transcoding apparatus, generating a tile by spatially dividing the input original video stream by the segmented image transcoding apparatus, and Encoding, by a transcoding device, the frame of the generated tile in a parallel structure using a plurality of GPUs, and by rearranging the encoded frames by the split image transcoding device to a first video stream having a first resolution, And generating a second video stream having a second resolution lower than one resolution and a third video stream having a third resolution lower than the second resolution.
본 발명의 실시간 분할 영상 트랜스코딩 장치 및 방법은 원본 비디오 스트림을 공간 분할하고, 분할된 타일을 복수의 GPU를 통해 병렬구조로 트랜스코딩할 수 있다.The apparatus and method for real-time divided image transcoding of the present invention may spatially divide an original video stream and transcode the divided tiles in a parallel structure through a plurality of GPUs.
이때 각 GPU의 평균 작업 완료 시간 및 할당된 작업 큐(queue)의 크기에 따라 복수의 GPU에 작업을 할당함으로써, 빠른 연산을 수행하여 실시간으로 고품질의 비디오 스트림을 제공할 수 있다.At this time, by assigning jobs to a plurality of GPUs according to the average job completion time of each GPU and the size of the allocated job queue, a high-quality video stream can be provided in real time by performing a fast operation.
도 1은 본 발명의 실시예에 따른 분할 영상 트랜스코딩 장치를 설명하기 위한 블록도이다.
도 2는 본 발명의 실시예에 따른 분할 영상 트랜스코딩 장치가 구동되는 전체 과정을 설명하기 위한 개략도이다.
도 3은 본 발명의 실시예에 따른 작업 관리 과정을 설명하기 위한 도면이다.
도 4는 본 발명의 실시예에 따른 작업 할당을 설명하기 위한 도면이다.
도 5는 본 발명의 실시예에 따른 후처리 과정을 설명하기 위한 도면이다.
도 6은 본 발명의 실시예에 따른 분할 영상 트랜스코딩 방법을 설명하기 위한 순서도이다.1 is a block diagram illustrating a split image transcoding apparatus according to an embodiment of the present invention.
2 is a schematic diagram for explaining an entire process of driving a divided image transcoding apparatus according to an embodiment of the present invention.
3 is a view for explaining a work management process according to an embodiment of the present invention.
4 is a diagram for explaining task assignment according to an embodiment of the present invention.
5 is a view for explaining a post-processing process according to an embodiment of the present invention.
6 is a flowchart illustrating a split image transcoding method according to an embodiment of the present invention.
이하 본 발명의 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 우선 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의한다. 또한 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 당업자에게 자명하거나 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings. First of all, in adding reference numerals to elements of each drawing, note that the same elements are to have the same numerals as possible even if they are indicated on different drawings. In addition, in describing the present invention, when it is determined that a detailed description of a related known configuration or function is apparent to those skilled in the art or may obscure the subject matter of the present invention, the detailed description thereof will be omitted.
도 1은 본 발명의 실시예에 따른 분할 영상 트랜스코딩 장치를 설명하기 위한 블록도이고, 도 2는 본 발명의 실시예에 따른 분할 영상 트랜스코딩 장치가 구동되는 전체 과정을 설명하기 위한 개략도이다.FIG. 1 is a block diagram illustrating a split image transcoding apparatus according to an embodiment of the present invention, and FIG. 2 is a schematic diagram illustrating an entire process of driving a divided image transcoding apparatus according to an embodiment of the present invention.
도 1 및 도 2를 참조하면, 분할 영상 트랜스코딩 장치(100)는 원본 비디오 스트림을 공간 분할하고, 분할된 타일을 실시간으로 트랜스코딩한다. 분할 영상 트랜스코딩 장치(100)는 입력부(10) 및 제어부(30)를 포함한다.1 and 2, the divided
입력부(10)는 원본 비디오 스트림을 입력받는다. 입력부(10)는 파일, 네트워크, API(Application Program Interface) 등 다양한 방식으로 원본 비디오 스트림을 입력받을 수 있다. 여기서 원본 비디오 스트림은 4K 스테레오(stereo)이면서 4096×4096px 이상인 고화질 영상 스트림일 수 있으며, H.264 포맷, HEVC(High Efficiency Video Coding) 포맷, YUV420 로우 프레임(raw frame) 포맷, RGB 로우 프레임 포맷 등을 지원할 수 있다. The
제어부(30)는 입력부(10)로부터 입력된 원본 비디오 스트림을 공간 분할하여 타일을 생성한다. 제어부(30)는 생성된 타일의 프레임(Tiled frame)을 복수의 GPU를 이용하여 병렬구조로 인코딩한다. 제어부(30)는 인코딩된 프레임을 재배열하여 제1 해상도를 가지는 제1 비디오 스트림, 제1 해상도보다 낮은 해상도인 제2 해상도를 가지는 제2 비디오 스트림 및 제2 해상도보다 낮은 해상도인 제3 해상도를 가지는 제3 비디오 스트림을 생성한다. 여기서 제1 해상도는 고품질(high quality, HQ)의 고해상도를 의미하고, 제2 해상도는 중품질(middle quality, MQ)의 일반 해상도를 의미하며, 제3 해상도는 저품질(low quality, LQ)의 저해상도를 의미할 수 있다. 제어부(30)는 영상 공간 분할부(31), GPU 작업 관리부(33), GPU부(35) 및 비디오 후처리부(37)를 포함한다.The
영상 공간 분할부(31)는 원본 비디오 스트림을 기 설정된 개수의 타일로 분할하여 타일을 생성한다. 영상 공간 분할부(31)는 가로(row)와 세로(column)의 개수가 짝수가 되도록 원본 비디오 스트림을 타일로 분할한다. 예를 들어 영상 공간 분할부(31)는 가로 및 세로를 6×6, 6×8, 8×8, 8×12, 12×12 등으로 분할할 수 있다. 또한 영상 공간 분할부(31)는 각 타일의 세로와 가로의 픽셀 수가 128배수로 분할한다. 예를 들어 영상 공간 분할부(31)는 가로 및 세로를 256×256, 256×512, 512×512 등으로 분할할 수 있다. 이때 영상 공간 분할부(31)는 타일 중 하단 마지막 가로의 타일과 우측 마지막 세로의 타일의 경우, 픽셀 수의 제한을 두지 않을 수 있다. 이를 통해 영상 공간 분할부(31)는 융통성 있게 영상을 복수의 타일로 분할할 수 있다. 한편 영상 공간 분할부(31)는 원본 비디오 스트림에 대해서 논리적인 분할만 수행할뿐 데이터 이동을 수행하지 않는다.The image spatial dividing
GPU 작업 관리부(33)는 영상 공간 분할부(31)로부터 생성된 타일의 프레임과 관련된 작업량을 산출한다. GPU 작업 관리부(33)는 산출된 작업량에 따라 복수의 GPU에 작업을 할당한다. 여기서 작업은 GPU를 통해 수행되는 인코딩 작업을 의미할 수 있다. 예를 들어 GPU 작업 관리부(33)는 각 GPU의 평균 작업 완료 시간 및 할당된 작업 큐의 크기에 따라 작업을 할당할 수 있다. 또한 GPU 작업 관리부(33)는 각 GPU의 작업 종류에 따른 평균 작업 시간을 기준으로 각 GPU의 작업 완료 시간을 예상하여 작업을 할당할 수 있다.The GPU
GPU부(35)는 복수의 GPU를 포함한다. 예를 들어 GPU부(35)는 제1 GPU, 제2 GPU 내지 제n GPU를 포함할 수 있다. 바람직하게는 GPU부(35)는 동일한 스펙의 GPU를 포함하여 각 GPU 간의 호환이 원활하게 이루어질 수 있도록 할 수 있으나, 이에 한정하지 않고 수행되는 환경에 따라 서로 다른 스펙의 GPU를 포함할 수 있다. GPU부(35)는 복수의 GPU를 병렬구조로 가지고, 각각의 GPU에서 GPU 작업 관리부(33)로부터 할당된 작업에 대한 비디오 스트림의 인코딩을 수행한다.The
비디오 후처리부(37)는 GPU부(35)로부터 인코딩된 비디오 스트림을 동기화하고, 동기화된 비디오 스트림을 재배열한다. 비디오 후처리부(37)는 재배열을 통해 제1 비디오 스트림, 제2 비디오 스트림 및 제3 비디오 스트림을 생성한다. 이때 비디오 후처리부(37)는 제1 비디오 스트림, 제2 비디오 스트림 및 제3 비디오 스트림에 해당하는 각각의 멀티플렉서(multiplexer)를 구비할 수 있다.The
도 3은 본 발명의 실시예에 따른 작업 관리 과정을 설명하기 위한 도면이고, 도 4는 본 발명의 실시예에 따른 작업 할당을 설명하기 위한 도면이다. 도 3(a)은 각 GPU별 기존 작업 버퍼 상태를 나타낸 도면이고, 도 3(b)은 새로운 작업을 나타낸 도면이며, 도 3(c)은 각 GPU별 새로운 작업이 할당된 버퍼 상태를 나타낸 도면이다.3 is a diagram for explaining a task management process according to an embodiment of the present invention, and FIG. 4 is a diagram for explaining a task assignment according to an embodiment of the present invention. 3(a) is a diagram showing the status of the existing job buffer for each GPU, FIG. 3(b) is a diagram showing a new job, and FIG. 3(c) is a diagram showing the buffer status to which a new job is allocated for each GPU to be.
도 2 내지 도 4를 참조하면, GPU 작업 관리부(33)는 프레임 버퍼(frame buffer)(51), 작업 큐 로더(work queue loader)(53) 및 로드 밸런서(load balancer)(55)를 포함한다.2 to 4, the GPU
프레임 버퍼(51)는 영상 공간 분할부(31)로부터 논리적으로 분할되어 생성된 타일의 프레임(Tiled frame)을 저장한다. 이때 프레임 버퍼(51)는 타일의 프레임을 작업 큐 로더(53)에 전달하기 전에 일시적으로 저장하는 기능을 가진다.The
작업 큐 로더(53)는 프레임 버퍼(51)로부터 저장된 타일의 프레임과 관련된 작업량을 산출하고, 산출된 작업량에 따라 GPU부(35)에 작업을 할당한다. 작업 큐 로더(53)는 각 GPU의 작업 종류(HQ/MQ/LQ)에 따른 평균 작업 시간을 기준으로 각 GPU의 작업 완료 시간을 예상하여 작업을 할당할 수 있다. 여기서 작업 큐 로더(53)는 하나의 타일의 프레임에 대한 HQ/MQ 두 개의 작업 명령 및 전체 프레임에 대한 LQ 작업 명령을 생성할 수 있다.The
상세하게는 작업 큐 로더(53)는 각 GPU의 평균 작업 완료 시간 및 할당된 작업 큐의 크기를 산출하고, 산출된 정보를 이용하여 각 GPU에 작업을 할당한다. 예를 들어 작업 큐 로더(53)는 새로운 타일의 프레임이 입력되면 각 GPU별 예상되는 평균 작업 시간을 업데이트한다. 이때 작업 큐 로더(53)는 업데이트 정보를 로드 밸런서(55)로부터 수신한다. 작업 큐 로더(53)는 작업 시간에 따라 오름차순으로 정렬을 수행하고, 가장 작업 완료시간이 빠른 GPU에 새롭게 입력된 타일의 프레임을 할당한다. 작업 큐 로더(53)는 할당한 후에도 남은 타일이 존재하는 경우, 상술된 과정을 재수행하여 남은 타일에 대한 작업 할당을 수행한다. In detail, the
작업 큐 로더(53)는 GPU부(35)에 작업 할당뿐만 아니라 타일의 프레임을 해당 GPU에 복사할 수 있다. 이때 작업 큐 로더(53)는 각 작업을 GOP(Group of Pictures) 사이즈 만큼 타일의 프레임을 GPU에 순차 복사할 수 있다.The
또한 작업 큐 로더(53)는 작업과 관련된 정보를 GPU에 전달할 때 프레임 번호 정보를 더 포함하여 전달할 수 있다. 여기서 프레임 번호 정보는 시간 정보를 의미한다. In addition, the
로드 밸런서(55)는 GPU부(35)로부터 각 GPU의 현재 진행 중인 작업 상태를 수신한다. 로드 밸런서(55)는 수신된 정보를 이용하여 각 GPU의 작업 종류에 따른 평균 작업 시간을 산출한다. 로드 밸런서(55)는 산출된 평균 작업 시간을 작업 큐 로더(53)로 전송하여 작업 큐 로더(53)가 해당 정보를 이용하여 작업 할당을 할 수 있도록 지원한다.The
도 5는 본 발명의 실시예에 따른 후처리 과정을 설명하기 위한 도면이다.5 is a view for explaining a post-processing process according to an embodiment of the present invention.
도 2 및 도 5를 참조하면, 비디오 후처리부(37)는 비디오 동기화부(video synchronizer)(71) 및 멀티플렉서부(multiplexer)(73)를 포함한다. Referring to FIGS. 2 and 5, the
비디오 동기화부(71)는 GPU부(35)로부터 인코딩된 비디오 스트림을 동기화한다. 여기서 인코딩된 비디오 스트림은 로드 밸런싱(load balancing)에 의해 순차적으로 생성되지 않을 수 있다. 비디오 동기화부(71)는 인코딩된 결과를 우선적으로 수신하고, 타일 ID별로 버퍼에 저장한다. 이를 통해 비디오 동기화부(71)는 동일한 프레임 타임(frame time)에 대한 타일이 모두 인코딩되면 해당 프레임을 멀티플렉서부(73)로 전달한다.The
멀티플렉서부(73)는 비디오 동기화부(71)로부터 전달된 프레임을 재배열하여 하나의 미디어 콘테이너(media container)로 구성한다. 여기서 미디어 콘테이너는 MP4 또는 TS 형태일 수 있다. MP4는 기 설정에 따른 일정 단위 시간(3sec, 5sec 등)만큼의 프레임을 모아 파일/네트워크/API를 통해 전달하고, TS는 하나의 프레임 타임에 대한 작업이 완료되면 곧바로 파일/네트워크/API를 통해 전달한다. 또한 멀티플렉서부(73)는 제1 해상도를 가지는 제1 비디오 스트림, 제1 해상도보다 낮은 해상도인 제2 해상도를 가지는 제2 비디오 스트림 및 제2 해상도보다 낮은 해상도인 제3 해상도를 가지는 제3 비디오 스트림을 생성한다. 이를 위해 멀티플렉서부(73)는 제1 비디오 스트림, 제2 비디오 스트림 및 제3 비디오 스트림에 해당하는 각각의 멀티플렉서(91, 93, 95)를 포함한다. 여기서 제1 해상도는 고품질의 고해상도를 의미하고, 제2 해상도는 중품질의 일반 해상도를 의미하며, 제3 해상도는 저품질의 저해상도를 의미할 수 있다.The
도 6은 본 발명의 실시예에 따른 분할 영상 트랜스코딩 방법을 설명하기 위한 순서도이다.6 is a flowchart illustrating a split image transcoding method according to an embodiment of the present invention.
도 1 및 도 6을 참조하면, 분할 영상 트랜스코딩 방법은 원본 비디오 스트림을 공간 분할하고, 분할된 타일을 복수의 GPU를 통해 병렬구조로 트랜스코딩한다. 이때 분할 영상 트랜스코딩 방법은 각 GPU의 평균 작업 완료 시간 및 할당된 작업 큐의 크기에 따라 복수의 GPU에 작업을 할당함으로써, 빠른 연산을 수행하여 실시간으로 고품질의 비디오 스트림을 제공할 수 있다.Referring to FIGS. 1 and 6, in a split image transcoding method, an original video stream is spatially divided and the divided tiles are transcoded in a parallel structure through a plurality of GPUs. In this case, the split image transcoding method allocates jobs to a plurality of GPUs according to the average job completion time of each GPU and the size of the allocated job queue, thereby performing a fast operation to provide a high-quality video stream in real time.
S110단계에서, 분할 영상 트랜스코딩 장치(100)는 원본 비디오 스트림을 입력받는다. 분할 영상 트랜스코딩 장치(100)는 파일, 네트워크, API(Application Program Interface) 등 다양한 방식으로 원본 비디오 스트림을 입력받는다. 여기서 원본 비디오 스트림은 4K 스테레오(stereo)이면서 4096×4096px 이상인 고화질 영상 스트림일 수 있으며, H.264 포맷, HEVC(High Efficiency Video Coding) 포맷, YUV420 로우 프레임(raw frame) 포맷, RGB 로우 프레임 포맷 등을 지원할 수 있다.In step S110, the split
S130단계에서, 분할 영상 트랜스코딩 장치(100)는 입력된 원본 비디오 스트림을 공간 분할하여 타일을 생성한다. 분할 영상 트랜스코딩 장치(100)는 원본 비디오 스트림을 기 설정된 개수의 타일로 분할하여 타일을 생성한다. 분할 영상 트랜스코딩 장치(100)는 가로와 세로의 개수가 짝수가 되도록 원본 비디오 스트림을 타일로 분할하고, 각 타일의 세로와 가로의 픽셀 수가 128배수로 분할할 수 있다. 이때 분할 영상 트랜스코딩 장치(100)는 타일 중 하단 마지막 가로의 타일과 우측 마지막 세로의 타일의 경우, 픽셀 수의 제한을 두지 않을 수 있다.In step S130, the divided
S150단계에서, 분할 영상 트랜스코딩 장치(100)는 생성된 타일의 프레임을 복수의 GPU를 이용하여 병렬구조로 인코딩한다. 분할 영상 트랜스코딩 장치(100)는 생성된 타일의 프레임과 관련된 작업량을 산출하고, 산출된 작업량에 따라 복수의 GPU에 작업을 할당하여 인코딩을 수행한다. 이를 통해 분할 영상 트랜스코딩 장치(100)는 GPU의 작업 진행 상태에 맞도록 최적화된 인코딩을 병렬구조로 수행할 수 있다.In step S150, the split
S170단계에서, 분할 영상 트랜스코딩 장치(100)는 인코딩된 프레임을 재배열한다. 분할 영상 트랜스코딩 장치(100)는 인코딩된 비디오 스트림을 동기화하고, 동기화된 비디오 스트림을 재배열할 수 있다. 이때 분할 영상 트랜스 코딩 장치(100)는 제1 해상도를 가지는 제1 비디오 스트림, 제1 해상도보다 낮은 해상도인 제2 해상도를 가지는 제2 비디오 스트림 및 제2 해상도보다 낮은 해상도인 제3 해상도를 가지는 제3 비디오 스트림을 생성한다. 여기서 제1 해상도는 고품질의 고해상도를 의미하고, 제2 해상도는 중품질의 일반 해상도를 의미하며, 제3 해상도는 저품질의 저해상도를 의미할 수 있다.In step S170, the split
이상에서 본 발명의 바람직한 실시예에 대해 도시하고 설명하였으나, 본 발명은 상술한 특정의 바람직한 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 실시가 가능한 것은 물론이고, 그와 같은 변경은 청구범위 기재의 범위 내에 있게 된다.Although the preferred embodiments of the present invention have been illustrated and described above, the present invention is not limited to the specific preferred embodiments described above, and without departing from the gist of the present invention claimed in the claims, in the technical field to which the present invention pertains. Anyone of ordinary skill in the art can implement various modifications, as well as such modifications will be within the scope of the claims.
10: 입력부
30: 제어부
31: 영상 공간 분할부
33: GPU 작업 관리부
35: GPU부
37: 비디오 후처리부
51: 프레임 버퍼
53: 작업 큐 로더
55: 로드 밸런서
71: 비디오 동기화부
73: 멀티플렉서부
91: 제1 멀티플렉서
93: 제2 멀티플렉서
95: 제3 멀리플렉서
100: 분할 영상 트랜스코딩 장치10: input
30: control unit
31: image space division unit
33: GPU task management unit
35: GPU unit
37: video post-processing unit
51: frame buffer
53: work queue loader
55: load balancer
71: video synchronization unit
73: multiplexer unit
91: first multiplexer
93: second multiplexer
95: third mulplexer
100: segmented video transcoding device
Claims (10)
상기 입력된 원본 비디오 스트림을 공간 분할하여 타일을 생성하고, 상기 생성된 타일의 프레임(Tiled frame)을 복수의 GPU(Graphics Processing Unit)를 이용하여 병렬구조로 인코딩하고, 상기 인코딩된 프레임을 재배열하여 제1 해상도를 가지는 제1 비디오 스트림, 제1 해상도보다 낮은 해상도인 제2 해상도를 가지는 제2 비디오 스트림 및 제2 해상도보다 낮은 해상도인 제3 해상도를 가지는 제3 비디오 스트림을 생성하는 제어부;
를 포함하는 실시간 분할 영상 트랜스코딩 장치.An input unit receiving an original video stream; And
A tile is generated by spatially dividing the input original video stream, the tiled frame is encoded in a parallel structure using a plurality of GPUs (Graphics Processing Units), and the encoded frame is rearranged. Thus, a controller for generating a first video stream having a first resolution, a second video stream having a second resolution lower than the first resolution, and a third video stream having a third resolution lower than the second resolution;
Real-time segmented image transcoding apparatus comprising a.
상기 제어부는,
상기 원본 비디오 스트림을 기 설정된 개수의 타일로 분할하여 타일을 생성하는 영상 공간 분할부;
상기 생성된 타일의 프레임과 관련된 작업량을 산출하고, 상기 산출된 작업량에 따라 상기 복수의 GPU에 작업을 할당하는 GPU 작업 관리부;
상기 복수의 GPU를 병렬구조로 구비하고, 각 GPU마다 할당된 작업에 대한 비디오 스트림의 인코딩을 수행하는 GPU부; 및
상기 인코딩된 비디오 스트림을 동기화하고, 상기 동기화된 비디오 스트림을 재배열하여 상기 제1 비디오 스트림, 상기 제2 비디오 스트림 및 상기 제3 비디오 스트림을 생성하는 비디오 후처리부;
를 포함하는 것을 특징으로 하는 실시간 분할 영상 트랜스코딩 장치.The method of claim 1,
The control unit,
An image space dividing unit generating tiles by dividing the original video stream into a preset number of tiles;
A GPU task management unit that calculates a work amount related to the frame of the generated tile and allocates work to the plurality of GPUs according to the calculated work amount;
A GPU unit having the plurality of GPUs in a parallel structure and performing encoding of a video stream for a task allocated to each GPU; And
A video post-processing unit synchronizing the encoded video stream and rearranging the synchronized video stream to generate the first video stream, the second video stream, and the third video stream;
Real-time segmented image transcoding apparatus comprising a.
상기 영상 공간 분할부는,
상기 타일의 가로와 세로의 픽셀 수가 128배수로 분할하는 것을 특징으로 하는 실시간 분할 영상 트랜스코딩 장치.The method of claim 2,
The image space division unit,
The real-time segmented image transcoding apparatus, characterized in that the number of horizontal and vertical pixels of the tile is divided by a multiple of 128.
상기 영상 공간 분할부는,
상기 타일 중 하단 마지막 가로의 타일과 우측 마지막 세로의 타일의 경우, 픽셀 수에 제한을 두지 않는 것을 특징으로 하는 실시간 분할 영상 트랜스코딩 장치.The method of claim 3,
The image space division unit,
In the case of a bottom last horizontal tile and a right last vertical tile among the tiles, the number of pixels is not limited.
상기 GPU 작업 관리부는,
각 GPU의 평균 작업 완료 시간 및 할당된 작업 큐(queue)의 크기에 따라 상기 작업을 할당하는 것을 특징으로 하는 실시간 분할 영상 트랜스코딩 장치.The method of claim 2,
The GPU task management unit,
The real-time segmented image transcoding apparatus, characterized in that the task is allocated according to the average task completion time of each GPU and the size of the assigned task queue.
상기 GPU 작업 관리부는,
각 GPU의 작업 종류에 따른 평균 작업 시간을 기준으로 각 GPU의 작업 완료 시간을 예상하여 상기 작업을 할당하는 것을 특징으로 하는 실시간 분할 영상 트랜스코딩 장치.The method of claim 2,
The GPU task management unit,
A real-time segmented image transcoding apparatus, characterized in that the task is allocated by predicting the task completion time of each GPU based on the average task time according to the task type of each GPU.
상기 GPU 작업 관리부는,
각 작업을 GOP(Group of Pictures) 사이즈 만큼 타일의 프레임을 GPU에 순차 복사하는 것을 특징으로 하는 실시간 분할 영상 트랜스코딩 장치.The method of claim 2,
The GPU task management unit,
A real-time segmented image transcoding apparatus, characterized in that for each job, a frame of a tile as much as a GOP (Group of Pictures) size is sequentially copied to a GPU.
상기 GPU 작업 관리부는,
상기 작업과 관련된 정보를 각 GPU에 전달할 때 프레임 번호 정보를 더 포함하여 전달하는 것을 특징으로 하는 실시간 분할 영상 트랜스코딩 장치. The method of claim 2,
The GPU task management unit,
The real-time segmented image transcoding apparatus, further comprising and transmitting frame number information when transmitting the information related to the task to each GPU.
상기 비디오 후처리부는
상기 제1 비디오 스트림, 상기 제2 비디오 스트림 및 상기 제3 비디오 스트림에 해당하는 각각의 멀티플렉서를 포함하는 것을 특징으로 하는 실시간 분할 영상 트랜스코딩 장치.The method of claim 2,
The video post-processing unit
And a multiplexer corresponding to the first video stream, the second video stream, and the third video stream.
상기 분할 영상 트랜스코딩 장치가 상기 입력된 원본 비디오 스트림을 공간 분할하여 타일을 생성하는 단계;
상기 분할 영상 트랜스코딩 장치가 상기 생성된 타일의 프레임을 복수의 GPU를 이용하여 병렬구조로 인코딩하는 단계; 및
상기 분할 영상 트랜스코딩 장치가 상기 인코딩된 프레임을 재배열하여 제1 해상도를 가지는 제1 비디오 스트림, 제1 해상도보다 낮은 해상도인 제2 해상도를 가지는 제2 비디오 스트림 및 제2 해상도보다 낮은 해상도인 제3 해상도를 가지는 제3 비디오 스트림을 생성하는 단계;
를 포함하는 실시간 타일 트랜스코딩 방법.
Receiving, by a split image transcoding apparatus, an original video stream;
Generating a tile by spatially dividing the input original video stream by the divided image transcoding apparatus;
Encoding, by the divided image transcoding apparatus, the frame of the generated tile in a parallel structure using a plurality of GPUs; And
The split image transcoding apparatus rearranges the encoded frames to provide a first video stream having a first resolution, a second video stream having a second resolution lower than the first resolution, and a second video stream having a lower resolution than the second Generating a third video stream having 3 resolutions;
Real-time tile transcoding method comprising a.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190041176A KR102316495B1 (en) | 2019-04-09 | 2019-04-09 | Real-time segmented video transcoding device and method |
PCT/KR2019/005776 WO2020209437A1 (en) | 2019-04-09 | 2019-05-14 | Apparatus and method for transcoding segmented images in real time |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190041176A KR102316495B1 (en) | 2019-04-09 | 2019-04-09 | Real-time segmented video transcoding device and method |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200119435A true KR20200119435A (en) | 2020-10-20 |
KR102316495B1 KR102316495B1 (en) | 2021-10-25 |
Family
ID=72750743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190041176A KR102316495B1 (en) | 2019-04-09 | 2019-04-09 | Real-time segmented video transcoding device and method |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR102316495B1 (en) |
WO (1) | WO2020209437A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220064890A (en) * | 2020-11-12 | 2022-05-19 | 주식회사 네트워크디파인즈 | Method and apparatus for editing adaptive media |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140039069A (en) * | 2009-03-06 | 2014-03-31 | 알까뗄 루슨트 | Real-time multi-media streaming bandwidth management |
KR20150033194A (en) * | 2013-09-23 | 2015-04-01 | 삼성전자주식회사 | Parallel Encoding/Decoding Method and Apparatus |
KR20150083012A (en) * | 2014-01-06 | 2015-07-16 | 에스케이텔레콤 주식회사 | Method and Apparatus for Generating Single Bit Stream from Multiple Video Stream |
KR101923619B1 (en) | 2011-12-14 | 2018-11-30 | 한국전자통신연구원 | Method for Generating 3D Surface Reconstruction Model Using Multiple GPUs and Apparatus of Enabling the Method |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9338467B1 (en) * | 2010-07-19 | 2016-05-10 | Google Inc. | Parallel video transcoding |
KR101166085B1 (en) * | 2010-12-17 | 2012-07-23 | 주식회사 픽스트리 | diversification transcoding method for video file |
HK1205426A2 (en) * | 2015-09-24 | 2015-12-11 | Tfi Digital Media Ltd | Method for distributed video transcoding |
KR101925681B1 (en) * | 2016-09-28 | 2018-12-05 | 가천대학교 산학협력단 | Parallel video processing using multicore system |
KR20180067781A (en) * | 2016-12-12 | 2018-06-21 | 이에이트 주식회사 | High resolution upscaling method of high quality image using parallel processing of divisional images |
-
2019
- 2019-04-09 KR KR1020190041176A patent/KR102316495B1/en active IP Right Grant
- 2019-05-14 WO PCT/KR2019/005776 patent/WO2020209437A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140039069A (en) * | 2009-03-06 | 2014-03-31 | 알까뗄 루슨트 | Real-time multi-media streaming bandwidth management |
KR101923619B1 (en) | 2011-12-14 | 2018-11-30 | 한국전자통신연구원 | Method for Generating 3D Surface Reconstruction Model Using Multiple GPUs and Apparatus of Enabling the Method |
KR20150033194A (en) * | 2013-09-23 | 2015-04-01 | 삼성전자주식회사 | Parallel Encoding/Decoding Method and Apparatus |
KR20150083012A (en) * | 2014-01-06 | 2015-07-16 | 에스케이텔레콤 주식회사 | Method and Apparatus for Generating Single Bit Stream from Multiple Video Stream |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220064890A (en) * | 2020-11-12 | 2022-05-19 | 주식회사 네트워크디파인즈 | Method and apparatus for editing adaptive media |
Also Published As
Publication number | Publication date |
---|---|
KR102316495B1 (en) | 2021-10-25 |
WO2020209437A1 (en) | 2020-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9741316B2 (en) | Method and system for displaying pixels on display devices | |
KR101718897B1 (en) | Method and apparatus for video decoding, method and apparatus for video encoding | |
US8375301B2 (en) | Network displays and method of their operation | |
KR101994599B1 (en) | Method and apparatus for controlling transmission of compressed picture according to transmission synchronization events | |
CN104216671B (en) | Method for realizing synchronous cooperated display on multiple sets of spliced display screens | |
US8831108B2 (en) | Low latency rate control system and method | |
KR102362513B1 (en) | Server and method for generating time slice video, and user device | |
KR101668858B1 (en) | Method for transmitting multi-channel video stream, and surveillance system using the same method | |
US20170201757A1 (en) | Video data encoding and decoding | |
KR20150029461A (en) | Method of synchronizing tiled image in a streaming service providing system of panoramic image | |
KR102316495B1 (en) | Real-time segmented video transcoding device and method | |
KR20180097904A (en) | High speed video editing method on cloud platform and apparatus thereof | |
GB2526148A (en) | Seamless display of a video sequence with increased frame rate | |
JP5654414B2 (en) | Video encoding apparatus, video encoding method, and program | |
JP5478346B2 (en) | Format conversion apparatus, video distribution apparatus, multiplexing apparatus, format conversion method, video distribution method, and program | |
KR101739767B1 (en) | Method and appartus for rate control for parallel video encoder | |
JP5441734B2 (en) | Image encoding device | |
US20240320946A1 (en) | Asymmetric and progressive 360-degree video zone-based streaming | |
GB2608575A (en) | Encoding image data for transmission to a display device | |
EP4391523A1 (en) | Video surveillance system having a load distribution module | |
CN105302905B (en) | A kind of information storage means and device | |
KR20160134139A (en) | Cloud network based video data ingesting apparatus and method therefor | |
KR20140081932A (en) | Image encoding method and apparatus through dynamic partitioning | |
JP2015122584A (en) | Image processing device and control method thereof | |
Olsson et al. | A modular cross-platform GPU-based approach for flexible 3D video playback |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |