KR20140130218A - 무선 디스플레이 시스템에서 소스 디바이스에서의 프레임 캡쳐 및 버퍼링 - Google Patents

무선 디스플레이 시스템에서 소스 디바이스에서의 프레임 캡쳐 및 버퍼링 Download PDF

Info

Publication number
KR20140130218A
KR20140130218A KR1020147027258A KR20147027258A KR20140130218A KR 20140130218 A KR20140130218 A KR 20140130218A KR 1020147027258 A KR1020147027258 A KR 1020147027258A KR 20147027258 A KR20147027258 A KR 20147027258A KR 20140130218 A KR20140130218 A KR 20140130218A
Authority
KR
South Korea
Prior art keywords
source device
frame
frame updates
buffers
processing pipeline
Prior art date
Application number
KR1020147027258A
Other languages
English (en)
Inventor
시아오동 왕
파와드 샤우카트
비자야라크쉬미 알. 라빈드란
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20140130218A publication Critical patent/KR20140130218A/ko

Links

Images

Classifications

    • 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4405Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video stream decryption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • 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
    • 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/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4305Synchronising client clock from received content stream, e.g. locking decoder clock with encoder clock, extraction of the PCR packets
    • 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/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
    • H04N21/43072Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen of multiple content streams on the same device
    • 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/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • H04N21/4363Adapting the video stream to a specific local network, e.g. a Bluetooth® network
    • H04N21/43637Adapting the video stream to a specific local network, e.g. a Bluetooth® network involving a wireless protocol, e.g. Bluetooth, RF or wireless LAN [IEEE 802.11]
    • 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/16Use of wireless transmission of display information

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

본 개시물은 무선 디스플레이(WD) 시스템에서 사용자 경험을 개선시키기 위한 기술들을 설명한다. WD 시스템은 미디어 데이터를 하나 또는 그 초과의 싱크 디바이스들에 제공하는 소스 디바이스를 포함한다. 기술들은, 싱크 디바이스들에서의 비디오 재생 품질을 개선시키면서, WD 시스템에서 종단 간 지연을 감소시키는 것에 관한 것이다. 더욱 구체적으로, 기술들은 소스 디바이스에서의 낮은 지연 스크린 캡쳐 및 버퍼링을 포함한다. 예컨대, 소스 디바이스의 프로세싱 파이프라인은, 지연을 감소시키기 위해, 프로세싱 단계들 사이에 최소-크기 버퍼들을 포함하도록 구성될 수 있다. 기술들은, 미디어 데이터로부터 캡쳐된 가장 최신 프레임 업데이트를 최소-크기 버퍼들에 버퍼링하는 것, 그리고 최소-크기 버퍼들이 가득 찰 때, 더 오래된 프레임 업데이트들을 드롭하는 것을 포함한다. 부가하여, 프로세싱 파이프라인은, 프로세싱을 위해 버퍼들로부터 프레임 업데이트들을 리트리빙하기 위해 하드웨어 가속을 사용하도록 구성될 수 있다.

Description

무선 디스플레이 시스템에서 소스 디바이스에서의 프레임 캡쳐 및 버퍼링{FRAME CAPTURE AND BUFFERING AT SOURCE DEVICE IN WIRELESS DISPLAY SYSTEM}
본 출원은, 2012년 2월 28일자로 출원된 미국 가출원 번호 제 61/604,086호; 2012년 2월 28일자로 출원된 미국 가출원 번호 제 61/604,087호; 2012년 2월 28일자로 출원된 미국 가출원 번호 제 61/604,090호; 및 2012년 2월 28일자로 출원된 미국 가출원 번호 제 61/604,094호를 우선권으로 주장하며, 상기 가출원들 각각의 전체 콘텐츠는 본원에 인용에 의해 그 전체가 통합된다.
본 개시물은 무선 소스 디바이스와 무선 싱크 디바이스 사이에 데이터를 전송하는 것에 관한 것이다.
무선 디스플레이(WD: Wireless Display) 시스템들은 소스 디바이스와 하나 또는 그 초과의 싱크 디바이스들을 포함한다. 소스 디바이스와 싱크 디바이스들 각각은 무선 통신 능력들을 갖는 유선 디바이스들 또는 모바일 디바이스들 중 어느 쪽일 수도 있다. 예컨대, 모바일 디바이스들로서, 소스 디바이스 및 싱크 디바이스들 중 하나 또는 그 초과는 모바일 전화기들, 태블릿 컴퓨터들, 랩톱 컴퓨터들, 무선 통신 카드들을 갖는 휴대용 컴퓨터들, PDA(personal disital assistant)들, 무선 게임 디바이스들, 휴대용 미디어 플레이어들, 또는 무선 통신 능력들을 갖는 다른 플래시 메모리 디바이스들을 포함할 수 있다. 또한, 모바일 디바이스들은 소위 "스마트" 폰들 및 "스마트" 패드들 또는 태블릿들, 또는 다른 타입들의 무선 통신 디바이스들을 포함할 수 있다. 예컨대, 유선 디바이스들로서, 소스 디바이스 및 싱크 디바이스들 중 하나 또는 그 초과는, 무선 통신 능력들을 포함하는 텔레비전들, 데스크톱 컴퓨터들, 모니터들, 프로젝터들 등등을 포함할 수 있다.
소스 디바이스는 미디어 데이터, 예컨대 오디오 및/또는 비디오 데이터를, 특정 통신 세션에 참여하는 싱크 디바이스들 중 하나 또는 그 초과에 전송한다. 미디어 데이터는 소스 디바이스의 로컬 디스플레이에서 그리고 싱크 디바이스들의 디스플레이들 각각에서 둘 다에서 재생(playback)될 수 있다. 더욱 구체적으로는, 참여하는 싱크 디바이스들 각각은 수신된 미디어 데이터를 자신의 디스플레이 및 오디오 장비 상에서 렌더링한다. 몇몇 경우들에서, 싱크 디바이스의 사용자는 사용자 입력들, 예컨대 터치 입력들 및 원격 제어 입력들을 싱크 디바이스에 적용할 수 있다. WD 시스템에서, 사용자 입력들은 싱크 디바이스로부터 소스 디바이스로 전송된다. 소스 디바이스는, 싱크 디바이스로부터의 수신된 사용자 입력들을 프로세싱하고, 사용자 입력들의 효과를, 싱크 디바이스에 전송되는 후속 미디어 데이터 상에 적용한다.
일반적으로, 본 개시물은 무선 디스플레이(WD) 시스템에서 사용자 경험을 개선시키기 위한 기술들을 설명한다. WD 시스템은, 미디어 데이터, 예컨대 오디오 및/또는 비디오 데이터를, 재생을 위해 하나 또는 그 초과의 싱크 디바이스들에 제공하는 소스 디바이스를 포함한다. 기술들은, 싱크 디바이스들에서의 비디오 재생 품질(즉, 평활도)을 개선시키면서, 소스 디바이스와 싱크 디바이스들 사이의 미디어 데이터의 종단 간 지연을 감소시키는 것에 관한 것이다.
더욱 구체적으로, 본 개시물의 기술들은 WD 시스템의 소스 디바이스에서의 낮은 지연 스크린 캡쳐 및 버퍼링을 포함한다. 예컨대, WD 시스템에서 통신 세션을 설정할 때, 지연을 감소시키기 위해 소스 디바이스의 프로세싱 파이프라인은 프로세싱 단계들 사이에 최소-크기 버퍼들을 포함하도록 구성될 수 있다. 기술들은, 적어도 미디어 데이터로부터 캡쳐된 가장 최신 프레임 업데이트를 최소-크기 버퍼들에 버퍼링하는 것, 그리고 최소-크기 버퍼들이 가득 찰 때 더 오래된 프레임 업데이트들을 드롭(drop)하는 것을 포함한다. 부가하여, 프로세싱 파이프라인은, 소스 디바이스의 파이프라인 프로세싱에서의 프로세싱을 위해, 버퍼들로부터 프레임 업데이트들을 리트리빙하기 위해 하드웨어 가속을 사용하도록 구성될 수 있다. 하드웨어 가속을 사용하는 것은, 프레임 레이트를 증가시키고 지연을 감소시키기 위해, 소스 디바이스의 중앙 프로세싱 유닛(CPU) 상의 프로세싱 로드를 감소시킬 수 있다. 또한, 기술들은, WD 시스템에서 지연을 추가로 감소시키기 위해, 싱크 디바이스들에 의한 시기적절한 수신을 보장하기 위해 소스 디바이스로부터 인코딩된 프레임 업데이트들의 재전송(즉, 중복된 푸쉬)을 포함한다.
일 예에서, 본 개시물은, WD 시스템에서 하나 또는 그 초과의 싱크 디바이스들과의 통신 세션을 소스 디바이스에서 설정하는 단계, 상기 소스 디바이스에서 미디어 데이터의 프레임 업데이트들을 캡쳐하는 단계, 적어도 캡쳐된 프레임 업데이트들 중 가장 최신 프레임 업데이트를, 상기 소스 디바이스의 프로세싱 파이프라인에 포함된 최소-크기 버퍼들에 버퍼링하는 단계, 하드웨어 가속을 이용하여, 상기 최소-크기 버퍼들에서 상기 프레임 업데이트들을 리트리빙하는 단계, 및 상기 하나 또는 그 초과의 싱크 디바이스들로의 송신을 위해 상기 프로세싱 파이프라인을 이용하여 상기 최소-크기 버퍼들로부터 리트리빙된 상기 프레임 업데이트들을 프로세싱하는 단계를 포함하는 방법에 관한 것이다.
다른 예에서, 본 개시물은, WD 시스템에서 하나 또는 그 초과의 싱크 디바이스들과의 통신 세션을 소스 디바이스에서 설정하고, 미디어 데이터의 프레임 업데이트들을 캡쳐하고, 적어도 캡쳐된 프레임 업데이트들 중 가장 최신 프레임 업데이트를, 프로세싱 파이프라인에 포함된 최소-크기 버퍼들에 버퍼링하고, 그리고 상기 하나 또는 그 초과의 싱크 디바이스들로의 송신을 위해 상기 최소-크기 버퍼들로부터의 상기 프레임 업데이트들을 프로세싱하도록 구성된 하나 또는 그 초과의 프로세싱 유닛들을 포함하는 상기 프로세싱 파이프라인, 및 상기 프로세싱 파이프라인에 의한 프로세싱을 위해 상기 최소-크기 버퍼들로부터 상기 프레임 업데이트들을 리트리빙하도록 구성된 하드웨어 가속기를 포함하는 소스 디바이스에 관한 것이다.
추가적인 예에서, 본 개시물은, WD 시스템에서 하나 또는 그 초과의 싱크 디바이스들과의 통신 세션을 소스 디바이스에서 설정하기 위한 수단, 미디어 데이터의 프레임 업데이트들을 캡쳐하기 위한 수단, 적어도 캡쳐된 프레임 업데이트들 중 가장 최신 프레임 업데이트를, 상기 소스 디바이스의 프로세싱 파이프라인에 포함된 최소-크기 버퍼들에 버퍼링하기 위한 수단, 하드웨어 가속을 이용하여, 상기 최소-크기 버퍼들로부터 상기 프레임 업데이트들을 리트리빙하기 위한 수단, 및 상기 하나 또는 그 초과의 싱크 디바이스들로의 송신을 위해 상기 프로세싱 파이프라인을 이용하여 상기 최소-크기 버퍼들로부터 리트리빙된 상기 프레임 업데이트들을 프로세싱하기 위한 수단을 포함하는 소스 디바이스에 관한 것이다.
다른 예에서, 본 개시물은, 소스 디바이스에서 실행될 때, 프로그래밍 가능한 프로세서로 하여금, WD 시스템에서 하나 또는 그 초과의 싱크 디바이스들과의 통신 세션을 상기 소스 디바이스에서 설정하고, 상기 소스 디바이스에서 미디어 데이터의 프레임 업데이트들을 캡쳐하고, 적어도 캡쳐된 프레임 업데이트들 중 가장 최신 프레임 업데이트를, 상기 소스 디바이스의 프로세싱 파이프라인에 포함된 최소-크기 버퍼들에 버퍼링하고, 그리고 상기 하나 또는 그 초과의 싱크 디바이스들로의 송신을 위해 상기 프로세싱 파이프라인을 이용하여 상기 최소-크기 버퍼들로부터의 상기 프레임 업데이트들을 프로세싱하게 하는 ― 여기서, 상기 프레임 업데이트들은, 하드웨어 가속을 이용하여, 상기 최소-크기 버퍼들로부터 리트리빙됨 ― 명령들을 포함하는 컴퓨터-판독가능 매체에 관한 것이다.
본 개시물의 하나 또는 그 초과의 예들의 세부사항들은 동반된 도면들 및 아래의 설명에서 전개된다. 다른 피처들, 목적들, 및 장점들은 설명 및 도면들로부터 그리고 청구항들로부터 명백할 것이다.
도 1은 비디오 재생 품질을 개선시키면서, 소스 디바이스와 싱크 디바이스 사이에 종단 간 지연을 감소시키기 위해 본 개시물의 기술들을 지원할 수 있는 상기 소스 디바이스 및 상기 싱크 디바이스를 포함하는 무선 디스플레이(WD) 시스템의 예를 예시하는 블록도이다.
도 2는 본 개시물의 기술들을 구현할 수 있는 WD 시스템에서 소스 디바이스의 예를 예시하는 블록도이다.
도 3은 본 개시물의 기술들을 구현할 수 있는 WD 시스템에서 싱크 디바이스의 예를 예시하는 블록도이다.
도 4는 본 개시물의 기술들을 구현할 수 있는 송신기 시스템 및 수신기 시스템을 예시하는 블록도이다.
도 5는 소스 디바이스의 프로세싱 파이프라인에서 지연을 감소시키기 위해 본 개시물의 기술들을 지원할 수 있는 소스 디바이스의 예를 예시하는 블록도이다.
도 6은 싱크 디바이스의 프로세싱 파이프라인에서 지연을 감소시키고 싱크 디바이스에서의 비디오 재생을 개선시키기 위해 본 개시물의 기술들을 지원할 수 있는 싱크 디바이스의 예를 예시하는 블록도이다.
도 7은 싱크 디바이스에서 획득된 사용자 입력 데이터 및/또는 피드백 데이터를 소스 디바이스에 전달하기 위해 사용될 수 있는 예시적 데이터 패킷을 예시하는 개념적 도면이다.
도 8은 프로세싱 파이프라인에서 미디어 데이터의 낮은-지연 프레임 캡쳐 및 버퍼링을 지원할 수 있는 소스 디바이스의 예시적 동작을 예시하는 흐름차트이다.
도 9는 프로세싱 파이프라인에서 맞춤화된 비디오 재생을 지원할 수 있는 싱크 디바이스의 예시적 동작을 예시하는 흐름차트이다.
도 10은 프로세싱 파이프라인에서 미디어 데이터 애플리케이션 인지에 기초하여 맞춤화된 버퍼링을 지원할 수 있는 싱크 디바이스의 예시적 동작을 예시하는 흐름차트이다.
11은 WD 시스템에서 오디오 데이터의 우선순위화된 전송을 지원할 수 있는 소스 디바이스 및 싱크 디바이스의 예시적 동작을 예시하는 흐름차트이다.
무선 디스플레이(WD) 시스템에서 사용자 경험을 개선시키기 위한 기술들이 본 개시물에서 설명된다. WD 시스템은 미디어 데이터, 예컨대 오디오 및/또는 비디오 데이터를, 재생을 위해 하나 또는 그 초과의 싱크 디바이스들에 제공하는 소스 디바이스를 포함한다. 기술들은, 싱크 디바이스들에서의 비디오 재생 품질(즉, 평활도)을 개선시키면서, 소스 디바이스와 싱크 디바이스들 사이의 미디어 데이터의 종단 간 지연을 감소시키는 것에 관한 것이다.
일 예에서, 기술들은 WD 시스템의 소스 디바이스에서의 낮은 지연 스크린 캡쳐 및 버퍼링을 포함한다. 예컨대, WD 시스템에서 통신 세션을 설정할 때, 파이프라인 관리자는, 지연을 감소시키기 위해, 프로세싱 단계들 사이에 최소-크기 버퍼들을 포함하도록 소스 디바이스의 프로세싱 파이프라인을 구성할 수 있다. 그런 다음, 소스 디바이스는, 적어도 미디어 데이터의 가장 최신 프레임 업데이트를 최소-크기 버퍼들에 버퍼링하고, 최소-크기 버퍼들이 가득 찰 때 더 오래된 프레임 업데이트들을 드롭한다. 부가하여, 프로세싱 파이프라인은, 소스 디바이스의 파이프라인 프로세싱을 이용한 프로세싱을 위해, 버퍼들로부터 프레임 업데이트들을 리트리빙하기 위해 하드웨어 가속을 사용하도록 구성될 수 있다. 하드웨어 가속을 사용하는 것은, 프레임 레이트를 증가시키고 지연을 감소시키기 위해, 소스 디바이스의 중앙 프로세싱 유닛(CPU) 상의 프로세싱 로드를 감소시킬 수 있다. 또한, 소스 디바이스는, WD 시스템에서 지연을 추가로 감소시키기 위해, 싱크 디바이스들에 의한 시기적절한 수신을 보장하기 위해 인코딩된 프레임 업데이트들을 재전송(즉, 중복된 푸쉬를 수행)할 수 있다.
다른 예에서, 기술들은, 소스 디바이스로부터 수신된 미디어 데이터 타입에 기초하여 WD 시스템의 싱크 디바이스들에서의 맞춤화된 재생을 포함한다. 미디어 데이터가 비디오 데이터만을 포함하고 오디오 데이터를 포함하지 않는다면, 싱크 디바이스의 프로세싱 파이프라인에 포함된 렌더러는 비디오 데이터의 가속된 렌더링을 수행하도록 구성된다. 예컨대, 미디어 데이터가 오디오 데이터를 포함하지 않음을 검출할 때, 파이프라인 관리자는, 싱크 디바이스의 프로세싱 파이프라인에 포함된 렌더러에서의 동기화를 디스에이블링하여, 존재하지 않는 오디오 데이터와 동기화하기를 대기하는 것 없이, 렌더러가 비디오 데이터를 렌더링하는 것을 인에이블링할 수 있다. 다른 예로서, 미디어 데이터가 비디오 데이터 및 오디오 데이터 둘 다를 포함함을 검출할 때, 파이프라인 관리자는 오디오 렌더링 스타트-업 타이머를 감소시킬 수 있고, 그래서 렌더러는 감소된 스타트-업 타이머에 따라 동기화된 오디오 및 비디오 데이터를 렌더링할 수 있다. 부가하여, 파이프라인 관리자는, 셋업 시간으로 인한 지연을 감소시키기 위하여, 통신 세션의 능력 협상 기간 동안에 교환된 스트림 헤더 정보에 기초하여, 소스 디바이스로부터 미디어 데이터를 수신하기에 앞서, 싱크 디바이스에서 프로세싱 파이프라인을 구성할 수 있다.
추가적인 예에서, 기술들은, 소스 디바이스로부터 수신된 미디어 데이터에 대한 애플리케이션 인지에 기초한, WD 시스템의 싱크 디바이스들에서의 맞춤화된 버퍼링을 포함한다. 싱크 디바이스는 미디어 데이터에 대한 애플리케이션 타입을 학습하고, 파이프라인 관리자는, 애플리케이션 타입에 대해 평활도와 지연 사이에 적절한 균형을 달성하기 위해, 싱크 디바이스의 프로세싱 파이프라인에 있는 버퍼들의 크기를 조정한다. 몇몇 경우들에서, 미디어 데이터에 대한 애플리케이션 타입은 소스 디바이스에서 검출될 수 있고, 싱크 디바이스는 소스 디바이스로부터 수신된 표시에 기초하여 애플리케이션 타입을 학습할 수 있다. 다른 경우들에서, 싱크 디바이스는, 애플리케이션 타입을 스스로 검출함으로써, 미디어 데이터에 대한 애플리케이션 타입을 학습할 수 있다. 예컨대, 미디어 데이터가, 재생의 품질 또는 평활도가 싱크 디바이스에서의 최고 우선순위이고 위에서 설명된 낮은 지연 기술들이 가시적 지터를 유발할 수 있는 비디오 재생 애플리케이션에 대한 것일 때, 비디오 재생 애플리케이션에서 미디어 데이터의 평활도를 증가시키기 위해 버퍼 크기는 증가된다. 그와는 반대로, 미디어 데이터가, 낮은 지연이 싱크 디바이스에서의 최고 우선순위인 사용자 인터페이스(UI) 애플리케이션 또는 게임 애플리케이션에 대한 것을 때, UI 또는 게임 애플리케이션에 대한 지연을 감소시키기 위해 버퍼 크기는 감소된다.
또한, 기술들은, WD 시스템에서 소스 디바이스와 싱크 디바이스들 사이에 비디오 데이터의 전송보다 오디오 데이터의 전송을 우선순위화하는 것을 포함한다. 오디오 패킷들 전부가 싱크 디바이스에 도달함을 보장하는 것이, 드롭된 패킷들을 수신하기를 대기하는 싱크 디바이스에서의 지연을 감소시키도록, 비디오 데이터 패킷들의 전송은 연관된 오디오 데이터 패킷들의 전송에 매인다. 파이프라인 관리자는, 소스 디바이스에서 비디오 파이프라인 경로보다 더 많은 버퍼링을 포함하도록 오디오 파이프라인 경로를 구성할 수 있다. 부가하여, 소스 디바이스에서의 무선 모뎀 소켓은, 비디오 파이프라인 경로에 대해서보다 오디오 파이프라인 경로에 대해 더 높은 우선순위 전송 큐를 제공할 수 있다. 부가적인 버퍼링은 더 적은 오디오 패킷들이 소스 디바이스에서 드롭될 것임을 보장한다. 더 높은 우선순위 전송 큐는, 비디오 파이프라인 경로에서 지연들 또는 스톨(stall)들을 방지하기 위해, 대응하는 비디오 패킷들 이전에, 오디오 패킷들이 소스 디바이스에서 전송을 위해 큐잉될 것임을 보장한다. 부가하여, 싱크 디바이스는, 통신 채널의 전송 조건들을 설명하는 피드백 정보를 소스 디바이스에 제공할 수 있고, 파이프라인 관리자는 피드백 정보에 기초하여 소스 디바이스의 프로세싱 파이프라인을 수정할 수 있다.
도 1은 비디오 재생 품질을 개선시키면서, 소스 디바이스(120)와 싱크 디바이스(160) 사이에 종단 간 지연을 감소시키기 위해 본 개시물의 기술들을 지원할 수 있는 상기 소스 디바이스(120) 및 상기 싱크 디바이스(160)를 포함하는 무선 디스플레이(WD) 시스템(100)의 예를 예시하는 블록도이다. 도 1에 도시된 바와 같이, WD 시스템(100)은 통신 채널(150)을 통해 싱크 디바이스(160)와 통신하는 소스 디바이스(120)를 포함한다.
소스 디바이스(120)는 오디오 및/또는 비디오(A/V) 미디어 데이터(121)를 저장하는 메모리, 디스플레이(122), 스피커(123), 오디오 및/또는 비디오(A/V) 인코더(124)(인코더(124)로 또한 지칭됨), 오디오 및/또는 비디오(A/V) 제어 모듈(125), 및 송신기/수신기(TX/RX) 유닛(126)을 포함할 수 있다. 싱크 디바이스(160)는 디스플레이(162), 스피커(163), 오디오 및/또는 비디오(A/V) 디코더(164)(디코더(164)로 또한 지칭됨), 송신기/수신기 유닛(166), 사용자 입력(UI) 디바이스(167), 및 사용자 입력 프로세싱 모듈(UIPM: user input processing module)(168)을 포함할 수 있다. 예시된 컴포넌트들은 단지 WD 시스템(100)에 대한 일 예시적 구성을 구성한다. 다른 구성들은, 예시된 것들보다 더 적은 컴포넌트들을 포함할 수 있거나 또는 예시된 것들 이외에 부가적인 컴포넌트들을 포함할 수 있다.
도 1의 예에서, 소스 디바이스(120)는 A/V 미디어 데이터(121)의 비디오 부분을 디스플레이(122) 상에 디스플레이할 수 있고, A/V 미디어 데이터(121)의 오디오 부분을 스피커(123) 상에 출력할 수 있다. A/V 미디어 데이터(121)는 소스 디바이스(120) 상에 로컬로 저장될 수 있거나, 파일 서버, 하드 드라이브, 외부 메모리, 블루-레이 디스크, DVD, 또는 다른 물리적 스토리지 매체와 같은 외부 스토리지 매체로부터 액세스될 수 있거나, 또는 인터넷과 같은 네트워크 연결을 통해 소스 디바이스(120)에 스트리밍될 수 있다. 몇몇 예들에서, A/V 미디어 데이터(121)는 소스 디바이스(120)의 카메라 및 마이크로폰을 통해 실시간으로 캡쳐될 수 있다. A/V 미디어 데이터(121)는 영화들, 텔레비전 쇼들, 또는 음악과 같은 멀티미디어 콘텐츠를 포함할 수 있지만, 소스 디바이스(120)에 의해 생성된 실시간 콘텐츠를 또한 포함할 수 있다. 그러한 실시간 콘텐츠는 예컨대, 소스 디바이스(120) 상에서 실행되는 애플리케이션들에 의해 생성될 수 있거나, 또는 예컨대 비디오 텔레포니 세션의 일부로서 캡쳐된 비디오 데이터일 수 있다. 몇몇 예들에서, 그러한 실시간 콘텐츠는 사용자가 선택하는데 이용가능한 사용자 입력 옵션들의 비디오 프레임을 포함할 수 있다. 몇몇 예들에서, A/V 미디어 데이터(121)는 상이한 타입들의 콘텐츠의 결합인 비디오 프레임들, 예컨대 비디오의 프레임 상에 겹쳐진 사용자 입력 옵션들을 갖는 영화 또는 TV 프로그램의 비디오 프레임을 포함할 수 있다.
디스플레이(122) 및 스피커(123)를 통해 로컬로 A/V 미디어 데이터(121)를 렌더링하는 것에 부가하여, 소스 디바이스(120)의 A/V 인코더(124)는 A/V 미디어 데이터(121)를 인코딩할 수 있고, 송신기/수신기 유닛(126)은 인코딩된 데이터를 통신 채널(150)을 경유해 싱크 디바이스(160)에 전송할 수 있다. 싱크 디바이스(160)의 송신기/수신기 유닛(166)은 인코딩된 데이터를 수신하고, A/V 디코더(164)는, 인코딩된 데이터를 디코딩하고, 디코딩된 데이터를 디스플레이(162) 및 스피커(163)를 통해 출력한다. 이러한 방식으로, 디스플레이(122) 및 스피커(123)에 의해 렌더링되고 있는 오디오 및 비디오 데이터는 디스플레이(162) 및 스피커(163)에 의해 동시에 렌더링될 수 있다. 오디오 데이터 및 비디오 데이터는 프레임들로 배열될 수 있고, 오디오 프레임들은, 렌더링될 때, 비디오 프레임들과 시간-동기화될 수 있다.
A/V 인코더(124) 및 A/V 디코더(164)는 임의의 개수의 오디오 및 비디오 압축 표준들, 예컨대 MPEG-4 파트 10 어드밴스드 비디오 코딩(AVC)으로 대안적으로 지칭되는 ITU-T H.264 표준, 또는 새롭게 나오는 HEVC(high efficiency video coding) 표준을 구현할 수 있다. 많은 다른 타입들의 사유 또는 표준화된 압축 기술들이 또한 사용될 수 있다. 일반적으로 말하면, A/V 디코더(164)는 A/V 인코더(124)의 상호 간의 코딩 동작들을 수행하도록 구성된다. 도 1에 도시되지 않았지만, 몇몇 양상들에서, A/V 인코더(124) 및 A/V 디코더(164)는 각각 오디오 인코더 및 디코더와 통합될 수 있고, 그리고 공통 데이터 스트림 또는 별개의 데이터 스트림들에 있는 오디오 및 비디오 둘 다의 인코딩을 처리하기 위해 적절한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및 소프트웨어를 포함할 수 있다.
A/V 인코더(124)는 또한, 위에서 설명된 바와 같은 비디오 압축 표준을 구현하는 것에 부가하여, 다른 인코딩 기능들을 수행할 수 있다. 예컨대, A/V 인코더(124)는, A/V 미디어 데이터(121)가 싱크 데이터(160)에 전송되기에 앞서, 다양한 타입들의 메타데이터를 A/V 미디어 데이터(121)에 부가할 수 있다. 몇몇 예들에서, A/V 미디어 데이터(121)는 인코딩된 형태로 소스 디바이스(120)에 저장 또는 수신될 수 있고, 따라서 A/V 인코더(124)에 의한 추가적인 압축을 요구하지 않을 수 있다.
도 1이 오디오 페이로드 데이터 및 비디오 페이로드 데이터를 별개로 운반하는 통신 채널(150)을 도시하지만, 몇몇 예들에서, 비디오 페이로드 데이터 및 오디오 페이로드 데이터가 공통 데이터 스트림의 일부일 수 있음이 이해될 것이다. 적용가능하다면, MUX-DEMUX 유닛들은 ITU H.223 다중화기 프로토콜, 또는 UDP(user datagram protocol)와 같은 다른 프로토콜들을 준수할 수 있다. A/V 인코더(124) 및 A/V 디코더(164) 각각은, 하나 또는 그 초과의 마이크로프로세서들, DSP(digital signal processor)들, ASIC(application specific integrated circuit)들, FPGA(field programmable gate array)들, 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 결합들로서 구현될 수 있다. A/V 인코더(124) 및 A/V 디코더(164)의 각각은 하나 또는 그 초과의 인코더들 또는 디코더들에 포함될 수 있고, 그 중 어느 쪽도 결합된 인코더/디코더(CODEC)의 일부로서 통합될 수 있다. 따라서, 소스 디바이스(120) 및 싱크 디바이스(160)의 각각은, 본 개시물의 기술들 중 하나 또는 그 초과를 실행하도록 구성된, 특별화된 머신들을 포함할 수 있다.
디스플레이(122) 및 디스플레이(162)는, CRT(cathode ray tube), LCD(liquid crystal display), 플라즈마 디스플레이, 발광 다이오드(LED) 디스플레이, 유기 발광 다이오드(OLED) 디스플레이, 또는 다른 타입의 디스플레이 디바이스와 같은 다양한 비디오 출력 디바이스들 중 임의의 것을 포함할 수 있다. 이러한 또는 다른 예들에서, 디스플레이들(122 및 162)은 각각, 방사 디스플레이들 또는 투과 디스플레이들일 수 있다. 디스플레이(122) 및 디스플레이(162)는 또한, 그들이 동시에 입력 디바이스들 및 디스플레이 디바이스들 둘 다가 되도록 하기 위해 터치 디스플레이들일 수 있다. 그러한 터치 디스플레이들은, 사용자가 사용자 입력을 각각의 디바이스에 제공하도록 허용하는 용량성, 저항성, 또는 다른 타입의 터치 패널일 수 있다.
스피커(123)는 헤드폰들, 단일-스피커 시스템, 멀티-스피커 시스템, 또는 서라운드 사운드 시스템과 같은 다양한 오디오 출력 디바이스들 중 임의의 것을 포함할 수 있다. 부가하여, 디스플레이(122) 및 스피커(123)가 소스 디바이스(120)의 일부로서 도시되고 디스플레이(162) 및 스피커(163)가 싱크 디바이스(160)의 일부로서 도시되지만, 소스 디바이스(120) 및 싱크 디바이스(160)는 사실은 디바이스들의 시스템일 수 있다. 일 예로서, 디스플레이(162)는 텔레비전일 수 있고, 스피커(163)는 서라운드 사운드 시스템일 수 있고, 디코더(164)는, 유선으로든 또는 무선으로든, 디스플레이(162) 및 스피커(163)에 연결된 외부 박스의 일부일 수 있다. 다른 예들에서, 싱크 디바이스(160)는 단일 디바이스, 예컨대 태블릿 컴퓨터 또는 스마트폰일 수 있다. 여전히 다른 경우들에서, 소스 디바이스(120) 및 싱크 디바이스(160)는 유사한 디바이스들인데, 예컨대 둘 다가 스마트폰들, 태블릿 컴퓨터들 등등이다. 이러한 경우, 하나의 디바이스가 소스로서 동작할 수 있고, 다른 디바이스가 싱크로서 동작할 수 있다. 이러한 롤(roll)들은 후속 통신 세션들에서 심지어 반전될 수 있다. 여전히 다른 경우들에서, 소스 디바이스는 모바일 디바이스, 예컨대 스마트폰, 랩톱 또는 태블릿 컴퓨터를 포함할 수 있고, 싱크 디바이스는 (예컨대, AC 전력 코드를 이용하는) 더욱 정적인 디바이스를 포함할 수 있으며, 상기의 경우 소스 디바이스는 싱크 디바이스를 통한 많은 대중에 대한 표현을 위해 오디오 및 비디오 데이터를 전달할 수 있다.
송신기/수신기 유닛(126) 및 송신기/수신기 유닛(166)은 각각, 다양한 믹서들, 필터들, 증폭기들 및 신호 변조를 위해 설계된 다른 컴포넌트들, 뿐만 아니라 하나 또는 그 초과의 안테나들 및 데이터를 송수신하기 위해 설계된 다른 컴포넌트들을 포함할 수 있다. 통신 채널(150)은 일반적으로, 소스 디바이스(120)로부터 싱크 디바이스(160)로 비디오 데이터를 전송하기 위한, 임의의 적절한 통신 매체 또는 상이한 통신 미디어의 집합을 표현한다. 통신 채널(150)은 보통, Wi-Fi, 블루투스 등등과 유사한 비교적 단거리 통신 채널이다. 그러나, 통신 채널(150)이 반드시 이 점에서 제한되지는 않으며, 임의의 무선 또는 유선 통신 매체, 예컨대 무선 주파수(RF) 스펙트럼 또는 하나 또는 그 초과의 물리적 송신 라인들, 또는 무선 및 유선 미디어의 임의의 결합을 포함할 수 있다. 다른 예들에서, 통신 채널(150)은 심지어 패킷-기반 네트워크, 예컨대 유선 또는 무선 로컬 영역 네트워크, 광역 네트워크 또는 인터넷과 같은 글로벌 네트워크의 일부를 형성할 수 있다. 부가하여, 통신 채널(150)은 피어-투-피어 링크를 생성하기 위해 소스 디바이스(120) 및 싱크 디바이스(160)에 의해 사용될 수 있다.
소스 디바이스(120) 및 싱크 디바이스(160)는, 예컨대 RTSP(Real-Time Streaming Protocol) 제어 메시지들을 이용한 능력 협상에 따라 통신 세션을 설정할 수 있다. 그런 다음, 소스 디바이스(120) 및 싱크 디바이스(160)는 IEEE 802.11 표준들 패밀리로부터의 표준과 같은 통신 프로토콜을 이용하여 통신 채널(150)을 경유해 통신할 수 있다. 소스 디바이스(120) 및 싱크 디바이스(160)는, 예컨대, WFD(Wi-Fi Direct) 표준에 따라 통신할 수 있고, 그래서 무선 액세스 포인트들 또는 소위 핫스폿들과 같은 중간체의 사용 없이, 소스 디바이스(120) 및 싱크 디바이스(160)는 서로 직접 통신한다. 소스 디바이스(120) 및 싱크 디바이스(160)는 또한, 네트워크 경합을 방지하거나 또는 감소시키기 위해, TDLS(tunneled direct link setup)를 설정할 수 있다. WFD 및 TDLS는 비교적 단거리 통신 세션들을 셋업하도록 의도된다. 시끄러운 또는 차단된 환경에서 디바이스들 사이의 거리가 훨씬 더 짧을 수 있지만, 예컨대 대략 35 미터 미만 또는 대략 20 미터 미만일 수 있지만, 이러한 상황에서 비교적 단거리는 예컨대 대략 70 미터 미만을 지칭할 수 있다.
본 개시물의 기술들은 때로는 WFD에 대하여 설명될 수 있지만, 이러한 기술들의 양상들이 또한 다른 통신 프로토콜들과 호환가능할 수 있음이 고려된다. 예로서 ― 그러나, 제한은 아님 ―, 소스 디바이스(120)와 싱크 디바이스 사이의 무선 통신은 OFDM(orthogonal frequency division multiplexing) 기술들을 활용할 수 있다. 이에 제한되지는 않지만 TDMA(time division multi access), FDMA(frequency division multi access), CDMA(code division multi access), 또는 OFDM, FDMA, TDMA 및/또는 CDMA의 임의의 결합을 포함하는 폭넓게 다양한 다른 무선 통신 기술들이 또한 사용될 수 있다.
소스 디바이스(120)로부터 수신된 데이터를 디코딩 및 렌더링하는 것에 부가하여, 싱크 디바이스(160)는 또한 사용자 입력 디바이스(167)로부터 사용자 입력들을 수신할 수 있다. 사용자 입력 디바이스(167)는, 예컨대, 키보드, 마우스, 트랙볼 또는 트랙 패드, 터치 스크린, 음성 커맨드 인식 모듈, 또는 임의의 다른 그러한 사용자 입력 디바이스일 수 있다. UIPM(168)은, 사용자 입력 디바이스(167)에 의해 수신된 사용자 입력 커맨드들을, 소스 디바이스(120)가 해석할 수 있는 데이터 패킷 구조로 포맷팅한다. 그러한 데이터 패킷들은 송신기/수신기(166)에 의해 통신 채널(150)을 경유해 소스 디바이스(120)에 전송된다. 송신기/수신기 유닛(126)은 데이터 패킷들을 수신하고, A/V 제어 모듈(125)은, 사용자 입력 디바이스(167)에 의해 수신된 사용자 입력 커맨드를 해석하기 위해 데이터 패킷들을 파싱(parsing)한다. 데이터 패킷에서 수신된 커맨드에 기초하여, A/V 제어 모듈(125)은 인코딩 및 제어되고 있는 콘텐츠를 변경할 수 있다. 이러한 방식으로, 싱크 디바이스(160)의 사용자는, 원격으로, 그리고 소스 디바이스(120)와 직접 상호작용하는 것 없이, 소스 디바이스(120)에 의해 전송되고 있는 오디오 페이로드 데이터 및 비디오 페이로드 데이터를 제어할 수 있다.
부가하여, 싱크 디바이스(160)의 사용자들은 소스 디바이스(120) 상의 애플리케이션들을 시작(launch) 및 제어할 수 있다. 예컨대, 싱크 디바이스(160)의 사용자는 소스 디바이스(120) 상에 저장된 사진 편집 애플리케이션을 시작할 수 있고, 소스 디바이스(120) 상에 로컬로 저장되는 사진을 편집하기 위해 상기 애플리케이션을 사용할 수 있다. 싱크 디바이스(160)는, 사실은 사진이 소스 디바이스(120) 상에서 편집되고 있지만, 사진이 싱크 디바이스(160) 상에서 로컬로 편집되고 있는 것처럼 보고 느끼는 사용자 경험을 사용자에게 제시할 수 있다. 그러한 구성을 사용하여, 디바이스 사용자는 여러 디바이스들과의 사용을 위해 하나의 디바이스의 능력들을 레버리징할 수 있다. 예컨대, 소스 디바이스(120)는 대용량의 메모리 및 고급 프로세싱 능력들을 갖는 스마트폰을 포함할 수 있다. 그러나, 영화를 볼 때, 사용자는 더 큰 디스플레이 스크린을 갖는 디바이스 상에서 상기 영화를 보기를 원할 수 있고, 상기의 경우 싱크 디바이스(160)는 태블릿 컴퓨터 또는 훨씬 더 큰 디스플레이 디바이스 또는 텔레비전일 수 있다. e-메일을 전송하거나 또는 e-메일에 응답하기를 원할 때, 사용자는 물리적 키보드를 갖는 디바이스를 사용하기를 원할 수 있고, 상기의 경우 싱크 디바이스(160)는 랩톱일 수 있다. 예들 둘 다에서, 심지어 사용자가 싱크 디바이스와 상호작용하고 있더라도, 프로세싱의 대부분은 여전히 소스 디바이스(120)에 의해 수행될 수 있다. 소스 디바이스 및 싱크 디바이스는, 임의의 주어진 세션에서 디바이스들의 능력들을 협상하거나 그리고/또는 식별함으로써, 양방향 상호작용들을 용이하게 할 수 있다.
몇몇 구성들에서, A/V 제어 모듈(125)은, 소스 디바이스(120)의 운영체제에 의해 실행되는 운영체제 프로세스를 포함할 수 있다. 그러나, 다른 구성들에서, A/V 제어 모듈(125)은 소스 디바이스(120) 상에서 실행되는 애플리케이션의 소프트웨어 프로세스를 포함할 수 있다. 그러한 구성에서, 사용자 입력 커맨드는 소프트웨어 프로세스에 의해 해석될 수 있는데, 그래서 소스 디바이스(120) 상에서 실행되는 운영체제와는 대조적으로 싱크 디바이스(160)의 사용자는 소스 디바이스(120) 상에서 실행되는 애플리케이션과 직접 상호작용하고 있다. 운영체제와는 대조적으로 애플리케이션과 직접 상호작용함으로써, 싱크 디바이스(160)의 사용자는 소스 디바이스(120)의 운영체제에 대해 네이티브(native)가 아닌 커맨드들의 라이브러리로의 액세스를 가질 수 있다. 부가하여, 애플리케이션과 직접 상호작용하는 것은, 커맨드들이 상이한 플랫폼들 상에서 실행되는 디바이스들에 의해 더욱 쉽게 전송 및 프로세싱되는 것을 인에이블링할 수 있다.
싱크 디바이스(160)에서 적용되는 사용자 입력들은 통신 채널(150)을 경유해 소스 디바이스(120)에 역으로 전송될 수 있다. 일 예에서, 싱크 디바이스(160)가 싱크 디바이스(160)에서 적용되는 사용자 입력들을 소스 디바이스(120)에 전송하는 것을 인에이블링하기 위해 사용자 인터페이스 백 채널(UIBC: user interface back channel)로 또한 지칭되는 역방향 채널 아키텍처가 구현될 수 있다. 역방향 채널 아키텍처는, 사용자 입력들을 전송하기 위한 상위 계층 메시지들, 그리고 싱크 디바이스(160) 및 소스 디바이스(120)에서의 사용자 인터페이스 능력들을 협상하기 위한 하위 계층 프레임들을 포함할 수 있다. UIBC는 싱크 디바이스(160)와 소스 디바이스(120) 사이에서 인터넷 프로토콜(IP) 전송 계층 위에 있을 수 있다. 이러한 방식으로, UIBC는 OSI(Open System Interconnection) 통신 모델에서 전송 계층 위에 있을 수 있다. 신뢰성 있는 송신 그리고 차례차례로 사용자 입력 데이터를 포함하는 데이터 패킷들의 전달을 촉진시키기 위해, UIBC는 TCP/IP(transmission control protocol/internet protocol) 또는 UDP(user datagram protocol)와 같은 다른 패킷-기반 통신 프로토콜들의 위에서 실행되도록 구성될 수 있다. UDP 및 TCP는 OSI 계층 아키텍처에서 병렬로 동작할 수 있다. TCP/IP는 싱크 디바이스(160) 및 소스 디바이스(120)가 패킷 손실의 경우에 재전송 기술들을 구현하는 것을 인에이블링할 수 있다.
UIBC는 클로스-플랫폼 사용자 입력 데이터를 포함하는 다양한 타입들의 사용자 입력 데이터를 전송하도록 설계될 수 있다. 예컨대, 소스 디바이스(120)가 iOS® 운영체제를 실행할 수 있는 반면에, 싱크 디바이스(160)는 Android® 또는 Windows®과 같은 다른 운영체제를 실행한다. 플랫폼과 관계없이, UIPM(168)은 수신된 사용자 입력을, A/V 제어 모듈(125)에 이해가능한 형태로 캡슐화할 수 있다. 소스 및 싱크 디바이스들이 상이한 플랫폼들 상에서 동작하는지와 관계없이 많은 상이한 타입들의 소스 및 싱크 디바이스들이 프로토콜을 활용하도록 허용하기 위하여, 다수의 상이한 타입들의 사용자 입력 포맷들이 UIBC에 의해 지원될 수 있다. 일반적 입력 포맷들이 정의될 수 있고, 플랫폼 특정 입력 포맷들이 둘 다가 지원될 수 있어, 따라서 사용자 입력이 UIBC에 의해 소스 디바이스(120)와 싱크 디바이스(160) 사이에서 통신될 수 있는 방식에 유연성이 제공된다.
본 개시물의 기술들은 WD 시스템(100)에서 사용자 경험을 개선시킬 수 있다. WD 시스템(100)의 사용자들에 대한 통상적인 사용-경우들은, 소스 디바이스(120) 상에서 실행되는 사용자 인터페이스 애플리케이션들을, 역방향 HID(human interface device) 피드백을 갖는 싱크 디바이스(160)의 더 큰 디스플레이 스크린 상에 디스플레이하는 것, 소스 디바이스(120) 상에서 실행되는 게임 애플리케이션들을 싱크 디바이스(160)에서 디스플레이하는 것, 그리고 소스 디바이스(120)에서 실행되는 비디오 재생 애플리케이션들을 싱크 디바이스(160)에서 디스플레이하는 것을 포함한다. 이러한 사용-경우들의 각각에 대해, 소스 디바이스(120)는 싱크 디바이스(160)의 사용자에 대한 디스플레이를 위해 전체 프레임 버퍼들의 콘텐츠들 및 프레임 업데이트들을 종단 간으로 싱크 디바이스(160)에 전송할 수 있다. 소스 디바이스(120)의 송신기/수신기(126)는 RTP(Real-time Transport Protocol)/UDP(User Datagram Protocol) 또는 TCP(Transmission Control Protocol)를 이용하여 소스 디바이스(160)의 송신기/수신기(166)에 인코딩된 비디오 프레임들을 전송할 수 있다.
WD 시스템(100)이 HDMI(High Definition Multimedia Interface) 또는 다른 타입들의 디스플레이 케이블들과 유사한 사용자 경험을 제공하기 위하여, WD 시스템(100)은 대략 80 밀리초(㎳) 미만의 종단 간 지연을 달성할 필요가 있다. 그러나, 비디오 재생 애플리케이션 사용-경우의 경우에, WD 시스템(100)은 또한, 너무 많은 부가적인 지연을 도입시키는 것 없이, 싱크 디바이스(160)에서의 비디오 재생에서 높은 품질(즉, 평활도)을 달성할 필요가 있다. 본 개시물은, 개선된 사용자 경험을 위해 위에서 설명된 지연 및 품질 필요들을 달성하기 위해, 개별적으로 또는 WD 시스템(100)에 결합하여 적용될 수 있는 여러 기술들을 설명한다.
본 개시물의 기술들에 따라, 프로세싱 파이프라인들은, 소스 디바이스(120) 및 싱크 디바이스(160) 둘 다에서, 싱크 디바이스(160)에서의 비디오 재생 품질을 개선시키면서, 소스 디바이스(120)와 싱크 디바이스(160) 사이에 전송되는 A/V 미디어 데이터(121)의 종단 간 지연을 감소시키도록 구성될 수 있다. 일 예에서, 기술들은 소스 디바이스(120)에서의 낮은 지연 스크린 캡쳐 및 버퍼링을 포함한다. 예컨대, WD 시스템(100)에서 통신 세션을 설정할 때, 파이프라인 관리자는, 지연을 감소시키기 위해, 프로세싱 단계들 사이에 적어도 A/V 미디어 데이터(121)의 가장 최신 프레임 업데이트를 유지할 수 있는 최소-크기 버퍼들을 포함하도록 소스 디바이스(120)의 프로세싱 파이프라인을 구성할 수 있다. 부가하여, 소스 디바이스(120)의 프로세싱 파이프라인은, 파이프라인 프로세싱을 이용한 프로세싱을 위해, 버퍼들로부터 프레임 업데이트들을 리트리빙하기 위해 하드웨어 가속을 사용하도록 구성될 수 있다.
다른 예에서, 기술들은 소스 디바이스(120)로부터 수신된 A/V 미디어 데이터(121)의 타입에 기초하여 싱크 디바이스(160)에서의 맞춤화된 재생을 포함한다. A/V 미디어 데이터(121)가 비디오 데이터만을 포함하고 오디오 데이터를 포함하지 않는다면, 싱크 디바이스(160)의 프로세싱 파이프라인에 포함된 렌더러는 비디오 데이터의 가속된 렌더링을 수행하도록 구성될 수 있다. A/V 미디어 데이터(121)가 비디오 데이터 및 오디오 데이터 둘 다를 포함한다면, 파이프라인 관리자는 오디오 렌더링 스타트-업 타이머를 감소시킬 수 있고, 그래서 렌더러는 감소된 스타트-업 타이머에 따라 동기화된 오디오 및 비디오 데이터를 렌더링할 수 있다. 부가하여, 파이프라인 관리자는, 셋업 시간으로 인한 지연을 감소시키기 위하여, 통신 세션의 능력 협상 기간 동안에 교환된 스트림 헤더 정보에 기초하여, 소스 디바이스(120)로부터 A/V 미디어 데이터(121)를 수신하기에 앞서, 싱크 디바이스(160)에서 프로세싱 파이프라인을 구성할 수 있다.
추가적인 예에서, 기술들은, 소스 디바이스(120)로부터 수신된 A/V 미디어 데이터(121)에 대한 애플리케이션 인지에 기초하여, 싱크 디바이스(160)에서의 맞춤화된 버퍼링을 포함한다. 싱크 디바이스(160)는 A/V 미디어 데이터(121)에 대한 애플리케이션 타입을 학습하고, 파이프라인 관리자는, 애플리케이션 타입에 대해 평활도와 지연 사이에 적절한 균형을 달성하기 위해, 싱크 디바이스(160)의 프로세싱 파이프라인에 있는 버퍼들의 크기를 조정한다. 예컨대, A/V 미디어 데이터(121)가 비디오 재생 애플리케이션에 대한 것일 때, 비디오 재생 애플리케이션에 대한 평활도를 증가시키기 위해 버퍼 크기는 증가된다. 그와는 반대로, A/V 미디어 데이터(121)가 사용자 인터페이스(UI) 애플리케이션 또는 게임 애플리케이션에 대한 것을 때, UI 또는 게임 애플리케이션에 대한 지연을 감소시키기 위해 버퍼 크기는 감소된다.
또한, 본 개시물의 기술들은, 소스 디바이스(120)와 싱크 디바이스(160) 사이에 비디오 데이터의 전송보다 오디오 데이터의 전송을 우선순위화하는 것을 포함할 수 있다. 오디오 패킷들 전부가 싱크 디바이스에 도달함을 보장하는 것이, 드롭된 패킷들을 수신하기를 대기하는 싱크 디바이스에서의 지연을 감소시키도록, 비디오 데이터 패킷들의 전송은 연관된 오디오 데이터 패킷들의 전송에 매인다. 파이프라인 관리자는, 소스 디바이스(120)에서 비디오 파이프라인 경로보다 더 많은 버퍼링을 포함하도록 오디오 파이프라인 경로를 구성할 수 있다. 부가하여, 소스 디바이스(120)에 있는 무선 모뎀 소켓은 비디오 파이프라인 경로에 대해서보다 오디오 파이프라인 경로에 대해 더 높은 우선순위 전송 큐를 제공할 수 있다. 부가하여, 싱크 디바이스(160)는 UIBC를 경유해 통신 채널(150)의 전송 조건들을 설명하는 피드백 정보를 소스 디바이스(120)에 제공할 수 있고, 파이프라인 관리자는 피드백 정보에 기초하여 소스 디바이스(120)의 프로세싱 파이프라인을 수정할 수 있다.
도 1의 예에서, 소스 디바이스(120)는 스마트폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 데스크톱 컴퓨터, Wi-Fi 인에이블링된 텔레비전, 또는 오디오 및 비디오 데이터를 전송할 수 있는 임의의 다른 디바이스를 포함할 수 있다. 싱크 디바이스(160)는 마찬가지로 스마트폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 데스크톱 컴퓨터, Wi-Fi 인에이블링된 텔레비전, 또는 오디오 및 비디오 데이터를 수신할 수 있고 사용자 입력 데이터를 수신할 수 있는 임의의 다른 디바이스를 포함할 수 있다. 몇몇 예들에서, 싱크 디바이스(160)는 디바이스들의 시스템을 포함할 수 있고, 그래서 디스플레이(162), 스피커(163), UI 디바이스(167), 및 A/V 인코더(164) 전부가 별개의 파트들이지만, 협력하는 디바이스(interoperative device)들이다. 소스 디바이스(120)는 마찬가지로 단일 디바이스가 아니라 디바이스들의 시스템일 수 있다.
본 개시물에서, 용어 소스 디바이스는 일반적으로, A/V 데이터를 전송하고 있는 디바이스를 지칭하는데 사용되고, 용어 싱크 디바이스는 일반적으로, 소스 디바이스로부터 A/V 데이터를 수신하고 있는 디바이스를 지칭하는데 사용된다. 많은 경우들에서, 소스 디바이스(120) 및 싱크 디바이스(160)는 유사한 또는 동일한 디바이스들일 수 있고, 이때 하나의 디바이스가 소스로서 동작하고, 다른 디바이스가 싱크로서 동작한다. 또한, 이러한 롤들은 상이한 통신 세션들에서 반전될 수 있다. 따라서, 하나의 통신 세션에 있는 싱크 디바이스가 후속 통신 세션에서 소스 디바이스가 될 수 있거나, 또는 그 반대일 수 있다.
몇몇 예들에서, WD 시스템(100)은, 싱크 디바이스(160)에 부가하여, 하나 또는 그 초과의 싱크 디바이스들을 포함할 수 있다. 싱크 디바이스(160)와 유사하게, 부가적인 싱크 디바이스들은 소스 디바이스(120)로부터 A/V 데이터를 수신할 수 있고, 설정된 UIBC를 경유해 사용자 커맨드들을 소스 디바이스(120)에 전송할 수 있다. 몇몇 구성들에서, 다수의 싱크 디바이스들은 서로 무관하게 동작할 수 있고, 소스 디바이스(120)에서 출력되는 A/V 데이터가 부가적인 싱크 디바이스들 중 하나 또는 그 초과 그리고 싱크 디바이스(160)에서 동시에 출력될 수 있다. 교대하는 구성들에서, 싱크 디바이스(160)는 일차 싱크 디바이스일 수 있고, 부가적인 싱크 디바이스들 중 하나 또는 그 초과는 이차 싱크 디바이스들일 수 있다. 그러한 예시적 구성에서, 싱크 디바이스(160), 그리고 부가적인 싱크 디바이스들 중 하나가 커플링될 수 있고, 부가적인 싱크 디바이스가 대응하는 오디오 데이터를 출력하는 동안 싱크 디바이스(160)는 비디오 데이터를 디스플레이할 수 있다. 부가하여, 몇몇 구성들에서, 부가적인 싱크 디바이스가 전송된 오디오 데이터를 출력하는 동안에만 싱크 디바이스(160)는 전송된 비디오 데이터를 출력할 수 있다.
도 2는 본 개시물의 기술들을 구현할 수 있는 WD 시스템에서 소스 디바이스(220)의 예를 예시하는 블록도이다. 소스 디바이스(220)는 도 1의 소스 디바이스(120)와 유사한 디바이스일 수 있고, 소스 디바이스(120)와 동일한 방식으로 동작할 수 있다. 소스 디바이스(220)는 로컬 디스플레이(222), 스피커들(223), 프로세서(231), 디스플레이 프로세서(235), 오디오 프로세서(236), 메모리(232), 전송 유닛(233), 및 무선 모뎀(234)을 포함한다. 도 2에 도시된 바와 같이, 소스 디바이스(220)는 전송, 스토리지, 및 디스플레이를 위해 A/V 미디어 데이터를 인코딩 및/또는 디코딩하는 하나 또는 그 초과의 프로세서들(즉, 프로세서(231), 디스플레이 프로세서(235) 및 오디오 프로세서(236))를 포함할 수 있다. A/V 미디어 데이터는 예컨대 메모리(232)에 저장될 수 있다. 메모리(232)는 전체 A/V 파일을 저장할 수 있거나, 또는 예컨대 다른 디바이스 또는 소스로부터 스트리밍되는 A/V 파일의 부분을 단순히 저장하는 더 작은 버퍼를 포함할 수 있다.
전송 유닛(233)은 네트워크 전송을 위해 인코딩된 A/V 미디어 데이터를 프로세싱할 수 있다. 예컨대, 인코딩된 A/V 미디어 데이터는 프로세서(231)에 의해 프로세싱될 수 있고, 네트워크를 가로지르는 통신을 위해 전송 유닛(233)에 의해 NAL(Network Access Layer) 유닛들로 캡슐화될 수 있다. NAL 유닛들은 무선 모뎀(234)에 의해 네트워크 연결을 통해 무선 싱크 디바이스에 전송될 수 있다. 무선 모뎀(234)은 예컨대 IEEE 802.11 표준들 패밀리 중 하나를 구현하도록 구성된 Wi-Fi 모뎀일 수 있다. 소스 디바이스(220)는 또한 A/V 미디어 데이터를 로컬로 프로세싱 및 디스플레이할 수 있다. 특히, 디스플레이 프로세서(235)는 로컬 디스플레이(222) 상에 디스플레이될 비디오 데이터를 프로세싱할 수 있고, 오디오 프로세서(236)는 스피커(223) 상에 출력을 위해 오디오 데이터를 프로세싱할 수 있다.
도 1의 소스 디바이스(120)를 참조하여 위에서 설명된 바와 같이, 소스 디바이스(220)는 싱크 디바이스로부터 사용자 입력 커맨드들을 수신할 수 있다. 예컨대, 소스 디바이스(220)의 무선 모뎀(234)은, 싱크 디바이스로부터 캡슐화된 사용자 입력 데이터 패킷들, 예컨대 NAL 유닛들을 수신할 수 있고, 캡슐화된 데이터 유닛들을, 캡슐화해제(decapsulation)를 위해 전송 유닛(233)에 전송할 수 있다. 전송 유닛(233)은 NAL 유닛들로부터 사용자 입력 데이터 패킷들을 추출할 수 있고, 프로세서(231)는 사용자 입력 커맨드들을 추출하기 위해 데이터 패킷들을 파싱할 수 있다. 사용자 입력 커맨드들에 기초하여, 프로세서(231)는 소스 디바이스(220)에 의한 A/V 미디어 데이터의 프로세싱을 수정한다. 다른 예들에서, 소스 디바이스(220)는 사용자 입력 유닛 또는 구동기(도 2에 도시되지 않음)를 포함할 수 있고, 상기 사용자 입력 유닛 또는 구동기는 전송 유닛(233)으로부터 사용자 입력 데이터 패킷들을 수신하고, 사용자 입력 커맨드들을 추출하기 위해 데이터 패킷들을 파싱하고, 그리고 사용자 입력 커맨드들에 기초하여 소스 디바이스(220)에 의한 A/V 미디어 데이터의 프로세싱을 수정하게 프로세서(231)에 지시한다.
도 2의 프로세서(231)는 일반적으로, 이에 제한되지는 않지만 하나 또는 그 초과의 DSP(digital signal processor)들, 일반 목적 마이크로프로세서들, ASIC(application specific integrated circuit)들, FPGA(field programmable logic array)들, 다른 등가 집적된 또는 이산의 로직 회로, 또는 이들의 어떤 결합을 포함하는 폭넓게 다양한 프로세서들 중 임의의 것을 표현한다. 도 2의 메모리(232)는, 이에 제한되지는 않지만, SDRAM(synchronous dynamic random access memory)와 같은 RAM(random access memory), ROM(read-only memory), NVRAM(non-volatile random access memory), EEPROM(electrically erasable programmable read-only memory), FLASH 메모리 등등을 포함하는 폭넓게 다양한 휘발성 또는 비-휘발성 메모리 중 임의의 것을 포함할 수 있다. 메모리(232)는 오디오/비디오 데이터, 뿐만 아니라 다른 종류들의 데이터를 저장하기 위한 컴퓨터-판독가능 스토리지 매체를 포함할 수 있다. 부가하여, 메모리(232)는 본 개시물에 설명되는 다양한 기술들을 수행하는 일부로서 프로세서(231)에 의해 실행되는 명령들 및 프로그램 코드를 저장할 수 있다.
본 개시물의 기술들은, WD 시스템에서 소스 디바이스(220) 및 하나 또는 그 초과의 싱크 디바이스들에서 사용자 경험을 개선시키기 위하여, 지연을 감소시키도록 소스 디바이스(220)의 프로세싱 파이프라인을 구성하는 것을 포함한다. 소스 디바이스(220)의 프로세싱 파이프라인은, 프로세서(231) 및/또는 전송 유닛(233)에 의해 실행되는 하나 또는 그 초과의 프로세싱 유닛들을 포함한다. 기술들은, 도 5에 예시된 소스 디바이스(520)의 프로세싱 파이프라인에 대하여 더욱 상세히 설명된다.
일 예에서, 소스 디바이스(220)의 프로세싱 파이프라인은 미디어 데이터의 낮은 지연 스크린 캡쳐 및 버퍼링을 제공하도록 수정될 수 있다. 더욱 구체적으로는, 소스 디바이스(220)의 프로세싱 파이프라인은, 지연을 감소시키기 위해, 프로세서(231) 내에서 프로세싱 단계들 사이에 최소-크기 버퍼들을 포함하도록 구성될 수 있다. 그런 다음, 소스 디바이스(220)는 적어도 미디어 데이터의 가장 최신 프레임 업데이트를 최소-크기 버퍼들에 버퍼링하고, 최소-크기 버퍼들이 가득 찰 때 더 오래된 프레임 업데이트들을 드롭한다.
또한, 소스 디바이스(220)의 프로세싱 파이프라인은, 프로세싱을 위해 버퍼들로부터 프레임 업데이트들을 리트리빙하기 위해 하드웨어 가속을 사용하도록 구성될 수 있다. 하드웨어 가속을 사용하는 것은, 소스 디바이스(220)의 중앙 프로세싱 유닛(CPU) 상의 프로세싱 로드를 감소시킬 수 있고, 상기는 프레임 레이트를 증가시킬 것이고 WD 시스템에서 지연을 감소시킬 것이다. 또한, 소스 디바이스(220)는, WD 시스템에서 지연을 추가로 감소시키기 위해, 싱크 디바이스들에 의한 시기적절한 수신을 보장하기 위해 인코딩된 프레임 업데이트들을 재전송(즉, 중복된 푸쉬를 수행)할 수 있다.
다른 예로서, 기술들에 따라, 소스 디바이스(220)의 프로세싱 파이프라인은, WD 시스템에서 소스 디바이스(220)와 싱크 디바이스들 사이에 비디오 데이터의 전송보다 오디오 데이터의 전송을 우선순위화하도록 구성될 수 있다. 오디오 패킷들 전부가 싱크 디바이스에 도달함을 보장하는 것이, 드롭된 패킷들을 수신하기를 대기하는 싱크 디바이스들에서의 지연을 감소시키도록, 비디오 데이터 패킷들의 전송은 연관된 오디오 데이터 패킷들의 전송에 매인다.
더욱 구체적으로는, 소스 디바이스(220)의 오디오 파이프라인 경로는 비디오 파이프라인 경로보다 더 많은 버퍼링을 포함하도록 구성될 수 있다. 부가적인 버퍼링은, 더 적은 오디오 패킷들이 소스 디바이스(220)에서 드롭될 것임을 보장한다. 다른 예로서, 소스 디바이스(220)의 프로세싱 파이프라인은, 비디오 파이프라인 경로에 대해서보다 오디오 파이프라인 경로에 대해, 무선 모뎀(234)에서 더 높은 우선순위 전송 큐를 제공하도록 구성될 수 있다. 더 높은 우선순위 전송 큐는, 대응하는 오디오 패킷들을 대기하는 비디오 패킷들에 의해 유발되는, 비디오 파이프라인 경로에서의 지연들 또는 스톨들을 방지하기 위해, 오디오 패킷들이 대응하는 비디오 패킷들 이전에 소스 디바이스(220)에서 전송을 위해 큐잉될 것임을 보장한다. 부가하여, 소스 디바이스(220)의 무선 모뎀(234)은, 통신 채널의 전송 조건들을 설명하는 피드백 정보를 WD 시스템에서 싱크 디바이스들로부터 수신할 수 있다. 응답하여, 소스 디바이스(220)는 피드백 정보에 기초하여 프로세싱 파이프라인을 수정할 수 있다.
소스 디바이스(220)에 대해 위에서 설명된 기술들 중 하나 또는 그 초과를 적용하는 것은, WD 시스템에서 종단 간 지연을 감소시킬 수 있고, WD 시스템에서 소스 디바이스(220) 및 싱크 디바이스들 둘 다에서 사용자 경험을 개선시킬 수 있다.
도 3은 본 개시물의 기술들을 구현할 수 있는 WD 시스템에서 싱크 디바이스(360)의 예를 예시하는 블록도이다. 싱크 디바이스(360)는 도 1의 싱크 디바이스(160)와 유사한 디바이스일 수 있고, 싱크 디바이스(160)와 동일한 방식으로 동작할 수 있다. 싱크 디바이스(360)는 프로세서(331), 메모리(332), 전송 유닛(333), 무선 모뎀(334), 디스플레이 프로세서(335), 로컬 디스플레이(362), 오디오 프로세서(336), 스피커(363), 및 사용자 입력 인터페이스(376)를 포함한다.
싱크 디바이스(360)는 소스 디바이스로부터 전송된 캡슐화된 데이터 유닛들을 무선 모뎀(334)에서 수신한다. 무선 모뎀(334)은 예컨대 IEEE 802.11 표준들 패밀리로부터의 하나 또는 그 초과의 표준들을 구현하도록 구성된 Wi-Fi 모뎀일 수 있다. 전송 유닛(333)은 캡슐화된 데이터 유닛들을 캡슐화해제할 수 있다. 예컨대, 전송 유닛(333)은, 캡슐화된 데이터 유닛들로부터 인코딩된 비디오 데이터를 추출할 수 있고, 인코딩된 A/V 데이터를, 출력을 위해 디코딩 및 렌더링되도록, 프로세서(331)에 전송할 수 있다. 디스플레이 프로세서(335)는 로컬 디스플레이(362) 상에 디스플레이될, 디코딩된 비디오 데이터를 프로세싱할 수 있고, 오디오 프로세서(336)는 스피커(363) 상에 출력을 위해, 디코딩된 오디오 데이터를 프로세싱할 수 있다.
오디오 및 비디오 데이터를 렌더링하는 것에 부가하여, 무선 싱크 디바이스(360)는 또한, 사용자 입력 인터페이스(376)를 통해 사용자 입력 데이터를 수신할 수 있다. 사용자 입력 인터페이스(376)는, 이에 제한되지는 않지만, 터치 디스플레이 인터페이스, 키보드, 마우스, 음성 커맨드 모듈, 제스처 캡쳐 디바이스(예컨대, 카메라-기반 입력 캡쳐 능력들을 가짐) 또는 임의의 다른 다수의 사용자 입력 디바이스들에 포함되는 다수의 사용자 입력 디바이스들 중 임의의 것을 표현할 수 있다. 사용자 입력 인터페이스(376)를 통해 수신된 사용자 입력은 프로세서(331)에 의해 프로세싱될 수 있다. 이러한 프로세싱은, 수신된 사용자 입력 커맨드를 포함하는 데이터 패킷들을 생성하는 것을 포함할 수 있다. 일단 생성되었다면, 전송 유닛(333)은 UIBC를 경유한 소스 디바이스로의 네트워크 전송을 위해 데이터 패킷들을 프로세싱할 수 있다.
도 3의 프로세서(331)는 폭넓은 범위의 프로세서들, 예컨대 하나 또는 그 초과의 DSP(digital signal processor)들, 일반 목적 마이크로프로세서들, ASIC(application specific integrated circuit)들, FPGA(field programmable logic array)들, 다른 등가 집적된 또는 이산의 로직 회로, 또는 이들의 어떤 결합 중 하나 또는 그 초과를 포함할 수 있다. 도 3의 메모리(332)는, 이에 제한되지는 않지만, SDRAM(synchronous dynamic random access memory)와 같은 RAM(random access memory), ROM(read-only memory), NVRAM(non-volatile random access memory), EEPROM(electrically erasable programmable read-only memory), FLASH 메모리 등등을 포함하는 폭넓게 다양한 휘발성 또는 비-휘발성 메모리 중 임의의 것을 포함할 수 있다. 메모리(332)는 오디오/비디오 데이터, 뿐만 아니라 다른 종류들의 데이터를 저장하기 위한 컴퓨터-판독가능 스토리지 매체를 포함할 수 있다. 부가하여, 메모리(332)는 본 개시물에 설명되는 다양한 기술들을 수행하는 일부로서 프로세서(331)에 의해 실행되는 명령들 및 프로그램 코드를 저장할 수 있다.
본 개시물의 기술들은, 싱크 디바이스(360)에서의 사용자 경험을 개선시키기 위하여, 지연을 감소시키고 비디오 재생 품질(즉, 평활도)을 개선시키도록 싱크 디바이스(360)의 프로세싱 파이프라인을 구성하는 것을 포함한다. 싱크 디바이스(360)의 프로세싱 파이프라인은 프로세서(331) 및/또는 전송 유닛(333)에 의해 실행되는 하나 또는 그 초과의 프로세싱 유닛들을 포함한다. 기술들은 도 6에 예시된 싱크 디바이스(660)의 프로세싱 파이프라인에 대하여 더욱 상세히 설명된다.
일 예에서, 싱크 디바이스(360)의 프로세싱 파이프라인은, WD 시스템에서 소스 디바이스로부터 수신된 미디어 데이터의 타입에 기초하여, 싱크 디바이스(360)에서 미디어 데이터의 맞춤화된 재생을 제공하도록 구성될 수 있다. 더욱 구체적으로는, 미디어 데이터가 비디오 데이터만을 포함하고 오디오 데이터를 포함하지 않는다면, 싱크 디바이스(360)의 프로세싱 파이프라인은 비디오 데이터의 가속된 렌더링을 수행하도록 구성될 수 있다. 예컨대, 미디어 데이터가 오디오 데이터를 포함하지 않음을 검출할 때, 싱크 디바이스(360)는 동기화를 디스에이플링할 수 있고, 존재하지 않는 오디오 데이터와 동기화하기를 대기하는 것 없이 비디오 데이터를 렌더링할 수 있다. 다른 한편으로, 미디어 데이터가 비디오 데이터 및 오디오 데이터 둘 다를 포함함을 검출할 때, 싱크 디바이스(360)는 오디오 렌더링 스타트-업 타이머를 감소시킬 수 있고, 감소된 스타트-업 타이머에 따라 동기화된 오디오 및 비디오 데이터를 렌더링할 수 있다.
부가하여, 싱크 디바이스(360)의 프로세싱 파이프라인은, 스트림 헤더 정보에 기초하여, 소스 디바이스로부터 미디어 데이터를 수신하기에 앞서 구성될 수 있다. 스트림 헤더 정보는, WD 시스템에서 통신 세션의 능력 협상 기간 동안 싱크 디바이스(360)와 소스 디바이스 사이에 교환될 수 있다. 이러한 방식으로, 싱크 디바이스(360)의 프로세싱 파이프라인은, 수신된 미디어 데이터를 프로세싱하기를 즉시 시작할 수 있고, 프로세싱 파이프라인의 셋업 시간으로 인한 어떠한 지연도 제거하거나 또는 감소시킬 수 있다.
다른 예로서, 기술들에 따라, 싱크 디바이스(360)의 프로세싱 파이프라인은, 소스 디바이스로부터 수신된 미디어 데이터에 대한 애플리케이션 인지에 기초하여, 미디어의 맞춤화된 버퍼링을 제공하도록 구성될 수 있다. 더욱 구체적으로는, 싱크 디바이스(360)는, 수신된 미디어 데이터에 대한 애플리케이션 타입을 학습할 수 있고, 애플리케이션 타입에 대해 평활도와 지연 사이에 적절한 균형을 달성하기 위해, 프로세싱 파이프라인에 있는 버퍼들의 크기를 조정할 수 있다. 몇몇 경우들에서, 미디어 데이터에 대한 애플리케이션 타입은 소스 디바이스에서 검출될 수 있고, 미디어 데이터와 함께 싱크 디바이스(360)에 시그널링될 수 있다. 그 경우, 싱크 디바이스(360)는 소스 디바이스로부터 수신된 표시에 기초하여 미디어 데이터에 대한 애플리케이션 타입을 학습한다. 다른 경우들에서, 싱크 디바이스(360)는 애플리케이션 타입을 스스로 검출함으로써 미디어 데이터에 대한 애플리케이션 타입을 학습할 수 있다.
미디어 데이터가, 재생의 품질 또는 평활도가 싱크 디바이스에서의 최고 우선순위이고 위에서 설명된 낮은 지연 기술들이 가시적 지터를 유발할 수 있는 비디오 재생 애플리케이션에 대한 것일 때, 비디오 재생 애플리케이션에서 미디어 데이터의 평활도를 증가시키기 위해 싱크 디바이스(360)의 프로세싱 파이프라인에 있는 버퍼 크기는 증가된다. 그와는 반대로, 미디어 데이터가, 낮은 지연이 싱크 디바이스에서의 최고 우선순위인 사용자 인터페이스(UI) 애플리케이션 또는 게임 애플리케이션에 대한 것을 때, UI 또는 게임 애플리케이션에 대한 지연을 감소시키기 위해 싱크 디바이스(360)의 프로세싱 파이프라인에 있는 버퍼 크기는 감소된다.
추가적인 예로서, 기술들에 따라, 싱크 디바이스(360)의 무선 모뎀(334)은 통신 채널의 전송 조건들을 설명하는 피드백 정보를 WD 시스템에서 소스 디바이스들에 전송할 수 있다. 싱크 디바이스(360)는, 앞서 수신된 미디어 데이터의 에러율들 및/또는 패킷 손실들에 기초하여, 통신 채널의 전송 조건들을 결정할 수 있다. 무선 모뎀(334)은 피드백 정보를 UIBC 또는 다른 역방향 채널을 경유해 소스 디바이스에 전송할 수 있다. 몇몇 경우들에서, 싱크 디바이스(360)는 피드백 스트리밍을 위해 RTCP(Real-time Transport Control Protocol)을 사용할 수 있다. 응답하여, 소스 디바이스는 피드백 정보에 기초하여 싱크 디바이스(360)를 목적지로 하는 미디어 데이터에 대한 자신의 프로세싱을 수정할 수 있다.
싱크 디바이스(360)에 대해 위에서 설명된 기술들 중 하나 또는 그 초과를 적용하는 것은, WD 시스템에서 종단 간 지연을 감소시킬 수 있고, WD 시스템에서 싱크 디바이스(360)에서의 사용자 경험을 증가시키기 위해 비디오 재생 품질을 증가시킬 수 있다.
도 4는 통신 채널(150)을 경유해 통신하기 위해 도 1의 송신기/수신기(126) 및 송신기/수신기(166)에 의해 사용될 수 있는 예시적 송신기 시스템(410) 및 수신기 시스템(450)을 예시하는 블록도이다. 송신기 시스템(410)에서, 다수의 데이터 스트림들에 대한 트래픽 데이터는 데이터 소스(412)로부터 송신(TX) 데이터 프로세서(414)에 제공된다. 각각의 데이터 스트림은 각각의 송신 안테나를 경유해 전송될 수 있다. TX 데이터 프로세서(414)는, 각각의 데이터 스트림에 대해 선택된 특정한 코딩 방식에 기초하여 그 데이터 스트림에 대한 트래픽 데이터를 포맷팅, 코딩, 및 인터리빙한다. 각각의 데이터 스트림에 대한 코딩된 데이터는, OFDM(orthogonal frequency division multiplexing) 기술들을 이용하여, 파일럿 데이터와 다중화될 수 있다. 또한, 이에 제한되지는 않지만 TDMA(time division multi access), FDMA(frequency division multi access), CDMA(code division multi access), 또는 OFDM, FDMA, TDMA 및/또는 CDMA의 임의의 결합을 포함하는 폭넓게 다양한 다른 무선 통신 기술들이 사용될 수 있다.
도 4와 일치하게, 파일럿 데이터는 통상적으로, 알려진 방식으로 프로세싱되고 그리고 수신기 시스템(450)에서 채널 응답을 추정하는데 사용될 수 있는 알려진 데이터 패턴이다. 그런 다음, 각각의 데이터 스트림에 대한 다중화된 파일럿 및 코딩된 데이터는, 변조 심볼들을 제공하기 위해 그 데이터 스트림에 대해 선택된 특정한 변조 방식(예컨대, BPSK(Binary Phase Shift Keying), QPSK(Quadrature Phase Shift Keying), M-PSK, 또는 M-QAM(Quadrature Amplitude Modulation), 여기서 M은 2의 거듭제곱일 수 있음)에 기초하여 변조(예컨대, 심볼 맵핑)된다. 각각의 데이터 스트림에 대한 데이터 레이트, 코딩, 및 변조는, 메모리(432)와 커플링될 수 있는 프로세서(430)에 의해 수행되는 명령들에 의해 결정될 수 있다.
그런 다음, 데이터 스트림들에 대한 변조 심볼들이 TX MIMO 프로세서(420)에 제공되고, 상기 TX MIMO 프로세서(420)는 (예컨대, OFDM에 대해) 변조 심볼들을 추가로 프로세싱할 수 있다. 그런 다음, TX MIMO 프로세서(420)는 NT개 변조 심볼 스트림들을 NT개 송신기들(TMTR)(422A-422T)("송신기들(422)")에 제공할 수 있다. 특정한 양상들에서, TX MIMO 프로세서(420)는 빔포밍 가중치들을 데이터 스트림들의 심볼들 및 안테나 ― 상기 안테나로부터, 심볼이 전송되고 있음 ― 에 적용한다. 송신기들(422)의 각각은, 각각의 심볼 스트림을 수신 및 프로세싱하여, 하나 또는 그 초과의 아날로그 신호들을 제공하고 아날로그 신호들을 추가로 컨디셔닝(예컨대, 증폭, 필터링, 및 상향변환)하여, MIMO 채널을 경유한 송신에 적절한 변조된 신호를 제공할 수 있다. 그런 다음, 송신기들(422)로부터의 NT개 변조된 신호들이 NT개 안테나들(424A-424T)("안테나들(424)")로부터 각각 전송된다.
수신기 시스템(450)에서, 전송된 변조된 신호들은 NR개 안테나들(452A-452R)("안테나들(452)")에 의해 수신되고, 안테나들(452)의 각각으로부터의 수신된 신호는 수신기들(RCVR)(454A-454R)("수신기들(454)") 중 각각의 수신기에 제공된다. 수신기들(454)의 각각은 각각의 수신된 신호를 컨디셔닝(예컨대, 필터링, 증폭, 및 하향변환)하고, 컨디셔닝된 신호를 디지털화하여 샘플들을 제공하며, 샘플들을 추가로 프로세싱하여 대응하는 "수신된" 심볼 스트림을 제공한다. 그런 다음, 수신(RX) 데이터 프로세서(460)는, 특정한 수신기 프로세싱 기술에 기초하여, NR개 수신기들(454)로부터 NR개 심볼 스트림들을 수신하고 NR개 수신된 심볼 스트림들을 프로세싱하여, NT개 "검출된" 심볼 스트림들을 제공한다. 그런 다음, RX 데이터 프로세서(460)는, 각각의 검출된 심볼 스트림을 복조, 디인터리빙 및 디코딩하여, 데이터 스트림에 대한 트래픽 데이터를 복원한다. RX 데이터 프로세서(460)에 의한 프로세싱은, 송신기 시스템(410)에 있는 TX MIMO 프로세서(420) 및 TX 데이터 프로세서(414)에 의해 수행된 것에 상보적이다.
메모리(472)와 커플링될 수 있는 프로세서(470)는 어느 프리-코딩 행렬을 사용할지를 주기적으로 결정한다. 역방향 링크 메시지는 통신 링크 및/또는 수신된 데이터 스트림에 관한 다양한 타입들의 정보를 포함할 수 있다. 그런 다음, 역방향 링크 메시지는, 데이터 소스(436)로부터 다수의 데이터 스트림들에 대한 트래픽 데이터를 또한 수신하는 TX 데이터 프로세서(438)에 의해 프로세싱되고, 변조기(480)에 의해 변조되고, 송신기들(454)에 의해 컨디셔닝되며, 그리고 송신기 시스템(410)에 역으로 전송된다.
송신기 시스템(410)에서, 수신기 시스템(450)으로부터의 변조된 신호들은 안테나들(424)에 의해 수신되고, 수신기들(422)에 의해 컨디셔닝되고, 복조기(440)에 의해 복조되며, 그리고 RX 데이터 프로세서(442)에 의해 프로세싱되어, 수신기 시스템(450)에 의해 전송된 역방향 링크 메시지가 추출된다. 그런 다음, 프로세서(430)는 빔포밍 가중치들을 결정하기 위해 어느 프리-코딩 행렬을 사용할지를 결정하고, 추출된 메시지를 프로세싱한다.
도 5는, 소스 디바이스(520)의 프로세싱 파이프라인(550)에서 지연을 감소시키기 위해, 본 개시물의 기술들을 지원할 수 있는 소스 디바이스(520)의 예를 예시하는 블록도이다. 소스 디바이스(520)는 도 1로부터의 소스 디바이스(120) 또는 도 2로부터의 소스 디바이스(220)와 유사한 디바이스일 수 있고, 소스 디바이스(120) 또는 소스 디바이스(220)와 동일한 방식으로 동작할 수 있다.
소스 디바이스(520)는 로컬 디스플레이(522), 디스플레이 프로세서(535), 메모리(532), 무선 모뎀 소켓(570), 무선 모뎀(534), 및 프로세싱 파이프라인(550)을 포함한다. 프로세싱 파이프라인(550)은, 프로세서(531) 및 전송 유닛(533)에 의해 실행되는 프로세싱 유닛들 및 버퍼들을 포함한다. 구체적으로, 프로세싱 파이프라인(550)은, 프로세서(531) 내의 비디오 프로세싱 엔진(VPE)(560) 및 인코더(562), 그리고 전송 유닛(533) 내의 패킷타이저(packetizer)(564)를 포함한다. 부가하여, 프로세싱 파이프라인(550)은 디스플레이 프로세서(535)와 VPE(560) 사이에 포지셔닝된 라이트-백(WB:write-back) 버퍼들(540), VPE(560)와 인코더(562) 사이의 프레임 버퍼들(542), 및 인코더(562)와 패킷타이저(564) 사이의 코딩된 픽처 버퍼(CPB:coded picture buffer)들(544)을 포함한다.
또한, 소스 디바이스(520)는 하드웨어 가속기(536) 및 파이프라인 관리자(538)를 포함한다. 본 개시물의 기술들에 따라, 파이프라인 관리자(538)는, 소스 디바이스(520)에서 미디어 데이터에 대해 낮은 지연 스크린 캡쳐 및 버퍼링을 제공하도록 프로세싱 파이프라인(550)을 구성한다. 구체적으로, 파이프라인 관리자(538)는, 최소-크기 버퍼들을 포함하도록 그리고 메모리(532) 및 최소-크기 버퍼들로부터 미디어 데이터를 리트리빙하기 위해 하드웨어 가속기(536)를 사용하도록 프로세싱 파이프라인(550)을 구성한다.
일 예에서, WD 시스템에서 하나 또는 그 초과의 싱크 디바이스들과의 통신 세션을 설정할 때, 파이프라인 관리자(538)는, 지연을 감소시키기 위해, 프로세싱 단계들 사이에 최소-크기 버퍼들을 포함하도록 소스 디바이스(520)의 프로세싱 파이프라인(550)을 구성한다. 일 경우, 최소-크기 버퍼들은, 미디어 데이터가 디스플레이 프로세서(535)와 VPE(560) 사이에서 이동하도록 하는, 감소된 개수의 WB 버퍼들(540)을 포함할 수 있다. 예컨대, 파이프라인 관리자(538)는, 적어도 미디어 데이터의 가장 최신 프레임 업데이트를 유지시키기 위해, 단 두 개의 WB 버퍼들(540)(예컨대, 핑-퐁 버퍼들)만을 포함하도록 프로세싱 파이프라인(550)을 구성할 수 있다. WB 버퍼들(540)은 VPE(560)에 의한 프로세싱에 앞서 프레임 업데이트들을 유지할 수 있다. 부가하여, WB 버퍼들(540)은, 메모리(532)에 역으로 기록되기에 앞서 적어도 가장 최신 프레임 업데이트를 유지하도록 구성될 수 있다. 예컨대, 두 개의 WB 버퍼들(540)이 32개 엔트리들 미만을 유지하도록 구성될 수 있고, 몇몇 경우들에서 16개 엔트리들 미만을 유지하도록 구성될 수 있다.
다른 경우들에서, 최소-크기 버퍼들은 또한, 미디어 데이터가 VPE(560)와 인코더(562) 사이에서 이동하도록 하는, 감소된 개수의 프레임 버퍼들(542)을 포함할 수 있다. 예컨대, 파이프라인 관리자(538)는, 적어도 미디어 데이터의 가장 최신 프레임 업데이트를 유지시키기 위해, 단 네 개의 프레임 버퍼들(542), 예컨대 두 개의 핑-퐁 버퍼들과 두 개의 유지 버퍼들만을 포함하도록 프로세싱 파이프라인(550)을 구성할 수 있다. 부가하여, 최소-크기 버퍼들은, 미디어 데이터가 인코더(562)와 패킷타이저(564) 사이에서 이동하도록 하는, 감소된 개수의 CPB들(544)을 포함할 수 있다. 예컨대, 파이프라인 관리자(538)는, 적어도 미디어 데이터의 가장 최신 프레임 업데이트를 유지시키기 위해, 단 여섯 개의 CPB들(544), 예컨대 두 개의 핑-퐁 버퍼들과 네 개의 유지 버퍼들을 포함하도록 프로세싱 파이프라인(550)을 구성할 수 있다.
기술들에 따라, 소스 디바이스(520)의 프로세싱 파이프라인(550)에 있는 최소-크기 버퍼들을 이용하는 것은, 소스 디바이스(520)에서의 지연을 감소시키는데, 그 이유는 프로세싱 이전 및 그 동안에 프레임 업데이트들이 더 적고 더 작은 버퍼들을 통해 이동하기 때문이다. 부가하여, WB 버퍼들(540)의 크기를을, 32개 미만의 엔트리들을 갖는 단 두 개의 핑-퐁 버퍼들로 최소화하는 것은, 프레임 드롭들이, 추가적인 다운스트림에서 초킹(choking) 프로세싱 파이프라인(550)이 아니라, 소스 디바이스(520)의 프로세싱 파이프라인(550)의 초기 단계에서 발생하도록 허용한다.
소스 디바이스(520)의 프로세싱 파이프라인(550)이 최소-크기 버퍼들을 포함하도록 수정될 때, 가장 최신 프레임 업데이트가 버퍼링되고, 프로세싱되고, 싱크 디바이스들에 전송됨을 보장하기 위해, 파이프라인 관리자(538)는 또한 프로세싱 파이프라인(550) 내의 프레임 캡쳐 프로세스를 수정할 수 있다. 기술들은, 적어도 미디어 데이터로부터 캡쳐된 가장 최신 프레임 업데이트를 최소-크기 버퍼들에 버퍼링하는 것, 그리고 최소-크기 버퍼들이 가득 찰 때 더 오래된 프레임 업데이트들을 드롭하는 것을 포함한다. 예컨대, 각각의 프레임 업데이트(예컨대, 부분적이든 또는 전체 프레임이든)는 소스 디바이스(520)에서 WD 시스템에 전용된 WB 버퍼들(540)에 큐잉될 수 있거나 또는 축적될 수 있다. 최소-크기 WB 버퍼들(540)이 부가적인 프레임 업데이트들을 위한 공간이 없어진다면, WB 버퍼들(540)은, 더 오래된 프레임 업데이트들을 드롭하고 더욱 최신 프레임 업데이트들을 유지하도록 구성될 수 있다. 최소-크기 WB 버퍼들(540)은, 새로운 프레임 업데이트들이 수신되는 만큼 빨리 프로세싱을 위해 프레임 업데이트들을 출력하지 않을 수 있다. 기술들에 따라, 새로운 프레임 업데이트가 버퍼링되고, 프로세싱되고, 전송되도록 허용하기 위해, 더 오래된 프레임 업데이트들 중 하나 또는 그 초과가 WB 버퍼들(540)로부터 드롭될 수 있다.
다른 예로서, 프로세싱 파이프라인(550)은, 메모리(532), WB 버퍼들(540), 프레임 버퍼들(542), 및/또는 CPB들(544)로부터 프레임 업데이트들을 리트리빙하기 위해 하드웨어 가속을 사용하도록 구성될 수 있다. 예컨대, 프로세싱 파이프라인(550)은, 소스 디바이스(520)의 중앙 프로세싱 유닛(CPU) 대신에, 프로세싱 파이프라인(550)에 있는 프로세싱 유닛들에 의한 프로세싱을 위해, 프레임 업데이트들을 리트리빙하기 위해 하드웨어 가속기(536)를 사용할 수 있다. 하드웨어 가속기(536)를 사용하는 것은, 소스 디바이스(520)의 CPU 상의 프로세싱 로드를 감소시킬 수 있고, 상기는 소스 디바이스(520)에서 프레임 레이트를 증가시킬 수 있고 지연을 감소시킬 수 있다.
미디어 데이터의 캡쳐된 프레임의 픽셀들에 대한 이미지 포맷은 통상적으로 RGB888, RGB565 또는 YUV 원시 포맷들 중 하나이다. 소스 디바이스(520)의 CPU를 이용하여 미디어 데이터의 캡쳐된 프레임의 표준 메모리 카피에 액세스하는 것은, 높은 프레임 레이트 업데이트들을 달성하기 위해 너무 많은 CPU 로드를 겪을 것이다. WD 시스템에 대한 미디어 데이터 프로세싱이 소스 디바이스(520)에서 너무 많은 CPU 프로세싱 로드를 소모할 때, 사용자는 WD 시스템에서 소스 디바이스(520) 및 싱크 디바이스들 상에서 실행되는 미디어 애플리케이션들의 지연 또는 느려짐을 알아챌 수 있다. 기술들은, CPU와 무관하게, 메모리(532) 또는 버퍼들 중 하나에서 유지되는 프레임 업데이트들을 리트리빙하고 프로세싱 파이프라인(550)에서 프로세싱 유닛들 사이에 프레임 업데이트들을 이동시키기 위해, DMA(direct memory access)를 수행하기 위해 하드웨어 가속기(536)를 사용하는 것을 포함한다.
소스 디바이스(520) 내의 인코더(562)는 하드웨어 및/또는 소프트웨어 기반일 수 있다. VPE(560)가 프레임 업데이트들을 프레임 버퍼들(542)로 렌더링한 이후, 인코더(562)는 프레임 업데이트들을 인코딩한다. 인코딩된 프레임 업데이트들은, 패킷타이저(564)에 의한 패킷 형성 및 무선 모뎀(534)에 의한 싱크 디바이스들로의 송신에 앞서, CPB들(544)에 버퍼링될 수 있다. 몇몇 경우들에서, CPB들(544)은, CPB들(544)에 버퍼링하기 위해 인코딩된 프레임 업데이트의 부가적인 메모리 카피를 만드는 대신에, 메모리(532)에 저장된 인코딩된 프레임 업데이트에 대한 포인터를 버퍼링하도록 구성될 수 있다. 예로서, 인코딩된 프레임 업데이트가 CPB들(544)에서 참조되지만 실제 메모리 카피는 메모리(532)에서 유지되도록, 포인터는 메모리(532)에 있는 인코딩된 프레임 업데이트의 소스 주소를 특정할 수 있다. 이러한 방식으로, 소스 디바이스(520)는, 인코딩된 프레임 업데이트의 부가적인 메모리 카피를 생성 및 저장하는 비용을 방지할 수 있다. 다른 예들로서, 기술들은, 부가적인 메모리 카피의 비용을 절약하기 위해 다른 방법들을 사용할 수 있다. 더욱 구체적으로, 기술들은, 인코딩된 프레임 업데이트들의 부가적인 메모리 카피들을 만드는 것 없이, CPB들(544) 내에서 인코딩된 프레임 업데이트들을 참조하기 위하여, 맵핑된 메모리, 또는 메모리(532)로의 전송/수신 요청들을 사용하는 것을 포함할 수 있다.
추가적인 예에서, 기술들은 또한, WD 시스템에서 지연을 추가로 감소시키기 위해, 싱크 디바이스들에 의한 시기적절한 수신을 보장하기 위해 소스 디바이스(520)로부터의 인코딩된 프레임 업데이트들의 재전송(즉, 중복된 푸쉬)을 포함한다. 중복된 푸쉬는, 많은 미디어 데이터 패킷들이 소스(520)와 싱크 디바이스들 사이에서 드롭될 수 있는 불량한 통신 채널의 경우에 특히 유용할 수 있다. 일 예에서, 소스 디바이스(520)는, 손실된 프레임들을 재전송하기 위해, 싱크 디바이스들로부터의 피드백에 의존하지 않을 수 있다. 대신에, 싱크 디비스들로의 송신을 위해 새로운 프레임 업데이트가 수신되지 않았다면, 미리결정된 시간 기간 이후, 소스 디바이스(520)의 무선 모뎀(534)이 프레임 업데이트를 자동으로 재전송할 수 있다. 예컨대, 새로운 프레임 업데이트가 수신되지 않으면, 대략 13초 이후, 무선 모뎀(534)은 최종 프레임 업데이트를 자동으로 재전송할 수 있다. 다른 경우들, 무선 모뎀(534)은, 대략 10초 또는 그 미만 이후, 최종 프레임 업데이트를 재전송할 수 있다.
소스 디바이스(520)에서 수행된 중복된 푸쉬는, 디스플레이 콘텐츠가, 신뢰할 수 없는 전송으로 인해 싱크 디바이스들에서 오류가 생긴 프레임들로부터 복원되도록 인에이블링할 수 있다. 예컨대, 소스 디바이스(520)의 무선 모뎀(534)이 UDP(User Datagram Protocol) ― 예컨대 TCP(Transmission Control Protocol)와 비교할 때 비교적 신뢰할 수 없는 전송 프로토콜 ― 를 사용할 때, 새로운 프레임 업데이트가 수신되지 않으면, 미리결정된 시간 기간 이후, 무선 모뎀(534)은 최종 프레임 업데이트를 재전송하기 위해 중복된 푸쉬를 수행할 수 있다. 몇몇 예들에서, 중복된 푸쉬 간격은, 전송되고 있는 미디어 데이터의 타입에 기초하여 동적으로 조정가능할 수 있다. 사용자 인터페이스(UI) 또는 게임 애플리케이션에 대한 미디어 데이터의 경우, 손실된 프레임은 눈에 띄고, WD 시스템에서 UI 애플리케이션의 사용자 경험에 악영향을 끼칠 것이다. 비디오 재생 애플리케이션에 대한 미디어 데이터의 경우, 손실된 프레임은 쉽게 눈에 띄지 않을 것이고, 비디오 재생 애플리케이션의 사용자 경험에 거의 영향을 끼치지 않거나 또는 어떠한 영향도 끼치지 않을 것이다. 그러므로, UI 및 게임 애플리케이션들에 대해, 무선 모뎀(534)은 비디오 재생 애플리케이션들에 대해서보다 더욱 빈번하게 중복된 푸쉬를 수행하도록 구성될 수 있다. 예컨대, UI 및 게임 애플리케이션들에 대해, 중복된 푸쉬 간격은 대략 10초 또는 그 미만으로 감소될 수 있다.
몇몇 경우들에서, 소스 디바이스(520)의 인코더(562) 및/또는 싱크 디바이스들의 각각에 있는 디코더의 밖으로 프레임들을 푸쉬하는데 유사한 중복된 푸쉬 메커니즘이 사용될 수 있다. 통상적으로, 인코더들 및 디코더들은 각각의 코딩된 프레임을 자동으로 출력하는 것이 아니라, 앞서 코딩된 프레임을 밖으로 푸쉬하기 위해 후속 프레임을 수신할 필요가 있다. 그러므로, 기술들은, 코딩된 프레임 업데이트들을 출력하기 위해 부가적인 푸쉬를 제공함으로써, 소스 디바이스(520)와 하나 또는 그 초과의 싱크 디바이스들 사이의 동기화를 개선시킬 수 있다.
부가하여, 본 개시물의 기술들은 또한, WD 시스템에서 소스 디바이스(520)와 싱크 디바이스들 사이에 비디오 데이터의 전송보다 오디오 데이터의 전송을 우선순위화하는 것을 포함한다. 오디오 패킷들 전부가 싱크 디바이스에 도달함을 보장하는 것이, 드롭된 패킷들을 수신하기를 대기하는 싱크 디바이스에서의 지연을 감소시키도록, 비디오 데이터 패킷들의 전송은 연관된 오디오 데이터 패킷들의 전송에 매인다. 파이프라인 관리자(538)는, 소스 디바이스(520)에서 비디오 파이프라인 경로보다 더 많은 버퍼링을 포함하도록 오디오 파이프라인 경로를 구성할 수 있다. 부가적인 버퍼링은 더 적은 오디오 패킷들이 소스 디바이스(520)에서 드롭될 것임을 보장한다. 무선 모뎀 소켓(570)은, 비디오 파이프라인 경로에 대해서보다 오디오 파이프라인 경로에 대해 더 높은 우선순위 전송 큐를 제공할 수 있다. 더 높은 우선순위 전송 큐는, 비디오 패킷들이 대응하는 오디오 패킷이 큐잉될 것을 대기하는 것으로 인한 비디오 파이프라인 경로에서의 지연들 또는 스톨들을 방지하기 위해, 대응하는 비디오 패킷들 이전에, 오디오 패킷들이 소스 디바이스(520)에서 전송을 위해 큐잉될 것임을 보장한다.
종래에, 오디오 프로세싱 파이프라인 및 비디오 프로세싱 파이프라인 경로 둘다는 동일한 또는 유사한 양의 버퍼링 및 전송 우선순위를 갖는다. 미디어 데이터 전부가 싱크 디바이스들에 수신됨을 보장하기 위해 오디오 데이터가 더욱 주의 깊은 프로세싱 및 전송을 요구하기 때문에, 소스 디바이스들에 있는 종래의 비디오 파이프라인 경로들은, 연관된 오디오 데이터가 준비될 때까지, 비디오 데이터의 전송을 지연시키거나 또는 스톨시키고, 상기는 WD 시스템에서 부가적인 지연을 도입시킨다. 오디오 파이프라인 경로를 우선순위화함으로써, 비디오 파이프라인 경로에서의 부가적인 지연 또는 스톨 시간이 불필요하다.
기술들에 따라, 패킷이 오디오 또는 비디오 트래픽을 포함하는지를 표시하기 위해 미디어 데이터 패킷들에 있는 서비스 타입(TOS:type of service) 필드를 셋팅함으로써, 오디오 데이터의 우선순위화된 전송이 달성될 수 있다. 예컨대, 통신 채널이 WMM(Wi-Fi Multimedia)를 지원한다면, TOS 필드는 음성, 비디오, 최선-노력, 및 백그라운드를 포함하는 우선순위화 목적들에 대해 WMM에 의해 정의된 액세스 카테고리를 표시할 수 있다. 미디어 데이터 패킷들에 있는 TOS 필드들은, 소스 디바이스(520)에 있는 무선 모뎀 소켓(570)이, 오디오 패킷들 및 비디오 패킷들을 상이한 우선순위 레벨들을 갖는 상이한 큐들에 배치시키는 것을 인에이블링한다.
부가하여, 소스 디바이스(520)는, 싱크 디바이스들과의 통신 채널의 전송 조건들을 설명하는 피드백 정보를 싱크 디바이스들로부터 수신할 수 있다. 예컨대, 피드백 정보는, 싱크 디바이스에서 결정되고 소스 디바이스(520)에 통신되는 에러율 또는 패킷 손실을 포함할 수 있다. 몇몇 경우들에서, 피드백 정보는, WD 시스템에서 싱크 디바이스들과 소스 디바이스(520) 사이에 설정된 UIBC를 경유해 싱크 디바이스들로부터 소스 디바이스(520)로 전송될 수 있다. 다른 경우들에서, 피드백 정보는 상이한 소켓 링크를 경유해 소스 디바이스(520)에 전송할 수 있다. 부가하여, 피드백 정보는, RTCP 또는 어떤 다른 맞춤화된 시그널링을 이용하여 통신될 수 있다.
응답하여, 소스 디바이스(520)의 파이프라인 관리자(538)는 피드백 정보에 기초하여 소스 디바이스(520)의 프로세싱 파이프라인(550)을 수정할 수 있다. 일 예에서, 불량한 통신 채널을 설명하는 피드백 정보를 수신하는 것에 응답하여, 소스 디바이스(520)는 미디어 데이터 패킷들을 재전송하기 위한 중복 푸쉬 간격을 예컨대 10초 초과 또는 13초 초과로 증가시킬 수 있거나, 또는 미디어 데이터 패킷들을 프로세싱 및 전송하기 위한 데이터 레이트를 변경할 수 있다. 다른 예에서, 피드백 정보에 응답하여, 소스 디바이스(520)는 일반적으로, 버퍼 크기들, 인코딩 파라미터들을 조정할 수 있거나 또는 전송 프로토콜들의 타입들 사이를 동적으로 스위칭할 수 있다. 예컨대, 불량한 통신 채널을 설명하는 피드백 정보에 응답하여, 소스 디바이스(520)는, 비교적 신뢰할 수 없는 전송 프로토콜인 RTP(Real Time Protocol)/UDP(User Datagram Protocol) 통신 채널로부터 RTP/TCP(Transmission Control Protocol) 전송 채널로 스위칭할 수 있다.
도 6은 싱크 디바이스(660)의 프로세싱 파이프라인(650)에서 지연을 감소시키고 싱크 디바이스(660)에서의 비디오 재생을 개선시키기 위해 본 개시물의 기술들을 지원할 수 있는 싱크 디바이스(660)의 예를 예시하는 블록도이다. 싱크 디바이스(660)는 도 1로부터의 싱크 디바이스(160), 또는 도 3으로부터의 싱크 디바이스(260)와 유사한 디바이스일 수 있고, 싱크 디바이스(160) 또는 싱크 디바이스(260)와 동일한 방식으로 동작할 수 있다.
싱크 디바이스(660)는 로컬 디스플레이(622), 디스플레이 프로세서(635), 메모리(632), 무선 모뎀 소켓(670), 무선 모뎀(634), 및 프로세싱 파이프라인(650)을 포함한다. 프로세싱 파이프라인(650)은, 프로세서(631) 및 전송 유닛(633)에 의해 실행되는 프로세싱 유닛들 및 버퍼들을 포함한다. 구체적으로, 프로세싱 파이프라인(650)은 전송 유닛(633) 내의 파서(680), 그리고 프로세서(631) 내의 디코더(682) 및 렌더러(684)를 포함한다. 부가하여, 프로세싱 파이프라인(650)은 파서(680)와 디코더(682) 사이에 포지셔닝된 버퍼들(692), 디코더(682)와 렌더러(684) 사이에 포지셔닝된 렌더 큐(694), 그리고 렌더러(684)와 디스플레이 프로세서(635) 사이의 프레임 버퍼들(696)을 포함한다.
또한, 싱크 디바이스(660)는 파이프라인 관리자(638)를 포함한다. 본 개시물의 기술들에 따라, 파이프라인 관리자(638)는, 소스 디바이스로부터 수신되는 미디어 데이터의 타입에 기초하여, 싱크 디바이스(660)에서 맞춤화된 재생을 제공하도록 프로세싱 파이프라인(650)을 구성한다. 구체적으로, 파이프라인 관리자(638)는, 미디어 데이터가 오디오 데이터를 포함하는지에 기초하여 렌더링을 수정하도록 프로세싱 파이프라인(650)을 구성한다.
예컨대, 미디어 데이터가 비디오 데이터만을 포함하고 오디오 데이터를 포함하지 않는다면, 싱크 디바이스(660)의 프로세싱 파이프라인(650)에 포함된 렌더러(684)는 비디오 데이터의 가속된 렌더링을 수행하도록 구성된다. 미디어 데이터가 오디오 데이터를 포함하지 않음을 검출할 때, 파이프라인 관리자(638)는 렌더러(684)에서의 동기화를 디스에이블링할 수 있다. 그런 다음, 렌더러(684)는, 존재하지 않는 오디오 데이터와 동기화하려고 대기하는 것 없이, 비디오 데이터를 렌더링할 수 있다.
종래에, 미디어 데이터 프로세싱 파이프라인들은 비디오 및 오디오 데이터 둘 다에 대해 설계되거나, 또는 오디오 데이터를 갖지 않는, 단지 비디오 데이터에 대해 설계된다. 비디오 데이터만을 수신할 때, 비디오 및 오디오 데이터 둘 다에 대해 설계된 미디어 데이터 프로세싱 파이프라인은 비디오 및 오디오 데이터 둘 다를 프로세싱하는데 요구되는 것과 동일한 속도 ― 존재하지 않는 오디오 데이터와의 동기화를 위한 대기 시간이 포함됨 ― 로 비디오 데이터를 프로세싱한다. 부가적인 프로세싱 시간은 불필요하게, 지연을 프로세싱 파이프라인에 부가한다. 본 개시물의 기술들은, 싱크 디바이스(660)의 디코더(682)가, 수신된 미디어 데이터의 타입을 검출하고 미디어 데이터의 타입에 기초하여 렌더러(684)에서의 재생 프로세싱 속도를 동적으로 조정하는 것을 인에이블링한다. 예컨대, 디코더(682)는 미디어 데이터에서 오디오 타임 스탬프의 존재 또는 부재를 검출할 수 있고, 여기서 오디오 타임 스탬프의 존재는 소스 디바이스로부터의 미디어 데이터가 오디오 데이터를 포함함을 표시한다.
예컨대, UI 애플리케이션에 대한 미디어 데이터의 경우, 비디오 데이터와 동반된 오디오 데이터가 존재하지 않을 수 있다. UI 애플리케이션 데이터에 대해, 파이프라인 관리자(638)는 싱크 디바이스(660)의 렌더러(684)에서의 동기화를 디스에이블링할 수 있다. 이러한 방식으로, 렌더러(684)는, 존재하지 않는 오디오 데이터의 프로세싱 및 동기화를 위한 대기 시간 없이, 가능한 한 빨리 UI 애플리케이션에 대한 비디오 데이터를 렌더링할 수 있다. 비디오 재생 애플리케이션에 대한 미디어 데이터의 경우, 비디오 데이터와 동반된 오디오 데이터가 존재할 수 있다. 오디오 데이터를 갖는 비디오 재생 애플리케이션 데이터에 대해, 파이프라인 관리자(638)는, 정상 프로세싱 속도로, 동기화된 비디오 데이터 및 오디오 데이터를 렌더링할 수 있다.
부가하여, 기술들은 또한, 파이프라인 관리자(638)가, 렌더러(684)에 적용가능한 미디어 시간에 기초하여 렌더러(684)에서의 샘플 시간을 조정하는 것을 인에이블링한다. 이러한 방식으로, 소스 디바이스에 의해 셋팅된 미디어 데이터의 샘플 시간이 싱크 디바이스(660)에 있는 렌더러(684)에 적용가능하지 않을 때, 파이프라인 관리자(638)는 미디어 시간에 기초하여 미디어 데이터에 대해 적용가능한 샘플 시간을 선택할 수 있다.
다른 예로서, 미디어 데이터가 비디오 데이터 및 오디오 데이터 둘 다를 포함한다면, 파이프라인 관리자(638)는 오디오 렌더링 스타트-업 타이머를 감소시킬 수 있고, 렌더러(684)는 감소된 스타트-업 타이머에 따라 동기화된 오디오 및 비디오 데이터를 렌더링할 수 있다. 이러한 방식으로, 기수들은, 심지어 미디어 데이터가 오디오 데이터를 포함할 때에도, 싱크 디바이스(660)에서의 지연을 감소시킬 수 있다.
몇몇 재생 엔진들에서, 오디오 렌더링은, 분실된 또는 드롭된 인입 오디오 패킷들을 방지하기 위해, 스타트업시 지연될 수 있다. 지연 시간은 어떤 통신 시스템, 예컨대 블루투스 시스템에 대해 필요할 수 있다. 다른 통신 시스템들, 예컨대 WD 시스템에 대해, 지연은 불필요하고, 동기화가 인에이블링될 때 종단 간 지연에 부가된다. 예컨대, 블루투스 시스템에 대해 필요한 A2DP(Advanced Audio Distribution Profile) 초기화 시간, 예컨대 1초 또는 그 초과를 보상하기 위하여, 싱크 디바이스(660)의 렌더러(684)에서의 오디오 렌더링 스타트업 타이머가 비교적 높게 셋팅될 수 있다. 오디오 데이터 렌더링은 스타트업 시간에 의해 지연될 것이고, 인입 샘플들은, 렌더러(684)에 입력되기 이전에 버퍼링되어야 할 것이다. 오디오 데이터가 지연된다면, 오디오 데이터 및 비디오 데이터를 동기화된 채로 유지시키기 위해 대응하는 비디오 데이터가 또한 지연되어야 할 것이다.
본 개시물에 설명된 기술들에 따라, WD 시스템에 대해, 지연을 감소시키고 싱크 디바이스(660)에서 오디오 및 비디오 데이터 스톨들을 방지하기 위해, 렌더러(684)에 있는 오디오 렌더링 스타트업 타이머가 감소된다. 예컨대, WD 시스템의 경우, 파이프라인 관리자(638)는, 싱크 디바이스(660)에서 더 신속한 렌더링 및 재생을 제공하기 위하여, 오디오 렌더링 스타트업 타이머를 감소시킬 수 있거나 또는 제거할 수 있다. 오디오 렌더링 스타트업 타이머는 1초 미만, 50밀리초(㎳) 미만으로 감소될 수 있고, 몇몇 경우들에서 20㎳ 미만으로 감소될 수 있다. 블루투스 시스템의 경우, 파이프라인 관리자(638)는, 오디오 렌더링 스타트업 타이머를 비교적 높게, 예컨대 1초 또는 그 초과로 동적으로 리셋팅할 수 있다.
다른 예에서, 파이프라인 관리자(638)는, 셋업 시간으로 인한 지연을 감소시키기 위하여, 통신 세션의 능력 협상 기간 동안에 교환된 스트림 헤더 정보에 기초하여, 소스 디바이스로부터 미디어 데이터를 수신하기에 앞서 싱크 디바이스(660)에 있는 프로세싱 파이프라인(650)을 구성할 수 있다. 프로세싱 파이프라인(650)을 미리구성하기 위하여, 소스 디바이스 및 싱크 디바이스(660)는 먼저, 통신 채널을 경유해 전송될 미디어 데이터에 관한 정보를 포함하는 스트림 헤더 정보를 교환한다. 스트림 헤더 정보는, RTSP(Real Time Streaming Protocol) 또는 다른 사유 메시지들을 이용하여 교환될 수 있다. 그런 다음, 파이프라인 관리자(638)는 수신된 헤더 정보에 기초하여 프로세싱 파이프라인(650)을 셋업한다 ― 버퍼 크기들, 렌더링 스타트-업 타이머들, 동기화 대기 타이머들, 및 프로그래밍 가능한 디코더 셋팅들을 구성하는 것이 포함됨 ―. 프로세싱 파이프라인(650)이 구성된 이후, 싱크 디바이스(660)는 미디어 데이터를 전송하기를 시작하도록 소스 디바이스에 통지한다.
부가하여, 소스 디바이스로부터 수신된 미디어 데이터를 프로세싱하기에 앞서, 싱크 디바이스(660)는, 디코더(682)로부터 수신된 미디어 데이터 중 하나 또는 그 초과의 샘플들을 플러싱(flushing)시킬 수 있다. 미디어 데이터의 첫 번째 몇 개의 샘플들은, 통신 세션의 협상 기간 동안에 생성된 소스 디바이스 파이프라인으로부터의 오래된, 스톨된 샘플들을 포함할 수 있다. 기술들은, 스톨된 샘플들을 싱크 디바이스(660)에 있는 디코더(682)의 밖으로 푸쉬하기 위해, 소스 디바이스로부터 프레임들을 재전송하기 위한 중복된 푸쉬를 제공한다. 이러한 방식으로, 싱크 디바이스(660)는, 미디어 데이터의 오래된, 스톨된 샘플들에 대해 어떠한 프로세싱 시간도 낭비하지 않는다.
몇몇 경우들에서, 싱크 디바이스(660)에 있는 파이프라인 관리자(638)는, 렌더러(684)에 의한 렌더링을 위해 샘플들을 디코더(682)의 밖으로 푸쉬하기 위해, 더미 프레임들을 디코더(682)에 삽입할 수 있다. 이는, 디코더(682)가 프로그래밍 가능하지 않고 인입 미디어 데이터 샘플들의 POC(picture order count) 디코딩을 지원하지 않을 때, 필요할 수 있다. 디코더(682)가 프로그래밍 가능하고 POC를 지원하는 다른 경우들에서, 파이프라인 관리자(638)는, 디스플레이 오더 대신에, PIC 또는 디코딩 오더에 따라 미디어 데이터 샘플들을 출력하도록 디코더(682)를 구성할 수 있다. 디코딩 오더시 샘플을 출력하도록 프로그래밍 가능한 디코더(682)를 구성하는 것은, 디코더(682)로의 모든 각각의 입력 샘플이 디코딩이 완료되자마자 출력됨을 보장한다. 이러한 방식으로, 디코더(682)에서의 스톨들 및 지연들이 감소될 수 있거나 또는 제거될 수 있다. 부가하여, 파이프라인 관리자(638)는, 싱크 디바이스(660)에서 지연을 추가로 감소시키기 위해, 디코더(682)와 렌더러(684) 사이의 렌더 큐(694)에 포함된 버퍼들의 개수를 최소화시킬 수 있다. 예컨대, 렌더러(684)에 의한 렌더링에 앞서 미디어 데이터를 유지하기 위해 렌더 큐(694)는 4개 또는 더 적은 버퍼들을 포함할 수 있다.
부가하여, 본 개시물의 기술들에 따라, 파이프라인 관리자(638)는, 소스 디바이스로부터 수신된 미디어 데이터에 대한 애플리케이션 인지에 기초하여 싱크 디바이스(660)에서 맞춤화된 버퍼링을 제공하도록 프로세싱 파이프라인(650)을 구성한다. 구체적으로, 소스 디바이스(660)의 디코더(682)는 수신된 미디어 데이터에 대한 애플리케이션의 타입을 학습하고, 파이프라인 관리자(638)는, 프로세싱 파이프라인(650)에 있는 버퍼들의 크기를 조정하도록 프로세싱 파이프라인(650)을 구성한다. 이러한 방식으로, 싱크 디바이스(660)는, 미디어 데이터에 대한 애플리케이션 타입에 대해 평활도와 지연 사이에 적절한 균형을 달성할 수 있다. 파이프라인 관리자(638)는, 렌더 큐(694), 프레임 버퍼들(696), 또는 미디어 데이터에 대한 애플리케이션에서의 디스플레이에 앞서 데이터를 유지하는, 프로세싱 파이프라인(650)에 포함된 임의의 다른 버퍼의 크기를 조정할 수 있다.
예컨대, 미디어 데이터가 비디오 재생 애플리케이션에 대한 것일 때, 재생의 품질 또는 평활도는 싱크 디바이스(660)에서 최고 우선순위이고, 위에서 설명된 낮은 지연 기술들은 가시적 지터를 유발할 수 있다. 이러한 경우, 파이프라인 관리자(638)는, 비디오 재생 애플리케이션에서 미디어 데이터의 평활도를 증가시키기 위해, 프로세싱 파이프라인(650)에 있는 버퍼들의 크기를 증가시킬 수 있다. 그와는 반대로, 미디어 데이터가 사용자 인터페이스(UI) 애플리케이션 또는 게임 애플리케이션에 대한 것일 때, 낮은 지연이 싱크 디바이스(660)에서 최고 우선순위이다. 이러한 경우, 파이프라인 관리자(638)는, UI 또는 게임 애플리케이션에 대해 지연을 감소시키기 위해, 프로세싱 파이프라인(650)에 있는 버퍼들의 크기를 감소시킬 수 있다. 버퍼 크기를 감소시킴으로써, 파이프라인 관리자(638)는, UI 또는 게임 애플리케이션에 대한 미디어 데이터가, 스톨들 및 지연들 없이, 싱크 디바이스(660)에서 프로세싱 파이프라인(650)을 통해 이동하는 것을 인에이블링한다.
몇몇 경우들에서, WD 시스템에서 미디어 데이터에 대한 애플리케이션의 타입은 소스 디바이스에서 검출될 수 있고, 싱크 디바이스(660)에 시그널링될 수 있다. 예컨대, 싱크 디바이스(660)는, 소스 디바이스로부터 수신된 표시에 기초하여, 수신된 미디어 데이터에 대한 애플리케이션을 검출할 수 있다. 소스 디바이스는, 입입 오디오 레이트들 및 오디오 데이터의 스크린 업데이트 레이트들을 검출함으로써 미디어 데이터가 비디오 재생 애플리케이션에 대한 것이라고 결정할 수 있다. 소스 디바이스는, 비디오 재생 엔진에 대한 미디어 데이터의 스타트의 표시를 싱크 디바이스(660)에 전송할 수 있고, 비디오 재생 애플리케이션에 대한 미디어 데이터의 종료의 다른 표시를 싱크 디바이스(660)에 전송할 수 있다. 싱크 디바이스(660)는 미디어 플레이어 프로토콜로 또는 다른 사유 프로토콜로 미디어 데이터와 함께 플래그들 또는 다른 표시자들을 수신할 수 있다.
다른 경우들에서, 미디어 데이터에 대한 애플리케이션의 타입은 싱크 디바이스(660)에서 검출될 수 있다. 싱크 디바이스(660)에 있는 디코더(682)는, 규칙적인 간격들로 수신된 미디어 데이터에 포함된 오디오 타임 스탬프들에 기초하여, 수신된 미디어 데이터에 대한 애플리케이션의 타입을 결정할 수 있다. 미디어 데이터가 대응하는 오디오 데이터를 갖는 비디오 데이터를 규칙적인 간격들로 포함할 때, 미디어 데이터가 비디오 재생 애플리케이션에 대한 것임이 가정될 수 있다. 그러므로, 디코더(682)는, 비디오 재생 애플리케이션에 대한 미디어 데이터를 수신하면서, 규칙적인 간격들로 발생하는 오디오 타임 스탬프들을 검출할 수 있다.
어느 경우에서든, 싱크 디바이스(660)의 디코더(682)가 수신된 미디어 데이터가 비디오 재생 애플리케이션에 대한 것임을 학습할 때, 파이프라인 관리자(638)는, 비디오 재생 애플리케이션에서 디스플레이에 앞서 미디어 데이터를 유지하는데 사용되는 버퍼들, 예컨대 렌더 큐(694) 또는 프레임 버퍼들(696)의 크기를 증가시킨다. 예컨대, 파이프라인 관리자(638)는, 렌더 큐(694)에서 네 개보다 더 많은 버퍼들을 포함하도록, 그리고 네 개보다 더 많은 프레임 버퍼들(696), 예컨대 두 개의 핑-퐁 버퍼들과 적어도 2개의 유지 버퍼들을 포함하도록 프로세싱 파이프라인(650)을 구성할 수 있다. 버퍼들이 더 많은 양의 미디어 데이터를 유지할 수 있을 때, 프레임들을 드롭시킬 위험이 감소하고, 재생시 지터의 양이 또한 감소한다.
다른 한편으로, 싱크 디바이스(660)의 디코더(682)가 수신된 미디어 데이터가 비디오 재생 애플리케이션에 대한 것이 아니라 UI 또는 게임 애플리케이션에 대한 것임을 학습할 때, 파이프라인 관리자(638)는, UI 또는 게임 애플리케이션에서 디스플레이에 앞서 미디어 데이터를 유지하는데 사용되는 버퍼들의 크기를 감소시킨다. 예컨대, 파이프라인 관리자(638)는, 렌더 큐(694)에서 네 개 미만의 버퍼들을 포함하도록, 그리고 네 개 또는 그보다 더 적은 프레임 버퍼들(696), 예컨대 두 개의 핑-퐁 버퍼들과 기껏해야 2개의 유지 버퍼들을 포함하도록 프로세싱 파이프라인(650)을 구성할 수 있다. 이러한 방식으로, 지연을 개선시키기 위해 미디어 데이터는 싱크 디바이스(660)의 프로세싱 파이프라인(650)을 통해 더 신속하게 이동한다.
몇몇 경우들에서, 파이프라인 관리자(638)는, 부가적인 미디어 데이터 샘플들을 렌더 큐(694)에 저장하기 위하여, 임의의 시간 간격 동안, 렌더러(684)를 중지시킬 수 있다. 예컨대, 파이프라인 관리자(638)는, 임계 개수의 샘플들이 렌더 큐(694)에 저장될 때까지 렌더러(684)를 중지시킬 수 있고, 그런 다음 비디오 재생의 평활도를 증가시키기 위해 렌더링을 재개할 수 있다. 몇몇 경우들에서, 임계 개수의 샘플들은 여덟 개 샘플들, 16개 샘플들로 셋팅될 수 있거나, 또는 몇몇 경우들에서 16개 초과의 샘플들로 셋팅될 수 있다.
부가하여, 싱크 디바이스(660)는 소스 디바이스와의 통신 채널의 전송 조건들을 설명하는 피드백 정보를 소스 디바이스에 제공할 수 있다. 소스 디바이스는, 도 5에 대하여 위에서 더욱 상세히 설명된 바와 같이, 피드백 정보에 기초하여 자신의 프로세싱 파이프라인을 수정할 수 있다. 예컨대, 피드백 정보는, 싱크 디바이스(660)에서 결정되고 소스 디바이스에 통신되는 에러율 또는 패킷 손실을 포함할 수 있다. 몇몇 경우들에서, 무선 모뎀(634)은, WD 시스템에서 싱크 디바이스(660)와 소스 디바이스 사이에 설정된 UIBC를 경유해 싱크 디바이스(660)로부터 소스 디바이스에 피드백 정보를 전송할 수 있다. 다른 경우들에서, 무선 모뎀(634)은, 싱크 디바이스(660)로부터 상이한 소켓 링크를 경유해 소스 디바이스에 피드백 정보를 전송할 수 있다. 부가하여, 무선 모뎀(634)은, RTCP 또는 어떤 다른 맞춤화된 시그널링을 이용하여 피드백 정보를 통신할 수 있다.
도 7은 싱크 디바이스에서 획득된 사용자 입력 데이터 및/또는 피드백 데이터를 소스 디바이스에 전달하기 위해 사용될 수 있는 예시적 데이터 패킷(700)을 예시하는 개념적 도면이다. 데이터 패킷(700)의 양상들은 도 1을 참조하여 설명될 것이지만, 논의되는 기술들은 부가적인 타입들의 WD 시스템들에 적용가능할 수 있다. 데이터 패킷(700)은 데이터 패킷 헤더(710)와 그 뒤를 잇는 페이로드 데이터(750)를 포함할 수 있다. 데이터 패킷(700)은 예컨대, 싱크 디바이스(160)에 수신된 사용자 입력 데이터를 시그널링하기 위하여 또는 통신 채널(150)의 전송 조건들을 설명하는 피드백 정보를 시그널링하기 위해, 싱크 디바이스(160)로부터 소스 디바이스(120)로 전송될 수 있다.
페이로드 데이터(750)에 포함되는 데이터의 타입, 예컨대 사용자 입력 데이터 또는 피드백 데이터는 데이터 패킷 헤더(710)에서 식별될 수 있다. 이러한 방식으로, 데이터 패킷 헤더(710)의 콘텐츠에 기초하여, 소스 디바이스(120)는 싱크 디바이스(160)로부터의 사용자 입력 데이터 또는 피드백 데이터를 식별하기 위해 데이터 패킷(700)의 페이로드 데이터(750)를 파싱할 수 있다. 본 개시물에서 사용된 바와 같이, 용어들 "파스(parse)" 및 "파싱(parsing)"은 일반적으로 비트스트림으로부터 데이터를 추출하기 위해 상기 비트스트림을 분석하는 프로세스를 지칭한다. 데이터를 추출하는 것은, 예컨대, 비트스트림에 있는 정보가 어떻게 포맷팅되는지를 식별하는 것을 포함할 수 있다. 아래에 더욱 상세히 설명될 바와 같이, 데이터 패킷 헤더(710)는 페이로드 데이터(750)에 대해 많은 가능한 포맷들 중 하나를 정의할 수 있다. 데이터 패킷 헤더(710)를 파싱함으로써, 소스 디바이스(120)는 페이로드 데이터(750)가 어떻게 포맷팅되는지, 그리고 사용자 입력 커맨드들 또는 피드백 정보를 추출하기 위해 페이로드 데이터(750)를 어떻게 파싱할지를 결정할 수 있다.
몇몇 예들에서, 데이터 패킷 헤더(710)는 도 7에 도시된 바와 같이 포맷팅된 하나 또는 그 초과의 필드들(720)을 포함할 수 있다. 필드들(720)에 인접한 넘버들 0-15 및 비트 오프셋들 0, 16 및 32는, 데이터 패킷 헤더(710) 내의 비트 위치들을 식별하도록 의도되고, 데이터 패킷 헤더(710) 내에 포함된 정보를 실제로 표현하도록 의도되지 않는다. 데이터 패킷 헤더(710)는 버전 필드, 타임스탬프 플래그, 예약된 필드, 입력 카테고리 필드, 길이 필드, 및 선택적 타임스탬프 필드를 포함한다. 도 7의 예에서, 버전 필드는, 싱크 디바이스(160)에 의해 구현되고 있는 특정 통신 프로토콜의 버전을 표시할 수 있는 3-비트 필드이다. 버전 필드에 있는 값은, 데이터 패킷 헤더(710)의 나머지를 어떻게 파싱할지 뿐만 아니라 페이로드 데이터(750)를 어떻게 파싱할지를 소스 디바이스(120)에게 알려줄 수 있다.
도 7의 예에서, 타임스탬프 플래그(T)는, 타임스탬프 필드가 데이터 패킷 헤더(710)에 존재하는지 또는 아닌지를 표시하는 1-비트 필드이다. 존재할 때, 타임스탬프 필드는, 소스 디바이스(120)에 의해 생성되었고 싱크 디바이스(160)에 전송된 멀티미디어 데이터에 기초한 타임스탬프를 포함하는 16-비트 필드이다. 타임스탬프는, 예컨대, 프레임들이 싱크 디바이스(160)에 전송되기에 앞서 소스 디바이스(120)에 의해 비디오의 프레임들에 할당된 순차적 값일 수 있다. 데이터 패킷 헤더(710)를 파싱하고 타임스탬프 필드가 존재하는지를 결정할 때, 소스 디바이스(120)는 자신이 타임스탬프 필드에 포함된 타임스탬프를 프로세싱할 필요가 있는지를 안다. 도 7의 예에서, 예약된 필드는 버전 필드에서 식별되는 특정 프로토콜의 미래 버전들에 대해 예약된 8-비트 필드이다.
도 7의 예에서, 입력 카테고리 필드는, 페이로드 데이터(750)에 포함된 데이터에 대한 입력 카테고리를 식별하기 위한 4-비트 필드이다. 예컨대, 싱크 디바이스(160)는 입력 카테고리를 결정하기 위해 사용자 입력 데이터를 카테고리화할 수 있다. 사용자 입력 데이터는 디바이스 ― 상기 디바이스로부터 커맨드가 수신됨 ― 에 기초하여 또는 커맨드 자체의 특성들에 기초하여 카테고리화될 수 있다. 또한, 싱크 디바이스(160)는 입력 카테고리를 결정하기 위해 피드백 정보를 카테고리화할 수 있다. 피드백 정보는, 싱크 디바이스(160)에서 결정된 피드백 정보의 타입에 기초하여, 또는 피드백 정보에 기초하여 소스 디바이스(120)에 요청되는 동작의 타입에 기초하여, 카테고리화될 수 있다. 입력 카테고리 필드의 값은, 아마도 데이터 패킷 헤더(710)의 다른 정보와 함께, 페이로드 데이터(750)가 어떻게 포맷팅되는지를 소스 디바이스(120)에 식별시킨다. 이러한 포맷팅에 기초하여, 소스 디바이스(120)는, 사용자 입력 커맨드들 또는 피드백 정보를 추출하기 위해 페이로드 데이터(750)를 파싱할 수 있다.
길이 필드는 데이터 패킷(700)의 길이를 표시하기 위해 16-비트 길이를 포함할 수 있다. 데이터 패킷(700)이 소스 디바이스(120)에 의해 16개 비트들의 워드들로 파싱되기 때문에, 데이터 패킷(700)은 16개 비트들의 정수까지 패딩(padding)될 수 있다. 길이 필드에 포함된 길이에 기초하여, 소스 디바이스(120)는 페이로드 데이터(750)의 종료(즉, 데이터 패킷(700)의 종료) 및 새로운 후속 데이터 패킷의 시작을 식별할 수 있다.
도 7의 예에 제공된 필드들의 다양한 크기들은 단지 설명을 위한 것으로 의도되고, 필드들이 도 7에 도시된 것과 상이한 개수들의 비트들을 이용하여 구현될 수 있음이 의도된다. 부가하여, 데이터 패킷 헤더(710)가 위에서 논의된 필드들 전부보다 더 적은 필드들을 포함할 수 있거나 또는 위에서 논의되지 않은 부가적인 필드들을 사용할 수 있음이 또한 고려된다. 실제, 본 개시물의 기술들은, 패킷들의 다양한 데이터 필드들에 대해 사용되는 실제 포맷 면에서 유연할 수 있다.
도 8은 프로세싱 파이프라인에서 미디어 데이터의 낮은-지연 프레임 캡쳐 및 버퍼링을 지원할 수 있는 소스 디바이스의 예시적 동작을 예시하는 흐름차트이다. 예시된 동작은 도 5로부터의 소스 디바이스(520)에 포함된 프로세싱 파이프라인(550)에 대하여 설명될 것이다. 다른 예들에서, 예시된 동작은 도 2로부터의 소스 디바이스(220), 도 1로부터의 소스 디바이스(120), 또는 WD 시스템의 다른 소스 디바이스에 의해 수행될 수 있다.
소스 디바이스(520)는 먼저, WD 시스템에서 하나 또는 그 초과의 싱크 디바이스들과의 통신 세션을 설정한다(800). 소스 디바이스(520)는 싱크 디바이스들과의 능력 협상에 따라 통신 세션을 설정할 수 있다. 본 개시물의 기술들에 따라, 미디어 데이터의 낮은-지연 프레임 캡쳐 및 버퍼링을 지원하기 위하여, 소스 디바이스(520)의 파이프라인 관리자(538)는 최소-크기 버퍼들을 포함하도록 프로세싱 파이프라인(550)을 구성한다(802). 구체적으로, 파이프라인 관리자(538)는, WB 버퍼들의 크기를 감소시키기 위해, 단지 두 개의 핑-퐁 버퍼들을 포함하도록 프로세싱 파이프라인(550)을 구성할 수 있다. 미디어 데이터가 프로세싱 파이프라인(550)을 따라서 이동하도록 하는 버퍼들의 개수를 감소시키는 것은, 소스 디바이스(520)에서의 지연을 감소시킬 것이다. 부가하여, 파이프라인 관리자(538)는, 프레임 버퍼들(542)의 크기를, 적어도 미디어 데이터의 가장 최신 프레임 업데이트를 유지할 수 있는 최소-크기 프레임 버퍼들로 감소시키도록 프로세싱 파이프라인(550)을 구성할 수 있다.
추가로, 기술들에 따라, 파이프라인 관리자(538)는, 프로세싱 파이프라인(550)에서 미디어 데이터의 DMA를 수행하기 위해 하드웨어 가속기(536)를 사용하도록 프로세싱 파이프라인(550)을 구성할 수 있다(804). 표준 메모리 카피를 사용하여, 메모리(532), 및 프로세싱 파이프라인(550)에 있는 버퍼들로부터 미디어 데이터의 프레임 업데이트들을 리트리빙하는 것은, 너무 많은 CPU 로드를 사용한다. 미디어 데이터의 프레임 레이트를 증가시키고 지연을 감소시키기 위하여, 프로세싱 파이프라인(550)은 대신에, CPU와 무관하게, 하드웨어 가속기(536)를 이용하여, 프레임 업데이트들에 액세스하고 프로세싱 파이프라인(550)의 프로세싱 유닛들 사이에서 프레임 업데이트들을 이동시킨다.
프로세싱 파이프라인(550)이 소스 디바이스(520)에서 구성된 이후, 소스 디바이스(520)는 WD 시스템에서 싱크 디바이스로의 송신을 위해 미디어 데이터를 프로세싱하기를 시작할 수 있다. 디스플레이 프로세서(535)는 미디어 소스로부터 미디어 데이터의 프레임 업데이트들을 캡쳐한다(806). 미디어 소스는 소스 디바이스(520) 내에 포함된 카메라 또는 다른 미디어 캡쳐 디바이스일 수 있거나, 또는 유선 연결 또는 무선 연결 중 어느 한 쪽을 통해 소스 디바이스(520)에 연결된 외부 미디어 소스일 수 있다. 프레임 업데이트들은 미디어 데이터의 전체 프레임들, 프레임들의 업데이트된 부분들만을 표현하는 부분 프레임들, 또는 둘의 어떤 결합을 포함할 수 있다.
프레임 업데이트를 캡쳐한 이후, 디스플레이 프로세서(535)는, 최소-크기 WB 버퍼들(540)이 가득 찬 상태인지를 결정하기 위해 요청을 WB 버퍼들(540)에 전송한다(808). 최소-크기 WB 버퍼들(540)이 가득 찬 상태라면(808의 예 분기), 디스플레이 프로세서(535)로부터 요청을 수신하는 것은, WB 버퍼들(540)이 WB 버퍼들(540)에 유지된 더 오래된 프레임 업데이트들 중 하나 또는 그 초과를 드롭시키도록 트리거링할 것이다(810). 더 오래된 프레임 업데이트들을 드롭시킨 이후, WB 버퍼들(540)은 디스플레이 프로세서(535)에 의해 캡쳐된 가장 최신 프레임 업데이트를 버퍼링한다(812). 디스플레이 프로세서(525)로부터 요청을 수신할 때 최소-크기 WB 버퍼들(540)이 가득 찬 상태가 아니라면(808의 아니오 분기), WB 버퍼들(540)은 디스플레이 프로세서(535)에 의해 캡쳐된 가장 최신 프레임 업데이트를 즉시 버퍼링한다(812). 프레임 버퍼들(542)과 같은, 프로세싱 파이프라인(550)을 따라서 있는 다른 최소-크기 버퍼들에 프레임 업데이트들을 버퍼링하기 위해 유사한 프로세스들이 사용될 수 있다.일단 가장 최신 프레임 업데이트가 WB 버퍼들(540)에 유지되면, 프레임 업데이트는 그런 다음, WB 버퍼들(540)로부터 하드웨어 가속기(536)를 통해 메모리(532)에 기록될 수 있다.
부가하여, 하드웨어 가속기(536)는, WB 버퍼들(540)로부터 프레임 업데이트들을 리트리빙하고, 프로세싱 파이프라인(550)을 따라서 프로세싱 유닛들과 버퍼들 사이에 프레임 업데이트들을 이동시킨다(814). 그런 다음, 리트리빙된 프레임 업데이트들은, WD 시스템에서 싱크 디바이스들로의 송신을 위해 프로세싱 파이프라인(550)에서 프로세싱된다(816). 예컨대, 프로세서(531) 내에서, 비디오 프로세싱 엔진(VPE)(560)이 프레임 업데이트들을 프레임 버퍼들(542)로 렌더링하고, 인코더(562)가 프레임 버퍼들(542)로부터의 프레임들 업데이트들을 인코딩한다. 인코딩된 프레임 업데이트들은, 전송 유닛(533) 내의 패킷타이저(564)를 이용하여 프레임 업데이트들을 패킷들로 형성하기에 앞서, 코딩된 픽처 버퍼(CPB)들(544)에 버퍼링될 수 있다. 기술들에 따라, 인코딩된 프레임 업데이트들의 메모리 카피를 CPB들(544)에 버퍼링하는 대신에, 인코딩된 프레임 업데이트의 메모리 카피를 생성하는 것 없이, 메모리(532)에 저장되는 인코딩된 프레임 업데이트들에 대한 포인터가 CPB들(544)에 버퍼링될 수 있다.
그런 다음, 무선 모뎀(534)은, 프로세싱된 프레임 업데이트들을 WD 시스템에서 통신 세션을 경유해 하나 또는 그 초과의 싱크 디바이스들에 전송한다(818). 프로세싱된 프레임 업데이트들을 전송한 이후, 무선 모뎀(534)은, 새로운 프레임 업데이트가 송신을 위해 수신될 때까지 미리결정된 시간 기간 이후에 상기 프로세싱된 프레임 업데이트들을 재전송(즉, 중복 푸쉬를 수행)할 수 있다. 중복 푸쉬는, 싱크 디바이스들이 전송된 프레임 업데이트들을 수신하고 그리고 드롭된 패킷들을 대기하면서 프로세싱 시간을 낭비하지 않음을 보장함으로써, WD 시스템에서 종단 간 지연을 감소시킬 수 있다.
도 9는 프로세싱 파이프라인에서 맞춤화된 비디오 재생을 지원할 수 있는 싱크 디바이스의 예시적 동작을 예시하는 흐름차트이다. 예시된 동작은 도 6으로부터의 싱크 디바이스(660)에 포함된 프로세싱 파이프라인(650)에 대하여 설명될 것이다. 다른 예들에서, 예시된 동작은 도 3으로부터의 싱크 디바이스(360), 도 1로부터의 싱크 디바이스(160), 또는 WD 시스템의 다른 싱크 디바이스에 의해 수행될 수 있다.
싱크 디바이스(660)는 먼저, WD 시스템에서 소스 디바이스와의 통신 세션을 설정한다(900). 싱크 디바이스(660)는 소스 디바이스와의 능력 협상에 따라 통신 세션을 설정할 수 있다. 본 개시물의 기술들에 따라, 프로세싱 파이프라인(650)에서 맞춤화된 비디오 재생을 지원하기 위하여, 싱크 디바이스(660)는 통신 세션에 대한 능력 협상 기간 동안 소스 디바이스와 미디어 데이터의 스트림에 대한 스트림 헤더 정보를 교환한다(902). 그런 다음, 파이프라인 관리자(638)는, 수신된 스트림 헤더 정보에 기초하여, 싱크 디바이스(660)에서 프로세싱 파이프라인(650)을 구성한다(904).
예컨대, 스트림 헤더 정보에 기초하여, 파이프라인 관리자(638)는, 소스 디바이스로부터 미디어 데이터를 수신하기에 앞서, 프로세싱 파이프라인(650) 내에서 버퍼 크기들, 렌더링 스타트-업 타이머들, 동기화 대기 타이머들, 및 프로그램 가능한 디코더 셋팅들 등등을 구성할 수 있다. 일단 프로세싱 파이프라인(650)이 미디어 데이터의 스트림에 대해 싱크 디바이스(650)에서 구성된다면, 무선 모뎀(634)은 미디어 데이터의 스트림을 싱크 디바이스(660)에 전송하도록 소스 디바이스에 통지할 수 있다(906). 이러한 방식으로, 디코딩 및 렌더링될 미디어 데이터를 소스 디바이스로부터 수신할 때, 싱크 디바이스(660)는 프로세싱 파이프라인(650)을 셋업하기 위해 어떠한 프로세싱 시간도 낭비하지 않는다.
프로세싱 파이프라인(650)이 구성된 이후, 싱크 디바이스(660)는 소스 디바이스로부터 미디어 데이터를 수신하기를 시작한다(908). 파서(680)는 인코딩된 미디어 데이터를 디-패킷타이징한다. 그런 다음, 디코더(682)는 수신된 미디어 데이터를 디코딩한다(910). 수신된 미디어 데이터는 적어도 비디오 데이터를 포함한다. 디코딩할 때, 디코더(682) 또는 프로세싱 파이프라인(650)에 있는 어떤 다른 프로세싱 유닛은, 디코딩된 미디어 데이터가 오디오 데이터를 포함하는지를 검출한다(912). 예컨대, 디코더(682)는, 미디어 데이터가 오디오 데이터를 포함함을 표시하는 오디오 타임 스탬프를 수신된 미디어 데이터에서 검출함으로써, 미디어 데이터가 오디오 데이터를 포함한다고 결정할 수 있다. 유사하게, 디코더(682)는, 수신된 미디어 데이터에서 오디오 타임 스탬프의 부재에 기초하여, 미디어 데이터가 비디오 데이터만을 포함한다고 결정할 수 있다.
오디오 데이터가 미디어 데이터에 포함되지 않는다면(914의 아니오 분기), 프로세싱 파이프라인(650)비디오 데이터의 가속된 렌더링을 수행한다. 더욱 구체적으로는, 파이프라인 관리자(638)는 렌더러(684)에서 오디오 데이터와 비디오 데이터의 동기화를 디스에이블링한다(916). 그런 다음, 렌더러(684)는, 존재하지 않는 오디오 데이터와 동기화하기를 대기하는 것 없이, 비디오 데이터를 렌더링한다(918). 몇몇 경우들에서, 미디어 데이터가 비디오 데이터만을 포함할 때, 파이프라인 관리자(638)는, 동기화를 명시적으로 디스에이블링하는 것이 아니라, 임의의 오디오 데이터를 무시하도록 그리고 존재하지 않는 오디오 데이터와 동기화하기를 대기하는 것 없이 비디오 데이터를 렌더링하도록 렌더러(684)를 구성할 수 있다. 부가하여, 파이프라인 관리자(638)는 또한, 렌더러(684)에 적용가능한 미디어 시간에 기초하여 비디오 데이터의 샘플 시간을 증가시킬 수 있다. 이러한 방식으로, 렌더러(684)는 증가된 샘플 시간에 따라 비디오 데이터의 가속된 렌더링을 수행할 수 있다.
오디오 데이터가 미디어 데이터에 포함된다면(914의 예 분기), 파이프라인 관리자(638)는 렌더러(684)에 있는 오디오 렌더링 스타트-업 타이머를 감소시킬 수 있다(920). 예컨대, 몇몇 통신 시스템들의 경우, 렌더러(684)에 있는 오디오 렌더링 스타트-업 타이머는 통신 시스템의 초기화 시간을 보상하기 위해 높게 유지될 수 있다. 이는, WD 시스템에 필요하지 않다. 그러므로, 파이프라인 관리자(638)는, 심지어 오디오 데이터가 미디어 데이터에 포함될 때에도 지연을 감소시키기 위하여, WD 시스템에 대한 오디오 렌더링 스타트-업 타이머를 감소시킬 수 있다. 그런 다음, 렌더러(638)는 오디오 데이터와 비디오 데이터를 동기화할 수 있고(922), 감소된 스타트-업 타이머에 따라 동기화된 비디오 데이터 및 오디오 데이터를 렌더링할 수 있다(924).
몇몇 경우들에서, 비디오 데이터의 프레임들은 디코더(682)에서 스톨될 수 있고, 싱크 디바이스(660)에서 부가적인 지연을 유발할 수 있다 ― 이때, 렌더러(684)가 디코더(682)로부터 다음 차례의 비디오 프레임을 수신하기를 대기함 ―. 기술들에 따라, 디코더(682)가 프로그래밍 가능하지 않은 디코더일 때, 파이프라인 관리자(638)는, 비디오 데이터의 디코딩된 샘플들을 렌더링을 위해 디코더(682)의 밖으로 푸쉬하기 위해, 싱크 디바이스(660)에서 더미 프레임들을 비디오 데이터에 삽입할 수 있다. 디코더(682)가 프로그래밍 가능한 디코더일 때, 파이프라인 관리자(638)는, 디코딩이 완료되자마자 렌더링을 위해 디코딩 순서대로 비디오 데이터의 디코딩된 샘플들을 출력하도록 프로그래밍 가능한 디코더(682)를 구성할 수 있다. 통상적으로, 디코더들은 디폴트로 디스플레이 순서대로 샘플들을 출력한다. 이러한 경우, 파이프라인 관리자(638)는 디코딩된 프레임들을 디코더(682)를 통해 더 신속하게 이동시키기 위해 디폴트 셋팅을 변경할 수 있다.
부가하여, 소스 디바이스로부터 미디어 데이터를 수신할 때, 파이프라인 관리자(638)는, 수신된 미디어 데이터를 렌더링하기에 앞서, 수신된 미디어 데이터 중 하나 또는 그 초과의 샘플들을 디코더(682)의 밖으로 플러싱시킬 수 있다. 몇몇 경우들에서, 소스 디바이스로부터 전송된 미디어 데이터의 첫 번째 몇 개의 샘플들은, 소스 디바이스에 있는 오래된 미디어 데이터의 스톨된 샘플들을 포함할 수 있다. 파이프라인 관리자(638)는, 오래된 미디어 데이터에 대해 프로세싱 시간 및 자원들을 쓰는 것을 방지하기 위해, 싱크 디바이스(660)로부터 이러한 샘플들을 플러싱할 수 있다.
도 10은 프로세싱 파이프라인에서 미디어 데이터 애플리케이션 인지에 기초하여 맞춤화된 버퍼링을 지원할 수 있는 싱크 디바이스의 예시적 동작을 예시하는 흐름차트이다. 예시된 동작은 도 6으로부터의 싱크 디바이스(660)에 포함된 프로세싱 파이프라인(650)에 대하여 설명될 것이다. 다른 예들에서, 예시된 동작은 도 3으로부터의 싱크 디바이스(360), 도 1로부터의 싱크 디바이스(160), 또는 WD 시스템의 다른 싱크 디바이스에 의해 수행될 수 있다.
싱크 디바이스(660)는 먼저, WD 시스템에서 소스 디바이스와의 통신 세션을 설정한다(1000). 싱크 디바이스(660)는 소스 디바이스와의 능력 협상에 따라 통신 세션을 설정할 수 있다. 그런 다음, 싱크 디바이스(660)는 소스 디바이스로부터 미디어 데이터를 수신하기를 시작한다(1010). 본 개시물의 기술들에 따라, 프로세싱 파이프라인(650)에서 미디어 데이터에 대한 애플리케이션의 타입에 기초하여 맞춤화된 버퍼링을 지원하기 위하여, 싱크 디바이스(660)는 수신된 미디어 데이터에 대한 애플리케이션의 타입을 학습하고, 파이프라인 관리자(638)는 애플리케이션의 타입에 기초하여 프로세싱 파이프라인(650)에 있는 버퍼들의 크기를 조정한다.
수신된 미디어 데이터에 대한 애플리케이션 타입을 학습하기 위하여, 파서(680)는 먼저, 미디어 데이터에 대한 애플리케이션의 타입의 표시가 소스 디바이스로부터 미디어 데이터와 함께 수신되는지를 결정한다(1020). 표시가 소스 디바이스로부터 수신된다면(1020의 예 분기), 싱크 디바이스(660)의 디코더(682)는 소스 디바이스로부터의 표시에 기초하여 미디어 데이터에 대한 애플리케이션의 타입을 학습한다(1030). 이러한 경우, WD 시스템에 있는 소스 디바이스는, 미디어 데이터에 대한 애플리케이션의 타입을 검출하고, 미디어 데이터에 대한 애플리케이션의 타입의 표시와 함께 미디어 데이터를 싱크 디바이스(660)에 전송한다. 몇몇 경우들에서, 예컨대, 싱크 디바이스(660)는 비디오 재생 애플리케이션에 대한 미디어 데이터의 스트림의 표시를 소스 디바이스로부터 수신할 수 있고, 싱크 디바이스(660)는 또한, 비디오 재생 애플리케이션에 대한 미디어 데이터의 스트림의 종료의 표시를 소스 디바이스로부터 수신할 수 있다.
표시가 소스 디바이스로부터 수신되지 않는다면(1020의 아니오 분기), 싱크 디바이스(660)의 디코더(682)는, 미디어 데이터에서 오디오 타임 스탬프들의 존재 또는 부재에 기초하여, 미디어 데이터에 대한 애플리케이션의 타입을 학습한다(1040). 예컨대, 디코더(682)는, 미디어 데이터에서 규칙적인 간격들로 오디오 타임 스탬프들을 검출함으로써, 미디어 데이터가 비디오 재생 애플리케이션에 대한 것이라고 결정할 수 있다. 다른 예로서, 디코더(682)는, 수신된 미디어 데이터에서 규칙적인 간격들로 오디오 타임 스탬프들의 부재에 기초하여, 미디어 데이터가 UI 또는 게임 애플리케이션에 대한 것이라고 결정할 수 있다.
싱크 디바이스(660)의 디코더(682)가 수신된 미디어 데이터에 대한 애플리케이션의 타입이 UI 또는 게임 애플리케이션이고 비디오 재생 애플리케이션이 아님을 학습할 때(1050의 아니오 분기), 파이프라인 관리자(638)는, UI 또는 게임 애플리케이션에서 디스플레이에 앞서, 프로세싱 파이프라인(650)에서 미디어 데이터를 유지하는 버퍼들의 크기들을 감소시키도록 프로세싱 파이프라인(650)을 구성한다(1060). 예컨대, 파이프라인 관리자(638)는, 버퍼들을 통해 이동하는 미디어 데이터의 지연을 감소시키기 위해, 렌더 큐(694)의 크기 및/또는 프레임 버퍼들(696)의 크기를 감소시킬 수 있다. UI 또는 게임 애플리케이션들의 경우, WD 시스템에서의 주요 관심사는 낮은 지연 사용자 경험을 제공하는 것이다 ― 이때, 비디오 재생 품질은 덜한 관심사임 ―.
싱크 디바이스(660)의 디코더(682)가 수신된 미디어 데이터에 대한 애플리케이션의 타입이 비디오 재생 애플리케이션임을 학습할 때(1050의 예 분기), 파이프라인 관리자(638)는, 비디오 재생 애플리케이션에서 디스플레이에 앞서, 프로세싱 파이프라인(650)에서 미디어 데이터를 유지하는 버퍼들의 크기들을 증가시킬 수 있다(1070). 예컨대, 파이프라인 관리자(638)는, 비디오 재생 애플리케이션에서 비디오 재생의 품질(즉, 평활도)을 개선시키기 위해, 렌더 큐(694)의 크기 및/또는 프레임 버퍼들(696)의 크기를 증가시킬 수 있다. 버퍼 크기들을 증가시키는 것이 지연을 증가시킬 수 있지만, 비디오 재생 애플리케이션들의 경우에 주요 관심사는, 고품질 비디오 재생 사용자 경험을 제공하는 것이다 ― 이때, 증가된 지연의 어떤 트레이드오프가 있음 ―.
렌더러(684)는, 미디어 데이터에 대해 표시된 애플리케이션의 타입에서 사용하기 위해 프로세싱 파이프라인(650)에서 렌더 큐(694)로부터 프레임 버퍼들(696)로 미디어 데이터를 렌더링한다(1080). 그런 다음, 디스플레이 프로세서(635)는, 싱크 디바이스(660)에서 동작하는 미디어 데이터에 대한 애플리케이션에서 프레임 버퍼들(696)로부터의 렌더링된 미디어 데이터를 디스플레이한다(1090).
몇몇 경우들에서, 미디어 데이터가 비디오 재생 애플리케이션에 대한 것일 때, 파이프라인 관리자(638)는, 싱크 디바이스(660)가 미디어 데이터의 부가적인 샘플들을 수신하도록 하기 위하여, 렌더 큐(694)로부터 미디어 데이터의 렌더링을 중지하도록 렌더러(684)에게 지시할 수 있다. 그런 다음, 파이프라인 관리자(638)는, 미디어 데이터의 임계 개수의 샘플들이 렌더 큐(694)에 저장된 이후 렌더 큐(694)로부터 미디어 데이터의 렌더링을 재개하도록 렌더러(684)에게 지시한다. 이러한 방식으로, 미디어 데이터의 다수의 샘플들이 렌더 큐(694)에서 렌더링되도록 준비되게 함으로써, 비디오 재생의 품질 또는 평활도는 추가로 개선될 수 있다.
도 11은 WD 시스템에서 오디오 데이터의 우선순위화된 전송을 지원할 수 있는 소스 디바이스 및 싱크 디바이스의 예시적 동작을 예시하는 흐름차트이다. 예시된 동작은 도 5로부터의 소스 디바이스(520)에 있는 프로세싱 파이프라인(550)에 대하여 그리고 도 6으로부터의 싱크 디바이스(660)에 포함된 프로세싱 파이프라인(650)에 대하여 설명될 것이다. 다른 예들에서, 예시된 동작은 도 2로부터의 소스 디바이스(220), 도 3으로부터의 싱크 디바이스(360), 도 1로부터의 소스 디바이스(120) 및 싱크 디바이스(160), 또는 WD 시스템의 다른 소스 디바이스들 및 싱크 디바이스들에 의해 수행될 수 있다.
소스 디바이스(520)는 먼저, WD 시스템에서 싱크 디바이스(660)와의 통신 세션을 설정한다(1100). 소스 디바이스(520) 및 싱크 디바이스(660)는 능력 협상에 따라 통신 세션을 설정할 수 있다. 본 개시물의 기술들에 따라, 오디오 데이터의 우선순위화된 전송을 제공하기 위하여, 소스 디바이스(520)에 있는 파이프라인 관리자(538)는, 프로세싱 파이프라인(550)에 있는 비디오 경로보다 더 많은 버퍼링을 포함하도록 프로세싱 파이프라인(550)에 있는 오디오 경로를 구성한다(1110). 부가하여, 소스 디바이스(520)에 있는 파이프라인 관리자(538)는, 무선 모뎀 소켓(570)에 있는 비디오 전송 큐보다 더 높은 우선순위를 갖는, 무선 모뎀 소켓(570)에 있는 오디오 전송 큐를 구성한다(1120).
일단 오디오 데이터에 대한 우선순위화된 전송 경로가 구성되면, 소스 디바이스(520)는 별개의 프로세싱 파이프라인 경로들에서 오디오 데이터 및 비디오 데이터를 프로세싱하기를 시작한다(1130). 오디오 및 비디오 데이터가 프로세싱된 이후, 무선 모뎀(534)은, 소켓(570)에 있는 별개의 전송 큐들로부터 싱크 디바이스(660)에 오디오 데이터 및 연관된 비디오 데이터를 전송한다(1140).
싱크 디바이스(660)는, WD 시스템에서 통신 채널을 경유해 소스 디바이스(520)로부터 오디오 데이터 및 연관된 비디오 데이터를 수신한다(1150). 싱크 디바이스(660)의 프로세서(631)는 수신된 미디어 데이터에 기초하여 통신 채널의 전송 조건들을 결정할 수 있다(1160). 예컨대, 싱크 디바이스(660)의 프로세서(631)는, 통신 채널을 경유한 전송 이후, 미디어 데이터에 대한 에러율 또는 패킷 손실량을 결정할 수 있다. 싱크 디바이스(660)의 전송 유닛(633)은, 싱크 디바이스(660)로부터의, 통신 채널의 전송 조건들을 설명하는 피드백 정보를, 역으로 소스 디바이스(520)에 전송하기 위해 패킷을 생성할 수 있다(1170). 예컨대, 무선 모뎀(634)은, RTCP를 이용하여, 싱크 디바이스(660)로부터 UIBC 또는 다른 피드백 채널을 경유해 소스 디바이스(660)에 패킷을 전송할 수 있다.
통신 채널의 전송 조건들을 설명하는 피드백 정보를 수신할 때, 소스 디바이스(520)의 파이프라인 관리자(538)는, 싱크 디바이스(660)로부터의 피드백 정보에 기초하여, 프로세싱 파이프라인(550)을 수정할 수 있다(1180). 일단 프로세싱 파이프라인(550)이 통신 채널에 대해 구성되면, 소스 디바이스(520)는, 별개의 프로세싱 파이프라인 경로들에서 오디오 데이터 및 비디오 데이터를 프로세싱(1130)하는 것, 그리고 소켓(570)에 있는 별개의 전송 큐들로부터의 오디오 데이터 및 연관된 비디오 데이터를 싱크 디바이스(660)에 전송(1140)하는 것을 재개한다.
하나 또는 그 초과의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 결합으로 구현될 수 있다. 소프트웨어로 구현된다면, 기능들은 컴퓨터-판독가능 매체 상에 저장될 수 있거나 또는 컴퓨터-판독가능 매체 상의 하나 또는 그 초과의 명령들 또는 코드로서 컴퓨터-판독가능 매체를 통해 전송될 수 있다. 컴퓨터-판독가능 미디어는 컴퓨터 데이터 스토리지 미디어 또는 통신 미디어 ― 한 장소로부터 다른 장소로 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함함 ― 를 포함할 수 있다. 몇몇 예들에서, 컴퓨터-판독가능 미디어는 비-일시적 컴퓨터-판독가능 미디어를 포함할 수 있다. 데이터 스토리지 미디어는, 본 개시물에 설명된 기술들의 구현을 위해 명령들, 코드 및/또는 데이터 구조들을 리트리빙하기 위해 하나 또는 그 초과의 컴퓨터들 또는 하나 또는 그 초과의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능한 미디어일 수 있다.
예로서 ― 그러나, 제한은 아님 ―, 그러한 컴퓨터-판독가능 미디어는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지, 또는 다른 자기 스토리지 디바이스들, 플래시 메모리, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 운반하거나 또는 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체와 같은 비-일시적 미디어를 포함할 수 있다. 또한, 임의의 연결이 적절하게 컴퓨터-판독가능 매체로 불린다. 예컨대, 소프트웨어가 웹사이트, 서버, 또는 다른 원격 소스로부터 동축 케이블, 광섬유 케이블, 트위스트 페어, DSL(digital subscriber line), 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술들을 이용하여 전송된다면, 동축 케이블, 광섬유 케이블, 트위스트 페어, DSL, 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술들이 매체의 정의에 포함된다. 본원에 사용된 바와 같은 디스크(disk) 및 디스크(disc)는, CD(compact disc), 레이저 디스크(disc), 광학 디스크(disc), DVD(digital versatile disc), 플로피 디스크(disk) 및 Blu-ray 디스크(disc)를 포함하고, 여기서 디스크(disk)들이 보통 데이터를 자기적으로 재생하는 반면에, 디스크(disc)들은 레이저들을 이용하여 데이터를 광학적으로 재생한다. 위의 결합들이 또한 컴퓨터-판독가능 미디어의 범위 내에 포함되어야 한다.
코드는 하나 또는 그 초과의 프로세서들, 예컨대 하나 또는 그 초과의 DSP(digital signal processor)들, 일반 목적 마이크로프로세서들, ASIC(application specific integrated circuit)들, FPGA(field programmable logic array)들, 또는 다른 등가 집적 또는 이산 로직 회로에 의해 실행될 수 있다. 따라서, 본원에 사용된 바와 같은 용어 "프로세서"는, 앞의 구조, 또는 본원에 설명된 기술들의 구현에 적절한 임의의 다른 구조 중 임의의 것을 지칭할 수 있다. 부가하여, 몇몇 양상들에서, 본원에 설명된 기능은, 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수 있거나, 또는 결합된 코덱에 통합될 수 있다. 또한, 기술들은 하나 또는 그 초과의 회로들 또는 로직 엘리먼트들로 완전히 구현될 수 있다.
본 개시물의 기술들은, 무선 핸드세트, IC(integrated circuit) 또는 IC들의 세트(즉, 칩셋)를 포함하는 폭넓게 다양한 디바이스들 또는 장치들로 구현될 수 있다. 다양한 컴포넌트들, 모듈들, 또는 유닛들은, 본 개시물에서, 기재된 기술들을 수행하도록 구성된 디바이스들의 기능적 양상들을 강조하기 위해 설명되지만, 반드시 상이한 하드웨어 유닛들에 의한 구현을 요구하는 것은 아니다. 그보다는, 위에서 설명된 바와 같이, 다양한 유닛들이, 적절한 소프트웨어 및/또는 펌웨어와 함께, 코덱 하드웨어 유닛으로 결합될 수 있거나 또는 위에서 설명된 바와 같은 하나 또는 그 초과의 프로세서들을 포함하는 협력하는 하드웨어 유닛들의 집합에 의해 제공될 수 있다.
본 발명의 다양한 실시예들이 설명되었다. 이들 그리고 다른 실시예들은 다음의 청구항들의 범위 내에 있다.

Claims (48)

  1. 방법으로서,
    무선 디스플레이(WD: Wireless Display) 시스템에서 하나 또는 그 초과의 싱크 디바이스들과의 통신 세션을 소스 디바이스에서 설정하는 단계;
    상기 소스 디바이스에서 미디어 데이터의 프레임 업데이트들을 캡쳐하는 단계;
    적어도 캡쳐된 프레임 업데이트들 중 가장 최신 프레임 업데이트를, 상기 소스 디바이스의 프로세싱 파이프라인에 포함된 최소-크기 버퍼들에 버퍼링하는 단계;
    하드웨어 가속을 이용하여, 상기 최소-크기 버퍼들에서 상기 프레임 업데이트들을 리트리빙하는 단계; 및
    상기 하나 또는 그 초과의 싱크 디바이스들로의 송신을 위해 상기 프로세싱 파이프라인을 이용하여 상기 최소-크기 버퍼들로부터 리트리빙된 상기 프레임 업데이트들을 프로세싱하는 단계
    를 포함하는,
    방법.
  2. 제 1 항에 있어서,
    미디어 데이터의 프레임 업데이트들을 캡쳐하는 단계는 상기 소스 디바이스의 메모리에 프레임 업데이트들을 저장하는 단계를 포함하는,
    방법.
  3. 제 2 항에 있어서,
    적어도 상기 프레임 업데이트들 중 가장 최신 프레임 업데이트를 버퍼링하는 단계는, 상기 메모리에 저장된 상기 프레임 업데이트들 중 상기 가장 최신 프레임 업데이트의 메모리 카피 중 하나, 또는 상기 메모리에 저장된 상기 프레임 업데이트들 중 상기 가장 최신 프레임 업데이트에 대한 포인터를 버퍼링하는 단계를 포함하는,
    방법.
  4. 제 1 항에 있어서,
    적어도 상기 프레임 업데이트들 중 가장 최신 프레임 업데이트를 버퍼링하는 단계는,
    상기 최소-크기 버퍼들이 가득 찰 때, 상기 최소-크기 버퍼들로부터 상기 미디어 데이터의 더 오래된 프레임 업데이트들을 드롭하는 단계; 및
    상기 프레임 업데이트들 중 상기 가장 최신 프레임 업데이트를 상기 최소-크기 버퍼들에 버퍼링하는 단계
    를 포함하는,
    방법.
  5. 제 1 항에 있어서,
    하드웨어 가속을 이용하여 상기 프레임 업데이트들을 리트리빙하는 단계는, 상기 소스 디바이스의 중앙 프로세싱 유닛(CPU)을 사용하는 것 없이, 상기 소스 디바이스의 상기 프로세싱 파이프라인에서 상기 최소-크기 버퍼들과 프로세싱 유닛들 사이에 상기 프레임 업데이트들을 이동시키는 단계를 포함하는,
    방법.
  6. 제 1 항에 있어서,
    상기 WD 시스템에서 상기 통신 세션을 설정할 때, 상기 프로세싱 파이프라인에서 지연을 감소시키기 위해, 상기 최소-크기 버퍼들을 포함하도록 그리고 하드웨어 가속을 사용하도록 상기 소스 디바이스의 상기 프로세싱 파이프라인을 구성하는 단계
    를 더 포함하는,
    방법.
  7. 제 1 항에 있어서,
    상기 최소-크기 버퍼들은 상기 소스 디바이스의 상기 프로세싱 파이프라인에서 멀티미디어 디스플레이 프로세서와 비디오 프로세싱 엔진 사이에 두 개의 라이트-백(WB) 버퍼들을 포함하는,
    방법.
  8. 제 1 항에 있어서,
    상기 최소-크기 버퍼들은 상기 소스 디바이스의 상기 프로세싱 파이프라인에서 비디오 프로세싱 엔진과 인코더 사이에 네 개의 프레임 버퍼들을 포함하는,
    방법.
  9. 제 1 항에 있어서,
    상기 프로세싱 파이프라인을 이용하여 상기 프레임 업데이트들을 프로세싱하는 단계는,
    상기 프로세싱 파이프라인에 포함된, 상기 WD 시스템에 대한 프레임 버퍼들로 상기 프레임 업데이트들을 렌더링하는 단계; 및
    상기 하나 또는 그 초과의 싱크 디바이스들로의 송신을 위해 렌더링된 프레임 업데이트들을 인코딩하는 단계
    를 포함하는,
    방법.
  10. 제 9 항에 있어서,
    상기 하나 또는 그 초과의 싱크 디바이스로의 송신에 앞서 인코딩된 프레임 업데이트들을, 상기 소스 디바이스의 코딩된 픽처 버퍼들에 버퍼링하는 단계
    를 더 포함하는,
    방법.
  11. 제 10 항에 있어서,
    상기 인코딩된 프레임 업데이트들을 버퍼링하는 단계는, 인코딩된 프레임 업데이트의 메모리 카피를 생성하는 것 없이, 상기 소스 디바이스의 메모리에 저장된 상기 인코딩된 프레임 업데이트들에 대한 포인터를 버퍼링하는 단계를 포함하는,
    방법.
  12. 제 1 항에 있어서,
    프로세싱된 프레임 업데이트들을 상기 하나 또는 그 초과의 싱크 디바이스들에 전송하는 단계; 및
    새로운 프레임 업데이트를 수신하는 것 없이 임의의 시간 기간 이후, 상기 프로세싱된 프레임 업데이트들을 상기 소스 디바이스로부터 상기 하나 또는 그 초과의 싱크 디바이스들에 재전송하는 단계
    를 더 포함하는,
    방법.
  13. 제 1 항에 있어서,
    상기 하나 또는 그 초과의 싱크 디바이스들로의 비디오 데이터 전송보다 오디오 데이터 전송을 우선순위화하도록 상기 소스 디바이스의 상기 프로세싱 파이프라인을 구성하는 단계
    를 더 포함하는,
    방법.
  14. 제 1 항에 있어서,
    상기 싱크 디바이스들 중 적어도 하나로부터 전송 채널 조건들을 설명하는 피드백 정보를 수신하는 단계; 및
    상기 피드백 정보에 기초하여, 상기 소스 디바이스의 상기 프로세싱 파이프라인을 수정하는 단계
    를 더 포함하는,
    방법.
  15. 제 1 항에 있어서,
    상기 소스 디바이스에서 상기 통신 세션을 설정하는 단계는, 복수의 싱크 디바이스들로 통신 세션에 대한 상기 미디어 데이터를 광고하는 단계, 및 상기 하나 또는 그 초과의 싱크 디바이스들로부터 상기 통신 세션에 조인하기 위한 요청들을 수신하는 단계를 포함하는,
    방법.
  16. 소스 디바이스로서,
    무선 디스플레이(WD) 시스템에서 하나 또는 그 초과의 싱크 디바이스들과의 통신 세션을 상기 소스 디바이스에서 설정하고, 미디어 데이터의 프레임 업데이트들을 캡쳐하고, 적어도 캡쳐된 프레임 업데이트들 중 가장 최신 프레임 업데이트를, 프로세싱 파이프라인에 포함된 최소-크기 버퍼들에 버퍼링하고, 그리고 상기 하나 또는 그 초과의 싱크 디바이스들로의 송신을 위해 상기 최소-크기 버퍼들로부터의 상기 프레임 업데이트들을 프로세싱하도록 구성된 하나 또는 그 초과의 프로세싱 유닛들을 포함하는 상기 프로세싱 파이프라인; 및
    상기 프로세싱 파이프라인에 의한 프로세싱을 위해 상기 최소-크기 버퍼들로부터 상기 프레임 업데이트들을 리트리빙하도록 구성된 하드웨어 가속기
    를 포함하는,
    소스 디바이스.
  17. 제 16 항에 있어서,
    상기 프로세싱 파이프라인의 상기 하나 또는 그 초과의 프로세싱 유닛들은, 상기 소스 디바이스의 메모리에 프레임 업데이트들을 저장하도록 구성된,
    소스 디바이스.
  18. 제 17 항에 있어서,
    상기 프로세싱 파이프라인의 상기 하나 또는 그 초과의 프로세싱 유닛들은, 상기 메모리에 저장된 상기 프레임 업데이트들 중 상기 가장 최신 프레임 업데이트의 메모리 카피 중 하나, 또는 상기 메모리에 저장된 상기 프레임 업데이트들 중 상기 가장 최신 프레임 업데이트에 대한 포인터를 버퍼링하도록 구성된,
    소스 디바이스.
  19. 제 16 항에 있어서,
    상기 프로세싱 파이프라인의 상기 하나 또는 그 초과의 프로세싱 유닛들은,
    상기 최소-크기 버퍼들이 가득 찰 때, 상기 최소-크기 버퍼들로부터 상기 미디어 데이터의 더 오래된 프레임 업데이트들을 드롭하도록; 그리고
    상기 프레임 업데이트들 중 상기 가장 최신 프레임 업데이트를 상기 최소-크기 버퍼들에 버퍼링하도록
    구성된,
    소스 디바이스.
  20. 제 16 항에 있어서,
    상기 하드웨어 가속기는, 상기 소스 디바이스의 중앙 프로세싱 유닛(CPU)을 사용하는 것 없이, 상기 소스 디바이스의 상기 프로세싱 파이프라인에서 상기 최소-크기 버퍼들과 프로세싱 유닛들 사이에 상기 프레임 업데이트들을 이동시키도록 구성된,
    소스 디바이스.
  21. 제 16 항에 있어서,
    상기 프로세싱 파이프라인에 대한 파이프라인 관리자
    를 더 포함하고,
    여기서, 상기 WD 시스템에서 상기 통신 세션들을 설정할 때, 상기 파이프라인 관리자는, 상기 프로세싱 파이프라인에서 지연을 감소시키기 위해, 상기 최소-크기 버퍼들을 포함하도록 그리고 하드웨어 가속을 사용하도록 상기 프로세싱 파이프라인을 구성하는,
    소스 디바이스.
  22. 제 16 항에 있어서,
    상기 최소-크기 버퍼들은 상기 소스 디바이스의 상기 프로세싱 파이프라인에서 멀티미디어 디스플레이 프로세서와 비디오 프로세싱 엔진 사이에 두 개의 라이트-백(WB) 버퍼들을 포함하는,
    소스 디바이스.
  23. 제 16 항에 있어서,
    상기 최소-크기 버퍼들은 상기 소스 디바이스의 상기 프로세싱 파이프라인에서 비디오 프로세싱 엔진과 인코더 사이에 네 개의 프레임 버퍼들을 포함하는,
    소스 디바이스.
  24. 제 16 항에 있어서,
    상기 프로세싱 파이프라인의 상기 하나 또는 그 초과의 프로세싱 유닛들은,
    상기 프로세싱 파이프라인에 포함된, 상기 WD 시스템에 대한 프레임 버퍼들로 상기 프레임 업데이트들을 렌더링하도록; 그리고
    상기 하나 또는 그 초과의 싱크 디바이스들로의 송신을 위해 렌더링된 프레임 업데이트들을 인코딩하도록
    구성된,
    소스 디바이스.
  25. 제 24 항에 있어서,
    상기 프로세싱 파이프라인의 상기 하나 또는 그 초과의 프로세싱 유닛들은, 상기 하나 또는 그 초과의 싱크 디바이스들로의 송신에 앞서 인코딩된 프레임 업데이트들을, 상기 소스 디바이스의 코딩된 픽처 버퍼들에 버퍼링하도록 구성된,
    소스 디바이스.
  26. 제 25 항에 있어서,
    상기 프로세싱 파이프라인의 상기 하나 또는 그 초과의 프로세싱 유닛들은, 인코딩된 프레임 업데이트의 메모리 카피를 생성하는 것 없이, 상기 소스 디바이스의 메모리에 저장된 상기 인코딩된 프레임 업데이트들에 대한 포인터를 버퍼링하도록 구성된,
    소스 디바이스.
  27. 제 16 항에 있어서,
    상기 프로세싱 파이프라인의 상기 하나 또는 그 초과의 프로세싱 유닛들은,
    프로세싱된 프레임 업데이트들을 상기 하나 또는 그 초과의 싱크 디바이스들에 전송하도록; 그리고
    새로운 프레임 업데이트를 수신하는 것 없이 임의의 시간 기간 이후, 상기 프로세싱된 프레임 업데이트들을 상기 소스 디바이스로부터 상기 하나 또는 그 초과의 싱크 디바이스들에 재전송하도록
    구성된,
    소스 디바이스.
  28. 제 16 항에 있어서,
    상기 프로세싱 파이프라인에 대한 파이프라인 관리자
    를 더 포함하고,
    여기서, 상기 파이프라인 관리자는, 상기 하나 또는 그 초과의 싱크 디바이스들로의 비디오 데이터 전송보다 오디오 데이터 전송을 우선순위화하도록 상기 프로세싱 파이프라인을 구성하는,
    소스 디바이스.
  29. 제 16 항에 있어서,
    상기 프로세싱 파이프라인에 대한 파이프라인 관리자
    를 더 포함하고,
    여기서, 상기 파이프라인 관리자는,
    상기 싱크 디바이스들 중 적어도 하나로부터 전송 채널 조건들을 설명하는 피드백 정보를 수신하고; 그리고
    상기 피드백 정보에 기초하여, 상기 소스 디바이스의 상기 프로세싱 파이프라인을 수정하는,
    소스 디바이스.
  30. 제 16 항에 있어서,
    상기 프로세싱 파이프라인의 상기 하나 또는 그 초과의 프로세싱 유닛들은, 복수의 싱크 디바이스들로 통신 세션에 대한 상기 미디어 데이터를 광고하고, 그리고 상기 소스 디바이스에서의 상기 통신 세션을 설정하기 위해 상기 하나 또는 그 초과의 싱크 디바이스들로부터 상기 통신 세션에 조인하기 위한 요청들을 수신하도록 구성된,
    소스 디바이스.
  31. 소스 디바이스로서,
    무선 디스플레이(WD) 시스템에서 하나 또는 그 초과의 싱크 디바이스들과의 통신 세션을 소스 디바이스에서 설정하기 위한 수단;
    미디어 데이터의 프레임 업데이트들을 캡쳐하기 위한 수단;
    적어도 캡쳐된 프레임 업데이트들 중 가장 최신 프레임 업데이트를, 상기 소스 디바이스의 프로세싱 파이프라인에 포함된 최소-크기 버퍼들에 버퍼링하기 위한 수단;
    하드웨어 가속을 이용하여, 상기 최소-크기 버퍼들로부터 상기 프레임 업데이트들을 리트리빙하기 위한 수단; 및
    상기 하나 또는 그 초과의 싱크 디바이스들로의 송신을 위해 상기 프로세싱 파이프라인을 이용하여 상기 최소-크기 버퍼들로부터 리트리빙된 상기 프레임 업데이트들을 프로세싱하기 위한 수단
    을 포함하는,
    소스 디바이스.
  32. 제 31 항에 있어서,
    상기 소스 디바이스의 메모리에 프레임 업데이트들을 저장하기 위한 수단
    을 더 포함하는,
    소스 디바이스.
  33. 제 32 항에 있어서,
    상기 메모리에 저장된 상기 프레임 업데이트들 중 상기 가장 최신 프레임 업데이트의 메모리 카피 중 하나, 또는 상기 메모리에 저장된 상기 프레임 업데이트들 중 상기 가장 최신 프레임 업데이트에 대한 포인터를 버퍼링하기 위한 수단
    을 더 포함하는,
    소스 디바이스.
  34. 제 31 항에 있어서,
    상기 최소-크기 버퍼들이 가득 찰 때, 상기 최소-크기 버퍼들로부터 상기 미디어 데이터의 더 오래된 프레임 업데이트들을 드롭하기 위한 수단; 및
    상기 프레임 업데이트들 중 상기 가장 최신 프레임 업데이트를 상기 최소-크기 버퍼들에 버퍼링하기 위한 수단
    을 더 포함하는,
    소스 디바이스.
  35. 제 31 항에 있어서,
    하드웨어 가속을 이용하여, 그리고 상기 소스 디바이스의 중앙 프로세싱 유닛(CPU)을 사용하는 것 없이, 상기 소스 디바이스의 상기 프로세싱 파이프라인에서 상기 최소-크기 버퍼들과 프로세싱 유닛들 사이에 상기 프레임 업데이트들을 이동시키기 위한 수단
    을 더 포함하는,
    소스 디바이스.
  36. 제 31 항에 있어서,
    상기 WD 시스템에서 상기 통신 세션을 설정할 때, 상기 프로세싱 파이프라인에서 지연을 감소시키기 위해, 상기 최소-크기 버퍼들을 포함하도록 그리고 하드웨어 가속을 사용하도록 상기 소스 디바이스의 상기 프로세싱 파이프라인을 구성하기 위한 수단
    을 더 포함하는,
    소스 디바이스.
  37. 제 31 항에 있어서,
    상기 프로세싱 파이프라인에 포함된, 상기 WD 시스템에 대한 프레임 버퍼들로 상기 프레임 업데이트들을 렌더링하기 위한 수단; 및
    상기 하나 또는 그 초과의 싱크 디바이스들로의 송신을 위해 렌더링된 프레임 업데이트들을 인코딩하기 위한 수단
    을 더 포함하는,
    소스 디바이스.
  38. 제 37 항에 있어서,
    상기 하나 또는 그 초과의 싱크 디바이스들로의 송신에 앞서 인코딩된 프레임 업데이트들을, 상기 소스 디바이스의 코딩된 픽처 버퍼들에 버퍼링하기 위한 수단
    을 더 포함하고,
    여기서, 인코딩된 프레임 업데이트들을 버퍼링하기 위한 수단은, 인코딩된 프레임 업데이트의 메모리 카피를 생성하는 것 없이, 상기 소스 디바이스의 메모리에 저장된 상기 인코딩된 프레임 업데이트들에 대한 포인터를 버퍼링하기 위한 수단을 포함하는,
    소스 디바이스.
  39. 제 31 항에 있어서,
    프로세싱된 프레임 업데이트들을 상기 하나 또는 그 초과의 싱크 디바이스들에 전송하기 위한 수단; 및
    새로운 프레임 업데이트를 수신하는 것 없이 임의의 시간 기간 이후, 상기 프로세싱된 프레임 업데이트들을 상기 소스 디바이스로부터 상기 하나 또는 그 초과의 싱크 디바이스들에 재전송하기 위한 수단
    을 더 포함하는,
    소스 디바이스.
  40. 컴퓨터-판독가능 매체로서,
    소스 디바이스에서 실행될 때, 프로그래밍 가능한 프로세서로 하여금,
    무선 디스플레이(WD) 시스템에서 하나 또는 그 초과의 싱크 디바이스들과의 통신 세션을 상기 소스 디바이스에서 설정하고;
    상기 소스 디바이스에서 미디어 데이터의 프레임 업데이트들을 캡쳐하고;
    적어도 캡쳐된 프레임 업데이트들 중 가장 최신 프레임 업데이트를, 상기 소스 디바이스의 프로세싱 파이프라인에 포함된 최소-크기 버퍼들에 버퍼링하고; 그리고
    상기 하나 또는 그 초과의 싱크 디바이스들로의 송신을 위해 상기 프로세싱 파이프라인을 이용하여 상기 최소-크기 버퍼들로부터의 상기 프레임 업데이트들을 프로세싱하게 하는 ― 여기서, 상기 프레임 업데이트들은, 하드웨어 가속을 이용하여, 상기 최소-크기 버퍼들로부터 리트리빙됨 ―
    명령들
    을 포함하는,
    컴퓨터-판독가능 매체.
  41. 제 40 항에 있어서,
    상기 명령들은, 상기 프로그래밍 가능한 프로세서로 하여금 상기 소스 디바이스의 메모리에 프레임 업데이트들을 저장하게 하는,
    컴퓨터-판독가능 매체.
  42. 제 41 항에 있어서,
    상기 명령들은, 상기 프로그래밍 가능한 프로세서로 하여금, 상기 메모리에 저장된 상기 프레임 업데이트들 중 상기 가장 최신 프레임 업데이트의 메모리 카피 중 하나, 또는 상기 메모리에 저장된 상기 프레임 업데이트들 중 상기 가장 최신 프레임 업데이트에 대한 포인터를 버퍼링하게 하는,
    컴퓨터-판독가능 매체.
  43. 제 40 항에 있어서,
    상기 명령들은, 상기 프로그래밍 가능한 프로세서로 하여금,
    상기 최소-크기 버퍼들이 가득 찰 때, 상기 최소-크기 버퍼들로부터 상기 미디어 데이터의 더 오래된 프레임 업데이트들을 드롭하고; 그리고
    상기 프레임 업데이트들 중 상기 가장 최신 프레임 업데이트를 상기 최소-크기 버퍼들에 버퍼링하게 하는,
    컴퓨터-판독가능 매체.
  44. 제 40 항에 있어서,
    상기 명령들은, 상기 프로그래밍 가능한 프로세서로 하여금, 하드웨어 가속을 이용하여, 그리고 상기 소스 디바이스의 중앙 프로세싱 유닛(CPU)을 사용하는 것 없이, 상기 소스 디바이스의 상기 프로세싱 파이프라인에서 상기 최소-크기 버퍼들과 프로세싱 유닛들 사이에 상기 프레임 업데이트들을 이동시키게 하는,
    컴퓨터-판독가능 매체.
  45. 제 40 항에 있어서,
    상기 프로그래밍 가능한 프로세서로 하여금, 상기 WD 시스템에서 상기 통신 세션을 설정할 때, 상기 프로세싱 파이프라인에서 지연을 감소시키기 위해, 상기 최소-크기 버퍼들을 포함하도록 그리고 하드웨어 가속을 사용하도록 상기 소스 디바이스의 상기 프로세싱 파이프라인을 구성하게 하는 명령들
    을 더 포함하는,
    컴퓨터-판독가능 매체.
  46. 제 40 항에 있어서,
    상기 명령들은, 상기 프로그래밍 가능한 프로세서로 하여금,
    상기 프로세싱 파이프라인에 포함된, 상기 WD 시스템에 대한 프레임 버퍼들로 상기 프레임 업데이트들을 렌더링하고; 그리고
    상기 하나 또는 그 초과의 싱크 디바이스들로의 송신을 위해 렌더링된 프레임 업데이트들을 인코딩하게 하는,
    컴퓨터-판독가능 매체.
  47. 제 46 항에 있어서,
    상기 프로그래밍 가능한 프로세서로 하여금, 상기 하나 또는 그 초과의 싱크 디바이스로의 송신에 앞서 인코딩된 프레임 업데이트들을, 상기 소스 디바이스의 코딩된 픽처 버퍼들에 버퍼링하게 하는 명령들
    을 더 포함하고,
    여기서, 상기 명령들은 추가로, 상기 프로그래밍 가능한 프로세서로 하여금, 인코딩된 프레임 업데이트의 메모리 카피를 생성하는 것 없이, 상기 소스 디바이스의 메모리에 저장된 상기 인코딩된 프레임 업데이트들에 대한 포인터를 버퍼링하게 하는,
    컴퓨터-판독가능 매체.
  48. 제 40 항에 있어서,
    상기 프로그래밍 가능한 프로세서로 하여금,
    프로세싱된 프레임 업데이트들을 상기 하나 또는 그 초과의 싱크 디바이스들에 전송하고; 그리고
    새로운 프레임 업데이트를 수신하는 것 없이 임의의 시간 기간 이후, 상기 프로세싱된 프레임 업데이트들을 상기 소스 디바이스로부터 상기 하나 또는 그 초과의 싱크 디바이스들에 재전송하게 하는 명령들
    을 더 포함하는,
    컴퓨터-판독가능 매체.
KR1020147027258A 2012-02-28 2013-02-28 무선 디스플레이 시스템에서 소스 디바이스에서의 프레임 캡쳐 및 버퍼링 KR20140130218A (ko)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201261604086P 2012-02-28 2012-02-28
US201261604087P 2012-02-28 2012-02-28
US201261604094P 2012-02-28 2012-02-28
US201261604090P 2012-02-28 2012-02-28
US61/604,087 2012-02-28
US61/604,086 2012-02-28
US61/604,094 2012-02-28
US61/604,090 2012-02-28
US13/633,328 US9491505B2 (en) 2012-02-28 2012-10-02 Frame capture and buffering at source device in wireless display system
US13/633,328 2012-10-02
PCT/US2013/028383 WO2013130853A1 (en) 2012-02-28 2013-02-28 Frame capture and buffering at source device in wireless display system

Publications (1)

Publication Number Publication Date
KR20140130218A true KR20140130218A (ko) 2014-11-07

Family

ID=49002259

Family Applications (3)

Application Number Title Priority Date Filing Date
KR20147027282A KR20140134691A (ko) 2012-02-28 2013-02-28 애플리케이션 인지에 기초한,무선 디스플레이 시스템에서 싱크 디바이스에서의 맞춤화된 버퍼링
KR1020147027274A KR101632019B1 (ko) 2012-02-28 2013-02-28 무선 디스플레이 시스템에서 싱크 디바이스에서의 맞춤화된 재생
KR1020147027258A KR20140130218A (ko) 2012-02-28 2013-02-28 무선 디스플레이 시스템에서 소스 디바이스에서의 프레임 캡쳐 및 버퍼링

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR20147027282A KR20140134691A (ko) 2012-02-28 2013-02-28 애플리케이션 인지에 기초한,무선 디스플레이 시스템에서 싱크 디바이스에서의 맞춤화된 버퍼링
KR1020147027274A KR101632019B1 (ko) 2012-02-28 2013-02-28 무선 디스플레이 시스템에서 싱크 디바이스에서의 맞춤화된 재생

Country Status (6)

Country Link
US (3) US8996762B2 (ko)
EP (3) EP2820853A1 (ko)
JP (3) JP6284888B2 (ko)
KR (3) KR20140134691A (ko)
CN (3) CN104137563B (ko)
WO (3) WO2013130864A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200094146A (ko) * 2017-10-30 2020-08-06 에너저스 코포레이션 동일 주파수 대역에서 동작하는 무선 전력 신호 및 데이터 신호들의 공존을 관리하는 시스템들 및 방법들

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USD843119S1 (en) 2016-09-09 2019-03-19 The Glad Products Company Film with pattern
CN104094219B (zh) * 2011-12-29 2018-09-21 英特尔公司 用于音频分布的方法和装置
US8996762B2 (en) 2012-02-28 2015-03-31 Qualcomm Incorporated Customized buffering at sink device in wireless display system based on application awareness
US20130325952A1 (en) * 2012-06-05 2013-12-05 Cellco Partnership D/B/A Verizon Wireless Sharing information
KR20140002200A (ko) * 2012-06-28 2014-01-08 삼성전자주식회사 무선 디스플레이 소스 장치 및 싱크 장치
US11502551B2 (en) 2012-07-06 2022-11-15 Energous Corporation Wirelessly charging multiple wireless-power receivers using different subsets of an antenna array to focus energy at different locations
WO2014015032A2 (en) 2012-07-19 2014-01-23 Cypress Semiconductor Corporation Touchscreen data processing
US9342196B2 (en) * 2012-07-19 2016-05-17 Parade Technologies, Ltd. Hardware accelerator for touchscreen data processing
WO2014029076A1 (en) * 2012-08-21 2014-02-27 Intel Corporation Widi cloud mode
US20160006946A1 (en) * 2013-01-24 2016-01-07 Telesofia Medical Ltd. System and method for flexible video construction
US9565139B2 (en) * 2013-03-15 2017-02-07 Comcast Cable Communications, Llc Remote latency adjustment
US20140297882A1 (en) * 2013-04-01 2014-10-02 Microsoft Corporation Dynamic track switching in media streaming
KR20140126055A (ko) * 2013-04-22 2014-10-30 삼성전자주식회사 데이터 송신 방법 및 그 전자 장치
US9197680B2 (en) * 2013-05-23 2015-11-24 Qualcomm Incorporated Establishing and controlling audio and voice back channels of a Wi-Fi display connection
JP2014232228A (ja) * 2013-05-29 2014-12-11 ソニー株式会社 情報処理装置、および情報処理システム
US20140379778A1 (en) * 2013-06-20 2014-12-25 Microsoft Corporation Asynchronous transport setup and selection for interactive applications
WO2014208878A1 (ko) * 2013-06-28 2014-12-31 엘지전자 주식회사 직접 통신 시스템에서 디바이스 탐색 방법 및 이를 위한 장치
US9826015B2 (en) * 2013-09-04 2017-11-21 Qualcomm Incorporated Dynamic and automatic control of latency buffering for audio/video streaming
KR102159228B1 (ko) * 2013-09-12 2020-09-23 삼성전자주식회사 오디오 처리 장치, 오디오 처리 방법, 초기화 모드 설정 방법 및 컴퓨터 판독가능 기록매체
US9257097B2 (en) * 2013-12-23 2016-02-09 Qualcomm Incorporated Remote rendering for efficient use of wireless bandwidth for wireless docking
KR102143222B1 (ko) * 2013-12-27 2020-08-11 엘지디스플레이 주식회사 무선 디스플레이 싱크 장치
DE112015001020T5 (de) * 2014-02-28 2016-12-08 Samsung Electronics Co., Ltd. Verfahren und Vorrichtung zum Wiedergeben von Multimedia-Inhalt in einem Kommunikationssystem
US9648073B2 (en) * 2014-04-10 2017-05-09 Qualcomm Incorporated Streaming control for real-time transport protocol
US10127002B2 (en) * 2014-04-10 2018-11-13 Screenovate Technologies Ltd. Method for real-time multimedia interface management
CN105100859A (zh) * 2014-05-21 2015-11-25 中兴通讯股份有限公司 多模机顶盒及其模式管理方法
WO2015182189A1 (ja) * 2014-05-28 2015-12-03 ソニー株式会社 情報処理装置、および情報処理方法、並びにプログラム
US9269328B2 (en) * 2014-06-24 2016-02-23 Google Inc. Efficient frame rendering
US9665336B2 (en) 2014-07-29 2017-05-30 Qualcomm Incorporated Direct streaming for wireless display
US10313683B2 (en) 2014-08-30 2019-06-04 Apple Inc. Video encoder with context switching
US20160092152A1 (en) * 2014-09-25 2016-03-31 Oracle International Corporation Extended screen experience
US10283091B2 (en) * 2014-10-13 2019-05-07 Microsoft Technology Licensing, Llc Buffer optimization
CN105898541B (zh) * 2014-11-12 2019-11-26 恩智浦美国有限公司 降低多媒体系统中等待时间的方法和装置
US20160191581A1 (en) * 2014-12-24 2016-06-30 Intel Corporation Apparatus, system and method of media streaming
US10523985B2 (en) * 2014-12-24 2019-12-31 Activevideo Networks, Inc. Managing deep and shallow buffers in a thin-client device of a digital media distribution network
KR102250090B1 (ko) * 2014-12-24 2021-05-10 삼성전자주식회사 영상 데이터를 송수신하는 디바이스 및 그 방법
CN104519325B (zh) * 2014-12-29 2018-12-07 大唐移动通信设备有限公司 一种基于4g网络的无线视频监控系统自适应保障方法
US9432556B2 (en) * 2015-01-05 2016-08-30 Qualcomm Incorporated Devices and methods for facilitating frame dropping in remote display applications
JP6516480B2 (ja) * 2015-01-19 2019-05-22 キヤノン株式会社 表示装置、表示システム及び表示方法
WO2016122444A1 (en) * 2015-01-26 2016-08-04 Hewlett Packard Enterprise Development Lp Regulating a power consumption state of a cellular radio
JP2016177701A (ja) * 2015-03-20 2016-10-06 ソニー株式会社 ネットワーク装置、情報処理方法およびhdmiデバイス
US10275853B2 (en) * 2015-04-15 2019-04-30 Intel Corporation Media hub device and cache
US20160350061A1 (en) * 2015-05-29 2016-12-01 Qualcomm Incorporated Remote rendering from a source device to a sink device
US10671234B2 (en) * 2015-06-24 2020-06-02 Spotify Ab Method and an electronic device for performing playback of streamed media including related media content
US9872028B2 (en) * 2015-06-26 2018-01-16 Intel Corporation Wireless display adaptations and optimizations based on unfiltered and regional feedback
JP6952679B2 (ja) 2015-07-15 2021-10-20 サイランス・インコーポレイテッドCylance Inc. マルウェア検出
CN105025335B (zh) * 2015-08-04 2017-11-10 合肥中科云巢科技有限公司 一种云桌面环境下的视频同步渲染的方法
US9911175B2 (en) * 2015-09-03 2018-03-06 Qualcomm Incorporated Modification of graphical command tokens
US9928844B2 (en) 2015-10-30 2018-03-27 Intel Corporation Method and system of audio quality and latency adjustment for audio processing by using audio feedback
EP3197169A1 (en) * 2016-01-25 2017-07-26 Thomson Licensing Method for audio detection and corresponding device
US11064003B2 (en) * 2016-03-07 2021-07-13 Lg Electronics Inc. Method and apparatus for receiving streaming via transport protocol in wireless communication system
US11134114B2 (en) * 2016-03-15 2021-09-28 Intel Corporation User input based adaptive streaming
USD849420S1 (en) 2016-09-09 2019-05-28 The Glad Products Company Film with pattern
US10158905B2 (en) * 2016-09-14 2018-12-18 Dts, Inc. Systems and methods for wirelessly transmitting audio synchronously with rendering of video
CN109792558B (zh) * 2016-09-30 2021-11-30 索尼公司 传送装置、传送方法、接收装置、以及接收方法
USD845649S1 (en) 2016-10-13 2019-04-16 The Glad Products Company Film with pattern
USD845647S1 (en) 2016-10-13 2019-04-16 The Glad Products Company Film with pattern
USD845648S1 (en) 2016-10-13 2019-04-16 The Glad Products Company Film with pattern
US20180130443A1 (en) * 2016-11-04 2018-05-10 Nausheen Ansari Techniques for managing transmission and display of a display data stream
KR102646030B1 (ko) 2016-12-15 2024-03-12 삼성전자주식회사 영상제공장치, 그의 제어 방법 및 영상제공시스템
US11462949B2 (en) 2017-05-16 2022-10-04 Wireless electrical Grid LAN, WiGL Inc Wireless charging method and system
US10713189B2 (en) * 2017-06-27 2020-07-14 Qualcomm Incorporated System and method for dynamic buffer sizing in a computing device
CN108093293B (zh) * 2018-01-15 2021-01-22 北京奇艺世纪科技有限公司 一种视频渲染方法及系统
JP6995659B2 (ja) * 2018-02-14 2022-01-14 株式会社フジクラ 撮像モジュール、内視鏡、及びカテーテル
US11515732B2 (en) 2018-06-25 2022-11-29 Energous Corporation Power wave transmission techniques to focus wirelessly delivered power at a receiving device
CN109151194B (zh) * 2018-08-14 2021-03-02 Oppo广东移动通信有限公司 数据传输方法、装置、电子设备以及存储介质
US10812857B2 (en) 2018-09-28 2020-10-20 Apple Inc. Systems and methods for reducing latency of a video transmission system
WO2020081084A1 (en) * 2018-10-18 2020-04-23 Google Llc Dynamic buffer control for devices based on environmental data
EP3871422A1 (en) * 2018-10-24 2021-09-01 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Source device, sink devices, methods and computer programs
WO2020159556A1 (en) * 2019-01-29 2020-08-06 Google Llc Using structured audio output to detect playback and/or to adapt to misaligned playback in wireless speakers
CN113661660B (zh) 2019-02-06 2023-01-24 艾诺格思公司 估计最佳相位的方法、无线电力发射设备及存储介质
CN110136735B (zh) * 2019-05-13 2021-09-28 腾讯音乐娱乐科技(深圳)有限公司 一种音频修复方法、设备及可读存储介质
CN112020043A (zh) * 2019-05-28 2020-12-01 瑞昱半导体股份有限公司 蓝牙装置与其操作方法及非瞬时计算机可读记录介质
CN112469012A (zh) * 2019-09-06 2021-03-09 华为技术有限公司 一种蓝牙通信方法及相关装置
WO2021055898A1 (en) 2019-09-20 2021-03-25 Energous Corporation Systems and methods for machine learning based foreign object detection for wireless power transmission
KR20210101696A (ko) * 2020-02-10 2021-08-19 삼성전자주식회사 버퍼를 제어하기 위한 전자 장치 및 방법
KR20210121777A (ko) * 2020-03-31 2021-10-08 엘지전자 주식회사 디스플레이 장치 및 그의 동작 방법
US11693795B2 (en) * 2020-04-17 2023-07-04 Texas Instruments Incorporated Methods and apparatus to extend local buffer of a hardware accelerator
US11933765B2 (en) * 2021-02-05 2024-03-19 Evident Canada, Inc. Ultrasound inspection techniques for detecting a flaw in a test object
US11665392B2 (en) * 2021-07-16 2023-05-30 Rovi Guides, Inc. Methods and systems for selective playback and attenuation of audio based on user preference
CN113766146B (zh) 2021-09-07 2022-09-16 北京百度网讯科技有限公司 音视频处理方法、装置、电子设备及存储介质
CN113923527B (zh) * 2021-09-30 2023-09-05 北京爱奇艺科技有限公司 云游戏的视频数据解码方法、装置、电子设备及存储介质
CN113965844B (zh) * 2021-12-22 2022-04-15 深圳市维海德技术股份有限公司 低延时音频传输方法、装置、驱动设备及可读存储介质

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2644573B2 (ja) * 1989-02-02 1997-08-25 日本電信電話株式会社 画像信号符号化装置の2面バッファメモリ切替方法
US5224213A (en) * 1989-09-05 1993-06-29 International Business Machines Corporation Ping-pong data buffer for transferring data from one data bus to another data bus
US5784631A (en) 1992-06-30 1998-07-21 Discovision Associates Huffman decoder
JP3255308B2 (ja) 1992-12-18 2002-02-12 ソニー株式会社 データ再生装置
US6738357B1 (en) 1993-06-09 2004-05-18 Btg International Inc. Method and apparatus for multiple media digital communication system
US7512698B1 (en) 1995-07-14 2009-03-31 Broadband Royalty Corporation Dynamic quality adjustment based on changing streaming constraints
US5570372A (en) 1995-11-08 1996-10-29 Siemens Rolm Communications Inc. Multimedia communications with system-dependent adaptive delays
US5907717A (en) * 1996-02-23 1999-05-25 Lsi Logic Corporation Cross-connected memory system for allocating pool buffers in each frame buffer and providing addresses thereof
US5848264A (en) * 1996-10-25 1998-12-08 S3 Incorporated Debug and video queue for multi-processor chip
US6373855B1 (en) 1998-03-05 2002-04-16 Intel Corporation System and method for using audio performance to control video bandwidth
JP2002165148A (ja) 2000-11-29 2002-06-07 Sony Corp データ処理装置および方法、並びに記録媒体
US20020194609A1 (en) 2001-06-18 2002-12-19 Tran Thanh T. Video client with dynamically allocable video buffer for efficiently streaming video
US9544523B2 (en) 2001-08-06 2017-01-10 Ati Technologies Ulc Wireless display apparatus and method
KR100711635B1 (ko) * 2003-02-18 2007-04-25 노키아 코포레이션 화상 부호화 방법
GB0323284D0 (en) 2003-10-04 2003-11-05 Koninkl Philips Electronics Nv Method and apparatus for processing image data
EP1730899B1 (en) 2004-01-30 2010-12-08 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Packet scheduling for data stream transmission
US7813562B2 (en) 2004-09-27 2010-10-12 Intel Corporation Low-latency remote display rendering using tile-based rendering systems
JP4182437B2 (ja) 2004-10-04 2008-11-19 ソニー株式会社 オーディオビデオ同期システム及びモニター装置
US7596149B2 (en) 2004-12-09 2009-09-29 Omnivision Technologies, Inc. Low bit rate video transmission over GSM network
JP2006319552A (ja) 2005-05-11 2006-11-24 Matsushita Electric Ind Co Ltd マルチメディア再生装置
KR20070073564A (ko) 2006-01-05 2007-07-10 삼성전자주식회사 무선 av 네트워크에서의 립 동기화 방법 및 이를 위한장치
US7600081B2 (en) 2006-01-18 2009-10-06 Marvell World Trade Ltd. Processor architecture having multi-ported memory
CN101034995A (zh) * 2006-03-08 2007-09-12 北京汉辰科技有限公司 互联网个人视频录制系统及其终端
EP1879347B1 (en) * 2006-07-14 2012-05-30 Sony Europe Limited System and method of audio/video streaming
KR101456483B1 (ko) 2006-08-25 2014-10-31 삼성전자주식회사 데이터를 송수신하는 방법
US7817557B2 (en) 2006-08-29 2010-10-19 Telesector Resources Group, Inc. Method and system for buffering audio/video data
US9135951B2 (en) 2006-10-10 2015-09-15 Qualcomm Incorporated System and method for dynamic audio buffer management
US7843820B2 (en) 2006-10-30 2010-11-30 Research In Motion Limited Wi-Fi quality of service signaling
US20080120668A1 (en) 2006-11-18 2008-05-22 Frank Chuen-Foo Yau Integrated IPTV display set and methods
US8077745B2 (en) 2007-03-23 2011-12-13 Qualcomm Incorporated Techniques for unidirectional disabling of audio-video synchronization
US7853759B2 (en) * 2007-04-23 2010-12-14 Microsoft Corporation Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
JP5087985B2 (ja) 2007-04-27 2012-12-05 ソニー株式会社 データ処理装置、データ処理方法、及びプログラム
US8233527B2 (en) 2007-05-11 2012-07-31 Advanced Micro Devices, Inc. Software video transcoder with GPU acceleration
US20100190478A1 (en) 2009-01-23 2010-07-29 Qualcomm Incorporated System and method for push-to-share file distribution with previews
EP2203850A1 (en) 2007-08-31 2010-07-07 International Business Machines Corporation Method for synchronizing data flows
JP2009089156A (ja) 2007-10-01 2009-04-23 Yamaha Corp 配信システムおよび配信方法
FR2922401B1 (fr) 2007-10-10 2010-04-16 Sagem Comm Dispositif de reception en continu de paquets de donnees audio et/ou video
WO2009099366A1 (en) 2008-02-05 2009-08-13 Telefonaktiebolaget L M Ericsson (Publ) A method of transmitting sychnronized speech and video
US20090287324A1 (en) 2008-05-13 2009-11-19 Creative Technology Ltd Portable audio enhancement and media player device
JP5014259B2 (ja) * 2008-05-30 2012-08-29 パナソニック株式会社 表示制御装置および表示制御方法
US8024417B2 (en) 2008-06-04 2011-09-20 Microsoft Corporation Simple flow control protocol over RDMA
US8638337B2 (en) * 2009-03-16 2014-01-28 Microsoft Corporation Image frame buffer management
EP2247044A1 (en) 2009-04-29 2010-11-03 Alcatel Lucent Packet network processing node and method
KR20100124909A (ko) 2009-05-20 2010-11-30 삼성전자주식회사 이동통신 단말기에서 영상과 음성의 동기화를 위한 장치 및 방법
US20100329355A1 (en) 2009-06-30 2010-12-30 Nxp B.V System and method for configurable packet streaming
US8406245B2 (en) * 2009-07-09 2013-03-26 Qualcomm Incorporated System and method of transmitting content from a mobile device to a wireless display
US8687648B2 (en) 2009-07-17 2014-04-01 Qualcomm Incorporated Wireless transmission of data using an available channel of a spectrum
FR2952783A1 (fr) * 2009-11-18 2011-05-20 St Microelectronics Grenoble 2 Sas Procede et dispositif de controle de la vitesse de restitution d'une sequence video numerique compressee
US9582238B2 (en) * 2009-12-14 2017-02-28 Qualcomm Incorporated Decomposed multi-stream (DMS) techniques for video display systems
US20110320953A1 (en) 2009-12-18 2011-12-29 Nokia Corporation Method and apparatus for projecting a user interface via partition streaming
US8787163B1 (en) * 2010-02-24 2014-07-22 Marvell International Ltd. Method and apparatus for adjusting the size of a buffer in a network node based on latency
US8312164B2 (en) 2010-04-14 2012-11-13 Adobe Systems Incorporated Media quality enhancement among connected media communication devices
US20110283014A1 (en) * 2010-05-14 2011-11-17 Rahul Malik Distribution of Multimedia Content over a Network
US9172979B2 (en) * 2010-08-12 2015-10-27 Net Power And Light, Inc. Experience or “sentio” codecs, and methods and systems for improving QoE and encoding based on QoE experiences
CN103688240B (zh) * 2011-05-20 2016-11-09 梦芯片技术股份有限公司 用于发送数字场景描述数据的方法以及发送器和接收器场景处理设备
US9521531B2 (en) 2011-11-30 2016-12-13 Broadcom Corporation Audio-visual data transmission over internet protocol at higher rates
US8996762B2 (en) 2012-02-28 2015-03-31 Qualcomm Incorporated Customized buffering at sink device in wireless display system based on application awareness

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200094146A (ko) * 2017-10-30 2020-08-06 에너저스 코포레이션 동일 주파수 대역에서 동작하는 무선 전력 신호 및 데이터 신호들의 공존을 관리하는 시스템들 및 방법들

Also Published As

Publication number Publication date
CN104137559B (zh) 2017-10-13
JP2015513842A (ja) 2015-05-14
JP2015511788A (ja) 2015-04-20
EP2820853A1 (en) 2015-01-07
EP2820857A1 (en) 2015-01-07
US20130222210A1 (en) 2013-08-29
WO2013130864A1 (en) 2013-09-06
EP2820856A1 (en) 2015-01-07
US9167296B2 (en) 2015-10-20
US20130223538A1 (en) 2013-08-29
US8996762B2 (en) 2015-03-31
JP6022608B2 (ja) 2016-11-09
WO2013130853A1 (en) 2013-09-06
CN104137563A (zh) 2014-11-05
WO2013130858A1 (en) 2013-09-06
KR101632019B1 (ko) 2016-06-21
CN104137559A (zh) 2014-11-05
CN104137562A (zh) 2014-11-05
KR20140133891A (ko) 2014-11-20
KR20140134691A (ko) 2014-11-24
US9491505B2 (en) 2016-11-08
JP6284888B2 (ja) 2018-02-28
CN104137563B (zh) 2018-08-10
JP2015511787A (ja) 2015-04-20
US20130222699A1 (en) 2013-08-29
CN104137562B (zh) 2017-10-31

Similar Documents

Publication Publication Date Title
KR101632019B1 (ko) 무선 디스플레이 시스템에서 싱크 디바이스에서의 맞춤화된 재생
US8887222B2 (en) Multicasting in a wireless display system
KR101496607B1 (ko) 이미지들을 디스플레이하기 위한 무선 소스와 싱크 디바이스 간의 데이터 교환
JP6425720B2 (ja) コンテンツ配信のための方法及び装置
US20150350288A1 (en) Media agnostic display for wi-fi display
CN101883097A (zh) 服务器设备共享客户端设备屏幕的实现方法及装置
US20130089006A1 (en) Minimal cognitive mode for wireless display devices
EP2312826A2 (en) Network device, information processing apparatus, stream switching method, information processing method, program, and content distribution system
WO2017140161A1 (zh) 音视频资源共享的方法、装置、系统及网络网关
US20190028522A1 (en) Transmission of subtitle data for wireless display

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application