KR101710011B1 - Image data transmission and reception method and apparatus - Google Patents
Image data transmission and reception method and apparatus Download PDFInfo
- Publication number
- KR101710011B1 KR101710011B1 KR1020150076056A KR20150076056A KR101710011B1 KR 101710011 B1 KR101710011 B1 KR 101710011B1 KR 1020150076056 A KR1020150076056 A KR 1020150076056A KR 20150076056 A KR20150076056 A KR 20150076056A KR 101710011 B1 KR101710011 B1 KR 101710011B1
- Authority
- KR
- South Korea
- Prior art keywords
- divided
- data
- frame
- unit
- image data
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 80
- 230000005540 biological transmission Effects 0.000 title claims description 57
- 238000012545 processing Methods 0.000 claims description 24
- 238000012546 transfer Methods 0.000 claims description 15
- 238000010586 diagram Methods 0.000 description 20
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000012508 change request Methods 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/23412—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs for generating or manipulating the scene composition of objects, e.g. MPEG-4 objects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/236—Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
본 발명은 영상 데이터를 전송하는 방법을 개시하고 있다. 상기 방법은 영상 데이터를 입력받는 단계, 상기 입력받은 영상 데이터의 하나의 프레임을 복수 개로 분할하는 단계, 복수 개로 분할된 각각의 분할 프레임을 독립적으로 인코딩하는 단계 및 분할 프레임 단위로 인코딩이 완료되는 대로 인코딩된 영상 데이터를 수신측으로 전송하는 단계를 포함한다.The present invention discloses a method for transmitting image data. The method includes the steps of receiving image data, dividing one frame of the received image data into a plurality of frames, independently encoding each of the plurality of divided frames, and encoding And transmitting the encoded image data to the receiving side.
Description
본 발명은 영상 데이터를 전송 및 수신하는 방법 및 장치에 관한 것으로, 보다 상세하게는 영상 전송 지연속도를 줄이기 위한 영상 데이터 전송 및 수신 방법 및 장치에 관한 것이다.The present invention relates to a method and apparatus for transmitting and receiving image data, and more particularly, to a method and apparatus for transmitting and receiving image data for reducing a delay in image transmission.
일반적으로 영상 데이터는 데이터의 크기가 크기에 압축 부호화하는 과정이 요구되고, 압축 부호화된 데이터를 이더넷(ethernet)과 같은 네트워크를 이용하여 전송하는 과정이 필요하며 이를 효율적으로 하기 위한 다양한 방법들이 개발되어 왔다. 특히, 영상 압축 부호화는 MPEG(Moving Picture Expert Group)에서 표준화한 여러 기술들(예컨대, H.264/AVC, SVC(Scalable Video Coding), HEVC(High Efficiency Video Coding 등)이 존재하며 이러한 기술은 대용량의 Full HD(High Definition) 멀디미디어 데이터를 전송하는데 사용된다. Generally, video data is required to be compression-encoded in size of data, and it is necessary to transmit compression-encoded data using a network such as ethernet. Various methods have been developed to efficiently perform this process come. Particularly, there are various techniques standardized by MPEG (Moving Picture Expert Group) (for example, H.264 / AVC, Scalable Video Coding (SVC), and High Efficiency Video Coding (HEVC) Is used to transfer Full HD (High Definition) multimedia data.
특히 고해상도의 대용량 데이터를 네트워크 상에서 전송하는 초고속 통신 기술은 데이터를 전솔할 때 실시간 전송이 되지 않는 문제를 해결하기 위해 대용량 영상, 음향 전송 속도를 향상을 위한 방향으로 개발되어 왔다. 이를 위해 디지털 신호 처리(DSP: Digital Signal Processing)를 통해 인코딩된 영상을 사용자 영역과 리눅스 커널(Linux Kernel)을 통해 네트워크로 스트리밍 전송이 가능하도록 개발되어 왔다. In particular, high-speed communication technology for transmitting high-resolution large-capacity data over a network has been developed in order to improve the transmission speed of a large-capacity image and sound, in order to solve the problem that data can not be transmitted in real time. For this purpose, it has been developed to enable streaming of encoded video through Digital Signal Processing (DSP) to the network through the user area and the Linux kernel.
통상적으로 모든 시스템들은 사용자 명령을 해독하여 디바이스로 전달하는 운영체계(OS: Operating System)를 포함하며, 이러한 운영체계의 핵심적인 동작은 커널 영역(Kernel area)에서 이루어진다. 다만, 통상적인 커널 영역에서의 처리 시스템은 사용자 모드에서 멀티미디어 어플리케이션에 의해 멀티미디어 데이터와 함께 만들어진 RTP(Real-Time Protocol) 헤더는 커널 모드에서 동작하는 일련의 처리모듈들에 의해 디바이스에게 전달된다. 예컨대, UDP(User Datagram Protocol)를 거쳐 IP(Internet Protocol), ETH(Ethernet) 및 ETHDRV(Ethernet Driver)와 같은 네트워크 인터페이스로 전달된다. 따라서, RTP 데이터의 생성과 하부 계층으로의 전송을 무수히 반복하는 멀티미디어 데이터의 경우 사용자 영역의 버퍼와 커널영역의 버퍼 사이에 과도한 데이터 복사 및 교환이 발생하는 문제점이 있다. Typically, all systems include an operating system (OS) that decrypts user commands and passes them to the device. The core operation of such an operating system is in the kernel area. However, a processing system in a normal kernel area is a real-time protocol (RTP) header created with a multimedia application by a multimedia application in a user mode, and is delivered to a device by a series of processing modules operating in a kernel mode. For example, a network interface such as an IP (Internet Protocol), an Ethernet (ETH), and an Ethernet driver (ETHDRV) via a User Datagram Protocol (UDP). Therefore, in the case of multimedia data which is repeatedly generated for RTP data generation and transmission to the lower layer, excessive data copying and exchange occur between the buffer of the user area and the buffer of the kernel area.
통상적으로 먼저, 사용자 모드에서 소정의 처리 명령에 의해 데이터 처리를 요청하면 커널 모드에서는 데이터 저장영역에서 처리 대상 데이터를 검출한 후, 커널 버퍼에 저장하고 소정 단위로 구성된 그 처리 대상 데이터를 단위별로 사용자 모드측으로 전송하고, 사용자 모드로부터 처리 결과 데이터를 수신하는 과정을 거쳐야 한다. 이때, 사용자 모드는 위 과정에서 전송되는 데이터를 사용자 영역 버퍼에 저장하고 원하는 프로세스를 수행한 후, 커널 모드 측으로 전송하고 커널모드는 데이터를 받아 원격 디바이스로 전송한다. 이러한 과정은 모드 처리 대상 데이터가 처리 완료될 때까지 반복하기 때문에, 커널모드와 사용자 모드간 데이터 전송이 반복됨에 따라 데이터 복사 및 문맥 교환 과정도 반복되야 하고, 멀티미디어 데이터 등과 같은 스트리밍 데이터 전송시 많은 오버헤드가 발생하게 된다. Generally, first, when requesting data processing by a predetermined processing command in the user mode, the processing target data is detected in the data storage area in the kernel mode, then stored in the kernel buffer, and the processing target data, Mode, and the process result data is received from the user mode. In this case, the user mode stores the data transmitted in the above process in the user area buffer, performs a desired process, and transmits the data to the kernel mode side. In the kernel mode, the data is received and transmitted to the remote device. This process is repeated until the data to be processed is processed. Therefore, the data copying and the context exchange process must be repeated as the data transfer between the kernel mode and the user mode is repeated. Also, when transmitting streaming data such as multimedia data, Head is generated.
도 1은 종래 기술에 따라 영상 데이터의 입력부터 데이터 수신측에서 영상을 출력할 때까지의 과정을 설명하기 위한 개념도이다.FIG. 1 is a conceptual diagram illustrating a process from input of image data to output of an image from a data receiving side according to the related art.
도 1을 참조하면, 로컬 디바이스(110)가 원격 디바이스(120)로 입력되는 모니터 영상을 전송하기 위해서 먼저 모니터 영상을 HDMI(High Definition Multimedia Interface)를 통해 입력받고, 이를 로컬 디바이스(110) 내의 내부 메모리에 복사 저장하며, 내부 메모리의 영상 데이터를 인코당하여 압축 영상을 생성한다. 그리고는, 이를 이더넷을 통해 원격 디바이스(120)로 전송할 수 있다. 원격 디아비스(120)는 압축 영상을 수신하여 이를 디코딩하여 원격 디바이스(120)의 내부 메모리에 복사 및 저장하고 이를 HDMI를 통해 연결된 출력 디바이스(예컨대, 모니터)에 출력한다. 1, in order to transmit a monitor image input to the
이때, 로컬 디바이스(110)에서는 비디오 입력 시간(t-VI : Video Input time), 인코딩 시간(t-EN l: Video Encoding time) 및 데이터 전송 시간(t-EX : Ethernet Transmission time)이 소요되고, 원격 디바이스(120)에서의 디코딩 시간(t-DE : Video Decoding time) 및 비디오 출력 시간(t-VO : Video Output time)이 소요되고, 대용량 멀티미디어 데이터의 경우 로컬 디바이스(110) 및 원격 디바이스(120)에서의 소요 시간은 더 오래 걸리게 된다. 특히, 프레임 단위로 이전 과정이 완료되야 다음 동작이 순차적으로 이루어지기 때문에, 상당히 많은 시간이 소요되며, 이때, 사용자 영역과 커널 영역의 호출 시간 등을 고려하면 영상 데이터 전송 효율성이 떨어지는 문제점이 있다.At this time, the
상술한 문제점을 해결하기 위한 본 발명의 목적은 영상 데이터를 입력받아 하나의 프레임을 분할하여 분할 프레임 단위로 데이터 입력, 인코딩 및 전송 과정이 독립적으로 수행되어 데이터 전송 효율을 제고시킬 수 있는 영상 데이터 전송 및 수신 방법 및 장치를 제공하는 것이다. According to an aspect of the present invention, there is provided an image data transmission method, comprising: inputting image data and dividing a frame into independent frames for data input, encoding and transmission in units of divided frames; And a receiving method and apparatus.
또한 본 발명의 다른 목적은 사용자 영역과 커널 영역의 호출 및 정보 교환시간을 최소화하여 응용 레벨에서 드라비어 액세스시 발생하는 오버헤드를 감소시킬 수 있는 통합 드라이버를 제공하는 것이다. It is another object of the present invention to provide an integrated driver capable of minimizing call and information exchange time between a user area and a kernel area, thereby reducing an overhead incurred in accessing a Drabee at an application level.
상기한 목적을 달성하기 위한 본 발명의 영상 데이터를 전송하는 방법은 영상 데이터를 입력받는 단계, 상기 입력받은 영상 데이터의 하나의 프레임을 복수 개로 분할하는 단계, 복수 개로 분할된 각각의 분할 프레임을 독립적으로 인코딩하는 단계 및 분할 프레임 단위로 인코딩이 완료되는 대로 인코딩된 영상 데이터를 수신측으로 전송하는 단계를 포함할 수 있다.According to an aspect of the present invention, there is provided a method of transmitting image data, the method including receiving image data, dividing one frame of the received image data into a plurality of divided frames, And transmitting the encoded image data to the receiver upon completion of encoding in units of divided frames.
상기 복수 개로 분할된 각각의 분할 프레임을 독립적으로 인코딩하는 단계는 상기 분할 프레임이 모두 입력되는 시점에 상기 분할 프레임에 대한 인코딩을 시작하는 단계를 포함할 수 있다.The step of independently encoding each of the plurality of divided frames may include a step of starting encoding of the divided frame at a time point when all of the divided frames are input.
상기 분할 프레임은 소정 분할 단위로 동일한 크기로 분할될 수 있다.The divided frames may be divided into equal sizes in a predetermined division unit.
상기 영상 데이터 전송 방법은 상기 분할 프레임을 인코딩하는 중에, 다음 번에 인코딩되어야 할 분할 프레임을 버퍼에 입력하는 단계를 더 포함할 수 있다.The image data transmission method may further include inputting a divided frame to be encoded next into the buffer while encoding the divided frame.
상기 입력되는 영상 데이터는 메모리에 복사되지 않고 DMA(Direct Memory Access) 방식을 통해 액세스될 수 있다.The input image data may be accessed through a direct memory access (DMA) method without being copied to a memory.
사용자 영역과 커널 영역으로 나뉘어서 영상 데이터 입력부터 인코딩된 영상 데이터의 전송까지의 영상 관련 이벤트를 처리하되, 상기 영상 데이터 전송 방법은 상기 사용자 영역의 제어 스레드(control thread)가 상기 커널 영역의 각 드라이버에 대한 제어 설정을 초기에 설정하는 단계 및 상기 커널 영역이 상기 제어쓰레드의 설정을 기반으로 상기 영상 관련 이벤트를 상기 사용자 영역으로의 호출 없이 처리하는 단계를 더 포함할 수 있다.Related event from a video data input to a transmission of encoded video data by dividing the video data into a user area and a kernel area, wherein the control thread of the user area is connected to each driver of the kernel area And the kernel region may process the image related event without a call to the user area based on the setting of the control thread.
상기 커널 영역은 상기 영상 관련 이벤트를 인터럽트(interrupt)로 처리할 수 있다.The kernel area may process the image related event as an interrupt.
상기 제어쓰레드가 비디오 데이터 입력 드라이버로 전송하는 비디오 입력 설정 정보는 영상의 해상도 정보, 리사이즈(resize) 정보 및 프레임의 분할되는 단위 정보인 분할 단위 정보를 포함할 수 있다.The video input setting information transmitted by the control thread to the video data input driver may include resolution information of the image, resize information, and divided unit information, which is unit information of the frame.
상기 제어쓰레드가 인코더 드라이버로 전송하는 인코딩 설정 정보는 GOP(Group of Picture) 정보, 비트레이트 정보 및 품질(quality) 정보를 포함할 수 있다.The encoding setting information transmitted by the control thread to the encoder driver may include GOP (Group of Picture) information, bit rate information, and quality information.
상기 제어쓰레드가 이더넷 드라이버로의 데이터 전송 설정 정보는 IP 포트 정보 및 MAC 어드레스 정보를 포함할 수 있다.The data transmission setting information of the control thread to the Ethernet driver may include IP port information and MAC address information.
상기 인코딩된 영상 데이터는 페이로드로 하여 구성되는 패킷의 헤더에 포함되는 RTP(Real-Time Protocol) 정보는 상기 커널 영역의 통합 드라이버의 수도 스택(Pseudo Stack)을 통해 생성될 수 있다.The RTP (Real-Time Protocol) information included in the header of the packet composed of the encoded video data may be generated through a pseudo stack of the integrated driver of the kernel area.
상기한 목적을 달성하기 위한 본 발명의 영상 데이터를 전송하는 장치는, 영상 데이터를 입력받고 상기 입력받은 영상 데이터의 하나의 프레임을 복수 개로 분할하는 영상 입력부, 복수 개로 분할된 각각의 분할 프레임을 독립적으로 인코딩하는 인코딩부 및 분할 프레임 단위로 인코딩이 완료되는 대로 인코딩된 영상 데이터를 수신측으로 전송하는 데이터 전송부를 포함할 수 있다.According to an aspect of the present invention, there is provided an apparatus for transmitting image data, the apparatus including: an image input unit for receiving image data and dividing one frame of the received image data into a plurality of frames; And a data transmission unit for transmitting the encoded image data to the receiver upon completion of encoding in units of divided frames.
사용자 영역과 커널 영역으로 나뉘어서 영상 데이터 입력부터 인코딩된 영상 데이터의 전송까지의 영상 관련 이벤트를 처리하되, 상기 커널 영역은 상기 커널 영역의 각 드라이버에 대한 제어 설정을 초기에 설정하는 제어 쓰레드(control thread)를 포함하고, 상기 커널 영역은 상기 영상 입력부, 상기 인코딩부 및 상기 데이터 전송부를 포함할 수 있다.Related events from the input of the image data to the transmission of the encoded image data by dividing the kernel area into a user area and a kernel area, wherein the kernel area is a control thread for initially setting control settings for each driver of the kernel area ), And the kernel region may include the image input unit, the encoding unit, and the data transfer unit.
상기 사용자 영역의 제어 스레드가 상기 영상 입력부로의 비디오 입력 설정, 상기 인코딩부로의 인코딩 설정 및 상기 데이터 전송부로의 데이터 전송 설정을 초기에 설정하고 나면, 상기 커널 영역은 상기 제어쓰레드의 설정을 기반으로 상기 사용자 영역으로의 호출 없이 상기 영상 관련 이벤트를 처리할 수 있다.After the control thread of the user area initially sets the video input setting to the video input unit, the encoding setting to the encoding unit, and the data transfer setting to the data transfer unit, the kernel area is set based on the setting of the control thread The image related event can be processed without a call to the user area.
상기한 목적을 달성하기 위한 본 발명의 영상 데이터를 수신하는 방법은 인코딩된 영상 데이터를 수신하는 단계, 상기 수신되는 영상 데이터가 분할 프레임 - 분할 프레임은 하나의 프레임을 복수 개로 분할한 프레임을 나타냄 - 단위로 수신되는 대로 독립적으로 디코딩하는 단계 및 분할 프레임 단위로 디코딩된 영상 데이터를 하나의 프레임으로 조합하여 디스플레이하는 단계를 포함할 수 있다.According to another aspect of the present invention, there is provided a method of receiving image data, the method comprising: receiving encoded image data; dividing the received image data into a plurality of divided frames; And a step of combining the decoded image data in units of one frame and displaying the combined decoded image data.
상기 분할 프레임 단위로 독립적으로 디코딩하는 단계는 상기 분할 프레임을 상기 분할 프레임이 모두 수신되는 시점에 디코딩을 시작하는 단계를 포함할 수 있다.The step of independently decoding the divided frames may include starting decoding the divided frames at a time point when all of the divided frames are received.
상기 분할 프레임은 소정 분할 단위로 동일한 크기로 분할될 수 있다.The divided frames may be divided into equal sizes in a predetermined division unit.
상기 영상 데이터 수신 방법은 상기 분할 프레임을 디코딩하는 중에, 다음 번에 디코딩되어야 할 분할 프레임을 수신하여 버퍼에 저장하는 단계를 더 포함할 수 있다.The image data receiving method may further include receiving a divided frame to be decoded next time during decoding the divided frame and storing the divided frame in a buffer.
상기 영상 데이터 수신 방법은 사용자 영역과 커널 영역으로 나뉘어서 영상 데이터 수신부터 디코딩된 데이터의 재생까지의 영상 관련 이벤트를 처리하되, 상기 커널 영역에서 상기 영상 관련 이벤트를 상기 사용자 영역 호출 없이 처리하는 단계를 더 포함할 수 있다.Wherein the image data receiving method comprises the steps of processing a video related event from the reception of video data to the reproduction of decoded data by dividing into a user area and a kernel area and processing the video related event in the kernel area without calling the user area .
상기 커널 영역은 상기 영상 관련 이벤트를 인터럽트(interrupt)로 처리할 수 있다.The kernel area may process the image related event as an interrupt.
상기 인코딩된 영상 데이터는 페이로드로 하여 구성되는 패킷의 헤더에 포함되는 RTP(Real-Time Protocol) 정보는 상기 커널 영역의 통합 드라이버의 수도 스택(Pseudo Stack)을 통해 파싱될 수 있다.RTP (Real-Time Protocol) information included in the header of the packet composed of the encoded video data may be parsed through a pseudo stack of the integrated driver of the kernel area.
상기한 목적을 달성하기 위한 본 발명의 영상 데이터를 수신하는 장치는 인코딩된 영상 데이터를 수신하는 데이터 수신부, 상기 수신되는 영상 데이터가 분할 프레임 - 분할 프레임은 하나의 프레임을 복수 개로 분할한 프레임을 나타냄 - 단위로 수신되는 대로 독립적으로 디코딩하는 디코딩부 및 분할 프레임 단위로 디코딩된 영상 데이터를 하나의 프레임으로 조합하여 디스플레이되도록 제어하는 비디오 제어부를 포함할 수 있다.According to another aspect of the present invention, there is provided an apparatus for receiving image data, the apparatus comprising: a data receiver for receiving encoded image data; and a divided frame-division frame for the received image data represents a frame obtained by dividing one frame into a plurality of frames - decoding unit that independently decodes as it is received in units of one frame and a video controller that controls to display and display the video data decoded in units of divided frames in one frame.
사용자 영역과 커널 영역으로 나뉘어서 영상 데이터 수신부터 디코딩된 데이터의 재생까지의 영상 관련 이벤트를 처리하되, 상기 커널 영역은 상기 데이터 수신부, 상기 디코딩부 및 상기 비디오 제어부를 포함할 수 있다.The kernel region may include the data receiving unit, the decoding unit, and the video control unit, the video area being divided into a user area and a kernel area to process image related events from receiving image data to reproducing decoded data.
상기 커널 영역은 상기 영상 관련 이벤트를 상기 사용자 영역 호출 없이 처리할 수 있다.The kernel area may process the image related event without calling the user area.
본 발명의 영상 데이터 전송 및 수신 방법 및 장치에 따르면, 영상 데이터가 전송측에서는 분할된 프레임 단위로 입력, 인코딩 및 전송되고, 수신측에서도 분할 프레임 단위로 수신, 디코딩 및 출력 처리되어 영상 데이터의 전송 효율을 제고시키고 처리 시간을 단축시키는 효과가 있다.According to the video data transmission and reception method and apparatus of the present invention, video data is input, encoded and transmitted on a divided frame basis on the transmission side and received, decoded and output processed on a divided frame basis on the receiving side, It has the effect of improving the processing time and shortening the processing time.
또한, 본 발명의 영상 데이터 전송 및 수신 방법 및 장치에 따르면, 사용자 영역과 커널 영역 간의 호출 및 정보 교환 횟수를 줄여 영역간 오버헤드를 감소시키고 데이터 전송 효율을 높이는 효과가 있다.In addition, according to the method and apparatus for transmitting and receiving video data of the present invention, it is possible to reduce the number of calls and information exchanges between a user area and a kernel area, thereby reducing inter-area overhead and increasing data transmission efficiency.
도 1은 종래 기술에 따라 영상 데이터의 입력부터 데이터 수신측에서 영상을 출력할 때까지의 과정을 설명하기 위한 개념도,
도 2는 본 발명의 일 실시예에 따른 영상 데이터 전송 및 수신 시스템을 설명하기 위한 개념도,
도 3a은 본 발명의 일 실시예에 있어서, 비디오 입력부, 인코딩부 및 데이터 전송부가 분할 프레임을 처리하는 과정을 시간축 상에 각각 나타낸 도면,
도 3b는 본 발명의 다른 실시예에 있어서, 비디오 입력부, 인코딩부 및 데이터 전송부가 분할 프레임을 처리하는 과정을 시간축 상에 각각 나타낸 도면,
도 4는 본 발명의 일 실시예에 따른 영상 데이터 전송 장치를 개략적으로 나타낸 블록도,
도 5는 본 발명의 일 실시예에 따른 영상 데이터 전송 장치의 사용자 영역(응용 레벨)과 커널 영역(드라이브 레벨)의 구성 및 동작을 설명하기 위한 블록도,
도 6은 커널 영역의 통합 드라이버가 사용자 영역으로부터 제어 명령을 받아 패킷을 생성하여 실시간으로 전송하는 과정을 설명하기 위한 블록도,
도 7은 본 발명의 일 실시예에 따른 영상 데이터 수신 장치를 개략적으로 나타낸 블록도,
도 8는 본 발명의 일 실시예에 따른 영상 데이터 수신 장치의 사용자 영역(응용 레벨)과 커널 영역(드라이브 레벨)의 구성 및 동작을 설명하기 위한 블록도,
도 9는 커널 영역의 통합 드라이버가 사용자 영역으로부터 제어 명령을 받아 패킷을 수신하여 실시간으로 출력하는 과정을 설명하기 위한 블록도이다.FIG. 1 is a conceptual diagram for explaining a process from inputting image data to outputting an image from a data receiving side according to the related art,
2 is a conceptual diagram for explaining an image data transmission and reception system according to an embodiment of the present invention;
FIG. 3A is a diagram illustrating a process of processing a divided frame by a video input unit, an encoding unit, and a data transmitting unit, respectively, on a time axis, according to an embodiment of the present invention;
FIG. 3B is a diagram illustrating a process of processing a divided frame by a video input unit, an encoding unit, and a data transmission unit on a time axis, according to another embodiment of the present invention;
4 is a block diagram schematically illustrating an image data transmission apparatus according to an embodiment of the present invention.
FIG. 5 is a block diagram for explaining the configuration and operation of a user area (application level) and a kernel area (drive level) of the image data transmission device according to an embodiment of the present invention;
6 is a block diagram for explaining a process in which a unified driver in a kernel area receives a control command from a user area to generate a packet and transmits the packet in real time;
7 is a block diagram schematically showing an image data receiving apparatus according to an embodiment of the present invention.
8 is a block diagram for explaining the configuration and operation of a user area (application level) and a kernel area (drive level) of an image data receiving apparatus according to an embodiment of the present invention;
9 is a block diagram for explaining a process of receiving a control command from a user area and receiving a packet and outputting the packet in real time.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다.While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.It is to be understood, however, that the invention is not to be limited to the specific embodiments, but includes all modifications, equivalents, and alternatives falling within the spirit and scope of the invention.
제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.The terms first, second, etc. may be used to describe various components, but the components should not be limited by the terms. The terms are used only for the purpose of distinguishing one component from another. For example, without departing from the scope of the present invention, the first component may be referred to as a second component, and similarly, the second component may also be referred to as a first component. And / or < / RTI > includes any combination of a plurality of related listed items or any of a plurality of related listed items.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, . On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used in this application is used only to describe a specific embodiment and is not intended to limit the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. In the present application, the terms "comprises" or "having" and the like are used to specify that there is a feature, a number, a step, an operation, an element, a component or a combination thereof described in the specification, But do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or combinations thereof.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in commonly used dictionaries should be interpreted as having a meaning consistent with the meaning in the context of the relevant art and are to be interpreted in an ideal or overly formal sense unless explicitly defined in the present application Do not.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. In order to facilitate the understanding of the present invention, the same reference numerals are used for the same constituent elements in the drawings and redundant explanations for the same constituent elements are omitted.
영상 데이터의 전송 및 수신 시스템Video data transmission and reception system
도 2는 본 발명의 일 실시예에 따른 영상 데이터 전송 및 수신 시스템을 설명하기 위한 개념도이다. 도 2에 도시된 바와 같이, 본 발명의 일 실시예에 따른 영상 데이터 전송 및 수신 시스템은 로컬 디바이스(210) 및 원격 디바이스(220)를 포함할 수 있다.2 is a conceptual diagram for explaining an image data transmission and reception system according to an embodiment of the present invention. 2, the system for transmitting and receiving image data according to an exemplary embodiment of the present invention may include a
도 2를 참조하면, 로컬 디바이스(210)는 원격 디바이스(220)로 압축된(예컨대, 인코딩된) 영상을 전송할 수 있다. 로컬 디바이스(210)는 영상 데이터를 HDMI등의 입력 포트를 통해 외부로부터 입력받을 수 있다. 로컬 디바이스(210)는 영상 데이터의 인코딩을 수행하는 인코더(인코딩부로 불릴 수 있음)를 포함할 수 있다. 또한, 네트워크를 통해 데이터를 전송하는 데이터 전송부(예컨대, 이더넷 MAC(Media Access Control) 모듈을 포함할 수 있음)를 포함할 수 있다. 데이터 전송부는 유무선 네트워크를 통해 인코딩된 영상 데이터를 전송할 수 있다. 원격 디바이스(220)는 로컬 디아비스(210)로부터 인코딩된 영상 데이터를 수신하여 출력 포트와 연결된 디스플레이 장치(예컨대, 모니터)에 전송된 영상을 디스플레이하도록 제어할 수 있다. 원격 디바이스(220)는 영상 데이터를 수신하는 데이터 수신부, 디코더, 영상 데이터의 디스플레이를 제어하는 비디오 제어부를 포함할 수 있다. 로컬 디바이스(210)와 원격 디바이스(220)는 반드시 별도의 외부 영상 제공 수단 및 외부 영상 출력 수단을 구비해야만 하는 것은 아니고, 내부에 영상 제공 수단 및 영상 출력 수단을 구비하여 동작할 수 있다. 2, the
본 발명의 일 실시예에 따르면, 로컬 디바이스(210)는 모니터 영상을 포트를 통해 입력받을 수 있다. 이때, 입력되는 영상을 내부 메모리(예컨대, 버퍼일 수 있음)에 액세스할 때, 하나의 프레임 단위가 아닌 분할 프레임 단위로 복수 개로 분할하여 액세스할 수 있다. 로컬 디바이스(210)는 소정 분할 프레임 단위를 설정하여 설정된 분할 프레임 단위로 영상 프레임을 쪼갠 후, 내부 메모리에 액세스하여 저장할 수 있다. 분할 프레임은 n 등분된 프레임으로 설정될 수 있다. 이때, n은 2 이상의 자연수로 본 실시예에서는 4등분된 분할 프레임을 기준으로 설명하고자 한다. 다만, 반드시 이에 국한되는 것은 아니고, 반드시 등분될 필요도 없다. According to an exemplary embodiment of the present invention, the
로컬 디바이스(210)는 분할 프레임 단위로 프레임을 분할하고 나서, 분할 프레임을 분할 프레임 단위로 인코딩한다. 즉, 하나의 프레임 데이터를 전부 입력받고 나서 인코딩을 시작하는 것이 아니라, 분할 프레임 데이터가 전부 입력되는 시점에 인코딩을 시작할 수 있다. 인코딩을 가장 상단 주사선부터 시작하여 분할 프레임의 가장 하단 주사선에서 완료되는 방식으로 수행될 수 있다. 또한, 분할 프레임의 인코딩이 완료되는 시점에 바로 압축된 영상을 원격 디바이스(220)로 전송할 수 있다. 이를 통해 프레임 단위로 입력받고 입력이 완료되면 인코딩이 수행되며, 프레임 단위 인코딩이 완료되야 영상을 전송하던 시간과 비교할 때, 분할 프레임 단위로 인코딩을 수행하면서 다음 분할 프레임에 해당하는 데이터를 입력받고 분할 프레임 단위로 인코딩되는 즉시, 데이터를 내보낼 수 있어, 영상 입력 시간(t-VI), 인코딩 시간(t-EN) 및 데이터 전송 시간(t-EX)을 1/4로 줄일 수 있다. The
원격 디바이스(220)도 수신되는 압축 영상을 원격 디바이스(220)에서 설정한 분할 프레임 단위로 분할할 수 있다. 이는 약속에 의해 인코더와 동일하게 설정할 수도 있으나, 원격 디바이스(220) 자체적인 분할 단위 설정 또한 가능하다. 원격 디바이스(220)의 분할 프레임도 하나의 프레임을 4등분한 프레임을 사용하는 것으로 가정한다. 원격 디바이스(220)는 4등분된 분할 프레임 단위로 디코딩을 수행할 수 있다. 이 역시 분할 프레임 데이터가 모두 입력되는 시점부터 디코딩을 수행할 수 있다. 그리고는, 분할 프레임 단위로 디코딩이 완료되는 즉시 내부 메모리에 액세스하여 저장하고 모니터 등 디스플레이 장치를 통해 출력할 때는 하나의 프레임으로 조합하여 출력되도록 제어할 수 있다. 이를 통해, 디코딩 시간(t-DE)을 1/4로 단축시킬 수 있다. 다만, 영상의 출력 시간(t-VO)은 하나의 프레임을 완성하여 디스플레이하기 때문에, 단축되지 않을 수 있다. The
즉, 본 발명의 영상 전송 및 수신 방법에 따르면, 영상 전송 지연속도를 줄이기 위해, 하나의 프레임 영상을 소정 단위(예컨대, 1/4) 단위로 분할하여 각각을 독립적으로 처리하여 획기적으로 전송 시간을 단축시킬 수 있다. That is, according to the image transmission and reception method of the present invention, in order to reduce the image transmission delay rate, one frame image is divided into a predetermined unit (for example, 1/4) Can be shortened.
일반적인 영상 전송 시간(t-Total) = t-VI + t-EN + t-EX + t-DE + t-VO 인데, 반해, 본 발명에 따른 고속 영상 전송 시간(t-Total') = t-VI/4 + t-EN/4 + t-EX/4 + t-DE/4 + t-VO이 될 수 있고, 이는 60Hz의 프레임 레이트를 갖는 실시예에서 20ms보다 작은 값을 가질 수 있다. (T-total) = t-VI + t-EN + t-EX + t-DE + t-VO, V / 4 + t-EN / 4 + t-EX / 4 + t-DE / 4 + t-VO, which may have a value less than 20 ms in embodiments with a frame rate of 60 Hz.
도 3a은 본 발명의 일 실시예에 있어서, 비디오 입력부, 인코딩부 및 데이터 전송부가 분할 프레임을 처리하는 과정을 시간축 상에 각각 나타낸 도면이다. 여기서, 비디오 입력부는 영상 데이터를 입력받아 분할 프레임 단위로 분할하여 인코딩부로 전송할 수 있다. 인코딩부는 분할프레임이 전부 입력되는 시점부터 인코딩을 수행할 수 있으며, 분할 프레임 단위 인코딩이 완료되는 대로 데이터 전송부는 인코딩된 영상을 전송한다. FIG. 3A is a diagram illustrating, on a time axis, a process of processing a divided frame by a video input unit, an encoding unit, and a data transmitting unit, according to an embodiment of the present invention. Here, the video input unit may receive the video data, divide the video data into units of divided frames, and transmit the divided video data to the encoding unit. The encoding unit can perform encoding from a point in time when all the divided frames are inputted. When the divided frame unit encoding is completed, the data transmitting unit transmits the encoded image.
도 3a를 참조하면, 비디오 입력부는 제 1 분할 프레임을 T1/4시간동안 입력받을 수 있다. 여기서, T1은 하나의 프레임이 입력 완료되는 시점이고, 60Hz의 경우 16ms 정도일 수 있다. 또한, 도 3a의 실시예에서 하나의 분할 프레임은 프레임을 4등분한 프레임으로 가정한다. 비디오 입력부는 제 1 분할 프레임이 입력 완료되는 T1/4 시점에 해당 영상 데이터를 인코딩부로 전송한다. 인코딩부는 T1/4 시점부터 제 1 분할 프레임에 대한 인코딩을 시작한다. 도 3a의 실시예는 인코딩의 해상도를 다소 낮게 설정하여 하나의 분할 프레임에 대한 인코딩 완료 시점이 다음 분할 프레임의 입력 완료 시점보다 앞선 경우를 가정한다. 제 1 분할 프레임에 대한 인코딩이 완료되면 비디오 전송부는 바로 제 1 분할 프레임을 패킷으로 생성하여 실시간으로 RTP, UDP 또는 IP를 통해 원격 디바이스로 전송할 수 있다. 이때, 인코딩부는 제 1 분할 프레임의 인코딩이 완료된 시점부터 제 2 분할 프레임의 입력이 완료되는 시점인 2T1/4까지 대기한다. 그리고는, 제 2 분할 프레임이 입력 완료되는 2T1/4 시점에 제 2 분할 프레임의 인코딩을 수행하고, 데이터 전송부는 제 2 분할프레임의 인코딩이 완료되는 즉시 데이터를 원격 디바이스로 전송할 수 있다. 이러한 과정을 반복하여 하나의 프레임에 대해 T1 시점으로부터 제 4 분할 프레임의 인코딩 및 전송 시간을 더한만큼의 시점 내에서 처리가 완료될 수 있다. Referring to Figure 3a, it has a video input section a first divided frame to receive input for T 1/4 hour. Here, T 1 is a time point at which one frame is input, and may be about 16 ms at 60 Hz. Further, in the embodiment of FIG. 3A, one divided frame is assumed to be a frame obtained by dividing the frame into four equal parts. The video input unit may transmit the amount of 1 frame is divided input complete encoding the image data to the T 1/4 time being. Encoding unit starts the encoding of the first divided frame from the time T 1/4. In the embodiment of FIG. 3A, it is assumed that the resolution of the encoding is set to be somewhat lower and the encoding completion time for one divided frame is higher than the input completion time of the next divided frame. When the encoding of the first divided frame is completed, the video transmitting unit can directly generate the first divided frame as a packet and transmit it to the remote device through RTP, UDP, or IP in real time. At this time, the encoding unit and waits until the first divided from the time of encoding is completed in the frame time of the input of the second divided frame completed 2T 1/4. And, the second may be performing a second encoding of the divided frame to 2T 1/4 time of the divided frames is completed input, and to transfer the immediate data in which the data transfer unit is encoded in the second sub-frame is complete to the remote device. By repeating this process, the processing can be completed within a time point equivalent to the encoding and transmission time of the fourth divided frame from the time T 1 for one frame.
도 3b는 본 발명의 다른 실시예에 있어서, 비디오 입력부, 인코딩부 및 데이터 전송부가 분할 프레임을 처리하는 과정을 시간축 상에 각각 나타낸 도면이다.FIG. 3B is a diagram illustrating a process of processing a divided frame by a video input unit, an encoding unit, and a data transmitting unit, respectively, on a time axis in another embodiment of the present invention.
도 3b를 참조하면, 본 실시예에서도 역시 하나의 분할 프레임은 프레임을 4등분한 프레임으로 가정한다. 비디오 입력부는 제 1 분할 프레임이 입력 완료되는 T1/4 시점에 해당 영상 데이터를 인코딩부로 전송하고 인코딩부는 T1/4 시점부터 제 1 분할 프레임에 대한 인코딩을 시작한다. 도 3b의 실시예는 인코딩의 해상도를 다소 높게 설정하여 하나의 분할 프레임에 대한 인코딩 완료 시점이 다음 분할 프레임의 입력완료 시점보다 늦는 경우를 가정할 수 있다. 제 1 분할 프레임의 입력 완료 시점부터 인코딩을 개시하여 제 2 분할 프레임의 입력 완료 시점인 2T1/4를 지나서 제 1 분할 프레임에 대한 인코딩이 완료되면 비디오 전송부는 인코딩 완료 즉시, 제 1 분할 프레임을 패킷으로 생성하여 실시간으로 RTP, UDP 또는 IP를 통해 원격 디바이스로 전송할 수 있다. 인코딩부는 제 1 분할 프레임의 인코딩이 완료된 시점에 이미 제 2 분할 프레임의 입력이 완료되었기 때문에, 대기 시간 없이 바로 제 2 분할 프레임의 인코딩을 수행한다. 데이터 전송부는 제 2 분할프레임의 인코딩이 완료되는 즉시 데이터를 원격 디바이스로 전송하고, 제 2 분할 프레임의 인코딩 완료 시점에 제 3 분할 프레임 역시 이미 입력 완료되었기 때문에, 바로 제 3 분할 프레임에 대한 인코딩을 수행할 수 있다. 즉, 인코딩 및 데이터 전송부는 별도 대기시간 없이 바로바로 인코딩 및 데이터 패킷 전송을 수행할 수 있다. 이러한 과정을 반복하여 제 4 분할 프레임의 인코딩 및 데이터 전송이 완료될 때까지 수행하면 하나의 프레임의 영상 데이터의 처리가 마무리된다.
Referring to FIG. 3B, in this embodiment, one divided frame is also assumed to be a frame divided into quarters. The video input unit starts the first divided frame is input complete T 1/4 transfers the image data portion encoding in time and encoding portion T 1/4 the first encoding of the divided frame from the time. In the embodiment of FIG. 3B, it may be assumed that the resolution of encoding is set somewhat higher and the encoding completion time of one divided frame is later than the input completion time of the next divided frame. Claim 1 When starting the encoding from the input completion time of the divided frame to a second complete the input of the divided frame time of 2T 1/4 to beyond the first encoding of the division frame is complete video transmitting unit completes encoding instant, a first divided frame Packet, and transmit it to the remote device via RTP, UDP, or IP in real time. Since the input of the second divided frame has already been completed at the time when the encoding of the first divided frame is completed, the encoding unit encodes the second divided frame immediately without waiting time. The data transmission unit transmits the data to the remote device as soon as the encoding of the second divided frame is completed, and since the third divided frame has already been input at the completion of the encoding of the second divided frame, Can be performed. That is, the encoding and data transmission unit can directly perform encoding and data packet transmission without waiting time. This process is repeated until the encoding and data transmission of the fourth divided frame is completed, thereby completing the processing of the video data of one frame.
영상 데이터 전송 장치의 구성Configuration of image data transmission device
도 4는 본 발명의 일 실시예에 따른 영상 데이터 전송 장치를 개략적으로 나타낸 블록도이다. 도 4에 도시된 바와 같이, 본 발명의 일 실시예에 따른 영상 데이터 전송 장치(400)는 입력 포트(402), 버퍼(404), 영상 입력부(410), 인코딩부(420) 및 데이터 전송부(430)를 포함할 수 있다. 영상 입력부(410), 인코딩부(420), 데이터 전송부(430)는 드라이버로 연결된 하드웨어 프로세서, 외부 디바이스(비디오 콘트롤러, 인코더, 이더넷 프로세서 등)와 같은 구성요소일 수 있다.4 is a block diagram schematically showing an image data transmission apparatus according to an embodiment of the present invention. 4, an image
도 4를 참조하면, 입력 포트(402)는 외부 영상 제공 장치로부터 영상 데이터를 입력 받을 수 있다. 입력 포트(402)는 HDMI, USB 포트, DVI 포트, D-SUB 포트, 오디오 입력 포트 등을 포함할 수 있고, 하나의 장치(400)에 복수 개의 입력 포트(402)가 존재할 수 있다. 입력 포트(402)에 연결되는 장치는 영상 데이터를 제공하는 수단, 예컨대, USB 메모리, 카메라, 휴대용 단말 등이 있을 수 있다. Referring to FIG. 4, the
영상 입력부(410)는 입력 포트(402)를 통해 입력되는 영상 데이터를 수신하여 미리 설정된 분할 프레임 단위로 분할하여 버퍼(404)에 저장할 수 있다. 영상 입력부(410)는 입력부(412) 및 분할부(414)를 포함할 수 있다. 입력부(412)는 입력 포트(402)를 통해 제공되는 영상 데이터를 입력받는 구성요소이다. 분할부(414)는 설정된 분할 프레임 단위로 영상 데이터를 분할하여 버퍼(404) 또는 인코딩부(420)로 제공할 수 있다. 분할부(414)는 인코딩부(420)에서의 인코딩 진행 상황을 보고 분할 프레임 데이터를 인코딩부(420)로 보낼지 버퍼(404)로 보낼지 결정할 수 있다. 만약, 현재 인코딩부(420)에서 인코딩이 진행중인 경우, 다음 번 분할 프레임 데이터를 바로 인코딩부(420)로 전송하지 않고, 버퍼(404)로 전송한다. 분할부(414)는 분할된 데이터의 최앞단 위치와 최후단 위치를 나타내는 정보를 생성하면서 프레임을 분할할 수 있다. 이는 추후 원격 디바이스(미도시)에서 프레임을 조합할 때 사용될 수 있다. The
분할부(414)는 프레임이 분할되는 단위 설정 정보를 참조하여 영상 데이터를 분할할 수 있다. 분할되는 단위 설정은 예컨대, 분할되는 프레임 개수 정보(예컨대, 3개, 4개 등), 분할되는 프레임의 크기 정보, 등분할 것인지에 대한 정보를 포함할 수 있다. 이러한 설정은 사용자 인터페이스(미도시)를 통해 추후에 변경가능하다. 또한, 데이터 전송 속도를 모니터링하면서, 전송 속도에 따라 분할되는 프레임 크기 또는 개수를 적응적으로 가변시키는 것도 가능하다. The
버퍼(404)는 분할된 데이터 일시 보관하는 메모리이다. 이는 플래시 메모리, RAM(Random Access Memory)일 수 있다. 버퍼(404)는 인코딩부(420)의 인코딩 진행 상태를 보고, 현재 중인 분할 프레임의 인코딩이 완료되는 시점에 보유하고 있는 다음번 분할 프레임 데이터를 인코딩부(420)로 순차적으로 전송한다. The
인코딩부(420)는 영상 입력부(410) 또는 버퍼(404)로부터 전송되는 분할 프레임 데이터를 수신하여 인코딩을 수행한다. 인코딩에는 H.264/AVC, SVC, MVC(Multi-view Video Coding), HEVC 등의 MPEG 표준 기술이 사용될 수 있다. 인코딩부(420)는 분할 프레임 단위로 독립적으로 처리할 수 있다. 인코딩부(420)는 분할 프레임 데이터가 입력되는 대로 인코딩을 시작할 수 있고, 해당 분할 프레임의 인코딩이 완료되는 즉시 바로 데이터 전송부(430)로 인코딩된 영상 데이터를 전송할 수 있다.The
데이터 전송부(430)는 인코딩부(420)로부터 전송된 분할 프레임 단위의 영상 데이터를 기반으로 패킷을 생성하여 RTP, UDP 및 IP 중 적어도 하나를 사용하여 원격 디바이스로 전송할 수 있다. 패킷 생성시, 인코딩된 영상 데이터를 페이로드에 포함시키고, RTP, UDP, IP 헤더 정보를 붙여 패킷을 구성할 수 있다. 데이터 전송부(430)는 인코딩부(420)로부터 인코딩 완료된 분할 프레임 데이터를 수신하는 즉시 패킷을 생성하여 실시간으로 원격 디바이스로 전송할 수 있다. 이를 통해 하나의 프레임 데이터가 모두 인코딩되는 시간동안 기다렸다가 전송함에 따른 지연시간을 감소시킬 수 있다. 데이터 전송부(430)는 안테나 및/또는 통신 프로세서 칩을 포함할 수 있다.
The
영상 데이터 전송 장치의 사용자 영역 및 커널 영역의 기능The functions of the user area and the kernel area of the image data transmission device
도 5는 본 발명의 일 실시예에 따른 영상 데이터 전송 장치의 사용자 영역(응용 레벨)과 커널 영역(드라이브 레벨)의 구성 및 동작을 설명하기 위한 블록도이다. 도 5에 도시된 바와 같이, 본 발명의 일 실시예에 따른 영상 데이터 전송 장치는 사용자 영역(502: 응용 레벨)과 커널 영역(504: 드리이버 레벨)을 포함할 수 있다.5 is a block diagram illustrating a configuration and operation of a user area (application level) and a kernel area (drive level) of the image data transmission apparatus according to an embodiment of the present invention. As shown in FIG. 5, the video data transmission apparatus according to an exemplary embodiment of the present invention may include a user area 502 (application level) and a kernel area 504 (driver level).
도 5를 참조하면, 사용자 영역(502)은 특정 응용 프로그램을 통해 동작을 수행하는 영역이고, 커널 영역(504)은 하드웨어의 자원을 필요한 프로세스에 할당하고, 프로세스 제어(태스크 매니저), 메모리 제어, 프로그램이 운영체제에 요구하는 시스템 콜 등을 수행하는 영역이다. 이는 CPU 하드웨어 프로세서로 구현된다. 5, the
본 발명의 일 실시예에 따르면, 응용 레벨(502)에는 비디오 쓰레드(510) 및 제어 쓰레드(512)가 위치할 수 있다. 비디오 쓰레드(510)는 비디오 입력부(520)에 대해 상태 폴링을 지시하고 이에 대한 상태 결과를 수신하여 제어 쓰레드(512)로 상태를 보고하는 기능을 수행하는 소프트웨어 모듈일 수 있다. 이는 반드시 필요한 구성요소는 아니고, 경우에 따라 비디오 쓰레드(510) 없이 동작할 수도 있다. 제어 쓰레드(512)는 비디오 입력 ISR(522: Interrupt Service Routine), 인코더 ISR(522) 및 이더넷 드라이버(542)로 각각 비디오 입력 제어 정보, 인코딩 제어 정보 및 데이터 전송 설정 정보를 제공한다. 제어 쓰레드(512)는 한번 비디오 입력 제어 정보, 인코딩 제어 정보 및 데이터 전송 설정 정보를 커널 내의 각 ISR 및 드라이버로 전송하고 나면, IP 설정이나 해상도 변경과 같은 상태 변경이 있기 전까지 재차 제어정보를 제공하지 않을 수 있다. 이를 통해, 드라이버 액세스시 발생하는 오버헤드를 줄일 수 있다. According to one embodiment of the present invention,
커널 영역(504)는 비디오 입력부(520), 인코딩부(530) 및 이더넷 MAC 모듈(540)과 같은 하드웨어 구성요소 및 비디오 입력부 ISR(522), 인코더 ISR(532) 및 이더넷 드라이버(542)와 같은 소프트웨어 모듈을 포함할 수 있다. 비디오 입력부(520)는 HDMI와 같은 입력포트를 통해 영상 데이터를 입력 받고, 비디오 입력부 ISR(522)로 인터럽트를 전달하여, 현재 프로세스를 끊고 영상 데이터의 처리가 이루어질 수 있도록 한다. 비디오 입력부 ISR(522)은 제어 쓰레드(512)로부터 비디오 입력 설정 정보를 수신하여 이를 토대로 영상을 분할하도록 제어할 수 있다. 이때 수신되는 비디오 입력 설정 정보에는 영상의 해상도 정보, 리사이즈(resize) 정보 및 프레임의 분할 단위 정보(얼마 단위로 분할할지에 대한 정보 포함) 등이 포함될 수 있다. 이는 애플리케이션 기능적인 정보가 포함될 수 있다. 이러한 제어 정보를 통해 비디오 입력부(510)는 영상을 버퍼 등의 내부 메모리에 저장할 수 있다. 이때, 영상 데이터는 메모리 복사(memory copy)하지 않고 DMA(Direct Memory Access)를 통해 메모리에 접근할 수 있다. DMA를 통해 내부 메모리에 저장된 분할 프레임 영상 데이터는 인코딩부(530)로 전송되어 인코딩부(530)를 통해 인코딩된다. 이때, 인코더 ISR(532)로 인터럽트를 줘서 인터럽트를 발생시키고, 인코딩이 수행될 수 있도록 프로세스를 할당받을 수 있다. 인코딩부(530)를 통해 압축된 영상도 내부 메모리에 DMA를 통해 저장될 수 있다. 인코더 ISR(532)로 제공되는 인코딩 설정 정보에는 GOP(Group of Picture) 정보(I 프레임과 다음 I 프레임 사이의 픽처 그룹에 대한 정보), 비트레이트 정보 및 품질 정보 등을 포함할 수 있다. 별도의 사용자 영역(502)으로부터의 설정 정보 변경이 없는한, 시스템 콜(호출) 없이 이러한 인코딩 설정 정보에 의해 인코딩이 수행되어 DMA가 수행된다. 이더넷 MAC 모듈(540)은 이더넷 드라이버(542)의 설정 정보에 따라 인코딩된 분할 프레임 영상 데이터를 패킷화하여 원격 디바이스로 전송할 수 있다. 이더넷 드라이버(542)로 전송되는 비디오 전송 설정 정보는 IP 주소, 포트 정보 및 MAC 어드레스(address) 정보를 포함할 수 있다. 즉, 한번 해당 패킷의 IP 주소, 포트 정보 및 목적지에 대한 MAC 어드레스 정보가 설정되면, 사용자 영역(502)으로부터의 특별한 설정 변경 요청이 없는 한 커널 영역(504)에서 패킷 생성 및 패킷 전송 동작이 수행된다. 이더넷 MAC 모듈(540)은 PHY(물리 계층)의 동작 구성요소를 포함할 수 있다. 보다 구체적으로, 이더넷 MAC 모듈(540)은 이더넷에서 사용하는 데이터링크 프레임 중 MAC 패킷을 생성할 수 있다. MAC 패킷은 목적지 주소, 발신지 주소, 길이 정보 및 영상 데이터(패ELD 포함) 및 CRC 비트를 포함하여 생성될 수 있다. 이더넷 MAC 모듈(540)은 충돌이 발생할 경우 감지하고 전송을 중단시키기 위한 시간인 슬롯 타임(slot time)이 필요한데, 최소한의 슬롯 타임 동안 계속 데이터를 전송할 수 있도록 최소 패킷 길이(최소 프레임 길이라고도 불림)를 설정하여 데이터 패킷을 생성할 수 있다. 최소 패킷 길이는 64 ㅂ바이트(byte)일 수 있다. The
전체적으로, 영상 관련 이벤트는 인터럽트로 처리하되, 커널 레벨(504)에서 처리되도록 할 수 있다. 다만, 전술한 바와 같이, 영상의 해상도, IP 설정 변경 등의 고속처리가 필요없는 제어 정보의 처리는 사용자 영역(502)에서 처리될 수 있다.
Overall, video-related events can be handled as interrupts, but processed at
커널 영역의 통합 드라이버의 동작Behavior of integrated driver in kernel area
도 6은 커널 영역의 통합 드라이버가 사용자 영역으로부터 제어 명령을 받아 패킷을 생성하여 실시간으로 전송하는 과정을 설명하기 위한 블록도이다. 도 6에 도시된 바와 같이, 본 발명의 일 실시예에 따른 영상 데이터 전송 장치는 사용자 영역(602) 및 커널 영역(604)을 포함할 수 있다.6 is a block diagram illustrating a process in which a unified driver in a kernel area receives a control command from a user area to generate a packet and transmits the packet in real time. As shown in FIG. 6, the apparatus for transmitting image data according to an exemplary embodiment of the present invention may include a
도 6을 참조하면, 사용자 영역(602)은 제어 정보를 전송하는 제어 쓰레드(605)를 포함할 수 있다. 제어 쓰레드(605)는 커널 영역(604)의 통합 드라이버(620)로 비디오 입력 설정 정보, 인코딩 설정 정보 및 패킷 설정 정보를 제공할 수 있다.Referring to FIG. 6, the
본 발명의 일 실시예에 따르면, 커널 영역(604)의 비디오 입력과 관련된 드라이버, 인코더와 관련된 드라이버를 통합하여 통합 드라이버(620)로 구현할 수 있다. 통합 드라이버(620)는 비디오 입력부(610)에서 DMA로 입력되는 영상 데이터에 대해 분할 프레임 단위로 독립적으로 인코딩이 수행되도록 제어하여 생성된 인코딩된 영상 데이터(632)를 패킷의 페이로드로 구성할 수 있다. According to an embodiment of the present invention, a driver related to the video input of the
본 발명의 일 실시예에 따르면, 리눅스 운영 체제 응용레벨의 UDP 스택을 사용하지 않고, 커널 레벨(604)의 통합 드라이버(620)에서 RTP, UDP 및 IP 프로토콜 스택을 직접 구현할 수 있다. 다만, 영상 패킷 외의 일반 이더넷 데이터(ARP(Address Resolution Protocol), ICMP(Internet Control Message Protocol) 등)들은 정상적으로 리눅스 운영 체제로 전달될 수 있다. 즉, IP 설정 변경이나 ARP 등의 처리는 응용 레벨(602)에서 처리되도록 한다. According to one embodiment of the present invention, the RTP, UDP, and IP protocol stacks can be directly implemented in the
통합 드라이버(620)의 수도 스택(622: pseudo stack)은 영상 패킷을 인코더 영역에서 디바이스 드라이버로 바로 전송하기 위해, 디바이스 드라이버의 리눅스 소켓(socket) 관련 작업을 수행할 수 있다. 즉, 이는 리눅스 소켓과 호환가능하게 설계된다. 수도 스택(622)은 RTP 스택, UDP 스택 및 IP 스택일 수 있다. 이를 통해 RTP 패킷, UDP 패킷 및 IP 패킷을 생성할 수 있다. 즉, 수도 스택(622)은 제어 쓰레드(605)로부터의 패킷 헤더 정보를 기반으로 RTP, UDP 및 IP 패킷 헤더를 생성하여 패킷을 감쌀 수 있다. The
최종적으로, 수도 스택(622)에서 헤더 정보를 붙여서 생성된 패킷은 이더넷 MAC 구성요소(640)를 통해 원격 디바이스로 전송될 수 있다. 이때, 이더넷 네트워크 전송망의 상태에 따라 압축률과 패킷 사이즈 등을 자동으로 조절되도록 할 수 있다.
Finally, packets generated by attaching header information in the
영상 데이터 수신 장치The video data receiving device
도 7은 본 발명의 일 실시예에 따른 영상 데이터 수신 장치를 개략적으로 나타낸 블록도이다. 도 7에 도시된 바와 같이, 본 발명의 일 실시예에 따른 영상 데이터 수신 장치(700)는 데이터 수신부(710), 디코딩부(720) 및 비디오 출력부(730)를 포함할 수 있다.7 is a block diagram schematically showing an image data receiving apparatus according to an embodiment of the present invention. 7, the video
도 7을 참조하면, 데이터 수신부(710)는 로컬 디바이스(미도시)로부터 인코딩된 데이터 패킷을 수신하여 미리 설정된 분할 프레임 단위로 분할할 수 있다. 데이터 수신부(710)는 수신부(712) 및 분할부(714)를 포함할 수 있다. 수신부(710)는 인코딩된 데이터 패킷을 수신한다. 수신부(710)는 안테나 및/또는 통신 프로세서 칩을 포함할 수 있다. 수신부(710)는 패킷을 파싱하여 패킷 내의 페이로드, 즉 인코딩된 영상 데이터를 추출할 수 있다. 분할부(714)는 수신부(712)로부터 인코딩된 영상 데이터를 수신하여 미리 설정된 분할 프레임 단위로 분할할 수 있다. 미리 설정된 분할 프레임 관련 정보는 분할 프레임 크기, 분할 프레임 개수 등의 정보를 포함할 수 있다. 이는 패킷 내에 분할 프레임 관련 정보로써 포함되어 로컬 디바이스의 인코딩부와 서로 알고 있는 정보일 수 있다. 분할부(714)는 분할 프레임 데이터를 디코딩부(720)로 바로 전송할 수도 있고, 디코딩부(720)가 디코딩을 수행 중이라면 버퍼(716)에 저장할 수도 있다. 버퍼(716)는 RAM과 같은 내부 메모리로써, 데이터를 저장할 수 있다. 버퍼(716)는 디코딩부(720)의 인코딩 진행 상태를 보고, 현재 디코딩 중인 분할 프레임의 디코딩이 완료되는 시점에 보유하고 있는 다음번 분할 프레임 데이터를 디코딩부(720)로 순차적으로 전송한다. Referring to FIG. 7, the
디코딩부(420)는 데이터 수신부(710) 또는 버퍼(716)로부터 전송되는 분할 프레임 데이터를 수신하여 디코딩을 수행한다. 디코딩에도 인코딩과 마찬가지로 H.264/AVC, SVC, MVC(Multi-view Video Coding), HEVC 등의 MPEG 표준 기술이 사용될 수 있다. 디코딩은 인코딩에서 사용한 표준 기술과 대응되는 디코딩 기술이 사용될 수 있다. 디코딩부(720)는 분할 프레임 단위로 독립적으로 처리할 수 있다. 디코딩부(720)는 분할 프레임 데이터가 입력 완료되는 대로 디코딩을 시작할 수 있고, 해당 분할 프레임의 디코딩이 완료되는 즉시 바로 비디오 출력부(730)로 디코딩된 영상 데이터를 전송할 수 있다.The
비디오 출력부(730)는 디코딩부(720)로부터 전송된 디코딩된 분할 프레임 단위의 영상 데이터를 조합하여 출력 포트(732)에 연결된 디스플레이 디바이스(예컨대, 모니터, 스마트 TV, 노트북, 휴대용 단말 등)에 제공할 수 있다. 영상 데이터는 하나의 프레임 단위로 조합될 수 있다. 이때, 분할 프레임 별로 최초 위치 및 최종 위치와 관련된 정보가 같이 전달되어 분할 프레임의 연접시 이를 참조할 수 있다. 비디오 출력부(730)는 내부 버퍼(732)를 이용하여 디코딩된 분할 프레임을 임시 저장할 수 있다. 즉, 4등분된 분할 프레임 중 앞선 3개의 분할 프레임은 4번째 분할 프레임이 도착할 때까지 버퍼에 임시 보관되어 있다가 4번째 분할 프레임이 도착되면 조합하여 하나의 프레임으로써 출력 포트(732)를 통해 디스플레이 디바이스에 디스플레이될 수 있다. The
이를 통해 하나의 프레임 데이터가 모두 수신되고 수신된 하나의 프레임이 모두 디코딩되는 시간동안 기다렸다가 디스플레이를 수행함에 따른 데이터 수신 및 출력 지연시간을 감소시킬 수 있다.
Accordingly, it is possible to reduce the data reception and output delay time as a result of performing display after waiting for one frame data to be completely received and all the received frames are decoded.
영상 데이터 수신 장치의 사용자 영역 및 커널 영역의 기능The function of the user area and the kernel area of the video data receiving apparatus
도 8는 본 발명의 일 실시예에 따른 영상 데이터 수신 장치의 사용자 영역(응용 레벨)과 커널 영역(드라이브 레벨)의 구성 및 동작을 설명하기 위한 블록도이다. 도 8에 도시된 바와 같이, 본 발명의 일 실시예에 따른 영상 데이터 수신 장치는 사용자 영역(802: 응용 레벨)과 커널 영역(804: 드리이버 레벨)을 포함할 수 있다.8 is a block diagram for explaining the configuration and operation of a user area (application level) and a kernel area (drive level) of the image data receiving apparatus according to an embodiment of the present invention. As shown in FIG. 8, the image data receiving apparatus according to an embodiment of the present invention may include a user area 802 (application level) and a kernel area 804 (driver level).
도 8을 참조하면, 응용 레벨(802)에는 비디오 쓰레드(810) 및 제어 쓰레드(812)가 위치할 수 있다. 비디오 쓰레드(810)는 이더넷 ISR(824)로부터 현재 네트워크 전송 상태 정보를 보고받고, 이를 제어쓰레드(812)로 보고할 수 있다. 네트워크 전송 상태 정보는 추후 디코더 ISR(832) 및 비디오 드라이버(842)로의 제어 정보에 영향을 줄 수 있다. 만약, 현재 네트워크 상태를 채널 상태 정보(CSI: Channel State Indicator)를 통해 파악할 수 있고, 전송 속도 등이 좋지 않으면, 디코더 ISR(832)로 디코딩 해상도 및 비트 레이트를 자체적으로 변경하도록 할 수 있다. 또는 디스플레이되는 프레임 레이트를 변경할 수도 있다. 이때는 설정 변경을 위해 시스템 콜이 필요할 수 있다. 다만, 디코딩 프로세스에서는 인코딩 측에서 인코딩된 데이터에 대한 코딩 정보가 표준화된 규약에 의해 모두 포함되어 있으므로 특별한 상황 변화 또는 사용자의 개입 없이는 별도의 제어정보를 커널 영역(804)으로 제공하지 않을 수 있다. 즉, 모든 디코딩 및 디스플레이 처리가 커널 영역(804) 내에서 이루어질 수 있다.. Referring to FIG. 8,
커널 영역(804)는 이더넷 MAC 모듈(820), 디코딩부(830) 및 비디오 출력부(840)와 같은 하드웨어 구성요소를 포함하고, 이더넷 드라이버(822), 이더넷 ISR(824), 디코더 ISR(832) 및 비디오 드라이버(842)와 같은 소프트웨어 모듈을 포함할 수 있다. The
이더넷 MAC 모듈(820)은 로컬 디바이스(미도시)로부터 인코딩된 영상 데이터 패킷을 수신하여 패킷을 파싱하고 영상 데이터를 추출할 수 있다. 그리고는, 영상 데이터를 복수 개의 분할 프레임 단위로 분할할 수 있다. 분할 프레임 단위 및 분할 정보는 인코딩된 영상 데이터 내에 포함되어 이를 파싱하여 획득할 수 있다. 이더넷 드라이버(822)는 이더넷 MAC 모듈(820)을 구동시키기 위한 드라이버로 커널 영역 내에 설치된 소프트웨어 모듈일 수 있다. 이더넷 드라이버(822)는 영상 데이터를 수신하는 경우 이더넷 ISR(824)에 인터럽트를 걸어 현재 프로세스를 중단시키고, 영상 수신 동작을 위한 프로세스를 할당받는다. 이를 통해 생성된 분할 프레임 압축 영상은 DMA를 통해 내부 메모리(예컨대, 버퍼)에 저장될 수 있다. The
디코딩부(830)는 DMA를 통해 저장된 분할 프레임 압축 영상을 입력으로 받아 디코딩을 수행한다. 이때, 디코더 ISR(832)로 인터럽트를 줘서 인터럽트를 발생시키고, 디코딩이 수행될 수 있도록 프로세스를 할당받을 수 있다. 디코딩부(830)를 통해 디코딩된 영상도 내부 메모리에 DMA를 통해 저장될 수 있다. 디코더 ISR(832)은 특수 상태에 따른 설정 변경(예컨대, 네트워크 상태에 따른 해상도의 강제 변경, 디코딩 설정 변경)에 따른 제어 정보를 제어쓰레드(812)로부터 수신할 수 있다. 이때는 수신된 설정 변경 정보에 입각하여 디코딩을 수행할 수 있다. 별도의 사용자 영역(802)으로부터의 설정 정보 변경이 없는한, 시스템 콜(호출) 없이 압축 데이터에 포함된 디코딩 관련 정보를 기반으로 디코딩이 수행되고 DMA가 수행된다.The
비디오 출력부(840)는 디코딩된 분할 프레임 정보를 수신하여 하나의 프레임 단위로 조합하여 출력 포트(HDMI와 같은 포트를 포함함)를 통해 디스플레이 장치로 내보낸다. 비디오 드라이버(842)는 비디오 출력부(840)를 제어할 수 있는 소프트웨어 모듈로써, 영상을 플레이할 때나 미디어 플레이를 할 때 필요한 비디오 관련 프로그램일 수 있다. 비디오 드라이버(842)는 제어쓰레드(812)로부터 영상 데이터의 출력 관련 설정 정보를 수신하여 해당 설정에 맞제 영상을 출력할 수 있다. The
사용자 영역(802)으로부터의 특별한 설정 변경 요청이 없는 한 커널 영역(804)에서 패킷 수신, 디코딩 및 영상 출력까지의 모든 동작이 사용자 영역(802)으로/에서의 호출 없이 수행된다. 즉, 이와 같은 수신 장치에서의 영상 관련 이벤트는 인터럽트로 처리하되, 모두 커널 레벨(804)에서 처리되도록 할 수 있다.
All operations up to packet reception, decoding, and video output in the
커널 영역의 통합 드라이버의 동작Behavior of integrated driver in kernel area
도 9는 커널 영역의 통합 드라이버가 사용자 영역으로부터 제어 명령을 받아 패킷을 수신하여 실시간으로 출력하는 과정을 설명하기 위한 블록도이다. 도 9에 도시된 바와 같이, 본 발명의 일 실시예에 따른 영상 데이터 수신 장치는 사용자 영역(902) 및 커널 영역(904)을 포함할 수 있다.9 is a block diagram for explaining a process of receiving a control command from a user area and receiving a packet and outputting the packet in real time. 9, the apparatus for receiving image data according to an embodiment of the present invention may include a
도 9를 참조하면, 사용자 영역(902)은 제어 정보를 전송하는 제어 쓰레드(905)를 포함할 수 있다. 제어 쓰레드(905)는 커널 영역(904)의 통합 드라이버(920)로부터 패킷 헤더를 통해 파싱되는 정보를 제공받을 수 있다. 예컨대, 목적지 정보, 수신지 정보 등을 파싱할 수 있다. 다만, 이러한 정보는 사용자 설정을 통해 동일 전송측 주소로부터의 최초 패킷으로부터 한번 수신하고 나면, 이후 동일한 전송측 주소로부터의 패킷에 대해서는 추가적으로 관련 정보를 수신하지 않도록 동작할 수 있다. 즉, 한번의 패킷 헤더 정보 파싱 이후에는 추가적인 시스템 콜이 발생하지 않도록 할 수 있다.Referring to FIG. 9, the
본 발명의 일 실시예에 따르면, 커널 영역(904)의 디코더 및 비디오 출력과 관련된 드라이버를 통합하여 통합 드라이버(920)로 구현할 수 있다. 통합 드라이버(920)는 이더넷 드라이버(912)를 통해 제어되는 이더넷 MAC 모듈(910)를 통해 수신된 영상 데이터(932)에 대해 분할 프레임 단위로 독립적으로 디코딩이 수행되도록 제어하며 디코딩된 영상 데이터(932)를 하나의 프레임 단위로 비디오 출력부(940)를 통해 출력되도록 제어할 수 있다. According to an embodiment of the present invention, a decoder associated with the
본 발명의 일 실시예에 따르면, 리눅스 운영 체제 응용 레벨(902)의 UDP 스택을 사용하지 않고, 커널 레벨(904)의 통합 드라이버(920)에서 RTP, UDP 및 IP 프로토콜 스택을 직접 구현할 수 있다. 또한, 영상 패킷 외의 일반 이더넷 데이터들은 정상적으로 리눅스 운영 체제로 전달될 수 있다. According to one embodiment of the present invention, RTP, UDP, and IP protocol stacks may be implemented directly in
통합 드라이버(920)의 수도 스택(922)은 영상 패킷을 디코더 영역에서 디바이스 드라이버로 바로 전송하기 위해, 디바이스 드라이버의 리눅스 소켓(socket) 관련 작업을 수행할 수 있다. 수도 스택(922)은 RTP 스택, UDP 스택 및 IP 스택일 수 있으며, 이를 통해 RTP 패킷, UDP 패킷 및 IP 패킷의 헤더(934)를 추출 및 파싱할 수 있다. 즉, 수도 스택(922)은 제어 쓰레드(905)로부터의 패킷을 감싸고 있는 패킷 헤더 정보를 추출하여 제공할 수 있다. 다만 이는 동일 전송자에게서의 최초 헤더만을 파싱하여 제공하고 이후의 패킷에 대해서는 헤더 정보를 제공하지 않을 수 있다.
The
이상 도면 및 실시예를 참조하여 설명하였지만, 본 발명의 보호범위가 상기 도면 또는 실시예에 의해 한정되는 것을 의미하지는 않으며 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다. It will be apparent to those skilled in the art that various modifications and variations can be made in the present invention without departing from the spirit or scope of the inventions as defined by the following claims It will be understood that various modifications and changes may be made thereto without departing from the spirit and scope of the invention.
Claims (24)
영상 데이터를 입력받는 단계;
상기 입력받은 영상 데이터의 하나의 프레임을 복수 개로 분할하는 단계;
복수 개로 분할된 각각의 분할 프레임을 독립적으로 인코딩하는 단계; 및
분할 프레임 단위로 인코딩이 완료되는 대로 인코딩된 영상 데이터를 수신측으로 전송하는 단계를 포함하되,
사용자 영역과 커널 영역으로 나뉘어서 영상 데이터 입력부터 인코딩된 영상 데이터의 전송까지의 영상 관련 이벤트를 처리하고,
상기 사용자 영역의 제어 쓰레드(control thread)가 상기 커널 영역의 각 드라이버에 대한 제어 설정을 초기에 설정하는 단계; 및
상기 커널 영역이 상기 제어쓰레드의 설정을 기반으로 상기 영상 관련 이벤트를 상기 사용자 영역으로의 호출 없이 처리하는 단계를 더 포함하는 것을 특징으로 하는 영상 데이터 전송 방법.A method for transmitting video data,
Receiving image data;
Dividing one frame of the input image data into a plurality of frames;
Independently encoding each divided frame into a plurality of divided frames; And
And transmitting the encoded image data to the receiver upon completion of encoding in units of divided frames,
A user area and a kernel area to process image related events from input of image data to transmission of encoded image data,
The control thread of the user area initially setting control settings for each driver of the kernel area; And
Further comprising the step of processing the image related event without a call to the user area based on the setting of the control thread.
상기 분할 프레임이 모두 입력되는 시점에 상기 분할 프레임에 대한 인코딩을 시작하는 단계를 포함하는 것을 특징으로 하는 영상 데이터 전송 방법.The method of claim 1, wherein independently encoding each of the plurality of divided frames comprises:
And starting encoding of the divided frame at a time when all of the divided frames are inputted.
상기 분할 프레임은 소정 분할 단위로 동일한 크기로 분할되는 것을 특징으로 하는 영상 데이터 전송 방법.The method according to claim 1,
Wherein the divided frames are divided into equal sizes in a predetermined division unit.
상기 분할 프레임을 인코딩하는 중에, 다음 번에 인코딩되어야 할 분할 프레임을 버퍼에 입력하는 단계를 더 포함하는 것을 특징으로 하는 영상 데이터 전송 방법.The method according to claim 1,
Further comprising the step of inputting a divided frame to be encoded next into the buffer during the encoding of the divided frame.
상기 입력되는 영상 데이터는 메모리에 복사되지 않고 DMA(Direct Memory Access) 방식을 통해 액세스되는 것을 특징으로 하는 영상 데이터 전송 방법.5. The method of claim 4,
Wherein the input image data is accessed through a direct memory access (DMA) method without being copied to a memory.
상기 커널 영역은 상기 영상 관련 이벤트를 인터럽트(interrupt)로 처리하는 것을 특징으로 하는 영상 데이터 전송 방법.The method according to claim 1,
Wherein the kernel region processes the image-related event as an interrupt.
상기 제어쓰레드가 비디오 데이터 입력 드라이버로 전송하는 비디오 입력 설정 정보는 영상의 해상도 정보, 리사이즈(resize) 정보 및 프레임의 분할되는 단위 정보인 분할 단위 정보를 포함하는 것을 특징으로 하는 영상 데이터 전송 방법.The method according to claim 1,
Wherein the video input setting information transmitted by the control thread to the video data input driver includes resolution information of a video, resize information, and division unit information which is divided unit information of a frame.
상기 제어쓰레드가 인코더 드라이버로 전송하는 인코딩 설정 정보는 GOP(Group of Picture) 정보, 비트레이트 정보 및 품질(quality) 정보를 포함하는 것을 특징으로 하는 영상 데이터 전송 방법.The method according to claim 1,
Wherein the encoding setting information transmitted by the control thread to the encoder driver includes GOP (Group of Picture) information, bit rate information, and quality information.
상기 제어쓰레드가 이더넷 드라이버로의 데이터 전송 설정 정보는 IP 포트 정보 및 MAC 어드레스 정보를 포함하는 것을 특징으로 하는 영상 데이터 전송 방법.The method according to claim 1,
And the data transmission setting information of the control thread to the Ethernet driver includes IP port information and MAC address information.
상기 인코딩된 영상 데이터는 페이로드로 하여 구성되는 패킷의 헤더에 포함되는 RTP(Real-Time Protocol) 정보는 상기 커널 영역의 통합 드라이버의 수도 스택(Pseudo Stack)을 통해 생성되는 것을 특징으로 하는 영상 데이터 전송 방법.The method according to claim 1,
Wherein RTP (Real-Time Protocol) information included in a header of a packet composed of the encoded video data is generated through a pseudo stack of an integrated driver of the kernel area. Transmission method.
영상 데이터를 입력받고 상기 입력받은 영상 데이터의 하나의 프레임을 복수 개로 분할하는 영상 입력부;
복수 개로 분할된 각각의 분할 프레임을 독립적으로 인코딩하는 인코딩부; 및
분할 프레임 단위로 인코딩이 완료되는 대로 인코딩된 영상 데이터를 수신측으로 전송하는 데이터 전송부를 포함하되,
사용자 영역과 커널 영역으로 나뉘어서 영상 데이터 입력부터 인코딩된 영상 데이터의 전송까지의 영상 관련 이벤트를 처리하고,
상기 커널 영역은 상기 커널 영역의 각 드라이버에 대한 제어 설정을 초기에 설정하는 제어 쓰레드(control thread)를 포함하며,
상기 커널 영역은 상기 영상 입력부, 상기 인코딩부 및 상기 데이터 전송부를 포함하고,
상기 사용자 영역의 제어 스레드가 상기 영상 입력부로의 비디오 입력 설정, 상기 인코딩부로의 인코딩 설정 및 상기 데이터 전송부로의 데이터 전송 설정을 초기에 설정하고 나면, 상기 커널 영역은 상기 제어쓰레드의 설정을 기반으로 상기 사용자 영역으로의 호출 없이 상기 영상 관련 이벤트를 처리하는 것을 특징으로 하는 영상 데이터 전송 장치.An apparatus for transmitting image data,
A video input unit for receiving video data and dividing one frame of the received video data into a plurality of frames;
An encoding unit that independently encodes each divided frame into a plurality of divided frames; And
And a data transmission unit for transmitting the encoded image data to the receiver upon completion of encoding in units of divided frames,
A user area and a kernel area to process image related events from input of image data to transmission of encoded image data,
Wherein the kernel area includes a control thread that initially sets control settings for each driver in the kernel area,
Wherein the kernel region includes the image input unit, the encoding unit, and the data transfer unit,
After the control thread of the user area initially sets the video input setting to the video input unit, the encoding setting to the encoding unit, and the data transmission setting to the data transmitting unit, the kernel area is set based on the setting of the control thread And processes the image related event without a call to the user area.
인코딩된 영상 데이터를 수신하는 단계;
상기 수신되는 영상 데이터가 분할 프레임 - 분할 프레임은 하나의 프레임을 복수 개로 분할한 프레임을 나타냄 - 단위로 수신되는 대로 독립적으로 디코딩하는 단계; 및
분할 프레임 단위로 디코딩된 영상 데이터를 하나의 프레임으로 조합하여 디스플레이하는 단계를 포함하되,
사용자 영역과 커널 영역으로 나뉘어서 영상 데이터 수신부터 디코딩된 데이터의 재생까지의 영상 관련 이벤트를 처리하고,
상기 커널 영역에서 상기 영상 관련 이벤트를 상기 사용자 영역 호출 없이 처리하는 단계를 더 포함하는 것을 특징으로 하는 영상 데이터 수신 방법.A method for receiving image data,
Receiving encoded image data;
Dividing the received video data into a plurality of divided frames, dividing the divided frames into a plurality of frames; independently decoding the received frames as they are received; And
And displaying the combined image data decoded in units of divided frames in one frame,
Related event from the reception of the video data to the reproduction of the decoded data by being divided into the user area and the kernel area,
And processing the image related event in the kernel area without calling the user area.
상기 분할 프레임을 상기 분할 프레임이 모두 수신되는 시점에 디코딩을 시작하는 단계를 포함하는 것을 특징으로 하는 영상 데이터 수신 방법.16. The method of claim 15, wherein independently decoding in units of divided frames comprises:
And starting to decode the divided frame at a time when all of the divided frames are received.
상기 분할 프레임은 소정 분할 단위로 동일한 크기로 분할되는 것을 특징으로 하는 영상 데이터 수신 방법.16. The method of claim 15,
Wherein the divided frames are divided into equal sizes in a predetermined division unit.
상기 분할 프레임을 디코딩하는 중에, 다음 번에 디코딩되어야 할 분할 프레임을 수신하여 버퍼에 저장하는 단계를 더 포함하는 것을 특징으로 하는 영상 데이터 수신 방법.16. The method of claim 15,
Receiving a divided frame to be decoded next and storing the divided frame in a buffer during decoding the divided frame.
상기 커널 영역은 상기 영상 관련 이벤트를 인터럽트(interrupt)로 처리하는 것을 특징으로 하는 영상 데이터 수신 방법.16. The method of claim 15,
Wherein the kernel region processes the image related event as an interrupt.
상기 인코딩된 영상 데이터는 페이로드로 하여 구성되는 패킷의 헤더에 포함되는 RTP(Real-Time Protocol) 정보는 상기 커널 영역의 통합 드라이버의 수도 스택(Pseudo Stack)을 통해 파싱되는 것을 특징으로 하는 영상 데이터 수신 방법.16. The method of claim 15,
Wherein real-time protocol (RTP) information included in a header of a packet composed of the encoded video data is parsed through a pseudo stack of an integrated driver of the kernel area, Receiving method.
인코딩된 영상 데이터를 수신하는 데이터 수신부;
상기 수신되는 영상 데이터가 분할 프레임 - 분할 프레임은 하나의 프레임을 복수 개로 분할한 프레임을 나타냄 - 단위로 수신되는 대로 독립적으로 디코딩하는 디코딩부; 및
분할 프레임 단위로 디코딩된 영상 데이터를 하나의 프레임으로 조합하여 디스플레이되도록 제어하는 비디오 제어부를 포함하되,
사용자 영역과 커널 영역으로 나뉘어서 영상 데이터 수신부터 디코딩된 데이터의 재생까지의 영상 관련 이벤트를 처리하고,
상기 커널 영역은 상기 데이터 수신부, 상기 디코딩부 및 상기 비디오 제어부를 포함하는 것을 특징으로 하는 영상 데이터 수신 장치.An apparatus for receiving image data,
A data receiving unit for receiving the encoded image data;
A decoding unit for independently decoding the received video data as it is received, the divided frame-divided frame representing a frame obtained by dividing one frame into a plurality of frames; And
And a video controller for controlling the video data decoded in units of divided frames to be displayed in a single frame,
Related event from the reception of the video data to the reproduction of the decoded data by being divided into the user area and the kernel area,
Wherein the kernel region includes the data receiving unit, the decoding unit, and the video control unit.
상기 커널 영역은 상기 영상 관련 이벤트를 상기 사용자 영역 호출 없이 처리하는 것을 특징으로 하는 영상 데이터 수신 장치.23. The method of claim 22,
Wherein the kernel region processes the image related event without calling the user area.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150076056A KR101710011B1 (en) | 2015-05-29 | 2015-05-29 | Image data transmission and reception method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150076056A KR101710011B1 (en) | 2015-05-29 | 2015-05-29 | Image data transmission and reception method and apparatus |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170022187A Division KR101839415B1 (en) | 2017-02-20 | 2017-02-20 | Image data transmission and reception method and apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160140012A KR20160140012A (en) | 2016-12-07 |
KR101710011B1 true KR101710011B1 (en) | 2017-03-08 |
Family
ID=57573817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150076056A KR101710011B1 (en) | 2015-05-29 | 2015-05-29 | Image data transmission and reception method and apparatus |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101710011B1 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102340510B1 (en) * | 2021-05-28 | 2021-12-17 | 주식회사 쿠오핀 | Video encoding apparatus and method for an ultra low latency |
KR102340490B1 (en) * | 2021-05-28 | 2021-12-17 | 주식회사 쿠오핀 | Platform system and method of transmitting real time video for an ultra low latency |
KR102621335B1 (en) * | 2021-10-13 | 2024-01-05 | (주)나임기술 | Image acquisition device and method using high-speed serial interface |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012010182A (en) * | 2010-06-25 | 2012-01-12 | Sony Corp | Information processing apparatus and information processing method |
KR101347956B1 (en) | 2013-07-29 | 2014-01-10 | 주식회사 리버스톤미디어 | System for stream transformation and restoration of ultra high-definition image and method for stream transformation and restoration of ultra high-definition image therefor |
KR101410837B1 (en) * | 2013-09-10 | 2014-06-24 | 이에스이 주식회사 | Apparatus for managing image by monitoring video memory |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150033194A (en) * | 2013-09-23 | 2015-04-01 | 삼성전자주식회사 | Parallel Encoding/Decoding Method and Apparatus |
-
2015
- 2015-05-29 KR KR1020150076056A patent/KR101710011B1/en active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012010182A (en) * | 2010-06-25 | 2012-01-12 | Sony Corp | Information processing apparatus and information processing method |
KR101347956B1 (en) | 2013-07-29 | 2014-01-10 | 주식회사 리버스톤미디어 | System for stream transformation and restoration of ultra high-definition image and method for stream transformation and restoration of ultra high-definition image therefor |
KR101410837B1 (en) * | 2013-09-10 | 2014-06-24 | 이에스이 주식회사 | Apparatus for managing image by monitoring video memory |
Also Published As
Publication number | Publication date |
---|---|
KR20160140012A (en) | 2016-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220263885A1 (en) | Adaptive media streaming method and apparatus according to decoding performance | |
US11258631B2 (en) | Streaming on diverse transports | |
JP5332854B2 (en) | Wireless transmitter, wireless transmission method, wireless receiver, and wireless reception method | |
CN104168439A (en) | Video coding method and apparatus | |
US20220286489A1 (en) | System and method of streaming content between peer devices in a broadcast environment | |
KR101710011B1 (en) | Image data transmission and reception method and apparatus | |
WO2018072337A1 (en) | Wireless transmission method, device, terminal and head-mounted display device for virtual reality | |
US9936266B2 (en) | Video encoding method and apparatus | |
CN109862400B (en) | Streaming media transmission method, device and system | |
CN103503381B (en) | The method of data transmission of device redirection, Apparatus and system | |
US7496114B2 (en) | IP image transmission apparatus | |
KR101839415B1 (en) | Image data transmission and reception method and apparatus | |
KR101579850B1 (en) | Apparatus for packetizing non compressed video in 10GbE(Gigabit Ethernet) network and method for transmitting and receiving using the same | |
WO2022206016A1 (en) | Data layering transport method, apparatus and system | |
WO2018054349A1 (en) | Data sending and receiving methods, and apparatuses and systems thereof | |
US11671976B2 (en) | Early notification for transmission of encoded video data | |
US11991228B2 (en) | Systems and methods for controlling high speed video | |
EP3866401A1 (en) | Move stream content from point to point over the existing ip gateway | |
CN113347468B (en) | Audio and video transmission method and device based on Ethernet frame and storage medium | |
JP2008016939A (en) | Program, information storage medium, data transmission apparatus, and data transmission system | |
JP7264517B2 (en) | Transmitting device, receiving device, control method, and program | |
EP4262218A1 (en) | Wireless screen projection method and apparatus | |
CN113453006A (en) | Picture packaging method, equipment and storage medium | |
CN117793363A (en) | Video decoding and FC video transmitting system based on embedded Soc | |
JP2016116178A (en) | Communication device and communication method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
A107 | Divisional application of patent | ||
GRNT | Written decision to grant | ||
R401 | Registration of restoration |