KR20040074997A - System and method for modifying a video stream based on a client or network environment - Google Patents

System and method for modifying a video stream based on a client or network environment Download PDF

Info

Publication number
KR20040074997A
KR20040074997A KR10-2004-7008811A KR20047008811A KR20040074997A KR 20040074997 A KR20040074997 A KR 20040074997A KR 20047008811 A KR20047008811 A KR 20047008811A KR 20040074997 A KR20040074997 A KR 20040074997A
Authority
KR
South Korea
Prior art keywords
computer
video stream
network
obtaining
modifying
Prior art date
Application number
KR10-2004-7008811A
Other languages
Korean (ko)
Other versions
KR101080237B1 (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 KR20040074997A publication Critical patent/KR20040074997A/en
Application granted granted Critical
Publication of KR101080237B1 publication Critical patent/KR101080237B1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • 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
    • 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/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • 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, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234363Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the spatial resolution, e.g. for clients with a lower screen resolution
    • 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, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234381Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the temporal resolution, e.g. decreasing the frame rate by frame skipping
    • 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/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/4424Monitoring of the internal components or processes of the client device, e.g. CPU or memory load, processing speed, timer, counter or percentage of the hard disk space used
    • 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/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6582Data stored in the client, e.g. viewing habits, hardware capabilities, credit card number

Abstract

비디오 서버(VS)(100)는 파라미터들의 값들에 따라 비디오 스트림을 인코드하고 이 비디오 스트림을 네트워크(200)를 거쳐, 사용자에게로의 프리젠테이션을 위해 수신된 비디오 스트림을 디코드하는 비디오 클라이언트(VC)시스템(300)으로 전송한다. 비디오 스트림이 수신됨에 따라, VC 시스템(300)은 계속해서 이 데이터를 VS(100)에 보내는 적어도 네트워크(200)의 조건에 관한 데이터를 모은다. VS(100)는 VC 시스템(300)으로부터 수신된 데이터에 기초한 파라미터들의 값들을 수정하고, 한편 VC 시스템(300)은 비디오 스트림의 인코딩을 수정한다.Video server (VS) 100 encodes the video stream according to the values of the parameters and decodes the received video stream for presentation to the user via network 200, video client (VC). Transmit to system 300. As the video stream is received, the VC system 300 continues to collect data relating to at least the conditions of the network 200 that send this data to the VS 100. VS 100 modifies values of parameters based on data received from VC system 300, while VC system 300 modifies the encoding of the video stream.

Description

클라이언트 또는 네트워크 환경에 기초한 비디오 스트림을 수정하는 시스템 및 방법{SYSTEM AND METHOD FOR MODIFYING A VIDEO STREAM BASED ON A CLIENT OR NETWORK ENVIRONMENT}SYSTEM AND METHOD FOR MODIFYING VIDEO STREAM BASED ON CLIENT OR NETWORK ENVIRONMENT

네트워크를 통해 수신된 비디오 스트림에 기초한 비디오의 클라이언트 디바이스에서의 프리젠테이션의 품질은, 상기 네트워크에서 이용 가능한 대역폭에 의해 제한될 수 있다. 네트워크가 혼잡하면 네트워크에 의해 운반된 데이터 전송으로부터 데이터가 누락될 수 있다. 따라서, 네트워크가 혼잡하게 되면, 네트워크에 의해 운반되는 비디오 스트림은 프레임 손실을 겪을 수 있고, 이로 인해 상기 비디오 스트림에 기초하여 나타난 비디오 품질이 저하된다.The quality of the presentation at the client device of the video based on the video stream received over the network may be limited by the bandwidth available in the network. If the network is congested, data may be missing from the data transmission carried by the network. Thus, if the network becomes congested, the video stream carried by the network may suffer from frame loss, which degrades the video quality presented based on the video stream.

또한, 네트워크를 통해 수신된 비디오 스트림에 기초한 비디오의 클라이언트 디바이스에서의 프리젠테이션의 품질은 비디오 스트림을 디코드하는 클라이언트 디바이스의 능력에 의해 제한될 수 있다. 클라이언트 디바이스가 수신되는 비디오 스트림을 충분히 디코드하는 능력이 결여되면, 사용하지 않은 데이터는 낭비된 네트워크 대역폭에 대응하게 된다.In addition, the quality of the presentation at the client device of the video based on the video stream received over the network may be limited by the client device's ability to decode the video stream. If the client device lacks the ability to decode the received video stream sufficiently, unused data will correspond to wasted network bandwidth.

본 출원은 2001년 12월 15일자로 출원된 미국 가출원 60/341,672호의 우선권을 주장하는 것으로, 여기에 본 출원의 참조로서 병합되어 있다.This application claims the priority of US Provisional Application No. 60 / 341,672, filed December 15, 2001, which is incorporated herein by reference.

여기에 기재된 본 발명은 비디오 스트림을 데이터 통신 네트워크를 거쳐 공급하는 시스템 및 방법에 관한 것이다.The invention described herein relates to a system and method for supplying a video stream over a data communication network.

도 1은 본 발명의 일 실시예와 본 발명의 일 실시예가 동작하는 환경을 도시하는 블록도.1 is a block diagram showing one embodiment of the invention and an environment in which one embodiment of the invention operates;

도 2는 미리 한정된 데이터 범위들과 대응하는 파라미터 값들의 예를 도시하는 표.2 is a table illustrating an example of parameter values corresponding to predefined data ranges.

도 3은 본 발명의 동작 실시예를 도시하는 흐름도; 및3 is a flowchart illustrating an operational embodiment of the present invention; And

도 4는 본 발명의 또다른 동작 실시예를 도시하는 흐름도.4 is a flow diagram illustrating another operational embodiment of the present invention.

본 발명은 하나 또는 그 이상의 파라미터들에 따라 인코드되고, 네트워크를 통해 인코딩 프로세스 동안 상기 네트워크의 상태들에 기초하여 동적으로 수정될 컴퓨터에 전송되는 비디오 스트림과 상기 비디오 스트림을 디코드하는 컴퓨터의 능력을 제공한다. 본 발명은 하나 또는 그 이상의 파라미터들의 값에 따라 인코드되고 네트워크를 통해 공급되는 비디오 스트림을 수정하는 방법, 시스템, 및 컴퓨터 프로그램 산물을 제공한다. 먼저, 적어도 비디오 스트림을 전달하는 네트워크의 능력에 관련된 데이터가 획득된다. 그 다음, 비디오 스트림이 인코드될 때 사용되는 하나 또는 그 이상의 파라미터들의 값들이 상기 획득된 데이터에 기초하여 수정된다.The present invention provides a video stream encoded according to one or more parameters and transmitted over a network to a computer to be dynamically modified based on the conditions of the network during the encoding process and the computer's ability to decode the video stream. to provide. The present invention provides a method, system, and computer program product for modifying a video stream encoded and supplied over a network in accordance with the values of one or more parameters. First, data relating to at least the ability of the network to carry the video stream is obtained. Then, the values of one or more parameters used when the video stream is encoded are modified based on the obtained data.

본 발명의 일 실시예에서, 하나 또는 그 이상의 파라미터들의 값에 따라 인코드되는 비디오 스트림은 네트워크를 통해 컴퓨터에 공급된다. 적어도 비디오 스트림을 전달하는 네트워크의 능력과, 이 비디오 스트림을 디코드하는 컴퓨터의 능력에 관련된 데이터가 획득된다. 그 다음, 비디오 스트림이 인코드되는 하나 또는 그 이상의 파라미터들의 값들은 상기 획득된 데이터에 기초하여 수정된다.In one embodiment of the invention, a video stream encoded according to the value of one or more parameters is supplied to a computer via a network. Data relating to at least the network's ability to deliver the video stream and the computer's ability to decode the video stream is obtained. Then, the values of one or more parameters for which the video stream is encoded are modified based on the obtained data.

본 발명의 일 실시예에 따르면, 비디오 스트림이 인코드될 때 사용되는 하나 또는 그 이상의 파라미터들은 획득된 데이터를 기초로 하여 수정되는 프레임 해상도를 포함한다.According to one embodiment of the invention, the one or more parameters used when the video stream is encoded include a frame resolution that is modified based on the obtained data.

본 발명의 또다른 실시예에 따르면, 비디오 스트림이 인코드될 때 사용되는 하나 또는 그 이상의 파라미터들은 획득된 데이터를 기초로 하여 수정되는 프레임 속도(rate)를 포함한다.According to another embodiment of the present invention, one or more parameters used when the video stream is encoded include a frame rate that is modified based on the obtained data.

본 발명의 또다른 실시예에 따르면, 비디오 스트림을 컴퓨터에 전달하는 네트워크의 능력에 관련되고 비디오 스트림을 디코드하는 컴퓨터의 능력에 관련된 데이터는 컴퓨터로부터 수신된 RTCP 패킷들을 통해 획득된다.According to another embodiment of the invention, data relating to the network's ability to deliver the video stream to the computer and to the computer's ability to decode the video stream is obtained via RTCP packets received from the computer.

본 발명의 일 실시예에서, 비디오 스트림을 컴퓨터에 전달하는 네트워크의 능력에 관련되고 비디오 스트림을 디코드하는 컴퓨터의 능력에 관련된 데이터는, 컴퓨터에 공급되는 비디오 스트림을 디코드하기 위해 컴퓨터에서 이용 가능한 컴퓨터 프로세서 성능(power)을 나타내는 수치를 포함한다.In one embodiment of the invention, data relating to the ability of a network to deliver a video stream to a computer and related to the computer's ability to decode the video stream is a computer processor available to the computer for decoding the video stream supplied to the computer. Contains a numerical value representing power.

본 발명의 또다른 실시예에서, 비디오 스트림을 컴퓨터에 전달하는 네트워크의 능력에 관련되고 비디오 스트림을 디코드하는 컴퓨터의 능력에 관련된 데이터는 컴퓨터에 네트워크를 통해 비디오 스트림을 공급하는 것과 연관된 패킷 손실을 나타내는 수치를 포함한다.In another embodiment of the invention, the data related to the network's ability to deliver the video stream to the computer and related to the computer's ability to decode the video stream is indicative of packet loss associated with supplying the video stream over the network to the computer. Contains the figures.

본 발명의 또다른 실시예에서, 비디오 스트림을 컴퓨터에 전달하는 네트워크의 능력에 관련되고 비디오 스트림을 디코드하는 컴퓨터의 능력에 관련된 데이터는 컴퓨터에 네트워크를 통해 비디오 스트림을 공급하는 것과 연관된 송신된 바이트와 수신된 바이트들을 나타내는 수치를 포함한다.In another embodiment of the invention, the data related to the network's ability to deliver the video stream to the computer and related to the computer's ability to decode the video stream is associated with the transmitted bytes associated with supplying the video stream over the network to the computer. Contains a numeric value indicating the bytes received.

본 발명의 또다른 실시예에 따르면, 비디오 스트림을 컴퓨터에 전달하는 네트워크의 능력에 관련되고, 비디오 스트림을 디코드하는 컴퓨터의 능력에 관련된데이터는 컴퓨터에 네트워크를 통해 비디오 스트림을 공급하는 것과 연관된 비트 에러율을 나타내는 수치를 포함한다.According to another embodiment of the invention, data relating to the network's ability to deliver the video stream to a computer and to the computer's ability to decode the video stream is associated with a bit error rate associated with supplying the video stream over the network to the computer. Contains a numerical value representing.

본 발명은 한정적이 아닌 예시적인 의도를 가진 첨부 도면들의 그림으로 설명되고, 여기서 동일한 참조 부호들은 동일하거나 대응하는 부분들을 가리킨다.The invention is illustrated by the figures of the accompanying drawings, which are intended to be illustrative and not restrictive, wherein like reference numerals indicate identical or corresponding parts.

본 발명에 따른 방법, 시스템, 및 소프트웨어 프로그램들을 포함하는 제조물의 바람직한 실시예를 도면을 참조하여 설명한다.DESCRIPTION OF THE PREFERRED EMBODIMENTS Preferred embodiments of an article of manufacture comprising a method, system and software programs according to the invention are described with reference to the drawings.

도 1에 도시된 바와 같이, 비디오 서버("VS") 시스템(100)은 네트워크(200)를 통해 비디오 클라이언트("VC") 시스템(300)과 통신한다. VS 시스템(100)은 (a)하나 또는 그 이상의 파라미터들에 따라 비디오 스트림을 인코드하는 것, (b)네트워크를 통해 또다른 컴퓨터에 인코드된 스트림을 전송하는 것, (c) 네트워크와 다른 컴퓨터에서의 조건들에 관한 데이터를 수신하는 것, 및 (d) 수신된 데이터에 기초하여 하나 또는 그 이상의 파라미터들을 수정하고, 이를 통해 비디오 스트림의인코딩을 수정하는 것을 할 수 있는 임의의 컴퓨터 시스템을 포함한다. VS 시스템(100)은 상기 기능들을 수행하는 컴퓨터 코드를 포함할 수 있다.As shown in FIG. 1, video server (“VS”) system 100 communicates with video client (“VC”) system 300 over network 200. VS system 100 may be configured to (a) encode a video stream in accordance with one or more parameters, (b) transmit the encoded stream to another computer over a network, (c) Any computer system capable of receiving data relating to conditions in a computer, and (d) modifying one or more parameters based on the received data, thereby modifying the encoding of the video stream. Include. VS system 100 may include computer code to perform the above functions.

본 발명의 일 실시예에서, VS 시스템(100)은 비디오 인코딩 및 전송("VET") 시스템(110)과 비디오 인코딩 제어("VEC") 시스템(120)을 포함한다. VET 시스템(100)은 전술한 인코딩 및 전송 기능들을 수행할 수 있는 임의의 컴퓨터 시스템을 포함하고, 그 기능들을 수행하기 위한 컴퓨터 코드를 포함할 수 있다. 예를 들어, VET 시스템(100)은 예를 들어 프레임 해상도와 프레임 속도를 포함하는 하나 또는 그 이상의 파라미터들에 따라, MPEG과 H.263과 같은 임의의 알려진 포맷의 비디오 스트림을 인코드하고, 실시간 스트리밍(Streaming) 프로토콜(RTSP), 실시간 전달(Transport) 프로토콜(RTP), 및 실시간 제어(Control) 프로토콜(RTCP)과 같은 스트리밍 데이터의 전달에 관련된 프로토콜과 함께 IP, TCP/IP 및 UDP 프로토콜들과 같은 알려진 기술들을 이용하여 네트워크를 통해 비디오 스트림을 전송할 수 있는 임의의 컴퓨터 시스템을 포함할 수 있다. 전술한 하나 또는 그 이상의 파라미터들은, 예를 들어 메모리에 저장될 수 있어, VEC 시스템(120)과 같은 다른 컴퓨터 시스템에 의해 수정되고 액세스될 수 있다.In one embodiment of the invention, the VS system 100 includes a video encoding and transmission (“VET”) system 110 and a video encoding control (“VEC”) system 120. The VET system 100 may include any computer system capable of performing the encoding and transmission functions described above and may include computer code for performing the functions. For example, VET system 100 encodes a video stream in any known format, such as MPEG and H.263, in real time, according to one or more parameters including, for example, frame resolution and frame rate. IP, TCP / IP, and UDP protocols, along with protocols related to the delivery of streaming data, such as the Streaming Protocol (RTSP), the Real Time Transport Protocol (RTP), and the Real Time Control Protocol (RTCP). It may include any computer system capable of transmitting a video stream over a network using such known techniques. One or more of the parameters described above may be stored in memory, for example, and may be modified and accessed by another computer system, such as VEC system 120.

VEC 시스템(120)은 전술한 수신 및 수정 기능들을 수행할 수 있는 임의의 컴퓨터 시스템을 포함하고, 그 기능들을 수행하기 위한 컴퓨터 코드를 포함할 수 있다. 예를 들어, VEC 시스템(120)은 전송된 비디오 스트림이 통과되는 네트워크의 상태와 상기 비디오 스트림을 수신하는 컴퓨터로부터 수신된 RTCP 패킷들 내에 포함된 애플리케이션 특정 데이터로서 상기 비디오 스트림을 수신하는 컴퓨터의 상태들에 관한 데이터를 수신하고, 비디오 스트림이 수신된 데이터에 대한 상기 미리 정해진 범위들과 미리 정해진 범위들에 대응하는 미리 정해진 파라미터 값들의 표에 기초하여 인코드될 때 사용되는 하나 또는 그 이상의 파라미터들을 수정할 수 있는 임의의 컴퓨터 시스템을 포함할 수 있다.VEC system 120 may include any computer system capable of performing the above-described receiving and modifying functions, and may include computer code for performing the functions. For example, VEC system 120 may determine the state of the network through which the transmitted video stream passes and the state of the computer receiving the video stream as application specific data contained in RTCP packets received from the computer receiving the video stream. And one or more parameters used when the video stream is encoded based on the predetermined ranges and a table of predetermined parameter values corresponding to the predetermined ranges for the received data. It can include any computer system that can be modified.

도 2는 수신된 데이터에 대한 미리 정해진 범위들과 상기 미리 정해진 범위들에 대응하는 미리 정해진 파라미터 값들의 예시적인 표를 도시하고 있다. 도 2의 예에서, 표의 제 1 열은 더 아래에 기술된 미리 정해진 백분율 범위들과 같은 이용 가능한 CPU 성능을 나타낸다. 표의 제 2 열은 이용 가능한 미리 정해진 CPU 성능의 백분율 범위들에 대응하는 미리 정해진 프레임 해상도를 나타낸다. 따라서, 더 아래에 기술된 바와 같이, 예를 들어 60%의 이용 가능한 CPU 성능을 수신된 데이터가 가리킨다면, VEC 시스템(120)은 352×288의 프레임 해상도가 수신된 데이터를 포함하는 미리 정해진 범위에 대응하는지를 결정하기 위해 도 2의 표를 참고할 수 있다. VET 시스템(110)이 비디오 스트림을 인코드하고 있는 현재 프레임 해상도가 상이하다면, VEC 시스템(120)은 프레임 해상도 파라미터를 352×288로 수정하여 VET 시스템(110)으로 하여금 그 프레임 해상도로 비디오 스트림을 인코드하게 한다.2 shows an exemplary table of predetermined ranges for received data and predetermined parameter values corresponding to the predetermined ranges. In the example of FIG. 2, the first column of the table represents the available CPU performance, such as the predetermined percentage ranges described further below. The second column of the table shows the predetermined frame resolution corresponding to the percentage ranges of the predetermined CPU performance available. Thus, as further described below, if the received data indicates, for example, 60% of the available CPU performance, the VEC system 120 has a predetermined range that includes the received data with a frame resolution of 352 × 288. Reference may be made to the table of FIG. 2 to determine if it corresponds to. If the current frame resolution at which the VET system 110 is encoding the video stream is different, the VEC system 120 modifies the frame resolution parameter to 352 × 288 to cause the VET system 110 to convert the video stream at that frame resolution. Encode it.

하기에 추가로 기술된 바와 같이, VEC 시스템(120)에 의해 수신된 데이터의 다른 타입들과 관련하여 유사한 표들이 사용될 수 있는 점을 이해해야 한다. 또한, 도 2의 도시된 값들은 단지 예시적인 것으로, 이 표에서의 값들은, 이용 가능한 CPU 성능 이외에 VEC 시스템(120)에 의해 수신된 다른 타입의 데이터와 관련된 유사한 표들에서 사용될 수 있는 값들과 함께, 단순히 예시적인 것이고 본 발명의 사용자와 구현자에 있어서의 설계 선택 문제로서 변동될 수 있는 점을 이해해야 한다.As further described below, it should be understood that similar tables may be used in connection with other types of data received by the VEC system 120. In addition, the values shown in FIG. 2 are exemplary only, and the values in this table, along with the values that may be used in similar tables relating to other types of data received by the VEC system 120 in addition to the CPU performance available. It should be understood that this is merely illustrative and may vary as a matter of design choice for users and implementers of the present invention.

네트워크(200)는 비디오 스트림과, 관련된 제어 데이터를 전달할 수 있는 임의의 통신 네트워크를 포함한다. 예를 들어, 네트워크(200)는 LAN, WAN 또는 인터넷을 포함할 수 있다.Network 200 includes any communication network capable of carrying a video stream and associated control data. For example, network 200 may include a LAN, WAN, or the Internet.

VC 시스템(300)은 (a) 네트워크를 통해 비디오 스트림을 수신하고 사용자에게로의 프리젠테이션을 위해 수신된 비디오 스트림을 디코딩하는 것, (b) (ⅰ) 비디오 스트림이 수신되는 네트워크에서의 조건들과 (ⅱ) 수신되고 있는 비디오 스트림을 디코드하기 위해, VC 시스템(300) 내에서 이용 가능한 자원들에 관한 데이터를 모으는 것, 및 (c) VC 시스템(300)에 의해 수신되고 있는 비디오 스트림을 전송하는 컴퓨터 시스템에 상기 모여진 데이터를 전송하는 것을 할 수 있는 임의의 컴퓨터 시스템을 포함한다. VC 시스템(300)은 상기 기능들을 수행하는 컴퓨터 코드를 포함할 수 있다.The VC system 300 includes (a) receiving a video stream over a network and decoding the received video stream for presentation to a user, (b) (i) conditions in the network where the video stream is received and (Ii) gathering data about the resources available within the VC system 300 to decode the video stream being received, and (c) transmitting the video stream being received by the VC system 300. And any computer system capable of transferring the aggregated data to a computer system. VC system 300 may include computer code to perform the functions.

본 발명의 일 실시예에서, VC 시스템(300)은 비디오 수신 및 디코딩("VRD") 시스템(310)과 조건 보고("CR") 시스템(320)을 포함한다. VRD 시스템(310)은 네트워크를 통해 비디오 스트림들을 수신하고, 사용자에게로의 프리젠테이션을 위해 수신된 비디오 스트림들을 디코드할 수 있는 임의의 컴퓨터 시스템을 포함한다. 예를 들어, VRD 시스템(310)은 RealNetwork사의 RealOneTM플레이어 또는 마이크로소프트사의 Windows Media PlayerTM와 같은 알려진 비디오 스트리밍 클라이언트 소프트웨어를 포함할 수 있다.In one embodiment of the invention, the VC system 300 includes a video receiving and decoding (“VRD”) system 310 and a condition reporting (“CR”) system 320. VRD system 310 includes any computer system capable of receiving video streams over a network and decoding the received video streams for presentation to a user. For example, the VRD system 310 may include known video streaming client software, such as RealNetwork from RealNetwork or Windows Media Player ™ from Microsoft.

CR 시스템(320)은 비디오 스트림이 수신되고, 수신되는 비디오 스트림을 디코드하기 위해 VC 시스템(300) 내에서 이용 가능한 자원들이 수신되는 네트워크에서의 조건들에 관한 데이터를 모으고, VC 시스템(300)에 의해 수신되고 있는 비디오 스트림을 전송하는 컴퓨터 시스템에 상기 모여진 데이터를 전송할 수 있는 임의의 컴퓨터 시스템을 포함한다. CR 시스템(320)은 임의의 알려진 방법 또는 기술에 따르는 컴퓨터 시스템 내에서 이용 가능한 자원들에 관한 데이터뿐만 아니라, 네트워크에서의 조건들에 관한 데이터를 모으기 위한 컴퓨터 코드를 포함할 수 있다. 네트워크에서의 조건들에 관한, CR 시스템(320)에 의해 모여진 데이터의 유형들은, 예를 들어 현재 수신되고 있는 비디오 스트림의 네트워크를 통한 수신에 관련된 수치들, 예를 들어 패킷 손실, 송신된/수신된 바이트, 및 네트워크를 통해 현재 수신되고 있는 비디오 스트림과 연관된 비트 에러율을 나타내는 수치들을 포함할 수 있다. 수신된 비디오 스트림을 디코드하기 위해 VC 시스템(300) 내에서 이용 가능한 자원들에 관한 CR 시스템(320)에 의해 모여진 데이터의 유형들은, 예를 들어 수신된 비디오 스트림을 디코드하기 위해 이용 가능한 메모리와 CPU 성능을 나타내는 수치들을 포함할 수 있다.The CR system 320 collects data regarding conditions in the network where the video stream is received and the resources available within the VC system 300 are received to decode the received video stream, and sends the data to the VC system 300. And any computer system capable of transmitting said aggregated data to a computer system transmitting a video stream being received by it. CR system 320 may include computer code for gathering data relating to conditions in a network, as well as data relating to resources available within a computer system in accordance with any known method or technology. The types of data gathered by the CR system 320, relating to conditions in the network, are for example numerical values related to reception over the network of the video stream currently being received, for example packet loss, transmitted / received. Bytes, and values indicative of the bit error rate associated with the video stream currently being received over the network. The types of data gathered by the CR system 320 regarding the resources available within the VC system 300 to decode the received video stream are, for example, memory and CPU available to decode the received video stream. It can include numbers that indicate performance.

또한, CR 시스템(320)은 모여진 데이터를, VC 시스템(300)에 의해 수신되고 있는 비디오 스트림을 전송하는 컴퓨터 시스템에, 전송하는 기능을 수행하기 위한 컴퓨터 코드를 포함할 수 있다. 예를 들어, CR 시스템(320)은 실행될 때, VC 시스템(300)에 의해 수신되고 있는 비디오 스트림을 전송하는 컴퓨터 시스템으로 CR 시스템(320)이 보내는 RTCP 패킷들 형태의 애플리케이션 특정 데이터로서 상기 모여진 데이터를 CR 시스템(320)이 전송하게 하는 컴퓨터 코드를 포함할 수 있다.In addition, the CR system 320 may include computer code for performing a function of transmitting the collected data to a computer system that transmits the video stream being received by the VC system 300. For example, when the CR system 320 is executed, the aggregated data as application specific data in the form of RTCP packets sent by the CR system 320 to a computer system that transmits the video stream being received by the VC system 300. Computer code that causes the CR system 320 to transmit.

여기서의 "컴퓨터 시스템"이라는 용어는 광범위하게 사용되고 컴퓨터 하드웨어와 컴퓨터 소프트웨어를 포함하거나 또는 컴퓨터 소프트웨어만을 포함한다. 예를 들어, VET 시스템(110)과 VEC 시스템(120)은 각각 VS 시스템(100)의 동일한 컴퓨터 하드웨어 상에 상주하는 컴퓨터 코드를 포함할 수 있다. 대안적으로, VET 시스템(110)과 VEC 시스템(120)은 각각 별개의 컴퓨터 하드웨어로 구현될 수 있다.The term "computer system" herein is used broadly and includes computer hardware and computer software or only computer software. For example, VET system 110 and VEC system 120 may each include computer code residing on the same computer hardware of VS system 100. Alternatively, VET system 110 and VEC system 120 may each be implemented in separate computer hardware.

도 3과 도 4는 본 발명이 동작할 수 있는 한가지 방식을 도시하는 흐름도로서, 도 3은 VS 시스템(100)에서 수행된 동작들을, 도 4는 VC 시스템(300)에서 수행된 동작들을 도시한다. 먼저, 도 3을 참조하면, 블록(1000)으로 나타난 바와 같이, VC 시스템(300)과의 통신이 확립된다. 예를 들어, VS 시스템(100)은 VC 시스템(300)과 통신하여 인코드된 비디오가 VC 시스템(300)으로 전송될 수 있는 RTP/UDP 연결과 진단 정보가 VC 시스템(300)으로부터 수신될 수 있는 RTCP/UDP 연결을 확립할 수 있다.3 and 4 are flow charts illustrating one way in which the present invention may operate, FIG. 3 illustrates operations performed in the VS system 100 and FIG. 4 illustrates operations performed in the VC system 300. . First, referring to FIG. 3, as represented by block 1000, communication with the VC system 300 is established. For example, the VS system 100 may communicate with the VC system 300 to receive RTP / UDP connection and diagnostic information from the VC system 300 in which encoded video may be sent to the VC system 300. You can establish an RTCP / UDP connection.

다음에, 블록(1050)으로 표시된 바와 같이, 인코드되어 비디오 스트림의 부분으로서 전송하여야 할 남아 있는 소스 데이터가 있는지 여부에 대한 결정이 이루어질 수 있다. 예를 들어, 소스 데이터가 라이브 비디오라면, VET 시스템(110)은 라이브 비디오를 인코딩하는 절차가 지속될지를 결정할 수 있고, 소스 데이터가 VS 시스템(100)에 의해 트랜스코드되고 있는 저장된 파일로부터의 비디오 데이터라면, VET 시스템(110)은 트랜스코드될 데이터가 상기 저장된 비디오 파일에 남아 있는지를 결정할 수 있다.Next, as indicated by block 1050, a determination may be made as to whether there is any remaining source data to be encoded and transmitted as part of the video stream. For example, if the source data is live video, the VET system 110 can determine if the procedure for encoding live video will continue, and the video data from the stored file where the source data is being transcoded by the VS system 100. If so, the VET system 110 may determine whether data to be transcoded remains in the stored video file.

블록(1050)으로 표시된 동작들로부터의 결정이 부정적이라면, 과정은 VS 시스템(100)에서 끝난다. 반면에, 블록(1050)으로 표시된 동작들로부터의 결정이 긍정적이라면, 블록(1100, 1200, 및 1300)으로 표시된 동작들이 수행된다.If the determination from the operations indicated by block 1050 is negative, the process ends at the VS system 100. On the other hand, if the determination from the operations indicated by block 1050 is affirmative, the operations indicated by blocks 1100, 1200, and 1300 are performed.

블록(1100)으로 표시된 바와 같이, 비디오 스트림이 인코드될 때 사용되는 하나 또는 그 이상의 파라미터들에 대한 저장된 값들은 회수된다(retrieved). 예를 들어, VET 시스템(110)은 각 파라미터와 연관된 저장 위치로부터 하나 또는 그 이상의 파라미터들 각각에 대한 값들을 회수할 수 있다. 그 다음, 소스 데이터는 블록(1200)으로 표시된 바와 같이, 하나 또는 그 이상의 파라미터들에 대한 회수된 값들에 따라 비디오 스트림으로 인코드된다. 예를 들어, VET 시스템(110)은 프레임 해상도와 프레임 속도와 같은 이전에 설명된 하나 또는 그 이상의 파라미터들에 대해서 회수된 값들에 따라, MPEG 또는 H.263과 같은 알려진 비디오 압축 알고리듬에 따라 소스 데이터를 인코드할 수 있다. 그 다음, 인코드된 비디오 스트림이 블록(1300)으로 표시된 것처럼 전송된다. 예를 들어, VET 시스템(110)은 네트워크(200)를 거쳐 VC 시스템(300)으로 인코드된 비디오 스트림을 전송할 수 있다. 그 다음, 절차는 블록(1050)으로 표시된 동작들로 복귀한다.As indicated by block 1100, the stored values for one or more parameters used when the video stream is encoded are retrieved. For example, the VET system 110 may retrieve values for each of one or more parameters from a storage location associated with each parameter. Source data is then encoded into the video stream according to the recovered values for one or more parameters, as indicated by block 1200. For example, the VET system 110 may employ source data in accordance with known video compression algorithms, such as MPEG or H.263, according to retrieved values for one or more parameters previously described, such as frame resolution and frame rate. Can be encoded. The encoded video stream is then transmitted as indicated by block 1300. For example, the VET system 110 may transmit an encoded video stream to the VC system 300 via the network 200. The procedure then returns to the operations indicated by block 1050.

도 3에 도시된 바와 같이, 블록(1050)으로 표시된 동작들로부터의 결정이 긍정적이면, 블록(1100, 1200, 및 1300)으로 표시된 동작들 외에도, 블록(1400, 1500, 및 1600)으로 표시된 동작들도 수행된다. 블록(1400, 1500, 및 1600)으로 표시된 동작들은 블록(1100, 1200, 및 1300)으로 표시된 동작들과는 동시에, 그리고독립적으로 수행될 수 있다.As shown in FIG. 3, if the determination from the operations indicated by block 1050 is positive, in addition to the operations indicated by blocks 1100, 1200, and 1300, the operations indicated by blocks 1400, 1500, and 1600. Are also performed. The operations indicated by blocks 1400, 1500, and 1600 may be performed simultaneously and independently of the operations indicated by blocks 1100, 1200, and 1300.

블록(1400)으로 표시된 바와 같이, 네트워크(200) 또는 VC 시스템(300)에서의 조건들에 관한 데이터가 VC 시스템(300)으로부터 수신되었는지 여부에 관한 결정이 이루어진다. 예를 들어, VS 시스템(100)의 VEC 시스템(120)은, 네트워크(200)에서의 조건들과 VC 시스템(300)으로부터 수신된 RTCP 패킷들의 애플리케이션 특정 부분에서의 비디오 스트림을 디코드하는 능력에 관한 VC 시스템(300)에서의 조건들에 관해서 VC 시스템(300)으로부터 데이터가 수신되었는지를 결정하기 위해, 확립된 RTCP/UDP 연결을 통해 VC 시스템(300)으로부터 수신된 RTCP 패킷들을 검사할 수 있다. 블록(1400)으로 표시된 동작들로부터의 결정이 부정적이면, 절차는 블록(1050)으로 표시된 동작들로 복귀한다.As indicated by block 1400, a determination is made as to whether data regarding conditions in network 200 or VC system 300 have been received from VC system 300. For example, the VEC system 120 of the VS system 100 relates to the conditions in the network 200 and the ability to decode the video stream in the application specific portion of the RTCP packets received from the VC system 300. To determine if data has been received from the VC system 300 with respect to the conditions in the VC system 300, it is possible to examine the RTCP packets received from the VC system 300 over an established RTCP / UDP connection. If the determination from the operations indicated by block 1400 is negative, the procedure returns to the operations indicated by block 1050.

블록(1400)으로 표시된 동작들로부터의 결정이 긍정적이면, 절차는 블록(1500)으로 표시된 동작들로 계속 진행되고, 여기서 수신된 데이터에 대응하는 각각의 하나 또는 그 이상의 파라미터들에 대한 값들이 결정된다. 예를 들어, VEC 시스템(120)은 VC 시스템(300)으로부터 수신된 데이터와, 도 2와 관련하여 앞서 설명된 바와 같이 수신된 데이터의 유형에 관한 미리 정해진 범위들과 각각의 미리 정해진 범위에 대한 각각의 하나 또는 그 이상의 파라미터들에 관한 대응하는 값들을 명시하는 표를 비교할 수 있다. 예를 들어, VC 시스템(300)으로부터 수신된 데이터가 VS 시스템(100)으로부터 VC 시스템(300)으로 현재 전송되고 있는 비디오 스트림을 디코드하기 위해 VC 시스템(300)에서 이용 가능한 CPU 성능의 수치를 나타내면, VEC 시스템(120)은 VC 시스템(300)으로부터 수신된 데이터를, 수신된 데이터를 포함하는 미리 정해진 범위와 이 범위에 대응하는 프레임 해상도 파라미터에 관한 값을 결정하기 위해, 도 2의 표와 비교할 수 있다. 예를 들어, VC 시스템(300)으로부터 수신된 데이터가 VS 시스템(100)에 의해 VC 시스템(300)으로 전송되는 비디오 스트림을 디코드하기 위해 VC 시스템(300)에서 이용 가능한 CPU 성능의 60%의 수치를 가리킨다면, VEC 시스템(120)은 352×288를 이 수신된 데이터에 대응하는 프레임 해상도 파라미터에 관한 적절한 값으로 결정할 것이다. 유사한 방식으로, VEC 시스템(120)은 VC 시스템(300)으로부터 수신된 데이터에 대응하는 하나 또는 그 이상의 파라미터들의 각각의 값을 결정할 수 있다.If the determination from the operations indicated by block 1400 is affirmative, then the procedure continues with the operations indicated by block 1500 where the values for each one or more parameters corresponding to the received data are determined. do. For example, the VEC system 120 may include data received from the VC system 300 and predetermined ranges relating to the type of data received as described above with respect to FIG. 2 and for each predetermined range. Tables specifying corresponding values for each one or more parameters may be compared. For example, if data received from VC system 300 represents a numerical value of CPU performance available in VC system 300 to decode the video stream currently being transmitted from VS system 100 to VC system 300. The VEC system 120 may compare the data received from the VC system 300 with the table of FIG. 2 to determine a value relating to a predetermined range that includes the received data and a frame resolution parameter corresponding to the range. Can be. For example, a value of 60% of the CPU performance available in the VC system 300 to decode the video stream received from the VC system 300 to the VC system 300 by the VS system 100. If indicated, VEC system 120 will determine 352 x 288 as an appropriate value for the frame resolution parameter corresponding to this received data. In a similar manner, VEC system 120 may determine the value of each of one or more parameters corresponding to data received from VC system 300.

그 다음, 블록(1600)으로 표시된 바와 같이, 필요하다면 하나 또는 그 이상의 파라미터들의 값들이 수정된다. 예를 들면, VEC 시스템(120)은 블록(1500)으로 표시된 동작들로부터 각각의 하나 또는 그 이상의 파라미터들에 관해 결정된 값들을 각각의 하나 또는 그 이상의 파라미터들에 관해 저장된 값들과 비교할 수 있다. 결정된 값들 중 어떤 것이 임의의 파라미터에 관해 저장된 값과 다르다면, VEC 시스템(120)은 해당 파라미터와 관련된 저장 영역에 상기 결정된 값을 저장한다. 그 다음, 절차는 블록(1050)으로 표시된 동작들로 되돌아 간다.Then, as indicated by block 1600, the values of one or more parameters are modified if necessary. For example, VEC system 120 may compare the values determined for each one or more parameters from the operations indicated by block 1500 with the values stored for each one or more parameters. If any of the determined values differ from the stored value for any parameter, VEC system 120 stores the determined value in a storage area associated with that parameter. The procedure then returns to the operations indicated by block 1050.

동시에, VS 시스템(100)이 비디오 스트림을 인코드하고 전송할 때, VC 시스템(300)은 네트워크(200)를 통해 상기 비디오 스트림을 수신하고 그것을 VC 시스템(300)을 동작시키는 사용자에게 표현하기 위해 디코드한다. 도 4에 도시된 바와 같이, 블록(2000)으로 표시된 것처럼, 먼저 VS 시스템(100)과의 통신이 확립된다. 예를 들면, 도 3의 블록(1000)으로 표시된 동작들과 유사하게, 여기서는 VC시스템(300)이 VS 시스템(100)과 통신하여 인코드된 비디오가 VS 시스템(300)으로부터 수신될 수 있는 RTP/UDP 연결과, 진단 정보가 VS 시스템(100)으로 전송될 수 있는 RTCP/UDP 연결이 확립할 수 있다. 그 다음, VRD 시스템(310)이 VS 시스템(100)으로부터 전송된 비디오 스트림을 수신하고 디코드하는 절차를 시작하고 지속한다. VRD 시스템(310)이 수신 및 디코딩 절차에 있는 동안, CR 시스템(320)은 계속해서 도 4에 도시된 블록(2050, 2100, 및 2200)으로 표시된 동작들을 수행한다.At the same time, when the VS system 100 encodes and transmits the video stream, the VC system 300 receives the video stream via the network 200 and decodes it for presentation to the user operating the VC system 300. do. As shown in FIG. 4, as indicated by block 2000, first communication with the VS system 100 is established. For example, similar to the operations indicated by block 1000 in FIG. 3, here the VC system 300 communicates with the VS system 100 so that the encoded video can be received from the VS system 300. A / TCP connection and an RTCP / UDP connection can be established where diagnostic information can be sent to the VS system 100. The VRD system 310 then starts and continues the procedure of receiving and decoding the video stream sent from the VS system 100. While the VRD system 310 is in the receive and decode procedure, the CR system 320 continues to perform the operations indicated by blocks 2050, 2100, and 2200 shown in FIG. 4.

일단, VS 시스템(100)으로부터 수신된 비디오 스트림의 디코딩 절차가 시작되면, 블록(2050)으로 표시된 바와 같이, 이 수신 및 디코딩 절차가 VRD 시스템(310)에서 지속하는지를 결정함으로써, CR 시스템(320)이 이 절차의 감시를 시작한다. 이 결정이 부정적이라면, CR 시스템(320)에서 절차가 종결된다.Once the decoding procedure of the video stream received from the VS system 100 begins, the CR system 320 is determined by determining whether this receiving and decoding procedure continues in the VRD system 310, as indicated by block 2050. This will begin monitoring this procedure. If this decision is negative, the procedure is terminated in CR system 320.

이 결정이 긍정적이라면, 비디오 스트림을 디코드하기 위해 네트워크(200)에서의 조건들에 관한 데이터와 VC 시스템(300)에서 이용 가능한 자원들이 모여지는, 블록(2100)으로 표시된 동작들로 절차가 이어진다. 예를 들어, 네트워크(200)에서의 조건들에 관해서, CR 시스템(320)은 예를 들어, (a) 네트워크(200)를 통해 VS 시스템(100)으로부터 VC 시스템(300)으로 비디오 스트림을 공급하는 것과 관련된 패킷 손실, (b) 네트워크(200)를 통해 VS 시스템(100)으로부터 VC 시스템(300)으로 비디오 스트림을 공급하는 것과 관련된 VS 시스템(100)에 의해 전송된 바이트들의 개수와 VC 시스템(300)에 의해 수신된 바이트들의 개수, (c) 네트워크(200)를 통해 VS 시스템(100)으로부터 VC 시스템(300)으로 비디오 스트림을 공급하는 것과 관련된 비트 에러율을 나타내는 수치들을 포함하는 데이터를 획득하기 위해 알려진 기술들을 사용할 수 있다. 또한, 비디오 스트림을 디코드하기 위해 VC 시스템(300)에서 이용 가능한 자원들에 관해서, CR 시스템은 예를 들어, VS 시스템(100)으로부터 수신되고 있는 비디오 스트림을 디코드하기 위해 VC 시스템(300)에서 이용 가능한 메모리와 이용 가능한 CPU 성능을 나타내는 수치들을 포함하는 데이터를 획득하기 위해 알려진 기술들을 사용할 수 있다. 이용 가능한 메모리와 CPU 성능은, 예를 들어 다른 애플리케이션 프로그램들이 VC 시스템(300)에서 개방되거나 폐쇄되는 것과 같은 다른 목적을 위해, VC 시스템(300)에서 이들 자원들이 사용되고 배포되는 경우 변동될 수 있다는 점을 주목해야 한다. 또한, 전술한 데이터(예를 들면, 패킷 손실, 송신된/수신된 바이트들, 비트 에러율, 이용 가능한 메모리, 이용 가능한 CPU 성능)는, CR 시스템(320)에 의해 사용된 수치의 표준이 VEC 시스템(120)에 의해 사용된 동일한 표준인 한{예를 들어, 도 2의 표에 도시된 것과 같은 VEC 시스템(120)뿐만 아니라 CR 시스템(320)에 의한 총 CPU 성능의 백분율로 표시된 이용 가능한 CPU 성능}, 임의의 알려진 방식으로 측정될 수 있다는 점을 주목해야 한다.If this decision is affirmative, the procedure is followed by the operations indicated by block 2100, where data about the conditions in the network 200 and the resources available in the VC system 300 are gathered to decode the video stream. For example, with respect to conditions in the network 200, the CR system 320 feeds the video stream from the VS system 100 to the VC system 300, for example, via the network 200. Packet loss associated with the system, (b) the number of bytes transmitted by the VS system 100 associated with supplying the video stream from the VS system 100 to the VC system 300 via the network 200 and the VC system ( Obtaining data comprising numerical values indicative of the number of bytes received by 300, (c) a bit error rate associated with feeding a video stream from VS system 100 to VC system 300 via network 200. Known techniques can be used. Also, with respect to the resources available in the VC system 300 for decoding the video stream, the CR system is used in the VC system 300 to decode the video stream being received from the VS system 100, for example. Known techniques can be used to obtain data including figures representing possible memory and available CPU performance. Available memory and CPU performance may vary if these resources are used and distributed in the VC system 300, for example, for other purposes such as other application programs being opened or closed in the VC system 300. It should be noted. In addition, the above-described data (e.g., packet loss, transmitted / received bytes, bit error rate, available memory, available CPU performance) is a standard of numerical values used by CR system 320. Available CPU performance expressed as a percentage of the total CPU performance by the CR system 320 as well as the VEC system 120 as shown in the table of FIG. }, It should be noted that it can be measured in any known manner.

그 다음, 모여진 데이터는 블록(2200)으로 표시된 바와 같이, VS 시스템(100)으로 전송된다. 예를 들어, CR 시스템(320)은 비디오 스트림을 확립된 RTCP/UDP 연결을 거쳐 VS 시스템(100)으로 다시 전송되는 RTCP 패킷들의 애플리케이션 특정 데이터로서 디코드하기 위해, 네트워크(200)에서의 조건들과 VC 시스템(300)에서 이용 가능한 자원들에 관해 모여진 데이터를 전송할 수 있다. 그다음, 절차는 블록(2050)에서의 동작들을 지속한다.The aggregated data is then sent to the VS system 100, as indicated by block 2200. For example, the CR system 320 may decode the video stream with conditions in the network 200 to decode the video stream as application specific data of RTCP packets sent back to the VS system 100 over an established RTCP / UDP connection. Aggregated data may be transmitted about resources available in the VC system 300. The procedure then continues the operations at block 2050.

따라서, VS 시스템(100)이 비디오 스트림을 인코드하고 인코드된 스트림을 VC 시스템(300)으로 전송하는 절차 동안, VC 시스템(300)은 계속해서 네트워크(200)와 VC 시스템(300)에서의 조건들에 관한 데이터를 모아서, 이 데이터를 비디오 스트림의 인코딩을 조정하는데 사용하도록 VS 시스템(100)으로 보낼 수 있다. 그러므로, 네트워크(200)에서의 혼잡이 증가하거나 수신된 비디오 스트림의 디코딩을 위해 이용 가능한 VC 시스템(300)에서의 자원들이 감소함에 따라, VS 시스템(100)에서 수신된 데이터는, VS 시스템(100)으로 하여금 예를 들어 인코드되고 있는 비디오 스트림의 프레임 해상도를 감소시키도록 할 수 있다. 역으로, 네트워크(200)에서의 혼잡이 개선되거나 VC 시스템(300)에서 수신된 스트림의 비디오 디코딩을 위해 자원들이 관련되고 이용 가능하게 되면, VS 시스템(100)에서 수신된 데이터는, VS 시스템(100)으로 하여금 예를 들어 비디오 스트림이 인코드되는 프레임 해상도를 증가시키도록 할 수 있다.Thus, during the procedure where the VS system 100 encodes the video stream and transmits the encoded stream to the VC system 300, the VC system 300 continues in the network 200 and the VC system 300. Data about the conditions can be collected and sent to the VS system 100 for use in adjusting the encoding of the video stream. Therefore, as congestion in the network 200 increases or resources in the VC system 300 available for decoding of the received video stream decrease, the data received in the VS system 100 is reduced to the VS system 100. ), For example, to reduce the frame resolution of the video stream being encoded. Conversely, if congestion in the network 200 improves or resources are related and available for video decoding of a stream received in the VC system 300, the data received in the VS system 100 may be converted into a VS system ( 100), for example, to increase the frame resolution at which the video stream is encoded.

본 발명이 바람직한 실시예와 연관되어 설명되고 예시되었지만, 당업자들에게 있어서는, 본 발명의 취지와 범위를 벗어나지 않으면서 많은 변형과 수정이 이루어질 수 있음이 명백할 것이고, 따라서 본 발명은 방법론의 엄밀한 상세한 사항이나 이러한 변형과 수정이 본 발명의 범위 내에 포함되는 것으로 의도되는 바와 같은 전술한 구성 세트에 한정되지 아니한다.While the present invention has been described and illustrated in connection with the preferred embodiments, it will be apparent to those skilled in the art that many modifications and variations can be made without departing from the spirit and scope of the invention, and therefore the invention is not intended to be rigorous in detail. It is not intended to be exhaustive or to limit the foregoing to the foregoing set of configurations as intended to be included within the scope of this invention.

본 발명은 비디오 스트림을 데이터 통신 네트워크를 거쳐 공급하는 시스템에적용할 수 있으며, 네트워크에 의해 운반되는 비디오 스트림의 프레임 손실을 방지함으로써, 상기 비디오 스트림에 기초하여 나타난 비디오 품질을 개선할 수 있다.The present invention can be applied to a system for supplying a video stream over a data communication network, and can improve the video quality shown based on the video stream by preventing frame loss of the video stream carried by the network.

Claims (36)

하나 또는 그 이상의 파라미터들의 값들에 따라 인코드되고 네트워크를 통해 공급되는 비디오 스트림을 수정하는 방법으로서,A method of modifying a video stream encoded and supplied over a network in accordance with values of one or more parameters, the method comprising: 적어도 상기 비디오 스트림을 전달하는 네트워크의 능력에 관련된 데이터를 획득하는 단계와,Obtaining data related to at least the network's ability to carry the video stream; 하나 또는 그 이상의 파라미터 값을 수정하는 단계로서, 상기 비디오 스트림은 상기 파라미터값에 따라 상기 획득된 데이터에 기초하여 인코드되는, 파라미터 값을 수정하는 단계를 포함하는, 비디오 스트림을 수정하는 방법.Modifying one or more parameter values, wherein the video stream is encoded based on the obtained data in accordance with the parameter values. 하나 또는 그 이상의 파라미터들의 값들에 따라 인코드되고 네트워크를 통해 컴퓨터에 공급되는 비디오 스트림을 수정하는 방법으로서,A method of modifying a video stream encoded according to values of one or more parameters and supplied to a computer via a network, the method comprising: 상기 비디오 스트림을 상기 컴퓨터에 전달하는 네트워크의 능력과 상기 비디오 스트림을 디코드하는 상기 컴퓨터의 능력에 적어도 관련된 데이터를 획득하는 단계와,Obtaining data at least related to a network's ability to deliver the video stream to the computer and to the computer's ability to decode the video stream; 하나 또는 그 이상의 파라미터 값을 수정하는 단계로서, 상기 비디오 스트림은 상기 파라미터값에 따라 상기 획득된 데이터에 기초하여 인코드되는, 파라미터 값을 수정하는 단계를 포함하는, 비디오 스트림을 수정하는 방법.Modifying one or more parameter values, wherein the video stream is encoded based on the obtained data in accordance with the parameter values. 제 2항에 있어서, 상기 비디오 스트림이 인코드될 때 따르는 상기 하나 또는그 이상의 파라미터들은 프레임 해상도를 포함하고,The method of claim 2, wherein the one or more parameters that follow when the video stream is encoded include a frame resolution, 상기 수정하는 단계는 상기 획득된 데이터에 기초하여 상기 프레임 해상도 값을 수정하는 단계를 포함하는, 비디오 스트림을 수정하는 방법.And said modifying comprises modifying said frame resolution value based on said obtained data. 제 2항에 있어서, 상기 비디오 스트림이 인코드될 때 따르는 상기 하나 또는 그 이상의 파라미터들은 프레임 속도를 포함하고,The method of claim 2, wherein the one or more parameters that follow when the video stream is encoded include a frame rate, 상기 수정하는 단계는 상기 획득된 데이터에 기초하여 상기 프레임 속도 값을 수정하는 단계를 포함하는, 비디오 스트림을 수정하는 방법.And said modifying comprises modifying said frame rate value based on said obtained data. 제 2항에 있어서, 상기 획득 단계는 상기 컴퓨터로부터 수신된 RTCP 패킷들에서 상기 컴퓨터 또는 상기 네트워크와 관련된 데이터를 획득하는 단계를 포함하는, 비디오 스트림을 수정하는 방법.3. The method of claim 2, wherein the acquiring step comprises acquiring data associated with the computer or the network from RTCP packets received from the computer. 제 5항에 있어서, 상기 획득 단계는 상기 컴퓨터로부터 수신된 상기 RTCP 패킷들의 애플리케이션 특정 부분에서 상기 컴퓨터 또는 상기 네트워크와 관련된 데이터를 획득하는 단계를 포함하는, 비디오 스트림을 수정하는 방법.6. The method of claim 5, wherein the acquiring step comprises acquiring data associated with the computer or the network in an application specific portion of the RTCP packets received from the computer. 제 2항에 있어서, 상기 획득 단계는 상기 컴퓨터에 공급되는 비디오 스트림을 디코드하기 위해 상기 컴퓨터에서 이용 가능한 자원들을 나타내는 수치를 획득하는 단계를 포함하는, 비디오 스트림을 수정하는 방법.3. The method of claim 2, wherein said obtaining step comprises obtaining a numerical value indicative of the resources available at the computer to decode the video stream supplied to the computer. 제 7항에 있어서, 상기 획득 단계는 상기 컴퓨터에 공급되는 비디오 스트림을 디코드하기 위해 상기 컴퓨터에서 이용 가능한 컴퓨터 프로세서 성능(power)을 나타내는 수치를 획득하는 단계를 포함하는, 비디오 스트림을 수정하는 방법.8. The method of claim 7, wherein the obtaining step includes obtaining a numerical value indicative of computer processor power available to the computer to decode the video stream supplied to the computer. 제 2항에 있어서, 상기 획득 단계는 상기 비디오 스트림을 상기 네트워크를 통해 상기 컴퓨터에 공급하는 것과 연관된 패킷 손실을 나타내는 수치를 획득하는 단계를 포함하는, 비디오 스트림을 수정하는 방법.3. The method of claim 2, wherein said obtaining step includes obtaining a value indicative of packet loss associated with supplying said video stream to said computer via said network. 제 2항에 있어서, 상기 획득 단계는 상기 비디오 스트림을 상기 네트워크를 통해 상기 컴퓨터에 공급하는 것과 연관된 전송된 바이트들과 수신된 바이트들을 나타내는 수치를 획득하는 단계를 포함하는, 비디오 스트림을 수정하는 방법.3. The method of claim 2, wherein said obtaining step comprises obtaining a numerical value indicative of transmitted and received bytes associated with supplying said video stream to said computer via said network. . 제 2항에 있어서, 상기 획득 단계는 상기 비디오 스트림을 상기 네트워크를 통해 상기 컴퓨터에 공급하는 것과 연관된 비트 에러율을 나타내는 수치를 획득하는 단계를 포함하는, 비디오 스트림을 수정하는 방법.3. The method of claim 2, wherein said obtaining step includes obtaining a numerical value indicative of a bit error rate associated with feeding said video stream to said computer via said network. 제 2항에 있어서, 상기 획득 단계는The method of claim 2, wherein the obtaining step 상기 컴퓨터에서 상기 데이터를 모으는 단계와,Collecting the data on the computer, 상기 컴퓨터로부터 상기 모여진 데이터를 수신하는 단계를 포함하는, 비디오스트림을 수정하는 방법.Receiving the aggregated data from the computer. 하나 또는 그 이상의 파라미터들의 값에 따라 제 1 컴퓨터에 의해 인코드되고, 상기 제 1 컴퓨터에 의해 네트워크를 통해 제 2 컴퓨터에 전송되는 비디오 스트림의 수정을 용이하게 하는 방법으로서,A method of facilitating modification of a video stream encoded by a first computer according to a value of one or more parameters and transmitted by the first computer to a second computer via a network, wherein: 상기 비디오 스트림을 상기 제 2 컴퓨터에 전송하는 네트워크의 능력과, 상기 비디오 스트림을 디코드하는 상기 제 2 컴퓨터의 능력과 관련된 데이터를 상기 제 2 컴퓨터에서 모으는 단계와,Gathering data at the second computer relating to the ability of the network to transmit the video stream to the second computer and the ability of the second computer to decode the video stream; 상기 제 1 컴퓨터가 상기 비디오 스트림을 인코딩할 때 따르는 하나 또는 그 이상의 파라미터들의 수정을 가능하게 하도록 상기 모여진 데이터를 상기 제 1 컴퓨터로 전송하는 단계를 포함하는, 비디오 스트림의 수정을 용이하게 하는 방법.Transmitting the aggregated data to the first computer to enable modification of one or more parameters that the first computer follows when encoding the video stream. 제 13항에 있어서, 상기 전송 단계는 상기 제 1 컴퓨터에 보내지는 RTCP 패킷들의 애플리케이션 특정 부분에서 상기 모여진 데이터를 전송하는 단계를 포함하는, 비디오 스트림의 수정을 용이하게 하는 방법.14. The method of claim 13, wherein said transmitting step comprises transmitting said aggregated data in an application specific portion of RTCP packets sent to said first computer. 하나 또는 그 이상의 파라미터들의 값들에 따라 인코드되고, 네트워크를 통해 공급되는 비디오 스트림을 수정하는 시스템으로서,A system for modifying a video stream encoded according to values of one or more parameters and supplied over a network, the system comprising: 적어도 상기 비디오 스트림을 전송하는 상기 네트워크의 능력에 관련된 데이터를 획득하는 수단과,Means for obtaining data relating to at least the ability of the network to transmit the video stream; 하나 또는 그 이상의 파라미터 값을 수정하는 단계로서, 상기 비디오 스트림은 상기 파라미터값에 따라 상기 획득된 데이터에 기초하여 인코드되는, 파라미터 값을 수정하는 단계를 포함하는, 비디오 스트림을 수정하는 시스템.Modifying one or more parameter values, wherein the video stream is modified based on the obtained data in accordance with the parameter values. 하나 또는 그 이상의 파라미터들의 값들에 따라 인코드되고, 네트워크를 통해 컴퓨터에 공급되는 비디오 스트림을 수정하는 시스템으로서,A system for modifying a video stream encoded according to values of one or more parameters and supplied to a computer via a network, the system comprising: 상기 비디오 스트림을 상기 컴퓨터에 전송하는 상기 네트워크의 능력과, 상기 비디오 스트림을 디코드하는 상기 컴퓨터의 능력에 관련된 데이터를 획득하는 수단과,Means for obtaining data relating to the network's ability to send the video stream to the computer and the computer's ability to decode the video stream; 하나 또는 그 이상의 파라미터 값을 수정하는 단계로서, 상기 비디오 스트림은 상기 파라미터값에 따라 상기 획득된 데이터에 기초하여 인코드되는, 파라미터 값을 수정하는 단계를 포함하는, 비디오 스트림을 수정하는 시스템.Modifying one or more parameter values, wherein the video stream is modified based on the obtained data in accordance with the parameter values. 제 16항에 있어서, 상기 비디오 스트림이 인코드될 때 따르는 상기 하나 또는 그 이상의 파라미터들은 프레임 해상도를 포함하고,17. The apparatus of claim 16, wherein the one or more parameters that follow when the video stream is encoded include a frame resolution, 상기 수정하는 수단은 상기 획득된 데이터에 기초하여 상기 프레임 해상도 값을 수정하는 수단을 포함하는, 비디오 스트림을 수정하는 시스템.And the means for modifying comprises means for modifying the frame resolution value based on the obtained data. 제 16항에 있어서, 상기 비디오 스트림이 인코드될 때 따르는 상기 하나 또는 그 이상의 파라미터들은 프레임 속도를 포함하고,17. The apparatus of claim 16, wherein the one or more parameters that follow when the video stream is encoded include a frame rate, 상기 수정하는 수단은 상기 획득된 데이터에 기초하여 상기 프레임 속도 값을 수정하는 수단을 포함하는, 비디오 스트림을 수정하는 시스템.And the means for modifying comprises means for modifying the frame rate value based on the obtained data. 제 16항에 있어서, 상기 획득 수단은 상기 컴퓨터로부터 수신된 RTCP 패킷들에서 상기 컴퓨터 또는 상기 네트워크와 관련된 데이터를 획득하는 수단을 포함하는, 비디오 스트림을 수정하는 시스템.17. The system of claim 16, wherein the means for obtaining comprises means for obtaining data associated with the computer or the network from RTCP packets received from the computer. 제 16항에 있어서, 상기 획득 수단은 상기 컴퓨터에 공급되는 상기 비디오 스트림을 디코드하기 위해 상기 컴퓨터에서 이용 가능한 컴퓨터 프로세서 성능을 나타내는 수치를 획득하는 수단을 포함하는, 비디오 스트림을 수정하는 시스템.17. The system of claim 16, wherein the means for obtaining comprises means for obtaining a numerical value indicative of computer processor performance available to the computer to decode the video stream supplied to the computer. 제 16항에 있어서, 상기 획득 수단은 상기 비디오 스트림을 상기 네트워크를 통해 상기 컴퓨터에 공급하는 것과 연관된 패킷 손실을 나타내는 수치를 획득하는 수단을 포함하는, 비디오 스트림을 수정하는 시스템.17. The system of claim 16, wherein the means for obtaining comprises means for obtaining a value indicative of packet loss associated with supplying the video stream to the computer via the network. 제 16항에 있어서, 상기 획득 수단은 상기 비디오 스트림을 상기 네트워크를 통해 상기 컴퓨터에 공급하는 것과 연관된 전송된 바이트들과 수신된 바이트들을 나타내는 수치를 획득하는 수단을 포함하는, 비디오 스트림을 수정하는 시스템.17. The system of claim 16, wherein said means for obtaining comprises means for obtaining a numerical value indicative of transmitted and received bytes associated with feeding said video stream to said computer via said network. . 제 16항에 있어서, 상기 획득 수단은 상기 비디오 스트림을 상기 네트워크를통해 상기 컴퓨터에 공급하는 것과 연관된 비트 에러율을 나타내는 수치를 획득하는 수단을 포함하는, 비디오 스트림을 수정하는 시스템.17. The system of claim 16, wherein the means for obtaining comprises means for obtaining a numerical value indicative of a bit error rate associated with feeding the video stream to the computer via the network. 하나 또는 그 이상의 파라미터들의 값들에 따라 제 1 컴퓨터에 의해 인코드되고, 네트워크를 통해 제 1 컴퓨터에 의해 제 2 컴퓨터로 전송되는 비디오 스트림의 수정을 용이하게 하는 시스템으로서,A system that facilitates modification of a video stream encoded by a first computer according to values of one or more parameters and transmitted by a first computer to a second computer via a network, wherein: 상기 비디오 스트림을 상기 제 2 컴퓨터에 전달하는 상기 네트워크의 능력과, 상기 비디오 스트림을 디코드하는 상기 제 2 컴퓨터의 능력과 관련된 데이터를 상기 제 2 컴퓨터에서 모으는 수단과,Means for gathering at the second computer data relating to the network's ability to deliver the video stream to the second computer and the ability of the second computer to decode the video stream; 상기 제 1 컴퓨터가 상기 비디오 스트림을 인코드할 때 따르는 하나 또는 그 이상의 파라미터들의 값의 수정을 가능하게 하도록 상기 모여진 데이터를 상기 제 1 컴퓨터에 전송하는 수단을 포함하는, 비디오 스트림의 수정을 용이하게 하는 시스템.Means for transmitting the aggregated data to the first computer to enable modification of the value of one or more parameters that follow when the first computer encodes the video stream. System. 제 24항에 있어서, 상기 전송 수단은 상기 제 1 컴퓨터에 보내지는 RTCP 패킷들의 애플리케이션 특정 부분에서 상기 모여진 데이터를 전송하는 수단을 포함하는, 비디오 스트림의 수정을 용이하게 하는 시스템.25. The system of claim 24, wherein the means for transmitting comprises means for transmitting the aggregated data in an application specific portion of RTCP packets sent to the first computer. 기록된 컴퓨터 판독 가능한 코드를 가지는 컴퓨터 사용 가능한 매체를 포함하는 컴퓨터 프로그램 산물로서, 상기 컴퓨터 판독 가능한 코드는, 실행될 때 하나또는 그 이상의 파라미터 값들에 따라 인코드되고 네트워크를 통해 공급되는 비디오 스트림을 수정하는 방법을 컴퓨터가 수행하도록 하는, 컴퓨터 프로그램 산물에 있어서, 상기 방법은A computer program product comprising a computer usable medium having computer readable code recorded thereon, wherein the computer readable code, when executed, modifies a video stream encoded according to one or more parameter values and supplied over a network. A computer program product for causing a computer to perform a method, the method comprising 적어도 상기 비디오 스트림을 전달하는 상기 네트워크의 능력에 관련된 데이터를 획득하는 단계와,Obtaining data related to at least the network's ability to carry the video stream; 하나 또는 그 이상의 파라미터 값을 수정하는 단계로서, 상기 비디오 스트림은 상기 파라미터값에 따라 상기 획득된 데이터에 기초하여 인코드되는, 파라미터 값을 수정하는 단계를 포함하는, 컴퓨터 프로그램 산물.Modifying one or more parameter values, wherein the video stream is encoded based on the obtained data in accordance with the parameter values. 기록된 컴퓨터 판독 가능한 코드를 가지는 컴퓨터 사용 가능한 매체를 포함하는 컴퓨터 프로그램 산물로서, 상기 컴퓨터 판독 가능한 코드는, 실행될 때 하나 또는 그 이상의 파라미터 값들에 따라 인코드되고 네트워크를 통해 컴퓨터에 공급되는 비디오 스트림을 수정하는 방법을 컴퓨터가 수행하도록 하는, 컴퓨터 프로그램 산물에 있어서, 상기 방법은A computer program product comprising a computer usable medium having computer readable code recorded thereon, wherein the computer readable code encodes a video stream which, when executed, is encoded in accordance with one or more parameter values and supplied to the computer via a network. In a computer program product for causing a computer to perform a method of modifying, the method comprises 상기 비디오 스트림을 상기 컴퓨터에 전달하는 상기 네트워크의 능력과, 상기 비디오 스트림을 디코드하는 상기 컴퓨터의 능력에 관련된 데이터를 획득하는 단계와,Obtaining data relating to the network's ability to deliver the video stream to the computer and the computer's ability to decode the video stream; 하나 또는 그 이상의 파라미터 값을 수정하는 단계로서, 상기 비디오 스트림은 상기 파라미터값에 따라 상기 획득된 데이터에 기초하여 인코드되는, 파라미터 값을 수정하는 단계를 포함하는, 컴퓨터 프로그램 산물.Modifying one or more parameter values, wherein the video stream is encoded based on the obtained data in accordance with the parameter values. 제 27항에 있어서, 상기 비디오 스트림이 인코드될 때 따르는 상기 하나 또는 그 이상의 파라미터들은 프레임 해상도를 포함하고,28. The apparatus of claim 27, wherein the one or more parameters that follow when the video stream is encoded include a frame resolution, 상기 구현된 방법에서, 상기 수정 단계는 상기 획득된 데이터에 기초하여 프레임 해상도 값을 수정하는 단계를 포함하는, 컴퓨터 프로그램 산물.In the implemented method, the modifying step includes modifying a frame resolution value based on the obtained data. 제 27항에 있어서, 상기 비디오 스트림이 인코드될 때 따르는 상기 하나 또는 그 이상의 파라미터들은 프레임 속도를 포함하고,28. The apparatus of claim 27, wherein the one or more parameters that follow when the video stream is encoded include a frame rate, 상기 구현된 방법에서, 상기 수정 단계는 상기 획득된 데이터에 기초하여 상기 프레임 속도 값을 수정하는 단계를 포함하는, 컴퓨터 프로그램 산물.In the implemented method, the modifying step includes modifying the frame rate value based on the obtained data. 제 27항에 있어서, 상기 구현된 방법에서, 상기 획득 단계는 상기 컴퓨터로부터 수신된 RTCP 패킷들에서 상기 컴퓨터 또는 상기 네트워크에 관련된 데이터를 획득하는 단계를 포함하는, 컴퓨터 프로그램 산물.28. The computer program product of claim 27, wherein in the implemented method, the acquiring comprises acquiring data related to the computer or the network from RTCP packets received from the computer. 제 27항에 있어서, 상기 구현된 방법에서, 상기 획득 단계는 상기 컴퓨터에 공급되는 상기 비디오 스트림을 디코드하기 위해 상기 컴퓨터에서 이용 가능한 컴퓨터 프로세서 성능을 나타내는 수치를 획득하는 단계를 포함하는, 컴퓨터 프로그램 산물.28. The computer program product of claim 27, wherein in the implemented method, the acquiring comprises obtaining a numerical value indicative of computer processor performance available in the computer to decode the video stream supplied to the computer. . 제 27항에 있어서, 상기 구현된 방법에서, 상기 획득 단계는 상기 네트워크를 통해 상기 컴퓨터로 상기 비디오 스트림을 공급하는 것과 연관된 패킷 손실을 나타내는 수치를 획득하는 단계를 포함하는, 컴퓨터 프로그램 산물.28. The computer program product of claim 27, wherein in the implemented method, the acquiring comprises obtaining a value indicative of packet loss associated with supplying the video stream to the computer via the network. 제 27항에 있어서, 상기 구현된 방법에서, 상기 획득 단계는 상기 네트워크를 통해 상기 컴퓨터로 상기 비디오 스트림을 공급하는 것과 연관된, 송신된 바이트와 수신된 바이트들을 나타내는 수치를 획득하는 단계를 포함하는, 컴퓨터 프로그램 산물.28. The method of claim 27, wherein in the implemented method, the acquiring comprises acquiring a numerical value indicative of a transmitted byte and received bytes associated with supplying the video stream to the computer via the network. Computer program product. 제 27항에 있어서, 상기 구현된 방법에서, 상기 네트워크를 통해 상기 컴퓨터로 상기 비디오 스트림을 공급하는 것과 연관된 비트 에러율을 나타내는 수치를 획득하는 단계를 포함하는, 컴퓨터 프로그램 산물.28. The computer program product of claim 27, comprising obtaining a value indicative of a bit error rate associated with feeding the video stream to the computer via the network. 기록된 컴퓨터 판독 가능한 코드를 가지는 컴퓨터 사용 가능한 매체를 포함하는 컴퓨터 프로그램 산물로서, 상기 컴퓨터 판독 가능한 코드는, 실행될 때 하나 또는 그 이상의 파라미터 값들에 따라 제 1 컴퓨터에 의해 인코드되고, 네트워크를 통해 제 1 컴퓨터에 의해 제 2 컴퓨터에 전송되는, 비디오 스트림의 수정을 용이하게 하는 방법을, 컴퓨터가 수행하도록 하는, 컴퓨터 프로그램 산물에 있어서, 상기 방법은A computer program product comprising a computer usable medium having computer readable code recorded thereon, wherein the computer readable code is encoded by the first computer according to one or more parameter values when executed, and overwritten via a network. In a computer program product for causing a computer to perform a method of facilitating modification of a video stream transmitted by one computer to a second computer, the method comprises 상기 비디오 스트림을 상기 제 2 컴퓨터에 전달하는 상기 네트워크의 능력과, 상기 비디오 스트림을 디코드하는 상기 제 2 컴퓨터의 능력에 관련된 데이터를 제 2 컴퓨터에서 모으는 단계와,Gathering at the second computer data relating to the network's ability to deliver the video stream to the second computer and the ability of the second computer to decode the video stream; 상기 제 1 컴퓨터가 상기 비디오 스트림을 인코드할 때 따르는 상기 하나 또는 그 이상의 파라미터들의 값을 수정가능하게 하도록 상기 제 1 컴퓨터에 상기 모여진 데이터를 전송하는 단계를 포함하는, 컴퓨터 프로그램 산물.And transmitting the aggregated data to the first computer to enable modifying the value of the one or more parameters that the first computer follows when encoding the video stream. 제 35항에 있어서, 상기 구현된 방법에서, 상기 전송 단계는 상기 제 1 컴퓨터에 보내지는 RTCP 패킷들의 애플리케이션 특정 부분에서 상기 모여진 데이터를 전송하는 단계를 포함하는, 컴퓨터 프로그램 산물.36. The computer program product of claim 35, wherein in the implemented method, the transmitting step comprises transmitting the aggregated data in an application specific portion of RTCP packets sent to the first computer.
KR1020047008811A 2001-12-15 2002-12-13 System and method for modifying a video stream based on a client or network environment, system and method for facilitating a video stream and a computer usable medium KR101080237B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US34167201P 2001-12-15 2001-12-15
US60/341,672 2001-12-15
PCT/US2002/039919 WO2003053040A2 (en) 2001-12-15 2002-12-13 System and method for modifying a video stream based on a client or network environment

Publications (2)

Publication Number Publication Date
KR20040074997A true KR20040074997A (en) 2004-08-26
KR101080237B1 KR101080237B1 (en) 2011-11-08

Family

ID=23338551

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047008811A KR101080237B1 (en) 2001-12-15 2002-12-13 System and method for modifying a video stream based on a client or network environment, system and method for facilitating a video stream and a computer usable medium

Country Status (7)

Country Link
EP (1) EP1454250A4 (en)
JP (1) JP2005513876A (en)
KR (1) KR101080237B1 (en)
CN (1) CN1316398C (en)
AU (1) AU2002361665A1 (en)
MX (1) MXPA04005740A (en)
WO (1) WO2003053040A2 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150090279A (en) * 2010-08-10 2015-08-05 퀄컴 인코포레이티드 Trick modes for network streaming of coded video data
US9628536B2 (en) 2006-06-09 2017-04-18 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US9917874B2 (en) 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US11477253B2 (en) 2006-06-09 2022-10-18 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4789401B2 (en) 2003-06-25 2011-10-12 トヨタ自動車株式会社 Content distribution system
KR100526183B1 (en) 2003-07-15 2005-11-03 삼성전자주식회사 Apparatus and Method for efficient data transmission/reception in Mobile Ad-hoc Network
US20070024705A1 (en) * 2005-08-01 2007-02-01 Richter Roger K Systems and methods for video stream selection
CN100588249C (en) * 2006-07-27 2010-02-03 腾讯科技(深圳)有限公司 Method, system and terminal for adjusting video quality
CN101282141B (en) * 2007-04-05 2012-06-06 华为技术有限公司 Method, apparatus and system for transmitting and receiving data
JP2009152952A (en) * 2007-12-21 2009-07-09 Nec Corp Distribution system, distribution method, and program
CN101215118B (en) * 2008-01-14 2010-06-09 张建荣 Copolymerization type polycarboxylic acids water reducing agent and method for preparing same
CN101365125B (en) 2008-09-27 2012-03-21 腾讯科技(深圳)有限公司 Multipath video communication method and system
CN101552913B (en) 2009-05-12 2011-07-06 腾讯科技(深圳)有限公司 Multi-channel video communication system and processing method
WO2012045192A1 (en) * 2010-10-05 2012-04-12 Intel Corporation Method and apparatus for dynamically adjusting video quality
KR101744355B1 (en) 2011-01-19 2017-06-08 삼성전자주식회사 Apparatus and method for tranmitting a multimedia data packet using cross layer optimization
WO2012154157A1 (en) * 2011-05-06 2012-11-15 Google Inc. Apparatus and method for dynamically changing encoding scheme based on resource utilization
JP5660983B2 (en) 2011-06-28 2015-01-28 トヨタ自動車株式会社 Content distribution system
CN103313095A (en) * 2012-03-16 2013-09-18 腾讯科技(深圳)有限公司 Video transmission method, play method, terminal and server
WO2014122693A1 (en) * 2013-02-08 2014-08-14 三菱電機株式会社 Client device, server device, and screen transmission system
US20140347376A1 (en) * 2013-05-24 2014-11-27 Nvidia Corporation Graphics server and method for managing streaming parameters
US20150117516A1 (en) * 2013-10-30 2015-04-30 Vered Bar Bracha Dynamic video encoding based on channel quality
CN104935971B (en) * 2015-06-02 2018-08-07 阔地教育科技有限公司 Transmission of video dynamic adjusting method and system in a kind of Online class

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100345497B1 (en) * 1994-06-07 2002-10-04 유니시스 코포레이션 Multi-cast digital video data server using synchronization groups
WO1997022201A2 (en) * 1995-12-12 1997-06-19 The Board Of Trustees Of The University Of Illinois Method and system for transmitting real-time video
US6233017B1 (en) * 1996-09-16 2001-05-15 Microsoft Corporation Multimedia compression system with adaptive block sizes
JPH10126771A (en) * 1996-10-15 1998-05-15 Toshiba Corp Image data sending rate controlling method and image data transfer method in image data transfer system
US6006241A (en) * 1997-03-14 1999-12-21 Microsoft Corporation Production of a video stream with synchronized annotations over a computer network
US6421733B1 (en) * 1997-03-25 2002-07-16 Intel Corporation System for dynamically transcoding data transmitted between computers
US6192032B1 (en) * 1998-01-02 2001-02-20 International Business Machines Corporation Rate attenuation systems, methods and computer program products for reducing low priority video frame packets transmitted over a network
JPH11266229A (en) * 1998-03-18 1999-09-28 Matsushita Electric Ind Co Ltd Data transmitter of spread spectrum communication system
JP2955561B1 (en) * 1998-05-29 1999-10-04 株式会社ディジタル・ビジョン・ラボラトリーズ Stream communication system and stream transfer control method
SG77650A1 (en) * 1998-09-07 2001-01-16 Victor Company Of Japan A scalable delivery scheme of compressed video
JP2000228676A (en) * 1998-11-30 2000-08-15 Matsushita Electric Ind Co Ltd Data transmission method
US6529475B1 (en) * 1998-12-16 2003-03-04 Nortel Networks Limited Monitor for the control of multimedia services in networks
JP2000270330A (en) * 1999-03-18 2000-09-29 Fujitsu Ltd System and method for video image distribution
JP2000295597A (en) * 1999-04-09 2000-10-20 Oki Electric Ind Co Ltd Reception and transmission system for media data
JP2001025013A (en) * 1999-07-12 2001-01-26 Matsushita Electric Ind Co Ltd Transmission/reception method and equipment therefor
US20010047517A1 (en) * 2000-02-10 2001-11-29 Charilaos Christopoulos Method and apparatus for intelligent transcoding of multimedia data

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9628536B2 (en) 2006-06-09 2017-04-18 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US11477253B2 (en) 2006-06-09 2022-10-18 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9917874B2 (en) 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US10855736B2 (en) 2009-09-22 2020-12-01 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US11743317B2 (en) 2009-09-22 2023-08-29 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US11770432B2 (en) 2009-09-22 2023-09-26 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
KR20150090279A (en) * 2010-08-10 2015-08-05 퀄컴 인코포레이티드 Trick modes for network streaming of coded video data

Also Published As

Publication number Publication date
WO2003053040A2 (en) 2003-06-26
EP1454250A2 (en) 2004-09-08
CN1316398C (en) 2007-05-16
EP1454250A4 (en) 2010-08-25
WO2003053040A3 (en) 2003-12-18
AU2002361665A1 (en) 2003-06-30
AU2002361665A8 (en) 2003-06-30
CN1605075A (en) 2005-04-06
MXPA04005740A (en) 2004-12-06
KR101080237B1 (en) 2011-11-08
JP2005513876A (en) 2005-05-12

Similar Documents

Publication Publication Date Title
KR101080237B1 (en) System and method for modifying a video stream based on a client or network environment, system and method for facilitating a video stream and a computer usable medium
US8352991B2 (en) System and method for modifying a video stream based on a client or network environment
KR101429773B1 (en) Method and system loss-tolerant for multimedia multicasting
KR101449710B1 (en) Data communication system, data transmitting apparatus, data transmitting method, and method for determining packet size and redundancy
JP3740113B2 (en) Real-time multimedia streaming system and method adapted to network
US8037132B2 (en) Methods and apparatuses for transferring streaming multimedia data and various types of data associated therewith in a network environment
US7164680B2 (en) Scheme for supporting real-time packetization and retransmission in rate-based streaming applications
US20010043615A1 (en) Apparatus for transmitting/receiving a bit stream in a network and method therefor
US7764708B2 (en) Data transmission system, header-information adding device, data-format converting device, and data transmission method
JP2001177573A (en) Data communication system, data reception terminal and data transmission terminal
KR20100083233A (en) Apparatus and method for multimedia file streaming in portable terminal
EP1941661A1 (en) System and method for controlling transmission of moving image data over network
WO2012161652A1 (en) Methods for transmitting and receiving a digital signal, transmitter and receiver
JP5344541B2 (en) Data transmission apparatus, transmission method and program
US20090268730A1 (en) Data transmitting apparatus and method and program for controlling transmission rate
JP2004007480A (en) Packet transfer apparatus and its method for multimedia streaming service
US20020174437A1 (en) Method and apparatus for controlling image quality by culling transmitted image information
KR101955690B1 (en) Apparatus and method for delivering multimedia data in hybrid network
KR101855327B1 (en) Apparatus and method for delivering multimedia data in hybrid network
KR20190021300A (en) Apparatus and method for delivering multimedia data in hybrid network
JP2004282584A (en) Moving image data communication system via network
KR20020046770A (en) Method of RTP Packetization for Video Streams

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20141006

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151002

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160929

Year of fee payment: 6