KR101839415B1 - 영상 데이터 전송 및 수신 방법 및 장치 - Google Patents

영상 데이터 전송 및 수신 방법 및 장치 Download PDF

Info

Publication number
KR101839415B1
KR101839415B1 KR1020170022187A KR20170022187A KR101839415B1 KR 101839415 B1 KR101839415 B1 KR 101839415B1 KR 1020170022187 A KR1020170022187 A KR 1020170022187A KR 20170022187 A KR20170022187 A KR 20170022187A KR 101839415 B1 KR101839415 B1 KR 101839415B1
Authority
KR
South Korea
Prior art keywords
encoding
image data
divided
data
time
Prior art date
Application number
KR1020170022187A
Other languages
English (en)
Other versions
KR20170021818A (ko
Inventor
김중곤
Original Assignee
엔쓰리엔 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엔쓰리엔 주식회사 filed Critical 엔쓰리엔 주식회사
Priority to KR1020170022187A priority Critical patent/KR101839415B1/ko
Publication of KR20170021818A publication Critical patent/KR20170021818A/ko
Application granted granted Critical
Publication of KR101839415B1 publication Critical patent/KR101839415B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23412Processing 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling 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

본 발명은 영상 데이터를 전송하는 방법을 개시하고 있다. 상기 방법은 영상 데이터를 입력받는 단계, 상기 입력받은 영상 데이터의 하나의 프레임을 복수 개로 분할하는 단계, 복수 개로 분할된 각각의 분할 프레임을 독립적으로 인코딩하는 단계 및 분할 프레임 단위로 인코딩이 완료되는 대로 인코딩된 영상 데이터를 수신측으로 전송하는 단계를 포함하되, 상기 인코딩된 영상 데이터를 사용자(user) 영역에서 전송하지 않고, 커널 단에서 네트워크 드라이버를 통해 직접 전송한다.

Description

영상 데이터 전송 및 수신 방법 및 장치{IMAGE DATA TRANSMISSION AND RECEPTION METHOD AND APPARATUS}
본 발명은 영상 데이터를 전송 및 수신하는 방법 및 장치에 관한 것으로, 보다 상세하게는 영상 전송 지연속도를 줄이기 위한 영상 데이터 전송 및 수신 방법 및 장치에 관한 것이다.
일반적으로 영상 데이터는 데이터의 크기가 크기에 압축 부호화하는 과정이 요구되고, 압축 부호화된 데이터를 이더넷(ethernet)과 같은 네트워크를 이용하여 전송하는 과정이 필요하며 이를 효율적으로 하기 위한 다양한 방법들이 개발되어 왔다. 특히, 영상 압축 부호화는 MPEG(Moving Picture Expert Group)에서 표준화한 여러 기술들(예컨대, H.264/AVC, SVC(Scalable Video Coding), HEVC(High Efficiency Video Coding 등)이 존재하며 이러한 기술은 대용량의 Full HD(High Definition) 멀디미디어 데이터를 전송하는데 사용된다.
특히 고해상도의 대용량 데이터를 네트워크 상에서 전송하는 초고속 통신 기술은 데이터를 전솔할 때 실시간 전송이 되지 않는 문제를 해결하기 위해 대용량 영상, 음향 전송 속도를 향상을 위한 방향으로 개발되어 왔다. 이를 위해 디지털 신호 처리(DSP: Digital Signal Processing)를 통해 인코딩된 영상을 사용자 영역과 리눅스 커널(Linux Kernel)을 통해 네트워크로 스트리밍 전송이 가능하도록 개발되어 왔다.
통상적으로 모든 시스템들은 사용자 명령을 해독하여 디바이스로 전달하는 운영체계(OS: Operating System)를 포함하며, 이러한 운영체계의 핵심적인 동작은 커널 영역(Kernel area)에서 이루어진다. 다만, 통상적인 커널 영역에서의 처리 시스템은 사용자 모드에서 멀티미디어 어플리케이션에 의해 멀티미디어 데이터와 함께 만들어진 RTP(Real-Time Protocol) 헤더는 커널 모드에서 동작하는 일련의 처리모듈들에 의해 디바이스에게 전달된다. 예컨대, UDP(User Datagram Protocol)를 거쳐 IP(Internet Protocol), ETH(Ethernet) 및 ETHDRV(Ethernet Driver)와 같은 네트워크 인터페이스로 전달된다. 따라서, RTP 데이터의 생성과 하부 계층으로의 전송을 무수히 반복하는 멀티미디어 데이터의 경우 사용자 영역의 버퍼와 커널영역의 버퍼 사이에 과도한 데이터 복사 및 교환이 발생하는 문제점이 있다.
통상적으로 먼저, 사용자 모드에서 소정의 처리 명령에 의해 데이터 처리를 요청하면 커널 모드에서는 데이터 저장영역에서 처리 대상 데이터를 검출한 후, 커널 버퍼에 저장하고 소정 단위로 구성된 그 처리 대상 데이터를 단위별로 사용자 모드측으로 전송하고, 사용자 모드로부터 처리 결과 데이터를 수신하는 과정을 거쳐야 한다. 이때, 사용자 모드는 위 과정에서 전송되는 데이터를 사용자 영역 버퍼에 저장하고 원하는 프로세스를 수행한 후, 커널 모드 측으로 전송하고 커널모드는 데이터를 받아 원격 디바이스로 전송한다. 이러한 과정은 모드 처리 대상 데이터가 처리 완료될 때까지 반복하기 때문에, 커널모드와 사용자 모드간 데이터 전송이 반복됨에 따라 데이터 복사 및 문맥 교환 과정도 반복되야 하고, 멀티미디어 데이터 등과 같은 스트리밍 데이터 전송시 많은 오버헤드가 발생하게 된다.
도 1은 종래 기술에 따라 영상 데이터의 입력부터 데이터 수신측에서 영상을 출력할 때까지의 과정을 설명하기 위한 개념도이다.
도 1을 참조하면, 로컬 디바이스(110)가 원격 디바이스(120)로 입력되는 모니터 영상을 전송하기 위해서 먼저 모니터 영상을 HDMI(High Definition Multimedia Interface)를 통해 입력받고, 이를 로컬 디바이스(110) 내의 내부 메모리에 복사 저장하며, 내부 메모리의 영상 데이터를 인코당하여 압축 영상을 생성한다. 그리고는, 이를 이더넷을 통해 원격 디바이스(120)로 전송할 수 있다. 원격 디아비스(120)는 압축 영상을 수신하여 이를 디코딩하여 원격 디바이스(120)의 내부 메모리에 복사 및 저장하고 이를 HDMI를 통해 연결된 출력 디바이스(예컨대, 모니터)에 출력한다.
이때, 로컬 디바이스(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)에서의 소요 시간은 더 오래 걸리게 된다. 특히, 프레임 단위로 이전 과정이 완료되야 다음 동작이 순차적으로 이루어지기 때문에, 상당히 많은 시간이 소요되며, 이때, 사용자 영역과 커널 영역의 호출 시간 등을 고려하면 영상 데이터 전송 효율성이 떨어지는 문제점이 있다.
상술한 문제점을 해결하기 위한 본 발명의 목적은 영상 데이터를 입력받아 하나의 프레임을 분할하여 분할 프레임 단위로 데이터 입력, 인코딩 및 전송 과정이 독립적으로 수행되어 데이터 전송 효율을 제고시킬 수 있는 영상 데이터 전송 및 수신 방법 및 장치를 제공하는 것이다.
또한 본 발명의 다른 목적은 사용자 영역과 커널 영역의 호출 및 정보 교환시간을 최소화하여 응용 레벨에서 드라비어 액세스시 발생하는 오버헤드를 감소시킬 수 있는 통합 드라이버를 제공하는 것이다.
상기한 목적을 달성하기 위한 본 발명의 영상 데이터를 전송하는 방법은 영상 데이터를 입력받는 단계, 상기 입력받은 영상 데이터의 하나의 프레임을 복수 개로 분할하는 단계, 복수 개로 분할된 각각의 분할 프레임을 독립적으로 인코딩하는 단계 및 분할 프레임 단위로 인코딩이 완료되는 대로 인코딩된 영상 데이터를 수신측으로 전송하는 단계를 포함하되, 상기 인코딩된 영상 데이터를 사용자(user) 영역에서 전송하지 않고, 커널 단에서 네트워크 드라이버를 통해 직접 전송할 수 있다.
분할 프레임은 상단 주사선부터 시작하여 분할 프레임의 하단 주사선에서 출력되며, 상기 분할 프레임의 영상 데이터가 모두 입력되는 시점에 인코딩을 시작하여 분할 프레임 단위로 인코딩이 완료되는 대로 커널단의 네트워크 드라이버를 통해 수신측으로 전송될 수 있다.
상기 영상 데이터 전송 방법은 상기 분할 프레임을 인코딩하는 중에, 다음 번에 인코딩되어야 할 분할 프레임을 버퍼에 입력하는 단계를 더 포함할 수 있다
상기 영상 데이터는 메모리에 복사되지 않고 DMA(Direct Memory Access) 방식을 통해 액세스될 수 있다.
사용자 영역과 커널 영역으로 나뉘어서 영상 데이터 입력부터 인코딩된 영상 데이터의 전송까지의 영상 관련 이벤트를 처리하되, 상기 영상 데이터 전송 방법은 상기 사용자 영역의 제어 쓰레드(control thread)가 상기 커널 영역의 각 드라이버에 대한 제어 설정을 초기에 설정하는 단계를 더 포함할 수 있다.
상기 커널 영역은 상기 영상 관련 이벤트를 인터럽트(interrupt)로 처리할 수 있다.
상기 제어쓰레드가 비디오 데이터 입력 드라이버로 전송하는 비디오 입력 설정 정보는 영상의 해상도 정보, 리사이즈(resize) 정보 및 프레임의 분할되는 단위 정보인 분할 단위 정보를 포함할 수 있다.
상기 제어쓰레드가 인코더 드라이버로 전송하는 인코딩 설정 정보는 GOP(Group of Picture) 정보, 비트레이트 정보 및 품질(quality) 정보를 포함할 수 있다.
상기 제어쓰레드가 이더넷 드라이버로의 데이터 전송 설정 정보는 IP 포트 정보 및 MAC 어드레스 정보를 포함할 수 있다.
상기 인코딩된 영상 데이터는 페이로드로 하여 구성되는 패킷의 헤더에 포함되는 RTP(Real-Time Protocol) 정보는 상기 커널 영역의 통합 드라이버의 수도 스택(Pseudo Stack)을 통해 생성될 수 있다.
상기한 목적을 달성하기 위한 본 발명의 다른 양태에 따른 영상 데이터를 전송하는 장치는 영상 데이터를 입력받고 상기 입력받은 영상 데이터의 하나의 프레임을 복수 개로 분할하는 영상 입력부, 복수 개로 분할된 각각의 분할 프레임을 독립적으로 인코딩하는 인코딩부 및 분할 프레임 단위로 인코딩이 완료되는 대로 인코딩된 영상 데이터를 수신측으로 전송하는 데이터 전송부를 포함하되, 상기 인코딩된 영상 데이터를 사용자(user) 영역에서 전송하지 않고, 커널 단에서 네트워크 드라이버를 통해 직접 전송할 수 있다.
분할 프레임은 상단 주사선부터 시작하여 분할 프레임의 하단 주사선에서 출력되며, 상기 분할 프레임의 영상 데이터가 모두 입력되는 시점에 인코딩을 시작하여 분할 프레임 단위로 인코딩이 완료되는 대로 커널단의 네트워크 드라이버를 통해 수신측으로 전송될 수 있다.
본 발명의 영상 데이터 전송 및 수신 방법 및 장치에 따르면, 영상 데이터가 전송측에서는 분할된 프레임 단위로 입력, 인코딩 및 전송되고, 수신측에서도 분할 프레임 단위로 수신, 디코딩 및 출력 처리되어 영상 데이터의 전송 효율을 제고시키고 처리 시간을 단축시키는 효과가 있다.
또한, 본 발명의 영상 데이터 전송 및 수신 방법 및 장치에 따르면, 사용자 영역과 커널 영역 간의 호출 및 정보 교환 횟수를 줄여 영역간 오버헤드를 감소시키고 데이터 전송 효율을 높이는 효과가 있다.
도 1은 종래 기술에 따라 영상 데이터의 입력부터 데이터 수신측에서 영상을 출력할 때까지의 과정을 설명하기 위한 개념도,
도 2는 본 발명의 일 실시예에 따른 영상 데이터 전송 및 수신 시스템을 설명하기 위한 개념도,
도 3a은 본 발명의 일 실시예에 있어서, 비디오 입력부, 인코딩부 및 데이터 전송부가 분할 프레임을 처리하는 과정을 시간축 상에 각각 나타낸 도면,
도 3b는 본 발명의 다른 실시예에 있어서, 비디오 입력부, 인코딩부 및 데이터 전송부가 분할 프레임을 처리하는 과정을 시간축 상에 각각 나타낸 도면,
도 4는 본 발명의 일 실시예에 따른 영상 데이터 전송 장치를 개략적으로 나타낸 블록도,
도 5는 본 발명의 일 실시예에 따른 영상 데이터 전송 장치의 사용자 영역(응용 레벨)과 커널 영역(드라이브 레벨)의 구성 및 동작을 설명하기 위한 블록도,
도 6은 커널 영역의 통합 드라이버가 사용자 영역으로부터 제어 명령을 받아 패킷을 생성하여 실시간으로 전송하는 과정을 설명하기 위한 블록도,
도 7은 본 발명의 일 실시예에 따른 영상 데이터 수신 장치를 개략적으로 나타낸 블록도,
도 8는 본 발명의 일 실시예에 따른 영상 데이터 수신 장치의 사용자 영역(응용 레벨)과 커널 영역(드라이브 레벨)의 구성 및 동작을 설명하기 위한 블록도,
도 9는 커널 영역의 통합 드라이버가 사용자 영역으로부터 제어 명령을 받아 패킷을 수신하여 실시간으로 출력하는 과정을 설명하기 위한 블록도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
영상 데이터의 전송 및 수신 시스템
도 2는 본 발명의 일 실시예에 따른 영상 데이터 전송 및 수신 시스템을 설명하기 위한 개념도이다. 도 2에 도시된 바와 같이, 본 발명의 일 실시예에 따른 영상 데이터 전송 및 수신 시스템은 로컬 디바이스(210) 및 원격 디바이스(220)를 포함할 수 있다.
도 2를 참조하면, 로컬 디바이스(210)는 원격 디바이스(220)로 압축된(예컨대, 인코딩된) 영상을 전송할 수 있다. 로컬 디바이스(210)는 영상 데이터를 HDMI등의 입력 포트를 통해 외부로부터 입력받을 수 있다. 로컬 디바이스(210)는 영상 데이터의 인코딩을 수행하는 인코더(인코딩부로 불릴 수 있음)를 포함할 수 있다. 또한, 네트워크를 통해 데이터를 전송하는 데이터 전송부(예컨대, 이더넷 MAC(Media Access Control) 모듈을 포함할 수 있음)를 포함할 수 있다. 데이터 전송부는 유무선 네트워크를 통해 인코딩된 영상 데이터를 전송할 수 있다. 원격 디바이스(220)는 로컬 디아비스(210)로부터 인코딩된 영상 데이터를 수신하여 출력 포트와 연결된 디스플레이 장치(예컨대, 모니터)에 전송된 영상을 디스플레이하도록 제어할 수 있다. 원격 디바이스(220)는 영상 데이터를 수신하는 데이터 수신부, 디코더, 영상 데이터의 디스플레이를 제어하는 비디오 제어부를 포함할 수 있다. 로컬 디바이스(210)와 원격 디바이스(220)는 반드시 별도의 외부 영상 제공 수단 및 외부 영상 출력 수단을 구비해야만 하는 것은 아니고, 내부에 영상 제공 수단 및 영상 출력 수단을 구비하여 동작할 수 있다.
본 발명의 일 실시예에 따르면, 로컬 디바이스(210)는 모니터 영상을 포트를 통해 입력받을 수 있다. 이때, 입력되는 영상을 내부 메모리(예컨대, 버퍼일 수 있음)에 액세스할 때, 하나의 프레임 단위가 아닌 분할 프레임 단위로 복수 개로 분할하여 액세스할 수 있다. 로컬 디바이스(210)는 소정 분할 프레임 단위를 설정하여 설정된 분할 프레임 단위로 영상 프레임을 쪼갠 후, 내부 메모리에 액세스하여 저장할 수 있다. 분할 프레임은 n 등분된 프레임으로 설정될 수 있다. 이때, n은 2 이상의 자연수로 본 실시예에서는 4등분된 분할 프레임을 기준으로 설명하고자 한다. 다만, 반드시 이에 국한되는 것은 아니고, 반드시 등분될 필요도 없다.
로컬 디바이스(210)는 분할 프레임 단위로 프레임을 분할하고 나서, 분할 프레임을 분할 프레임 단위로 인코딩한다. 즉, 하나의 프레임 데이터를 전부 입력받고 나서 인코딩을 시작하는 것이 아니라, 분할 프레임 데이터가 전부 입력되는 시점에 인코딩을 시작할 수 있다. 인코딩을 가장 상단 주사선부터 시작하여 분할 프레임의 가장 하단 주사선에서 완료되는 방식으로 수행될 수 있다. 또한, 분할 프레임의 인코딩이 완료되는 시점에 바로 압축된 영상을 원격 디바이스(220)로 전송할 수 있다. 이를 통해 프레임 단위로 입력받고 입력이 완료되면 인코딩이 수행되며, 프레임 단위 인코딩이 완료되야 영상을 전송하던 시간과 비교할 때, 분할 프레임 단위로 인코딩을 수행하면서 다음 분할 프레임에 해당하는 데이터를 입력받고 분할 프레임 단위로 인코딩되는 즉시, 데이터를 내보낼 수 있어, 영상 입력 시간(t-VI), 인코딩 시간(t-EN) 및 데이터 전송 시간(t-EX)을 1/4로 줄일 수 있다.
원격 디바이스(220)도 수신되는 압축 영상을 원격 디바이스(220)에서 설정한 분할 프레임 단위로 분할할 수 있다. 이는 약속에 의해 인코더와 동일하게 설정할 수도 있으나, 원격 디바이스(220) 자체적인 분할 단위 설정 또한 가능하다. 원격 디바이스(220)의 분할 프레임도 하나의 프레임을 4등분한 프레임을 사용하는 것으로 가정한다. 원격 디바이스(220)는 4등분된 분할 프레임 단위로 디코딩을 수행할 수 있다. 이 역시 분할 프레임 데이터가 모두 입력되는 시점부터 디코딩을 수행할 수 있다. 그리고는, 분할 프레임 단위로 디코딩이 완료되는 즉시 내부 메모리에 액세스하여 저장하고 모니터 등 디스플레이 장치를 통해 출력할 때는 하나의 프레임으로 조합하여 출력되도록 제어할 수 있다. 이를 통해, 디코딩 시간(t-DE)을 1/4로 단축시킬 수 있다. 다만, 영상의 출력 시간(t-VO)은 하나의 프레임을 완성하여 디스플레이하기 때문에, 단축되지 않을 수 있다.
즉, 본 발명의 영상 전송 및 수신 방법에 따르면, 영상 전송 지연속도를 줄이기 위해, 하나의 프레임 영상을 소정 단위(예컨대, 1/4) 단위로 분할하여 각각을 독립적으로 처리하여 획기적으로 전송 시간을 단축시킬 수 있다.
일반적인 영상 전송 시간(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보다 작은 값을 가질 수 있다.
도 3a은 본 발명의 일 실시예에 있어서, 비디오 입력부, 인코딩부 및 데이터 전송부가 분할 프레임을 처리하는 과정을 시간축 상에 각각 나타낸 도면이다. 여기서, 비디오 입력부는 영상 데이터를 입력받아 분할 프레임 단위로 분할하여 인코딩부로 전송할 수 있다. 인코딩부는 분할프레임이 전부 입력되는 시점부터 인코딩을 수행할 수 있으며, 분할 프레임 단위 인코딩이 완료되는 대로 데이터 전송부는 인코딩된 영상을 전송한다.
도 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 분할 프레임의 인코딩 및 전송 시간을 더한만큼의 시점 내에서 처리가 완료될 수 있다.
도 3b는 본 발명의 다른 실시예에 있어서, 비디오 입력부, 인코딩부 및 데이터 전송부가 분할 프레임을 처리하는 과정을 시간축 상에 각각 나타낸 도면이다.
도 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 분할 프레임의 인코딩 및 데이터 전송이 완료될 때까지 수행하면 하나의 프레임의 영상 데이터의 처리가 마무리된다.
영상 데이터 전송 장치의 구성
도 4는 본 발명의 일 실시예에 따른 영상 데이터 전송 장치를 개략적으로 나타낸 블록도이다. 도 4에 도시된 바와 같이, 본 발명의 일 실시예에 따른 영상 데이터 전송 장치(400)는 입력 포트(402), 버퍼(404), 영상 입력부(410), 인코딩부(420) 및 데이터 전송부(430)를 포함할 수 있다. 영상 입력부(410), 인코딩부(420), 데이터 전송부(430)는 드라이버로 연결된 하드웨어 프로세서, 외부 디바이스(비디오 콘트롤러, 인코더, 이더넷 프로세서 등)와 같은 구성요소일 수 있다.
도 4를 참조하면, 입력 포트(402)는 외부 영상 제공 장치로부터 영상 데이터를 입력 받을 수 있다. 입력 포트(402)는 HDMI, USB 포트, DVI 포트, D-SUB 포트, 오디오 입력 포트 등을 포함할 수 있고, 하나의 장치(400)에 복수 개의 입력 포트(402)가 존재할 수 있다. 입력 포트(402)에 연결되는 장치는 영상 데이터를 제공하는 수단, 예컨대, USB 메모리, 카메라, 휴대용 단말 등이 있을 수 있다.
영상 입력부(410)는 입력 포트(402)를 통해 입력되는 영상 데이터를 수신하여 미리 설정된 분할 프레임 단위로 분할하여 버퍼(404)에 저장할 수 있다. 영상 입력부(410)는 입력부(412) 및 분할부(414)를 포함할 수 있다. 입력부(412)는 입력 포트(402)를 통해 제공되는 영상 데이터를 입력받는 구성요소이다. 분할부(414)는 설정된 분할 프레임 단위로 영상 데이터를 분할하여 버퍼(404) 또는 인코딩부(420)로 제공할 수 있다. 분할부(414)는 인코딩부(420)에서의 인코딩 진행 상황을 보고 분할 프레임 데이터를 인코딩부(420)로 보낼지 버퍼(404)로 보낼지 결정할 수 있다. 만약, 현재 인코딩부(420)에서 인코딩이 진행중인 경우, 다음 번 분할 프레임 데이터를 바로 인코딩부(420)로 전송하지 않고, 버퍼(404)로 전송한다. 분할부(414)는 분할된 데이터의 최앞단 위치와 최후단 위치를 나타내는 정보를 생성하면서 프레임을 분할할 수 있다. 이는 추후 원격 디바이스(미도시)에서 프레임을 조합할 때 사용될 수 있다.
분할부(414)는 프레임이 분할되는 단위 설정 정보를 참조하여 영상 데이터를 분할할 수 있다. 분할되는 단위 설정은 예컨대, 분할되는 프레임 개수 정보(예컨대, 3개, 4개 등), 분할되는 프레임의 크기 정보, 등분할 것인지에 대한 정보를 포함할 수 있다. 이러한 설정은 사용자 인터페이스(미도시)를 통해 추후에 변경가능하다. 또한, 데이터 전송 속도를 모니터링하면서, 전송 속도에 따라 분할되는 프레임 크기 또는 개수를 적응적으로 가변시키는 것도 가능하다.
버퍼(404)는 분할된 데이터 일시 보관하는 메모리이다. 이는 플래시 메모리, RAM(Random Access Memory)일 수 있다. 버퍼(404)는 인코딩부(420)의 인코딩 진행 상태를 보고, 현재 중인 분할 프레임의 인코딩이 완료되는 시점에 보유하고 있는 다음번 분할 프레임 데이터를 인코딩부(420)로 순차적으로 전송한다.
인코딩부(420)는 영상 입력부(410) 또는 버퍼(404)로부터 전송되는 분할 프레임 데이터를 수신하여 인코딩을 수행한다. 인코딩에는 H.264/AVC, SVC, MVC(Multi-view Video Coding), HEVC 등의 MPEG 표준 기술이 사용될 수 있다. 인코딩부(420)는 분할 프레임 단위로 독립적으로 처리할 수 있다. 인코딩부(420)는 분할 프레임 데이터가 입력되는 대로 인코딩을 시작할 수 있고, 해당 분할 프레임의 인코딩이 완료되는 즉시 바로 데이터 전송부(430)로 인코딩된 영상 데이터를 전송할 수 있다.
데이터 전송부(430)는 인코딩부(420)로부터 전송된 분할 프레임 단위의 영상 데이터를 기반으로 패킷을 생성하여 RTP, UDP 및 IP 중 적어도 하나를 사용하여 원격 디바이스로 전송할 수 있다. 패킷 생성시, 인코딩된 영상 데이터를 페이로드에 포함시키고, RTP, UDP, IP 헤더 정보를 붙여 패킷을 구성할 수 있다. 데이터 전송부(430)는 인코딩부(420)로부터 인코딩 완료된 분할 프레임 데이터를 수신하는 즉시 패킷을 생성하여 실시간으로 원격 디바이스로 전송할 수 있다. 이를 통해 하나의 프레임 데이터가 모두 인코딩되는 시간동안 기다렸다가 전송함에 따른 지연시간을 감소시킬 수 있다. 데이터 전송부(430)는 안테나 및/또는 통신 프로세서 칩을 포함할 수 있다.
영상 데이터 전송 장치의 사용자 영역 및 커널 영역의 기능
도 5는 본 발명의 일 실시예에 따른 영상 데이터 전송 장치의 사용자 영역(응용 레벨)과 커널 영역(드라이브 레벨)의 구성 및 동작을 설명하기 위한 블록도이다. 도 5에 도시된 바와 같이, 본 발명의 일 실시예에 따른 영상 데이터 전송 장치는 사용자 영역(502: 응용 레벨)과 커널 영역(504: 드리이버 레벨)을 포함할 수 있다.
도 5를 참조하면, 사용자 영역(502)은 특정 응용 프로그램을 통해 동작을 수행하는 영역이고, 커널 영역(504)은 하드웨어의 자원을 필요한 프로세스에 할당하고, 프로세스 제어(태스크 매니저), 메모리 제어, 프로그램이 운영체제에 요구하는 시스템 콜 등을 수행하는 영역이다. 이는 CPU 하드웨어 프로세서로 구현된다.
본 발명의 일 실시예에 따르면, 응용 레벨(502)에는 비디오 쓰레드(510) 및 제어 쓰레드(512)가 위치할 수 있다. 비디오 쓰레드(510)는 비디오 입력부(520)에 대해 상태 폴링을 지시하고 이에 대한 상태 결과를 수신하여 제어 쓰레드(512)로 상태를 보고하는 기능을 수행하는 소프트웨어 모듈일 수 있다. 이는 반드시 필요한 구성요소는 아니고, 경우에 따라 비디오 쓰레드(510) 없이 동작할 수도 있다. 제어 쓰레드(512)는 비디오 입력 ISR(522: Interrupt Service Routine), 인코더 ISR(522) 및 이더넷 드라이버(542)로 각각 비디오 입력 제어 정보, 인코딩 제어 정보 및 데이터 전송 설정 정보를 제공한다. 제어 쓰레드(512)는 한번 비디오 입력 제어 정보, 인코딩 제어 정보 및 데이터 전송 설정 정보를 커널 내의 각 ISR 및 드라이버로 전송하고 나면, IP 설정이나 해상도 변경과 같은 상태 변경이 있기 전까지 재차 제어정보를 제공하지 않을 수 있다. 이를 통해, 드라이버 액세스시 발생하는 오버헤드를 줄일 수 있다.
커널 영역(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)일 수 있다.
전체적으로, 영상 관련 이벤트는 인터럽트로 처리하되, 커널 레벨(504)에서 처리되도록 할 수 있다. 다만, 전술한 바와 같이, 영상의 해상도, IP 설정 변경 등의 고속처리가 필요없는 제어 정보의 처리는 사용자 영역(502)에서 처리될 수 있다.
커널 영역의 통합 드라이버의 동작
도 6은 커널 영역의 통합 드라이버가 사용자 영역으로부터 제어 명령을 받아 패킷을 생성하여 실시간으로 전송하는 과정을 설명하기 위한 블록도이다. 도 6에 도시된 바와 같이, 본 발명의 일 실시예에 따른 영상 데이터 전송 장치는 사용자 영역(602) 및 커널 영역(604)을 포함할 수 있다.
도 6을 참조하면, 사용자 영역(602)은 제어 정보를 전송하는 제어 쓰레드(605)를 포함할 수 있다. 제어 쓰레드(605)는 커널 영역(604)의 통합 드라이버(620)로 비디오 입력 설정 정보, 인코딩 설정 정보 및 패킷 설정 정보를 제공할 수 있다.
본 발명의 일 실시예에 따르면, 커널 영역(604)의 비디오 입력과 관련된 드라이버, 인코더와 관련된 드라이버를 통합하여 통합 드라이버(620)로 구현할 수 있다. 통합 드라이버(620)는 비디오 입력부(610)에서 DMA로 입력되는 영상 데이터에 대해 분할 프레임 단위로 독립적으로 인코딩이 수행되도록 제어하여 생성된 인코딩된 영상 데이터(632)를 패킷의 페이로드로 구성할 수 있다.
본 발명의 일 실시예에 따르면, 리눅스 운영 체제 응용레벨의 UDP 스택을 사용하지 않고, 커널 레벨(604)의 통합 드라이버(620)에서 RTP, UDP 및 IP 프로토콜 스택을 직접 구현할 수 있다. 다만, 영상 패킷 외의 일반 이더넷 데이터(ARP(Address Resolution Protocol), ICMP(Internet Control Message Protocol) 등)들은 정상적으로 리눅스 운영 체제로 전달될 수 있다. 즉, IP 설정 변경이나 ARP 등의 처리는 응용 레벨(602)에서 처리되도록 한다.
통합 드라이버(620)의 수도 스택(622: pseudo stack)은 영상 패킷을 인코더 영역에서 디바이스 드라이버로 바로 전송하기 위해, 디바이스 드라이버의 리눅스 소켓(socket) 관련 작업을 수행할 수 있다. 즉, 이는 리눅스 소켓과 호환가능하게 설계된다. 수도 스택(622)은 RTP 스택, UDP 스택 및 IP 스택일 수 있다. 이를 통해 RTP 패킷, UDP 패킷 및 IP 패킷을 생성할 수 있다. 즉, 수도 스택(622)은 제어 쓰레드(605)로부터의 패킷 헤더 정보를 기반으로 RTP, UDP 및 IP 패킷 헤더를 생성하여 패킷을 감쌀 수 있다.
최종적으로, 수도 스택(622)에서 헤더 정보를 붙여서 생성된 패킷은 이더넷 MAC 구성요소(640)를 통해 원격 디바이스로 전송될 수 있다. 이때, 이더넷 네트워크 전송망의 상태에 따라 압축률과 패킷 사이즈 등을 자동으로 조절되도록 할 수 있다.
영상 데이터 수신 장치
도 7은 본 발명의 일 실시예에 따른 영상 데이터 수신 장치를 개략적으로 나타낸 블록도이다. 도 7에 도시된 바와 같이, 본 발명의 일 실시예에 따른 영상 데이터 수신 장치(700)는 데이터 수신부(710), 디코딩부(720) 및 비디오 출력부(730)를 포함할 수 있다.
도 7을 참조하면, 데이터 수신부(710)는 로컬 디바이스(미도시)로부터 인코딩된 데이터 패킷을 수신하여 미리 설정된 분할 프레임 단위로 분할할 수 있다. 데이터 수신부(710)는 수신부(712) 및 분할부(714)를 포함할 수 있다. 수신부(710)는 인코딩된 데이터 패킷을 수신한다. 수신부(710)는 안테나 및/또는 통신 프로세서 칩을 포함할 수 있다. 수신부(710)는 패킷을 파싱하여 패킷 내의 페이로드, 즉 인코딩된 영상 데이터를 추출할 수 있다. 분할부(714)는 수신부(712)로부터 인코딩된 영상 데이터를 수신하여 미리 설정된 분할 프레임 단위로 분할할 수 있다. 미리 설정된 분할 프레임 관련 정보는 분할 프레임 크기, 분할 프레임 개수 등의 정보를 포함할 수 있다. 이는 패킷 내에 분할 프레임 관련 정보로써 포함되어 로컬 디바이스의 인코딩부와 서로 알고 있는 정보일 수 있다. 분할부(714)는 분할 프레임 데이터를 디코딩부(720)로 바로 전송할 수도 있고, 디코딩부(720)가 디코딩을 수행 중이라면 버퍼(716)에 저장할 수도 있다. 버퍼(716)는 RAM과 같은 내부 메모리로써, 데이터를 저장할 수 있다. 버퍼(716)는 디코딩부(720)의 인코딩 진행 상태를 보고, 현재 디코딩 중인 분할 프레임의 디코딩이 완료되는 시점에 보유하고 있는 다음번 분할 프레임 데이터를 디코딩부(720)로 순차적으로 전송한다.
디코딩부(420)는 데이터 수신부(710) 또는 버퍼(716)로부터 전송되는 분할 프레임 데이터를 수신하여 디코딩을 수행한다. 디코딩에도 인코딩과 마찬가지로 H.264/AVC, SVC, MVC(Multi-view Video Coding), HEVC 등의 MPEG 표준 기술이 사용될 수 있다. 디코딩은 인코딩에서 사용한 표준 기술과 대응되는 디코딩 기술이 사용될 수 있다. 디코딩부(720)는 분할 프레임 단위로 독립적으로 처리할 수 있다. 디코딩부(720)는 분할 프레임 데이터가 입력 완료되는 대로 디코딩을 시작할 수 있고, 해당 분할 프레임의 디코딩이 완료되는 즉시 바로 비디오 출력부(730)로 디코딩된 영상 데이터를 전송할 수 있다.
비디오 출력부(730)는 디코딩부(720)로부터 전송된 디코딩된 분할 프레임 단위의 영상 데이터를 조합하여 출력 포트(732)에 연결된 디스플레이 디바이스(예컨대, 모니터, 스마트 TV, 노트북, 휴대용 단말 등)에 제공할 수 있다. 영상 데이터는 하나의 프레임 단위로 조합될 수 있다. 이때, 분할 프레임 별로 최초 위치 및 최종 위치와 관련된 정보가 같이 전달되어 분할 프레임의 연접시 이를 참조할 수 있다. 비디오 출력부(730)는 내부 버퍼(732)를 이용하여 디코딩된 분할 프레임을 임시 저장할 수 있다. 즉, 4등분된 분할 프레임 중 앞선 3개의 분할 프레임은 4번째 분할 프레임이 도착할 때까지 버퍼에 임시 보관되어 있다가 4번째 분할 프레임이 도착되면 조합하여 하나의 프레임으로써 출력 포트(732)를 통해 디스플레이 디바이스에 디스플레이될 수 있다.
이를 통해 하나의 프레임 데이터가 모두 수신되고 수신된 하나의 프레임이 모두 디코딩되는 시간동안 기다렸다가 디스플레이를 수행함에 따른 데이터 수신 및 출력 지연시간을 감소시킬 수 있다.
영상 데이터 수신 장치의 사용자 영역 및 커널 영역의 기능
도 8는 본 발명의 일 실시예에 따른 영상 데이터 수신 장치의 사용자 영역(응용 레벨)과 커널 영역(드라이브 레벨)의 구성 및 동작을 설명하기 위한 블록도이다. 도 8에 도시된 바와 같이, 본 발명의 일 실시예에 따른 영상 데이터 수신 장치는 사용자 영역(802: 응용 레벨)과 커널 영역(804: 드리이버 레벨)을 포함할 수 있다.
도 8을 참조하면, 응용 레벨(802)에는 비디오 쓰레드(810) 및 제어 쓰레드(812)가 위치할 수 있다. 비디오 쓰레드(810)는 이더넷 ISR(824)로부터 현재 네트워크 전송 상태 정보를 보고받고, 이를 제어쓰레드(812)로 보고할 수 있다. 네트워크 전송 상태 정보는 추후 디코더 ISR(832) 및 비디오 드라이버(842)로의 제어 정보에 영향을 줄 수 있다. 만약, 현재 네트워크 상태를 채널 상태 정보(CSI: Channel State Indicator)를 통해 파악할 수 있고, 전송 속도 등이 좋지 않으면, 디코더 ISR(832)로 디코딩 해상도 및 비트 레이트를 자체적으로 변경하도록 할 수 있다. 또는 디스플레이되는 프레임 레이트를 변경할 수도 있다. 이때는 설정 변경을 위해 시스템 콜이 필요할 수 있다. 다만, 디코딩 프로세스에서는 인코딩 측에서 인코딩된 데이터에 대한 코딩 정보가 표준화된 규약에 의해 모두 포함되어 있으므로 특별한 상황 변화 또는 사용자의 개입 없이는 별도의 제어정보를 커널 영역(804)으로 제공하지 않을 수 있다. 즉, 모든 디코딩 및 디스플레이 처리가 커널 영역(804) 내에서 이루어질 수 있다..
커널 영역(804)는 이더넷 MAC 모듈(820), 디코딩부(830) 및 비디오 출력부(840)와 같은 하드웨어 구성요소를 포함하고, 이더넷 드라이버(822), 이더넷 ISR(824), 디코더 ISR(832) 및 비디오 드라이버(842)와 같은 소프트웨어 모듈을 포함할 수 있다.
이더넷 MAC 모듈(820)은 로컬 디바이스(미도시)로부터 인코딩된 영상 데이터 패킷을 수신하여 패킷을 파싱하고 영상 데이터를 추출할 수 있다. 그리고는, 영상 데이터를 복수 개의 분할 프레임 단위로 분할할 수 있다. 분할 프레임 단위 및 분할 정보는 인코딩된 영상 데이터 내에 포함되어 이를 파싱하여 획득할 수 있다. 이더넷 드라이버(822)는 이더넷 MAC 모듈(820)을 구동시키기 위한 드라이버로 커널 영역 내에 설치된 소프트웨어 모듈일 수 있다. 이더넷 드라이버(822)는 영상 데이터를 수신하는 경우 이더넷 ISR(824)에 인터럽트를 걸어 현재 프로세스를 중단시키고, 영상 수신 동작을 위한 프로세스를 할당받는다. 이를 통해 생성된 분할 프레임 압축 영상은 DMA를 통해 내부 메모리(예컨대, 버퍼)에 저장될 수 있다.
디코딩부(830)는 DMA를 통해 저장된 분할 프레임 압축 영상을 입력으로 받아 디코딩을 수행한다. 이때, 디코더 ISR(832)로 인터럽트를 줘서 인터럽트를 발생시키고, 디코딩이 수행될 수 있도록 프로세스를 할당받을 수 있다. 디코딩부(830)를 통해 디코딩된 영상도 내부 메모리에 DMA를 통해 저장될 수 있다. 디코더 ISR(832)은 특수 상태에 따른 설정 변경(예컨대, 네트워크 상태에 따른 해상도의 강제 변경, 디코딩 설정 변경)에 따른 제어 정보를 제어쓰레드(812)로부터 수신할 수 있다. 이때는 수신된 설정 변경 정보에 입각하여 디코딩을 수행할 수 있다. 별도의 사용자 영역(802)으로부터의 설정 정보 변경이 없는한, 시스템 콜(호출) 없이 압축 데이터에 포함된 디코딩 관련 정보를 기반으로 디코딩이 수행되고 DMA가 수행된다.
비디오 출력부(840)는 디코딩된 분할 프레임 정보를 수신하여 하나의 프레임 단위로 조합하여 출력 포트(HDMI와 같은 포트를 포함함)를 통해 디스플레이 장치로 내보낸다. 비디오 드라이버(842)는 비디오 출력부(840)를 제어할 수 있는 소프트웨어 모듈로써, 영상을 플레이할 때나 미디어 플레이를 할 때 필요한 비디오 관련 프로그램일 수 있다. 비디오 드라이버(842)는 제어쓰레드(812)로부터 영상 데이터의 출력 관련 설정 정보를 수신하여 해당 설정에 맞제 영상을 출력할 수 있다.
사용자 영역(802)으로부터의 특별한 설정 변경 요청이 없는 한 커널 영역(804)에서 패킷 수신, 디코딩 및 영상 출력까지의 모든 동작이 사용자 영역(802)으로/에서의 호출 없이 수행된다. 즉, 이와 같은 수신 장치에서의 영상 관련 이벤트는 인터럽트로 처리하되, 모두 커널 레벨(804)에서 처리되도록 할 수 있다.
커널 영역의 통합 드라이버의 동작
도 9는 커널 영역의 통합 드라이버가 사용자 영역으로부터 제어 명령을 받아 패킷을 수신하여 실시간으로 출력하는 과정을 설명하기 위한 블록도이다. 도 9에 도시된 바와 같이, 본 발명의 일 실시예에 따른 영상 데이터 수신 장치는 사용자 영역(902) 및 커널 영역(904)을 포함할 수 있다.
도 9를 참조하면, 사용자 영역(902)은 제어 정보를 전송하는 제어 쓰레드(905)를 포함할 수 있다. 제어 쓰레드(905)는 커널 영역(904)의 통합 드라이버(920)로부터 패킷 헤더를 통해 파싱되는 정보를 제공받을 수 있다. 예컨대, 목적지 정보, 수신지 정보 등을 파싱할 수 있다. 다만, 이러한 정보는 사용자 설정을 통해 동일 전송측 주소로부터의 최초 패킷으로부터 한번 수신하고 나면, 이후 동일한 전송측 주소로부터의 패킷에 대해서는 추가적으로 관련 정보를 수신하지 않도록 동작할 수 있다. 즉, 한번의 패킷 헤더 정보 파싱 이후에는 추가적인 시스템 콜이 발생하지 않도록 할 수 있다.
본 발명의 일 실시예에 따르면, 커널 영역(904)의 디코더 및 비디오 출력과 관련된 드라이버를 통합하여 통합 드라이버(920)로 구현할 수 있다. 통합 드라이버(920)는 이더넷 드라이버(912)를 통해 제어되는 이더넷 MAC 모듈(910)를 통해 수신된 영상 데이터(932)에 대해 분할 프레임 단위로 독립적으로 디코딩이 수행되도록 제어하며 디코딩된 영상 데이터(932)를 하나의 프레임 단위로 비디오 출력부(940)를 통해 출력되도록 제어할 수 있다.
본 발명의 일 실시예에 따르면, 리눅스 운영 체제 응용 레벨(902)의 UDP 스택을 사용하지 않고, 커널 레벨(904)의 통합 드라이버(920)에서 RTP, UDP 및 IP 프로토콜 스택을 직접 구현할 수 있다. 또한, 영상 패킷 외의 일반 이더넷 데이터들은 정상적으로 리눅스 운영 체제로 전달될 수 있다.
통합 드라이버(920)의 수도 스택(922)은 영상 패킷을 디코더 영역에서 디바이스 드라이버로 바로 전송하기 위해, 디바이스 드라이버의 리눅스 소켓(socket) 관련 작업을 수행할 수 있다. 수도 스택(922)은 RTP 스택, UDP 스택 및 IP 스택일 수 있으며, 이를 통해 RTP 패킷, UDP 패킷 및 IP 패킷의 헤더(934)를 추출 및 파싱할 수 있다. 즉, 수도 스택(922)은 제어 쓰레드(905)로부터의 패킷을 감싸고 있는 패킷 헤더 정보를 추출하여 제공할 수 있다. 다만 이는 동일 전송자에게서의 최초 헤더만을 파싱하여 제공하고 이후의 패킷에 대해서는 헤더 정보를 제공하지 않을 수 있다.
이상 도면 및 실시예를 참조하여 설명하였지만, 본 발명의 보호범위가 상기 도면 또는 실시예에 의해 한정되는 것을 의미하지는 않으며 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (12)

  1. 영상 데이터를 전송하는 방법에 있어서,
    영상 데이터를 입력받는 단계;
    상기 입력받은 영상 데이터의 하나의 프레임을 복수 개로 시분할하는 단계;
    하나의 인코더의 단일 프로세서에서, 복수 개로 시분할된 각각의 분할 프레임을 독립적으로 시분할 처리를 통해 인코딩하는 단계; 및
    분할 프레임 단위로 시분할 처리를 통한 인코딩이 완료되는 대로 인코딩된 영상 데이터를 수신측으로 실시간으로 전송하는 단계를 포함하되,
    상기 인코딩된 영상 데이터를 사용자(user) 영역에서 전송하지 않고, 커널 단에서 네트워크 드라이버를 통해 직접 실시간으로 전송하고,
    상기 인코더의 단일 프로세서로의 영상 입력, 상기 인코더의 단일 프로세서에서의 시분할 처리를 통한 인코딩 및 상기 인코딩된 영상 데이터의 실시간 전송은 각각 분할 프레임 단위로 독립적으로 수행되며,
    인코딩 중 입력되는 분할 프레임은 이전 분할 프레임의 인코딩 완료시까지 버퍼에 저장되는 것을 특징으로 하는 영상 데이터 전송 방법.
  2. 제 1 항에 있어서,
    분할 프레임은 상단 주사선부터 시작하여 분할 프레임의 하단 주사선에서 출력되며,
    상기 분할 프레임의 영상 데이터가 모두 입력되는 시점에 인코딩을 시작하여 분할 프레임 단위로 인코딩이 완료되는 대로 커널단의 네트워크 드라이버를 통해 수신측으로 전송되는 것을 특징으로 하는 영상 데이터 전송 방법.
  3. 삭제
  4. 제 1 항에 있어서,
    상기 영상 데이터는 메모리에 복사되지 않고 DMA(Direct Memory Access) 방식을 통해 액세스되는 것을 특징으로 하는 영상 데이터 전송 방법.
  5. 제 1 항에 있어서,
    사용자 영역과 커널 영역으로 나뉘어서 영상 데이터 입력부터 인코딩된 영상 데이터의 전송까지의 영상 관련 이벤트를 처리하되,
    상기 사용자 영역의 제어 쓰레드(control thread)가 상기 커널 영역의 각 드라이버에 대한 제어 설정을 초기에 설정하는 단계를 더 포함하는 것을 특징으로 하는 영상 데이터 전송 방법.
  6. 제 5 항에 있어서,
    상기 커널 영역은 상기 영상 관련 이벤트를 인터럽트(interrupt)로 처리하는 것을 특징으로 하는 영상 데이터 전송 방법.
  7. 제 5 항에 있어서,
    상기 제어쓰레드가 비디오 데이터 입력 드라이버로 전송하는 비디오 입력 설정 정보는 영상의 해상도 정보, 리사이즈(resize) 정보 및 프레임의 분할되는 단위 정보인 분할 단위 정보를 포함하는 것을 특징으로 하는 영상 데이터 전송 방법.
  8. 제 5 항에 있어서,
    상기 제어쓰레드가 인코더 드라이버로 전송하는 인코딩 설정 정보는 GOP(Group of Picture) 정보, 비트레이트 정보 및 품질(quality) 정보를 포함하는 것을 특징으로 하는 영상 데이터 전송 방법.
  9. 제 5 항에 있어서,
    상기 제어쓰레드가 이더넷 드라이버로의 데이터 전송 설정 정보는 IP 포트 정보 및 MAC 어드레스 정보를 포함하는 것을 특징으로 하는 영상 데이터 전송 방법.
  10. 제 5 항에 있어서,
    상기 인코딩된 영상 데이터는 페이로드로 하여 구성되는 패킷의 헤더에 포함되는 RTP(Real-Time Protocol) 정보는 상기 커널 영역의 통합 드라이버의 수도 스택(Pseudo Stack)을 통해 생성되는 것을 특징으로 하는 영상 데이터 전송 방법.
  11. 영상 데이터를 전송하는 장치에 있어서,
    영상 데이터를 입력받고 상기 입력받은 영상 데이터의 하나의 프레임을 복수 개로 시분할하는 영상 입력부;
    복수 개로 시분할된 각각의 분할 프레임을 독립적으로 시분할 처리를 통해 인코딩하는 하나의 인코더의 단일 프로세서; 및
    분할 프레임 단위로 시분할 처리를 통한 인코딩이 완료되는 대로 인코딩된 영상 데이터를 수신측으로 실시간으로 전송하는 데이터 전송부를 포함하되,
    상기 인코딩된 영상 데이터를 사용자(user) 영역에서 전송하지 않고, 커널 단에서 네트워크 드라이버를 통해 직접 실시간으로 전송하고,
    상기 인코더의 단일 프로세서로의 영상 입력, 상기 인코더의 단일 프로세서에서의 시분할 처리를 통한 인코딩 및 상기 인코딩된 영상 데이터의 실시간 전송은 각각 분할 프레임 단위로 독립적으로 수행되며,
    인코딩 중 입력되는 분할 프레임은 이전 분할 프레임의 인코딩 완료시까지 버퍼에 저장되는 것을 특징으로 하는 영상 데이터 전송 장치.
  12. 제 11 항에 있어서,
    분할 프레임은 상단 주사선부터 시작하여 분할 프레임의 하단 주사선에서 출력되며,
    상기 분할 프레임의 영상 데이터가 모두 입력되는 시점에 인코딩을 시작하여 분할 프레임 단위로 인코딩이 완료되는 대로 커널단의 네트워크 드라이버를 통해 수신측으로 전송되는 것을 특징으로 하는 영상 데이터 전송 장치.
KR1020170022187A 2017-02-20 2017-02-20 영상 데이터 전송 및 수신 방법 및 장치 KR101839415B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170022187A KR101839415B1 (ko) 2017-02-20 2017-02-20 영상 데이터 전송 및 수신 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170022187A KR101839415B1 (ko) 2017-02-20 2017-02-20 영상 데이터 전송 및 수신 방법 및 장치

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020150076056A Division KR101710011B1 (ko) 2015-05-29 2015-05-29 영상 데이터 전송 및 수신 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20170021818A KR20170021818A (ko) 2017-02-28
KR101839415B1 true KR101839415B1 (ko) 2018-03-16

Family

ID=58543434

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170022187A KR101839415B1 (ko) 2017-02-20 2017-02-20 영상 데이터 전송 및 수신 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101839415B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012010182A (ja) * 2010-06-25 2012-01-12 Sony Corp 情報処理装置と情報処理方法
KR101410837B1 (ko) * 2013-09-10 2014-06-24 이에스이 주식회사 비디오 메모리의 모니터링을 이용한 영상 처리 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012010182A (ja) * 2010-06-25 2012-01-12 Sony Corp 情報処理装置と情報処理方法
KR101410837B1 (ko) * 2013-09-10 2014-06-24 이에스이 주식회사 비디오 메모리의 모니터링을 이용한 영상 처리 장치

Also Published As

Publication number Publication date
KR20170021818A (ko) 2017-02-28

Similar Documents

Publication Publication Date Title
US8160152B2 (en) Moving image decoding apparatus and moving image coding apparatus
US11258631B2 (en) Streaming on diverse transports
US8010863B2 (en) Method and apparatus for synchronizing multiple multimedia streams
CN104168439B (zh) 一种视频编码方法和装置
JP5332854B2 (ja) 無線送信機、無線送信方法、無線受信機および無線受信方法
JP2006217242A (ja) 無線通信方法および無線通信装置
CN103414956A (zh) 基于传输控制协议的实时数据传输方法及其系统
KR101710011B1 (ko) 영상 데이터 전송 및 수신 방법 및 장치
US9936266B2 (en) Video encoding method and apparatus
CN112187939A (zh) 远距离传输场景中控制指令的发送、接收方法及设备
CN109862400B (zh) 一种流媒体传输方法、装置及其系统
US7496114B2 (en) IP image transmission apparatus
US12114332B2 (en) Early notification for transmission of encoded video data
KR101839415B1 (ko) 영상 데이터 전송 및 수신 방법 및 장치
KR101579850B1 (ko) 10GbE 네트워크에서 비압축 HDMI/DVI 영상 패킷화 장치 및 그를 이용한 영상 송수신 방법
WO2022206016A1 (zh) 一种数据分层传输方法、装置及系统
KR20200143881A (ko) 제어기 통신 장치 및 그 방법
WO2018054349A1 (zh) 数据发送方法、数据接收方法及其装置和系统
US20240283835A1 (en) Systems and methods for controlling high speed video
CN113347468B (zh) 一种基于以太网帧的音视频传输方法、装置及存储介质
EP3866401A1 (en) Move stream content from point to point over the existing ip gateway
EP4262218A1 (en) Wireless screen projection method and apparatus
CN103841039B (zh) 网络流送的方法和装置
JP2008016939A (ja) プログラム、情報記憶媒体、データ伝送装置およびデータ伝送システム
CN117793363A (zh) 基于嵌入式Soc的视频解码及FC视频发送系统

Legal Events

Date Code Title Description
A107 Divisional application of patent
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)
GRNT Written decision to grant
R401 Registration of restoration