KR20150088899A - 코딩된 비디오 데이터의 네트워크 스트리밍 - Google Patents

코딩된 비디오 데이터의 네트워크 스트리밍 Download PDF

Info

Publication number
KR20150088899A
KR20150088899A KR1020157018423A KR20157018423A KR20150088899A KR 20150088899 A KR20150088899 A KR 20150088899A KR 1020157018423 A KR1020157018423 A KR 1020157018423A KR 20157018423 A KR20157018423 A KR 20157018423A KR 20150088899 A KR20150088899 A KR 20150088899A
Authority
KR
South Korea
Prior art keywords
segment
data
sub
segments
video
Prior art date
Application number
KR1020157018423A
Other languages
English (en)
Other versions
KR101838789B1 (ko
Inventor
타디 엠 나가라지
랄프 에이 골미에
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20150088899A publication Critical patent/KR20150088899A/ko
Application granted granted Critical
Publication of KR101838789B1 publication Critical patent/KR101838789B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • 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/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • 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/438Interfacing the downstream path of the transmission network originating from a server, e.g. retrieving encoded video stream packets from an IP network
    • H04N21/4383Accessing a communication channel
    • H04N21/4384Accessing a communication channel involving operations to reduce the access time, e.g. fast-tuning for reducing channel switching latency
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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
    • 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/61Network physical structure; Signal processing
    • H04N21/6106Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
    • H04N21/6125Network physical structure; Signal processing specially adapted to the downstream path of the transmission network involving transmission via Internet
    • 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/643Communication protocols
    • H04N21/64322IP
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/85406Content authoring involving a specific file format, e.g. MP4 format

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Databases & Information Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

하나의 예에서, 디바이스는 멀티미디어 데이터의 세그먼트의 제 1 서브-세그먼트를 수신하도록 구성되고, 제 1 서브-세그먼트는, 제 1 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 1 헤더 및 그 데이터 유닛들의 제 1 세트를 포함하고, 데이터 유닛들 중 적어도 하나의 데이터 유닛은, 세그먼트의 제 2 서브-세그먼트의 데이터 유닛을 참조한다. 이 디바이스는 또한, 제 1 서브-세그먼트의 수신 후에, 제 2 서브-세그먼트를 수신하도록 구성되고, 제 2 서브-세그먼트는, 제 2 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 2 헤더 및 그 데이터 유닛들의 제 2 세트를 포함한다. 이 디바이스는 또한, 제 1 서브-세그먼트 및 제 2 서브-세그먼트의 수신 후에, 세그먼트의 적어도 일 부분을 프로세싱하도록 구성된다.

Description

코딩된 비디오 데이터의 네트워크 스트리밍{NETWORK STREAMING OF CODED VIDEO DATA}
본 출원은, 여기에 그 전체가 참조로 포함된, 2011년 9월 6일자로 출원된 미국 가출원 제61/531,550호의 이익을 주장한다.
기술분야
본 개시물은 인코딩된 미디어 데이터의 저장 및 전송에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비전들, 디지털 직접 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인 휴대 정보 단말기들 (PDAs), 랩톱 또는 데스크톱 컴퓨터들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 비디오 원격회의 디바이스들 등을 포함하는 넓은 범위의 디바이스들에 포함될 수 있다. 디지털 비디오 디바이스들은 MPEG-2, MPEG-4, ITU-T H.263 또는 ITU-T H.264/MPEG-4, Part 10, 어드밴스드 비디오 코딩 (Advanced Video Coding; AVC) 에 의해 규정된 표준들 및 이러한 표준들의 확장들에 기재된 것들과 같은 비디오 압축 기법들을 구현하여, 디지털 비디오 정보를 더 효율적으로 송신하고 수신한다.
비디오 압축 기법들은 공간적 예측 및/또는 시간적 예측을 수행하여 비디오 시퀀스들 내에 내재된 리던던시 (redundancy) 를 감소시키거나 제거한다. 블록-기반 비디오 코딩에서는, 비디오 프레임 또는 슬라이스가 블록들로 파티셔닝 (partitioning) 될 수도 있다. 각각의 블록은 더 파티셔닝될 수 있다. 인트라-코딩된 (I) 프레임 또는 슬라이스 내의 블록들은 이웃하는 블록들에 대한 공간적 예측을 사용하여 인코딩된다. 인터-코딩된 (P 또는 B) 프레임 또는 슬라이스 내의 블록들은 동일한 프레임 또는 슬라이스 내의 이웃하는 블록들에 대한 공간적 예측 또는 다른 참조 프레임들에 대한 시간적 예측을 이용할 수도 있다.
비디오 데이터가 인코딩된 후에, 비디오 데이터는 송신 또는 저장을 위해 패킷화될 수도 있다. 비디오 데이터는 다양한 표준들, 예컨대, 국제 표준화 기구 (International Organization for Standardization; ISO) 기반 미디어 파일 포맷 및 그 확장들 중 임의의 것, 예컨대, ITU-T H.264/AVC 에 따르는 비디오 파일로 어셈블링될 수도 있다. 이러한 패킷화된 비디오 데이터는 다양한 방법들로, 예컨대, 네트워크 스트리밍을 이용한 컴퓨터 네트워크를 통한 송신으로 전송될 수도 있다.
일반적으로, 본 개시물은 네트워크를 통해 미디어 데이터를 스트리밍하기 위한 기법들을 설명한다. 더 구체적으로는, 본 개시물의 양태들은, 예를 들어, HTTP 를 통한 동적 적응적 스트리밍 (Dynamic Adaptive Streaming over HTTP; DASH) 에 따라, 네트워크를 통해 미디어 데이터를 스트리밍하는 것과 연관된 레이턴시를 감소시키는 것에 관한 것이다. 일 예에서, 본 개시물의 기법들은 미디어 데이터의 세그먼트들의 송신들을 최적화하는 것을 포함한다. 즉, 본 개시물의 양태들에 따르면, 미디어 데이터를 제공하는 것을 담당하는 디바이스 (예를 들어, 서버 디바이스) 는, 미디어 데이터의 세그먼트를, 네트워크 설정에 있어서 송신에 적합한 복수의 서브-세그먼트들로 분할할 수도 있다. 이 예에서, 서버 디바이스는 미디어 데이터의 서브-세그먼트를, 이 서브-세그먼트가 형성되자마자 송신할 수도 있다.
일 예에서, 방법은, 멀티미디어 데이터의 세그먼트의 제 1 서브-세그먼트를 수신하는 단계를 포함하고, 제 1 서브-세그먼트는, 제 1 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 1 헤더 및 그 데이터 유닛들의 제 1 세트를 포함하고, 데이터 유닛들 중 적어도 하나의 데이터 유닛은, 세그먼트의 제 2 서브-세그먼트의 데이터 유닛을 참조한다. 이 방법은 또한, 제 1 서브-세그먼트의 수신 후에, 제 2 서브-세그먼트를 수신하는 단계로서, 제 2 서브-세그먼트는, 제 2 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 2 헤더 및 그 데이터 유닛들의 제 2 세트를 포함하는, 그 제 2 서브-세그먼트를 수신하는 단계, 및 제 1 서브-세그먼트 및 제 2 서브-세그먼트의 수신 후에, 세그먼트의 적어도 일 부분을 프로세싱하는 단계를 포함한다.
다른 예에서, 멀티미디어 데이터를 수신하는 장치는 하나 이상의 프로세서들을 포함한다. 하나 이상의 프로세서들은, 멀티미디어 데이터의 세그먼트의 제 1 서브-세그먼트를 수신하도록 구성되고, 제 1 서브-세그먼트는, 제 1 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 1 헤더 및 그 데이터 유닛들의 제 1 세트를 포함하고, 데이터 유닛들 중 적어도 하나의 데이터 유닛은, 세그먼트의 제 2 서브-세그먼트의 데이터 유닛을 참조한다. 하나 이상의 프로세서들은 또한, 제 1 서브-세그먼트의 수신 후에, 제 2 서브-세그먼트를 수신하도록 구성되고, 제 2 서브-세그먼트는, 제 2 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 2 헤더 및 그 데이터 유닛들의 제 2 세트를 포함한다. 하나 이상의 프로세서들은 또한, 제 1 서브-세그먼트 및 제 2 서브-세그먼트의 수신 후에, 세그먼트의 적어도 일 부분을 프로세싱하도록 구성된다.
다른 예에서, 멀티미디어 데이터를 수신하는 장치는, 멀티미디어 데이터의 세그먼트의 제 1 서브-세그먼트를 수신하는 수단을 포함하고, 제 1 서브-세그먼트는, 제 1 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 1 헤더 및 그 데이터 유닛들의 제 1 세트를 포함하고, 데이터 유닛들 중 적어도 하나의 데이터 유닛은, 세그먼트의 제 2 서브-세그먼트의 데이터 유닛을 참조한다. 이 장치는 또한, 제 1 서브-세그먼트의 수신 후에, 제 2 서브-세그먼트를 수신하는 수단을 포함하고, 제 2 서브-세그먼트는, 제 2 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 2 헤더 및 그 데이터 유닛들의 제 2 세트를 포함한다. 이 장치는 또한, 제 1 서브-세그먼트 및 제 2 서브-세그먼트의 수신 후에, 세그먼트의 적어도 일 부분을 프로세싱하는 수단을 포함한다.
다른 예에서, 컴퓨터 프로그램 제품은, 명령들을 저장한 컴퓨터 판독가능 매체를 포함하고, 이 명령들은, 실행될 때, 하나 이상의 프로세서들로 하여금, 멀티미디어 데이터의 세그먼트의 제 1 서브-세그먼트를 수신하게 하고, 제 1 서브-세그먼트는, 제 1 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 1 헤더 및 그 데이터 유닛들의 제 1 세트를 포함하고, 데이터 유닛들 중 적어도 하나의 데이터 유닛은, 세그먼트의 제 2 서브-세그먼트의 데이터 유닛을 참조한다. 이 명령들은 또한, 하나 이상의 프로세서들로 하여금, 제 1 서브-세그먼트의 수신 후에, 제 2 서브-세그먼트를 수신하게 하고, 제 2 서브-세그먼트는, 제 2 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 2 헤더 및 그 데이터 유닛들의 제 2 세트를 포함한다. 이 명령들은 또한, 하나 이상의 프로세서들로 하여금, 제 1 서브-세그먼트 및 제 2 서브-세그먼트의 수신 후에, 세그먼트의 적어도 일 부분을 프로세싱하게 한다.
다른 예에서, 방법은, 멀티미디어 데이터의 세그먼트의 제 1 서브-세그먼트를 전송하는 단계를 포함하고, 제 1 서브-세그먼트는, 제 1 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 1 헤더 및 그 데이터 유닛들의 제 1 세트를 포함하고, 데이터 유닛들 중 적어도 하나의 데이터 유닛은, 세그먼트의 제 2 서브-세그먼트의 데이터 유닛을 참조한다. 이 방법은 또한, 제 1 서브-세그먼트의 전송 후에, 제 2 서브-세그먼트를 전송하는 단계를 포함하고, 제 2 서브-세그먼트는, 제 2 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 2 헤더 및 그 데이터 유닛들의 제 2 세트를 포함한다.
다른 예에서, 멀티미디어 데이터를 전송하는 장치는 하나 이상의 프로세서들을 포함한다. 이 하나 이상의 프로세서들은, 멀티미디어 데이터의 세그먼트의 제 1 서브-세그먼트를 전송하도록 구성되고, 제 1 서브-세그먼트는, 제 1 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 1 헤더 및 그 데이터 유닛들의 제 1 세트를 포함하고, 데이터 유닛들 중 적어도 하나의 데이터 유닛은, 세그먼트의 제 2 서브-세그먼트의 데이터 유닛을 참조한다. 하나 이상의 프로세서들은 또한, 제 1 서브-세그먼트의 전송 후에, 제 2 서브-세그먼트를 전송하도록 구성되고, 제 2 서브-세그먼트는, 제 2 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 2 헤더 및 그 데이터 유닛들의 제 2 세트를 포함한다.
다른 예에서, 멀티미디어 데이터를 전송하는 장치는, 멀티미디어 데이터의 세그먼트의 제 1 서브-세그먼트를 전송하는 수단을 포함하고, 제 1 서브-세그먼트는, 제 1 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 1 헤더 및 그 데이터 유닛들의 제 1 세트를 포함하고, 데이터 유닛들 중 적어도 하나의 데이터 유닛은, 세그먼트의 제 2 서브-세그먼트의 데이터 유닛을 참조한다. 이 장치는 또한, 제 1 서브-세그먼트의 전송 후에, 제 2 서브-세그먼트를 전송하는 수단을 포함하고, 제 2 서브-세그먼트는, 제 2 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 2 헤더 및 그 데이터 유닛들의 제 2 세트를 포함한다.
다른 예에서, 컴퓨터 프로그램 제품은, 명령들을 저장한 컴퓨터 판독가능 매체를 포함하고, 이 명령들은, 실행될 때, 하나 이상의 프로세서들로 하여금, 멀티미디어 데이터의 세그먼트의 제 1 서브-세그먼트를 전송하게 하고, 제 1 서브-세그먼트는, 제 1 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 1 헤더 및 그 데이터 유닛들의 제 1 세트를 포함하고, 데이터 유닛들 중 적어도 하나의 데이터 유닛은, 세그먼트의 제 2 서브-세그먼트의 데이터 유닛을 참조한다. 이 명령들은 또한, 하나 이상의 프로세서들로 하여금, 제 1 서브-세그먼트의 전송 후에, 제 2 서브-세그먼트를 전송하게 하고, 제 2 서브-세그먼트는, 제 2 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 2 헤더 및 그 데이터 유닛들의 제 2 세트를 포함한다.
하나 이상의 예들의 세부사항들은 첨부 도면들 및 아래의 상세한 설명에서 언급된다. 다른 특징들, 목적들, 및 이점들은 상세한 설명 및 도면들로부터, 그리고 청구항들로부터 명확하게 될 것이다.
도 1 은 네트워크를 통해 미디어 데이터를 스트리밍하기 위한 기법들을 구현하는 일 예시적인 시스템을 예시한 블록도이다.
도 2 는 본 개시물의 양태들에 따른 일 예시적인 취출 유닛을 예시한 블록도이다.
도 3 은 일 예시적인 멀티미디어 콘텐츠의 엘리먼트들을 예시한 개념도이다.
도 4 는 본 개시물에 따른 비디오데이터의 일 예시적인 세그먼트를 예시한 블록도이다.
도 5 는 본 개시물의 기법들을 수행하는 일 예시적인 방법을 예시한 흐름도이다.
일반적으로, 본 개시물은 네트워크를 통해 멀티미디어 데이터, 예컨대, 오디오 및 비디오 데이터를 스트리밍하기 위한 기법들을 설명한다. 본 개시물의 기법들은 HTTP 를 통한 동적 적응적 스트리밍 (Dynamic Adaptive Streaming over HTTP; DASH) 과 함께 이용될 수도 있다. 본 개시물은 네트워크 스트리밍과 함께 수행될 수도 있는 다양한 기법들을 설명하고, 그 중 전부 또는 임의의 것은 단독으로 또는 임의의 조합으로 구현될 수도 있다. 아래에 더 상세히 설명되는 바와 같이, 네트워크 스트리밍을 수행하는 다양한 디바이스들은 본 개시물의 기법들을 구현하도록 구성될 수도 있다.
DASH 및 네트워크를 통해 데이터를 스트리밍하기 위한 유사한 기법들에 따라, 멀티미디어 콘텐츠 (예컨대, 텍스트 오버레이들 또는 다른 데이터를 또한 포함할 수도 있는 무비 또는 다른 오디오/비디오 콘텐츠) 는 다양한 방법들로 그리고 다양한 특성들로 인코딩될 수도 있다. 콘텐츠 준비 디바이스는 동일한 멀티미디어 콘텐츠의 다수의 리프리젠테이션 (representation) 들을 형성할 수도 있다. 각각의 리프리젠테이션은, 다양한 코딩 및 렌더링 능력들을 갖는 다양한 상이한 클라이언트 디바이스들에 의해 사용가능한 데이터를 제공하기 위해, 특정 세트의 특성들, 예컨대, 코딩 및 렌더링 특성들에 대응할 수도 있다. 또한, 다양한 비트레이트들을 갖는 리프리젠테이션들은 대역폭 적응을 허용할 수도 있다. 즉, 클라이언트 디바이스는 현재 이용가능한 대역폭의 양을 결정하고, 클라이언트 디바이스의 코딩 및 랜더링 능력들과 함께, 이용가능한 대역폭의 양에 기초하여 리프리젠테이션을 선택할 수도 있다.
일부 예들에서, 콘텐츠 준비 디바이스는 리프리젠테이션들의 세트가 공통 특성들의 세트를 갖는다는 것을 나타낼 수도 있다. 콘텐츠 준비 디바이스는 그 후에, 이 세트 내의 리프리젠테이션들이 적응 세트 (adaptation set) 를 형성하여, 이 세트 내의 리프리젠테이션들이 대역폭 적응을 위해 사용될 수 있다는 것을 나타낼 수도 있다. 일부 경우들에서, 적응 세트는 "적응 세트" 라고도 또한 지칭될 수도 있다. 즉, 세트 내의 리프리젠테이션들은 비트레이트가 상이할 수도 있지만, 다르게는 실질적으로 동일한 특성들을 공유할 수도 있다. 이러한 방식으로, 클라이언트 디바이스는 멀티미디어 콘텐츠의 적응 세트들에 대해 공통 특성들의 다양한 세트들을 결정하고, 클라이언트 디바이스의 코딩 및 렌더링 능력들에 기초하여 적응 세트를 선택할 수도 있다. 그 후에, 클라이언트 디바이스는 대역폭 가용성에 기초하여 선택된 적응 세트 내의 리프리젠테이션들 사이에서 적응적으로 스위칭할 수도 있다.
또한, 콘텐츠 준비 디바이스는 매니페스트 파일, 예컨대, 3GPP (Third Generation Partnership Project) 에 의해 규정된 포맷의 미디어 프리젠테이션 디스크립션 (media presentation description; MPD) 파일의 상이한 부분들에 대한 개별적인 네트워크 위치들을 제공할 수도 있다. 즉, 매니페스트 파일의 상이한 부분들은, 예를 들어, 다양한 유니폼 리소스 식별자 (uniform resource identifier; URI) 들, 예컨대, 유니폼 리소스 로케이터 (uniform resource locator; URL) 들에 의해 독립적으로 어드레싱가능할 수도 있다. 매니페스트 파일의 초기 부분은 URI, URL, 또는 매니페스트 파일의 다른 부분의 다른 위치 식별자를 포함할 수도 있다. 예를 들어, 매니페스트 파일의 제 1 부분은, 상술된 바와 같이, 적응 세트들의 공통 특성들의 디스크립션들을 포함할 수도 있다.
적응 세트들 각각은, 각각의 적응 세트 내의 리프리젠테이션들의 미디어 데이터의 위치들을 나타내는 데이터를 포함할 수도 있는, 매니페스트 파일의 각각의 상이한 부분과 연관될 수도 있다. 이러한 방식으로, 클라이언트 디바이스는 매니페스트 파일의 제 1 부분을 수신하고, 적절한 적응 세트를 선택하고, 선택된 적응 세트에 대한 매니페스트 파일의 다른 부분을 취출하고, 선택된 그룹의 리프리젠테이션을 선택하며, 매니페스트 파일의 다른 부분을 이용하여 선택된 리프리젠테이션의 데이터를 취출할 수도 있다. 또한, 클라이언트 디바이스는, 매니페스트 파일의 다른 부분, 즉, 선택된 적응 세트에 특정된 부분을 이용하여, 변화하는 네트워크 대역폭에 적응할 수도 있다.
미디어 콘텐츠의 리프리젠테이션들의 세그먼트들과 같은 비디오 파일들은 ISO 기반 미디어 파일 포맷, 확장가능 비디오 코딩 (Scalable Video Coding; SVC) 파일 포맷, 어드밴스드 비디오 코딩 (Advanced Video Coding; AVC) 파일 포맷, 3 세대 파트너십 프로젝트 (Third Generation Partnership Project; 3GPP) 파일 포맷, 및/또는 멀티뷰 비디오 코딩 (Multiview Video Coding; MVC) 파일 포맷, 또는 다른 유사한 비디오 파일 포맷들 중 임의의 것에 따라 캡슐화된 비디오 데이터에 따를 수도 있다.
ISO 기반 미디어 파일 포맷은 프리젠테이션에 대한 타이밍된 미디어 정보를, 그 미디어의 상호 교환, 관리, 편집, 및 제시를 용이하게 하는 유연하고 확장가능한 포맷에 포함하도록 설계된다. ISO 기반 미디어 파일 포맷 (ISO/IEC 14496-12:2004) 은 MPEG-4 Part-12 에서 특정되고, 이 MPEG-4 Part-12 는 시간-기반 미디어 파일들에 대한 일반적인 구조를 규정한다. ISO 기반 미디어 파일 포맷은 H.264/MPEG-4 AVC 비디오 압축을 위해 지원하도록 규정되는 AVC 파일 포맷 (ISO/IEC 14496-15), 3GPP 파일 포맷, SVC 파일 포맷, 및 MVC 파일 포맷과 같은 패밀리 내의 다른 파일 포맷들에 대한 기초로서 이용된다. 3GPP 파일 포맷 및 MVC 파일 포맷은 AVC 파일 포맷의 확장들이다. ISO 기반 미디어 파일 포맷은 미디어 데이터, 예컨대, 오디오-시각적 프리젠테이션들의 타이밍된 시퀀스에 대한 타이밍, 구조, 및 미디어 정보를 포함한다. 파일 구조는 오브젝트-지향적일 수도 있다. 파일은 기본 오브젝트들로 매우 간단하게 분해될 수 있고, 오브젝트들의 구조는 이들의 타입으로부터 암시된다.
ISO 기반 미디어 파일 포맷 (및 이들의 확장들) 에 따르는 파일들은 "박스들" 이라고 불리는 오브젝트들의 시리즈로서 형성될 수도 있다. ISO 기반 미디어 파일 포맷 내의 데이터는, 다른 데이터가 그 파일 내에 포함될 필요가 없으며 그 파일 내의 박스들 외부에 데이터가 존재할 필요가 없게 하도록 박스들 내에 포함될 수도 있다. 이것은 특정의 파일 포맷에 의해 요구되는 임의의 초기 서명을 포함한다. "박스" 는 고유 타입 식별자 및 길이에 의해 규정되는 오브젝트-지향적 빌딩 블록일 수도 있다. 통상적으로, 프리젠테이션이 하나의 파일 내에 포함되고, 미디어 프리젠테이션은 자기 포함형 (self-contained) 이다. 무비 컨테이너 (무비 박스) 는 미디어의 메타데이터를 포함할 수도 있고, 비디오 및 오디오 프레임들은 미디어 데이터 컨테이너 내에 포함될 수도 있으며 다른 파일들 내에 있을 수 있다.
리프리젠테이션 (모션 시퀀스) 은, 때때로 세그먼트들이라고 지칭되는 수 개의 파일들 내에 포함될 수도 있다. 타이밍 및 프레이밍 (포지션 및 사이즈) 정보는 일반적으로 ISO 기반 미디어 파일 내에 있으며 부수적인 파일들은 본질적으로 임의의 포맷을 이용할 수도 있다. 이러한 프리젠테이션은 그 프리젠테이션을 포함하는 시스템에 '국지적' 일 수도 있고, 또는 네트워크 또는 다른 스트림 전달 메커니즘을 통해 제공될 수도 있다.
옵션적인 메타데이터 트랙이 각각의 트랙을 자신이 가지는 "관심있는 특성" 에 태깅 (tag) 하기 위해 이용될 수 있는데, 이에 대해 그 값 (예를 들어, 그의 비트 레이트, 스크린 사이즈, 또는 언어) 은 그 그룹의 다른 멤버들과는 상이할 수도 있다. 트랙 내의 몇 개의 샘플들은 특수한 특성들을 가질 수도 있거나 또는 개별적으로 식별될 수도 있다. 이러한 특성의 하나의 예는 동기화 포인트 (종종 비디오 I-프레임) 이다. 이러한 포인트들은 각 트랙 내의 특수한 테이블에 의해 식별될 수도 있다. 더 일반적으로는, 트랙 샘플들 간의 의존성들의 성질도 또한 메타데이터를 이용하여 문서화될 수 있다. 메타데이터는 비디오 트랙과 매우 유사하게 파일 포맷 샘플들의 시퀀스로서 구조화될 수 있다. 이러한 트랙은 메타데이터 트랙이라고 지칭될 수도 있다. 각각의 메타데이터 샘플은 메타데이터 진술 (metadata statement) 로서 구조화될 수도 있다. 대응하는 파일-포맷 샘플 또는 이것의 구성 샘플들에 관해 질문될 수 있는 다양한 질문들에 대응하는 진술들의 다양한 종류들이 존재한다.
미디어가 스트리밍 프로토콜을 통해 전달될 때, 미디어는 파일 내에서 그것이 표현되는 방식으로부터 변환될 필요가 있을 수도 있다. 이것의 하나의 예는 미디어가 실시간 전송 프로토콜 (Real-Time Transport Protocol; RTP) 을 통해 송신될 때이다. 예를 들어, 이 파일에서 비디오의 각각의 프레임은 파일-포맷 샘플로서 인접하여 저장된다. RTP 에서는, 이용되는 코덱에 특정한 패킷화 규칙들이 이러한 프레임들을 RTP 패킷들에 배치하기 위해 준수되어야 한다. 스트리밍 서버는 실행-시 (run-time) 에 이러한 패킷화를 계산하도록 구성될 수도 있다. 그러나, 스트리밍 서버들의 보조에 대한 지원이 존재한다.
본 개시물의 기법들은, 예를 들어, HTTP 를 통한 동적 적응형 스트리밍 (dynamic adaptive streaming over HTTP; DASH) 에 따르는 HTTP 스트리밍과 같은 네트워크 스트리밍 프로토콜들에 적용가능할 수도 있다. HTTP 스트리밍에서는, 자주 이용되는 동작들은 GET 및 부분 GET 을 포함한다. GET 동작은 주어진 유니폼 리소스 로케이터 (URL) 또는 다른 식별자, 예를 들어, URI 와 연관된 전체 파일을 취출한다. 부분 GET 동작은 바이트 범위를 입력 파라미터로서 수신하고 수신된 바이트 범위에 대응하는 파일의 바이트들의 연속적인 번호를 취출한다. 따라서, 부분 GET 동작이 하나 이상의 개별 무비 프래그먼트들을 획득할 수 있기 때문에, 무비 프래그먼트들은 HTTP 스트리밍을 위해 제공될 수도 있다. 무비 프래그먼트에서, 상이한 트랙들의 수 개의 트랙 프래그먼트들이 존재할 수 있다는 것에 주목한다. HTTP 스트리밍에서는, 미디어 리프리젠테이션은 클라이언트에게 액세스가능한 데이터의 구조화된 콜렉션일 수도 있다. 클라이언트는 미디어 데이터 정보를 요청 및 다운로드하여 스트리밍 서비스를 사용자에게 제시할 수도 있다.
HTTP 스트리밍을 이용하여 3GPP 데이터를 스트리밍하는 예에서는, 멀티미디어 콘텐츠의 비디오 및/또는 오디오 데이터에 대한 다수의 리프리젠테이션들이 존재할 수도 있다. 이러한 리프리젠테이션들의 매니페스트는 미디어 프리젠테이션 디스크립션 (MPD) 데이터 구조 내에 규정될 수도 있다. 미디어 리프리젠테이션은 HTTP 스트리밍 클라이언트 디바이스에게 액세스가능한 데이터의 구조화된 콜렉션에 대응할 수도 있다. HTTP 스트리밍 클라이언트 디바이스는 미디어 데이터 정보를 요청 및 다운로드하여 스트리밍 서비스를 클라이언트 디바이스의 사용자에게 제시할 수도 있다. 미디어 리프리젠테이션은 MPD 데이터 구조에서 설명될 수도 있는데, 이것은 MPD 의 업데이트들을 포함할 수도 있다.
미디어 콘텐츠는 하나 이상의 기간들의 시퀀스를 포함할 수도 있다. 기간들은 MPD 내의 Period 엘리먼트에 의해 규정될 수도 있다. 각각의 기간은 속성 start 를 MPD 내에 가질 수도 있다. MPD 는 각 기간에 대하여 start 속성 및 availableStartTime 속성을 포함할 수도 있다. 라이브 서비스들에 대해서는, 기간의 start 속성 및 MPD 속성 availableStartTime 의 합이 UTC 포맷 내의 기간의 가용 시간, 특히, 대응하는 기간 내의 각 리프리젠테이션의 제 1 미디어 세그먼트 (Media Segment) 를 특정할 수도 있다. 주문형 (on-demand) 서비스들에 대해서는, 제 1 기간의 start 속성은 0 일 수도 있다. 임의의 다른 기간에 대해, start 속성은 제 1 기간의 시작 시간에 대한 대응하는 기간의 시작 시간 간의 시간 오프셋을 특정할 수도 있다. 각각의 기간은 다음 기간의 시작시까지, 또는 최후 기간의 경우에는 미디어 프리젠테이션의 끝까지 연장될 수도 있다. 기간 시작 시간들은 정밀할 수도 있다. 이들은 모든 이전 기간들의 미디어의 재생으로부터 유발되는 실제 타이밍을 반영할 수도 있다.
각각의 기간은 동일한 미디어 콘텐츠에 대한 하나 이상의 리프리젠테이션들을 포함할 수도 있다. 리프리젠테이션은 오디오 또는 비디오 데이터의 다수의 대안적인 인코딩된 버전들 중 하나일 수도 있다. 리프리젠테이션들은 다양한 특성들, 예컨대, 인코딩 타입들에 의해 상이할 수도 있는데, 예를 들어, 비트레이트, 해상도, 및/또는 비디오 데이터에 대한 코덱 및 비트레이트, 언어, 및/또는 오디오 데이터에 대한 코덱에 의해 상이할 수도 있다. 리프리젠테이션이라는 용어는, 멀티미디어 콘텐츠의 특정 기간에 대응하며 특정한 방식으로 인코딩되는, 인코딩된 오디오 또는 비디오 데이터의 섹션을 지칭하기 위해 사용될 수도 있다.
특정 기간의 리프리젠테이션들은 그룹으로 지정될 수도 있는데, 이것은 MPD 내에서 그룹 속성에 의해 나타낼 수도 있다. 동일한 그룹 내의 리프리젠테이션들은 일반적으로 서로에 대해 대안들 (alternatives) 인 것으로 간주된다. 예를 들어, 특정 기간에 대한 비디오 데이터 각각의 리프리젠테이션은 동일한 그룹으로 지정됨으로써, 디코딩을 위해 리프리젠테이션들 중 임의의 것이 선택되어 대응하는 기간에 대한 멀티미디어 콘텐츠의 비디오 데이터를 디스플레이할 수도 있도록 할 수도 있다. 일부 예들에서, 하나의 기간 내의 미디어 콘텐츠는, 존재할 경우 그룹 0 으로부터의 하나의 리프리젠테이션, 또는 각 비-제로 그룹으로부터의 최대 하나의 리프리젠테이션의 조합 중 어느 하나에 의해 표현될 수도 있다. 기간의 각 리프리젠테이션에 대한 타이밍 데이터는 그 기간의 시작 시간에 상대적으로 나타낼 수도 있다.
리프리젠테이션은 하나 이상의 세그먼트들을 포함할 수도 있다. 각각의 리프리젠테이션은 초기화 세그먼트를 포함할 수도 있고, 또는 리프리젠테이션의 각각의 세그먼트는 자체-초기화할 수도 있다. 존재할 경우에는, 초기화 세그먼트는 그 리프리젠테이션에 액세스하기 위한 초기화 정보를 포함할 수도 있다. 일반적으로, 초기화 세그먼트는 미디어 데이터를 포함하지 않는다. 세그먼트는 식별자, 예컨대, 유니폼 리소스 로케이터 (URL) 에 의해 고유하게 참조될 수도 있다. MPD 는 각각의 세그먼트에 대한 식별자들을 제공할 수도 있다. 또한, 일부 예들에서, MPD 는 range 속성의 형태로 바이트 범위들을 제공할 수도 있는데, 이것은 URL, 또는 URI 에 의해 액세스가능한 파일 내의 세그먼트에 대한 데이터에 대응할 수도 있다.
또한, 각각의 리프리젠테이션은 하나 이상의 미디어 컴포넌트들을 포함할 수도 있으며, 여기서 각각의 미디어 컴포넌트는 개별적인 미디어 타입, 예컨대, 오디오, 비디오, 및/또는 (예를 들어, 자막 방송 (closed captioning) 을 위한) 타이밍된 텍스트의 인코딩된 버전에 대응할 수도 있다. 미디어 컴포넌트들은 하나의 리프리젠테이션 내의 연속적 미디어 세그먼트들의 경계들에 걸쳐서 시간-연속적일 수도 있다.
통상적으로, DASH 표준에 따르는 세그먼트는 일반적으로, (1) 고정된 헤더, (2) 데이터 유닛들에 대한 포인터들의 테이블, 및 (3) 데이터 유닛들 자체를 포함하는 3개의 부분들을 갖는다. 일 예에서, 세그먼트는 아래에 나타낸 표 1 에 따라 형성될 수도 있다:
표 1 - 미디어 데이터의 세그먼트
헤더
고정된 테이블 헤더
포인터들의 테이블
- 데이터 유닛 1 의 오프셋 = 10
- 데이터 유닛 2 의 오프셋 = 100
- 데이터 유닛 N 의 오프셋 = ...
데이터 유닛 1
데이터 유닛 2...
데이터 유닛 N
통상적으로, 세그먼트를 송신하는 것을 담당하는 디바이스 (예를 들어, 서버 디바이스) 는 모든 데이터 유닛들의 사이즈들이 알려질 때까지 세그먼트 헤더를 송신할 수 없어서, 이 디바이스는 포인터들의 테이블을 적절히 구성할 수 있다. 이에 따라, 서버 디바이스는 일반적으로 데이터 유닛들 및 포인터들을 어셈블링하고, 헤더를 발생시키며, 완전히 형성된 세그먼트를 단일 유닛으로서 송신한다. 대안적으로, 부분 GET 요청들에 응답하여, 서버는 세그먼트의 부분들 (예를 들어, 특정된 바이트 범위들) 을 송신할 수도 있다. 그러나, 본 개시물의 기법들 이외에, 서버 디바이스는, 세그먼트가 완전히 형성된 후에, 예를 들어, 통상적으로 세그먼트의 끝에 배치되는 미디어 프래그먼트 랜덤 액세스 (media fragment random access; MFRA) 가 구성된 후에, 부분 GET 요청들을 수신할 것이다. 즉, 클라이언트 디바이스가 부분 GET 요청을 제출하기 위해, 클라이언트 디바이스는, 세그먼트의 특정 부분들의 위치들의 표시자들, 예를 들어, 순간 디코더 리프레시 (instantaneous decoder refresh; IDR) 픽처들과 같은 특정 타입의 네트워크 추상화 계층 (network abstraction layer; NAL) 유닛들의 바이트 위치들의 표시들을 갖는 MFRA 박스, 또는 유사한 데이터 구조의 데이터에 액세스할 필요가 있을 것이다.
또한, 미디어 데이터의 세그먼트를 수신하는 디바이스 (예를 들어, 클라이언트 디바이스) 는 통상적으로, 세그먼트 헤더 및 모든 데이터 유닛들이 수신될 때까지 세그먼트를 프로세싱할 수 없다. 이에 따라, 클라이언트 디바이스는 일반적으로, 세그먼트를 디코딩하고 디스플레이하기 전에 (예를 들어, 전체 헤더, 포인터들의 테이블, 및 데이터 유닛들을 가진) 완전히 형성된 세그먼트를 수신한다. 대안적으로, 클라이언트 디바이스는, 상술된 바와 같이, MFRA 박스의 데이터를 이용하여 세그먼트의 부분들 (예를 들어, 하나 이상의 특정된 바이트 범위들) 을 취출할 수도 있다. 그러나, 또 다시, 본 개시물의 기법들 이외에, 클라이언트 디바이스들에 의해 세그먼트의 특정 바이트 범위들을 액세스하는 것은, 세그먼트가 완전히 형성된 후에만 수행된다.
네트워크를 통해 세그먼트를 송신하기 전에 전체 세그먼트가 형성되는 (그리고 디코딩 전에 수신되는) 예들에서, 세그먼트의 송신과 세그먼트의 디코딩/재생 사이의 하나의 세그먼트 레이턴시가 도입된다. 즉, 서버 디바이스는 전체 세그먼트를 완전히 형성하고, 그 세그먼트를 클라이언트 디바이스에 송신한다. 클라이언트 디바이스는 완전히 형성된 세그먼트를 수신하고, 헤더 데이터 및 포인터들을 이용하여 전체 세그먼트를 디코딩 및 디스플레이한다. 이에 따라, 서버 디바이스가 전체 세그먼트를 형성하고 클라이언트 디바이스가 재생 전에 전체 세그먼트를 수신하기 때문에, 전체 세그먼트의 레이턴시가 도입된다.
일 예에서, 예시의 목적들을 위해, 세그먼트는 재생 시간에 있어서 1 초의 비디오 데이터를 포함할 수도 있다. 즉, 서버 디바이스는 전체 1 초의 비디오 데이터를 패키징 (예를 들어, 인코딩) 하고 그 초-길이의 세그먼트를 클라이언트 디바이스에게 송신할 수도 있다. 그 후에, 클라이언트 디바이스는 그 초-길이의 세그먼트의 데이터 유닛들 전부와 헤더를 수신하고, 세그먼트를 디스플레이하기 전에 전체 세그먼트를 디코딩한다. 이에 따라, 클라이언트 디바이스가 전체 세그먼트가 수신될 때까지 디코딩/재생을 시작하지 않기 때문에, 1 초 레이턴시가 도입될 수도 있다.
일반적으로, 본 개시물의 양태들은, 미디어 데이터의 하나 이상의 세그먼트들을 스트리밍하는 것과 연관된 레이턴시를 감소시키는 것에 관한 것이다. 일 예에서, 본 개시물의 기법들은, 미디어 데이터의 세그먼트에 대한 송신 스케줄을 최적화하는 것을 포함한다. 즉, 본 개시물의 양태들에 따르면, 네트워크를 통해 세그먼트를 송신하는 것을 담당하는 디바이스 (예를 들어, 아래의 도 1 에 대해 더 상세히 설명되는 바와 같이, 서버 디바이스) 는 미디어 데이터의 세그먼트를, 네트워크를 통해 송신하기에 적합한 복수의 서브-세그먼트들로 분할할 수도 있다. 이 예에서, 서버 디바이스는 미디어 데이터의 서브-세그먼트를, 이 서브-세그먼트가 형성되자마자 송신할 수도 있다. 즉, 서버 디바이스는 서브-세그먼트를 송신하기 전에 다수의 서브-세그먼트들이 형성되기를 기다릴 필요가 없다. 또한, 서버 디바이스는 서브-세그먼트를 송신하기 전에 서브-세그먼트 전부에 대한 헤더 데이터가 발생되기를 기다릴 필요가 없다.
일부 예들에서, 이러한 서브-세그먼트들은 독립적으로 디코딩가능하지 않을 수도 있다. 즉, 하나의 서브-세그먼트는, 이전 서브-세그먼트에 후속하는 서브-세그먼트에 대응할 수도 있는 다른 서브-세그먼트에 포함된 참조 정보 없이 반드시 디코딩될 필요는 없을 수도 있다. 다시 말해서, 서브-세그먼트는 미래 서브-세그먼트를 참조할 수도 있다. 그러나, 서브-세그먼트들은, 독립적으로 디코딩가능한 특정 정보를 포함할 수도 있다. 예를 들어, 서브-세그먼트들은 독립적으로 디코딩가능한 비디오 데이터의 하나 이상의 I-프레임들을 포함할 수도 있다.
본 개시물의 양태들에 따르면, 서브-세그먼트는 서브-세그먼트 헤더 및 하나 이상의 데이터 유닛들을 포함할 수도 있다. 서브-세그먼트 헤더는 서브-세그먼트의 데이터 유닛들을 가리키는 포인터들의 테이블을 포함할 수도 있다. 그러나, 위에 언급된 바와 같이, 서브-세그먼트의 데이터 유닛들은 이전 서브-세그먼트 또는 미래 서브-세그먼트를 참조할 수도 있다. 서브-세그먼트의 데이터 유닛은, 이전 또는 미래 서브-세그먼트의 프레임 (또는 슬라이스) 을 참조하는 P 또는 B 프레임 (또는 P 또는 B 슬라이스) 를 포함할 수도 있다. 즉, 서브-세그먼트의 데이터 유닛은, 동일한 세그먼트의 이후 서브-세그먼트의 데이터 유닛과 관련하여 예측될 수도 있다. 이러한 타입의 예측 관계는, 세그먼트의 제 2 서브-세그먼트를 참조하는 세그먼트의 제 1 서브-세그먼트의 데이터 유닛의 하나의 예를 표현한 것이고, 여기서 제 1 서브-세그먼트는 제 2 서브-세그먼트 이전에 클라이언트 디바이스에 의해 수신될 수도 있다.
일부 예들에서, 각각의 서브-세그먼트는 서브-세그먼트 헤더를 포함할 수도 있다. 예를 들어, 서브-세그먼트 헤더는 "고정된" 부분, 예컨대, 비디오/오디오 인코딩 포맷, 품질 레벨 등을 포함할 수도 있다. 일부 경우들에서, 세그먼트들의 헤더 데이터뿐만 아니라, 서브-세그먼트 헤더들의 데이터는, 세그먼트들 및/또는 서브-세그먼트들 사이에서 변화하지 않을 수도 있다. 이에 따라, 본 개시물의 일부 양태들에서, 서버 디바이스는 헤더 데이터가 변화하였는지 여부를 나타내는 플래그의 값을 설정할 수도 있고, 클라이언트 디바이스는 그 값을 해석할 수도 있다. 예를 들어, 서버 디바이스는, 세그먼트 또는 서브-세그먼트 헤더가 이전 세그먼트 또는 이전 서브-세그먼트과 실질적으로 유사한 또는 동일한 데이터를 포함한다는 것을 나타내기 위해 플래그를 "0" 으로 설정할 수도 있다. 서버 디바이스는, 세그먼트 또는 서브-세그먼트 헤더가 변화하였다는 것을 나타내기 위해 플래그를 "1" 로 설정할 수도 있다. 또한, 클라이언트 디바이스는 이러한 플래그를 수신하고, 헤더 데이터가 하나의 세그먼트로부터 다른 세그먼트로 변화하였는지 여부를 해석할 수도 있다.
비디오 데이터의 복수의 서브-세그먼트들을 발생시키고 이 서브-세그먼트들이 형성/인코딩되자마자 서브-세그먼트들을 송신하는 것은, 레이턴시 (예를 들어, 스트리밍 환경에서 미디어 데이터를 송신, 수신, 디코딩, 및/또는 디스플레이하는 것과 연관된 레이턴시) 를 감소시킬 수도 있다. 예를 들어, 클라이언트 디바이스는 서브-세그먼트의 수신시 서브-세그먼트의 적어도 일 부분을 즉시 디코딩하기 시작할 수도 있다. 즉, 서브-세그먼트의 특정 데이터 유닛들은 아직 수신되지 않은 다른 서브-세그먼트들의 데이터 유닛들을 참조할 수도 있지만, 클라이언트 디바이스는 데이터 유닛들 중 일부 (예를 들어, 서브-세그먼트에 포함된 I-프레임들) 를 즉시 디코딩하기 시작할 수도 있다. 또한, 클라이언트 디바이스는, 서브-세그먼트들에 통상적으로 후속하는 세그먼트에 대한 헤더의 수신시 전체 세그먼트를 디코딩하여 끝낼 준비가 되어 있다.
일부 예들에서, 본 개시물의 양태들에 따라 복수의 서브-세그먼트들을 발생시키고 서브-세그먼트가 형성되자마자 서브-세그먼트를 송신하는 것은, 전체 세그먼트 지속기간을 단순히 감소시키는 것보다 더 효율적일 수도 있다. 즉, 예시의 목적들을 위해 위에 제공된 예에서, 세그먼트는 1 초의 비디오 데이터를 포함할 수도 있는데, 이는 전체 1 초의 레이턴시를 도입시킬 수도 있다. 즉, 세그먼트가 송신 전에 완전히 형성되고, 세그먼트가 재생 전에 완전히 수신 및 디코딩되는 경우에는, 전체 1 초의 레이턴시가 도입될 수도 있다. 이러한 레이턴시를 감소시키는 하나의 방법은 세그먼트의 전체 지속기간을 감소시키는 것일 수도 있다. 즉, 1 초 세그먼트를 인코딩 및 송신하기보다는, 서버 디바이스는 500 밀리초 세그먼트를 인코딩 및 송신할 수도 있다. 이에 따라, 이 예에서는, 종단간 레이턴시가 1 초에서 500 밀리초로 감소될 수도 있다.
그러나, 세그먼트 지속기간을 감소시키는 것에 의해 레이턴시를 감소시키는 것은, 비트스트림에서의 오버헤드 데이터의 비율을 증가시킬 수도 있다 (예를 들어, 그에 의해 효율이 감소한다). 예를 들어, 위에 언급된 바와 같이, 각각의 세그먼트는, 세그먼트 지속기간에 발생된 다수의 비디오/오디오 샘플들에 의해 사이즈가 증가하는 부분뿐만 아니라, 고정된 부분을 포함하는 헤더를 포함한다. 세그먼트 지속기간이 감소함에 따라, 헤더의 고정된 부분은 데이터의 송신과 연관된 오버헤드의 (비례적으로) 보다 큰 부분에 기여하기 시작한다. 특정 비트 레이트를 고려하면, 실제 미디어 데이터에 대해 보다 적은 비트들이 이용될 수도 있기 때문에, 오버헤드가 증가하는 것은 전체 효율을 감소시킨다.
또한, 일부 예들에서, 미디어 데이터의 세그먼트는 다른 세그먼트에 대한 참조를 피하도록 구성될 수도 있다. 즉, 일부 예들에서, 멀티미디어 콘텐츠의 각 세그먼트는 다른 세그먼트들의 데이터를 참조하지 않아서 (예를 들어, 하나의 세그먼트의 P 프레임 또는 B 프레임은 다른 세그먼트의 프레임을 참조하지 않아서), 독립적으로 디코딩가능하게 될 수도 있다. 이에 따라, 이러한 예들에서, 세그먼트 지속기간을 감소시킬 때, I-프레임들의 수가 증가되는 한편, P-프레임들 및 B-프레임들의 수는 감소된다. 비례적으로 보다 많은 I-프레임들을 갖는 비디오 데이터는, 예를 들어, 보다 큰 비율의 P- 및/또는 B-프레임들을 갖는 비디오 데이터만큼 시간적 리던던시들을 활용하지 않는다. 따라서, 주어진 평균 레이트에 대해, 디스플레이된 비디오 데이터의 지각 품질과 I-프레임들의 수 사이에 역전 관계가 존재할 수도 있다. 즉, 가변 비트 레이트를 이용하여 코딩된 비디오 데이터는 일반적으로, 보다 일정한 비트 레이트를 이용하여 코딩된 비디오 데이터에 대한 것보다 더 높은 지각된 품질을 나타낸다.
이에 따라, 본 개시물의 양태들은, (주어진 레이트를 갖는) 주어진 세그먼트 지속기간을 유지하면서, 또한 레이턴시를 감소시키기 위해 이용될 수도 있다. 즉, 상술된 1 초 세그먼트 지속기간 예에서, 본 개시물의 양태들은, 1 초 세그먼트 지속기간을 유지하면서, 또한 세그먼트를 송신 및 디코딩/디스플레이하는 것과 연관된 레이턴시를 1 초보다 작게 감소시키는 것에 관한 것이다. 이러한 방법으로, 미디어 데이터의 지각된 품질이 유지되면서, 또한 레이턴시가 감소될 수도 있다.
본 개시물의 기법들은 DASH 또는 브로드캐스트 네트워크 송신을 통한 다른 스트리밍 네트워크 프로토콜들에 따라 멀티미디어 데이터를 송신하기 위해 이용될 수도 있다. 예를 들어, 서버 디바이스는 브로드캐스트를 통한 하나 이상의 클라이언트 디바이스들에게의 송신을 위한 복수의 서브-세그먼트들을 갖는 세그먼트들을 준비할 수도 있다. 일부 예들에서, 클라이언트 디바이스는, 상술된 바와 같이, 세그먼트의 서브-세그먼트들을 포함하는 브로드캐스트 네트워크 송신물을 수신할 수도 있다.
도 1 은 네트워크를 통해 미디어 데이터를 스트리밍하기 위한 기법들을 구현하는 일 예시적인 시스템 (10) 을 예시한 블록도이다. 이 예에서, 시스템 (10) 은 콘텐츠 준비 디바이스 (20), 서버 디바이스 (60), 및 클라이언트 디바이스 (40) 를 포함한다. 클라이언트 디바이스 (40) 및 서버 디바이스 (60) 는, 인터넷을 포함할 수도 있는 네트워크 (74) 에 의해 통신가능하게 커플링된다. 일부 예들에서, 콘텐츠 준비 디바이스 (20) 및 서버 디바이스 (60) 는 네트워크 (74) 또는 다른 네트워크에 의해서도 역시 커플링될 수도 있으며, 또는 직접 통신가능하게 커플링될 수도 있다. 일부 예들에서, 콘텐츠 준비 디바이스 (20) 및 서버 디바이스 (60) 는 동일한 디바이스를 포함할 수도 있다.
도 1 의 예에서의 콘텐츠 준비 디바이스 (20) 는 오디오 소스 (22) 및 비디오 소스 (24) 를 포함한다. 오디오 소스 (22) 는, 예를 들어, 오디오 인코더 (26) 에 의해 인코딩될 캡쳐된 오디오 데이터를 나타내는 전기 신호들을 생성하는 마이크로폰을 포함할 수도 있다. 대안적으로, 오디오 소스 (22) 는 이전에 기록된 오디오 데이터를 저장하는 저장 매체, 컴퓨터화된 합성기 (computerized synthesizer) 와 같은 오디오 데이터 발생기, 또는 오디오 데이터의 임의의 다른 소스를 포함할 수도 있다. 비디오 소스 (24) 는 비디오 인코더 (28) 에 의해 인코딩될 비디오 데이터를 생성하는 비디오 카메라, 이전에 기록된 비디오 데이터로 인코딩된 저장 매체, 비디오 데이터 발생 유닛, 예컨대, 컴퓨터 그래픽 소스, 또는 비디오 데이터의 임의의 다른 소스를 포함할 수도 있다. 콘텐츠 준비 디바이스 (20) 는 모든 예들에서 반드시 서버 디바이스 (60) 에 통신가능하게 커플링되는 것은 아니며, 서버 디바이스 (60) 에 의해 판독되는 개별적인 매체에 멀티미디어 콘텐츠를 저장할 수도 있다.
원시 (raw) 오디오 및 비디오 데이터는 아날로그 또는 디지털 데이터를 포함할 수도 있다. 아날로그 데이터는 오디오 인코더 (26) 및/또는 비디오 인코더 (28) 에 의해 인코딩되기 전에 디지털화될 수도 있다. 오디오 소스 (22) 는 송화 (speaking) 참가자가 말을 하는 동안 송화 참가자로부터 오디오 데이터를 획득할 수도 있고, 비디오 소스 (24) 는 동시에 송화 참가자의 비디오 데이터를 획득할 수도 있다. 다른 예들에서, 오디오 소스 (22) 는 저장된 오디오 데이터를 포함하는 컴퓨터 판독가능 저장 매체를 포함할 수도 있고, 비디오 소스 (24) 는 저장된 비디오 데이터를 포함하는 컴퓨터 판독가능 저장 매체를 포함할 수도 있다. 이러한 방식으로, 본 개시물에 설명된 기법들은 라이브, 스트리밍, 실시간 오디오 및 비디오 데이터에 또는 아카이브된 (archived) 미리 기록된 오디오 및 비디오 데이터에 적용될 수도 있다.
비디오 프레임들에 대응하는 오디오 프레임들은 일반적으로 비디오 프레임들 내에 포함되는 비디오 소스 (24) 에 의해 캡처된 비디오 데이터와 동시에 오디오 소스 (22) 에 의해 캡처되었던 오디오 데이터를 포함하는 오디오 프레임들이다. 예를 들어, 송화 참가자가 일반적으로 송화에 의해 오디오 데이터를 생성하는 동안, 오디오 소스 (22) 는 오디오 데이터를 캡처하고, 비디오 소스 (24) 는 동시에, 즉, 오디오 소스 (22) 가 오디오 데이터를 캡처하고 있는 동안, 송화 참가자의 비디오 데이터를 캡처한다. 그래서, 오디오 프레임이 하나 이상의 특정 비디오 프레임들에 시간적으로 대응할 수 있다. 이에 따라, 오디오 프레임이 비디오 프레임에 대응한다는 것은 일반적으로 오디오 데이터 및 비디오 데이터가 동시에 캡처된 상황에 해당하고 그 상황 동안 오디오 프레임 및 비디오 프레임은 동시에 캡처된 오디오 데이터 및 비디오 데이터를 각각 포함한다.
일부 예들에서, 오디오 인코더 (26) 는 인코딩된 오디오 프레임에 대한 오디오 데이터가 기록된 시간을 나타내는 각 인코딩된 오디오 프레임 내의 타임스탬프를 인코딩할 수도 있으며, 이와 유사하게, 비디오 인코더 (28) 는 인코딩된 비디오 프레임에 대한 비디오 데이터가 기록된 시간을 나타내는 각 인코딩된 비디오 프레임 내의 타임스탬프를 인코딩할 수도 있다. 이러한 예들에서, 비디오 프레임에 대응하는 오디오 프레임은 타임스탬프를 포함하는 오디오 프레임 및 동일한 타임스탬프를 포함하는 비디오 프레임을 포함할 수도 있다. 콘텐츠 준비 디바이스 (20) 는, 오디오 인코더 (26) 및/또는 비디오 인코더 (28) 가 타임스탬프들을 생성하거나 또는 이러한 오디오 소스 (22) 및 비디오 소스 (24) 가 오디오 및 비디오 데이터를 각각 타임스탬프와 연관시키는데 이용할 수도 있는, 내부 클록을 포함할 수도 있다.
일부 예들에서, 오디오 소스 (22) 는 오디오 데이터가 기록된 시간에 대응하는 데이터를 오디오 인코더 (26) 에 전송할 수도 있고, 비디오 소스 (24) 는 비디오 데이터가 기록된 시간에 대응하는 데이터를 비디오 인코더 (28) 에 전송할 수도 있다. 일부 예들에서, 오디오 인코더 (26) 는 인코딩된 오디오 데이터 내의 시퀀스 식별자를 인코딩하여 인코딩된 오디오 데이터의 상대적인 시간적 순서를 나타낼 수도 있지만 반드시 이 오디오 데이터가 기록된 절대 시간을 나타낼 필요가 없으며, 이와 유사하게, 비디오 인코더 (28) 는 또한 시퀀스 식별자들을 이용하여 인코딩된 비디오 데이터의 상대적인 시간적 순서를 나타낼 수도 있다. 이와 유사하게, 일부 예들에서, 시퀀스 식별자는 타임스탬프와 매핑되거나 또는 그렇지 않으면 상관될 수도 있다.
오디오 인코더 (26) 는 일반적으로 인코딩된 오디오 데이터의 스트림을 생성하고, 비디오 인코더 (28) 는 인코딩된 비디오 데이터의 스트림을 생성한다. 데이터의 각각의 개별 스트림 (오디오든지 또는 비디오든지 간에) 은 기본 스트림이라고 지칭될 수도 있다. 기본 스트림은 리프리젠테이션의 단일의, 디지털적으로 코딩된 (가능하다면 압축된) 컴포넌트이다. 예를 들어, 리프리젠테이션의 코딩된 비디오 또는 오디오 부분이 기본 스트림일 수 있다. 기본 스트림은, 비디오 파일 내에 캡슐화되기 전에 패킷화된 기본 스트림 (packetized elementary stream; PES) 으로 컨버팅될 수도 있다. 동일한 리프리젠테이션 내에서, 스트림 ID 가 하나의 기본 스트림에 속하는 PES-패킷들을 다른 기본 스트림에 속한 것과 구별하기 위해 이용될 수도 있다. 기본 스트림의 데이터의 기본적인 유닛은 패킷화된 기본 스트림 (PES) 패킷이다. 따라서, 코딩된 비디오 데이터는 일반적으로 기본 비디오 스트림들에 대응한다. 이와 유사하게, 오디오 데이터는 하나 이상의 개별적인 기본 스트림들에 대응한다.
많은 비디오 코딩 표준들에서와 같이, H.264/AVC 는 에러 없는 비트스트림들에 대한 신택스, 의미론 (semantics), 및 디코딩 프로세스를 규정하는데, 이들 중 임의의 것은 특정 프로파일 또는 레벨에 따른다. H.264/AVC 는 인코더는 특정하지 않지만, 인코더에는 발생된 비트스트림들이 디코더에 따르는 표준들이라는 것을 보장하는 임무가 주어진다. 비디오 코딩 표준의 맥락에서, "프로파일" 은 알고리즘들, 피처들 (features), 또는 툴들 및 이들에 적용되는 제약들의 서브세트에 대응한다. 예를 들어, H.264 표준에 의해 규정되는 바와 같이, "프로파일" 은 H.264 표준에 의해 특정되는 전체 비트스트림 신택스의 서브세트이다. 예를 들어, "레벨" 은 픽처들의 해상도, 비트 레이트, 및 매크로블록 (MB) 프로세싱 레이트에 관련되는 디코더 메모리 및 연산과 같은 디코더 리소스 소모의 제한들에 대응한다. 프로파일은 profile_idc (프로파일 표시자) 값으로 시그널링될 수도 있는 한편, 레벨은 level_idc (레벨 표시자) 값으로 시그널링될 수도 있다.
예를 들어, H.264 표준은 주어진 프로파일의 신택스에 의해 부과된 경계들 내에서, 디코딩된 픽처들의 특정된 크기와 같은, 비트스트림 내의 신택스 엘리먼트들에 의해 취해진 값들에 의존하여 인코더들 및 디코더들의 성능에 큰 변동을 요구하는 것이 여전히 가능하다는 것을 인식한다. 또한, H.264 표준은, 많은 애플리케이션들에서, 신택스의 모든 가설적 이용들을 특정 프로파일 내에서 다루는 것이 가능한 디코더를 구현하는 것이 실용적이지도 않거나 또는 경제적이지도 않다는 것을 인식한다. 이에 따라, H.264 표준은 "레벨" 을 비트스트림 내의 신택스 엘리먼트들의 값들에 부과된 제약들의 특정된 세트로서 규정한다. 이러한 제약들은 값들에 대한 단순한 제한들일 수도 있다. 대안적으로, 이러한 제약들은 값들의 산술적 조합들 (예를 들어, 픽처 폭 × 픽처 높이 × 초 당 디코딩된 픽처들의 수) 에 대한 제약들의 형태를 취할 수도 있다. 또한, H.264 표준은 개별적인 구현들이 각각의 지원되는 프로파일에 대한 상이한 레벨을 지원할 수도 있다는 것을 제공한다.
프로파일에 따르는 디코더는 그 프로파일에 규정된 모든 피처들을 지원하는 것이 보통이다. 예를 들어, 코딩 피처로서, B-픽처 코딩은 H.264/AVC 의 베이스라인 프로파일 (baseline profile) 에서는 지원되지 않지만, H.264/AVC 의 다른 프로파일들에서는 지원된다. 한 레벨에 따르는 디코더는 그 레벨에 규정된 제한들을 넘어서는 리소스들을 요구하지 않는 임의의 비트스트림을 디코딩하는 것이 가능해야 한다. 상호 해석가능성을 위해 프로파일들 및 레벨들의 규정들이 도움이 될 수도 있다. 예를 들어, 비디오 송신 동안, 전체 송신 세션에 대해 프로파일 및 레벨 규정들의 쌍이 협의되고 합의될 수도 있다. 더 구체적으로는, H.264/AVC 에서, 예를 들어, 레벨은 프로세싱될 필요가 있는 매크로블록들의 수에 대한 제한들, 디코딩된 픽처 버퍼 (decoded picture buffer; DPB) 사이즈, 코딩된 픽처 버퍼 (coded picture buffer; CPB) 사이즈, 수직 모션 벡터 범위, 두 개의 연속하는 MB들 당 모션 벡터들의 최대 수, 그리고 B-블록이 8x8 픽셀들보다 적은 서브-매크로블록 파티션들을 가질 수 있는지 여부를 규정할 수도 있다. 이러한 방식으로, 디코더는 그 디코더가 비트스트림을 적절하게 디코딩하는 것이 가능한지 여부를 결정할 수도 있다.
비디오 압축 표준들, 예컨대, ITU-T H.261, H.262, H.263, MPEG-1, MPEG-2, H.264/MPEG-4 Part 10, 및 새로 등장하는 고효율 비디오 코딩 (High Efficiency Video Coding; HEVC) 표준들은 모션 보상된 시간적 예측을 이용하여 시간적 리던던시를 감소시킨다. 인코더, 예컨대, 비디오 인코더 (28) 는 몇 개의 이전에 인코딩된 픽처들 (또한 여기서는 프레임들이라고도 지칭됨) 로부터 모션 보상된 예측을 이용하여 모션 벡터들에 따라 현재 코딩된 픽처들을 예측할 수도 있다. 통상적인 비디오 코딩에는 3 개의 주된 픽처 타입들이 존재한다. 이들은 인트라 코딩된 픽처 ("I-픽처들" 또는 "I-프레임들"), 예측된 픽처들 ("P-픽처들" 또는 "P-프레임들") 및 양방향 예측된 픽처들 ("B-픽처들" 또는 "B-프레임들") 이다. P-픽처들은 시간적 순서에서 현재 픽처 이전의 참조 픽처를 이용할 수도 있다. B-픽처에서는, B-픽처의 각 블록은 하나 또는 2 개의 참조 픽처들로부터 예측될 수도 있다. 이러한 참조 픽처들은 시간적 순서에서 현재 픽처의 이전에 또는 이후에 위치결정될 수 있다.
파라미터 세트들은 시퀀스 파라미터 세트들 (sequence parameter sets; SPS) 내에 시퀀스-계층 헤더 정보를 포함하고 픽처 파라미터 세트들 (picture parameter sets; PPS) 내에 드물게 변화하는 픽처-계층 헤더 정보를 일반적으로 포함한다. 파라미터 세트들을 이용하면, 이러한 드물게 변화하는 정보는 각각의 시퀀스 또는 픽처에 대하여 반복될 필요가 없다; 그러므로 코딩 효율이 개선될 수도 있다. 또한, 파라미터 세트들의 이용은 헤더 정보의 대역외 송신을 가능하게 하여, 중복 송신들을 필요 없게 하여 에러 내성을 달성할 수도 있다. 대역외 송신 예들에서는, 파라미터 세트 NAL 유닛들은 다른 NAL 유닛들과는 상이한 채널들 상에서 송신된다.
도 1 의 예에서는, 콘텐츠 준비 디바이스 (20) 의 캡슐화 유닛 (30) 은, 코딩된 비디오 데이터를 포함하는 기본 스트림들을 비디오 인코더 (28) 로부터 그리고 코딩된 오디오 데이터를 포함하는 기본 스트림들을 오디오 인코더 (26) 로부터 수신한다. 일부 예들에서는, 비디오 인코더 (28) 및 오디오 인코더 (26) 각각은 인코딩된 데이터로부터 PES 패킷들을 형성하기 위한 패킷화기들을 포함할 수도 있다. 다른 예들에서는, 비디오 인코더 (28) 및 오디오 인코더 (26) 각각은 인코딩된 데이터로부터 PES 패킷들을 형성하기 위한 각각의 패킷화기들과 인터페이싱할 수도 있다. 또 다른 예들에서는, 캡슐화 유닛 (30) 은 인코딩된 오디오 및 비디오 데이터로부터 PES 패킷들을 형성하기 위한 패킷화기를 포함할 수도 있다.
비디오 인코더 (28) 는 멀티미디어 콘텐츠의 비디오 데이터를 다양한 방법으로 인코딩하여, 다양한 비트레이트들에서, 다양한 특성들, 예컨대, 픽셀 해상도들, 프레임 레이트들, 다양한 코딩 표준들에 대한 준수 (conformance), 다양한 코딩 표준들에 대한 다양한 프로파일들 및/또는 프로파일들의 레벨들, (예를 들어, 2차원 또는 3차원 재생을 위한) 하나 또는 다수의 뷰들을 갖는 리프리젠테이션들, 또는 다른 이러한 특성들을 갖는 멀티미디어 콘텐츠의 상이한 리프리젠테이션들을 생성할 수도 있다. 리프리젠테이션은, 본 개시물에서 사용된 바와 같이, 오디오 데이터 및 비디오 데이터의 조합, 예를 들어, 하나 이상의 오디오 기본 스트림 및 하나 이상의 비디오 기본 스트림들을 포함할 수도 있다. 각각의 PES 패킷은 PES 패킷이 속한 기본 스트림을 식별하는 stream_id 를 포함할 수도 있다. 캡슐화 유닛 (30) 은 기본 스트림들을 다양한 리프리젠테이션들의 비디오 파일들로 어셈블링하는 것을 담당한다.
캡슐화 유닛 (30) 은 오디오 인코더 (26) 및 비디오 인코더 (28) 로부터 리프리젠테이션의 기본 스트림들을 위한 PES 패킷들을 수신하고 그 PES 패킷들로부터 대응하는 네트워크 추상화 계층 (NAL) 유닛들을 형성한다. H.264/AVC (Advanced Video Coding) 의 예에서, 코딩된 비디오 세그먼트들은 NAL 유닛들로 조직화되며, 이들은 화상 통화 (video telephony), 저장, 브로드캐스트, 또는 스트리밍과 같은 "네트워크 친화적 (network-friendly)" 비디오 리프리젠테이션 어드레싱 애플리케이션들을 제공한다. NAL 유닛들은 비디오 코딩 계층 (Video Coding Layer; VCL) NAL 유닛들 및 비-VCL NAL 유닛들로 분류될 수 있다. VCL 유닛들은 코어 압축 엔진을 포함할 수도 있고 블록, 매크로블록, 및/또는 슬라이스 레벨 데이터를 포함할 수도 있다. 다른 NAL 유닛들은 비-VCL NAL 단위들일 수도 있다. 일부 예들에서, 일반적으로 주된 코딩된 픽처로서 제시되는, 하나의 시간 인스턴스에서의 코딩된 픽처는, 하나 이상의 NAL 유닛들을 포함할 수도 있는 액세스 유닛에 포함될 수도 있다.
비-VCL NAL 유닛들은 다른 것들 중에서 파라미터 세트 NAL 유닛들 및 SEI NAL 유닛들을 포함할 수도 있다. 파라미터 세트들은 (시퀀스 파라미터 세트들 (SPS) 내의) 시퀀스-레벨 헤더 정보 및 (픽처 파라미터 세트들 (PPS) 내의) 드물게 변화하는 픽처-레벨 헤더 정보를 포함할 수도 있다. 파라미터 세트들 (예를 들어, PPS 및 SPS) 을 이용하면, 드물게 변화하는 정보는 각각의 시퀀스 또는 픽처에 대해 반복될 필요가 없어서, 코딩 효율이 개선될 수도 있다. 또한, 파라미터 세트들의 이용은 중요한 헤더 정보의 대역외 송신을 가능하게 하여, 에러 내성을 위한 중복 송신들에 대한 필요성을 피할 수도 있다. 대역외 송신 예들에서는, 파라미터 세트 NAL 유닛들은 다른 NAL 유닛들, 예컨대, SEI NAL 유닛들과는 상이한 채널들 상에서 송신될 수도 있다.
보충적 향상 정보 (Supplemental Enhancement Information; SEI) 는 코딩된 픽처 샘플들을 VCL NAL 유닛들로부터 디코딩할 필요가 없지만, 디코딩, 디스플레이, 에러 내성, 및 다른 목적들과 관련된 프로세스들에서는 보조할 수도 있는 정보를 포함할 수도 있다. SEI 메시지들은 비-VCL NAL 유닛들 내에 포함될 수도 있다. SEI 메시지들은 몇 개의 표준 사양들의 규범적 (normative) 부분이어서, 표준 준수 디코더 구현에 대해 항상 강제되는 것은 아니다. SEI 메시지들은 시퀀스 레벨 SEI 메시지들 또는 픽처 레벨 SEI 메시지들일 수도 있다. 몇몇 시퀀스 레벨 정보는 SEI 메시지들, 예컨대, SVC 의 예에서는 확장가능성 정보 SEI 메시지들 및 MVC 의 예에서는 뷰 확장가능성 정보 SEI 메시지들에 포함될 수도 있다. 이러한 예시적인 SEI 메시지들은, 예를 들어, 동작 포인트들의 추출 및 동작 포인트들의 특성들에 대한 정보를 운반할 수도 있다. 또한, 캡슐화 유닛 (30) 은, 매니페스트 파일, 예컨대, 리프리젠테이션들의 특성들을 설명하는 미디어 프리젠테이션 디스크립터 (MPD) 를 형성할 수도 있다. 캡슐화 유닛 (30) 은 확장가능 마크업 언어 (XML) 에 따라 MPD 를 포매팅할 수도 있다.
캡슐화 유닛 (30) 은 멀티미디어 콘텐츠의 하나 이상의 리프리젠테이션들에 대한 데이터를 매니페스트 파일 (예를 들어, MPD) 과 함께 출력 인터페이스 (32) 에 제공할 수도 있다. 출력 인터페이스 (32) 는 네트워크 인터페이스 또는 저장 매체에 기입하기 위한 인터페이스, 예컨대, 범용 시리얼 버스 (USB) 인터페이스, CD 또는 DVD 라이터 또는 버너 (burner), 자기적 또는 플래시 저장 매체들에 대한 인터페이스, 또는 미디어 데이터를 저장하거나 송신하기 위한 다른 인터페이스들을 포함할 수도 있다. 캡슐화 유닛 (30) 은 멀티미디어 콘텐츠의 각각의 리프리젠테이션들에 대한 데이터를 출력 인터페이스 (32) 에 제공할 수도 있는데, 이 출력 인터페이스 (32) 는 이 데이터를 네트워크 송신 또는 저장 매체들을 통해 서버 디바이스 (60) 에 전송할 수도 있다. 도 1 의 예에서는, 서버 디바이스 (60) 는, 다양한 멀티미디어 콘텐츠 (64) 를 저장하는 저장 매체 (62) 를 포함할 수도 있고, 이 멀티미디어 콘텐츠 (64) 각각은 각각의 매니페스트 파일 (66) 및 하나 이상의 리프리젠테이션들 (68A 내지 68N (리프리젠테이션들 (68))) 을 포함한다. 일부 예들에서, 출력 인터페이스 (32) 는 또한 데이터를 네트워크 (74) 에 직접 송신할 수도 있다.
일부 예들에서, 본 개시물의 일부 양태들에 따르면, 캡슐화 유닛 (30) 은 여기에 설명된 기법들에 따라 데이터의 서브-세그먼트들을 형성하도록 구성될 수도 있다. 즉, 예를 들어, 캡슐화 유닛 (30) 은 미디어 데이터의 세그먼트를 복수의 서브-세그먼트들로 분할하도록 구성될 수도 있다. 캡슐화 유닛 (30) 은 서브-세그먼트가 형성되자마자 서브-세그먼트를 출력 인터페이스 (32) 에 제공할 수도 있다. 그 후에, 출력 인터페이스 (32) 는 네트워크 (74) 를 통해 서브-세그먼트를 클라이언트 디바이스 (40) 에 전송할 수도 있다.
이러한 예들에서, 캡슐화 유닛 (30) 은 독립적으로 디코딩가능하지 않은 서브-세그먼트들을 발생시킬 수도 있다. 즉, 캡슐화 유닛 (30) 은, 이전 서브-세그먼트에 후속하는 서브-세그먼트에 대응할 수도 있는 다른 서브-세그먼트에 포함된 참조 정보 (예를 들어, 예측 정보) 없이 반드시 디코딩될 필요는 없을 수도 있는 서브-세그먼트를 발생시킬 수도 있다. 후속하는 서브-세그먼트의 예측 정보는, 이 예에서, 이전 서브-세그먼트를 예측하는데 이용되는, 후속하는 서브-세그먼트의 블록들 또는 슬라이스들의 픽셀 데이터를 포함할 수도 있다. 다시 말해서, 캡슐화 유닛 (30) 은, 미래 서브-세그먼트를 참조하는 서브-세그먼트를 형성할 수도 있다.
캡슐화 유닛 (30) 은, 세그먼트에 포함된 서브-세그먼트들 각각에 대한 서브-세그먼트 헤더뿐만 아니라, 세그먼트의 모든 서브-세그먼트들에 적용하는 세그먼트 헤더를 발생시킬 수도 있다. 아래에 더 상세히 설명되는 바와 같이, 서브-세그먼트 헤더는, 서브-세그먼트 내의 데이터 유닛들의 위치들을 식별하는 포인터들의 테이블을 포함할 수도 있다. 또한, 캡슐화 유닛 (30) 은 세그먼트 헤더 데이터가 변화하였는지 여부 (예를 들어, 세그먼트 헤더 데이터가 이전에 발생된 세그먼트와는 상이한지 여부) 를 나타내는 플래그를 설정할 수도 있다.
일부 예들에서, 리프리젠테이션들 (68) 은 적응 세트들로 분할될 수도 있다. 위에 언급된 바와 같이, 일부 경우들에서, 적응 세트는 또한 "리프리젠테이션 그룹" 이라고 지칭될 수도 있다. 즉, 리프리젠테이션들 (68) 의 다양한 서브세트들은 특성들의 각각의 공통 세트들, 예컨대, 코덱, 프로파일 및 레벨, 해상도, 뷰들의 수, 세그먼트들에 대한 파일 포맷, 디코딩되어 예를 들어 스피커들에 의해 제시될 오디오 데이터 및/또는 리프리젠테이션으로 디스플레이될 텍스트의 언어 또는 다른 특성들을 식별할 수도 있는 텍스트 타입 정보, 적응 세트 내의 리프리젠테이션들에 대한 장면의 카메라 각도 또는 실세계 카메라 시점을 설명할 수도 있는 카메라 각도 정보, 특정 청중들에 대한 콘텐츠 적합성을 설명하는 등급 정보 등을 포함할 수도 있다.
매니페스트 파일 (66) 은 특정 적응 세트들에 대한 공통 특성들뿐만 아니라, 이 특정 적응 세트들에 대응하는 리프리젠테이션들 (68) 의 서브세트들을 나타내는 데이터를 포함할 수도 있다. 또한, 매니페스트 파일 (66) 은 적응 세트들의 개별적인 리프리젠테이션들에 대한 개별 특성들, 예컨대, 비트레이트들을 나타내는 데이터를 포함할 수도 있다. 이러한 방식으로, 적응 세트는 간략화된 네트워크 대역폭 적응을 위해 제공할 수도 있다. 적응 세트 내의 리프리젠테이션들은 매니페스트 파일 (66) 의 적응 세트 엘리먼트의 차일드 엘리먼트 (child element) 들을 이용하여 나타낼 수도 있다.
서버 디바이스 (60) 는 요청 프로세싱 유닛 (70) 및 네트워크 인터페이스 (72) 를 포함한다. 일부 예들에서는, 서버 디바이스 (60) 는 복수의 네트워크 인터페이스들을 포함할 수도 있다. 또한, 서버 디바이스 (60) 의 피처들 중 전부 또는 임의의 것은 콘텐츠 전달 네트워크의 다른 디바이스들, 예컨대, 라우터들, 브리지들, 프록시 디바이스들, 스위치들, 또는 다른 디바이스들 상에서 구현될 수도 있다. 일부 예들에서는, 콘텐츠 전달 네트워크의 중간 디바이스들은 멀티미디어 콘텐츠 (64) 의 데이터를 캐싱하고, 실질적으로 서버 디바이스 (60) 의 컴포넌트들에 따르는 컴포넌트들을 포함할 수도 있다. 일반적으로, 네트워크 인터페이스 (72) 는 데이터를 네트워크 (74) 를 통해 전송 및 수신하도록 구성된다.
요청 프로세싱 유닛 (70) 은, 저장 매체 (72) 의 데이터에 대해, 클라이언트 디바이스들, 예컨대, 클라이언트 디바이스 (40) 로부터 네트워크 요청들을 수신하도록 구성된다. 예를 들어, 요청 프로세싱 유닛 (70) 은, R. Fielding 등에 의한 RFC 2616, "Hypertext Transfer Protocol - HTTP/1.1", Network Working Group, IETF, 1999년 6월에서 설명된 바와 같이, 하이퍼텍스트 전송 프로토콜 (HTTP) 버전 1.1 을 구현할 수도 있다. 즉, 요청 프로세싱 유닛 (70) 은 HTTP GET 또는 부분적 GET 요청들을 수신하고 그 요청들에 응답하여 멀티미디어 콘텐츠 (64) 의 데이터를 제공하도록 구성될 수도 있다. 그 요청들은 리프리젠테이션들 (68) 중 하나의 리프리젠테이션의 세그먼트를, 예를 들어, 그 세그먼트의 URL 을 이용하여 특정할 수도 있다. 일부 예들에서, 요청들은 또한 세그먼트의 하나 이상의 바이트 범위들을 특정하여, 부분 GET 요청들을 포함할 수도 있다. 또한, 요청 프로세싱 유닛 (70) 은 HTTP HEAD 요청들을 서비스하여 리프리젠테이션들 (68) 중 하나의 리프리젠테이션의 세그먼트의 헤더 데이터를 제공하도록 구성될 수도 있다. 어떤 경우든, 요청 프로세싱 유닛 (70) 은 요청들을 프로세싱하여 요청된 데이터를 요청하는 디바이스, 예컨대, 클라이언트 디바이스 (40) 에게 제공하도록 구성될 수도 있다.
도 1 의 예에 예시된 바와 같이, 멀티미디어 콘텐츠 (64) 는, 미디어 프레젠테이션 디스크립션 (MPD) 에 대응할 수도 있는 매니페스트 파일 (66) 을 포함한다. 매니페스트 파일 (66) 은 상이한 대안적 리프리젠테이션들 (68) (예를 들어, 상이한 품질들을 갖는 비디오 서비스들) 의 디스크립션들을 포함할 수도 있고, 그 디스크립션은, 예를 들어, 코덱 정보, 프로파일 값, 레벨 값, 비트레이트, 및 리프리젠테이션들 (68) 의 다른 설명적인 특성들을 포함할 수도 있다. 클라이언트 디바이스 (40) 는 미디어 프레젠테이션의 MPD 를 취출하여 프레젠테이션들 (68) 의 세그먼트들에 액세스하는 방법을 결정할 수도 있다.
특히, 취출 유닛 (52) 은 클라이언트 디바이스 (40) 의 구성 데이터 (미도시) 를 취출하여 비디오 디코더 (48) 의 디코딩 능력들 및 비디오 출력부 (44) 의 렌더링 능력들을 결정할 수도 있다. 또한, 구성 데이터는 클라이언트 디바이스 (40) 의 사용자에 의해 선택되는 언어 선호도, 클라이언트 디바이스 (40) 의 사용자에 의해 설정된 깊이 선호도들에 대응하는 하나 이상의 카메라 시점들, 및/또는 클라이언트 디바이스 (40) 의 사용자에 의해 선택된 등급 선호도 중 전부 또는 임의의 것을 포함할 수도 있다. 취출 유닛 (52) 은, 예를 들어, 웹 브라우저 또는 HTTP GET 및 부분 GET 요청들을 제출하도록 구성된 미디어 클라이언트를 포함할 수도 있다. 취출 유닛 (52) 은 클라이언트 디바이스 (40) 의 하나 이상의 프로세서들 또는 프로세싱 유닛들 (미도시) 에 의해 실행되는 소프트웨어 명령들에 대응할 수도 있다. 일부 예들에서는, 취출 유닛 (52) 에 대해 설명된 기능성의 전부 또는 부분들은 하드웨어, 또는 하드웨어, 소프트웨어, 및/또는 펌웨어의 조합으로 구현될 수도 있는데, 여기서 필수 하드웨어가 소프트웨어 또는 펌웨어에 대한 명령들을 실행하기 위해 제공될 수도 있다.
취출 유닛 (52) 은, 클라이언트 디바이스 (40) 의 디코딩 및 렌더링 능력들을, 매니페스트 파일 (66) 의 정보로 나타내는 리프리젠테이션들 (68) 의 특성들과 비교할 수도 있다. 취출 유닛 (52) 은 우선 매니페스트 파일 (66) 의 적어도 일 부분을 취출하여 리프리젠테이션들 (68) 의 특성들을 결정할 수도 있다. 예를 들어, 취출 유닛 (52) 은, 본 개시물의 기법들에 따라, 하나 이상의 적응 세트들의 특성들을 설명하는 매니페스트 파일 (66) 의 일 부분을 요청할 수도 있다. 취출 유닛 (52) 은 클라이언트 디바이스 (40) 의 코딩 및 렌더링 능력들을 충족시킬 수 있는 특성들을 갖는 리프리젠테이션들 (68) 의 서브세트 (예를 들어, 적응 세트) 를 선택할 수도 있다. 그 후에, 취출 유닛 (52) 은 적응 세트 내의 리프리젠테이션들에 대한 비트레이트들을 결정하고, 네트워크 대역폭의 현재 이용가능한 양을 결정하며, 네트워크 대역폭에 의해 충족될 수 있는 비트레이트를 갖는 리프리젠테이션들 중 하나로부터 세그먼트들을 취출할 수도 있다.
일반적으로, 보다 높은 비트레이트의 리프리젠테이션들은 보다 높은 품질의 비디오 재생을 도출할 수도 있는 한편, 보다 낮은 비트레이트의 리프리젠테이션들은 이용가능한 네트워크 대역폭이 감소할 때 충분한 품질의 비디오 재생을 제공할 수도 있다. 이에 따라, 이용가능한 네트워크 대역폭이 비교적 높은 경우, 취출 유닛 (52) 은 데이터를 비교적 높은 비트레이트의 리프리젠테이션들로부터 취출할 수도 있는 반면, 이용가능한 네트워크 대역폭이 낮은 경우에는, 취출 유닛 (52) 은 데이터를 비교적 낮은 비트레이트의 리프리젠테이션들로부터 취출할 수도 있다. 이러한 방식으로, 클라이언트 디바이스 (40) 는 멀티미디어 데이터를 네트워크 (74) 를 통해 스트리밍하면서 또한 네트워크 (74) 의 변화하는 네트워크 대역폭 가용성에도 적응할 수도 있다.
네트워크 인터페이스 (54) 는 선택된 리프리젠테이션의 세그먼트들의 데이터를 수신하여 취출 유닛 (52) 에 제공할 수도 있는데, 이 취출 유닛 (52) 은 이어서 이 세그먼트들을 역캡슐화 유닛 (50) 에 제공할 수도 있다. 역캡슐화 유닛 (50) 은 비디오 파일의 엘리먼트들을 구성 PES 스트림들로 역캡슐화하고, PES 스트림들을 역패킷화하여 인코딩된 데이터를 취출하며, 인코딩된 데이터를, 인코딩된 데이터가, 예를 들어, 스트림의 PES 패킷 헤더들에 의해 나타내는 바와 같이, 오디오 또는 비디오 스트림의 부분인지 여부에 의존하여 오디오 디코더 (46) 또는 비디오 디코더 (48) 로 전송할 수도 있다. 오디오 디코더 (46) 는 인코딩된 오디오 데이터를 디코딩하고, 그 디코딩된 오디오 데이터를 오디오 출력부 (42) 에 전송하는 한편, 비디오 디코더 (48) 는 인코딩된 비디오 데이터를 디코딩하고, 그 디코딩된 비디오 데이터를 비디오 출력부 (44) 에 전송하며, 이 디코딩된 비디오 데이터는 스트림의 복수의 뷰들을 포함할 수도 있다.
비디오 인코더 (28), 비디오 디코더 (48), 오디오 인코더 (26), 오디오 디코더 (46), 캡슐화 유닛 (30), 취출 유닛 (52), 및 역캡슐화 유닛 (50) 각각은, 적용가능하다면, 다양한 적합한 프로세싱 회로부 (circuitry) 중 임의의 것, 예컨대, 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSPs), 주문형 집적 회로들 (ASICs), 필드 프로그램가능 게이트 어레이들 (FPGAs), 개별 로직 회로부, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합들로서 구현될 수도 있다. 비디오 인코더 (28) 및 비디오 디코더 (48) 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있고, 이들 중 어느 하나는 결합형 비디오 인코더/디코더 (CODEC) 의 부분으로서 통합될 수도 있다. 마찬가지로, 오디오 인코더 (26) 및 오디오 디코더 (46) 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있고, 이들 중 어느 하나는 결합형 CODEC 의 부분으로서 통합될 수도 있다. 비디오 인코더 (28), 비디오 디코더 (48), 오디오 인코더 (26), 오디오 디코더 (46), 캡슐화 유닛 (30), 취출 유닛 (52), 및/또는 역캡슐화 유닛 (50) 을 포함하는 장치는 집적 회로, 마이크로프로세서, 및/또는 무선 통신 디바이스, 예컨대, 셀룰러 전화기를 포함할 수도 있다.
일반적으로, 본 개시물의 양태들은 네트워크 (74) 를 통해 미디어 데이터의 하나 이상의 세그먼트들을 서버 디바이스 (60) 로부터 클라이언트 디바이스 (40) 로 스트리밍하는 것과 연관된 레이턴시를 최소화하는 것에 관한 것이다. 즉, 본 개시물의 양태들에 따르면, 서버 디바이스 (60) 는, 미디어 데이터의 세그먼트를, 네트워크 (74) 를 통해 송신하기에 적합한 복수의 서브-세그먼트들로 분할할 수도 있다. 이 예에서, 서버 디바이스 (60) 는 서브-세그먼트가 형성되자마자 서브-세그먼트를 송신할 수도 있다. 즉, 서버 디바이스 (60) 는 서브-세그먼트를 송신하기 전에 2 개 이상의 서브-세그먼트가 형성되기를 기다릴 필요가 없다. 또한, 서버 디바이스 (60) 는 서브-세그먼트를 송신하기 전에 서브-세그먼트들 전부에 대한 헤더 데이터가 발생되기를 기다릴 필요가 없다.
서브-세그먼트 형성 및/또는 송신과 같은, 서버 디바이스 (60) 에 기인하는 특정 기능들은, 하나 이상의 다른 컴포넌트들 또는 디바이스들에 의해 수행될 수도 있다는 것을 이해해야 한다. 즉, 다른 예에서, 콘텐츠 준비 디바이스 (20) 는 서브-세그먼트를 형성하여 네트워크 (74) 를 통해 전송하는 것을 담당할 수도 있다. 부가적으로 또는 대안적으로, 일부 예들에 따르면, 콘텐츠 준비 디바이스 (20) 및 서버 디바이스 (60) 는 동일한 디바이스에 고도로 통합 또는 포함될 수도 있다. 따라서, 콘텐츠 준비 디바이스 (20), 서버 디바이스 (60), 또는 이러한 디바이스들의 조합은, 서브-세그먼트들이 형성되자마자, 서브-세그먼트들을 준비하여 클라이언트 디바이스 (40) 와 같은 클라이언트 디바이스에 전송할 수도 있다. 또한, 이러한 디바이스들은 서브-세그먼트들을 브로드캐스트 또는 멀티캐스트 네트워크 송신으로 전송할 수도 있다.
클라이언트 디바이스 (40) 는 본 개시물의 양태들에 따라 형성된 서브-세그먼트를 수신하고, 이 서브-세그먼트의 적어도 일 부분을 즉시 디코딩하기 시작하도록 구성될 수도 있다. 즉, 서브-세그먼트의 특정 데이터 유닛들이 아직 수신되지 않은 다른 서브-세그먼트들의 데이터 유닛들을 참조할 수도 있지만, 클라이언트 디바이스 (40) 는 데이터 유닛들의 일부 (예를 들어, 서브-세그먼트에 포함된 I-프레임들) 를 즉시 디코딩하기 시작할 수도 있다. 일부 예들에서, 하나의 서브-세그먼트의 데이터 유닛은, 블록이 이후 데이터 유닛을 가리키는 모션 벡터를 포함할 수도 있는 이후 서브-세그먼트의 이후 데이터 유닛을 참조할 수도 있다. 그러나, 클라이언트 디바이스 (40) 는 서브-세그먼트들에 통상적으로 후속하는 세그먼트에 대한 헤더의 수신시 전체 세그먼트를 디코딩하여 끝낼 준비가 되어 있다. 즉, 클라이언트 디바이스 (40) 는 통상적으로 세그먼트에 대한 헤더의 수신 전에 세그먼트의 서브-세그먼트들 전부를 수신한다.
비디오 데이터의 복수의 서브-세그먼트들을 발생시키고 이들이 인코딩되자마자 서브-세그먼트들을 송신하는 것은, 클라이언트 디바이스 (40) 에 의해 세그먼트들을 수신, 디코딩, 및/또는 디스플레이하는 것뿐만 아니라, 서버 디바이스 (60) 에 의해 세그먼트들을 송신하는 것과 연관된 레이턴시를 감소시킬 수도 있다.
도 2 는 취출 유닛 (52) 과 연관된 예시적인 컴포넌트들을 예시한 블록도이다. 도 2 의 취출 유닛 (52) 은 취출 유닛 (52) (도 1) 에 대응할 수도 있고 또는 다른 상이한 취출 디바이스에 포함될 수도 있다. 이 예에서, 취출 유닛 (52) 은 스트림 관리 유닛 (80) 및 소스 컴포넌트 (90) 를 포함한다. 소스 컴포넌트 (90) 는 미디어 파일 저장 핸들링 유닛 (92), MPD 파싱 유닛 (94), 미디어 파일 디멀티플렉싱 (demux) 유닛 (96), 및 적응 유닛 (98) 그리고 HTTP 제어기 (100) 를 포함한다.
일반적으로, 취출 유닛 (52) 은 특정 물리적 미디어와 상호작용하거나 또는 특정 통신 프로토콜들을 이용하여 통신하기 위한 하드웨어 및/또는 소프트웨어를 포함할 수도 있다. 예를 들어, 취출 유닛 (52) 은 HTTP 를 구현하고 HTTP 스택을 이용하여 데이터를 수신할 수도 있으며, 이 HTTP 스택은 TCP/IP 뿐만 아니라 네트워크의 다른 계층들에 대한 다른 통신 프로토콜들을 포함할 수도 있다. 취출 유닛 (52) 은 또한, 예를 들어, 서버 디바이스 (60) 로부터 세그먼트들 (또는 세그먼트들의 부분들) 에 대한 HTTP Get 또는 부분 Get 요청들을 발생시킬 수도 있다. 또한, 취출 유닛 (52) 은 브로드캐스트 또는 멀티캐스트 네트워크 송신들로부터 데이터를 수신하도록 브로드캐스트 또는 멀티캐스트 프로토콜, 예컨대, eMBMS 또는 IP 멀티캐스트를 구현할 수도 있다. 취출 유닛 (52) 은 송신의 데이터를 취출하기 위해 브로드캐스트 또는 멀티캐스트 네트워크 송신에 가입하도록 구성될 수도 있다.
소스 컴포넌트 (90) 는 하나 이상의 소스들로부터 멀티미디어 콘텐츠의 데이터를 수신할 수도 있다. 우선, 소스 컴포넌트 (90) 는 MPD 파일과 같은 매니페스트 파일을 수신할 수도 있다. MPD 파싱 유닛 (94) 은 MPD 파일을 파싱하여, 멀티미디어 콘텐츠의 이용가능한 리프리젠테이션들뿐만 아니라, 이 리프리젠테이션들의 특성들, 및 공통 특성들을 가진 리프리젠테이션들의 그룹들을 포함하는 적응 세트들을 결정할 수도 있다. 때때로, 소스 컴포넌트 (90) 는 현재 멀티미디어 콘텐츠에 대한 업데이트된 MPD 를 수신할 수도 있는데, 이 경우 MPD 파싱 유닛 (94) 은 업데이트된 MPD 를 파싱하고 그 업데이트된 정보를 스트림 관리 유닛 (80) 에 제공할 수도 있다. 일부 예들에서, 소스 컴포넌트 (90) 는 리프리젠테이션들 중 적어도 하나를 선택할 수도 있지만, 다른 예들에서, 소스 컴포넌트 (90) 는 리프리젠테이션 정보를 스트림 관리 유닛 (80) 에 제공할 수도 있다. 이러한 예들에서, 스트림 관리 유닛 (80) 은 리프리젠테이션들 중 적어도 하나를 선택할 수도 있다. 어떤 경우든, 소스 컴포넌트 (90) 는 멀티미디어 콘텐츠에 대한 데이터를 취출하기 위한 다운로드 정보를 전송하라는 요청을 스트림 관리 유닛 (80) 에 전송할 수도 있다.
스트림 관리 유닛 (80) 은 선택된 리프리젠테이션의 데이터를 취출하는 소스를 선택하도록 구성될 수도 있다. 스트림 관리 유닛 (80) 은, 일부 예들에서, 스트림 관리 유닛 (80) 이, 데이터를 취출하는 특정 소스를 선택해야 한다고 나타내는 특정 통지들을 수신할 수도 있다. 예를 들어, HTTP 수신기 및 스택은 HTTP 송신들을 위해 이용가능한 네트워크 대역폭의 추정된 양을 스트림 관리 유닛 (80) 에 제공할 수도 있다. 브로드캐스트 수신기 및 스택은 선택된 리프리젠테이션에 대응하는 브로드캐스트 송신을 위한 URL 이 이용가능한지 여부와 이 브로드캐스트가 커버리지 내에 있는지 여부의 표시들을 제공할 수도 있다. 로컬 저장 디바이스는 선택된 리프리젠테이션에 대응하는 로컬로 저장된 데이터에 대해 URL 이 이용가능한지 여부의 표시를 제공할 수도 있다. 또한, 스트림 관리 유닛 (80) 은, 클라이언트 디바이스 (40) 와 같은 무선 디바이스의 하나 이상의 라디오들로부터 무선 신호 강도 정보 (radio signal strength information; RSSI) 를 수신하여, 예를 들어, 네트워크 데이터를 수신하기 위한 무선 신호의 강도를 결정할 수도 있다.
스트림 관리 유닛 (80) 은 멀티미디어 콘텐츠에 대한 데이터를 취출하는 소스들 중 하나 이상을 선택하기 위해 수신된 소스 통지들을 분석할 수도 있다. 일부 예들에서, 스트림 관리 유닛 (80) 은 또한 멀티미디어 콘텐츠의 리프리젠테이션을 선택한다. 스트림 관리 유닛 (80) 은 소스 컴포넌트 (90) 로부터의 정보, 예컨대, 리프리젠테이션들의 세그먼트들에 대한 URL들 및 MPD 파일로부터 추출된 리프리젠테이션 특성들을 수신할 수도 있다. 이 정보는 멀티미디어 콘텐츠의 현재 재생 시간뿐만 아니라, 버퍼 점유 및/또는 이용가능 공간의 표시들을 더 포함할 수도 있다. 수신된 소스 통지들과 함께, 이 정보를 이용하면, 스트림 관리 유닛 (80) 은, 멀티미디어 콘텐츠의 데이터, 예를 들어, 현재 선택된 리프리젠테이션의 데이터를 취출하는 소스를 선택할 수도 있다. 스트림 관리 유닛 (80) 은 리프리젠테이션들 및/또는 이 리프리젠테이션들에 대한 데이터를 동일한 멀티미디어 콘텐츠에 대해 시간에 걸쳐 취출하는 소스들 사이를 적응적으로 스위칭할 수도 있다.
스트림 관리 유닛 (80) 은 선택된 소스 (그리고 일부 경우들에서는, 선택된 리프리젠테이션) 의 표시들을 소스 컴포넌트 (90) 에 제공할 수도 있다. 또한, 스트림 관리 유닛 (80) 은 선택된 소스로부터 선택된 리프리젠테이션의 데이터를 취출하기 위한 정보를 포함하는 다운로드 커맨드를 만들어 낼 수도 있다. 예를 들어, 다운로드 커맨드는 소스 타입 및 소스-특정 정보의 표시를 포함할 수도 있다. 예를 들어, HTTP/1.1 에 대해, 다운로드 커맨드는, Get 또는 부분 Get 커맨드에 포함되는 선택된 리프리젠테이션의 세그먼트의 URL 의 전체 경로를 특정할 수도 있다. 다른 예로서, 브로드캐스트 또는 멀티캐스트 네트워크 송신을 위해, 다운로드 커맨드는 선택된 리프리젠테이션의 세그먼트를 수신하기 위한 브로드캐스트 또는 멀티캐스트 그룹의 네트워크 어드레스를 특정할 수도 있다. 이러한 방식으로, 스트림 관리 유닛 (80) 은 데이터를 취출하는 적절한 소스뿐만 아니라, 소스 컴포넌트 (90) 로부터 수신된 정보 및/또는 다른 수신된 정보에 기초하여 수신하기 위한 리프리젠테이션의 적절한 세그먼트를 결정할 수도 있다.
소스 컴포넌트 (90) 는, 스트림 관리 유닛 (80) 으로부터 수신된 다운로드 커맨드 정보에 기초하여, 선택된 소스로부터 선택된 리프리젠테이션의 데이터를 취출하기 위한 적절한 커맨드를 만들어낼 수도 있다. 예를 들어, 소스 컴포넌트 (90) 는 HTTP Get 또는 부분 Get 요청, 브로드캐스트 또는 멀티캐스트 그룹에 합류하라는 요청, 또는 로컬 저장 매체의 데이터를 취출하라는 요청을 발생시킬 수도 있다.
도 2 의 예에서, 소스 컴포넌트 (90) 는, 수신된 데이터를, 예를 들어, 각각의 오디오 및 비디오 스트림들로 디멀티플렉싱할 수도 있는 미디어 파일 디멀티플렉싱 (demux) 유닛 (96) 을 포함한다. 미디어 파일 저장 핸들링 유닛 (92) 은, 수신된 데이터를, 취출 유닛 (52) 을 포함하는 디바이스의 메모리 (미도시) 에 버퍼링할 수도 있다. 또한, 미디어 파일 저장 핸들링 유닛 (92) 은, 디멀티플렉싱된 데이터를, 예를 들어, 오디오 디코더 (46) 및 비디오 디코더 (48) (도 1) 에 제공할 수도 있다. 대안적으로, 미디어 파일 저장 핸들링 유닛 (92) 은, 취출된 미디어 데이터를 이 데이터의 디멀티플렉싱 없이 클라이언트 디바이스 (40) 에 제공할 수도 있다.
이에 따라, 취출 유닛 (52) 은 상이한 통신 프로토콜에 따라 동작하도록 구성될 수도 있다. 예를 들어, 취출 유닛 (52) 은 송신 제어 프로토콜/인터넷 프로토콜 (TCP/IP) 에 따라 동작하도록 구성된 네트워크 인터페이스를 포함할 수도 있다. 동일한 네트워크 인터페이스 (예를 들어, 네트워크 인터페이스의 상이한 엘리먼트), 또는 상이한 인터페이스는, IP 멀티캐스트 또는 eMBMS, 또는 다른 브로드캐스트 또는 멀티캐스트 네트워크 프로토콜들에 따라 데이터를 수신하도록 구성될 수도 있다. 취출 유닛 (52) 의 다른 인터페이스는 물리적 매체로부터 데이터를 수신하도록 구성될 수도 있다. 이러한 인터페이스는 범용 시리얼 버스 (USB) 인터페이스, DVD 판독기, 블루레이 플레이어, 또는 물리적 매체로부터 데이터를 취출하기 위한 다른 이러한 인터페이스들을 포함할 수도 있다.
취출 유닛 (52) 이 HTTP 에 따라 데이터를 수신하고 있는 예들에서, 적응 유닛 (98) 은 대역폭 적응을 수행하도록 HTTP 제어기 (100) 와 통신할 수도 있다. 예를 들어, 적응 유닛 (98) 은 HTTP 제어기 (100) 와 통신하고, 멀티미디어 콘텐츠에 대한 매니페스트 파일로부터, 멀티미디어 콘텐츠의 멀티미디어 데이터를 취출하는 리프리젠테이션을 선택할 수도 있다. 매니페스트 파일은 멀티미디어 콘텐츠의 복수의 리프리젠테이션들을 나타내는 정보를 포함할 수도 있고, 이 복수의 리프리젠테이션들은 선택된 리프리젠테이션을 포함할 수도 있다. 특히, 매니페스트 파일은 리프리젠테이션들의 비트레이트들을 설명하는 정보를 포함할 수도 있어서, 적응 유닛 (98) 이 네트워크 대역폭의 현재 이용가능한 양이 주어진 리프리젠테이션들의 비트레이트들에 기초하여 적절한 리프리젠테이션을 선택할 수도 있다. 물론, 상술된 바와 같이, 소스 컴포넌트보다는, 스트림 관리 유닛이 또한, 리프리젠테이션을 선택하도록 구성될 수도 있다는 것을 이해해야 한다. 또한, 소스 컴포넌트 및 스트림 관리 유닛은, 일부 예들에서, 기능적으로 통합될 수도 있다.
도 3 은 일 예시적인 멀티미디어 콘텐츠 (102) 의 엘리먼트들을 예시한 개념도이다. 멀티미디어 콘텐츠 (102) 는 멀티미디어 콘텐츠 (64) (도 1), 또는 메모리 (62) 에 저장된 다른 멀티미디어 콘텐츠에 대응할 수도 있다. 도 3 의 예에서, 멀티미디어 콘텐츠 (102) 는 미디어 프리젠테이션 디스크립션 (MPD; 104) 및 복수의 리프리젠테이션들 (110 내지 120) 을 포함한다. 리프리젠테이션 (110) 은 옵션적인 헤더 데이터 (112) 및 세그먼트들 (114A 내지 114N (세그먼트들 (114))) 을 포함하는 한편, 리프리젠테이션 (120) 은 옵션적인 헤더 데이터 (122) 및 세그먼트들 (124A 내지 124N (세그먼트들 (124))) 을 포함한다. 문자 N 은 편의를 위해 리프리젠테이션들 (110, 120) 각각에서 마지막 무비 프래그먼트를 지정하는데 이용된다. 일부 예들에서는, 리프리젠테이션들 (110, 120) 사이에는 상이한 수의 무비 프래그먼트들이 존재할 수도 있다.
MPD (104) 는 리프리젠테이션들 (110 내지 120) 로부터 분리된 데이터 구조를 포함할 수도 있다. MPD (104) 는 도 1 의 매니페스트 파일 (66) 에 대응할 수도 있다. 마찬가지로, 리프리젠테이션들 (110 내지 120) 은 도 1 의 리프리젠테이션들 (68) 에 대응할 수도 있다. 일반적으로, MPD (104) 는 리프리젠테이션들 (110 내지 120) 의 특성들을 일반적으로 설명하는 데이터, 예컨대, 코딩 및 렌더링 특성들, 적응 세트들, MPD (104) 가 대응하는 프로파일, 텍스트 타입 정보, 카메라 각도 정보, 등급 정보, 트릭 모드 정보 (예를 들어, 시간적 서브시퀀스들을 포함하는 리프리젠테이션들을 나타내는 정보) 및/또는 원격 기간들을 취출하기 위한 (예를 들어, 재생 동안 미디어 콘텐츠로의 타깃화된 광고 삽입을 위한) 정보를 포함할 수도 있다.
존재할 경우, 헤더 데이터 (112) 는 세그먼트들 (114) 의 특성들, 예를 들어, 랜덤 액세스 포인트들의 시간적 위치들, 세그먼트들 (114) 중 어느 것이 랜덤 액세스 포인트들을 포함하는지, 세그먼트들 (114) 내의 랜덤 액세스 포인트들에 대한 바이트 오프셋들, 세그먼트들 (114) 의 유니폼 리소스 로케이터 (URL) 들, 또는 세그먼트들 (114) 의 다른 양태들을 설명할 수도 있다. 존재할 경우, 헤더 데이터 (122) 는 세그먼트들 (124) 에 대한 유사한 특성들을 설명할 수도 있다. 부가적으로 또는 대안적으로, 이러한 특성들은 MPD (104) 내에 완전히 포함될 수도 있다.
세그먼트들 (114) 은 하나 이상의 코딩된 비디오 샘플들을 포함하는데, 이 코딩된 비디오 샘플들 각각은 비디오 데이터의 프레임들 또는 슬라이스들을 포함할 수도 있다. 세그먼트들 (114) 의 코딩된 비디오 샘플들 각각은 유사한 특성들, 예를 들어, 높이, 폭, 및 대역폭 요건들을 가질 수도 있다. 비록 이러한 데이터가 도 3 의 예에 예시되어 있지 않지만, 이러한 특성들은 MPD (104) 의 데이터에 의해 설명될 수도 있다. MPD (104) 는, 본 개시물에서 설명되는 시그널링된 정보 중 전부 또는 임의의 것을 갖는, 3GPP 사양에 의해 설명되는 특성들을 포함할 수도 있다.
세그먼트들 (114, 124) 각각은 유니폼 리소스 식별자 (URI), 예를 들어, 유니폼 리소스 로케이터 (URL) 와 연관될 수도 있다. 따라서, 세그먼트들 (114, 124) 각각은 스트리밍 네트워크 프로토콜, 예컨대, DASH 를 이용하여 독립적으로 취출가능할 수도 있다. 이러한 방식으로, 목적지 디바이스, 예컨대, 클라이언트 디바이스 (40) 는, HTTP Get 요청을 이용하여 세그먼트들 (114 또는 124) 을 취출할 수도 있다. 일부 예들에서, 클라이언트 디바이스 (40) 는 HTTP 부분 Get 요청들을 이용하여 세그먼트들 (114 또는 124) 의 특정 바이트 범위들을 취출할 수도 있다.
본 개시물의 양태들에 따르면, 세그먼트들 (114, 124) 각각은, 도 4 에 대해 도시 및 설명된 바와 같이, 복수의 서브-세그먼트들로 더 분할될 수도 있다. 일부 예들에서, 멀티미디어 콘텐츠 (102) 가 완전히 형성된 후에, 헤더 데이터 (112, 122) 는, 상술된 바와 같이, IDR NAL 유닛들과 같은 특정 NAL 유닛들에 대한 포인터들을 포함할 수도 있다. 그러나, 본 개시물의 기법들에 따라, 리프리젠테이션들 (110, 120) 의 서브-세그먼트들이 그 서브-세그먼트들이 준비되자마자 송신되는 경우, 헤더 데이터 (112, 122) 는 세그먼트들 (114, 124) 이 완전히 형성된 후까지 이용가능하게 되지 않을 수도 있다는 것을 이해해야 한다. 그럼에도 불구하고, 본 개시물에 설명된 바와 같이, 세그먼트들 (114, 124) 의 서브-세그먼트들의 데이터는 헤더 데이터 (112, 122) 가 이용가능하게 되기 전에 송신될 수도 있다.
도 4 는 본 개시물의 양태에 따른 일 예시적인 세그먼트 (200) 를 예시한 개념도이다. 세그먼트 (200) 는 도 3 에 도시된 세그먼트들 (114 및/또는 124) 에 대응할 수도 있고, 멀티미디어 콘텐츠 (64) (도 1) 의 적어도 일 부분, 또는 메모리 (62) 에 저장된 다른 멀티미디어 콘텐츠를 포함할 수도 있다. 도 4 의 특정 양태들은 도 1 에 도시된 컴포넌트들에 대해 설명될 수도 있지만, 세그먼트 (200) 는 다수의 상이한 컴포넌트들을 갖는 다수의 상이한 환경들에서 구현될 수도 있다는 것을 이해해야 한다.
도 4 의 예에서, 세그먼트 (200) 는 세그먼트 헤더 (202), 서브-세그먼트 (204A), 서브-세그먼트 (204B) (서브-세그먼트들 (204) 라고 총칭하여 지칭됨) 뿐만 아니라, 잠재적으로는 다수의 부가적인 서브-세그먼트들 (생략 부호로 나타냄) 을 포함한다. 본 개시물의 양태들에 따르면, 세그먼트 헤더 (202) 는 세그먼트 (200) 의 모든 서브-세그먼트들 (204) 에 공통인 정보를 포함할 수도 있다. 예를 들어, 세그먼트 헤더 (202) 는, 세그먼트 (200) 의 디코딩 및/또는 렌더링에 있어서, 클라이언트 디바이스 (40) 와 같은 디바이스를 보조하기 위한 특정 정보를 포함할 수도 있다. 즉, 세그먼트 헤더 (202) 는 세그먼트 (200) 의 오디오 데이터에 대한 인코딩 포맷, 세그먼트 (200) 의 비디오 데이터에 대한 인코딩 포맷, 세그먼트 (200) 에 대한 비트레이트, 세그먼트 (200) 에 대한 품질 레벨, 세그먼트 (200) 의 비디오 데이터의 해상도, 세그먼트 (200) 의 비디오 데이터의 프레임 레이트 등을 나타내는 데이터를 포함할 수도 있다. 본 개시물의 일부 양태들에 따르면, 이러한 데이터의 일 부분은, 아래에 설명되는 바와 같이, 서브-세그먼트 헤더에 포함될 수도 있다. 일부 예들에서, 세그먼트 헤더 (202) 는 모든 서브-세그먼트들 (204) 이 송신된 후에 송신된다. 다른 예들에서, 세그먼트 헤더 (202) 는 서브-세그먼트들 (204) 이 송신되기 전에 송신된다.
일부 예들에서, 본 개시물의 양태들에 따르면, 세그먼트 헤더 (202) 는 세그먼트 헤더 (202) 의 데이터가 변화하였는지 여부를 나타내는 플래그를 포함할 수도 있다. 즉, 세그먼트 헤더 플래그는 세그먼트 헤더 (202) 의 데이터가 이전에 수신 및 디코딩된 세그먼트 헤더로부터 변화하였는지 여부를 나타낼 수도 있다. 서버 디바이스 (60) 와 같은 디바이스는, 세그먼트 헤더 (202) 의 데이터가 변화하지 않았다는 것을 나타내기 위해 세그먼트 헤더 플래그를 "0" 으로 설정할 수도 있고, 세그먼트 헤더의 데이터가 변화하였다는 것을 나타내기 위해 세그먼트 헤더 플래그를 "1" 로 설정할 수도 있다. 헤더 데이터가 변화하지 않은 경우 (플래그 = 0), 서버 디바이스 (60) 는 세그먼트 헤더 (202) 에의 부가적인 정보의 포함을 생략할 수도 있다. 대안적으로, 헤더 데이터가 변화한 경우 (플래그 = 1), 서버 디바이스 (60) 는 세그먼트 헤더 플래그 이후에 헤더 데이터를 포함할 수도 있다.
도 4 에 도시된 예에서, 서브-세그먼트 (204A) 는 데이터 유닛들 (21OA 및 210B) (총칭하여, 데이터 유닛들 (210)) 각각의 상대적 위치를 식별하는 데이터 유닛 포인터들 (208A 및 208B) (총칭하여, 데이터 유닛 포인터들 (208)) 을 갖는 서브-세그먼트 헤더 (206) 를 포함한다. 일부 예들에서, 서브-세그먼트 헤더 (206) 는 세그먼트 헤더 (202) 에 대해 상술된 데이터의 일 부분을 포함할 수도 있다. 그러나, 자주 변화하지 않는 데이터는 통상적으로, 서브-세그먼트 헤더 (206) 에 포함되지 않는다 (예를 들어, 인코딩 포맷 등).
본 개시물의 일부 양태들에 따르면, 서브-세그먼트 헤더 (206) 는 서브-세그먼트 (204A) 내에서 데이터 유닛들 (210) 각각의 오프셋을 식별하는 데이터 유닛 포인터들 (208) 의 테이블을 포함한다. 예를 들어, 이 오프셋은 서브-세그먼트 (204A) 내의 데이터 유닛들의 상대적 포지션을 제공할 수도 있다. 또한, (일부 예들에서 데이터 유닛들이 프리젠테이션/디스플레이 순서로 인코딩 및 송신되지 않을 수도 있지만) 이 오프셋은, 데이터 유닛의 디코딩된 데이터를 제시하는 적절한 순서의 표시를 제공할 수도 있다.
일반적으로, 데이터 유닛들 (210) 은, 인코딩된 미디어 데이터를 포함할 수도 있는 VCL NAL 유닛들 또는 비-VCL NAL 유닛들을 포함할 수도 있다. 미디어 데이터가 비디오 데이터인 일 예에서, 데이터 유닛들 (210) 은 비디오 데이터의 프레임들 또는 슬라이스들을 포함할 수도 있다. 본 개시물의 양태들에 따르면, 서브-세그먼트들 (204A) 과 같은 서브-세그먼트는 독립적으로 디코딩가능하지 않을 수도 있다. 예를 들어, 데이터 유닛들 (210) 중 하나 이상은 (예를 들어, 서브-세그먼트 (204B) 의 데이터 유닛들 (216) 과 같은) 하나 이상의 다른 서브-세그먼트들에 포함된 하나 이상의 데이터 유닛들을 참조할 수도 있다. 즉, 데이터 유닛들 (210) 이 비디오 데이터를 포함하는 일 예에서, 데이터 유닛들 (210) 중 하나 이상은, 예를 들어, 다른 서브-세그먼트들의 예측 데이터를 식별하는 모션 벡터들을 이용하여, 하나 이상의 다른 서브-세그먼트들에 포함된 하나 이상의 데이터 유닛들의 비디오 데이터를 참조하는 P-프레임 또는 B-프레임으로서 인코딩될 수도 있다. 이러한 방식으로, 모션 벡터들은 하나의 서브-세그먼트의 데이터 유닛으로부터 다른 서브-세그먼트의 데이터 유닛으로의 참조들의 예들을 나타낸 것이다. 변위 벡터들, 확장가능 비디오 코딩 (SVC) 기법들, 신택스 엘리먼트들을 예측하기 위한 구문 예측, 또는 다른 이러한 참조들과 같은 다른 타입들의 참조들이 또한 가능하다. 따라서, 일부 예들에서, 데이터 유닛들 (210) 중 하나 이상은 미래 서브-세그먼트 (예를 들어, B-프레임) 를 참조할 수도 있다. 그러나, 데이터 유닛들 (210) 은 또한, (예를 들어, 다른 서브-세그먼트들에 대한 참조 없이) 독립적으로 디코딩가능한 특정 정보를 포함할 수도 있다. 예를 들어, 데이터 유닛들 (210) 중 하나 이상은, 독립적으로 디코딩가능한 비디오 데이터의 I-프레임들일 수도 있다.
도 4 에 도시된 예에서, 서브-세그먼트 (204B) 는 서브-세그먼트 (204A) 와 유사하게 구성된다. 즉, 서브-세그먼트 (204B) 는, 데이터 유닛들 (216A 및 216B) 을 식별하는 데이터 유닛 포인터들 (214A 및 214B) 을 갖는 서브-세그먼트 헤더 (212) 를 포함한다. 일부 예들에서, 본 개시물의 양태들에 따르면, 상술된 세그먼트 헤더 (202) 와 유사하게, 서브-세그먼트들 (204) 은 서브-세그먼트 헤더 (206, 212) 의 데이터가 변화하였는지 여부를 나타내는 플래그를 포함할 수도 있다. 도 4 에 도시된 예에서, 서브-세그먼트 헤더 (212) 는 이전에 수신된 서브-세그먼트 헤더 (206) 의 데이터가 변화하였는지 여부를 나타내는 플래그를 포함할 수도 있다 (예를 들어, 플래그 = 0, 데이터가 변화하지 않았다; 플래그 = 1, 데이터가 변화하였다). 이에 따라, 서브-세그먼트 헤더 데이터가 변화하지 않은 예들에서, 헤더 데이터에 의해 소비된 비트들의 수가 감소될 수 있다.
여기에 설명된 기법들에 따라 세그먼트 (200) 를 활용하는 것은, (예를 들어, 복수의 서브-세그먼트들을 포함하지 않는 세그먼트에 비해) 레이턴시를 감소시킬 수 있다. 즉, 본 개시물의 양태들에 따르면, 네트워크를 통해 세그먼트를 송신하는 것을 담당하는 디바이스, 예컨대, 서버 디바이스 (60) 또는 콘텐츠 준비 디바이스 (20) (또는 서버 디바이스 (60) 와 콘텐츠 준비 디바이스 (20) 양쪽의 기능성을 구현하는 디바이스) 는, 서브-세그먼트 (204A) 가 형성되자마자 (예를 들어, 서브-세그먼트 (204A) 의 마지막 데이터 유닛이 수신/인코딩되자마자) 서브-세그먼트 (204A) 를 송신할 수도 있다. 즉, 서버 디바이스 (60) 는 서브-세그먼트 (204A) 의 송신 전에 다수의 서브-세그먼트들이 형성되기를 기다릴 필요가 없다. 또한, 서버 디바이스 (60) 는 서브-세그먼트 (204A) 의 송신 전에 세그먼트 헤더 (202) 가 완료되기를 기다릴 필요가 없다.
클라이언트 디바이스 (40) 와 같은 클라이언트 디바이스가 서브-세그먼트들 (204) 의 수신시 서브-세그먼트들 (204) 의 적어도 일 부분을 즉시 디코딩하기 시작할 수도 있기 때문에, 서브-세그먼트들 (204) 이 형성/인코딩되자마자 서브-세그먼트들 (204) 을 송신하는 것은 레이턴시를 감소시킬 수도 있다. 즉, 도 4 에 도시된 예에서, 서브-세그먼트 (204A) 의 특정 데이터 유닛들 (210) 은 서브-세그먼트 (204B) 의 데이터 유닛들 (216) 중 하나 이상을 참조할 수도 있지만, 클라이언트 디바이스는 서브-세그먼트 (204A) 의 데이터 유닛들 (210) 중 일부 (예를 들어, 서브-세그먼트 (204A) 에 포함된 I-프레임들) 를 즉시 디코딩하기 시작할 수도 있다. 또한, 클라이언트 디바이스 (40) 는, 통상적으로 서브-세그먼트들 (204A, 204B) 에 후속하는 세그먼트 (200) 에 대한 세그먼트 헤더 (202) 의 수신시 전체 세그먼트 (200) 를 디코딩하여 끝낼 준비가 되어 있다. 즉, 클라이언트 디바이스 (40) 는 이미 서브-세그먼트들 (204A 및 204B) 을 수신하여 세그먼트 헤더 (202) 의 수신시 즉시 디코딩하기 시작할 준비가 되어 있다.
본 개시물의 기법들에 따르면, 일 예에서, 세그먼트 (200) 는, 아래에 도시된 표 2 에 따라 배열될 수도 있다:
표 2 - 서브-세그먼트들을 갖는 세그먼트 헤더
헤더
- 고정된 테이블 헤더
서브-세그먼트 헤더 1
- 데이터 유닛 1 에 대한 오프셋
- 데이터 유닛 2 에 대한 오프셋
데이터 유닛 1
데이터 유닛 2
서브-세그먼트 헤더 2
- 데이터 유닛 3 에 대한 오프셋
- 데이터 유닛 4 에 대한 오프셋
데이터 유닛 3
데이터 유닛 4
본 개시물의 일부 양태들에 따르면, 세그먼트 (200) 는 DASH 또는 브로드캐스트 네트워크 송신을 통한 다른 스트리밍 네트워크 프로토콜들에 따라 멀티미디어 데이터를 송신하도록 구성될 수도 있다. 예를 들어, 서버 디바이스 (60) 는 브로드캐스트를 통한 하나 이상의 클라이언트 디바이스들 (40) 에게의 송신을 위한 복수의 서브-세그먼트들 (204) 을 갖는 세그먼트 (200) 를 준비할 수도 있다. 일부 예들에서, 클라이언트 디바이스 (40) 는, 상술된 바와 같이, 세그먼트 (200) 의 서브-세그먼트들 (204) 을 포함하는 브로드캐스트 네트워크 송신물을 수신할 수도 있다.
도 4 가 서브-세그먼트들 (204A 및 204B) 이 유사하게 구성된 것으로 예시되어 있지만, 일부 예들에서, 리프리젠테이션의 세그먼트들은 유사하게 구성된 세그먼트들을 포함하지 않을 수도 있다는 것을 이해해야 한다. 예를 들어, 리프리젠테이션은, 분할되지 않은 하나 이상의 서브-세그먼트들뿐만 아니라, 서브-세그먼트들로 분할된 하나 이상의 세그먼트들을 포함할 수도 있다.
도 5 는 본 개시물에 설명된 기법들에 따라 일 예시적인 방법을 예시한 흐름도이다. 도 5 의 방법은 콘텐츠 준비 디바이스 (20) 및 클라이언트 디바이스 (40) (도 1) 에 대해 설명되었지만, 다른 디바이스들이 도 5 의 방법의 기법들과 유사한 기법들을 구현할 수도 있다는 것을 이해해야 한다. 예를 들어, 콘텐츠 전달 네트워크의 하나 이상의 네트워크 디바이스들 또는 서버 디바이스 (60) 는 서버 디바이스 (60) 에 기인하는 기능들 중 일부 또는 전부를 수행할 수도 있다.
(콘텐츠를 클라이언트 디바이스에 제공할 수도 있는 "서버 디바이스" 라고 일반적으로 지칭될 수도 있는) 콘텐츠 준비 디바이스 (20) 는 우선, 멀티미디어 콘텐츠의 리프리젠테이션을 위한 데이터를 획득할 수도 있다 (260). 더 구체적으로는, 콘텐츠 준비 디바이스 (20) 는 멀티미디어 콘텐츠의 주어진 리프리젠테이션을 위한 미디어 데이터의 세그먼트를 획득할 수도 있다. 본 개시물의 일부 양태들에 따르면, 콘텐츠 준비 디바이스 (20) 는 미디어 데이터의 세그먼트와 연관된 헤더 데이터가 변화하였는지 여부를 나타내는 플래그를 발생시킬 수도 있다 (261). 즉, 콘텐츠 준비 디바이스 (20) 는 세그먼트의 헤더 데이터가 이전에 인코딩된 세그먼트의 헤더 데이터 (이러한 세그먼트가 존재한다면) 와 상이한지 여부를 나타낼 수도 있다. 콘텐츠 준비 디바이스 (20) 는 헤더 데이터가 변화되지 않은 것을 나타내기 위해 세그먼트 헤더 플래그를 "0" 의 값으로 설정할 수도 있고, 또는 헤더 데이터가 상이하다는 것을 나타내기 위해 세그먼트 헤더 플래그를 "1" 의 값으로 설정할 수도 있다 (예를 들어, 적절한 헤더 데이터가 후속함).
콘텐츠 준비 디바이스 (20) 는 그 후에 제 1 서브-세그먼트를 형성할 수도 있다 (262). 예를 들어, 콘텐츠 준비 디바이스 (20) 는, 제 1 서브-세그먼트에 포함된 하나 이상의 데이터 유닛들을 식별하는 데이터 유닛 포인터들을 포함하는 서브-세그먼트 헤더를 갖는, 도 4 에 도시된 서브-세그먼트들 (204) 과 유사한 서브-세그먼트를 형성할 수도 있다. 또한, 위에 언급된 바와 같이, 서브-세그먼트는 독립적으로 디코딩가능하지 않을 수도 있다. 즉, 제 1 서브-세그먼트는, (아래에 설명되는 제 2 서브-세그먼트와 같은 미래 서브-세그먼트들뿐만 아니라) 하나 이상의 다른 서브-세그먼트들의 하나 이상의 데이터 유닛들을 참조하는 하나 이상의 데이터 유닛들을 포함할 수도 있다.
일단 형성되었다면, 콘텐츠 준비 디바이스 (20) 는 제 1 서브-세그먼트를 클라이언트 디바이스 (40) 에 전송한다 (264). 본 개시물의 일 양태에 따르면, 콘텐츠 준비 디바이스 (20) 는 (후속하는 서브-세그먼트들뿐만 아니라) 제 1 서브-세그먼트를 브로드캐스트할 수도 있다. 콘텐츠 준비 디바이스 (20) 가 제 1 서브-세그먼트를 송신한 후에, 클라이언트 디바이스 (40) 는 제 1 서브-세그먼트를 수신한다 (266). 일부 예들에서, 클라이언트 디바이스 (40) 는 디코딩을 위해 제 1 서브-세그먼트를 준비할 수도 있다 (268). 예를 들어, 클라이언트 디바이스 (40) 는 디코딩을 위해 제 1 서브-세그먼트를 버퍼링 또는 그렇지 않으면 준비할 수도 있어서, 제 1 서브-세그먼트가 세그먼트 헤더 데이터의 수신시 즉시 디코딩될 수도 있도록 한다.
또한, 콘텐츠 준비 디바이스 (20) 는 제 2 서브-세그먼트를 형성한다 (272). 제 2 서브-세그먼트는 상술된 제 1 서브-세그먼트와 유사한 방식으로 형성될 수도 있다. 형성 후에, 콘텐츠 준비 디바이스 (20) 는 (서브-세그먼트 헤더 데이터를 갖는) 제 2 서브-세그먼트를 클라이언트 디바이스 (40) 에 전송할 수도 있다 (274). 클라이언트 디바이스 (40) 는 그 후에 제 2 서브-세그먼트를 수신한다 (276). 일부 예들에서, 클라이언트 디바이스 (40) 는 제 1 서브-세그먼트에 대해 상술된 것과 유사한 방식으로 디코딩을 위해 제 2 서브-세그먼트를 준비할 수도 있다 (278).
제 2 서브-세그먼트의 형성 및 송신 후에, 콘텐츠 준비 디바이스 (20) 는, 서브-세그먼트들 전부 (예를 들어, 도 5 에 도시된 예에서는, 제 1 및 제 2 서브-세그먼트들) 에 적용가능한 세그먼트 헤더를 형성할 수도 있다 (280). 또한, 콘텐츠 준비 디바이스 (20) 는 세그먼트 헤더를 클라이언트 디바이스 (40) 에 전송할 수도 있다 (282). 클라이언트 디바이스 (40) 는 그 후에 세그먼트 헤더를 수신하고 (284) 제 1 및 제 2 서브-세그먼트들을 디코딩할 수도 있다 (286). 즉, 클라이언트 디바이스 (40) 는 이전에 수신된 서브-세그먼트들 각각을 디코딩할 수도 있다.
이러한 방식으로, 도 5 의 방법은, 멀티미디어 데이터의 세그먼트의 제 1 서브-세그먼트를 수신하는 단계를 포함하는 방법의 일 예를 나타낸 것이고, 이 제 1 서브-세그먼트는, 제 1 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 1 헤더 및 그 데이터 유닛들의 제 1 세트를 포함하고, 데이터 유닛들 중 적어도 하나는 세그먼트의 제 2 서브-세그먼트의 데이터 유닛을 참조한다. 또한, 이 방법은, 제 1 서브-세그먼트의 수신 후에, 제 2 서브-세그먼트를 수신하는 단계로서, 이 제 2 서브-세그먼트는, 제 2 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 2 헤더 및 그 데이터 유닛들의 제 2 세트를 포함하는, 이 제 2 서브-세그먼트를 수신하는 단계, 및 제 1 서브-세그먼트 및 제 2 서브-세그먼트의 수신 후에 세그먼트를 프로세싱하는 단계를 포함한다.
또한, 도 5 의 방법은, 멀티미디어 데이터의 세그먼트의 제 1 서브-세그먼트를 전송하는 단계를 포함하는 방법의 일 예를 나타낸 것이고, 이 제 1 서브-세그먼트는, 제 1 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 1 헤더 및 그 데이터 유닛들의 제 1 세트를 포함하고, 데이터 유닛들 중 적어도 하나는 세그먼트의 제 2 서브-세그먼트의 데이터 유닛을 참조한다. 또한, 이 방법은, 제 1 서브-세그먼트의 전송 후에, 제 2 서브-세그먼트를 전송하는 단계를 포함하고, 이 제 2 서브-세그먼트는, 제 2 서브-세그먼트 내의 하나 이상의 데이터 유닛들의 위치들을 나타내는 데이터를 포함하는 제 2 헤더 및 그 데이터 유닛들의 제 2 세트를 포함한다.
또한, 도 5 에 대해 도시 및 설명된 단계들은 단지 하나의 예로서 제공된 것이라는 것을 이해해야 한다. 즉, 도 5 의 방법의 단계들은 도 5 에 도시된 순서로 반드시 수행될 필요는 없으며, 더 적거나, 부가적이거나, 또는 대안적인 단계들이 수행될 수도 있다. 일 예에서, 도 5 에 대해 도시 및 설명된 방법은 제 1 및 제 2 서브-세그먼트들을 포함한다. 그러나, 다른 예들에서, 서버 디바이스는 미디어 데이터의 3 개 이상의 서브-세그먼트들을 준비할 수도 있다 (그리고 클라이언트 디바이스가 그 3 개 이상의 서브-세그먼트들을 수신할 수도 있다).
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현된다면, 이러한 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독가능 매체 상에 저장되거나 또는 송신될 수도 있고 하드웨어 기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체들은, 데이터 저장 매체들과 같은 유형의 (tangible) 매체에 대응하는 컴퓨터 판독가능 저장 매체, 또는, 예를 들어, 통신 프로토콜에 따라 한 장소에서 다른 장소로 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들을 포함할 수도 있다. 이런 방식으로, 컴퓨터 판독가능 매체들은 일반적으로 (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체들 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체들은 본 개시물에서 설명된 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능 매체들일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다.
비제한된 예로서, 이러한 컴퓨터 판독가능 저장 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 저장, 자기 디스크 저장, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체로 적절히 칭해진다. 예를 들어, 명령들이 웹사이트, 서버, 또는 다른 원격 소스로부터 동축 케이블, 광섬유 케이블, 연선 (twisted pair), 디지털 가입자 회선 (DSL), 또는 무선 기술들, 예컨대, 적외선, 무선, 및 마이크로파를 이용하여 송신된다면, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술은 매체의 정의에 포함된다. 그러나, 컴퓨터 판독가능 저장 매체들 및 데이터 저장 매체들은 커넥션들, 반송파들, 신호들, 또는 다른 일시적 매체들을 포함하지 않고, 그 대신에 비일시적인 유형의 저장 매체들에 관련됨을 이해해야 한다. 디스크 (disk 및 disc) 는 여기에 사용되는 바와 같이, 콤팩트 디스크 (compact disc; CD), 레이저 디스크, 광 디스크, 디지털 다용도 디스크 (DVD), 플로피 디스크 (floppy disk) 및 블루레이 디스크를 포함하는데, 디스크 (disk) 들은 보통 데이터를 자기적으로 재생하지만, 디스크 (disc) 들은 데이터를 레이저들로 광학적으로 재생한다. 위의 조합들은 또한 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 프로세서들, 예컨대, 하나 이상의 디지털 신호 프로세서들 (DSPs), 범용 마이크로프로세서들, 주문형 집적 회로들 (ASICs), 필드 프로그램가능 로직 어레이들 (FPGAs), 또는 다른 동등한 집적 또는 개별 로직 회로부에 의해 실행될 수도 있다. 따라서, 여기에 사용되는 용어 "프로세서" 는 전술한 구조 또는 여기에 설명된 기법들의 구현에 적합한 임의의 다른 구조 중 임의의 것을 나타낼 수도 있다. 또한, 일부 양태들에서, 여기에 설명된 기능성은, 인코딩 및 디코딩을 위해 구성되거나, 또는 결합형 코덱 (codec) 으로 통합되는 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수도 있다. 또한, 본 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들로 완전히 구현될 수 있다.
본 개시물의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 한 세트의 IC들 (예를 들어, 칩 셋) 을 포함하는, 매우 다양한 디바이스들 또는 장치들로 구현될 수도 있다. 다양한 컴포넌트들, 모듈들, 또는 유닛들은 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 본 개시물에서 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하지는 않는다. 오히려, 상술된 바와 같이, 다양한 유닛들은 코덱 하드웨어 유닛에 결합되거나, 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 상술된 하나 이상의 프로세서들을 포함하는, 상호운용적 하드웨어 유닛들의 컬렉션에 의해 제공될 수도 있다.
다양한 예들이 설명되어 있다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.

Claims (1)

  1. 본원 발명의 상세한 설명에 기재된 방법.
KR1020157018423A 2011-09-06 2012-08-31 코딩된 비디오 데이터의 네트워크 스트리밍 KR101838789B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161531550P 2011-09-06 2011-09-06
US61/531,550 2011-09-06
US13/561,075 2012-07-29
US13/561,075 US9357275B2 (en) 2011-09-06 2012-07-29 Network streaming of coded video data
PCT/US2012/053375 WO2013036450A1 (en) 2011-09-06 2012-08-31 Network streaming of coded video data

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020147008626A Division KR101784051B1 (ko) 2011-09-06 2012-08-31 코딩된 비디오 데이터의 네트워크 스트리밍

Publications (2)

Publication Number Publication Date
KR20150088899A true KR20150088899A (ko) 2015-08-03
KR101838789B1 KR101838789B1 (ko) 2018-03-14

Family

ID=47754020

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020157018423A KR101838789B1 (ko) 2011-09-06 2012-08-31 코딩된 비디오 데이터의 네트워크 스트리밍
KR1020147008626A KR101784051B1 (ko) 2011-09-06 2012-08-31 코딩된 비디오 데이터의 네트워크 스트리밍

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020147008626A KR101784051B1 (ko) 2011-09-06 2012-08-31 코딩된 비디오 데이터의 네트워크 스트리밍

Country Status (6)

Country Link
US (2) US9357275B2 (ko)
EP (1) EP2754302B1 (ko)
JP (2) JP6049728B2 (ko)
KR (2) KR101838789B1 (ko)
CN (2) CN106878804B (ko)
WO (1) WO2013036450A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190010568A (ko) * 2016-05-24 2019-01-30 퀄컴 인코포레이티드 샘플 엔트리들 및 랜덤 액세스
KR20190010567A (ko) * 2016-05-24 2019-01-30 퀄컴 인코포레이티드 샘플 엔트리들 및 랜덤 액세스
KR20190031490A (ko) * 2016-07-28 2019-03-26 퀄컴 인코포레이티드 미디어 스트리밍을 위한 세그먼트 청크들의 취출 및 액세스
KR20190039724A (ko) * 2016-08-24 2019-04-15 퀄컴 인코포레이티드 미디어 데이터 스트리밍을 위한 sei 트랙들의 시스템 레벨 시그널링

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX2014000048A (es) 2011-07-02 2014-04-30 Samsung Electronics Co Ltd Metodo y aparato para multiplexar y desmultiplexar datos de video para identificar el estado de reproduccion de los datos de video.
US9357275B2 (en) 2011-09-06 2016-05-31 Qualcomm Incorporated Network streaming of coded video data
US10136165B2 (en) * 2011-09-14 2018-11-20 Mobitv, Inc. Distributed scalable encoder resources for live streams
US8977704B2 (en) * 2011-12-29 2015-03-10 Nokia Corporation Method and apparatus for flexible caching of delivered media
GB2501271B (en) * 2012-04-17 2015-05-06 Canon Kk Method and device for receiving multimedia data
US9674247B1 (en) * 2012-06-21 2017-06-06 Google Inc. Generating manifest files for digital media items
US10616297B2 (en) * 2012-07-09 2020-04-07 Futurewei Technologies, Inc. Content-specific identification and timing behavior in dynamic adaptive streaming over hypertext transfer protocol
JP6236459B2 (ja) * 2012-10-19 2017-11-22 インターデイジタル パテント ホールディングス インコーポレイテッド Httpストリーミングのための多仮説レート適合
US9521393B2 (en) 2013-01-07 2016-12-13 Qualcomm Incorporated Non-nested SEI messages in video coding
JP6270873B2 (ja) * 2013-01-15 2018-01-31 華為技術有限公司Huawei Technologies Co.,Ltd. メディアコンテンツの適応型ストリーミングのための品質情報の使用
US9432426B2 (en) 2013-02-04 2016-08-30 Qualcomm Incorporated Determining available media data for network streaming
US9854017B2 (en) * 2013-03-15 2017-12-26 Qualcomm Incorporated Resilience in the presence of missing media segments in dynamic adaptive streaming over HTTP
US9936266B2 (en) * 2013-05-17 2018-04-03 Tencent Technology (Shenzhen) Company Limited Video encoding method and apparatus
RU2655744C2 (ru) * 2013-07-17 2018-05-30 Сони Корпорейшн Устройство подачи содержания, способ подачи содержания, программа, оконечное устройство и система подачи содержания
WO2015013687A1 (en) * 2013-07-25 2015-01-29 Futurewei Technologies, Inc. System and method for effectively controlling client behavior in adaptive streaming
US9955203B2 (en) 2013-09-24 2018-04-24 Ericsson Ab Recording device and method for efficient network personal video recorder manipulation through adaptive bit rate streaming
JP2015136059A (ja) * 2014-01-17 2015-07-27 ソニー株式会社 通信装置、通信データ生成方法、および通信データ処理方法
JP5725235B1 (ja) * 2014-04-22 2015-05-27 ソニー株式会社 受信装置及び受信方法、並びに、送信装置及び送信方法
GB2528039A (en) * 2014-07-01 2016-01-13 Canon Kk Method for identifying objects across time periods and corresponding device
US10432688B2 (en) * 2015-03-13 2019-10-01 Telefonaktiebolaget Lm Ericsson (Publ) System and method for optimized delivery of live ABR media
AU2016245350B2 (en) 2015-04-09 2019-10-24 Dejero Labs Inc. Systems, devices and methods for distributing data with multi-tiered encoding
CN106303673B (zh) * 2015-06-04 2021-01-22 中兴通讯股份有限公司 码流对齐、同步处理方法及发送、接收终端和通信系统
US10412461B2 (en) * 2015-06-12 2019-09-10 Cable Television Laboratories, Inc. Media streaming with latency minimization
US10693936B2 (en) * 2015-08-25 2020-06-23 Qualcomm Incorporated Transporting coded audio data
US20170097893A1 (en) * 2015-10-01 2017-04-06 Tridib Chakravarty Systems and methods for tape data access
FR3044194A1 (fr) * 2015-11-20 2017-05-26 B<>Com Procede de traitement de donnees codees, procede de reception de donnees codees, dispositifs et programmes d'ordinateurs correspondants
CN109219962B (zh) * 2016-06-08 2021-07-20 索尼公司 接收装置、接收方法、再现装置、再现方法、供应装置、供应方法以及程序
CN107635142B (zh) * 2016-07-18 2020-06-26 浙江大学 一种视频数据的处理方法及装置
TWI599218B (zh) * 2016-07-29 2017-09-11 元智大學 即時影音傳輸系統
KR101863598B1 (ko) * 2016-07-29 2018-06-01 주식회사 에어브로드 스트리밍 서비스를 위한 클라이언트의 동작 방법
US10033789B2 (en) * 2016-09-29 2018-07-24 Intel Corporation Connectionless wireless media broadcast
US10448116B1 (en) * 2017-03-25 2019-10-15 NetFreedom Pioneers Methods and systems for digital data transmission through satellite TV channels
CN113206826B (zh) * 2018-09-28 2022-10-04 华为技术有限公司 传输媒体数据的方法、客户端和服务器
KR20200081161A (ko) * 2018-12-27 2020-07-07 (주)아이앤아이소프트 컨텐츠 스트리밍 장치, 시스템 및 방법
US10771865B2 (en) 2019-02-11 2020-09-08 Netflix, Inc. Techniques for advancing playback of interactive media titles in response to user selections
US10979477B1 (en) 2019-03-26 2021-04-13 Amazon Technologies, Inc. Time synchronization between live video streaming and live metadata
US11997324B2 (en) 2019-10-04 2024-05-28 Novi Digital Entertainment Private Limited Systems and methods for dynamic optimization of content delivery in a wireless communication network
EP4104450A4 (en) * 2020-02-13 2024-01-24 Ssimwave Inc DISTRIBUTED MEASUREMENT OF LATENCY AND SYNCHRONIZATION DELAY BETWEEN AUDIO/VIDEO STREAMS
KR20210110097A (ko) * 2020-02-28 2021-09-07 삼성전자주식회사 영상 스트리밍 방법 및 이를 지원하는 전자 장치
US11895173B2 (en) 2022-01-07 2024-02-06 Avago Technologies International Sales Pte. Limited Gapped and/or subsegmented adaptive bitrate streams

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6240409B1 (en) * 1998-07-31 2001-05-29 The Regents Of The University Of California Method and apparatus for detecting and summarizing document similarity within large document sets
US6493709B1 (en) * 1998-07-31 2002-12-10 The Regents Of The University Of California Method and apparatus for digitally shredding similar documents within large document sets in a data processing environment
US7451177B1 (en) * 1999-08-12 2008-11-11 Avintaquin Capital, Llc System for and method of implementing a closed loop response architecture for electronic commerce
JP3925218B2 (ja) * 2002-01-30 2007-06-06 ソニー株式会社 ストリーミングシステム及びストリーミング方法、ストリーミングサーバ及びデータ配信方法、クライアント端末及びデータ復号方法、並びにプログラム及び記録媒体
JP2005086362A (ja) 2003-09-05 2005-03-31 Matsushita Electric Ind Co Ltd データ多重化方法、データ送信方法およびデータ受信方法
JP4062230B2 (ja) 2003-10-10 2008-03-19 ソニー株式会社 ファイル記録再生装置、ファイル記録再生方法、ファイル記録再生方法のプログラム及びファイル記録再生方法のプログラムを記録した記録媒体
WO2005043328A2 (en) * 2003-10-29 2005-05-12 Interactic Holdings, Llc Highly parallel switching systems utilizing error correction
US7512313B2 (en) * 2004-02-11 2009-03-31 Intel Corporation System and method for automatically capturing user edits in a digital recording
US7970618B2 (en) 2004-04-02 2011-06-28 Kddi Corporation Content distribution server for distributing content frame for reproducing music and terminal
JP2006129078A (ja) 2004-10-28 2006-05-18 Canon Inc データファイル編集方法及び装置及び制御プログラム及び記憶媒体
US7289931B2 (en) * 2005-03-24 2007-10-30 Sap Aktiengesellschaft Electronic location code
DK1882343T3 (da) 2005-05-13 2019-07-29 Qualcomm Inc Forbedring af fejlrobustheden under anvendelse af båndbiblioteksoplysningsinformation
CN101064669A (zh) * 2006-04-29 2007-10-31 互联天下科技发展(深圳)有限公司 一种网络实时播放多媒体数据的方法
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
CN101212476A (zh) * 2006-12-30 2008-07-02 中兴通讯股份有限公司 流媒体技术中根据rtp包生成iso媒体文件的方法
CN101222480B (zh) * 2007-01-09 2012-05-09 中兴通讯股份有限公司 根据rtp包生成iso媒体文件的方法及其读取方法
CN101035262A (zh) * 2007-04-19 2007-09-12 深圳市融合视讯科技有限公司 一种视频信息的传输方法
US8265140B2 (en) * 2008-09-30 2012-09-11 Microsoft Corporation Fine-grained client-side control of scalable media delivery
US8392942B2 (en) * 2008-10-02 2013-03-05 Sony Corporation Multi-coded content substitution
AU2009335146B2 (en) * 2008-12-31 2012-12-20 Apple Inc. Method for streaming multimedia data over a non-streaming protocol
CN102301679A (zh) * 2009-01-20 2011-12-28 Rgb网络有限公司 用于拼接媒体文件的系统和方法
CN101510994A (zh) * 2009-03-04 2009-08-19 浪潮电子信息产业股份有限公司 一种利用移动通信网络回传的单向有线电视机顶盒视频点播方法
US20110096828A1 (en) * 2009-09-22 2011-04-28 Qualcomm Incorporated Enhanced block-request streaming using scalable encoding
US9237387B2 (en) * 2009-10-06 2016-01-12 Microsoft Technology Licensing, Llc Low latency cacheable media streaming
KR101737084B1 (ko) * 2009-12-07 2017-05-17 삼성전자주식회사 메인 콘텐트에 다른 콘텐트를 삽입하여 스트리밍하는 방법 및 장치
JP2013038766A (ja) 2011-07-12 2013-02-21 Sharp Corp 送信装置、送信装置の制御方法、制御プログラム、及び記録媒体
US9357275B2 (en) * 2011-09-06 2016-05-31 Qualcomm Incorporated Network streaming of coded video data
US9843844B2 (en) * 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190010568A (ko) * 2016-05-24 2019-01-30 퀄컴 인코포레이티드 샘플 엔트리들 및 랜덤 액세스
KR20190010567A (ko) * 2016-05-24 2019-01-30 퀄컴 인코포레이티드 샘플 엔트리들 및 랜덤 액세스
KR20190031490A (ko) * 2016-07-28 2019-03-26 퀄컴 인코포레이티드 미디어 스트리밍을 위한 세그먼트 청크들의 취출 및 액세스
KR20190039724A (ko) * 2016-08-24 2019-04-15 퀄컴 인코포레이티드 미디어 데이터 스트리밍을 위한 sei 트랙들의 시스템 레벨 시그널링

Also Published As

Publication number Publication date
KR101838789B1 (ko) 2018-03-14
CN103765914A (zh) 2014-04-30
US20160255133A1 (en) 2016-09-01
JP6049728B2 (ja) 2016-12-21
CN106878804B (zh) 2019-10-18
US9357275B2 (en) 2016-05-31
US20130060956A1 (en) 2013-03-07
JP6342457B2 (ja) 2018-06-13
JP2017022715A (ja) 2017-01-26
KR20140054418A (ko) 2014-05-08
US9900363B2 (en) 2018-02-20
WO2013036450A1 (en) 2013-03-14
EP2754302A1 (en) 2014-07-16
JP2014529258A (ja) 2014-10-30
CN103765914B (zh) 2016-10-12
EP2754302B1 (en) 2021-12-22
KR101784051B1 (ko) 2017-10-10
CN106878804A (zh) 2017-06-20

Similar Documents

Publication Publication Date Title
KR101838789B1 (ko) 코딩된 비디오 데이터의 네트워크 스트리밍
KR101558116B1 (ko) 코딩된 멀티미디어 데이터의 네트워크 스트리밍 동안의 표현들 사이의 전환
KR101445987B1 (ko) 스트리밍 비디오 데이터를 위한 시퀀스 데이터 세트들의 제공
EP3095247B1 (en) Robust live operation of dash
KR102434300B1 (ko) 샘플 엔트리들 및 랜덤 액세스
EP3123731A1 (en) Processing continuous multi-period content
KR102434299B1 (ko) 샘플 엔트리들 및 랜덤 액세스
KR20230162936A (ko) 오버레이 이미지들을 포함하는 실시간 전송 프로토콜을 통한 heif 형식 이미지들의 전송

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant