KR20170124551A - 부분 세그먼트에 대한 표시 - Google Patents

부분 세그먼트에 대한 표시 Download PDF

Info

Publication number
KR20170124551A
KR20170124551A KR1020177024415A KR20177024415A KR20170124551A KR 20170124551 A KR20170124551 A KR 20170124551A KR 1020177024415 A KR1020177024415 A KR 1020177024415A KR 20177024415 A KR20177024415 A KR 20177024415A KR 20170124551 A KR20170124551 A KR 20170124551A
Authority
KR
South Korea
Prior art keywords
segment
incomplete
server
client
processor
Prior art date
Application number
KR1020177024415A
Other languages
English (en)
Other versions
KR102434958B1 (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 KR20170124551A publication Critical patent/KR20170124551A/ko
Application granted granted Critical
Publication of KR102434958B1 publication Critical patent/KR102434958B1/ko

Links

Images

Classifications

    • H04L65/602
    • 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
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • 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/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • 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
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/23605Creation or processing of packetized elementary streams [PES]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/23614Multiplexing of additional data and video streams

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Digital Computer Display Output (AREA)

Abstract

다양한 실시예들의 시스템들, 방법들, 및 디바이스들은, 다양한 실시예들에 따라 DASH 클라이언트들에 세그먼트들을 제공하는 HTTP 서버들과 같은 HTTP 서버들이, DASH 클라이언트들로부터의 세그먼트 요청들에 대한 응답으로 세그먼트들의 불완전 버전들을 전달하는 것을 가능하게 한다. 다양한 실시예들은, DASH 클라이언트들과 같은 클라이언트들이 세그먼트들의 불완전 버전들을 파싱하는 것을 가능하게 할 수 있다.

Description

부분 세그먼트에 대한 표시
관련 출원들
[0001] 본 출원은 "Indication for Partial Segment"라는 발명의 명칭으로 2015년 3월 2일 출원된 미국 가특허 출원 번호 제 62/126,842호 및 "Indication for Partial Segment"라는 발명의 명칭으로 2015년 8월 13일 출원된 미국 가특허 출원 번호 제 62/204,505호를 우선권으로 주장한다. 이로써 이 가특허 출원들 둘 모두의 전체 내용들은 인용에 의해 포함된다.
[0002] 세그먼트들로 지칭되는 개별 파일들로 전송되는 비디오 프레그먼트들 또는 피스들과 같은 디지털 파일들의 네트워크 전송 동안, 부분적인 파일들만이 수신되는 것을 초래하는 다양한 이벤트들 또는 에러들(예컨대, 튠-어웨이(tune-away), 라디오 채널 에러들 등)이 발생할 수 있다. 예컨대, 컴퓨팅 디바이스 상의 현재의 eMBMS(evolved Multimedia Broadcast Multicast Service) 미들웨어는 전체 세그먼트보다는 부분 DASH(Dynamic Adaptive Streaming Over Hypertext Transfer Protocol) 세그먼트만을 수신할 수 있다. 코덱(codec)에 입력들을 제공하는 애플리케이션 및/또는 클라이언트, 이를테면, DASH 클라이언트는, 특정 컨디션들 하에서, 애플리케이션 및/또는 클라이언트에 의해 파일이 그 전체가 수신되지 않았을지라도, 파일의 일부를 복원(recover)하여 코덱에 제공하도록 인에이블될 수 있다. 현재의 애플리케이션들 및/또는 클라이언트들(예컨대, 현재의 DASH 클라이언트들)이, 현재의 애플리케이션들의 그리고/또는 클라이언트들의, 부분 세그먼트들을 수신하는 능력을 표시하기 위한 메커니즘을 갖지 않기 때문에, 부분 세그먼트들은 애플리케이션 및/또는 클라이언트에 서빙되지 않을 수 있다. 예컨대, 컴퓨팅 디바이스 상의 현재의 eMBMS 미들웨어는 부분 세그먼트들을 드롭(drop)할 수 있으며, 이는 플레이백 중단(playback interruption)들을 증가시킬 수 있다.
[0003] 다양한 실시예들의 시스템들, 방법들, 및 디바이스들은, 다양한 실시예들에 따라 DASH 클라이언트들에 세그먼트들을 제공하는 HTTP(Hypertext Transfer Protocol) 서버들과 같은 HTTP 서버들이, DASH 클라이언트들로부터의 세그먼트 요청들에 대한 응답으로 세그먼트들의 불완전 버전(incomplete version)들을 전달하는 것을 가능하게 한다. 다양한 실시예들은, DASH 클라이언트들과 같은 클라이언트들이 세그먼트들의 불완전 버전들을 파싱(parse)하는 것을 가능하게 할 수 있다.
[0004] 일부 실시예들은, 서버에서 클라이언트로부터 세그먼트 요청을 수신하는 것을 포함할 수 있으며, 세그먼트 요청은, 클라이언트가 불완전 세그먼트를 사용할 수 있는지 여부를 표시한다. 서버는, 세그먼트 요청과 연관된 전체 세그먼트가 서버에서 이용가능한지 여부를 결정할 수 있다. 세그먼트 요청과 연관된 전체 세그먼트가 서버에서 이용가능하지 않다는 결정에 대한 응답으로, 서버는 세그먼트 요청에 기반하여, 클라이언트가 불완전 세그먼트를 사용할 수 있는지 여부를 결정할 수 있다. 클라이언트가 불완전 세그먼트를 사용할 수 있다는 결정에 대한 응답으로, 서버는 서버로부터 클라이언트로, 응답 메시지가 불완전 세그먼트를 포함한다는 표시 및 불완전 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들의 표시를 포함하는 응답 메시지에서 불완전 세그먼트를 전송할 수 있다.
[0005] 일부 실시예들은, 서버로부터 클라이언트로, 미디어 파일의 불완전 버전 및 미디어 파일의 불완전 버전에 대한 하나 또는 그 초과의 액세스 포지션들을 표시하는 확장 헤더를 포함하는 메시지를 전송하는 것을 포함할 수 있다.
[0006] 추가의 실시예들은, 위에서 요약된 방법들의 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성된 프로세서를 갖는 서버를 포함한다. 추가의 실시예들은 위에서 요약된 방법들의 기능들을 수행하기 위한 수단을 포함하는 서버를 포함한다. 추가의 실시예들은, 서버 프로세서로 하여금, 위에서 요약된 방법들의 동작들을 수행하게 하도록 구성된 프로세서-실행가능 명령들이 저장되는 비-일시적 프로세서-판독가능 저장 매체를 포함한다.
[0007] 본원에 통합되고 본 명세서의 일부를 구성하는 첨부 도면들은 본 발명의 예시적인 실시예들을 예시하고, 위에서 주어진 일반적 설명 및 아래에서 주어지는 상세한 설명과 함께 본 발명의 특징들을 설명하도록 기능한다.
[0008] 도 1은 다양한 실시예들과 함께 사용하기에 적절한 네트워크의 통신 시스템 블록도이다.
[0009] 도 2a는 다양한 실시예들에 따라, 컴퓨팅 디바이스의 애플리케이션 및/또는 클라이언트 계층들과 전송 계층들 사이의 관계를 예시하는 시스템 블록도이다.
[0010] 도 2b는 다양한 실시예들에 따라, 컴퓨팅 디바이스 애플리케이션 및/또는 클라이언트 계층들과 네트워크 엘리먼트들 사이의 관계를 예시하는 시스템 블록도이다.
[0011] 도 3은 세그먼트들의 불완전 버전들에 대한 클라이언트 요청들의 HTTP 서버 핸들링을 위한 종래 기술의 방법을 예시하는 프로세스 흐름도이다.
[0012] 도 4는 세그먼트들의 불완전 버전들에 대한 DASH 클라이언트 요청들의 DASH 서버 핸들링을 위한 실시예 방법을 예시하는 프로세스 흐름도이다.
[0013] 도 5는 세그먼트들의 불완전 버전들에 대한 DASH 클라이언트 요청들의 DASH 서버 핸들링을 위한 또 다른 실시예 방법을 예시하는 프로세스 흐름도이다.
[0014] 도 6은 세그먼트들의 불완전 버전들에 대한 DASH 클라이언트 요청들의 DASH 서버 핸들링을 위한 제 3 실시예 방법을 예시하는 프로세스 흐름도이다.
[0015] 도 7 및 도 8은 다양한 실시예들에 따른, DASH 클라이언트와 DASH 서버 사이의 상호작용들을 예시하는 호 흐름도들이다.
[0016] 도 9는 세그먼트들의 불완전 버전들에 대한 DASH 클라이언트 요청들의 DASH 서버 핸들링을 위한 제 4 실시예 방법을 예시하는 프로세스 흐름도이다.
[0017] 도 10 및 도 11은 다양한 실시예들에 따른, DASH 클라이언트와 DASH 서버 사이의 상호작용들을 예시하는 호 흐름도들이다.
[0018] 도 12는 세그먼트들의 불완전 버전들에 대한 DASH 클라이언트 요청들의 DASH 서버 핸들링을 위한 제 5 실시예 방법을 예시하는 프로세스 흐름도이다.
[0019] 도 13은 다양한 실시예들에 따른, DASH 클라이언트와 DASH 서버 사이의 상호작용들을 예시하는 호 흐름도이다.
[0020] 도 14는 미디어 스트림의 세그먼트들의 데이터 블록도이다.
[0021] 도 15는 세그먼트들의 불완전 버전들의 DASH 클라이언트 핸들링을 위한 실시예 방법을 예시하는 프로세스 흐름도이다.
[0022] 도 16은 다양한 실시예들과 함께 사용하기에 적절한 예시적인 컴퓨팅 디바이스의 컴포넌트 도면이다.
[0023] 도 17은 다양한 실시예들과 함께 사용하기에 적절한 예시적인 서버의 컴포넌트 도면이다.
[0024] 다양한 실시예들은 첨부 도면들을 참조하여 상세히 설명될 것이다. 가능한 경우에는 항상, 동일한 참조 번호들은 도면들 전반에 걸쳐 동일하거나 유사한 부분들을 나타내기 위해 사용될 것이다. 특정 예들 및 구현들에 대해 이루어지는 참조들은 예시적인 목적들이며, 본 발명 또는 청구항들의 범위를 제한하려는 의도가 아니다.
[0025] 다양한 실시예들은, 다양한 실시예들에 따라 DASH 미디어 파일들의 세그먼트들을 DASH 클라이언트들에 제공하는 DASH 서버들과 같은 HTTP 서버들이, DASH 클라이언트들과 같은 클라이언트들로부터의 세그먼트 요청들에 대한 응답으로 세그먼트들의 불완전 버전들을 전달하는 것을 가능하게 한다.
[0026] 본원에서 사용되는 바와 같은 "모바일 디바이스", "수신기 디바이스", 및 "컴퓨팅 디바이스"라는 용어들은, 셀룰러 전화들, 스마트폰들, 개인 또는 모바일 멀티-미디어 플레이어들, PDA(personal data assistant)들, 랩톱 컴퓨터들, 개인 컴퓨터들, 태블릿 컴퓨터들, 스마트북들, 팜-탑 컴퓨터들, 무선 전자 메일 수신기들, 멀티미디어 인터넷 인에이블 셀룰러 전화들, 무선 게이밍 제어기들, 위성 또는 케이블 셋톱 박스들, 스트리밍 미디어 플레이어들(이를테면, ROKU™ 또는 CHROMECAST™ 또는 FIRE TV™), 스마트 텔레비전들, DVR(digital video recorder)들, 및 프로그램가능 프로세서 및 메모리 및 파일들을 수신하기 위한 회로를 포함하는 유사한 개인 전자 디바이스들 중 임의의 것 또는 모두를 나타내기 위해 본원에서 상호교환가능하게 사용된다.
[0027] 다양한 실시예들은, 마스터 교환 서버, 웹 서버, 메일 서버, 문서 서버, 콘텐츠 서버 또는, 임의의 다른 타입의 서버와 같은 서버로서 기능할 수 있는 임의의 컴퓨팅 디바이스를 나타내기 위해 "서버"라는 용어를 사용하여 본원에서 설명된다. 서버는, 전용 컴퓨팅 디바이스, 또는 서버 모듈(예컨대, 컴퓨팅 디바이스로 하여금 서버로서 동작하게 할 수 있는 애플리케이션을 실행함)을 포함하는 컴퓨팅 디바이스일 수 있다. 서버 모듈(예컨대, 서버 애플리케이션)은, 전체 기능 서버 모듈, 또는 수신기 디바이스들 상의 동적 데이터베이스들 사이에 동기화 서비스들을 제공하도록 구성되는 경량 또는 보조 서버 모듈(예컨대, 경량 또는 보조 서버 애플리케이션)일 수 있다. 경량 서버 또는 보조 서버는, 수신기 디바이스 상에서 구현될 수 있는 서버-타입 기능의 슬림-다운 버전일 수 있으며, 이로써 수신기 디바이스로 하여금, 본원에서 설명되는 기능을 제공하기 위해 필요한 정도까지만 인터넷 서버(예컨대, 기업 이메일 서버)로서 기능하는 것을 가능하게 한다.
[0028] 본원에서 사용되는 바와 같은 "세그먼트의 불완전 버전"이라는 용어는, 누락되고 그리고/또는 손상된 데이터 부분들이 있는, 파일의 불완전 버전을 나타내기 위해 사용된다. 예컨대, 세그먼트가 0-999로 인덱싱된 1,000 바이트들(bytes)을 포함하는 경우, 해당 세그먼트의 바이트들 0-888은 해당 세그먼트의 불완전 버전이고, 바이트들 500-999는 해당 세그먼트의 또 다른 불완전 버전이고, 바이트들 0-200은 바이트들 300-999와 함께 해당 세그먼트의 또 다른 불완전 버전인 반면, 바이트들 0-999는 해당 세그먼트의 불완전 버전이 아니다.
[0029] 현재의 HTTP(Hypertext Transfer Protocol) 1.1("Hypertext Transfer Protocol ― HTTP/1.1"라는 명칭으로 1999년 6월 공개된, Internet Engineering Task Force가 제안한 표준 RFC(Request for Comments) 2616에서 정의되었고, http://tools.ietf.org/html/rfc2616에서 입수가능함)에는, 서버들이 파일 요청들에 대한 응답으로 파일의 불완전 버전(예컨대, 누락된/손상된 데이터 부분들이 있는 파일들)을 클라이언트들에 제공하는 어떠한 메커니즘도 존재하지 않는다. 현재의 HTTP 프로토콜에서, 클라이언트는 "GET" 방법과 같은 파일 요청을 생성하고, 파일 요청을 서버에 전송할 수 있다. 파일 요청들은 URL/URI와 연관된 파일에 대한 요청들일 수 있고, URL/URI와 연관된 파일의 전체 데이터 콘텐츠에 대한 요청들일 수 있거나(예컨대, 임의의 바이트 범위를 특정하지 않고, 따라서 완전한 파일을 요청하는 GET 요청을 사용함) 또는 URL/URI와 연관된 파일의 특정 바이트 범위들에 대한 요청들일 수 있다(예컨대, 완전한 파일 내의 바이트 범위를 특정하는 부분 GET 요청(partial GET request)을 사용함).
[0030] 현재의 HTTP 프로토콜에서, 서버는 클라이언트의 파일 요청에 대한 응답으로 "전체 응답(full response)" 또는 에러 메시지를 제공할 수 있다. HTTP 서버는 HTTP 클라이언트 파일 요청들에 대한 응답으로 파일의 불완전 버전들을 제공하지는 않을 것이다. 완전한 파일을 요청하는 GET 요청들의 경우, HTTP 서버로부터의 전체 응답은 완전한 파일이며, 파일 응답의 불완전 버전은 완전한 파일보다 작은 어떠한 것(예컨대, 파일의 불완전 버전)이다. 바이트 범위를 특정하는 부분 GET 요청들의 경우, HTTP 서버로부터의 전체 응답은 완전한 파일과 요청된 바이트 범위 사이의 교차점(intersection)이며, 바이트 범위 응답의 불완전 버전은 완전한 파일과 요청된 바이트 범위 사이의 교차점보다 작은 어떠한 것(예컨대, 바이트 범위의 불완전 버전)이다.
[0031] 특히, 현재의 HTTP 프로토콜에서, 서버가 파일 요청을 수신하는 경우, 서버는 파일 요청에 대응하는 파일이 완전히 이용가능한지 여부를 결정할 수 있다. 예로서, 서버는, 파일 요청에 대응하는 파일이 불완전하고 그리고/또는 손상되었는지, 이를테면, 데이터 부분들이 누락되고 그리고/또는 파일이 불완전하고 그리고/또는 손상되었다는 표시를 포함하는지 여부를 결정할 수 있다. 예로서, 서버는, FEC 디코딩이 성공적인지 성공적이지 않은지를 결정함으로써, 파일 요청에 대응하는 파일이 불완전하고 그리고/또는 손상되었는지 여부를 결정할 수 있다. 다른 예로서, 서버는, MD5 다이제스트와 같은 수신된 체크섬과 FLUTE 수신기에 의해 컴퓨팅된 체크섬의 값의 차이를 검출함으로써, 파일 요청에 대응하는 파일이 불완전하고 그리고/또는 손상되었는지 여부를 결정할 수 있다. 불완전하지 않고 그리고/또는 손상되지 않은 그러한 파일들은 완전히 이용가능한 것으로 서버에 의해 결정될 수 있고, 요청된 파일을 포함하는 "전체 응답"으로 클라이언트에 전송될 수 있다. 현재의 HTTP 프로토콜에서, 요청된 파일이 완전히 이용가능하지는 않다는 것을 식별시(즉, 누락된/손상된 데이터 부분들이 있는, 파일의 불완전 버전만이 이용가능함), 서버는 단지, 에러 상태 코드를 갖는 메시지, 이를테면, 404 "Not Found" 상태 코드를 갖는 메시지를 리턴한다. 따라서, 현재의 HTTP 프로토콜에서, 파일의 불완전 버전은 요청 클라이언트에 전송되지 않는데, 즉, 파일에 대한 요청에 대해 "불완전 응답"이 지원되지 않는다.
[0032] 위에서 언급된 바와 같이, 현재의 HTTP 프로토콜은 또한, 요청되는 파일에 대한 바이트 범위를 특정하는 부분 GET 요청들을 제공하며, 부분 GET 요청들에 대한 전체 응답은 완전한 파일과 요청된 바이트 범위 사이의 교차점이다. 예컨대, 현재의 HTTP에서, HTTP 클라이언트가 완전한 파일의 끝(end)을 초과하여 확장되는 바이트 범위에 대한 부분 GET 요청을 전송하는 경우, HTTP 서버가 제공할 수 있는 전체 응답은 요청된 바이트 범위의 제 1 바이트부터 완전한 파일의 마지막 바이트까지의 바이트들의 순차적 부분이다. 따라서, 요청된 바이트 범위가 0-100이지만 완전한 파일은 바이트들 0-88만을 갖는 예에서, 전체 응답은 요청된 바이트 범위보다 작지만(특히, 바이트들 0-88) 그럼에도 불구하고 "전체 응답"으로 간주되며, HTTP 서버에 의해 전송될 수 있다.
[0033] 그러나, 현재의 HTTP 프로토콜에서, HTTP 클라이언트가 부분 GET 요청을 전송하고, 특정된 바이트 범위 내의 바이트들 중 일부가 누락/손상된 경우(즉, 요청된 바이트 범위의 불완전 버전만이 HTTP 서버 상에서 이용가능함), HTTP 서버는 요청된 바이트들 중 어떠한 부분도 클라이언트에 제공하지 않을 수 있고, 대신에 에러 상태 코드를 갖는 메시지를 클라이언트에 전송한다. 따라서, 요청된 바이트 범위가 0-99이지만, 바이트들 75-125가 누락 또는 손상되었기 때문에 바이트들 0-74 및 126-150만이 이용가능한 예에서, 현재의 HTTP 서버는 바이트들 0-74로 이루어진 바이트 범위 응답의 불완전 버전을 요청 클라이언트에 전송하지 않을 것이다. 따라서, 현재의 HTTP 프로토콜에서, 바이트 범위 요청의 불완전 버전은 요청 클라이언트에 전송되지 않는다. 이는, 파일의 바이트 범위에 대한 요청에 대해 "불완전 응답"이 지원되지 않기 때문이다.
[0034] 현재 정의된 바와 같은 HTTP 프로토콜이 불완전 응답들을 클라이언트에 전달하지 않기 때문에, 불완전 응답들을 복원 및 사용하도록 인에이블된 클라이언트들 및/또는 애플리케이션들의 기능이 감소될 수 있는데, 그 이유는 클라이언트들 및/또는 애플리케이션들이 불완전 응답들을 절대 수신할 수 없기 때문이다. 따라서, HTTP 서버들로 하여금 서버에서 이용가능한 파일들의 바이트 범위들의 불완전 버전들 또는 파일들의 불완전 버전들의 적어도 일부를 클라이언트들에 전달하는 것을 가능하게 하는 것이 유용할 수 있다. 바이트 범위 또는 파일의 불완전 버전의 적어도 일부의 전달은, 애플리케이션을 실행하는 클라이언트 디바이스들 및/또는 클라이언트(예컨대, DASH 클라이언트를 실행하는 스마트폰)로 하여금, 세그먼트의 바이트 범위 또는 세그먼트의 불완전 버전의 미디어의 적어도 일부를 플레이백하는 것과 같이, 콘텐츠를 렌더링하는 것을 가능하게 할 수 있으며, 이는 최종 사용자 미디어 플레이백 경험을 개선할 수 있다.
[0035] 다양한 실시예들은, 세그먼트들을 DASH 클라이언트들에 제공하는 DASH 서버들과 같은 HTTP 서버들로 하여금, DASH 클라이언트들로부터의 세그먼트 요청들에 대한 응답으로 세그먼트들의 불완전 버전들을 전달하는 것을 가능하게 함으로써, 현재의 HTTP 프로토콜에서의 이러한 단점을 처리한다. 실시예에서, DASH 클라이언트는, 세그먼트의 불완전 버전 가능 표시(incomplete version of a segment capable indication)를 포함하는 세그먼트 요청을 생성할 수 있다. 이러한 세그먼트 요청은, 클라이언트가 세그먼트의 불완전 버전(예컨대, 불완전 세그먼트)을 사용할 수 있다는 것을 표시하는 헤더 필드를 포함하는 "GET" 동작(즉, 방법)과 같은 요청 메시지일 수 있다. 실시예에서, 헤더 필드는 RFC 7231에 기술된 수락 헤더 필드(accept header field)일 수 있다. 예컨대, 수락 헤더 필드 표시 "application/3gpp-partial"을 갖는 GET 동작은, DASH 클라이언트가 세그먼트 요청에 대한 응답으로 부분 세그먼트들을 수락할 것임을 표시할 수 있다. 실시예에서, 헤더 필드는 RFC 7240에 기술된 선호 헤더 필드(prefer header field)일 수 있다. 예컨대, 선호 헤더 필드 표시 "return=3gpp-partial"을 갖는 GET 동작은, DASH 클라이언트가 세그먼트 요청에 대한 응답으로 부분 세그먼트들을 수락할 것임을 표시할 수 있다. 실시예에서, 클라이언트가 세그먼트의 불완전 버전을 사용할 수 있다는 것을 표시하는 헤더 필드를 갖는 세그먼트 요청은 세그먼트에 대한 초기 요청에서 전송될 수 있다. 다른 실시예에서, 클라이언트가 세그먼트의 불완전 버전을 사용할 수 있다는 것을 표시하는 헤더 필드를 갖는 세그먼트 요청은, 서버로부터 리턴되는 상태 코드 404 "Not Found"를 포함하는 에러 메시지와 같은 초기 에러 메시지에 대한 응답으로 전송될 수 있다. 초기 에러 메시지를 수신하는 것에 대한 응답으로, 클라이언트는 이전에 요청한 세그먼트를 재요청할 수 있으며, 이 때에는, 클라이언트가 세그먼트의 불완전 버전을 사용할 수 있다는 것을 표시하는 헤더 필드를 포함한다. 추가의 실시예에서, 클라이언트가 세그먼트의 불완전 버전을 사용할 수 있다는 것을 표시하는 헤더 필드를 갖는 세그먼트 요청은, 서버로부터 리턴된 바이트 범위 표시에 대한 응답으로 전송될 수 있으며, 이는 미디어 샘플들의 로케이팅을 가능하게 하는 세그먼트의 중요 부분(이를테면, ISOBMFF의 "trun" 박스)을 포함한다. 초기 바이트 범위 표시를 수신하는 것에 대한 응답으로, 클라이언트는 세그먼트의 후속 바이트 범위 부분들을 요청할 수 있으며, 이 때에는, 클라이언트가 세그먼트의 불완전 버전을 사용할 수 있다는 것을 표시하는 헤더 필드를 포함한다.
[0036] 실시예에서, DASH 서버는, 요청된 세그먼트의 불완전 버전이 이용가능하다는 표시 및 이용가능한 세그먼트의 바이트 범위들을 포함하는 초기 응답 메시지를 생성 및 전송할 수 있다. 실시예에서, 응답 메시지는, 요청된 세그먼트의 불완전 버전이 이용가능하다는 것 및 이용가능한 바이트 범위들을 표시하는 확장 헤더를 포함하는 메시지일 수 있다. 예컨대, 초기 응답은 상태 코드 404 및 확장 헤더 "X-Available-Ranges: bytes a-b,c-d,..."를 포함하는 에러 메시지일 수 있다. 다른 예로서, 초기 응답은 상태 코드 206 및 확장 헤더 "X-Available-Ranges: bytes a-b,c-d,..."를 포함하는 부분 콘텐츠 메시지일 수 있다. 실시예에서, 응답 메시지는, 요청된 세그먼트의 불완전 버전이 이용가능하다는 것 및 이용가능한 바이트 범위들, 이를테면, "콘텐츠-타입= 3gpp-partial-byte-ranges"를 표시하는 엔티티 바디를 포함하는 300 시리즈 메시지와 같은 리다이렉트 메시지(redirect message)일 수 있다.
[0037] 요청된 세그먼트의 불완전 버전이 이용가능하다는 표시 및 이용가능한 세그먼트의 바이트 범위들을 포함하는 초기 응답 메시지를 DASH 서버로부터 수신하는 것에 대한 응답으로, DASH 클라이언트는 이전에 요청한 세그먼트를 재요청할 수 있으며, 이 때에는, DASH 서버에 의해 이용가능한 것으로 표시된 부분들에 대응하는 부분 바이트 범위 요청의 표시를 포함한다.
[0038] 실시예에서, DASH 서버는 액세스 포지션 표시를 포함하는 응답 메시지를 생성하여, 파일의 불완전 버전을 사용할 수 있는 DASH 클라이언트에 전송할 수 있다. 액세스 포지션 표시는, DASH 클라이언트가 파일의 불완전 버전에 액세스할 수 있고, 파일의 불완전 버전을 디코딩 및/또는 렌더링하기 위해 사용될 수 있는 랜덤 액세스 포인트들(예컨대, SAP(Stream Access Point)들 타입 1 또는 2) 또는 싱크 샘플(sync sample)들을 식별하기 위해 파일의 불완전 버전을 파싱하기 시작할 수 있는, 요청된 파일의 바이트(또는 다른 데이터 사이즈) 포지션의 표시일 수 있다. 액세스 포지션 표시들은 각각의 파일 단위로 그리고/또는 각각의 이용가능한 바이트 범위 단위로 결정되고 표시될 수 있다. 예컨대, DASH 세그먼트의 경우, 하나 또는 그 초과의 액세스 포지션들이 결정되고, 이를테면, DASH 미디어 스트림의 세그먼트들을 기술하는 FDT(File Delivery Table)에서 DASH 세그먼트와 연관될 수 있다. 예컨대, 액세스 포인트들은, DASH 클라이언트가 DASH 세그먼트에 액세스할 수 있는, DASH 세그먼트의 하나 또는 그 초과의 공간-분리된 바이트 포지션들을 표시하는 "IndependentUnitPositions" 필드로 FDT에서 표시될 수 있다.
[0039] 예컨대, DASH 세그먼트의 불완전 버전에 대한 요청을 DASH 클라이언트로부터 수신하는 것에 대한 응답으로, DASH 서버는 DASH 세그먼트의 불완전 버전과 함께, DASH 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들의 표시들을 전송할 수 있다. 다른 예로서, 파일의 불완전 버전이 DASH 서버에서 이용가능한 경우, DASH 서버는 이용가능한 파일의 각각의 바이트 범위에 대한 하나 또는 그 초과의 액세스 포지션들을 결정할 수 있다. 이러한 방식으로, DASH 서버는, DASH 세그먼트의 불완전 버전의 제 1 바이트 범위(예컨대, 바이트 범위 a-b)에 대한 하나 또는 그 초과의 액세스 포지션들 및 DASH 세그먼트의 불완전 버전의 제 2 바이트 범위(예컨대, 바이트 범위 c-d)에 대한 하나 또는 그 초과의 액세스 포지션들을 표시할 수 있다.
[0040] 다양한 실시예들에서, 액세스 포지션은 DASH 서버에 의해 전송되는 응답 메시지의 확장 헤더에서 표시될 수 있다. 응답 메시지는, 응답이, 요청된 DASH 세그먼트의 불완전 버전을 포함한다는 것을 표시하고, 그리고 불완전 버전에 대한 액세스 포지션을 표시할 수 있다. 예컨대, 응답은, DASH 클라이언트가 DASH 세그먼트에 액세스할 수 있는, DASH 세그먼트의 하나 또는 그 초과의 바이트 포지션들을 표시할 뿐만 아니라, 응답이, 요청된 DASH 세그먼트의 불완전 버전을 포함한다는 것을 표시하는 콘텐츠-타입(Content-Type)으로서 "application/3gpp-partial"을 포함하는 확장 헤더 필드들 "3gpp-access-position"을 포함할 수 있다.
[0041] 실시예에서, 세그먼트의 불완전 버전 및 액세스 포지션 표시를 포함하는 응답을 수신하는 것에 대한 응답으로, DASH 클라이언트는 세그먼트의 초기 부분이 수신되었는지 여부를 결정할 수 있다. 세그먼트의 초기 부분은, 세그먼트에 대한 초기화, 인덱싱, 타이밍, 및/또는 동기화 정보를 표시하는데 전용된, 세그먼트의 시작부(beginning)의 바이트들의 범위일 수 있다. 세그먼트의 초기 부분이 수신되었다는 결정에 대한 응답으로, DASH 클라이언트는, 세그먼트의 불완전 버전의 다른 수신된 부분들을 파싱하기 위해 초기 부분의 타이밍 및/또는 동기화 정보를 사용할 수 있다. 세그먼트의 초기 부분이 수신되지 않았다는 결정에 대한 응답으로, DASH 클라이언트는 액세스 포지션에 대응하는 바이트가 수신되었는지 여부를 결정할 수 있다. 세그먼트에 대한 액세스 포지션에 대응하는 바이트가 수신되었다는 결정에 대한 응답으로, DASH 클라이언트는, 세그먼트의 불완전 버전을 디코딩 및/또는 렌더링하기 위해 사용될 수 있는 랜덤 액세스 포인트들(예컨대, SAP(Stream Access Point)들 타입 1 또는 2) 또는 싱크 샘플들을 식별하기 위해 액세스 포지션에서 세그먼트의 불완전 버전을 파싱하기 시작할 수 있다. 세그먼트에 대한 액세스 포지션에 대응하는 바이트가 수신되지 않았다는 결정에 대한 응답으로, DASH 클라이언트는 표현(representation)의 다음 세그먼트를 요청할 수 있다.
[0042] 실시예에서, DASH 서버는, 파일의 불완전 버전을 사용할 수 있는 DASH 클라이언트가, DASH 서버에서 어떠한 바이트들도 이용가능하지 않은 파일을 요청하는 것에 대한 응답으로, 에러 메시지를 생성 및 전송할 수 있다. 예컨대, DASH 서버는, 요청된 DASH 세그먼트에 대한 어떠한 바이트들도 또는 DASH 세그먼트의 어떠한 바이트 범위도 DASH 서버에서 이용가능하지 않을 경우, 상태 코드 416 "Requested Range Not Satisfiable"을 포함하는 에러 메시지를 전송할 수 있다. 에러 메시지는 추가로, DASH 세그먼트에 대해 FDT 인스턴스에서 제공되는 콘텐츠 타입, DASH 세그먼트에 대해 FDT에서 제공되는 콘텐츠 위치, 및 DASH 세그먼트에 대해 FDT에서 표시되는 콘텐츠 길이에 기반하여 "bytes */content-length"로서 표시되는 콘텐츠 범위를 표시할 수 있다. 상태 코드 416 "Requested Range Not Satisfiable"을 포함하는 에러 메시지를 수신함으로써, DASH 클라이언트는 유효하지 않은 세그먼트들에 대한 요청들(예컨대, 상태 코드 404 "Not Found"를 갖는 에러 메시지들을 초래하는 요청들)과 송신에서 손실된 세그먼트들에 대한 요청들(예컨대, 상태 코드 416 "Requested Range Not Satisfiable"을 갖는 에러 메시지들을 초래하는, FDT에서 표시되지만 수신되는 바이트들이 없는 세그먼트들) 사이를 구별할 수 있다. 실시예에서, DASH 클라이언트는, 상태 코드 416을 갖는 에러 메시지에 의해 표시된 송신 세그먼트의 손실을 은폐(conceal)할 수 있고, 표현의 다음 세그먼트를 요청함으로써 정상 동작을 계속할 수 있다.
[0043] 상이한 애플리케이션들/클라이언트들, 미들웨어, 세그먼트 가용성 타임라인들, 라디오 기술들, 및 전송 프로토콜들, 특히 DASH 클라이언트들, eMBMS, 및 HTTP의 다양한 예들이 본원에서 논의된다. DASH 클라이언트들, eMBMS, 및 HTTP의 논의들은 다양한 실시예들의 양상들을 더 양호하게 예시하기 위한 예들로서만 제공되며, 다양한 실시예들을 어떠한 방식으로도 제한하도록 의도되지 않는다. 다른 애플리케이션들/클라이언트들, 미들웨어, 라디오 기술들, 및 전송 프로토콜들이 다양한 실시예들과 함께 사용될 수 있으며, 다른 애플리케이션들/클라이언트들, 미들웨어, 라디오 기술들, 및 전송 프로토콜들은 본 발명의 사상 또는 범위로부터 벗어남이 없이 다양한 예들에서 대체될 수 있다.
[0044] 도 1은, 다양한 실시예들과 함께 사용하기에 적절한 셀룰러 네트워크 시스템(100)을 예시한다. 셀룰러 네트워크 시스템(100)은, 인터넷(110)에 연결되는 다수의 디바이스들, 이를테면, 컴퓨팅 디바이스(102), 하나 또는 그 초과의 셀룰러 타워들 또는 기지국들(104), 및 서버들(108 및 112)을 포함할 수 있다. 컴퓨팅 디바이스(102)는, CDMA(Code Division Multiple Access), TDMA(Time Division Multiple Access), GSM(Global System for Mobile Communications), PCS(Personal Communication Service), 3G(Third Generation), 4G(Fourth Generation), LTE(Long Term Evolution), 또는 임의의 다른 타입의 연결을 포함하는 하나 또는 그 초과의 셀룰러 연결들(106)을 통해 셀룰러 타워 또는 기지국(104)과 데이터를 교환할 수 있다. 셀룰러 타워 또는 기지국(104)은, 인터넷(110)에 연결될 수 있는 라우터와 통신할 수 있다. 이러한 방식으로, 셀룰러 타워 또는 기지국(104) 및/또는 인터넷(110)에 대한 연결들을 통해, 컴퓨팅 디바이스(102)와 서버(들)(108 및 112) 사이에서 데이터가 교환될 수 있다. 실시예에서, 서버(108)는 DASH 클라이언트를 통한 출력을 위해 세그먼트들을 제공하는 콘텐츠 제공자 서버 또는 인코더(예컨대, 콘텐츠 서버)일 수 있다. 실시예에서, 서버(112)는, 인코더로부터 출력된 세그먼트들을 수신하고 컴퓨팅 디바이스(102)로의 세그먼트들의 OTA(Over-the-Air) 송신을 제어할 수 있는 BMSC(Broadcast Multimedia Service Center) 서버일 수 있다. 물론, 본원에서 설명되는 수신기 디바이스들의 특징들이 OTA 송신들을 참조하여 설명될 수 있지만, 이러한 특징들은 유선 송신들, 무선 송신들, 또는 유선 송신과 무선 송신의 조합과 관련하여 사용될 수 있다. 따라서, OTA 송신이 요구되지는 않는다.
[0045] 도 2a는 컴퓨팅 디바이스의 전송 계층들과 애플리케이션 및/또는 클라이언트 계층들 사이의 실시예 관계를 예시한다. 실시예에서, 파일들은 IP/UDP(Internet Protocol/User Datagram Protocol) 전송 계층(202)을 통해 컴퓨팅 디바이스에서 수신될 수 있다. 예로서, 도 1을 참조하여 위에서 논의된 바와 같은 인터넷(110)을 통해 서버(112)로부터 컴퓨팅 디바이스(102)로 전송되는 브로드캐스트 파일들은 IP/UDP 전송 계층(202)에서 컴퓨팅 디바이스(102)에 수신될 수 있다. 실시예에서, 파일들은 인터넷을 통해 전송되는 미디어 파일의 세그먼트들일 수 있다.
[0046] IP/UDP 전송 계층(202)은 수신된 파일들을 FLUTE(File Delivery over Unidirectional Transport) 계층(204)에 전달할 수 있다. 실시예에서, FLUTE 계층(204)은 IP/UDP 전송 계층(202)으로부터 애플리케이션들 및/또는 클라이언트들, 이를테면, DASH 클라이언트(210)로 파일들을 전달하기 위해 FLUTE 프로토콜을 활용하도록 인에이블된 애플리케이션일 수 있다. 실시예에서, FLUTE 계층(204)은 수신된 파일들에 FEC(forward error correction)와 같은 에러 정정을 적용할 수 있다. 실시예에서, FLUTE 계층(204)은, DASH 클라이언트(210)와 같은 애플리케이션들 및/또는 클라이언트들로부터, 애플리케이션들 및/또는 클라이언트들이 세그먼트들의 불완전 버전들을 활용하도록 인에이블되었는지 여부를 표시할 수 있는 표시들을 수신할 수 있다. 예로서, DASH 클라이언트(210)로부터의 파일 요청은, DASH 클라이언트(210)가 파일들의 불완전 버전들을 활용하도록 인에이블되었다는 것을 표시할 수 있다. FLUTE 계층(204)은 수신된 파일들을 파싱하고 파일들을 디바이스 측 HTTP 서버, 이를테면, DASH 서버(206)에 전달할 수 있다. 컴퓨팅 디바이스 상에서 실행되는 eMBMS 미들웨어(207)는 디바이스 측 DASH 서버(206), FLUTE 계층(204), 및/또는 IP/UDP 전송 계층(202) 중 하나 또는 그 초과를 포함할 수 있다. 실시예에서, 디바이스 측 DASH 서버(206)는, 컴퓨팅 디바이스 상에 자기 자신의 할당된 메모리 공간(예컨대, 메모리 캐시)을 가진, 컴퓨팅 디바이스 상에 상주하는 HTTP 서버 애플리케이션일 수 있다. 실시예에서, DASH 클라이언트(210)는 디바이스 측 DASH 서버(206)에 파일들을 요청하고 그리고/또는 디바이스 측 DASH 서버(206)로부터 파일들을 수신할 수 있고, 컴퓨팅 디바이스에 의한 콘텐츠의 최종 렌더링을 위해 (예컨대, 콘텐츠를 플레잉하기 위해) 파일들을 코덱(212)에 전달할 수 있다. 실시예에서, DASH 클라이언트(210)는 콘텐츠를 렌더링 시에 파일들의 불완전 버전들을 활용하도록 인에이블될 수 있다. 다른 실시예에서, DASH 클라이언트(210)는 콘텐츠를 렌더링하기 전에 파일들의 불완전 버전들을 복구(repair)하도록 인에이블될 수 있다.
[0047] 도 2b는 네트워크 엘리먼트들과 컴퓨팅 디바이스 애플리케이션 및/또는 클라이언트 계층들 사이의 실시예 관계를 예시한다. 예로서, 파일들(예컨대, 인코더에 의해 출력된 DASH 미디어 스트림의 세그먼트들)은 콘텐츠 서버(108)(예컨대, DASH 서버)로부터 서버(112)(예컨대, FLUTE 전송기를 갖는 BMSC 서버)로 전송될 수 있다. 부가적으로, 콘텐츠 서버(108)는 파일들(예컨대, DASH 미디어 스트림의 세그먼트들)에 대한 하나 또는 그 초과의 액세스 포지션들을 결정할 수 있고, 액세스 포지션들의 표시들을 서버(112)에 전송할 수 있다. 액세스 포지션들은, 클라이언트가 파일의 불완전 버전에 액세스할 수 있고, 파일의 불완전 버전을 디코딩 및/또는 렌더링하기 위해 사용될 수 있는 랜덤 액세스 포인트들(예컨대, SAP(Stream Access Point)들 타입 1 또는 2) 또는 싱크 샘플들을 식별하기 위해 파일의 불완전 버전을 파싱하기 시작할 수 있는, 요청된 파일의 바이트 포지션의 표시들일 수 있다. 도 2b가, 서버(108)에 의해 제공되는 액세스 포지션들을 예시하지만, 액세스 포지션들은 통신 시스템의 임의의 엘리먼트, 이를테면, 서버(112), eMBMS 미들웨어(207) 등에 의해 결정되고 그리고/또는 표시될 수 있다. 서버(112)는 컴퓨팅 디바이스(102)로의 송신을 위해 파일들을 패킷화하고 FLUTE 프로토콜에 따라 FDT(File Delivery Table)를 준비할 수 있다. 실시예에서, FDT는 액세스 포지션들의 표시들을 포함할 수 있다. 예컨대, FDT는, DASH 클라이언트가 DASH 세그먼트들에 액세스할 수 있는, DASH 세그먼트들의 하나 또는 그 초과의 공간-분리된 바이트 포지션들을 표시하는 속성 "IndependentUnitPositions"를 포함할 수 있다.
[0048] 서버(112)는 패킷들 및 파일 액세스 포지션들의 표시들을 포함하는 FDT를 컴퓨팅 디바이스(102)에 송신할 수 있다. 패킷들은 서버(112)로부터 컴퓨팅 디바이스(102)의 eMBMS 미들웨어(207)로의 송신에서 손실될 수 있거나 또는 손실되지 않을 수 있다. 파일에 대한 패킷들이 손실되지 않은 경우, 파일의 완전한 버전(complete version)이 eMBMS 미들웨어(207)에 의해 어셈블링되어, DASH 클라이언트(210)에게 이용가능해질 수 있다. 파일에 대한 모든 패킷들보다는 적은 패킷들이 손실되는 경우, 또는 파일에 대한 모든 패킷들보다는 적은 패킷들이 손실되고 그리고 에러 정정을 적용하는 것에 의해 복원가능하지 않은 경우, 파일의 불완전 버전이 eMBMS 미들웨어(207)에 의해 어셈블링되고, DASH 클라이언트(210)에게 이용가능해질 수 있다. 파일에 대한 모든 패킷들이 손실되고 그리고 에러 정정을 적용하는 것에 의해 복원가능하지 않은 경우, 파일의 어떠한 버전도 eMBMS 미들웨어(207)에 의해 어셈블링되지 않을 수 있다. eMBMS 미들웨어(207)는, 수신된 FDT에서의 파일 표시들에 기반하여, 파일의 완전한 버전이 수신되었는지, 불완전 버전이 수신되었는지, 그리고/또는 어떠한 버전도 수신되지 않았는지를 식별할 수 있다.
[0049] DASH 클라이언트(210)는, DASH 클라이언트(210)가 파일들의 불완전 버전들을 활용하도록 인에이블되었다는 것을 표시하는 파일 요청(예컨대, HTTP GET 동작)을 전송할 수 있다(예컨대, 선호 헤더 필드 표시 "return=3gpp-partial"을 갖는 GET 동작, 수락 헤더 필드 표시 "application/3gpp-partial"을 갖는 GET 동작 등). eMBMS 미들웨어(207)는, DASH 클라이언트(210)가 파일들의 불완전 버전들을 활용하도록 인에이블되었다는 것을 표시하는 파일 요청에 대한 응답으로, (예컨대, 디바이스 측 DASH 서버(206)를 통해) HTTP 응답을 DASH 클라이언트(210)에 전송할 수 있다. 예로서, DASH 서버(206)는, 파일의 완전한 버전이 이용가능한 경우, 완전한 요청된 파일과 함께 200 OK 응답을 전송할 수 있다. 다른 예로서, DASH 서버(206)는, 파일의 불완전 버전이 이용가능한 경우, 파일의 불완전 버전 및 수신된 FDT에서 표시된 해당 파일과 연관된 액세스 포지션의 표시와 함께 200 OK 응답을 전송할 수 있다. 추가의 예로서, DASH 서버(206)는, 파일의 어떠한 부분도 이용가능하지 않은 경우, 어떠한 페이로드도 없이 416 "Requested Range Not Satisfiable" 응답을 전송할 수 있다.
[0050] 도 2a 및 도 2b가 컴퓨팅 디바이스 디바이스의 하나 또는 그 초과의 프로세서들 상에서 실행되는 DASH 클라이언트(210) 및 DASH 서버(206)의 관점들에서 예시하고 논의되지만, 내부 디바이스 서버/클라이언트 교환들은 단순히 서버/클라이언트 교환들의 예일 뿐이며, 본원에서 설명되는 다양한 실시예들은 임의의 타입의 서버/클라이언트 교환에 동일하게 적용가능할 수 있다. 예컨대, DASH 클라이언트(210) 및 DASH 서버(206)는 인터넷과 같은 외부 네트워크를 통해 통신하는 별개의 디바이스들일 수 있다.
[0051] 도 3은 세그먼트들의 불완전 버전들에 대한 클라이언트 요청들의 핸들링을 위해 현재의 HTTP 서버들에 의해 이용되는 종래 기술 방법(300)을 예시한다. 블록(302)에서, 클라이언트는 세그먼트 요청을 생성할 수 있다. 세그먼트 요청은, 세그먼트를 요청하는 "GET" 동작(즉, 방법)과 같은 메시지이다. 세그먼트 요청은 요청된 세그먼트의 URL/URI를 포함한다. 현재의 HTTP 프로토콜에서, 세그먼트 요청들은 또한, "부분 GET" 동작을 사용하여 수행될 수 있으며, "부분 GET" 동작은, URL/URI와 연관된 총 세그먼트의 서브세트를 나타내는 하나 또는 그 초과의 바이트 범위들을 포함함으로써, URL/URI의 세그먼트의 부분에 대한 요청을 포함할 수 있다. 그러나, 현재의 HTTP 프로토콜에서, 세그먼트 요청은, "GET"을 통해 요청되는 전체 자원 또는 "부분 GET"에 의해 표시되는 바와 같은 부분 자원과 관련하여, 클라이언트가 세그먼트의 불완전 버전을 활용하도록 인에이블되었다는 표시를 포함하지 않는다. 실제로는, 현재의 HTTP 세그먼트 요청들은 사실상, 클라이언트가 전체 세그먼트 또는 요청되는 세그먼트의 전체 서브세트만을 사용할 수 있다는 것을 표시하는 "올 오어 낫씽(all or nothing)" 요청들이다.
[0052] 블록(306)에서, HTTP 서버는 블록(304)에서 클라이언트에 의해 전송된 세그먼트 요청을 수신한다. 결정 블록(308)에서, HTTP 서버는 전체 요청된 세그먼트가 이용가능한지 여부를 결정한다. HTTP 서버는, 세그먼트 요청과 연관된 URL/URI를 살피고 그리고 URL/URI의 세그먼트가 데이터가 누락되었는지 그리고/또는 어떠한 방식으로든 손상되었는지 여부를 결정함으로써, 전체 요청된 세그먼트 또는 전체 서브세트가 이용가능한지 여부를 결정할 수 있다. 현재의 HTTP 프로토콜에서, 세그먼트 또는 추구되는 전체 서브세트가 누락된 데이터가 없고 그리고/또는 손상되지 않은 경우에만, 세그먼트 또는 추구되는 전체 서브세트가 전체 세그먼트들인 것으로 결정되어, 리턴될 수 있을 것으로 간주된다.
[0053] 전체 요청된 세그먼트가 이용가능하다는 결정(즉, 결정 블록(308)="예")에 대한 응답으로, HTTP 서버는 요청된 세그먼트를 포함하는 응답을 블록(310)에서 전송하고, 클라이언트는 세그먼트를 포함하는 응답을 블록(312)에서 수신한다. 응답은 전체 요청된 세그먼트가 성공적으로 리트리브되었다는 것을 표시하는 상태 코드, 이를테면, 200 "OK"를 포함할 수 있다.
[0054] 전체 요청된 세그먼트가 이용가능하지 않다는 결정(즉, 결정 블록(308)="아니오")에 대한 응답으로, HTTP 서버는 요청된 세그먼트의 어떠한 부분도 갖지 않은 에러 메시지를 블록(314)에서 전송하고, 클라이언트는 에러 메시지를 블록(316)에서 수신한다. 에러 메시지는 상태 코드, 이를테면, 404 "Not Found"를 포함할 수 있다. 현재의 HTTP 방법(300)에 대한 단점은, 클라이언트들이, 서버에서 이용가능한 세그먼트들의 불완전 버전들을 절대 수신하지 못한다는 점이다. 따라서, 현재의 HTTP 시스템들에서, 세그먼트들의 불완전 버전들을 사용하도록 인에이블된 클라이언트들은, 그들이 세그먼트들의 불완전 버전들을 HTTP 서버들로부터 수신하지 못하기 때문에, 세그먼트들의 불완전 버전들을 플레이하는 것에 의한 최종 사용자 미디어 플레이백 경험의 개선을 할 수 없다.
[0055] 다양한 실시예들은, 클라이언트 요청들에 대한 응답으로 DASH 서버들이 세그먼트들의 불완전 버전들을 제공하는 것을 가능하게 함으로써, 최종 사용자 미디어 플레이백 경험을 개선한다. 도 4 내지 도 15는 세그먼트들의 불완전 버전들에 대한 클라이언트 요청들의 서버 핸들링을 위한 실시예 방법들을 예시한다. 도 4 내지 도 15에서 예시된 실시예 방법들의 동작들은, DASH 클라이언트 디바이스들 및 DASH 서버들의 관점들에서 논의되지만, 클라이언트/서버 관계로 동작하는 임의의 2개의 디바이스들 및/또는 애플리케이션들에 의해 수행될 수 있다.
[0056] 도 4는 세그먼트의 불완전 버전들에 대한 DASH 클라이언트 요청들의 DASH 서버 핸들링을 위한 실시예 방법(400)을 예시한다. 실시예에서, 방법(400)의 동작들은, 미디어 파일 요청에 대한 불완전 응답을 DASH 서버로부터 DASH 클라이언트로 전달하기 위해, DASH 클라이언트와 통신하는 DASH 서버에 의해 수행될 수 있다. 블록(402)에서, DASH 클라이언트는, 세그먼트의 불완전 버전 가능 표시를 포함하는 세그먼트 요청을 생성할 수 있다. 실시예에서, 세그먼트의 불완전 버전 가능 표시를 포함하는 세그먼트 요청은, DASH 클라이언트가 세그먼트의 불완전 버전(예컨대, 불완전 세그먼트)을 사용할 수 있다는 것을 표시하는 헤더 필드를 포함하는 "GET" 동작(즉, 방법)일 수 있다. 실시예에서, 헤더 필드는 RFC 7231에 기술된 수락 헤더 필드(accept header field)일 수 있다. 예컨대, 수락 헤더 필드 표시 "application/3gpp-partial"을 갖는 GET 동작은, DASH 클라이언트가 세그먼트 요청에 대한 응답으로 부분 세그먼트들을 수락할 것임을 표시할 수 있다. 실시예에서, 헤더 필드는 RFC 7240에 기술된 선호 헤더 필드(prefer header field)일 수 있다. 예컨대, 선호 헤더 필드 표시 "return=3gpp-partial"을 갖는 GET 동작은, DASH 클라이언트가 세그먼트 요청에 대한 응답으로 부분 세그먼트들을 수락할 것임을 표시할 수 있다.
[0057] 블록(404)에서, DASH 클라이언트는 세그먼트 요청을 DASH 서버에 전송할 수 있고, 블록(406)에서, DASH 서버는 세그먼트 요청을 수신할 수 있다.
[0058] 결정 블록(408)에서, DASH 서버는 전체 요청된 세그먼트가 이용가능한지 여부를 결정할 수 있다. 실시예에서, DASH 서버는, 세그먼트 요청과 연관된 URL/URI를 살피고 그리고 URL/URI의 세그먼트가 데이터가 누락되었는지 그리고/또는 어떠한 방식으로든 손상되었는지 여부를 결정함으로써, 전체 요청된 파일이 이용가능한지 여부를 결정할 수 있다. 데이터가 누락되지 않고 그리고/또는 손상된 데이터를 포함하지 않는 그러한 세그먼트들은 전체 세그먼트들인 것으로 결정될 수 있다. 데이터가 누락되고 그리고/또는 손상된 데이터를 포함하는 그러한 세그먼트들은 세그먼트들의 불완전 버전들인 것으로 결정될 수 있다.
[0059] 전체 요청된 세그먼트가 이용가능하다는 결정(즉, 결정 블록(408)="예")에 대한 응답으로, DASH 서버는 전체 요청된 세그먼트를 포함하는 응답을 블록(410)에서 전송할 수 있고, DASH 클라이언트는 전체 요청된 세그먼트를 포함하는 응답을 블록(412)에서 수신할 수 있다. 응답은 전체 요청된 세그먼트가 성공적으로 리트리브되었다는 것을 표시하는 상태 코드, 이를테면, 200 "OK"를 포함할 수 있다.
[0060] 전체 요청된 세그먼트가 이용가능하지 않다는 결정(즉, 결정 블록(408)="아니오")에 대한 응답으로, DASH 서버는, DASH 클라이언트가 세그먼트의 불완전 버전을 사용할 수 있다는 것을 표시했는지 여부를 결정 블록(414)에서 결정할 수 있다. 실시예에서, DASH 서버는, DASH 클라이언트가 세그먼트의 불완전 버전을 사용할 수 있다는 것을 표시하는 세그먼트 요청 헤더 필드에 적어도 부분적으로 기반하여, DASH 클라이언트가 세그먼트의 불완전 버전을 사용할 수 있다는 것을 결정할 수 있다.
[0061] DASH 클라이언트가 세그먼트의 불완전 버전을 사용할 수 없다는 결정(즉, 결정 블록(414)="아니오")에 대한 응답으로, DASH 서버는 요청된 세그먼트의 어떠한 부분도 갖지 않은 에러 메시지를 블록(416)에서 DASH 클라이언트에 전송할 수 있고, DASH 클라이언트는 에러 메시지를 블록(424)에서 수신할 수 있다. 실시예에서, 에러 메시지는 DASH 서버로부터 DASH 클라이언트로 전송되는, 에러 상태 코드, 이를테면, "404 Not Found"를 포함하는 메시지일 수 있다.
[0062] DASH 클라이언트가 세그먼트의 불완전 버전을 사용할 수 있다는 결정(즉, 결정 블록(414)="예")에 대한 응답으로, DASH 서버는 요청된 세그먼트가 부분적으로 이용가능한지 여부를 결정 블록(418)에서 결정할 수 있다. 위에서 논의된 바와 같이, 요청된 파일이 부분적으로 이용가능하지 않다는 결정(즉, 결정 블록(418)="아니오")에 대한 응답으로, DASH 서버는 세그먼트를 갖지 않은 에러 메시지를 블록(416)에서 전송할 수 있고, DASH 클라이언트는 에러 메시지를 블록(424)에서 수신할 수 있다.
[0063] 요청된 세그먼트가 부분적으로 이용가능하다는 결정(즉, 결정 블록(418)="예")에 대한 응답으로, DASH 서버는 세그먼트의 불완전 버전 및 세그먼트가 부분 세그먼트라는 표시를 포함하는 응답을 블록(420)에서 DASH 서버로부터 DASH 클라이언트로 전송할 수 있다. 예컨대, 응답은 세그먼트가 부분 세그먼트라는 것을 표시하는 콘텐츠-타입(Content-Type)으로서 "application/3gpp-partial"을 포함할 수 있다. 블록(422)에서, 클라이언트 디바이스는 세그먼트의 불완전 버전을 포함하는 응답을 수신할 수 있다. 콘텐츠-타입으로서의 "application/3gpp-partial"에 의해 식별되는 응답의 페이로드는 HTTP 상태 코드 200 "OK"에 포함될 수 있으며, 이는 콘텐츠-타입 헤더에서 식별되는 경계 스트링을 이용하여 multipart/byteranges로서 포맷화될 수 있다. 아래는, DASH 서버가 요청을 수신할 때, DASH 서버가 사이즈 8000 바이트들의 요청된 세그먼트 중 바이트 범위들 0-1999 및 7000-7999의 세트를 갖는다고 가정하여, DASH 클라이언트에 의해 수신될 수 있는 그러한 응답의 예시적 의사 코드를 도시한다:
Figure pct00001
[0064] 도 5는 세그먼트들의 불완전 버전들에 대한 DASH 클라이언트 요청들의 DASH 서버 핸들링을 위한 또 다른 실시예 방법(500)을 예시한다. 방법(500)의 동작들은, DASH 클라이언트가 부분 세그먼트 가능(partial segment capable)일 수 있다는 어떠한 특별한 표시도 갖지 않은 초기 세그먼트 요청이 DASH 클라이언트에 의해 전송된 이후에 방법(500)의 동작들이 수행될 수 있다는 것을 제외하고는, 위에서 설명된 방법(400)의 동작들과 유사할 수 있다. 실시예에서, 방법(500)의 동작들은, 미디어 파일 요청에 대한 불완전 응답을 DASH 서버로부터 DASH 클라이언트로 전달하기 위해, DASH 클라이언트와 통신하는 DASH 서버에 의해 수행될 수 있다.
[0065] 실시예에서, DASH 클라이언트는, DASH 클라이언트가 세그먼트의 불완전 버전을 사용할 수 있다는 어떠한 특별한 표시도 갖지 않은 초기 세그먼트 요청들을 전송할 수 있다. 전체 요청된 세그먼트를 수신하는 것에 대한 응답으로, DASH 클라이언트에 의해 어떠한 추가의 액션도 취해지지 않을 수 있다. 그러나, DASH 클라이언트는 세그먼트 요청들에 대한 응답으로 수신된 에러 메시지들을 모니터링할 수 있으며, 초기 에러 메시지를 수신하는 것에 대한 응답으로, DASH 클라이언트는 이전에 요청한 세그먼트를 재요청할 수 있으며, 이 때에는, 클라이언트가 세그먼트의 불완전 버전을 사용할 수 있다는 것을 표시하는 헤더 필드를 포함한다. 따라서, 결정 블록(502)에서, DASH 클라이언트는 세그먼트 요청에 대한 응답으로 에러 메시지가 수신되었는지 여부를 결정할 수 있다. 어떠한 에러 메시지도 수신되지 않았다는 결정(즉, 결정 블록(502)="아니오")에 대한 응답으로, DASH 클라이언트는 결정 블록(502)에서 에러 메시지들을 계속해서 모니터링할 수 있다.
[0066] 에러 메시지가 수신되었다는 결정(즉, 결정 블록(502)="예")에 대한 응답으로, DASH 클라이언트 및 DASH 서버는, 에러 메시지에 대한 응답으로 부분 세그먼트를 수신하려고 시도하기 위해, 도 4를 참조하여 위에서 설명된 방법(400)의 동일한 번호가 붙은 블록들 중 블록들(402 내지 424)의 동작들을 수행할 수 있다.
[0067] 도 6은 세그먼트들의 불완전 버전들에 대한 DASH 클라이언트 요청들의 DASH 서버 핸들링을 위한 또 다른 실시예 방법(600)을 예시한다. 방법(600)의 동작들은, DASH 클라이언트가 부분 세그먼트들을 사용할 수 있다는 어떠한 특별한 표시도 갖지 않은 초기 세그먼트 요청이 DASH 클라이언트에 의해 전송된 이후에 방법(600)의 동작들이 수행될 수 있다는 것을 제외하고는, 위에서 설명된 방법(400)의 동작들과 유사할 수 있다. 실시예에서, 방법(600)의 동작들은, 미디어 파일 요청에 대한 불완전 응답을 DASH 서버로부터 DASH 클라이언트로 전달하기 위해, DASH 클라이언트와 통신하는 DASH 서버에 의해 수행될 수 있다.
[0068] 실시예에서, DASH 클라이언트는, DASH 클라이언트가 세그먼트의 불완전 버전을 사용할 수 있다는 어떠한 특별한 표시도 갖지 않은 초기 세그먼트 요청들을 전송할 수 있다. 전체 요청된 세그먼트를 수신하는 것에 대한 응답으로, DASH 클라이언트에 의해 어떠한 추가의 액션도 취해지지 않을 수 있다. 그러나, DASH 클라이언트는 바이트 범위 표시들을 모니터링할 수 있고, DASH 서버로부터 바이트 범위 표시를 수신하는 것에 대한 응답으로, DASH 클라이언트는 다른 바이트 범위들을 사용하여 세그먼트의 후속 부분들을 요청할 수 있으며, 이 때에는, 클라이언트가 세그먼트의 불완전 버전을 사용할 수 있다는 것을 표시하는 헤더 필드를 포함한다. 따라서, 결정 블록(602)에서, DASH 클라이언트는 세그먼트 요청에 대한 응답으로 바이트 범위가 수신되었는지 여부를 결정할 수 있다. 예컨대, DASH 클라이언트는, 서버에서 이용가능한 세그먼트의 부분들의 바이트 범위 표시 및 상태 코드 206을 포함하는 부분 콘텐츠 메시지가 수신되었는지 여부를 결정할 수 있다. 어떠한 바이트 범위도 수신되지 않았다는 결정(즉, 결정 블록(602)="아니오")에 대한 응답으로, DASH 클라이언트는 결정 블록(602)에서 바이트 범위를 계속해서 모니터링할 수 있다. 바이트 범위가 수신되었다는 결정(즉, 결정 블록(602)="예")에 대한 응답으로, DASH 클라이언트 및 DASH 서버는, 수신된 바이트 범위에 대한 응답으로 부분 세그먼트를 수신하려고 시도하기 위해, 도 4를 참조하여 위에서 설명된 방법(400)의 동일한 번호가 붙은 블록들 중 블록들(402 내지 424)의 동작들을 수행할 수 있다.
[0069] 도 7은, DASH 클라이언트가, RFC 7231에 기술된 수락 헤더 필드로서, 클라이언트가 세그먼트의 불완전 버전을 사용할 수 있다는 표시를 포함하는 세그먼트 요청을 생성할 수 있는, 다양한 실시예들에 따른, DASH 클라이언트와 DASH 서버 사이의 상호작용들을 예시하는 호 흐름도이다. 예컨대, 수락 헤더 필드 표시 "application/3gpp-partial"을 갖는 GET 동작은, DASH 클라이언트가 세그먼트 요청에 대한 응답으로 부분 세그먼트들을 수락할 것임을 표시할 수 있다.
[0070] 예컨대, 호 시리즈(702)에서, DASH 클라이언트는 수락 헤더 필드 표시 "application/3gpp-partial"을 갖는 GET을 전송할 수 있고, 전체 세그먼트가 DASH 서버에서 이용가능하기 때문에, 전체 세그먼트를 갖는 200 응답이 리턴될 수 있다. 호 시리즈(704)에서, DASH 클라이언트는 수락 헤더 필드 표시 "application/3gpp-partial"을 갖는 GET을 전송할 수 있고, 세그먼트의 부분만이 DASH 서버에서 이용가능할 수 있다. DASH 클라이언트가 부분 세그먼트를 사용할 수 있다는 것을 수락 헤더가 표시하기 때문에, DASH 서버는, DASH 클라이언트가 부분 세그먼트 가능이라는 것을 결정할 수 있고, 부분 세그먼트를 갖는 200 응답이 리턴될 수 있다.
[0071] 호 시리즈(706)에서, DASH 클라이언트는 초기에, 어떠한 특별한 세그먼트 능력 표시도 갖지 않은 GET을 전송할 수 있고, DASH 서버는, 부분 세그먼트만이 이용가능하기 때문에, 404 에러 메시지를 리턴할 수 있다. 응답에서, DASH 클라이언트는 세그먼트를 재요청하기 위해, 수락 헤더 필드 표시 "application/3gpp-partial"을 갖는 GET을 전송할 수 있다. DASH 클라이언트가 부분 세그먼트 가능이라는 것을 수락 헤더가 표시하기 때문에, DASH 서버는, DASH 클라이언트가 부분 세그먼트를 사용할 수 있다는 것을 결정할 수 있고, 부분 세그먼트를 갖는 200 응답이 리턴될 수 있다.
[0072] 호 시리즈(708)에서, DASH 클라이언트는 초기에, 바이트 범위 표시를 갖고 그리고 어떠한 특별한 세그먼트 능력 표시를 갖지 않는 부분 GET을 전송할 수 있고, DASH 서버는, 요청된 바이트 범위가 이용가능하기 때문에, 206 부분 콘텐츠 메시지를 리턴할 수 있다. 응답에서, DASH 클라이언트는 세그먼트의 후속 부분, 이를테면, 바이트 1000을 초과하는 바이트 범위들을 요청하기 위해, 수락 헤더 필드 표시 "application/3gpp-partial"을 갖는 GET을 전송할 수 있다. DASH 서버는, 수락 헤더의 표시에 기반하여, DASH 클라이언트가 부분 세그먼트를 사용할 수 있다는 것을 결정하고, 바이트 1000을 초과하는 임의의 콘텐츠를 갖는 206 부분 콘텐츠 응답을 리턴할 수 있다.
[0073] 도 8은, DASH 클라이언트가, RFC 7240에 기술된 선호 헤더 필드로서 세그먼트의 불완전 버전 가능 표시를 포함하는 세그먼트 요청을 생성할 수 있는, 다양한 실시예들에 따른, DASH 클라이언트와 DASH 서버 사이의 상호작용들을 예시한다. 예컨대, 선호 헤더 필드 표시 "return=3gpp-partial"을 갖는 GET 동작은, DASH 클라이언트가 세그먼트 요청에 대한 응답으로 부분 세그먼트들을 수락할 것임을 표시할 수 있다.
[0074] 예컨대, 호 시리즈(802)에서, DASH 클라이언트는 선호 헤더 필드 표시 "return=3gpp-partial"을 갖는 GET을 전송할 수 있고, 전체 세그먼트가 DASH 서버에서 이용가능하기 때문에, 전체 세그먼트를 갖는 200 응답이 리턴될 수 있다.
[0075] 호 시리즈(804)에서, DASH 클라이언트는 선호 헤더 필드 표시 "return=3gpp-partial"을 갖는 GET을 전송할 수 있지만, 세그먼트의 부분만이 DASH 서버에서 이용가능할 수 있다. DASH 클라이언트가 부분 세그먼트를 사용할 수 있다는 것을 선호 헤더가 표시하기 때문에, DASH 서버는, DASH 클라이언트가 부분 세그먼트를 사용할 수 있다는 것을 결정할 수 있고, 부분 세그먼트를 갖는 200 응답을 리턴할 수 있다.
[0076] 호 시리즈(806)에서, DASH 클라이언트는 초기에, 어떠한 특별한 세그먼트 능력 표시도 갖지 않은 GET을 전송할 수 있고, DASH 서버는, 부분 세그먼트만이 이용가능할 수 있기 때문에, 404 에러 메시지를 리턴할 수 있다. 응답에서, DASH 클라이언트는 세그먼트를 재요청하기 위해, 선호 헤더 필드 표시 "return=3gpp-partial"을 갖는 GET을 전송할 수 있다. DASH 서버는, 선호 헤더 표시에 기반하여, DASH 클라이언트가 부분 세그먼트를 사용할 수 있다는 것을 결정하고, 부분 세그먼트를 갖는 200 응답을 리턴할 수 있다.
[0077] 호 시리즈(808)에서, DASH 클라이언트는 초기에, 바이트 범위 표시를 갖고 그리고 어떠한 특별한 세그먼트 능력 표시를 갖지 않는 부분 GET을 전송할 수 있고, DASH 서버는, 요청된 바이트 범위가 이용가능하기 때문에, 206 부분 콘텐츠 메시지를 리턴할 수 있다. 응답에서, DASH 클라이언트는 세그먼트의 후속 부분, 이를테면, 바이트 1000을 초과하는 바이트 범위들을 요청하기 위해, 선호 헤더 필드 표시 "return=3gpp-partial"을 갖는 GET을 전송할 수 있다. DASH 클라이언트가 부분 세그먼트를 사용할 수 있다는 것을 선호 헤더가 표시하기 때문에, DASH 서버는, DASH 클라이언트가 부분 세그먼트를 사용할 수 있다는 것을 결정하고, 바이트 1000을 초과하는 임의의 콘텐츠를 갖는 206 부분 콘텐츠 응답을 리턴할 수 있다.
[0078] 도 9는 세그먼트들의 불완전 버전들에 대한 DASH 클라이언트 요청들의 DASH 서버 핸들링을 위한 실시예 방법(900)을 예시한다. 실시예에서, 방법(900)의 동작들은, 미디어 파일 요청에 대한 불완전 응답을 DASH 서버로부터 DASH 클라이언트로 전달하기 위해, DASH 클라이언트와 통신하는 DASH 서버에 의해 수행될 수 있다. 블록(902)에서, DASH 클라이언트는 세그먼트 요청을 생성할 수 있다. 세그먼트 요청은 DASH 클라이언트 능력의 어떠한 특별한 표시도 포함하지 않을 수 있다. 블록(904)에서, DASH 클라이언트는 세그먼트 요청을 DASH 서버에 전송할 수 있고, 블록(906)에서, DASH 서버는 세그먼트 요청을 수신할 수 있다.
[0079] 결정 블록(908)에서, DASH 서버는 전체 요청된 세그먼트가 이용가능한지 여부를 결정할 수 있다. 실시예에서, DASH 서버는, 세그먼트 요청과 연관된 URL/URI를 살피고 그리고 URL/URI의 세그먼트가 데이터가 누락되었는지 그리고/또는 어떠한 방식으로든 손상되었는지 여부를 결정함으로써, 전체 요청된 파일이 이용가능한지 여부를 결정할 수 있다. 데이터가 누락되지 않고 그리고/또는 손상된 데이터를 포함하지 않는 그러한 세그먼트들은 전체 세그먼트들인 것으로 결정될 수 있다. 데이터가 누락되고 그리고/또는 손상된 데이터를 포함하는 그러한 세그먼트들은 세그먼트들의 불완전 버전들인 것으로 결정될 수 있다.
[0080] 전체 요청된 세그먼트가 이용가능하다는 결정(즉, 결정 블록(908)="예")에 대한 응답으로, DASH 서버는 전체 요청된 세그먼트를 포함하는 응답을 블록(910)에서 전송할 수 있고, DASH 클라이언트는 전체 요청된 세그먼트를 포함하는 응답을 블록(912)에서 수신할 수 있다. 응답은 전체 요청된 세그먼트가 성공적으로 리트리브되었다는 것을 표시하는 상태 코드, 이를테면, 200 "OK"를 포함할 수 있다.
[0081] 전체 요청된 세그먼트가 이용가능하지 않다는 결정(즉, 결정 블록(908)="아니오")에 대한 응답으로, DASH 서버는, 요청된 세그먼트가 부분적으로 이용가능한지 여부를 결정 블록(914)에서 결정할 수 있다. 요청된 세그먼트가 부분적으로 이용가능하지 않다는 결정(즉, 결정 블록(914)="아니오")에 대한 응답으로, DASH 서버는 블록(916)에서, 요청된 세그먼트의 어떠한 부분도 갖지 않은 에러 메시지를 DASH 클라이언트에 전송할 수 있고, DASH 클라이언트는 블록(918)에서 에러 메시지를 수신할 수 있다. 실시예에서, 에러 메시지는 DASH 서버로부터 DASH 클라이언트로 전송되는, 에러 상태 코드, 이를테면, "404 Not Found"를 포함하는 메시지일 수 있다.
[0082] 세그먼트가 부분적으로 이용가능하다는 결정(즉, 결정 블록(914)="예")에 대한 응답으로, DASH 서버는 블록(920)에서, 세그먼트의 불완전 버전이 DASH 서버에서 이용가능하다는 표시를 포함하는 응답을 DASH 서버로부터 DASH 클라이언트로 전송할 수 있고, DASH 클라이언트는 블록(922)에서 응답을 수신할 수 있다. 실시예에서, 응답 메시지는, 요청된 세그먼트의 불완전 버전이 이용가능하다는 표시 및 이용가능한 세그먼트의 바이트 범위들을 포함할 수 있다. 실시예에서, 응답 메시지는, 요청된 세그먼트의 불완전 버전이 이용가능하다는 것 및 이용가능한 바이트 범위들을 표시하는 확장 헤더를 포함하는 메시지일 수 있다. 예컨대, 초기 응답은 상태 코드 404 및 확장 헤더 "X-Available-Ranges: bytes a-b,c-d,..."를 포함하는 에러 메시지일 수 있다. 다른 예로서, 초기 응답은 상태 코드 206 및 확장 헤더 "X-Available-Ranges: bytes a-b,c-d,..."를 포함하는 부분 콘텐츠 메시지일 수 있다. 실시예에서, 응답 메시지는, 요청된 세그먼트의 불완전 버전이 이용가능하다는 것 및 이용가능한 바이트 범위들, 이를테면, "콘텐츠-타입= 3gpp-partial-byte-ranges"를 표시하는 엔티티 바디를 포함하는 300 시리즈 메시지와 같은 리다이렉트 메시지일 수 있다.
[0083] 블록(924)에서, DASH 클라이언트는 세그먼트 요청을 생성할 수 있다. 세그먼트 요청은 세그먼트의 불완전 버전을 수신하기 위해 생성될 수 있다. 세그먼트 요청은, 클라이언트가 세그먼트의 불완전 버전을 사용할 수 있다는 표시를 포함할 수 있다. 예컨대, 수락 헤더 필드 표시 "application/3gpp-partial"을 갖는 GET 동작은, DASH 클라이언트가 세그먼트 요청에 대한 응답으로 부분 세그먼트들을 수락할 것임을 표시할 수 있다. 실시예에서, 세그먼트의 불완전 버전에 대한 세그먼트 요청은, 세그먼트에 대해 이용가능한 것으로 DASH 서버가 표시한 바이트 범위들의 표시를 포함하는 "부분 GET" 동작(즉, 방법)일 수 있다. 블록(926)에서, DASH 클라이언트는 세그먼트 요청을 DASH 서버에 전송할 수 있고, 블록(928)에서, DASH 서버는 세그먼트 요청을 수신할 수 있다.
[0084] 표시된 바이트 범위들을 갖는 세그먼트 요청을 수신하는 것에 대한 응답으로, DASH 서버는 블록(930)에서, 세그먼트의 불완전 버전을 포함하는 응답을 DASH 클라이언트에 전송할 수 있다. 실시예에서, 세그먼트의 불완전 버전을 포함하는 응답은, 세그먼트가 부분 세그먼트라는 표시를 포함할 수 있다. 예컨대, 응답은, 세그먼트가 부분 세그먼트라는 것을 표시하는 "경계=THIS_STRING_SEPARATES"와 같은 연관된 경계 표시를 갖는 콘텐츠-타입으로서 "multipart/byteranges"를 포함할 수 있다. 블록(932)에서, 클라이언트는 세그먼트의 불완전 버전을 포함하는 응답을 수신할 수 있다.
[0085] 도 10은, DASH 서버로부터 초기에 전송된 응답 메시지가, 요청된 세그먼트의 불완전 버전이 이용가능하다는 것 및 이용가능한 바이트 범위들을 표시하는 확장 헤더를 포함하는 메시지인, 다양한 실시예들에 따른, DASH 클라이언트와 DASH 서버 사이의 상호작용들을 예시한다.
[0086] 예컨대, 호 시리즈(1004)에서, DASH 클라이언트로부터의 GET에 대한 초기 응답은 상태 코드 406 및 확장 헤더 "X-Available-Ranges: bytes a-b,c-d,..."를 포함하는, DASH 서버로부터의 에러 메시지일 수 있다. 부분 세그먼트 가능 DASH 클라이언트는, 부분 세그먼트가 이용가능하다는 것을 표시하는 것으로 확장 헤더를 해석할 수 있고, 세그먼트에 대해 이용가능한 것으로 DASH 서버가 표시한 바이트 범위들의 표시를 포함하는 부분 GET 요청을 전송할 수 있다. GET 요청에서 표시된 바이트 범위들에 기반하여, DASH 서버는 요청된 이용가능한 세그먼트 범위들을 갖는 206 부분 콘텐츠 응답을 리턴할 수 있다.
[0087] 다른 예로서, 호 시리즈(1006)에서, DASH 클라이언트로부터의 GET에 대한 초기 응답은 상태 코드 206 및 확장 헤더 "X-Available-Ranges: bytes a-b,c-d"를 포함하는 부분 콘텐츠 메시지일 수 있다. 부분-세그먼트-가능 DASH 클라이언트는, 부분 세그먼트가 이용가능하다는 것을 표시하는 것으로 확장 헤더를 해석할 수 있고, 세그먼트에 대해 이용가능한 것으로 DASH 서버가 표시한 바이트 범위들의 표시를 포함하는 부분 GET 요청을 전송할 수 있다. GET 요청에 포함된 바이트 범위들에 기반하여, DASH 서버는 요청된 이용가능한 세그먼트 범위들을 갖는 206 부분 콘텐츠 응답을 리턴할 수 있다.
[0088] 도 11은, DASH 서버로부터의 초기 응답 메시지가, 요청된 세그먼트의 불완전 버전이 이용가능하다는 것 및 이용가능한 바이트 범위들, 이를테면, "콘텐츠-타입= 3gpp-partial-byte-ranges"를 표시하는 엔티티 바디를 포함하는 300 시리즈 메시지와 같은 리다이렉트 메시지인, 다양한 실시예들에 따른, DASH 클라이언트와 DASH 서버 사이의 상호작용들을 예시한다.
[0089] 예컨대, 호 시리즈(1104)에서, DASH 클라이언트로부터의 GET에 대한 초기 응답은, 요청된 세그먼트의 불완전 버전이 이용가능하다는 것 및 이용가능한 바이트 범위들, 이를테면, "콘텐츠-타입= 3gpp-partial-byte-ranges"를 표시하는 엔티티 바디를 포함하는 300 시리즈 메시지와 같은 리다이렉트 메시지일 수 있다. 이러한 방식에서, DASH 서버는 DASH 클라이언트를 리다이렉트시키는 것이 아니라, 오히려 단지 세그먼트가 부분적으로만 이용가능하다는 표시로, 클라이언트를 동일한 세그먼트로 다시 다이렉트시킬 수 있다. 부분 세그먼트 가능 DASH 클라이언트는, 부분 세그먼트가 이용가능하다는 것을 표시하는 것으로서 엔티티 바디를 갖는 300 메시지를 해석할 수 있고, 세그먼트에 대해 이용가능한 것으로 DASH 서버가 표시한 바이트 범위들의 표시를 포함하는 부분 GET 요청을 전송할 수 있다. GET 요청에 포함된 바이트 범위들에 기반하여, DASH 서버는 요청된 이용가능한 세그먼트 범위들을 갖는 206 부분 콘텐츠 응답을 리턴할 수 있다.
[0090] 다른 예로서, 호 시리즈(1106)에서, DASH 클라이언트는 초기에, 바이트 범위 표시를 갖고 그리고 어떠한 특별한 세그먼트 능력 표시를 갖지 않는 부분 GET을 전송할 수 있고, DASH 서버는, 이용가능한 요청된 바이트 범위를 갖는 206 부분 콘텐츠 메시지를 리턴할 수 있다. 그 후에, DASH 클라이언트는 바이트 1000을 초과하는 바이트 범위들과 같은, 세그먼트의 후속 부분을 요청하기 위해 부분 GET 요청을 전송할 수 있다. 바이트 1000을 초과하는 부분 세그먼트가 이용가능하기 때문에, DASH 서버로부터의 응답은, 요청된 세그먼트의 불완전 버전이 이용가능하다는 것 및 이용가능한 바이트 범위들, 이를테면, "콘텐츠-타입= 3gpp-partial-byte-ranges"를 표시하는 엔티티 바디를 포함하는 300 시리즈 메시지와 같은 리다이렉트 메시지일 수 있다. 이러한 방식에서, DASH 서버는 DASH 클라이언트를 리다이렉트시키는 것이 아니라, 오히려 단지 세그먼트가 부분적으로만 이용가능하다는 표시로, 클라이언트를 동일한 세그먼트로 다시 다이렉트시킬 수 있다. 부분 세그먼트 가능 DASH 클라이언트는, 부분 세그먼트가 이용가능하다는 것을 표시하는 것으로서 엔티티 바디를 갖는 300 메시지를 해석할 수 있고, 세그먼트에 대해 바이트 1000을 초과하여 이용가능한 것으로 DASH 서버가 표시한 바이트 범위들의 표시를 포함하는 GET 요청을 전송할 수 있다. GET 요청에 포함된 바이트 범위들에 기반하여, DASH 서버는 바이트 1000을 초과하는 요청된 이용가능한 세그먼트 범위들을 갖는 206 부분 콘텐츠 응답을 리턴할 수 있다.
[0091] 도 12는 세그먼트들의 불완전 버전들에 대한 DASH 클라이언트 요청들의 DASH 서버 핸들링을 위한 또 다른 실시예 방법(1200)을 예시한다. 방법(1200)의 동작들은, 액세스 포지션들이 세그먼트들과 연관될 때 방법(1200)의 동작들이 수행될 수 있다는 것을 제외하고는, 위에서 설명된 방법(400)의 동작들과 유사할 수 있다. 실시예에서, 방법(1200)의 동작들은, 미디어 파일 요청에 대한 불완전 응답을 DASH 서버로부터 DASH 클라이언트로 전달하기 위해, DASH 클라이언트와 통신하는 DASH 서버에 의해 수행될 수 있다. 블록들(402 내지 424)에서, DASH 클라이언트 및 DASH 서버는, 클라이언트가 세그먼트들의 불완전 버전들을 사용할 수 없을 때, 에러 메시지들 또는 전체 요청된 세그먼트를 포함하는 응답들을 제공하기 위해, 도 4를 참조하여 위에서 설명된 방법(400)의 동일한 번호가 붙은 블록들의 동작들을 수행할 수 있다.
[0092] DASH 클라이언트가 세그먼트의 불완전 버전을 사용할 수 있다는 결정(즉, 결정 블록(414)="예")에 대한 응답으로, DASH 서버는 결정 블록(1202)에서, 수신된 FDT가, DASH 클라이언트에 의해 요청된 세그먼트가 전송되었음을 DASH 서버에 표시하는지 여부를 결정할 수 있다. 요청되는 세그먼트를 포함하는 DASH 표현에 대해 FDT를 체크함으로써, DASH 서버는, 요청된 세그먼트가, 표현과 연관된 실제 세그먼트인지 여부를 결정할 수 있다. 이러한 방식으로, DASH 서버는 미디어 스트림의 세그먼트들에 대한 잘못된 요청들과 미디어 스트림의 세그먼트들에 대한 유효한 요청들을 구별할 수 있다.
[0093] 요청된 세그먼트를 FDT가 리스팅하지 않는다는 결정(즉, 결정 블록(1202)="아니오")에 대한 응답으로, 블록들(416 및 424)에서, DASH 서버 및 DASH 클라이언트는, 에러를 표시하기 위해 도 4를 참조하여 위에서 설명된 방법(400)의 동일한 번호가 붙은 블록들의 동작들을 수행할 수 있다.
[0094] 요청된 세그먼트를 FDT가 리스팅한다는 결정(즉, 결정 블록(1202)="예")에 대한 응답으로, DASH 서버는 결정 블록(418)에서, 요청된 세그먼트가 부분적으로 이용가능한지 여부를 결정할 수 있다. 요청된 파일이 부분적으로 이용가능하지 않다는 결정(즉, 결정 블록(418)="아니오")에 대한 응답으로, DASH 서버는 블록(1212)에서, 세그먼트를 갖지 않은 에러 메시지를 전송할 수 있다. 이러한 방식에서, DASH 서버는, 세그먼트의 불완전 버전을 사용할 수 있는 DASH 클라이언트가, DASH 서버에서 어떠한 바이트들도 이용가능하지 않은 세그먼트를 요청하는 것에 대한 응답으로, 에러 메시지를 생성 및 전송할 수 있다. 예컨대, DASH 서버는, 요청된 DASH 세그먼트에 대한 어떠한 바이트들도 또는 DASH 세그먼트에 대한 어떠한 바이트 범위도 DASH 서버에서 이용가능하지 않을 경우, 상태 코드 416 "Requested Range Not Satisfiable"을 포함하는 에러 메시지를 전송할 수 있다. 에러 메시지는 추가로, DASH 세그먼트에 대해 FDT 인스턴스에서 제공되는 콘텐츠 타입, DASH 세그먼트에 대해 FDT에서 제공되는 콘텐츠 위치, 및 DASH 세그먼트에 대해 FDT에서 표시되는 콘텐츠 길이에 기반하여 "bytes */content-length"로서 표시되는 콘텐츠 범위를 표시할 수 있다.
[0095] 블록(1214)에서, DASH 클라이언트는 에러 메시지를 수신할 수 있다. 상태 코드 416 "Requested Range Not Satisfiable"을 포함하는 에러 메시지를 수신함으로써, DASH 클라이언트는 유효하지 않은 세그먼트들에 대한 요청들(예컨대, 상태 코드 404 "Not Found"를 갖는 에러 메시지들을 초래하는 요청들)과 송신에서 손실된 세그먼트들에 대한 요청들(예컨대, 상태 코드 416 "Requested Range Not Satisfiable"을 갖는 에러 메시지들을 초래하는, FDT에서 표시되지만 수신되는 바이트들이 없는 세그먼트들) 사이를 구별할 수 있다. 실시예에서, DASH 클라이언트는, 상태 코드 416을 갖는 에러 메시지에 의해 표시된 송신 세그먼트의 손실을 은폐할 수 있고, 표현의 다음 세그먼트를 요청함으로써 정상 동작을 계속할 수 있다.
[0096] 요청된 세그먼트가 부분적으로 이용가능하다는 결정(즉, 결정 블록(418)="예")에 대한 응답으로, DASH 서버는 블록(1208)에서, 세그먼트의 불완전 버전, 세그먼트가 부분 세그먼트라는 표시, 및 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들의 표시를 포함하는 응답을 DASH 서버로부터 DASH 클라이언트로 전송할 수 있다. 예컨대, 응답은, 세그먼트가 부분 세그먼트라는 것을 표시하는 콘텐츠 타입으로서 "application/3gpp-partial" 및 DASH 클라이언트가 세그먼트에 액세스할 수 있는, DASH 세그먼트의 하나 또는 그 초과의 바이트 포지션들을 표시하는 확장 헤더 필드들 "3gpp-access-position"을 포함할 수 있다. 응답은 응답에 포함된 세그먼트의 부분의 표시를 더 포함할 수 있다. 예컨대, 응답은, 응답에 포함된 세그먼트의 하나 또는 그 초과의 바이트 범위들을 표시하는 하나 또는 그 초과의 헤더 필드들(예컨대, 콘텐츠-범위 헤더 필드)을 포함할 수 있다. 이러한 실시예들에서, 응답에 포함된 세그먼트의 하나 또는 그 초과의 바이트 범위들을 표시하는 하나 또는 그 초과의 헤더 필드들을 응답이 포함하는 경우, 하나 또는 그 초과의 확장 헤더 필드들 "3gpp-access-position"은, 하나 또는 그 초과의 표시된 바이트 범위들 내에 있고 DASH 클라이언트가 세그먼트에 액세스할 수 있는 하나 또는 그 초과의 바이트 포지션들을 포함할 수 있다. 다양한 실시예들에서, 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들은, DASH 세그먼트의 불완전하게 수신된 버전의 FDT 인스턴스의 파일 엔트리의 "mbms2015:IndependentUnitPositions" 속성으로서 DASH 서버에 표시될 수 있다. DASH 세그먼트의 불완전하게 수신된 버전의 모든 FDT 인스턴스들의 파일 엔트리들이 "mbms2015:IndependentUnitPositions" 속성을 포함하지 않는 경우, DASH 서버는 DASH 세그먼트의 불완전하게 수신된 버전을 분석하여, 하나 또는 그 초과의 무비 프레그먼트 헤더(moof) 위치들을 결정함에 따라, 하나 또는 그 초과의 moof들을 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들로서 식별할 수 있다.
[0097] 블록(1210)에서, DASH 클라이언트는 세그먼트의 불완전 버전, 응답이 부분 세그먼트를 포함한다는 표시, 및 하나 또는 그 초과의 액세스 포인트들의 표시를 포함하는 응답을 수신할 수 있다. 수신된 응답은 또한, 응답, 예컨대, 콘텐츠-범위 헤더 필드에 포함된 세그먼트의 부분의 표시를 포함할 수 있다. 콘텐츠-타입으로서의 "application/3gpp-partial"에 의해 식별되는 응답의 페이로드는 HTTP 상태 코드 200 "OK"에 포함될 수 있으며, 이는, "3gpp-access-position" 필드에서 표시된 세그먼트에 대한 액세스 포인트(들)에 대응하는 하나 또는 그 초과의 쉼표-구분 바이트 포지션(comma-separated byte position)들 및 콘텐츠-타입 헤더에서 식별되는 경계 스트링을 이용하여 multipart/byteranges로서 포맷화될 수 있다.
[0098] 예에서, DASH 서버가 요청을 수신할 때, DASH 서버는 요청된 세그먼트의 사이즈 256000 바이트들 중 바이트 범위들 0-19999, 50000-85000, 105500-199888, 및 201515-229566의 세트들을 가질 수 있고, DASH 세그먼트에 대한 FDT 인스턴스에 대한 파일 엔트리는, 뒤따르는 리스트의 값들 "0 60000 80000 110000"과 함께 "mbms2015:IndependentUnitPositions" 속성을 포함할 수 있다. 이러한 예에서, DASH 서버는 제 1 액세스 포지션의 바이트 범위들을 0-59999로서 식별하고, 제 2 액세스 포지션의 바이트 범위들을 60000-79999로서 식별하고, 제 3 액세스 포지션의 바이트 범위들을 80000-109999로서 식별하고, 제 4 액세스 포지션의 바이트 범위들을 110000-255999로서 식별할 수 있다. DASH 서버가 이용가능한 제 1 바이트 범위(0-19999)가 제 1 액세스 포지션의 시작부(beginning)를 포함하기 때문에, DASH 서버는 응답에 "3gpp-access-position: 0"을 포함할 수 있다. DASH 서버가 이용가능한 제 2 바이트 범위(50000-85000)가 제 2 액세스 포지션 및 제 3 액세스 포지션의 일부를 포함할 수 있으므로, DASH 서버는 응답에 "3gpp-access-positions: 60000, 80000"을 포함할 수 있다. 유사하게, DASH 서버가 이용가능한 제 3 바이트 범위(105500-199888)가 제 4 액세스 포지션의 일부를 포함할 수 있으므로, DASH 서버는 응답에 "3gpp-access-position: 110000"을 포함할 수 있다. 마지막으로, DASH 서버가 이용가능한 제 4 바이트 범위(201515-229566)가 임의의 액세스 포지션의 처음(start)을 포함하지 않을 수 있으며, 결과적으로 DASH 서버는 "3gpp-access-position" 엘리먼트를 응답에 포함하지 않을 수 있다. 아래는 DASH 클라이언트에 의해 수신될 수 있는 그러한 응답의 의사 코드의 예를 도시한다:
Figure pct00002
[0099] 도 13은, DASH 클라이언트가 세그먼트 요청을 생성할 수 있는, 다양한 실시예들에 따른, DASH 클라이언트와 DASH 서버 사이의 상호작용들을 예시하는 호 흐름도이다. 세그먼트 요청은, RFC 7231에 기술된 수락 헤더 필드로서, 클라이언트가 세그먼트의 불완전 버전을 사용할 수 있다는 표시를 포함할 수 있다. 예컨대, 수락 헤더 필드 표시 "application/3gpp-partial"을 갖는 GET 동작은, DASH 클라이언트가 세그먼트 요청에 대한 응답으로 부분 세그먼트들을 수락할 것임을 표시할 수 있다.
[0100] 예컨대, 호 시리즈(1302)에서, DASH 클라이언트는 수락 헤더 필드 표시 "application/3gpp-partial"을 갖는 GET을 전송할 수 있고, 전체 세그먼트가 DASH 서버에서 이용가능하기 때문에, 전체 세그먼트를 갖는 200 응답이 리턴될 수 있다.
[0101] 호 시리즈(1304)에서, DASH 클라이언트는 수락 헤더 필드 표시 "application/3gpp-partial"을 갖는 GET을 전송할 수 있다. 세그먼트의 부분만이 DASH 서버에서 이용가능하고, 수락 헤더가, DASH 클라이언트가 부분 세그먼트를 사용할 수 있다는 것을 표시하는 경우, DASH 서버는, DASH 클라이언트가 부분 세그먼트 가능이라는 것을 결정할 수 있고, 부분 세그먼트, 부분 세그먼트 콘텐츠 타입 헤더 필드 표시 "application/3gpp-partial", 및 액세스 포지션 표시 헤더 필드 "3gpp-access-position"을 갖는 200 응답을 DASH 클라이언트에 전송할 수 있다.
[0102] 호 시리즈(1306)에서, DASH 클라이언트는 수락 헤더 필드 표시 "application/3gpp-partial"을 갖는 GET을 전송할 수 있다. 세그먼트의 어떠한 바이트들도 DASH 서버에서 이용가능하지 않을 수 있고, 수락 헤더가, DASH 클라이언트가 부분 세그먼트를 사용할 수 있다는 것을 표시하는 경우, DASH 서버는 DASH 클라이언트가 부분 세그먼트 가능이라는 것을 결정하고, 콘텐츠 타입 헤더 필드 표시 "application/3gpp-partial", 및 콘텐츠-범위 "bytes */content-length"를 갖는 416 "Requested Range Not Satisfiable" 에러 메시지를 DASH 클라이언트에 전송할 수 있다.
[0103] 도 14는 DASH 미디어 스트림과 같은 미디어 스트림의 세그먼트들의 데이터 블록도이다. 미디어 스트림은 초기화 세그먼트 및 다양한 미디어 세그먼트들, 이를테면, 미디어 세그먼트 1, 미디어 세그먼트 2 등을 포함할 수 있다. 미디어 세그먼트는, 미디어 세그먼트의 하나 또는 그 초과의 미디어 데이터 부분(mdat)들(예컨대, 비디오, 오디오 등의 데이터 샘플들을 포함하는 미디어 세그먼트의 바이트 범위들)을 디코딩 및/또는 렌더링하기 위해 DASH 클라이언트에 의해 사용될 수 있는 랜덤 액세스 포인트들(예컨대, SAP(Stream Access Point)들 타입 1 또는 2) 또는 싱크 샘플들을 표시하는 데이터와 같은 메타데이터를 포함하는 하나 또는 그 초과의 moof들을 포함할 수 있다. 다양한 실시예들에서, 미디어 세그먼트의 초기 부분은 세그먼트의 제 1 moof에 대응하는 미디어 세그먼트의 바이트 범위일 수 있다.
[0104] 미디어 세그먼트의 제 1 moof 없이는, 세그먼트의 mdat들이 파싱가능하지 않을 수 있고, 세그먼트의 임의의 추가의 moof들의 시작 포지션이 DASH 클라이언트에 의해 로케이팅되지 못할 수 있는데, 그 이유는 moof 및 mdat의 사이즈가 DASH 클라이언트에 알려지지 않을 수 있기 때문이다. 다양한 실시예들은, 세그먼트의 불완전 버전을 디코딩 및/또는 렌더링하기 위해 사용될 수 있는 랜덤 액세스 포인트들(예컨대, SAP(Stream Access Point)들 타입 1 또는 2) 또는 싱크 샘플들을 식별하기 위해 세그먼트의 불완전 버전을 파싱하는 것을 시작하기 위하여 DASH 클라이언트가 세그먼트에 액세스할 수 있는, 미디어 세그먼트의 바이트 포지션을 식별할 수 있는 액세스 포지션 표시(예컨대, 속성 "3gpp-access-position"에 의해 표시됨)를 제공할 수 있다. 이러한 방식에서, 액세스 포지션은 요청된 바이트 범위 또는 요청된 세그먼트의 중간 바이트 포지션일 수 있으며, 이는, 세그먼트의 초기 부분(예컨대, 세그먼트의 제 1 moof)이 손실되었을 수 있는 경우, DASH 클라이언트가 세그먼트의 불완전 버전을 파싱하는 것을 가능하게 할 수 있다.
[0105] 예컨대, 도 14에 예시된 바와 같이, 미디어 세그먼트 1에 대한 moof1 및 mdat1의 부분이 송신 시에 손실되어, DASH 서버가 미디어 세그먼트 1의 불완전 버전만을 요청 DASH 클라이언트에 제공하는 것을 초래할 수 있다. 미디어 세그먼트 1의 불완전 버전이 제공된다는 것을 표시하고, 그리고 액세스 포인트 바이트 포지션을 엘리먼트 "3gpp-access-position"에서 표시함으로써, DASH 클라이언트는 불완전 버전이 초기 부분(예컨대, moof 1)을 포함하는지 여부를 결정할 수 있다. 세그먼트의 초기 부분(예컨대, moof 1)이 손실되었고 불완전 버전 내에 없다는 결정에 대한 응답으로, DASH 클라이언트는 액세스 포지션에서 파싱을 시작할 수 있다. 이러한 방식으로, 랜덤 액세스 포인트들(예컨대, SAP(Stream Access Point)들 타입 1 또는 2) 또는 싱크 샘플들을 표시하는 데이터와 같은, moof2의 메타 데이터는, DASH 클라이언트가 mdat2 및 이후의 미디어 세그먼트들, 이를테면, 미디어 세그먼트 2를 디코딩 및/또는 렌더링하는 것을 가능하게 할 수 있다.
[0106] 도 15는 세그먼트들의 불완전 버전들의 DASH 클라이언트 핸들링을 위한 실시예 방법(1500)을 예시한다. 실시예에서, 방법(1500)의 동작들은, 미디어 파일 요청에 대한 불완전 응답을 파싱하기 위해, DASH 클라이언트에 의해 수행될 수 있다. 위에서 논의된 바와 같이, 블록(1210)에서, DASH 클라이언트는 세그먼트의 불완전 버전, 응답이 부분 세그먼트를 포함한다는 표시, 및 하나 또는 그 초과의 액세스 포인트들의 표시를 포함하는 응답을 수신할 수 있다. 예컨대, 응답은, 세그먼트가 부분 세그먼트라는 것을 표시하는 콘텐츠 타입으로서 "application/3gpp-partial" 및 DASH 클라이언트가 세그먼트에 액세스할 수 있는, DASH 세그먼트의 하나 또는 그 초과의 바이트 포지션들을 표시하는 확장 헤더 필드들 "3gpp-access-position"을 포함할 수 있다.
[0107] 선택적 결정 블록(1501)에서, DASH 클라이언트는 세그먼트의 초기 부분이 불완전 응답에서 수신되었는지 여부를 결정할 수 있다. 다양한 실시예들에서, 미디어 세그먼트의 초기 부분은 세그먼트의 제 1 moof에 대응하는 미디어 세그먼트의 바이트 범위일 수 있다. 세그먼트의 초기 부분이 수신되었다는 결정(즉, 결정 블록(1501)="예")에 대한 응답으로, DASH 클라이언트는 블록(1503)에서, 초기 부분의 제 1 바이트에서 시작하는 세그먼트의 불완전 버전을 파싱할 수 있다.
[0108] 세그먼트의 초기 부분이 수신되지 않았다는 결정(즉, 결정 블록(1501)="아니오")에 대한 응답으로 또는 DASH 클라이언트가 초기 부분에 대해 체크하도록 구성되지 않았을 수 있는 실시예들에서, DASH 클라이언트는 결정 블록(1502)에서, 액세스 포지션의 바이트가 세그먼트의 불완전 버전에서 수신되었는지 여부를 결정할 수 있다. 액세스 포지션에 대응하는 바이트가 수신되지 않았다는 결정(즉, 결정 블록(1502)="아니오")에 대한 응답으로, DASH 클라이언트는 블록(1504)에서, 표현의 다음 세그먼트를 요청할 수 있다. 액세스 포지션에 대응하는 바이트가 수신되었다는 결정(즉, 결정 블록(1502)="예")에 대한 응답으로, DASH 클라이언트는 블록(1506)에서, 액세스 포지션에서 시작하는 세그먼트의 불완전 버전을 파싱할 수 있다.
[0109] (도 4 내지 도 15를 참조하여 위에서 논의된 실시예들을 포함하는(그러나, 이에 제한되지 않음)) 다양한 실시예들은 다양한 모바일 디바이스들(즉, 수신기 디바이스들) 중 임의의 디바이스에서 구현될 수 있으며, 그 예가 도 16에 예시된다. 예컨대, 모바일 컴퓨팅 디바이스(1600)는 터치 스크린 제어기(1604) 및 내부 메모리(1602)에 커플링된 프로세서(1601)를 포함할 수 있다. 프로세서(1601)는 일반적 또는 특정 프로세싱 태스크들을 위해 지정된 하나 또는 그 초과의 멀티코어 IC(integrated circuit)들일 수 있다. 내부 메모리(1602)는 휘발성 또는 비-휘발성 메모리일 수 있고, 또한 보안 및/또는 암호화된 메모리, 또는 비보안 및/또는 비암호화된 메모리, 또는 이들의 임의의 조합일 수 있다. 터치 스크린 제어기(1604) 및 프로세서(1601)는 또한, 터치 스크린 패널(1612), 이를테면, 저항성-감지 터치 스크린, 용량성-감지 터치 스크린, 적외선 감지 터치 스크린 등에 커플링될 수 있다. 모바일 컴퓨팅 디바이스(1600)는, 서로 커플링되고 그리고/또는 프로세서(1601)에 커플링되는, 전송 및 수신을 위한 하나 또는 그 초과의 라디오 신호 트랜시버들(1608)(예컨대, Peanut®, Bluetooth®, Zigbee®, Wi-Fi, 셀룰러 등) 및 안테나(1610)를 가질 수 있다. 트랜시버들(1608) 및 안테나(1610)는 다양한 무선 송신 프로토콜 스택들 및 인터페이스들을 구현하기 위해, 위에서 언급된 회로와 함께 사용될 수 있다. 모바일 컴퓨팅 디바이스(1600)는, 셀룰러 네트워크를 통한 통신을 가능하게 하고 프로세서에 커플링되는 셀룰러 네트워크 무선 모뎀 칩(1616)을 포함할 수 있다. 모바일 컴퓨팅 디바이스(1600)는, 프로세서(1601)에 커플링되는 주변 디바이스 연결 인터페이스(peripheral device connection interface)(1618)를 포함할 수 있다. 주변 디바이스 연결 인터페이스(1618)는, 일 타입의 연결을 수용하도록 단수형으로 구성될 수 있거나, 또는 USB, FireWire, Thunderbolt 또는 PCIe와 같은 다양한 타입들의 물리적 및 통신 연결들(일반 또는 사유)을 수용하도록 다중형으로 구성될 수 있다. 주변 디바이스 연결 인터페이스(1618)는 또한, 유사하게 구성된 주변 디바이스 연결 포트(도시되지 않음)에 커플링될 수 있다. 모바일 컴퓨팅 디바이스(1600)는 또한, 오디오 출력들을 제공하기 위한 스피커들(1614)을 포함할 수 있다. 모바일 컴퓨팅 디바이스(1600)는 또한, 본원에서 논의되는 컴포넌트들 중 전부 또는 일부를 포함하기 위해, 플라스틱, 금속 또는 재료들의 조합으로 구성되는 하우징(1620)을 포함할 수 있다. 모바일 컴퓨팅 디바이스(1600)는, 일회용 또는 재충전가능 배터리와 같이, 프로세서(1601)에 커플링되는 전력원(1622)을 포함할 수 있다. 재충전가능 배터리는 또한, 모바일 컴퓨팅 디바이스(1600) 외부의 소스로부터 충전 전류를 수신하기 위해 주변 디바이스 연결 포트에 커플링될 수 있다.
[0110] (도 4 내지 도 15를 참조하여 위에서 논의된 실시예들을 포함하는(그러나, 이에 제한되지 않음)) 다양한 실시예들은 또한, 도 17에 예시된 서버(1700)와 같은 다양한 상업적으로 입수가능한 서버 디바이스들 중 임의의 서버 디바이스 상에 구현될 수 있다. 이러한 서버(1700)는 통상적으로, 휘발성 메모리(1702) 및 대용량 비휘발성 메모리, 이를테면, 디스크 드라이브(1704)에 커플링되는 프로세서(1701)를 포함한다. 서버(1700)는 또한, 프로세서(1701)에 커플링되는 플로피 디스크 드라이브, CD(compact disc) 또는 DVD 디스크 드라이브(1706)를 포함할 수 있다. 서버(1700)는 또한, 다른 어나운스먼트 시스템 컴퓨터들 및 서버들, 인터넷, 공중 교환 전화 네트워크 및/또는 셀룰러 네트워크(예컨대, CDMA, TDMA, GSM, PCS, 3G, 4G, LTE, 또는 임의의 다른 타입의 셀룰러 네트워크)에 커플링되는 로컬 영역 네트워크와 같은 통신 네트워크(1707)와의 네트워크 인터페이스 연결들을 설정하기 위해 프로세서(1701)에 커플링되는 네트워크 액세스 포트와 같은 하나 또는 그 초과의 네트워크 트랜시버들(1703)을 포함할 수 있다.
[0111] 프로세서들(1601 및 1701)은, 위에서 설명된 다양한 실시예들의 기능들을 포함하는 다양한 기능들을 수행하도록 소프트웨어 명령들(애플리케이션들)에 의해 구성될 수 있는 임의의 프로그램가능 마이크로프로세서, 마이크로컴퓨터 또는 다중 프로세서 칩 또는 칩들일 수 있다. 일부 디바이스들에서, 하나의 프로세서는 무선 통신 기능들에 전용되고 하나의 프로세서는 다른 애플리케이션들을 실행시키는데 전용되는 것과 같이, 다수의 프로세서들이 제공될 수 있다. 통상적으로, 소프트웨어 애플리케이션들은, 액세스되어 프로세서들(1601 및 1701)에 로딩되기 전에, 내부 메모리에 저장될 수 있다. 프로세서들(1601 및 1701)은 애플리케이션 소프트웨어 명령들을 저장하기에 충분한 내부 메모리를 포함할 수 있다. 많은 디바이스들에서, 내부 메모리는 휘발성 또는 비휘발성 메모리, 이를테면, 플래시 메모리, 또는 둘 모두의 혼합일 수 있다. 이러한 설명의 목적들로, 메모리에 대한 일반적 참조는, 디바이스에 플러그인되는 착탈식 메모리 또는 내부 메모리 및 프로세서들(1601 및 1701) 자체 내의 메모리를 비롯하여, 프로세서들(1601 및 1701)에 의해 액세스가능한 메모리를 지칭한다.
[0112] 전술한 방법 설명들 및 프로세스 흐름도들은 단지 예시적인 예들로서 제공되고, 다양한 실시예들의 단계들이 제시된 순서로 수행되어야 함을 요구하거나 의미하도록 의도되지 않는다. 당업자에 의해 인지될 바와 같이, 전술한 실시예들의 단계들의 순서는 임의의 순서로 수행될 수 있다. "그 후", "그 다음", "다음" 등과 같은 단어들은 단계들의 순서를 제한하도록 의도되지 않고; 이들 단어들은 단순히, 방법들의 설명에 걸쳐 독자를 안내하기 위해 사용된다. 또한, 예컨대, 단수형 표현을 이용한 단수인 청구항 엘리먼트들에 대한 임의의 참조는 그 엘리먼트를 단수로 제한하는 것으로 해석되어서는 안 된다.
[0113] 본원에서 개시된 실시예들과 관련하여 설명되는 다양한 예시적인 로직 블록들, 모듈들, 회로들, 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 그 둘의 조합들로서 구현될 수 있다. 하드웨어와 소프트웨어의 이러한 상호교환가능성을 명확히 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 그들의 기능의 관점들에서 일반적으로 상술되었다. 그러한 기능이 하드웨어로 구현되는지 또는 소프트웨어로 구현되는지는 특정 애플리케이션, 및 전체 시스템에 부과된 설계 제약들에 의존한다. 당업자들은 각각의 특정 애플리케이션에 대해 다양한 방식들로 설명된 기능을 구현할 수 있지만, 이러한 구현 결정들이 본 발명의 범위를 벗어나게 하는 것으로 해석되어서는 안 된다.
[0114] 본원에서 개시된 양상들과 관련하여 설명된 다양한 예시적인 로직들, 로직 블록들, 모듈들, 및 회로들을 구현하는 데 사용되는 하드웨어는 범용 프로세서, DSP(digital signal processor), ASIC(application specific integrated circuit), FPGA(field programmable gate array) 또는 다른 프로그램가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본원에서 설명된 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현 또는 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안적으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예컨대, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 공조하는 하나 또는 그 초과의 마이크로프로세서들 또는 임의의 다른 이러한 구성으로서 구현될 수 있다. 대안적으로, 일부 단계들 또는 방법들은 주어진 기능에 대해 특정한 회로에 의해 수행될 수 있다.
[0115] 하나 또는 그 초과의 예시적인 양상들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능들은 비-일시적 컴퓨터-판독가능 매체 또는 비-일시적 프로세서-판독가능 매체 상에 하나 또는 그 초과의 명령들 또는 코드로서 저장될 수 있다. 본원에 개시된 알고리즘 또는 방법의 단계들은 비-일시적 컴퓨터-판독가능 또는 비-일시적 프로세서-판독가능 저장 매체 상에 상주할 수 있는 프로세서-실행가능 소프트웨어 모듈 및/또는 프로세서-실행가능 명령들로 구현될 수 있다. 비-일시적 서버-판독가능, 컴퓨터-판독가능 또는 프로세서-판독가능 저장 매체들은 컴퓨터 또는 프로세서에 의해 액세스될 수 있는 임의의 저장 매체들일 수 있다. 제한이 아닌 예로서, 이러한 비-일시적 서버-판독가능, 컴퓨터-판독가능 또는 프로세서-판독가능 매체들은, RAM, ROM, EEPROM, 플래시 메모리, CD-ROM 또는 다른 광학 디스크 저장소, 자기 디스크 저장소 또는 다른 자기 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 저장하는 데 사용될 수 있고, 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 본원에서 사용되는 디스크(disk 및 disc)는 CD(compact disc), 레이저 디스크(laser disc), 광학 디스크(optical disc), DVD(digital versatile disc), 플로피 디스크(floppy disk) 및 블루레이 디스크(Blu-ray disc)를 포함하며, 여기서 디스크(disk)들은 보통 데이터를 자기적으로 재생하는 한편, 디스크(disc)들은 레이저들을 이용하여 광학적으로 데이터를 재생한다. 상기의 것들의 조합들이 또한 비-일시적 서버-판독가능, 컴퓨터-판독가능 및 프로세서-판독가능 매체들의 범위 내에 포함된다. 부가적으로, 방법 또는 알고리즘의 동작들은 컴퓨터 프로그램 제품에 통합될 수 있는 비-일시적 서버-판독가능, 프로세서-판독가능 매체 및/또는 컴퓨터-판독가능 매체 상에 코드들 및/또는 명령들 중 하나 또는 이들의 임의의 조합 또는 세트로서 상주할 수 있다.
[0116] 개시된 실시예들의 이전의 설명은 당업자가 본 발명을 이용하거나 실시할 수 있게 하기 위해 제공된다. 이러한 실시예들에 대한 다양한 변형들은 당업자들에게 용이하게 명백할 것이며, 본원에서 정의된 일반 원리들은 본 발명의 사상 또는 범위로부터 벗어남이 없이 다른 실시예들에 적용될 수 있다. 따라서, 본 발명은 본원에서 도시된 실시예들로 제한되도록 의도되는 것이 아니라, 하기의 청구항들 및 본원에 개시된 원리들 및 신규한 특징들과 일치하는 가장 넓은 범위에 부합할 것이다.

Claims (72)

  1. 미디어 파일 요청에 대한 불완전 응답(incomplete response)을 서버로부터 클라이언트로 전달하기 위한 방법으로서,
    상기 서버에서 상기 클라이언트로부터 세그먼트 요청을 수신하는 단계 ― 상기 세그먼트 요청은, 상기 클라이언트가 불완전 세그먼트(incomplete segment)를 사용할 수 있는지 여부를 표시함 ―;
    상기 서버에서, 상기 세그먼트 요청과 연관된 전체 세그먼트(full segment)가 상기 서버에서 이용가능한지 여부를 결정하는 단계;
    상기 서버에서, 상기 세그먼트 요청과 연관된 상기 전체 세그먼트가 상기 서버에서 이용가능하지 않다는 것에 대한 응답으로, 상기 세그먼트 요청에 기반하여, 상기 클라이언트가 불완전 세그먼트를 사용할 수 있는지 여부를 결정하는 단계; 및
    상기 클라이언트가 불완전 세그먼트를 사용할 수 있다는 결정에 대한 응답으로, 응답 메시지에서 불완전 세그먼트를 상기 서버로부터 상기 클라이언트로 전송하는 단계 ― 상기 응답 메시지는, 상기 응답 메시지가 상기 불완전 세그먼트를 포함한다는 표시 및 상기 불완전 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션(access position)들의 표시를 포함함 ― 를 포함하고,
    상기 하나 또는 그 초과의 액세스 포지션들은, 상기 불완전 세그먼트를 디코딩하기 위해 파싱(parsing)을 시작할, 상기 불완전 세그먼트 내의 하나 또는 그 초과의 포인트들을 식별하는,
    미디어 파일 요청에 대한 불완전 응답을 서버로부터 클라이언트로 전달하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 응답 메시지가 상기 불완전 세그먼트를 포함한다는 표시 및 상기 불완전 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들의 표시 중 하나 또는 둘 모두는 상기 응답 메시지의 개별 헤더 필드들인,
    미디어 파일 요청에 대한 불완전 응답을 서버로부터 클라이언트로 전달하기 위한 방법.
  3. 제 1 항에 있어서,
    상기 응답 메시지는, 상기 응답 메시지에 포함된 상기 불완전 세그먼트에 포함된 요청된 세그먼트의 부분의 표시를 더 포함하는,
    미디어 파일 요청에 대한 불완전 응답을 서버로부터 클라이언트로 전달하기 위한 방법.
  4. 제 3 항에 있어서,
    상기 불완전 세그먼트에 포함된 상기 요청된 세그먼트의 부분의 표시는 상기 불완전 세그먼트에 포함된 상기 요청된 세그먼트 내의 바이트 범위의 표시를 포함하는,
    미디어 파일 요청에 대한 불완전 응답을 서버로부터 클라이언트로 전달하기 위한 방법.
  5. 제 4 항에 있어서,
    상기 응답 메시지의 하나 또는 그 초과의 헤더 필드들은 상기 불완전 세그먼트에 포함된 상기 요청된 세그먼트의 부분의 표시를 포함하는,
    미디어 파일 요청에 대한 불완전 응답을 서버로부터 클라이언트로 전달하기 위한 방법.
  6. 제 5 항에 있어서,
    상기 불완전 세그먼트에 대한 상기 하나 또는 그 초과의 액세스 포지션들은 상기 불완전 세그먼트에 포함된 상기 요청된 세그먼트 내의 상기 바이트 범위 내에 로케이팅되는,
    미디어 파일 요청에 대한 불완전 응답을 서버로부터 클라이언트로 전달하기 위한 방법.
  7. 제 1 항에 있어서,
    상기 하나 또는 그 초과의 액세스 포지션들은 상기 세그먼트 요청과 연관된 세그먼트의 바이트 범위의 하나 또는 그 초과의 중간 바이트 포지션(intermediate byte position)들인,
    미디어 파일 요청에 대한 불완전 응답을 서버로부터 클라이언트로 전달하기 위한 방법.
  8. 제 7 항에 있어서,
    적어도 하나의 액세스 포지션은 상기 세그먼트 요청과 연관된 상기 세그먼트의 초기 부분 외측에 있는,
    미디어 파일 요청에 대한 불완전 응답을 서버로부터 클라이언트로 전달하기 위한 방법.
  9. 제 8 항에 있어서,
    상기 세그먼트 요청과 연관된 상기 세그먼트의 초기 부분은 상기 세그먼트의 제 1 무비 프레그먼트 헤더(movie fragment header)인,
    미디어 파일 요청에 대한 불완전 응답을 서버로부터 클라이언트로 전달하기 위한 방법.
  10. 제 1 항에 있어서,
    상기 하나 또는 그 초과의 액세스 포지션들은 상기 세그먼트 요청과 연관된 세그먼트를 설명하는 FDT(File Delivery Table)에서 표시되는,
    미디어 파일 요청에 대한 불완전 응답을 서버로부터 클라이언트로 전달하기 위한 방법.
  11. 제 10 항에 있어서,
    상기 하나 또는 그 초과의 액세스 포지션들은 상기 FDT에서 하나 또는 그 초과의 쉼표-구분 바이트 포지션(comma-separated byte position)들에 의해 표시되는,
    미디어 파일 요청에 대한 불완전 응답을 서버로부터 클라이언트로 전달하기 위한 방법.
  12. 제 1 항에 있어서,
    상기 클라이언트가 불완전 세그먼트를 사용할 수 있다는 결정에 대한 응답으로, 상기 세그먼트 요청과 연관된 어떠한 바이트들도 상기 서버에서 이용가능하지 않은지 여부를 상기 서버에서 결정하는 단계; 및
    상기 세그먼트 요청과 연관된 어떠한 바이트들도 상기 서버에서 이용가능하지 않다는 결정에 대한 응답으로, 상기 서버로부터 상기 클라이언트로 에러 메시지를 전송하는 단계를 더 포함하고,
    상기 클라이언트가 불완전 세그먼트를 사용할 수 있다는 결정에 대한 응답으로, 응답 메시지에서 불완전 세그먼트를 상기 서버로부터 상기 클라이언트로 전송하는 단계 ― 상기 응답 메시지는, 상기 응답 메시지가 상기 불완전 세그먼트를 포함한다는 표시 및 상기 불완전 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들의 표시를 포함함 ― 는, 상기 클라이언트가 불완전 세그먼트를 사용할 수 있다는 결정 및 상기 세그먼트 요청과 연관된 바이트가 상기 서버에서 이용가능하다는 결정에 대한 응답으로, 응답 메시지에서 불완전 세그먼트를 상기 서버로부터 상기 클라이언트로 전송하는 단계 ― 상기 응답 메시지는, 상기 응답 메시지가 상기 불완전 세그먼트를 포함한다는 표시 및 상기 불완전 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들의 표시를 포함함 ― 를 포함하는,
    미디어 파일 요청에 대한 불완전 응답을 서버로부터 클라이언트로 전달하기 위한 방법.
  13. 제 12 항에 있어서,
    상기 에러 메시지는, 상기 세그먼트 요청과 연관된 어떠한 바이트들도 상기 서버에서 이용가능하지 않다는 것을 표시하는,
    미디어 파일 요청에 대한 불완전 응답을 서버로부터 클라이언트로 전달하기 위한 방법.
  14. 제 13 항에 있어서,
    상기 에러 메시지는 416 상태 코드를 포함하는,
    미디어 파일 요청에 대한 불완전 응답을 서버로부터 클라이언트로 전달하기 위한 방법.
  15. 제 1 항에 있어서,
    상기 클라이언트는 DASH 클라이언트이고 그리고 상기 서버는 DASH 서버인,
    미디어 파일 요청에 대한 불완전 응답을 서버로부터 클라이언트로 전달하기 위한 방법.
  16. 미디어 파일 요청에 대한 불완전 응답을 서버로부터 클라이언트로 전달하기 위한 방법으로서,
    미디어 파일의 불완전 버전 및 상기 미디어 파일의 불완전 버전에 대한 하나 또는 그 초과의 액세스 포지션들을 표시하는 확장 헤더를 포함하는 메시지를 상기 서버로부터 상기 클라이언트로 전송하는 단계를 포함하고,
    상기 하나 또는 그 초과의 액세스 포지션들은, 상기 미디어 파일의 불완전 버전을 디코딩하기 위해 파싱을 시작할, 상기 미디어 파일의 불완전 버전 내의 하나 또는 그 초과의 포인트들을 식별하는,
    미디어 파일 요청에 대한 불완전 응답을 서버로부터 클라이언트로 전달하기 위한 방법.
  17. 제 16 항에 있어서,
    상기 확장 헤더는 추가로, 상기 미디어 파일의 불완전 버전에 포함된 요청된 미디어 파일 내의 바이트 범위를 표시하는,
    미디어 파일 요청에 대한 불완전 응답을 서버로부터 클라이언트로 전달하기 위한 방법.
  18. 제 16 항에 있어서,
    상기 클라이언트는 DASH 클라이언트이고 그리고 상기 서버는 DASH 서버인,
    미디어 파일 요청에 대한 불완전 응답을 서버로부터 클라이언트로 전달하기 위한 방법.
  19. 서버로서,
    동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성된 프로세서를 포함하고, 상기 동작들은,
    클라이언트로부터 세그먼트 요청을 수신하는 동작 ― 상기 세그먼트 요청은, 상기 클라이언트가 불완전 세그먼트를 사용할 수 있는지 여부를 표시함 ―;
    상기 세그먼트 요청과 연관된 전체 세그먼트가 이용가능한지 여부를 결정하는 동작;
    상기 세그먼트 요청과 연관된 상기 전체 세그먼트가 이용가능하지 않다는 것에 대한 응답으로, 상기 세그먼트 요청에 기반하여, 상기 클라이언트가 불완전 세그먼트를 사용할 수 있는지 여부를 결정하는 동작; 및
    상기 클라이언트가 불완전 세그먼트를 사용할 수 있다는 결정에 대한 응답으로, 응답 메시지에서 불완전 세그먼트를 상기 클라이언트에 전송하는 동작 ― 상기 응답 메시지는, 상기 응답 메시지가 상기 불완전 세그먼트를 포함한다는 표시 및 상기 불완전 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들의 표시를 포함함 ― 을 포함하고,
    상기 하나 또는 그 초과의 액세스 포지션들은, 상기 불완전 세그먼트를 디코딩하기 위해 파싱을 시작할, 상기 불완전 세그먼트 내의 하나 또는 그 초과의 포인트들을 식별하는,
    서버.
  20. 제 19 항에 있어서,
    상기 프로세서는, 상기 응답 메시지가 상기 불완전 세그먼트를 포함한다는 표시 및 상기 불완전 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들의 표시 중 하나 또는 둘 모두가 상기 응답 메시지의 개별 헤더 필드들이도록, 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성되는,
    서버.
  21. 제 19 항에 있어서,
    상기 프로세서는, 상기 응답 메시지가, 상기 응답 메시지에 포함된 상기 불완전 세그먼트에 포함된 요청된 세그먼트의 부분의 표시를 더 포함하도록, 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성되는,
    서버.
  22. 제 21 항에 있어서,
    상기 프로세서는, 상기 불완전 세그먼트에 포함된 상기 요청된 세그먼트의 부분의 표시가, 상기 불완전 세그먼트에 포함된 상기 요청된 세그먼트 내의 바이트 범위의 표시를 포함하도록, 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성되는,
    서버.
  23. 제 22 항에 있어서,
    상기 프로세서는, 상기 응답 메시지의 하나 또는 그 초과의 헤더 필드들이, 상기 불완전 세그먼트에 포함된 상기 요청된 세그먼트의 부분의 표시를 포함하도록, 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성되는,
    서버.
  24. 제 23 항에 있어서,
    상기 프로세서는, 상기 불완전 세그먼트에 대한 상기 하나 또는 그 초과의 액세스 포지션들이, 상기 불완전 세그먼트에 포함된 상기 요청된 세그먼트 내의 상기 바이트 범위 내에 로케이팅되도록, 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성되는,
    서버.
  25. 제 19 항에 있어서,
    상기 프로세서는, 상기 하나 또는 그 초과의 액세스 포지션들이, 상기 세그먼트 요청과 연관된 세그먼트의 바이트 범위의 하나 또는 그 초과의 중간 바이트 포지션들이도록, 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성되는,
    서버.
  26. 제 25 항에 있어서,
    상기 프로세서는, 적어도 하나의 액세스 포지션이 상기 세그먼트 요청과 연관된 상기 세그먼트의 초기 부분 외측에 있도록, 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성되는,
    서버.
  27. 제 26 항에 있어서,
    상기 프로세서는, 상기 세그먼트 요청과 연관된 상기 세그먼트의 초기 부분이 상기 세그먼트의 제 1 무비 프레그먼트 헤더이도록, 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성되는,
    서버.
  28. 제 19 항에 있어서,
    상기 프로세서는, 상기 하나 또는 그 초과의 액세스 포지션들이 상기 세그먼트 요청과 연관된 세그먼트를 설명하는 FDT(File Delivery Table)에서 표시되도록, 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성되는,
    서버.
  29. 제 28 항에 있어서,
    상기 프로세서는, 상기 하나 또는 그 초과의 액세스 포지션들이 상기 FDT에서 하나 또는 그 초과의 쉼표-구분 바이트 포지션들에 의해 표시되도록, 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성되는,
    서버.
  30. 제 19 항에 있어서,
    상기 프로세서는 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성되며, 상기 동작들은,
    상기 클라이언트가 불완전 세그먼트를 사용할 수 있다는 결정에 대한 응답으로, 상기 세그먼트 요청과 연관된 어떠한 바이트들도 이용가능하지 않은지 여부를 결정하는 동작; 및
    상기 세그먼트 요청과 연관된 어떠한 바이트들도 이용가능하지 않다는 결정에 대한 응답으로, 상기 클라이언트에 에러 메시지를 전송하는 동작을 더 포함하고,
    상기 프로세서는,
    상기 클라이언트가 불완전 세그먼트를 사용할 수 있다는 결정에 대한 응답으로, 응답 메시지에서 불완전 세그먼트를 상기 클라이언트에 전송하는 동작 ― 상기 응답 메시지는, 상기 응답 메시지가 상기 불완전 세그먼트를 포함한다는 표시 및 상기 불완전 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들의 표시를 포함함 ― 이, 상기 클라이언트가 불완전 세그먼트를 사용할 수 있다는 결정 및 상기 세그먼트 요청과 연관된 바이트가 이용가능하다는 결정에 대한 응답으로, 응답 메시지에서 불완전 세그먼트를 상기 클라이언트에 전송하는 동작 ― 상기 응답 메시지는, 상기 응답 메시지가 상기 불완전 세그먼트를 포함한다는 표시 및 상기 불완전 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들의 표시를 포함함 ― 을 포함하도록, 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성되는,
    서버.
  31. 제 30 항에 있어서,
    상기 프로세서는, 상기 에러 메시지가, 상기 세그먼트 요청과 연관된 어떠한 바이트들도 이용가능하지 않다는 것을 표시하도록, 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성되는,
    서버.
  32. 제 31 항에 있어서,
    상기 프로세서는, 상기 에러 메시지가 416 상태 코드를 포함하도록, 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성되는,
    서버.
  33. 제 19 항에 있어서,
    상기 클라이언트는 DASH 클라이언트인,
    서버.
  34. 서버로서,
    동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성된 프로세서를 포함하고, 상기 동작들은,
    미디어 파일의 불완전 버전 및 상기 미디어 파일의 불완전 버전에 대한 하나 또는 그 초과의 액세스 포지션들을 표시하는 확장 헤더를 포함하는 메시지를 클라이언트에 전송하는 동작을 포함하고,
    상기 하나 또는 그 초과의 액세스 포지션들은, 상기 미디어 파일의 불완전 버전을 디코딩하기 위해 파싱을 시작할, 상기 미디어 파일의 불완전 버전 내의 하나 또는 그 초과의 포인트들을 식별하는,
    서버.
  35. 제 34 항에 있어서,
    상기 프로세서는, 상기 확장 헤더가 추가로, 상기 미디어 파일의 불완전 버전에 포함된 요청된 미디어 파일 내의 바이트 범위를 표시하도록, 동작들을 수행하기 위해 프로세서-실행가능 명령들로 구성되는,
    서버.
  36. 제 34 항에 있어서,
    상기 클라이언트는 DASH 클라이언트인,
    서버.
  37. 서버로서,
    클라이언트로부터 세그먼트 요청을 수신하기 위한 수단 ― 상기 세그먼트 요청은, 상기 클라이언트가 불완전 세그먼트를 사용할 수 있는지 여부를 표시함 ―;
    상기 세그먼트 요청과 연관된 전체 세그먼트가 이용가능한지 여부를 결정하기 위한 수단;
    상기 세그먼트 요청과 연관된 상기 전체 세그먼트가 이용가능하지 않다는 것에 대한 응답으로, 상기 세그먼트 요청에 기반하여, 상기 클라이언트가 불완전 세그먼트를 사용할 수 있는지 여부를 결정하기 위한 수단; 및
    상기 클라이언트가 불완전 세그먼트를 사용할 수 있다는 결정에 대한 응답으로, 응답 메시지에서 불완전 세그먼트를 상기 클라이언트에 전송하기 위한 수단 ― 상기 응답 메시지는, 상기 응답 메시지가 상기 불완전 세그먼트를 포함한다는 표시 및 상기 불완전 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들의 표시를 포함함 ― 을 포함하고,
    상기 하나 또는 그 초과의 액세스 포지션들은, 상기 불완전 세그먼트를 디코딩하기 위해 파싱을 시작할, 상기 불완전 세그먼트 내의 하나 또는 그 초과의 포인트들을 식별하는,
    서버.
  38. 제 37 항에 있어서,
    상기 응답 메시지가 상기 불완전 세그먼트를 포함한다는 표시 및 상기 불완전 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들의 표시 중 하나 또는 둘 모두는 상기 응답 메시지의 개별 헤더 필드들인,
    서버.
  39. 제 37 항에 있어서,
    상기 응답 메시지는, 상기 응답 메시지에 포함된 상기 불완전 세그먼트에 포함된 요청된 세그먼트의 부분의 표시를 더 포함하는,
    서버.
  40. 제 39 항에 있어서,
    상기 불완전 세그먼트에 포함된 상기 요청된 세그먼트의 부분의 표시는 상기 불완전 세그먼트에 포함된 상기 요청된 세그먼트 내의 바이트 범위의 표시를 포함하는,
    서버.
  41. 제 40 항에 있어서,
    상기 응답 메시지의 하나 또는 그 초과의 헤더 필드들은 상기 불완전 세그먼트에 포함된 상기 요청된 세그먼트의 부분의 표시를 포함하는,
    서버.
  42. 제 41 항에 있어서,
    상기 불완전 세그먼트에 대한 상기 하나 또는 그 초과의 액세스 포지션들은 상기 불완전 세그먼트에 포함된 상기 요청된 세그먼트 내의 상기 바이트 범위 내에 로케이팅되는,
    서버.
  43. 제 37 항에 있어서,
    상기 하나 또는 그 초과의 액세스 포지션들은 상기 세그먼트 요청과 연관된 세그먼트의 바이트 범위의 하나 또는 그 초과의 중간 바이트 포지션들인,
    서버.
  44. 제 43 항에 있어서,
    적어도 하나의 액세스 포지션은 상기 세그먼트 요청과 연관된 상기 세그먼트의 초기 부분 외측에 있는,
    서버.
  45. 제 44 항에 있어서,
    상기 세그먼트 요청과 연관된 상기 세그먼트의 초기 부분은 상기 세그먼트의 제 1 무비 프레그먼트 헤더인,
    서버.
  46. 제 37 항에 있어서,
    상기 하나 또는 그 초과의 액세스 포지션들은 상기 세그먼트 요청과 연관된 세그먼트를 설명하는 FDT(File Delivery Table)에서 표시되는,
    서버.
  47. 제 46 항에 있어서,
    상기 하나 또는 그 초과의 액세스 포지션들은 상기 FDT에서 하나 또는 그 초과의 쉼표-구분 바이트 포지션들에 의해 표시되는,
    서버.
  48. 제 37 항에 있어서,
    상기 클라이언트가 불완전 세그먼트를 사용할 수 있다는 결정에 대한 응답으로, 상기 세그먼트 요청과 연관된 어떠한 바이트들도 이용가능하지 않은지 여부를 결정하기 위한 수단; 및
    상기 세그먼트 요청과 연관된 어떠한 바이트들도 이용가능하지 않다는 결정에 대한 응답으로, 상기 클라이언트에 에러 메시지를 전송하기 위한 수단을 더 포함하고,
    상기 클라이언트가 불완전 세그먼트를 사용할 수 있다는 결정에 대한 응답으로, 응답 메시지에서 불완전 세그먼트를 상기 클라이언트에 전송하기 위한 수단 ― 상기 응답 메시지는, 상기 응답 메시지가 상기 불완전 세그먼트를 포함한다는 표시 및 상기 불완전 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들의 표시를 포함함 ― 은, 상기 클라이언트가 불완전 세그먼트를 사용할 수 있다는 결정 및 상기 세그먼트 요청과 연관된 바이트가 이용가능하다는 결정에 대한 응답으로, 응답 메시지에서 불완전 세그먼트를 상기 클라이언트에 전송하기 위한 수단 ― 상기 응답 메시지는, 상기 응답 메시지가 상기 불완전 세그먼트를 포함한다는 표시 및 상기 불완전 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들의 표시를 포함함 ― 을 포함하는,
    서버.
  49. 제 48 항에 있어서,
    상기 에러 메시지는, 상기 세그먼트 요청과 연관된 어떠한 바이트들도 이용가능하지 않다는 것을 표시하는,
    서버.
  50. 제 49 항에 있어서,
    상기 에러 메시지는 416 상태 코드를 포함하는,
    서버.
  51. 제 37 항에 있어서,
    상기 클라이언트는 DASH 클라이언트인,
    서버.
  52. 서버로서,
    미디어 파일의 불완전 버전 및 상기 미디어 파일의 불완전 버전에 대한 하나 또는 그 초과의 액세스 포지션들을 표시하는 확장 헤더를 포함하는 메시지를 클라이언트에 전송하기 위한 수단을 포함하고,
    상기 하나 또는 그 초과의 액세스 포지션들은, 상기 미디어 파일의 불완전 버전을 디코딩하기 위해 파싱을 시작할, 상기 미디어 파일의 불완전 버전 내의 하나 또는 그 초과의 포인트들을 식별하는,
    서버.
  53. 제 52 항에 있어서,
    상기 확장 헤더는 추가로, 상기 미디어 파일의 불완전 버전에 포함된 요청된 미디어 파일 내의 바이트 범위를 표시하는,
    서버.
  54. 제 52 항에 있어서,
    상기 클라이언트는 DASH 클라이언트인,
    서버.
  55. 서버 프로세서로 하여금 동작들을 수행하게 하도록 구성되는 저장된 프로세서-실행가능 명령들을 갖는 비-일시적 프로세서-판독가능 저장 매체로서,
    상기 동작들은,
    클라이언트로부터 세그먼트 요청을 수신하는 동작 ― 상기 세그먼트 요청은, 상기 클라이언트가 불완전 세그먼트를 사용할 수 있는지 여부를 표시함 ―;
    상기 세그먼트 요청과 연관된 전체 세그먼트가 이용가능한지 여부를 결정하는 동작;
    상기 세그먼트 요청과 연관된 상기 전체 세그먼트가 이용가능하지 않다는 것에 대한 응답으로, 상기 세그먼트 요청에 기반하여, 상기 클라이언트가 불완전 세그먼트를 사용할 수 있는지 여부를 결정하는 동작; 및
    상기 클라이언트가 불완전 세그먼트를 사용할 수 있다는 결정에 대한 응답으로, 응답 메시지에서 불완전 세그먼트를 상기 클라이언트에 전송하는 동작 ― 상기 응답 메시지는, 상기 응답 메시지가 상기 불완전 세그먼트를 포함한다는 표시 및 상기 불완전 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들의 표시를 포함함 ― 을 포함하고,
    상기 하나 또는 그 초과의 액세스 포지션들은, 상기 불완전 세그먼트를 디코딩하기 위해 파싱을 시작할, 상기 불완전 세그먼트 내의 하나 또는 그 초과의 포인트들을 식별하는,
    비-일시적 프로세서-판독가능 저장 매체.
  56. 제 55 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 서버 프로세서로 하여금, 상기 응답 메시지가 상기 불완전 세그먼트를 포함한다는 표시 및 상기 불완전 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들의 표시 중 하나 또는 둘 모두가 상기 응답 메시지의 개별 헤더 필드들이게 하는 동작들을 수행하게 하도록 구성되는,
    비-일시적 프로세서-판독가능 저장 매체.
  57. 제 55 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 서버 프로세서로 하여금, 상기 응답 메시지가, 상기 응답 메시지에 포함된 상기 불완전 세그먼트에 포함된 요청된 세그먼트의 부분의 표시를 더 포함하게 하는 동작들을 수행하게 하도록 구성되는,
    비-일시적 프로세서-판독가능 저장 매체.
  58. 제 57 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 서버 프로세서로 하여금, 상기 불완전 세그먼트에 포함된 상기 요청된 세그먼트의 부분의 표시가, 상기 불완전 세그먼트에 포함된 상기 요청된 세그먼트 내의 바이트 범위의 표시를 포함하게 하는 동작들을 수행하게 하도록 구성되는,
    비-일시적 프로세서-판독가능 저장 매체.
  59. 제 58 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 서버 프로세서로 하여금, 상기 응답 메시지의 하나 또는 그 초과의 헤더 필드들이, 상기 불완전 세그먼트에 포함된 상기 요청된 세그먼트의 부분의 표시를 포함하게 하는 동작들을 수행하게 하도록 구성되는,
    비-일시적 프로세서-판독가능 저장 매체.
  60. 제 59 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 서버 프로세서로 하여금, 상기 불완전 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들이, 상기 불완전 세그먼트에 포함된 상기 요청된 세그먼트 내의 바이트 범위 내에 로케이팅되게 하는 동작들을 수행하게 하도록 구성되는,
    비-일시적 프로세서-판독가능 저장 매체.
  61. 제 55 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 서버 프로세서로 하여금, 상기 하나 또는 그 초과의 액세스 포지션들이, 상기 세그먼트 요청과 연관된 세그먼트의 바이트 범위의 하나 또는 그 초과의 중간 바이트 포지션들이게 하는 동작들을 수행하게 하도록 구성되는,
    비-일시적 프로세서-판독가능 저장 매체.
  62. 제 61 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 서버 프로세서로 하여금, 적어도 하나의 액세스 포지션이 상기 세그먼트 요청과 연관된 상기 세그먼트의 초기 부분 외측에 있게 하는 동작들을 수행하게 하도록 구성되는,
    비-일시적 프로세서-판독가능 저장 매체.
  63. 제 62 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 서버 프로세서로 하여금, 상기 세그먼트 요청과 연관된 상기 세그먼트의 초기 부분이 상기 세그먼트의 제 1 무비 프레그먼트 헤더이게 하는 동작들을 수행하게 하도록 구성되는,
    비-일시적 프로세서-판독가능 저장 매체.
  64. 제 55 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 서버 프로세서로 하여금, 상기 하나 또는 그 초과의 액세스 포지션들이, 상기 세그먼트 요청과 연관된 세그먼트를 설명하는 FDT(File Delivery Table)에서 표시되게 하는 동작들을 수행하게 하도록 구성되는,
    비-일시적 프로세서-판독가능 저장 매체.
  65. 제 64 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 서버 프로세서로 하여금, 상기 하나 또는 그 초과의 액세스 포지션들이 상기 FDT에서 하나 또는 그 초과의 쉼표-구분 바이트 포지션들에 의해 표시되게 하는 동작들을 수행하게 하도록 구성되는,
    비-일시적 프로세서-판독가능 저장 매체.
  66. 제 55 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 서버 프로세서로 하여금 동작들을 수행하게 하도록 구성되며, 상기 동작들은,
    상기 클라이언트가 불완전 세그먼트를 사용할 수 있다는 결정에 대한 응답으로, 상기 세그먼트 요청과 연관된 어떠한 바이트들도 이용가능하지 않은지 여부를 결정하는 동작; 및
    상기 세그먼트 요청과 연관된 어떠한 바이트들도 이용가능하지 않다는 결정에 대한 응답으로, 상기 클라이언트에 에러 메시지를 전송하는 동작을 더 포함하고, 그리고
    상기 저장된 프로세서-실행가능 명령들은, 서버 프로세서로 하여금, 상기 클라이언트가 불완전 세그먼트를 사용할 수 있다는 결정에 대한 응답으로, 응답 메시지에서 불완전 세그먼트를 상기 클라이언트에 전송하는 동작 ― 상기 응답 메시지는, 상기 응답 메시지가 상기 불완전 세그먼트를 포함한다는 표시 및 상기 불완전 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들의 표시를 포함함 ― 이, 상기 클라이언트가 불완전 세그먼트를 사용할 수 있다는 결정 및 상기 세그먼트 요청과 연관된 바이트가 이용가능하다는 결정에 대한 응답으로, 응답 메시지에서 불완전 세그먼트를 상기 클라이언트에 전송하는 동작 ― 상기 응답 메시지는, 상기 응답 메시지가 상기 불완전 세그먼트를 포함한다는 표시 및 상기 불완전 세그먼트에 대한 하나 또는 그 초과의 액세스 포지션들의 표시를 포함함 ― 을 포함하게 하는 동작들을 수행하게 하도록 구성되는,
    비-일시적 프로세서-판독가능 저장 매체.
  67. 제 66 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 서버 프로세서로 하여금, 상기 세그먼트 요청과 연관된 어떠한 바이트들도 이용가능하지 않다는 것을 상기 에러 메시지가 표시하게 하는 동작들을 수행하게 하도록 구성되는,
    비-일시적 프로세서-판독가능 저장 매체.
  68. 제 67 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 서버 프로세서로 하여금, 상기 에러 메시지가 416 상태 코드를 포함하게 하는 동작들을 수행하게 하도록 구성되는,
    비-일시적 프로세서-판독가능 저장 매체.
  69. 제 55 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 서버 프로세서로 하여금, 상기 클라이언트가 DASH 클라이언트이게 하는 동작들을 수행하게 하도록 구성되는,
    비-일시적 프로세서-판독가능 저장 매체.
  70. 서버 프로세서로 하여금 동작들을 수행하게 하도록 구성되는 저장된 프로세서-실행가능 명령들을 갖는 비-일시적 프로세서-판독가능 저장 매체로서,
    상기 동작들은,
    미디어 파일의 불완전 버전 및 상기 미디어 파일의 불완전 버전에 대한 하나 또는 그 초과의 액세스 포지션들을 표시하는 확장 헤더를 포함하는 메시지를 클라이언트에 전송하는 동작을 포함하고,
    상기 하나 또는 그 초과의 액세스 포지션들은, 상기 미디어 파일의 불완전 버전을 디코딩하기 위해 파싱을 시작할, 상기 미디어 파일의 불완전 버전 내의 하나 또는 그 초과의 포인트들을 식별하는,
    비-일시적 프로세서-판독가능 저장 매체.
  71. 제 70 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 서버 프로세서로 하여금, 상기 확장 헤더가 추가로, 상기 미디어 파일의 불완전 버전에 포함된 요청된 미디어 파일 내의 바이트 범위를 표시하게 하는 동작들을 수행하게 하도록 구성되는,
    비-일시적 프로세서-판독가능 저장 매체.
  72. 제 70 항에 있어서,
    상기 저장된 프로세서-실행가능 명령들은, 상기 서버 프로세서로 하여금, 상기 클라이언트가 DASH 클라이언트이게 하는 동작들을 수행하게 하도록 구성되는,
    비-일시적 프로세서-판독가능 저장 매체.
KR1020177024415A 2015-03-02 2016-02-29 부분 세그먼트에 대한 표시 KR102434958B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201562126842P 2015-03-02 2015-03-02
US62/126,842 2015-03-02
US201562204505P 2015-08-13 2015-08-13
US62/204,505 2015-08-13
US15/054,214 2016-02-26
US15/054,214 US10412138B2 (en) 2015-03-02 2016-02-26 Indication for partial segment
PCT/US2016/020092 WO2016140918A1 (en) 2015-03-02 2016-02-29 Indication for partial segment

Publications (2)

Publication Number Publication Date
KR20170124551A true KR20170124551A (ko) 2017-11-10
KR102434958B1 KR102434958B1 (ko) 2022-08-19

Family

ID=55527675

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177024415A KR102434958B1 (ko) 2015-03-02 2016-02-29 부분 세그먼트에 대한 표시

Country Status (8)

Country Link
US (1) US10412138B2 (ko)
EP (1) EP3266183B1 (ko)
JP (1) JP6734291B2 (ko)
KR (1) KR102434958B1 (ko)
CN (2) CN114760281A (ko)
AU (1) AU2016226411B2 (ko)
BR (1) BR112017018939B1 (ko)
WO (1) WO2016140918A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10749930B2 (en) 2015-03-02 2020-08-18 Qualcomm Incorporated Indication for partial segment
US10659507B2 (en) 2015-03-02 2020-05-19 Qualcomm Incorporated Indication for partial segment
WO2020037607A1 (zh) * 2018-08-23 2020-02-27 华为技术有限公司 一种传输数据的方法和装置
US10877825B2 (en) * 2018-10-04 2020-12-29 Oracle International Corporation System for offline object based storage and mocking of rest responses
EP3771220A1 (en) * 2019-07-24 2021-01-27 Nagravision S.A. Watermarking video fragments into two or more variants

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130262567A1 (en) * 2012-03-30 2013-10-03 Qualcomm Incorporated Responding to hypertext transfer protocol (http) requests

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050102371A1 (en) 2003-11-07 2005-05-12 Emre Aksu Streaming from a server to a client
US20050144278A1 (en) 2003-12-12 2005-06-30 Valeri Atamaniouk System and method for multipart response optimization
US8219711B2 (en) 2008-11-24 2012-07-10 Juniper Networks, Inc. Dynamic variable rate media delivery system
US9060187B2 (en) 2008-12-22 2015-06-16 Netflix, Inc. Bit rate stream switching
CN102301679A (zh) * 2009-01-20 2011-12-28 Rgb网络有限公司 用于拼接媒体文件的系统和方法
US8909806B2 (en) 2009-03-16 2014-12-09 Microsoft Corporation Delivering cacheable streaming media presentations
WO2011070552A1 (en) * 2009-12-11 2011-06-16 Nokia Corporation Apparatus and methods for describing and timing representations in streaming media files
US9049497B2 (en) 2010-06-29 2015-06-02 Qualcomm Incorporated Signaling random access points for streaming video data
EP2596633B1 (en) 2010-07-20 2016-11-23 Nokia Technologies Oy A media streaming apparatus
US9456015B2 (en) 2010-08-10 2016-09-27 Qualcomm Incorporated Representation groups for network streaming of coded multimedia data
JP5798451B2 (ja) * 2010-12-16 2015-10-21 キヤノン株式会社 情報処理装置およびその方法
US9026671B2 (en) * 2011-04-05 2015-05-05 Qualcomm Incorporated IP broadcast streaming services distribution using file delivery methods
US9042449B2 (en) 2011-09-29 2015-05-26 Avvasi Inc. Systems and methods for dynamic transcoding of indexed media file formats
JP5882683B2 (ja) 2011-11-02 2016-03-09 キヤノン株式会社 情報処理装置およびその方法
US9294226B2 (en) * 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery
JP6348251B2 (ja) * 2012-09-13 2018-06-27 サターン ライセンシング エルエルシーSaturn Licensing LLC 端末装置、受信方法、およびプログラム
US9235636B2 (en) 2012-12-20 2016-01-12 Dropbox, Inc. Presenting data in response to an incomplete query
US9521179B2 (en) 2014-07-16 2016-12-13 Verizon Patent And Licensing Inc. Validation of live media stream based on predetermined standards
US10187680B2 (en) 2014-11-11 2019-01-22 Cisco Technology, Inc. Adaptive bit rate system architectures using named domain networking
US10659507B2 (en) 2015-03-02 2020-05-19 Qualcomm Incorporated Indication for partial segment
US10749930B2 (en) 2015-03-02 2020-08-18 Qualcomm Incorporated Indication for partial segment
US20170068992A1 (en) 2015-09-04 2017-03-09 Yahoo! Inc. Multi-source content blending

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130262567A1 (en) * 2012-03-30 2013-10-03 Qualcomm Incorporated Responding to hypertext transfer protocol (http) requests

Also Published As

Publication number Publication date
BR112017018939B1 (pt) 2024-02-06
US20160261664A1 (en) 2016-09-08
EP3266183B1 (en) 2020-11-25
KR102434958B1 (ko) 2022-08-19
CN114760281A (zh) 2022-07-15
US10412138B2 (en) 2019-09-10
AU2016226411A1 (en) 2017-08-10
AU2016226411B2 (en) 2019-11-07
CN107431699A (zh) 2017-12-01
BR112017018939A2 (pt) 2018-05-15
JP6734291B2 (ja) 2020-08-05
EP3266183A1 (en) 2018-01-10
WO2016140918A1 (en) 2016-09-09
JP2018514108A (ja) 2018-05-31

Similar Documents

Publication Publication Date Title
KR101874729B1 (ko) 멀티캐스트 방송 멀티미디어 서비스-어시스티드 콘텐츠 분배
JP6655093B2 (ja) 部分的セグメント用の表示
KR102434958B1 (ko) 부분 세그먼트에 대한 표시
US20130262567A1 (en) Responding to hypertext transfer protocol (http) requests
US8824676B2 (en) Streaming video to cellular phones
KR102446256B1 (ko) 부분 세그먼트에 대한 표시
US20160248829A1 (en) Availability Start Time Adjustment By Device For DASH Over Broadcast
KR102117116B1 (ko) 바이트-범위 파일 복구에 대해 어떤 버전 정보를 사용할지의 시그널링

Legal Events

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