KR20210127770A - 비디오 프레임 코덱 아키텍처들 - Google Patents

비디오 프레임 코덱 아키텍처들 Download PDF

Info

Publication number
KR20210127770A
KR20210127770A KR1020217032361A KR20217032361A KR20210127770A KR 20210127770 A KR20210127770 A KR 20210127770A KR 1020217032361 A KR1020217032361 A KR 1020217032361A KR 20217032361 A KR20217032361 A KR 20217032361A KR 20210127770 A KR20210127770 A KR 20210127770A
Authority
KR
South Korea
Prior art keywords
frame
decompressor
decompressed
video
core
Prior art date
Application number
KR1020217032361A
Other languages
English (en)
Other versions
KR102442576B1 (ko
Inventor
아키 오스카리 쿠우셀라
빌레-미코 라우티오
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Priority to KR1020227030753A priority Critical patent/KR20220127368A/ko
Publication of KR20210127770A publication Critical patent/KR20210127770A/ko
Application granted granted Critical
Publication of KR102442576B1 publication Critical patent/KR102442576B1/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/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
    • 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/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Television Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Advance Control (AREA)
  • Bus Control (AREA)
  • Microcomputers (AREA)

Abstract

비디오 프레임 코덱 아키텍처들을 위한 기술들 및 장치들이 서술된다. 프레임 디컴프레서는 압축된 프레임들을 압축 해제하여 압축 해제된 프레임들을 생성한다. 프레임 디컴프레서 제어기는 프레임 디컴프레서로의 공유된 액세스를 중재한다. SoC의 다수의 코어들은 프레임 디컴프레서 제어기를 통해 상기 프레임 디컴프레서로부터 압축 해제된 프레임을 수신하도록 요청한다. 프레임 디컴프레서 제어기는 요청 큐를 구현할 수 있고 그리고 요청들 또는 요청 코어들의 우선 순위에 기초하여 요청들에 대한 서비스를 주문할 수 있다. 프레임 디컴프레서 제어기는 또한 다수의 코어들에 의한 액세스를 위해 시간 공유 프로토콜을 설립할 수 있다. 일부 구현들에서, 비디오 디코더는 프레임 디컴프레서와 논리적으로 통합되고 그리고 압축 해제된 프레임의 부분들을 비디오 버퍼에 저장하고, 디스플레이 제어기는 동기화 메커니즘을 사용하여 디스플레이하기 위한 부분들을 검색한다. 유사한 방식으로, 프레임 컴프레서 제어기는 다수의 코어들을 위한 프레임 컴프레서로의 공유된 액세스를 중재할 수 있다.

Description

비디오 프레임 코덱 아키텍처들{VIDEO FRAME CODEC ARCHITECTURES}
본 발명은 비디오 프레임 코덱 아키텍처들에 관한 것이다.
전자 디바이스들은 제조, 통신, 헬스케어, 상거래, 사회적 상호 작용 및 엔터테인먼트에서 중요한 역할을 한다. 예를 들어, 전자 디바이스들은 상거래 및 통신을 위한 클라우드 기반의 분산 컴퓨팅 기능을 제공하는 서버 팜들에 전원을 공급한다. 컴퓨팅 성능을 갖춘 디바이스들은 의료 장치에서 가전 제품, 그리고 차량에서 산업용 도구에 이르기까지 다양한 유형들의 최신 장비에 내장된다. 또한, 하나의 전자 디바이스(스마트 폰)은 문자 그대로 항상 손에 있어야 할 필요성을 가진다.
카메라 또는 디스플레이 스크린이 있는 장치들과 같은 많은 전자 디바이스들은 비디오 데이터를 조작한다. 예를 들어, 보안 카메라를 사용하여 비디오를 획득 한 다음 선명도 또는 콘트라스트와 같은 시각적 측면을 개선하도록 향상될 수 있다. 기존 비디오 데이터를 조작하여 스마트 폰 또는 TV 모니터의 디스플레이 스크린에 표시할 개별 비디오 프레임들의 모양을 개선할 수 도 있다. 예를 들어, 영화의 비디오 데이터는 인공 그래픽의 사실감을 향상시키거나 디스플레이 해상도를 업 스케일하기 위해 처리될 수 있다. 비디오 이미지 데이터는 산업 및 의료 환경에서도 조작된다. 예를 들어, 3차원 신체 스캔으로부터의 이미지 데이터는, 의사가 검토하고 분석하기 위해 비디오 표현과 함께 스티칭될 수 있다.
이러한 상황들에서, 비디오 데이터 조작은 처리 집약적인 작업이다. 이것은 비디오 데이터에 전형적으로 존재하는 정보의 크기 또는 양에 기인한다. 결과적으로, 비디오 데이터를 다루는 데 사용되는 집적 회로(IC) 칩의 영역은 다른 유형들의 데이터의 영역보다 클 수 있다. 전자 디바이스들이 처리해야 하는 비디오의 디스플레이 해상도가 점점 높아짐에 따라 비디오 데이터를 처리하기가 더욱 어려워졌다. 예를 들어 HD(고화질) 비디오는 SD(표준 화질) 비디오보다 비디오 데이터가 약 4 배 더 많으며, UHD(Ultra-HD) 또는 4K 비디오는 HD 비디오보다 비디오 데이터가 약 4배 더 많다.
따라서 전자 디바이스들이 처리할 것으로 예상되는 비디오 데이터의 양은 지난 10여 년 동안 급격히 증가했다. 가상 현실(VR) 및 인공 현실(AR) 사용이 점점 일반화되면서 비디오 데이터 처리 요구들은 향후 몇 년 동안 더욱 증가할 것으로 예상된다. 따라서, 전자 디바이스의 제조업체들은 점점 더 많은 양의 비디오 데이터를 처리할 수 있는 전자 디바이스들의 능력을 개선하기 위해 계속 노력하고 있다.
이 배경 기술은 일반적으로 본 발명의 맥락을 제시하기 위해 제공된다. 본 명세서에서 달리 지시되지 않는 한, 본 섹션에 서술된 내용은 본 발명 또는 첨부된 청구 범위의 선행 기술인 것으로 명시적으로 또는 암시적으로 인정되지 않는다.
비디오 프레임 코덱 아키텍처들을 위한 기술들 및 장치들이 서술된다. 이들 기술들 및 장치들은 집적 회로(IC) 칩들이 적은 양의 회로 리소스들을 사용하여 고 대역폭 비디오 데이터를 처리할 수 있게 해주며, 또한, 무손실 기술을 포함하여 새로운 프레임 압축/압축 해제 기술로 업그레이드하기 위한 능률화된 워크플로우를 촉진시킨다. 그렇게 하기 위해, IC 칩의 다수의 상이한 코어들에 다수의 개별 프레임 압축 해제 유닛들을 포함시키는 것이 필요하지 않다. 대신, 프레임 디컴프레서는 프레임 디컴프레서 클라이언트 회로로서 기능하는 다수의 상이한 코어들에 프레임 압축 해제 서비스를 제공할 수 있다. 프레임 디컴프레서 제어기는 다수의 코어들 중 하나 이상의 코어로부터 수신 된 압축 해제 요청들을 명령하는 큐잉 또는 우선 순위 메커니즘을 사용하여 압축 해제 서비스의 공유를 용이하게 한다. 프레임 압축 디컴프레서 제어기는 또한 시간 공유 프로토콜에 따라 프레임 압축 디컴프레서로의 액세스를 중재할 수 있다. 예시적인 구현에서, 프레임 디컴프레서는 비디오 디코더 클라이언트 회로와 함께 위치하고, 프레임 디컴프레서는 적어도 디스플레이 제어기와 공유된다. 유사하게, 프레임 컴프레서는 프레임 컴프레서 클라이언트 회로들로서 기능하는 다수의 상이한 코어들에 프레임 압축 서비스를 제공할 수 있다. 프레임 컴프레서 제어기는 다수의 코어들과 압축 서비스 공유를 용이하게 한다. 또한, 프레임 압축 서비스 및 프레임 압축 해제 서비스는 모두 단일 코어 칩에 제공되어 다수의 코어들에 걸쳐 공유될 수 있다.
아래에서 서술된 양태들은, 프레임 디컴프레서(frame decompressor) 및 프레임 디컴프레서 제어기를 포함하는 전자 디바이스를 포함한다. 상기 프레임 디컴프레서는, 다수의 압축 해제된 프레임들을 생성하기 위해 다수의 압축된 프레임들을 압축 해제하도록 구성된다. 상기 프레임 디컴프레서 제어기는, 상기 프레임 디컴프레서에 연결되고 그리고 다수의 코어들에 대한 상기 프레임 디컴프레서로의 액세스를 중재하도록 구성된다. 다수의 코어들은 제1 코어 및 제2 코어를 포함한다. 상기 제1 코어는, 상기 프레임 디컴프레서 제어기에 연결되고, 그리고 상기 프레임 디컴프레서에 의해 생성된 상기 다수의 압축 해제된 프레임들 중 하나의 압축 해제된 프레임을 상기 프레임 디컴프레서 제어기를 통해 획득하도록 구성된다. 상기 제2 코어는 상기 프레임 디컴프레서 제어기에 연결되고, 그리고 상기 프레임 디컴프레서에 의해 생성된 상기 다수의 압축 해제된 프레임들 중 다른 압축 해제된 프레임을 상기 프레임 디컴프레서 제어기를 통해 획득하도록 구성된다. 예를 들어, 제1 코어는 프레임 디컴프레서에 의해 생성된 다수의 압축 해제된 프레임들 중 제1 압축 해제된 프레임을 프레임 디컴프레서 제어기를 통해 획득하도록 구성될 수 있다. 제2 코어는 프레임 디컴프레서에 의해 생성된 다수의 압축 해제된 프레임들 중 제2 압축 해제된 프레임을 프레임 압축 디컴프레서 제어기를 통해 획득하도록 구성될 수 있다.
아래에서 서술된 양태들은, 다수의 코어들 사이에서 프레임 압축 해제 회로를 공유하는 방법을 포함한다. 상기 방법은, 제1 코어로부터, 제1 압축 해제된 프레임에 대한 제1 요청을 받아들이는 단계를 포함한다. 상기 방법은 또한 상기 제1 압축 해제된 프레임을 생성하기 위해 제1 압축된 프레임을 압축 해제하는 단계를 포함한다. 상기 제1 압축 해제된 프레임은, 상기 제1 요청에 응답하여, 상기 제1 코어에 제공된다. 상기 방법은 추가적으로 제2 압축 해제된 프레임에 대한 제2 요청을 제2 코어로부터 받아들이는 단계를 포함한다. 상기 방법은 상기 제2 압축 해제된 프레임을 생성하기 위해 제2 압축된 프레임을 압축 해제하는 단계를 더 포함한다. 상기 제2 압축해제된 프레임은, 상기 제2 요청에 응답하여 상기 제2 코어에 제공된다.
아래에서 서술된 양태들은, 비디오 디코더 및 디스플레이 제어기를 포함하는 다른 전자 디바이스를 포함한다. 상기 비디오 디코더는 다수의 디코딩된 프레임들을 생성하기 위해 비디오 스트림을 디코딩하도록 구성된다. 비디오 디코더는 프레임 컴프레서, 프레임 디컴프레서 및 프레임 디컴프레서 제어기를 포함한다. 상기 프레임 컴프레서는, 다수의 압축된 프레임들을 생성하기 위해 상기 다수의 디코딩된 프레임들을 압축하도록 구성된다. 상기 프레임 디컴프레서는, 다수의 압축 해제된 프레임들을 생성하기 위해 상기 다수의 압축된 프레임들을 압축 해제하도록 구성된다. 상기 프레임 디컴프레서 제어기는, 상기 프레임 디컴프레서에 연결되고 그리고 상기 프레임 디컴프레서로의 액세스를 중재하도록 구성된다. 상기 디스플레이 제어기는, 상기 프레임 디컴프레서 제어기에 연결된다. 상기 디스플레이 제어기는 상기 프레임 디컴프레서에 의해 생성된 상기 다수의 압축 해제된 프레임들 중 하나의 압축 해제된 프레임을 상기 프레임 디컴프레서 제어기를 통해 획득하도록 구성된다.
아래에서 서술된 양태들은, 또한, 프레임 디컴프레서 및 다수의 코어들을 포함하는 시스템을 포함한다. 프레임 디컴프레서는 다수의 압축 해제된 프레임들을 생성하기 위해 다수의 압축된 프레임들을 압축 해제하도록 구성된다. 다수의 코어들은 제1 코어 및 제2 코어를 포함한다. 상기 제1 코어는 프레임 디컴프레서에 연결되고 그리고 다수의 압축 해제된 프레임들 중 하나의 압축 해제된 프레임을 획득하도록 구성된다. 상기 제2 코어는 프레임 디컴프레서에 결합되고 그리고 다수의 압축 해제된 프레임들 중 다른 압축 해제된 프레임을 획득하도록 구성된다. 예를 들어, 상기 제1 코어는 다수의 압축 해제된 프레임들 중 제1 압축 해제된 프레임을 획득하도록 구성될 수 있다. 상기 제2 코어는 다수의 압축 해제된 프레임들 중 제2 압축 해제된 프레임을 획득하도록 구성될 수 있다. 상기 시스템은 또한 제1 코어 및 제2 코어를 포함하는 다수의 코어들에 대한 프레임 디컴프레서로의 액세스를 중재하도록 프레임 디컴프레서를 제어하기 위한 제어 수단을 포함한다. 추가적으로 또는 대안적으로, 시스템은 다수의 압축 해제된 프레임들을 압축하여 다수의 압축된 프레임들을 생성하도록 구성된 프레임 압축기를 포함할 수 있다. 상기 제1 및 제 2 코어는 각각 다수의 압축된 프레임들의 각각의 압축된 프레임을 획득할 수 있다. 따라서, 시스템은 또한 상기 제1 코어 및 제2 코어를 포함하는 다수의 코어들에 대한 컴프레서로의 액세스를 중재하도록 프레임 컴프레서를 제어하기 위한 제어 수단을 포함할 수 있다.
비디오 프레임 코덱 아키텍처들을 구현하기 위한 장치들 및 기술들은 다음 도면을 참조하여 설명된다. 도면 전체에서 동일한 피처들 및 컴포넌트들을 참조하기 위해 동일한 번호들이 사용된다.
도 1은 비디오 프레임 코덱 아키텍처들이 구현될 수 있는 인쇄 회로 기판을 포함하는 예시적인 환경을 도시한다.
도 2는 비디오 프레임 코덱 아키텍처들이 구현될 수 있는 예시적인 환경의 다른 양태들을 도시한다.
도 3은 프레임 컴프레서-디컴프레서, 프레임 컴프레서-디컴프레서 제어기 및 다수의 코어들을 포함하는 비디오 프레임 코덱 아키텍처의 예시적인 구현을 갖는 SoC (system-on-chip)를 도시한다.
도 3a는 프레임 컴프레서, 프레임 컴프레서 제어기 및 다수의 코어들을 포함하는 비디오 프레임 코덱 아키텍처의 예시적인 구현을 갖는 SoC를 도시한다.
도 3b는 프레임 디컴프레서, 프레임 디컴프레서 제어기 및 다수의 코어들을 포함하는 비디오 프레임 코덱 아키텍처의 예시적인 구현을 갖는 SoC를 도시한다.
도 4는 프레임 디컴프레서 및 코어와 결합된 예시적인 프레임 컴프레서-디컴프레서 제어기를 도시한다.
도 5는 멀티 코어들이 비디오 디코더 및 디스플레이 제어기를 포함하는 비디오 프레임 코덱 아키텍처들을 구현하는 예시적인 접근법을 도시한다.
도 6은 압축 해제된 디스플레이 프레임을 비디오 디코더로부터 디스플레이 제어기로 라우팅하기 위한 예시적인 기술을 도시한다.
도 7은 다수의 코어들에 의해 발행된 압축 해제된 프레임들에 대한 요청들을 관리하기 위해 프레임 디컴프레서 제어기에 의한 예시적인 방식을 도시한다.
도 8은 프레임 압축 리소스 또는 프레임 압출 해제 리소스를 공유하기 위한 시간 공유 프로토콜을 설정하기 위해 프레임 컴프레서-디컴프레서 제어기에 의한 예시적인 방식을 도시한다.
도 9는 여기에 기술된 바와 같은 비디오 프레임 코덱 아키텍처들을 동작시키기 위한 예시적인 방법들을 도시한다.
도 10은 하나 이상의 구현에 따라 비디오 프레임 코덱 아키텍처들을 구현할 수 있는 예시적인 전자 디바이스의 다양한 컴포넌트들을 도시한다.
개요
영화 또는 다른 비디오를 위한 데이터는 전자 장치들 또는 그 내부 컴포넌트들 사이에서 전파되는 동안 저장 및 전송 모두에서 상당한 대역폭을 소비한다. 비디오의 디스플레이 해상도가 증가함에 따라, 대역폭 요구도 마찬가지로 증가해왔다. 예를 들어 UHD(ultra-HD) 또는 4K 비디오의 경우, 10년 전에 일반적으로 사용되었던 SD 비디오보다 약 15 내지 20배 더 많은 비디오 데이터를 처리할 수 있다. 이렇게 증가된 데이터 양으로 인해 단일 IC 칩 내에서도 비디오 관리가 어려워진다. 예를 들어, 일반적인 SoC(system-on-chip)는, 시스템 버스를 사용하여 원시 디코딩된 비디오 데이터가 상이한 SoC 컴포넌트들 간에 전송될 경우 과부하가 걸릴 수 있는 시스템 버스를 갖는다.
알려진 바와 같이, 비디오의 대역폭은 일부 손실 코덱, 예를 들어, H.264를 사용하여 비디오를 인코딩함으로써 감소될 수 있다. 이후, 인코딩된 비디오는 클라우드 서버에서 태블릿 컴퓨터로 스트리밍하거나 블루-레이 디스크 또는 플래시 메모리에 저장할 수 있다. 예를 들어, 최종 사용자 전자 디바이스는 디스플레이 스크린 상에 표현을 위해 비디오를 디코딩하는 역할을 한다. 디코딩은 이진 1 및 0의 스트림 또는 비트들을 개별 디코딩된 비디오 프레임들로 변환하는 것을 수반하고, 이는 비디오를 나타내기 위해 순차적으로 디스플레이될 수 있다. 이 비디오 인코딩 및 디코딩 절차의 일부로서, 비디오 데이터는 압축 및 압축 해제된다. 이 비디오 레벨 절차(예를 들어, H.264 코덱 사용)에서는 압축의 양은 크지만 압축의 손실도 존재한다. 따라서, 비디오 레벨 압축/압축 해제 절차로 인해, 일부 비디오 정보는 이미지 화질이 눈에 띄게 변화될 수 있을 정도로 손실를 겪는다.
이러한 비디오 정보 손실은 대량의 비디오 데이터가 디바이스들 간에 전송되거나 적당한 양의 메모리를 사용하여 저장될 수 있도록 허용된다. 전자 디바이스에서 비디오 스트림을 디코딩하여 디코딩된 비디오 프레임들을 생성한 후, 이 많은 양의 비디오 데이터는 프레임들의 그룹 또는 많은 개별 프레임들로 프레임 단위로 재생성된다. 이러한 개별 프레임들 각각은 여전히 상당한 양의 데이터이다. 전자 디바이스에서 이러한 양의 비디오 데이터를 처리하려면, 디코딩된 비디오 프레임이 현재 처리되거나 디스플레이되지 않는 경우, 디코딩된 비디오 프레임은 압축된 비디오 프레임을 생성하도록 압축된다. 임의의 특정 시간에서 스트림으로부터 유한한 수의 프레임들이 디코딩되므로, 일부 구현들에서, 무손실 압축 알고리즘이 디코딩된 프레임들에 적용될 수 있다. 무손실 압축 및 압축 해제 프레임 레벨 절차는 더 이상의 이미지 열화를 방지할 수 있다. 압축된 비디오 프레임은, 메모리에서 더 적은 공간을 차지하고 SoC의 시스템 버스와 같은 상호 연결에서 더 적은 대역폭을 소비한다. 따라서, 압축된 비디오 프레임들은 인쇄 회로 기판(PCB)의 서로 다른 칩들 간에, SoC와 주 메모리 간에, 또는 단일 SoC의 서로 다른 컴포넌트들 간에 전송될 수 있다.
비디오 데이터와 함께 작동하는 SoC의 기존 시스템, 각각의 개별 구성 요소 또는 코어에서 비디오 프레임마다 압축 또는 프레임 레벨 압축을 사용할 수 있도록 하기 위해 각각의 압축 해제 유닛이 포함된다. 이 간단한 기존의 접근 방식을 사용하면, 각 코어는 압축된 비디오 프레임에서 압축 해제된 비디오 프레임을 독립적으로 생성할 수 있고, 이후, 특정 코어의 비디오 관련 목적에 따라 압축 해제된 비디오 프레임을 처리할 수 있다. 그러나, 이 간단한 접근 방식에는 몇 가지 수행 비용들이 존재한다. 먼저, IC 다이의 인식 가능한 영역은 중복 비디오 프레임 압축 해제 회로 또는 압축 회로에 전념한다. 둘째, 디스플레이 스크린 상에 비디오들을 나타내기 위한 디스플레이 경로는 별도의 압축 해제 유닛을 포함한다. 셋째, SoC의 비디오 프레임 압축 및 압축 해제 기술을 업그레이드하는 워크플로우는 상당히 복잡하다. 이러한 문제는 각각 개별 압축해제 유닛 또는 개별 압축 유닛(일부 경우, 두개의 유닛들 모두 포함)을 포함하는 다수의 상이한 코어들로부터 발생한다. 다시 말해, 보다 효율적인 새로운 압축 해제 알고리즘으로 업그레이드하려면, 압축 유닛 또는 압축 해제 유닛을 포함하는 각 코어를 동시에 수정한 다음 나머지 SoC와 다시 통합해야 한다. 따라서, 이 워크플로 업그레이드 복잡성으로 인해, 멀티 코어 칩들에서 향상된 압축 알고리즘/압축 해제 알고리즘의 채택 속도가 느려진다.
대조적으로, 여기에 서술된 특정 구현들은 공유되는 프레임 컴프레서-디컴프레서를 사용한다. 프레임 컴프레서-디컴프레서는 프레임 컴프레서 또는 프레임 디컴프레서, 또는 둘 다를 포함할 수 있다. SoC와 같은 IC 칩의 다수의 코어들은, 예를 들어, 공유 프레임 디컴프레서로부터 압축된 프레임의 압축 해제된 버전을 얻을 수 있다. 특정 코어는 압축 해제된 프레임에 대한 요청을 할 수 있고, 프레임 디컴프레서는 요청된 압축 해제된 프레임을 포함하는 응답을 제공할 수 있다. 따라서, 프레임 디컴프레서는 프레임 압축 해제 서비스를 제공하도록 기능할 수 있고, 그리고 각각의 코어는 프레임 압축 해제 서비스에 대한 클라이언트로서 기능할 수 있다. 유사하게, 프레임 컴프레서는 프레임 압축 서비스를 제공하도록 기능할 수 있고, 각각의 코어는 프레임 압축 서비스에 대한 클라이언트로서 기능할 수 있다. 이러한 프레임 레벨 압축 및 압축 해제 서비스는 무손실 알고리즘을 사용할 수 있다.
일부 구현들에서, SoC는 상이한 코어 들로서 동작하는 비디오 디코더 및 디스플레이 제어기와 같은 다수의 상이한 컴포넌트들을 포함한다. 비디오 디코더는 디코딩된 프레임들을 생성하기 위해 비디오 스트림을 디코딩하기 위한 스트림 디코더를 포함한다. 비디오 디코더는 또한 디코딩된 프레임들로부터 압축된 프레임들을 생성하는 프레임 컴프레서를 포함한다. SoC의 다수의 상이한 컴포넌트들은 압축 해제된 프레임들을 처리하도록 구성된다. 예를 들어, 비디오 디코더는 비디오 스트림의 추가 디코딩을 위해 압축 해제된 참조 프레임을 사용할 수 있다. 또한, 디스플레이 제어기는 압축 해제된 디스플레이 프레임을 사용하여 디스플레이 스크린 상에 비디오를 제공할 수 있다.
이들 예시적인 타입들의 압축 해제된 프레임들 중 임의의 것을 얻기 위해, 프레임 디컴프레서는 대응하는 압축된 프레임을 압축 해제한다. 프레임 압축 디컴프레서는 하나 이상의 버스, 적어도 하나의 버퍼, 또는 다른 라우팅 메커니즘을 사용하여 요청된 압축 해제된 프레임을 요청 코어로 라우팅할 수 있다. 프레임 디컴프레서 제어기는 비디오 디코더 및 디스플레이 제어기와 같은 적어도 2개의 코어들 사이에서 프레임 디컴프레서에 대한 공유된 액세스를 중재한다. 프레임 디컴프레서 제어기는 압축된 프레임 요청들의 요청 큐를 관리할 수 있다. 관리는 우선순위 체계에 따라 프레임 요청들의 서비스를 주문하는 것을 수반할 수 있다. 프레임 디컴프레서 제어기는 또한 프레임 디컴프레서에 액세스하기 위한 시간 공유 프로토콜을 확립할 수 있다. 시간 공유된 프로토콜은 상이한 코어들에 할당된 타임 슬롯들, 프레임 압축 디컴프레서의 제어를 위해 코어들에 의해 발행된 인터럽트들의 수용 등을 포함할 수 있다.
이러한 방식들로, 비디오 데이터를 처리하는 둘 이상의 클라이언트 코어들 간에 프레임 컴프레서 리소스 또는 프레임 디컴프레서 리소스가 공유될 수 있다. 예를 들어, 프레임 디컴프레서를 공유함으로써, 프레임 압축 해제에 전념하는 SoC의 영역이 감소된다. 추가로, 별도의 프레임 디컴프레서가 비디오 디스플레이 경로를 따라 삽입될 필요가 없다. 또한, 압축/압축 해제 알고리즘은 전체 SoC 아키텍처와 분리되어 있다. 결과적으로, 압축/압축 해제 알고리즘을 보다 쉽게, 그리고 더 자주 업데이트할 수 있는데, 이는, 더 적은 수 또는 단 하나의 프레임 컴프레서 또는 프레임 디컴프레서가 SoC에 포함되어 있고, 그리고 업데이트 워크플로우가 적용되기 때문이다.
다양한 상세 레벨들의 예시적인 구현들이 관련 도면들을 참조하여 아래에서 논의된다. 아래의 논의는, 먼저 예시적인 동작 환경, 그 다음 예시적인 방식들 및 하드웨어, 그 다음 예시적인 방법을 서술하고, 그리고 예시적인 전자 디바이스 및 관련된 예시적인 양태들로 끝난다.
예시적인 환경
도 1은 비디오 프레임 코덱 아키텍처들이 구현될 수 있는 인쇄 회로 기판(PCB)(104)을 포함하는 예시적인 환경(100)을 도시한다. 도시된 바와 같이, 환경 (100)은 전자 디바이스(102)를 포함한다. 전자 디바이스(102)는 적어도 하나의 PCB (104)를 포함한다. PCB(104)는 집적 회로(106)(IC)와 같은 하나 이상의 집적 회로를 포함한다. 도 2 및 도 3에 도시된 바와 같이, PCB(104)는 IC(106)로부터 분리된 적어도 하나의 메모리와 같은 다른 집적 회로들을 포함할 수 있다. IC(106)는 적어도 하나의 프레임 디컴프레서(108-2); 다수의 코어들(110-1, 110-2 ... 110-n)(n은 1보다 큰 정수를 나타냄); 및 적어도 하나의 압축된 프레임(112) 및 적어도 하나의 압축 해제된 프레임(114)과 같은 다수의 비디오 프레임들을 포함한다. 도 1은 예시적인 환경(100)을 설명하면서 간략화를 위해 프레임 압축 디컴프레서(108-2) 만을 도시한다. 그러나, 프레임 컴프레서-디컴프레서(108) 및 프레임 컴프레서(108-1)는 각각 도 3 및 도 3a를 참조하여 서술된다.
예시적인 구현들에서, 프레임 디컴프레서(108-2)는 다수의 코어들(110-1 내지 110-n)의 적어도 일부에 통신 가능하게 연결된다. 프레임 디컴프레서(108-2)는 압축된 비디오 프레임을 압축 해제하기 위한 회로를 포함한다. 따라서, 프레임 디컴프레서(108-2)는 압축 해제된 프레임(114)을 생성하기 위해 압축된 프레임(112)을 압축 해제할 수 있다. 동작에서, 코어(110)는 압축된 프레임의 압축 해제된 버전을 얻기 위해 프레임 디컴프레서(108-2)를 사용한다. 예를 들어, n번째 코어(110-n)는, 식별된 압축된 프레임(112)의 압축 해제된 버전이 요청되고 있음을 나타내기 위해 요청(116)을 프레임 디컴프레서(108-2)로 전송한다. 프레임 디컴프레서(108-2)는 압축 해제된 프레임(114)을 포함하는 응답(118)을 제공한다. 비디오 프레임들은 예시적인 컨텍스트로 참조되지만, 여기에서 서술된 프레임들은 컴퓨터로 생성된 그래픽 프레임들, 비디오 프레임들, 콤비네이션 프레임들 등을 포함하는 시각적 데이터를 갖는 임의의 프레임들을 포함할 수 있다.
이러한 방식으로, 프레임 디컴프레서(108-2)는 다수의 코어들(110-1 내지 110-n)의 개별 코어에 압축 해제 서비스를 제공한다. 유사하게, 프레임 컴프레서(108-1)(예를 들어, 도 3a의 프레임 컴프레서)는 다수의 코어들(110-1 내지 110-n)의 개별 코어에 압축 서비스를 제공할 수 있다. 따라서, 프레임 디컴프레서(108-2) 또는 프레임 컴프레서(108-1)(또는 둘 모두)는 IC(106)에 대한 프레임 압축-압축 해제(FCD) 서버 회로(122)의 적어도 일부를 실현한다. 유사하게, 다수의 코어들(110-1 내지 110-n)은 다수의 프레임 압축-압축 해제(FCD) 클라이언트 회로들(120)을 실현한다. 이러한 클라이언트-서버 아키텍처를 사용하면, 프레임 컴프레서 유닛 또는 프레임 디컴프레서 유닛은 둘 이상의 코어들(110) 사이에서 공유될 수 있어, IC (106)의 공간을 절약하고 그리고 IC(106)의 비디오 프레임들을 압축/압축 해제하는 데 사용되는 IC (106) 및 PCB (104)에 대한보다 상세한 예시적인 아키텍처는 압축/압축 해제 기술을 업그레이드 하기위한 워크플로우를 단순화한다. IC(106) 및 PCB(104)에 대한 보다 상세한 예시적인 아키텍처는 도 3, 도 3a 및 도 3b를 참조하여 아래에서 서술된다. 그러나, 예시적인 구현들의 추가 양태들은 도 2를 참조하여 다음에 서술된다.
도 2는 여기에서 기술된 비디오 프레임 코덱 아키텍처들이 구현될 수 있는 예시적인 환경(200)의 다른 양태들을 도시한다. 전자 디바이스(102)는, 다양한 비 제한적인 예시적인 디바이스들: 스마트 폰(102-1), 노트북 컴퓨터(102-2), 텔레비전(102-3), 데스크탑 컴퓨터(102-4), 태블릿(102-5) 및 웨어러블 디바이스(102-6)를 구비하는 것으로 도시된다. 오른쪽에 도시된 바와 같이, 전자 디바이스(102)는 하나 이상의 프로세서(202), 하나 이상의 컴퓨터 판독 가능 매체(204) 및 적어도 하나의 상호 접속부(216)를 포함한다. 컴퓨터 판독 가능 매체(204)는, 코드, 데이터, 명령어들, 기타 정보 등을 저장, 보유 또는 포함할 수 있다. 전자 디바이스(102)는 또한 운영 시스템(212)을 포함할 수 있다. 개별적으로 도시되어 있지만, 운영 시스템(212)은 하나 이상의 컴퓨터 판독 가능 매체(204)에 저장될 수 있다.
컴퓨터 판독 가능 매체(204)상의 컴퓨터 판독 가능 명령어들로서 구현되는 애플리케이션들(도시되지 않음) 또는 운영 시스템(212)은 프로세서(202)에 의해 실행될 수 있다. 운영 시스템(212) 또는 기본 입력/출력 시스템(BIOS)은 프레임 코덱 파라미터 모듈(214)을 포함할 수 있다. 프레임 코덱 파라미터 모듈(214)은 여기에서 서술된 공유 프레임 압축 및 압축 해제 기능들의 성능을 가능하게 하거나, 승인하거나, 조정하거나, 그렇지 않으면 용이하게 하기 위해 하나 이상의 파라미터를 설정할 수 있다.
도시된 바와 같이, 컴퓨터 판독 가능 매체(204)는 적어도 하나의 비디오 버퍼(206), 적어도 하나의 공유 로컬 캐시(208) 및 적어도 하나의 메인 메모리(210)를 포함할 수 있다. 일부 구현들에서, 비디오 버퍼(206) 및 공유 로컬 캐시(208)는 IC상의 개별 메모리 블록들이다. 다른 구현들에서, 비디오 버퍼(206) 및 공유 로컬 캐시(208)는, 공유 로컬 캐시(208)의 일부가 동적으로 변경되거나 고정 할당 방식으로 비디오 버퍼(206)로서 사용되는 경우와 같은 동일한 메모리 블록의 일부이다. 상호접속부(216)는 적어도 하나의 시스템 버스(218), 적어도 하나의 비디오 버스(220) 및 적어도 하나의 외부 버스(222)를 포함할 수 있다. 일부 구현들에서, 비디오 버스(220)와 시스템 버스(218)는 상이한 버스들이다. 다른 구현들에서, 별도의 비디오 버스가 없으므로, 따라서, 비디오 데이터는 시스템 버스(218)를 사용하여 IC 주위에 전파된다. 이들 컴퓨터 판독 가능 매체(204) 및 이들 상호 접속부 (216)의 예시적인 구현들이 도 4 내지 도 6을 참조하여 아래에 서술된다.
예시적인 컴포넌트들 및 기법들
도 3은 PCB(104)의 일부를 도시한다. PCB(104)는 시스템-온-칩(302)(SoC) 및 메인 메모리(210)를 포함한다. SoC(302)는 프레임 컴프레서-디컴프레서(108)(FCD), 프레임 컴프레서-디컴프레서 제어기(304) 및 다수의 코어들(110-1 내지 110-n)을 포함하는 비디오 프레임 코덱 아키텍처의 예시적인 구현을 도시한다. SoC(302)는 또한 공유 로컬 캐시(208) 및 시스템 버스(218)를 포함한다. 메인 메모리(210)는 PCB (104)의 일부로서 포함되는(예를 들어, 배치된) 외부 버스(222)를 통해 SoC(302)에 연결된다.
PCB(104)는 다수의 IC 칩들, 상호접속부들, 인터페이스들 등을 장착 또는 고정하기 위한 강성 또는 가요성 재료로 구현될 수 있다. 메인 메모리(210)는, 예를 들어, 메모리 컨텐츠를 유지하기 위해 주기적으로 리프레시되는 DRAM(dynamic random-access memory) 또는 전력없이 메모리 컨텐츠를 유지할 수 있는 플래시 메모리를 사용하여 실현될 수 있다. 일반적으로, 공유 로컬 캐시(208)에서와 같이 SoC(302)에 저장된 데이터에 액세스하는 것보다 메인 메모리(210)에 저장된 데이터에 액세스하는 것이 더 많은 에너지가 소비된다. 공유 로컬 캐시(208)는, 예를 들어, 정적 랜덤 액세스 메모리(SRAM), DRAM, 플래시 메모리 또는 이들의 일부 조합을 사용하여 실현될 수 있다.
시스템 버스(218)는 다수의 코어들(110-1 내지 110-n), 공유 로컬 캐시(208), 프레임 컴프레서-디컴프레서 제어기(304), 및 다른 컴포넌트들과 인터페이스들을 상호 연결한다(예를 들어, 프레임 컴프레서-디컴프레서(108)는 시스템 버스(218)에 직접 연결될 수 있다). 다수의 코어들(110-1 내지 110-n)의 각각의 코어(110)는 시스템 버스(218)를 사용하여 공유 로컬 캐시(208)로부터 데이터를 저장하거나 이로부터 데이터를 검색할 수 있다. 유사하게, 다수의 코어들(110-1 내지 110-n)의 각각의 코어(110)는 외부 버스(222)를 사용하여, 예를 들어, 시스템 버스(218) 또는 공유 로컬 캐시(208)를 사용함으로써 메인 메모리(210)에 데이터를 저장하거나 메인 메모리(210)로부터 데이터를 검색할 수 있다. 예를 들어, 제1 코어 (110-1)는 공유 로컬 캐시(208)에 데이터를 저장할 수 있고, 그리고 제2 코어(110-2)는 공유 로컬 캐시(208)로부터 저장된 데이터를 검색할 수 있다.
예시적인 동작에서, 프레임 컴프레서-디컴프레서(108)(FCD)는 다수의 처리되지 않은 프레임들(306)을 처리(예를 들어, 압축 또는 압축 해제)하여 다수의 처리 된 프레임들(308)을 생성한다. 프레임 컴프레서-디컴프레서 제어기(304)(FCD 제어기)는 프레임 컴프레서-디컴프레서(108)에 결합되고, 그리고 다수의 코어들(110-1 내지 110-n)에 대한 프레임 컴프레서-디컴프레서(108)에 대한 액세스를 중재한다. 개별적으로 도시되어 있지만, 프레임 컴프레서-디컴프레서(108) 및 프레임 컴프레서-디컴프레서 제어기(304)는 논리적으로 함께 통합될 수 있다. 다수의 코어들(110-1 내지 110-n) 중 적어도 2개의 코어들(110)은 프레임 컴프레서-디컴프레서 제어기(304)에 연결된다. 따라서, 각각의 코어(110)는, 프레임 컴프레서-디컴프레서 제어기(304)를 통해, 처리되지 않은 프레임 버전으로부터 프레임 컴프레서-디컴프레서(108)에 의해 생성된 처리된 프레임(308)을 얻을 수 있다. 처리된 프레임(308)은, 예를 들어, 요청(116) 및 대응하는 응답(118)을 사용하여 획득될 수 있다.
프레임 컴프레서-디컴프레서(108)는 프레임 컴프레서(308-1)(예를 들어,도 3a에 도시됨), 프레임 디컴프레서(108-2)(예를 들어, 도 3b에 도시됨), 또는 둘 모두를 포함할 수 있다. 유사하게, 프레임 컴프레서-디컴프레서 제어기(304)는 프레임 컴프레서 제어기(304-1)(예를 들어, 도 3a에 도시됨), 프레임 디컴프레서 제어기(304-2)(예를 들어, 도 3b에 도시됨)를 포함할 수 있다. 처리되지 않은 프레임(306) 또는 처리된 프레임(308) 중 하나는 압축된 프레임에 대응하고, 다른 하나는 프레임 컴프레서-디컴프레서(108)에 의한 처리 동작이 압축 또는 압축 해제 동작인지에 따라 압축 해제된 프레임에 대응한다. 특정 구현이 프레임 컴프레서(108-1) 및 프레임 디컴프레서(108-2) 모두 (및/또는 프레임 컴프레서 제어기(304-1) 및 프레임 디컴프레서 제어기(304-2) 모두)를 포함한다면, 이러한 컴포넌트들은 공존하거나, 서로 근접해 있거나, 또는 IC상의 상이한 위치에 있을 수 있다. 예를 들어, 각각은 대응하는 압축 또는 압축 해제 서비스의 가장 일반적인 클라이언트 일 가능성이 있는 코어 근처에 위치될 수 있다. 또한, 칩이 공존하는 프레임 컴프레서(108-1) 및 프레임 압축 디컴프레서(108-2)를 포함하는 경우, 각각은 완전히 분리된 회로를 포함하거나 또는 회로를 공유할 수 있다. 일부 구현들에서, 프레임 컴프레서-디컴프레서(108)는 요청(116)에 따라 무손실 압축 동작 또는 무손실 압축 해제 동작의 일부로서 프레임에 대한 데이터의 메모리 크기를 조정하는 무손실 프레임 데이터 조작기로서 실현될 수 있다. 압축 동작들 및 압축 해제 동작들에 대한 예시적인 구현들이 각각, 도 3a 및 3b를 참조하여 서술된다.
도 3a는 프레임 컴프레서(108-1)(FC), 프레임 컴프레서 제어기(304-1)(FC 제어기) 및 다수의 코어들을 포함하는 비디오 프레임 코덱 아키텍처의 예시적인 구현을 갖는 SoC를 도시한다. 프레임 컴프레서(108-1)는 압축되지 않은 프레임들(예를 들어, 압축 해제된 프레임들(114) 또는 아직 압축되지 않은 프레임들)을 압축하여 압축된 프레임들(112)을 생성한다. 프레임 컴프레서 제어기(304-1)는 프레임 컴프레서(108-1)에 결합되고 그리고 다수의 코어들(110-1 내지 110-n)에 대한 프레임 컴프레서(108-1)로의 액세스를 중재한다. 개별적으로 도시되어 있지만, 프레임 컴프레서(108-1) 및 프레임 컴프레서 제어기(304-1)는 논리적으로 함께 통합될 수 있다.
다수의 코어들(110-1 내지 110-n) 중 적어도 2개의 코어들(110)은 프레임 컴프레서 제어기(304-1)에 연결된다. 여기서, 각각의 코어(110)는 시각적 데이터를 생성하는 컴포넌트 또는 블록을 포함할 수 있다. 따라서, 각각의 코어(110)는, 프레임 컴프레서 제어기(304-1)를 통해, 압축 해제된 프레임(114) 버전으로부터 프레임 컴프레서(108-1)에 의해 생성된 압축된 프레임(112)을 얻을 수 있다. 따라서, 압축된 프레임(112)은, 예를 들어, 요청(116) 및 대응하는 응답(118)을 사용하여 획득될 수 있다. 작동시, 프레임 컴프레서 제어기(304-1)는 외부 버스(222)에 트래픽을 추가하는 것을 피하기 위해 파이프 라인 방식으로 시스템 버스(218) 상의 일부 요청 코어(110)에 프레임 컴프레서(108-1)의 압축 엔진에 대한 액세스를 부여할 수 있고, 이는 메인 메모리(210)에 대한 액세스를 제공한다. 일부 구현들에서, 프레임 컴프레서 제어기(304-1)는 압축 리소스에 액세스하기 위해 요청 코어(110)에 대한 독점적 액세스를 일시적으로 부여할 수 있다.
도 3b는 프레임 디컴프레서(108-2)(FD), 프레임 디컴프레서 제어기(304-2)(FD 제어기) 및 다수의 코어들을 포함하는 비디오 프레임 코덱 아키텍처의 예시적인 구현을 갖는 SoC를 도시한다. 프레임 압축 디컴프레서 제어기(304-2)는 프레임 디컴프레서(108-2)에 결합되고 그리고 다수의 코어들(110-1 내지 110-n)에 대한 프레임 디컴프레서(108-2)에 대한 액세스를 중재한다. 개별적으로 도시되어 있지만, 프레임 디컴프레서(108-2) 및 프레임 디컴프레서 제어기(304-2)는 논리적으로 함께 통합될 수 있다. 다수의 코어들(110-1 내지 110-n) 중 적어도 2개의 코어들(110)은 프레임 디컴프레서 제어기(304-2)에 연결된다. 따라서, 각각의 코어(110)는 프레임 디컴프레서 제어기(304-2)를 통해, 압축 해제된 프레임(112) 버전으로부터 프레임 디컴프레서(108-2)에 의해 생성된 압축 해제된 프레임(114)을 얻을 수 있다. 따라서, 압축 해제된 프레임(114)은, 예를 들어, 요청(116) 및 대응하는 응답(118)을 사용하여 획득될 수 있다.
아래 서술 중 일부는 적어도 압축 해제 동작들을 수행할 수 있는 구현들에 중점을 둔다. 따라서, 각각은 프레임 디컴프레서(108-2) 및 프레임 컴프레서-디컴프레서 제어기(304) 또는 프레임 디컴프레서 제어기(304-2)를 명시적으로 포함할 수 있다. 그러나, 각각의 구현은 압축 동작들을 수행하기 위해 프레임 컴프레서(108-2)를 추가로 또는 대안적으로 포함할 수 있다. 또한, 압축 동작들 및 압축된 프레임들(112)의 이동이 도 4 내지 도 6을 참조하여 압축 해제 동작들에 대해 서술된 것과 적어도 유사한 방식으로 달성될 수 있는 방법이 명백할 것이다. 또한, 도 7을 참조하여 서술된 요청 핸들링 및 도 8을 참조하여 서술된 시간 공유 프로토콜은 마찬가지로 압축 동작들을 위해 유사한 방식들로 구현될 수 있다.
코어들(110) 중 적어도 일부는 비디오 관련 목적으로 비디오 데이터 상에서 동작할 수 있다. 비디오 관련 목적들은: 비디오 디코딩, 비디오 디스플레잉, 비디오 트랜스코딩(예를 들어, 하나의 알고리즘을 사용하여 하나의 코딩 포맷으로부터 디코딩하고 다른 알고리즘을 사용하여 다른 코딩 포맷으로 인코딩), 비디오 보상(예를 들어, 이미지를 개선 또는 증강시키기 위해 GPU(graphics processing unit)에 의한 비디오 프레임에서의 동작) 등을 포함한다. 도 5를 참조하여, 제1 코어가 비디오 디코더로서 실현되고 그리고 제2 코어가 디스플레이 제어기로서 실현되는 예시적인 구현들이 이하에서 서술된다. 그러나, 프레임 압축 디컴프레서 제어기(304)의 예시적인 구현들이 도 4를 참조하여 먼저 서술된다.
도 4는 일반적으로 400에서 프레임 디컴프레서(108-2) 및 코어(110)와 함께 예시적인 프레임 컴프레서-디컴프레서 제어기(304)를 도시한다. 코어(110)는 FCD 클라이언트 인터페이스(410)를 포함하고, 그리고 프레임 디컴프레서 제어기(304)는 FCD 서비스 인터페이스(408)를 포함한다. FCD 클라이언트 인터페이스(410) 및 FCD 서비스 인터페이스(408)는 공동으로 코어(110)와 프레임 컴프레서-디컴프레서 제어기(304) 간의 통신을 가능하게 한다. 따라서, 이들 2개의 인터페이스들을 사용하여, 코어(110)는 요청(116)을 프레임 컴프레서-디컴프레서 제어기(304)로 전송할 수 있고, 프레임 컴프레서-디컴프레서 제어기(304)는 응답(118)을 코어(110)로 전송할 수 있다.
FCD 클라이언트 인터페이스(410) 및 FCD 서비스 인터페이스(408)는 시스템 버스(218)(도시되지 않음), 비디오 버스(218) 등을 통해 통신할 수 있다. 요청 (116)은 비트 라인, 레지스터의 하나 이상의 비트, 적어도 하나의 패킷으로 공식화된 메시지 등을 사용하여 통신될 수 있다. 압축 해제된 프레임(114)을 포함하는 응답(118)은, 코어(110)를 프레임 디컴프레서(108-2)에 결합시키는 버스를 사용하고, 코어(110) 및 프레임 디컴프레서(108-2)가 액세스하는 메모리를 사용하고, 또는 이들의 조합을 사용하여 통신될 수 있다. 상이한 인터페이스 통신들의 예는, 도 5 및 도 6을 참조하여 아래에서 서술된다.
도시된 바와 같이, 프레임 컴프레서-디컴프레서 제어기(304)는 요청 관리자(402), 요청 큐(404), 우선순위 관리자(406) 및 시간 공유 프로토콜 핸들러(412)를 포함한다. FCD 서비스 인터페이스(408)는 적어도 요청 관리자(402), 우선순위 관리자(406) 및 시간 공유 프로토콜 핸들러(412)에 연결된다. 요청들의 서비스 우선 순위를 정하는 것을 포함하여 요청들을 관리하기 위한 예시적인 방식이 도 7을 참조하여 아래에 서술된다. 프레임 디컴프레서(108-2)에 액세스하기 위한 시간 공유 프로토콜을 설정하기 위해 시간 공유 프로토콜 핸들러(412)를 사용하는 예시적인 방식이 도 8을 참조하여 아래에 서술된다.
도 5는, SoC의 다수의 코어들이 비디오 디코더(502) 및 디스플레이 제어기 (504)를 포함하는 비디오 프레임 코덱 아키텍처들을 구현하기 위한 예시적인 접근법(500)을 도시한다. 왼쪽에서, 비디오 디코더(502)는 프레임 컴프레서(108-1)를 포함하는 스트림 디코더(506)를 포함한다. 그러나, 프레임 컴프레서(108-1)는 스트림 디코더(506) 또는 비디오 디코더(502)와 별도로 구현될 수 있다. 오른쪽에서, 디스플레이 제어기(504)는 프레임 버퍼(518)를 포함한다. 프레임 디컴프레서(108-2), 프레임 컴프레서-디컴프레서 제어기(304)(FCD 제어기) 및 비디오 버퍼(206)는 비디오 디코더(502)와 관련된다. 예를 들어, 이들 3개의 컴포넌트들은 비디오 디코더(502)와 함께 위치될 수 있고 (예를 들어, 옆에 배치되거나 또는 물리적으로 혼합될 수 있음), 비디오 디코더(502)와 적어도 부분적으로 논리적으로 통합될 수 있거나 이들의 일부 조합일 수 있다. 비디오 디코더(502) 및 디스플레이 제어기 (504)를 참조하여 서술되었지만, 원리들은 일반적으로 코어들(110)에 적용 가능하다. 또한, 비디오 버퍼(206)가 공유 로컬 캐시(208)와 별도로 도시되어 있지만, 비디오 버퍼(206)는 대안적으로 공유 로컬 캐시(208)의 일부로서 포함될 수 있거나 또는 공유 로컬 캐시(208)로부터 할당될 수 있다.
예시적인 구현들에서, 전자 디바이스는 비디오를 표현하기 위해 인코딩된 비트들의 스트림을 포함할 수 있는 비디오 스트림(514)을 획득한다. 비디오 스트림(514)은 H.264와 같은 일부 코덱을 사용하여 인코딩된 다수의 원시 프레임들(516)으로 구성된다. 스트림 디코더(506)는 시스템 버스(218)를 통해 비디오 스트림(514)을 수신하고 비디오 스트림(514)을 디코딩하여 다수의 디코딩된 프레임 (512)을 생성하며, 그 중 하나가 명시적으로 도시되어 있다. 프레임 컴프레서(108-1)는 다수의 디코딩된 프레임들(512)을 압축하여 다수의 압축된 프레임들(112)을 생성한다. 도시된 바와 같이, 프레임 컴프레서(108-1)는 스트림 디코더(506)와 통합된다. 따라서, 프레임 컴프레서(108-1)는 디코딩 프로세스의 일부로서 디코딩된 프레임(512)을 압축할 수 있지만, 그러나, 프레임 압축은 대안적인 방식으로 구현될 수 있다. 이들 디코딩 및 압축된 프레임들(112)은 비디오 버퍼(206), 공유 로컬 캐시(208) 또는 메인 메모리(210)에서 비디오 디코더(502) 또는 다른 코어에 의한 후속 사용을 위해 저장될 수 있다.
디코딩 및 압축된 프레임들(112)은 상이한 비디오 관련 목적들로 사용될 수 있다. 예를 들어, 압축된 프레임이 추가 비디오 디코딩 목적으로 사용된다면, 압축된 프레임(112)은 압축된 참조 프레임(112R)을 포함할 수 있다. 대안적으로, 다른 압축된 프레임이 비디오 디스플레이 목적으로 사용된다면, 다른 압축된 프레임 (112)은 압축된 디스플레이 프레임(112D)을 포함할 수 있다. 비디오 디코더(502)의 비디오 디코딩 기능을 위해, 프레임 디컴프레서(108-2)는 압축 해제된 참조 프레임 (114R)을 생성하기 위해 압축된 참조 프레임(112R)을 압축 해제한다. 비디오 디코더(502)는 압축 해제된 참조 프레임(114R)을 사용하여 비디오 스트림(514)을 계속 디코딩할 수 있다.
디스플레이 제어기(504)의 비디오 디스플레이 기능을 위해, 프레임 디컴프레서(108-2)는 압축 해제된 디스플레이 프레임(114D)을 생성하기 위해 압축된 디스플레이 프레임(112D)을 압축 해제한다. 디스플레이 제어기(504)는 (예를 들어, 적어도 도 3b의 프레임 압축 디컴프레서 제어기(304-2)를 포함하는) 프레임 컴프레서-디컴프레서 제어기(304)로부터 이 압축 해제 서비스를, 프레임 디컴프레서 제어기 클라이언트 인터페이스(410) 및 프레임 디컴프레서 제어기 서비스 인터페이스(408)를 통해(도 4 모두), 요청할 수 있다. 프레임 컴프레서-디컴프레서 제어기(304)는 라우팅 메카니즘(510)(실선 물결 모양의 화살표로 표시됨)을 통해 압축 해제된 디스플레이 프레임(114D)을 디스플레이 제어기(504)에 제공한다. 디스플레이 제어기(504)는 압축 해제된 디스플레이 프레임(114D)을 프레임 버퍼(518)에 저장할 수 있다. 따라서, 디스플레이 제어기(504)는 저장된 압축 해제된 디스플레이 프레임 (114D)을 사용하여 디스플레이 스크린상에 비디오 프레임의 이미지를 제공할 수 있다. 도 5의 프레임 컴프레서-디컴프레서 제어기(304)는 다수의 코어들에 프레임 디컴프레서(108-2)를 갖는 압축 해제 서비스를 제공하는 관점에서 서술되지만, 이 원리들은 또한 프레임 컴프레서(108-1)를 갖는 압축 서비스를 다수의 코어들에 제공하는 프레임 컴프레서-디컴프레서 제어기(304)에도 적용 가능하다.
다수의 예시적인 라우팅 메커니즘들(510)이 작은 점선들을 사용하여 도 5에 표시되어있다. 라우팅 메커니즘들(510)은, 압축 해제된 프레임(114)을 비디오 디코더(502) 또는 디스플레이 제어기(504)와 같은 요청 코어에 제공하기 위해, 프레임 컴프레서-디컴프레서 제어기(304)에 대한 상이한 경로들을 나타낸다. 제1 라우팅 메커니즘(510-1)에서, 프레임 컴프레서-디컴프레서 제어기(304)는 시스템 버스 (218)를 통해 압축 해제된 디스플레이 프레임(114D)을 디스플레이 제어기(504)의 프레임 버퍼(518)에 제공한다. 제2 라우팅 메커니즘(510-2)에서, 프레임 컴프레서-디컴프레서 제어기(304)는 시스템 버스(218) 및 공유 로컬 캐시(208)를 통해 압축해제된 디스플레이 프레임(114D)을 디스플레이 제어기(504)에 제공한다. 예를 들어, 프레임 컴프레서-디컴프레서 제어기(304)는 압축 해제된 디스플레이 프레임(114D)을 공유 로컬 캐시(208)에 저장할 수 있고, 그리고 디스플레이 제어기(504)는 저장된 압축 해제된 디스플레이 프레임(114D)을 공유 로컬 캐시(208)로부터 검색할 수 있다.
제3 라우팅 메커니즘(510-3)에서, 프레임 컴프레서-디컴프레서 제어기(304)는 시스템 버스(218) 및 메인 메모리(210)를 통해 압축 해제된 디스플레이 프레임 (114D)을 디스플레이 제어기(504)에 제공한다. 예를 들어, 프레임 컴프레서-디컴프레서 제어기(304)는 시스템 버스(218) 및 외부 버스(222)를 통해 메인 메모리 (210)에 압축 해제된 디스플레이 프레임(114D) 오프 칩을 저장할 수 있다. 디스플레이 제어기(504)는 2개의 버스들을 사용하여 메인 메모리(210)로부터 저장된 압축 해제된 디스플레이 프레임(114D)을 검색할 수 있고, 이후, 프레임을 프레임 버퍼 (518)에 저장할 수 있다.
제4 라우팅 메커니즘(510-4)은 프레임 압축 해제 서비스의 클라이언트로서 비디오 디코더(502)를 서비스하는 것과 관련된다. 제4 라우팅 메커니즘(510-4)에서, 프레임 컴프레서-디컴프레서 제어기(304)는 압축 해제된 참조 프레임(114R)을 비디오 디코더(502)에 제공한다. 그렇게 하기 위해, 프레임 컴프레서-디컴프레서 제어기(304)는 압축 해제된 참조 프레임(114R)을 비디오 버퍼(206)로 전송한다. 비디오 디코더(502)는 비디오 버퍼(206)로부터 압축 해제된 참조 프레임(114R)에 액세스할 수 있다.
제5 라우팅 메커니즘(510-5)에서, 집적 회로가 비디오 버스(220) 및 시스템 버스(218)를 포함한다면, 프레임 컴프레서-디컴프레서 제어기(304)는 시스템 버스 (218)와 적어도 부분적으로 분리된 비디오 버스(220)를 통해 압축 해제된 디스플레이 프레임(114D)을 디스플레이 제어기(504)에 제공한다. 도시된 바와 같이, 비디오 버스(220)는 비디오 데이터의 전파에 전념하고 그리고 적어도 프레임 컴프레서-디컴프레서 제어기(304)와 디스플레이 제어기(504) 사이에서 연장된다. 그러나, 비디오 버스(220)는 다른 비디오 데이터를 다른 코어들로 그리고 다른 비디오 데이터를 다른 코어들로부터 운반하는 것과 같이 상이하게 구현될 수 있다.
제6 라우팅 메커니즘(510-6)에서, 프레임 컴프레서-디컴프레서 제어기(304)는 비디오 버퍼(206)를 통해 압축 해제된 디스플레이 프레임(114D)을 디스플레이 제어기(504)에 제공한다. 프레임 컴프레서-디컴프레서 제어기(304)는 비디오 버퍼(206)에 압축 해제된 디스플레이 프레임(114D)의 적어도 일부를 저장한다. 일 접근법에서, 디스플레이 제어기(504)는 적어도 시스템 버스(218)를 사용하여 비디오 버퍼(206)로부터 압축 해제된 디스플레이 프레임(114D)을 검색한다. 다른 접근법에서, 디스플레이 제어기(504)는 적어도 비디오 버스(220)(예를 들어, 시스템 버스 (218)와 별도로 존재하는 경우)를 사용하여 비디오 버퍼(206)로부터 압축 해제된 디스플레이 프레임(114D)을 검색한다. 어느 접근법이든, 제6 라우팅 메커니즘(510-6)은 비디오 버퍼(206)에 액세스하기 위해 디스플레이 컨트롤러(504)에 대한 메모리 매핑된 메커니즘을 더 수반할 수 있다. 메모리 매핑된 메커니즘에 대한 예시적인 구현이 도 6을 참조하여 다음에 설명된다.
도 6은 제6 라우팅 메커니즘(510-6)을 사용하여 압축 해제된 디스플레이 프레임(114D)을 비디오 디코더(502)로부터 디스플레이 제어기(504)로 라우팅하기 위한 예시적인 기술(600)을 도시한다. 이 예에서, 비디오 디코더(502)는 프레임 디컴프레서(108-2) 및 프레임 컴프레서-디컴프레서(304)와 통합된다. 비디오 디코더 (502)는 비디오 버퍼(206) 외에 동기화 레지스터(602)를 포함한다. 비디오 버퍼 (206)는 이 예에서 출력 버퍼로서 기능한다. 따라서, 프레임 컴프레서-디컴프레서 제어기(304)는 프레임 디컴프레서(108-2)로 하여금 압축 해제된 디스플레이 프레임 (114D)의 적어도 일부를 비디오 버퍼(206)에 저장하도록 한다.
제6 라우팅 메커니즘(510-6)을 위한 예시적인 기술(600)은 적어도 하나의 상태 통신(606)을 포함한다. 프레임 컴프레서-디컴프레서 제어기(304)와 동기화 레지스터(602) 사이에 제1 상태 통신(606-1)이 발생한다. 제2 상태 통신(606-2)은 디스플레이 제어기(504)와 동기화 레지스터(602) 사이에서 발생한다. 각각의 상태 통신 (606)은, 폴링 동작 또는 업데이트 동작을 포함할 수 있고, 그리고 시스템 버스(218) 또는 비디오 버스(220)를 통해 수행될 수 있다.
압축 해제된 디스플레이 프레임(114D)의 적어도 일부를 비디오 버퍼(206)에 저장하는 것에 응답하여, 프레임 컴프레서-디컴프레서 제어기(304)는 제1 상태 통신(606-1)의 업데이트 동작의 일부로서 동기화 레지스터(602)에 값(604)을 기록한다. 이 값(604)은 비디오 버퍼(206)의 콘텐츠의 저장된 상태를 나타낸다. 여기서, 값(604)은 압축 해제된 디스플레이 프레임(114D)의 하나 이상의 디스플레이 라인 (608)과 같은 특정 비디오 데이터가 비디오 버퍼(206)에 새롭게 배치되었음을 나타낸다. 따라서, 비디오 버퍼(206)는 하나 이상의 디스플레이 라인(608)을 보유하는 라인 버퍼로서 기능할 수 있다.
한편, 디스플레이 제어기(504)는 제2 상태 통신(606-2)의 폴링 동작의 일부로서 동기화 레지스터(602)로부터 값(604)을 추출한다. 값(604)에 기초하여, 디스플레이 제어기(504)는 요청된 압축 해제된 디스플레이 프레임(114D)의 하나 이상의 새로운 디스플레이 라인(608)이 존재하고 비디오 버퍼(206)에 이용 가능한 것으로 결정한다. 따라서, 디스플레이 제어기(504)는 값(604)에 따라 시스템 버스(218) 또는 비디오 버스(220)를 통해 비디오 버퍼(206)로부터 적어도 하나의 디스플레이 라인(608)을 검색한다. 검색에 응답하여, 디스플레이 제어기(504)는 대응하는 디스플레이 라인(608)의 검색된 상태를 나타내기 위해 제2 상태 통신(606-2)의 업데이트 동작의 일부로서 동기화 레지스터(602)에 다른 값(604)을 기입한다. 그러므로, 이 다른 값(604)은 적어도 하나의 대응하는 디스플레이 라인(608)이 비디오 버퍼(206)로부터 판독되었음을 나타낸다.
주기적으로 또는 어떤 동작의 일부로서, 프레임 컴프레서-디컴프레서 제어기(304)는 제1 상태 통신(606-1)의 일부로서 동기화 레지스터(602)를 폴링한다. 프레임 컴프레서-디컴프레서 제어기(304)는 다른 값(604)을 검사하여, 대응하는 디스플레이 라인(608)이 디스플레이 제어기(504)에 의해 액세스되고 검색되었는지를 결정한다. 그렇다면, 프레임 컴프레서-디컴프레서 제어기(304)는 대응하는 디스플레이 라인(608)의 메모리 위치가 새로운 데이터로 덮어쓰기될 수 있다는 것을 알고 있다.
값(604) 또는 다른 값(604)은 예를 들어 하나 이상의 비트를 포함할 수 있다. 값(604) 및 다른 값(604)은 동기화 레지스터(602)의 상이한 저장 위치 또는 동일한 저장 위치에 대응할 수 있다. 비디오 디코더(502) 및 디스플레이 제어기(504)를 참조하여 서술하였지만, 이들 원리들은 일반적으로 코어들(110)에 적용 가능하다. 동기화 레지스터(602)에서 값들(604)을 폴링하고 업데이트함으로써, 압축 해제된 디스플레이 프레임(114D)의 라우팅은 메모리 매핑된 전송 메커니즘을 사용하여 제어될 수 있다.
도 7은 압축 해제된 프레임들에 대한 다수의 코어들에 의해 발행된 요청들 (116)을 관리하기 위해 프레임 컴프레서-디컴프레서 제어기(304)에 의한 예시적인 방식(700)을 도시한다. 이 예에서, 비디오 디코더(502)는 프레임 디컴프레서(108-2) 및 프레임 컴프레서-디컴프레서 제어기(304)와 통합된다. 프레임 컴프레서-디컴프레서 제어기(304)는 요청 관리자(402), 요청 큐(404) 및 우선순위 관리자(406)(도 4에 도시됨)에 의해 표현된다. 도시된 바와 같이, 요청 큐(404)는 다수의 요청들(116)을 포함한다. 각각의 요청(116)은 우선순위(706)에 대응한다. 각각의 요청(116)은 또한 요청자 식별(702) 및 프레임 식 (704)을 포함하거나 대응한다.
압축 해제된 프레임에 대한 일부 요청들은 다른 요청들보다 더 중요하거나 일시적일 수 있다. 예를 들어, 스트리밍 비디오의 실시간 표현과 관련된 요청들은 백그라운드에서 최상의 노력으로 수행될 수 있는 비디오 트랜스코딩 동작에 대한 요청들보다 최종 사용자에게 더 중요할 수 있다. 따라서, 전자의 비디오 관련 목적에 대한 요청들은 후자의 비디오 관련 목적에 대한 요청보다 우선될 수 있다. 이를 위해, 우선순위(706)는 요청들, 코어들, 프레임들 등과 연관될 수 있다.
예시적인 구현에서, 요청자 식별(702)은 비디오 디코더(502) 또는 디스플레이 제어기(504)(도 5 및 도 6)와 같은 요청 코어(110)를 식별한다. 프레임 식별 (704)은 요청된 압축 해제된 프레임(114)을, 예컨대, 프레임 번호, 시간 인덱스 또는 그 오프셋에 의해 식별한다. 요청자 식별(702)은, 요청(116)을 제공하는데 사용되는 출발지 또는 버스(예를 들어, 전용 버스가 각각의 코어에 대해 각각 제공되는 경우)에 기초하여 하나 이상의 비트 라인에서 특정 전압 값들을 사용하여, 요청(116)과 함께 전송되는 할당된 식별 값으로 실현될 수 있다. 프레임 식별(704)은 각각의 요청(116)에 명시적으로 포함될 수 있으며, (예를 들어, 다음 순차 프레임이 필요한 경우), 요청(116)에 암시적으로 포함될 수 있고, 프레임들의 범위의 일부로 이전 요청에 포함될 수 있다.
작동시에, 요청 매니저(402)는, 예를 들어, 프레임 디컴프레서 제어기 서비스 인터페이스(408)를 통해, 코어(110)로부터 요청(116)을 수신한다. 요청 관리자 (402)는 요청(116)을 요청 큐(404)에 삽입한다. 일 접근법에서, 요청 관리자(402)는 선입 선출(FIFO) 방식으로 요청 큐(404)를 동작시킨다. 대안적으로, 요청 관리자(402)는 대응하는 우선순위(706)에 기초하여 각각의 요청(116)을 요청 큐(404)에 삽입할 수 있다. 각 개별 요청(116)의 해당 우선 순위(706)는 대응하는 개별 요청 (116)을 포함하거나 수반할 수 있다. 대안적으로, 우선순위(706)는 요청들의 그룹 (116)에 대해 대량으로 명시적으로 할당될 수 있거나, 또는 각각의 코어(110)는 연관된 코어(110)에 의해 발행된 각각의 요청(116)에 암시적으로 할당되는 특정 우선순위(706)와 연관될 수 있다.
도시된 바와 같이, 각각의 요청(116)은 상이한 우선순위들(706)을 갖는 요청들(116)이 동일한 요청 큐(404) 내에 저장되도록 대응하는 우선순위(706)와 관련하여 요청 큐(404)에 저장된다. 대안적으로, 프레임 컴프레서-디컴프레서 제어기(304)는 대응하는 우선순위(706)와 연관된 각각의 요청 큐(404)와 함께 다수의 요청 큐들(404)를 사용하여 예시된 요청 큐(404)를 구현할 수 있다. 그러므로, 각각의 요청(116)은 그 요청(116)에 대응하는 각각의 우선순위(706)와 연관된 각각의 요청 큐(404)에 저장된다.
도시된 요청 큐(404)를 구현하기 위해 사용된 접근법에 관계없이, 우선순위 관리자(406)는 다수의 요청들(116)에 각각 대응하는 다수의 우선순위들(706)에 따라 다수의 요청들(116)의 서비스를 주문한다. 따라서, 우선순위 관리자(406)는 둘 이상의 요청들(116) 사이의 상대적 우선순위에 기초한 우선순위 체계를 사용하여 다음 요청(116)을 추출한다. 우선순위 관리자(406)는 다음 요청(116)을 프레임 디컴프레서(108-2)로 전달한다. 프레임 디컴프레서(108-2)는 요청된 압축해제된 프레임(114)에 대응하는 압축된 프레임(112)을 검색한다. 도 5 및 도 6에 도시된 바와 같이, 프레임 디컴프레서(108-2)는 압축된 디스플레이 프레임(112D)을 검색하고, 그리고 압축 해제 동작을 수행하여 압축 해제된 디스플레이 프레임(114D)을 생성한다. 프레임 컴프레서-디컴프레서 제어기 인터페이스(408)는 프레임 디컴프레서(108-2)로 하여금 응답(118)의 일부로서 압축 해제된 디스플레이 프레임(114D)을 비디오 디코더(502)에 라우팅하도록 한다.
도 8은, 프레임 컴프레서(108-1)(예를 들어, 도 3-1의)와 같은 프레임 압축 리소스, 또는 프레임 디컴프레서(108-2)(예를 들어, 도 3-2의)와 같은 프레임 압축 해제 리소스를 공유하기 위해 적어도 하나의 시간 공유 프로토콜(800)을 설정하기 위한 프레임 컴프레서-디컴프레서 제어기(304)에 의한 예시적인 방식을 도시한다. 프레임 컴프레서-디컴프레서 제어기(304)(명시적으로 도시되지 않음)의 시간 공유 프로토콜 핸들러(412)는 적어도 하나의 예시적인 시간 공유 프로토콜(800-1, 800-2 또는 800-3)을 확립할 수 있다. 화살표(812)로 표시된 바와 같이, 시간은 오른쪽 방향으로 증가한다. 각각의 예시적인 시간 공유 프로토콜(800)은 2개의 코어들 사이에서 프레임 압축해제 리소스를 공유하는 관점에서 설명된다; 그러나, 개시된 시간 공유 프로토콜(800)은 둘 이상의 코어들 사이에서 프레임 압축 해제 리소스를 공유하는데 적용될 수 있다. 도 8은 프레임 압축 해제를 시간 공유하는 관점에서 설명되지만, 원리들은 또한 프레임 압축을 위한 시간 공유 프로토콜을 구현하는데에 적용 가능하다.
제1 시간 공유 프로토콜(800-1)을 사용하면, 시간이 여러 시간 슬롯으로 나뉜다. 이들 타임 슬롯들은 고정된 시간을 가지며, 각각의 타임 슬롯은 각각의 코어에 할당된다. 타임 슬롯(802-1)은 비디오 디코더(502)와 같은 제1 코어에 대응한다. 타임 슬롯(802-2)은 디스플레이 제어기(504)와 같은 제2 코어에 대응한다. 동작에서, 시간 공유 프로토콜 핸들러(412)는 2개의 상이한 타임 슬롯들의 규정된 길이들에서 2개의 코어들 사이의 프레임 압축 해제 리소스에 대한 액세스를 회전시킨다. 제1 시간 공유 프로토콜(800-1)에서는, 인터럽트들이 활성화되지 않는다.
대조적으로, 인터럽트(806)는 제2 시간 공유 프로토콜(800-2)로 인에이블된다. 여기서, 프레임 압축 해제 리소스는 일반적으로 이 예제의 제1 코어인 두 개의 클라이언트들 중 하나에 예약되어 있다. 따라서, 타임 슬롯(804-1)은 제1 코어에 대응하고 무한정 연장될 수 있다. 이들 타임 슬롯들(804-1)은 시간 공유 프로토콜 핸들러(412)가 인터럽트(806)를 수신할 때까지 연장된다. 코어(110)는 전용 비디오 버스를 사용하여, 인터럽트 라인을 높게 구동함으로써, 시스템 버스 상의 메시지를 통해 인터럽트(806)에 신호를 보낼 수 있다. 인터럽트(806)의 검출에 응답하여, 시간 공유 프로토콜 핸들러(412)는 컨텍스트 스위치를 개시하여 프레임 압축 해제 리소스에 대한 액세스를 상이한 코어로 전송하고 다른 타임 슬롯을 시작한다.
제2 시간 공유 프로토콜(800-2)에 도시된 바와 같이, 제2 코어는 인터럽트 (806a)를 발행한다. 시간 공유 프로토콜 핸들러(412)는 인터럽트(806a)를 검출하고 프레임 디컴프레서(108-2)에 대한 액세스를 인터럽트하는 제 2 코어로 전송한다. 따라서, 프레임 압축 디컴프레서(108-2)는 인터럽트(806a) 후 타임 슬롯(804-2) 동안 요청하는 제2 코어에 대한 압축 해제된 프레임(114)을 생성하기 위해 적어도 하나의 압축 해제 동작을 수행한다. 각각의 타임 슬롯(804-2)의 길이는, 고정될 수 있고, 제2 코어에 대해 얼마나 많은 요청들이 큐잉되는지에 의존할 수 있고, 각각의 큐잉된 요청의 우선 순위 레벨에 의존할 수 있다. 다른 타임 슬롯(804-1)에 대해 제1 코어에 다시 프레임 압축 해제 리소스에 대한 액세스가 부여된 후, 제2 코어는 이어서 다른 인터럽트(806b)를 발행할 수 있다. 대안적인 접근법에서, 제2 코어에 할당된 각각의 타임 슬롯(804- 2)는 다른 코어가 인터럽트를 발행할 때까지 계속될 수 있다(도시되지 않음). 따라서, 이 대안적인 접근법에서, 컨텍스트 스위칭은 인터럽트들(806)에 응답하여 경과된 시간과 무관하게 발생할 수 있다.
제3 시간 공유 프로토콜(800-3)을 사용하면, 시간은 여러 시간 슬롯들로 분할된다. 제3 시간 공유 프로토콜(800-3)은 제1 및 제2 시간공유 프로토콜의 하이브리드이다. 타임 슬롯(808-1)과 같은 일부 타임 슬롯들은, 중단될 수 없는 고정된 시간을 갖는다. 타임 슬롯(810-1)과 같은 다른 타임 슬롯들에는 다른 코어에 의해 중단될 수 있는 가변 시간이 있다. 도시된 바와 같이, 제1 코어는 타임 슬롯들(808-1 및 810-1)에 할당된다. 제2 코어로부터의 인터럽트(806c)는 타임 슬롯(808-1) 동안 도달한다. 그러나, 시간 공유 프로토콜 핸들러(412)는 이 인터럽트 (806c)를 무시(또는 큐잉)한다. 한편, 타임 슬롯(810-1) 동안 도달하는 인터럽트 (806d)는 컨텍스트 스위치를 트리거한다. 콘텍스트 스위치를 사용하면, 프레임 압축 해제 리소스는 인터럽트(806d) 후에 타임 슬롯(804-2)에 대한 제2 코어에 할당된다. 타임 슬롯(808-1) 동안 인터럽트(806c)가 (해제 대신에) 큐잉되면, 컨텍스트 스위치는, 타임 슬롯(808-1)의 종료에서, 또는 인터럽트(806c)에 응답하여 타임 슬롯(810-1)의 시작에서 개시될 수 있다.
비디오 프레임 코덱 아키텍처들을 위한 기술들 및 장치들이 구현될 수 있는 환경을 일반적으로 서술하였지만, 이 논의는 이제 예시적인 방법으로 이어진다.
예시적인 방법들
다음은 비디오 프레임 코덱 아키텍처들을 운영하는 방법에 대한 서술이다. 이들 방법들은 도 1 및 도 3에 도시된 전자 디바이스(102) 및 PCB(104)와 도 10에 도시된 전자 디바이스(1000)와 같은 이전에 서술된 예들을 이용하여 구현될 수 있다. 이들 방법의 양태들은 도 9에 도시되어 있으며, 이는 적어도 하나의 IC 칩의 하나 이상의 컴포넌트에 의해 수행되는 동작들(902 내지 912)로 도시되어 있다. 이들 방법의 동작들이 도시되고 그리고/또는 기술된 순서들은 제한적으로 해석되도록 의도되지 않으며, 서술된 방법 동작의 임의의 수 또는 조합은 방법 또는 대안적인 방법을 구현하기 위해 임의의 순서로 조합될 수 있다. 도 9의 흐름도는 프레임 디컴프레서(108-2)를 작동하는 관점에서 설명되지만, 원리들은 프레임 컴프레서(108-1)를 작동시키는 것과 유사하게 적용될 수 있다.
도 9는 비디오 프레임 코덱 아키텍처들을 동작시키기 위한 예시적인 방법 (900)을 도시하며, 이는 다수의 상이한 코어들에 프레임 압축 해제 서비스를 제공하는 회로에 의해 구현될 수 있다. 902에서, 제1 압축 해제된 프레임에 대한 제1 요청이 제1 코어로부터 수락된다. 예를 들어, 프레임 컴프레서-디컴프레서 제어기(304)(예를 들어, 프레임 컴프레서-디컴프레서 제어기 중 프레임 디컴프레서 제어기(304-2))는 제1 압축 해제된 프레임(114)에 대한 제1 요청(116)을 제1 코어 (110-1)로부터 수용할 수 있다. 수용은 시스템 버스(218), 비디오 버스(220), 동기화 레지스터(602) 등을 통해 수행될 수 있다.
904에서, 제1 압축 프레임은 압축 해제되어 제1 압축 해제 프레임을 생성한다. 예를 들어, 프레임 디컴프레서(108-2)는 제1 압축 해제 프레임(114)을 생성하기 위해 제1 압축 프레임(112)을 압축 해제할 수 있다. 제1 요청(116)의 서비스는 연관된 우선 순위(706)에 따라 수행될 수 있다.
906에서, 제1 압축 해제된 프레임은 제1 요청에 응답하여 제1 코어에 제공된다. 예를 들어, 프레임 컴프레서-디컴프레서 제어기(304)는 제1 요청(116)에 응답하여 제1 압축 해제된 프레임(114)을 제1 코어(110-1)에 제공할 수 있다. 제1 압축 해제 프레임(114)은 라우팅 메커니즘(500)을 사용하여 프레임 디컴프레서(108-2)로부터 제1 코어(110-1)로 전달될 수 있다.
908에서, 제2 압축 해제된 프레임에 대한 제2 요청이 제2 코어로부터 수락된다. 예를 들어, 프레임 컴프레서-디컴프레서 제어기(304)는 제2 압축 해제된 프레임(114)에 대한 제2 요청(116)을 제2 코어(110-2)로부터 수용할 수 있다. 제1 코어(110-1)는 디스플레이 제어기(504)를 포함할 수 있고, 그리고 제2 코어(110-2)는 비디오 디코더(502)를 포함할 수 있다.
910에서, 제2 압축 프레임은 압축 해제되어 제2 압축 해제 프레임을 생성한다. 예를 들어, 프레임 디컴프레서(108-2)는 제2 압축 해제 프레임(114)을 생성하기 위해 제2 압축 프레임(112)을 압축 해제할 수 있다. 압축 해제는 무손실 압축/압축 해제 알고리즘을 사용하여 수행될 수 있다. 912에서, 제2 압축 해제된 프레임은 제2 요청에 응답하여 제2 코어에 제공된다. 예를 들어, 프레임 컴프레서-디컴프레서 제어기(304)는 제2 요청(116)에 응답하여 제2 압축 해제된 프레임(114)을 제 2 코어(110-2)에 제공할 수 있다. 제2 압축 해제 프레임(114)을 획득한 후, 제2 코어(110-2)는 대응하는 비디오 관련 기능에 따라 프레임을 처리할 수 있다.
전술한 논의는 비디오 프레임 코덱 아키텍처들과 관련된 방법을 서술한다. 이들 방법들의 양태들은, 예를 들어, 하드웨어(예를 들어, 고정 논리 회로), 펌웨어 또는 이들의 일부 조합으로 구현될 수 있다. 이들 기술들은 도 1 내지 도 8 및도 10(전자 디바이스(1000)은 아래의 도 10에 서술되어 있음)에 도시된 엔티티들 또는 컴포넌트들 중 하나 이상을 사용하여 실현될 수 있고, 이는 추가로 분할되거나 결합될 수 있다. 따라서, 이들 도면들은 서술된 기술들을 이용할 수 있는 많은 가능한 시스템들 또는 장치들 중 일부를 도시한다. 이들 도면들의 엔티티들 및 컴포넌트들은 일반적으로 펌웨어, 하드웨어, IC 칩들, 회로들 또는 이들의 조합을 나타낸다.
예시적인 전자 디바이스
도 10은 이전의 도 1 내지 도 9 중 어느 하나를 참조하여 서술된 하나 이상의 구현에 따라 비디오 프레임 코덱 아키텍처를 구현할 수 있는 예시적인 전자 디바이스(1000)의 다양한 컴포넌트들을 도시한다. 전자 디바이스(1000)는 소비자, 컴퓨터, 휴대용, 사용자, 서버, 통신, 전화, 내비게이션, 게임, 오디오, 카메라, 메시징, 미디어 재생 및/또는 도 1에 도시된 스마트 폰과 같은 다른 유형의 전자 디바이스(102)의 임의의 형태로 고정 또는 모바일 장치 중 임의의 하나 또는 조합으로 구현될 수 있다.
전자 디바이스(1000)는, 수신된 데이터, 전송된 데이터, 또는 전술한 다른 정보와 같은 디바이스 데이터(1004)의 유선 및/또는 무선 통신을 가능하게 하는 통신 송수신기들(1002)을 포함한다. 예시적인 통신 송수신기들(1002)은, NFC 송수신기들, 다양한 IEEE 802.15(Bluetooth ™) 표준들을 준수하는 WPAN 무선 통신들, 다양한 IEEE 802.11(WiFi ™) 표준들 중 임의의 것을 준수하는 WLAN 무선 통신들, 셀룰러 전화 통신을 위한 WWAN(3GPP 호환) 무선 통신들, 다양한 IEEE 802.16(WiMAX ™) 표준들을 준수하는 WMAN(Wireless Metropolitan Area Network) 무선 통신, 및 유선 LAN(Local Area Network) 이더넷 송수신기를 포함한다.
전자 디바이스(1000)는, 또한, 하나 이상의 데이터 입력 포트(1006)를 포함할 수 있고, 이를 통해, 임의의 유형의 데이터, 미디어 콘텐츠, 다른 입력들, 예를 들어, 사용자 선택 가능 입력들, 메시지들, 애플리케이션들, 음악, 텔레비전 컨텐츠, 녹화된 비디오 컨텐츠, 및 임의의 컨텐츠 및/또는 데이터 소스로부터 수신된 임의의 다른 유형의 오디오, 비디오 및/또는 이미지 데이터를 수신할 수 있다. 데이터 입력 포트들(1006)은 USB 포트들, 동축 케이블 포트들, 및 플래시 메모리, DVD들, CD 등을 위한 다른 직렬 또는 병렬 커넥터(내부 커넥터 포함)를 포함할 수 있다. 이러한 데이터 입력 포트들(1006)는 전자 디바이스를 컴포넌트들, 주변 장치들, 또는 키보드들, 마이크들 또는 카메라들과 같은 액세서리들에 연결하는데 사용될 수 있다.
이 예의 전자 디바이스(1000)는 적어도 하나의 프로세서(1008)(예를 들어, 임의의 하나 이상의 애플리케이션 프로세서들, 마이크로 프로세서들, 디지털 신호 프로세서(DSP)들, 제어기들 등)를 포함하고, 이는, 컴퓨터 판독 가능 매체에 저장된 컴퓨터 실행 가능 명령어들을 처리(예를 들어, 실행)하여 디바이스의 동작을 제어하는 결합된 프로세서 및 메모리 시스템(예를 들어, SoC의 일부로서 구현됨)을 포함할 수 있다. 프로세서(1008)는 애플리케이션 프로세서, 임베딩된 제어기, 마이크로 컨트롤러, SoC 등으로 구현될 수 있다. 일반적으로, 프로세서 또는 프로세싱 시스템은 적어도 부분적으로 하드웨어로 구현될 수 있으며, 이는 집적 회로 또는 온칩 시스템의 컴포넌트들, DSP(digital-signal processor), ASIC(application-specific integrated circuit), FPGA(field-programmable gate array), CPLD(complex programable logic device) 및 실리콘 및/또는 기타 하드웨어의 다른 구현들을 포함할 수 있다.
대안적으로 또는 추가적으로, 전자 디바이스(1000)는, 프로세싱 및 제어 회로(이는 일반적으로 (전자 회로(1010)로서) 1010에 표시됨)들과 관련하여 구현되는 소프트웨어, 하드웨어, 펌웨어 또는 고정 논리 회로를 포함할 수 있는 전자 회로의 임의의 하나 또는 조합으로 구현될 수 있다. 이 전자 회로(1010)는 논리 회로 및/또는 하드웨어(예를 들어, FPGA와 같은) 등을 통해 실행 가능 또는 하드웨어 기반 모듈들(도시되지 않음)을 구현할 수 있다.
도시되지는 않았지만, 전자 디바이스(1000)는 디바이스 내의 다양한 컴포넌트들을 연결하는 시스템 버스, 상호 접속부, 크로스바 또는 데이터 전송 시스템을 포함할 수 있다. 시스템 버스 또는 상호 접속부에는 서로 다른 버스 구조 중 하나 또는 조합들, 예를 들어, 메모리 버스 또는 메모리 제어기, 주변 장치 버스, 범용 직렬 버스 및/또는 다양한 버스 아키텍처들 중 임의의 것을 이용하는 프로세서 또는 로컬 버스와 같은 시스템을 포함할 수 있다.
전자 디바이스(1000)는 또한 데이터 저장을 가능하게 하는 하나 이상의 메모리 디바이스(1012)를 포함하고, 그 예는 랜덤 액세스 메모리(RAM), 비 휘발성 메모리(예를 들어, ROM(read-only memory), 플래시 메모리, EPROM 및 EEPROM) 및 디스크 저장 장치를 포함한다. 메모리 디바이스(들)(1012)은 장치 데이터(1004), 다른 유형의 코드 및/또는 데이터, 및 다양한 장치 애플리케이션들(1020)(예를 들어, 소프트웨어 애플리케이션 또는 프로그램)을 저장하기 위한 데이터 저장 메커니즘들을 제공한다. 예를 들어, 운영 시스템(1014)은 메모리 디바이스(1012) 내의 소프트웨어 명령어들로서 유지될 수 있고 프로세서(1008)에 의해 실행될 수 있다.
도시된 바와 같이, 전자 디바이스(1000)는 또한 오디오 데이터를 처리하고 그리고/또는 오디오 및 비디오 데이터를 오디오 시스템 (1018) 및/또는 디스플레이 시스템(1022)(예를 들어, 비디오 버퍼 또는 스마트 폰 또는 카메라의 화면)으로 전달하는 오디오 및/또는 비디오 처리 시스템(1016)을 포함한다. 오디오 시스템(1018) 및/또는 디스플레이 시스템(1022)은 오디오, 비디오, 디스플레이 및/또는 이미지 데이터를 처리, 디스플레이 및/또는 렌더링하는 임의의 디스플레이들을 포함할 수 있다. 디스플레이 데이터 및 오디오 신호들은, RF(무선 주파수) 링크, S-비디오 링크, HDMI(고화질 멀티미디어 인터페이스), 컴포지트 비디오 링크, 컴포넌트 비디오 링크, DVI(디지털 비디오 인터페이스), 아날로그 오디오 연결, 또는 미디어 데이터 포트 1024와 같은 기타 유사한 통신 링크를 통해 오디오 컴포넌트 및/또는 디스플레이 컴포넌트들과 통신될 수 있다. 일부 구현들에서, 오디오 시스템(1018) 및/또는 디스플레이 시스템(1022)은 전자 디바이스(1000)의 외부 또는 개별 컴포넌트들이다. 대안적으로, 디스플레이 시스템(1022)은 통합 터치 인터페이스의 일부와 같은 예시적인 전자 디바이스(1000)의 통합 컴포넌트일 수 있다.
도 10의 전자 디바이스(1000)는 도 1의 전자 디바이스(102)의 예시적인 구현이다. 따라서, 프로세서(1008)는 (예를 들어, 각각 도 1, 2 및 3의) 집적 회로(106), 프로세서(202) 또는 SoC(302)의 예이다. 따라서, 도 10에 도시된 바와 같이, 프로세서(1008)는 프레임 컴프레서-디컴프레서(108), 다수의 코어들(110-1 내지 110-n) 및 프레임 컴프레서-디컴프레서 제어기(304)를 포함할 수 있다. 도 10에서, (예를 들어, 각각 도 2, 3, 5 또는 6의) 비디오 버퍼(206), 공유 로컬 캐시(208) 및 메인 메모리(210)는, 예를 들어, 하나 이상의 메모리 디바이스(1012)의 일부로서 메모리 시스템의 적어도 일부를 형성하는 것으로 도시되어 있다. 전술한 바와 같이, 이들 메모리 컴포넌트들 중 하나 이상은 프로세서(1008)와 동일한 집적 회로의 일부일 수 있거나(예를 들어, 비디오 버퍼 (206) 및 공유 로컬 캐시(208)는 도 3의 SoC(302)의 일부임), 또는 별도의 다이에 위치하거나 상이한 인쇄 회로 기판에 배치될 수도 있다. 따라서, 여기에 서술된 비디오 프레임 코덱 아키텍처들의 원리들은 도 10의 전자 디바이스(1000)에 의해 또는 전자 디바이스(1000)와 관련하여 구현될 수 있다.
비디오 프레임 코덱 아키텍처들에 대한 구현들이 특정 피처들 및/또는 방법들에 특정한 언어로 서술되었지만, 첨부된 청구 범위의 주제는 서술된 특정 피처들 또는 방법들에 반드시 제한되는 것은 아니다. 오히려, 특정 피처들 및 방법들은 비디오 프레임 코덱 아키텍처들을 위한 예시적인 구현들로서 개시된다.

Claims (20)

  1. 전자 디바이스로서,
    다수의 압축 해제된 프레임들을 생성하기 위해 다수의 압축된 프레임들을 프레임 레벨에서 개별적으로 압축 해제하도록 구성된 프레임 디컴프레서(frame decompressor) - 상기 다수의 압축된 프레임들은 각각 다수의 디코딩된 프레임들로부터 도출되며 - 와;
    상기 프레임 디컴프레서에 연결되고 그리고 다수의 코어들에 대한 상기 프레임 디컴프레서로의 액세스를 중재하도록 구성된 프레임 디컴프레서 제어기와;
    상기 프레임 디컴프레서 제어기에 연결된 상기 다수의 코어들 중 제1 코어와; 그리고
    상기 프레임 디컴프레서 제어기에 연결된 상기 다수의 코어들 중 제2 코어를 포함하고,
    상기 제1 코어는, 상기 프레임 디컴프레서에 의해 상기 프레임 레벨에서 생성된 상기 다수의 압축 해제된 프레임들 중 하나의 압축 해제된 프레임을 상기 프레임 디컴프레서 제어기를 통해 획득하도록 구성되고, 그리고
    상기 제2 코어는, 상기 프레임 디컴프레서에 의해 상기 프레임 레벨에서 생성된 상기 다수의 압축 해제된 프레임들 중 다른 압축 해제된 프레임을 상기 프레임 디컴프레서 제어기를 통해 획득하도록 구성되는 것을 특징으로 하는
    전자 디바이스.
  2. 제1항에 있어서,
    상기 제1 코어는 상기 하나의 압축 해제된 프레임을 제1 비디오 관련 목적으로 사용하도록 구성되고;
    상기 제2 코어는 상기 다른 압축 해제된 프레임을 제2 비디오 관련 목적으로 사용하도록 구성되며; 그리고
    상기 제1 비디오 관련 목적 및 상기 제2 비디오 관련 목적은, 비디오 디코딩, 비디오 디스플레이, 비디오 트랜스코딩 또는 비디오 보상(video compensation)을 포함하는 비디오 관련 목적들의 그룹으로부터 선택된 상이한 비디오 관련 목적들을 포함하는 것을 특징으로 하는
    전자 디바이스.
  3. 제1항에 있어서,
    상기 제1 코어는 다수의 디코딩된 프레임들을 생성하기 위해 비디오 스트림을 디코딩하도록 구성된 비디오 디코더를 포함하고,
    상기 프레임 디컴프레서는 상기 비디오 디코더와 논리적으로 통합되고, 그리고
    상기 제2 코어는 디스플레이 제어기를 포함하는 것을 특징으로 하는
    전자 디바이스.
  4. 제1항에 있어서,
    상기 프레임 디컴프레서 제어기는:
    각각의 요청이 적어도 하나의 압축 해제된 프레임에 대응하는, 다수의 요청들을 저장하도록 구성된 요청 큐(request queue)와; 그리고
    상기 다수의 코어들로부터 상기 다수의 요청들을 수신하고 그리고 상기 다수의 요청들을 상기 요청 큐에 삽입하도록 구성된 요청 관리자를 포함하는 것을 특징으로 하는
    전자 디바이스.
  5. 제4항에 있어서,
    상기 프레임 디컴프레서 제어기는, 상기 다수의 요청들에 대응하는 다수의 우선 순위들에 따라 상기 다수의 요청들에 대한 서비스를 주문하도록 구성된 우선 순위 관리자를 포함하는 것을 특징으로 하는
    전자 디바이스.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 프레임 디컴프레서 제어기는, 상기 다수의 코어들 사이에서 상기 프레임 디컴프레서를 공유하기 위한 시간 공유 프로토콜(time-sharing protocol)을 설립하도록 구성된 시간 공유 프로토콜 핸들러를 포함하는 것을 특징으로 하는
    전자 디바이스.
  7. 전자 디바이스로서,
    다수의 압축 해제된 프레임들을 생성하기 위해 다수의 압축된 프레임들을 압축 해제하도록 구성된 프레임 디컴프레서와;
    상기 프레임 디컴프레서에 연결되고 그리고 다수의 코어들에 대한 상기 프레임 디컴프레서로의 액세스를 중재하도록 구성된 프레임 디컴프레서 제어기 - 상기 프레임 디컴프레서 제어기는, 상기 다수의 코어들 사이에서 상기 프레임 디컴프레서를 공유하기 위한 시간 공유 프로토콜을 설립하도록 구성된 시간 공유 프로토콜 핸들러를 포함하고, 상기 시간 공유 프로토콜 핸들러는: 상기 다수의 코어들 중 적어도 하나의 코어에 할당된 다수의 타임 슬롯들을 포함하도록 상기 시간 공유 프로토콜을 설립하는 것, 또는 상기 다수의 코어들 중 하나의 코어로부터 인터럽트 신호를 수신할 수 있도록 상기 시간 공유 프로토콜을 설립하는 것 중 적어도 하나를 수행하고, 상기 인터럽트 신호는 적어도 하나의 압축 해제된 프레임에 대한 요청을 나타내며 - 와;
    상기 프레임 디컴프레서 제어기에 연결된 상기 다수의 코어들 중 제1 코어와; 그리고
    상기 프레임 디컴프레서 제어기에 연결된 상기 다수의 코어들 중 제2 코어를 포함하고,
    상기 제1 코어는, 상기 프레임 디컴프레서에 의해 생성된 상기 다수의 압축 해제된 프레임들 중 하나의 압축 해제된 프레임을 상기 프레임 디컴프레서 제어기를 통해 획득하도록 구성되고, 그리고
    상기 제2 코어는, 상기 프레임 디컴프레서에 의해 생성된 상기 다수의 압축 해제된 프레임들 중 다른 압축 해제된 프레임을 상기 프레임 디컴프레서 제어기를 통해 획득하도록 구성되는 것을 특징으로 하는
    전자 디바이스.
  8. 제1항 내지 제5항 중 어느 한 항에 있어서,
    하나 이상의 압축된 프레임들을 생성하기 위해 하나 이상의 압축되지 않은 프레임들을 상기 프레임 레벨에서 개별적으로 압축하도록 구성된 프레임 컴프레서와; 그리고
    상기 프레임 컴프레서에 결합되고 그리고 상기 다수의 코어들에 대한 상기 프레임 컴프레서로의 액세스를 중재하도록 구성된 프레임 컴프레서 제어기를 더 포함하는 것을 특징으로 하는
    전자 디바이스.
  9. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 프레임 디컴프레서와 관련된 비디오 버퍼와; 그리고
    상기 비디오 버퍼에 대응하는 동기화 레지스터를 더 포함하고,
    상기 동기화 레지스터는, 상기 비디오 버퍼의 콘텐츠의 상태를 나타내는 하나 이상의 값을 저장하도록 구성되며,
    상기 프레임 디컴프레서는 상기 다수의 압축 해제된 프레임들 중 하나의 적어도 일부를 상기 비디오 버퍼에 저장하도록 구성되고, 그리고
    상기 프레임 디컴프레서 제어기는 상기 저장된 부분의 상태를 나타내는 적어도 하나의 값을 상기 동기화 레지스터에 기입하도록 구성되는 것을 특징으로 하는
    전자 디바이스.
  10. 다수의 코어들 사이에서 프레임 압축 해제 회로를 공유하는 방법으로서,
    제1 압축된 프레임을 생성하기 위해 제1 디코딩된 프레임을 프레임 레벨에서 압축하는 단계와;
    제2 압축된 프레임을 생성하기 위해 제2 디코딩된 프레임을 상기 프레임 레벨에서 압축하는 단계와;
    제1 코어로부터, 제1 압축 해제된 프레임에 대한 제1 요청을 받아들이는 단계와;
    상기 제1 압축 해제된 프레임을 생성하기 위해 상기 제1 압축된 프레임을 상기 프레임 레벨에서 개별적으로 압축 해제하는 단계와;
    상기 제1 요청에 응답하여, 상기 제1 압축 해제된 프레임을 상기 제1 코어에 제공하는 단계와;
    제2 압축 해제된 프레임에 대한 제2 요청을 제2 코어로부터 받아들이는 단계와;
    상기 제2 압축 해제된 프레임을 생성하기 위해 상기 제2 압축된 프레임을 상기 프레임 레벨에서 개별적으로 압축 해제하는 단계와; 그리고
    상기 제2 요청에 응답하여 상기 제2 압축 해제된 프레임을 상기 제2 코어에 제공하는 단계를 포함하는 것을 특징으로 하는
    프레임 압축 해제 회로를 공유하는 방법.
  11. 제10항에 있어서,
    제3 코어로부터, 제3 압축 해제된 프레임에 대한 제3 요청을 받아들이는 단계와;
    상기 제3 압축 해제된 프레임을 생성하기 위해 제3 압축된 프레임을 상기 프레임 레벨에서 개별적으로 압축 해제하는 단계와; 그리고
    상기 제3 요청에 응답하여, 상기 제3 압축 해제된 프레임을 상기 제3 코어에 제공하는 단계를 포함하고,
    상기 제1 요청은 상기 제1 코어를 표시하고,
    상기 제2 요청은 상기 제2 코어를 표시하고, 그리고
    상기 제3 요청은 상기 제3 코어를 표시하는 것을 특징으로 하는
    프레임 압축 해제 회로를 공유하는 방법.
  12. 제10항에 있어서,
    적어도 상기 제1 코어 및 상기 제2 코어에 의해 상기 프레임 압축 해제 회로로의 액세스를 위해 시간 공유 프로토콜을 설립하는 단계를 포함하는 것을 특징으로 하는
    프레임 압축 해제 회로를 공유하는 방법.
  13. 제12항에 있어서,
    상기 설립하는 단계는:
    상기 제1 코어에 대응하는 타임슬롯 동안, 상기 제2 코어로부터의 인터럽트를 수신하는 단계와; 그리고
    상기 인터럽트의 수신에 응답하여, 상기 제1 코어에 대한 압축 해제를 수행하는 것으로부터 상기 제2 코어에 대한 압축 해제를 수행하는 것으로 스위칭하는 단계를 포함하는 것을 특징으로 하는
    프레임 압축 해제 회로를 공유하는 방법.
  14. 제10항 내지 제13항 중 어느 한 항에 있어서,
    상기 제1 압축 해제된 프레임의 제공 및 상기 제2 압축 해제된 프레임의 제공을, 상기 제1 요청과 상기 제2 요청 사이의 상대적인 우선순위에 적어도 부분적으로 의존하는 순서로 수행하는 단계를 더 포함하는 것을 특징으로 하는
    프레임 압축 해제 회로를 공유하는 방법.
  15. 제10항 내지 제13항 중 어느 한 항에 있어서,
    상기 제2 압축 해제된 프레임은 하나의 라인 및 추가 라인을 포함하고; 그리고
    상기 제2 압축 해제된 프레임을 제공하는 단계는 :
    비디오 버퍼에 대한 상기 라인의 판독 상태를 나타내는 적어도 하나의 값을 얻기 위해 동기화 레지스터를 폴링하는 단계와; 그리고
    상기 적어도 하나의 값에 응답하여, 상기 추가 라인을 상기 비디오 버퍼에 저장하는 단계를 포함하는 것을 특징으로 하는
    프레임 압축 해제 회로를 공유하는 방법.
  16. 제10항 내지 제13항 중 어느 한 항에 있어서,
    다수의 코어들로부터, 다수의 압축된 프레임들 각각에 대한 다수의 요청들을 받아들이는 단계와;
    상기 다수의 압축된 프레임들을 각각 생성하기 위해 다수의 압축 해제된 프레임들을 압축하는 단계와; 그리고
    상기 다수의 요청들에 응답하여 상기 다수의 압축된 프레임들을 상기 다수의 코어들에 제공하는 단계를 포함하는 것을 특징으로 하는
    프레임 압축 해제 회로를 공유하는 방법.
  17. 제6항에 있어서,
    상기 시간 공유 프로토콜 핸들러는:
    상기 다수의 코어들 중 적어도 하나의 코어에 할당된 다수의 타임 슬롯들을 포함하도록 상기 시간 공유 프로토콜을 설립하는 것, 또는
    상기 다수의 코어들 중 하나의 코어로부터 인터럽트 신호를 수신할 수 있도록 상기 시간 공유 프로토콜을 설립하는 것 중 적어도 하나를 수행하고,
    상기 인터럽트 신호는 적어도 하나의 압축 해제된 프레임에 대한 요청을 나타내는 것을 특징으로 하는
    전자 디바이스.
  18. 제8항에 있어서,
    상기 프레임 컴프레서는, 상기 다수의 압축된 프레임들을 생성하기 위해 상기 다수의 디코딩된 프레임들을 상기 프레임 레벨에서 개별적으로 압축하도록 구성되는 것을 특징으로 하는
    전자 디바이스.
  19. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 프레임 디컴프레서는, 상기 다수의 압축된 프레임들로부터 각각 상기 다수의 압축 해제된 프레임들을 생성하기 위해 무손실 프레임 레벨 압축 알고리즘을 구현하도록 구성되는 것을 특징으로 하는
    전자 디바이스.
  20. 제7항에 있어서,
    상기 제1 코어는, 다수의 디코딩된 프레임들을 생성하기 위해 비디오 스트림을 디코딩하도록 구성된 비디오 디코더를 포함하고;
    상기 프레임 디컴프레서는 상기 비디오 디코더와 논리적으로 통합되며; 그리고
    상기 제2 코어는 디스플레이 제어기를 포함하는 것을 특징으로 하는
    전자 디바이스.
KR1020217032361A 2017-10-31 2018-07-13 비디오 프레임 코덱 아키텍처들 KR102442576B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227030753A KR20220127368A (ko) 2017-10-31 2018-07-13 비디오 프레임 코덱 아키텍처들

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201762579820P 2017-10-31 2017-10-31
US62/579,820 2017-10-31
US15/844,334 US10659797B2 (en) 2017-10-31 2017-12-15 Video frame codec architectures
US15/844,334 2017-12-15
KR1020197032379A KR20190133756A (ko) 2017-10-31 2018-07-13 비디오 프레임 코덱 아키텍처들
PCT/US2018/042164 WO2019089101A1 (en) 2017-10-31 2018-07-13 Video frame codec architectures

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020197032379A Division KR20190133756A (ko) 2017-10-31 2018-07-13 비디오 프레임 코덱 아키텍처들

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227030753A Division KR20220127368A (ko) 2017-10-31 2018-07-13 비디오 프레임 코덱 아키텍처들

Publications (2)

Publication Number Publication Date
KR20210127770A true KR20210127770A (ko) 2021-10-22
KR102442576B1 KR102442576B1 (ko) 2022-09-13

Family

ID=66245745

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020217032361A KR102442576B1 (ko) 2017-10-31 2018-07-13 비디오 프레임 코덱 아키텍처들
KR1020227030753A KR20220127368A (ko) 2017-10-31 2018-07-13 비디오 프레임 코덱 아키텍처들
KR1020197032379A KR20190133756A (ko) 2017-10-31 2018-07-13 비디오 프레임 코덱 아키텍처들

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020227030753A KR20220127368A (ko) 2017-10-31 2018-07-13 비디오 프레임 코덱 아키텍처들
KR1020197032379A KR20190133756A (ko) 2017-10-31 2018-07-13 비디오 프레임 코덱 아키텍처들

Country Status (7)

Country Link
US (4) US10659797B2 (ko)
EP (1) EP3603068A1 (ko)
JP (3) JP7057378B2 (ko)
KR (3) KR102442576B1 (ko)
CN (4) CN115460418A (ko)
TW (5) TWI759250B (ko)
WO (1) WO2019089101A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10659797B2 (en) 2017-10-31 2020-05-19 Google Llc Video frame codec architectures
CN112083875B (zh) * 2019-06-12 2022-09-30 三星电子株式会社 用于在存储系统中减少读取端口并加速解压缩的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050063459A1 (en) * 2003-09-22 2005-03-24 Jeyhan Karaoguz Multiple decode user interface
WO2006121472A1 (en) * 2005-01-10 2006-11-16 Quartics, Inc. Integrated architecture for the unified processing of visual media
JP2009302704A (ja) * 2008-06-11 2009-12-24 Panasonic Corp デコード装置、情報処理システムおよび動画像記録再生システム

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6058459A (en) 1996-08-26 2000-05-02 Stmicroelectronics, Inc. Video/audio decompression/compression device including an arbiter and method for accessing a shared memory
US6157740A (en) 1997-11-17 2000-12-05 International Business Machines Corporation Compression/decompression engine for enhanced memory storage in MPEG decoder
US7085319B2 (en) 1999-04-17 2006-08-01 Pts Corporation Segment-based encoding system using segment hierarchies
US6717989B1 (en) 1999-11-03 2004-04-06 Ati International Srl Video decoding apparatus and method for a shared display memory system
KR100320476B1 (ko) 2000-01-12 2002-01-15 구자홍 비디오 디코더 및 디코딩 방법
US8964830B2 (en) 2002-12-10 2015-02-24 Ol2, Inc. System and method for multi-stream video compression using multiple encoding formats
US7903743B2 (en) * 2005-10-26 2011-03-08 Mediatek Inc. Memory sharing in video transcoding and displaying
JP4797577B2 (ja) 2005-10-31 2011-10-19 ソニー株式会社 電池
JP2007201995A (ja) * 2006-01-30 2007-08-09 Matsushita Electric Ind Co Ltd 映像データ転送処理装置および監視カメラシステム
JP4384130B2 (ja) * 2006-03-28 2009-12-16 株式会社東芝 動画像復号方法及び装置
US8494227B2 (en) 2007-04-17 2013-07-23 Francine J. Prokoski System and method for using three dimensional infrared imaging to identify individuals
US8121197B2 (en) 2007-11-13 2012-02-21 Elemental Technologies, Inc. Video encoding and decoding using parallel processors
US8194736B2 (en) 2008-04-15 2012-06-05 Sony Corporation Video data compression with integrated lossy and lossless compression
EP2151970B1 (en) 2008-08-09 2011-08-03 Saffron Digital Limited Processing and supplying video data
US8781000B2 (en) * 2010-12-30 2014-07-15 Vixs Systems, Inc. Dynamic video data compression
US9148670B2 (en) * 2011-11-30 2015-09-29 Freescale Semiconductor, Inc. Multi-core decompression of block coded video data
US9277218B2 (en) 2013-01-22 2016-03-01 Vixs Systems, Inc. Video processor with lossy and lossless frame buffer compression and methods for use therewith
US9313493B1 (en) 2013-06-27 2016-04-12 Google Inc. Advanced motion estimation
US9351003B2 (en) * 2013-09-27 2016-05-24 Apple Inc. Context re-mapping in CABAC encoder
CN105992005A (zh) * 2015-03-04 2016-10-05 广州市动景计算机科技有限公司 视频解码方法、装置及终端设备
TWI577178B (zh) * 2016-01-06 2017-04-01 睿緻科技股份有限公司 影像處理裝置及其影像壓縮方法
TW201725908A (zh) 2016-01-07 2017-07-16 鴻海精密工業股份有限公司 視頻解碼方法
US9712830B1 (en) * 2016-09-15 2017-07-18 Dropbox, Inc. Techniques for image recompression
US10176761B2 (en) * 2017-02-23 2019-01-08 Synaptics Incorporated Compressed data transmission in panel display system
US10659797B2 (en) 2017-10-31 2020-05-19 Google Llc Video frame codec architectures

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050063459A1 (en) * 2003-09-22 2005-03-24 Jeyhan Karaoguz Multiple decode user interface
WO2006121472A1 (en) * 2005-01-10 2006-11-16 Quartics, Inc. Integrated architecture for the unified processing of visual media
JP2009302704A (ja) * 2008-06-11 2009-12-24 Panasonic Corp デコード装置、情報処理システムおよび動画像記録再生システム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Nicholas H. Mastronarde et al, A Queuing-Theoretic Approach to Task Scheduling and Processor Selection for Video-Decoding Applications, IEEE TRANSACTIONS ON MULTIMEDIA, VOL. 9, NO. 7, 1493-1507p (2007* *

Also Published As

Publication number Publication date
US20220166994A1 (en) 2022-05-26
CN110583019B (zh) 2022-08-19
US20200275113A1 (en) 2020-08-27
JP2020527764A (ja) 2020-09-10
TW201919399A (zh) 2019-05-16
EP3603068A1 (en) 2020-02-05
US11425404B2 (en) 2022-08-23
US20190132604A1 (en) 2019-05-02
TW202131690A (zh) 2021-08-16
CN115460418A (zh) 2022-12-09
JP7421589B2 (ja) 2024-01-24
US11968381B2 (en) 2024-04-23
US20220360803A1 (en) 2022-11-10
KR20220127368A (ko) 2022-09-19
TWI690198B (zh) 2020-04-01
TW202224434A (zh) 2022-06-16
JP7057378B2 (ja) 2022-04-19
TWI745230B (zh) 2021-11-01
TWI759250B (zh) 2022-03-21
TW202205858A (zh) 2022-02-01
KR102442576B1 (ko) 2022-09-13
JP2022105012A (ja) 2022-07-12
JP2024041910A (ja) 2024-03-27
CN115460416A (zh) 2022-12-09
CN110583019A (zh) 2019-12-17
TWI721809B (zh) 2021-03-11
CN115460417A (zh) 2022-12-09
US10659797B2 (en) 2020-05-19
KR20190133756A (ko) 2019-12-03
WO2019089101A1 (en) 2019-05-09
TW202025759A (zh) 2020-07-01
US11962795B2 (en) 2024-04-16

Similar Documents

Publication Publication Date Title
US11962795B2 (en) Video frame codec architectures
US8874812B1 (en) Method and apparatus for remote input/output in a computer system
KR102245247B1 (ko) 트리거된 동작을 이용하는 gpu 원격 통신
US10592205B2 (en) Scalable input/output system and techniques to transmit data between domains without a central processor
US8279893B2 (en) System and method for communicating data utilizing multiple types of data connections
US9560310B2 (en) Method and system for rescaling image files
US20130238582A1 (en) Method for operating file system and communication device
US20130257687A1 (en) Display system, display device, and related methods of operation
US20160358590A1 (en) System on Chip Devices and Operating Methods Thereof
WO2017027170A1 (en) Processing encoded bitstreams to improve memory utilization
KR20160013468A (ko) PCIe 인터페이스로 H.264 스트림 전송을 위한 시분할 전송 방법 및 시스템
US20190042487A1 (en) High-bandwidth, low-latency, isochoronous fabric for graphics accelerator
WO2022139838A1 (en) Data traffic reduction for redundant data streams
KR20120066999A (ko) 다이렉트 메모리 액세스 컨트롤러 및 그것의 동작 방법

Legal Events

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