KR20210064116A - 전송 제어 비디오 코딩 - Google Patents

전송 제어 비디오 코딩 Download PDF

Info

Publication number
KR20210064116A
KR20210064116A KR1020207037103A KR20207037103A KR20210064116A KR 20210064116 A KR20210064116 A KR 20210064116A KR 1020207037103 A KR1020207037103 A KR 1020207037103A KR 20207037103 A KR20207037103 A KR 20207037103A KR 20210064116 A KR20210064116 A KR 20210064116A
Authority
KR
South Korea
Prior art keywords
bitstream
frame size
target frame
prediction
bitstreams
Prior art date
Application number
KR1020207037103A
Other languages
English (en)
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 인텔 코포레이션
Publication of KR20210064116A publication Critical patent/KR20210064116A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/164Feedback from the receiver or from the transmission channel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • 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/23418Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics
    • 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/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/23439Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
    • 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
    • H04N21/2365Multiplexing of several video streams
    • 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
    • H04N21/2365Multiplexing of several video streams
    • H04N21/23655Statistical multiplexing, e.g. by controlling the encoder to alter its bitrate to optimize the bandwidth utilization
    • 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/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • 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/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2402Monitoring of the downstream path of the transmission network, e.g. bandwidth available
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44209Monitoring of downstream path of the transmission network originating from a server, e.g. bandwidth variations of a wireless network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/647Control signaling between network components and server or clients; Network processes for video distribution between server and clients, e.g. controlling the quality of the video stream, by dropping packets, protecting content from unauthorised alteration within the network, monitoring of network load, bridging between two different networks, e.g. between IP and wireless
    • H04N21/64723Monitoring of network processes or resources, e.g. monitoring of network load

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

실시예는 일반적으로 전송 제어된 비디오 코딩에 관한 것이다. 장치의 실시예는 데이터를 처리하기 위한 하나 이상의 프로세서; 비디오 스트리밍을 위한 데이터를 포함하는 데이터를 저장하는 메모리; 및 인코더 및 전송 메커니즘을 포함하는 비디오 처리 메커니즘을 포함하고, 비디오 처리 메커니즘은 네트워크 채널에 대한 채널 처리량의 예측을 생성하고, 예측에 기초하여 하나 이상의 비트스트림을 인코딩 - 예측이 채널 처리량의 증가 또는 감소를 나타내는 경우 제 1 비트스트림 및 제 2 비트스트림을 포함하는 복수의 비트스트림을 인코딩하고, 예측이 안정적인 채널 처리량을 표시하는 경우 단일 비트스트림을 인코딩하는 것을 포함함 - 하고; 현재 프레임에 대해 하나 이상의 비트스트림 중 한 비트스트림을 선택하는 것이다.

Description

전송 제어 비디오 코딩
본 명세서에 설명된 실시예는 일반적으로 데이터 처리 분야, 더 구체적으로는 전송 제어 비디오 코딩 분야에 관한 것이다.
라이브 비디오 스트리밍은 수년 동안 화상 회의에 사용되어 왔으며, 이러한 기술의 사용은 핸드 헬드 디바이스에 적용됨에 따라 계속해서 증가하고 있다. 이 기술이 클라우드 비디오 게임을 구현함에 따라 라이브 비디오 스트리밍의 사용에 대한 인기도와 중요성이 급증했다.
비디오 스트리밍은 네트워크 데이터 처리량에 의존하는데 이는 데이터의 지연이 스트리밍 동작을 이용하는 사용자 경험을 크게 손상시킬 수 있기 때문이다. 네트워크 처리량(네트워크 대역폭이라고도 함)은 네트워크 상태 및 사용량에 따라 빠르게 변할 수 있으므로 비디오 애플리케이션은 데이터 지연이 사용자에게 느껴질 정도로 커지는 것을 방지하기 위해 조건에 신속하게 대응해야 한다.
그러나, 종래 기술은 네트워크 처리량이 점진적으로 변화할 것으로 가정하고 있어, 대역폭이 급격히 떨어지면 큰 데이터 지연이 발생하는데, 이는 비디오 스트리밍 구조가 충분히 빠르게 응답하지 않기 때문이다. 기존 기술은 또한, 대역폭이 빠르게 향상되는 반대 상황에 대해 느린 응답을 제공할 것이므로, 향상된 대역폭을 최대한 활용할 수 있을 만큼 빠르게 비디오 스트리밍 품질의 개선을 구현하지 못할 것이다.
급격한 대역폭 변화를 해결하기 위한 비디오 스트리밍의 개선이 제안되었지만, 제안된 기술은 인코딩 복잡성, 매우 큰 메모리 요구 사항 및 즉각적인 채널 피드백의 필요성과 같은 결함으로 인해 어려움을 겪고 있으므로 이러한 개념은 실제 응용으로 구현하기에 실용적이지 않다.
본 명세서에 설명된 실시예는 제한이 아닌 예로서 예시되며, 첨부 도면에사 동일한 참조 번호가 동일한 요소를 나타낸다.
도 1 및 2는 빠른 대역폭 변동으로 인한 비디오 스트림 서비스의 지연을 나타낸다.
도 3은 일부 실시예에 따른 전송 제어 비디오 코딩을 제공하기 위한 시스템 또는 장치의 예시이다.
도 4는 일부 실시예에 따른 전송 제어 비디오 코딩 동작의 예시이다.
도 5는 일부 실시예에 따른 전송 제어를 사용하는 비디오 코딩 프로세스의 예시이다.
도 6은 일부 실시예에 따른 전송 제어 비디오 코딩을 포함하는 새로운 처리 시스템을 도시한다.
도 7은 일부 실시예에 따른 컴퓨팅 디바이스를 도시한다.
본 명세서에 설명된 실시예는 일반적으로 전송 제어된 비디오 코딩에 관한 것이다.
일부 실시예에서, 장치, 시스템 또는 프로세스는 변화하는 네트워크 처리량 조건에서 비디오 스트리밍 성능을 개선하기 위한 전송 제어 비디오 코딩을 제공한다. 일부 실시예에서, 채널 피드백에 기초하여 미래의 채널 대역폭 변화가 추정되는데, 네트워크 대역폭 증가 또는 감소가 검출되는 경우 추정된 대역폭에 기초하여 2 개의 비트스트림이 생성되고, 전송부(transport)는 즉각적인 채널 변화에 기초하여 송신을 위한 비트스트림을 선택한다.
화상 회의 시스템(예, WebEx®)의 초기부터 오늘날 인기있는 리소스(예, Microsoft Skype, Google Hangouts, FaceTime® 및 WebRTC)에 이르기까지, 실시간 비디오 스트리밍은 가장 중요한 인터넷 비디오 애플리케이션 중 하나였다. 최근 부상하는 클라우드 비디오 게임 시장에서, 실시간 비디오 스트리밍은 시장에서 더욱 중요해지고 있다. 클라우드 게임 시장은 2019년에 200억 달러가 넘을 것으로 추정되며 계속 성장하고 있다.
이러한 모든 애플리케이션에서, 매우 낮은 레이턴시로 비디오를 인코딩하고 발신(송신)하는 능력은 특히 사용자 상호 작용이 필요한 애플리케이션에 대해 사용자의 경험이 긍정적이도록 보장하는 데 가장 중요한 요인이다. 모든 신호 지연은 사용자에게 즉시 드러날 수 있으며, 이러한 지연은 게임 환경 또는 다른 라이브 비디오 시스템에서 사용자의 경험을 크게 저하시킬 수 있다.
종래의 솔루션에서, 비디오 인코더는 추정된 네트워크 대역폭을 반영하는 평균 비트레이트로 비디오를 인코딩하는 역할을 한다. 그런 다음 전송은, 패킷 내에 인코딩된 비디오를 발신하고, 네트워크 통신 및 대역폭 변화를 처리하며, 예상 네트워크 대역폭을 비디오 인코더에 제공하는 것을 담당한다. 비디오 인코더는 전송 피드백에 따라 조정되지만, 비디오 인코더와 전송부는 느슨하게 결합된다. 기존의 비디오 인코더 레이트 제어는 네트워크 대역폭의 점진적인 레이트 변화를 가정하는 모델에 계속 의존하며, 비디오 인코더는 평균 채널 용량에 따라 보수적인 타겟 비트레이트를 선택한다. 채널 대역폭이 변경되면 인코더는 일반적으로 특정 재설정 지점에서 인코딩하기 위해 새로운 타겟 비트레이트로 재설정된다. 재설정 지점 사이의 전송은 송신을 지연시키거나, 네트워크 처리량의 갑작스런 감소에 의해 프레임을 단순히 드롭(simple drop)시킨다. 일반적으로, 이러한 기존의 타겟 비트레이트 지향 인코딩은 빠른 네트워크 처리량 변화에 대처할 수 있을 만큼 빠르게 적응할 수 없다.
도 1 및 도 2는 급격한 대역폭 변화로 인한 비디오 스트림 서비스의 지연을 나타낸다. 기존의 비디오 처리 구조에서는, 네트워크 처리량이 급격히 떨어지면 엄청난 지연과 프레임 드롭이 발생할 수 있다. 도 1은 네트워크 용량(실선) 및 화상 회의 서비스의 비디오 인코딩 비트레이트 요구 사항(점선)을 포함하는 시간 경과에 따른 처리량 그래프를 제공하는, 실제 테스트 시나리오를 이용한 화상 회의 서비스의 특정 예를 보여준다. 도 2는 동일한 기간 동안 비디오 서비스에서 발생하는 신호 지연의 예시이다. 도 1 및 도 2에서 볼 수 있는 바와 같이, 네트워크 용량이 빠르게 감소하면 매우 큰 지연이 발생한다. 실시간 게임 스트리밍과 같은 애플리케이션의 경우, 도 2에 도시된 지연은 허용되지 않을 것이다.
역 시나리오에서, 네트워크 처리량이 시간이 지남에 따라 빠르게 향상되는 경우, 마찬가지로 기존 솔루션은 가용 대역폭에 의해 달성될 수 있는 서비스 품질을 제공할 수 있을 만큼 빠르게 응답할 수 없다. 본질적으로, 종래의 장치 또는 시스템은 가용 처리량을 이용하도록 서비스 품질을 증가시킬 수 있을 만큼 충분히 빠르게 응답하지 않을 것이다.
H.264 용 SVC(Scalable Video Coding)(H.264/MPEG-4 AVC 비디오 압축 표준의 Annex G 확장) 및 H.265 비디오 압축용 SHVC(Scalable Extension of High-Efficiency Video Coding(HEVC))와 같은 확장 가능한 비디오 코딩이 다양한 채널 조건을 처리하기 위해 개발되었다. 확장 가능한 비디오 코딩은, 충분한 수의 레이어를 사용하는 경우 이론적으로는 네트워크 변동에 대해 빠른 응답을 제공할 수 있지만, 확장 가능한 비디오 코딩은 일반적으로, 높은 인코딩 복잡성과 안정적인 네트워크 조건에 대한 낮은 압축 효율성으로 인해 상업적으로 채택되지 못했다.
최근 Sajed Fouladi 등은“Salsify: 비디오 코덱과 전송 프로토콜 간의 긴밀한 통합을 통한 저 지연 네트워크 비디오"라는 논문에서 제안된 솔루션을 제시했다. Salsify 솔루션은 기본적으로 각 프레임에 대해 두 개의 비트스트림을 생성하고(두 개의 인코더를 사용하여 각 프레임을 동시에 인코딩하거나 각 프레임을 두 번 인코딩하고 모든 인코딩 상태를 버퍼링함), 전송 피드백에 따라 하나의 비트스트림만을 송신한다. 이 솔루션은 지터링 채널 조건에 대한 개선을 보여주지만 기존 구조에 비해 인코딩 복잡성이 최소 두 배 이상 요구된다. 또한 Salsify의 메모리 요구 사항은 매우 크고, 작동을 위해 즉각적인 채널 피드백이 필요하다. 이러한 이유로, 현재 이 기술을 제품에 통합하는 것은 실용적이지 않다.
일부 실시예에서, 장치, 시스템 또는 프로세스는 빠르게 변화하는 네트워크 조건에 대한 빠른 비디오 코딩 응답을 제공하는 새로운 기술을 제공하여, 결과적인 신호 지연을 크게 감소시킨다. 일부 실시예에서, 장치, 시스템 또는 프로세스 어드레스는 인코딩 복잡성, 메모리 요구 사항 및 채널 피드백에 관한 단점을 최소화하면서 Salsify 기술과 유사한 낮은 대기 시간 및 품질 향상을 달성하기 위한 동작을 제공한다.
도 3은 일부 실시예에 따른 전송 제어 비디오 코딩을 제공하기 위한 시스템 또는 장치의 예시이다. 일부 실시예에서, 도 6에 도시된 처리 시스템(600)과 같은 처리 시스템(300)은 하나 이상의 프로세서 코어를 포함한다. 일부 실시예에서, 처리 시스템(300)은 하나 이상의 프로세서 코어를 포함하는 도 6의 중앙 처리 장치(612)와 같은 하나 이상의 CPU(Central Processing Unit)(호스트 프로세서로서 동작할 수 있음)를 포함할 수 있는 하나 이상의 프로세서(305)를 포함하고, 하나 이상의 프로세서를 포함하는 도 6의 그래픽 처리 장치(614)와 같은 하나 이상의 GPU(310)를 포함하도록 구성되며, GPU는 하나 이상의 프로세서(205) 내에 포함되거나 별개로 포함될 수 있다. GPU는 범용 그래픽 처리 장치(GPGPU)를 포함할 수 있지만 이에 한정되지 않는다. 처리 시스템(300)은 라이브 비디오 스트리밍 처리를 위한 데이터를 저장하는 메모리(315)를 더 포함한다.
도 3에 도시된 바와 같이, 처리 시스템(300)은 비디오 처리(320)를 제공하여, 라이브 비디오 스트리밍을 생성하고, 전송 제어 비디오 스트리밍을 포함하는 라이브 비디오 처리는 빠르게 변화하는 네트워크 처리량에 대한 빠른 응답을 제공한다. 비디오 처리는 비디오 인코더(325) 및 전송 메커니즘(330)을 포함하나 이에 한정되지 않는다. 비디오 인코더는 스케일러블 비디오 코딩을 제공하고, H.264, H.265 또는 미래의 비디오 압축 표준을 포함할 수 있는 비디오 압축 표준의 응용을 포함한다.
일부 실시예에서, 비디오 처리(300)는 네트워크의 현재 대역폭에 대해 추정이 이루어지는 전송 제어 비디오 코딩을 제공하는 것이다. 일부 실시예에서, 비디오 인코더(325)는 추정이 증가 또는 감소하는 대역폭을 나타내는 경우, 대역폭 추정에 기초하여 제 1 비트스트림 및 제 2 비트스트림과 같은 복수 개의 비트스트림을 인코딩하는 것인데, 예를 들어, 제 1 비트스트림은 안정적인 대역폭에 기초하고, 제 2 비트스트림은 대역폭 증가 또는 감소에 기초한다. 일부 실시예에서, 비디오 처리(300)는, 즉각적인 채널 피드백(가능한 경우)에 기초하여 생성된 비트스트림 중 하나를 선택하는 것이다.
도 4는 일부 실시예에 따른 전송 제어 비디오 코딩 동작의 예시이다. 일부 실시예에서, 전송 제어 비디오 코딩을 위한 동작은 채널 피드백에 기초하여 미래의 채널 대역폭을 추정하는 것(410)을 포함한다. 일부 실시예에서, 미래의 채널 대역폭 변화는 채널 피드백에 기초하여 추정되는데, 예를 들어, 추정은 안정적인 채널 대역폭, 채널 대역폭 증가 또는 채널 대역폭 감소의 추정일 수 있다.
일부 실시예에서, 전송 제어 비디오 코딩은 미래의 채널 대역폭 추정에 기초하여 하나 이상의 양자화 파라미터(QP)를 생성하는 것(420)을 더 포함한다. 일부 실시예에서, 하나 이상의 QP의 생성은 미래의 채널 대역폭 추정이 채널 대역폭 증가 또는 채널 대역폭 감소를 예측하는 경우에 복수의 QP의 생성을 포함할 수 있다.
일부 실시예에서, 동작은 생성된 QP 값에 기초하여 하나 이상의 비트스트림을 생성하기 위해 적응 양자화하는 것(430)을 더 포함한다. 일부 실시예에서, 복수 개의 비트스트림(예를 들면, 제 1 비트스트림 및 제 2 비트스트림)은 추정된 대역폭에 기초하여 생성되고, 각 프레임에 대해 하나의 패스 인코딩을 갖는다. 일부 실시예에서, 제 1 비트스트림은 안정적인 채널 대역폭에 기초하여 생성되고, 제 2 비트스트림은 증가된 채널 대역폭 또는 감소된 채널 대역폭에 기초하여 추가적으로 생성될 수 있다.
일부 실시예에서, 동작들은, 그러한 즉각적인 채널 변경 정보가 이용가능하다면 즉각적인 채널 변경에 기초하여 전송을 위한 비트스트림의 선택하는 것(440)을 더 포함한다. 일부 실시예에서는, 인코딩 프로세스에서 타겟 비트레이트가 설정되지 않고, 인코딩 프로세스는 전송에 밀접하게 결합되어 실시간 채널 조건에 따라 조정된다. 실시예는 현재의 비디오 코덱에 매끄럽게 통합될 수 있는데, 시장에서 이용가능한 현재 스트리밍 솔루션을 대체하기 위해 그러한 실시예를 사용하는 데 큰 수정이 필요하지 않기 때문이다. 실시예는 클라우드 게임, 무선 디스플레이 및 화상 회의에서 지원을 제공하기 위해 적용될 수 있으며, 이들 각각은 긍정적인 사용자 경험을 위해 극히 낮은 레이턴시를 필요로 한다.
일부 실시예에서, 전송 채널은 인코더로의 네트워크 상태 피드백을 생성하기 위해 사용될 수 있다. 채널은 패킷 기반으로 피드백을 제공하며 채널 처리량 변경(상승, 안정 또는 하강)을 신속하게 제공하는 데 사용될 수 있다.
일부 실시예에서, 채널 예측(prediction)이 채널 처리량이 상승하고 있음을 나타내면, 2 개의 타겟 프레임 크기가 생성된다. 제 1 타겟 프레임 크기는 네트워크 처리량 변경이 없다는 가정에 기초하여 도출된다. 따라서, 제 1 타겟 프레임 크기는 이전 프레임에 기초하고, 이전 프레임의 크기와 동일한 크기일 수 있다(예를 들어, 비디오 스트림에서의 갑작스러운 움직임이나 장면 변경과 같이 비디오 스트림에 지장을 주는 변화가 없는 경우). 제 2 타겟 프레임 크기는 이전 프레임의 크기보다 크고, 예상 처리량 증가를 기반으로 도출된다. 일부 실시예에서, 한 사용자가 너무 많은 네트워크 용량을 사용하는 것을 방지하기 위해, 제 2 타겟 프레임 크기는 슬라이딩 윈도우의 평균 비트레이트 소비에 기초한 동적 임계값에 의해 제한될 수 있다. 그 다음, 제 1 타겟 프레임 크기에 기초하여 제 1 QP가 도출되고, 제 2 타겟 프레임 크기에 기초하여 제 2 QP가 도출된다. 일부 실시예에서, 제 2 QP가 임계 값보다 작으면 비디오 해상도가 증가하여 신호 품질이 증가할 수 있다. 그렇지 않으면 제 1 QP가 인트라/인터 예측 및 코딩 모드 결정에 사용된다. 변환 후에, 양자화는 현재 프레임에 대해 두 세트의 비트스트림을 생성하기 위해 두 번 수행된다. 일부 실시예에서, 즉각적인 채널 피드백이 이용 가능하다면, 새로운 타겟 프레임 크기가 추정되고 이 새로운 타겟 프레임 크기(본 명세서에서 즉석 타겟 프레임 크기로 지칭될 수 있음)에 더 가까운 비트스트림 크기가 선택된다. 그렇지 않으면, 제 2 타겟 프레임 크기에 기초한 비트스트림(즉, 증가된 채널 대역폭에 기초한 비트스트림)이 선택되어 송출된다.
일부 실시예에서, 채널 예측이 대신하여 채널 처리량이 안정적이라는 것을 나타내면, 하나의 타겟 프레임 크기만 생성되고 이에 따라 단일 QP가 도출된다. 이러한 단일 QP는 다음의 전체 인코딩 프로세스에 사용된다. 비트스트림이 생성된 후, 비트스트림이 송출된다(안정적인 처리량의 경우 여러 비트스트림간에 선택할 수 없음). 이러한 상황에서는 단일 비트스트림만이 생성된다. 가장 일반적인 상황은 채널 대역폭이 안정적인 경우이므로, 제 2 비트스트림 생성은 대부분 필요하지 않다.
일부 실시예에서, 채널 예측이 채널 처리량이 하향 이동하고 있다고 예측하면, 2 개의 타겟 프레임 크기가 생성된다. 이러한 상황에서, 제 1 타겟 프레임 크기는 이전 프레임과 동일하거나 유사한 타겟 프레임 크기를 사용하는 반면, 제 2 타겟 프레임 크기는 이전 프레임 크기보다 작으며 예상 처리량 감소에 기초하여 도출된다. 제 1 QP는 제 1 타겟 프레임 크기에 기초하여 도출되고, 제 2 QP는 제 2 타겟 프레임 크기에 기초한다. 일부 실시예에서, 제 2 QP가 임계값보다 크면, 전체 프레임이 스킵(skip)으로서 인코딩되고, 전체 인코딩 프로세스가 저장되도록 스킵 신호가 송신되거나, 또는 비디오 해상도가 감소되어 대역폭 요구 사항이 감소할 수 있다. 그렇지 않으면, 제 1 QP가 인트라/인터 예측 및 코딩 모드 결정에 사용된다. 변환 후, 양자화는 현재 프레임에 대해 두 개의 비트스트림을 생성하기 위해 두 번 수행된다. 일부 실시예에서, 인스턴트 채널 피드백이 이용 가능하다면, 새로운 타겟 프레임 크기가 추정되고 새로운 인스턴트 타겟 프레임 크기에 더 가까운 비트스트림 크기가 선택된다. 그렇지 않으면, 제 2 타겟 프레임 크기에 기초한 비트스트림, 즉 증가된 채널 대역폭에 기초한 비트스트림이 선택되어 송출된다.
일부 실시예에서, 장치, 시스템 또는 프로세스는 적응 양자화를 포함한다. 양자화를 수행하기 위해 단 하나의 QP를 사용하는 종래의 접근 방식과 달리, 실시예는 동시에 두 세트의 양자화 계수를 생성하기 위해 두 개의 QP와 같은 복수 개의 QP 값을 사용할 수 있다. 이후에 엔트로피 코딩이 적용되어 2 개의 비트스트림을 생성하는데, 2 개의 비트스트림은 안정적인 채널 대역폭에 기초한 제 2 비트스트림 및 증가하는 채널 대역폭에 기초한 제 2 비트스트림이다.
도 5는 일부 실시예에 따른 전송 제어를 이용하는 비디오 코딩 프로세스의 예시이다. 일부 실시예에서, 비디오 코딩 프로세스(500)는 도 5에 도시된 바와 같을 수 있고, 네트워크 채널의 채널 피드백(505)이 미래 채널 대역폭 예측(또는 추정)(510)에 사용된다. 미래 채널 대역폭 예측(510)은 전송부(예를 들어, 도 3에 예시된 전송 메커니즘(330))로부터의 채널 처리량 피드백에 기초하고, 예측 처리량/대역폭이 다음 프레임에 대한 복수의 속도 제어 구성 요소(또는 모듈) 중 하나에 제공된다. 일부 실시예에서, 구성 요소는 증가하는 대역폭(515)을 위한 레이트 제어 구성 요소(515), 안정적인 대역폭을 위한 레이트 제어 구성 요소(520), 및 감소하는 대역폭(525)을 위한 레이트 제어 구성 요소이다. 예시된 바와 같이, 프로세스(500)는 인트라/인터 예측 모드 결정 및 변환(530), 적응 양자화(535) 및 엔트로피 코딩을 수행하여 하나 이상의 비트스트림, bs1(550) 및 bs2(555)를 생성한다.
따라서, 미래 채널 대역폭 예측(510)이, 네트워크 처리량/대역폭이 상향 이동하고 있음을 나타내면, 증가하는 대역폭(515)을 위한 레이트 제어 구성 요소(515)가 트리거된다. 이 구성 요소(515)는 2 개의 타겟 프레임 크기, 즉 이전 프레임에 기초한 제 1 타겟 프레임 크기 및 추정된 대역폭 증가에 기초한 제 2 타겟 프레임 크기를 생성하기 위한 것이다. 이 구성 요소는 또한 두 개의 QP(제 1 타겟 프레임 크기에 기초한 QP1 및 제 2 타겟 프레임 크기에 기초한 QP2)를 생성하기 위한 것이다. 일부 실시예에서, QP2가 임계값보다 작으면, 비디오 해상도가 증가될 수 있고, 이에 따라 비디오 품질이 높아질 수 있다. 그렇지 않으면, 하나의 QP(QP1)가 일반 인트라/인터 예측, 모드 결정 및 변환(530)에 사용되고, 두 QP(QP1 및 QP2)가 적응 양자화(535)에 사용되어 엔트로피 코딩(540)에서, 2 개의 비트스트림(bs1(550) 및 bs2(555)로 예시됨)을 생성하며, 비트스트림은 안정적인 채널 대역폭에 기초한 제 1 비트스트림 및 증가하는 채널 대역폭에 기초한 제 2 비트스트림이다.
미래 채널 대역폭 예측(510)이 네트워크 처리량/대역폭이 안정적임을 나타내면, 안정적인 대역폭을 위한 레이트 제어 구성 요소(520)가 트리거된다. 이 구성 요소(520)는 이전 프레임에 기초하여 단일 타겟 프레임 크기를 생성하고, 단일 타겟 프레임 크기에 기초하여 단일 QP(QP0)를 출력하기 위한 것으로, QP0은 현재 프레임의 전체 인코딩 프로세스에 사용된다. 이러한 방식으로, 예측이 안정적인 채널 대역폭을 나타내는 경우에는 하나의 비트스트림만 필요하고 또한 생성된다.
미래 채널 대역폭 예측(510)이 네트워크 처리량/대역폭이 하향 이동하고 있음을 나타내면, 대역폭을 감소시키기 위한 속도 제어 구성 요소(525)가 트리거된다. 이 구성 요소(525)는 2 개의 타겟 프레임 크기, 이전 프레임에 기초한 제 1 타겟 프레임 크기 및 채널 대역폭의 감소에 기초한 제 2 타겟 프레임 크기를 생성하기 위한 것이다. 이 구성 요소(525)는 또한 2 개의 QP(제 1 타겟 프레임 크기에 기초한 QP3 및 제 2 타겟 프레임 크기에 기초한 QP4) 및 프레임 스킵 결정을 생성하기 위한 것이다. 일부 실시예에서, QP4가 임계값보다 크면, 프레임 스킵이 설정될 수 있고, 다음 인코딩 프로세스가 스킵되고 전체 프레임이 스킵으로 코딩되거나, 또는 대역폭 요구 사항을 감소시키기 위해 비디오 해상도를 줄일 수 있다. 그렇지 않으면, 하나의 QP(QP3)가 인트라/인터 예측 모드 결정 및 변환(530)에 사용되고, 두 QP(QP3 및 QP4)가 적응 양자화(535)에 사용되어 엔트로피 코딩(540)에서 두 개의 비트스트림(bs1(550) 및 bs2(555))로 예시됨)을 생성하며, 두 개의 비트스트림은 안정적인 채널 대역폭에 기초한 제 1 비트스트림 및 감소하는 채널 대역폭에 기초한 제 2 비트스트림이다.
일부 실시예에서, 프로세스(500)는 인스턴트 (현재) 채널 피드백에 기초하여 비트스트림을 선택(560)하는 것을 더 포함한다. 2 개의 비트스트림이 이용가능한 경우(bs1(550) 및 bs2(555)), 하나의 비트스트림만이 선택되고 전송부로 송출된다(선택된 비트스트림(565)으로 도시됨). 일부 실시예에서, 즉각적인 채널 피드백이 사용 가능하다면, 새로운 인스턴트 타겟 프레임 크기가 추정되고, 비트스트림 선택(560)은 인스턴트 타겟 프레임 크기에 더 가까운 비트스트림 크기를 선택하는 것이다. 즉각적인 채널 피드백을 사용할 수 없는 경우, 제 2 타겟 프레임 크기에 기초한 비트스트림(즉, 증가된 채널 대역폭 또는 감소된 채널 대역폭에 기초한 비트스트림)이 선택되어 송출된다. 로컬 디코딩 및 재구성(570)이 후속 프레임에 대한 참조 프레임을 생성하기 위해 선택된 비트스트림에 적용된다.
본 명세서에서의 논의는 일반적으로 하나 또는 두 개의 타겟 프레임 크기를 설명하지만, 실시예는 이러한 구체적인 실시예에 제한되지 않다. 일부 실시예에서, 장치, 시스템 또는 프로세스는 채널 변화에 대응하는 더 정확한 제어를 제공하기 위해 더 많은 타겟 프레임 크기를 생성하도록 확장된다. 예를 들어, 큰 채널 처리량 증가 또는 감소가 예측되는 상황에서, 구성 요소 또는 모듈은 세 개의 프레임 크기(즉, 안정적인 채널 대역폭을 위한 제 1 타겟 프레임 크기, 중간 대역폭 증가 또는 감소를 위한 제 2 타겟 프레임 크기, 및 예측되는 대역폭 증가 또는 감소(즉, 더 큰 증가 또는 감소로서)에 대한 제 3 타겟 프레임 크기)를 생성한다. 일부 실시예에서, 구성 요소 또는 모듈은 3 개의 타겟 프레임 크기에 기초하여 3 개의 QP를 생성할 수 있고, 인코딩은 3 개의 비트스트림을 생성하기 위해 3 개의 값을 사용할 수 있다. 이러한 방식으로, 상당한 채널 변경의 가능성이 있는 경우, 장치, 시스템 또는 프로세스는 현재 프레임에 대해 선택할 3 개(또는 임의의 다른 수)의 비트스트림으로 준비된다.
일부 실시예에서, 장치, 시스템 또는 프로세스는 큰 복잡성 또는 메모리 요구 사항을 요구하지 않고 낮은 레이턴시 및 품질 개선을 제공하기 위해 전송 기반 비디오 코딩을 사용할 수 있다. 일부 실시예에서, 장치, 시스템 또는 프로세스는 미래 네트워크 변경의 자동 예측을 포함하고 이에 따라 QP 형태의 비디오 인코딩의 생성을 조정한다.
또한, 네트워크 상태가 매끄럽다면(즉, 안정적인 대역폭을 갖는 경우), 일 실시예는 복수 개의 비트스트림을 인코딩할 필요가 없으며, 처리량 조건이 급격히 상승 및 하강하는 경우에만 복수 개의 비트스트림이 생성된다. 또한, 실시예는 두 개의 비트스트림을 두 번 인코딩할 필요가 없으며, 오히려 적응 양자화 및 엔트로피 코딩 단계에 두 개의 QP를 적용한다. 이는 인코딩 시간의 약 30 % 미만이므로 메모리 풋 프린트와 메모리 대역폭을 두 배로 늘릴 필요가 없고 오히려 더 적은 양이 요구된다.
도 6은 일부 실시예에 따른 전송 제어 비디오 코딩을 포함하는 새로운 처리 시스템을 도시한다. 예를 들어, 일 실시예에서, 도 6의 전송 제어 비디오 코딩 메커니즘(610)이 도 7의 컴퓨팅 디바이스(700)와 같은 컴퓨팅 디바이스(600)에 의해 채택되거나 호스팅될 수 있다. 컴퓨팅 디바이스(600)는 스마트 명령 디바이스 또는 지능형 개인 보조기, 가정/사무 자동화 시스템, 가전 제품(예, 보안 시스템, 세탁기, 텔레비전 세트 등), 모바일 디바이스(예, 스마트 폰, 태블릿 컴퓨터 등), 게임 디바이스, 휴대용 디바이스, 웨어러블 디바이스(예, 스마트 워치, 스마트 팔찌 등), 가상 현실(VR) 디바이스, 헤드 마운트 디스플레이(HMD), 사물 인터넷(IoT) 디바이스, 랩톱 컴퓨터, 데스크톱 컴퓨터, 서버 컴퓨터, 셋톱 박스(예, 인터넷 기반 케이블 TV 셋톱 박스 등), GPS(Global Positioning System) 기반 디바이스 등과 같은 임의의 수 및 유형의 스마트 디바이스를 포함하거나 제시하는 통신 및 데이터 처리 장치를 나타낸다.
일부 실시예에서, 컴퓨팅 디바이스(600)는 기계 에이전트 또는 기계, 전자 에이전트 또는 기계, 가상 에이전트 또는 기계, 전자-기계 에이전트 또는 기계 등과 같은 자율 기계 또는 인공 지능 에이전트를 포함할 수 있으나 이에 한정되는 것은 아니다. 자율 기계 또는 인공 지능 에이전트의 예는 로봇, 자율 주행 차량(예, 자율 주행 자동차, 자율 비행 비행기, 자율 항해 보트 또는 선박 등), 자율 장비(자율 작동 건설 차량, 자가 작동 의료 장비 등) 등을 포함할 수 있나 이에 한정되는 것은 아니다. 또한, "자율 주행 차량"은 자동차에 국한되지 않으며, 로봇, 자율 장비, 가정용 자율 디바이스 등과 같은 임의의 수 및 유형의 자율 기계를 포함할 수 있고, 그러한 자율 기계와 관련된 임의의 하나 이상의 작업 또는 동작은 자율 주행과 혼용될 수 있다.
또한, 예를 들어, 컴퓨팅 디바이스(600)는 각각의 서버 컴퓨터가 다기능 퍼셉트론 메커니즘을 사용하거나 호스팅하는 복수의 서버 컴퓨터로 구성된 클라우드 컴퓨팅 플랫폼을 포함할 수 있다. 예를 들어, 자동 ISP(Image Signal Processor) 튜닝은 이 문서의 앞부분에서 설명한 구성 요소, 시스템 및 아키텍처 설정을 사용하여 수행될 수 있다. 예를 들어, 앞서 언급한 유형의 장치 중 일부는 FPGA(Field-Programmable Gate Array) 등을 사용하는 것과 같은 맞춤형 학습 절차를 구현하는 데 사용될 수 있다.
또한, 예를 들어, 컴퓨팅 디바이스(600)는 단일 칩상에 컴퓨팅 디바이스(600)의 다양한 하드웨어 및/또는 소프트웨어 구성 요소를 통합하는 시스템 온 칩("SoC" 또는 "SOC")과 같은 집적 회로("IC")를 호스팅하는 컴퓨터 플랫폼을 포함할 수 있다.
예시된 바와 같이, 일 실시예에서, 컴퓨팅 디바이스(600)는 임의의 수 및 유형의 하드웨어 및/또는 소프트웨어 구성 요소를 포함할 수 있고, 이러한 구성 요소는 (제한 없이) 그래픽 처리 장치(614)("GPU" 또는 간단히 "그래픽 프로세서"), 그래픽 드라이버(616)("GPU 드라이버", "그래픽 드라이버 로직", "드라이버 로직", 사용자 모드 드라이버(UMD), 사용자 모드 드라이버 프레임 워크(UMDF) 또는 간단히 "드라이버"라고도 함), 중앙 처리 장치(612)("CPU" 또는 간단히 "애플리케이션 프로세서"), 메모리(604), 네트워크 디바이스, 드라이버 등은 물론 터치 스크린, 터치 패널, 터치 패드, 가상 또는 일반 키보드, 가상 또는 일반 마우스, 포트, 커넥터 등과 같은 입출력(IO) 소스(608) 등이다. 컴퓨팅 디바이스(600)는 컴퓨팅 디바이스(600)의 하드웨어 및/또는 물리적 자원과 사용자 사이의 인터페이스 역할을 하는 운영 체제(OS)를 포함할 수 있다.
전술한 예보다 더 적거나 더 많은 장착된 시스템이 특정 실시예에 대해 바람직할 수 있다는 점을 이해해야 한다. 따라서, 컴퓨팅 디바이스(600)의 구성은 가격 제약, 성능 요구 사항, 기술 개선 또는 기타 상황과 같은 수많은 요인에 따라 실시예마다 달라질 수 있다.
실시예는 시스템 보드, 하드 와이어드 로직, 메모리 디바이스에 의해 저장되고 마이크로프로세서, 펌웨어, ASIC(application specific integrated circuit) 및/또는 FPGA(Field Programmable Gate Array)에 의해 실행되는 소프트웨어를 사용하여 상호 연결된 하나 이상의 마이크로 칩 또는 집적 회로 중 임의의 것 또는 이들의 조합으로서 구현될 수 있다. "로직", "모듈", "구성 요소", "엔진" 및 "메커니즘"이라는 용어는, 예로서 소프트웨어 또는 하드웨어 및/또는 펌웨어와 같은 이들의 조합을 포함할 수 있다.
일 실시예에서, 전송 제어 비디오 코딩 메커니즘(610)은 컴퓨팅 디바이스(600)의 메모리(604)에 의해 호스팅될 수 있다. 다른 실시예에서, 전송 제어 비디오 코딩 메커니즘(610)은 컴퓨팅 디바이스(600)의 운영 체제(606)에 의해 호스팅되거나 그 일부일 수 있다. 다른 실시예에서, 전송 제어 비디오 코딩 메커니즘(610)은 그래픽 드라이버(616)에 의해 호스팅되거나 이용 가능하게 될 수 있다. 또 다른 실시예에서, 전송 제어 비디오 코딩 메커니즘(610)은 그래픽 처리 장치(614)("GPU" 또는 간단히 "그래픽 프로세서") 또는 그래픽 프로세서(614)의 펌웨어에 의해 호스팅되거나 그 일부일 수 있다. 예를 들어, 전송 제어 비디오 코딩 메커니즘(610)은 그래픽 프로세서(614)의 처리 하드웨어에 내장되거나 그 일부로서 구현될 수 있다. 유사하게, 또 다른 실시예에서, 전송 제어 비디오 코딩 메커니즘(610)은 중앙 처리 장치(612)("CPU" 또는 단순히 "애플리케이션 프로세서")에 의해 호스팅되거나 그 일부일 수 있다. 예를 들어, 전송 제어 비디오 코딩 메커니즘(610)은 애플리케이션 프로세서(612)의 처리 하드웨어에 내장되거나 그 일부로서 구현될 수 있다.
또 다른 실시예에서, 전송 제어 비디오 코딩 메커니즘(610)은 컴퓨팅 디바이스(600)의 임의의 수 및 유형의 구성 요소에 의해 호스팅될 수 있거나 그 일부일 수 있으며, 예를 들어, 제어 비디오 코딩 메커니즘(610)의 일부분은 운영 체제(606)에 의해 호스팅되거나 그 일부일 수 있고, 다른 부분은 그래픽 프로세서(614)에 의해 호스팅되거나 그 일부일 수 있으며, 또 다른 부분은 애플리케이션 프로세서(612)에 의해 호스팅되거나 그 일부일 수 있고, 전송 제어 비디오 코딩 메커니즘(610)의 하나 이상의 부분은 운영 체제(606) 및/또는 컴퓨팅 디바이스(600)의 임의의 수 및 유형의 디바이스에 의해 호스팅되거거나 그 일부일 수 있다. 실시예는 전송 제어 비디오 코딩 메커니즘(610)의 특정 실시예 또는 호스팅에 제한되지 않고, 전송 제어 비디오 코딩 메커니즘(610)의 하나 이상의 부분 또는 구성 요소는 하드웨어, 소프트웨어 또는 펌웨어와 같은 이들의 임의의 조합으로 사용되거나 구현된다는 점이 고려될 것이다.
컴퓨팅 디바이스(600)는 LAN, WAN(Wide Area Network), MAN(Metropolitan Area Network), PAN(Personal Area Network), Bluetooth, 클라우드 네트워크, 모바일 네트워크(예, 3 세대(3G), 4 세대(4G), 5 세대(5G) 등), 인트라넷, 인터넷 등과 같은 네트워크에 대한 액세스를 제공하기 위해 네트워크 인터페이스(들)를 호스팅할 수 있다. 네트워크 인터페이스(들)는 예를 들어, 하나 이상의 안테나(e)를 나타낼 수 있는 안테나를 갖는 무선 네트워크 인터페이스를 포함할 수 있다. 네트워크 인터페이스(들)는 또한 예를 들어, 네트워크 케이블을 통해 원격 디바이스와 통신하기 위한 유선 네트워크 인터페이스를 포함할 수 있으며, 이는 예를 들어, 이더넷 케이블, 동축 케이블, 광섬유 케이블, 직렬 케이블 또는 병렬 케이블을 포함할 수 있다.
실시예는, 예를 들어, 기계 실행가능 명령어를 저장한 하나 이상의 기계 판독가능 매체(비 일시적 기계 판독가능 또는 컴퓨터 판독가능 저장 매체 포함)를 포함할 수 있는 컴퓨터 프로그램 제품으로서 제공될 수 있으며, 명령어는 컴퓨터, 컴퓨터 네트워크, 또는 다른 전자 디바이스와 같은 하나 이상의 기계에 의해 실행될 때, 하나 이상의 기계가 본 명세서에 설명된 실시예에 따른 동작을 수행하게 할 수 있다. 기계 판독가능 매체에는 플로피 디스켓, 광학 디스크, CD-ROM(Compact Disc-Read Only Memories) 및 광 자기 디스크, ROM, RAM, EPROM(Erasable Programmable Read Only Memories), EEPROM(Electrically Erasable Programmable Read Only Memories), 자기 테이프, 자기 또는 광학 카드, 플래시 메모리 또는 기계 실행가능 명령어를 저장하는 데 적합한 기타 유형의 매체/기계 판독가능 매체가 포함될 수 있지만 이에 한정되지는 않는다.
또한, 실시예는 컴퓨터 프로그램 제품으로 다운로드될 수 있으며, 여기서 프로그램은 구현된 하나 이상의 데이터 신호를 통해 원격 컴퓨터(예, 서버)에서 요청 컴퓨터(예, 클라이언트)로 전송될 수 있고/있거나 통신 링크(예, 모뎀 및/또는 네트워크 연결)를 통해 반송파 또는 다른 전파 매체에 의해 변조될 수 있다.
문서 전체에서 "사용자"라는 용어는 "뷰어", "관찰자", "스피커", "사람", "개인", "최종 사용자" 등과 혼용될 수 있다. 이 문서 전체에서 "그래픽 도메인"과 같은 용어는 "그래픽 처리 장치", "그래픽 프로세서" 또는 단순히 "GPU"와 혼용될 수 있으며, 유사하게 "CPU 도메인" 또는 "호스트 도메인"은 "컴퓨터 처리 장치", "애플리케이션 프로세서" 또는 단순히 "CPU"와 혼용될 수 있다.
"노드", "컴퓨팅 노드", "서버", "서버 디바이스", "클라우드 컴퓨터", "클라우드 서버", "클라우드 서버 컴퓨터", "머신", " 호스트 머신","디바이스", "컴퓨팅 디바이스", "컴퓨터", "컴퓨팅 시스템" 등은 이 문서 전체에서 혼용될 수 있다. 또한, "애플리케이션", "소프트웨어 애플리케이션", "프로그램", "소프트웨어 프로그램", "패키지", "소프트웨어 패키지" 등과 같은 용어는 본 문서 전체에서 혼용될 수 있다는 점에 유의해야 한다. 또한, "작업(job)", "입력", "요청", "메시지" 등과 같은 용어는 이 문서 전체에서 혼용될 수 있다.
도 7은 일부 실시예에 따른 컴퓨팅 디바이스를 도시한다. 컴퓨팅 디바이스(700)의 세부 사항은 도 6의 처리 시스템(600)의 세부 사항과 동일하거나 유사할 수 있고, 따라서 간결성을 위해, 도 6의 처리 시스템(600)을 참조하여 논의된 특정 세부 사항은 이후에 논의되거나 반복되지 않다는 점이 고려될 것이다. 컴퓨팅 디바이스(700)는 시스템 보드(702)(마더 보드, 메인 회로 보드 또는 다른 용어로도 지칭될 수 있음)를 수용한다. 시스템 보드(702)는 프로세서(704) 및 적어도 하나의 통신 패키지 또는 칩(706)을 포함하나 이에 한정되지 않는 다수의 구성 요소를 포함할 수 있다. 통신 패키지(706)는 하나 이상의 안테나(716)에 결합된다. 프로세서(704)는 물리적 및 전기적으로 보드(702)에 결합된다.
응용예에 따라, 컴퓨팅 디바이스(700)는 시스템 보드(702)에 물리적으로 그리고 전기적으로 결합되거나 결합되지 않을 수 있는 다른 구성 요소를 포함할 수 있다. 이들 다른 구성 요소는 휘발성 메모리(예를 들어, DRAM)(708), 비 휘발성 메모리(예를 들어, ROM)(709), 플래시 메모리(미도시), 그래픽 프로세서(712), 디지털 신호 프로세서(미도시), 암호화 프로세서(미도시), 칩셋(714), 안테나(716), 터치 스크린 디스플레이와 같은 디스플레이(718), 터치 스크린 컨트롤러(720), 배터리(722), 오디오 코덱(미도시), 비디오 코덱(미도시), 전력 증폭기(724), GPS(Global Positioning System) 디바이스(726), 나침반(728), 가속도계(미도시), 자이로스코프(스피커 또는 기타 오디오 요소(730), 하나 이상의 카메라(732), 마이크로폰 어레이(734) 및 대용량 저장 장치(예, 하드 디스크 드라이브)(710), CD(compact disk)(미도시), DVD(digital versatile disk)(미도시) 등)를 포함하나 이에 한정되지는 않는다. 이들 구성 요소는 시스템 보드(702)에 연결되거나, 시스템 보드에 장착되거나, 임의의 다른 구성 요소와 결합될 수 있다.
통신 패키지(706)는 컴퓨팅 디바이스(700)와의 데이터 전송을 위한 무선 및/또는 유선 통신을 가능하게 한다. "무선"이라는 용어 및 그 파생어는 회로, 디바이스, 시스템, 방법, 기술, 넌-솔리드 매체를 통해 변조된 전자기 복사를 사용하여 데이터를 전달할 수 있는 통신 채널 등을 기술하는 데 사용될 수 있다. 이러한 용어는 일부 실시예에서는 그렇지 않을 수 있지만 연관된 디바이스가 어떤 와이어도 포함하지 않는다는 것을 의미하지는 않다. 통신 패키지(706)는 Wi-Fi(IEEE 802.11 제품군), WiMAX(IEEE 802.16 제품군), IEEE 802.20, LTE(long term evolution), Ev-DO(Evolution Data Optimized), HSPA+, HSDPA+, HSUPA+, EDGE(Enhanced Data rates for GSM evolution), GSM(Global System for Mobile communications), GPRS(General Package Radio Service), CDMA(Code Division Multiple Access), TDMA(Time Division Multiple Access), DECT(Digital Enhanced Cordless Telecommunications), Bluetooth, 이더넷 파생 제품 및, 3G, 4G, 5G 이상으로 지정된 기타 모든 무선 및 유선 프로토콜을 포함하나 이에 제한되지 않는 다수의 무선 또는 유선 표준 또는 프로토콜 중 임의의 것을 구현할 수 있다. 컴퓨팅 디바이스(700)는 복수의 통신 패키지(706)를 포함할 수 있다. 예를 들어, 제 1 통신 패키지(706)는 Wi-Fi 및 블루투스와 같은 단거리 무선 통신 전용일 수 있고, 제 2 통신 패키지(706)는 GSM, EDGE, GPRS, CDMA, WiMAX, LTE, Ev-DO 등과 같은 장거리 무선 통신 전용일 수 있다.
임의의 깊이 센서 또는 근접 센서를 포함하는 카메라(732)는 선택적인 이미지 프로세서(736)에 결합되어 변환, 분석, 노이즈 감소, 비교, 깊이 또는 거리 분석, 이미지 이해 및 본 명세서에 설명된 다른 프로세스를 수행한다. 프로세서(704)는 이미지 프로세서(736)에 결합되어 인터럽트를 사용하여 프로세스를 구동하고, 파라미터를 설정하고, 이미지 프로세서 및 카메라의 동작을 제어한다. 대신에 이미지 처리는 프로세서(704), 그래픽 프로세서(712), 카메라(732) 또는 임의의 다른 디바이스에서 수행될 수 있다.
다양한 실시예에서, 컴퓨팅 디바이스(700)는 랩탑, 넷북, 노트북, 울트라 북, 스마트 폰, 태블릿, PDA(Personal Digital Assistant), 울트라 모바일 PC, 모바일 폰, 데스크톱 컴퓨터, 서버, 셋톱 박스, 엔터테인먼트 제어 장치, 디지털 카메라, 휴대용 음악 플레이어 또는 디지털 비디오 레코더일 수 있다. 컴퓨팅 디바이스는 고정형, 휴대용 또는 웨어러블일 수 있다. 추가 실시예에서, 컴퓨팅 디바이스(700)는 데이터를 처리하거나 다른 곳에서의 처리를 위해 데이터를 기록하는 임의의 다른 전자 장치일 수 있다.
실시예는 마더 보드, ASIC(application specific integrated circuit), 및/또는 FPGA(field programmable gate array)를 사용하여 상호 연결된 하나 이상의 메모리 칩, 컨트롤러, CPU(Central Processing Unit), 마이크로 칩 또는 집적 회로를 사용하여 구현될 수 있다. "로직"이라는 용어는 예로서, 소프트웨어 또는 하드웨어 및/또는 소프트웨어와 하드웨어의 조합을 포함할 수 있다.
다음의 절 및/또는 예는 추가 실시예 또는 예에 관련된다. 예들의 세부 사항은 하나 이상의 실시예에서 어디에서나 사용될 수 있다. 상이한 실시예 또는 예의 다양한 특징은 다양한 다른 애플리케이션에 적합하도록 포함된 일부 특징 및 배제 된 다른 특징과 다양하게 조합될 수 있다. 예는 방법, 방법의 동작을 수행하기 위한 수단, 기계에 의해 수행될 때 기계가 방법의 동작을 수행하게 하는 명령어를 포함하는 적어도 하나의 기계 판독가능 매체, 또는 본 명세서에 설명된 실시예 및 예시에 따라 하이브리드 통신을 용이하게 하기 위한 장치 또는 시스템과 같은 대상을 포함할 수 있다.
일부 실시예에서, 장치는 데이터를 처리하기 위한 하나 이상의 프로세서와, 비디오 스트리밍을 위한 데이터를 포함하는 데이터를 저장하는 메모리와, 인코더 및 전송 메커니즘을 포함하는 비디오 처리 메커니즘을 포함하되, 비디오 처리 메커니즘은, 네트워크 채널에 대한 채널 처리량의 예측을 생성하고, 예측에 기초하여 하나 이상의 비트스트림을 인코딩 - 인코딩은 예측이 채널 처리량의 증가 또는 감소를 나타내는 경우에는 제 1 비트스트림 및 제 2 비트스트림을 포함하는 복수의 비트스트림을 인코딩하고, 예측이 안정적인(stable) 채널 처리량을 나타내는 경우 단일 비트스트림을 인코딩하는 것을 포함함 - 하며, 현재 프레임에 대해 하나 이상의 비트스트림 중 한 비트스트림을 선택한다.
일부 실시예에서, 하나 이상의 비트스트림을 인코딩하는 것은, 비디오 처리 메커니즘이, 예측이 채널 처리량의 증가 또는 감소를 나타내는 경우에는 복수의 타겟 프레임 크기를 생성하고, 예측이 안정적인 채널 처리량을 나타내는 경우에는 단일 타겟 프레임 크기를 생성하는 것을 포함하는 것이다.
일부 실시예에서, 복수의 타겟 프레임 크기는 이전 프레임 크기에 기초한 제 1 타겟 프레임 크기 및 예측에 기초한 제 2 타겟 프레임 크기를 포함하고, 단일 타겟 프레임 크기는 이전 프레임 크기에 기초한다.
일부 실시예에서, 하나 이상의 비트스트림을 인코딩하는 것은, 비디오 처리 메커니즘이, 채널 처리량의 증가 또는 감소를 나타내는 예측에 대해서는 제 1 타겟 프레임 크기에 기초한 제 1 양자화 파라미터 및 제 2 타겟 프레임 크기에 기초한 제 2 양자화 파라미터를 생성하고, 안정적인 채널 처리량을 나타내는 예측에 대해서는 단일 타겟 프레임 크기에 기초한 단일 양자화 파라미터를 생성하는 것을 포함하는 것이다.
일부 실시예에서, 비디오 처리 메커니즘은 인트라/인터 예측, 모드 결정 및 변환을 제공하는 제 1 구성 요소를 포함하고, 제 1 구성 요소는 제 1 양자화 파라미터를 수신하거나 단일 양자화 파라미터를 수신하는 것이다.
일부 실시예에서, 비디오 처리 메커니즘은 적응 양자화를 제공하기 위한 제 2 구성 요소를 포함하고, 제 2 구성 요소는, 제 1 양자화 파라미터 및 제 2 양자화 파라미터 둘 다를 수신하여 제 1 비트스트림 및 제 2 비트스트림을 각각 생성하거나, 단일 양자화 파라미터를 수신하여 단일 비트스트림을 생성하는 것이다.
일부 실시예에서, 인스턴트 채널 피드백이 이용 가능한 경우, 현재 프레임에 대해 제 1 비트스트림과 제 2 비트스트림 중에서 선택하는 것은, 비디오 처리 메커니즘이 인스턴트 채널 피드백에 기초하여 인스턴트 타겟 프레임 크기를 추정하고, 제 1 비트스트림과 제 2 비트스트림 중 인스턴트 타겟 프레임 크기에 더 가까운 것을 선택하는 것을 포함한다.
일부 실시예에서, 인스턴트 채널 피드백이 이용 가능하지 않은 경우, 현재 프레임에 대해 제 1 비트스트림과 제 2 비트스트림 중에서 선택하는 것은 비디오 처리 메커니즘 제 2 비트스트림을 선택하는 것을 포함한다.
일부 실시예에서, 하나 이상의 비트스트림을 인코딩하는 것은 타겟 비트레이트의 생성을 포함하지 않는다.
일부 실시예에서, 방법은 네트워크 채널에 대한 채널 처리량의 예측을 생성하는 단계와, 예측에 기초하여 하나 이상의 비트스트림을 인코딩하는 단계 - 인코딩하는 단계는 예측이 채널 처리량의 증가 또는 감소를 나타내는 경우에는 제 1 비트스트림 및 제 2 비트스트림을 포함하는 복수의 비트스트림을 인코딩하는 것 및 예측이 안정적인 채널 처리량을 나타내는 경우에는 단일 비트스트림을 인코딩하는 것을 포함함 - 와, 현재 프레임에 대해 하나 이상의 비트스트림 중 한 비트스트림을 선택하는 단계를 포함한다.
일부 실시예에서, 하나 이상의 비트스트림을 인코딩하는 단계는, 예측이 채널 처리량의 증가 또는 감소를 나타내는 경우에는 복수의 타겟 프레임 크기를 생성하는 것 및 예측이 안정적인 채널 처리량을 나타내는 경우에는 단일 타겟 프레임 크기를 생성하는 것을 포함한다.
일부 실시예에서, 복수의 타겟 프레임 크기는 이전 프레임 크기에 기초한 제 1 타겟 프레임 크기 및 예측에 기초한 제 2 타겟 프레임 크기를 포함하고, 단일 타겟 프레임 크기는 이전 프레임 크기에 기초한다.
일부 실시예에서, 하나 이상의 비트스트림을 인코딩하는 단계는, 채널 처리량의 증가 또는 감소를 나타내는 예측에 대해서는, 제 1 타겟 프레임 크기에 기초한 제 1 양자화 파라미터 및 제 2 타겟 프레임 크기에 기초한 제 2 양자화 파라미터를 생성하는 것 및 안정적인 채널 처리량을 나타내는 예측에 대해서는 단일 타겟 프레임 크기에 기초한 단일 양자화 파라미터를 생성하는 것을 포함한다.
일부 실시예에서, 방법은 제 1 양자화 파라미터 또는 단일 양자화 파라미터를 사용하여 인트라/인터 예측, 모드 결정 및 변환을 제공하는 수행하는 단계를 더 포함한다.
일부 실시예에서, 방법은 제 1 양자화 파라미터 및 제 2 양자화 파라미터 둘 다를 사용하여 제 1 비트스트림 및 제 2 비트스트림을 각각 생성하거나, 단일 양자화 파라미터를 사용하여 비트스트림을 생성하는 적응 양자화를 수행하는 단계를 더 포함한다.
일부 실시예에서, 인스턴트 채널 피드백이 이용 가능한 경우, 현재 프레임에 대해 제 1 비트스트림과 제 2 비트스트림 중에서 선택하는 단계는, 인스턴트 채널 피드백에 기초하여 인스턴트 타겟 프레임 크기를 추정하는 것 및 제 1 비트스트림과 제 2 비트스트림 중 인스턴트 타겟 프레임 크기에 더 가까운 것을 선택하는 것을 포함한다.
일부 실시예에서, 인스턴트 채널 피드백이 이용 가능하지 않은 경우, 현재 프레임에 대해 제 1 비트스트림과 제 2 비트스트림 중에서 선택하는 단계는 제 2 비트스트림을 선택하는 것을 포함한다.
일부 실시예에서, 채널 처리량의 증가를 나타내는 예측에 대해서는, 방법은 제 2 양자화 파라미터가 제 1 임계값보다 작다고 판정되면 비디오 해상도를 증가시키는 단계를 더 포함한다.
일부 실시예에서, 채널 처리량의 감소를 나타내는 예측에 대해서는, 방법은 제 2 양자화 파라미터가 제 2 임계값보다 크다고 판정되면 프레임을 스킵하거나 비디오 해상도를 감소시키는 단계를 더 포함한다.
일부 실시예에서, 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서가 동작을 수행하게 하는 명령어 시퀀스를 나타내는 데이터가 저장되어 있는 비 일시적 컴퓨터 판독가능 저장 매체로서, 동작은, 네트워크 채널에 대한 채널 처리량의 예측을 생성하는 것과, 예측에 기초하여 하나 이상의 비트스트림을 인코딩하는 것 - 인코딩하는 것은 예측이 채널 처리량의 증가 또는 감소를 나타내는 경우에는 제 1 비트스트림 및 제 2 비트스트림을 포함하는 복수의 비트스트림을 인코딩하는 것 및, 예측이 안정적인 채널 처리량을 나타내는 경우에는 단일 비트스트림을 인코딩하는 것을 포함함 - 과, 현재 프레임에 대해 하나 이상의 비트스트림 중 한 비트스트림을 선택하는 것을 포함한다.
일부 실시예에서, 하나 이상의 비트스트림을 인코딩하는 것은, 예측이 채널 처리량의 증가 또는 감소를 나타내는 경우에는 복수의 타겟 프레임 크기를 생성하는 것 및 예측이 안정적인 채널 처리량을 나타내는 경우에는 단일 타겟 프레임 크기를 생성하는 것을 포함한다.
일부 실시예에서, 복수의 타겟 프레임 크기는 이전 프레임 크기에 기초한 제 1 타겟 프레임 크기 및 예측에 기초한 제 2 타겟 프레임 크기를 포함하고, 단일 타겟 프레임 크기는 이전 프레임 크기에 기초한다.
일부 실시예에서, 하나 이상의 비트스트림을 인코딩하는 것은, 채널 처리량의 증가 또는 감소를 나타내는 예측에 대해서는 제 1 타겟 프레임 크기에 기초한 제 1 양자화 파라미터 및 제 2 타겟 프레임 크기에 기초한 제 2 양자화 파라미터를 생성하는 것 및 안정적인 채널 처리량을 나타내는 예측에 대해서는 단일 타겟 프레임 크기에 기초한 단일 양자화 파라미터를 생성하는 것을 포함한다.
전술한 설명에서, 설명을 목적으로, 기술된 실시예의 철저한 이해를 제공하기 위해 다수의 구체적인 세부 사항이 설명되었다. 그러나, 이러한 구체적인 세부 사항의 일부가 없어도 실시예가 실시될 수 있다는 것은 당업자에게 명백할 것이다. 다른 경우에는 잘 알려진 구조와 디바이스가 블록 다이어그램 형식으로 표시된다. 예시된 구성 요소 사이에는 중간 구조가 있을 수 있다. 본 명세서에 설명되거나 예시된 구성 요소는 예시되거나 설명되지 않은 추가 입력 또는 출력을 가질 수 있다.
다양한 실시예는 다양한 프로세스를 포함할 수 있다. 이러한 프로세스는 하드웨어 구성 요소에 의해 수행되거나 컴퓨터 프로그램 또는 기계 실행가능 명령어로 구현될 수 있으며, 이는 범용 또는 전용 프로세서 또는 명령어로 프로그래밍된 논리 회로가 프로세스를 수행하도록 하는 데 사용될 수 있다. 대안적으로, 프로세스는 하드웨어와 소프트웨어의 조합에 의해 수행될 수 있다.
다양한 실시예의 일부는 컴퓨터 프로그램 제품으로서 제공될 수 있으며, 컴퓨터 프로그램 명령어가 저장된 컴퓨터 판독가능 매체를 포함할 수 있으며, 이는 컴퓨터(또는 다른 전자 디바이스)를, 특정 실시예에 따른 프로세스를 수행하도록 하나 이상의 프로세서에 의해 실행되게 프로그래밍하는 데 사용될 수 있다. 컴퓨터 판독가능 매체는 자기 디스크, 광 디스크, ROM(read-only memory), RAM(random access memory), EPROM(erasable programmable read-only memory), EEPROM(electrically-erasable programmable read-only memory), 자기 또는 광학 카드, 플래시 메모리 또는 전자 명령을 저장하는 데 적합한 기타 유형의 컴퓨터 판독가능 매체를 포함할 수 있지만 이에 한정되지는 않다. 더욱이, 실시예는 또한 컴퓨터 프로그램 제품으로 다운로드될 수 있으며, 프로그램은 원격 컴퓨터에서 요청 컴퓨터로 전송될 수 있다. 일부 실시예에서, 비 일시적 컴퓨터 판독가능 저장 매체에는 프로세서에 의해 실행될 때, 프로세서로 하여금 특정 작업을 수행하게 하는 명령어 시퀀스를 나타내는 데이터가 저장되어 있다.
대부분의 방법은 가장 기본적인 형태로 설명되어 있지만, 방법 중 어느 하나에 프로세스를 추가하거나 삭제할 수 있으며, 본 실시예의 기본 범위를 벗어나지 않고 설명된 메시지 중 어느 하나에서 정보를 추가하거나 뺄 수 있다. 많은 추가적인 수정 및 개조가 이루어질 수 있다는 것은 당업자에게 명백할 것이다. 구체적인 실시예는 개념을 제한하기 위해 제공되는 것이 아니라 그것을 설명하기 위해 제공된다. 실시예의 범위는 위에 제공된 특정 예에 의해 결정되는 것이 아니라 아래의 청구 범위에 의해서만 결정된다.
요소 "A"가 요소 "B"에 결합되거나 요소 "B"와 결합된다고 하면, 요소 A는 요소 B에 직접 결합되거나, 예를 들어, 요소 C를 통해 간접적으로 결합될 수 있다. 명세서 또는 청구 범위에 구성 요소, 특징, 구조, 프로세스 또는 특성 A가 구성 요소, 특징, 구조, 프로세스 또는 특성 B를 "유발한다"고 언급하는 것은, "A"가 "B"의 적어도 부분적인 원인이지만 "B"를 유발하는 데 도움이 되는 적어도 하나의 다른 구성 요소, 특징, 구조, 프로세스 또는 특성일 수도 있다는 것을 의미한다. 명세서에서, 구성 요소, 기능, 구조, 프로세스 또는 특성이 "포함될 수 있다", "포함될 것이다" 또는 "포함될 가능성이 있다"고 나타내는 경우, 해당 특정 구성 요소, 기능, 구조, 프로세스 또는 특성이 반드시 포함되어야 하는 것은 아니다. 명세서 또는 청구 범위에서 "일" 또는 "한" 요소를 언급하는 경우, 이것은 설명된 요소 중 하나만 있다는 것을 의미하지 않는다.
실시예는 구현예 또는 예시이다. 명세서에서 "실시예", "일 실시예", "일부 실시예" 또는 "다른 실시예"에 대한 언급은 실시예와 관련하여 설명된 특정 특징, 구조 또는 특성이 적어도 일부 실시예에 포함된다는 것을 의미하지만, 반드시 모든 실시예에서 그러한 것은 아니다. "실시예", "일 실시예" 또는 "일부 실시예"의 다양한 출현은 반드시 모두 동일한 실시예를 지칭하는 것은 아니다. 예시적인 실시예의 전술한 설명에서, 개시 내용을 간소화하고 다양한 신규한 측면 중 하나 이상의 이해를 돕기 위해 단일 실시예, 도면 또는 그 설명에서 다양한 특징이 때로는 함께 그룹화된다는 점을 이해해야 한다. 그러나, 이러한 개시 방법은 청구된 실시예가 각 청구 범위에서 명시적으로 인용된 것보다 더 많은 특징을 필요로 한다는 의도를 반영하는 것으로 해석되어서는 안 된다. 오히려, 다음의 청구 범위가 반영하는 바와 같이, 새로운 측면은 하나의 전술한 개시된 실시예의 모든 특징보다 적다. 따라서, 청구 범위는 본 설명에 명시적으로 통합되며, 각 청구항은 별도의 실시예로서 그 자체로 존재한다.

Claims (23)

  1. 장치로서,
    데이터를 처리하기 위한 하나 이상의 프로세서와,
    비디오 스트리밍을 위한 데이터를 포함하는 데이터를 저장하는 메모리와,
    인코더 및 전송 메커니즘을 포함하는 비디오 처리 메커니즘
    을 포함하되,
    상기 비디오 처리 메커니즘은,
    네트워크 채널에 대한 채널 처리량의 예측(prediction)을 생성하고,
    상기 예측에 기초하여 하나 이상의 비트스트림을 인코딩 - 상기 인코딩은, 상기 예측이 채널 처리량의 증가 또는 감소를 나타내는 경우에는 제 1 비트스트림 및 제 2 비트스트림을 포함하는 복수의 비트스트림을 인코딩하고, 상기 예측이 안정적인 (stable) 채널 처리량을 나타내는 경우에는 단일 비트스트림을 인코딩하는 것을 포함함 - 하며,
    현재 프레임에 대해 상기 하나 이상의 비트스트림 중 한 비트스트림을 선택하는 것인,
    장치.
  2. 제 1 항에 있어서,
    상기 하나 이상의 비트스트림을 인코딩하는 것은, 상기 비디오 처리 메커니즘이, 상기 예측이 채널 처리량의 증가 또는 감소를 나타내는 경우에는 복수의 타겟 프레임 크기를 생성하고, 상기 예측이 안정적인 채널 처리량을 나타내는 경우에는 단일 타겟 프레임 크기를 생성하는 것을 포함하는 것인,
    장치.
  3. 제 2 항에 있어서,
    상기 복수의 타겟 프레임 크기는 이전 프레임 크기에 기초한 제 1 타겟 프레임 크기 및 상기 예측에 기초한 제 2 타겟 프레임 크기를 포함하고,
    상기 단일 타겟 프레임 크기는 상기 이전 프레임 크기에 기초하는 것인,
    장치.
  4. 제 3 항에 있어서,
    상기 하나 이상의 비트스트림을 인코딩하는 것은, 상기 비디오 처리 메커니즘이, 채널 처리량의 증가 또는 감소를 나타내는 예측에 대해서는 상기 제 1 타겟 프레임 크기에 기초한 제 1 양자화 파라미터 및 상기 제 2 타겟 프레임 크기에 기초한 제 2 양자화 파라미터를 생성하고, 안정적인 채널 처리량을 나타내는 예측에 대해서는 단일 타겟 프레임 크기에 기초한 단일 양자화 파라미터를 생성하는 것을 포함하는 것인,
    장치.
  5. 제 4 항에 있어서,
    상기 비디오 처리 메커니즘은 인트라/인터 예측, 모드 결정 및 변환을 제공하는 제 1 구성 요소를 포함하고,
    상기 제 1 구성 요소는 상기 제 1 양자화 파라미터를 수신하거나 상기 단일 양자화 파라미터를 수신하는 것인,
    장치.
  6. 제 4 항에 있어서,
    상기 비디오 처리 메커니즘은 적응 양자화(adaptive quantization)를 제공하기 위한 제 2 구성 요소를 포함하고,
    상기 제 2 구성 요소는, 상기 제 1 양자화 파라미터 및 상기 제 2 양자화 파라미터 둘 다를 수신하여 상기 제 1 비트스트림 및 상기 제 2 비트스트림을 각각 생성하거나, 상기 단일 양자화 파라미터를 수신하여 상기 단일 비트스트림을 생성하는 것인,
    장치.
  7. 제 6 항에 있어서,
    인스턴트 채널 피드백이 이용 가능한 경우, 현재 프레임에 대해 상기 제 1 비트스트림과 상기 제 2 비트스트림 중에서 선택하는 것은, 상기 비디오 처리 메커니즘이 상기 인스턴트 채널 피드백에 기초하여 인스턴트 타겟 프레임 크기를 추정하고, 상기 제 1 비트스트림과 상기 제 2 비트스트림 중 상기 인스턴트 타겟 프레임 크기에 더 가까운 것을 선택하는 것을 포함하는 것인,
    장치.
  8. 제 6 항에 있어서,
    상기 인스턴트 채널 피드백이 이용 가능하지 않은 경우, 현재 프레임에 대해 상기 제 1 비트스트림과 상기 제 2 비트스트림 중에서 선택하는 것은 상기 비디오 처리 메커니즘이 상기 제 2 비트스트림을 선택하는 것을 포함하는 것인,
    장치.
  9. 제 1 항에 있어서,
    하나 이상의 비트스트림을 인코딩하는 것은 타겟 비트레이트의 생성을 포함하지 않는 것인,
    장치.
  10. 네트워크 채널에 대한 채널 처리량의 예측을 생성하는 단계와,
    상기 예측에 기초하여 하나 이상의 비트스트림을 인코딩하는 단계 - 상기 인코딩하는 단계는, 상기 예측이 채널 처리량의 증가 또는 감소를 나타내는 경우에는 제 1 비트스트림 및 제 2 비트스트림을 포함하는 복수의 비트스트림을 인코딩하는 것과, 상기 예측이 안정적인 채널 처리량을 나타내는 경우에는 단일 비트스트림을 인코딩하는 것을 포함함 - 와,
    현재 프레임에 대해 상기 하나 이상의 비트스트림 중 한 비트스트림을 선택하는 단계
    를 포함하는 방법.
  11. 제 10 항에 있어서,
    상기 하나 이상의 비트스트림을 인코딩하는 단계는, 상기 예측이 채널 처리량의 증가 또는 감소를 나타내는 경우에는 복수의 타겟 프레임 크기를 생성하는 것과, 상기 예측이 안정적인 채널 처리량을 나타내는 경우에는 단일 타겟 프레임 크기를 생성하는 것을 포함하는 것인,
    방법.
  12. 제 11 항에 있어서,
    상기 복수의 타겟 프레임 크기는 이전 프레임 크기에 기초한 제 1 타겟 프레임 크기 및 상기 예측에 기초한 제 2 타겟 프레임 크기를 포함하고,
    상기 단일 타겟 프레임 크기는 상기 이전 프레임 크기에 기초하는 것인,
    방법.
  13. 제 12 항에 있어서,
    상기 하나 이상의 비트스트림을 인코딩하는 단계는, 채널 처리량의 증가 또는 감소를 나타내는 예측에 대해서는 상기 제 1 타겟 프레임 크기에 기초한 제 1 양자화 파라미터 및 상기 제 2 타겟 프레임 크기에 기초한 제 2 양자화 파라미터를 생성하는 것 및 안정적인 채널 처리량을 나타내는 예측에 대해서는 상기 단일 타겟 프레임 크기에 기초한 단일 양자화 파라미터를 생성하는 것을 포함하는 것인,
    방법.
  14. 제 13 항에 있어서,
    상기 제 1 양자화 파라미터 또는 상기 단일 양자화 파라미터를 사용하여 인트라/인터 예측, 모드 결정 및 변환을 제공하는 수행하는 단계를 더 포함하는
    방법.
  15. 제 13 항에 있어서,
    상기 제 1 양자화 파라미터 및 상기 제 2 양자화 파라미터 둘 다를 사용하여 상기 제 1 비트스트림 및 상기 제 2 비트스트림을 각각 생성하거나, 상기 단일 양자화 파라미터를 사용하여 상기 단일 비트스트림을 생성하는, 적응 양자화를 수행하는 단계
    를 더 포함하는 방법.
  16. 제 15 항에 있어서,
    인스턴트 채널 피드백이 이용 가능한 경우, 현재 프레임에 대해 상기 제 1 비트스트림과 상기 제 2 비트스트림 중에서 선택하는 단계는, 상기 인스턴트 채널 피드백에 기초하여 인스턴트 타겟 프레임 크기를 추정하는 것 및 상기 제 1 비트스트림과 상기 제 2 비트스트림 중 상기 인스턴트 타겟 프레임 크기에 더 가까운 것을 선택하는 것을 포함하는 것인,
    방법.
  17. 제 15 항에 있어서,
    상기 인스턴트 채널 피드백이 이용 가능하지 않은 경우, 현재 프레임에 대해 상기 제 1 비트스트림과 상기 제 2 비트스트림 중에서 선택하는 단계는 상기 제 2 비트스트림을 선택하는 것을 포함하는 것인,
    방법.
  18. 제 13 항에 있어서,
    채널 처리량의 증가를 나타내는 예측에 대해서는, 상기 제 2 양자화 파라미터가 제 1 임계값보다 작다고 판정되면 비디오 해상도를 증가시키는 단계
    를 더 포함하는 방법.
  19. 제 13 항에 있어서,
    채널 처리량의 감소를 나타내는 예측에 대해서는, 상기 제 2 양자화 파라미터가 제 2 임계값보다 크다고 판정되면 프레임을 스킵하거나 비디오 해상도를 감소시키는 단계
    를 더 포함하는 방법.
  20. 하나 이상의 프로세서에 의해 실행될 때 상기 하나 이상의 프로세서가 동작을 수행하게 하는 명령어 시퀀스를 나타내는 데이터가 저장되어 있는 비 일시적 컴퓨터 판독가능 저장 매체로서,
    상기 동작은,
    네트워크 채널에 대한 채널 처리량의 예측을 생성하는 것과,
    상기 예측에 기초하여 하나 이상의 비트스트림을 인코딩하는 것 - 상기 인코딩하는 것은 상기 예측이 채널 처리량의 증가 또는 감소를 나타내는 경우에는 제 1 비트스트림 및 제 2 비트스트림을 포함하는 복수의 비트스트림을 인코딩하는 것 및, 상기 예측이 안정적인 채널 처리량을 나타내는 경우에는 단일 비트스트림을 인코딩하는 것을 포함함 - 과,
    현재 프레임에 대해 상기 하나 이상의 비트스트림 중 한 비트스트림을 선택하는 것을 포함하는 것인,
    비 일시적 컴퓨터 판독가능 저장 매체.
  21. 제 20 항에 있어서,
    상기 하나 이상의 비트스트림을 인코딩하는 것은, 상기 예측이 채널 처리량의 증가 또는 감소를 나타내는 경우에는 복수의 타겟 프레임 크기를 생성하는 것 및 상기 예측이 안정적인 채널 처리량을 나타내는 경우에는 단일 타겟 프레임 크기를 생성하는 것을 포함하는 것인,
    비 일시적 컴퓨터 판독가능 저장 매체.
  22. 제 21 항에 있어서,
    상기 복수의 타겟 프레임 크기는 이전 프레임 크기에 기초한 제 1 타겟 프레임 크기 및 상기 예측에 기초한 제 2 타겟 프레임 크기를 포함하고,
    상기 단일 타겟 프레임 크기는 상기 이전 프레임 크기에 기초하는 것인,
    비 일시적 컴퓨터 판독가능 저장 매체.
  23. 제 22 항에 있어서,
    상기 하나 이상의 비트스트림을 인코딩하는 것은, 채널 처리량의 증가 또는 감소를 나타내는 예측에 대해서는 상기 제 1 타겟 프레임 크기에 기초한 제 1 양자화 파라미터 및 상기 제 2 타겟 프레임 크기에 기초한 제 2 양자화 파라미터를 생성하는 것 및 안정적인 채널 처리량을 나타내는 예측에 대해서는 상기 단일 타겟 프레임 크기에 기초한 단일 양자화 파라미터를 생성하는 것을 포함하는 것인,
    비 일시적 컴퓨터 판독가능 저장 매체.
KR1020207037103A 2018-09-28 2018-09-28 전송 제어 비디오 코딩 KR20210064116A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/108208 WO2020061990A1 (en) 2018-09-28 2018-09-28 Transport controlled video coding

Publications (1)

Publication Number Publication Date
KR20210064116A true KR20210064116A (ko) 2021-06-02

Family

ID=69950900

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207037103A KR20210064116A (ko) 2018-09-28 2018-09-28 전송 제어 비디오 코딩

Country Status (5)

Country Link
US (1) US11627307B2 (ko)
EP (1) EP3857869A4 (ko)
KR (1) KR20210064116A (ko)
CN (1) CN112715028A (ko)
WO (1) WO2020061990A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11627307B2 (en) 2018-09-28 2023-04-11 Intel Corporation Transport controlled video coding
WO2023224300A1 (ko) * 2022-05-16 2023-11-23 현대자동차주식회사 예측-변환 생략을 이용하는 비디오 코딩을 위한 방법 및 장치

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115209189B (zh) * 2022-09-15 2023-03-10 广州迈聆信息科技有限公司 一种视频流传输方法、系统、服务器及存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1638333A1 (en) * 2004-09-17 2006-03-22 Mitsubishi Electric Information Technology Centre Europe B.V. Rate adaptive video coding
US7797723B2 (en) * 2004-10-30 2010-09-14 Sharp Laboratories Of America, Inc. Packet scheduling for video transmission with sender queue control
CN100444637C (zh) 2005-04-14 2008-12-17 中兴通讯股份有限公司 一种在网络中传输视频流的方法
US9544602B2 (en) * 2005-12-30 2017-01-10 Sharp Laboratories Of America, Inc. Wireless video transmission system
US8983397B2 (en) * 2008-10-10 2015-03-17 Qualcomm Incorporated Method and apparatus for channel feedback by multiple description coding in a wireless communication system
US9210436B2 (en) * 2010-01-11 2015-12-08 Sungkyunkwan University Foundation For Corporate Collaboration Distributed video coding/decoding method, distributed video coding/decoding apparatus, and transcoding apparatus
WO2012079236A1 (zh) 2010-12-16 2012-06-21 北京航空航天大学 基于双时间尺度的视频流传输控制方法
US20120307886A1 (en) * 2011-05-31 2012-12-06 Broadcom Corporation Adaptive Video Encoding Based on Predicted Wireless Channel Conditions
CN102427531B (zh) * 2011-10-18 2013-10-09 东南大学 跨层交互式图像质量连续可调的实时视频编解码方法
US20130322516A1 (en) 2012-05-31 2013-12-05 Broadcom Corporation Systems and methods for generating multiple bitrate streams using a single encoding engine
KR102091138B1 (ko) * 2013-09-12 2020-03-19 삼성전자주식회사 무선 네트워크 환경에서 데이터를 전송하는 방법 및 데이터 전송 장치
US10097828B2 (en) * 2014-12-11 2018-10-09 Intel Corporation Rate control for parallel video encoding
US9807391B2 (en) 2014-12-22 2017-10-31 Arris Enterprises Llc Multiple stream video compression in multiple bitrate video encoding
EP3400708B1 (en) 2016-01-04 2021-06-30 Telefonaktiebolaget LM Ericsson (publ) Improved network recording apparatus
WO2018132964A1 (zh) * 2017-01-18 2018-07-26 深圳市大疆创新科技有限公司 传输编码数据的方法、装置、计算机系统和移动设备
US11272189B2 (en) * 2018-02-20 2022-03-08 Netgear, Inc. Adaptive encoding in security camera applications
CN112715028A (zh) 2018-09-28 2021-04-27 英特尔公司 传送控制的视频编码

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11627307B2 (en) 2018-09-28 2023-04-11 Intel Corporation Transport controlled video coding
WO2023224300A1 (ko) * 2022-05-16 2023-11-23 현대자동차주식회사 예측-변환 생략을 이용하는 비디오 코딩을 위한 방법 및 장치

Also Published As

Publication number Publication date
US20210218954A1 (en) 2021-07-15
WO2020061990A1 (en) 2020-04-02
EP3857869A4 (en) 2022-07-13
EP3857869A1 (en) 2021-08-04
CN112715028A (zh) 2021-04-27
US11627307B2 (en) 2023-04-11

Similar Documents

Publication Publication Date Title
KR101634500B1 (ko) 미디어 작업부하 스케줄러
US9917877B2 (en) Streaming the visible parts of a spherical video
CN107258086B (zh) 针对汇显示器的静态帧图像质量改进的方法、装置及系统
EP3167616B1 (en) Adaptive bitrate streaming for wireless video
US9918094B2 (en) Compressing and representing multi-view video
JP6226490B2 (ja) 小待ち時間レート制御システムおよび方法
US10951914B2 (en) Reliable large group of pictures (GOP) file streaming to wireless displays
Bachhuber et al. On the minimization of glass-to-glass and glass-to-algorithm delay in video communication
CN102396225B (zh) 用于可靠实时传输的图像和视频的双模式压缩
US20180184089A1 (en) Target bit allocation for video coding
EP3251345B1 (en) System and method for multi-view video in wireless devices
US11627307B2 (en) Transport controlled video coding
US20170064311A1 (en) Method and Apparatus for the Single Input Multiple Output (SIMO) Media Adaptation
US20160360206A1 (en) Rate controller for real-time encoding and transmission
WO2021092821A1 (en) Adaptively encoding video frames using content and network analysis
CN113132728B (zh) 编码方法及编码器
US10313675B1 (en) Adaptive multi-pass video encoder control
US10523958B1 (en) Parallel compression of image data in a compression device
US20160360230A1 (en) Video coding techniques for high quality coding of low motion content
JP2021527362A (ja) イントラ予測のための方法及び装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal