KR102353492B1 - 스트리밍 서비스를 위한 장치 및 방법 - Google Patents

스트리밍 서비스를 위한 장치 및 방법 Download PDF

Info

Publication number
KR102353492B1
KR102353492B1 KR1020150178433A KR20150178433A KR102353492B1 KR 102353492 B1 KR102353492 B1 KR 102353492B1 KR 1020150178433 A KR1020150178433 A KR 1020150178433A KR 20150178433 A KR20150178433 A KR 20150178433A KR 102353492 B1 KR102353492 B1 KR 102353492B1
Authority
KR
South Korea
Prior art keywords
electronic device
network
encoding
transport layer
frame
Prior art date
Application number
KR1020150178433A
Other languages
English (en)
Other versions
KR20170070646A (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 KR1020150178433A priority Critical patent/KR102353492B1/ko
Priority to US15/379,344 priority patent/US10200437B2/en
Publication of KR20170070646A publication Critical patent/KR20170070646A/ko
Application granted granted Critical
Publication of KR102353492B1 publication Critical patent/KR102353492B1/ko

Links

Images

Classifications

    • H04L65/601
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/0864Round trip delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0894Packet rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/27Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
    • H04L65/4069
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • H04L47/283Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/38Flow control; Congestion control by adapting coding or compression rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/80Actions related to the user profile or the type of traffic
    • H04L47/803Application aware
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/02Hierarchically pre-organised networks, e.g. paging networks, cellular networks, WLAN [Wireless Local Area Network] or WLL [Wireless Local Loop]
    • H04W84/04Large scale networks; Deep hierarchical networks
    • H04W84/042Public Land Mobile systems, e.g. cellular systems

Abstract

본 개시는 LTE(Long Term Evolution)와 같은 4G(4th generation) 통신 시스템 이후 보다 높은 데이터 전송률을 지원하기 위한 5G(5th generation) 또는 pre-5G 통신 시스템에 관련된 것이다. 다양한 실시 예들에 따른, 스트리밍 서비스(streaming service)를 제공하는 전자 장치(electronic device)의 동작 방법은, 상기 전자 장치의 전송 계층에서 추정되는 네트워크 가용 대역폭값을 상기 전송 계층으로부터 응용 계층에게 직접 제공하는 과정과, 상기 네트워크 가용 대역폭값에 기반하여 초기 데이터로부터 스트림 데이터를 생성하는 과정과, 다른 전자 장치에게 상기 스트림 데이터를 송신하는 과정을 포함할 수 있다.

Description

스트리밍 서비스를 위한 장치 및 방법{APPARATUS AND METHOD FOR STREAMING SERVICE}
아래의 다양한 실시 예들은 스트리밍 서비스를 제공하기 위한 방법 및 장치에 관한 것이다.
4G(4th generation) 통신 시스템 상용화 이후 증가 추세에 있는 무선 데이터 트래픽 수요를 충족시키기 위해, 개선된 5G(5th generation) 통신 시스템 또는 pre-5G 통신 시스템을 개발하기 위한 노력이 이루어지고 있다. 이러한 이유로, 5G 통신 시스템 또는 pre-5G 통신 시스템은 4G 네트워크 이후(Beyond 4G Network) 통신 시스템 또는 LTE(Long Term Evolution) 시스템 이후(Post LTE) 시스템이라 불리어지고 있다.
높은 데이터 전송률을 달성하기 위해, 5G 통신 시스템은 초고주파(mmWave) 대역(예를 들어, 60기가(60GHz) 대역과 같은)에서의 구현이 고려되고 있다. 초고주파 대역에서의 전파의 경로손실 완화 및 전파의 전달 거리를 증가시키기 위해, 5G 통신 시스템에서는 빔포밍(beamforming), 거대 배열 다중 입출력(massive MIMO), 전차원 다중입출력(Full Dimensional MIMO, FD-MIMO), 어레이 안테나(array antenna), 아날로그 빔형성(analog beam-forming), 및 대규모 안테나(large scale antenna) 기술들이 논의되고 있다.
또한 시스템의 네트워크 개선을 위해, 5G 통신 시스템에서는 진화된 소형 셀, 개선된 소형 셀(advanced small cell), 클라우드 무선 액세스 네트워크(cloud radio access network, cloud RAN), 초고밀도 네트워크(ultra-dense network), 기기 간 통신(Device to Device communication, D2D), 무선 백홀(wireless backhaul), 이동 네트워크(moving network), 협력 통신(cooperative communication), CoMP(Coordinated Multi-Points), 및 수신 간섭제거(interference cancellation) 등의 기술 개발이 이루어지고 있다.
이 밖에도, 5G 시스템에서는 진보된 코딩 변조(Advanced Coding Modulation, ACM) 방식인 FQAM(Hybrid Frequency Shift Keying and Quadrature Amplitude Modulation) 및 SWSC(Sliding Window Superposition Coding)과, 진보된 접속 기술인 FBMC(Filter Bank Multi Carrier), NOMA(Non Orthogonal Multiple Access), 및 SCMA(Sparse Code Multiple Access) 등이 개발되고 있다.
미디어의 발달로, 사용자들은 다양한 유형의 컨텐츠들을 이용할 수 있게 되었다. 또한, 통신 기술의 발달로, 사용자들은 다양한 통신 기능들을 구비한 전자 장치를 이용할 수 있게 되었다. 이로 인해, 획득된 컨텐츠를 실시간으로 전송하는 서비스 등에 대한 사용자들의 요구가 증가하고 있다.
아래의 다양한 실시 예들은, 전자 장치에서 데이터를 송신 및 수신할 경우 발생하는 지연 및 지터(jitter)를 줄여, 저지연 서비스 및 저지터 서비스를 제공하기 위한 방법 및 장치를 제공하기 위한 것이다.
다양한 실시 예들에 따른 스트리밍 서비스(streaming service)를 제공하는 전자 장치(electronic device)의 동작 방법은, 상기 전자 장치의 전송 계층에서 추정되는 네트워크 가용 대역폭값을 상기 전송 계층으로부터 응용 계층에게 직접 제공하는 과정과, 상기 네트워크 가용 대역폭값에 기반하여 초기 데이터로부터 스트림 데이터를 생성하는 과정과, 다른 전자 장치에게 상기 스트림 데이터를 송신하는 과정을 포함할 수 있다.
다양한 실시 예들에 따른 스트리밍 서비스를 수신하는 전자 장치의 동작 방법은, 다른 전자 장치로부터 스트림 데이터를 수신하는 과정과, 상기 스트림 데이터를 디코딩하여 재생 데이터를 생성하는 과정을 포함하고, 상기 스트림 데이터는 네트워크 가용 대역폭값에 기반하여 생성되고, 상기 네트워크 가용 대역폭값은 상기 다른 전자 장치의 전송 계층으로부터 상기 다른 전자 장치의 응용 계층에게 직접 제공되며 상기 네트워크 가용 대역폭값은 상기 다른 전자 장치의 전송 계층에서 추정될 수 있다.
다양한 실시 예들에 따른 스트리밍 서비스를 제공하는 전자 장치는 제어부와, 상기 제어부와 동작적으로 결합된(operatively coupled with) 인코더와, 상기 제어부와 동작적으로 결합된 송신기를 포함하고, 상기 제어부는 상기 전자 장치의 전송 계층에서 추정되는 네트워크 가용 대역폭값을 상기 전송 계층으로부터 응용 계층에게 직접 제공하고, 상기 네트워크 가용 대역폭값에 기반하여 초기 데이터로부터 스트림 데이터를 생성하고, 다른 전자 장치에게 상기 스트림 데이터를 송신하도록 구성될 수 있다.
다양한 실시 예들에 따른 스트리밍 서비스를 수신하는 전자 장치는 제어부와, 상기 제어부와 동작적으로 결합된 디코더와, 상기 제어부와 동작적으로 결합된 수신기를 포함하고, 상기 제어부는 다른 전자 장치로부터 스트림 데이터를 수신하고, 상기 스트림 데이터를 디코딩하여 재생 데이터를 생성하도록 구성되고, 상기 스트림 데이터는 네트워크 가용 대역폭값에 기반하여 생성되고, 상기 네트워크 가용 대역폭값은 상기 다른 전자 장치의 전송 계층으로부터 상기 다른 전자 장치의 응용 계층에게 직접 제공되고, 상기 네트워크 가용 대역폭값은 상기 다른 전자 장치의 전송 계층에서 추정될 수 있다.
다양한 실시 예들(various embodiments)에 따른 장치 및 장치의 동작 방법은 인코딩 또는 디코딩으로 인해 발생되는 지연을 줄여 다른 전자 장치에게 효율적인 스트리밍 서비스를 제공할 수 있다. 다양한 실시 예들에 따른 장치 및 장치의 동작 방법은 컨텐츠의 송신으로 인해 발생되는 지연을 줄여 다른 전자 장치에게 효율적인 스트리밍 서비스를 제공할 수 있다.
본 개시에 대한 보다 완전한 이해를 위해 첨부된 도면을 참조하여 아래의 상세한 설명이 이루어진다. 도면에서 동일한 참조번호는 동일한 구성 요소를 나타낸다.
도 1은 스트리밍의 전송 및 재생에 따라 발생하는 지연(latency)을 도시한다.
도 2는 네트워크 가용 대역폭을 추정하는 제어 장치를 도시한다.
도 3은 다양한 실시 예들에 따른 전자 장치의 기능적 블록 구성을 도시한다.
도 4은 다양한 실시 예들에 따른 제어부의 기능적 블록 구성을 도시한다.
도 5는 다양한 실시 예들에 따른 전자 장치의 구성을 도시한다.
도 6은 다양한 실시 예들에 따른 제어 장치를 도시한다.
도 7은 다양한 실시 예들에 따른 NEqS(network-aware equal-time stream)를 도시한다.
도 8은 다양한 실시 예들에 따른 NEqS의 적용 예를 도시한다.
도 9는 다양한 실시 예들에 따른 프레임 유닛(frame unit)을 도시한다.
도 10은 다양한 실시 예들에 따른 전자 장치의 동작을 도시한 흐름도이다.
도 11은 다양한 실시 예들에 따른 제어부의 동작을 도시한 흐름도이다.
도 12는 다양한 실시 예들에 따른 네트워크 가용 대역폭값을 추정하는 동작을 도시한 흐름도이다.
도 13은 다양한 실시 예들에 따른 네트워크 가용 대역폭값을 추정하는 다른 동작을 도시한 흐름도이다.
도 14는 다양한 실시 예들에 따른 초기 데이터를 생성하는 동작을 도시한 흐름도이다.
도 15는 다양한 실시 예들에 따른 스트리밍 시스템의 효과를 도시한다.
이하 첨부된 도면을 참조하여 다양한 실시 예들의 동작 원리를 상세히 설명한다. 하기에서 다양한 실시 예들을 설명에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 다양한 실시 예들에서의 기능을 고려하여 정의된 용어들로서 이는 단말, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
이하 설명에서 사용되는 제어 정보를 지칭하는 용어, 다중 안테나 신호 처리 방식을 지칭하는 용어, 상태 변화를 지칭하는 용어(예: 네트워크의 상태 변화, 이벤트(event)), 송신 신호를 지칭하는 용어, 망 객체(network entity)들을 지칭하는 용어, 메시지들을 지칭하는 용어(예: 요청), 장치의 구성 요소를 지칭하는 용어 등은 설명의 편의를 위해 예시된 것이다. 따라서, 본 발명이 후술되는 용어들에 한정되는 것은 아니며, 동등한 기술적 의미를 가지는 다른 용어가 사용될 수 있다.
기존의 멀티미디어 시스템은 다운로드 후 컨텐츠를 재생하는 시스템과, 스트리밍을 통해 컨텐츠를 실시간으로 전송하는 시스템으로 나눌 수 있다. 본 개시에서는 서비스 제공자(provider)가 사용자(user)에게 스트리밍을 통해 컨텐츠를 실시간으로 전송하는 시스템에 관한 것이다.
스트리밍을 통해 컨텐츠를 실시간으로 전송하는 방식의 서비스는, 서비스가 완료될 때까지 연결의 끊김(disconnect) 없이 사용자에게 컨텐츠가 제공되어야 한다. 특히, 양방향 스트리밍(예: 인터랙티브(interactive) 스트리밍)에 따른 서비스는 상대방이 송신한 컨텐츠에 즉각적으로 반응할 수 있어야 하고, 상기 컨텐츠에 따른 데이터를 상대방에게 피드백할 수 있어야 한다. 따라서, 송신단과 수신단 사이에서의 지연 시간이 중요하다. 양방향 스트리밍에서 허용하는 지연 시간은 단방향 당 최대 150(ms) 또는 양방향 최대 250(ms)로 알려져 있으나, 현장에서 상호작용하는 것과 유사한 효과를 얻으려면 100(ms) 이내의 양방향 지연시간이 필요할 수 있다. 스트리밍 서비스에서 지연시간을 극복하기 위해, 스트리밍 기법의 동작을 살펴볼 필요가 있다.
일반적인 스트리밍 기법에서는, 서버는 TCP(transmission control protocol) 소켓이 데이터를 요청하는 속도를 이용하여 현재의 네트워크 속도를 추정한다. 상기 서버는 상기 추정되는 네트워크 속도에 기반하여 스트리밍 서비스를 제공한다. 그러나, 상기 네트워크 속도의 추정값은 상기 소켓에서의 버퍼 지연을 포함될 수 있다. 상기 네트워크 속도의 추정값은 실제 네트워크 속도와는 차이가 있다. 따라서 상기 기법은 초저지연 스트리밍 시스템에서 사용하기에는 어려움이 있다.
단말이 이동하거나 네트워크 혼잡 수준이 빠른 속도로 변하여, 네트워크 속도가 지속적으로 변화할 수 있다. 상기 서버는 상기 네트워크의 상태를 정확하게 인식하지 못하는 경우, 느린 네트워크에 고품질의 스트리밍을 실어 보내려 하거나, 빠른 네트워크에 저품질의 스트리밍을 실어 보내려 하는 문제를 일으킬 수 있다. 상기 서버가 네트워크 속도에 비해 저품질의 영상을 전송하는 경우, 상기 단말이 감지하는 영상의 지연 성능 측면에서는 큰 문제가 발생하지 않는다. 그러나, 반대의 경우 스킵(skip) 현상이 심각하게 발생할 수 있다. 상기 스킵 현상은 현재 프레임에서 버퍼링 되다가 상당 수 뒤의 프레임이 나타나는 현상을 말한다.
기존의 스트리밍 기법에서, 네트워크 상태의 변화는 서버에서 통제할 수 없으므로, 서버는 정확한 네트워크 가용 대역폭을 추정할 수 없다. 따라서, 실제 네트워크 가용 대역폭값보다 낮은 값에 대응하는 스트리밍 품질을 유지하여 컨텐츠를 제공하였다. 그러나, 다양한 실시 예들에 따른 서버는 네트워크 가용 대역폭값을 정확히 추정하여, 스트리밍의 품질을 네트워크 가용 대역폭의 100% 를 활용하는 수준으로 끌어올릴 수 있다. 또한, 상기 전자 장치는 NEqS(Network-aware Equal-time Stream) 개념을 도입하여, 인코딩 시 프레임 수의 조정을 통해 저지연 및 저지터 스트리밍 시스템을 구성하는 것이 가능할 수 있다. 상기 전자 장치는 지터(jitter)가 거의 존재하지 않는 특성으로 인해 스킵 등의 스트리밍 품질 저하 문제를 제거할 수 있다. 상기 조정을 통하여 5G(5-genertion), 6G(6-generation) 등 차세대 통신 시스템에 대응되는 최저의 스트리밍 지연 성능 확보가 가능할 수 있다.
도 1은 스트리밍의 전송 및 재생에 따라 발생하는 지연(latency)을 도시한다.
상기 도 1을 참고하면, 상기 서버 110은 상기 초기 데이터 131을 인코딩 할 수 있다. 상기 초기 데이터 131은 가공되지 않은 데이터(RAW data)일 수 있다. 상기 초기 데이터 131은 상기 컨텐츠를 포함하는 RAW 데이터일 수 있다. 상기 서버 110이 인코딩 수행 시, 인코딩 지연 160이 발생할 수 있다. 상기 인코딩 지연 160은 인코더의 연산에 의해 발생하는 지연일 수 있다. 인코딩율이 높아질수록 인코더부의 동작시간이 늘어날 수 있다.
상기 서버 110은 상기 초기 데이터 131을 인코딩하여 스트림 데이터 133a을 생성할 수 있다. 상기 스트림 데이터 133a는 스트리밍 전송을 위한 데이터일 수 있다. 상기 스트림 데이터 133a는 상기 컨텐츠를 포함할 수 있다. 상기 서버 110은 상기 스트림 데이터 133a를 상기 단말 120에게 송신할 수 있다. 상기 서버 110이 상기 단말 120에게 상기 스트림 데이터 133a를 송신하는 경우, 상기 스트림 데이터 133a의 송신에 따른 네트워크 지연 170이 발생할 수 있다. 상기 단말 120은 상기 서버 110으로부터 스트림 데이터 133b를 수신할 수 있다. 상기 스트림 데이터 133b는 상기 스트림 데이터 133a에 대응될 수 있다. 상기 단말 120은 상기 스트림 데이터 133b를 디코딩 할 수 있다. 상기 단말 120이 상기 스트림 데이터 133b를 디코딩 하는 경우, 수신단에서 디코딩 지연 180이 발생할 수 있다. 높은 인코딩율로 인코딩한 경우, 상기 디코더에서 소비되는 시간은 더 늘어날 수 있다. 상기 단말 120은 스트림 데이터 133b를 디코딩 하여 재생 데이터 135를 생성할 수 있다. 상기 단말 120은 상기 재생 데이터 135를 재생할 수 있다.
상술한 바와 같이, 상기 서버 110이 상기 단말 120에게 상기 컨텐츠를 제공하는 과정에서 다양한 지연들이 발생할 수 있다. 예를 들면, 송신단에서 상기 컨텐츠를 인코딩하는 과정에서 상기 인코딩 지연 160이 발생될 수 있다. 다른 예를 들면, 송신단으로부터 수신단으로 컨텐츠가 전송되는 과정에서 상기 네트워크 지연 170이 발생할 수 있다. 또 다른 예를 들면, 수신단에서 상기 컨텐츠를 디코딩하는 과정에서 상기 디코딩 지연 180이 발생될 수 있다. 상기 인코딩 지연 160을 줄이기 위한 해결책(solution)으로 인코딩율을 적응적으로 변화시키는 방법이 고려될 수 있다. 상기 네트워크 지연 170을 줄이기 위한 해결책으로 보다 정확히 네트워크의 상태 변화를 추정하는 방법이 고려될 수 있다.
상기 컨텐츠를 끊임없이 받기 위해서, 상기 서버 110은 네트워크의 상태를 정확히 예측하는 것이 요구될 수 있다. 상기 네트워크 상태에는 네트워크 전송속도 또는 네트워크 가용 대역폭이 포함될 수 있다. 상기 네트워크 전송속도와 상기 네트워크 가용 대역폭의 관계는 하기의 수학식 1과 같다.
Figure 112015122368844-pat00001
C는 네트워크 전송속도, W는 네트워크 가용 대역폭, SNR(signal-to-noise ratio)은 신호 대 잡음 비를 나타낸다. 상기 수학식을 고려할 때, 상기 서버 110은 상기 네트워크 가용 대역폭을 추정하기 위해서, 상기 네트워크의 전송속도를 측정할 수 있다.
상기 서버 110은 추정한 네트워크 가용 대역폭값이 작은 경우에는 작은 크기로 인코딩을 할 것이 요구될 수 있다. 상기 서버 110은 네트워크 가용 대역폭값이 큰 경우에는 충분한 크기의 데이터로 인코딩을 할 수 있다. 즉, 상기 서버 110은 추정되는 네트워크 가용 대역폭값에 따라 다른 인코딩율을 적용하여 상기 단말 120에게 컨텐츠를 제공할 수 있다. 따라서 상기 서버 110은 변화를 보다 정확히 판단하고 상기 네트워크에서 발생하는 지연을 정확히 제어하기 위해서, 정확한 네트워크 가용 대역폭값을 추정할 것이 요구될 수 있다. 상기 서버 110은 보다 정확한 네트워크 가용 대역폭을 추정하기 위해 네트워크 속도를 정확하게 측정할 것이 요구될 수 있다.
도 2는 네트워크 가용 대역폭을 추정하는 제어 장치를 도시한다.
상기 도 2를 참고하면, 상기 제어 장치 200은 전송 계층 210에서 네트워크 277과 통신할 수 있다. 상기 제어 장치 200은 소켓 280을 통해 데이터를 상기 네트워크 277에게 송신할 수 있다. 상기 데이터는 상기 네트워크 277의 요청에 따른 데이터일 수 있다.
상기 제어 장치 200은 상기 네트워크 277로부터 상기 소켓 280을 통해 상기 데이터와 관련된 요청을 수신할 수 있다. 상기 수신된 데이터와 관련된 요청은 소켓 280을 통해 응용 계층 220에 제공될 수 있다. 상기 제어 장치 200은 상기 응용 계층 22에서 상기 소켓 280의 상기 데이터와 관련된 요청의 전송 속도를 측정할 수 있다. 상기 응용 계층 280은 상기 측정된 전송 속도에 기반하여 네트워크 가용 대역폭을 추정할 수 있다.
상기 네트워크 가용 대역폭은 상기 네트워크 277에서 통신이 가능하도록 하는 대역폭일 수 있다. 상기 제어 장치 200에 의해 추정되는 네트워크 가용 대역폭은 실제 네트워크 가용 대역폭과 다를 수 있다. 왜냐하면 상기 추정되는 네트워크 가용 대역폭은 상기 소켓 280에서 발생되는 지연을 고려하지 않기 때문이다. 상기 제어 장치 200은 정확한 네트워크 상태를 추정하기 어려울 수 있다.
도 3은 다양한 실시 예들에 따른 전자 장치의 기능적 블록 구성을 도시한다.
상기 도 3을 참고하면, 전자 장치 300은 컨텐츠 생성부 330, 제어부 350, 및 송신부 370을 포함할 수 있다. 상기 컨텐츠 생성부 330은 상기 제어부 350과 동작적으로 결합될 수 있다. 상기 송신부 370은 상기 제어부 350과 동작적으로 결합될 수 있다.
상기 컨텐츠 생성부 330은 컨텐츠를 생성할 수 있다. 상기 컨텐츠는 다양한 종류의 컨텐츠를 포함하는 개념일 수 있다. 예를 들면, 상기 컨텐츠는 동영상 컨텐츠일 수 있다. 다른 예를 들면, 상기 컨텐츠는 음성 컨텐츠일 수 있다. 또 다른 예를 들면, 상기 컨텐츠는 냄새 또는 촉감을 포함하는 컨텐츠일 수 있다.
상기 컨텐츠 생성부 330은 상기 생성된 컨텐츠로부터 초기 데이터를 생성할 수 있다. 상기 도 3에 도시된 예시와 달리, 상기 컨텐츠 생성부 330은 상기 전자 장치 300과 물리적으로 분리된 별도의 하드웨어로 구성될 수도 있다.
상기 제어부 350은 상기 전자 장치 300의 전송 계층에서 네트워크 가용 대역폭값을 추정할 수 있다. 상기 제어부 350은 상기 전자 장치에서 상기 다른 전자 장치까지 패킷이 왕복하는데 걸리는 시간을 측정할 수 있다. 상기 제어부 350은 상기 측정된 시간 동안 송신되는 패킷의 양을 계산할 수 있다. 상기 제어부 350은 상기 측정된 시간 및 상기 송신되는 패킷의 양에 기반하여 상기 네트워크 가용 대역폭값을 추정할 수 있다.
상기 제어부 350은 상기 혼잡 윈도우(congestion window)값을 이용하여 상기 네트워크 가용 대역폭을 추정할 수도 있다. 상기 혼잡 윈도우값은 상기 전송 계층의 전송 프로토콜에 기반하여 결정될 수 있다. 상기 제어부 350은 상기 측정된 시간 및 상기 혼잡 윈도우값에 기반하여 상기 네트워크 가용 대역폭값을 추정할 수 있다.
상기 제어부 350의 응용 계층은 상기 전송 계층으로부터 상기 네트워크 가용 대역폭을 직접 제공받을 수 있다. 상기 제어부 350은 상기 응용 계층에서, 네트워크 가용 대역폭값을 제공받기 위한 어플리캐이션을 이용할 수 있다. 상기 제어부 350은 상기 전송 계층에서, 상기 네트워크 가용 대역폭값을 추정하기 위한 전송 프로토콜을 이용할 수 있다. 예를 들면, 상기 제어부 350은 시스템 콜 (system call)을 이용하여 상기 네트워크 가용 대역폭을 제공받을 수 있다. 상기 시스템 콜은 상기 전송 프로토콜에서 미리 정의될 수 있다. 상기 제어부 350은 상기 시스템 콜을 이용하도록 상기 어플리캐이션을 제어할 수 있다.
상기 제어부 350은 상기 네트워크 가용 대역폭에 기반하여 인코딩율을 산출할 수 있다. 상기 제어부 350은 상기 인코딩율을 상기 컨텐츠 생성부 330에게 전달할 수 있다. 예를 들어, 상기 추정된 네트워크 가용 대역폭값이 작은 경우, 상기 제어부 350은 현재 인코딩율을 이전의 인코딩율보다 증가시킬 수 있다. 상기 증가된 인코딩율을 상기 컨텐츠 생성부 330에게 전달할 수 있다. 상기 컨텐츠 생성부 330은 상기 증가된 인코딩율에 따라, 생성되는 컨텐츠의 크기를 조절할 수 있다. 즉, 상기 제어부 350은 상기 컨텐츠의 품질, 상기 컨텐츠의 프레임간의 간격을 조절할 수 있다.
상기 제어부 350은 상기 추정되는 네트워크 가용 대역폭을 고려하여 상기 초기 데이터를 인코딩할 수 있다. 상기 제어부 350은 N개의 프레임을 특정 시간 이내에 전송할 수 있는 크기가 되도록 상기 초기 데이터를 인코딩을 할 수 있다. 상기 제어부 350은 상기 네트워크 가용 대역폭에 기반하여 상기 특정 시간을 결정할 수 있다. 상기 제어부 350은 중앙 처리 장치(CPU) 또는 그래픽 처리 장치(GPU) 중 적어도 하나를 이용하여, 상기 초기 데이터를 인코딩할 수 있다. 상기 제어부 350은 상기 인코딩된 데이터로부터 스트림 데이터를 생성할 수 있다.
상기 송신부 370은 상기 제어부 350으로부터 상기 스트림 데이터를 전달받을 수 있다. 상기 송신부 370은 네트워크망을 통하여 다른 장치에게 상기 스트림 데이터를 송신할 수 있다. 상기 네트워크망은 무선 네트워크망 또는 유선 네트워크망일 수 있다. 상기 송신부 370은 시스템의 물리 계층 규격에 따라 RF(radio frequency) 신호, 기저대역 신호 간 변환 기능을 수행할 수 있다. 무선 네트워크에서 데이터 송신 시, 상기 송신부 370은 적어도 하나의 안테나를 통해 RF 신호를 송신하고, RF 신호에 대한 처리 후, 기저대역 신호로 상향변환하고, 디지털 신호로 변환한다. 예를 들면, 상기 송신부 370은 송신 필터, 증폭기, 믹서(mixer), 오실레이터(oscillator), DAC(digital to analog convertor), ADC(analog to digital convertor) 등을 포함할 수 있다. 다수의 송신 안테나들이 구비된 경우, 상기 송신부 370은 다수의 RF 체인들을 포함할 수 있다.
도 4는 다양한 실시 예들에 따른 제어부의 기능적 블록 구성을 도시한다. 상기 블록 구성은 상기 도 3에 도시된 상기 제어부 350에 포함될 수 있다.
상기 도 4를 참고하면, 상기 제어부 350은 네트워크 가용 대역폭 추정부 452, 인코딩 제어부 454, 인코딩부 456, 스트림 데이터 생성부 458을 포함할 수 있다.
상기 네트워크 가용 대역폭 추정부 452는 상기 전자 장치 300의 전송 계층에서 상기 네트워크 가용 대역폭값을 추정할 수 있다. 상기 네트워크 가용 대역폭 추정부 452는 상기 네트워크 가용 대역폭값을 추정 하기 위하여 네트워크의 전송 속도를 측정할 수 있다. 상기 네트워크 가용 대역폭 추정부 452는 상기 전송 계층에서 상기 네트워크 전송 속도를 추정할 수 있다. 상기 전송 계층은 전송 프로토콜을 포함할 수 있다. 상기 전송 프로토콜은 TCP(transport layer protocol) 또는 UDP(user datagram protocol)를 포함할 수 있다. 상기 네트워크 가용 대역폭 추정부 452는 상기 전송 프로토콜에 의해 산출된 전송 윈도우 값을 활용하여, 상기 네트워크 가용 대역폭을 추정할 수 있다. 일부 실시 예에서, 응용 계층이 아닌 전송 계층에서 상기 네트워크 가용 대역폭을 추정하기 위해, 상기 네트워크 가용 대역폭 추정부 452는 전송 프로토콜(예를 들면, TCP 또는 UDP)에 전송 속도 추정 모듈을 삽입할 수 있다. 상기 네트워크 가용 대역폭 추정부 452는 상기 전송 속도 추정 모듈을 통해 전송 계층에서 직접 상기 네트워크 가용 대역폭을 추정할 수 있다.
상기 네트워크 가용 대역폭 추정부 452는 상기 전자 장치에서 상기 다른 전자 장치까지 패킷이 왕복하는데 걸리는 시간을 측정할 수 있다. 상기 네트워크 가용 대역폭 추정부 452는 상기 패킷이 다른 전자 장치에게 송신된 시점과 상기 패킷에 대응하여 상기 다른 전자 장치로부터 확인 응답 메시지(acknowledgement, ACK)를 수신하는 시점 사이의 간격(interval)을 측정할 수 있다. 상기 간격은 상기 측정된 시간일 수 있다. 상기 측정된 시간은 RTT(round trip time)일 수 있다.
상기 네트워크 가용 대역폭 추정부 452는 상기 시간 동안 송신되는 패킷의 양을 계산할 수 있다. 네트워크 상태가 상대적으로 불량하여 패킷의 손실이 발생하는 경우, 상기 시간 동안 상기 다른 전자 장치에게 송신되는 패킷의 양은 감소될 수 있다. 상기 네트워크 가용 대역폭 추정부 452는 상기 손실되는 패킷의 양을 고려하여, 상기 패킷의 양을 다시 산출할 수 있다. 상기 네트워크 가용 대역폭 추정부 452는 재전송 알고리즘을 이용하여 상기 패킷의 양을 다시 산출할 수 있다.
상기 네트워크 가용 대역폭 추정부 452는 상기 측정된 시간 및 상기 송신되는 패킷의 양에 기반하여 상기 네트워크 가용 대역폭값을 추정할 수 있다. 상기 네트워크 가용 대역폭 추정부 452는 상기 송신되는 패킷의 양에 상기 측정된 시간을 나누어 상기 네트워크 가용 대역폭값을 추정할 수 있다.
상기 네트워크 가용 대역폭 추정부 452는 상기 시간에 대응하는 혼잡 윈도우값(congestion window)을 계산할 수 있다. 상기 혼잡 윈도우는 혼잡 제어 알고리즘에서의 윈도우 값을 의미할 수 있다. 혼잡(congestion)은 네트워크 내에서 대기하는 패킷 수가 상기 네트워크의 처리 용량을 초과하는 현상을 의미할 수 있다. 즉, 상기 혼잡 현상은 네트워크에서의 큐(queue)가 포화상태에 이르러 패킷의 송신이 취소되는 현상을 의미할 수 있다. 상기 혼잡 제어 알고리즘은 상기 네트워크 내의 대기하는 패킷 수를 줄여 상기 혼잡을 미연에 방지하거나 제어하는 기법일 수 있다. 상기 혼잡 제어 알고리즘은 상기 혼잡 윈도우를 사용할 수 있다. 상기 혼잡 윈도우는 네트워크의 상태가 포화될 때까지 다양한 방식으로 증가할 수 있다. 이러한 방식은 전송 프로토콜에 따라 다양할 수 있다. 상기 전송 프로토콜은 TCP RENO 또는 TCP TAHO일 수 있다. 상기 네트워크 가용 대역폭 추정부 452는 상기 측정된 시간 및 상기 계산된 혼잡 윈도우값에 기반하여 상기 네트워크 가용 대역폭값을 추정할 수 있다. 상기 네트워크 가용 대역폭 추정부 452는 상기 계산된 혼잡 윈도우 값을 상기 측정된 시간으로 나누어 상기 네트워크 가용 대역폭값을 추정할 수 있다. 패킷의 손실이 거의 없거나 전혀 없는 경우 또는 송신할 패킷이 충분하지 않은 경우, 상기 네트워크 가용 대역폭 추정부 452는 혼잡 윈도우를 사용하는 방식이 상기 패킷의 양을 계산하는 방식보다 유용할 수 있다.
상기 전송 프로토콜은 커널(kernel)에 의해 구현될 수 있다. 상기 커널은 리눅스(Linux) 운영체제 하에서 제공되는 리눅스 커널일 수 있다. 상기 커널은 상기 네트워크 가용 대역폭을 추정하기 위해 하드웨어를 제어할 수 있다. 상기 하드웨어는 상기 네트워크 가용 대역폭을 추정할 수 있다. 상기 커널은 상기 전자 장치 300의 응용 계층에서 실행되는 어플리캐이션을 대신하여, 상기 하드웨어를 제어하는 기능을 수행할 수 있다. 상기 커널은 상기 어플리캐이션의 실행에 대응하여 동작하는 프로그램일 수 있다. 상기 요청은 상기 추정되는 네트워크 가용 대역폭값을 요구할 수 있다. 상기 요청은 상기 추정되는 네트워크 가용 대역폭값을 요구하는 시스템 콜(system call)일 수 있다.
상기 인코딩 제어부 454는 응용 계층(예를 들면, 상기 도 2에 도시된 상기 응용 계층 220)에 포함될 수 있다.
상기 인코딩 제어부 454는 상기 네트워크 가용 대역폭 추정부 452로부터 상기 네트워크 가용 대역폭값을 직접 제공받을 수 있다. 상기 인코딩 제어부 454는 소켓(예를 들면, 상기 도 2에 도시된 상기 소켓 280)을 거치지 않고 상기 네트워크 가용 대역폭 추정부 452로부터 상기 네트워크 가용 대역폭값을 직접 제공받음으로써 불필요한 지연 시간(예를 들면, 소켓에 따른 지연 시간)을 감소시킬 수 있다. 예를 들면, 상기 인코딩 제어부 454는 시스템 콜(system call)을 이용하여 상기 전송 프로토콜에서 추정된 네트워크 가용 대역폭값을 제공받을 수 있다. 상기 전송 프로토콜은 상기 응용계층에서 생성된 소켓과 연동될 수 있다. 상기 시스템 콜을 이용하기 위해서, 상기 전자 장치 300은 상기 커널을 수정하여 재컴파일 할 수 있다.
상기 인코딩 제어부 454는 상기 시스템 콜을 미리 정의할 수 있다. 상기 시스템 콜은 상기 커널의 시스템 콜 인터페이스에서 제공되는 시스템 콜이 아닐 수 있다. 따라서, 상기 인코딩 제어부 454는 상기 커널의 수정 및 재컴파일을 수행할 수 있다. 모든 시스템 콜은 각각 고유한 번호를 가질 수 있다. 상기 시스템 콜 인터페이스는 상기 모든 시스템 콜의 번호를 관리하는 시스템 콜 테이블을 가질 수 있다. 상기 인코딩 제어부 454는 상기 시스템 콜의 번호를 할당 받을 수 있다. 상기 인코딩 제어부 454는 상기 시스템 콜 테이블에 상기 번호를 등록할 수 있다. 상기 인코딩 제어부 454는 상기 시스템 콜의 함수를 구현한 뒤 상기 커널에 컴파일할 수 있다. 즉, 상기 인코딩 제어부 454는 상기 시스템 콜 인터페이스를 업데이트할 수 있다.
상기 인코딩 제어부 454는 상기 미리 정의한 시스템 콜을 사용할 수 있다. 상기 인코딩 제어부 454는 상기 시스템 콜을 사용하기 위해 어플리캐이션을 제어할 수 있다. 상기 인코딩 제어부 454는 상기 정의된 시스템 콜을 사용하여, 상기 네트워크 가용 대역폭을 추정하도록 상기 어플리캐이션을 제어할 수 있다. 상기 인코딩 제어부 454는 상기 어플리캐이션을 통해 상기 시스템 콜을 실행할 수 있다. 상기 시스템 콜이 실행되는 경우, 상기 인코딩 제어부 454는 상기 전송 프로토콜로부터 네트워크 가용 대역폭의 추정값을 직접 제공받을 수 있다. 상기 인코딩 제어부 454는 상기 추정값을 직접 제공받음으로써, 소켓의 버퍼로 인한 지연이 없는 네트워크 가용 대역폭값을 획득할 수 있다.
상기 인코딩 제어부 454는 상기 네트워크 가용 대역폭에 기반하여 인코딩율을 산출할 수 있다. 상기 네트워크 가용 대역폭의 값이 큰 경우, 상기 인코딩 제어부 454는 낮은 인코딩율을 적용할 수 있다. 반대로, 상기 네트워크 가용 대역폭의 값이 작은 경우, 상기 인코딩 제어부 454는 높은 인코딩율을 적용할 수 있다. 상기 인코딩 제어부 454는 인코딩부 456에게 원하는 인코딩율을 적용하도록 명령을 전달할 수 있다. 또한, 상기 인코딩 제어부 454는 상기 도 3의 컨텐츠 생성부 330에게 상기 인코딩율을 전달할 수 있다. 상기 컨텐츠 생성부는 상기 인코딩율에 기반하여 컨텐츠를 생성할 수 있다. 상기 인코딩 제어부 454는 상기 컨텐츠의 품질, 상기 컨텐츠의 프레임간의 간격을 결정할 수 있다. 상기 인코딩 제어부 454는 상기 컨텐츠 생성부 330을 이용하여 RAW 데이터를 생성할 수 있다. 상기 RAW 데이터는 가공하지 않은 데이터를 의미할 수 있다.
상기 인코딩 제어부 454는 상기 인코딩부 456에게 원하는 인코딩율을 적용할 수 있다. 상기 인코딩 제어부 454는 특정 형태의 GOP(group of picture) 구조로 인코딩을 상기 도 3의 컨텐츠 생성부 330에게 명령을 전달할 수 있다. 상기 GOP 는 MPEG(Moving Picture Expert Group)에서 정하는 표준을 따를 수 있다. 상기 표준에 따를 때, 상기 GOP는 세 종류의 프레임을 가질 수 있다. 상기 GOP는 상기 I-프레임, P-프레임, 및/또는 B-프레임의 조합에 의해 구성될 수 있다. 예를 들면, 상기 GOP는 'I B ... B P B ... B P'의 반복으로 구성될 수 있다. 다른 예를 들면, 상기 GOP는 'I P ... P'의 반복으로 구성될 수 있다. 상기 세 종류의 프레임은 I-프레임(Intra-coded frame), P-프레임(Predicted frame), B-프레임(Bi-predictive frame)일 수 있다. 상기 I-프레임은 독립적인 프레임일 수 있다. 상기 P-프레임은 상기 I-프레임과 관련된 프레임일 수 있다. 예를 들면, 상기 P-프레임은 상기 P-프레임의 앞에 위치되는 I-프레임에 기반하여 생성될 수 있다. 상기 B-프레임은 상기 I-프레임, P-프레임, 및 B-프레임 중 적어도 하나와 관련된 프레임일 수 있다. 예를 들면, 상기 B-프레임은 상기 B-프레임 앞에 위치되는 I-프레임, P-프레임, 또는 B-프레임과 상기 B-프레임의 뒤에 위치되는 I-프레임, P- 프레임 또는 B-프레임에 기반하여 생성될 수 있다. 상기 B-프레임은 영상의 압축율을 향상시킬 수 있지만, 이에 대한 트레이드 오프(trade off)로 인코딩 시간을 지연시킬 수 있다. 인코딩 시간의 지연을 줄이기 위하여, 상기 인코딩 제어부 454는 I-프레임 및/또는 P-프레임으로 인코딩된 데이터가 구성되도록 압축 효율과 인코딩 지연을 결정할 수 있다. 따라서 상기 인코딩 제어부 454는 적절한 I-프레임 대 P-프레임 비율을 선택하여야 한다. 상기 비율은 선행적으로 결정될 수도 있다. 또는 상기 인코딩 제어부 454는 인코딩율에 맞춰 적응적으로 상기 비율을 결정할 수 있다. 상기 인코딩 제어부 454는 I-프레임의 비율을 높여서 연속성을 높일 수 있다.
상기 인코딩 제어부 454는 상기 인코딩부 456에 N개의 프레임 단위로 구성된 GOP 구조를 전달하여 N개의 프레임 단위로 인코딩을 하게 할 수 있다. 상기 N은 자연수일 수 있다. 상기 인코딩 제어부 454는 상기 GOP 구조에 기반하여 상기 N을 결정할 수 있다. 상기 인코딩 제어부 454는 상기 인코딩부 456이 상기 N개의 프레임을 특정 시간 이내에 전송할 수 있는 크기가 되도록 인코딩을 하게 할 수 있다. 상기 N개의 프레임에 대한 스트림 데이터를 NEqS(Network-aware Equal-time Stream)으로 칭할 수 있다. 상기 NEqS는 등간격으로 캡쳐된 N개의 프레임에 대한 스트림 데이터 이므로, 상기 N개의 프레임에 대응하는 재생 시간을 보장하는 데이터일 수 있다. 상기 NEqS 에 해당하는 스트림 데이터의 품질이 특별히 높아야 하거나, 특별히 낮아야 하는 경우, 상기 인코딩 제어부 454는 멀티미디어 캡쳐 장치에 명령하여 캡쳐의 품질을 높이거나 낮추도록 지시할 수 있다. 고품질 데이터를 저품질로 인코딩하거나 저품질 데이터를 고품질로 인코딩하는 경우, 상기 인코딩 제어부 454는 인코딩의 시간 및 인코딩에 대한 비효율을 사전에 차단할 수 있다.
상기 인코딩 제어부 454는 상기 네트워크 가용 대역폭에 기반하여 상기 특정 시간을 결정할 수 있다. 상기 특정 시간은 네트워크 지연 시간 및 인코딩 지연 시간을 포함할 수 있다. 예를 들면, 상기 특정 시간은, 컨텐츠의 송신을 결정한 시점부터 상기 다른 전자 장치에게 상기 컨텐츠에 대응하는 NEqS가 수신되는 시점까지의 시간일 수 있다. 상기 전자 장치 300은 상기 NEqS에 해당하는 데이터를 상기 다른 전자 장치에게 송신하기로 결정한 시점에 인코딩을 개시할 수 있다. 상기 인코딩을 통해 NEqS가 생성된 경우, 상기 전자 장치 300은 상기 생성된 NEqS를 상기 다른 전자 장치에게 송신할 수 있다.
상기 인코딩부 456은 초기 데이터를 인코딩할 수 있다. 상기 인코딩부 456은 상기 초기 데이터를 내장된 메모리로부터 획득할 수 있다. 상기 인코딩부 456은 상기 컨텐츠 생성부 330으로부터 상기 초기 데이터를 직접 획득할 수도 있다. 상기 인코딩부 456은 상기 인코딩된 데이터를 스트림 데이터 생성부 458에게 전달할 수 있다.
상기 인코딩부 456은 중앙 처리 장치(CPU)를 이용하여, 상기 초기 데이터를 인코딩할 수 있다. 상기 CPU는 산술 논리 유닛(arithmetic and logic unit, ALU)을 가질 수 있다. 상기 인코딩부 456은 상기 산술 논리 유닛을 이용하여 상기 초기 데이터를 인코딩할 수 있다. 상기 CPU는 두 개의 코어를 가진 듀얼코어, 4개의 코어를 가진 쿼드코어, 6개의 코어를 가진 헥사코어, 8개의 코어를 가진 옥타코어일 수 있다. 상기 CPU는 다수의 코어를 가질 수 있다. 상기 코어의 수가 증가할 수록 상기 산술 논리 유닛의 수 역시 증가하게 되므로, 상기 CPU의 성능은 증가할 수 있다. 코어의 수가 많을 수록 다중작업(multi-tasking)을 하거나 다중 연산을 하는 데에 있어서 장점이 있다. 인코딩은 작은 단위의 다중 연산으로 이루어지므로, 상기 인코딩부 456은 다수의 코어를 갖는 CPU를 필요로 할 수 있다.
상기 인코딩부 456은 그래픽 처리 장치(GPU)를 이용하여, 상기 초기 데이터를 인코딩할 수 있다. GPU는 일반적으로, CPU보다 많은 수의 산술 논리 유닛을 가질 수 있다. GPU는 일반적으로, CPU보다 많은 수의 코어를 가질 수 있다. 예를 들면, CPU는 2개, 4개, 8개, 16개의 코어를 가지는 반면, GPU는 수백개의 코어를 가질 수 있다. 따라서 다중 연산을 하는 데에 있어서 GPU가 CPU 보다 우수한 성능을 가질 수 있다. 인코딩은 작은 단위의 다중 연산으로 이루어질 뿐만 아니라, 반드시 CPU가 필요한 정도의 복잡한 연산이 아니므로, 상기 인코딩부 456은 GPU가 필요할 수 있다. 또한, 인코딩 동작 중, 일부 연산은 CPU가 GPU보다 더 나은 성능을 보일 수 있다. 예를 들면, 본 개시의 다양한 실시 예들에 따른 NEqS를 생성하는 경우, 단순한 인코딩 외에 NEqS를 생성하기 위한 연산이 전반적으로 걸쳐 진행될 수 있다. 따라서 상기 인코딩부 456은 상기 CPU 와 GPU의 협업을 통하여 인코딩 지연시간의 단축을 도모할 수 있다.
상기 스트림 데이터 생성부 458은 상기 인코딩부 456으로부터 인코딩된 데이터를 전달받을 수 있다. 상기 스트림 데이터 생성부 458은 상기 인코딩된 데이터로부터 스트림 데이터를 생성할 수 있다. 상기 스트림 데이터 생성부 458은 상기 인코딩의 결과로 스트림이 생성되기 시작하면, 상기 스트림 데이터의 흐름을 통제하여 전송 속도를 제어할 수 있다. 상기 스트림 데이터 생성부 458은 상기 스트림 데이터를 상기 도 3의 송신부 370에게 전달할 수 있다.
상기 송신부 370은 상기 스트림 데이터를 소켓을 활용하여 전송 프로토콜로 전달할 수 있다. 전자 장치 300은 상기 소켓으로 전달하는 상기 스트림 데이터의 양과 상기 스트림 데이터가 전달되는 시간을 제어하여 상기 스트림 데이터가 소켓으로 전달되는 속도를 제어할 수 있다. 상기 송신부 370은 상기 전송 프로토콜을 통하여 다른 전자 장치로 상기 생성된 스트림 데이터를 송신할 수 있다. 상기 다른 전자 장치는 상기 스트림 데이터를 수신하는 즉시 디코딩을 할 수 있다. 전술한대로, B-프레임을 사용하게 되면, 상기 B-프레임 이후에 등장하는 P-프레임이 수신되기 전까지는 상기 B-프레임을 디코딩 할 수 없어 추가 지연이 발생하므로, 상기 다른 전자 장치는 I-프레임과 P-프레임을 사용할 수 있다.
도 5는 다양한 실시 예들에 따른 전자 장치의 구성을 도시한다.
상기 도 5를 참고하면, 상기 전자 장치 300은 전송 프로토콜 510과 어플리캐이션 520을 포함할 수 있다. 상기 전송 프로토콜 510은 전송 계층에 대응될 수 있다. 상기 어플리캐이션 520은 응용 계층에 대응될 수 있다. 상기 전자 장치 300은 컨텐츠 생성부 330, 네트워크 가용 대역폭 추정부 452, 인코딩 제어부 454, 인코딩부 456, 송신부 370, 소켓 580을 포함할 수 있다. 상기 전자 장치 300은 상기 컨텐츠 생성부 330에서 생성된 컨텐츠를 인코딩할 수 있다. 상기 전자 장치 300은 메모리에 저장된 컨텐츠를 인코딩 할 수 있다. 일부 실시 예에서, 상기 컨텐츠 생성부 330은 상기 전자 장치 300과 별도의 하드웨어로 구성될 수 있다.
상기 네트워크 가용 대역폭 추정부 452는 상기 전송 프로토콜 510에서의 데이터 흐름을 이용하여, 네트워크 가용 대역폭값을 추정할 수 있다. 상기 인코딩 제어부 454는 상기 전송 프로토콜 510으로부터 상기 어플리캐이션 520에서 상기 네트워크 가용 대역폭값을 직접 제공받을 수 있다.
상기 인코딩 제어부 454는 상기 어플리캐이션 520을 이용하여 상기 네트워크 가용 대역폭값을 직접 제공받을 수 있다. 상기 인코딩 제어부 454는 상기 추정된 네트워크 가용 대역폭에 기반하여 새로운 네트워크 속도를 계산할 수 있다. 상기 인코딩 제어부 454는 상기 응용 계층에서, 상기 네트워크 속도에 상응하는 인코딩율을 계산할 수 있다. 상기 인코딩 제어부 454는 상기 인코딩부 456로 상기 계산된 인코딩율을 전달할 수 있다. 상기 인코딩부 456은 초기 데이터를 상기 인코딩율에 기반하여 인코딩을 할 수 있다.
상기 전자 장치 300은 상기 초기 데이터를 인코딩하여 스트림 데이터를 생성할 수 있다. 상기 송신부 370은 상기 스트림 데이터를 전달받을 수 있다. 상기 송신부 370은 상기 소켓 580, 상기 전송 프로토콜 510, 및 네트워크 577을 통하여, 다른 장치에게 상기 스트림 데이터를 송신할 수 있다.
일부 실시 예에서, 상기 인코딩 제어부 454는 응용 계층뿐만 아니라 전송 계층에 포함될 수 있다. 예를 들면, 상기 인코딩 제어부 454는 상기 전송 프로토콜 510에 포함될 수 있다. 상기 인코딩 제어부 454는 상기 전송 프로토콜로부터 네트워크 가용 대역폭을 제공받을 수 있다. 상기 인코딩 제어부 454는, 상기 네트워크 가용 대역폭을 응용 계층의 어플리캐이션 520으로 직접 전달할 수 있다.
상기 인코딩 제어부 454는 산출되는 인코딩율을 컨텐츠 생성부 330에게 전달할 수 있다. 상기 컨텐츠 생성부 330은 상기 인코딩율에 기반하여 컨텐츠를 생성할 수 있다. 예를 들어, 상기 인코딩율이 높은 경우, 상기 컨텐츠 생성부 330은 품질을 낮추어 컨텐츠를 생성할 수 있다. 상기 컨텐츠의 품질이 낮아지는 경우, 인코딩부 456은 인코딩의 연산이 줄어들 수 있다. 상기 인코딩 부 456은 적은 연산의 인코딩을 통하여, 적은 지연 시간 동안 초기 데이터를 인코딩할 수 있다.
상기 장치 300은 기존 스트리밍 기법을 지원하는 장치보다 네트워크 가용 대역폭을 최대한 활용할 수 있다. 예를 들면, 상기 장치가 추정하는 네트워크 가용 대역폭이 10인 경우, 상기 장치는 안정적인 스트리밍 서비스를 제공하기 위하여 상기 네트워크 가용 대역폭을 2로 결정할 수 있다. 상기 장치는 상기 네트워크 가용 대역폭에 기반하여 인코딩율을 설정 및 데이터를 송신한다. 그러나, 상기 전자 장치 300은 상기 네트워크 가용 대역폭을 8로 보고, 인코딩율을 설정 및 데이터를 송신할 수 있다. 상기 전자 장치 300은 상기 네트워크 가용 대역폭을 보다 정확하게 추정할 수 있다. 상기 전자 장치 300은 상기 네트워크 가용 대역폭을 정확하게 추정하므로, 안정적인 서비스를 제공하기 위하여 스케일 다운을 하지 않을 수 있다. 상기 전자 장치 300은 네트워크 상황이 아주 열악한 경우에도 대응할 수 있다.
도 6은 다양한 실시 예들에 따른 제어 장치를 도시한다. 상기 제어 장치 600은 상기 전자 장치 300에 포함될 수 있다. 상기 제어 장치 600은 상기 전자 장치 300의 전송 계층에서 상기 전자 장치의 응용 계층으로 네트워크 가용 대역폭값을 직접 제공하는 동작을 수행할 수 있다.
상기 도 6은 상기 전자 장치 300의 논리적 프로토콜 구조를 도시하며, 상기 전자 장치 300의 프로토콜 구조는 전송 계층 610과 응용 계층 620을 포함할 수 있다. 상기 전송 계층 610은 상기 도 5의 전송 프로토콜 510에 대응하고, 상기 응용 계층 620은 상기 도 5의 어플리캐이션 520에 대응할 수 있다. 상기 제어 장치 600은 상기 전송 계층 610에서 네트워크 677과 통신할 수 있다. 상기 제어 장치 600은 상기 네트워크 677을 통하여, 상기 전송 계층 610에서 네트워크 가용 대역폭값을 추정할 수 있다.
상기 전송 계층 610 내의 전송 프로토콜은 커널에 구현되어 있을 수 있다. 상기 커널은 리눅스 커널일 수 있다. 상기 커널은 네트워크 가용 대역폭값을 추정하기 위한 하드웨어를 제어할 수 있다. 상기 커널은 상기 응용 계층 620에서 실행되는 어플리캐이션을 대신하여 상기 하드웨어를 제어하는 기능을 수행할 수 있다. 상기 어플리캐이션은 상기 하드웨어가 추정하는 상기 네트워크 가용 대역폭값을 요청하는 응용 프로그램일 수 있다. 상기 어플리캐이션은 상기 커널에 접근하기 위한 응용 프로그램일 수 있다. 즉, 상기 어플리캐이션은 시스템 콜(system call)을 실행하기 위한 응용 프로그램일 수 있다.
상기 커널은 다수의 시스템 콜들을 포함할 수 있다. 상기 커널은 상기 다수의 시스템 콜들을 포함하는 시스템 콜 인터페이스(system call interface)를 포함할 수 있다. 상기 시스템 콜 인터페이스는 시스템 콜 테이블을 포함할 수 있다. 상기 다수의 시스템 콜은 각각 고유 번호를 가질 수 있다. 상기 시스템 콜 테이블은 상기 다수의 시스템 콜 각각의 고유 번호를 저장할 수 있다. 일반적으로, 시스템 콜 인터페이스는 네트워크 가용 대역폭값을 제공받기 위한 시스템 콜을 포함하지 않을 수 있다. 그러나 일 실시 예에 따라, 상기 전자 장치 600의 관리자, 사용자 또는 서비스 제공자(이하, 관리자)는 상기 네트워크 가용 대역폭값을 제공받기 위한 시스템 콜을 미리 정의할 수 있다. 상기 관리자는 상기 커널에 새로운 서비스를 제공하는 상기 시스템 콜을 미리 정의하기 위하여, 상기 시스템 콜의 고유 번호를 할당 받을 수 있다. 상기 관리자는 상기 시스템 콜 테이블에 상기 고유 번호를 저장할 수 있다. 상기 관리자는 상기 시스템 콜 테이블에 상기 시스템 콜의 번호를 등록할 수 있다. 상기 관리자는 상기 시스템 콜의 함수를 구현하여 상기 커널에 컴파일을 할 수 있다. 즉, 상기 관리자는 사전에 상기 시스템 콜 인터페이스를 업데이트할 수 있다.
상기 제어 장치 600은 상기 응용 계층 620에서, 상기 전송 계층 610으로부터 상기 네트워크 가용 대역폭을 직접 제공받을 수 있다. 기존의 스트리밍 방식과 대비할 때, 소켓에서의 버퍼를 고려하지 않으므로, 상기 제어 장치 600은 불필요한 지연 시간이 반영되지 않은 상기 네트워크 가용 대역폭값을 획득할 수 있다. 상기 제어 장치 600은 상기 응용 계층 620에서 시스템 콜을 이용할 수 있다. 상기 제어 장치 600은 상기 전송 프로토콜에서 추정된 네트워크 가용 대역폭값을 제공받을 수 있다. 상기 제어 장치 600은 상기 시스템 콜을 이용하는 경우, 상기 전송 프로토콜에 직접 접근할 수 있다. 상기 시스템 콜을 이용하기 위해서, 상기 제어 장치 600은 상기 커널의 수정 및 재컴파일을 할 수 있다.
상기 제어 장치 600은 상기 어플리캐이션을 통하여 상기 시스템 콜을 실행할 수 있다. 상기 시스템 콜에 대응하여, 상기 커널은 상기 특정 시스템 콜에 대응하는 고유 번호를 참조하여, 명령을 수행할 수 있다. 상기 전자 장치 300은 상기 제어 장치 600을 통하여, 상기 커널로부터 상기 네트워크 가용 대역폭의 값을 제공받을 수 있다.
도 7은 다양한 실시 예들에 따른 NEqS(network-aware equal-time stream)를 도시한다. 상기 NEqS는 상기 도 3의 제어부 350에서 생성될 수 있다. 상기 제어부 350은 초기 데이터를 N개의 프레임으로 구분할 수 있다. 언제나 N개의 프레임 단위로 인코딩할 수 있다. 상기 N은 자연수일 수 있다. 상기 제어부 350은 I-프레임, P-프레임으로 구성되는 GOP 구조에 기반하여 상기 N개의 프레임을 결정할 수 있다. 상기 N개의 프레임은 NEqS(Network-aware Equal-time Stream)로 지칭될 수 있다. 상기 NEqS는 대등한 간격으로 캡쳐된 N개의 프레임에 대한 스트림 데이터일 수 있다. 상기 간격은 시간일 수 있다. 상기 NEqS는 상기 N개의 프레임에 대응하는 재생 시간을 보장하는 데이터일 수 있다. 상기 제어부 350은 다른 장치로 특정 시간 이내에 상기 NEqS를 송신할 수 있다.
상기 도 7을 참고하면, 프레임 유닛들 720은 N개의 프레임을 포함한다. 상기 N개의 프레임을 프레임 유닛이라고 지칭할 수 있다. 상기 프레임 유닛들 720은 프레임 유닛 722, 프레임 유닛 724, 프레임 유닛 726, 프레임 유닛 728을 포함할 수 있다. 상기 제어부 350은 인코딩을 통하여 상기 프레임 유닛들 720으로부터 스트림 데이터들 740을 생성할 수 있다. 상기 스트림 데이터 740은 NEqS 742, NEqS 744, NEqS 746, NEqS 748을 포함할 수 있다. 상기 NEqS 742는 상기 프레임 유닛 722, 상기 NEqS 744는 상기 프레임 유닛 724, 상기 NEqS 746은 상기 프레임 유닛 726, 상기 NEqS 748은 상기 프레임 유닛 728에 대응될 수 있다. 상기 NEqS들은 모두 N개의 프레임을 가지지만, 다른 데이터 크기(예: mega byte, MB)를 가질 수 있다. 즉, 상기 NEqS의 세로축은 서로 상이할 수 있다. 상기 NEqS의 세로축이 다른 것은 서로 다른 데이터 크기를 가짐을 나타낼 수 있다. 상기 NEqS의 데이터 크기가 서로 다른 것은 상기 NEqS 각각이 갖는 품질, 용량이 다름을 의미할 수 있다. 상기 NEqS에 해당하는 스트림 데이터의 품질이 특별히 높아야 하거나, 특별히 낮아야 하는 경우, 상기 제어부 350은 컨텐츠 생성부에 명령하여 캡쳐의 품질을 높이거나 낮추도록 지시할 수 있다. 상기 지시로, 상기 제어부 350은 고품질 데이터를 저품질로 인코딩하거나 그 반대의 경우 발생할 수 있는 인코딩의 시간 및 인코딩율에 대한 비효율을 미리 차단할 수 있다.
상기 스트림 유닛 각각의 가로축은 상기 스트림 유닛 각각의 인코딩 지연(encoding latency)에 대응될 수 있다. 상기 스트림 유닛 746의 가로축은 인코딩 지연 760에 대응될 수 있다. 상기 스트림 유닛간의 간격은 네트워크 지연(network latency)에 대응될 수 있다. 상기 스트림 유닛 744와 상기 스트림 유닛 746사이의 간격은 네트워크 지연 770에 대응될 수 있다. 상기 네트워크 지연 및 인코딩 지연시간의 합은 허용 시간일 수 있다.
본 개시의 다양한 실시 예들에 따를 때, 상기 제어부 350은 상기 네트워크 가용 대역폭에 기반하여 상기 허용 시간을 결정할 수 있다. 상기 네트워크 가용 대역폭이 정확하게 추정될수록, 상기 허용 시간의 계산이 효율적일 수 있다. 상기 제어부 350을 포함하는 전자 장치 300은 상기 허용 시간을 결정할 수 있다. 상기 전자 장치 300이 상기 다른 전자 장치로 특정 데이터를 송신하기로 결정한 시점부터 상기 다른 전자 장치가 상기 특정 데이터에 대응하는 NEqS를 수신하기까지의 시간이 상기 허용 시간일 수 있다. 상기 전자 장치 300은 상기 NEqS에 해당하는 데이터를 상기 다른 전자 장치로 송신하기로 결정한 시점에 인코딩을 시작할 수 있다. 상기 전자 장치 300은 상기 NEqS를 상기 인코딩이 끝난 시점부터 상기 다른 전자 장치로 전송할 수 있다. 상기 송신하기로 결정한 시점부터 상기 인코딩이 끝나는 시점은 인코딩 지연, 상기 인코딩이 끝나는 시점부터 상가 다른 전자 장치가 상기 NEqS를 수신하는 시점은 네트워크 지연에 대응될 수 있다. N개의 프레임으로 숫자가 동일하므로, 상기 전자 장치 300과 상기 다른 전자 장치에서 재생되는 시간은 동일할 수 있다.
도 8은 다양한 실시 예들에 따른 NEqS의 적용 예를 도시한다. 상기 NEqS의 생성 및 전송은 상기 도 3의 제어부 350에 의해 수행될 수 있다.
상기 도 8(a)를 참고하면, 데이터 820a는 12 MB의 크기를 가질 수 있다. 네트워크 상태 877a는 전송속도 4Mbps를 가질 수 있다. 허용 시간을 3초라고 가정하면, 상기 데이터 820a는 특별한 압축과정 없이 전송될 수 있다. 따라서 수신측은 12 MB의 크기를 가지는 데이터 880a를 수신할 수 있다.
상기 도 8(b)를 참고하면, 데이터 820b는 12 MB의 크기를 가질 수 있다. 네트워크 상태 877b는 전송속도 2Mbps를 가질 수 있다. 허용 시간을 상기 도 8(a)와 동일한 3초라고 가정하면, 상기 데이터 820b는 압축과정이 필요할 수 있다. 상기 데이터 820b의 상기 압축과정을 통해 NEqS 840이 생성될 수 있다. 상기 NEqS의 생성은 동작 845와 같은 순서로 이루어질 수 있다. 첫째로, 상기 제어부 350은 전송속도와 허용시간을 곱하여, 생성되어야 하는 데이터의 크기를 결정할 수 있다. 둘째로, 상기 제어부 350은 상기 데이터 820b를 상기 생성되어야 하는 데이터의 크기로 인코딩할 수 있다. 상기 인코딩을 통하여, 상기 제어부 350은 NEqS를 생성할 수 있다.
상기 도 8(a), 상기 도 8(b)를 참고하면, 상기 제어부 350은 고정된 허용 시간 3초 동안, 네트워크의 상태가 2Mbps에서 4Mbps의 변동폭을 갖더라도, 동일한 시간 동안 스트림 데이터를 다른 전자 장치에게 송신할 수 있다. 따라서, 상기 다른 전자 장치는 상기 네트워크의 상태변화와 상관없이 상기 허용시간 동안 서비스를 제공받을 수 있다. 상기 제어부 360은 상기 NEqS를 도입하여 상기 다른 전자 장치에게 고정된 서비스 제공시간을 보장함으로써, 저지터(low-jitter) 서비스를 제공할 수 있다. 지터란, 처리 시간 및 결과물의 도달 시간 등의 변화 폭을 의미할 수 있다. 지터가 거의 존재하지 않게 되므로, 상기 제어부 360은 스킵(skip) 등의 스트리밍 품질 저하문제를 제거할 수 있다. 또한, 허용 시간을 고정함으로써, 예기치 않은 스케줄링으로 인한 지연시간을 감소시킬 수 있다.
도 9는 다양한 실시 예들에 따른 프레임 유닛을 도시한다.
MPEG(Moving Picture Expert Group)에서는 프레임에 대하여 표준을 정하고 있다. 상기 표준에 의할 때, 일반적인 GOP 구조는 상기 프레임을 포함할 수 있다. 상기 일반적인 GOP 구조는 스스로 이미지를 가지는 I-프레임, 앞 방향의 I-프레임을 참고하는 P-프레임, 앞 방향과 뒤 방향의 프레임을 모두 참고하는 B-프레임을 포함할 수 있다.
상기 도 9를 참고하면, 프레임 유닛 900은 본 개시의 다양한 실시 예들에 따른 GOP 구조를 나타낼 수 있다. 상기 프레임 유닛 900은 I-프레임 910, P- 프레임 920, P- 프레임 930 및 I-프레임 950을 포함할 수 있다. 상기 프레임 유닛 900은 B-프레임을 갖지 않을 수 있다. 상기 프레임 유닛 900이 B-프레임 940을 가지는 경우, 상기 B-프레임 940은 양방향을 참고하므로, 인코딩 시간을 지연시킬 수 있다. 또한, 상기 B-프레임 940은 양방향을 참고하므로, 수신 측 전자 장치의 버퍼는 상기 I-프레임 950이 수신되기 전까지 상기 B-프레임 940을 디코딩할 수 없다. 상기 B-프레임 940을 디코딩하기 위하여 추가 지연 시간이 발생할 수 있다. 따라서 다양한 실시 예들에 따른, 전자 장치는 B-프레임을 사용하지 않을 수 있다.
도 10은 다양한 실시 예들에 따른 전자 장치의 동작을 도시한 흐름도이다. 상기 전자 장치는 상기 도 3의 전자 장치 300일 수 있다.
상기 도 10을 참고하면, 1010 단계에서 상기 전자 장치 300은 상기 전자 장치의 전송 계층에서 추정되는 네트워크 가용 대역폭값을, 상기 전송 계층으로부터 상기 전자 장치 300의 응용 계층에게 직접 제공할 수 있다. 상기 응용 계층은 어플리캐이션을 포함할 수 있다. 상기 전송 계층은 전송 프로토콜을 포함할 수 있다. 상기 전송 프로토콜은 TCP, UDP일 수 있다. 상기 전자 장치 300 내의 어플리캐이션의 실행으로 상기 전송 프로토콜은 추정한 네트워크 가용 대역폭을 상기 응용 프로그램에게 직접 제공할 수 있다. 전송 계층에서 네트워크 속도를 직접 측정하여 상기 네트워크 가용 대역폭을 추정하므로, 소켓의 버퍼를 가지고 추정하던 기존의 기법보다 더 정확하게 네트워크 대역폭을 추정할 수 있다. 정확하게 네트워크 가용 대역폭을 추정하면, 상기 네트워크 가용 대역폭을 최대한 활용할 수 있으므로, 대역폭의 효율 측면에서 장점이 있다.
1020 단계에서, 상기 전자 장치 300은 상기 전자 장치 300의 응용 계층에서 네트워크 가용 대역폭값에 기반하여 초기 데이터로부터 스트림 데이터를 생성할 수 있다. 상기 전자 장치 300은 상기 네트워크 가용 대역폭값에 기반하여 인코딩율을 산출할 수 있다. 스트리밍 서비스에서는 인코딩율을 조절하여, 수신 장치에게 끊임없이 서비스를 제공하는 것이 중요할 수 있다. 상기 네트워크 가용 대역폭의 값이 상대적으로 작게 추정되는 경우, 상기 전자 장치 300은 안정적인 서비스의 제공을 위해, 상기 인코딩율을 상대적으로 높게 설정할 수 있다. 이와 달리, 상기 네트워크 가용 대역폭의 값이 상대적으로 크게 추정되는 경우, 상기 전자 장치 300은 높은 전송 속도를 위해 상기 인코딩율을 상대적으로 낮게 설정할 수 있다. 상대적으로 인코딩율을 높게 설정하는 경우, 상기 전자 장치 300은 상기 추정되는 네트워크 가용 대역폭을 충분히 활용하지 못할 수 있다.
상기 전자 장치 300은 상기 산출된 인코딩율에 기반하여 초기 데이터를 인코딩 하고 스트림 데이터를 생성할 수 있다. 상기 인코딩을 통하여 상기 초기 데이터는 스트리밍 서비스에 적합한 상기 스트림 데이터로 변형될 수 있다. 초기 데이터의 크기가 크고 스트림 데이터의 크기가 작아야 하는 경우, 상기 전자 장치 300은 인코딩 지연을 가질 수 있다. 상기 인코딩 지연 시간은 인코더의 CPU 또는 GPU의 성능에 의해 결정될 수 있다.
1030 단계에서, 상기 전자 장치 300은 다른 전자 장치에게 상기 스트림 데이터를 송신할 수 있다. 상기 전자 장치 300은 상기 다른 장치에게 스트리밍 서비스를 제공하기 위하여 스트림 데이터를 송신할 수 있다. 상기 전자 장치 300은 패킷 단위로 전송하는 것이 일반적일 수 있다. 상기 전자 장치 300은 유선 또는 무선 네트워크 환경을 통하여 상기 스트림 데이터를 상기 다른 장치에게 송신할 수 있다. 상기 전자 장치 300은 상기 다른 장치에게 네트워크 지연이 적은 스트리밍 서비스를 제공할 수 있다. 상기 전자 장치 300은 상기 스트림 데이터를 정확히 추정된 네트워크 가용 대역폭값에 기반하여, 상기 다른 전자 장치에게 저지연 스트리밍 서비스를 제공할 수 있다.
도 11은 다양한 실시 예들에 따른 제어부의 동작을 도시한 흐름도이다. 상기 제어부는 상기 도 3의 제어부 350을 포함할 수 있다.
상기 도 11을 참고하면, 1110 단계에서, 상기 전자 장치 300은 상기 전자 장치 300의 전송 계층에서 네트워크 가용 대역폭값을 추정할 수 있다. 네트워크 가용 대역폭값을 추정하는 것은 네트워크 속도를 측정하는 것에 대응할 수 있다. 상기 수학식 1을 참고할 때, 상기 네트워크 속도는 상기 네트워크 가용 대역폭에 비례할 수 있다. 다양한 실시 예들에 따를 때, 상기 전자 장치 300은 상기 네트워크 가용 대역폭값, 즉 상기 네트워크 속도를 패킷의 왕복시간 및 상기 패킷의 양, 또는 상기 패킷의 왕복시간 및 혼잡 윈도우의 크기에 기반하여 추정 또는 측정할 수 있다. 상기 전자 장치 300은 하드웨어를 포함할 수 있다. 상기 하드웨어는 상기 전자 장치 300의 내부에 있을 수 있다. 상기 하드웨어는 상기 전자 장치 300과 연결될 수 있다. 상기 하드웨어는 상기 네트워크 가용 대역폭값을 추정할 수 있다. 상기 하드웨어는 상기 전자 장치 300과 커널로 연결될 수 있다.
1120 단계에서, 상기 전자 장치 300의 응용 계층에서, 상기 전자 장치 300은 상기 전자 장치 300의 전송 계층에게 네트워크 가용 대역폭에 관련된 정보를 요청할 수 있다. 상기 전자 장치 300은 응용 계층에서 상기 전송 계층에게 상기 네트워크 가용 대역폭을 추정하기 위한 명령을 전달할 수 있다. 상기 응용 계층에서 상기 커널에게, 상기 커널에서 상기 하드웨어에게 상기 전자 장치 300은 상기 명령을 전달할 수 있다. 상기 응용 계층의 요청이 있는 경우, 상기 커널은 추정된 네트워크 가용 대역폭값을 상기 응용 계층에게 직접 제공할 수 있다. 상기 커널은 전송 계층에서, 상기 하드웨어와 연결되어 있을 수 있다.
상기 응용 계층은 어플리캐이션을 포함할 수 있다. 상기 어플리캐이션은 스트리밍 서비스를 제공하기 위한 어플리캐이션일 수 있다. 상기 어플리캐이션은 시스템 콜 함수를 미리 정의할 수 있다. 상기 시스템 콜은 상기 요청일 수 있다. 상기 시스템 콜을 제공하는 시스템 콜 인터페이스는 상기 커널에 포함되어 있다. 상기 커널은 상기 시스템 콜 인터페이스를 포함할 수 있다. 상기 시스템 콜 인터페이스는 시스템 콜 테이블을 포함할 수 있다. 상기 어플리캐이션이 특정 번호의 시스템 콜을 실행하도록 요청하는 경우, 상기 커널은 상기 시스템 콜 테이블을 참고할 수 있다. 상기 커널은 상기 시스템 콜 테이블을 참고하여, 상기 특정 번호에 해당하는 시스템 콜 서비스를 실행할 수 있다.
1130 단계에서, 상기 전자 장치 300은 상기 전자 장치 300의 전송 계층에서 추정되는 네트워크 가용 대역폭값을 상기 전송 계층으로부터 상기 응용 계층에게 직접 제공할 수 있다. 즉, 상기 전송 프로토콜에서 추정되는 네트워크 가용 대역폭값은 상기 시스템 콜에 의하여 직접 상기 어플리캐이션에게 제공될 수 있다. 상기 전자 장치 300은 버퍼의 지연을 고려하지 않으므로 실제 전송속도에 가까운 값을 측정할 수 있다. 상기 전자 장치 300은 실제 전송속도에 가까운 값을 측정함으로써, 추정되는 네트워크 가용 대역폭값을 최대한 활용할 수 있다. 상기 네트워크 가용 대역폭값을 활용하여, 상기 전자 장치 300은 네트워크에서 전송 시간의 지연을 단축할 수 있다.
도 12는 다양한 실시 예들에 따른 네트워크 가용 대역폭값을 추정하는 동작을 도시한 흐름도이다. 상기 도 3의 전자 장치 300은 상기 동작을 수행할 수 있다.
1210 단계에서, 상기 전자 장치 300은 상기 전자 장치 300으로부터 다른 전자 장치까지 패킷이 왕복하는 데 걸리는 시간을 측정할 수 있다. 상기 시간은 RTT일 수 있다. 상기 시간은 상기 전자 장치 300이 상기 패킷을 송신한 시점과 상기 전자 장치 300이 상기 다른 전자 장치로부터 상기 패킷에 대한 ACK(acknowledgement)를 수신하는 시점 사이의 간격(interval)일 수 있다. 즉 상기 시간은 양방향 지연(delay)를 나타낼 수 있다. 본 명세서에서 언급하는 데이터는 패킷 단위로 이루어질 수 있다.
1220 단계에서, 상기 전자 장치 300은 상기 전자 장치 300에서 송신하는 패킷의 양을 계산할 수 있다. 상기 전자 장치 300은 상기 시간 동안, 상기 전자 장치 300으부터 출력되는 패킷의 총량을 계산할 수 있다. 상기 패킷의 총량은 데이터의 크기로 표현될 수 있다(예: GB, MB, KB 등).
1230 단계에서, 상기 전자 장치 300은 상기 측정된 시간 및 상기 송신하는 패킷의 양에 기반하여 네트워크 가용 대역폭을 추정할 수 있다. 상기 계산되는 패킷의 총량을 상기 시간으로 나누면, 단위 시간 당 전송되는 패킷의 양일 수 있다. 상기 단위 시간 당 전송되는 패킷의 양은 네트워크 상에서의 전송 속도를 의미할 수 있다. 패킷의 손실이 있는 경우, 상기 패킷의 손실을 제어하기 위한 알고리즘이 요구될 수 있다. 상기 알고리즘은 상기 전자 장치 300의 프로토콜의 종류에 따라 결정될 수 있다. 상기 알고리즘은 ACK의 수신 여부로 감지하여 재전송 하는 방식의 알고리즘, 타이머를 이용하여 재전송 하는 방식의 알고리즘 등이 사용될 수 있다.
도 13은 다양한 실시 예들에 따른 네트워크 가용 대역폭값을 추정하는 다른 동작을 도시한 흐름도이다. 상기 도 3의 전자 장치 300은 상기 동작을 수행할 수 있다.
1310 단계에서, 상기 전자 장치 300은 상기 전자 장치 300으로부터 다른 전자 장치까지 패킷이 왕복하는 데 걸리는 시간을 측정할 수 있다. 상기 시간은 RTT일 수 있다. 상기 단계 1310 단계는 상기 도 12의 1210 단계와 동일하거나 비슷하게 동작할 수 있다. 즉, 상기 전자 장치 300은 패킷의 왕복시간을 측정하여 상기 시간 값을 얻을 수 있다
1320 단계에서, 상기 전자 장치 300은 상기 전자 장치 300의 혼잡 윈도우 값을 계산할 수 있다. 상기 혼잡 윈도우는 TCP(transmission control protocol) 프로토콜에서 혼잡 제어를 수행하는 경우, 상기 혼잡 제어 알고리즘에서 이용되는 윈도우의를 의미할 수 있다. TCP 프로토콜의 종류에 따라 동작 방식간에 사소한 차이가 있을 수 있다. 상기 TCP 프로토콜은 TCP RENO, TCP TAHOE, TCP NEW RENO 를 포함할 수 있다. 상기 전자 장치 300은 상기 TCP 프로토콜에 따라 송신측에서 수신측으로 제공하는 패킷의 크기를 하나씩 증가시켜 네트워크의 포화 시점을 판단할 수 있다. 상기 전자 장치 300은 상기 패킷의 크기를 2배씩 증가시켜 네트워크의 포화 시점을 판단할 수도 있다. 상기 전자 장치 300은 UDP와 같은 다른 프로토콜을 사용하는 경우, 해당 프로토콜에서 사용되는 혼잡 제어 알고리즘 및 수식을 참고하여 네트워크 속도를 추정할 수 있다.
1330 단계에서, 상기 전자 장치 300은 상기 측정된 시간 및 상기 혼잡 윈도우 값에 기반하여 네트워크 가용 대역폭을 추정할 수 있다. 상기 1330 단계는 상기 도 12의 1230 단계에 대응할 수 있다. 상기 전자 장치 300은 상기 혼잡 윈도우 값의 크기, 즉 네트워크의 포화를 야기하는 패킷량의 크기를 상기 측정된 시간으로 나누어, 상기 네트워크의 속도를 획득할 수 있다.
도 14는 다양한 실시 예들에 따른 초기 데이터를 생성하는 동작을 도시한 흐름도이다. 상기 도 3의 전자 장치 300은 상기 동작을 수행할 수 있다.
1410 단계에서, 상기 도 3의 컨텐츠 생성부 330은 인코딩율에 기반하여 컨텐츠를 생성할 수 있다. 상기 컨텐츠 생성부 330은 상기 전자 장치 300의 내부에 포함되거나, 독립된 하드웨어로서 상기 전자 장치 300과 연결될 수 있다. 상기 컨텐츠 생성부는 카메라, 보이스레코더, 캠코더일 수 있다. 또한 냄새 또는 촉감을 저장할 수 있는 장치일 수 있다. 상기 컨텐츠는 시각적인 이미지 외에, 멀티미디어 이미지, 음성이미지 등과 같은 다양한 컨텐츠를 포함할 수 있다. 상기 컨텐츠 생성부가 초고화질의 이미지를 촬영하여 컨텐츠를 생성하는 경우, 상기 전자 장치 300은 추정하는 네트워크 가용 대역폭이 작다면, 상당한 압축률의 인코딩율을 적용할 수 있다. 상기 인코딩율에 의한 지연이 상대적으로 길어질 수 있으므로, 상기 전자 장치 300은 상기 컨텐츠 생성부 330에게 인코딩율을 제공할 수 있다. 상기 컨텐츠 생성부 330은 상기 인코딩율에 기반하여 컨텐츠를 생성할 수 있다. 예를 들어, 네트워크 가용 대역폭이 작다면, 상기 컨텐츠 생성부 33은 초기 데이터 생성시에 적은 용량을 가지도록 컨텐츠를 생성할 수 있다. 즉, 네트워크 상황에 따라 능동적으로 컨텐츠를 생성할 수 있다.
1420 단계에서, 상기 전자 장치 300은 상기 생성된 컨텐츠로부터 초기 데이터를 생성할 수 있다. 상기 초기 데이터는 상기 생성된 컨텐츠를 디지털 파일로 변환한 RAW 데이터일 수 있다. 상기 전자 장치 300은 상기 초기 데이터를 인코딩하여 스트림 데이터를 생성할 수 있다. 상기 RAW 데이터는 상기 인코딩율을 반영되므로, 상기 전자 장치 300은 인코딩 시간을 감소시킬 수 있다.
도 15는 다양한 실시 예들에 따른 스트리밍 시스템의 효과를 도시한다.
본 개시의 다양한 실시 예들에 따른 전자 장치는 스트리밍 컨텐츠를 제공하는 과정에서 발생하는 지연을 줄일 수 있다. 본 개시는 상기 도 1에서 언급한 인코딩 지연 160, 네트워크 지연 170, 디코딩 지연 180을 줄여 초저지연 서비스를 제공할 수 있다.
상기 도 15를 참고하면, 상기 전자 장치는 인코딩율을 컨텐츠 생성부에게 전달하여, 상기 인코딩 지연 160을 감소시킬 수 있다. 전술한대로, 상기 컨텐츠 생성부는 상기 인코딩율에 기반하여 컨텐츠를 생성할 수 있다. 상기 전자 장치는 상기 컨텐츠로부터 생성된 초기 데이터를 인코딩을 할 수 있다. 상기 초기 데이터는 상기 인코딩율에 기반하여 생성되므로, 상기 전자 장치는 인코딩 지연을 감소시킬 수 있다. 상기 전자 장치는 추정되는 네트워크 가용 대역폭값에 기반하여 상기 인코딩율을 결정할 수 있다.
상기 인코딩 지연 160 또는 상기 디코딩 지연 180은 하드웨어의 성능에 의해 변동될 수 있다. 상기 하드웨어는 CPU 또는 GPU를 의미할 수 있다. 전술한 바와 같이, 멀티미디어를 인코딩 하는 작업의 경우, 복잡한 연산이 아니라 픽셀의 일부만을 취하는 연산 또는 픽셀의 일부를 조합하는 연산이므로, 상기 전자 장치는 GPU를 사용하여 처리가 가능할 수 있다. 상기 전자 장치는 GPU를 사용함으로써, 인코딩 및 디코딩 지연 시간을 줄일 수 있다. GPU는 CPU보다 적게는 몇 배에서~ 많게는 몇백배 많은 코어수를 가지므로, 동시에 많은 논리 연산을 처리할 수 있다. 따라서 상기 전자 장치는 인코딩/디코딩을 수행하는 경우 비용적인 측면, 공간적인 측면 등을 고려할 때, GPU를 사용하는 것이 유리할 수 있다. 그리고 일부 복잡한 연산을 고려할 때, 상기 전자 장치는 GPU만을 사용하는 경우뿐만 아니라 CPU와 같이 사용하는 것이 인코딩 및 디코딩 지연 시간을 더 줄일 수 있다.
서버와 단말 사이의 네트워크 상태는 상기 서버가 직접적으로 제어하기 어려울 수 있으나, 네트워크 지연 170은 제어할 수 있다. 기존의 스트리밍 기법에서, 서버는 추정한 네트워크 가용 대역폭보다 상당히 좁은 대역폭만을 활용하여 데이터를 전송하였다. 상기 기법에서는 네트워크 가용 대역폭을 정확히 추정하지 못하는 점, 불안정한 네트워크 상황에서 실시간으로 대응하지 못하는 점 때문에, 상기 서버는 상기 단말에게 안정적인 서비스 제공을 위하여 좁은 대역폭으로 서비스를 제공하였다. 본 개시의 다양한 실시 예들에 따를 때, 상기 네트워크의 정확한 네트워크 가용 대역폭값을 추정하여, 상기 서버는 실제 네트워크 상태를 고려한 인코딩율을 산출할 수 있다. 또한, 상기 네트워크 가용 대역폭값을 정확히 추정함으로써, NEqS에 할당되는 허용 시간을 효율적으로 결정할 수 있다.
상기 서버는 상기 허용 시간 이내에 송신 가능한 크기로 스트림 데이터를 생성할 수 있다. 예를 들면, 상기 허용 시간이 10 ms이고, 현재 네트워크의 상태가 10Mbps ~ 100Mbps 인 경우, 상기 전자 장치는 0.1 MB ~ 1 MB로 상기 스트림 데이터를 생성할 수 있다. 상기 스트림 데이터는 NEqS일 수 있다. 상기 전자 장치는 상기 초기 데이터를 허용 시간 이내에 송신 가능한 크기로 인코딩을 하여 상기 NEqS를 생성할 수 있다.
상기 NEqS를 본 개시에 따른 스트리밍 시스템에 도입함으로써, 상기 서버는 상기 단말에게 안정적인 서비스를 제공할 수 있고, 전술한대로 저지연 서비스를 제공할 수 있다. 또한 고정적인 수의 프레임들을 단위로 하여 서비스를 제공하기 때문에, 상기 단말은 데이터의 수신에 대한 예측가능성을 높일 수 있고, 상기 서버는 저지터(low-jitter) 서비스를 제공할 수 있다.
다양한 실시 예들에 따른 스트리밍 서비스(streaming service)를 제공하는 전자 장치(electronic device)의 동작 방법은 상기 전자 장치의 전송 계층에서 추정되는 네트워크 가용 대역폭값을 상기 전송 계층으로부터 응용 계층에게 직접 제공하는 과정과, 상기 네트워크 가용 대역폭값에 기반하여 초기 데이터로부터 스트림 데이터를 생성하는 과정과, 다른 전자 장치에게 상기 스트림 데이터를 송신하는 과정을 포함할 수 있다.
상기 네트워크 가용 대역폭값을 상기 전송계층으로부터 상기 응용 계층에게 직접 제공하는 과정은 상기 전송 계층에서, 상기 네트워크 가용 대역폭값을 추정하는 과정과, 상기 응용 계층에서, 상기 전송 계층에게 상기 네트워크 가용 대역폭값에 관련된 정보를 요청하는 과정과, 상기 전송 계층에서, 상기 추정된 네트워크 가용 대역폭값을 상기 전송계층으로부터 상기 응용 계층에게 직접 제공하는 과정을 포함할 수 있다.
상기 네트워크 가용 대역폭값은 시스템 콜(system call)을 통하여 상기 전송 계층으로부터 상기 응용 계층에게 직접 제공될 수 있다.
상기 네트워크 가용 대역폭값을 추정하는 과정은 상기 전자 장치에서 상기 다른 전자 장치까지 패킷이 왕복하는데 걸리는 시간을 측정하는 과정과, 상기 전자 장치에서 송신하는 패킷의 양을 계산하는 과정과, 상기 측정된 시간 및 상기 송신되는 패킷의 양에 기반하여 상기 네트워크 가용 대역폭값을 추정하는 과정을 포함할 수 있다.
상기 네트워크 가용 대역폭값을 추정하는 과정은 상기 전자 장치에서 상기 다른 전자 장치까지 패킷이 왕복하는데 걸리는 시간을 측정하는 과정과, 상기 전자 장치의 혼잡 윈도우값을 계산하는 과정과, 상기 측정된 시간 및 상기 혼잡 윈도우값에 기반하여 상기 네트워크 가용 대역폭값을 추정하는 과정을 포함하고, 상기 혼잡 윈도우는 혼잡 제어 알고리즘에 기반하여 결정될 수 있다.
상기 스트림 데이터를 생성하는 과정은 상기 초기 데이터를 허용 시간 이내에 송신 가능한 크기로 인코딩 하여 상기 스트림 데이터를 생성하는 과정을 포함하고, 상기 허용 시간은 상기 네트워크 가용 대역폭값에 기반하여 결정될 수 있다.
상기 스트림 데이터를 생성하는 과정은 상기 네트워크 가용 대역폭값에 기반하여 인코딩율을 산출하는 과정과, 상기 인코딩율에 따라 상기 초기 데이터를 N개의 프레임 단위로 인코딩 하여 상기 스트림 데이터를 생성하는 과정을 포함할 수 있다.
상기 프레임 단위는 B-프레임을 제외한, I-프레임 또는 P-프레임을 포함할 수 있다.
상기 동작 방법은 인코딩율에 기반하여 컨텐츠를 생성하는 과정과, 상기 컨텐츠로부터 상기 초기 데이터를 생성하는 과정을 더 포함하고, 상기 인코딩율은 상기 네트워크 가용 대역폭값에 기반하여 산출될 수 있다.
다양한 실시 예들에 따른 스트리밍 서비스를 수신하는 전자 장치의 동작 방법은 다른 전자 장치로부터 스트림 데이터를 수신하는 과정과, 상기 스트림 데이터를 디코딩하여 재생 데이터를 생성하는 과정을 포함하고, 상기 스트림 데이터는 네트워크 가용 대역폭값에 기반하여 생성되고, 상기 네트워크 가용 대역폭값은 상기 다른 전자 장치의 전송 계층으로부터 상기 다른 전자 장치의 응용 계층에게 직접 제공되고, 상기 네트워크 가용 대역폭값은 상기 다른 전자 장치의 전송 계층에서 추정될 수 있다.
다양한 실시 예들에 따른 스트리밍 서비스를 제공하는 전자 장치는 제어부와,
상기 제어부와 동작적으로 결합된(operatively coupled with) 인코더와, 상기 제어부와 동작적으로 결합된 송신기를 포함하고, 상기 제어부는 상기 전자 장치의 전송 계층에서 추정되는 네트워크 가용 대역폭값을 상기 전송 계층으로부터 응용 계층에게 직접 제공하고, 상기 네트워크 가용 대역폭값에 기반하여 초기 데이터로부터 스트림 데이터를 생성하고, 다른 전자 장치에게 상기 스트림 데이터를 송신하도록 구성될 수 있다.
상기 제어부는 상기 전송 계층에서, 상기 네트워크 가용 대역폭값을 추정하고 상기 응용 계층에서, 상기 전송 계층에게 상기 네트워크 가용 대역폭값에 관련된 정보를 요청하고 상기 전송 계층에서, 상기 추정된 네트워크 가용 대역폭값을 상기 전송계층으로부터 상기 응용 계층에게 직접 제공하도록 구성될 수 있다.
상기 네트워크 가용 대역폭값은 시스템 콜(system call)을 통하여 상기 전송 계층으로부터 상기 응용 계층에게 직접 제공되는 장치.
상기 제어부는, 상기 전자 장치에서 상기 다른 전자 장치까지 패킷이 왕복하는데 걸리는 시간을 측정하고, 상기 전자 장치에서 송신하는 패킷의 양을 계산하고, 상기 측정된 시간 및 상기 송신되는 패킷의 양에 기반하여 상기 네트워크 가용 대역폭값을 추정하도록 구성될 수 있다.
상기 제어부는 상기 전자 장치에서 상기 다른 전자 장치까지 패킷이 왕복하는데 걸리는 시간을 측정하고, 상기 전자 장치의 혼잡 윈도우값을 계산하고, 상기 측정된 시간 및 상기 혼잡 윈도우값에 기반하여 상기 네트워크 가용 대역폭값을 추정하도록 구성되고, 상기 혼잡 윈도우는 혼잡 제어 알고리즘에 기반하여 결정될 수 있다.
상기 제어부는 상기 초기 데이터를 허용 시간 이내에 송신 가능한 크기로 인코딩 하여 상기 스트림 데이터를 생성하도록 구성되고, 상기 허용 시간은 상기 네트워크 가용 대역폭값에 기반하여 결정될 수 있다.
상기 제어부는 상기 네트워크 가용 대역폭값에 기반하여 인코딩율을 산출하고, 상기 인코딩율에 따라 상기 초기 데이터를 N개의 프레임 단위로 상기 스트림 데이터를 생성하도록 구성될 수 있다.
상기 프레임 단위는 B-프레임을 제외한, I-프레임 또는 P-프레임을 포함할 수 있다.
상기 전자 장치는 상기 제어부와 동작적으로 결합되는 컨텐츠 생성기를 더 포함하고, 상기 제어부는 인코딩율에 기반하여 컨텐츠를 생성하고, 상기 컨텐츠로부터 상기 초기 데이터를 생성하도록 추가적으로 구성되고, 상기 인코딩율은 상기 네트워크 가용 대역폭값에 기반하여 산출될 수 있다.
다양한 실시 예들에 따른 스트리밍 서비스를 수신하는 전자 장치는 제어부와, 상기 제어부와 동작적으로 결합된 디코더와, 상기 제어부와 동작적으로 결합된 수신기를 포함하고, 상기 제어부는 다른 전자 장치로부터 스트림 데이터를 수신하고, 상기 스트림 데이터를 디코딩하여 재생 데이터를 생성하도록 구성되고, 상기 스트림 데이터는 네트워크 가용 대역폭값에 기반하여 생성되고, 상기 네트워크 가용 대역폭값은 상기 다른 전자 장치의 전송 계층으로부터 상기 다른 전자 장치의 응용 계층에게 직접 제공되고, 상기 네트워크 가용 대역폭값은 상기 다른 전자 장치의 전송 계층에서 추정될 수 있다.
다양한 실시 예들에서, 상기 전자 장치는 휴대용 전자 장치(portable electronic device)일 수 있으며, 스마트폰(smart phone), 휴대용 단말기(portable terminal), 이동 전화(mobile phone), 이동 패드(mobile pad), 미디어 플레이어(media player), 태블릿 컴퓨터(tablet computer), 핸드헬드 컴퓨터(handheld computer) 또는 PDA(Personal Digital Assistant) 중 하나일 수 있다. 또한, 상기 전자 장치는 상술한 장치들 중 둘 이상의 기능들을 결합한 장치일 수 있다.
저장 장치 및 저장 미디어는, 실행될 때 일 실시 예들을 구현하는 명령어들을 포함하는 그로그램 또는 프로그램들을 저장하기에 적절한 기계-판독 가능 저장 수단의 실시 예들이다. 실시 예들은 본 명세서의 청구항들 중 어느 하나에 청구된 바와 같은 장치 또는 방법을 구현하기 위한 코드를 포함하는 프로그램, 및 그러한 프로그램을 저장하는 기계-판독 가능 저장 매체를 제공한다. 나아가, 그러한 프로그램들은 유선 또는 무선 연결을 통해 전달되는 통신 신호와 같은 어떠한 매체에 의해 전자적으로 전달될 수 있으며, 실시 예들은 동등한 것을 적절히 포함한다.
본 개시의 청구항 또는 명세서에 기재된 실시 예들에 따른 방법들은 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합의 형태로 구현될(implemented) 수 있다.
소프트웨어로 구현하는 경우, 하나 이상의 프로그램(소프트웨어 모듈)을 저장하는 컴퓨터 판독 가능 저장 매체가 제공될 수 있다. 컴퓨터 판독 가능 저장 매체에 저장되는 하나 이상의 프로그램은, 전자 장치(device) 내의 하나 이상의 프로세서에 의해 실행 가능하도록 구성된다(configured for execution). 하나 이상의 프로그램은, 전자 장치로 하여금 본 개시의 청구항 또는 명세서에 기재된 실시 예들에 따른 방법들을 실행하게 하는 명령어(instructions)를 포함한다.
이러한 프로그램(소프트웨어 모듈, 소프트웨어)은 랜덤 액세스 메모리 (random access memory), 플래시(flash) 메모리를 포함하는 불휘발성(non-volatile) 메모리, 롬(ROM: Read Only Memory), 전기적 삭제가능 프로그램가능 롬(EEPROM: Electrically Erasable Programmable Read Only Memory), 자기 디스크 저장 장치(magnetic disc storage device), 컴팩트 디스크 롬(CD-ROM: Compact Disc-ROM), 디지털 다목적 디스크(DVDs: Digital Versatile Discs) 또는 다른 형태의 광학 저장 장치, 마그네틱 카세트(magnetic cassette)에 저장될 수 있다. 또는, 이들의 일부 또는 전부의 조합으로 구성된 메모리에 저장될 수 있다. 또한, 각각의 구성 메모리는 다수 개 포함될 수도 있다.
또한, 상기 프로그램은 인터넷(Internet), 인트라넷(Intranet), LAN(Local Area Network), WLAN(Wide LAN), 또는 SAN(Storage Area Network)과 같은 통신 네트워크, 또는 이들의 조합으로 구성된 통신 네트워크를 통하여 접근(access)할 수 있는 부착 가능한(attachable) 저장 장치(storage device)에 저장될 수 있다. 이러한 저장 장치는 외부 포트를 통하여 본 개시의 실시 예를 수행하는 장치에 접속할 수 있다. 또한, 통신 네트워크상의 별도의 저장장치가 본 개시의 실시 예를 수행하는 장치에 접속할 수도 있다.
상술한 본 개시의 구체적인 실시 예들에서, 개시에 포함되는 구성 요소는 제시된 구체적인 실시 예에 따라 단수 또는 복수로 표현되었다. 그러나, 단수 또는 복수의 표현은 설명의 편의를 위해 제시한 상황에 적합하게 선택된 것으로서, 본 개시가 단수 또는 복수의 구성 요소에 제한되는 것은 아니며, 복수로 표현된 구성 요소라 하더라도 단수로 구성되거나, 단수로 표현된 구성 요소라 하더라도 복수로 구성될 수 있다.
한편 본 개시의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 개시의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 개시의 범위는 설명된 실시 예에 국한되어 정해져서는 아니 되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
그리고 본 명세서와 도면에 개시된 실시 예들은 본 발명의 내용을 쉽게 설명하고, 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 따라서 본 발명의 범위는 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상을 바탕으로 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.

Claims (20)

  1. 스트리밍 서비스(streaming service)를 제공하는 전자 장치(electronic device)의 동작 방법에 있어서,
    상기 전자 장치의 전송 계층에서 추정되는 네트워크 가용 대역폭을, 상기 전자 장치의 전송 계층으로부터 상기 전자 장치의 응용 계층에게, 제공하는 과정;
    상기 전자 장치의 상기 응용 계층에서 상기 네트워크 가용 대역폭에 기반하여 인코딩율을 결정하는 과정;
    상기 인코딩율에 따라 초기 데이터를 인코딩함으로써, 상기 스트리밍 서비스를 위한 스트림 데이터를 생성하는 과정; 및
    다른 전자 장치에게 상기 스트림 데이터를 송신하는 과정을 포함하는 방법.
  2. 청구항 1에 있어서,
    상기 네트워크 가용 대역폭을 상기 전송 계층으로부터 상기 응용 계층에게 제공하는 과정은,
    상기 전송 계층에서, 상기 네트워크 가용 대역폭을 추정하는 과정;
    상기 응용 계층에서, 상기 전송 계층에게 상기 네트워크 가용 대역폭에 관련된 정보를 요청하는 과정; 및
    상기 전송 계층에서, 상기 추정된 네트워크 가용 대역폭을 상기 전송 계층으로부터 상기 응용 계층에게 제공하는 과정을 포함하는 방법.
  3. 청구항 2에 있어서,
    상기 네트워크 가용 대역폭은 시스템 콜(system call)을 통하여 상기 전송 계층으로부터 상기 응용 계층에게 제공되는 방법.
  4. 청구항 2에 있어서,
    상기 네트워크 가용 대역폭을 추정하는 과정은,
    상기 전자 장치에서 상기 다른 전자 장치까지 패킷이 왕복하는데 걸리는 시간을 측정하는 과정;
    상기 전자 장치에서 송신되는 패킷의 양을 계산하는 과정; 및
    상기 측정된 시간 및 상기 송신하는 패킷의 양에 기반하여 상기 네트워크 가용 대역폭을 추정하는 과정을 포함하는 방법.
  5. 청구항 2에 있어서,
    상기 네트워크 가용 대역폭을 추정하는 과정은,
    상기 전자 장치에서 상기 다른 전자 장치까지 패킷이 왕복하는데 걸리는 시간을 측정하는 과정;
    상기 전자 장치의 혼잡 윈도우의 값을 계산하는 과정; 및
    상기 측정된 시간 및 상기 혼잡 윈도우의 값에 기반하여 상기 네트워크 가용 대역폭을 추정하는 과정을 포함하고,
    상기 혼잡 윈도우는 혼잡 제어 알고리즘에 기반하여 결정되는 방법.
  6. 청구항 1에 있어서,
    상기 스트림 데이터를 생성하는 과정은,
    상기 초기 데이터를 인코딩하는 과정은 허용 시간 이내에 송신 가능한 크기로 상기 초기 데이터를 인코딩하는 과정을 포함하고,
    상기 허용 시간은 상기 네트워크 가용 대역폭 및 인코딩 지연에 따른 네트워크 지연에 기반하여 결정되는 방법.
  7. 청구항 1에 있어서,
    상기 초기 데이터는 상기 인코딩율에 따라 N개의 프레임 단위로 인코딩되는 방법.
  8. 청구항 7에 있어서,
    상기 프레임 단위는, B-프레임(bi-predictive frame)을 제외한 I-프레임(intra-coded frame) 또는 P-프레임(predicted frame)을 포함하는 방법.
  9. 청구항 1에 있어서,
    상기 네트워크 가용 대역폭은 소켓을 거치지 않고 상기 응용 계층에게 제공되는 방법.
  10. 청구항 1에 있어서,
    상기 전송 계층은 전송 프로토콜에 기반하여 상기 네트워크 가용 대역폭을 추정하기 위하여 사용되고,
    상기 응용 계층은 어플리케이션을 통해 상기 스트리밍 서비스를 제공하기 위하여 사용되는 방법.
  11. 스트리밍 서비스를 제공하는 전자 장치에 있어서,
    적어도 하나의 송신기와,
    상기 적어도 하나의 송신기와 동작적으로 결합된(operatively coupled with) 적어도 하나의 프로세서를 포함하고,
    상기 적어도 하나의 프로세서는:
    상기 전자 장치의 전송 계층에서 추정되는 네트워크 가용 대역폭을, 상기 전자 장치의 전송 계층으로부터 상기 전자 장치의 응용 계층에게, 제공하고,
    상기 전자 장치의 상기 응용 계층에서 상기 네트워크 가용 대역폭에 기반하여 인코딩율을 결정하고,
    상기 인코딩율에 따라 초기 데이터를 인코딩함으로써, 상기 스트리밍 서비스를 위한 스트림 데이터를 생성하고,
    다른 전자 장치에게 상기 스트림 데이터를 송신하도록 구성되는 장치.
  12. 청구항 11에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 전송 계층에서, 상기 네트워크 가용 대역폭을 추정하고,
    상기 응용 계층에서, 상기 전송 계층에게 상기 네트워크 가용 대역폭에 관련된 정보를 요청하고,
    상기 전송 계층에서, 상기 추정된 네트워크 가용 대역폭을 상기 전송 계층으로부터 상기 응용 계층에게 제공하도록 구성되는 장치.
  13. 청구항 12에 있어서,
    상기 네트워크 가용 대역폭은 시스템 콜(system call)을 통하여 상기 전송 계층으로부터 상기 응용 계층에게 제공되는 장치.
  14. 청구항 12에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 전자 장치에서 상기 다른 전자 장치까지 패킷이 왕복하는데 걸리는 시간을 측정하고,
    상기 전자 장치에서 송신되는 패킷의 양을 계산하고,
    상기 측정된 시간 및 상기 송신하는 패킷의 양에 기반하여 상기 네트워크 가용 대역폭을 추정하도록 구성되는 장치.
  15. 청구항 12에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 전자 장치에서 상기 다른 전자 장치까지 패킷이 왕복하는데 걸리는 시간을 측정하고,
    상기 전자 장치의 혼잡 윈도우의 값을 계산하고,
    상기 측정된 시간 및 상기 혼잡 윈도우의 값에 기반하여 상기 네트워크 가용 대역폭을 추정하도록 구성되고,
    상기 혼잡 윈도우는 혼잡 제어 알고리즘에 기반하여 결정되는 장치
  16. 청구항 11에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 초기 데이터를 인코딩하기 위하여, 상기 초기 데이터를 허용 시간 이내에 송신 가능한 크기로 인코딩하도록 구성되고,
    상기 허용 시간은 상기 네트워크 가용 대역폭 및 인코딩 지연에 따른 네트워크 지연에 기반하여 결정되는 장치.
  17. 청구항 11에 있어서,
    상기 초기 데이터는 상기 인코딩율에 따라 N개의 프레임 단위로 인코딩되는 장치.
  18. 청구항 17에 있어서,
    상기 프레임 단위는 B-프레임(bi-predictive frame)을 제외한, I-프레임(intra-coded frame) 또는 P-프레임(predicted frame)을 포함하는 장치.
  19. 청구항 11에 있어서,
    상기 전송 계층은 전송 프로토콜에 기반하여 상기 네트워크 가용 대역폭을 추정하기 위하여 사용되고,
    상기 응용 계층은 어플리케이션을 통해 상기 스트리밍 서비스를 제공하기 위하여 사용되는 장치.

  20. 스트리밍 서비스를 수신하는 전자 장치에 있어서,
    제어부와 동작적으로 결합된 디코더와,
    상기 제어부와 동작적으로 결합된 수신기를 포함하고,
    상기 제어부는:
    상기 수신기가 다른 전자 장치로부터 상기 스트리밍 서비스를 위한 스트림 데이터를 수신하고,
    상기 디코더가 상기 스트림 데이터를 디코딩함으로써, 재생(reproduction) 데이터를 생성하도록 구성되고,
    상기 스트림 데이터는 인코딩율에 따라 초기 데이터를 인코딩함으로써 생성되고,
    상기 인코딩율은 상기 다른 전자 장치의 응용 계층에서의 네트워크 가용 대역폭에 기반하여 결정되고,
    상기 네트워크 가용 대역폭은 상기 다른 전자 장치의 전송 계층으로부터 상기 다른 전자 장치의 응용 계층에게 제공되고,
    상기 네트워크 가용 대역폭은 상기 다른 전자 장치의 전송 계층에서 추정되는 장치.

KR1020150178433A 2015-12-14 2015-12-14 스트리밍 서비스를 위한 장치 및 방법 KR102353492B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150178433A KR102353492B1 (ko) 2015-12-14 2015-12-14 스트리밍 서비스를 위한 장치 및 방법
US15/379,344 US10200437B2 (en) 2015-12-14 2016-12-14 Device and method for streaming service

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150178433A KR102353492B1 (ko) 2015-12-14 2015-12-14 스트리밍 서비스를 위한 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20170070646A KR20170070646A (ko) 2017-06-22
KR102353492B1 true KR102353492B1 (ko) 2022-01-20

Family

ID=59020350

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150178433A KR102353492B1 (ko) 2015-12-14 2015-12-14 스트리밍 서비스를 위한 장치 및 방법

Country Status (2)

Country Link
US (1) US10200437B2 (ko)
KR (1) KR102353492B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11871265B2 (en) 2018-01-18 2024-01-09 Samsung Electronics Co., Ltd Method and an electronic device for dynamically controlling TCP congestion window
KR102140267B1 (ko) * 2019-06-05 2020-07-31 엘아이지넥스원 주식회사 적어도 둘 이상의 무선 경로들을 통해 비디오 데이터 프레임의 패킷을 전송하는 적응적 비디오 스트리밍 방법 및 시스템
KR102409915B1 (ko) * 2019-11-28 2022-06-20 울산과학기술원 실시간 데이터 스트리밍 수신 장치 및 방법, 실시간 데이터 데이터 스트리밍 송수신 시스템, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램
KR20230047366A (ko) * 2020-08-05 2023-04-07 퀄컴 인코포레이티드 사이드링크 라운드 트립 시간 측정들
KR102432668B1 (ko) * 2020-11-23 2022-08-12 서울대학교산학협력단 통신 제어 장치 및 통신 제어 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130114421A1 (en) 2011-11-04 2013-05-09 Microsoft Corporation Adaptive bandwidth estimation

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100408525B1 (ko) 2001-10-31 2003-12-06 삼성전자주식회사 네트워크에 적응적인 실시간 멀티미디어 스트리밍 시스템및 방법
US7630612B2 (en) * 2003-02-10 2009-12-08 At&T Intellectual Property, I, L.P. Video stream adaptive frame rate scheme
US8578045B2 (en) * 2007-02-14 2013-11-05 Microsoft Corporation Adaptive bandwidth utilization
US20100121974A1 (en) * 2008-11-11 2010-05-13 Einarsson Torbjoem Stepwise probing for adaptive streaming in a packet communication network
US8621044B2 (en) * 2009-03-16 2013-12-31 Microsoft Corporation Smooth, stateless client media streaming
WO2011075670A1 (en) * 2009-12-18 2011-06-23 Google Inc. Matching encoder output to network bandwidth
WO2011158433A1 (ja) * 2010-06-16 2011-12-22 パナソニック株式会社 送信端末及び帯域推定方法
US8837586B2 (en) * 2011-10-10 2014-09-16 Cisco Technology, Inc. Bandwidth-friendly representation switching in adaptive streaming
US11057446B2 (en) * 2015-05-14 2021-07-06 Bright Data Ltd. System and method for streaming content from multiple servers
US10602157B2 (en) * 2015-09-11 2020-03-24 Facebook, Inc. Variable bitrate control for distributed video encoding

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130114421A1 (en) 2011-11-04 2013-05-09 Microsoft Corporation Adaptive bandwidth estimation

Also Published As

Publication number Publication date
US10200437B2 (en) 2019-02-05
KR20170070646A (ko) 2017-06-22
US20170171284A1 (en) 2017-06-15

Similar Documents

Publication Publication Date Title
KR102353492B1 (ko) 스트리밍 서비스를 위한 장치 및 방법
JP6803443B2 (ja) 電力認識型ビデオ復号およびストリーミング
Shi et al. Mobile VR on edge cloud: A latency-driven design
US10063921B2 (en) Power aware adaptation for video streaming
US10523957B2 (en) Optimization using multi-threaded parallel processing framework
JP5882547B2 (ja) シーンの変化に伴うピクチャ内の符号化及び送信パラメータの好適化
WO2014054988A1 (en) Throttling a media stream for transmission via a radio access network
KR20170101192A (ko) 링크 인식 스트리밍 적응
Le et al. Computing offloading over mmWave for mobile VR: Make 360 video streaming alive
US11627307B2 (en) Transport controlled video coding
KR102307447B1 (ko) 네트워크 환경 모니터링에 기반하는 http 적응적 스트리밍 서버, 방법, 및 클라이언트 단말
Adeyemi-Ejeye et al. Prospects for live higher resolution video streaming to mobile devices: achievable quality across wireless links
KR102462200B1 (ko) 자원 가격 책정을 갖는 대시에서 분배된 병목 조정을 위한 방법 및 장치
Ravichandran et al. Facilitating low latency and reliable VR over heterogeneous wireless networks
Tamizhselvi et al. Adaptive video streaming in mobile cloud computing
US20230371060A1 (en) Resource scheduling method and apparatus
Duan et al. Adaptive Payload Length Algorithm for Video Transmission Over Wireless Multi-hop Networks

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant