KR20230092739A - 인공 지능 비디오 프레임 세그먼트화를 사용하여 비디오 프레임 픽셀 데이터를 처리하는 방법 및 장치 - Google Patents

인공 지능 비디오 프레임 세그먼트화를 사용하여 비디오 프레임 픽셀 데이터를 처리하는 방법 및 장치 Download PDF

Info

Publication number
KR20230092739A
KR20230092739A KR1020220154404A KR20220154404A KR20230092739A KR 20230092739 A KR20230092739 A KR 20230092739A KR 1020220154404 A KR1020220154404 A KR 1020220154404A KR 20220154404 A KR20220154404 A KR 20220154404A KR 20230092739 A KR20230092739 A KR 20230092739A
Authority
KR
South Korea
Prior art keywords
data
video
background
foreground
circuitry
Prior art date
Application number
KR1020220154404A
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 KR20230092739A publication Critical patent/KR20230092739A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234318Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by decomposing into objects, e.g. MPEG-4 objects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/194Segmentation; Edge detection involving foreground-background segmentation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/403Arrangements for multi-party communication, e.g. for conferences
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23418Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234309Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4 or from Quicktime to Realvideo
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234327Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by decomposing into layers, e.g. base layer and one or more enhancement layers
    • 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
    • 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/44008Processing 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 operations for analysing video streams, e.g. detecting features or characteristics in the video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/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/4402Processing 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 reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440218Processing 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 reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/14Systems for two-way working
    • H04N7/141Systems for two-way working between two video terminals, e.g. videophone
    • H04N7/147Communication arrangements, e.g. identifying the communication as a video-communication, intermediate storage of the signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

개시된 예들은 제1 비디오 프레임 픽셀 데이터의 세그먼트화 데이터를 생성하는 비디오 프레임 세그먼트화기 회로를 포함하고, 세그먼트화 데이터는 전경 영역 및 배경 영역에 대응하는 메타데이터를 포함하고, 전경 영역은 제1 비디오 프레임 픽셀 데이터에 대응한다. 개시된 예들은 세그먼트화 데이터에 기초하여 제1 전경 경계 영역 및 제1 배경 경계 영역을 생성하고, 제1 비디오 프레임 픽셀 데이터의 제1 가상 타일을 결정하고 - 제1 가상 타일은 제1 전경 경계 영역에 위치함 - , 제1 배경 경계 영역을 인코딩하지 않고 제1 가상 타일을 비디오 데이터 비트스트림으로 인코딩하고, 네트워크를 통해 비디오 데이터 비트스트림을 송신하는 비디오 인코더 회로를 또한 포함한다.

Description

인공 지능 비디오 프레임 세그먼트화를 사용하여 비디오 프레임 픽셀 데이터를 처리하는 방법 및 장치{METHODS AND APPARATUS TO PROCESS VIDEO FRAME PIXEL DATA USING ARTIFICIAL INTELLIGENCE VIDEO FRAME SEGMENTATION}
본 개시내용은 일반적으로 컴퓨터들에 관한 것으로, 특히 인공 지능 비디오 프레임 세그먼트화를 사용하여 비디오 프레임 픽셀 데이터를 처리하는 방법 및 장치에 관한 것이다.
랩톱 또는 모바일 디바이스와 같은 전자 사용자 디바이스는 이미지들을 캡처하는 카메라를 포함한다. 카메라는 디바이스의 사용자의 이미지들이 다른 사용자 디바이스들에 송신되는 영상 통화 동안 사용될 수 있다.
도 1은 영상 회의 동안 비디오 프레임들을 세그먼트화하고 인코딩하는 종래의 프로세스를 나타낸 프로세스 흐름도이다.
도 2는 영상 회의 동안 비디오 프레임들을 디코딩하고 디스플레이하는 종래의 프로세스를 나타낸 흐름도이다.
도 3은 본 개시내용의 교시에 따라 인공 지능 비디오 프레임 세그먼트화를 사용하여 엔드-투-엔드 영상 회의에서 통신하도록 구조화되는 예시적인 사용자 디바이스를 예시한다.
도 4는 도 3의 사용자 디바이스의 비디오 프레임 세그먼트화기 회로 및 비디오 인코더 회로의 예시적인 구현의 블록도이다.
도 5는 도 3의 사용자 디바이스의 비디오 디코더 회로 및 비디오 디스플레이 컨트롤러 회로의 예시적인 구현의 블록도이다.
도 6은 판독 및 기입 동작들이 상이한 시간들에서 도 3 및 도 5의 비디오 디코더 회로 및 비디오 디스플레이 컨트롤러 회로에 의해 수행되는 예시적인 버퍼 풀(buffer pool)을 예시한다.
도 7은 본 개시내용의 교시에 따라 저전력 모드에서 도 3 및 도 5의 예시적인 비디오 디코더 회로에 의해 디코딩되고 사용자 디바이스 상에 디스플레이되는 비디오 프레임들의 예시적인 표현이다.
도 8은 비디오 프레임들을 세그먼트화, 인코딩, 및 송신하도록 도 3 및/또는 도 4의 비디오 프레임 세그먼트화기 회로 및 비디오 인코더 회로를 구현하기 위해 예시적인 프로세서 회로에 의해 실행 및/또는 인스턴스화될 수 있는 예시적인 머신 판독가능 명령어들 및/또는 동작들을 나타내는 흐름도이다.
도 9는 비디오 프레임들을 디코딩, 렌더링, 및 디스플레이하도록 도 3 및/또는 도 5의 비디오 디코더 회로 및 비디오 디스플레이 컨트롤러 회로를 구현하기 위해 예시적인 프로세서 회로에 의해 실행 및/또는 인스턴스화될 수 있는 예시적인 머신 판독가능 명령어들 및/또는 동작들을 나타내는 흐름도이다.
도 10은 버퍼 풀에서 인트라-프레임 데이터를 디코딩, 저장, 및/또는 업데이트하도록 도 3, 도 5, 및/또는 도 6의 비디오 디코더 회로 및 비디오 디스플레이 컨트롤러 회로에 의해 버퍼 풀에서 판독 및 기입 동작들을 구현하기 위해 예시적인 프로세서 회로에 의해 실행 및/또는 인스턴스화될 수 있는 예시적인 머신 판독가능 명령어들 및/또는 동작들을 나타내는 흐름도이다.
도 11은 본 개시내용의 교시에 따라 인공 지능 비디오 프레임 세그먼트화를 구현하도록 도 3 내지 도 5의 사용자 디바이스를 구현하기 위해 도 8, 도 9, 및 도 10의 예시적인 머신 판독가능 명령어들을 실행하도록 구조화되는 프로세서 회로를 포함하는 예시적인 처리 플랫폼의 블록도이다.
도 12는 도 11의 프로세서 회로의 예시적인 구현의 블록도이다.
도 13은 도 11의 프로세서 회로의 다른 예시적인 구현의 블록도이다.
도 14는 (예를 들어, 라이센스, 판매, 및/또는 사용을 위해) 최종 사용자들 및/또는 소비자들과 연관된 클라이언트 디바이스들, (예를 들어, 판매, 재판매, 라이센스, 및/또는 서브-라이센스를 위해) 소매업자들, 및/또는 (예를 들어, 소매업자들 및/또는 직접 구매 고객들과 같은 다른 최종 사용자들에게 배포될 제품들에 포함시키기 위해) OEM(original equipment manufacturer)들에 소프트웨어(예를 들어, 도 8, 도 9, 및/또는 도 10의 예시적인 머신 판독가능 명령어들에 대응하는 소프트웨어)를 배포하는 예시적인 소프트웨어 배포 플랫폼(예를 들어, 하나 이상의 서버)의 블록도이다.
일반적으로, 동일한 또는 유사한 부분들을 지칭하기 위해 도면(들) 및 동반하는 기입된 설명 전체에 걸쳐 동일한 참조 번호들이 사용될 것이다. 도면들은 일정 비율로 그려지는 것은 아니다. 대신에, 층들 또는 영역들의 두께는 도면들에서 확대될 수 있다. 도면들은 깨끗한 선들 및 경계들을 갖는 층들 및 영역들을 보여주지만, 이러한 선들 및/또는 경계들의 일부 또는 전부는 이상화될 수 있다. 실제로, 경계들 및/또는 선들은 관찰불가능하고/하거나, 혼합되고/되거나, 불규칙할 수 있다.
구체적으로 달리 언급되지 않는 한, "제1", "제2", "제3" 등과 같은 서술어들은 어떤 식으로든 우선순위, 물리적 순서, 리스트 내의 배열, 및/또는 순서화의 임의의 의미를 부여하거나 달리 지시하지 않고 본 명세서에서 사용되지만, 단지 개시된 예들의 이해의 편의를 위해 요소들을 구별하기 위한 라벨들 및/또는 임의의 명칭들로서 사용된다. 일부 예들에서, 서술어 "제1"은 상세한 설명에서의 요소를 지칭하기 위해 사용될 수 있고, 동일한 요소는 청구항에서 "제2" 또는 "제3"과 같은 상이한 서술어로 지칭될 수 있다. 이러한 경우들에서, 이러한 서술어들은 그 요소들을 뚜렷하게 식별하기 위해서만 사용된다(예를 들어, 그렇지 않으면 동일한 명칭을 공유할 수 있다)는 점이 이해되어야 한다.
본 명세서에서 사용되는 바와 같이, "대략" 및 "약"은 제조 공차 및/또는 다른 실세계의 불완전성으로 인해 정확하지 않을 수 있는 치수들을 지칭한다. 본 명세서에서 사용되는 바와 같이, "실질적으로 실시간"은 컴퓨팅 시간, 송신 등에 대한 실세계 지연이 있을 수 있다는 것을 인식하는 거의 순간적인 방식의 발생(occurrence in a near instantaneous manner)을 지칭한다. 따라서, 달리 명시되지 않는 한, "실질적으로 실시간"은 실시간 +/- 1초를 지칭한다.
본 명세서에서 사용되는 바와 같이, 그 변형들을 포함한 "통신 중"이라는 문구는, 하나 이상의 중간 컴포넌트를 통한 직접 통신 및/또는 간접 통신을 포함하고, 직접 물리(예를 들어, 유선) 통신 및/또는 일정한 통신을 요구하지 않고, 오히려 주기적 간격들, 스케줄링된 간격들, 비주기적 간격들, 및/또는 일회성 이벤트들에서의 선택적 통신을 추가적으로 포함한다.
본 명세서에서 사용되는 바와 같이, "프로세서 회로"는 (i) 하나 이상의 반도체 기반 로직 디바이스(예를 들어, 하나 이상의 트랜지스터에 의해 구현되는 전기 하드웨어)를 포함하고 특정 동작(들)을 수행하도록 구조화된 하나 이상의 특수 목적 전기 회로, 및/또는 (ii) 하나 이상의 반도체 기반 로직 디바이스(예를 들어, 하나 이상의 트랜지스터에 의해 구현되는 전기 하드웨어)를 포함하고 특정 동작들을 수행하기 위한 명령어들로 프로그래밍된 하나 이상의 범용 반도체 기반 전기 회로를 포함하는 것으로 정의된다. 프로세서 회로의 예들은 프로그래밍된 마이크로프로세서들, 명령어들을 인스턴스화할 수 있는 필드 프로그램가능 게이트 어레이(Field Programmable Gate Array, FPGA)들, 중앙 프로세서 유닛(Central Processor Unit, CPU)들, 그래픽 프로세서 유닛(Graphics Processor Unit, GPU)들, 디지털 신호 프로세서(Digital Signal Processor, DSP)들, XPU들, 또는 마이크로컨트롤러들 및 주문형 집적 회로(Application Specific Integrated Circuit, ASIC)들과 같은 집적 회로들을 포함한다. 예를 들어, XPU는 다수의 타입들의 프로세서 회로(예를 들어, 하나 이상의 FPGA, 하나 이상의 CPU, 하나 이상의 GPU, 하나 이상의 DSP 등, 및/또는 이들의 조합) 및 컴퓨팅 태스크(들)를 실행하기에 가장 적합한 처리 회로의 다수의 타입들 중 어느 하나(들)에 컴퓨팅 태스크(들)를 할당할 수 있는 애플리케이션 프로그래밍 인터페이스(들)(API(들))를 포함하는 이종 컴퓨팅 시스템에 의해 구현될 수 있다.
카메라를 포함하는 랩톱, 태블릿, 또는 스마트폰과 같은 전자 사용자 디바이스에서, 사용자 디바이스는 영상 회의 애플리케이션과 같은 사용자 애플리케이션들을 포함할 수 있다. 예를 들어, 영상 회의 동안, 사용자 디바이스의 카메라(예를 들어, 빌트-인 비디오 카메라, 입력 디바이스에 대한 액세서리인 별도의 카메라 등)는 사용자의 이미지들을 생성한다. 사용자 디바이스는 이미지들을 인코딩하여 네트워크 통신을 통해 영상 회의에 참가하는 영상 회의 디바이스들(예를 들어, 랩톱들, 태블릿들, 스마트폰들 등)로서 동작하는 하나 이상의 다른 사용자 디바이스에 송신한다. 하나 이상의 영상 회의 디바이스 각각은 또한 카메라를 포함한다. 영상 회의 동안, 하나 이상의 영상 회의 디바이스의 카메라는 영상 회의 디바이스들의 각자의 사용자들의 이미지들을 생성한다. 하나 이상의 영상 회의 디바이스는 이미지들을 인코딩하여 네트워크 통신들을 통해 사용자 디바이스에 송신한다. 사용자 디바이스는 다른 영상 회의 디바이스(들)로부터 수신된 이미지들을 디코딩하여 사용자 디바이스의 디스플레이 스크린 상에 디스플레이한다.
사용자 디바이스의 카메라에 의해 생성된 이미지를 인코딩하는 것은 사용자 디바이스의 많은 양의 처리 전력을 사용할 수 있다. 일부 예들에서, 처리 전력의 상당 부분은 더블 데이터 레이트 입력/출력(double data rate input/output, DDRIO) 및 메모리 컨트롤러 전력과 같은 전력 소비 메모리 리소스들을 이용하는 메모리 대역폭 사용과 관련된다. 예를 들어, 종래의 영상 회의 인코딩 파이프라인들에서는, 전체 비디오 프레임(예를 들어, 1920 x 1080 픽셀 해상도 이미지)이 수회(예를 들어, 7회 이상) 메모리(예를 들어, 동적 랜덤 액세스 메모리, 정적 랜덤 액세스 메모리 등)로부터 판독 및/또는 그에 기입될 수 있다. 일부 예들에서, 영상 회의 애플리케이션들은 높은 프레임 레이트(예를 들어, 초당 60 프레임)를 사용한다. 일부 예들에서, 비디오 인코더는 비디오 데이터를 효율적으로 압축하기 위해 모션 보상 및/또는 모션 추정 기법들을 용이하게 할 수 있는 표준-준수 코딩 방식들 또는 기법들(예를 들어, AVC(Advanced Video Coding), HEVC(High Efficiency Video Coding) 등)을 사용한다. 모션 추정은 비디오 시퀀스의 비디오 프레임(들)에서 객체들(예를 들어, 영상 회의 애플리케이션의 사용자들) 및/또는 카메라(예를 들어, 정적 또는 동적 배경)에 대응하는 움직임 패턴들을 검출하는 기법이다. 모션 보상은 부분적으로 처리된 프레임들(예를 들어, 이전 및/또는 양방향 프레임들)뿐만 아니라 하나 이상의 완전히 처리된 프레임(예를 들어, 참조 프레임)에 기초하여 객체(들)의 모션 및/또는 카메라 움직임들을 예측하는 알고리즘을 사용하여 구현될 수 있다. 영상 회의 스트림을 처리하기 위해 참조 프레임이 하나만 있는 예시적인 표준-준수 방식들을 사용할 때, 영상 회의 애플리케이션은 초당 30 프레임으로 생성된 비디오 프레임 데이터를 처리(예를 들어, 인코딩)하기 위해 상당한 양의 메모리 대역폭(예를 들어, 90 MBps(Megabytes per second))을 사용할 수 있다. 이하의 예시적인 수학식 1은 영상 회의 애플리케이션이 영상 회의 스트림을 처리/인코딩하기 위해 사용하는 예시적인 메모리 대역폭의 양을 계산하는 데 사용될 수 있다.
(수학식 1) 메모리 대역폭 = 1920 * 1080 * 1.5 * 30 = 93,312,000 bytes
위의 예시적인 수학식 1에서, 1920 및 1080은 프레임의 픽셀들의 폭 및 높이이고, 1.5는 4:2:0 크로마 서브샘플링을 갖는 YUV 컬러 공간을 지칭하는 상수 값이고, 30은 초당 생성된 프레임들의 수이다.
그에 부가하여, 사용자 디바이스에서 영상 회의 디바이스들로부터 수신된 이미지들을 디코딩하는 것은 메모리 대역폭에 관련된 많은 양의 처리 전력을 사용할 수 있다. 예를 들어, 알려진 영상 회의 디코딩 및 디스플레이 파이프라인들에서는, 전체 비디오 프레임(예를 들어, 1920 x 1080 픽셀 해상도 이미지)이 수회(예를 들어, 4회 이상) 메모리(예를 들어, 동적 랜덤 액세스 메모리, 정적 랜덤 액세스 메모리 등)로부터 판독 및/또는 그에 기입될 수 있다. 일부 예들에서, 사용자 디바이스가 복수의(예를 들어, 15개의) 영상 회의 디바이스로부터 이미지들을 수신하도록 영상 회의는 복수의(예를 들어, 16명의) 참가자를 포함할 수 있다. 따라서, 전체 비디오 프레임들에 대한 메모리로부터의 판독들 및/또는 메모리로의 기입들의 수는 추가 참가자들의 수(예를 들어, 영상 회의 디바이스들의 수)로 곱해진다. 그에 부가하여, 높은 프레임 레이트(예를 들어, 초당 30 프레임)가 영상 회의를 위해 사용되고 표준-준수(예를 들어, AVC, HEVC 등) 모션 보상 기법들이 디코딩을 위해 사용되는 경우, 영상 회의 애플리케이션은 영상 회의 세션에서 16명의 참가자에 대한 디코딩된 비디오 프레임들을 처리(예를 들어, 디코딩), 다운스케일링, 시그널링, 및/또는 디스플레이하기 위해 상당한 양의 메모리 대역폭(예를 들어, 1.5 GBps(Gigabytes per second))을 사용할 수 있다. 이하의 예시적인 수학식 2는 영상 회의 애플리케이션이 영상 회의 스트림(들)을 처리/디코딩하기 위해 사용하는 예시적인 메모리 대역폭의 양을 계산하는 데 사용될 수 있다.
(수학식 2) 메모리 대역폭 = 1920 * 1080 * 1.5 * 30 * 16 = 1,492,992,000 bytes
위의 예시적인 수학식 2에서, 1920 및 1080은 프레임의 픽셀들의 폭 및 높이이고, 1.5는 4:2:0 크로마 서브샘플링을 갖는 YUV 컬러 공간을 지칭하는 상수 값이고, 30은 초당 생성된 프레임들의 수이고, 16은 영상 회의 세션에서의 디스플레이를 위해 디코딩된 비디오 스트림들의 수이다.
일부 예들에서, 사용자 디바이스의 카메라 또는 영상 회의 디바이스(들)의 카메라(들)에 의해 생성된 이미지의 전경 부분은 사용자의 묘사(depiction)와 같은 관련 정보를 포함한다. 일부 예들에서, 이미지의 배경 부분은 이전 프레임으로부터 실질적으로 변경되지 않은 이미지의 사용자 뒤의 덜 관련된 정보(예를 들어, 방, 벽 등)를 포함한다. 일부 예들에서, 이미지의 전경 부분은 사용자와 일부 배경 부분들을 포함하는 비디오 프레임 내의 픽셀들의 직사각형 영역이다. 일부 예들에서, 직사각형 전경 영역 및 전경 영역 내부와 외부의 하나 이상의 직사각형 배경 영역은 인공 신경망(artificial neural network, ANN)에 의해 검출된다. 예시적인 ANN은 또한 비디오 프레임을 전경 경계 영역(들) 및 배경 경계 영역(들)으로 세그먼트화하기 위해 예시적인 비디오 인코더 회로에 의해 사용될 수 있는 전경 영역(들) 및 배경 영역(들) 내의 검출된 픽셀들의 메타데이터를 생성하도록 트레이닝되거나 프로그래밍될 수 있다. 일부 예들에서, 사용자 디바이스 또는 영상 회의 디바이스(들)의 비디오 인코더 회로는 배경 경계 영역(들)과 중첩하지 않는 전경 경계 영역(들)의 부분들을 포함하는 비디오 프레임 이미지 데이터의 가상 타일을 결정한다. 따라서, 예시적인 비디오 인코더 회로는 인공 신경망으로부터 수신된 세그먼트화 데이터에 기초하여 영상 회의의 사용자를 대부분 포함하는 비디오 프레임의 픽셀 데이터를 결정할 수 있다.
본 명세서에 개시된 예들은 영상 회의 동안 처리 시간, 메모리 대역폭 사용, 및 전력 소비를 감소시키기 위해 메모리로부터의 및/또는 메모리로의 이미지의 배경 부분들의 판독 및/또는 기입을 생략한다. 본 명세서에 개시된 예들은 영상 회의 동안 메모리 대역폭을 감소시키기 위해 사용자 디바이스의 카메라에 의해 캡처된 비디오 프레임 이미지의 가상 타일을 처리(예를 들어, 인코딩)하는 비디오 인코더 회로를 포함한다. 그에 부가하여, 본 명세서에 개시된 예들은 메모리 대역폭을 감소시키기 위해 영상 회의 동안 다른 사용자 디바이스들로부터 수신된 데이터 비트스트림으로부터 가상 타일을 처리(예를 들어, 디코딩)하는 비디오 디코더 회로를 포함한다.
도 1은 비디오 시퀀스의 비디오 프레임들을 세그먼트화하고 인코딩하는 종래의 기법들을 사용하여 영상 회의 동안 비디오 프레임들을 인코딩하는 예시적인 프로세스(100)를 예시한다. 도 1에서, 하나 이상의 카메라는 비디오 프레임들을 캡처하고 비디오 프레임 픽셀 데이터를 비디오 인코더와 다운스케일러(down-scaler) 둘 다에 전송한다. 다운스케일러는 비디오 프레임(들)을 서브샘플링하고, 인공 지능 기반 세그먼트화 방식(artificial intelligence-based segmentation scheme)이 비디오 프레임(들)을 처리하여 비디오 프레임(들)의 전경 및 배경 영역(들)을 식별한다. 비디오 프레임(들)의 식별된 배경 영역(들)은 가상 배경으로 대체되고/되거나 블러링된다. 비디오 인코더는 수정된 비디오 프레임(들)을 표준 비디오 압축 코덱(예를 들어, H.264 AVC(Advanced Video Coding), H.265 HEVC(High Efficiency Video Coding) 등) 및 모션 추정을 사용하여 인코딩한다. 비디오 인코더는 프레임을 다수의 블록들(예를 들어, 매크로블록들, 코딩 트리 유닛들 등)로 분할하고, 블록 매칭 알고리즘을 사용하여 현재 비디오 프레임의 매크로블록들을 비디오 시퀀스 내의 인근(예를 들어, 이전) 비디오 프레임의 대응하는 블록 및 인접 매크로블록들과 비교할 수 있다. 한 위치로부터 다른 위치로의 매크로블록의 움직임을 모델링하는 모션 벡터가 또한 생성된다. 인트라-프레임 데이터(즉, 참조 프레임 데이터)의 경우, 비디오 인코더는 블록 매칭 알고리즘을 사용하여 프레임 내의 블록들의 일부(예를 들어, 그의 전부 및/또는 부분)를 인코딩하여 유사한 공간적 정보를 갖는 인접 블록들을 조합, 압축, 통합 등을 한다. 일부 예들에서, 인트라-프레임 데이터에 대한 모션 벡터들이 없고, 대신에 공간적 정보를 사용하여 정보를 효과적으로 압축한다. 인터-프레임 데이터(즉, 예측 프레임 데이터)의 경우, 상당히 변경된 블록들은 인코딩되고, 인근 프레임들로부터 변경되지 않은 채로 남아 있는 픽셀 데이터는 인코딩되지 않는다. 일부 예들에서, 비디오 인코더는 매크로-블록 움직임(들)을 계산하고, 매크로-블록 움직임(들)을 모션 벡터(들)로서 시그널링한다. 전체 비디오 프레임에 대해 모션 추정 및 블록 매칭과 같은 압축 기법들을 수행하는 것은, 예를 들어, 1920x1080 픽셀 프레임에 8x8 크기의 32,400개의 블록을 포함할 수 있다. 비디오 시퀀스 내의 비디오 프레임들에 대해 이러한 많은 블록들에 프로세스들을 실행하는 것은 프로세서에 집중적일 수 있다. 처리를 클라우드 컴퓨팅 구성으로 이동시키는 것은 영상 회의에 지연을 추가할 것이고, 이는 영상 회의의 품질을 감소시켜, 좋지 않은 사용자 경험을 야기할 것이다. 프레임당 이러한 많은 블록들을 처리(예를 들어, 인코딩)하는 것은 비디오 인코더와 메모리 사이에 상당한 양의 트래픽을 생성함으로써, 컴퓨팅 시스템의 메모리 대역폭을 제한한다.
도 2는 비디오 시퀀스의 비디오 프레임들을 디코딩하고 디스플레이하는 종래의 기법들을 사용하여 영상 회의 동안 비디오 프레임들을 디코딩하는 예시적인 프로세스(200)를 예시한다. 도 2에서, 비디오 디코더는 네트워크를 통해 비디오 인코더 디바이스에 의해 전송된 데이터의 비트스트림을 수신한다. 비트스트림은 표준 비디오 코덱(예를 들어, H.264 AVC(Advanced Video Coding), H.265 HEVC(High Efficiency Video Coding) 등) 및 모션 추정 프로세스들에 의해 시간 경과에 따라 비디오 시퀀스의 비디오 프레임들로 디코딩된다. 비디오 시퀀스 내의 디코딩된 비디오 프레임들은 다운스케일링되고, 영상 회의 애플리케이션을 구현하는데 사용되는 사용자 디바이스의 디스플레이 스크린에 맞도록 그리드(예를 들어, 2x2 프레임)로 합성된다. 도 1의 비디오 인코더와 같이, 비디오 디코더는 인코딩된 인트라-프레임 데이터 및 인터-프레임 데이터의 풀-프레임 픽셀 데이터에 대한 처리(예를 들어, 디코딩) 동작들을 수행한다. 비디오 디코더는 인코딩된 전체 비디오 프레임 픽셀 데이터(예를 들어, 인트라-프레임 데이터) 또는 비디오 디코더가 모션 추정 및/또는 블록 매칭을 위해 사용하는 픽셀 데이터의 인코딩된 블록들(예를 들어, 매크로블록들, 코딩 트리 유닛들 등)을 포함하는 비트스트림 데이터를 디코딩한다. 이들 시스템, 장치, 및 방법을 사용하여 인트라-프레임 데이터 및 인터-프레임 데이터를 디코딩하는 것은 계산 집약적인 작업이고, 메모리에서의 반복된 판독 및 기입으로부터 상당한 양의 메모리 대역폭을 소비한다.
도 3은 본 개시내용의 교시에 따라 구성된 예시적인 시스템(300)의 블록도이다. 도 3의 예에서, 시스템(300)은 영상 회의 동안 인공 지능 비디오 프레임 세그먼트화를 사용하여 비디오 프레임 픽셀 데이터를 처리(예를 들어, 인코딩 및 디코딩)하기 위해 네트워크(304)를 통해 하나 이상의 다른 사용자 디바이스(들)(306)와 통신하는 사용자 디바이스(302)를 포함한다. 도 3의 예시적인 사용자 디바이스(302) 및/또는 예시적인 사용자 디바이스(들)(306)는 명령어들을 실행하는 중앙 처리 유닛과 같은 프로세서 회로(308)에 의해 인스턴스화(예를 들어, 인스턴스의 생성, 임의의 시간 길이 동안 출현, 실현, 구현 등)될 수 있다. 추가적으로 또는 대안적으로, 도 3의 예시적인 사용자 디바이스(302) 및/또는 예시적인 사용자 디바이스(들)(306)는 명령어들에 대응하는 동작들을 수행하도록 구조화된 ASIC 또는 FPGA에 의해 인스턴스화(예를 들어, 인스턴스의 생성, 임의의 시간 길이 동안 출현, 실현, 구현 등)될 수 있다. 따라서, 도 3의 회로의 일부 또는 전부는 동일하거나 상이한 시간에 인스턴스화될 수 있다는 것을 이해해야 한다. 회로의 일부 또는 전부는, 예를 들어, 하드웨어에서 동시에 및/또는 하드웨어에서 직렬로 실행되는 하나 이상의 스레드로 인스턴스화될 수 있다. 또한, 일부 예들에서, 도 3의 회로의 일부 또는 전부는 마이크로프로세서 상에서 실행되는 하나 이상의 가상 머신 및/또는 컨테이너에 의해 구현될 수 있다.
도 3에 도시된 예시적인 시스템(300)은 영상 회의와 연관된 비디오 시퀀스에서의 비디오 이미지들을 처리(예를 들어, 인코딩 및/또는 디코딩)하기 위해 본 개시내용의 교시에 따라 구성된 예시적인 사용자 디바이스(302)를 포함한다. 예시적인 사용자 디바이스(302)는 랩톱, 데스크톱 컴퓨터, 전자 태블릿, 스마트폰 등과 같은 개인용 컴퓨팅 디바이스일 수 있다. 도 3에 도시된 예시적인 시스템(300)은 사용자 디바이스(들)(306)와 실질적으로 유사하거나 동일할 수 있는 예시적인 사용자 디바이스(302)의 상세를 도시한다. 하나의 예시적인 사용자 디바이스(306)가 도 3에 도시되어 있지만, 복수의 원격 및/또는 로컬 사용자 디바이스(306)가 네트워크(304)를 통해 사용자 디바이스(302)에 접속될 수 있다.
도 3의 예시적인 사용자 디바이스(302)는 프로세서 회로(308)를 포함한다. 예시적인 사용자 디바이스(302)의 프로세서 회로(308)는 반도체 기반 하드웨어 로직 디바이스이다. 하드웨어 프로세서 회로(308)는 로컬 사용자 디바이스(302)의 중앙 프로세서 유닛(CPU)을 구현할 수 있고, 임의의 수의 코어를 포함할 수 있고, 예를 들어, Intel® Corporation으로부터 상업적으로 입수가능한 프로세서에 의해 구현될 수 있다. 예시적인 사용자 디바이스(302)는 비휘발성 메모리(예를 들어, 플래시 메모리)와 같은 하나 이상의 스토리지 디바이스(310)를 포함한다. 예시적인 사용자 디바이스(302)는 사용자 입력 디바이스(들)(312), 사용자 출력 디바이스(들)(314), 및 예시적인 동적 랜덤 액세스 메모리(DRAM)(316)를 포함한다. 사용자 디바이스(302)가 DRAM(316)을 포함하지만, 이러한 타입의 랜덤 액세스 메모리는 다른 타입들의 휘발성 메모리(예를 들어, 정적 랜덤 액세스 메모리)에 의해 대체 및/또는 보완될 수 있다. 예시적인 사용자 디바이스(302)는 또한 사용자 디바이스(302)의 컴포넌트들을 통신가능하게 결합하는 버스(317)를 포함한다.
사용자 디바이스(302)의 예시적인 프로세서 회로(308)는, 예를 들어, 비디오 인코더 회로(318), 비디오 프레임 세그먼트화기 회로(320), 비디오 디코더 회로(322), 비디오 디스플레이 컨트롤러 회로(324), 및 복제기 회로(326)를 포함한 예시적인 회로를 인스턴스화 및/또는 실행한다. 예시적인 프로세서 회로(308)는 또한, 예를 들어, 사용자 디바이스(302) 상에 설치된 영상 회의 애플리케이션(330)과 같은 사용자 애플리케이션(들)(328)을 포함한 예시적인 머신 판독가능 명령어들(예를 들어, 소프트웨어)을 실행한다. 예시적인 사용자 애플리케이션(들)(328)은 스토리지 디바이스(들)(310)에 저장된다. 사용자 디바이스(302)의 예시적인 사용자 입력 디바이스(들)(312)는 영상 회의(들) 동안 사용자 및 주변 구역들의 비디오 이미지들을 생성하는 하나 이상의 카메라(들)(332)를 포함한다.
사용자 디바이스(302)의 예시적인 출력 디바이스(들)(314)는 디스플레이 스크린(334)을 포함한다. 일부 예들에서, 디스플레이 스크린(334)은 사용자가 사용자의 스타일러스 및/또는 하나 이상의 손가락 또는 손으로 디스플레이 스크린(334)을 터치함으로써 디스플레이 스크린(334) 상에 제시된 데이터와 상호작용할 수 있게 하는 터치 패널을 포함한다. 추가적으로 또는 대안적으로, 사용자는 카메라(들)(332), 키보드, 마우스, 터치 패드 등과 같은 사용자 입력 디바이스(들)(312)를 통해 디스플레이 스크린(334) 상에 제시된 데이터와 상호작용할 수 있다.
예시적인 사용자 디바이스(302)는 네트워크(304)를 통해 다른 시스템들 및/또는 디바이스들(예를 들어, 사용자 디바이스(들)(306))에 대해 데이터(예를 들어, 비디오 비트스트림 데이터)를 전송(예를 들어, 송신) 및/또는 수신하는 인터페이스 회로(336)를 포함한다. 예시적인 인터페이스 회로(336)는 영상 회의 세션(들)을 용이하게 하기 위해 다른 디바이스들(예를 들어, 사용자 디바이스(들)(306))과 통신하기 위해 인터넷 프로토콜들(예를 들어, 보이스 오버 인터넷 프로토콜들(voice over internet protocols), 영상 회의 프로토콜들 등)을 사용할 수 있다. 일부 예들에서, 인터페이스 회로(336)는 예시적인 비트스트림 데이터로 인코딩된 예시적인 비디오 프레임(들)이 올바른 순서로 처리되도록 착신 및 발신 데이터를 동기화한다.
도 3에 도시된 사용자 디바이스(302)의 예시적인 프로세서 회로(308)는 예시적인 비디오 인코더 회로(318)를 포함한다. 예를 들어, 영상 회의 동안, 비디오 인코더 회로(318)는 생성된 비디오 프레임 이미지 데이터를 처리(예를 들어, 이미지 처리 수행, 인코딩 등)하고 인코딩된 비트스트림을 네트워크(304)를 통해 사용자 디바이스(들)(306)에 송신할 수 있다. 예시적인 비디오 인코더 회로(318)는 예시적인 비디오 프레임 세그먼트화기 회로(320)에 의해 생성된 세그먼트화 데이터에 기초하여 비디오 프레임 픽셀 데이터의 전경 경계 영역(들) 및 배경 경계 영역(들)을 결정할 수 있다. 예시적인 비디오 인코더 회로(318)는 또한 전경 및 배경 경계 영역(들)에 기초하여 가상 타일을 결정할 수 있다. 본 명세서에 개시된 예들에서, 가상 타일(들)은 전경 경계 영역(들)에는 포함되지만 배경 경계 영역(들)에는 포함되지 않는 비디오 프레임의 픽셀 데이터 영역(들)을 지칭한다. 예시적인 비디오 인코더 회로(318)는 가상 타일(들)을 처리(예를 들어, 비디오 인코딩)하고, 전경 경계 영역(들) 및 배경 경계 영역(들)에 기초하여 ARSEI(annotated regions supplemental enhancement information) 메시지들을 기입하고, 가상 타일(들)을 데이터 비트스트림(들)으로 인코딩하고, 비트스트림(들)을 네트워크(304)를 통해 하나 이상의 사용자 디바이스(306)에 송신할 수 있다.
도 3에 도시된 사용자 디바이스(302)의 예시적인 프로세서 회로(308)는 비디오 프레임 세그먼트화기 회로(320)를 포함한다. 일부 예들에서, 비디오 프레임 세그먼트화기 회로(320)는 카메라(들)(332)로부터 비디오 프레임 픽셀 데이터를 수신하고, 풀-해상도 이미지에 대한 것보다 더 적은 픽셀들을 처리하기 위해 이미지를 다운스케일링할 수 있다. 일부 예들에서, 비디오 프레임 세그먼트화기 회로(320)는 전경 검출 모델(들) 및 배경 검출 모델(들)에 기초하여 픽셀 데이터를 세그먼트화 마스크들로 세그먼트화하도록 트레이닝된 인공 신경망이다. 예시적인 비디오 프레임 세그먼트화기 회로(320)는 비디오 프레임의 전경 영역(들) 및 배경 영역(들)에 위치된 픽셀 데이터를 나타내는 세그먼트화 데이터를 생성할 수 있다.
도 3에 도시된 사용자 디바이스(302)의 예시적인 프로세서 회로(308)는 비디오 디코더 회로(322)를 포함한다. 일부 예들에서, 비디오 디코더 회로(322)는 하나 이상의 사용자 디바이스(들)(306)로부터 비트스트림 데이터 및 ARSEI(annotated regions supplemental enhancement information) 메시지들을 수신한다. 예시적인 비디오 디코더 회로(322)는 비디오 코딩 표준들(예를 들어, AVC, HEVC 등)을 사용하여 비트스트림을 비디오 프레임 픽셀 데이터로 디코딩할 수 있다. 일부 예들에서, 디코딩된 이미지 데이터는 인코딩된 가상 타일 및/또는 인코딩된 풀-프레임 비디오 이미지를 포함한다. 예시적인 비디오 디코더 회로(322)는 ARSEI 메시지들을 판독하고 ARSEI 메시지들을 사용하여 어떤 픽셀 데이터가 전경 영역(들) 및 배경 영역(들)과 연관되는지, 어떤 픽셀 데이터가 가상 타일(들)에 포함되는지, 및/또는 비디오 프레임에서 가상 타일(들)이 (예를 들어, 프레임의 상단-좌측 코너에 대해) 어디에 배치될지를 결정할 수 있다. 일부 예들에서, 비디오 디코더 회로(322)는 디코딩을 위해 나중에(예를 들어, 저장 후 1초 후에) 페치하기 위해 비트스트림 데이터를 DRAM(316)에 저장한다.
도 3에 도시된 사용자 디바이스(302)의 예시적인 프로세서 회로(308)는 비디오 디스플레이 컨트롤러 회로(324)를 포함한다. 일부 예들에서, 비디오 디스플레이 컨트롤러 회로(324)는 비디오 신호 생성기의 일부로서 또는 프로세서 회로(308) 상의 독립형 구조로서 포함되는 집적 회로이다. 예시적인 비디오 디스플레이 컨트롤러 회로(324)는 비디오 디코더 회로(322)로부터 수신된 픽셀 데이터(예를 들어, 가상 타일(들) 픽셀 데이터)에 기초하여 비디오 신호를 생성할 수 있다. 비디오 디스플레이 컨트롤러 회로(324)에 의해 생성된 예시적인 비디오 신호는 디스플레이 스크린(334)의 게이트 스캔 드라이버(들) 및/또는 디스플레이 드라이버(들)에 전송되어, 디스플레이 스크린(334)의 픽셀들 및/또는 서브픽셀들이 생성된 비디오 신호에 기초하여 픽셀 정보를 디스플레이하게 한다.
도 3에 도시된 사용자 디바이스(302)의 예시적인 프로세서 회로(308)는 복제기 회로(326)를 포함한다. 일부 예들에서, 복제기 회로(326)는 메모리(예를 들어, DRAM(316)) 내에 비디오 프레임 이미지들의 사본들을 생성할 수 있다. 일부 예들에서, 비디오 디코더 회로(322)는 비트스트림으로부터 초기 풀-프레임 비디오 이미지를 디코딩할 수 있다. 예시적인 초기 비디오 프레임은 비디오 프레임 데이터의 스트림으로부터 가상 타일(들)을 효율적으로 디코딩하기 위해, H.264 AVC, H.265 HVEC 등과 같은 비디오 코딩 표준들과 함께 모션 추정을 위한 비디오 디코더 회로(322)에 의해 인트라-프레임 데이터(예를 들어, 참조 프레임 데이터)로서 사용될 수 있다. 일부 예들에서, 복제기 회로(326)는 휘발성 메모리(예를 들어, DRAM(316))에 저장된 메모리 버퍼에 인트라-프레임 데이터의 복수의 사본을 생성할 수 있다. 예시적인 비디오 디코더 회로(322) 및 예시적인 비디오 디스플레이 컨트롤러 회로(324)는 영상 회의 동안 메모리 버퍼로부터 판독 및/또는 메모리 버퍼에 기입할 수 있어, 비디오 디코더 회로(322)도 비디오 디스플레이 컨트롤러 회로(324)도 다른 것에 의해 프로세스들이 완료되기를 기다리지 않는다.
본 명세서에 개시된 예들에서, "인트라-프레임 데이터(intra-frame data)"라는 용어는 비디오 프레임(들)의 픽셀 데이터가 압축 알고리즘들(예를 들어, 블록 매칭 알고리즘들)을 사용하여 데이터 비트스트림(들)으로 인코딩되는 비디오 프레임(들)을 설명하는데 사용된다. 본 명세서에 개시된 예들에서, "인터-프레임 데이터(inter-frame data)"라는 용어는, 변경된 픽셀 데이터(예를 들어, 때때로 중요한 픽셀 데이터 또는 현재 프레임 인코딩과 관련된 픽셀 데이터라고 지칭되는, 모션 중인 픽셀들 및/또는 객체들, 전경 영역(들), 전경 경계 영역(들) 등)가 연관된 모션 벡터들을 갖는 데이터 비트스트림(들)으로 인코딩되고, 변경되지 않은 픽셀 데이터(예를 들어, 때때로 중요하지 않은 픽셀 데이터 또는 현재 프레임 인코딩과 관련되지 않은 픽셀 데이터라고 지칭되는, 정적 및/또는 고정 픽셀들 및/또는 객체들, 배경 영역(들), 배경 경계 영역(들) 등)가 (0, 0)의 연관된 모션 벡터들로 인코딩되는 비디오 프레임(들)을 설명하는데 사용된다. 일부 예들에서, 변경된 픽셀 데이터 및 변경되지 않은 픽셀 데이터에 대해 모션 벡터들이 인코딩된다. 이러한 예들에서, 메모리 대역폭을 희생하여 변경된 픽셀 데이터에 대해 모션 추정이 발생하고, 변경되지 않은 픽셀 데이터에 대해 모션 추정이 발생하지 않으며, 변경되지 않은 픽셀 데이터(예를 들어, 배경 영역(들), 배경 경계 영역(들) 등)의 모션 벡터들에 대해 (0, 0)이 기입된다. 인코딩 기법들의 이러한 예들은 메모리 대역폭을 감소시키고, 표준들을 준수하며, 일부(예를 들어, 전부 및/또는 전부보다 적은) 표준 비디오 코딩 하드웨어로 디코딩될 수 있다. 예를 들어, 모션 보상을 사용하는 코덱들은 인트라-프레임 데이터로부터의 픽셀 데이터를 (0, 0)의 모션 벡터(들)(예를 들어, 폐기, 무시 등)가 할당된 인터-프레임 데이터의 구역들에 삽입할 수 있다. 일부 예시적인 인터-프레임 데이터는 (0, 0) 모션 벡터(들)를 갖는 데이터의 구역들(예를 들어, 폐기된 구역들, 무시된 구역들 등)을 채우기 위한 비디오 데이터의 시퀀스에서의 이전 프레임들(예를 들어, "P-프레임들")을 지칭할 수 있다. 다른 예시적인 인터-프레임 데이터는 (0, 0) 모션 벡터(들)를 갖는 데이터의 구역들(예를 들어, 폐기된 구역들, 무시된 구역들 등)을 채우기 위한 비디오 데이터의 시퀀스에서의 이전 및 장래 프레임들(예를 들어, 양방향 또는 "B-프레임들")을 지칭할 수 있다. 어떤 경우에, 인터-프레임 데이터는 인트라-프레임 데이터를 직접 참조할 수 있거나, 인터-프레임 데이터는 재구성된 프레임들의 다른 인터-프레임 데이터를 참조할 수 있다.
도 4는 비디오의 이미지들을 비트스트림으로 인코딩하기 위한 도 3의 예시적인 사용자 디바이스(302)를 포함하는 예시적인 시스템(400)의 블록도이다. 도 4의 예에서, 사용자 디바이스(302)는 본 개시내용의 교시에 따라 비디오 프레임에 대응하는 세그먼트화 데이터를 결정하고, 세그먼트화 데이터에 기초하여 전경 경계 영역(들) 및 배경 경계 영역(들)을 결정하고, 경계 영역들에 기초하여 비디오 프레임의 가상 타일들을 결정하고 인코딩하고, 전경 경계 영역(들) 및 배경 경계 영역(들)을 나타내는 필드 코드 라벨들로 ARSEI 메시지들을 기입하고, 인코딩된 비트스트림 및 ARSEI 메시지들을 송신하도록 구조화된다. 도 4의 예시적인 사용자 디바이스(302)는 명령어들을 실행하는 중앙 프로세서 유닛과 같은 프로세서 회로(308)에 의해 인스턴스화(예를 들어, 인스턴스의 생성, 임의의 시간 길이 동안 출현, 실현, 구현 등)될 수 있다. 추가적으로 또는 대안적으로, 도 4의 사용자 디바이스(302)는 명령어들에 대응하는 동작들을 수행하도록 구조화된 ASIC 또는 FPGA에 의해 인스턴스화(예를 들어, 인스턴스의 생성, 임의의 시간 길이 동안 출현, 실현, 구현 등)될 수 있다. 따라서, 도 4의 회로의 일부 또는 전부는 동일하거나 상이한 시간에 인스턴스화될 수 있다는 것을 이해해야 한다. 회로의 일부 또는 전부는, 예를 들어, 하드웨어에서 동시에 및/또는 하드웨어에서 직렬로 실행되는 하나 이상의 스레드로 인스턴스화될 수 있다. 또한, 일부 예들에서, 도 4의 회로의 일부 또는 전부는 마이크로프로세서 상에서 실행되는 하나 이상의 가상 머신 및/또는 컨테이너에 의해 구현될 수 있다.
일부 예들에서, 사용자 디바이스(들)(302)는 도 4에 도시된 바와 같은 비디오 프레임 세그먼트화기 회로(320)를 포함한다. 예시적인 비디오 프레임 세그먼트화기 회로(320)는 비디오 프리프로세서 회로(402), 전경 검출기 회로(404), 배경 검출기 회로(406), 및 세그먼트화 데이터 결정기 회로(408)를 포함한다. 예시적인 사용자 디바이스(302)는 모델 데이터베이스(410) 및 템플릿 데이터베이스(412)를 추가로 포함한다. 예시적인 모델 데이터베이스(410)는 비디오 프레임 세그먼트화기 회로(320)에 의해 구현되는 인공 신경망에 대한 전경 검출 모델들(414) 및 배경 검출 모델들(416)을 저장한다. 예시적인 템플릿 데이터베이스(412)는 사용자가 영상 회의 동안 비디오 프레임의 배경 영역(들)을 대체하는 데 사용하기 위해 선택할 수 있는 가상 배경 템플릿들(418)을 저장한다.
도 4에 도시된 예에서, 비디오 프리프로세서 회로(402)는 카메라(들)(332)에 의해 출력된 비디오 스트림 신호를 샘플링한다. 일부 예들에서, 비디오 프리프로세서 회로(402)는 비디오 스트림 신호를 다운 샘플링하고/하거나 비디오 스트림 신호의 프레임 레이트를 감소시킨다. 예시적인 비디오 프리프로세서 회로(402)는 샘플링의 결과로서 처리된 비디오 프레임(들)을 생성한다. 처리된 비디오 프레임(들)은 예시적인 모델 데이터베이스(410)에 저장될 수 있다. 일부 예들에서, 비디오 프레임 세그먼트화기 회로(320)는 모델 데이터베이스(410)를 포함한다. 다른 예들에서, 모델 데이터베이스(410)는 도 4에 도시된 바와 같이 비디오 프레임 세그먼트화기 회로(320)에 액세스가능한 위치에서 비디오 프레임 세그먼트화기 회로(320)의 외부에 위치된다.
예시적인 전경 검출기 회로(404)는 처리된 비디오 프레임들의 전경 영역(들)에서 픽셀 데이터를 검출한다. 본 명세서에 개시된 예들에서, 전경 영역은 사용자 및 비디오 프레임의 일부 배경 부분들을 포함하는 비디오 프레임의 부분(예를 들어, 직사각형 구역)이다. 일부 예들에서, 카메라(들)(332)는 동일한 비디오 프레임(들)에서 사용자 디바이스(302)의 둘 이상의 사용자들의 비디오 이미지(들)를 캡처한다. 이러한 예들에서, 전경 검출기 회로(404)는 비디오 프레임(들) 내의 사용자들의 수에 대응하는 전경 영역들의 수를 검출한다.
도 4에 도시된 예에서, 전경 검출기 회로(404)는 각자의 처리된 비디오 프레임(들)의 전경 영역(들)에서 픽셀 데이터를 검출하기 위해 하나 이상의 신경망 모델(들)을 실행한다. 예를 들어, 도 4의 예시적인 전경 검출기 회로(404)는 사용자(들) 및 비디오 프레임(들)의 배경 영역(들)의 부분들을 포함하는 비디오 프레임(들)의 영역(들)(예를 들어, 직사각형 영역(들))에서 픽셀 데이터를 검출하기 위해 하나 이상의 전경 검출 모델(들)(414)을 실행한다. 일부 예들에서, 전경 검출 모델(들)(414)은 신경망 트레이닝의 결과로서 생성된다. 도 4의 예에서, 전경 검출 모델(들)(414)은 모델 데이터베이스(410)에 저장된다.
예시적인 배경 검출기 회로(406)는 처리된 비디오 프레임들의 배경 영역(들)에서 픽셀 데이터를 검출한다. 본 명세서에 개시된 예들에서, 배경 영역은 사용자가 위치하지 않는 비디오 프레임의 정적 및/또는 배경 구역들을 포함하는 비디오 프레임의 하나 이상의 부분이다. 도 4의 예에서, 배경 검출기 회로(406)는 각자의 전처리된 비디오 프레임(들)의 배경 영역(들)에서 픽셀 데이터를 검출하기 위해 하나 이상의 신경망 모델(들)을 실행한다. 예를 들어, 도 4의 예시적인 배경 검출기 회로(406)는 비디오 프레임(들)에 사용자(들)를 포함하지 않는 비디오 프레임(들)의 영역(들)에서 픽셀 데이터를 검출하기 위해 하나 이상의 배경 검출 모델(들)(416)을 실행한다. 따라서, 예시적인 배경 검출기 회로(406)는 사용자(들) 뒤의 구역에 대응하는 픽셀 데이터를 포함하는 비디오 프레임(들)의 부분(들)을 인식한다. 일부 예들에서, 배경 검출기 회로(406)는 전경 영역(들)과 중첩하는 배경 영역(들)에서 픽셀 데이터를 검출한다. 일부 예들에서, 배경 검출 모델(들)(416)은 신경망 트레이닝의 결과로서 생성된다. 도 4의 예에서, 배경 검출 모델(들)(416)은 모델 데이터베이스(410)에 저장된다.
예시적인 세그먼트화 데이터 결정기 회로(408)는 전경 검출기 회로(404) 및 배경 검출기 회로(406)에 의해 검출된 전경 영역(들) 및 배경 영역(들)의 픽셀 데이터에 대응하는 세그먼트화 데이터(예를 들어, 메타데이터)를 결정한다. 예시적인 전경 검출기 회로(404) 및 예시적인 배경 검출기 회로(406)는 전경 영역(들) 및 배경 영역(들)에 각각 있는 픽셀 데이터를 세그먼트화 데이터 결정기 회로(408)에 전송한다. 일부 예들에서, 세그먼트화 데이터 결정기 회로(408)는 비디오 프레임에서 픽셀 데이터가 위치하는 영역(들)에 대응하는 픽셀 데이터에 세그먼트화 마스크(들)를 적용한다. 이러한 예들에서, 세그먼트화 마스크는, 비디오 인코더 회로(318)에 전송된 어느 픽셀 데이터가 어느 영역(들)(예를 들어, 전경 또는 배경)에 속하는지를 식별, 라벨링, 표시 등을 한다.
도 4에 도시된 사용자 디바이스(302)의 예시적인 비디오 인코더 회로(318)는 세그먼트화 데이터 결정기 회로(408)에 의해 생성된 세그먼트화 데이터에 기초하여 전경 경계 영역(들) 및 배경 경계 영역(들)을 결정한다. 예시적인 영상 회의 동안 연관된 로컬 사용자 디바이스(302)의 사용자를 묘사하는 예시적인 비디오 프레임 이미지(420)가 도 4에 도시되어 있다. 예시적인 비디오 프레임 이미지(420)는 비디오 프레임 이미지(420)에서 실선 및 파선의 형태로 비디오 인코더 회로(318)에 의해 결정된 메타데이터(예를 들어, 전경 경계 영역(들)(422) 및 배경 경계 영역들(424))를 나타내는 것으로 도시되어 있다. 예시적인 전경 경계 영역(422)은 사용자 디바이스(302)의 사용자를 둘러싸는 실선 직사각형으로서 예시적인 비디오 프레임(420)에 예시된다. 예시적인 배경 경계 영역들(424)은 사용자 디바이스(302)의 사용자를 포함하지 않는 비디오 프레임의 섹션들을 둘러싸는 점선 직사각형들로서 예시적인 비디오 프레임(420)에 예시된다.
일부 예들에서, 비디오 인코더 회로(318)는, 세그먼트화 데이터에 의해 표시된 전경 영역(들)에 대응하는 픽셀 데이터가 400 픽셀 x 400 픽셀의 경계 영역(예를 들어, 직사각형 경계 박스) 내에 들어맞고, 경계 영역의 상단-좌측 코너가 (예를 들어, 비디오 프레임의 상단-좌측 코너의 원점에 대해) 픽셀 (480, 0)에 위치하고, 경계 영역이 "전경" 타입(예를 들어, 전경 경계 영역(422))이라고 결정할 수 있다. 일부 예들에서, 비디오 인코더 회로(318)는, 세그먼트화 데이터에 의해 표시된 배경 영역(들)에 대응하는 픽셀 데이터가 100 픽셀 x 300 픽셀의 경계 영역(예를 들어, 배경 경계 박스) 내에 들어맞고, 경계 영역의 상단-좌측 코너가 (예를 들어, 비디오 프레임의 상단-좌측 코너의 원점에 대해) 픽셀 (480, 0)에 위치하고, 경계 영역이 "배경" 라벨 및/또는 타입(예를 들어, 배경 경계 영역들(424))이라고 결정할 수 있다. 이 예들에서, 배경 경계 영역(424)은 전경 경계 영역(422)과 중첩하고 있다. 일부 예들에서, 전경 경계 영역(422)과 중첩하는 다수의 배경 경계 영역들(424)이 비디오 인코더 회로(318)에 의해 검출될 수 있다. 본 명세서에 개시된 예들에서, 배경 경계 영역(들)(424)이 전경 경계 영역(422)과 중첩하지 않는 비디오 프레임의 영역(들)은 가상 타일로 지칭된다.
도 4의 도시된 예에서, 비디오 인코더 회로(318)는 전경 경계 영역(들)(422) 및 배경 경계 영역(들)(424)을 파싱하고 2개 이상의 경계 영역의 어느 구역들이 중첩하지 않는지를 결정함으로써 가상 타일을 결정한다. 일부 예들에서, 가상 타일은 사용자 디바이스(302)의 사용자를 나타내는 비디오 프레임 픽셀 데이터를 포함한다. 4개의 예시적인 배경 경계 영역(424)이 예시적인 비디오 프레임 이미지(420)에 예시되어 있지만, 가상 타일이 예시적인 비디오 프레임 이미지(420)에 도시된 것보다 배경 영역들의 더 적은 픽셀들을 포함하도록 가상 타일을 정제(refine)하기 위해 가변 크기들의 더 많은 배경 경계 영역들이 비디오 인코더 회로(318)에 의해 결정될 수 있다. 일부 예들에서, 비디오 인코더 회로(318)는 가상 타일(들)의 블록들(예를 들어, 매크로블록들, 코딩 트리 유닛들 등) 및/또는 픽셀 데이터의 모션 벡터를 결정한다. 예시적인 모션 벡터는 비트스트림에 기입되고, 비트 형태로 압축된 블록(예를 들어, 매크로블록, 코딩 트리 유닛 등) 및/또는 픽셀 데이터에 대응한다. 일부 예들에서, 비디오 인코더 회로(318)는 가상 타일(들)에 포함되지 않은 픽셀 데이터 및/또는 픽셀 데이터의 블록들(예를 들어, 매크로블록들, 코딩 트리 유닛들 등)에 대해 (0, 0)의 모션 벡터들을 기입한다.
일부 예들에서, 비디오 인코더 회로(318)는 사용자 디바이스(302)의 DRAM(316)으로부터 판독하고/하거나 이에 기입한다. 예시적인 비디오 인코더 회로(318)는 비디오 프레임 세그먼트화기 회로(320)로부터 수신된 비디오 프레임 픽셀 데이터의 픽셀 데이터를 장래의 처리를 위해 DRAM(316)에 저장할 수 있다. 일부 예들에서, 풀-프레임 픽셀 데이터를 처리 및/또는 송신하는 것에 비해 소비되는 메모리 대역폭을 감소시키기 위해, 비디오 인코더 회로(318)는 가상 타일(들) 내의 픽셀 데이터를 판독 및/또는 기입하여 가상 타일(들) 외부의 픽셀 데이터를 제외하고 처리(예를 들어, 인코딩) 및/또는 송신할 수 있다. 예를 들어, 가상 타일(들) 내의 픽셀 데이터는 전체 비디오 프레임 픽셀 데이터의 1/3을 포함할 수 있고, 비디오 프레임 픽셀 데이터는 1920x1080 픽셀의 해상도를 가질 수 있고, 비디오 프레임 픽셀 데이터는 초당 30 프레임의 프레임 레이트로 생성될 수 있다. 이러한 예들에서, 비디오 인코더 회로(318)가 비디오 프레임 픽셀 데이터의 가상 타일(들)만을 인코딩하면, 예시적인 사용자 디바이스(302)(도 3 및 도 4)는 60 MBps의 메모리 대역폭을 절약할 수 있다. 일부 예들에서, 비디오 인코더 회로(318)는 DRAM(316)으로부터 가상 타일 데이터를 판독하고, 가상 타일의 픽셀 데이터를 인코딩하고, 어느 픽셀들이 전경 경계 영역(들)에 있고 어느 픽셀들이 배경 경계 영역(들)에 있는지를 식별하는 필드 코드들(예를 들어, "라벨" 필드 코드들)을 포함하는 ARSEI 메시지들을 기입한다. 일부 예들에서, ARSEI 메시지들은 크기 데이터(예를 들어, 픽셀 폭 및 픽셀 높이), 위치 데이터(예를 들어, 비디오 프레임의 상단-좌측 (x, y) 좌표), 또는 전경 경계 영역(들) 및 배경 경계 영역(들)에 대응하는 라벨 데이터(예를 들어, 전경 및/또는 배경)를 포함한다. 예시적인 비디오 인코더 회로(318)는 송신되도록 비트스트림 및/또는 ARSEI 메시지(들)를 예시적인 인터페이스 회로(336)에 제공한다. 예시적인 인터페이스 회로(336)는 비트스트림 및 ARSEI 메시지들을 하나 이상의 프로토콜(예를 들어, 보이스-오버-인터넷 프로토콜들)을 사용하여 네트워크(304)를 통해 하나 이상의 사용자 디바이스(306)에 송신할 수 있다.
일부 예들에서, 사용자 디바이스(302)의 사용자는 비디오 인코더 회로(318)에 의해 결정된 배경 경계 영역(들)을 대체하기 위해 가상 배경을 선택한다. 사용자에 의해 선택된 예시적인 가상 배경은 촬영된 이미지, 컴퓨터-생성 이미지, 솔리드 컬러, 컬러들의 패턴 등일 수 있다. 일부 예들에서, 사용자에 의해 선택된 배경 대체는 카메라(들)(332)가 캡처하는 비디오 프레임(들) 내의 배경의 블러링된 버전 또는 이전에 언급된 가상 배경 선택(들)의 블러링된 버전이다. 일부 예들에서, 사용자에 의해 선택된 가상 배경의 식별자는 SEI(supplemental enhancement information) 메시지(들)의 필드 코드에 기입된다. 이러한 예들에서, SEI 메시지(들)는 사용자 디바이스(들)(306)의 비디오 디코더 회로(322)에 의해 판독될 수 있고, 동일한 가상 배경이 사용자 디바이스(들)(306) 상의 데이터베이스에 이용가능하게 저장되어 있으면 배경 경계 영역(들)을 SEI 메시지(들)에 의해 표시된 가상 배경으로 대체하는 데 사용될 수 있다. 예시적인 비디오 인코더 회로(318)는 송신되도록 SEI 메시지(들)를 예시적인 인터페이스 회로(336)에 제공한다. 일부 예들에서, 인터페이스 회로(336)는 SEI 메시지(들)를 연관된 비트스트림 및 ARSEI 메시지(들)와 함께 네트워크(304)를 통해 사용자 디바이스(들)(306)에 전송(예를 들어, 송신)한다.
일부 예들에서, 사용자는 템플릿 데이터베이스(412)에 저장된 가상 배경 템플릿들(418)의 데이터 저장소로부터 대체 배경을 선택한다. 어떤 경우에, 비디오 인코더 회로(318)는 템플릿 데이터베이스(412)를 포함한다. 다른 예들에서, 템플릿 데이터베이스(412)는 도 4에 도시된 바와 같이 비디오 인코더 회로(318)에 액세스가능한 위치에서 비디오 인코더 회로(318) 외부에 위치한다. 일부 예들에서, 모델 데이터베이스(410)와 템플릿 데이터베이스(412)는 동일한 데이터베이스에 구현된다.
도 5는 비디오 비트스트림을 디코딩하기 위한 도 3에 도시된 바와 같은 예시적인 사용자 디바이스(306)를 포함하는 예시적인 시스템(500)의 블록도이다. 예를 들어, 시스템(500)은 ARSEI 메시지(들)에 기초하여 인코딩된 비디오 프레임 데이터의 전경 경계 영역(들) 및 배경 경계 영역(들)을 결정하고, 비디오 프레임 픽셀 데이터의 가상 타일을 결정하고, 비트스트림으로부터 비디오 프레임의 가상 타일(들)의 관련 부분들을 디코딩하고, 메모리 버퍼로부터 및/또는 메모리 버퍼에 인트라-프레임 데이터 및 인터-프레임 데이터를 판독 및/또는 기입하고, 디스플레이를 위해 디코딩된 비디오 프레임들의 비디오 신호들을 생성하도록 구조화된다. 도 5의 예시적인 사용자 디바이스(306)는 명령어들을 실행하는 중앙 프로세서 유닛과 같은 프로세서 회로(308)에 의해 인스턴스화(예를 들어, 인스턴스의 생성, 임의의 시간 길이 동안 출현, 실현, 구현 등)될 수 있다. 추가적으로 또는 대안적으로, 도 5의 예시적인 사용자 디바이스(306)는 명령어들에 대응하는 동작들을 수행하도록 구조화된 ASIC 또는 FPGA에 의해 인스턴스화(예를 들어, 인스턴스의 생성, 임의의 시간 길이 동안 출현, 실현, 구현 등)될 수 있다. 따라서, 도 5의 회로의 일부 또는 전부는 동일하거나 상이한 시간에 인스턴스화될 수 있다는 것을 이해해야 한다. 회로의 일부 또는 전부는, 예를 들어, 하드웨어에서 동시에 및/또는 하드웨어에서 직렬로 실행되는 하나 이상의 스레드로 인스턴스화될 수 있다. 또한, 일부 예들에서, 도 5의 회로의 일부 또는 전부는 마이크로프로세서 상에서 실행되는 하나 이상의 가상 머신 및/또는 컨테이너에 의해 구현될 수 있다.
일부 예들에서, 사용자 디바이스(306)는 도 3에 도시된 바와 같이 비디오 디코더 회로(322), DRAM(316), 비디오 디스플레이 컨트롤러 회로(324), 복제기 회로(326), 디스플레이 스크린(334), 및 인터페이스 회로(336)를 포함한다. 도 5에 도시된 예시적인 사용자 디바이스(306)는 또한 인코딩 페이즈 동안 비디오의 이미지들을 비트스트림으로 인코딩하기 위해 도 3의 사용자 디바이스(302)에 도시된 것과 동일한 및/또는 기능적으로 동등한 회로, 메모리들, 디바이스들 등을 포함할 수 있다. 유사하게, 예시적인 사용자 디바이스(302)는 디코딩 페이즈 동안 비트스트림을 디코딩하기 위해 도 5의 사용자 디바이스(306)에 도시된 것과 동일한 및/또는 기능적으로 동등한 회로, 메모리들, 디바이스들 등을 포함할 수 있다. 도 5에 도시된 예시적인 시스템(500)은 도 3 및/또는 도 4에 도시된 예시적인 시스템(300 및/또는 400)의 예시적인 사용자 디바이스(302) 및/또는 복수의 사용자 디바이스(302)(예를 들어, 15개의 사용자 디바이스 및/또는 임의의 다른 수의 사용자 디바이스)로부터 인코딩된 비트스트림 데이터 및 ARSEI 메시지(들)를 수신하는 사용자 디바이스(306)를 나타낸다.
일부 예들에서, 도 5에 도시된 DRAM(316)은 인트라-프레임 데이터 및 인터-프레임 데이터(예를 들어, 업데이트된 인트라-프레임 데이터)의 동적 버퍼를 저장하는 버퍼 풀(buffer pool)(502)을 포함한다. 도 5에 도시된 예시적인 비디오 디스플레이 컨트롤러 회로(324)는 디코딩된 비디오 프레임(들)을 다운스케일링하고 합성하여 디스플레이 스크린(334)에 의해 디스플레이되는 비디오 프레임(들)의 그리드를 형성하는 비디오 포스트프로세서 회로(504)를 포함한다. 예시적인 사용자 디바이스(306)는 또한 사용자 디바이스(들)(302)에 저장된 가상 배경 템플릿들(418)과 전체적으로 또는 부분적으로 매칭될 수 있는 가상 배경 템플릿들(508)을 포함하는 데이터베이스(506)를 포함한다.
도 5에 도시된 예시적인 인터페이스 회로(336)는 사용자 디바이스(들)(302)로부터 데이터의 비트스트림(들) 및 ARSEI 메시지(들)를 수신한다. 일부 예들에서, 인터페이스 회로(336)는 비트스트림(들)과 연관된 SEI 메시지(들)를 사용자 디바이스(302)로부터 수신한다. 예시적인 SEI 메시지(들)는 사용자 디바이스(들)(302)의 사용자에 의해 선택된 가상 배경 템플릿(들)을 나타내는 필드 코드들을 포함한다. 예시적인 인터페이스 회로(336)는 비트스트림, ARSEI 메시지(들), 및/또는 SEI 메시지(들)를 도 5의 예시적인 비디오 디코더 회로(322)에 제공한다.
일부 예들에서, 비디오 디코더 회로(322)는 ARSEI 메시지(들)와 연관된 크기 데이터, 위치 데이터, 및 라벨 데이터에 기초하여 비트스트림의 전경 경계 영역(들)(예를 들어, 도 4의 전경 경계 영역(422)) 및 배경 경계 영역(들)(예를 들어, 도 4의 배경 경계 영역들(424))을 결정한다. 비디오 디코더 회로(322)는 전경 경계 영역(들)의 어느 인코딩된 픽셀 데이터가 배경 경계 영역(들)의 인코딩된 픽셀 데이터와 중첩하지 않는지를 결정함으로써 인코딩된 비디오 프레임 픽셀 데이터의 가상 타일(들)을 결정한다. 이어서, 비디오 디코더 회로(322)는 가상 타일(들) 외부의 픽셀 데이터에 대응하는 비트스트림 데이터를 폐기하면서 비트스트림으로부터 가상 타일(들)을 디코딩할 수 있다. 예를 들어, 가상 타일(들)의 인코딩된 픽셀 데이터는 전체 인코딩된 비디오 프레임 픽셀 데이터의 1/3을 포함할 수 있고, 인코딩된 비디오 프레임 픽셀 데이터는 1920x1080 픽셀의 해상도를 가질 수 있고, 비디오 프레임 픽셀 데이터는 초당 30 프레임의 프레임 레이트로 디스플레이될 수 있고, 인코딩된 비디오 프레임 픽셀 데이터의 16개의 상이한 비트스트림이 예시적인 사용자 디바이스(306)에 의해 동시에(예를 들어, +/- 1 밀리초 내에) 수신될 수 있다. 이러한 예들에서, 비디오 디코더 회로(318)가 인코딩된 비디오 프레임 픽셀 데이터의 16개의 비트스트림의 가상 타일들을 디코딩하면, 예시적인 사용자 디바이스(306)(도 3 내지 도 5)는 1 GBps의 메모리 대역폭을 절약할 수 있다. 일부 예들에서, 비디오 디코더 회로(322)는 0이 아닌 모션 벡터를 갖는 비트스트림 데이터를 디코딩하고, (0, 0)의 모션 벡터들을 갖는 비트스트림 데이터를 폐기한다. 이러한 예들에서, ARSEI 메시지(들)보다는 비트스트림 데이터가 파싱되고, 이는 더 큰 처리 전력 및 메모리 대역폭 사용을 초래한다.
도 5의 예시적인 비디오 디코더 회로(322)는 착신 비트스트림 데이터의 가상 타일(들)을 디코딩한다. 일부 예들에서, 비트스트림으로부터 디코딩된 초기 비디오 프레임의 가상 타일(들)은 사용자 디바이스(들)(302)의 사용자에 의해 선택된 가상 배경으로 재구성된다. 어떤 경우에, 디코딩되고 재구성되는 초기 비디오 프레임은 인트라-프레임 데이터(예를 들어, 참조 프레임 데이터)라고 지칭된다. 본 명세서에 개시된 예들에서, "초기" 비디오 프레임이라는 용어는 착신 인코딩된 비디오 프레임 픽셀 데이터의 새로운 비트스트림으로부터 디코딩된 제1 비디오 프레임을 지칭한다.
일부 예들에서, 인트라-프레임 데이터를 재구성하는 데 사용되는 가상 배경은 비디오 디코더 회로(322)가 수신하는 예시적인 SEI 메시지에 코딩된 라벨 필드에 의해 결정된다. 일부 예들에서, 비디오 디코더 회로(322)는 템플릿 데이터베이스(506)에 저장된 가상 배경 템플릿들(508)의 데이터 저장소로부터 가상 배경을 판독한다. 일부 예들에서, 비디오 디코더 회로(322)는 템플릿 데이터베이스(506)를 포함한다. 다른 예들에서, 템플릿 데이터베이스(506)는 도 5에 도시된 바와 같이 비디오 디코더 회로(322)에 액세스가능한 위치에서 비디오 디코더 회로(322) 외부에 위치한다. 일부 예들에서, 사용자 디바이스(302)의 사용자에 의해 선택된 가상 배경은 템플릿 데이터베이스(506)에서 이용가능하지 않다. 이러한 예들에서, 비트스트림은 템플릿 데이터베이스(506) 또는 일부 다른 저장 위치에 저장하기 위한 가상 배경 템플릿의 인코딩된 프레임을 포함할 수 있다.
예시적인 비디오 디코더 회로(322)는 사용자 디바이스(들)(302)로부터 전송된 비트스트림으로부터 디코딩된 초기 비디오 프레임 픽셀 데이터의 가상 타일(들)을 디코딩한다. 예시적인 비디오 디코더 회로(322)는 초기 디코딩된 가상 타일(들) 및 선택된 가상 배경을 포함하는 인트라-프레임 데이터를 재구성한다. 예시적인 비디오 디코더 회로(322)는 인트라-프레임 데이터를 버퍼 풀(502)에 저장한다. 예시적인 복제기 회로(326)는 버퍼 풀(502)에 인트라-프레임 데이터의 복수의 카피들을 만든다. 일부 예들에서, 복제기 회로(326)는 프로세서 회로(308) 상에 통합된다. 다른 예들에서, 복제기 회로(326)는 DRAM(316)을 포함하는 동일한 집적 회로 상에 형성된다. 다른 예들에서, DRAM(316)은 메모리 및/또는 버퍼 풀(502)에 저장된 데이터의 사본들을 생성하는 기능성을 구현하는 회로를 포함한다.
예시적인 사용자 디바이스(306)는 버퍼 풀(502)로부터 비디오 프레임 이미지 데이터를 판독하는 비디오 디스플레이 컨트롤러 회로(324)를 포함한다. 예시적인 비디오 디스플레이 컨트롤러 회로(324)는 또한 비디오 프레임 픽셀 데이터를 다시 버퍼 풀(502)에 기입할 수 있다. 일부 예들에서, 비디오 디코더 회로(322) 및 비디오 디스플레이 컨트롤러 회로(324)는 인트라-프레임 데이터 및/또는 수정된 인트라-프레임 데이터의 사본들을 버퍼 풀(502)에 대하여 동시에 및/또는 실질적으로 유사한 시간에(예를 들어, +/- 1 밀리초 내에) 기입 및 판독한다. 비디오 디코더 회로(322) 및 비디오 디스플레이 컨트롤러 회로(324)에 의한 버퍼 풀(502)에 대한 판독들 및 기입들의 처리 순서의 더 상세한 설명들이 아래에 설명된다.
일부 예들에서, 비디오 디스플레이 컨트롤러 회로(324)는 버퍼 풀(502)로부터 검색된 픽셀 데이터에 대응하는 비디오 신호들을 생성한다. 예시적인 비디오 디스플레이 컨트롤러 회로(324)는 버퍼 풀(502)에 저장된 비디오 프레임(들)을 샘플링하는 비디오 포스트프로세서 회로(504)를 포함한다. 일부 예들에서, 비디오 포스트프로세서 회로(504)는 비디오 프레임 픽셀 데이터를 다운 샘플링하고/하거나 비디오 프레임 픽셀 데이터의 프레임 레이트를 감소시킨다. 비디오 포스트프로세서 회로(504)는 샘플링의 결과로서 처리된 비디오 프레임(들)을 생성한다. 일부 예들에서, 비디오 포스트프로세서 회로(504)는, 예시적인 디스플레이 그리드(510)에 도시된 바와 같이, 처리된 비디오 프레임(들)을 비디오 프레임들의 그리드(예를 들어, 4 프레임 x 4 프레임)로 합성한다. 비디오 프레임 픽셀 데이터의 합성된 그리드는 예시적인 비디오 포스트프로세서 회로(504)로부터 전송된 픽셀 데이터에 따라 픽셀들 및 서브픽셀들을 통해 광을 방출하는 예시적인 디스플레이 스크린(334)에 전송된다.
도 6은 비디오 프레임들이 DRAM(316)에 위치하는 도 5에 도시된 버퍼 풀(502)로부터 판독되고 버퍼 풀에 기입되는 예시적인 타임라인(600)을 도시한다. 도 6에 도시된 예시적인 타임라인(600)은 3개의 별개의 시간적 인스턴스(t0, t1, 및 t2)에서 버퍼 풀(502)의 3개의 상이한 상태(602, 604, 및 606)를 도시한다. 일부 예들에서, 인스턴스들 t0, t1, 및 t2 사이의 시간 차이는 영상 회의 애플리케이션의 비디오 프레임 레이트에 의존한다(예를 들어, 인스턴스들 사이의 +/- 30 밀리초). DRAM(316)의 예시적인 상태(602)는 시간 t0에서 비디오 디코더 회로(322)가 버퍼 풀(502)에 인트라-프레임 데이터(608)를 저장하는 것을 도시한다. 실질적으로 유사한 시간(예를 들어, +/- 10 밀리초)에서, 복제기 회로(326)(도 3 및 도 5)는 예시적인 인트라-프레임 데이터(608)의 사본들을 생성하고, 비디오 디스플레이 컨트롤러 회로(324)는 버퍼 풀(502)로부터 예시적인 인트라-프레임 데이터(608)의 인스턴스를 판독한다.
도 6에 도시된 DRAM(316)의 예시적인 상태(604)는 시간 t1에서 비디오 디코더 회로(322)가 버퍼 풀(502) 내의 인트라-프레임 데이터(608)의 사본을 업데이트하는 것을 도시한다. 예시적인 상태(604)에서, 비디오 디코더 회로(322)는 인트라-프레임 데이터(608)의 가상 타일을 현재 디코딩된 비디오 프레임의 가상 타일로 대체하여 버퍼 풀(502)에 인터-프레임 데이터(608a)를 작성한다. 본 명세서에 개시된 예들에서, 인터-프레임 데이터는 모션 추정을 위한 인트라-프레임 데이터(예를 들어, 참조 프레임 데이터)와 같은 다른 프레임에 의존하는 프레임 데이터를 지칭한다. 예시적인 인터-프레임 데이터는 버퍼 풀(502)에 이미 저장된 인트라-프레임 데이터 또는 인터-프레임 데이터의 가상 타일(들)을 업데이트함으로써 생성될 수 있다. 실질적으로 유사한 시간(예를 들어, +/- 10 밀리초)에서, 비디오 디스플레이 컨트롤러 회로(324)는 인트라-프레임 데이터(608)에 대응하는 비디오 신호가 생성되어 디스플레이 스크린(334)(도 3 및 도 5)에 전송된 후에 인트라-프레임 데이터(608)를 다시 버퍼 풀(502)에 기입한다.
도 6에 도시된 DRAM(316)의 예시적인 상태(606)는 시간 t2에서 비디오 디코더 회로(322)가 버퍼 풀(502) 큐 내의 다음 프레임 데이터(예를 들어, 인트라-프레임 데이터(608) 또는 인터-프레임 데이터(예를 들어, 인터-프레임 데이터(608a))의 사본)를 업데이트하는 것을 도시한다. 예시적인 상태(606)에서, 비디오 디코더 회로(322)는 버퍼 풀(502) 큐 내의 다음 프레임 데이터의 가상 타일(들)을 현재 디코딩된 비디오 프레임의 가상 타일로 대체하여 버퍼 풀(502)에 인터-프레임 데이터(608b)를 작성한다. 실질적으로 유사한 시간(예를 들어, +/- 10 밀리초)에서, 비디오 디스플레이 컨트롤러 회로(324)는 버퍼 풀(502)로부터 이전에 업데이트된 예시적인 인터-프레임 데이터(608a)를 판독한다.
도 6에 도시되지 않은 다음 시간적 상태에서, 예시적인 비디오 디코더 회로(322)는 버퍼 풀(502) 내의 다음 큐잉된 프레임 데이터를 현재 디코딩된 가상 타일(들)로 업데이트하도록 구조화되고, 비디오 디스플레이 컨트롤러 회로(324)는 후속 업데이트를 위해 예시적인 인터-프레임 데이터(608a)를 다시 버퍼 풀(502)에 기입하도록 구조화된다. 도 6에 도시된 예시적인 타임라인(600)은 영상 회의가 종료될 때까지 또는 프레임 데이터를 예시적인 비디오 디코더 회로(322)에 송신하는 사용자 디바이스(302)(도 3 내지 도 5)가 선택된 가상 배경 템플릿을 변경할 때까지 계속된다. 예시적인 사용자 디바이스(302)가 영상 회의 동안 새로운 가상 배경을 선택하는 경우, 비디오 디코더 회로(322)에 의해 새로운 인트라-프레임 데이터가 생성되고, 예시적인 프로세스(600)는 새로운 초기 시간적 인스턴스 t0에서 재시작한다.
도 7은 도 3 및 도 5에 도시된 예시적인 사용자 디바이스(306)의 2가지 상이한 동작 모드에서의 비디오 프레임 그리드 출력 디스플레이들의 예시적인 표현(700)을 도시한다. 예시적인 시스템(300) 및/또는 예시적인 시스템(500)을 사용하여 디스플레이된 비디오 프레임들의 예시적인 그리드를 보여주기 위해 예시적인 표준 비디오 프레임 출력(702)이 도 7에 도시되어 있다. 예시적인 사용자 디바이스(302) 및/또는 예시적인 사용자 디바이스(306)가 제한된 잔여 배터리 전력(예를 들어, 낮은 배터리 전력 또는 임계적으로 낮은 배터리 전력)을 나타내는 임계 배터리 전력(예를 들어, 10% 배터리 수명)에서 또는 그 아래에서 동작할 때 디스플레이된 비디오 프레임들의 예시적인 그리드를 보여주기 위해 예시적인 저전력 비디오 프레임 출력(704)이 도 7에 도시되어 있다. 일부 예들에서, 저전력 모드는 가상 배경 템플릿이 백색 배경으로 대체된 비디오 프레임 이미지들의 디스플레이를 야기할 것이다.
일부 예들에서, 도 3, 도 4, 및/또는 도 5의 사용자 디바이스(302)는 저전력 임계값(예를 들어, 10% 배터리 전력) 이하의 배터리 전력으로 동작하고 있다. 이러한 경우에, 예시적인 비디오 인코더 회로(318)는 다운스케일링된 비디오 프레임에 대응하는 비디오 프레임 픽셀 데이터를 인코딩한다. 일부 예들에서, 비디오 인코더 회로(318)는 전체 프레임 데이터 대신에 전경 경계 영역(들)의 비디오 프레임 데이터에 대응하는 비트스트림 데이터 및 ARSEI 메시지(들)를 생성한다. 이러한 예들에서, 비디오 인코더 회로(318)는 또한 전경 경계 영역(들)에 있지 않은 배경 경계 영역(들)에 관련된 비트스트림들을 생성하지 않는다. 인코딩된 비트스트림 및 연관된 ARSEI 메시지(들)는 여전히 전체 프레임 이미지 크기를 참조하여 처리된다. 예를 들어, 가상 타일은 표준 전력 모드에 있는 것과 동일한 배치에서 프레임에 여전히 디스플레이되지만, 백색 배경을 갖는다. 일부 저전력 모드 예들에서, 비디오 인코더 회로(318)는 비디오 프레임 디스플레이에서 사용될 가상 배경을 나타내는 SEI 메시지(들)를 생성하지 않는다. 비디오 인코더 회로(318)를 저전력 모드에서 동작시키는 것은 메모리 대역폭 및 처리 전력을 절약하는데, 그 이유는 생성되어 송신되는 ARSEI 메시지(들)가 전체 비디오 프레임 대신에 전경 경계 영역(들)과 연관되기 때문이다.
일부 예들에서, 도 3, 도 4, 및/또는 도 5의 사용자 디바이스(306)는 예시적인 저전력 임계값 이하의 배터리 전력으로 동작하고 있다. 이러한 경우에, 예시적인 비디오 디코더 회로(322)는 예시적인 사용자 디바이스(302)의 사용자에 의해 선택된 가상 배경을 갖는 인트라-프레임 데이터를 생성하지 않는다. 대신에, 인트라-프레임 데이터는 백색 배경을 갖는 디코딩된 가상 타일(들)로 합성된다. 저전력 절약 모드 및/또는 표준 모드에서 전송된 ARSEI 메시지(들)는 전체 프레임에 대한 픽셀 위치 데이터를 포함하기 때문에, 저전력 모드의 예시적인 가상 타일(들)은 표준 모드의 가상 타일(들)과 동일한 픽셀 좌표에 배치된다. 예시적인 비디오 디코더 회로(322)를 저전력 모드에서 동작시키는 것은 메모리 대역폭 및 처리 전력을 절약하는데, 그 이유는 비디오 디코더 회로(322)가 각각의 디코딩 인스턴스에서 전체 프레임에 대한 ARSEI 메시지(들)를 파싱하지 않고, 비디오 디코더 회로(322)가 가상 배경을 갖는 인트라-프레임 데이터를 구성하지 않으며, 비디오 디코더 회로(322)가 버퍼 풀(502) 내의 인트라-프레임 데이터 및/또는 인터-프레임 데이터를 업데이트할 때 예시적인 가상 배경 템플릿들(508)을 참조하지 않기 때문이다.
일부 예들에서, 장치는 비디오를 인코딩하는 수단을 포함한다. 예를 들어, 비디오를 인코딩하는 수단은 비디오 인코더 회로(318)에 의해 구현될 수 있다. 일부 예들에서, 비디오 인코더 회로(318)는 도 11의 예시적인 프로세서 회로(1112)와 같은 프로세서 회로에 의해 인스턴스화될 수 있다. 예를 들어, 비디오 인코더 회로(318)는 적어도 도 8의 블록들(810-824)에 의해 구현되는 것과 같은 머신 실행가능 명령어들을 실행하는 도 12의 예시적인 범용 프로세서 회로(1200)에 의해 인스턴스화될 수 있다. 일부 예들에서, 비디오 인코더 회로(318)는 머신 판독가능 명령어들에 대응하는 동작들을 수행하도록 구조화된 도 13의 ASIC 또는 FPGA 회로(1300)에 의해 구현될 수 있는 하드웨어 로직 회로에 의해 인스턴스화될 수 있다. 추가적으로 또는 대안적으로, 비디오 인코더 회로(318)는 하드웨어, 소프트웨어, 및/또는 펌웨어의 임의의 다른 조합에 의해 인스턴스화될 수 있다. 예를 들어, 비디오 인코더 회로(318)는 소프트웨어 또는 펌웨어를 실행하지 않고 머신 판독가능 명령어들의 일부 또는 전부를 실행하고/하거나 머신 판독가능 명령어들에 대응하는 동작들의 일부 또는 전부를 수행하도록 구조화되는 적어도 하나 이상의 하드웨어 회로(예를 들어, 프로세서 회로, 개별 및/또는 통합 아날로그 및/또는 디지털 회로, FPGA, ASIC(Application Specific Integrated Circuit), 비교기, 연산 증폭기(op-amp), 로직 회로 등)에 의해 구현될 수 있지만, 다른 구조들도 마찬가지로 적절하다.
일부 예들에서, 장치는 비디오 프레임(들)의 세그먼트화 데이터를 결정하는 수단을 포함한다. 예를 들어, 비디오 프레임(들)의 세그먼트화 데이터를 결정하는 수단은 비디오 프레임 세그먼트화기 회로(320)에 의해 구현될 수 있다. 일부 예들에서, 비디오 프레임 세그먼트화기 회로(320)는 도 11의 예시적인 프로세서 회로(1112)와 같은 프로세서 회로에 의해 인스턴스화될 수 있다. 예를 들어, 비디오 프레임 세그먼트화기 회로(320)는 적어도 도 8의 블록들(802-808)에 의해 구현되는 것과 같은 머신 실행가능 명령어들을 실행하는 도 12의 예시적인 범용 프로세서 회로(1200)에 의해 인스턴스화될 수 있다. 일부 예들에서, 비디오 프레임 세그먼트화기 회로(320)는 머신 판독가능 명령어들에 대응하는 동작들을 수행하도록 구조화된 도 13의 ASIC 또는 FPGA 회로(1300)에 의해 구현될 수 있는 하드웨어 로직 회로에 의해 인스턴스화될 수 있다. 추가적으로 또는 대안적으로, 비디오 프레임 세그먼트화기 회로(320)는 하드웨어, 소프트웨어, 및/또는 펌웨어의 임의의 다른 조합에 의해 인스턴스화될 수 있다. 예를 들어, 비디오 프레임 세그먼트화기 회로(320)는 소프트웨어 또는 펌웨어를 실행하지 않고 머신 판독가능 명령어들의 일부 또는 전부를 실행하고/하거나 머신 판독가능 명령어들에 대응하는 동작들의 일부 또는 전부를 수행하도록 구조화되는 적어도 하나 이상의 하드웨어 회로(예를 들어, 프로세서 회로, 개별 및/또는 통합 아날로그 및/또는 디지털 회로, FPGA, ASIC(Application Specific Integrated Circuit), 비교기, 연산 증폭기(op-amp), 로직 회로 등)에 의해 구현될 수 있지만, 다른 구조들도 마찬가지로 적절하다.
일부 예들에서, 장치는 비디오 데이터(예를 들어, 비트스트림)를 디코딩하는 수단을 포함한다. 예를 들어, 비디오 데이터를 디코딩하는 수단은 비디오 디코더 회로(322)에 의해 구현될 수 있다. 일부 예들에서, 비디오 디코더 회로(322)는 도 11의 예시적인 프로세서 회로(1112)와 같은 프로세서 회로에 의해 인스턴스화될 수 있다. 예를 들어, 비디오 디코더 회로(322)는 적어도 도 9의 블록들(902-914 및 926) 및 도 10의 블록들(1002-1006, 1010-1014)에 의해 구현되는 것과 같은 머신 실행가능 명령어들을 실행하는 도 12의 예시적인 범용 프로세서 회로(1200)에 의해 인스턴스화될 수 있다. 일부 예들에서, 비디오 디코더 회로(322)는 머신 판독가능 명령어들에 대응하는 동작들을 수행하도록 구조화된 도 13의 ASIC 또는 FPGA 회로(1300)에 의해 구현될 수 있는 하드웨어 로직 회로에 의해 인스턴스화될 수 있다. 추가적으로 또는 대안적으로, 비디오 디코더 회로(322)는 하드웨어, 소프트웨어, 및/또는 펌웨어의 임의의 다른 조합에 의해 인스턴스화될 수 있다. 예를 들어, 비디오 디코더 회로(322)는 소프트웨어 또는 펌웨어를 실행하지 않고 머신 판독가능 명령어들의 일부 또는 전부를 실행하고/하거나 머신 판독가능 명령어들에 대응하는 동작들의 일부 또는 전부를 수행하도록 구조화되는 적어도 하나 이상의 하드웨어 회로(예를 들어, 프로세서 회로, 개별 및/또는 통합 아날로그 및/또는 디지털 회로, FPGA, ASIC(Application Specific Integrated Circuit), 비교기, 연산 증폭기(op-amp), 로직 회로 등)에 의해 구현될 수 있지만, 다른 구조들도 마찬가지로 적절하다.
일부 예들에서, 장치는 디코딩된 비디오 프레임 데이터에 대응하는 비디오 신호들을 생성하는 수단을 포함한다. 예를 들어, 비디오 신호들을 생성하는 수단은 비디오 디스플레이 컨트롤러 회로(324)에 의해 구현될 수 있다. 일부 예들에서, 비디오 디스플레이 컨트롤러 회로(324)는 도 11의 예시적인 프로세서 회로(1112)와 같은 프로세서 회로에 의해 인스턴스화될 수 있다. 예를 들어, 비디오 디스플레이 컨트롤러 회로(324)는 적어도 도 9의 블록들(916, 922, 및 924)에 의해 구현되는 것과 같은 머신 실행가능 명령어들을 실행하는 도 12의 예시적인 범용 프로세서 회로(1200)에 의해 인스턴스화될 수 있다. 일부 예들에서, 비디오 디스플레이 컨트롤러 회로(324)는 머신 판독가능 명령어들에 대응하는 동작들을 수행하도록 구조화된 도 13의 ASIC 또는 FPGA 회로(1300)에 의해 구현될 수 있는 하드웨어 로직 회로에 의해 인스턴스화될 수 있다. 추가적으로 또는 대안적으로, 비디오 디스플레이 컨트롤러 회로(324)는 하드웨어, 소프트웨어, 및/또는 펌웨어의 임의의 다른 조합에 의해 인스턴스화될 수 있다. 예를 들어, 비디오 디스플레이 컨트롤러 회로(324)는 소프트웨어 또는 펌웨어를 실행하지 않고 머신 판독가능 명령어들의 일부 또는 전부를 실행하고/하거나 머신 판독가능 명령어들에 대응하는 동작들의 일부 또는 전부를 수행하도록 구조화되는 적어도 하나 이상의 하드웨어 회로(예를 들어, 프로세서 회로, 개별 및/또는 통합 아날로그 및/또는 디지털 회로, FPGA, ASIC(Application Specific Integrated Circuit), 비교기, 연산 증폭기(op-amp), 로직 회로 등)에 의해 구현될 수 있지만, 다른 구조들도 마찬가지로 적절하다.
일부 예들에서, 장치는 버퍼 풀에 인트라-프레임 데이터를 복제하는 수단을 포함한다. 예를 들어, 인트라-프레임 데이터를 복제하는 수단은 복제기 회로(326)에 의해 구현될 수 있다. 일부 예들에서, 복제기 회로(326)는 도 11의 예시적인 프로세서 회로(1112)와 같은 프로세서 회로에 의해 인스턴스화될 수 있다. 예를 들어, 복제기 회로(326)는 적어도 도 10의 블록들(1008)에 의해 구현되는 것과 같은 머신 실행가능 명령어들을 실행하는 도 12의 예시적인 범용 프로세서 회로(1200)에 의해 인스턴스화될 수 있다. 일부 예들에서, 복제기 회로(326)는 머신 판독가능 명령어들에 대응하는 동작들을 수행하도록 구조화된 도 13의 ASIC 또는 FPGA 회로(1300)에 의해 구현될 수 있는 하드웨어 로직 회로에 의해 인스턴스화될 수 있다. 추가적으로 또는 대안적으로, 복제기 회로(326)는 하드웨어, 소프트웨어, 및/또는 펌웨어의 임의의 다른 조합에 의해 인스턴스화될 수 있다. 예를 들어, 복제기 회로(326)는 소프트웨어 또는 펌웨어를 실행하지 않고 머신 판독가능 명령어들의 일부 또는 전부를 실행하고/하거나 머신 판독가능 명령어들에 대응하는 동작들의 일부 또는 전부를 수행하도록 구조화되는 적어도 하나 이상의 하드웨어 회로(예를 들어, 프로세서 회로, 개별 및/또는 통합 아날로그 및/또는 디지털 회로, FPGA, ASIC(Application Specific Integrated Circuit), 비교기, 연산 증폭기(op-amp), 로직 회로 등)에 의해 구현될 수 있지만, 다른 구조들도 마찬가지로 적절하다.
일부 예들에서, 장치는 캡처된 비디오 프레임 픽셀 데이터를 다운스케일링하는 수단을 포함한다. 예를 들어, 다운스케일링하는 수단은 비디오 프리프로세서 회로(402)에 의해 구현될 수 있다. 일부 예들에서, 비디오 프리프로세서 회로(402)는 도 11의 예시적인 프로세서 회로(1112)와 같은 프로세서 회로에 의해 인스턴스화될 수 있다. 예를 들어, 비디오 프리프로세서 회로(402)는 적어도 도 8의 블록들(802 및 804)에 의해 구현되는 것과 같은 머신 실행가능 명령어들을 실행하는 도 12의 예시적인 범용 프로세서 회로(1200)에 의해 인스턴스화될 수 있다. 일부 예들에서, 비디오 프리프로세서 회로(402)는 머신 판독가능 명령어들에 대응하는 동작들을 수행하도록 구조화된 도 13의 ASIC 또는 FPGA 회로(1300)에 의해 구현될 수 있는 하드웨어 로직 회로에 의해 인스턴스화될 수 있다. 추가적으로 또는 대안적으로, 비디오 프리프로세서 회로(402)는 하드웨어, 소프트웨어, 및/또는 펌웨어의 임의의 다른 조합에 의해 인스턴스화될 수 있다. 예를 들어, 비디오 프리프로세서 회로(402)는 소프트웨어 또는 펌웨어를 실행하지 않고 머신 판독가능 명령어들의 일부 또는 전부를 실행하고/하거나 머신 판독가능 명령어들에 대응하는 동작들의 일부 또는 전부를 수행하도록 구조화되는 적어도 하나 이상의 하드웨어 회로(예를 들어, 프로세서 회로, 개별 및/또는 통합 아날로그 및/또는 디지털 회로, FPGA, ASIC(Application Specific Integrated Circuit), 비교기, 연산 증폭기(op-amp), 로직 회로 등)에 의해 구현될 수 있지만, 다른 구조들도 마찬가지로 적절하다.
일부 예들에서, 장치는 비디오 프레임 픽셀 데이터의 전경 부분(들)을 검출하는 수단을 포함한다. 예를 들어, 비디오 프레임 픽셀 데이터의 전경 부분(들)을 검출하는 수단은 전경 검출기 회로(404)에 의해 구현될 수 있다. 일부 예들에서, 전경 검출기 회로(404)는 도 11의 예시적인 프로세서 회로(1112)와 같은 프로세서 회로에 의해 인스턴스화될 수 있다. 예를 들어, 전경 검출기 회로(404)는 적어도 도 8의 블록(806)에 의해 구현되는 것과 같은 머신 실행가능 명령어들을 실행하는 도 12의 예시적인 범용 프로세서 회로(1200)에 의해 인스턴스화될 수 있다. 일부 예들에서, 전경 검출기 회로(404)는 머신 판독가능 명령어들에 대응하는 동작들을 수행하도록 구조화된 도 13의 ASIC 또는 FPGA 회로(1300)에 의해 구현될 수 있는 하드웨어 로직 회로에 의해 인스턴스화될 수 있다. 추가적으로 또는 대안적으로, 전경 검출기 회로(404)는 하드웨어, 소프트웨어, 및/또는 펌웨어의 임의의 다른 조합에 의해 인스턴스화될 수 있다. 예를 들어, 전경 검출기 회로(404)는 소프트웨어 또는 펌웨어를 실행하지 않고 머신 판독가능 명령어들의 일부 또는 전부를 실행하고/하거나 머신 판독가능 명령어들에 대응하는 동작들의 일부 또는 전부를 수행하도록 구조화되는 적어도 하나 이상의 하드웨어 회로(예를 들어, 프로세서 회로, 개별 및/또는 통합 아날로그 및/또는 디지털 회로, FPGA, ASIC(Application Specific Integrated Circuit), 비교기, 연산 증폭기(op-amp), 로직 회로 등)에 의해 구현될 수 있지만, 다른 구조들도 마찬가지로 적절하다.
일부 예들에서, 장치는 비디오 프레임 픽셀 데이터의 배경 부분(들)을 검출하는 수단을 포함한다. 예를 들어, 비디오 프레임 픽셀 데이터의 배경 부분(들)을 검출하는 수단은 배경 검출기 회로(406)에 의해 구현될 수 있다. 일부 예들에서, 배경 검출기 회로(406)는 도 11의 예시적인 프로세서 회로(1112)와 같은 프로세서 회로에 의해 인스턴스화될 수 있다. 예를 들어, 배경 검출기 회로(406)는 적어도 도 8의 블록(806)에 의해 구현되는 것과 같은 머신 실행가능 명령어들을 실행하는 도 12의 예시적인 범용 프로세서 회로(1200)에 의해 인스턴스화될 수 있다. 일부 예들에서, 배경 검출기 회로(406)는 머신 판독가능 명령어들에 대응하는 동작들을 수행하도록 구조화된 도 13의 ASIC 또는 FPGA 회로(1300)에 의해 구현될 수 있는 하드웨어 로직 회로에 의해 인스턴스화될 수 있다. 추가적으로 또는 대안적으로, 배경 검출기 회로(406)는 하드웨어, 소프트웨어, 및/또는 펌웨어의 임의의 다른 조합에 의해 인스턴스화될 수 있다. 예를 들어, 배경 검출기 회로(406)는 소프트웨어 또는 펌웨어를 실행하지 않고 머신 판독가능 명령어들의 일부 또는 전부를 실행하고/하거나 머신 판독가능 명령어들에 대응하는 동작들의 일부 또는 전부를 수행하도록 구조화되는 적어도 하나 이상의 하드웨어 회로(예를 들어, 프로세서 회로, 개별 및/또는 통합 아날로그 및/또는 디지털 회로, FPGA, ASIC(Application Specific Integrated Circuit), 비교기, 연산 증폭기(op-amp), 로직 회로 등)에 의해 구현될 수 있지만, 다른 구조들도 마찬가지로 적절하다.
일부 예들에서, 장치는 비디오 프레임 픽셀 데이터의 전경 부분(들) 및 배경 부분(들)에 기초하여 세그먼트화 데이터를 생성하는 수단을 포함한다. 예를 들어, 세그먼트화 데이터를 생성하는 수단은 세그먼트화 데이터 결정기 회로(408)에 의해 구현될 수 있다. 일부 예들에서, 세그먼트화 데이터 결정기 회로(408)는 도 11의 예시적인 프로세서 회로(1112)와 같은 프로세서 회로에 의해 인스턴스화될 수 있다. 예를 들어, 세그먼트화 데이터 결정기 회로(408)는 적어도 도 8의 블록(808)에 의해 구현되는 것과 같은 머신 실행가능 명령어들을 실행하는 도 12의 예시적인 범용 프로세서 회로(1200)에 의해 인스턴스화될 수 있다. 일부 예들에서, 세그먼트화 데이터 결정기 회로(408)는 머신 판독가능 명령어들에 대응하는 동작들을 수행하도록 구조화된 도 13의 ASIC 또는 FPGA 회로(1300)에 의해 구현될 수 있는 하드웨어 로직 회로에 의해 인스턴스화될 수 있다. 추가적으로 또는 대안적으로, 세그먼트화 데이터 결정기 회로(408)는 하드웨어, 소프트웨어, 및/또는 펌웨어의 임의의 다른 조합에 의해 인스턴스화될 수 있다. 예를 들어, 세그먼트화 데이터 결정기 회로(408)는 소프트웨어 또는 펌웨어를 실행하지 않고 머신 판독가능 명령어들의 일부 또는 전부를 실행하고/하거나 머신 판독가능 명령어들에 대응하는 동작들의 일부 또는 전부를 수행하도록 구조화되는 적어도 하나 이상의 하드웨어 회로(예를 들어, 프로세서 회로, 개별 및/또는 통합 아날로그 및/또는 디지털 회로, FPGA, ASIC(Application Specific Integrated Circuit), 비교기, 연산 증폭기(op-amp), 로직 회로 등)에 의해 구현될 수 있지만, 다른 구조들도 마찬가지로 적절하다.
일부 예들에서, 장치는 디코딩된 비디오 프레임 픽셀 데이터를 다운스케일링하고 합성하는 수단을 포함한다. 예를 들어, 다운스케일링하고 합성하는 수단은 비디오 포스트프로세서 회로(504)에 의해 구현될 수 있다. 일부 예들에서, 비디오 포스트프로세서 회로(504)는 도 11의 예시적인 프로세서 회로(1112)와 같은 프로세서 회로에 의해 인스턴스화될 수 있다. 예를 들어, 비디오 포스트프로세서 회로(504)는 적어도 도 9의 블록들(918 및 920)에 의해 구현되는 것과 같은 머신 실행가능 명령어들을 실행하는 도 12의 예시적인 범용 프로세서 회로(1200)에 의해 인스턴스화될 수 있다. 일부 예들에서, 비디오 포스트프로세서 회로(504)는 머신 판독가능 명령어들에 대응하는 동작들을 수행하도록 구조화된 도 13의 ASIC 또는 FPGA 회로(1300)에 의해 구현될 수 있는 하드웨어 로직 회로에 의해 인스턴스화될 수 있다. 추가적으로 또는 대안적으로, 비디오 포스트프로세서 회로(504)는 하드웨어, 소프트웨어, 및/또는 펌웨어의 임의의 다른 조합에 의해 인스턴스화될 수 있다. 예를 들어, 비디오 포스트프로세서 회로(504)는 소프트웨어 또는 펌웨어를 실행하지 않고 머신 판독가능 명령어들의 일부 또는 전부를 실행하고/하거나 머신 판독가능 명령어들에 대응하는 동작들의 일부 또는 전부를 수행하도록 구조화되는 적어도 하나 이상의 하드웨어 회로(예를 들어, 프로세서 회로, 개별 및/또는 통합 아날로그 및/또는 디지털 회로, FPGA, ASIC(Application Specific Integrated Circuit), 비교기, 연산 증폭기(op-amp), 로직 회로 등)에 의해 구현될 수 있지만, 다른 구조들도 마찬가지로 적절하다.
도 3의 사용자 디바이스(302) 및/또는 사용자 디바이스(들)(306)를 구현하는 예시적인 방식이 도 4 및/또는 도 5에 예시되어 있지만, 도 4 및/또는 도 5에 예시된 요소들, 프로세스들 및/또는 디바이스들 중 하나 이상은 임의의 다른 방식으로 조합, 분할, 재배열, 생략, 제거, 및/또는 구현될 수 있다. 또한, 예시적인 비디오 인코더 회로(318), 예시적인 비디오 프레임 세그먼트화기 회로(320), 예시적인 비디오 디코더 회로(322), 예시적인 비디오 디스플레이 컨트롤러 회로(324), 예시적인 복제기 회로(326), 예시적인 비디오 프리프로세서 회로(402), 예시적인 전경 검출기 회로(404), 예시적인 배경 검출기 회로(406), 예시적인 세그먼트화 데이터 결정기 회로(408), 예시적인 비디오 포스트프로세서 회로(504), 및/또는, 보다 일반적으로, 도 3의 예시적인 사용자 디바이스(302) 및/또는 예시적인 사용자 디바이스(들)(306)는 하드웨어 단독으로 또는 소프트웨어 및/또는 펌웨어와 조합한 하드웨어에 의해 구현될 수 있다. 따라서, 예를 들어, 예시적인 비디오 인코더 회로(318), 예시적인 비디오 프레임 세그먼트화기 회로(320), 예시적인 비디오 디코더 회로(322), 예시적인 비디오 디스플레이 컨트롤러 회로(324), 예시적인 복제기 회로(326), 예시적인 비디오 프리프로세서 회로(402), 예시적인 전경 검출기 회로(404), 예시적인 배경 검출기 회로(406), 예시적인 세그먼트화 데이터 결정기 회로(408), 예시적인 비디오 포스트프로세서 회로(504), 및/또는, 보다 일반적으로, 도 3의 예시적인 사용자 디바이스(302) 및/또는 예시적인 사용자 디바이스(들)(306) 중 임의의 것은 프로세서 회로, 아날로그 회로(들), 디지털 회로(들), 로직 회로(들), 프로그램가능 프로세서(들), 프로그램가능 마이크로컨트롤러(들), 그래픽 처리 유닛(들)(GPU(들)), 디지털 신호 프로세서(들)(DSP(들)), 주문형 집적 회로(들)(ASIC(들)), 프로그램가능 로직 디바이스(들)(PLD(들)), 및/또는 필드 프로그램가능 게이트 어레이들(FPGA들)과 같은 필드 프로그램가능 로직 디바이스(들)(FPLD(들))에 의해 구현될 수 있다. 또한, 도 3의 예시적인 사용자 디바이스(302) 및/또는 예시적인 사용자 디바이스(들)(306)는 도 4 및/또는 도 5에 도시된 것들에 추가하여 또는 그 대신에, 하나 이상의 요소, 프로세스들, 및/또는 디바이스들을 포함할 수 있고, 그리고/또는 예시된 요소들, 프로세스들 및 디바이스들 중 임의의 것 또는 전부 중 둘 이상을 포함할 수 있다.
도 3의 사용자 디바이스(302) 및/또는 사용자 디바이스(들)(306)를 구현하기 위한 예시적인 하드웨어 로직 회로, 머신 판독가능 명령어들, 하드웨어 구현 상태 머신들, 및/또는 이들의 임의의 조합을 나타내는 흐름도들이 도 8, 도 9, 및 도 10에 도시되어 있다. 머신 판독가능 명령어들은 도 11과 관련하여 이하에서 논의되는 예시적인 프로세서 플랫폼(1100)에 도시된 프로세서 회로(1112) 및/또는 도 12 및/또는 도 13과 관련하여 이하에서 논의되는 예시적인 프로세서 회로와 같은 프로세서 회로에 의한 실행을 위한 하나 이상의 실행가능 프로그램 또는 실행가능 프로그램의 부분(들)일 수 있다. 프로그램(들)은 하나 이상의 하드웨어 디바이스에 위치한 프로세서 회로와 연관된 CD(compact disk), 플로피 디스크, HDD(hard disk drive), SSD(solid-state drive), DVD(digital versatile disk), 블루레이 디스크, 휘발성 메모리(예를 들어, 임의의 타입의 RAM(Random Access Memory) 등), 또는 비휘발성 메모리(예를 들어, EEPROM(electrically erasable programmable read-only memory), 플래시 메모리, HDD, SSD 등)와 같은 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체에 저장된 소프트웨어로 구현될 수 있지만, 프로그램(들) 전체 및/또는 그의 부분들은 대안적으로 프로세서 회로 이외의 하나 이상의 하드웨어 디바이스에 의해 실행되고/되거나 펌웨어 또는 전용 하드웨어로 구현될 수 있다. 머신 판독가능 명령어들은 다수의 하드웨어 디바이스들에 걸쳐 분산되고/되거나 2개 이상의 하드웨어 디바이스(예를 들어, 서버 및 클라이언트 하드웨어 디바이스)에 의해 실행될 수 있다. 예를 들어, 클라이언트 하드웨어 디바이스는 엔드포인트 클라이언트 하드웨어 디바이스(예를 들어, 사용자와 연관된 하드웨어 디바이스) 또는 중간 클라이언트 하드웨어 디바이스(예를 들어, 서버와 엔드포인트 클라이언트 하드웨어 디바이스 사이의 통신을 용이하게 할 수 있는 RAN(radio access network) 게이트웨이)에 의해 구현될 수 있다. 유사하게, 비일시적 컴퓨터 판독가능 저장 매체는 하나 이상의 하드웨어 디바이스에 위치된 하나 이상의 매체를 포함할 수 있다. 또한, 예시적인 프로그램(들)이 도 8, 도 9, 및 도 10에 예시된 흐름도들을 참조하여 설명되지만, 예시적인 사용자 디바이스(302) 및/또는 예시적인 사용자 디바이스(들)(306)를 구현하는 많은 다른 방법들이 대안적으로 사용될 수 있다. 예를 들어, 블록들의 실행 순서는 변경될 수 있고/있거나, 설명된 블록들 중 일부는 변경, 제거, 또는 조합될 수 있다. 추가적으로 또는 대안적으로, 블록들 중 임의의 것 또는 모두는 소프트웨어 또는 펌웨어를 실행하지 않고 대응하는 동작을 수행하도록 구조화되는 하나 이상의 하드웨어 회로(예를 들어, 프로세서 회로, 개별 및/또는 통합 아날로그 및/또는 디지털 회로, FPGA, ASIC, 비교기, 연산 증폭기(op-amp), 로직 회로 등)에 의해 구현될 수 있다. 프로세서 회로는 상이한 네트워크 위치들에 분산되고/되거나 단일 머신 내의 하나 이상의 하드웨어 디바이스(예를 들어, 단일 코어 프로세서(예를 들어, 단일 코어 중앙 프로세서 유닛(CPU)), 멀티 코어 프로세서(예를 들어, 멀티 코어 CPU) 등), 서버 랙의 다수의 서버에 걸쳐 분산된 다수의 프로세서, 하나 이상의 서버 랙에 걸쳐 분산된 다수의 프로세서, 동일한 패키지(예를 들어, 동일한 집적 회로(IC) 패키지 또는 2개 이상의 별개의 하우징 등)에 위치된 CPU 및/또는 FPGA에 로컬일 수 있다.
본 명세서에 설명된 머신 판독가능 명령어들은 압축된 포맷, 암호화된 포맷, 파편화된 포맷(fragmented format), 컴파일된 포맷, 실행가능 포맷, 패키징된 포맷 등 중 하나 이상으로 저장될 수 있다. 본 명세서에 설명된 바와 같은 머신 판독가능 명령어들은 머신 실행가능 명령어들을 작성, 제조, 및/또는 생산하기 위해 활용될 수 있는 데이터 또는 데이터 구조로서(예를 들어, 명령어들의 부분들, 코드, 코드의 표현들(representations of code) 등으로서) 저장될 수 있다. 예를 들어, 머신 판독가능 명령어들은 파편화되고 네트워크 또는 네트워크들의 컬렉션의 동일한 또는 상이한 위치들에(예를 들어, 클라우드에, 에지 디바이스들에, 등등) 위치하는 하나 이상의 스토리지 디바이스 및/또는 컴퓨팅 디바이스(예를 들어, 서버) 상에 저장될 수 있다. 머신 판독가능 명령어들은 그것들을 컴퓨팅 디바이스 및/또는 다른 머신에 의해 직접 판독가능, 해석가능, 및/또는 실행가능하게 하기 위해 설치, 수정, 적응, 업데이트, 조합, 보충, 구성, 복호화, 압축해제, 패킹해제(unpacking), 분배, 재할당, 컴파일 등 중 하나 이상을 필요로 할 수 있다. 예를 들어, 머신 판독가능 명령어들은 개별적으로 압축, 암호화, 및/또는 별개의 컴퓨팅 디바이스들 상에 저장되는 다수의 부분들로 저장될 수 있고, 이 부분들은 복호화, 압축해제, 및/또는 조합될 때 본 명세서에서 설명된 것과 같은 프로그램을 함께 형성할 수 있는 하나 이상의 동작을 구현하는 머신 실행가능 명령어들의 세트를 형성한다.
다른 예에서, 머신 판독가능 명령어들은 프로세서 회로에 의해 판독될 수 있는 상태로 저장될 수 있지만, 특정 컴퓨팅 디바이스 또는 다른 디바이스 상에서 머신 판독가능 명령어들을 실행하기 위해 라이브러리(예를 들어, 동적 링크 라이브러리(DLL)), 소프트웨어 개발 키트(SDK), 애플리케이션 프로그래밍 인터페이스(API) 등의 추가를 필요로 한다. 다른 예에서, 머신 판독가능 명령어들은 머신 판독가능 명령어들 및/또는 대응하는 프로그램(들)이 전체적으로 또는 부분적으로 실행될 수 있기 전에 구성(예를 들어, 설정 저장, 데이터 입력, 네트워크 어드레스 기록 등)될 필요가 있을 수 있다. 따라서, 본 명세서에서 사용되는 바와 같이, 머신 판독가능 매체는, 저장되거나 또는 달리 정지중(at rest) 또는 수송중(in transit)일 때 머신 판독가능 명령어들 및/또는 프로그램(들)의 특정 포맷 또는 상태에 관계없이 머신 판독가능 명령어들 및/또는 프로그램(들)을 포함할 수 있다.
본 명세서에 설명된 머신 판독가능 명령어들은 임의의 과거, 현재, 또는 미래의 명령어 언어, 스크립팅 언어, 프로그래밍 언어 등으로 표현될 수 있다. 예를 들어, 머신 판독가능 명령어들은 다음의 언어들: C, C++, Java, C#, Perl, Python, JavaScript, HTML(HyperText Markup Language), SQL(Structured Query Language), Swift 등 중 임의의 것을 사용하여 표현될 수 있다.
위에서 언급한 바와 같이, 도 8, 도 9, 및 도 10의 예시적인 동작들은 광학 스토리지 디바이스들, 자기 스토리지 디바이스들, HDD, 플래시 메모리, 판독 전용 메모리(ROM), CD, DVD, 캐시, 임의의 타입의 RAM, 레지스터, 및/또는 임의의 지속기간 동안(예를 들어, 연장된 기간 동안, 영구적으로, 짧은 인스턴스들 동안(for brief instances), 임시 버퍼링 동안, 및/또는 정보의 캐싱 동안) 정보가 저장되는 임의의 다른 스토리지 디바이스 또는 스토리지 디스크와 같은 하나 이상의 비일시적 컴퓨터 및/또는 머신 판독가능 매체 상에 저장되는 실행가능 명령어들(예를 들어, 컴퓨터 및/또는 머신 판독가능 명령어들)을 사용하여 구현될 수 있다. 본 명세서에서 사용되는 바와 같이, 비일시적 컴퓨터 판독가능 매체 및 비일시적 컴퓨터 판독가능 저장 매체라는 용어들은 임의의 타입의 컴퓨터 판독가능 스토리지 디바이스 및/또는 스토리지 디스크를 포함하고 전파 신호들을 배제하고 송신 매체를 배제하는 것으로 명백하게 정의된다.
"포함하는" 및 "포괄하는"(및 그의 모든 형태 및 시제)은 본 명세서에서 오픈 엔드형 용어(open ended term)인 것으로 사용된다. 따라서, 청구항이 프리앰블로서 또는 임의의 종류의 청구항 기재 내에서 임의의 형태의 "포함하다" 또는 "포괄하다"(예를 들어, 포함한다, 포괄한다, 포함하는, 포괄하는, 갖는 등)를 이용할 때마다, 추가적인 요소들, 용어들 등이 대응하는 청구항 또는 열거의 범위를 벗어나지 않고 존재할 수 있다는 것을 이해해야 한다. 본 명세서에서 사용되는 바와 같이, "적어도"라는 문구가, 예를 들어, 청구항의 프리앰블에서 전환 용어(transition term)로서 사용될 때, 그것은 용어 "포함하는" 및 "포괄하는"이 오픈 엔드형인 것과 동일한 방식으로 오픈 엔드형이다. 용어 "및/또는"은, 예를 들어, A, B, 및/또는 C와 같은 형태로 사용될 때, (1) A 단독, (2) B 단독, (3) C 단독, (4) A와 B, (5) A와 C, (6) B와 C, 또는 (7) A와 B와 C 등의 A, B, C의 임의의 조합 또는 서브세트를 지칭한다. 구조들, 컴포넌트들, 아이템들, 객체들 및/또는 사물들을 설명하는 맥락에서 본 명세서에서 사용되는 바와 같이, "A 및 B 중 적어도 하나"라는 문구는 (1) 적어도 하나의 A, (2) 적어도 하나의 B, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 중 임의의 것을 포함하는 구현들을 지칭하도록 의도된다. 유사하게, 구조들, 컴포넌트들, 아이템들, 객체들 및/또는 사물들을 설명하는 맥락에서 본 명세서에서 사용되는 바와 같이, "A 또는 B 중 적어도 하나"라는 문구는 (1) 적어도 하나의 A, (2) 적어도 하나의 B, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 중 임의의 것을 포함하는 구현들을 지칭하도록 의도된다. 프로세스들, 명령어들, 액션들, 활동들 및/또는 단계들의 수행 또는 실행을 설명하는 문맥에서 본 명세서에서 사용되는 바와 같이, "A 및 B 중 적어도 하나"라는 문구는 (1) 적어도 하나의 A, (2) 적어도 하나의 B, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 중 임의의 것을 포함하는 구현들을 지칭하도록 의도된다. 유사하게, 프로세스들, 명령어들, 액션들, 활동들 및/또는 단계들의 수행 또는 실행을 설명하는 문맥에서 본 명세서에서 사용되는 바와 같이, "A 또는 B 중 적어도 하나"라는 문구는 (1) 적어도 하나의 A, (2) 적어도 하나의 B, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 중 임의의 것을 포함하는 구현들을 지칭하도록 의도된다.
본 명세서에서 사용되는 바와 같이, 단수 참조들(예를 들어, "한", "하나의", "제1", "제2" 등)은 복수를 배제하지 않는다. 본 명세서에서 사용되는 바와 같이, "한" 또는 "하나의" 객체라는 용어는 그 객체의 하나 이상을 지칭한다. 용어 "한"(또는 "하나의"), "하나 이상" 및 "적어도 하나"는 본 명세서에서 상호교환가능하게 사용된다. 또한, 개별적으로 열거되어 있지만, 복수의 수단들, 요소들 또는 방법 액션들이 예를 들어 동일한 엔티티 또는 객체에 의해 구현될 수 있다. 또한, 개별적인 특징들이 상이한 예들 또는 청구항들에 포함될 수 있지만, 이것들은 가능하게는 조합될 수 있고, 상이한 예들 또는 청구항들에서의 포함이 특징들의 조합이 실현가능하지 않고/않거나 유리하지 않다는 것을 암시하지는 않는다.
도 8은 비디오 프레임(들)의 가상 타일(들)을 결정하고 비트스트림(들)으로 인코딩하여 하나 이상의 다른 사용자 디바이스(예를 들어, 도 3 내지 도 5의 사용자 디바이스(들)(306))에 송신하기 위해 사용자 디바이스(예를 들어, 도 3 내지 도 5의 사용자 디바이스(302))의 프로세서 회로에 의해 실행 및/또는 인스턴스화될 수 있는 예시적인 머신 판독가능 명령어들 및/또는 예시적인 동작들(800)을 나타내는 흐름도이다. 도 8의 머신 판독가능 명령어들 및/또는 동작들(800)은 예시적인 비디오 프리프로세서 회로(402)(도 4)가 비디오 프레임 픽셀 데이터를 수신하는 블록 802에서 시작한다. 예를 들어, 비디오 프레임 픽셀 데이터는 사용자 디바이스(302)의 카메라(들)(332)에 의해 생성된 비디오 스트림으로부터 나올 수 있다.
블록 804에서, 예시적인 비디오 프리프로세서 회로(402)는 수신된 비디오 프레임 픽셀 데이터를 다운스케일링 또는 다운샘플링한다(예를 들어, 그의 해상도를 감소시키고/시키거나 그의 프레임 레이트를 감소시킨다). 예를 들어, 비디오 프리프로세서 회로(402)는 비디오 프레임 픽셀 데이터를 다운스케일링하여, 풀-해상도 프레임보다는 감소된 데이터세트에 대해 추가 처리 및 분석이 다른 회로 및/또는 디바이스(들)에 의해 수행될 수 있다.
블록 806에서, 예시적인 전경 검출기 회로(404)(도 4)는 비디오 프레임의 전경 부분(들)(예를 들어, 사용자 및 일부 배경 부분(들)을 포함하는 도 4의 전경 경계 영역(422)을 정의하는 직사각형 영역)에 있는 픽셀 데이터를 검출하기 위해 제1 트레이닝된 신경망을 구현한다. 또한 블록 806에서, 예시적인 배경 검출기 회로(406)(도 4)는 비디오 프레임의 배경 부분(들)(예를 들어, 사용자를 포함하지 않는 비디오 프레임의 픽셀들을 포함하는 도 4의 배경 경계 영역들(424))에 있는 픽셀 데이터를 검출하기 위해 제2 트레이닝된 신경망을 구현한다.
블록 808에서, 예시적인 세그먼트화 데이터 결정기 회로(408)는 전경 부분(들) 및 배경 부분(들)에 기초하여 세그먼트화 데이터를 생성한다. 예를 들어, 세그먼트화 데이터는 비디오 프레임의 전경 부분(들)(예를 들어, 전경 경계 영역(422)) 및 배경 부분(들)(예를 들어, 배경 경계 영역들(424))에 포함되는 블록 806에서 검출된 픽셀 데이터에 대응한다. 픽셀 데이터가 전경 부분(들)에서 검출되면, 예시적인 세그먼트화 데이터 결정기 회로(408)는 그 픽셀 데이터를 전경으로서 라벨링한다. 픽셀 데이터가 배경 부분(들)에서 검출되면, 예시적인 세그먼트화 데이터 결정기 회로(408)는 그 픽셀 데이터를 배경으로서 라벨링한다. 예를 들어, 세그먼트화 데이터 결정기 회로(408)는 픽셀 데이터에 표현된 픽셀들 또는 픽셀들의 그룹들과 연관하여 값들(예를 들어, 전경 또는 배경을 나타내는 값들)을 저장함으로써 픽셀 데이터를 라벨링할 수 있다.
블록 810에서, 예시적인 비디오 인코더 회로(318)(도 3 및 도 4)는 세그먼트화 데이터에 기초하여 비디오 프레임(들)의 전경 경계 영역(들) 및 배경 경계 영역(들)을 결정한다. 전경 경계 영역(들)(예를 들어, 전경 경계 영역(들)(422)) 및 배경 경계 영역(들)(예를 들어, 배경 경계 영역들(424))은 메타데이터(예를 들어, 영역(들)의 상단-좌측 픽셀의 픽셀 좌표, 영역(들)의 픽셀 폭 및 높이, 및 영역(들)의 라벨(전경 또는 배경))에 의해 식별되는 비디오 프레임의 하나 이상의 직사각형 구역을 포함한다.
블록 812에서, 예시적인 비디오 인코더 회로(318)는 비디오 프레임 픽셀 데이터의 가상 타일(들)을 결정한다. 예를 들어, 비디오 인코더 회로(318)는 가상 타일(들)을 전경 경계 영역(들)에는 포함되지만 배경 경계 영역(들)에는 포함되지 않는 비디오 프레임(들)의 픽셀 데이터의 컬렉션으로서 결정한다. 다시 말해서, 가상 타일(들)은 배경 경계 영역들(424)이 전경 경계 영역(422)과 중첩하지 않는 비디오 프레임의 부분(들)이다.
블록 814에서, 예시적인 비디오 인코더 회로(318)는 비디오 프레임 픽셀 데이터를 파싱하여 픽셀 데이터가 가상 타일(들)에 포함되는지의 여부를 결정한다. 픽셀 데이터가 가상 타일(들)에 포함되는 경우, 제어는 예시적인 비디오 인코더 회로(318)가 가상 타일(들)의 픽셀 데이터 및/또는 블록(예를 들어, 매크로블록, 코딩 트리 유닛 등)을 비디오 데이터 비트스트림으로 인코딩하는 블록 816으로 진행한다. 픽셀 데이터가 가상 타일(들)에 포함되지 않는 경우, 제어는 예시적인 비디오 인코더 회로(318)가 픽셀 데이터를 스킵하고(예를 들어, 인코딩하지 않고) 그 픽셀 및/또는 픽셀 데이터의 블록(예를 들어, 매크로블록, 코딩 트리 유닛 등)과 연관된 ARSEI(annotated regions supplemental enhancement information) 메시지(들) 및/또는 SEI(supplemental enhancement information) 메시지(들)에 (0, 0)의 모션 벡터를 기입하는 블록 818로 진행한다.
블록 820에서, 예시적인 비디오 인코더 회로(318)는 경계 영역(들)에 기초하여 ARSEI 메시지(들)를 생성한다. 예를 들어, 비디오 인코더 회로(318)는 인코딩된 프레임 데이터의 비트스트림에 대응하는 전경 경계 영역(들)(예를 들어, 전경 경계 영역(422)) 및 배경 경계 영역(들)(예를 들어, 배경 경계 영역들(424))의 메타데이터(예를 들어, 위치, 크기, 및 라벨)를 포함하도록 ARSEI 메시지(들)를 생성한다.
블록 822에서, 예시적인 비디오 인코더 회로(318)는 선택된 가상 배경에 기초하여 SEI 메시지(들)를 생성한다. 예를 들어, 비디오 인코더 회로(318)는 송신측 사용자 디바이스(예를 들어, 도 3 내지 도 5의 사용자 디바이스(302))에 의해 선택된 가상 배경 템플릿 및/또는 블러링된 배경을 나타내는 라벨 필드 코드들을 포함하는 하나 이상의 SEI 메시지를 생성한다.
블록 824에서, 예시적인 비디오 인코더 회로(318)는 비디오 스트림의 비디오 프레임 픽셀 데이터와 연관된 비트스트림 데이터, ARSEI 메시지(들), 및/또는 SEI 메시지(들)를 네트워크(304)를 통해 별개의 사용자 디바이스(들)(306)에 전송 또는 송신한다. 도 8의 예시적인 명령어들 및/또는 동작들이 종료된다.
도 9는 데이터 비트스트림(들)의 가상 타일(들)을 결정하고 비디오 프레임(들)으로 디코딩하여 디스플레이하기 위해 사용자 디바이스(예를 들어, 도 3 내지 도 5의 사용자 디바이스(306))의 프로세서 회로에 의해 실행 및/또는 인스턴스화될 수 있는 예시적인 머신 판독가능 명령어들 및/또는 예시적인 동작들(900)을 나타내는 흐름도이다. 도 9의 머신 판독가능 명령어들 및/또는 동작들(900)은, 예시적인 비디오 디코더 회로(322)(도 3 및 도 5)가 사용자 디바이스(들)(302)(도 3 내지 도 5)에 의해 전송된 비디오 스트림의 비디오 프레임 픽셀 데이터와 연관된 비트스트림 데이터, ARSEI 메시지(들), 및/또는 SEI 메시지(들)를 수신하는 블록 902에서 개시한다.
블록 904에서, 예시적인 비디오 디코더 회로(322)는 수신된 ARSEI 메시지들에 기초하여 인코딩된 비디오 프레임 픽셀 데이터의 전경 경계 영역(들) 및 배경 경계 영역(들)을 결정한다. 예를 들어, 비디오 디코더 회로(322)는 어느 비트스트림 데이터가 전경 경계 영역(들)(예를 들어, 도 4의 전경 경계 영역(422))에 대응하는지 및 어느 비트스트림 데이터가 배경 경계 영역(들)(예를 들어, 도 4의 배경 경계 영역들(424))에 대응하는지를 결정한다.
블록 906에서, 예시적인 비디오 디코더 회로(322)는 전경 경계 영역(들) 및 배경 경계 영역(들)에 기초하여 인코딩된 비디오 프레임 픽셀 데이터의 가상 타일(들)을 결정한다. 예를 들어, 비디오 디코더 회로(322)는 배경 경계 영역들(424)이 아니라 전경 경계 영역(422)에 대응하는 비트스트림 데이터의 부분들에 기초하여 가상 타일(들)을 결정한다.
블록 908에서, 예시적인 비디오 디코더 회로(322)는 수신된 비트스트림 데이터가 가상 타일(들)에 포함되는지를 결정한다. 다시 말해서, 예시적인 비디오 디코더 회로(322)는 비트스트림 데이터가 디코딩된 후에 인코딩된 픽셀 데이터가 비디오 프레임(들)의 가상 타일(들)에 위치할 것인지를 결정한다. 예시적인 비디오 디코더 회로(322)가 블록 908에서 비트스트림 데이터가 가상 타일(들)에 포함된다고 결정하면, 제어는 비디오 디코더 회로(322)가 비트스트림 데이터를 디코딩하는 블록 910으로 진행한다. 대신에 예시적인 비디오 디코더 회로(322)가 블록 908에서 비트스트림 데이터가 가상 타일(들)에 포함되지 않는다고 결정하면, 제어는 비디오 디코더 회로(322)가 비트스트림 데이터를 디코딩하지 않는 블록 912로 진행한다.
블록 914에서, 예시적인 비디오 디코더 회로(322)는 도 5에 도시된 DRAM(dynamic random access memory)(316)의 버퍼 풀(502)을 생성 및/또는 업데이트한다. 예시적인 비디오 디코더 회로(322)는 초기 디코딩된 가상 타일(들) 및 선택된 가상 배경 템플릿으로 합성된 인트라-프레임 데이터(예를 들어, 참조 프레임 데이터)를 디코딩함으로써 버퍼 풀(502)을 생성한다. 예시적인 비디오 디코더 회로(322)는 인트라-프레임 데이터를 DRAM(316)의 버퍼 풀(502)에 저장하며, 여기서 그것이 복제되어 버퍼 풀을 채운다. 추가적으로 또는 대안적으로, 예시적인 비디오 디코더 회로(322)는 버퍼 풀(502)의 다음 큐잉된 프레임(예를 들어, 인트라-프레임 데이터 및/또는 인터-프레임 데이터)의 가상 타일(들)을 가장 최근에 디코딩된 가상 타일(들)로 대체한다. 블록 914를 구현하는 데 사용될 수 있는 예시적인 명령어들 및/또는 동작들이 도 10과 관련하여 이하에서 보다 상세히 설명된다.
블록 916에서, 예시적인 비디오 디스플레이 컨트롤러 회로(324)(도 3 및 도 5)는 버퍼 풀(502)로부터 인트라-프레임 데이터 및/또는 인터-프레임 데이터를 판독한다. 예를 들어, 비디오 디스플레이 컨트롤러 회로(324)는 비디오 시퀀스에서의 비디오 프레임(들)의 인덱싱된 순서에 기초하여 버퍼 풀(502)로부터 비디오 프레임 픽셀 데이터를 판독한다.
블록 918에서, 예시적인 비디오 포스트프로세서 회로(504)(도 5)는 버퍼 풀(502)로부터 판독된 비디오 프레임 픽셀 데이터를 다운스케일링한다(즉, 그의 해상도를 감소시킨다). 예를 들어, 비디오 포스트프로세서 회로(504)는 하나 이상의 사용자 디바이스(예를 들어, 도 3 내지 도 5의 사용자 디바이스(들)(302))로부터 수신된 비디오 프레임(들)(예를 들어, 도 6의 비디오 프레임(608))을 다운스케일링하여, 대응하는 프레임이 네트워크(304)(도 3 내지 도 5)를 통해 영상 회의 애플리케이션에 접속된 사용자 디바이스의 수에 대응하는 프레임들의 그리드(예를 들어, 도 7의 표준 비디오 프레임 출력(702)으로서 도시된 프레임들의 그리드) 내에 꼭 들어맞을 수 있다.
블록 920에서, 예시적인 비디오 포스트프로세서 회로(504)는 다운스케일링된 비디오 프레임(들)을 비디오 프레임 픽셀 데이터의 그리드로 합성한다. 예를 들어, 비디오 포스트프로세서 회로(504)는 비디오 프레임(들)을 디스플레이 스크린(334)(도 3 및 도 5) 상에 디스플레이될 그리드(예를 들어, 도 7의 표준 비디오 프레임 출력(702)으로서 도시된 프레임들의 그리드)로 합성할 수 있다. 대안적으로, 2명의 참가자만이 영상 회의 세션에 참가한 예들에서, 비디오 포스트프로세서 회로(504)는 블록 920의 명령어들을 실행하여, 참가자의 비디오 프레임을 다중-프레임 그리드 대신에 단일 프레임으로서 디스플레이 스크린(334) 상에 디스플레이한다.
블록 922에서, 예시적인 비디오 디스플레이 컨트롤러 회로(324)는 버퍼 풀(502)로부터 판독된 비디오 프레임 데이터에 기초하여 비디오 신호를 생성한다. 이러한 방식으로, 예시적인 비디오 디스플레이 컨트롤러 회로(324)는 비디오 신호 데이터를 디스플레이 스크린(334)에 전송하여 비디오 프레임 데이터를 디스플레이 스크린(334) 상에 렌더링할 수 있다.
블록 924에서, 예시적인 비디오 디스플레이 컨트롤러 회로(324)는 비디오 프레임 픽셀 데이터를 인트라-프레임 데이터 또는 인터-프레임 데이터로서 버퍼 풀(502)에 다시 기입한다. 예를 들어, 비디오 디스플레이 컨트롤러 회로(324)는 비디오 신호가 동일한 픽셀 데이터에 대해 생성된 후에 비디오 프레임 픽셀 데이터를 버퍼 풀(502)에 기입한다. 블록 924의 명령어들 또는 동작은 디스플레이 컨트롤러 회로(324)에 의해 버퍼 풀(502)을 보충하기 위해 사용되어, 버퍼 풀(502)에 저장된 비디오 프레임들의 수가 영상 회의 세션 동안 일관되게 유지되는 것을 보장한다. 예를 들어, 디스플레이 컨트롤러 회로(324)가 버퍼 풀(502)을 보충하지 않았으면, 비디오 디코더 회로(322)는 디스플레이 컨트롤러 회로(324)가 프레임을 렌더링하기를 기다려야 하거나, 디스플레이 컨트롤러 회로(324)는 비디오 디코더 회로(322)가 프레임을 디코딩하기를 기다려야 할 것이다. 예시적인 버퍼 풀(502)에 저장된 비디오 프레임들의 수를 영상 회의 세션 동안 일관되게 유지함으로써, 비디오 프레임을 디코딩 및/또는 렌더링하는 시간은 예시적인 버퍼 풀(502)이 비디오 프레임 데이터의 충분한 저장을 유지하지 않은 경우에 걸리는 시간보다 작다.
블록 926에서, 예시적인 비디오 디코더 회로(322)는 네트워크(304)를 통해 사용자 디바이스(들)(302)로부터 더 많은 비트스트림 데이터가 수신되는지를 결정한다. 비디오 디코더 회로(322)가 블록 926에서 더 많은 비트스트림 데이터가 수신된다고 결정하면, 제어는 비디오 디코더 회로(322)가 또한 수신된 ARSEI 메시지(들)에 기초하여 인코딩된 프레임 데이터의 전경 경계 영역(들) 및 배경 경계 영역(들)을 결정하는 블록 904로 리턴한다. 비디오 디코더 회로(322)가 블록 926에서 더 이상의 비트스트림 데이터가 수신되지 않는다고 결정하면, 도 9의 예시적인 명령어들 또는 동작들이 종료된다.
도 10은 복수의 처리된(예를 들어, 디코딩된) 및/또는 디스플레이된 인트라-프레임 데이터 및/또는 인터-프레임 데이터를 저장하기 위해 DRAM(316)의 버퍼 풀(502)(도 5 및 도 6)을 생성 및/또는 업데이트하기 위해 프로세서 회로에 의해 실행 및/또는 인스턴스화될 수 있는 예시적인 머신 판독가능 명령어들 및/또는 예시적인 동작들(914)을 나타내는 흐름도이다. 이하에서 설명되는 머신 판독가능 명령어들 및/또는 동작들(914)은 도 9의 블록 914를 구현하는데 사용될 수 있다.
도 10의 머신 판독가능 명령어들 및/또는 동작들(914)은 비디오 디코더 회로(322)(도 3 및 도 5)가 비디오 프레임 픽셀 데이터가 비트스트림 데이터로부터 디코딩된 제1 프레임에 대응하는지를 결정하는 블록 1002에서 시작한다. 예를 들어, 비디오 디코더 회로(322)는 비디오 프레임 픽셀 데이터가 영상 회의를 위해 송신측 사용자 디바이스(들)(302)가 캡처하는 비디오 시퀀스의 제1 비디오 프레임에 대응하는지를 결정한다.
비디오 디코더 회로(322)가, 블록 1002에서, 비디오 프레임 픽셀 데이터가 비트스트림의 제1 비디오 프레임에 대응한다고 결정하면, 제어는 블록 1004로 진행한다. 블록 1004에서, 비디오 디코더 회로(322)는 인트라-프레임 데이터를 생성한다. 예를 들어, 비디오 디코더 회로(322)는 가상 타일(들)을 디코딩하고 가상 배경 픽셀들을 배경 경계 영역(들)에 추가함으로써 인트라-프레임 데이터를 생성한다. 일부 예들에서, 예시적인 비디오 디코더 회로(322)는 인트라-프레임 데이터의 가상 타일(들)을 디코딩하고, 이를 가상 타일(들) 픽셀 데이터에 대응하는 ARSEI 메시지(들)에 포함된 픽셀 좌표들에 기초하여 가상 배경 템플릿의 앞에 위치시킨다.
블록 1006에서, 예시적인 비디오 디코더 회로(322)는 구성된 인트라-프레임 데이터를 버퍼 풀(502)에 저장한다. 예를 들어, 예시적인 비디오 디코더 회로(322)는 인트라-프레임 데이터를 인터-프레임 데이터에서 가상 타일 픽셀 데이터의 모션 추정을 위한 기준 프레임으로서 사용하기 위한 참조 프레임으로서 버퍼 풀(502)에 저장한다.
블록 1008에서, 예시적인 복제기 회로(326)(도 3 및 도 5)는 버퍼 풀(502)을 채우기 위해 인트라-프레임 데이터의 복수의 사본을 생성한다. 예시적인 버퍼 풀(502)은 비디오 디코더 회로(322)가 기입 및/또는 수정할 수 있고 비디오 디스플레이 컨트롤러 회로(324)가 판독 및/또는 기입할 수 있는 유한 수의 저장 공간 또는 용량을 포함한다. 예시적인 비디오 디코더 회로(322)는 인트라-프레임 데이터의 가상 타일(들)을 후속하는 디코딩된 비디오 프레임(예를 들어, 인터-프레임 데이터)의 가상 타일(들)로 대체함으로써 저장된 비디오 프레임(들)(예를 들어, 인트라-프레임 데이터 및/또는 인터-프레임 데이터)을 수정할 수 있다.
블록 1002로 돌아가서, 비디오 디코더 회로(322)가 비디오 프레임 픽셀 데이터가 비트스트림의 제1 비디오 프레임에 대응하지 않는다고 결정하면, 제어는 블록 1010으로 진행한다. 블록 1010에서, 비디오 디코더 회로(322)는 비트스트림의 SEI 메시지에 표시된 가상 배경 템플릿 선택이 선행하는 디코딩된 비디오 프레임 픽셀 데이터의 가상 배경 템플릿과 동일한지를 결정한다. 현재 디코딩된 비디오 프레임의 가상 배경 템플릿이 선행하는 디코딩된 비디오 프레임의 가상 배경 템플릿과 동일하지 않으면, 제어는 블록 1004로 진행한다.
그러나, 비디오 디코더 회로(322)가, 블록 1010에서, 현재 디코딩된 비디오 프레임의 가상 배경 템플릿이 선행하는 디코딩된 비디오 프레임의 가상 배경 템플릿과 동일하다고 결정하면, 제어는 비디오 디코더 회로(322)가 비디오 프레임에서 가상 타일(들) 픽셀 데이터를 합성하는 블록 1012로 진행한다. 예를 들어, 비디오 디코더 회로(322)는 (예를 들어, 재구성하기 위해) 캡처된 비디오에 따라 비디오 프레임에서 가상 타일(들) 픽셀 데이터를 합성하고 배열한다.
블록 1014에서, 예시적인 비디오 디코더 회로(322)는 현재 디코딩된 비디오 프레임의 가상 타일(들)을 버퍼 풀(502)에서 다음 큐잉된 비디오 프레임(예를 들어, 인트라-프레임 데이터 및/또는 인터-프레임 데이터)의 가상 타일(들)로 대체한다. 하이 레벨 관점에서, 예시적인 비디오 디코더 회로(322)는 다음 큐잉된 비디오 프레임의 가상 타일(들)을 제거하여, 가상 배경 템플릿만을 남긴 다음, 비디오 디코더 회로(322)는 블록 1012에서 합성된 현재 가상 타일(들)을 삽입한다. 현재 가상 타일(들)이 다음 큐잉된 가상 타일(들)과 동일한 비디오 프레임에 대해 적절하게 합성되고 위치되었기 때문에, 버퍼 풀(502)에서 비디오 프레임들 사이에 매끄러운 전이들(transitions)이 있다. 도 10의 예시적인 명령어들 또는 동작들은 종료되고 제어는 도 9의 예시적인 명령어들 또는 동작들에 의해 구현되는 함수 또는 프로세스와 같은 호출 함수 또는 프로세스(calling function or process)로 리턴한다.
도 11은 도 3 내지 도 5의 사용자 디바이스(302) 및/또는 사용자 디바이스(들)(306)를 구현하기 위해 도 8, 도 9, 및 도 10의 머신 판독가능 명령어들 및/또는 동작들을 실행 및/또는 인스턴스화하도록 구조화되는 예시적인 프로세서 플랫폼(1100)의 블록도이다. 프로세서 플랫폼(1100)은, 예를 들어, 서버, 개인용 컴퓨터, 워크스테이션, 셀프-러닝 머신(예를 들어, 신경망), 모바일 디바이스(예를 들어, 셀폰, 스마트폰, iPad™와 같은 태블릿), PDA(personal digital assistant), 인터넷 기기, 게임 콘솔, 개인용 비디오 레코더, 셋톱 박스, 헤드셋(예를 들어, 증강 현실(AR) 헤드셋, 가상 현실(VR) 헤드셋 등) 또는 다른 웨어러블 디바이스, 또는 임의의 다른 타입의 컴퓨팅 디바이스일 수 있다.
예시된 예의 프로세서 플랫폼(1100)은 프로세서 회로(1112)를 포함한다. 예시된 예의 프로세서 회로(1112)는 하드웨어이다. 예를 들어, 프로세서 회로(1112)는 임의의 원하는 패밀리 또는 제조자로부터의 하나 이상의 집적 회로, 로직 회로, FPGA, 마이크로프로세서, CPU, GPU, DSP, 및/또는 마이크로컨트롤러에 의해 구현될 수 있다. 프로세서 회로(1112)는 하나 이상의 반도체 기반(예를 들어, 실리콘 기반) 디바이스에 의해 구현될 수 있다. 이 예에서, 프로세서 회로(1112)는 예시적인 비디오 인코더 회로(318), 예시적인 비디오 프레임 세그먼트화기 회로(320), 예시적인 비디오 디코더 회로(322), 예시적인 비디오 디스플레이 컨트롤러 회로(324), 예시적인 복제기 회로(326), 예시적인 비디오 프리프로세서 회로(402), 예시적인 전경 검출기 회로(404), 예시적인 배경 검출기 회로(406), 예시적인 세그먼트화 데이터 결정기 회로(408), 및/또는 예시적인 비디오 포스트프로세서 회로(504)를 구현한다.
예시된 예의 프로세서 회로(1112)는 로컬 메모리(1113)(예를 들어, 캐시, 레지스터들 등)를 포함한다. 예시된 예의 프로세서 회로(1112)는, 버스(1118)에 의해, 휘발성 메모리(1114) 및 비휘발성 메모리(1116)를 포함하는 메인 메모리와 통신한다. 휘발성 메모리(1114)는 SDRAM(Synchronous Dynamic Random Access Memory), DRAM(Dynamic Random Access Memory), RDRAM®(RAMBUS® Dynamic Random Access Memory) 및/또는 임의의 다른 타입의 RAM 디바이스에 의해 구현될 수 있다. 일부 예들에서, 휘발성 메모리(1114)는 도 3 내지 도 6의 DRAM(316)과 도 5 및 도 6의 예시적인 버퍼 풀(502)을 구현하는 데 사용될 수 있다. 비휘발성 메모리(1116)는 플래시 메모리 및/또는 임의의 다른 원하는 타입의 메모리 디바이스에 의해 구현될 수 있다. 일부 예들에서, 비휘발성 메모리(1116)는 모델 데이터베이스(410)(도 4), 템플릿 데이터베이스(412)(도 4), 및/또는 템플릿 데이터베이스(506)(도 5)를 구현하는 데 사용될 수 있다. 예시된 예의 메인 메모리(1114, 1116)에 대한 액세스는 메모리 컨트롤러(1117)에 의해 제어된다.
예시된 예의 프로세서 플랫폼(1100)은 인터페이스 회로(1120)를 또한 포함한다. 인터페이스 회로(1120)는 이더넷 인터페이스, USB(universal serial bus) 인터페이스, Bluetooth® 인터페이스, NFC(near field communication) 인터페이스, PCI(Peripheral Component Interconnect) 인터페이스, 및/또는 PCIe(Peripheral Component Interconnect Express) 인터페이스와 같은 임의의 타입의 인터페이스 표준에 따라 하드웨어에 의해 구현될 수 있다.
예시된 예에서, 하나 이상의 입력 디바이스(1122)가 인터페이스 회로(1120)에 접속된다. 입력 디바이스(들)(1122)는 사용자가 프로세서 회로(1112)에 데이터 및/또는 커맨드들을 입력할 수 있게 한다. 입력 디바이스(들)(1122)는, 예를 들어, 카메라(스틸 또는 비디오), 키보드, 버튼, 마우스, 터치스크린, 트랙-패드, 트랙볼, 및/또는 이소포인트(isopoint) 디바이스에 의해 구현될 수 있다. 도시된 예에서, 입력 디바이스(들)(1122)는 도 3 및 도 4의 카메라(들)(332)를 구현한다.
하나 이상의 출력 디바이스(1124)가 예시된 예의 인터페이스 회로(1120)에 또한 접속된다. 출력 디바이스(들)(1124)는, 예를 들어, 디스플레이 디바이스들(예를 들어, 발광 다이오드(LED), 유기 발광 다이오드(OLED), 액정 디스플레이(LCD), 음극선관(CRT) 디스플레이, 인-플레이스 스위칭(in-place switching, IPS) 디스플레이, 터치스크린 등), 촉각 출력 디바이스, 프린터 및/또는 스피커에 의해 구현될 수 있다. 따라서, 예시된 예의 인터페이스 회로(1120)는 통상적으로 그래픽 드라이버 카드, 그래픽 드라이버 칩, 및/또는 GPU와 같은 그래픽 프로세서 회로를 포함한다. 도시된 예에서, 출력 디바이스(들)(1124)는 도 3 및 도 5의 디스플레이 스크린(334)을 구현한다.
예시된 예의 인터페이스 회로(1120)는 또한 네트워크(1126)에 의해 외부 머신들(예를 들어, 임의의 종류의 컴퓨팅 디바이스들)과의 데이터 교환을 용이하게 하는 송신기, 수신기, 송수신기, 모뎀, 주거용 게이트웨이, 무선 액세스 포인트, 및/또는 네트워크 인터페이스와 같은 통신 디바이스를 포함한다. 통신은, 예를 들어, 이더넷 접속, 디지털 가입자 회선(DSL) 접속, 전화선 접속, 동축 케이블 시스템, 위성 시스템, 라인-오브-사이트 무선 시스템(line-of-site wireless system), 셀룰러 전화 시스템, 광학 접속 등에 의해 이루어질 수 있다.
예시된 예의 프로세서 플랫폼(1100)은 또한 소프트웨어 및/또는 데이터를 저장하는 하나 이상의 대용량 스토리지 디바이스(1128)를 포함한다. 이러한 대용량 스토리지 디바이스들(1128)의 예들은 자기 스토리지 디바이스들, 광학 스토리지 디바이스들, 플로피 디스크 드라이브들, HDD들, CD들, 블루레이 디스크 드라이브들, RAID(redundant array of independent disks) 시스템들, 플래시 메모리 디바이스들 및/또는 SSD들과 같은 고체 상태 스토리지 디바이스들, 및 DVD 드라이브들을 포함한다. 일부 예들에서, 대용량 스토리지 디바이스들(1128)은 모델 데이터베이스(410)(도 4), 템플릿 데이터베이스(412)(도 4), 및/또는 템플릿 데이터베이스(506)(도 5)를 구현하는 데 사용될 수 있다.
도 8, 도 9, 및 도 10의 머신 판독가능 명령어들에 의해 구현될 수 있는 머신 실행가능 명령어들(1132)은 대용량 스토리지 디바이스(1128)에, 휘발성 메모리(1114)에, 비휘발성 메모리(1116)에, 및/또는 CD 또는 DVD와 같은 이동식 비일시적 컴퓨터 판독가능 저장 매체 상에 저장될 수 있다.
도 12는 도 11의 프로세서 회로(1112)의 예시적인 구현의 블록도이다. 이 예에서, 도 11의 프로세서 회로(1112)는 범용 마이크로프로세서(1200)에 의해 구현된다. 범용 마이크로프로세서 회로(1200)는 도 8, 도 9, 및 도 10의 흐름도의 머신 판독가능 명령어들의 일부 또는 전부를 실행하여, 이들 머신 판독가능 명령어들에 대응하는 동작들을 수행하는 로직 회로들로서 도 3, 도 4, 및 도 5의 회로를 효과적으로 인스턴스화한다. 일부 이러한 예들에서, 도 3, 도 4, 및 도 5의 회로는 명령어들과 조합하여 마이크로프로세서(1200)의 하드웨어 회로들에 의해 인스턴스화된다. 예를 들어, 마이크로프로세서(1200)는 CPU, DSP, GPU, XPU 등과 같은 멀티 코어 하드웨어 회로를 구현할 수 있다. 임의의 수의 예시적인 코어들(1202)(예를 들어, 1개의 코어)을 포함할 수 있지만, 이 예의 마이크로프로세서(1200)는 N개의 코어를 포함하는 멀티 코어 반도체 디바이스이다. 마이크로프로세서(1200)의 코어들(1202)은 독립적으로 동작할 수 있거나 또는 머신 판독가능 명령어들을 실행하도록 협력할 수 있다. 예를 들어, 펌웨어 프로그램, 임베디드 소프트웨어 프로그램, 또는 소프트웨어 프로그램에 대응하는 머신 코드는 코어들(1202) 중 하나에 의해 실행될 수 있거나 또는 코어들(1202) 중 다수의 코어들에 의해 동시에 또는 상이한 시간에 실행될 수 있다. 일부 예들에서, 펌웨어 프로그램, 임베디드 소프트웨어 프로그램, 또는 소프트웨어 프로그램에 대응하는 머신 코드는 스레드들로 분할되고 코어들(1202) 중 2개 이상에 의해 병렬로 실행된다. 소프트웨어 프로그램은 도 8, 도 9, 및 도 10의 흐름도에 의해 표현된 머신 판독가능 명령어들 및/또는 동작들의 일부 또는 전부에 대응할 수 있다.
코어들(1202)은 예시적인 제1 버스(1204)에 의해 통신할 수 있다. 일부 예들에서, 제1 버스(1204)는 코어들(1202) 중 하나(들)와 연관된 통신을 실시하기 위해 통신 버스를 구현할 수 있다. 예를 들어, 제1 버스(1204)는 I2C(Inter-Integrated Circuit) 버스, SPI(Serial Peripheral Interface) 버스, PCI 버스, 또는 PCIe 버스 중 적어도 하나를 구현할 수 있다. 추가적으로 또는 대안적으로, 제1 버스(1204)는 임의의 다른 타입의 컴퓨팅 또는 전기 버스를 구현할 수 있다. 코어들(1202)은 예시적인 인터페이스 회로(1206)에 의해 하나 이상의 외부 디바이스로부터 데이터, 명령어들, 및/또는 신호들을 획득할 수 있다. 코어들(1202)은 인터페이스 회로(1206)에 의해 하나 이상의 외부 디바이스에 데이터, 명령어들, 및/또는 신호들을 출력할 수 있다. 이 예의 코어들(1202)이 예시적인 로컬 메모리(1220)(예를 들어, 레벨 1(L1) 데이터 캐시 및 L1 명령어 캐시로 분할될 수 있는 L1 캐시)를 포함하지만, 마이크로프로세서(1200)는 또한 데이터 및/또는 명령어들에의 고속 액세스를 위해 코어들에 의해 공유될 수 있는 예시적인 공유 메모리(1210)(예를 들어, 레벨 2(L2) 캐시)를 포함한다. 데이터 및/또는 명령어들은 공유 메모리(1210)에 기입하고/하거나 그로부터 판독함으로써 전송(예를 들어, 공유)될 수 있다. 코어들(1202) 각각의 로컬 메모리(1220) 및 공유 메모리(1210)는 다수의 레벨의 캐시 메모리 및 메인 메모리(예를 들어, 도 11의 메인 메모리(1114, 1116))를 포함하는 스토리지 디바이스들의 계층구조의 일부일 수 있다. 전형적으로, 계층구조 내의 더 높은 레벨의 메모리는 더 낮은 액세스 시간을 나타내고 더 낮은 레벨의 메모리보다 더 작은 저장 용량을 갖는다. 캐시 계층구조의 다양한 레벨들에서의 변경들은 캐시 일관성 정책(cache coherency policy)에 의해 관리(예를 들어, 조정)된다.
각각의 코어(1202)는 CPU, DSP, GPU 등, 또는 임의의 다른 타입의 하드웨어 회로로 지칭될 수 있다. 각각의 코어(1202)는 제어 유닛 회로(1214), 산술 및 논리(arithmetic and logic, AL) 회로(때때로 ALU라고 지칭됨)(1216), 복수의 레지스터들(1218), L1 캐시(1220), 및 예시적인 제2 버스(1222)를 포함한다. 다른 구조들이 존재할 수 있다. 예를 들어, 각각의 코어(1202)는 벡터 유닛 회로, SIMD(single instruction multiple data) 유닛 회로, LSU(load/store unit) 회로, 분기/점프 유닛 회로, FPU(floating-point unit) 회로 등을 포함할 수 있다. 제어 유닛 회로(1214)는 대응하는 코어(1202) 내에서의 데이터 이동을 제어(예를 들어, 조정)하도록 구조화되는 반도체 기반 회로들을 포함한다. AL 회로(1216)는 대응하는 코어(1202) 내의 데이터에 대한 하나 이상의 수학 및/또는 논리 연산을 수행하도록 구조화되는 반도체 기반 회로들을 포함한다. 일부 예들의 AL 회로(1216)는 정수 기반 연산들을 수행한다. 다른 예들에서, AL 회로(1216)는 또한 부동 소수점 연산들을 수행한다. 또 다른 예들에서, AL 회로(1216)는 정수 기반 연산들을 수행하는 제1 AL 회로 및 부동 소수점 연산들을 수행하는 제2 AL 회로를 포함할 수 있다. 일부 예들에서, AL 회로(1216)는 ALU(Arithmetic Logic Unit)라고 지칭될 수 있다. 레지스터들(1218)은 대응하는 코어(1202)의 AL 회로(1216)에 의해 수행되는 연산들 중 하나 이상 연산의 결과들과 같은 데이터 및/또는 명령어들을 저장하는 반도체 기반 구조체들이다. 예를 들어, 레지스터들(1218)은 벡터 레지스터(들), SIMD 레지스터(들), 범용 레지스터(들), 플래그 레지스터(들), 세그먼트 레지스터(들), 머신 특정 레지스터(들), 명령어 포인터 레지스터(들), 제어 레지스터(들), 디버그 레지스터(들), 메모리 관리 레지스터(들), 머신 체크 레지스터(들) 등을 포함할 수 있다. 레지스터들(1218)은 도 12에 도시된 바와 같이 뱅크(bank)로 배열될 수 있다. 대안적으로, 레지스터들(1218)은 액세스 시간을 단축하기 위해 코어(1202) 전체에 걸쳐 분산되는 것을 포함하는 임의의 다른 배열, 포맷, 또는 구조로 조직될 수 있다. 제2 버스(1222)는 I2C 버스, SPI 버스, PCI 버스, 또는 PCIe 버스 중 적어도 하나를 구현할 수 있다.
각각의 코어(1202) 및/또는, 보다 일반적으로, 마이크로프로세서(1200)는 앞서 도시되고 설명된 것들에 대한 부가적인 및/또는 대안적인 구조체들을 포함할 수 있다. 예를 들어, 하나 이상의 클록 회로, 하나 이상의 전원, 하나 이상의 전력 게이트, 하나 이상의 캐시 홈 에이전트(cache home agent, CHA), 하나 이상의 수렴된/공통 메시 스톱(converged/common mesh stop, CMS), 하나 이상의 시프터(예를 들어, 배럴 시프터(들)) 및/또는 다른 회로가 존재할 수 있다. 마이크로프로세서(1200)는 하나 이상의 패키지에 포함된 하나 이상의 집적 회로(IC)에 전술한 구조체들을 구현하기 위해 상호접속된 많은 트랜지스터를 포함하도록 제조된 반도체 디바이스이다. 프로세서 회로는 하나 이상의 가속기를 포함하고/하거나 이들과 협력할 수 있다. 일부 예들에서, 가속기들은 범용 프로세서에 의해 행해질 수 있는 것보다 더 빠르게 및/또는 효율적으로 특정 태스크들을 수행하기 위해 로직 회로에 의해 구현된다. 가속기들의 예들은 본 명세서에서 논의된 것들과 같은 ASIC들 및 FPGA들을 포함한다. GPU 또는 다른 프로그램가능 디바이스는 또한 가속기일 수 있다. 가속기들은 프로세서 회로에 온-보드(on-board)로, 프로세서 회로와 동일한 칩 패키지로 및/또는 프로세서 회로와 별개의 하나 이상의 패키지로 있을 수 있다.
도 13은 도 11의 프로세서 회로(1112)의 다른 예시적인 구현의 블록도이다. 이 예에서, 프로세서 회로(1112)는 FPGA 회로(1300)에 의해 구현된다. FPGA 회로(1300)는, 예를 들어, 대응하는 머신 판독가능 명령어들을 실행하는 도 12의 예시적인 마이크로프로세서(1200)에 의해 다른 방식으로 수행될 수 있는 동작들을 수행하는 데 사용될 수 있다. 그러나, 일단 구성되면, FPGA 회로(1300)는 머신 판독가능 명령어들을 하드웨어로 인스턴스화하고, 따라서, 대응하는 소프트웨어를 실행하는 범용 마이크로프로세서에 의해 수행될 수 있는 것보다 더 빠르게 동작들을 종종 실행할 수 있다.
더 구체적으로, (도 8, 도 9, 및 도 10의 흐름도들에 의해 표현된 머신 판독가능 명령어들의 일부 또는 전부를 실행하도록 프로그래밍될 수 있지만 일단 제조되면 상호접속들 및 로직 회로가 고정되는 범용 디바이스인) 전술한 도 12의 마이크로프로세서(1200)와 대조적으로, 도 13의 예의 FPGA 회로(1300)는, 예를 들어, 도 8, 도 9, 및 도 10의 흐름도들에 의해 표현된 머신 판독가능 명령어들의 일부 또는 전부를 인스턴스화하기 위해 제조 후에 상이한 방식들로 구성 및/또는 상호접속될 수 있는 상호접속들 및 로직 회로를 포함한다. 특히, FPGA(1300)는 로직 게이트들, 상호접속들, 및 스위치들의 어레이로서 생각될 수 있다. 스위치들은 (FPGA 회로(1300)가 재프로그래밍되지 않는 한 그리고 재프로그래밍될 때까지) 로직 게이트들이 상호접속들에 의해 상호접속되어 하나 이상의 전용 로직 회로를 효과적으로 형성하는 방법을 변경하도록 프로그래밍될 수 있다. 구성된 로직 회로들은 로직 게이트들이 상이한 방식들로 협력하여 입력 회로에 의해 수신된 데이터에 대해 상이한 동작들을 수행할 수 있게 한다. 이러한 동작들은 도 8, 도 9, 및 도 10의 흐름도들에 의해 표현된 소프트웨어의 일부 또는 전부에 대응할 수 있다. 이와 같이, FPGA 회로(1300)는 ASIC와 유사한 전용 방식으로 이들 소프트웨어 명령어들에 대응하는 동작들을 수행하기 위해 전용 로직 회로들로서 도 8, 도 9, 및 도 10의 흐름도들의 머신 판독가능 명령어들의 일부 또는 전부를 효과적으로 인스턴스화하도록 구조화될 수 있다. 따라서, FPGA 회로(1300)는 범용 마이크로프로세서가 이를 실행할 수 있는 것보다 빨리 도 8, 도 9, 및 도 10의 머신 판독가능 명령어들의 일부 또는 전부에 대응하는 동작들을 수행할 수 있다.
도 13의 예에서, FPGA 회로(1300)는 Verilog와 같은 하드웨어 기술 언어(HDL)에 의해 최종 사용자에 의해 프로그래밍(및/또는 1회 이상 재프로그래밍)되도록 구조화된다. 도 13의 FPGA 회로(1300)는 예시적인 구성 회로(1304) 및/또는 외부 하드웨어(예를 들어, 외부 하드웨어 회로)(1306)로/로부터 데이터를 획득 및/또는 출력하는 예시적인 입력/출력(I/O) 회로(1302)를 포함한다. 예를 들어, 구성 회로(1304)는 FPGA 회로(1300) 또는 그 일부(들)를 구성하기 위해 머신 판독가능 명령어들을 획득할 수 있는 인터페이스 회로를 구현할 수 있다. 일부 이러한 예들에서, 구성 회로(1304)는 사용자, 머신(예를 들어, 명령어들을 생성하기 위해 인공 지능/머신 러닝(AI/ML) 모델을 구현할 수 있는 하드웨어 회로(예를 들어, 프로그래밍된 또는 전용 회로)) 등으로부터 머신 판독가능 명령어들을 획득할 수 있다. 일부 예들에서, 외부 하드웨어(1306)는 도 12의 마이크로프로세서(1200)를 구현할 수 있다. FPGA 회로(1300)는 또한 예시적인 로직 게이트 회로(1308), 복수의 예시적인 구성가능한 상호접속들(1310), 및 예시적인 스토리지 회로(1312)의 어레이를 포함한다. 로직 게이트 회로(1308) 및 상호접속들(1310)은 도 8, 도 9, 및 도 10의 머신 판독가능 명령어들 중 적어도 일부에 대응할 수 있는 하나 이상의 동작 및/또는 다른 원하는 동작들을 인스턴스화하도록 구성가능하다. 도 13에 도시된 로직 게이트 회로(1308)는 그룹들 또는 블록들로 제조된다. 각각의 블록은 로직 회로들로 구성될 수 있는 반도체 기반 전기 구조체들을 포함한다. 일부 예들에서, 전기 구조체들은 로직 회로들에 대한 기본 빌딩 블록들을 제공하는 로직 게이트들(예를 들어, And 게이트들, Or 게이트들, Nor 게이트들 등)을 포함한다. 전기적으로 제어가능한 스위치들(예를 들어, 트랜지스터들)이 로직 게이트 회로(1308) 각각 내에 존재하여, 전기 구조체들 및/또는 로직 게이트들의 구성이 원하는 동작들을 수행하는 회로들을 형성할 수 있게 한다. 로직 게이트 회로(1308)는 룩업 테이블(LUT)들, 레지스터들(예를 들어, 플립플롭들 또는 래치들), 멀티플렉서들 등과 같은 다른 전기 구조체들을 포함할 수 있다.
예시된 예의 상호접속들(1310)은, 원하는 로직 회로들을 프로그래밍하기 위해 로직 게이트 회로(1308) 중 하나 이상 사이의 하나 이상의 접속을 활성화 또는 비활성화하도록 (예를 들어, HDL 명령어 언어를 사용하여) 프로그래밍함으로써 상태가 변경될 수 있는 전기적으로 제어가능한 스위치들(예를 들어, 트랜지스터들)을 포함할 수 있는 전도성 경로들, 트레이스들, 비아들 등이다.
예시된 예의 스토리지 회로(1312)는 대응하는 로직 게이트들에 의해 수행되는 연산들 중 하나 이상 연산의 결과(들)를 저장하도록 구조화된다. 스토리지 회로(1312)는 레지스터들 등에 의해 구현될 수 있다. 예시된 예에서, 스토리지 회로(1312)는 액세스를 용이하게 하고 실행 속도를 증가시키기 위해 로직 게이트 회로(1308) 사이에 분산된다.
도 13의 예시적인 FPGA 회로(1300)는 또한 예시적인 전용 연산 회로(Dedicated Operations Circuitry)(1314)를 포함한다. 이 예에서, 전용 연산 회로(1314)는 필드에서 그 기능들을 프로그래밍할 필요를 피하기 위해 흔히 사용되는 기능들을 구현하도록 호출될 수 있는 특수 목적 회로(1316)를 포함한다. 이러한 특수 목적 회로(1316)의 예들은 메모리(예를 들어, DRAM) 컨트롤러 회로, PCIe 컨트롤러 회로, 클록 회로, 송수신기 회로, 메모리, 및 곱셈기-누산기 회로를 포함한다. 다른 타입들의 특수 목적 회로가 존재할 수 있다. 일부 예들에서, FPGA 회로(1300)는 또한 예시적인 CPU(1320) 및/또는 예시적인 DSP(1322)와 같은 예시적인 범용 프로그램가능 회로(1318)를 포함할 수 있다. 다른 동작들을 수행하도록 프로그래밍될 수 있는 GPU, XPU 등과 같은 다른 범용 프로그램가능 회로(1318)가 추가적으로 또는 대안적으로 존재할 수 있다.
도 12 및 도 13이 도 11의 프로세서 회로(1112)의 2개의 예시적인 구현을 예시하지만, 많은 다른 접근법이 고려된다. 예를 들어, 위에 언급한 바와 같이, 현대의 FPGA 회로는 도 13의 예시적인 CPU(1320) 중 하나 이상과 같은 온-보드 CPU를 포함할 수 있다. 따라서, 도 11의 프로세서 회로(1112)는 도 12의 예시적인 마이크로프로세서(1200)와 도 13의 예시적인 FPGA 회로(1300)를 조합함으로써 추가로 구현될 수 있다. 일부 그러한 하이브리드 예들에서, 도 8, 도 9, 및 도 10의 흐름도들에 의해 표현되는 머신 판독가능 명령어들의 제1 부분은 도 12의 코어들(1202) 중 하나 이상에 의해 실행될 수 있고/있거나, 도 8, 도 9, 및 도 10의 흐름도들에 의해 표현되는 머신 판독가능 명령어들의 제2 부분은 도 13의 FPGA 회로(1300)에 의해 실행될 수 있고/있거나, 도 8, 도 9, 및 도 10의 흐름도들에 의해 표현되는 머신 판독가능 명령어들의 제3 부분은 ASIC에 의해 실행될 수 있다. 따라서, 도 3, 도 4, 및 도 5의 회로의 일부 또는 전부는 동일하거나 상이한 시간에 인스턴스화될 수 있다는 것을 이해해야 한다. 회로의 일부 또는 전부는, 예를 들어, 동시에 및/또는 직렬로 실행되는 하나 이상의 스레드로 인스턴스화될 수 있다. 또한, 일부 예들에서, 도 3, 도 4, 및 도 5의 회로의 일부 또는 전부는 마이크로프로세서 상에서 실행되는 하나 이상의 가상 머신 및/또는 컨테이너 내에 구현될 수 있다.
일부 예들에서, 도 11의 프로세서 회로(1112)는 하나 이상의 패키지 내에 있을 수 있다. 예를 들어, 도 12의 프로세서 회로(1200) 및/또는 도 13의 FPGA 회로(1300)는 하나 이상의 패키지 내에 있을 수 있다. 일부 예들에서, XPU는 하나 이상의 패키지 내에 있을 수 있는 도 11의 프로세서 회로(1112)에 의해 구현될 수 있다. 예를 들어, XPU는 하나의 패키지 내의 CPU, 다른 패키지 내의 DSP, 또 다른 패키지 내의 GPU, 및 계속해서 또 다른 패키지 내의 FPGA를 포함할 수 있다.
도 11의 예시적인 머신 판독가능 명령어들(1132)과 같은 소프트웨어를 제3자들에 의해 소유 및/또는 운영되는 하드웨어 디바이스들에 배포하는 예시적인 소프트웨어 배포 플랫폼(1405)을 예시하는 블록도가 도 14에 예시되어 있다. 예시적인 소프트웨어 배포 플랫폼(1405)은 소프트웨어를 저장하고 다른 컴퓨팅 디바이스들에 송신할 수 있는 임의의 컴퓨터 서버, 데이터 설비, 클라우드 서비스 등에 의해 구현될 수 있다. 제3자들은 소프트웨어 배포 플랫폼(1405)을 소유 및/또는 운영하는 엔티티의 고객들일 수 있다. 예를 들어, 소프트웨어 배포 플랫폼(1405)을 소유 및/또는 운영하는 엔티티는 도 11의 예시적인 머신 판독가능 명령어들(1132)과 같은 소프트웨어의 개발자, 판매자, 및/또는 라이센서일 수 있다. 제3자들은 사용 및/또는 재판매 및/또는 서브-라이센싱을 위해 소프트웨어를 구매 및/또는 라이센싱하는 소비자들, 사용자들, 소매업자들, OEM들 등일 수 있다. 예시된 예에서, 소프트웨어 배포 플랫폼(1405)은 하나 이상의 서버 및 하나 이상의 스토리지 디바이스를 포함한다. 스토리지 디바이스들은, 전술한 바와 같이, 도 8, 도 9, 및 도 10의 예시적인 머신 판독가능 명령어들(800, 900, 및 914)에 대응할 수 있는 머신 판독가능 명령어들(1132)을 저장한다. 예시적인 소프트웨어 배포 플랫폼(1405)의 하나 이상의 서버는 임의의 하나 이상의 인터넷 및/또는 위에서 설명된 예시적인 네트워크들(304) 중 임의의 것에 대응할 수 있는 네트워크(1410)와 통신한다. 일부 예들에서, 하나 이상의 서버는 요청들에 응답하여 상업적 트랜잭션의 일부로서 요청측에 소프트웨어를 송신한다. 소프트웨어의 전달, 판매, 및/또는 라이센스에 대한 지불은 소프트웨어 배포 플랫폼의 하나 이상의 서버에 의해 그리고/또는 제3자 지불 엔티티에 의해 핸들링될 수 있다. 서버들은 구매자들 및/또는 라이센서들이 소프트웨어 배포 플랫폼(1405)으로부터 머신 판독가능 명령어들(1132)을 다운로드할 수 있게 한다. 예를 들어, 도 8, 도 9, 및 도 10의 예시적인 머신 판독가능 명령어들(800, 900, 및 914)에 대응할 수 있는 소프트웨어는, 도 3, 도 4, 및/또는 도 5의 사용자 디바이스(302) 및/또는 사용자 디바이스(들)(306)를 구현하기 위해 머신 판독가능 명령어들(1132)을 실행하는 예시적인 프로세서 플랫폼(1100)에 다운로드될 수 있다. 일부 예에서, 소프트웨어 배포 플랫폼(1405)의 하나 이상의 서버는 소프트웨어(예를 들어, 도 11의 예시적인 머신 판독가능 명령어들(1132))에 업데이트들을 주기적으로 제공, 송신, 및/또는 강제(force)하여, 개선들, 패치들, 업데이트들 등이 최종 사용자 디바이스들에서 소프트웨어에 배포되고 적용되는 것을 보장한다.
전술한 것으로부터, 영상 회의 세션(들) 동안 생성된 비디오 프레임 픽셀 데이터를 전경 경계 영역(들) 및 배경 경계 영역(들)으로 세그먼트화하여 비디오 프레임 픽셀 데이터의 가상 타일(들)(예를 들어, 영상 회의 세션(들)의 대상(들)을 포함하는 비디오 프레임 픽셀 데이터의 부분(들))을 결정하는 예시적인 시스템들, 방법들, 장치들, 및 제조 물품들이 개시되었다는 것을 이해할 것이다. 개시된 시스템들, 방법들, 장치들, 및 제조 물품들은, 가상 타일(들)에 포함되지 않은 비디오 프레임 픽셀 데이터의 부분들을 처리 및/또는 전송하지 않고, 사용자 디바이스 상에서 가상 타일(들)을 인코딩(예를 들어, 처리)하고, 네트워크를 통해 인코딩된 가상 타일(들)을 송신(예를 들어, 전송)하고, 하나 이상의 다른 사용자 디바이스 상에서 가상 타일(들)을 디코딩(예를 들어, 처리)함으로써 컴퓨팅 디바이스를 사용하는 효율을 개선하고, 그에 의해 메모리 액세스들을 감소시키고/시키거나 처리 사이클들의 사용을 감소시킨다. 개시된 시스템들, 방법들, 장치들, 및 제조 물품들은 그에 따라 컴퓨터 또는 다른 전자 및/또는 머신적 디바이스와 같은 머신의 동작에서의 하나 이상의 개선(들)에 관한 것이다.
영상 회의 세션(들) 동안 생성된 비디오 프레임 픽셀 데이터를 전경 경계 영역(들) 및 배경 경계 영역(들)으로 세그먼트화하고, 비디오 프레임 픽셀 데이터의 가상 타일(들)(예를 들어, 영상 회의 세션(들)의 대상(들)을 포함하는 비디오 프레임 픽셀 데이터의 부분(들))을 결정하고, 비디오 프레임 픽셀 데이터의 가상 타일(들)을 처리하는 예시적인 방법들, 장치들, 시스템들, 및 제조 물품들이 본 명세서에 개시된다. 추가의 예들 및 이들의 조합들은 다음을 포함한다:
예 1은 비디오 프레임 픽셀 데이터를 인코딩하는 장치를 포함하고, 이 장치는 비디오 프레임 픽셀 데이터를 인코딩하는 인터페이스 회로, 및 프로세서 회로를 포함하고, 상기 프로세서 회로는 중앙 처리 유닛, 그래픽 처리 유닛, 또는 디지털 신호 프로세서 중 적어도 하나 - 상기 중앙 처리 유닛, 상기 그래픽 처리 유닛, 또는 상기 디지털 신호 프로세서 중 상기 적어도 하나는 상기 프로세서 회로 내의 데이터 이동을 제어하는 제어 회로, 명령어들에 대응하는 하나 이상의 제1 연산을 수행하는 산술 및 논리 회로, 및 상기 하나 이상의 제1 연산의 결과를 저장하는 하나 이상의 레지스터를 갖고, 상기 명령어들은 상기 장치 내에 있음 - , 필드 프로그램가능 게이트 어레이(Field Programmable Gate Array, FPGA) - 상기 FPGA는 로직 게이트 회로, 복수의 구성가능한 상호접속들, 및 스토리지 회로를 포함하고, 상기 로직 게이트 회로 및 상호접속들은 하나 이상의 제2 연산을 수행하고, 상기 스토리지 회로는 상기 하나 이상의 제2 연산의 결과를 저장함 - , 또는 하나 이상의 제3 연산을 수행하는 로직 게이트 회로를 포함하는 주문형 집적 회로(Application Specific Integrate Circuitry, ASIC) 중 하나 이상을 포함하고, 상기 프로세서 회로는 상기 제1 연산들, 상기 제2 연산들, 또는 상기 제3 연산들 중 적어도 하나를 수행하여, 제1 비디오 프레임 픽셀 데이터의 세그먼트화 데이터를 생성하는 비디오 프레임 세그먼트화기 회로 - 상기 세그먼트화 데이터는 전경 영역 및 배경 영역에 대응하는 메타데이터를 포함하고, 상기 전경 영역은 상기 제1 비디오 프레임 픽셀 데이터에 대응함 - , 및 상기 세그먼트화 데이터에 기초하여 제1 전경 경계 영역 및 제1 배경 경계 영역을 생성하고, 상기 제1 비디오 프레임 픽셀 데이터의 제1 가상 타일을 결정하고 - 상기 제1 가상 타일은 상기 제1 전경 경계 영역에 위치함 - , 상기 제1 배경 경계 영역을 인코딩하지 않고 상기 제1 가상 타일을 비디오 데이터 비트스트림으로 인코딩하고, 네트워크를 통해 송신하도록 상기 비디오 데이터 비트스트림을 제공하는 비디오 인코더 회로를 인스턴스화한다.
예 2는 예 1의 장치를 포함하며, 상기 비디오 인코더 회로는 주석부기 영역 보충 향상 정보(annotated region supplemental enhancement information) 메시지를 생성하고, 상기 주석부기 영역 보충 향상 정보 메시지는 상기 제1 전경 경계 영역 및 상기 제1 배경 경계 영역에 대응하는 크기 데이터, 위치 데이터, 또는 라벨 데이터 중 적어도 하나를 포함한다.
예 3은 예 1의 장치를 포함하며, 상기 프로세서 회로는 상기 제1 연산들, 상기 제2 연산들, 또는 상기 제3 연산들 중 상기 적어도 하나를 수행하여 비디오 디코더 회로 및 비디오 디스플레이 컨트롤러 회로를 인스턴스화하고, 상기 비디오 디코더 회로는, 상기 네트워크를 통해 수신된 주석부기 영역 보충 향상 정보(ARSEI) 메시지에 기초하여 제2 전경 경계 영역 및 제2 배경 경계 영역을 작성하고, 상기 제2 비디오 프레임 픽셀 데이터의 제2 가상 타일을 결정하고 - 상기 제2 가상 타일은 상기 제2 전경 경계 영역에 위치함 - , 상기 제2 가상 타일을 디코딩하며, 상기 비디오 디스플레이 컨트롤러 회로는 상기 제2 가상 타일 및 가상 배경에 대응하는 비디오 데이터를 생성하고, 상기 제2 가상 타일 및 상기 가상 배경은 스크린 상에 디스플레이된다.
예 4는 예 3의 장치를 포함하며, 상기 비디오 디코더 회로는 상기 디코딩된 제2 가상 타일을 제2 메모리 내의 버퍼 풀에 저장한다.
예 5는 예 1의 장치를 포함하며, 상기 비디오 인코더 회로는 주석부기 영역 보충 향상 정보 메시지를 생성하고, 상기 주석부기 영역 보충 향상 정보 메시지는 상기 제1 전경 경계 영역 및 제3 배경 경계 영역에 대응하는 크기 데이터, 위치 데이터, 또는 라벨 데이터 중 적어도 하나를 포함하고, 상기 제3 배경 경계 영역은 상기 전경 영역의 일부와 중첩하는 상기 배경 영역의 일부에 대응한다.
예 6은 명령어들을 포함한 적어도 하나의 비일시적 컴퓨터 판독가능 저장 매체를 포함하며, 상기 명령어들은, 실행될 때, 프로세서 회로로 하여금, 적어도 제1 비디오 프레임 픽셀 데이터의 세그먼트화 데이터를 생성하게 하고 - 상기 세그먼트화 데이터는 전경 영역 및 배경 영역에 대응하는 메타데이터를 포함하고, 상기 전경 영역은 상기 제1 비디오 프레임 픽셀 데이터에 대응함 - , 상기 세그먼트화 데이터에 기초하여 제1 전경 경계 영역 및 제1 배경 경계 영역을 생성하게 하고, 상기 제1 비디오 프레임 픽셀 데이터의 제1 가상 타일을 결정하게 하고 - 상기 제1 가상 타일은 상기 제1 전경 경계 영역에 위치함 - , 상기 제1 배경 경계 영역을 인코딩하지 않고 상기 제1 가상 타일을 비디오 데이터 비트스트림으로 인코딩하게 하고, 네트워크를 통해 송신하도록 상기 비디오 데이터 비트스트림을 제공하게 한다.
예 7은 예 6의 컴퓨터 판독가능 저장 매체를 포함하며, 상기 명령어들은, 실행될 때, 상기 프로세서 회로로 하여금, 주석부기 영역 보충 향상 정보 메시지를 생성하게 하고, 상기 주석부기 영역 보충 향상 정보 메시지는 상기 제1 전경 경계 영역 및 상기 제1 배경 경계 영역에 대응하는 크기 데이터, 위치 데이터, 또는 라벨 데이터 중 적어도 하나를 포함한다.
예 8은 예 6의 컴퓨터 판독가능 저장 매체를 포함하며, 상기 명령어들은, 실행될 때, 상기 프로세서 회로로 하여금, 제2 비디오 인코더 회로로부터 수신된 주석부기 영역 보충 향상 정보(ARSEI) 메시지에 기초하여 제2 전경 경계 영역 및 제2 배경 경계 영역을 작성하게 하고, 상기 제2 비디오 프레임 픽셀 데이터의 제2 가상 타일을 결정하게 하고 - 상기 제2 가상 타일은 상기 제2 전경 경계 영역에 위치함 - , 상기 제2 가상 타일을 디코딩하게 하고, 상기 제2 가상 타일 및 가상 배경에 대응하는 비디오 데이터를 생성하게 하며, 상기 제2 가상 타일 및 상기 가상 배경은 스크린 상에 디스플레이된다.
예 9는 예 8의 컴퓨터 판독가능 저장 매체를 포함하며, 상기 명령어들은, 실행될 때, 상기 프로세서 회로로 하여금, 상기 디코딩된 제2 가상 타일을 제2 메모리 내의 버퍼 풀에 저장하게 한다.
예 10은 예 6의 컴퓨터 판독가능 저장 매체를 포함하며, 상기 명령어들은, 실행될 때, 상기 프로세서 회로로 하여금, 주석부기 영역 보충 향상 정보 메시지를 생성하게 하고, 상기 주석부기 영역 보충 향상 정보 메시지는 상기 제1 전경 경계 영역 및 제3 배경 경계 영역에 대응하는 크기 데이터, 위치 데이터, 또는 라벨 데이터 중 적어도 하나를 포함하고, 상기 제3 배경 경계 영역은 상기 전경 영역의 일부와 중첩하는 상기 배경 영역의 일부에 대응한다.
예 11은 장치를 포함하며, 이 장치는, 제1 비디오 프레임 픽셀 데이터의 세그먼트화 데이터를 생성하는 수단 - 상기 세그먼트화 데이터는 전경 영역 및 배경 영역에 대응하는 메타데이터를 포함하고, 상기 전경 영역은 상기 제1 비디오 프레임 픽셀 데이터에 대응함 - , 및 상기 제1 비디오 프레임 픽셀 데이터의 제1 가상 타일을 인코딩하는 수단 - 상기 제1 가상 타일 인코딩 수단은, 상기 세그먼트화 데이터에 기초하여 제1 전경 경계 영역 및 제1 배경 경계 영역을 생성하고, 상기 제1 비디오 프레임 픽셀 데이터의 상기 제1 가상 타일을 결정하고 - 상기 제1 가상 타일은 상기 제1 전경 경계 영역에 위치함 - , 상기 제1 배경 경계 영역을 인코딩하지 않고 상기 제1 가상 타일을 비디오 데이터 비트스트림으로 인코딩함 - , 및 네트워크를 통해 상기 비디오 데이터 비트스트림을 송신하는 수단을 포함한다.
예 12는 예 11의 장치를 포함하며, 상기 제1 가상 타일 인코딩 수단은 주석부기 영역 보충 향상 정보 메시지를 생성하고, 상기 주석부기 영역 보충 향상 정보 메시지는 상기 제1 전경 경계 영역 및 상기 제1 배경 경계 영역에 대응하는 크기 데이터, 위치 데이터, 또는 라벨 데이터 중 적어도 하나를 포함한다.
예 13은 예 11의 장치를 포함하며, 상기 세그먼트화 데이터 생성 수단은, 제2 비디오 인코더 회로로부터 수신된 주석부기 영역 보충 향상 정보(ARSEI) 메시지에 기초하여 제2 전경 경계 영역 및 제2 배경 경계 영역을 작성하고, 상기 제2 비디오 프레임 픽셀 데이터의 제2 가상 타일을 결정하고 - 상기 제2 가상 타일은 상기 제2 전경 경계 영역에 위치함 - , 상기 제2 가상 타일을 디코딩하며, 상기 장치는 상기 제2 가상 타일 및 가상 배경에 대응하는 비디오 데이터를 생성하는 수단을 추가로 포함하고, 상기 제2 가상 타일 및 상기 가상 배경은 디스플레이 스크린 상에 디스플레이된다.
예 14는 예 13의 장치를 포함하며, 상기 세그먼트화 데이터 생성 수단은 상기 디코딩된 제2 가상 타일을 제2 메모리 내의 버퍼 풀에 저장한다.
예 15는 예 11의 장치를 포함하며, 상기 제1 가상 타일 인코딩 수단은 주석부기 영역 보충 향상 정보 메시지를 생성하고, 상기 주석부기 영역 보충 향상 정보 메시지는 상기 제1 전경 경계 영역 및 제3 배경 경계 영역에 대응하는 크기 데이터, 위치 데이터, 또는 라벨 데이터 중 적어도 하나를 포함하고, 상기 제3 배경 경계 영역은 상기 전경 영역의 일부와 중첩하는 상기 배경 영역의 일부에 대응한다.
예 16은 방법을 포함하고, 이 방법은, 프로세서로 명령어를 실행함으로써, 제1 비디오 프레임 픽셀 데이터의 세그먼트화 데이터를 생성하는 단계 - 상기 세그먼트화 데이터는 전경 영역 및 배경 영역에 대응하는 메타데이터를 포함하고, 상기 전경 영역은 상기 제1 비디오 프레임 픽셀 데이터에 대응함 - , 상기 프로세서로 명령어를 실행함으로써, 상기 세그먼트화 데이터에 기초하여 제1 전경 경계 영역 및 제1 배경 경계 영역을 생성하는 단계, 상기 프로세서로 명령어를 실행함으로써, 상기 제1 비디오 프레임 픽셀 데이터의 제1 가상 타일을 결정하는 단계 - 상기 제1 가상 타일은 상기 제1 전경 경계 영역에 위치함 - , 상기 프로세서로 명령어를 실행함으로써, 상기 제1 배경 경계 영역을 인코딩하지 않고 상기 제1 가상 타일을 비디오 데이터 비트스트림으로 인코딩하는 단계, 및 상기 프로세서로 명령어를 실행함으로써, 네트워크를 통해 상기 비디오 데이터 비트스트림을 송신하는 단계를 포함한다.
예 17은 예 16의 방법을 포함하며, 상기 제1 전경 경계 영역 및 상기 제1 배경 경계 영역을 생성하는 단계는 주석부기 영역 보충 향상 정보 메시지를 생성하는 단계를 포함하고, 상기 주석부기 영역 보충 향상 정보 메시지는 상기 제1 전경 경계 영역 및 상기 제1 배경 경계 영역에 대응하는 크기 데이터, 위치 데이터, 또는 라벨 데이터 중 적어도 하나를 포함한다.
예 18은 예 16의 방법을 포함하며, 상기 제1 비디오 프레임 픽셀 데이터의 세그먼트화 데이터를 생성하는 단계는, 제2 비디오 인코더 회로로부터 수신된 주석부기 영역 보충 향상 정보(ARSEI) 메시지에 기초하여 제2 전경 경계 영역 및 제2 배경 경계 영역을 작성하는 단계, 상기 제2 비디오 프레임 픽셀 데이터의 제2 가상 타일을 결정하는 단계 - 상기 제2 가상 타일은 상기 제2 전경 경계 영역에 위치함 - , 상기 제2 가상 타일을 디코딩하는 단계, 및 상기 제2 가상 타일 및 가상 배경에 대응하는 비디오 데이터를 생성하는 단계 - 상기 제2 가상 타일 및 상기 가상 배경은 디스플레이 스크린 상에 디스플레이됨 - 를 포함한다.
예 19는 예 18의 방법을 포함하며, 상기 제1 비디오 프레임 픽셀 데이터의 세그먼트화 데이터를 생성하는 단계는 상기 디코딩된 제2 가상 타일을 제2 메모리 내의 버퍼 풀에 저장하는 단계를 포함한다.
예 20은 예 16의 방법을 포함하며, 상기 제1 전경 경계 영역 및 상기 제1 배경 경계 영역을 생성하는 단계는 주석부기 영역 보충 향상 정보 메시지를 생성하는 단계를 포함하고, 상기 주석부기 영역 보충 향상 정보 메시지는 상기 제1 전경 경계 영역 및 제3 배경 경계 영역에 대응하는 크기 데이터, 위치 데이터, 또는 라벨 데이터 중 적어도 하나를 포함하고, 상기 제3 배경 경계 영역은 상기 전경 영역의 일부와 중첩하는 상기 배경 영역의 일부에 대응한다.
다음의 청구항들은 이로써 이 참조에 의해 이 상세한 설명에 포함된다. 특정 예시적인 시스템들, 방법들, 장치들, 및 제조 물품들이 본 명세서에서 개시되었지만, 본 특허의 적용 범위는 이에 제한되지 않는다. 반대로, 본 특허는 명백히 본 특허의 청구항들의 범위 내에 있는 모든 시스템들, 방법들, 장치들, 및 제조 물품들을 포함한다.

Claims (20)

  1. 비디오 프레임 픽셀 데이터를 인코딩하는 장치로서,
    비디오 프레임 픽셀 데이터를 인코딩하는 인터페이스 회로; 및
    프로세서 회로를 포함하고,
    상기 프로세서 회로는:
    중앙 처리 유닛, 그래픽 처리 유닛, 또는 디지털 신호 프로세서 중 적어도 하나 - 상기 중앙 처리 유닛, 상기 그래픽 처리 유닛, 또는 상기 디지털 신호 프로세서 중 상기 적어도 하나는 상기 프로세서 회로 내의 데이터 이동을 제어하는 제어 회로, 명령어들에 대응하는 하나 이상의 제1 연산을 수행하는 산술 및 논리 회로, 및 상기 하나 이상의 제1 연산의 결과를 저장하는 하나 이상의 레지스터를 갖고, 상기 명령어들은 상기 장치 내에 있음 - ;
    필드 프로그램가능 게이트 어레이(Field Programmable Gate Array, FPGA) - 상기 FPGA는 로직 게이트 회로, 복수의 구성가능한 상호접속들, 및 스토리지 회로를 포함하고, 상기 로직 게이트 회로 및 상호접속들은 하나 이상의 제2 연산을 수행하고, 상기 스토리지 회로는 상기 하나 이상의 제2 연산의 결과를 저장함 - ; 또는
    하나 이상의 제3 연산을 수행하는 로직 게이트 회로를 포함하는 주문형 집적 회로(Application Specific Integrate Circuitry, ASIC) 중 하나 이상을 포함하고;
    상기 프로세서 회로는 상기 제1 연산들, 상기 제2 연산들, 또는 상기 제3 연산들 중 적어도 하나를 수행하여:
    제1 비디오 프레임 픽셀 데이터의 세그먼트화 데이터(segmentation data)를 생성하는 비디오 프레임 세그먼트화기 회로(video frame segmenter circuitry) - 상기 세그먼트화 데이터는 전경 영역 및 배경 영역에 대응하는 메타데이터를 포함하고, 상기 전경 영역은 상기 제1 비디오 프레임 픽셀 데이터에 대응함 - ; 및
    상기 세그먼트화 데이터에 기초하여 제1 전경 경계 영역 및 제1 배경 경계 영역을 생성하고;
    상기 제1 비디오 프레임 픽셀 데이터의 제1 가상 타일을 결정하고 - 상기 제1 가상 타일은 상기 제1 전경 경계 영역에 위치함 - ;
    상기 제1 배경 경계 영역을 인코딩하지 않고 상기 제1 가상 타일을 비디오 데이터 비트스트림으로 인코딩하고;
    네트워크를 통해 송신하도록 상기 비디오 데이터 비트스트림을 제공하는 비디오 인코더 회로
    를 인스턴스화하는, 장치.
  2. 제1항에 있어서, 상기 비디오 인코더 회로는 주석부기 영역 보충 향상 정보(annotated region supplemental enhancement information) 메시지를 생성하고, 상기 주석부기 영역 보충 향상 정보 메시지는 상기 제1 전경 경계 영역 및 상기 제1 배경 경계 영역에 대응하는 크기 데이터, 위치 데이터, 또는 라벨 데이터 중 적어도 하나를 포함하는, 장치.
  3. 제1항 또는 제2항에 있어서, 상기 프로세서 회로는 상기 제1 연산들, 상기 제2 연산들, 또는 상기 제3 연산들 중 상기 적어도 하나를 수행하여 비디오 디코더 회로 및 비디오 디스플레이 컨트롤러 회로를 인스턴스화하고, 상기 비디오 디코더 회로는:
    상기 네트워크를 통해 수신된 주석부기 영역 보충 향상 정보(annotated region supplemental enhancement information, ARSEI) 메시지에 기초하여 제2 전경 경계 영역 및 제2 배경 경계 영역을 작성하고;
    상기 제2 비디오 프레임 픽셀 데이터의 제2 가상 타일을 결정하고 - 상기 제2 가상 타일은 상기 제2 전경 경계 영역에 위치함 - ;
    상기 제2 가상 타일을 디코딩하며;
    상기 비디오 디스플레이 컨트롤러 회로는 상기 제2 가상 타일 및 가상 배경에 대응하는 비디오 데이터를 생성하고, 상기 제2 가상 타일 및 상기 가상 배경은 스크린 상에 디스플레이되는, 장치.
  4. 제3항에 있어서, 상기 비디오 디코더 회로는 상기 디코딩된 제2 가상 타일을 제2 메모리 내의 버퍼 풀에 저장하는, 장치.
  5. 제1항에 있어서, 상기 비디오 인코더 회로는 주석부기 영역 보충 향상 정보 메시지를 생성하고, 상기 주석부기 영역 보충 향상 정보 메시지는 상기 제1 전경 경계 영역 및 제3 배경 경계 영역에 대응하는 크기 데이터, 위치 데이터, 또는 라벨 데이터 중 적어도 하나를 포함하고, 상기 제3 배경 경계 영역은 상기 전경 영역의 일부와 중첩하는 상기 배경 영역의 일부에 대응하는, 장치.
  6. 명령어들을 포함한 컴퓨터 판독가능 매체로서, 상기 명령어들은, 실행될 때, 프로세서 회로로 하여금, 적어도:
    제1 비디오 프레임 픽셀 데이터의 세그먼트화 데이터를 생성하게 하고 - 상기 세그먼트화 데이터는 전경 영역 및 배경 영역에 대응하는 메타데이터를 포함하고, 상기 전경 영역은 상기 제1 비디오 프레임 픽셀 데이터에 대응함 - ;
    상기 세그먼트화 데이터에 기초하여 제1 전경 경계 영역 및 제1 배경 경계 영역을 생성하게 하고;
    상기 제1 비디오 프레임 픽셀 데이터의 제1 가상 타일을 결정하게 하고 - 상기 제1 가상 타일은 상기 제1 전경 경계 영역에 위치함 - ;
    상기 제1 배경 경계 영역을 인코딩하지 않고 상기 제1 가상 타일을 비디오 데이터 비트스트림으로 인코딩하게 하고;
    네트워크를 통해 송신하도록 상기 비디오 데이터 비트스트림을 제공하게 하는, 컴퓨터 판독가능 매체.
  7. 제6항에 있어서, 상기 명령어들은, 실행될 때, 상기 프로세서 회로로 하여금, 주석부기 영역 보충 향상 정보 메시지를 생성하게 하고, 상기 주석부기 영역 보충 향상 정보 메시지는 상기 제1 전경 경계 영역 및 상기 제1 배경 경계 영역에 대응하는 크기 데이터, 위치 데이터, 또는 라벨 데이터 중 적어도 하나를 포함하는, 컴퓨터 판독가능 매체.
  8. 제6항 또는 제7항에 있어서, 상기 명령어들은, 실행될 때, 상기 프로세서 회로로 하여금,
    제2 비디오 인코더 회로로부터 수신된 주석부기 영역 보충 향상 정보(ARSEI) 메시지에 기초하여 제2 전경 경계 영역 및 제2 배경 경계 영역을 작성하게 하고;
    상기 제2 비디오 프레임 픽셀 데이터의 제2 가상 타일을 결정하게 하고 - 상기 제2 가상 타일은 상기 제2 전경 경계 영역에 위치함 - ;
    상기 제2 가상 타일을 디코딩하게 하고;
    상기 제2 가상 타일 및 가상 배경에 대응하는 비디오 데이터를 생성하게 하며, 상기 제2 가상 타일 및 상기 가상 배경은 스크린 상에 디스플레이되는, 컴퓨터 판독가능 매체.
  9. 제8항에 있어서, 상기 명령어들은, 실행될 때, 상기 프로세서 회로로 하여금, 상기 디코딩된 제2 가상 타일을 제2 메모리 내의 버퍼 풀에 저장하게 하는, 컴퓨터 판독가능 매체.
  10. 제6항에 있어서, 상기 명령어들은, 실행될 때, 상기 프로세서 회로로 하여금, 주석부기 영역 보충 향상 정보 메시지를 생성하게 하고, 상기 주석부기 영역 보충 향상 정보 메시지는 상기 제1 전경 경계 영역 및 제3 배경 경계 영역에 대응하는 크기 데이터, 위치 데이터, 또는 라벨 데이터 중 적어도 하나를 포함하고, 상기 제3 배경 경계 영역은 상기 전경 영역의 일부와 중첩하는 상기 배경 영역의 일부에 대응하는, 컴퓨터 판독가능 매체.
  11. 장치로서,
    제1 비디오 프레임 픽셀 데이터의 세그먼트화 데이터를 생성하는 수단 - 상기 세그먼트화 데이터는 전경 영역 및 배경 영역에 대응하는 메타데이터를 포함하고, 상기 전경 영역은 상기 제1 비디오 프레임 픽셀 데이터에 대응함 - ; 및
    상기 제1 비디오 프레임 픽셀 데이터의 제1 가상 타일을 인코딩하는 수단 - 상기 제1 가상 타일 인코딩 수단은,
    상기 세그먼트화 데이터에 기초하여 제1 전경 경계 영역 및 제1 배경 경계 영역을 생성하고,
    상기 제1 비디오 프레임 픽셀 데이터의 상기 제1 가상 타일을 결정하고 - 상기 제1 가상 타일은 상기 제1 전경 경계 영역에 위치함 - ,
    상기 제1 배경 경계 영역을 인코딩하지 않고 상기 제1 가상 타일을 비디오 데이터 비트스트림으로 인코딩함 - ; 및
    네트워크를 통해 상기 비디오 데이터 비트스트림을 송신하는 수단
    을 포함하는, 장치.
  12. 제11항에 있어서, 상기 제1 가상 타일 인코딩 수단은 주석부기 영역 보충 향상 정보 메시지를 생성하고, 상기 주석부기 영역 보충 향상 정보 메시지는 상기 제1 전경 경계 영역 및 상기 제1 배경 경계 영역에 대응하는 크기 데이터, 위치 데이터, 또는 라벨 데이터 중 적어도 하나를 포함하는, 장치.
  13. 제11항 또는 제12항에 있어서, 상기 세그먼트화 데이터 생성 수단은,
    제2 비디오 인코더 회로로부터 수신된 주석부기 영역 보충 향상 정보(ARSEI) 메시지에 기초하여 제2 전경 경계 영역 및 제2 배경 경계 영역을 작성하고;
    상기 제2 비디오 프레임 픽셀 데이터의 제2 가상 타일을 결정하고 - 상기 제2 가상 타일은 상기 제2 전경 경계 영역에 위치함 - ;
    상기 제2 가상 타일을 디코딩하며;
    상기 장치는 상기 제2 가상 타일 및 가상 배경에 대응하는 비디오 데이터를 생성하는 수단을 추가로 포함하고, 상기 제2 가상 타일 및 상기 가상 배경은 디스플레이 스크린 상에 디스플레이되는, 장치.
  14. 제13항에 있어서, 상기 세그먼트화 데이터 생성 수단은 상기 디코딩된 제2 가상 타일을 제2 메모리 내의 버퍼 풀에 저장하는, 장치.
  15. 제11항에 있어서, 상기 제1 가상 타일 인코딩 수단은 주석부기 영역 보충 향상 정보 메시지를 생성하고, 상기 주석부기 영역 보충 향상 정보 메시지는 상기 제1 전경 경계 영역 및 제3 배경 경계 영역에 대응하는 크기 데이터, 위치 데이터, 또는 라벨 데이터 중 적어도 하나를 포함하고, 상기 제3 배경 경계 영역은 상기 전경 영역의 일부와 중첩하는 상기 배경 영역의 일부에 대응하는, 장치.
  16. 방법으로서,
    프로세서로 명령어를 실행함으로써, 제1 비디오 프레임 픽셀 데이터의 세그먼트화 데이터를 생성하는 단계 - 상기 세그먼트화 데이터는 전경 영역 및 배경 영역에 대응하는 메타데이터를 포함하고, 상기 전경 영역은 상기 제1 비디오 프레임 픽셀 데이터에 대응함 - ;
    상기 프로세서로 명령어를 실행함으로써, 상기 세그먼트화 데이터에 기초하여 제1 전경 경계 영역 및 제1 배경 경계 영역을 생성하는 단계;
    상기 프로세서로 명령어를 실행함으로써, 상기 제1 비디오 프레임 픽셀 데이터의 제1 가상 타일을 결정하는 단계 - 상기 제1 가상 타일은 상기 제1 전경 경계 영역에 위치함 - ;
    상기 프로세서로 명령어를 실행함으로써, 상기 제1 배경 경계 영역을 인코딩하지 않고 상기 제1 가상 타일을 비디오 데이터 비트스트림으로 인코딩하는 단계; 및
    상기 프로세서로 명령어를 실행함으로써, 네트워크를 통해 상기 비디오 데이터 비트스트림을 송신하는 단계
    를 포함하는, 방법.
  17. 제16항에 있어서, 상기 제1 전경 경계 영역 및 상기 제1 배경 경계 영역을 생성하는 단계는 주석부기 영역 보충 향상 정보 메시지를 생성하는 단계를 포함하고, 상기 주석부기 영역 보충 향상 정보 메시지는 상기 제1 전경 경계 영역 및 상기 제1 배경 경계 영역에 대응하는 크기 데이터, 위치 데이터, 또는 라벨 데이터 중 적어도 하나를 포함하는, 방법.
  18. 제16항 또는 제17항에 있어서, 상기 제1 비디오 프레임 픽셀 데이터의 세그먼트화 데이터를 생성하는 단계는,
    제2 비디오 인코더 회로로부터 수신된 주석부기 영역 보충 향상 정보(ARSEI) 메시지에 기초하여 제2 전경 경계 영역 및 제2 배경 경계 영역을 작성하는 단계;
    상기 제2 비디오 프레임 픽셀 데이터의 제2 가상 타일을 결정하는 단계 - 상기 제2 가상 타일은 상기 제2 전경 경계 영역에 위치함 - ;
    상기 제2 가상 타일을 디코딩하는 단계; 및
    상기 제2 가상 타일 및 가상 배경에 대응하는 비디오 데이터를 생성하는 단계 - 상기 제2 가상 타일 및 상기 가상 배경은 디스플레이 스크린 상에 디스플레이됨 - 를 포함하는, 방법.
  19. 제18항에 있어서, 상기 제1 비디오 프레임 픽셀 데이터의 세그먼트화 데이터를 생성하는 단계는 상기 디코딩된 제2 가상 타일을 제2 메모리 내의 버퍼 풀에 저장하는 단계를 포함하는, 방법.
  20. 제16항에 있어서, 상기 제1 전경 경계 영역 및 상기 제1 배경 경계 영역을 생성하는 단계는 주석부기 영역 보충 향상 정보 메시지를 생성하는 단계를 포함하고, 상기 주석부기 영역 보충 향상 정보 메시지는 상기 제1 전경 경계 영역 및 제3 배경 경계 영역에 대응하는 크기 데이터, 위치 데이터, 또는 라벨 데이터 중 적어도 하나를 포함하고, 상기 제3 배경 경계 영역은 상기 전경 영역의 일부와 중첩하는 상기 배경 영역의 일부에 대응하는, 방법.
KR1020220154404A 2021-12-17 2022-11-17 인공 지능 비디오 프레임 세그먼트화를 사용하여 비디오 프레임 픽셀 데이터를 처리하는 방법 및 장치 KR20230092739A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/555,119 2021-12-17
US17/555,119 US20220109838A1 (en) 2021-12-17 2021-12-17 Methods and apparatus to process video frame pixel data using artificial intelligence video frame segmentation

Publications (1)

Publication Number Publication Date
KR20230092739A true KR20230092739A (ko) 2023-06-26

Family

ID=80931853

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220154404A KR20230092739A (ko) 2021-12-17 2022-11-17 인공 지능 비디오 프레임 세그먼트화를 사용하여 비디오 프레임 픽셀 데이터를 처리하는 방법 및 장치

Country Status (4)

Country Link
US (1) US20220109838A1 (ko)
EP (1) EP4199505A1 (ko)
KR (1) KR20230092739A (ko)
CN (1) CN116405708A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115695889A (zh) * 2022-09-30 2023-02-03 聚好看科技股份有限公司 显示设备及悬浮窗显示方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100516638B1 (ko) * 2001-09-26 2005-09-22 엘지전자 주식회사 화상 통신 시스템
KR100643454B1 (ko) * 2001-11-17 2006-11-10 엘지전자 주식회사 영상 데이터 전송 제어방법
WO2005104552A1 (ja) * 2004-04-23 2005-11-03 Sumitomo Electric Industries, Ltd. 動画像データの符号化方法、復号化方法、これらを実行する端末装置、及び双方向対話型システム
US7676081B2 (en) * 2005-06-17 2010-03-09 Microsoft Corporation Image segmentation of foreground from background layers
US20220303555A1 (en) * 2020-06-10 2022-09-22 Plantronics, Inc. Combining high-quality foreground with enhanced low-quality background

Also Published As

Publication number Publication date
US20220109838A1 (en) 2022-04-07
EP4199505A1 (en) 2023-06-21
CN116405708A (zh) 2023-07-07

Similar Documents

Publication Publication Date Title
US10719447B2 (en) Cache and compression interoperability in a graphics processor pipeline
US9906816B2 (en) Facilitating environment-based lossy compression of data for efficient rendering of contents at computing devices
US9026615B1 (en) Method and apparatus for caching image data transmitted over a lossy network
US20140092439A1 (en) Encoding images using a 3d mesh of polygons and corresponding textures
US8751565B1 (en) Components for web-based configurable pipeline media processing
US11256528B2 (en) Individual application window streaming suitable for remote desktop applications
KR20160134778A (ko) 중간-분류 아키텍처에서 프레임 대 프레임 일관성의 활용
CN108370416A (zh) 从视频流生成输出视频
CN105163127A (zh) 视频分析方法及装置
US11088907B2 (en) System characterization and configuration distribution for facilitating improved performance at computing devices
KR20230092739A (ko) 인공 지능 비디오 프레임 세그먼트화를 사용하여 비디오 프레임 픽셀 데이터를 처리하는 방법 및 장치
Park et al. Programmable multimedia platform based on reconfigurable processor for 8K UHD TV
US10002405B2 (en) Smart optimization of unused graphics buffer memory in computing environments
CN104956671A (zh) 视频帧重建
WO2017105612A1 (en) Interpolated minimum-maximum compression/decompression for efficient processing of graphics data at computing devices
US20220109889A1 (en) Apparatus, articles of manufacture, and methods for improved adaptive loop filtering in video encoding
JP2023521287A (ja) テクスチャベースの没入型ビデオコーディング
US20220014740A1 (en) Methods and apparatus to perform dirty region reads and writes to reduce memory bandwidth usage
US11595650B2 (en) Optimization of multi-sink Wi-Fi display with intelligent multi-session encoding
US20240107031A1 (en) Methods and apparatus to utilize cache in dynamic image encoding
WO2017052392A1 (en) Facilitating efficient detection of patterns in graphics display streams prior to their display at computing devices
EP4226636A1 (en) Method and apparatus for dynamic dash picture-in-picture streaming
CN114097008A (zh) 用于统一的帕金森病评定量表中定义的手部活动的自动识别的系统和方法
Molderink Feasibility Analysis of MPEG decoding on reconfigurable hardware
Doan Heterogeneous multiprocessor pipeline design for H. 264 video encoder