KR101703179B1 - 미디어 스트리밍 동안 적응 세트들 간의 스위칭 - Google Patents

미디어 스트리밍 동안 적응 세트들 간의 스위칭 Download PDF

Info

Publication number
KR101703179B1
KR101703179B1 KR1020167011846A KR20167011846A KR101703179B1 KR 101703179 B1 KR101703179 B1 KR 101703179B1 KR 1020167011846 A KR1020167011846 A KR 1020167011846A KR 20167011846 A KR20167011846 A KR 20167011846A KR 101703179 B1 KR101703179 B1 KR 101703179B1
Authority
KR
South Korea
Prior art keywords
adaptation set
media data
representation
data
representations
Prior art date
Application number
KR1020167011846A
Other languages
English (en)
Other versions
KR20160058189A (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 KR20160058189A publication Critical patent/KR20160058189A/ko
Application granted granted Critical
Publication of KR101703179B1 publication Critical patent/KR101703179B1/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/75Media network packet handling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/23439Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
    • H04L65/4069
    • H04L65/601
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/752Media network packet handling adapting media to network capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/756Media network packet handling adapting media to device capabilities
    • 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
    • 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/8455Structuring of content, e.g. decomposing content into time segments involving pointers to the content, e.g. pointers to the I-frames of the video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/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 Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

미디어 데이터를 리트리빙하기 위한 디바이스는, 제1 타입의 미디어 데이터를 포함하는 제1 적응 세트로부터 미디어 데이터를 리트리빙하고, 제1 적응 세트로부터의 미디어 데이터를 프리젠팅하고, 제1 타입의 미디어 데이터를 포함하는 제2 적응 세트로 스위칭하라는 요청에 대한 응답으로: 제2 적응 세트의 스위치 포인트를 포함하는 제2 적응 세트로부터 미디어 데이터를 리트리빙하고, 그리고 실제 플레이아웃 시간이 스위치 포인트에 대한 플레이아웃 시간을 충족시키거나 또는 초과한 이후에, 제2 적응 세트로부터의 미디어 데이터를 프리젠팅하도록 구성된 하나 또는 그 초과의 프로세서들을 포함한다.

Description

미디어 스트리밍 동안 적응 세트들 간의 스위칭{SWITCHING BETWEEN ADAPTATION SETS DURING MEDIA STREAMING}
[0001] 본 개시물은 인코딩된 멀티미디어 데이터의 저장 및 전송에 관한 것이다.
[0002] 디지털 텔레비전들, 디지털 다이렉트 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, PDA(personal digital assistant)들, 랩톱 또는 데스크톱 컴퓨터들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게임 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 라디오 텔레폰들, 비디오 원격회의 디바이스들 등을 포함하는 넓은 범위의 디바이스들에 디지털 비디오 능력들이 통합될 수 있다. 디지털 비디오 디바이스들은, 디지털 비디오 정보를 더욱 효율적으로 송수신하기 위해, 비디오 압축 기술들, 예컨대, MPEG-2, MPEG-4, ITU-T H.263 또는 ITU-T H.264/MPEG-4, Part 10, AVC(Advanced Video Coding)에 의해 정의된 표준들, 및 이러한 표준들의 확장들에서 설명된 것들을 구현한다.
[0003] 비디오 데이터가 인코딩된 이후에, 비디오 데이터는 송신 또는 저장을 위해 패킷화될 수 있다. 비디오 데이터는 다양한 표준들 중 임의의 표준, 예컨대, ISO(International Organization for Standardization) 기반 미디어 파일 포맷 및 그것의 확장들, 예컨대, MP4 파일 포맷 및 AVC(advanced video coding) 파일 포맷에 따르는 비디오 파일로 어셈블링될 수 있다. 이러한 패킷화된 비디오 데이터는 다양한 방식들로, 예컨대, 네트워크 스트리밍을 사용하는 컴퓨터 네트워크를 통한 송신으로 전송될 수 있다.
[0004] 일반적으로, 본 개시물은, 예컨대, 네트워크를 통한 미디어 데이터의 스트리밍 동안 적응 세트들 간의 스위칭에 관련된 기술들을 설명한다. 일반적으로, 적응 세트는 특정 타입의 미디어 데이터, 예컨대, 비디오, 오디오, 타임드 텍스트 등을 포함할 수 있다. 통상적으로, 네트워크를 통한 미디어 스트리밍에서, 적응 세트 내의 표현들 간의 스위칭을 위한 기술들이 제공되었지만, 본 개시물의 기술들은 일반적으로 적응 세트들 자체들 간의 스위칭에 관한 것이다.
[0005] 일 예에서, 미디어 데이터를 리트리빙하는 방법은, 제1 타입의 미디어 데이터를 포함하는 제1 적응 세트로부터 미디어 데이터를 리트리빙하는 단계, 제1 적응 세트로부터의 미디어 데이터를 프리젠팅하는 단계, 제1 타입의 미디어 데이터를 포함하는 제2 적응 세트로 스위칭하라는 요청에 대한 응답으로: 제2 적응 세트의 스위치 포인트를 포함하는 미디어 데이터를 제2 적응 세트로부터 리트리빙하는 단계, 및 실제 플레이아웃 시간이 스위치 포인트에 대한 플레이아웃 시간을 충족시키거나 또는 초과한 이후에, 제2 적응 세트로부터의 미디어 데이터를 프리젠팅하는 단계를 포함한다.
[0006] 다른 예에서, 미디어 데이터를 리트리빙하기 위한 디바이스는, 제1 타입의 미디어 데이터를 포함하는 제1 적응 세트로부터 미디어 데이터를 리트리빙하고, 제1 적응 세트로부터의 미디어 데이터를 프리젠팅하고, 제1 타입의 미디어 데이터를 포함하는 제2 적응 세트로 스위칭하라는 요청에 대한 응답으로: 제2 적응 세트의 스위치 포인트를 포함하는 미디어 데이터를 제2 적응 세트로부터 리트리빙하고, 그리고 실제 플레이아웃 시간이 스위치 포인트에 대한 플레이아웃 시간을 충족시키거나 또는 초과한 이후에, 제2 적응 세트로부터의 미디어 데이터를 프리젠팅하도록 구성된 하나 또는 그 초과의 프로세서들을 포함한다.
[0007] 다른 예에서, 미디어 데이터를 리트리빙하기 위한 디바이스는, 제1 타입의 미디어 데이터를 포함하는 제1 적응 세트로부터 미디어 데이터를 리트리빙하기 위한 수단, 제1 적응 세트로부터의 미디어 데이터를 프리젠팅하기 위한 수단, 제1 타입의 미디어 데이터를 포함하는 제2 적응 세트로 스위칭하라는 요청에 대한 응답으로, 제2 적응 세트의 스위치 포인트를 포함하는 미디어 데이터를 제2 적응 세트로부터 리트리빙하기 위한 수단, 및 이 요청에 대한 응답으로, 실제 플레이아웃 시간이 스위치 포인트에 대한 플레이아웃 시간을 충족시키거나 또는 초과한 이후에, 제2 적응 세트로부터의 미디어 데이터를 프리젠팅하기 위한 수단을 포함한다.
[0008] 다른 예에서, 컴퓨터-판독가능 저장 매체는, 실행될 때, 프로세서로 하여금, 제1 타입의 미디어 데이터를 포함하는 제1 적응 세트로부터 미디어 데이터를 리트리빙하게 하고, 제1 적응 세트로부터의 미디어 데이터를 프리젠팅하게 하고, 제1 타입의 미디어 데이터를 포함하는 제2 적응 세트로 스위칭하라는 요청에 대한 응답으로: 제2 적응 세트의 스위치 포인트를 포함하는 미디어 데이터를 제2 적응 세트로부터 리트리빙하게 하고, 그리고 실제 플레이아웃 시간이 스위치 포인트에 대한 플레이아웃 시간을 충족시키거나 또는 초과한 이후에, 제2 적응 세트로부터의 미디어 데이터를 프리젠팅하게 하는 명령들을 저장하고 있다.
[0009] 하나 또는 그 초과의 예들의 세부사항들이 첨부된 도면들 및 하기의 설명에서 제시된다. 다른 특징들, 오브젝트들, 및 장점들은 설명 및 도면들로부터 그리고 청구항들로부터 명백할 것이다.
[0010] 도 1은 네트워크를 통해 미디어 데이터를 스트리밍하기 위한 기술들을 구현하는 예시적 시스템을 예시하는 블록도이다.
[0011] 도 2는 예시적 멀티미디어 콘텐트의 엘리먼트들을 예시하는 개념도이다.
[0012] 도 3은 멀티미디어 콘텐트의 표현의 세그먼트에 대응할 수 있는 예시적 비디오 파일의 엘리먼트들을 예시하는 블록도이다.
[0013] 도 4a 및 도 4b는 본 개시물의 기술들에 따른, 재생 동안 적응 세트들 간의 스위칭을 위한 예시적 방법을 예시하는 흐름도들이다.
[0014] 도 5는 본 개시물의 기술들에 따른, 적응 세트들 간의 스위칭을 위한 다른 예시적 방법을 예시하는 흐름도이다.
[0015] 일반적으로, 본 개시물은 네트워크를 통한 멀티미디어 데이터, 예컨대, 오디오 및 비디오 데이터의 스트리밍에 관련된 기술들을 설명한다. 본 개시물의 기술들은 DASH(dynamic adaptive streaming over HTTP)와 함께 사용될 수 있다. 본 개시물은 네트워크 스트리밍과 함께 수행될 수 있는 다양한 기술들을 설명하고, 이 기술들 중 임의의 기술 또는 그 전부는 단독으로 또는 임의의 결합으로 구현될 수 있다. 하기에 더욱 상세히 설명되는 바와 같이, 네트워크 스트리밍을 수행하는 다양한 디바이스들이 본 개시물의 기술들을 구현하도록 구성될 수 있다.
[0016] 네트워크를 통해 데이터를 스트리밍하기 위한 DASH 및 유사한 기술들에 따라, 멀티미디어 콘텐트(예컨대, 오디오 데이터, 비디오 데이터, 텍스트 오버레이들, 또는 다른 데이터를 또한 포함할 수 있는, 집합적으로 "미디어 데이터"로 지칭되는 무비 또는 다른 미디어 콘텐트)는 다양한 방식들로, 그리고 다양한 특징들을 갖게 인코딩될 수 있다. 콘텐트 준비 디바이스는 동일한 멀티미디어 콘텐트의 다수의 표현들을 형성할 수 있다. 다양한 코딩 및 렌더링 능력들을 갖는 다양하고 상이한 클라이언트 디바이스들에 의해 사용 가능한 데이터를 제공하기 위해, 각각의 표현은 특징들, 예컨대, 코딩 및 렌더링 특징들의 특정 세트에 대응할 수 있다. 게다가, 다양한 비트레이트들을 갖는 표현들은 대역폭 적응을 허용할 수 있다. 즉, 클라이언트 디바이스는 현재 이용 가능한 대역폭의 양을 결정하고, 그리고 클라이언트 디바이스의 코딩 및 렌더링 능력들과 함께, 이용 가능한 대역폭의 양에 기초하여 표현을 선택할 수 있다.
[0017] 일부 예들에서, 콘텐트 준비 디바이스는, 표현들의 세트가 공통 특징들의 세트를 가짐을 표시할 수 있다. 이후, 콘텐트 준비 디바이스가 세트의 표현들이 적응 세트를 형성함을 표시할 수 있어, 세트의 표현들이 대역폭 적응에 사용될 수 있다. 즉, 적응 세트의 표현들은 비트레이트가 서로 상이하지만, 그 외에는, 실질적으로 동일한 특징들(예컨대, 코딩 및 렌더링 특징들)을 공유할 수 있다. 이러한 방식으로, 클라이언트 디바이스는 멀티미디어 콘텐트의 다양한 적응 세트들에 대한 공통 특징들을 결정하고, 그리고 클라이언트 디바이스의 코딩 및 렌더링 능력들에 기초하여 적응 세트를 선택할 수 있다. 이후, 클라이언트 디바이스는, 대역폭 이용가능성에 기초하여, 선택된 적응 세트의 표현들 간에 적응식으로 스위칭할 수 있다.
[0018] 일부 경우들에서, 적응 세트들은 포함된 콘텐트의 특정 타입들에 대해 구성될 수 있다. 예컨대, 장면의, 각각의 카메라 각도 또는 카메라 원근(perspective)에 대한 적어도 하나의 적응 세트가 존재하게, 비디오 데이터에 대한 적응 세트들이 형성될 수 있다. 다른 예로서, 오디오 데이터 및/또는 타임드 텍스트(예컨대, 자막 텍스트 데이터)에 대한 적응 세트들이 상이한 언어들에 대해 제공될 수 있다. 즉, 각각의 원하는 언어에 대한 오디오 적응 세트 및/또는 타임드 텍스트 적응 세트가 존재할 수 있다. 이는 클라이언트 디바이스가 사용자 선호도들, 예컨대, 오디오 및/또는 비디오에 대한 언어 선호도에 기초하여 적절한 적응 세트를 선택하도록 허용할 수 있다. 다른 예로서, 클라이언트 디바이스는 사용자 선호도에 기초하여 하나 또는 그 초과의 카메라 각도들을 선택할 수 있다. 예컨대, 사용자는 특정 장면을 대안적 카메라 각도로 보기를 원할 수 있다. 다른 예로서, 사용자는 삼차원(3D) 비디오를 비교적 더 깊거나 또는 더 얕은 깊이로 보기를 원할 수 있고, 이 경우, 사용자는 비교적 더 가까운 또는 더 먼 카메라 원근들을 갖는 둘 또는 그 초과의 뷰들을 선택할 수 있다.
[0019] 표현들에 대한 데이터는, 통상적으로 세그먼트들로 지칭되는 개별 파일들로 분리될 수 있다. 파일들 각각은 특정 URL(uniform resource locator)에 의해 어드레싱 가능할 수 있다. 클라이언트 디바이스는 특정 URL에 있는 파일에 대한 GET 요청을, 이 파일을 리트리빙하기 위해 제출할 수 있다. 본 개시물의 기술들에 따라, 클라이언트 디바이스는, 예컨대, 대응하는 서버 디바이스에 의해 제공되는 URL 템플레이트에 따라, 원하는 바이트 범위의 표시를 URL 경로 자체 내에 포함시킴으로써, GET 요청을 수정할 수 있다.
[0020] 비디오 파일들, 예컨대, 미디어 콘텐트의 표현들의 세그먼트들은, ISO 기반 미디어 파일 포맷, SVC(Scalable Video Coding) 파일 포맷, AVC(Advanced Video Coding) 파일 포맷, 3GPP(Third Generation Partnership Project) 파일 포맷, 및/또는 MVC(Multiview Video Coding) 파일 포맷, 또는 다른 유사한 비디오 파일 포맷들 중 임의의 것에 따라 캡슐화된 비디오 데이터에 따를 수 있다.
[0021] ISO 기반 미디어 파일 포맷은, 미디어의 상호교환, 관리, 편집, 및 프리젠테이션을 가능하게 하는 유연하고 확장 가능한 포맷으로, 프리젠테이션을 위한 타임드 미디어 정보를 포함하도록 설계된다. ISO 기반 미디어 파일 포맷(ISO/IEC 14496-12:2004)은, 시간-기반 미디어 파일들에 대한 일반적인 구조를 정의하는 MPEG-4 Part-12에서 특정된다. ISO 기반 미디어 파일 포맷은 패밀리 내의 다른 파일 포맷들, 예컨대, H.264/MPEG-4 AVC 비디오 압축에 대한 지원이 정의된 AVC 파일 포맷(ISO/IEC 14496-15), 3GPP 파일 포맷, SVC 파일 포맷, 및 MVC 파일 포맷에 대한 기초로서 사용된다. 3GPP 파일 포맷 및 MVC 파일 포맷은 AVC 파일 포맷의 확장들이다. ISO 기반 미디어 파일 포맷은 미디어 데이터의 타임드 시퀀스들, 예컨대, 오디오-시각적 프리젠테이션들에 대한 타이밍, 구조, 및 미디어 정보를 포함한다. 파일 구조는 객체-지향일 수 있다. 파일은 단순히 기본 객체들로 분해될 수 있고, 그리고 객체들의 구조는 그들의 타입으로부터 암시될 수 있다.
[0022] ISO 기반 미디어 파일 포맷(및 그것의 확장들)에 따르는 파일들은 "박스들"로 불리는 객체들의 시리즈로서 형성될 수 있다. ISO 기반 미디어 파일 포맷의 데이터가 박스들에 포함될 수 있어, 어떠한 다른 데이터도 파일 내에 포함될 필요가 없고, 그리고 파일 내에서 박스들의 밖에 데이터가 있을 필요가 없다. 이는 특정 파일 포맷에 의해 요구되는 임의의 첫 시그너처를 포함한다. "박스"는, 고유 타입 식별자 및 길이에 의해 정의되는 객체-지향 빌딩 블록일 수 있다. 통상적으로, 프리젠테이션은 하나의 파일에 포함되고, 그리고 미디어 프리젠테이션은 자립적(self-contained)이다. 무비 컨테이너(무비 박스)는 미디어의 메타데이터를 포함할 수 있고, 그리고 비디오 및 오디오 프레임들은 미디어 데이터 컨테이너에 포함될 수 있고 그리고 다른 파일들에 있을 수 있다.
[0023] 표현(모션 시퀀스)은 세그먼트들로 때때로 지칭되는 여러 파일들에 포함될 수 있다. 타이밍 및 프레이밍(포지션 및 크기) 정보는 일반적으로 ISO 기반 미디어 파일에 있고, 그리고 보조 파일들은 본질적으로 임의의 포맷을 사용할 수 있다. 이 프리젠테이션은, 프리젠테이션을 포함하는 시스템에 대해 '로컬'일 수 있거나, 또는 네트워크 또는 다른 스트림 전달 메커니즘을 통해 제공될 수 있다.
[0024] 미디어가 스트리밍 프로토콜을 통해 전달될 때, 미디어는 그것이 파일에 표현되는 방식에서 변환될 필요가 있을 수 있다. 이것의 일 예는, 미디어가 RTP(Real-time Transport Protocol)를 통해 송신될 때이다. 예컨대, 파일에서, 비디오의 각각의 프레임은 파일-포맷 샘플로서 인접하여 저장된다. RTP에서, 이들 프레임들을 RTP 패킷들에 배치하기 위해, 사용되는 코덱에 특정한 패킷화 규칙들이 지켜져야 한다. 스트리밍 서버는, 이러한 패킷화를 실행시간임에 계산하도록 구성될 수 있다. 그러나, 스트리밍 서버들의 도움을 위한 지원이 존재한다.
[0025] 본 개시물은, 예컨대, DASH의 기술들을 사용하여, 스트리밍을 통해 리트리빙되는 미디어 데이터의 재생(플레이아웃으로 또한 지칭됨) 동안 적응 세트들 간의 스위칭을 위한 기술들을 설명한다. 예컨대, 스트리밍 동안, 사용자는, 오디오 및/또는 자막들에 대한 언어들을 스위칭하고, 대안적 카메라 각도로 보고, 또는 3D 비디오 데이터에 대한 깊이들의 상대적인 양들을 증가 또는 감소시키기를 원할 수 있다. 사용자에 협조하기 위해, 클라이언트 디바이스는, 제1 적응 세트로부터 특정한 양의 미디어 데이터를 이미 리트리빙한 이후에, 제1 적응 세트와 동일한 타입의 미디어 데이터를 포함하는 상이한 제2 적응 세트로 스위칭할 수 있다. 적어도 제2 적응 세트의 스위치 포인트가 디코딩될 때까지, 클라이언트 디바이스는 제1 적응 세트로부터 리트리빙된 미디어 데이터를 계속해서 플레이 아웃할 수 있다. 예컨대, 비디오 데이터의 경우, 스위치 포인트는 IDR(instantaneous decoder refresh) 픽처, CRA(clean random access) 픽처, 또는 다른 RAP(random access point) 픽처에 대응할 수 있다.
[0026] 본 개시물의 기술들이 특정하게, 단지 적응 세트 내의 표현들 간의 스위칭이 아니라, 적응 세트들 간의 스위칭에 관한 것임이 이해되어야 한다. 종래 기술들이 클라이언트 디바이스가 공통 적응 세트의 표현들 간에 스위칭하도록, 예컨대, 이용 가능한 네트워크 대역폭에서의 변동들에 적응하도록 허용하는 반면에, 본 개시물의 기술들은 적응 세트들 자체들 간의 스위칭에 관한 것이다. 하기에 설명되는 바와 같이, 이 적응 세트 스위칭은, 사용자가 예컨대 중단되지 않는 재생 경험으로 인해 더욱 기분 좋은 경험을 즐기도록 허용한다. 통상적으로, 사용자가 상이한 적응 세트로 스위칭하기를 원하면, 미디어 데이터의 재생이 중단될 필요가 있을 것이고, 이는 불쾌한 사용자 경험을 유발한다. 즉, 사용자는, 재생을 완전히 중지하고, 상이한 적응 세트(예컨대, 카메라 각도, 및/또는 오디오 또는 타임드 텍스트에 대한 언어)를 선택하고, 이후, 미디어 콘텐트의 시작부터 재생을 재시작할 필요가 있을 것이다. 이전 플레이 포지션(즉, 적응 세트들을 스위칭하기 위하여 미디어 재생이 중단되었던 재생 포지션)으로 돌아가기 위해, 사용자는, 트릭 모드(예컨대, 빨리 감기)에 들어가고 이전 플레이 포지션을 수동으로 찾을 필요가 있을 것이다.
[0027] 게다가, 미디어 데이터의 재생을 중단시키는 것은, 이전에 리트리빙된 미디어 데이터의 포기를 유도한다. 즉, 스트리밍 미디어 리트리벌을 수행하기 위해, 클라이언트 디바이스들은 통상적으로, 현재 재생 포지션의 앞에 있는 미디어 데이터도 또한 버퍼링한다. 이러한 방식으로, (예컨대, 대역폭 변동들에 대한 응답으로) 적응 세트의 표현들 간의 스위치가 발생할 필요가 있다면, 재생을 중단시키는 것 없이 스위치가 발생하도록 허용하기에 충분한 미디어 데이터가 버퍼에 저장된다. 그러나, 위에서 설명된 시나리오에서, 버퍼링된 미디어 데이터는 완전히 낭비될 것이다. 특히, 현재 적응 세트에 대한 버퍼링된 미디어 데이터가 폐기될 뿐만 아니라, 스위칭되고 있지 않은 다른 적응 세트들에 대한 버퍼링된 미디어 데이터도 또한 폐기될 것이다. 예컨대, 사용자가 영어 언어 오디오로부터 스페인어 언어 오디오로 스위칭하기를 원하면, 재생은 중단될 것이고, 그리고 영어 언어 오디오 및 대응하는 비디오 데이터 둘 다가 폐기될 것이다. 그 다음, 스페인어 언어 오디오 적응 세트로 스위칭한 이후에, 클라이언트 디바이스는 이전에 폐기된 바로 그 비디오 데이터를 다시 리트리빙할 것이다.
[0028] 다른 한편으로, 본 개시물의 기술들은, 예컨대, 재생을 중단시키는 것 없이, 미디어 스트리밍 동안 적응 세트들 간의 스위치를 허용한다. 예컨대, 클라이언트 디바이스는, 제1 적응 세트(그리고 더욱 구체적으로, 제1 적응 세트의 표현)으로부터 미디어 데이터를 리트리빙했을 수 있고, 그리고 제1 적응 세트로부터의 미디어 데이터를 프리젠팅하고 있을 수 있다. 제1 적응 세트로부터의 미디어 데이터를 프리젠팅하는 동안, 클라이언트 디바이스는 상이한 제2 적응 세트로 스위칭하라는 요청을 수신할 수 있다. 이 요청은, 사용자로부터의 입력에 대한 응답으로, 클라이언트 디바이스에 의해 실행되는 애플리케이션으로부터 비롯될 수 있다.
[0029] 예컨대, 사용자는 상이한 언어의 오디오로 스위칭하기를 원할 수 있고, 이 경우, 사용자는 오디오 언어들을 변경하라는 요청을 제출할 수 있다. 다른 예로서, 사용자는 상이한 언어의 타임드 텍스트로 스위칭하기를 원할 수 있고, 이 경우, 사용자는 타임드 텍스트(예컨대, 자막) 언어들을 변경하라는 요청을 제출할 수 있다. 또 다른 예로서, 사용자는 카메라 각도들을 스위칭하기를 원할 수 있고, 이 경우, 사용자는 카메라 각도들을 변경하라는 요청을 제출할 수 있다(그리고 각각의 적응 세트는 특정 카메라 각도에 대응할 수 있다). 카메라 각도들을 스위칭하는 것은, 예컨대, 3D 재생 동안 디스플레이되는 상대적 깊이를 증가 또는 감소시키기 위해, 단순히 상이한 원근으로부터 비디오를 보는 것, 또는 제2의(또는 다른 부가의) 뷰 각도로 변경하는 것일 수 있다.
[0030] 요청에 대한 응답으로, 클라이언트 디바이스는 제2 적응 세트로부터 미디어 데이터를 리트리빙할 수 있다. 특히, 클라이언트 디바이스는 제2 적응 세트로부터의 표현으로부터 미디어 데이터를 리트리빙할 수 있다. 리트리빙된 미디어 데이터는 스위치 포인트(예컨대, RAP)를 포함할 수 있다. 실제 플레이아웃 시간이 제2 적응 세트의 스위치 포인트에 대한 플레이아웃 시간을 충족시키거나 또는 초과할 때까지, 클라이언트 디바이스는 제1 적응 세트로부터의 미디어 데이터를 계속해서 프리젠팅할 수 있다. 이러한 방식으로, 클라이언트 디바이스는 제1 적응 세트의 버퍼링된 미디어 데이터를 활용할 뿐만 아니라 제1 적응 세트로부터 제2 적응 세트로의 스위치 동안 플레이아웃을 중단시키는 것을 회피할 수 있다. 다시 말해, 실제 플레이아웃 시간이 제2 적응 세트의 스위치 포인트에 대한 플레이아웃 시간을 충족시키거나 또는 초과한 이후에, 클라이언트 디바이스는 제2 적응 세트로부터의 미디어 데이터를 프리젠팅하는 것을 시작할 수 있다.
[0031] 적응 세트들 간에 스위칭할 때, 클라이언트 디바이스는 제2 적응 세트의 스위치 포인트의 포지션을 결정할 수 있다. 예컨대, 클라이언트 디바이스는 매니페스트 파일, 예컨대, MPD(media presentation description)을 참조할 수 있고, 이 매니페스트 파일은 제2 적응 세트에서 스위치 포인트의 포지션을 정의한다. 통상적으로, 공통 적응 세트의 표현들이 시간상 정렬되어, 공통 적응 세트의 표현들 각각에서의 세그먼트 경계들이 동일한 재생 시간에 발생한다. 그러나, 이는 상이한 적응 세트들로 말해질 수 없다. 즉, 공통 적응 세트의 표현들의 세그먼트들이 시간상 정렬될 수 있지만, 상이한 적응 세트들의 표현들의 세그먼트들이 반드시 시간상 정렬되는 것은 아니다. 그러므로, 하나의 적응 세트의 표현으로부터 다른 적응 세트의 표현으로 스위칭할 때 스위치 포인트의 위치를 결정하는 것은 어려울 수 있다.
[0032] 그러므로, 클라이언트 디바이스는, 제1 적응 세트의 표현(예컨대, 현재 표현), 뿐만 아니라 제2 적응 세트의 표현 둘 다에 대한 세그먼트 경계들을 결정하기 위해, 매니페스트 파일을 참조할 수 있다. 세그먼트 경계들은 일반적으로, 세그먼트 내에 포함된 미디어 데이터의 시작 및 종료 재생 시간들을 지칭한다. 세그먼트들이 반드시 상이한 적응 세트들 간에 시간상 정렬되는 것이 아니기 때문에, 클라이언트 디바이스는 시간이 겹치는 두 개의 세그먼트들에 대한 미디어 데이터를 리트리빙할 필요가 있을 수 있고, 여기서 이 두 개의 세그먼트들은 상이한 적응 세트들의 표현들로부터 나온다.
[0033] 클라이언트 디바이스는 또한, 제2 적응 세트로 스위칭하라는 요청이 수신되었던 재생 시간에 가장 가까운 스위치 포인트를 제2 적응 세트에서 찾으려고 시도할 수 있다. 통상적으로, 클라이언트 디바이스는, 제2 적응 세트로 스위칭하라는 요청이 수신되었던 시간보다 재생 시간 면에서 또한 이후에 있는 스위치 포인트를 제2 적응 세트에서 찾으려고 시도한다. 그러나, 특정 사례들에서, 적응 세트들 간에 스위칭하라는 요청이 수신되었던 재생 시간으로부터 받아들일 수 없게 멀리 있는 포지션에서 스위치 포인트가 발생할 수 있고; 통상적으로, 이는 유일하게, 스위칭될 적응 세트가 (예컨대, 자막들에 대한) 타임드 텍스트를 포함할 때이다. 이러한 사례들에서, 클라이언트 디바이스는, 스위칭하라는 요청이 수신되었던 시간보다 재생 시간이 더 이른 스위치 포인트를 요청할 수 있다.
[0034] 본 개시물의 기술들은, 예컨대, DASH(dynamic adaptive streaming over HTTP)에 따라, 네트워크 스트리밍 프로토콜들, 예컨대, HTTP 스트리밍에 적용 가능할 수 있다. HTTP 스트리밍에서, 자주 사용되는 동작들은 GET 및 부분적 GET을 포함한다. GET 동작은, 제공되는 URL(uniform resource locator) 또는 다른 식별자, 예컨대, URI와 연관된 전체 파일을 리트리빙한다. 부분적 GET 동작은, 입력 파라미터로서 바이트 범위를 수신하고, 그리고 수신된 바이트 범위에 대응하는, 파일의 연속적인 개수의 바이트들을 리트리빙한다. 따라서, 무비 프래그먼트들이 HTTP 스트리밍을 위해 제공될 수 있는데, 그 이유는 부분적 GET 동작이 하나 또는 그 초과의 개별 무비 프래그먼트들을 얻을 수 있기 때문이다. 무비 프래그먼트에서, 상이한 트랙들의 여러 트랙 프래그먼트들이 존재할 수 있음을 주목하라. HTTP 스트리밍에서, 미디어 표현은, 클라이언트가 액세스 가능한 데이터의 구조화된 콜렉션일 수 있다. 클라이언트는, 스트리밍 서비스를 사용자에게 프리젠팅하기 위해, 미디어 데이터 정보를 요청 및 다운로딩할 수 있다.
[0035] HTTP 스트리밍을 사용하여 3GPP 데이터를 스트리밍하는 예에서, 멀티미디어 콘텐트의 비디오 및/또는 오디오 데이터에 대한 다수의 표현들이 존재할 수 있다. 이러한 표현들의 매니페스트는, MPD(Media Presentation Description) 데이터 구조로 정의될 수 있다. 미디어 표현은, HTTP 스트리밍 클라이언트 디바이스가 액세스 가능한 데이터의 구조화된 콜렉션에 대응할 수 있다. HTTP 스트리밍 클라이언트 디바이스는, 스트리밍 서비스를 클라이언트 디바이스의 사용자에게 프리젠팅하기 위해, 미디어 데이터 정보를 요청 및 다운로딩할 수 있다. 미디어 표현은 MPD 데이터 구조로 설명될 수 있고, 이 MPD 데이터 구조는 MPD의 업데이트들을 포함할 수 있다.
[0036] 각각의 기간은 동일한 미디어 콘텐트에 대한 하나 또는 그 초과의 표현들을 포함할 수 있다. 표현은 오디오 또는 비디오 데이터의 다수의 대안적인 인코딩된 버전들 중 하나의 버전일 수 있다. 표현들은 다양한 특징들, 예컨대, 인코딩 타입들에 의해, 예컨대, 비디오 데이터에 대한 비트레이트, 해상도, 및/또는 코덱, 및 오디오 데이터에 대한 비트레이트, 언어, 및/또는 코덱에 의해 상이할 수 있다. 표현이란 용어는, 특정 방식으로 인코딩되며 멀티미디어 콘텐트의 특정 기간에 대응하는 인코딩된 오디오 또는 비디오 데이터의 섹션을 지칭하기 위해 사용될 수 있다.
[0037] 특정 기간의 표현들은 그룹에 할당될 수 있고, 이 그룹은 MPD의 그룹 속성에 의해 표시될 수 있다. 동일한 그룹의 표현들은 일반적으로, 서로에 대한 대안들인 것으로 간주된다. 예컨대, 특정 기간에 대한 비디오 데이터의 각각의 표현이 동일한 그룹에 할당될 수 있어, 대응하는 기간에 대한 멀티미디어 콘텐트의 비디오 데이터를 디스플레이하기 위해, 표현들 중 임의의 표현이 디코딩을 위해 선택될 수 있다. 하나의 기간 내의 미디어 콘텐트는, 존재한다면, 그룹 0으로부터의 하나의 표현에 의해, 또는 일부 예들에서, 각각의 넌-제로(non-zero) 그룹으로부터의 기껏해야 하나의 표현의 결합에 의해 표현될 수 있다. 기간의 각각의 표현에 대한 타이밍 데이터는, 이 기간의 시작 시간과 관련하여 표현될 수 있다.
[0038] 표현은 하나 또는 그 초과의 세그먼트들을 포함할 수 있다. 각각의 표현이 초기화 세그먼트를 포함할 수 있거나, 또는 표현의 각각의 세그먼트가 자가-초기화할 수 있다. 존재하는 경우, 초기화 세그먼트는 표현에 액세스하기 위한 초기화 정보를 포함할 수 있다. 일반적으로, 초기화 세그먼트는 미디어 데이터를 포함하지 않는다. 세그먼트는 식별자, 예컨대, URL(uniform resource locator)에 의해 고유하게 참조될 수 있다. MPD는 각각의 세그먼트에 대한 식별자들을 제공할 수 있다. 일부 예들에서, MPD는 또한, 범위 속성 형태의 바이트 범위들을 제공할 수 있고, 이 바이트 범위들은 URL 또는 URI에 의해 액세스 가능한 파일 내의 세그먼트에 대한 데이터에 대응할 수 있다.
[0039] 각각의 표현은 또한, 하나 또는 그 초과의 미디어 컴포넌트들을 포함할 수 있고, 여기서 각각의 미디어 컴포넌트는 하나의 개별 미디어 타입, 예컨대, 오디오, 비디오, 및/또는 (예컨대, 클로즈드 캡션(closed captioning)에 대한) 타임드 텍스트의 인코딩된 버전에 대응할 수 있다. 미디어 컴포넌트들은, 하나의 표현 내의 연속적인 미디어 세그먼트들의 경계들에 걸쳐 시간-연속적일 수 있다. 따라서, 표현은 개별 파일, 또는 세그먼트들의 시퀀스에 대응할 수 있고, 세그먼트들 각각은 동일한 코딩 및 렌더링 특징들을 포함할 수 있다.
[0040] 일부 예들에서, 본 개시물의 기술들은 하나 또는 그 초과의 잇점들을 제공할 수 있다. 예컨대, 본 개시물의 기술들은 적응 세트들 간의 스위칭을 허용하고, 이는 사용자가 즉석에서(on the fly) 동일한 타입의 미디어 간에 스위칭하도록 허용할 수 있다. 즉, 적응 세트들 간에 변경하기 위해 재생을 중지하는 것이 아니라, 사용자는 미디어의 타입(예컨대, 오디오, 타임드 텍스트, 또는 비디오)에 대한 적응 세트들 간에 스위칭하라고 요청할 수 있고, 그리고 클라이언트 디바이스는 이음매 없이(seamlessly) 스위치를 수행할 수 있다. 이는, 재생 동안 갭들 또는 일시중지들을 또한 회피하면서, 버퍼링된 미디어 데이터를 낭비하는 것을 회피할 수 있다. 이에 따라, 본 개시물의 기술들은, 네트워크 대역폭의 과잉 소모를 또한 회피하면서, 더욱 만족스러운 사용자 경험을 제공할 수 있다.
[0041] 도 1은 네트워크를 통해 미디어 데이터를 스트리밍하기 위한 기술들을 구현하는 예시적 시스템(10)을 예시하는 블록도이다. 이 예에서, 시스템(10)은 콘텐트 준비 디바이스(20), 서버 디바이스(60), 및 클라이언트 디바이스(40)를 포함한다. 클라이언트 디바이스(40) 및 서버 디바이스(60)는 네트워크(74)에 의해 통신 가능하게 커플링되고, 이 네트워크(74)는 인터넷을 포함할 수 있다. 일부 예들에서, 콘텐트 준비 디바이스(20) 및 서버 디바이스(60)가 또한 네트워크(74) 또는 다른 네트워크에 의해 커플링될 수 있거나, 또는 직접 통신 가능하게 커플링될 수 있다. 일부 예들에서, 콘텐트 준비 디바이스(20) 및 서버 디바이스(60)는 동일한 디바이스를 포함할 수 있다. 일부 예들에서, 콘텐트 준비 디바이스(20)는 준비된 콘텐트를 서버 디바이스(60)를 비롯한 복수의 서버 디바이스들로 분산시킬 수 있다. 유사하게, 일부 예들에서, 클라이언트 디바이스(40)는 서버 디바이스(60)를 비롯한 복수의 서버 디바이스들과 통신할 수 있다.
[0042] 하기에 더욱 상세히 설명되는 바와 같이, 클라이언트 디바이스(40)는 본 개시물의 특정 기술들을 수행하도록 구성될 수 있다. 예컨대, 클라이언트 디바이스(40)는 미디어 데이터의 재생 동안 적응 세트들 간에 스위칭하도록 구성될 수 있다. 클라이언트 디바이스(40)는 사용자 인터페이스를 제공할 수 있고, 이 사용자 인터페이스에 의해, 사용자는 특정 타입의 미디어, 예컨대, 오디오, 비디오, 및/또는 타임드 텍스트에 대한 적응 세트들 간에 스위칭하라는 요청을 제출할 수 있다. 이러한 방식으로, 클라이언트 디바이스(40)는 동일한 타입의 미디어 데이터에 대한 적응 세트들 간에 스위칭하라는 요청을 수신할 수 있다. 예컨대, 사용자는, 제1 언어로 된 오디오 또는 타임드 텍스트 데이터를 포함하는 적응 세트로부터 상이한 제2 언어로 된 오디오 또는 타임드 텍스트 데이터를 포함하는 적응 세트로 스위칭하라고 요청할 수 있다. 다른 예로서, 사용자는, 제1 카메라 각도에 대한 비디오 데이터를 포함하는 적응 세트로부터 상이한 제2 카메라 각도에 대한 비디오 데이터를 포함하는 적응 세트로 스위칭하라고 요청할 수 있다.
[0043] 도 1의 예에서, 콘텐트 준비 디바이스(20)는 오디오 소스(22) 및 비디오 소스(24)를 포함한다. 오디오 소스(22)는 예컨대, 오디오 인코더(26)에 의해 인코딩될 캡쳐된 오디오 데이터를 나타내는 전기 신호들을 생성하는 마이크로폰을 포함할 수 있다. 대안적으로, 오디오 소스(22)는 이전에 레코딩된 오디오 데이터를 저장하는 저장 매체, 오디오 데이터 생성기, 예컨대, 컴퓨터화된 신시사이저, 또는 오디오 데이터의 임의의 다른 소스를 포함할 수 있다. 비디오 소스(24)는 비디오 인코더(28)에 의해 인코딩될 비디오 데이터를 생성하는 비디오 카메라, 이전에 레코딩된 비디오 데이터로 인코딩된 저장 매체, 비디오 데이터 생성 유닛, 예컨대, 컴퓨터 그래픽스 소스, 또는 비디오 데이터의 임의의 다른 소스를 포함할 수 있다. 콘텐트 준비 디바이스(20)가 모든 예들에서 반드시 서버 디바이스(60)에 통신 가능하게 커플링되는 것은 아니지만, 서버 디바이스(60)에 의해 판독되는 별개의 매체에 멀티미디어 콘텐트를 저장할 수 있다.
[0044] 로우(raw) 오디오 및 비디오 데이터는 아날로그 또는 디지털 데이터를 포함할 수 있다. 아날로그 데이터는 오디오 인코더(26) 및/또는 비디오 인코더(28)에 의해 인코딩되기 이전에 디지털화될 수 있다. 말하기 참여자가 말하는 동안 이 말하기 참여자로부터 오디오 소스(22)가 오디오 데이터를 획득할 수 있고, 그리고 동시에, 비디오 소스(24)가 이 말하기 참여자의 비디오 데이터를 획득할 수 있다. 다른 예들에서, 오디오 소스(22)는 저장된 오디오 데이터를 포함하는 컴퓨터-판독가능 저장 매체를 포함할 수 있고, 그리고 비디오 소스(24)는 저장된 비디오 데이터를 포함하는 컴퓨터-판독가능 저장 매체를 포함할 수 있다. 이러한 방식으로, 본 개시물에 설명되는 기술들은 라이브, 스트리밍, 실시간 오디오 및 비디오 데이터에, 또는 아카이빙된, 프리-레코딩된 오디오 및 비디오 데이터에 적용될 수 있다.
[0045] 비디오 프레임들에 대응하는 오디오 프레임들은 일반적으로, 비디오 프레임들 내에 포함되는, 비디오 소스(24)에 의해 캡쳐된 비디오 데이터와 동시에 오디오 소스(22)에 의해 캡쳐되었던 오디오 데이터를 포함하는 오디오 프레임들이다. 예컨대, 말하기 참여자가 일반적으로 말함으로써 오디오 데이터를 생성하는 동안, 오디오 소스(22)가 오디오 데이터를 캡쳐하고, 그리고 동시에, 즉, 오디오 소스(22)가 오디오 데이터를 캡쳐하고 있는 동안, 비디오 소스(24)가 말하기 참여자의 비디오 데이터를 캡쳐한다. 따라서, 오디오 프레임은 하나 또는 그 초과의 특정 비디오 프레임들에 시간상 대응할 수 있다. 이에 따라, 비디오 프레임에 대응하는 오디오 프레임은 일반적으로, 오디오 데이터 및 비디오 데이터가 동시에 캡쳐되었고 그리고 오디오 프레임 및 비디오 프레임이 동시에 캡쳐되었던 오디오 데이터 및 비디오 데이터를 각각 포함하게 되는 상황에 대응한다.
[0046] 일반적으로, 오디오 인코더(26)가 인코딩된 오디오 데이터의 스트림을 생성하는 반면에, 비디오 인코더(28)는 인코딩된 비디오 데이터의 스트림을 생성한다. 데이터(오디오이든 또는 비디오이든 간에)의 각각의 개별 스트림은 엘리멘터리 스트림으로 지칭될 수 있다. 엘리멘터리 스트림은 디지털식으로 코딩(가능하게는, 압축)된, 표현의 단일 컴포넌트이다. 예컨대, 표현의 코딩된 비디오 또는 오디오 파트가 엘리멘터리 스트림일 수 있다. 엘리멘터리 스트림은, 비디오 파일 내에 캡슐화되기 이전에, PES(packetized elementary stream)로 변환될 수 있다. 동일한 표현 내에서, 하나의 엘리멘터리 스트림에 속하는 PES-패킷들을 다른 엘리멘터리 스트림에 속하는 PES-패킷들로부터 구별하기 위해 스트림 ID가 사용될 수 있다. 엘리멘터리 스트림의 데이터의 기본 유닛은 PES(packetized elementary stream) 패킷이다. 따라서, 코딩된 비디오 데이터는 일반적으로, 엘리멘터리 비디오 스트림들에 대응한다. 유사하게, 오디오 데이터는 하나 또는 그 초과의 개개의 엘리멘터리 스트림들에 대응한다.
[0047] 많은 비디오 코딩 표준들에 대해서와 같이, H.264/AVC는 오류 없는 비트스트림들을 위한 구문(syntax), 의미론(semantics), 및 디코딩 프로세스를 정의하고, 이들 중 임의의 것은 특정 프로파일 또는 레벨에 따른다. H.264/AVC는 인코더를 특정하지 않지만, 인코더는 생성된 비트스트림들이 디코더에 대한 표준을 준수함을 보증할 임무가 있다. 비디오 코딩 표준의 상황에서, "프로파일"은 이들에 적용되는 알고리즘들, 특징들, 또는 도구들 및 제약들의 서브세트에 대응한다. 예컨대, H.264 표준에 의해 정의된 바와 같이, "프로파일"은 H.264 표준에 의해 특정되는 전체 비트스트림 구문의 서브세트이다. "레벨"은, 픽처들의 해상도, 비트 레이트, 및 MB(macroblock) 프로세싱 레이트에 관련되는 디코더 자원 소모량, 이를테면, 예컨대, 디코더 메모리 및 컴퓨테이션의 제한들에 대응한다. 프로파일이 프로파일_idc(프로파일 표시자) 값과 함께 시그널링될 수 있는 반면에, 레벨은 레벨_idc(레벨 표시자) 값과 함께 시그널링될 수 있다.
[0048] 예컨대, H.264 표준은, 제공되는 프로파일의 구문에 의해 부과되는 바운드들 내에서, 비트스트림의 구문 엘리먼트들에 의해 취해지는 값들, 예컨대, 디코딩된 픽처들의 특정된 크기에 따라, 인코더들 및 디코더들의 성능에서의 큰 변이를 요구하는 것이 여전히 가능함을 인식한다. H.264 표준은 추가로, 많은 애플리케이션들에서, 특정 프로파일 내의 구문의 모든 가설의 사용들을 다룰 수 있는 디코더를 구현하는 것은 현실적이지도 경제적이지도 않음을 인식한다. 이에 따라, H.264 표준은, 비트스트림의 구문 엘리먼트들의 값들에 부과되는 제약들의 특정된 세트로서 "레벨"을 정의한다. 이들 제약들은 값들에 대한 단순한 한계치들일 수 있다. 대안적으로, 이들 제약들은 값들의 산술적 결합들(예컨대, 픽처 폭 곱하기 픽처 높이 곱하기 초당 디코딩되는 픽처들의 개수)에 대한 제약들의 형태를 취할 수 있다. H.264 표준은 추가로, 개별 구현들이 각각의 지원되는 프로파일에 대해 상이한 레벨을 지원할 수 있음을 제공한다. H.264 내에서 코딩의 다양한 프로파일들 및 레벨들을 수용하기 위해, 뿐만 아니라 다른 코딩 표준들, 예컨대, 다가오는 HEVC(High Efficiency Video Coding) 표준을 수용하기 위해, 멀티미디어 콘텐트의 다양한 표현들이 제공될 수 있다.
[0049] 프로파일에 따르는 디코더는 대개, 이 프로파일에서 정의된 특징들 전부를 지원한다. 예컨대, 코딩 특징으로서, B-픽처 코딩이 H.264/AVC의 베이스라인 프로파일에서는 지원되지 않지만, H.264/AVC의 다른 프로파일들에서는 지원된다. 특정 레벨에 따르는 디코더는, 레벨에 정의된 제한들을 넘어 자원들을 요구하지 않는 임의의 비트스트림을 디코딩할 수 있어야 한다. 프로파일들 및 레벨들의 정의들은 해석 가능성에 도움이 될 수 있다. 예컨대, 비디오 송신 동안, 한 쌍의 프로파일 및 레벨 정의들이 전체 송신 세션에 대해 협상 및 합의될 수 있다. 더욱 구체적으로, H.264/AVC에서, 레벨은 예컨대, 프로세싱될 필요가 있는 블록들의 개수, DPB(decoded picture buffer) 크기, CPB(coded picture buffer) 크기, 수직 모션 벡터 범위, 두 개의 연속적인 MB들마다 모션 벡터들의 최대 개수, 및 B-블록이 8x8 픽셀들 미만의 서브-블록 파티션들을 가질 수 있는지의 여부에 대한 제한들을 정의할 수 있다. 이러한 방식으로, 디코더는, 디코더가 비트스트림을 적절하게 디코딩할 수 있는지의 여부를 결정할 수 있다.
[0050] 비디오 압축 표준들, 예컨대, ITU-T H.261, H.262, H.263, MPEG-1, MPEG-2, H.264/MPEG-4 part 10, 및 다가오는 HEVC(High Efficiency Video Coding) 표준은, 시간적 리던던시(redundancy)를 감소시키기 위해, 모션 보상 시간적 예측을 사용한다. 인코더, 예컨대, 비디오 인코더(28)는, 모션 벡터들에 따라 현재 코딩된 픽처들을 예측하기 위해, 이전에 인코딩된 일부 픽처들(본원에서 프레임들로 또한 지칭됨)로부터의 모션 보상 예측을 사용할 수 있다. 통상적인 비디오 코딩에서는 세 개의 주요 픽처 타입들이 존재한다. 이들은 인트라(Intra) 코딩된 픽처("I-픽처들" 또는 "I-프레임들"), 예측(Predicted) 픽처들("P-픽처들" 또는 "P-프레임들") 및 양방향 예측(Bi-directional predicted) 픽처들("B-픽처들" 또는 "B-프레임들")이다. P-픽처들은 시간순으로 현재 픽처의 앞에 기준 픽처를 사용할 수 있다. B-픽처에서, B-픽처의 각각의 블록은 한 개 또는 두 개의 기준 픽처들로부터 예측될 수 있다. 이들 기준 픽처들은 시간순으로 현재 픽처의 앞에 또는 그 뒤에 위치될 수 있다.
[0051] 파라미터 세트들은 일반적으로, SPS(sequence parameter set)들의 시퀀스-계층 헤더 정보, 및 PPS(picture parameter set)들의 드물게 변하는 픽처-계층 헤더 정보를 포함한다. 파라미터 세트들을 이용하여, 이 드물게 변하는 정보는 각각의 시퀀스 또는 픽처에 대해 반복될 필요가 없고; 따라서, 코딩 효율이 개선될 수 있다. 또한, 파라미터 세트들의 사용은, 헤더 정보의 대역외 송신을 가능하게 할 수 있고, 오류 회복성(error resilience)을 달성하기 위한 중복적 송신들에 대한 필요가 회피된다. 대역외 송신에서, 파라미터 세트 NAL 유닛들은 다른 NAL 유닛들과는 상이한 채널 상에서 송신된다.
[0052] 도 1의 예에서, 콘텐트 준비 디바이스(20)의 캡슐화 유닛(30)은 비디오 인코더(28)로부터 코딩된 비디오 데이터를 포함하는 엘리멘터리 스트림들을 수신하고, 그리고 오디오 인코더(26)로부터 코딩된 오디오 데이터를 포함하는 엘리멘터리 스트림들을 수신한다. 일부 예들에서, 비디오 인코더(28) 및 오디오 인코더(26)는 각각, 인코딩된 데이터로부터 PES 패킷들을 형성하기 위한 패킷화기들을 포함할 수 있다. 다른 예들에서, 비디오 인코더(28) 및 오디오 인코더(26)는 각각, 인코딩된 데이터로부터 PES 패킷들을 형성하기 위한 개개의 패킷화기들과 인터페이싱할 수 있다. 또 다른 예들에서, 캡슐화 유닛(30)은 인코딩된 오디오 및 비디오 데이터로부터 PES 패킷들을 형성하기 위한 패킷화기들을 포함할 수 있다.
[0053] 비디오 인코더(28)는, 다양한 비트레이트들로 그리고 다양한 특징들을 갖게, 예컨대, 픽셀 해상도들, 프레임 레이트들, 다양한 코딩 표준들에 대한 준수, 다양한 코딩 표준들에 대한 다양한 프로파일들 및/또는 프로파일들의 레벨들에 대한 준수, (예컨대, 이차원 또는 삼차원 재생을 위한) 하나 또는 다수의 뷰들을 갖는 표현들, 또는 다른 이러한 특징들을 갖게 멀티미디어 콘텐트의 상이한 표현들을 생성하기 위해, 멀티미디어 콘텐트의 비디오 데이터를 다양한 방식들로 인코딩할 수 있다. 본 개시물에 사용된 바와 같이, 표현은 오디오 데이터 및 비디오 데이터, 예컨대, 하나 또는 그 초과의 오디오 엘리멘터리 스트림 및 하나 또는 그 초과의 비디오 엘리멘터리 스트림들의 결합을 포함할 수 있다. 각각의 PES 패킷은, PES 패킷이 속하는 엘리멘터리 스트림을 식별하는 스트림_id를 포함할 수 있다. 캡슐화 유닛(30)은 엘리멘터리 스트림들을 다양한 표현들의 비디오 파일들로 어셈블링하는 것을 책임진다.
[0054] 캡슐화 유닛(30)은 오디오 인코더(26) 및 비디오 인코더(28)로부터 표현의 엘리멘터리 스트림들에 대한 PES 패킷들을 수신하고, 그리고 PES 패킷들로부터 대응하는 NAL(network abstraction layer) 유닛들을 형성한다. H.264/AVC(Advanced Video Coding)의 예에서, 코딩된 비디오 세그먼트들은 NAL 유닛들로 조직화되고, 이 NAL 유닛들은 "네트워크-친화적" 비디오 표현 어드레싱 애플리케이션들, 예컨대, 비디오 텔레포니, 저장, 브로드캐스트, 또는 스트리밍을 제공한다. NAL 유닛들은 VCL(Video Coding Layer) NAL 유닛들 및 넌(non)-VCL NAL 유닛들로 카테고리화될 수 있다. VCL 유닛들은 코어 압축 엔진을 포함할 수 있고, 그리고 블록, 매크로블록, 및/또는 슬라이스 레벨 데이터를 포함할 수 있다. 다른 NAL 유닛들은 넌-VCL NAL 유닛들일 수 있다.
[0055] 캡슐화 유닛(30)은, 매니페스트 파일(예컨대, MPD)과 함께, 멀티미디어 콘텐트의 하나 또는 그 초과의 표현들에 대한 데이터를 출력 인터페이스(32)에 제공할 수 있다. 출력 인터페이스(32)는 네트워크 인터페이스 또는 저장 매체에 라이팅(writing)하기 위한 인터페이스, 예컨대, USB(universal serial bus) 인터페이스, CD 또는 DVD 라이터(writer) 또는 버너(burner), 자기 또는 플래시 저장 미디어에 대한 인터페이스, 또는 미디어 데이터를 저장 또는 송신하기 위한 다른 인터페이스들을 포함할 수 있다. 캡슐화 유닛(30)은 멀티미디어 콘텐트의 표현들 각각의 데이터를 출력 인터페이스(32)에 제공할 수 있고, 이 출력 인터페이스(32)는 데이터를 네트워크 송신, 다이렉트 송신, 또는 저장 미디어를 통해 서버 디바이스(60)에 전송할 수 있다. 도 1의 예에서, 서버 디바이스(60)는 다양한 멀티미디어 콘텐츠(64)를 저장하는 저장 매체(62)를 포함하고, 콘텐츠 각각은 개개의 매니페스트 파일(66) 및 하나 또는 그 초과의 표현들(68A-68N)(표현들(68))을 포함한다. 본 개시물의 기술들에 따라, 매니페스트 파일(66)의 부분들은 별개의 위치들에 저장될 수 있는데, 예컨대, 저장 매체(62) 또는 잠재적으로 네트워크(74)의 다른 디바이스, 예컨대, 프록시 디바이스의 다른 저장 매체의 위치들에 저장될 수 있다.
[0056] 표현들(68)은 적응 세트들로 분리될 수 있다. 즉, 표현들(68)의 다양한 서브세트들은, 특징들, 예컨대, 코덱, 프로파일 및 레벨, 해상도, 뷰들의 개수, 세그먼트들에 대한 파일 포맷, 언어를 식별하거나 또는 디코딩 및 예컨대 스피커들에 의해 프리젠팅될 표현 및/또는 오디오 데이터와 함께 디스플레이될 텍스트의 다른 특징들을 식별할 수 있는 텍스트 타입 정보, 적응 세트의 표현들에 대한 장면의 카메라 각도 또는 실세계 카메라 원근을 설명할 수 있는 카메라 각도 정보, 특정 청중들에 대한 콘텐트 적합성을 설명하는 등급 정보 등의 개개의 공통 세트들을 포함할 수 있다.
[0057] 매니페스트 파일(66)은 특정 적응 세트들에 대응하는 표현들(68)의 서브세트들을 표시하는 데이터, 뿐만 아니라 적응 세트들에 대한 공통 특징들을 포함할 수 있다. 매니페스트 파일(66)은 또한, 적응 세트들의 개별 표현들에 대한 개별 특징들, 예컨대, 비트레이트들을 나타내는 데이터를 포함할 수 있다. 이러한 방식으로, 적응 세트는 단순화된 네트워크 대역폭 적응을 제공할 수 있다. 적응 세트의 표현들은, 매니페스트 파일(66)의 적응 세트 엘리먼트의 자식 엘리먼트들을 사용하여 표시될 수 있다.
[0058] 서버 디바이스(60)는 요청 프로세싱 유닛(70) 및 네트워크 인터페이스(72)를 포함한다. 일부 예들에서, 서버 디바이스(60)는 네트워크 인터페이스(72)를 비롯한 복수의 네트워크 인터페이스들을 포함할 수 있다. 또한, 서버 디바이스(60)의 특징들 중 임의의 특징 또는 특징들 전부는 콘텐트 배포 네트워크의 다른 디바이스들, 예컨대, 라우터들, 브릿지들, 프록시 디바이스들, 스위치들, 또는 다른 디바이스들 상에 구현될 수 있다. 일부 예들에서, 콘텐트 배포 네트워크의 중간 디바이스들은 멀티미디어 콘텐트(64)의 데이터를 캐싱할 수 있고, 그리고 서버 디바이스(60)의 것들에 실질적으로 따르는 컴포넌트들을 포함할 수 있다. 일반적으로, 네트워크 인터페이스(72)는 데이터를 네트워크(74)를 통해 전송 및 수신하도록 구성된다.
[0059] 요청 프로세싱 유닛(70)은 저장 매체(62)의 데이터에 대한 네트워크 요청들을 클라이언트 디바이스들, 예컨대, 클라이언트 디바이스(40)로부터 수신하도록 구성된다. 예컨대, 요청 프로세싱 유닛(70)은 RFC 2616에서 "Hypertext Transfer Protocol - HTTP/1.1"(R. Fielding 등에 의해 저술됨, Network Working Group, IETF, June 1999)로 설명된 바와 같은 HTTP(hypertext transfer protocol) 버전 1.1을 구현할 수 있다. 즉, 요청 프로세싱 유닛(70)은, HTTP GET 또는 부분적 GET 요청들을 수신하고 그리고 요청들에 대한 응답으로 멀티미디어 콘텐트(64)의 데이터를 제공하도록 구성될 수 있다. 요청들은, 예컨대, 세그먼트의 URL을 사용하여, 표현들(68) 중 하나의 표현의 세그먼트를 특정할 수 있다. 일부 예들에서, 요청들은 또한, 세그먼트의 하나 또는 그 초과의 바이트 범위들을 특정할 수 있다. 일부 예들에서, 세그먼트의 바이트 범위들은 부분적 GET 요청들을 사용하여 특정될 수 있다. 다른 예들에서, 본 개시물의 기술들에 따라, 세그먼트의 바이트 범위들은 예컨대, 일반적인 템플레이트에 따라 세그먼트에 대한 URL의 일부로서 특정될 수 있다.
[0060] 요청 프로세싱 유닛(70)은 추가로, 표현들(68) 중 하나의 표현의 세그먼트의 헤더 데이터를 제공하기 위해 HTTP HEAD 요청들을 서비싱하도록 구성될 수 있다. 어떤 경우에도, 요청 프로세싱 유닛(70)은, 요청된 데이터를 요청 디바이스, 예컨대, 클라이언트 디바이스(40)에 제공하기 위해 요청들을 프로세싱하도록 구성될 수 있다. 또한, 요청 프로세싱 유닛(70)은, 바이트 범위들을 특정하는 URL들을 구성하기 위한 템플레이트를 생성하고, 템플레이트가 요구되는지 또는 선택적인지를 표시하는 정보를 제공하고, 그리고 임의의 바이트 범위가 수용 가능한지의 여부 또는 바이트 범위들의 특정 세트만이 허용되는지를 표시하는 정보를 제공하도록 구성될 수 있다. 특정 바이트 범위들만이 허용될 때, 요청 프로세싱 유닛(70)은 허용되는 바이트 범위들의 표시들을 제공할 수 있다.
[0061] 도 1의 예에서 예시된 바와 같이, 멀티미디어 콘텐트(64)는 매니페스트 파일(66)을 포함하고, 이 매니페스트 파일(66)은 MPD(media presentation description)에 대응할 수 있다. 매니페스트 파일(66)은 상이한 대안적 표현들(68)(예컨대, 상이한 품질들을 갖는 비디오 서비스들)의 설명(description)들을 포함할 수 있고, 그리고 이 설명은 예컨대, 코덱 정보, 프로파일 값, 레벨 값, 비트레이트, 및 표현들(68)의 다른 설명적(descriptive) 특징들을 포함할 수 있다. 클라이언트 디바이스(40)는, 표현들(68)의 세그먼트들에 어떻게 액세스하는지를 결정하기 위해 미디어 프리젠테이션의 MPD를 리트리빙할 수 있다.
[0062] 클라이언트 디바이스(40)의 웹 애플리케이션(52)은, 클라이언트 디바이스(40)의 하드웨어-기반 프로세싱 유닛에 의해 실행되는 웹 브라우저, 또는 이러한 웹 브라우저에 대한 플러그-인을 포함할 수 있다. 웹 애플리케이션(52)에 대한 참조들은 일반적으로, 웹 애플리케이션, 예컨대, 웹 브라우저, 자립형 비디오 플레이어, 또는 웹 브라우저에 대한 재생 플러그-인을 포함하는 웹 브라우저를 포함하는 것으로 이해되어야 한다. 웹 애플리케이션(52)은, 클라이언트 디바이스(40)의 비디오 디코더(48)의 디코딩 능력들 및 비디오 출력(44)의 렌더링 능력들을 결정하기 위해, 클라이언트 디바이스(40)의 구성 데이터(미도시)를 리트리빙할 수 있다.
[0063] 구성 데이터는 또한, 클라이언트 디바이스(40)의 사용자에 의해 선택된 디폴트 언어 선호도, 예컨대 클라이언트 디바이스(40)의 사용자에 의해 셋팅된 깊이 선호도들에 대한 하나 또는 그 초과의 디폴트 카메라 원근들, 및/또는 클라이언트 디바이스(40)의 사용자에 의해 선택된 등급 선호도 중 임의의 것 또는 전부를 포함할 수 있다. 웹 애플리케이션(52)은 예컨대, HTTP GET 및 부분적 GET 요청들을 제출하도록 구성된 웹 브라우저 또는 미디어 클라이언트를 포함할 수 있다. 웹 애플리케이션(52)은, 클라이언트 디바이스(40)의 하나 또는 그 초과의 프로세서들 또는 프로세싱 유닛들(미도시)에 의해 실행되는 소프트웨어 명령들에 대응할 수 있다. 일부 예들에서, 웹 애플리케이션(52)에 대하여 설명된 기능의 전부 또는 부분들은, 하드웨어로, 또는 하드웨어, 소프트웨어, 및/또는 펌웨어의 결합으로 구현될 수 있고, 여기서 소프트웨어 또는 펌웨어에 대한 명령들을 실행하기 위해 필수 하드웨어가 제공될 수 있다.
[0064] 웹 애플리케이션(52)은, 클라이언트 디바이스(40)의 디코딩 및 렌더링 능력들을 매니페스트 파일(66)의 정보에 의해 표시된 표현들(68)의 특징들과 비교할 수 있다. 웹 애플리케이션(52)은 처음에, 표현들(68)의 특징들을 결정하기 위해 매니페스트 파일(66)의 적어도 부분을 리트리빙할 수 있다. 예컨대, 웹 애플리케이션(52)은 하나 또는 그 초과의 적응 세트들의 특징들을 설명하는 매니페스트 파일(66)의 부분을 요청할 수 있다. 웹 애플리케이션(52)은, 클라이언트 디바이스(40)의 코딩 및 렌더링 능력들에 의해 충족될 수 있는 특징들을 갖는 표현들(68)의 서브세트(예컨대, 적응 세트)를 선택할 수 있다. 웹 애플리케이션(52)은 이후, 적응 세트의 표현들에 대한 비트레이트들을 결정하고, 네트워크 대역폭의 현재 이용 가능한 양을 결정하며, 그리고 네트워크 대역폭에 의해 충족될 수 있는 비트레이트를 갖는 표현들 중 하나의 표현으로부터 세그먼트들(또는 바이트 범위들)을 리트리빙할 수 있다.
[0065] 일반적으로, 더 높은 비트레이트 표현들이 더 높은 품질의 비디오 재생을 산출할 수 있는 반면에, 더 낮은 비트레이트 표현들은, 이용 가능한 네트워크 대역폭이 감소할 때 충분한 품질의 비디오 재생을 제공할 수 있다. 이에 따라, 이용 가능한 네트워크 대역폭이 비교적 높을 때, 웹 애플리케이션(52)이 비교적 높은 비트레이트 표현들로부터 데이터를 리트리빙할 수 있는 반면에, 이용 가능한 네트워크 대역폭이 낮을 때, 웹 애플리케이션(52)은 비교적 낮은 비트레이트 표현들로부터 데이터를 리트리빙할 수 있다. 이러한 방식으로, 클라이언트 디바이스(40)는, 네트워크(74)의 변하는 네트워크 대역폭 이용 가능성에 또한 적응하면서, 네트워크(74)를 통해 멀티미디어 데이터를 스트리밍할 수 있다.
[0066] 위에서 주목된 바와 같이, 일부 예들에서, 클라이언트 디바이스(40)는 사용자 정보를 콘텐트 배포 네트워크의 예컨대 서버 디바이스(60) 또는 다른 디바이스들에 제공할 수 있다. 사용자 정보는 브라우저 쿠키의 형태를 취할 수 있거나, 또는 다른 형태들을 취할 수 있다. 웹 애플리케이션(52)은, 예컨대, 사용자 식별자, 사용자 식별자, 사용자 선호도들, 및/또는 사용자 인구통계학적 정보를 수집하고, 그리고 이러한 사용자 정보를 서버 디바이스(60)에 제공할 수 있다. 웹 애플리케이션(52)은 이후, 재생 동안 타겟 광고 미디어 콘텐트로부터의 데이터를 요청된 미디어 콘텐트의 미디어 데이터에 삽입하는데 사용하기 위해, 타겟 광고 미디어 콘텐트와 연관된 매니페스트 파일을 수신할 수 있다. 이 데이터는 매니페스트 파일 또는 매니페스트 서브-파일에 대한 요청의 결과로서 직접적으로 수신될 수 있거나, 또는 이 데이터는 (사용자 인구통계특성 및 다른 타켓팅 정보를 저장하는데 사용된, 공급된 브라우저 쿠키에 기초하여) 대안적 매니페스트 파일 또는 서브-파일에 대한 HTTP 리다이렉트를 통해 수신될 수 있다.
[0067] 가끔, 클라이언트 디바이스(40)의 사용자는, 멀티미디어 콘텐트, 예컨대, 멀티미디어 콘텐트(64)를 요청하기 위해, 클라이언트 디바이스(40)의 사용자 인터페이스들, 예컨대, 키보드, 마우스, 스타일러스, 터치스크린 인터페이스, 버튼들, 또는 다른 인터페이스들을 사용하여 웹 애플리케이션(52)과 상호작용할 수 있다. 사용자로부터의 이러한 요청들에 대한 응답으로, 웹 애플리케이션(52)은, 예컨대, 클라이언트 디바이스(40)의 디코딩 및 렌더링 능력들에 기초하여, 표현들(68) 중 하나의 표현을 선택할 수 있다. 표현들(68) 중 선택된 표현의 데이터를 리트리빙하기 위해, 웹 애플리케이션(52)은 표현들(68) 중 선택된 표현의 특정 바이트 범위들을 연속하여 요청할 수 있다. 이러한 방식으로, 하나의 요청을 통해 전체 파일을 수신하는 것이 아니라, 웹 애플리케이션(52)은 다수의 요청들을 통해 파일의 부분들을 연속하여 수신할 수 있다.
[0068] 일부 예들에서, 서버 디바이스(60)는 클라이언트 디바이스들, 예컨대, 클라이언트 디바이스(40)로부터 URL들에 대한 일반적인 템플레이트를 특정할 수 있다. 이어서, 클라이언트 디바이스(40)는, HTTP GET 요청들에 대한 URL들을 구성하기 위해 이 템플레이트를 사용할 수 있다. DASH 프로토콜에서, URL들은, 이들을 명시적으로 각각의 세그먼트 내에서 열거함으로써 또는 URL템플레이트를 제공함으로써 형성되고, 이 URL템플레이트는 하나 또는 그 초과의 잘 알려진 패턴들, 예컨대, $$, $RepresentationID$, $Index$, $Bandwidth$, 또는 $Time$(DASH의 현재 드래프트의 표 9에 의해 설명됨)을 포함하는 URL이다. URL 요청을 만들기 이전에, 클라이언트 디바이스(40)는, 인출(fetch)될 최종 URL을 생성하기 위해, 텍스트 스트링들, 예컨대, '$$', 표현 id, 세그먼트의 인덱스 등을 URL템플레이트로 대체할 수 있다. 본 개시물은 여러 부가의 XML 필드들을 정의하고, 이 XML 필드들은 예컨대 멀티미디어 콘텐트에 대한 MPD에서, 예컨대, 멀티미디어 콘텐트(64)에 대한 매니페스트 파일(66)에서, DASH 파일의 SegmentInfoDefault 엘리먼트에 부가될 수 있다.
[0069] 웹 애플리케이션(52)에 의해 서버 디바이스(60)에 제출된 요청들에 대한 응답으로, 네트워크 인터페이스(54)는 선택된 표현의 세그먼트들의 데이터를 수신하여 이 수신된 세그먼트들의 데이터를 웹 애플리케이션(52)에 제공할 수 있다. 이어서, 웹 애플리케이션(52)은 세그먼트들을 캡슐화해제 유닛(50)에 제공할 수 있다. 캡슐화해제 유닛(50)은, 비디오 파일의 엘리먼트들을 구성 PES 스트림들로 캡슐화해제하고, PES 스트림들을 패킷화해제하여 인코딩된 데이터를 리트리빙하고, 그리고 예컨대, 스트림의 PES 패킷 헤더들에 표시된 바와 같이, 인코딩된 데이터가 오디오 스트림의 일부인지 또는 비디오 스트림의 일부인지에 따라, 인코딩된 데이터를 오디오 디코더(46) 또는 비디오 디코더(48)에 전송할 수 있다. 오디오 디코더(46)가 인코딩된 오디오 데이터를 디코딩하고, 디코딩된 오디오 데이터를 오디오 출력(42)에 전송하는 반면에, 비디오 디코더(48)는 인코딩된 비디오 데이터를 디코딩하고, 스트림의 복수의 뷰들을 포함할 수 있는 디코딩된 비디오 데이터를 비디오 출력(44)에 전송한다.
[0070] 비디오 인코더(28), 비디오 디코더(48), 오디오 인코더(26), 오디오 디코더(46), 캡슐화 유닛(30), 웹 애플리케이션(52), 및 캡슐화해제 유닛(50) 각각은, 적용 가능한 대로, 다양한 적절한 프로세싱 회로 중 임의의 회로, 예컨대, 하나 또는 그 초과의 마이크로프로세서들, DSP(digital signal processor)들, ASIC(application specific integrated circuit)들, FPGA(field programmable gate array)들, 이산 논리 회로, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 결합들로서 구현될 수 있다. 비디오 인코더(28) 및 비디오 디코더(48) 각각은, 하나 또는 그 초과의 인코더들 또는 디코더들에 포함될 수 있고, 이들 중 어느 쪽이든 결합된 비디오 인코더/디코더(CODEC)의 일부로서 통합될 수 있다. 마찬가지로, 오디오 인코더(26) 및 오디오 디코더(46) 각각은, 하나 또는 그 초과의 인코더들 또는 디코더들에 포함될 수 있고, 이들 중 어느 쪽이든 결합된 CODEC의 일부로서 통합될 수 있다. 비디오 인코더(28), 비디오 디코더(48), 오디오 인코더(26), 오디오 디코더(46), 캡슐화 유닛(30), 웹 애플리케이션(52), 및/또는 캡슐화해제 유닛(50)을 포함하는 장치는 집적 회로, 마이크로프로세서, 및/또는 무선 통신 디바이스, 예컨대, 셀룰러 텔레폰을 포함할 수 있다.
[0071] 이러한 방식으로, 클라이언트 디바이스(40)는 미디어 데이터를 리트리빙하기 위한 디바이스의 예를 표현하고, 이 디바이스는, 제1 타입의 미디어 데이터를 포함하는 제1 적응 세트로부터 미디어 데이터를 리트리빙하고, 제1 적응 세트로부터의 미디어 데이터를 프리젠팅하고, 제1 타입의 미디어 데이터를 포함하는 제2 적응 세트로 스위칭하라는 요청에 대한 응답으로: 제2 적응 세트의 스위치 포인트를 포함하는 미디어 데이터를 제2 적응 세트로부터 리트리빙하고, 그리고 실제 플레이아웃 시간이 스위치 포인트에 대한 플레이아웃 시간을 충족시키거나 또는 초과한 이후에, 제2 적응 세트로부터의 미디어 데이터를 프리젠팅하도록 구성된 하나 또는 그 초과의 프로세서들을 포함할 수 있다.
[0072] 본 개시물의 기술들은 하기의 상황에서 적용될 수 있다: 데이터는 기간(P1) 동안 완전히 다운로딩되었고, 그리고 다운로드들은 다음 기간(P2)에 시작했다. 일 예에서, 데이터 버퍼는 대략, P1의 경우 20초의 재생 가치의 데이터를 포함하고, P2의 경우 5초의 재생 가치의 데이터를 포함하며, 그리고 사용자는 현재, P1의 콘텐트를 보고 있다. 이 시간에, 사용자는 적응 세트 변경을 개시하는데, 예컨대, 영어로부터 프랑스어로 오디오를 변경하는 것을 개시한다. 통상적인 기술들에서는, 소스 컴포넌트(예컨대, 웹 애플리케이션(52))가 이 변경을 P2에 대해서만 반영한다면, 사용자가 약 20초 후에 변경을 관찰할 것이라는 점에서, 문제점이 일어날 수 있고, 이는 부정적 사용자 경험이다. 다른 한편으로, 변경들이 P1 및 P2 둘 다에 대해 반영된다면, P2에서의 변경들은 P2의 정확히 시작 시 반영되지 못할 수 있다. 본 개시물의 기술들은, 소스 컴포넌트(예컨대, 서버 디바이스(60)의 요청 프로세싱 유닛(70))가 기간들(P1 및 P2) 둘 다에 대해 변경들을 반영할 수 있고, 그리고 P2의 시작부터 변경들을 반영하기 위하여, 소스 컴포넌트가 P2의 시작 시간에 대해 P2에 관한 SEEK 이벤트를 발행할 수 있다는 점에서, 솔루션을 제공할 수 있다. 이러한 SEEK 이벤트는, 소스 컴포넌트 측에서 부가의 동기화 로직을 수반할 수 있다.
[0073] 본 개시물의 기술들은 또한, 하기의 상황에서 적용될 수 있다: 사용자는 적응 세트 변경들을 신속하게 개시하는데, 특히, 적응 세트 A를 적응 세트 B로, 이후, 적응 세트 C로 연달아 교체한다. A에서 B로의 변경이 프로세싱될 때, 적응 세트 A가 클라이언트 디바이스 내부 상태로부터 제거될 것이라는 점에서, 문제점들이 일어날 수 있다. 따라서, B에서 C로의 변경이 발행될 때, 이 변경은 B의 다운로드 포지션에 비교해 수행된다. 본 개시물의 기술들은, 적응 세트 타입(AUDIO, VIDEO 등)을 표시하는 인수로서 "타입"을 수용하고 이 적응 세트에 대한 재생 포지션을 (예컨대, 재생 시간 면에서) 제공하는 새로운 API, 예컨대, GetCurrentPlaybackTime(타입)을 소스 컴포넌트가 제공할 수 있다는 점에서, 솔루션을 제공할 수 있다. 이 새로운 API는, 스위치 시간을 결정하기 위해 사용될 수 있다. 스위치 시간은, 적응 세트의 플레이 시작 시간 전일 수 있다. 예컨대, B 시작 시간은 재생 시간(p-시간) 10초에 있을 수 있지만, 타입에 기초한 재생 포지션이 시간 7초에 있을 수 있다. PKER 코어 알고리즘이 변경될 수 있는데, 그 이유는 버퍼 컴퓨테이션 로직이 영향을 받을 수 있기 때문이다.
[0074] 대안적으로, 소스 컴포넌트는, 적응 세트가 교체될 때 맞는 샘플들을 공급하기 위한 로직을 이미 포함할 수 있다. 예컨대, 클라이언트 디바이스는, 적응 세트 B로부터의 샘플을 시간 10초 후에만 공급하고 그 이전에는 공급하지 않도록 구성될 수 있다. 교체 동작이 발행되었을 때, 소스 컴포넌트는, 교체되고 있는 적응 세트에 대한 재생이 시작했는지의 여부를 체크할 수 있다. B에서 C로의 적응 세트 스위치의 경우, 적응 세트 B에 대한 재생은 아직 시작하지 않았을 수 있다. 재생이 시작하지 않았다면, 소스 컴포넌트는 구(old) 적응 세트에 대해 임의의 데이터 샘플들을 렌더러에 제공하는 것을 회피할 수 있고, 그리고 하기의 커맨드들을 발행할 수 있다: REMOVE (구 적응 세트) [이 경우, REMOVE B], 및 ADD (새로운 적응 세트) [이 경우, ADD C]. 소스 컴포넌트에 대한 영향은 최소여야 한다. 소스 컴포넌트는, 렌더러(예컨대, 오디오 출력(42) 또는 비디오 출력(44))가 적응 세트 B의 스위치 포인트에/적응 세트 B의 스위치 포인트를 지나 샘플들을 요청한다면, 적응 세트 A의 재생이 진행됨을 보장할 수 있다. 소스 컴포넌트는 또한, A에 비교해 C의 시작 포지션을 검증할 수 있다.
[0075] 또 다른 예시적 상황에서, 사용자는 적응 세트 A로부터 적응 세트 B로, 이후 신속하게 다시 적응 세트 A로 스위칭할 수 있다. 이 경우, 클라이언트 디바이스(40)는 적응 세트 B의 샘플들을 사용자에게 프리젠팅하는 것을 회피할 수 있다. 본 개시물의 기술들에 따라, 소스 컴포넌트는 재생이 B에 대해 시작하지 않았음을 검출할 수 있고, 위에서 설명된 시나리오와 유사하게, B의 샘플들이 렌더러에 도달하지 못하게 막을 수 있다. 따라서, 소스 컴포넌트는 하기의 커맨드들을 제출할 수 있다: REMOVE B, 그리고 즉시 ADD A. A가 부가될 때, A의 시작 시간을 다시 결정하기 위해 글로벌 재생 통계자료가 사용될 수 있고, A의 시작 시간은 이미 존재하는 데이터 내에 속할 수 있다. 이 시나리오에서, 현재 이용 가능한 시간 전까지, 소스 컴포넌트는 SELECT 요청들을 거부할 수 있다.
[0076] 예컨대, A의 데이터가 시간 30초까지 다운로딩되었다(그리고 재생은 현재 0초에 있다)고 가정하라. 사용자는 적응 세트 A를 적응 세트 B로 교체할 수 있고, 그리고 스위치 시간은 2초에 있었을 수 있다. 2초 내지 30초의 A의 데이터가 지워질 수 있다. 그러나, A가 다시 부가될 때, 그것은 시간 0으로 시작하고 그리고 SELECT 요청을 발행할 것이다. 소스 컴포넌트는 이 SELECT 요청을 거부할 수 있다. 이후, 시간 2초에 시작하여, 메타-데이터가 요청될 수 있다. 소스 컴포넌트는 시간 2초에 선택을 승인할 것이다.
[0077] 도 2는 예시적 멀티미디어 콘텐트(100)의 엘리먼트들을 예시하는 개념도이다. 멀티미디어 콘텐트(100)는 멀티미디어 콘텐트(64)(도 1), 또는 저장 매체(62)에 저장된 다른 멀티미디어 콘텐트에 대응할 수 있다. 도 2의 예에서, 멀티미디어 콘텐트(100)는 MPD(media presentation description)(102) 및 적응 세트들(104, 120)을 포함한다. 적응 세트들(104, 120)은 개개의 복수의 표현들을 포함한다. 이 예에서, 적응 세트(104)가 표현들(106A, 106B) 등(표현들(106))을 포함하는 반면에, 적응 세트(120)는 표현들(122A, 122B) 등(표현들 122)을 포함한다. 표현(106A)이 선택적 헤더 데이터(110) 및 세그먼트들(112A-112N)(세그먼트들(112))을 포함하는 반면에, 표현(106B)은 선택적 헤더 데이터(114) 및 세그먼트들(116A-116N)(세그먼트들(116))을 포함한다. 마찬가지로, 표현들(122)은 개개의 선택적 헤더 데이터(124, 128)를 포함한다. 표현(122A)이 세그먼트들(126A-126M)(세그먼트들(126))을 포함하는 반면에, 표현(122B)은 세그먼트들(130A-130M)(세그먼트들(130))을 포함한다. 편의상, 표현들(106) 각각의 마지막 세그먼트를 표기하기 위해 문자 N이 사용된다. 표현들(122) 각각의 마지막 세그먼트를 표기하기 위해 문자 M이 사용된다. M 및 N은, 상이한 값들 또는 동일한 값을 가질 수 있다.
[0078] 세그먼트들(112, 116)은, 동일한 적응 세트의 세그먼트들이 시간상 정렬될 수 있음을 표시하기 위해, 동일한 길이를 갖는 것으로서 예시된다. 유사하게, 세그먼트들(126, 130)은 동일한 길이를 갖는 것으로서 예시된다. 그러나, 상이한 적응 세트들의 세그먼트들이 반드시 시간상 정렬되는 것은 아님을 표시하기 위해, 세그먼트들(112, 116)은 세그먼트들(126, 130)과는 상이한 길이들을 갖는다.
[0079] MPD(102)는 표현들(106)과는 별개의 데이터 구조를 포함할 수 있다. MPD(102)는 도 1의 매니페스트 파일(66)에 대응할 수 있다. 마찬가지로, 표현들(106)은 도 1의 표현들(68)에 대응할 수 있다. 일반적으로, MPD(102)는, 표현들(106)의 특징들, 예컨대, 코딩 및 렌더링 특징들, 적응 세트들, MPD(102)에 대응하는 프로파일, 텍스트 타입 정보, 카메라 각도 정보, 등급 정보, 트릭 모드 정보(예컨대, 시간적 서브-시퀀스들을 포함하는 표현들을 표시하는 정보), 및/또는 (예컨대, 재생 동안 미디어 콘텐트 안으로의 타겟 광고 삽입을 위한) 원격 기간들을 리트리빙하기 위한 정보를 일반적으로 설명하는 데이터를 포함할 수 있다.
[0080] 헤더 데이터(110)는, 존재할 때, 세그먼트들(112)의 특징들, 예컨대, RAP들의 시간적 위치들, 세그먼트들(112) 중 어느 세그먼트가 RAP들을 포함하는지, 세그먼트들(112) 내의 RAP들에 대한 바이트 오프셋들, 세그먼트들(112)의 URL(uniform resource locator)들, 또는 세그먼트들(112)의 다른 양상들을 설명할 수 있다. 헤더 데이터(114)는, 존재할 때, 세그먼트들(116)에 대한 유사한 특징들을 설명할 수 있다. 유사하게, 헤더 데이터(124)가 세그먼트들(126)의 특징들을 설명할 수 있는 반면에, 헤더 데이터(128)는 세그먼트들(130)의 특징들을 설명할 수 있다. 부가하여 또는 대안적으로, 이러한 특징들은 MPD(102) 내에 완전히 포함될 수 있다.
[0081] 세그먼트들, 예컨대, 세그먼트들(112)은 하나 또는 그 초과의 코딩된 비디오 샘플들을 포함하고, 코딩된 비디오 샘플들 각각은 비디오 데이터의 프레임들 또는 슬라이스들을 포함할 수 있다. 비디오 데이터를 포함하는 세그먼트들의 경우, 코딩된 비디오 샘플들 각각은 유사한 특징들, 예컨대, 높이, 폭, 및 대역폭 요건들을 가질 수 있다. 이러한 특징들은, 이러한 데이터가 도 2의 예에서 예시되지 않지만, MPD(102)의 데이터에 의해 설명될 수 있다. 본 개시물에 설명된 시그널링되는 정보 중 임의의 정보 또는 정보 전부의 부가로, MPD(102)는 3GPP 스펙에 의해 설명된 특징들을 포함할 수 있다.
[0082] 세그먼트들(112, 116) 각각은 고유 URI(uniform resource identifier), 예컨대, URL(uniform resource locator)과 연관될 수 있다. 따라서, 세그먼트들(112, 116) 각각은 스트리밍 네트워크 프로토콜, 예컨대, DASH를 사용하여 독립적으로 리트리빙 가능할 수 있다. 이러한 방식으로, 목적지 디바이스, 예컨대, 클라이언트 디바이스(40)는, 세그먼트들(112 또는 124)을 리트리빙하기 위해 HTTP GET 요청을 사용할 수 있다. 일부 예들에서, 클라이언트 디바이스(40)는, 세그먼트들(112 또는 124)의 특정 바이트 범위들을 리트리빙하기 위해, HTTP 부분적 GET 요청들을 사용할 수 있다.
[0083] 본 개시물의 기술들에 따라, 둘 또는 그 초과의 적응 세트들은 동일한 타입의 미디어 콘텐트를 포함할 수 있다. 그러나, 적응 세트들의 실제 미디어는 상이할 수 있다. 예컨대, 적응 세트들(104, 120)은 오디오 데이터를 포함할 수 있다. 즉, 세그먼트들(112, 116, 126, 130)은 인코딩된 오디오 데이터를 나타내는 데이터를 포함할 수 있다. 그러나, 적응 세트(104)가 영어 언어 오디오 데이터에 대응할 수 있는 반면에, 적응 세트(120)는 스페인어 언어 오디오 데이터에 대응할 수 있다. 다른 예로서, 적응 세트들(104, 120)은 인코딩된 비디오 데이터를 나타내는 데이터를 포함할 수 있지만, 적응 세트(104)가 제1 카메라 각도에 대응할 수 있는 반면에, 적응 세트(120)는 상이한 제2 카메라 각도에 대응할 수 있다. 또 다른 예로서, 적응 세트들(104, 120)은 (예컨대, 자막들에 대한) 타임드 텍스트를 나타내는 데이터를 포함할 수 있지만, 적응 세트(104)가 영어 언어 타임드 텍스트를 포함할 수 있는 반면에, 적응 세트(120)는 스페인어 언어 타임드 텍스트를 포함할 수 있다. 물론, 영어 및 스페인어는 단지 예들로서 제공되고; 일반적으로, 임의의 언어들은 오디오 및/또는 타임드 텍스트 데이터를 포함하는 적응 세트들에 포함될 수 있고, 그리고 둘 또는 그 초과의 대안적 적응 세트들이 제공될 수 있다.
[0084] 본 개시물의 기술들에 따라, 사용자는 처음에, 적응 세트(104)를 선택할 수 있다. 대안적으로, 클라이언트 디바이스(40)는 예컨대, 구성 데이터, 예컨대, 디폴트 사용자 선호도들에 기초하여 적응 세트(104)를 선택할 수 있다. 어떤 경우에도, 클라이언트 디바이스(40)는 처음에, 적응 세트(104)의 표현들(106) 중 하나의 표현으로부터 데이터를 리트리빙할 수 있다. 특히, 클라이언트 디바이스(40)는 표현들(106) 중 하나의 표현의 하나 또는 그 초과의 세그먼트들로부터 데이터를 리트리빙하기 위해 요청들을 제출할 수 있다. 예컨대, 이용 가능한 네트워크 대역폭의 양이 표현(106A)의 비트레이트에 최상으로 대응함을 가정하면, 클라이언트 디바이스(40)는 세그먼트들(112) 중 하나 또는 그 초과로부터 데이터를 리트리빙할 수 있다. 대역폭 변동들에 대한 응답으로, 클라이언트 디바이스(40)는 표현들(106) 중 다른 표현, 예컨대, 표현(106B)으로 스위칭할 수 있다. 즉, 이용 가능한 네트워크 대역폭의 증가 또는 감소 후, 클라이언트 디바이스(40)는, 대역폭 적응 기술들을 활용하여, 세그먼트들(116) 중 하나 또는 그 초과로부터 데이터를 리트리빙하는 것을 시작할 수 있다.
[0085] 표현(106A)이 현재 표현이고, 그리고 클라이언트 디바이스(40)가 표현(106A)의 시작부터 시작한다고 가정하면, 클라이언트 디바이스(40)는 세그먼트(112A)의 데이터를 리트리빙하기 위해 하나 또는 그 초과의 요청들을 제출할 수 있다. 예컨대, 클라이언트 디바이스(40)는 세그먼트(112A)를 리트리빙하기 위해 HTTP GET 요청을 제출하거나, 또는 세그먼트(112A)의 인접한 부분들을 리트리빙하기 위해 여러 HTTP 부분적 GET 요청들을 제출할 수 있다. 세그먼트(112A)의 데이터를 리트리빙하기 위해 하나 또는 그 초과의 요청들을 제출한 이후에, 클라이언트 디바이스(40)는 세그먼트(112B)의 데이터를 리트리빙하기 위해 하나 또는 그 초과의 요청들을 제출할 수 있다. 특히, 클라이언트 디바이스(40)는, 이 예에서, 클라이언트 디바이스(40)가 버퍼의 데이터를 디코딩 및 프리젠팅하는 것을 시작하도록 허용하기에 충분한 양의 데이터가 버퍼링될 때까지, 표현(106A)의 데이터를 축적할 수 있다.
[0086] 위에서 논의된 바와 같이, 클라이언트 디바이스(40)는 네트워크 대역폭의 이용 가능한 양들을 주기적으로 결정하고, 그리고 필요하다면, 적응 세트(104)의 표현들(106) 간에 대역폭 적응을 수행할 수 있다. 통상적으로, 이러한 대역폭 적응은 단순화되는데, 그 이유는 표현들(106)의 세그먼트들이 시간상 정렬되기 때문이다. 예컨대, 세그먼트(112A) 및 세그먼트(116A)는, 동일한 상대적 재생 시간들에 시작 및 종료하는 데이터를 포함한다. 따라서, 이용 가능한 네트워크 대역폭에서의 변동에 대한 응답으로, 클라이언트 디바이스(40)는 세그먼트 경계들에서 표현들(106) 간에 스위칭할 수 있다.
[0087] 본 개시물의 기술들에 따라, 클라이언트 디바이스(40)는 예컨대, 적응 세트(104)로부터 적응 세트(120)로 적응 세트들을 스위칭하라는 요청을 수신할 수 있다. 예컨대, 적응 세트(104)가 영어로 된 오디오 또는 타임드 텍스트 데이터를 포함하고, 적응 세트(120)가 스페인어로 된 오디오 또는 타임드 텍스트 데이터를 포함하면, 클라이언트 디바이스(40)는, 사용자가 특정 시간에 스페인어가 영어보다 더 좋다고 결정한 이후에, 적응 세트(104)로부터 적응 세트(120)로 스위칭하라는 요청을 사용자로부터 수신할 수 있다. 다른 예로서, 적응 세트(104)가 제1 카메라 각도로부터의 비디오 데이터를 포함하고, 적응 세트(120)가 상이한 제2 카메라 각도로부터의 비디오 데이터를 포함하면, 클라이언트 디바이스(40)는, 사용자가 특정 시간에 제2 카메라 각도가 제1 카메라 각도보다 더 좋다고 결정한 이후에, 적응 세트(104)로부터 적응 세트(120)로 스위칭하라는 요청을 사용자로부터 수신할 수 있다.
[0088] 적응 세트(104)로부터 적응 세트(120)로의 스위치를 수행하기 위하여, 클라이언트 디바이스(40)는 MPD(102)의 데이터를 참조할 수 있다. MPD(102)의 데이터는 표현들(122)의 세그먼트들의 시작 및 종료 재생 시간들을 표시할 수 있다. 클라이언트 디바이스(40)는, 적응 세트들 간에 스위칭하라는 요청이 수신되었던 재생 시간을 결정하고, 그리고 이 결정된 재생 시간을 적응 세트(120)의 다음 스위치 포인트의 재생 시간과 비교할 수 있다. 다음 스위치 포인트의 재생 시간이 스위치 요청이 수신되었던 결정된 재생 시간에 충분히 가깝다면, 클라이언트 디바이스(40)는, 네트워크 대역폭의 이용 가능한 양을 결정하고, 그리고 표현들(122) 중에서 네트워크 대역폭의 이용 가능한 양에 의해 지원되는 비트레이트를 갖는 표현을 선택하고, 이후, 표현들(122) 중에서 스위치 포인트를 포함하는 선택된 표현의 데이터를 요청할 수 있다.
[0089] 예컨대, 클라이언트 디바이스(40)가 세그먼트(112B)의 재생 동안 적응 세트들(104 및 120) 간에 스위칭하라는 요청을 수신한다고 가정하라. 클라이언트 디바이스(40)는, 표현(122A)에서 세그먼트(126B)의 바로 뒤를 잇는 세그먼트(126C)가 세그먼트(126C)의 (시간적 재생 시간 면에서) 시작 시 스위치 포인트를 포함한다고 결정할 수 있다. 특히, 클라이언트 디바이스(40)는 MPD(102)의 데이터로부터 세그먼트(126C)의 스위치 포인트의 재생 시간을 결정할 수 있다. 게다가, 클라이언트 디바이스(40)는, 세그먼트(126C)의 스위치 포인트가, 적응 세트들 간에 스위칭하라는 요청이 수신되었던 재생 시간의 뒤를 잇는다고 결정할 수 있다. 또한, 클라이언트 디바이스(40)는, 표현(122A)이, 네트워크 대역폭의 결정된 양에 가장 적절한 비트레이트를 가진다(예컨대, 이용 가능한 네트워크 대역폭의 결정된 양을 초과하는 것 없이, 적응 세트(120)의 모든 다른 표현들(122)에 대한 비트레이트들보다 더 높다)고 결정할 수 있다.
[0090] 위에서 설명된 예에서, 클라이언트 디바이스(40)는 적응 세트(104)의 표현(106A)의 세그먼트(112B)의 데이터를 버퍼링했을 수 있다. 그러나, 적응 세트들 간에 스위칭하라는 요청을 고려하여, 클라이언트 디바이스(40)는 세그먼트(126C)의 데이터를 요청할 수 있다. 클라이언트 디바이스(40)는, 세그먼트(126C)의 데이터를 리트리빙하는 것과 실질적으로 동시에 세그먼트(112B)의 데이터를 리트리빙할 수 있다. 즉, 도 2의 예에 도시된 바와 같이, 세그먼트(112B) 및 세그먼트(126C)가 재생 시간 면에서 겹치기 때문에, 세그먼트(112B)의 데이터를 리트리빙할 때와 실질적으로 동시에 세그먼트(126C)의 데이터를 리트리빙하는 것이 필요할 수 있다. 따라서, 적어도, (예컨대, 대역폭 적응을 위한, 동일한 적응 세트의 표현들 간의 스위칭의 경우에서와 같이) 순차적이 아니라, 상이한 적응 세트들의 두 개의 세그먼트들에 대한 데이터가 실질적으로 동시에 리트리빙될 수 있다는 점에서, 적응 세트들 간의 스위칭을 위한 데이터를 리트리빙하는 것은, 동일한 적응 세트의 두 개의 표현들 간의 스위칭을 위한 데이터를 리트리빙하는 것과는 상이할 수 있다.
[0091] 도 3은 예시적 비디오 파일(150)의 엘리먼트들을 예시하는 블록도이고, 이 비디오 파일(150)은 표현의 세그먼트, 예컨대, 도 2의 세그먼트들(112, 124) 중 하나의 세그먼트에 대응할 수 있다. 세그먼트들(112, 116, 126, 130) 각각은, 도 3의 예에 예시된 데이터의 어레인지먼트에 실질적으로 따르는 데이터를 포함할 수 있다. 위에서 설명된 바와 같이, ISO 기반 미디어 파일 포맷 및 그것의 확장들에 따른 비디오 파일들은 "박스들"로 지칭되는 객체들의 시리즈로 데이터를 저장한다. 도 3의 예에서, 비디오 파일(150)은 파일 타입(file type)(FTYP) 박스(152), 무비(movie)(MOOV) 박스(154), 무비 프래그먼트(movie fragment)들(162)(무비 프래그먼트 박스들(MOOF)로 또한 지칭됨), 및 MFRA(movie fragment random access) 박스(164)를 포함한다.
[0092] 비디오 파일(150)은 일반적으로, 표현들(106, 122)(도 2) 중 하나의 표현에 포함될 수 있는 멀티미디어 콘텐트의 세그먼트의 예를 표현한다. 이러한 방식으로, 비디오 파일(150)은 세그먼트들(112) 중 하나, 세그먼트들(116) 중 하나, 세그먼트들(126) 중 하나, 세그먼트들(130) 중 하나, 또는 다른 표현의 세그먼트에 대응할 수 있다.
[0093] 도 3의 예에서, 비디오 파일(150)은 하나의 세그먼트 인덱스(segment index)(SIDX) 박스(161)를 포함한다. 일부 예들에서, 비디오 파일(150)은 예컨대, 무비 프래그먼트들(162) 사이에 부가의 SIDX 박스들을 포함할 수 있다. 일반적으로, SIDX 박스들, 예컨대, SIDX 박스(161)는, 무비 프래그먼트들(162) 중 하나 또는 그 초과에 대한 바이트 범위들을 설명하는 정보를 포함한다. 다른 예들에서, SIDX 박스(161) 및/또는 다른 SIDX 박스들은 MOOV 박스(154) 내에, MOOV 박스(154) 뒤에, MFRA 박스(164)의 앞 또는 뒤에, 또는 비디오 파일(150) 내의 다른 곳에 제공될 수 있다.
[0094] 파일 타입(FTYP) 박스(152)는 일반적으로 비디오 파일(150)에 대한 파일 타입을 설명한다. 파일 타입 박스(152)는, 비디오 파일(150)에 대한 최선 사용을 설명하는 스펙을 식별하는 데이터를 포함할 수 있다. 파일 타입 박스(152)는 MOOV 박스(154), 무비 프래그먼트 박스들(162), 및 MFRA 박스(164) 앞에 배치될 수 있다.
[0095] MOOV 박스(154)는, 도 3의 예에서, 무비 헤더(movie header)(MVHD) 박스(156), 트랙(track)(TRAK) 박스(158), 및 하나 또는 그 초과의 무비 확장들(movie extends)(MVEX) 박스들(160)을 포함한다. 일반적으로, MVHD 박스(156)는 비디오 파일(150)의 일반적인 특징들을 설명할 수 있다. 예컨대, MVHD 박스(156)는, 비디오 파일(150)이 본래 생성되었을 때, 비디오 파일(150)이 마지막 수정되었을 때, 비디오 파일(150)에 대한 타임스케일, 비디오 파일(150)에 대한 재생의 지속기간을 설명하는 데이터, 또는 일반적으로 비디오 파일(150)을 설명하는 다른 데이터를 포함할 수 있다.
[0096] TRAK 박스(158)는 비디오 파일(150)의 트랙에 대한 데이터를 포함할 수 있다. TRAK 박스(158)는, TRAK 박스(158)에 대응하는 트랙의 특징들을 설명하는 트랙 헤더(TKHD) 박스를 포함할 수 있다. 일부 예들에서, TRAK 박스(158)가 코딩된 비디오 픽처들을 포함할 수 있는 반면에, 다른 예들에서, 트랙의 코딩된 비디오 픽처들은 무비 프래그먼트들(162)에 포함될 수 있고, 이 무비 프래그먼트들(162)은 TRAK 박스(158)의 데이터에 의해 참조될 수 있다.
[0097] 일부 예들에서, 비디오 파일(150)은, 이것이 DASH 프로토콜이 작동하기 위해 필요한 것이 아니지만, 하나보다 많은 트랙을 포함할 수 있다. 이에 따라, MOOV 박스(154)는 비디오 파일(150)의 트랙들의 개수와 동일한 개수의 TRAK 박스들을 포함할 수 있다. TRAK 박스(158)는 비디오 파일(150)의 대응하는 트랙의 특징들을 설명할 수 있다. 예컨대, TRAK 박스(158)는 대응하는 트랙에 대한 시간적 및/또는 공간적 정보를 설명할 수 있다. 캡슐화 유닛(30)(도 1)이 비디오 파일, 예컨대, 비디오 파일(150)에 파라미터 세트 트랙을 포함시킬 때, MOOV 박스(154)의 TRAK 박스(158)와 유사한 TRAK 박스가 파라미터 세트 트랙의 특징들을 설명할 수 있다. 캡슐화 유닛(30)은, 파라미터 세트 트랙을 설명하는 TRAK 박스 내에서 파라미터 세트 트랙에서의 시퀀스 레벨 SEI 메시지들의 존재를 시그널링할 수 있다.
[0098] MVEX 박스들(160)은, 만약 있다면, MOOV 박스(154) 내에 포함된 비디오 데이터에 부가하여, 예컨대, 비디오 파일(150)이 무비 프래그먼트들(162)을 포함함을 시그널링하기 위해, 대응하는 무비 프래그먼트들(162)의 특징들을 설명할 수 있다. 비디오 데이터를 스트리밍하는 상황에서, 코딩된 비디오 픽처들은 MOOV 박스(154)가 아니라 무비 프래그먼트들(162)에 포함될 수 있다. 이에 따라, 모든 코딩된 비디오 샘플들은 MOOV 박스(154)가 아니라 무비 프래그먼트들(162)에 포함될 수 있다.
[0099] MOOV 박스(154)는 비디오 파일(150)의 무비 프래그먼트들(162)의 개수와 동일한 개수의 MVEX 박스들(160)을 포함할 수 있다. MVEX 박스들(160) 각각은 무비 프래그먼트들(162) 중 대응하는 무비 프래그먼트의 특징들을 설명할 수 있다. 예컨대, 각각의 MVEX 박스는, 무비 프래그먼트들(162) 중 대응하는 무비 프래그먼트에 대한 시간적 지속기간을 설명하는 무비 확장 헤더 박스(movie extends header box)(MEHD) 박스를 포함할 수 있다.
[0100] 위에서 주목된 바와 같이, 캡슐화 유닛(30)은 실제 코딩된 비디오 데이터를 포함하지 않는 비디오 샘플에 시퀀스 데이터 세트를 저장할 수 있다. 비디오 샘플은 일반적으로 액세스 유닛에 대응할 수 있고, 이 액세스 유닛은 특정 시간 인스턴스에 코딩된 픽처의 표현이다. AVC의 상황에서, 코딩된 픽처는 하나 또는 그 초과의 VCL NAL 유닛들을 포함하고, 이 하나 또는 그 초과의 VCL NAL 유닛들은 액세스 유닛 및 다른 연관된 넌-VCL NAL 유닛들, 예컨대, SEI 메시지들의 픽셀들 전부를 구성하기 위한 정보를 포함한다. 이에 따라, 캡슐화 유닛(30)은 시퀀스 데이터 세트를 포함할 수 있고, 이 시퀀스 데이터 세트는 무비 프래그먼트들(162) 중 하나의 무비 프래그먼트에서 시퀀스 레벨 SEI 메시지들을 포함할 수 있다. 캡슐화 유닛(30)은 추가로, 무비 프래그먼트들(162) 중 하나의 무비 프래그먼트에 대응하는 MVEX 박스들(160) 중 하나의 MVEX 박스 내에서, 무비 프래그먼트들(162) 중 하나의 무비 프래그먼트에 존재하는 것으로서, 시퀀스 데이터 세트 및/또는 시퀀스 레벨 SEI 메시지들의 존재를 시그널링할 수 있다.
[0101] 무비 프래그먼트들(162)은 하나 또는 그 초과의 코딩된 비디오 픽처들을 포함할 수 있다. 일부 예들에서, 무비 프래그먼트들(162)은 픽처들의 하나 또는 그 초과의 그룹들(groups of pictures)(GOPs)을 포함할 수 있고, 이들 각각은 다수의 코딩된 비디오 픽처들, 예컨대, 프레임들 또는 픽처들을 포함할 수 있다. 부가하여, 위에서 설명된 바와 같이, 일부 예들에서, 무비 프래그먼트들(162)은 시퀀스 데이터 세트들을 포함할 수 있다. 무비 프래그먼트들(162) 각각은 무비 프래그먼트 헤더 박스(MFHD, 도 3에는 미도시)를 포함할 수 있다. MFHD 박스는 대응하는 무비 프래그먼트의 특징들, 예컨대, 무비 프래그먼트에 대한 시퀀스 번호를 설명할 수 있다. 무비 프래그먼트들(162)은 비디오 파일(150)에 시퀀스 번호 순으로 포함될 수 있다.
[0102] MFRA 박스(164)는 비디오 파일(150)의 무비 프래그먼트들(162) 내의 RAP들을 설명할 수 있다. 이는, 트릭 모드들을 수행하는 것, 예컨대, 비디오 파일(150) 내에서 특정 시간적 위치들에 대한 찾기(seek)들을 수행하는 것을 도울 수 있다. 일부 예들에서, MFRA 박스(164)는 일반적으로 선택적이고, 그리고 비디오 파일들에 포함될 필요는 없다. 마찬가지로, 클라이언트 디바이스, 예컨대, 클라이언트 디바이스(40)는, 비디오 파일(150)의 비디오 데이터를 정확하게 디코딩 및 디스플레이하기 위해 MFRA 박스(164)를 반드시 참조할 필요는 없다. MFRA 박스(164)는, 비디오 파일(150)의 트랙들의 개수와 동일하거나 또는 일부 예들에서 비디오 파일(150)의 미디어 트랙들(예컨대, 넌-힌트 트랙들)의 개수와 동일한 개수의 TFRA(track fragment random access) 박스들(미도시)을 포함할 수 있다.
[0103] 도 4a 및 도 4b는 본 개시물의 기술들에 따른, 재생 동안 적응 세트들 간의 스위칭을 위한 예시적 방법을 예시하는 흐름도들이다. 도 4a 및 도 4b의 방법은 서버 디바이스(60)(도 1) 및 클라이언트 디바이스(40)(도 1)에 대하여 설명된다. 그러나, 다른 디바이스들이 유사한 기술들을 수행하도록 구성될 수 있음이 이해되어야 한다. 예컨대, 일부 예들에서, 클라이언트 디바이스(40)는 콘텐트 준비 디바이스(20)로부터 데이터를 리트리빙할 수 있다.
[0104] 처음에, 도 4a의 예에서, 서버 디바이스(60)는 적응 세트들의 표시들 및 적응 세트들의 표현들을 클라이언트 디바이스(40)에 제공한다(200). 예컨대, 서버 디바이스(60)는 매니페스트 파일, 예컨대, MPD에 대한 데이터를 클라이언트 디바이스(40)에 전송할 수 있다. 도 4a에는 도시되지 않았지만, 서버 디바이스(60)는, 클라이언트 디바이스(40)로부터의 표시들에 대한 요청에 대한 응답으로, 표시들을 클라이언트 디바이스(40)에 전송할 수 있다. 표시들(예컨대, 매니페스트 파일 내에 포함됨)은 부가하여, 표현들 내의 세그먼트들의 시작들 및 종료들에 대한 재생 시간들을 정의하는 데이터, 뿐만 아니라 세그먼트들 내의 다양한 타입들의 데이터에 대한 바이트 범위들을 포함할 수 있다. 특히, 표시들은, 적응 세트들 각각에 포함되는 데이터의 타입, 뿐만 아니라 그 타입의 데이터에 대한 특징들을 표시할 수 있다. 예컨대, 비디오 데이터를 포함하는 적응 세트들의 경우, 표시들은, 비디오 적응 세트들 각각에 포함되는 비디오 데이터에 대한 카메라 각도를 정의할 수 있다. 다른 예로서, 오디오 데이터 및/또는 타임드 텍스트 데이터를 포함하는 적응 세트들의 경우, 표시들은 오디오 및/또는 타임드 텍스트 데이터에 대한 언어를 정의할 수 있다.
[0105] 클라이언트 디바이스(40)는 적응 세트 및 표현 표시들을 서버 디바이스(60)로부터 수신한다(202). 클라이언트 디바이스(40)는 예컨대, 언어 선호도들 및/또는 카메라 각도 선호도들 중 임의의 것 또는 전부에 대해, 사용자에 대한 디폴트 선호도들을 이용하여 구성될 수 있다. 따라서, 클라이언트 디바이스(40)는, 사용자 선호도들에 기초하여, 다양한 타입들의 미디어 데이터의 적응 세트들을 선택할 수 있다(204). 예컨대, 사용자가 언어 선호도를 선택했다면, 클라이언트 디바이스(40)는 언어 선호도(뿐만 아니라 다른 특징들, 예컨대, 클라이언트 디바이스(40)의 디코딩 및 렌더링 능력들, 그리고 적응 세트의 코딩 및 렌더링 특징들)에 적어도 부분적으로 기초하여 오디오 적응 세트를 선택할 수 있다. 클라이언트 디바이스(40)는 유사하게, 오디오 및 비디오 데이터 둘 다에 대해, 뿐만 아니라 사용자가 자막들을 디스플레이하기로 택했다면, 타임드 텍스트에 대해 적응 세트들을 선택할 수 있다. 대안적으로, 클라이언트 디바이스(40)는, 적응 세트(들)를 선택하기 위해, 사용자 선호도들을 사용하는 것이 아니라, 첫 사용자 선택 또는 디폴트 구성을 수신할 수 있다.
[0106] 특정 적응 세트를 선택한 이후에, 클라이언트 디바이스(40)는, 네트워크 대역폭의 이용 가능한 양을 결정하고(206), 뿐만 아니라 적응 세트의 표현들의 비트레이트들을 결정할 수 있다(208). 예컨대, 클라이언트 디바이스(40)는 미디어 콘텐트에 대한 매니페스트 파일을 참조할 수 있고, 이 매니페스트 파일은 표현들에 대한 비트레이트들을 정의할 수 있다. 클라이언트 디바이스(40)는 이후, 예컨대, 적응 세트의 표현들에 대한 비트레이트들에 기초하여 그리고 이용 가능한 네트워크 대역폭의 결정된 양에 기초하여, 적응 세트로부터 표현을 선택할 수 있다(210). 예컨대, 클라이언트 디바이스(40)는, 이용 가능한 네트워크 대역폭의 양을 초과하지 않는, 적응 세트의 최고 비트레이트를 갖는 표현을 선택할 수 있다.
[0107] 클라이언트 디바이스(40)는 유사하게, 선택된 적응 세트들 각각으로부터 표현을 선택할 수 있다(여기서, 선택된 적응 세트들은 각각, 상이한 타입의 미디어 데이터, 예컨대, 오디오, 비디오, 및/또는 타임드 텍스트에 대응할 수 있다). 일부 사례들에서, 동일한 타입의 미디어 데이터에 대해, 예컨대, 스테레오 또는 멀티-뷰 비디오 데이터, 서라운드 사운드 또는 삼차원 오디오 어레이들의 다양한 레벨들을 지원하기 위한 다수의 오디오 채널들 등에 대해 다수의 적응 세트들이 선택될 수 있음이 이해되어야 한다. 클라이언트 디바이스(40)는 적어도 하나의 적응 세트를 선택할 수 있고, 그리고 프리젠팅될 각각의 타입의 미디어 데이터에 대해 각각의 선택된 적응 세트로부터 하나의 표현을 선택할 수 있다.
[0108] 클라이언트 디바이스(40)는 이후, 선택된 표현(들)의 데이터를 요청할 수 있다(212). 예컨대, 클라이언트 디바이스(40)는, 예컨대, HTTP GET 또는 부분적 GET 요청들을 사용하여, 선택된 표현들 각각으로부터 세그먼트들을 요청할 수 있다. 일반적으로, 클라이언트 디바이스(40)는, 실질적으로 동시의 재생 시간들을 갖는 표현들 각각으로부터 세그먼트들에 대한 데이터를 요청할 수 있다. 응답으로, 서버 디바이스(60)는 요청된 데이터를 클라이언트 디바이스(40)에 전송할 수 있다(214). 클라이언트 디바이스(40)는 수신된 데이터를 버퍼링, 디코딩, 및 프리젠팅할 수 있다(216).
[0109] 후속하여, 클라이언트 디바이스(40)는 상이한 적응 세트에 대한 요청을 수신할 수 있다(220). 예컨대, 사용자는 오디오 또는 타임드 텍스트 데이터에 대한 상이한 언어로 스위칭하기로, 또는 예컨대, 3D 비디오 프리젠테이션들에 대한 깊이를 증가시키거나 또는 감소시키기 위해 또는 2D 비디오 프리젠테이션들에 대한 대안적 각도로부터 비디오를 보기 위해, 상이한 카메라 각도로 스위칭하기로 택할 수 있다. 물론, 대안적 뷰잉 각도들이 3D 비디오 프리젠테이션들에 대해 제공된다면, 클라이언트 디바이스(40)는 예컨대, 대안적 뷰잉 각도로부터 3D 프리젠테이션을 제공하기 위해, 둘 또는 그 초과의 비디오 적응 세트들을 스위칭할 수 있다.
[0110] 어떤 경우에도, 상이한 적응 세트에 대한 요청을 수신한 이후에, 클라이언트 디바이스(40)는 요청에 기초하여 적응 세트를 선택할 수 있다(222). 이 선택 프로세스는 위의 단계(204)에 대하여 설명된 선택 프로세스와 실질적으로 유사할 수 있다. 예컨대, 클라이언트 디바이스(40)는, 새로운 적응 세트가 사용자에 의해 요청된 특징들(예컨대, 언어 또는 카메라 각도), 뿐만 아니라 클라이언트 디바이스(40)의 코딩 및 렌더링 능력들에 따르는 데이터를 포함하게, 새로운 적응 세트를 선택할 수 있다. 클라이언트 디바이스(40)는 또한, 네트워크 대역폭의 이용 가능한 양을 결정하고(224), 새로운 적응 세트의 표현들의 비트레이트들을 결정하고(226), 그리고 표현들의 비트레이트들 및 네트워크 대역폭의 이용 가능한 양에 기초하여 새로운 적응 세트로부터 표현을 선택할 수 있다(228). 이 표현 선택 프로세스는, 단계들(206-210)에 대하여 위에서 설명된 표현 선택 프로세스에 실질적으로 따를 수 있다.
[0111] 클라이언트 디바이스(40)는 이후, 선택된 표현의 데이터를 요청할 수 있다(230). 특히, 클라이언트 디바이스(40)는, 새로운 적응 세트로 스위칭하라는 요청이 수신되었던 재생 시간에 가장 가깝고 그리고 그 이후인 재생 시간을 갖는 스위치 포인트를 포함하는 세그먼트를 결정할 수 있다. 적응 세트들 간에 세그먼트들이 시간상 정렬되지 않음을 가정하면, 새로운 적응 세트의 표현의 세그먼트의 데이터를 요청하는 것은, 이전 적응 세트의 표현의 데이터를 요청하는 것과 실질적으로 동시에 발생할 수 있다. 또한, 클라이언트 디바이스(40)는, 스위칭되지 않은 다른 적응 세트들의 표현들로부터의 데이터를 계속해서 요청할 수 있다.
[0112] 일부 사례들에서, 새로운 적응 세트의 표현은 받아들일 수 없게 긴 시간 기간(예컨대, 수 초(a number of seconds) 또는 수 분(a number of minutes)) 동안 스위치 포인트를 갖지 않을 수 있다. 이러한 경우들에서, 클라이언트 디바이스(40)는, 적응 세트들을 스위칭하라는 요청이 수신되었던 재생 시간보다 더 이른 재생 시간을 갖는 스위치 포인트를 포함하는, 새로운 적응 세트의 표현의 데이터를 요청하기로 택할 수 있다. 통상적으로, 이는, 타임드 텍스트 데이터에 대해서만 발생할 것이며, 이 타임드 텍스트 데이터는 비디오 및 오디오 데이터와 비교할 때 비교적 낮은 비트레이트를 갖고, 그리고 이에 따라, 더 이른 스위치 포인트를 리트리빙하는 것은 데이터 리트리벌 또는 재생에 악영향을 끼치지 않을 것이다.
[0113] 어떤 경우에도, 서버 디바이스(60)는 요청된 데이터를 클라이언트 디바이스(40)에 전송할 수 있고(232), 그리고 클라이언트 디바이스(40)는 수신된 데이터를 디코딩 및 프리젠팅할 수 있다(234). 구체적으로, 클라이언트 디바이스(40)는, 실제 재생 시간이 스위치 포인트의 재생 시간을 충족시키거나 또는 초과할 때까지, 새로운 적응 세트의 표현의 스위치 포인트를 포함하는 수신된 데이터를 버퍼링할 수 있다. 이후, 클라이언트 디바이스(40)는, 이전 적응 세트의 데이터를 프리젠팅하는 것으로부터 새로운 적응 세트의 데이터를 프리젠팅하는 것으로 스위칭할 수 있다. 동시에, 클라이언트 디바이스(40)는, 다른 미디어 타입들을 갖는 다른 적응 세트들의 데이터를 계속해서 디코딩 및 프리젠팅할 수 있다.
[0114] 제1 적응 세트의 표현을 선택한 이후 그리고 새로운 적응 세트로 스위칭하라는 요청을 수신하기 이전에, 클라이언트 디바이스(40)가 주기적으로 대역폭 추정을 수행하고 그리고 필요하다면 네트워크 대역폭의 재평가된 양에 기초하여 제1 적응 세트의 상이한 표현을 선택할 수 있음이 이해되어야 한다. 마찬가지로, 새로운 적응 세트의 표현을 선택한 이후에, 클라이언트 디바이스(40)는 주기적으로, 후속하는 적응 세트를 결정하기 위해 대역폭 추정을 수행할 수 있다.
[0115] 이러한 방식으로, 도 4a 및 도 4b의 방법은, 제1 타입의 미디어 데이터를 포함하는 제1 적응 세트로부터 미디어 데이터를 리트리빙하는 단계, 제1 적응 세트로부터의 미디어 데이터를 프리젠팅하는 단계, 제1 타입의 미디어 데이터를 포함하는 제2 적응 세트로 스위칭하라는 요청에 대한 응답으로: 제2 적응 세트의 스위치 포인트를 포함하는 미디어 데이터를 제2 적응 세트로부터 리트리빙하는 단계, 및 실제 플레이아웃 시간이 스위치 포인트에 대한 플레이아웃 시간을 충족시키거나 또는 초과한 이후에, 제2 적응 세트로부터의 미디어 데이터를 프리젠팅하는 단계를 포함하는 방법의 예를 표현한다.
[0116] 도 5는 본 개시물의 기술들에 따른, 적응 세트들 간의 스위칭을 위한 다른 예시적 방법을 예시하는 흐름도이다. 이 예에서, 클라이언트 디바이스(40)는 MPD 파일(또는 다른 매니페스트 파일)을 수신한다(250). 클라이언트 디바이스(40)는 이후, 특정 타입(예컨대, 오디오, 타임드 텍스트, 또는 비디오)의 미디어 데이터를 포함하는 제1 적응 세트의 선택을 수신한다(252). 클라이언트 디바이스(40)는 이후, 제1 적응 세트의 표현으로부터 데이터를 리트리빙하고(254), 그리고 리트리빙된 데이터 중 적어도 일부를 프리젠팅한다(256).
[0117] 제1 적응 세트로부터의 미디어 데이터의 재생 동안, 클라이언트 디바이스(40)는 제2 적응 세트의 선택을 수신한다(258). 그러므로, 클라이언트 디바이스(40)는 제2 적응 세트의 표현으로부터 데이터를 리트리빙할 수 있고(260), 그리고 리트리빙된 데이터는 제2 적응 세트의 표현 내에 스위치 포인트를 포함할 수 있다. 따라서, 클라이언트 디바이스(40)는, 제2 적응 세트의 스위치 포인트에 대한 재생 시간 전까지, 제1 적응 세트로부터의 데이터를 계속해서 프리젠팅할 수 있다(262). 이후, 클라이언트 디바이스(40)는 스위치 포인트 이후에 제2 적응 세트의 미디어 데이터를 프리젠팅하는 것을 시작할 수 있다.
[0118] 이에 따라, 도 5의 방법은, 제1 타입의 미디어 데이터를 포함하는 제1 적응 세트로부터 미디어 데이터를 리트리빙하는 단계, 제1 적응 세트로부터의 미디어 데이터를 프리젠팅하는 단계, 제1 타입의 미디어 데이터를 포함하는 제2 적응 세트로 스위칭하라는 요청에 대한 응답으로: 제2 적응 세트의 스위치 포인트를 포함하는 미디어 데이터를 제2 적응 세트로부터 리트리빙하는 단계, 및 실제 플레이아웃 시간이 스위치 포인트에 대한 플레이아웃 시간을 충족시키거나 또는 초과한 이후에, 제2 적응 세트로부터의 미디어 데이터를 프리젠팅하는 단계를 포함하는 방법의 예를 표현한다.
[0119] 하나 또는 그 초과의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 결합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능들은, 컴퓨터-판독가능 매체 상의 하나 또는 그 초과의 명령들 또는 코드로 저장 또는 송신되고 그리고 하드웨어-기반 프로세싱 유닛에 의해 실행될 수 있다. 컴퓨터-판독가능 미디어는, 유형의 매체, 예컨대, 데이터 저장 미디어에 대응하는 컴퓨터-판독가능 저장 미디어, 또는 한 장소로부터 다른 장소로 예컨대 통신 프로토콜에 따라 컴퓨터 프로그램의 전송을 가능하게 하는 임의의 매체를 포함하는 통신 미디어를 포함할 수 있다. 이러한 방식으로, 컴퓨터-판독가능 미디어는 일반적으로, (1) 비-일시적인 유형의 컴퓨터-판독가능 저장 미디어 또는 (2) 통신 매체, 예컨대, 신호 또는 반송파에 대응할 수 있다. 데이터 저장 미디어는, 본 개시물에 설명된 기술들의 구현을 위해 명령들, 코드 및/또는 데이터 구조들을 리트리빙하기 위해 하나 또는 그 초과의 컴퓨터들 또는 하나 또는 그 초과의 프로세서들에 의해 액세스될 수 있는 임의의 이용 가능한 미디어일 수 있다. 컴퓨터 프로그램 물건은 컴퓨터-판독가능 매체를 포함할 수 있다.
[0120] 제한이 아닌 예로서, 이러한 컴퓨터-판독가능 저장 미디어는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 연결이 적절하게 컴퓨터-판독가능 매체로 불린다. 예컨대, 명령들이 웹사이트, 서버, 또는 다른 원격 소스로부터 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL(digital subscriber line), 또는 무선 기술들, 예컨대 적외선, 라디오, 및 마이크로파를 사용하여 송신되는 경우, 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL, 또는 무선 기술들, 예컨대 적외선, 라디오, 및 마이크로파가 매체의 정의에 포함된다. 그러나, 컴퓨터-판독가능 저장 미디어 및 데이터 저장 미디어가 연결들, 반송파들, 신호들, 또는 다른 일시적 미디어를 포함하는 것이 아니라, 대신에, 비-일시적인 유형의 저장 미디어에 관한 것임이 이해되어야 한다. 본원에 사용된 바와 같이, 디스크(disk) 및 디스크(disc)는 콤팩트 디스크(CD:compact disc), 레이저 디스크(disc), 광학 디스크(disc), 디지털 다기능 디스크(DVD:digital versatile disc), 플로피 디스크(disk) 및 블루레이 디스크(disc)를 포함하는데, 디스크(disk)들이 보통 데이터를 자기적으로 재생하는 반면에, 디스크(disc)들은 레이저들을 이용하여 데이터를 광학적으로 재생한다. 이들의 결합들이 또한 컴퓨터-판독가능 미디어의 범위 내에 포함되어야 한다.
[0121] 명령들은 하나 또는 그 초과의 프로세서들, 예컨대, 하나 또는 그 초과의 DSP(digital signal processor)들, 범용 마이크로프로세서들, ASIC(application specific integrated circuit)들, FPGA(field programmable logic array)들, 또는 다른 균등한 집적 또는 이산 논리 회로에 의해 실행될 수 있다. 이에 따라, 본원에 사용된 바와 같이 "프로세서"란 용어는, 전술된 구조, 또는 본원에 설명된 기술들의 구현에 적절한 임의의 다른 구조 중 임의의 구조를 지칭할 수 있다. 부가하여, 일부 양상들에서, 본원에 설명된 기능은, 인코딩 및 디코딩하도록 구성된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공되거나, 또는 결합된 코덱에 통합될 수 있다. 또한, 기술들은, 하나 또는 그 초과의 회로들 또는 논리 엘리먼트들에 완전히 구현될 수 있다.
[0122] 본 개시물의 기술들은, 무선 핸드세트, IC(integrated circuit) 또는 IC들의 세트(예컨대, 칩셋)를 비롯한 매우 다양한 디바이스들 또는 장치들로 구현될 수 있다. 개시된 기술들을 수행하도록 구성된 디바이스들의 기능적 양상들을 강조하기 위해 다양한 컴포넌트들, 모듈들, 또는 유닛들이 본 개시물에서 설명되지만, 반드시 상이한 하드웨어 유닛들에 의한 실시를 요구하는 것은 아니다. 그보다는, 위에서 설명된 바와 같이, 적절한 소프트웨어 및/또는 펌웨어와 함께, 다양한 유닛들은 코덱 하드웨어 유닛에 결합될 수 있거나, 또는 위에서 설명된 하나 또는 그 초과의 프로세서들을 비롯한 상호동작 하드웨어 유닛들의 콜렉션에 의해 제공될 수 있다.
[0123] 다양한 예들이 설명되었다. 이들 및 다른 예들은 하기의 청구항들의 범위 내에 있다.

Claims (40)

  1. 미디어 데이터를 리트리빙(retrieve)하는 방법으로서,
    미디어 데이터를 리트리빙할 제1 적응 세트를 선택하는 단계 ― 상기 제1 적응 세트는 미디어 프리젠테이션의 기간에 있고, 상기 기간은 상기 제1 적응 세트 및 제2 적응 세트를 비롯한 복수의 적응 세트들을 포함하며, 상기 제1 적응 세트는 비트레이트 이외에 코딩 및 렌더링 특징들의 제1 공통 세트를 공유하는 복수의 제1 표현들을 포함하고, 상기 적응 세트들은 공통 타입의 미디어 데이터에 대해 서로에 대한 대안(alternative)들을 표현하고 그리고 비트레이트 이외에 적어도 하나의 특징에 의해 서로 상이하며, 상기 복수의 적응 세트들 각각은 DASH(Dynamic Adaptive Streaming over HTTP)에 따름 ―;
    상기 선택에 대한 응답으로, DASH에 따라, 상기 공통 타입의 미디어 데이터를 포함하는 상기 제1 적응 세트의 제1 표현으로부터 미디어 데이터를 리트리빙하는 단계 ― 상기 제1 표현은 상기 복수의 제1 표현들 중 하나를 포함함 ―;
    상기 제1 적응 세트의 상기 제1 표현으로부터의 미디어 데이터를 프리젠팅(present)하는 단계;
    상기 제1 표현으로부터의 상기 미디어 데이터의 프리젠테이션 동안, 상기 제2 적응 세트로 스위칭하라는 요청을 수신하는 단계 ― 상기 제2 적응 세트로 스위칭하라는 요청이 수신되는 시간에, 스위치 포인트에 대한 플레이아웃 시간은 스위칭하라는 요청이 수신되는 시간에서의 실제 플레이아웃 시간을 초과함 ―; 및
    상기 공통 타입의 미디어 데이터를 포함하는 상기 제2 적응 세트로 스위칭하라는 요청에 대한 응답으로 ― 상기 제2 적응 세트는 비트레이트 이외에 코딩 및 렌더링 특징들의 제2 공통 세트를 공유하는 복수의 제2 표현들을 포함하고, 상기 복수의 제1 표현들 각각은 비트레이트 이외에 적어도 하나의 특징에 의해 상기 복수의 제2 표현들 각각과 상이함 ―:
    DASH에 따라, 상기 제2 적응 세트의 제2 표현의 스위치 포인트를 포함하는 미디어 데이터를 상기 제2 적응 세트의 상기 제2 표현으로부터 리트리빙하는 단계 ― 상기 제2 표현은 상기 복수의 제2 표현들 중 하나를 포함하고, 상기 스위치 포인트는 상기 기간 내에 있고 상기 기간의 처음에는 있지 않음 ―; 및
    실제 플레이아웃 시간이 상기 스위치 포인트에 대한 플레이아웃 시간을 충족시키거나 또는 초과한 이후에, 상기 제2 적응 세트의 상기 제2 표현으로부터의 미디어 데이터를 프리젠팅하는 단계
    를 포함하는,
    미디어 데이터를 리트리빙하는 방법.
  2. 제 1 항에 있어서,
    상기 공통 타입은 오디오 데이터 및 자막 데이터 중 적어도 하나를 포함하고, 상기 복수의 제1 표현들은 제1 언어로 된 상기 공통 타입의 미디어 데이터를 포함하고, 그리고 상기 복수의 제2 표현들은 상기 제1 언어와는 상이한 제2 언어로 된 상기 공통 타입의 미디어 데이터를 포함하는,
    미디어 데이터를 리트리빙하는 방법.
  3. 제 1 항에 있어서,
    상기 공통 타입은 비디오 데이터를 포함하고, 상기 복수의 제1 표현들은 제1 카메라 각도에 대한 비디오 데이터를 포함하고, 그리고 상기 복수의 제2 표현들은 상기 제1 카메라 각도와는 상이한 제2 카메라 각도에 대한 비디오 데이터를 포함하는,
    미디어 데이터를 리트리빙하는 방법.
  4. 제 1 항에 있어서,
    상기 방법은,
    상기 제2 적응 세트로부터 리트리빙된 미디어 데이터에 대한 플레이아웃 시간이 상기 실제 플레이아웃 시간을 충족시키거나 또는 초과할 때까지, 상기 제1 적응 세트 및 상기 제2 적응 세트로부터 데이터를 리트리빙하는 단계
    를 더 포함하는,
    미디어 데이터를 리트리빙하는 방법.
  5. 제 1 항에 있어서,
    상기 제1 적응 세트 및 상기 제2 적응 세트에 대한 매니페스트(manifest) 파일을 획득하는 단계; 및
    상기 매니페스트 파일의 데이터를 사용하여 상기 스위치 포인트에 대한 플레이아웃 시간을 결정하는 단계
    를 더 포함하고,
    상기 미디어 데이터를 리트리빙하는 단계는, 상기 스위치 포인트에 대한 플레이아웃 시간과, 상기 제2 적응 세트로 스위칭하라는 요청이 수신될 때의 실제 플레이아웃 시간의 비교에 적어도 부분적으로 기초하여 미디어 데이터를 리트리빙하는 단계를 포함하는,
    미디어 데이터를 리트리빙하는 방법.
  6. 제 1 항에 있어서,
    상기 제1 적응 세트 및 상기 제2 적응 세트에 대한 매니페스트 파일을 획득하는 단계; 및
    상기 매니페스트 파일의 데이터를 사용하여 상기 제2 적응 세트의 상기 제2 표현에서 상기 스위치 포인트의 위치를 결정하는 단계
    를 더 포함하는,
    미디어 데이터를 리트리빙하는 방법.
  7. 제 6 항에 있어서,
    상기 위치는, 상기 제2 적응 세트의 상기 제2 표현의 세그먼트에서 시작 바이트에 의해 적어도 부분적으로 정의되는,
    미디어 데이터를 리트리빙하는 방법.
  8. 제 6 항에 있어서,
    상기 제2 표현은 선택된 표현을 포함하고, 상기 방법은,
    상기 매니페스트 파일을 사용하여 상기 제2 적응 세트의 상기 복수의 제2 표현들에 대한 비트레이트들을 결정하는 단계;
    네트워크 대역폭의 현재 양을 결정하는 단계; 및
    상기 선택된 표현에 대한 비트레이트가 상기 네트워크 대역폭의 현재 양을 초과하지 않게, 상기 복수의 제2 표현들로부터 상기 선택된 표현을 선택하는 단계
    를 더 포함하는,
    미디어 데이터를 리트리빙하는 방법.
  9. 미디어 데이터를 리트리빙하기 위한 디바이스로서,
    미디어 데이터를 리트리빙할 제1 적응 세트를 선택하고 ― 상기 제1 적응 세트는 미디어 프리젠테이션의 기간에 있고, 상기 기간은 상기 제1 적응 세트 및 제2 적응 세트를 비롯한 복수의 적응 세트들을 포함하며, 상기 제1 적응 세트는 비트레이트 이외에 코딩 및 렌더링 특징들의 제1 공통 세트를 공유하는 복수의 제1 표현들을 포함하고, 상기 적응 세트들은 공통 타입의 미디어 데이터에 대해 서로에 대한 대안들을 표현하고 그리고 비트레이트 이외에 적어도 하나의 특징에 의해 서로 상이하며, 상기 복수의 적응 세트들 각각은 DASH(Dynamic Adaptive Streaming over HTTP)에 따름 ―,
    상기 선택에 대한 응답으로, DASH에 따라, 상기 공통 타입의 미디어 데이터를 포함하는 상기 제1 적응 세트의 제1 표현으로부터 미디어 데이터를 리트리빙하고 ― 상기 제1 표현은 상기 복수의 제1 표현들 중 하나를 포함함 ―,
    상기 제1 적응 세트의 상기 제1 표현으로부터의 미디어 데이터를 프리젠팅하고,
    상기 제1 표현으로부터의 상기 미디어 데이터의 프리젠테이션 동안, 상기 제2 적응 세트로 스위칭하라는 요청을 수신하고 ― 상기 제2 적응 세트로 스위칭하라는 요청이 수신되는 시간에, 스위치 포인트에 대한 플레이아웃 시간은 스위칭하라는 요청이 수신되는 시간에서의 실제 플레이아웃 시간을 초과함 ―, 그리고
    상기 공통 타입의 미디어 데이터를 포함하는 상기 제2 적응 세트로 스위칭하라는 요청에 대한 응답으로 ― 상기 제2 적응 세트는 비트레이트 이외에 코딩 및 렌더링 특징들의 제2 공통 세트를 공유하는 복수의 제2 표현들을 포함하고, 상기 복수의 제1 표현들 각각은 비트레이트 이외에 적어도 하나의 특징에 의해 상기 복수의 제2 표현들 각각과 상이함 ―:
    DASH에 따라, 상기 제2 적응 세트의 제2 표현의 스위치 포인트를 포함하는 미디어 데이터를 상기 제2 적응 세트의 상기 제2 표현으로부터 리트리빙하고 ― 상기 제2 표현은 상기 복수의 제2 표현들 중 하나를 포함하고, 상기 스위치 포인트는 상기 기간 내에 있고 상기 기간의 처음에는 있지 않음 ―, 그리고
    실제 플레이아웃 시간이 상기 스위치 포인트에 대한 플레이아웃 시간을 충족시키거나 또는 초과한 이후에, 상기 제2 적응 세트의 상기 제2 표현으로부터의 미디어 데이터를 프리젠팅하도록
    구성된 하나 또는 그 초과의 프로세서들
    을 포함하는,
    미디어 데이터를 리트리빙하기 위한 디바이스.
  10. 제 9 항에 있어서,
    상기 공통 타입은 오디오 데이터 및 자막 데이터 중 적어도 하나를 포함하고, 상기 복수의 제1 표현들은 제1 언어로 된 상기 공통 타입의 미디어 데이터를 포함하고, 그리고 상기 복수의 제2 표현들은 상기 제1 언어와는 상이한 제2 언어로 된 상기 공통 타입의 미디어 데이터를 포함하는,
    미디어 데이터를 리트리빙하기 위한 디바이스.
  11. 제 9 항에 있어서,
    상기 공통 타입은 비디오 데이터를 포함하고, 상기 복수의 제1 표현들은 제1 카메라 각도에 대한 비디오 데이터를 포함하고, 그리고 상기 복수의 제2 표현들은 상기 제1 카메라 각도와는 상이한 제2 카메라 각도에 대한 비디오 데이터를 포함하는,
    미디어 데이터를 리트리빙하기 위한 디바이스.
  12. 제 9 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들은 추가로, 상기 제2 적응 세트로부터 리트리빙된 미디어 데이터에 대한 플레이아웃 시간이 상기 실제 플레이아웃 시간을 충족시키거나 또는 초과할 때까지, 상기 제1 적응 세트 및 상기 제2 적응 세트로부터 데이터를 리트리빙하도록 구성되는,
    미디어 데이터를 리트리빙하기 위한 디바이스.
  13. 제 9 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들은 추가로, 상기 제1 적응 세트 및 상기 제2 적응 세트에 대한 매니페스트 파일을 획득하고, 상기 매니페스트 파일의 데이터를 사용하여 상기 스위치 포인트에 대한 플레이아웃 시간을 결정하고, 그리고 상기 스위치 포인트에 대한 플레이아웃 시간과, 상기 제2 적응 세트로 스위칭하라는 요청이 수신될 때의 실제 플레이아웃 시간의 비교에 적어도 부분적으로 기초하여 미디어 데이터를 리트리빙하도록 구성되는,
    미디어 데이터를 리트리빙하기 위한 디바이스.
  14. 제 9 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들은 추가로, 상기 제1 적응 세트 및 상기 제2 적응 세트에 대한 매니페스트 파일을 획득하고, 그리고 상기 매니페스트 파일의 데이터를 사용하여 상기 제2 적응 세트의 상기 제2 표현에서 상기 스위치 포인트의 위치를 결정하도록 구성되는,
    미디어 데이터를 리트리빙하기 위한 디바이스.
  15. 제 14 항에 있어서,
    상기 위치는, 상기 제2 적응 세트의 상기 제2 표현의 세그먼트에서 시작 바이트에 의해 적어도 부분적으로 정의되는,
    미디어 데이터를 리트리빙하기 위한 디바이스.
  16. 제 14 항에 있어서,
    상기 제2 표현은 선택된 표현을 포함하고, 상기 하나 또는 그 초과의 프로세서들은 추가로, 상기 매니페스트 파일을 사용하여 상기 제2 적응 세트의 상기 복수의 제2 표현들에 대한 비트레이트들을 결정하고, 네트워크 대역폭의 현재 양을 결정하고, 그리고 상기 선택된 표현에 대한 비트레이트가 상기 네트워크 대역폭의 현재 양을 초과하지 않게, 상기 복수의 제2 표현들로부터 상기 선택된 표현을 선택하도록 구성되는,
    미디어 데이터를 리트리빙하기 위한 디바이스.
  17. 미디어 데이터를 리트리빙하기 위한 디바이스로서,
    미디어 데이터를 리트리빙할 제1 적응 세트를 선택하기 위한 수단 ― 상기 제1 적응 세트는 미디어 프리젠테이션의 기간에 있고, 상기 기간은 상기 제1 적응 세트 및 제2 적응 세트를 비롯한 복수의 적응 세트들을 포함하며, 상기 제1 적응 세트는 비트레이트 이외에 코딩 및 렌더링 특징들의 제1 공통 세트를 공유하는 복수의 제1 표현들을 포함하고, 상기 적응 세트들은 공통 타입의 미디어 데이터에 대해 서로에 대한 대안들을 표현하고 그리고 비트레이트 이외에 적어도 하나의 특징에 의해 서로 상이하며, 상기 복수의 적응 세트들 각각은 DASH(Dynamic Adaptive Streaming over HTTP)에 따름 ―;
    DASH에 따라, 상기 공통 타입의 미디어 데이터를 포함하는 상기 제1 적응 세트의 제1 표현으로부터 미디어 데이터를 리트리빙하기 위한 수단 ― 상기 제1 표현은 상기 복수의 제1 표현들 중 하나를 포함함 ―;
    상기 제1 적응 세트의 상기 제1 표현으로부터의 미디어 데이터를 프리젠팅하기 위한 수단;
    상기 제1 표현으로부터의 상기 미디어 데이터의 프리젠테이션 동안, 비트레이트 이외에 코딩 및 렌더링 특징들의 제2 공통 세트를 공유하는 복수의 제2 표현들을 포함하는 상기 제2 적응 세트로 스위칭하라는 요청을 수신하기 위한 수단 ― 상기 제2 적응 세트로 스위칭하라는 요청이 수신되는 시간에, 스위치 포인트에 대한 플레이아웃 시간은 스위칭하라는 요청이 수신되는 시간에서의 실제 플레이아웃 시간을 초과함 ―;
    DASH에 따라, 그리고 상기 공통 타입의 미디어 데이터를 포함하는 상기 제2 적응 세트로 스위칭하라는 요청에 대한 응답으로, 상기 기간 내에 있고 상기 기간의 처음에는 있지 않은 스위치 포인트를 포함하는 미디어 데이터를 상기 제2 적응 세트의 상기 복수의 제2 표현들 중 제2 표현으로부터 리트리빙하기 위한 수단 ― 상기 복수의 제1 표현들 각각은 비트레이트 이외에 적어도 하나의 특징에 의해 상기 복수의 제2 표현들 각각과 상이함 ―; 및
    상기 요청에 대한 응답으로, 실제 플레이아웃 시간이 상기 스위치 포인트에 대한 플레이아웃 시간을 충족시키거나 또는 초과한 이후에, 상기 제2 적응 세트의 상기 제2 표현으로부터의 미디어 데이터를 프리젠팅하기 위한 수단
    을 포함하는,
    미디어 데이터를 리트리빙하기 위한 디바이스.
  18. 제 17 항에 있어서,
    상기 공통 타입은 오디오 데이터 및 자막 데이터 중 적어도 하나를 포함하고, 상기 복수의 제1 표현들은 제1 언어로 된 상기 공통 타입의 미디어 데이터를 포함하고, 그리고 상기 복수의 제2 표현들은 상기 제1 언어와는 상이한 제2 언어로 된 상기 공통 타입의 미디어 데이터를 포함하는,
    미디어 데이터를 리트리빙하기 위한 디바이스.
  19. 제 17 항에 있어서,
    상기 공통 타입은 비디오 데이터를 포함하고, 상기 복수의 제1 표현들은 제1 카메라 각도에 대한 비디오 데이터를 포함하고, 그리고 상기 복수의 제2 표현들은 상기 제1 카메라 각도와는 상이한 제2 카메라 각도에 대한 비디오 데이터를 포함하는,
    미디어 데이터를 리트리빙하기 위한 디바이스.
  20. 제 17 항에 있어서,
    상기 제2 적응 세트로부터 리트리빙된 미디어 데이터에 대한 플레이아웃 시간이 상기 실제 플레이아웃 시간을 충족시키거나 또는 초과할 때까지, 상기 제1 적응 세트 및 상기 제2 적응 세트로부터 데이터를 리트리빙하기 위한 수단
    을 더 포함하는,
    미디어 데이터를 리트리빙하기 위한 디바이스.
  21. 제 17 항에 있어서,
    상기 제1 적응 세트 및 상기 제2 적응 세트에 대한 매니페스트 파일을 획득하기 위한 수단; 및
    상기 매니페스트 파일의 데이터를 사용하여 상기 스위치 포인트에 대한 플레이아웃 시간을 결정하기 위한 수단
    을 더 포함하고,
    상기 미디어 데이터를 리트리빙하기 위한 수단은, 상기 스위치 포인트에 대한 플레이아웃 시간과, 상기 제2 적응 세트로 스위칭하라는 요청이 수신될 때의 실제 플레이아웃 시간의 비교에 적어도 부분적으로 기초하여 미디어 데이터를 리트리빙하기 위한 수단을 포함하는,
    미디어 데이터를 리트리빙하기 위한 디바이스.
  22. 제 17 항에 있어서,
    상기 제1 적응 세트 및 상기 제2 적응 세트에 대한 매니페스트 파일을 획득하기 위한 수단; 및
    상기 매니페스트 파일의 데이터를 사용하여 상기 제2 적응 세트의 상기 제2 표현에서 상기 스위치 포인트의 위치를 결정하기 위한 수단
    을 더 포함하는,
    미디어 데이터를 리트리빙하기 위한 디바이스.
  23. 제 22 항에 있어서,
    상기 위치는, 상기 제2 적응 세트의 상기 제2 표현의 세그먼트에서 시작 바이트에 의해 적어도 부분적으로 정의되는,
    미디어 데이터를 리트리빙하기 위한 디바이스.
  24. 제 22 항에 있어서,
    상기 제2 표현은 선택된 표현을 포함하고, 상기 디바이스는,
    상기 매니페스트 파일을 사용하여 상기 제2 적응 세트의 상기 복수의 제2 표현들에 대한 비트레이트들을 결정하기 위한 수단;
    네트워크 대역폭의 현재 양을 결정하기 위한 수단; 및
    상기 선택된 표현에 대한 비트레이트가 상기 네트워크 대역폭의 현재 양을 초과하지 않게, 상기 복수의 제2 표현들로부터 상기 선택된 표현을 선택하기 위한 수단
    을 더 포함하는,
    미디어 데이터를 리트리빙하기 위한 디바이스.
  25. 컴퓨터-판독가능 저장 매체로서,
    실행될 때, 프로세서로 하여금,
    미디어 데이터를 리트리빙할 제1 적응 세트를 선택하게 하고 ― 상기 제1 적응 세트는 미디어 프리젠테이션의 기간에 있고, 상기 기간은 상기 제1 적응 세트 및 제2 적응 세트를 비롯한 복수의 적응 세트들을 포함하며, 상기 제1 적응 세트는 비트레이트 이외에 코딩 및 렌더링 특징들의 제1 공통 세트를 공유하는 복수의 제1 표현들을 포함하고, 상기 적응 세트들은 공통 타입의 미디어 데이터에 대해 서로에 대한 대안들을 표현하고 그리고 비트레이트 이외에 적어도 하나의 특징에 의해 서로 상이하며, 상기 복수의 적응 세트들 각각은 DASH(Dynamic Adaptive Streaming over HTTP)에 따름 ―;
    DASH에 따라, 상기 공통 타입의 미디어 데이터를 포함하는 상기 제1 적응 세트의 제1 표현으로부터 미디어 데이터를 리트리빙하게 하고 ― 상기 제1 표현은 상기 복수의 제1 표현들 중 하나를 포함함 ―;
    상기 제1 적응 세트의 상기 제1 표현으로부터의 미디어 데이터를 프리젠팅하게 하고;
    상기 제1 표현으로부터의 상기 미디어 데이터의 프리젠테이션 동안, 상기 제2 적응 세트로 스위칭하라는 요청을 수신하게 하고 ― 상기 제2 적응 세트로 스위칭하라는 요청이 수신되는 시간에, 스위치 포인트에 대한 플레이아웃 시간은 스위칭하라는 요청이 수신되는 시간에서의 실제 플레이아웃 시간을 초과함 ―; 그리고
    상기 공통 타입의 미디어 데이터를 포함하는 상기 제2 적응 세트로 스위칭하라는 요청에 대한 응답으로 ― 상기 제2 적응 세트는 비트레이트 이외에 코딩 및 렌더링 특징들의 제2 공통 세트를 공유하는 복수의 제2 표현들을 포함하고, 상기 복수의 제1 표현들 각각은 비트레이트 이외에 적어도 하나의 특징에 의해 상기 복수의 제2 표현들 각각과 상이함 ―:
    DASH에 따라, 상기 제2 적응 세트의 제2 표현의 스위치 포인트를 포함하는 미디어 데이터를 상기 제2 적응 세트의 상기 제2 표현으로부터 리트리빙하게 하고 ― 상기 제2 표현은 상기 복수의 제2 표현들 중 하나를 포함하고, 상기 스위치 포인트는 상기 기간 내에 있고 상기 기간의 처음에는 있지 않음 ―; 그리고
    실제 플레이아웃 시간이 상기 스위치 포인트에 대한 플레이아웃 시간을 충족시키거나 또는 초과한 이후에, 상기 제2 적응 세트의 상기 제2 표현으로부터의 미디어 데이터를 프리젠팅하게 하는
    명령들을 저장하고 있는,
    컴퓨터-판독가능 저장 매체.
  26. 제 25 항에 있어서,
    상기 공통 타입은 오디오 데이터 및 자막 데이터 중 적어도 하나를 포함하고, 상기 복수의 제1 표현들은 제1 언어로 된 상기 공통 타입의 미디어 데이터를 포함하고, 그리고 상기 복수의 제2 표현들은 상기 제1 언어와는 상이한 제2 언어로 된 상기 공통 타입의 미디어 데이터를 포함하는,
    컴퓨터-판독가능 저장 매체.
  27. 제 25 항에 있어서,
    상기 공통 타입은 비디오 데이터를 포함하고, 상기 복수의 제1 표현들은 제1 카메라 각도에 대한 비디오 데이터를 포함하고, 그리고 상기 복수의 제2 표현들은 상기 제1 카메라 각도와는 상이한 제2 카메라 각도에 대한 비디오 데이터를 포함하는,
    컴퓨터-판독가능 저장 매체.
  28. 제 25 항에 있어서,
    상기 프로세서로 하여금, 상기 제2 적응 세트로부터 리트리빙된 미디어 데이터에 대한 플레이아웃 시간이 상기 실제 플레이아웃 시간을 충족시키거나 또는 초과할 때까지, 상기 제1 적응 세트 및 상기 제2 적응 세트로부터 데이터를 리트리빙하게 하는 명령들
    을 더 포함하는,
    컴퓨터-판독가능 저장 매체.
  29. 제 25 항에 있어서,
    상기 프로세서로 하여금,
    상기 제1 적응 세트 및 상기 제2 적응 세트에 대한 매니페스트 파일을 획득하게 하고; 그리고
    상기 매니페스트 파일의 데이터를 사용하여 상기 스위치 포인트에 대한 플레이아웃 시간을 결정하게 하는
    명령들을 더 포함하고,
    상기 프로세서로 하여금, 상기 미디어 데이터를 리트리빙하게 하는 명령들은, 상기 프로세서로 하여금, 상기 스위치 포인트에 대한 플레이아웃 시간과, 상기 제2 적응 세트로 스위칭하라는 요청이 수신될 때의 실제 플레이아웃 시간의 비교에 적어도 부분적으로 기초하여 미디어 데이터를 리트리빙하게 하는 명령들을 포함하는,
    컴퓨터-판독가능 저장 매체.
  30. 제 25 항에 있어서,
    상기 프로세서로 하여금,
    상기 제1 적응 세트 및 상기 제2 적응 세트에 대한 매니페스트 파일을 획득하게 하고; 그리고
    상기 매니페스트 파일의 데이터를 사용하여 상기 제2 적응 세트의 상기 제2 표현에서 상기 스위치 포인트의 위치를 결정하게 하는
    명령들을 더 포함하는,
    컴퓨터-판독가능 저장 매체.
  31. 제 30 항에 있어서,
    상기 위치는, 상기 제2 적응 세트의 상기 제2 표현의 세그먼트에서 시작 바이트에 의해 적어도 부분적으로 정의되는,
    컴퓨터-판독가능 저장 매체.
  32. 제 30 항에 있어서,
    상기 제2 표현은 선택된 표현을 포함하고, 상기 컴퓨터-판독가능 저장 매체는, 상기 프로세서로 하여금,
    상기 매니페스트 파일을 사용하여 상기 제2 적응 세트의 상기 복수의 제2 표현들에 대한 비트레이트들을 결정하게 하고;
    네트워크 대역폭의 현재 양을 결정하게 하고; 그리고
    상기 선택된 표현에 대한 비트레이트가 상기 네트워크 대역폭의 현재 양을 초과하지 않게, 상기 복수의 제2 표현들로부터 상기 선택된 표현을 선택하게 하는
    명령들을 더 포함하는,
    컴퓨터-판독가능 저장 매체.
  33. 제 1 항에 있어서,
    상기 제2 표현의 상기 스위치 포인트는 상기 제1 표현의 스위치 포인트와 정렬되지 않은,
    미디어 데이터를 리트리빙하는 방법.
  34. 제 9 항에 있어서,
    상기 제2 표현의 상기 스위치 포인트는 상기 제1 표현의 스위치 포인트와 정렬되지 않은,
    미디어 데이터를 리트리빙하기 위한 디바이스.
  35. 제 17 항에 있어서,
    상기 제2 표현의 상기 스위치 포인트는 상기 제1 표현의 스위치 포인트와 정렬되지 않은,
    미디어 데이터를 리트리빙하기 위한 디바이스.
  36. 제 25 항에 있어서,
    상기 제2 표현의 상기 스위치 포인트는 상기 제1 표현의 스위치 포인트와 정렬되지 않은,
    컴퓨터-판독가능 저장 매체.


  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
KR1020167011846A 2013-10-08 2014-09-09 미디어 스트리밍 동안 적응 세트들 간의 스위칭 KR101703179B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/048,210 2013-10-08
US14/048,210 US9270721B2 (en) 2013-10-08 2013-10-08 Switching between adaptation sets during media streaming
PCT/US2014/054729 WO2015053895A1 (en) 2013-10-08 2014-09-09 Switching between adaptation sets during media streaming

Publications (2)

Publication Number Publication Date
KR20160058189A KR20160058189A (ko) 2016-05-24
KR101703179B1 true KR101703179B1 (ko) 2017-02-06

Family

ID=51627353

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167011846A KR101703179B1 (ko) 2013-10-08 2014-09-09 미디어 스트리밍 동안 적응 세트들 간의 스위칭

Country Status (8)

Country Link
US (1) US9270721B2 (ko)
EP (1) EP3056011A1 (ko)
JP (1) JP6027291B1 (ko)
KR (1) KR101703179B1 (ko)
CN (2) CN108322775B (ko)
BR (1) BR112016007663A2 (ko)
CA (1) CA2923163A1 (ko)
WO (1) WO2015053895A1 (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3018912B1 (en) * 2013-07-02 2018-09-12 Sony Corporation Content provision device, content provision method, program, terminal device, and content provision system
US20150095450A1 (en) * 2013-09-30 2015-04-02 Qualcomm Incorporated Utilizing multiple switchable adaptation sets for streaming media data
US9900362B2 (en) * 2014-02-11 2018-02-20 Kiswe Mobile Inc. Methods and apparatus for reducing latency shift in switching between distinct content streams
US9866608B2 (en) * 2014-03-24 2018-01-09 Qualcomm Incorporated Processing continuous multi-period content
CN105099602A (zh) * 2014-04-25 2015-11-25 阿里巴巴集团控股有限公司 一种基于网速传输文件的方法及系统
US10924781B2 (en) * 2014-06-27 2021-02-16 Satellite Investors, Llc Method and system for real-time transcoding of MPEG-DASH on-demand media segments while in transit from content host to dash client
BR112016027656B1 (pt) * 2014-06-30 2023-11-14 DISH Technologies L.L.C. Método executável por dispositivo cliente para processar programa de mídia recebido e dispositivo reprodutor de mídia
US9270563B1 (en) 2014-11-24 2016-02-23 Roku, Inc. Apparatus and method for content playback utilizing crowd sourced statistics
US20180124439A1 (en) * 2015-05-18 2018-05-03 Lg Electronics Inc. Broadcast signal transmitting apparatus, broadcast signal receiving apparatus, broadcast signal transmitting method, and broadcast signal receiving method
US10623517B2 (en) * 2015-12-29 2020-04-14 Oath Inc. Content prefetching and cache management
WO2017169891A1 (ja) * 2016-03-31 2017-10-05 ソニー株式会社 情報処理装置および方法
EP3249929A1 (en) * 2016-05-25 2017-11-29 Thomson Licensing Method and network equipment for establishing a manifest
US10432690B1 (en) 2016-06-03 2019-10-01 Amazon Technologies, Inc. Manifest partitioning
US10116719B1 (en) 2016-06-03 2018-10-30 Amazon Technologies, Inc. Customized dash manifest
US10104143B1 (en) * 2016-06-03 2018-10-16 Amazon Technologies, Inc. Manifest segmentation
US10965971B2 (en) * 2016-07-13 2021-03-30 Sony Corporation Server device, method of transmission processing of server device, client device, method of reception processing of client device, and server system
JP2019532597A (ja) * 2016-08-30 2019-11-07 ソニック アイピー, インコーポレイテッド 360°ビューコンテンツをエンコードおよび再生するためのシステムおよび方法
CN107888993B (zh) * 2016-09-30 2020-11-06 华为技术有限公司 一种视频数据的处理方法及装置
WO2018058993A1 (zh) * 2016-09-30 2018-04-05 华为技术有限公司 一种视频数据的处理方法及装置
US10334264B2 (en) * 2016-11-18 2019-06-25 Ainsworth Game Technology Limited Method of encoding multiple languages in a video file for a gaming machine
WO2018115267A1 (en) * 2016-12-22 2018-06-28 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Media streaming with fast tuning and fast channel switching
CN106791902A (zh) * 2016-12-23 2017-05-31 北京多视角文化传播有限公司 对移动互联网设备的音视频切换方法及其切换台
US10499090B2 (en) * 2016-12-30 2019-12-03 Facebook, Inc. Systems and methods to transition between media content items
CN108989826B (zh) * 2017-06-05 2023-07-14 上海交通大学 视频资源的处理方法及装置
US10652166B2 (en) * 2017-06-27 2020-05-12 Cisco Technology, Inc. Non-real time adaptive bitrate recording scheduler
US20190020734A1 (en) * 2017-07-14 2019-01-17 Comcast Cable Communications, Llc Reduced content manifest size
CN110545483B (zh) * 2018-05-29 2021-08-10 北京字节跳动网络技术有限公司 网页中切换分辨率播放媒体文件的方法、装置及存储介质
EP3661217A1 (en) 2018-09-28 2020-06-03 Comcast Cable Communications LLC Per-segment parameters for content
US10863211B1 (en) * 2018-11-12 2020-12-08 Amazon Technologies, Inc. Manifest data for server-side media fragment insertion
CN111510756A (zh) 2019-01-30 2020-08-07 上海哔哩哔哩科技有限公司 音视频的切换方法、装置、计算机设备及可读存储介质
US10963841B2 (en) 2019-03-27 2021-03-30 On Time Staffing Inc. Employment candidate empathy scoring system
US10728443B1 (en) 2019-03-27 2020-07-28 On Time Staffing Inc. Automatic camera angle switching to create combined audiovisual file
US11127232B2 (en) 2019-11-26 2021-09-21 On Time Staffing Inc. Multi-camera, multi-sensor panel data extraction system and method
US11023735B1 (en) 2020-04-02 2021-06-01 On Time Staffing, Inc. Automatic versioning of video presentations
US11144882B1 (en) 2020-09-18 2021-10-12 On Time Staffing Inc. Systems and methods for evaluating actions over a computer network and establishing live network connections
US11520848B2 (en) * 2021-01-06 2022-12-06 Tencent America LLC Methods and apparatuses for dynamic adaptive streaming over HTTP
US11727040B2 (en) 2021-08-06 2023-08-15 On Time Staffing, Inc. Monitoring third-party forum contributions to improve searching through time-to-live data assignments
US11423071B1 (en) 2021-08-31 2022-08-23 On Time Staffing, Inc. Candidate data ranking method using previously selected candidate data
US11907652B2 (en) 2022-06-02 2024-02-20 On Time Staffing, Inc. User interface and systems for document creation

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013535884A (ja) 2010-07-13 2013-09-12 クゥアルコム・インコーポレイテッド ビデオデータをストリーミングするためのビデオ切替え

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020191116A1 (en) * 2001-04-24 2002-12-19 Damien Kessler System and data format for providing seamless stream switching in a digital video recorder
FI116498B (fi) * 2002-09-23 2005-11-30 Nokia Corp Kaistanleveyden mukauttaminen
US8788933B2 (en) * 2005-12-01 2014-07-22 Nokia Corporation Time-shifted presentation of media streams
US9209934B2 (en) * 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
CN101146032A (zh) * 2007-09-21 2008-03-19 广州市聚晖电子科技有限公司 一种媒体流传输带宽自适应的方法
US8996547B2 (en) * 2008-10-31 2015-03-31 Microsoft Technology Licensing, Llc Dynamic fragmentation of digital media
US8321905B1 (en) 2009-10-02 2012-11-27 Adobe Systems Incorporated Fast switching of media streams
CA2783592A1 (en) * 2009-12-11 2011-06-16 Nokia Corporation Apparatus and methods for describing and timing representations in streaming media files
TW201210325A (en) * 2010-07-21 2012-03-01 Nokia Corp Method and apparatus for indicating switching points in a streaming session
US9226045B2 (en) * 2010-08-05 2015-12-29 Qualcomm Incorporated Signaling attributes for network-streamed video data
US9319448B2 (en) 2010-08-10 2016-04-19 Qualcomm Incorporated Trick modes for network streaming of coded multimedia data
US20120233345A1 (en) 2010-09-10 2012-09-13 Nokia Corporation Method and apparatus for adaptive streaming
EP2688297A4 (en) * 2011-03-16 2014-08-27 Korea Electronics Telecomm DEVICE AND METHOD FOR PROVIDING STREAMING CONTENT USING PREPARATIONS
US9026671B2 (en) 2011-04-05 2015-05-05 Qualcomm Incorporated IP broadcast streaming services distribution using file delivery methods
US8843586B2 (en) * 2011-06-03 2014-09-23 Apple Inc. Playlists for real-time or near real-time streaming
US9462024B2 (en) 2011-06-08 2016-10-04 Futurewei Technologies, Inc. System and method of media content streaming with a multiplexed representation
US20130170561A1 (en) * 2011-07-05 2013-07-04 Nokia Corporation Method and apparatus for video coding and decoding
EP2547062B1 (en) 2011-07-14 2016-03-16 Nxp B.V. Media streaming with adaptation
US9253233B2 (en) * 2011-08-31 2016-02-02 Qualcomm Incorporated Switch signaling methods providing improved switching between representations for adaptive HTTP streaming
US9591361B2 (en) 2011-09-07 2017-03-07 Qualcomm Incorporated Streaming of multimedia data from multiple sources
US8935425B2 (en) * 2011-10-05 2015-01-13 Qualcomm Incorporated Switching between representations during network streaming of coded multimedia data
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013535884A (ja) 2010-07-13 2013-09-12 クゥアルコム・インコーポレイテッド ビデオデータをストリーミングするためのビデオ切替え

Also Published As

Publication number Publication date
JP2016538752A (ja) 2016-12-08
CN105612753B (zh) 2018-05-15
CA2923163A1 (en) 2015-04-16
KR20160058189A (ko) 2016-05-24
WO2015053895A1 (en) 2015-04-16
JP6027291B1 (ja) 2016-11-16
US20150100702A1 (en) 2015-04-09
CN108322775A (zh) 2018-07-24
CN108322775B (zh) 2020-08-18
CN105612753A (zh) 2016-05-25
EP3056011A1 (en) 2016-08-17
BR112016007663A2 (pt) 2017-08-01
US9270721B2 (en) 2016-02-23

Similar Documents

Publication Publication Date Title
KR101703179B1 (ko) 미디어 스트리밍 동안 적응 세트들 간의 스위칭
KR101558116B1 (ko) 코딩된 멀티미디어 데이터의 네트워크 스트리밍 동안의 표현들 사이의 전환
JP5937275B2 (ja) ネットワークストリーミングのための失われたメディアデータの置換
KR101542310B1 (ko) 코딩된 비디오 데이터의 네트워크 스트리밍을 위한 비디오 표현 그룹들
EP3123731B1 (en) Processing continuous multi-period content
US20130060956A1 (en) Network streaming of coded video data
KR20170116027A (ko) 저 레이턴시 비디오 스트리밍
KR101436267B1 (ko) 비디오 구성요소들을 멀티플렉싱하기 위한 데이터의 시그널링

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right