KR102606584B1 - 비디오 코딩을 위한 프레임 재정렬 방법 및 시스템 - Google Patents

비디오 코딩을 위한 프레임 재정렬 방법 및 시스템 Download PDF

Info

Publication number
KR102606584B1
KR102606584B1 KR1020187002600A KR20187002600A KR102606584B1 KR 102606584 B1 KR102606584 B1 KR 102606584B1 KR 1020187002600 A KR1020187002600 A KR 1020187002600A KR 20187002600 A KR20187002600 A KR 20187002600A KR 102606584 B1 KR102606584 B1 KR 102606584B1
Authority
KR
South Korea
Prior art keywords
frames
chip memory
order
frame
video sequence
Prior art date
Application number
KR1020187002600A
Other languages
English (en)
Other versions
KR20180037186A (ko
Inventor
라마나단 세두라만
수미트 모한
창리앙 왕
홍 지앙
장-피에르 지아칼론
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20180037186A publication Critical patent/KR20180037186A/ko
Application granted granted Critical
Publication of KR102606584B1 publication Critical patent/KR102606584B1/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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • 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
    • 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/127Prioritisation of hardware or computational resources
    • 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/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/31Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the temporal domain
    • 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/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/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

비디오 코딩을 위한 프레임 재정렬과 관련된 기술이 기술된다. 비디오 코딩을 위한 프레임을 재정렬하는 본 발명의 방법은, 프레임을 오프칩 임시 메모리(off-chip temporary memory) 내에 배치하지 않고도, B-프레임 또는 P-프레임과 같은 픽처 또는 프레임의 적어도 하나의 타입을 다음 비디오 코딩 태스크를 위한 디스플레이 또는 코딩 비디오 시퀀스(또는 비트 스트림) 내로 다이렉트 스트리밍하는 단계를 포함할 수 있다. 캡처된 순서로부터의 프레임을 인코더 순서로 재정렬할 경우, I 및 B-프레임은 오프칩 버퍼에 기입될 수 있으며 P-프레임은 인코딩될 새로운 비디오 시퀀스로 다이렉트 스트리밍되며, 이 새로운 비디오 시퀀스는 온칩 메모리(on-chip memory)로부터 다이렉트 스트리밍된 프레임 및 오프칩 버퍼로부터의 프레임 모두를 포함한다.

Description

비디오 코딩을 위한 프레임 재정렬 방법 및 시스템
본 발명은 비디오 코딩을 위한 프레임 재정렬 방법 및 시스템에 관한 것이다.
우선권 주장
본 출원은 "비디오 코딩을 위한 프레임 재정렬 방법 및 시스템"이란 명칭으로 2015년 8월 31에 출원된 미국 출원 제14/841,624호에 대한 우선권을 주장하며, 이 미국출원은 그 전체가 본 명세서에 참조로 인용된다.
지속적으로 증가하는 비디오 해상도와, 고품질의 비디오 이미지에 대한 기대치 상승으로 인해, 효율적인 이미지 데이터 압축 및 비디오 디스플레이를 위한 높은 수요가 존재한다. 비디오 코딩 및 디스플레이 시스템은 비디오를 레코딩하는 카메라와 같은 이미지 캡처 디바이스와, 디코더에 비트스트림으로 효율적으로 송신될 수 있고 그 후 비디오 프레임을 재구성하는 데 사용될 수 있거나 이미지 캡처 디바이스의 미리보기 스크린(preview screen) 상에 즉시 디스플레이될 수 있는 비디오 프레임에 관한 데이터를 생성하는 인코더를 포함할 수 있다. 디코더는 비트스트림을 수신하여 비디오 시퀀스의 프레임을 재구성할 수 있으며, 그 후 비디오를 동일하거나 상이한 디스플레이 디바이스에 디스플레이할 수 있다.
이러한 비디오 코딩 및 디스플레이 시스템의 한가지 목표는 비디오의 디스플레이를 위한 프레임들의 재정렬과 같은 특정의 코딩 태스크 동안 판독 액세스 메모리(RAM)와 같은 임시 메모리의 사용을 최소화하는 것이다. 이는, 임시 메모리로부터 데이터를 불러올 시의 지연을 감소시킬 뿐만 아니라 소비되는 임시 메모리의 대역폭을 감소시키도록 수행되어, 더 큰 메모리 용량이 다른 애플리케이션용으로 이용될 수 있거나 또는 프레임 재정렬 대신에 임시 메모리를 사용하는 비디오 코딩 또는 디스플레이 태스크를 더 많이 실행할 수 있다. 그러나, 종래의 비디오 코딩 시스템에 의한 프레임 재정렬은 재정렬을 수행하는 RAM에 심각하게 의존하고 있다. 특히, 비디오 코딩 시스템은 프레임 재정렬을 사용하여 인터-예측(inter-prediction)을 수행하며, 이 인터-예측은 기준 프레임들(reference frames)과, 일련의 비디오 프레임들로 재구성되는, 하나의 기준 프레임과 다른 프레임 간의 이미지 콘텐츠의 움직임을 나타내는 모션 벡터들(motion vectors)을 사용한다. 이러한 기준 프레임들은 인터-예측에서와 같이 프레임간 예측보다는 공간 예측을 사용하는 I-프레임들(또는 인트라-코딩된 프레임들)과, 비디오 시퀀스 내에서 재구성되고 있는 현재 프레임과 관련하여 예측된 프레임 또는 장래의 프레임인 P-프레임일 수 있다. B-프레임은 비디오 시퀀스에 따라 그리고 재구성될 프레임과 관련하여, 이전 또는 장래로부터 혹은 이들 모두로부터의 기준 프레임으로부터 재구성되고 있는 양 방향 프레임이다. 비디오가 레코딩(또는 캡처)될 경우, 프레임들은 캡처되는 바와 같은 시간순이 되며, 이와 동일한 순서가 디스플레이에 사용된다. 그러나, 인코딩 및 디코딩의 경우, 기준 프레임들은 그 기준 프레임들을 사용하여 프레임이 인터-예측되기 전에 코딩되어야 한다. 따라서, P-프레임은 통상적으로 프레임들의 시퀀스에서 프레임이 재구성된 이후로부터 프레임이 비디오 인코딩을 위해 재구성되기 전에 재정렬되며, 그 후 다시 디스플레이를 위한 시간순으로 되돌려 놓여진다. P-프레임을 시간순으로 되돌려 놓기 위한 이러한 포지션의 변경은 비디오를 디스플레이하기 위해 디코딩한 후에 발생하기도 한다. 이러한 재정렬을 수행하기 위해, (디스플레이할 준비가 된) 코딩된 모든 프레임은 전형적으로 RAM 상에 저장되며, 그 결과 P-프레임 및 다른 프레임들은 비순차적으로 그리고 필요한 대로 인출될 수 있으며, 이는 다른 목적용으로 사용될 수 있는 RAM 대역폭의 상당량을 소모하며 RAM이 오프칩이거나 코딩을 수행하는 프로세서에 대해 외부 메모리이기 때문에 지연을 초래한다.
또한, 여러 고선명 디바이스들은 60 fps(초당 프레임수)의 비디오 디스플레이를 제공한다. 비고선명 디바이스들은 여전히 30fps에서 비디오를 레코딩할 수 있다(또는 30fps 디스플레이 상에서의 재생을 위해 코딩할 옵션이 여전히 제공될 수 있다). 종래의 비디오 코딩 시스템 상에서 고선명 디스플레이를 위해 캡처되거나 디코딩된 30fps 비디오를 60fps 비디오로 변환하는 데 RAM 대역폭의 상당량이 소모된다.
본 명세서에 기술되는 것들은 첨부되는 도면에서 예로서 도시되며 제한 요소로서 도시되는 것은 아니다. 도시의 간략화 및 명료화를 위해, 도면에 도시된 엘리먼트들은 반드시 축척대로 도시되는 것은 아니다. 가령, 일부 엘리먼트의 크기는 명료성을 위해 다른 엘리먼트에 비해 과장될 수 있다. 또한, 적절한 것으로 간주될 경우, 도면에서 기준 라벨은 대응하거나 유사한 엘리먼트를 나타내기 위해 반복된다.
도 1은 비디오 코딩 시스템을 위한 일 예의 인코더의 예시적인 도면이다.
도 2는 비디오 코딩 시스템을 위한 일 예의 디코더의 예시적인 도면이다.
도 3은 비디오 코딩을 위한 프레임 재정렬 방법의 일 예의 플로우챠트이다.
도 4a는 캡처된 순서에서 비디오 코딩을 위한 코딩 순서로 프레임을 재정렬하는 방법의 일 예의 상세한 플로우챠트이다.
도 4b는 코딩 순서에서 비디오 코딩을 위한 디스플레이 순서로 프레임을 재정렬하는 방법의 일 예의 상세한 플로우차트이다.
도 4c는 비디오 디스플레이 프레임 레이트로 변경하면서 코딩 순서에서 비디오 코딩을 위한 디스플레이 순서로 프레임을 재정렬하는 방법의 일 예의 상세한 플로우차트이다.
도 4d는 비디오 디스플레이 레이트로 변경하면서 캡처된 순서에서 디스플레이 순서로 프레임을 재정렬하는 방법의 일 예의 상세한 플로우차트이다.
도 5는 구현예에 따라 캡처된 프레임 순서에서 인코더 프레임 순서로 프레임을 재정렬하는 것을 설명하는 개략적인 타임라인이다.
도 5a는 이미지 신호 프로세서, RAM, 인코더, 및 미리보기 디스플레이 사이에서 프레임 재정렬을 설명하는 개략적인 도면이다.
도 6은 구현예에 따라 디코더 프레임 순서에서 디스플레이 프레임 순서로 프레임을 재정렬하는 것을 설명하는 개략적인 타임라인이다.
도 7은 구현예에 따라 30fps에서의 디코더 프레임 순서에서 60fps에서의 디스플레이 프레임 순서로 프레임을 재정렬하는 것을 설명하는 개략적인 타임라인이다.
도 8은 구현예에 따라 30fps에서의 캡처 프레임 순서에서 60fps에서의 미리보기 디스플레이 프레임 순서로 프레임을 재정렬하는 것을 설명하는 개략적인 타임라인이다.
도 9는 레코딩 및 미리보기 디스플레이를 위한 기존의 비디오 코딩 시스템의 예시적인 도면이다.
도 10은 프레임 재정렬 구현예들 중의 하나에 따라 레코딩 및 미리보기 디스플레이를 위한 일 예의 비디오 코딩 시스템의 예시적인 도면이다.
도 11은 재생(playback) 및 디스플레이 동안 기존의 비디오 코딩 시스템의 예시적인 도면이다.
도 12는 프레임 재정렬 구현예들 중의 하나에 따라 재생 및 디스플레이를 위한 일 예의 비디오 코딩 시스템의 예시적인 도면이다.
도 13은 상이한 레이트(rate) 및 상이한 스케일(scale)에서의 재생 및 디스플레이를 위한 기존의 비디오 코딩 시스템의 예시적인 도면이다.
도 14는 프레임 재정렬 구현예들 중의 하나에 따라 상이한 레이트(rate) 및 상이한 스케일(scale)에서의 재생 및 디스플레이를 위한 일 예의 비디오 코딩 시스템의 예시적인 도면이다.
도 15는 상이한 레이트(rate) 및 상이한 스케일(scale)에서 사전 프로세싱 또는 사후 프로세싱을 이용하여 재생 및 디스플레이를 위한 기존의 비디오 코딩 시스템의 예시적인 도면이다.
도 16은 프레임 재정렬 구현예들 중의 하나에 따라 상이한 속도(speed) 및 상이한 스케일(scale)에서 사전 프로세싱 또는 사후 프로세싱을 이용하여 재생 및 디스플레이를 위한 일 예의 비디오 코딩 시스템의 예시적인 도면이다.
도 17은 캡처된 순서에서 코딩 순서로 또는 코딩 순서에서 디스플레이 순서로 프레임을 재정렬하는 다수의 대안의 또는 조합가능한 방법들을 위해 동작 중인 일 예의 시스템의 예시적인 도면이다.
도 18은 일 예의 시스템의 예시적인 도면이다.
도 19는 다른 예의 시스템의 예시적인 도면이다.
도 20은 본 개시의 적어도 일부의 구현예에 따라 배치된 다른 예의 디바이스를 도시하고 있다.
하나 이상의 구현예들이 이제 첨부되는 도면을 참조하여 기술된다. 특정의 구성 및 배치가 논의되고 있지만, 이는 예시적인 목적으로만 사용된다는 것을 이해해야 한다. 당업자는 본 개시의 사상 및 범주를 벗어남이 없이 다른 구성 및 배치가 이용될 수 있다는 것을 인식할 것이다. 본 명세서에 기술되는 기술 및/또는 배치가 또한 본 명세서에 기술된 것과는 상이한 다양한 시스템 및 애플리케이션에 이용될 수 있다는 것이 당업자에게는 명확할 것이다.
아래의 기재가 가령 시스템 온 칩(SoC) 아키텍처와 같은 아키텍처에서 나타날 수 있는 다양한 구현예를 제시하고 있으나, 본 명세서에 기술되는 기술 및/또는 배치의 구현예는 특정의 아키텍처 및/또는 컴퓨팅 시스템에 국한되지 않으며, 온칩 또는 다른 로컬 메모리와 오프칩 또는 프로세서 칩에 대한 외부 메모리와 같은 소정의 최소 컴포먼트들이 본 명세서에 기술된 바와 같이 제공되는 한, 유사한 목적용의 여러 상이한 아키텍처 및/또는 컴퓨팅 시스템에 의해 구현될 수 있다. 예를 들어, 가령, 다중 집적 회로(IC) 칩 및/또는 패키지, 및/또는 게임 콘솔, 셋탑박스, 텔레비전, 데스크탑 또는 랩탑 컴퓨터, 태블릿 또는 패드, 스마트 폰, 웨어러블 디바이스 등과 같은 다양한 컴퓨팅 디바이스 및/또는 가전(consumer electronics; CE) 디바이스를 이용하는 다양한 아키텍처는 본 명세서에 기술된 기술 및/또는 배치를 구현할 수 있다. 또한, 아래의 기재가 로직 구현예, 시스템 컴포넌트들의 타입 및 상호상관, 로직 분리/통합 선택 등과 같은 다양한 특정의 상세를 제시할 수 있지만, 특허청구된 대상은 그러한 상세가 없어도 실시될 수 있다. 다른 예로서, 가령, 제어 구조 및 전체 소프트웨어 명령어 시퀀스들과 같은 일부 자료는 본 명세서에 개시된 자료를 모호하게 하지 않도록 상세하게 도시되지 않을 수 있다.
본 명세서에 개시된 자료는 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 본 명세서에 개시된 자료는 또한 하나 이상의 프로세서에 의해 판독 및 실행될 수 있는 머신 판독가능 매체 상에 저장된 명령어로서 구현될 수 있다. 머신 판독가능 매체는 머신(가령, 컴퓨팅 디바이스)에 의해 판독가능한 형태의 정보를 저장 또는 송신하는 임의의 매체 및/또는 메카니즘을 포함할 수 있다. 가령, 머신 판독가능 매체는 판독 전용 메모리(ROM), DRAM 또는 더블 데이터 레이트(DDR) DRAM을 포함한 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 디바이스, 전기, 광, 음향 또는 다른 전파 신호의 형태(가령, 반송파, 적외선 신호, 디지털 신호 등), 등을 포함할 수 있다. 다른 형태로서, 비일시적 컴퓨터 판독가능 매체와 같은 비일시적 제조물은, 일시적인 신호 자체를 포함하지 않는 점을 제외하고 전술한 예 또는 다른 예들 중의 임의의 것과 함께 사용될 수 있다. 그것은 또한 RAM 등과 같은 일시적인 형태로 임시로 데이터를 유지할 수 있는 신호 자체가 아닌 엘리먼트들을 포함한다.
본 명세서 내의 "일 구현예", "구현예", "예시적인 구현예" 등에 대한 언급은, 그 기술된 구현예가 특정의 특징, 구조 또는 특성을 포함할 수 있지만 모든 구현예가 그 특정의 특징, 구조 또는 특성을 반드시 포함하는 것이 아니라는 것을 나타낸다. 게다가, 그러한 문구는 반드시 동일한 구현예를 지칭하는 것은 아니다. 또한, 특정의 특징, 구조 또는 특성이 일 구현예와 관련하여 기술될 경우, 본 명세서에서 명시적으로 기술되든 그렇지 않든 간에 그러한 특징, 구조 또는 특성이 다른 구현예와 관련하여 실시될 수 있다는 것은 당업자의 지식 범주 내의 것이다.
비디오 코딩을 위한 프레임 재정렬과 관련한 시스템, 제조물 및 방법이 아래에서 기술된다.
전술한 바와 같이, 비디오 코딩 및 디스플레이 시스템의 한가지 목표는 임시 메모리, 및 특히 랜덤 액세스 메모리(RAM)와 같은 오프칩 또는 외부 메모리의 사용을 최소화하는 것이다. 비교적 많은 메모리를 사용하는 한가지 비디오 코딩 태스크는 소정의 비디오 코딩 태스크 및/또는 디스플레이 태스크 간의 프레임들의 재정렬이다. 프레임 재정렬을 위한 오프칩 임시 메모리 사용의 감소는 오프칩 임시 메모리로부터 데이터를 불러오는 것에 의해 야기되는 지연을 감소시킬 뿐만 아니라 소비되는 임시 메모리의 대역폭을 감소시킬 수 있어서, 대용량의 메모리가 다른 애플리케이션용으로 이용될 수 있거나 또는 프레임 재정렬에 의해 소비되는 것보다 임시 메모리를 사용하는 비디오 코딩 또는 디스플레이 태스크를 더 많이 실행할 수 있다. 주목할 것은 본 명세서에 사용되는 용어 "대역폭"은 문맥과 다르게 기술되지 않는 이상, 또는 문맥으로부터 이해되는 이상, 사용되거나 소비되는 데이터의 양을 지칭한다는 것이다.
한가지 해결책은 미디어 이미지 프로세서들(IPs) 간의 다이렉트 접속 스트리밍(direct connect streaming)을 사용하여 최상의 메모리 압축 기술에 의해 달성될 수 있는 것을 넘어서는 플랫폼 전력(platform power)을 최적화할 수 있다. 스트리밍은, 프레임들이 처리되고 있을 때 그 프레임들이 온칩 또는 로컬(내부) 메모리에만 배치되면 되도록, 프레임들 특히 그 프레임들을 형성하는 픽셀 데이터가 즉석에서(on the fly) 소비되는 것을 요구한다. 다이렉트 접속(direct connect)은 프레임 재정렬이 불필요한 경우에 전형적으로 사용된다. 이 프레임 재정렬은, 프레임들이 프레임들의 시간적 시프팅이 발생하지 않는 IPP 또는 IBB 저지연 또는 유사한 비디오 시퀀스 순서일 경우에는 불필요하다. 이러한 경우에, 자신의 온칩 메모리를 갖는 시스템 온 칩(SOC) 프로세서와 같은 비디오 코딩 또는 그래픽 프로세서는 그 프레임들을 그 프레임들을 프로세싱하는 RAM과 같은 오프칩 임시 메모리에 기입할 필요가 없다.
그러나, 종래의 경우, 표면 또는 프레임 픽셀 사용의 임의의 시간적 특성은 장래의 소비를 위한 오프칩 임시 메모리에 프레임 픽셀 데이터가 기입 또는 버퍼링될 것을 필요로 할 수 있다. 특히, 스트리밍은 통상적으로 비디오 인코딩 또는 디코딩 동안 인에이블될 수 없으며, 이 비디오 인코딩 또는 디코딩 동안에 픽처들의 그룹(GOP)구조는, 예로서 랜덤 액세스를 제공하거나 어드밴스트 비디오 코딩(AVC)을 갖는 시스템들용으로 사용되는 IBBP GOP를 사용하여 재정렬되는 B-프레임 및 P-프레임을 사용한다. 특히, 종래의 비디오 코딩 시스템에 의한 프레임 재정렬은 재정렬을 수행하기 위하여 RAM과 같은 오프칩 임시 메모리에 대한 의존성이 매우 강하다. 이 비디오 코딩 시스템은, 비디오 인코더가 기준 프레임과 비디오 프레임들의 시퀀스로 재구성중인 다른 프레임 간의 린던던시를 이용하여 압축을 달성할 수 있도록 인터-예측을 수행하기 위하여 프레임 재정렬을 사용한다. 모션 벡터는 프레임 간의 이미지 콘텐츠의 움직임(또는 리던던시)을 나타낸다. 그러한 기준 프레임들은 인터-예측에서와 같은 프레임 간 예측보다는 공간 예측을 자체적으로 사용하는 I-프레임(또는 인트라 코딩된 프레임)과, 비디오 시퀀스에서 재구성중인 현재 프레임에 대한 예측된 프레임 또는 장래 프레임인 P-프레임일 수 있다. B-프레임은 비디오 시퀀스를 따라서 재구성중인 프레임에 대해 과거 또는 장래로부터의 기준 프레임 또는 과거 및 장래로부터의 기준 프레임으로부터 재구성되는 양방향 프레임이다. B-프레임 픽처 타입을 이용하여 인코더는 최고 데이터 압축을 달성하기 위해 시간상으로 과거와 장래를 볼 수 있다.
비디오가 캡처될 경우, 프레임들은 캡처되는 것과 동일한 연대순이며, 동일한 순서가 디스플레이를 위해 사용된다. 이러한 연대순은 전형적으로 I0B1B2P1B3B4P2 비디오 시퀀스이며, 이 시퀀스에서 P-프레임은 B-프레임들 후방에 위치하며, B-프레임들은 P-프레임을 사용하여 재구성된다. 그러나, P-프레임 및 B-프레임을 사용한 인코딩 및 디코딩을 위해, 기준 프레임들은 프레임이 상기 기준 프레임들을 사용하여 인터-예측되기 전에 코딩되어야 한다. 따라서, 비트스트림으로부터의 P-프레임은 통상적으로 프레임들의 시퀀스에서 프레임이 비디오 인코딩 또는 디코딩을 위해 재구성된 이후의 위치로부터 비디오 인코딩 또는 디코딩을 위해 프레임이 재구성되기 전의 위치로 IP1B1B2P2B3B4로 재정렬된다. P-프레임은 그후 재정렬을 역전시키고 인코더/디코더 순서에서 디스플레이 순서로 변환함으로써, 캡처된 또는 시간 순에서 다시 디스플레이를 위한 비디오 시퀀스 또는 비트스트림으로 되돌려 놓여진다. 이러한 재정렬을 수행하고 시간적인 양방향 예측을 인에이블하기 위해, 코딩된 모든 프레임들은 전형적으로, 시간적 소비를 위해 또는 달리 언급하면 P-프레임 및 다른 프레임들이 비순서로 그리고 필요에 따라 인출될 수 있게 오프칩 임시 메모리에 버퍼링되는 데, 이는 RAM 대역폭의 상당한 양을 소비한다.
이러한 문제를 해결하기 위해, 비디오 코딩을 위한 본 프레임 재정렬 방법은 프레임들을 오프칩 임시 메모리에 배치하지 않고도 B-프레임 또는 P-프레임과 같은 픽처 또는 프레임의 적어도 하나의 타입을 다음 비디오 코딩 태스크(디스플레이로의 송신을 포함함)용 디스플레이 또는 코딩 비디오 시퀀스(또는 비트스트림) 내로 다이렉트 스트리밍하는 단계를 포함할 수 있다. 프레임들을 캡처된 순서에서 인코더 순서로 재정렬할 경우, I-프레임 및 B-프레임은 오프칩 버퍼에 기입될 수 있으며, 반면 P-프레임은 인코딩될 새로운 비디오 시퀀스에 다이렉트 스트리밍되며, 이 비디오 시퀀스는 온칩 메모리로부터 다이렉트 스트리밍된 프레임과 오프칩 버퍼로부터의 프레임 모두를 포함한다. 마찬가지로, 디코더로부터 수신되는 디코더 순서의 프레임들은 비디오를 디스플레이하기 위해, I-프레임 및 P-프레임을 오프칩 메모리 내로 버퍼링하고 B-프레임을 비트스트림으로 다이렉트 스트리밍하기 위한 온칩 메모리에 배치함으로써 디스플레이 순서로 재정렬될 수 있다. 오프칩 메모리에 버퍼링하기 보다는 다이렉트 스트리밍에 의해 재정렬되는 프레임들은 본 명세서에 기술되는 바와 같이 메모리 대역폭의 절감을 제공할 것이다.
또한 전술한 바와 같이, 여러 고선명 디바이스는 60fps의 비디오 디스플레이를 제공한다. 그러나, 비고선명 디바이스들은 여전히 30fps의 비디오를 레코딩할 수 있다(또는 30fps 디스플레이 상에서 재생하도록 코딩하기 위한 옵션이 여전히 제공될 수 있다). 가령, 종래의 시스템에서 30fps 코딩 레이트에서 디스플레이를 위한 60fps로와 같이 상이한 프레임 레이트로 변환하기 위해, 다음 비디오 코딩 태스크를 위한 보다 새로운 비디오 시퀀스 비트스트림을 구성할 경우, 보다 저속의 비트스트림의 단일 디스플레이 프레임 구간을 채우기 위해 한 프레임의 다수의 사본이 획득된다. 오프칩 메모리로부터 각각의 프레임의 모든 다수의 사본을 인출하는 대신에, 그 사본 중 일부는 온칩 메모리로부터 새로운 비디오 시퀀스로 다이렉트 스트리밍될 수 있다. 가령, 디코더 순서로부터 디스플레이 순서로 프레임을 재정렬할 경우, B-프레임은 오프칩 메모리 및 온칩 메모리 모두에 복사될 수 있고, 그 결과, 프레임의 각각의 사본은 오프칩 메모리로부터 B-프레임의 두 개의 사본을 획득하기 보다는 디스플레이를 위한 보다 고속의 새로운 비디오 시퀀스의 디스플레이 프레임 구간을 구성하는 데 사용될 수 있다. 마찬가지로, 가령 캡처된 순서의 프레임들로부터 미리보기 스크린을 위한 비디오를 디스플레이하기 위해 프레임들을 재정렬하지 않을 경우에 조차, 각각의 프레임은 오프칩 메모리에 배치된 하나의 사본과 온칩 메모리에 배치된 다른 사본을 가질 수 있으며, 그 결과, 디스플레이 비디오 시퀀스에서 다수의 디스플레이 프레임 구간은 모든 메모리들로부터의 사본으로 채워지며, 이는 프레임의 픽처의 타입(I, B 또는 P)과는 무관한 것일 수 있다. 모든 예에서, 오프칩 메모리 대역폭은 비디오 코딩 태스크들 간의 프레임 레이트를 변환하기 위해 프레임들이 오프칩 메모리보다는 온칩 메모리로부터 인출될 때마다 감소된다. 이러한 예 및 다른 여러 예들이 아래에서 설명된다.
본 명세서에서의 프레임 재정렬 방법 및 시스템을 일 예의 문맥에 배치하기 위해 도 1 및 도 2를 참조하면, 간이화된 비디오 코딩 시스템(100)이 본 개시의 적어도 일부 구현예와 함께 배치되며, 그 시스템은 인터-예측과, 비디오 시퀀스 구성을 위한 프레임 재정렬을 필요로 할 수 있는 다른 비디오 코딩 동작을 수행한다. 다양한 구현예에서, 비디오 코딩 시스템(100)은 하나 이상의 표준에 따라 비디오 코딩을 착수 및/또는 비디오 코덱을 구현하도록 구성될 수 있다. 또한, 다양한 형태에서, 비디오 코딩 시스템(100)은 이미지 프로세서, 비디오 프로세서 및/또는 미디어 프로세서의 일부로서 구현될 수 있고 인터-예측, 인트라-예측, 예측성 코딩 및 잔차 예측(redidual prediction)을 착수한다. 다양한 구현예에서, 시스템(100)은 비디오 압축 및 압축해제를 착수할 수 있고/있거나 가령, H.264 (MPEG-4), H.265 (고효율 비디오 코딩 또는 HEVC)와 같은 하나 이상의 표준 또는 사양에 따른 비디오 코덱을 구현할 수 있지만, 또한 VP9 또는 다른 VP# 기반 표준에도 적용될 수 있다. 시스템(100) 및/또는 다른 시스템, 체계, 또는 프로세스가 본 명세서에 기술될 수 있지만, 본 개시물의 특징들은 전적으로 모두 항상 임의의 특정 비디오 인코딩 표준 또는 사양 또는 그 확장에 국한되는 것은 아니다.
본 명세서에 사용되는 용어 "코덱"은 인코더 및/또는 디코더를 지칭할 수 있다. 유사하게, 본 명세서에 사용되는 용어 "코딩" 또는 "코드"는 인코더를 통한 인코딩 및/또는 디코더를 통한 디코딩을 지칭할 수 있다. 코더, 인코더, 또는 디코더는 인코더 및 디코더 모두의 컴포넌트를 가질 수 있다.
일부 예에서, 비디오 코딩 시스템(100)은 간략화를 위해 도 1에 도시되지 않은 추가의 항목을 포함할 수 있다. 가령, 비디오 코딩 시스템(100)은 프로세서, 무선 주파수 타입(RF) 송수신기, 스플리터 및/또는 멀티플렉서, 디스플레이, 및/또는 안테나를 포함할 수 있다. 또한, 비디오 코딩 시스템(100)은 스피커, 마이크로폰, 가속도계, 메모리, 라우터, 네트워크 인터페이스 로직, 등과 같은 추가의 항목을 포함할 수 있다.
예의 비디오 코딩 시스템(100)의 경우, 이 시스템은 인코더일 수 있는데, 이 인코더에서 비디오 프레임들의 시퀀스와 관련된 데이터 형태의 현재 비디오 정보가 압축을 위해 수신될 수 있다. 시스템(100)은, 이미지 데이터를 세분하고 그 후 그 이미지 데이터를 미리보기 디스플레이에 또는 압축 혹은 저장을 위한 인코더 유닛에 제공하는 사전 프로세싱 유닛(101)을 포함할 수 있거나 이에 접속될 수 있다. 압축 동작을 위해, 시스템(100)은 각각의 프레임을 보다 소형의 여러 관리가능 유닛으로 분할할 수 있으며, 그 후 프레임들을 비교하여 예측을 컴퓨팅할 수 있다. 원본 블럭과 예측 간의 차분 또는 잔차가 결정되면, 그 결과적인 잔차는 변환 및 양자화되고, 그 후 엔트로피 인코딩되어 비트스트림으로 외부의 디코더 또는 스토리지로 송신된다. 이러한 동작을 수행하기 위해, 시스템(100)은 프레임 형성기 및 분할(frame organizer and partition) 유닛(102), 감산 유닛(104), 변환 및 양자화 유닛(106), 엔트로피 코딩 유닛(110), 및 상이한 유닛들과 통신 및/또는 상이한 유닛들을 관리하는 인코더 제어기(108)를 포함할 수 있다. 제어기(108)는 레이트 왜곡, 분할 사이즈의 선택 또는 코딩, 예측 기준 타입, 에측 및 다른 모드의 선택, 및 전체 비트레이트 관리, 등을 포함한 인코딩의 여러 측면을 관리한다.
변환 및 양자화 유닛(106)의 출력은 디코더에서 생성될 것과 동일한 기준 또는 재구성된 블럭, 프레임 또는 다른 프레임 분할을 생성하도록 인코더에 제공된 디코딩 루프(120)에 제공될 수 있다. 따라서, 디코딩 루프(120)는 프레임을 재구성하기 위한 역양자화 및 변환 유닛(112)과, 각각의 프레임 내의 블럭을 재구성하기 위해 도시되지 않은 다른 어셈블러 유닛과 함께 가산기(114)를 사용한다. 디코딩 루프(120)는 필터 루프 유닛(116)을 제공하여 재구성된 이미지의 품질을 증가시킴으써 대응하는 원본 프레임과 더 잘 매칭시킨다. 이는 디블럭킹 필터(deblocking filter), 샘플 적응성 오프셋(SAO) 필터, 및 품질 복원(QR) 필터를 포함할 수 있다. 디코딩 루프(120)는 또한 기준 프레임을 보유하도록 디코딩된 픽처 버퍼를 가진 예측 유닛(118)과, 아래에서 보다 상세하게 설명되는 인터-예측을 위한 모션 벡터들을 이용하는 모션 추정 유닛(119) 및 모션 보상 유닛(117)과, 인트라-프레임 예측 모듈(121)을 가질 수도 있다. 인트라-예측 또는 공간 예측은 다른 프레임들을 참조하지 않고도 단일 I-프레임 상에서 수행된다. 이 결과는 모션 벡터들 및 예측된 블럭들(또는 계수들)이 된다.
보다 상세하게, 모션 추정 유닛(119)은 픽셀 데이터 매칭 알고리즘을 사용하여 하나 이상의 기준 프레임들과 재구성중인 현재 프레임 간의 이미지 콘텐츠의 모션을 나타내는 모션 벡터들을 생성한다. 모션 벡터들은 모션 보상 유닛(117)에 의해 적용되어 새로운 프레임을 재구성한다. 다음, 예측 유닛(118)은 최상의 예측 블럭을 잔차를 생성하는 감산 유닛(104), 및 디코딩 루프 내의 가산기(114)에 제공할 수 있으며, 이 가산기(114)는 역양자화 및 변환 유닛으로부터의 잔차에 예측을 가산하여 프레임을 재구성한다. 다른 모듈들 또는 유닛들은 인코딩을 위해 제공될 수 있지만 명료성을 위해 여기서는 기술되지 않는다.
특히, 비디오 데이터는 픽셀 데이터의 프레임의 형태로 프레임 형성기 및 분할 유닛(102)에 제공될 수 있다. 이 프레임 형성기 및 분할 유닛은 프레임들에 대해 I-프레임(인트라-코딩된 프레임), P-프레임(장래의 기준 프레임으로부터 예측되는 인터-코딩된 프레임) 및 B-프레임(이전의 프레임들, 후속하는 프레임들, 또는 이들 모두로부터 양방향으로 예측될 수 있는 인터-코딩된 프레임)과 같은 분류 타입을 할당할 수 있다. 각각의 경우, 전체 프레임(an entire frame)은 동일하게 분류될 수 있거나 상이하게 분류된 슬라이스들을 가질 수 있다(따라서, I-프레임은 I 슬라이스들만을 포함할 수 있고, P-프레임은 I 및 P 슬라이스들을 포함할 수 있다). 전체 프레임이 아래에서 설명을 위해 사용되고 있으나, 그 전체 프레임의 미만이 관련될 수 있다는 것이 이해될 것이다. I-프레임들에서, 공간 예측은 한 가지 형태로 프레임 자체의 데이터에서만 사용된다. P-프레임들에서, (공간 예측보다는) 시간 예측이 프레임들 간의 모션을 추정함으로써 착수될 수 있다. B-프레임들에서 그리고 HEVC의 경우, 분할 유닛(PU) 마다 두 개의 모션 추정을 나타내는 두 개의 모션 벡터들이 시간 예측 또는 모션 추정을 위해 사용될 수 있다. 즉, 가령, B-프레임은 B-프레임에 대해서 과거, 장래, 또는 이들 모두로부터의 프레임들 상의 슬라이스로부터 예측될 수 있다. 또한, 모션은 디스플레이 순서와 관련하여 과거 또는 장래에서 발생하는 다수의 픽처들로부터 추정될 수 있다. 다양한 구현예에서, 모션은 아래에 언급되는 사이즈에 대응하는 다양한 코딩 유닛(CU) 또는 PU 레벨에서 추정될 수 있다. 보다 오래된 표준의 경우, 매크로블럭 또는 다른 블럭 기초는 사용되는 분할 유닛일 수 있다.
HEVC 표준이 사용중일 경우, 프레임 형성기 및 분할 유닛(102)은 또한 프레임들을 예측 유닛으로 분할할 수 있다. 이는 코딩 유닛(CU) 또는 라지 코딩 유닛(large coding unit; LCU)을 사용하는 것을 포함할 수 있다. 이러한 표준의 경우, 현재의 프레임은 압축을 위해 코딩 트리 블럭(가령, 대응하는 크로마 샘플을 가진 64×64 루마 샘플)의 하나 이상의 슬라이스로의 분할에 의해 코딩 분할기에 의해 분할될 수 있다. 각각의 코딩 트리 블럭은 또한 쿼드 트리 분할 체계(quad-tree split scheme)에서 코딩 유닛(CU)으로 분할될 수 있다. 또한, 쿼드 트리 상의 각각의 리프(leaf) CU는 다시 4개의 CU로 분할되거나 모션 보상된 예측을 위한 분할 유닛(PU)으로 분할될 수 있다. 본 개시에 따른 다양한 구현예에서, CU들은 64×64, 32×32, 16×16, 및 8×8을 포함하지만 이에 국한되는 것은 아닌 다양한 사이즈를 가질 수 있으며, 2N×2N CU의 경우에는 대응하는 PU들이 또한 2N×2N, 2N×N, N×2N, N×N, 2N×0.5N, 2N×1.5N, 0.5N×2N, 및 1.5N×2N을 포함하지만 이에 국한되는 것은 아닌 다양한 사이즈를 가질 수 있다. 그러나, 주목할 것은 전술한 것이 단지 예의 CU 분할 및 PU 분할 형상 및 사이즈이며, 본 개시는 임의의 특정 CU 분할 및 PU 분할 형상 및/또는 사이즈에 국한되는 것이 아니라는 것이다.
본 명세서에 사용되는 바와 같이, 용어 "블럭"은 HEVC 등의 경우 비디오 데이터의 CU 또는 PU를 지칭할 수 있거나, 다른 경우 4×4 또는 8×8 또는 다른 사각형 형태의 블럭을 지칭할 수 있다. 일부 대안에 의하면, 이는 달리 정의되지 않는 이상, H.264/AVC 등의 경우 비디오 또는 픽셀 데이터의 매크로블럭의 분할로서 블럭을 고려하는 것을 포함할 수 있다.
프레임 형성기 및 분할 유닛(102)은 또한 입력 비디오 시퀀스 순서(즉, 디스플레이 순서와 동일한 가령 IBBPBBP...의 캡처 순서)의 프레임들을 보유할 수 있으며, 이 프레임들은 코딩될 필요가 있는(가령, IPBBPBB...) 순서로 온칩 메모리(또는 달리 말하면 ISP 또는 인코더)로부터 스트리밍되거나 오프칩 메모리로부터 인출되거나, 또는 이들 모두가 모두 아래에 설명된 바와 같이 가능하다. 예를 들어, 역방향 기준 프레임들은 그 자신을 참조하는 프레임에 앞서 코딩되지만 그 프레임 이후에 디스플레이된다.
현재의 블럭들 또는 프레임들은 감산 유닛(104)에서 예측 유닛(118)으로부터의 예측된 블럭들 또는 프레임들로부터 감산될 수 있으며, 그 결과의 차이 또는 잔차는 전술한 바와 같이 분할되어 변형 및 양자화 유닛(106)에 제공된다. 관련 블럭 또는 유닛은 몇가지 예를 들자면 이산 코사인 변환(DCT) 및/또는 이산 사인 변환(DST)을 사용하여 계수로 변환된다. 이 후 이 양자화 유닛(106)은 계수에 대해 손실 재샘플링 또는 양자화를 사용한다. 생성된 세트의 양자화된 변환 계수들은 재정렬될 수 있고, 이후에 엔트로피 코딩을 준비한다. 모션 벡터들 및 임의의 다른 헤더 데이터와 함께 계수들은 유닛(110)에 의해 엔트로피 인코딩되고 디코더로의 송신을 위해 비트스트림으로 배치된다. 인코더로부터 송신되고 디코더용으로 이용가능한 비트스트림의 프레임들은 코더(인코더/디코더) 순서(IPBBPBB...)로 유지된다.
예로서, 도 2를 참조하면, 간이화된 시스템(200)은 디코더를 가질 수 있거나 디코더일 수 있으며, 비트스트림 형태의 코딩된 비디오 데이터를 디코더 순서(IPBBPBB...)의 프레임으로 수신할 수 있다. 시스템(200)은 엔트로피 디코딩 유닛(202)을 이용하여 비트스트림을 프로세싱하여 양자화된 잔차 계수 뿐만 아니라, 모션 벡터, 예측 모드, 분할, 양자화 파라미터, 필터 정보 등을 추출할 수 있다.
시스템(200)은 역양자화 모듈(204) 및 역변환 모듈(206)을 사용하여 잔차 픽셀 데이터를 재구성할 수 있다. 이후, 시스템(200)은 가산기(208)를 사용하여 어셈블된 잔차들을 예측된 블럭들에 가산하여 예측 블럭의 재구축을 가능하게 할 수 있다. 이러한 블럭 또는 전체 재구성된 프레임은 인트라-예측을 위해 예측 유닛(212)으로 전달될 수 있거나, 또는 먼저 필터링 유닛(210)으로 전달되어 블럭 및 연이어 프레임의 품질을 향상시킬 수 있으며, 그 후 블럭은 인터-예측을 위해 예측 유닛(212)으로 전달된다. 완성된 재구성된 프레임은 또한 비디오 시퀀스 유닛(214)에 제공될 수 있으며, 이 비디오 시퀀스 유닛은 온칩 메모리로부터 프레임들을 스트리밍하거나 오프칩 메모리로부터 프레임들을 인출하며 디스플레이 순서(IBBPBBP...)의 시퀀스를 형성하여 그 비트스트림을 아래에서 상세하게 설명되는 바와 같이 디스플레이에 또는 저장을 위해 제공한다. 잔차를 형성하기 위해, 예측 유닛(212)은 모션 벡터들을 적용하는 모션 보상 유닛(213)을 포함할 수 있다. 예측 유닛(212)은 블럭들 또는 프레임들이 가산기(208)에 제공되기 전에 각각의 블럭 또는 프레임에 대한 정확한 모드를 설정할 수 있다. 그렇지 않으면, 시스템(100, 200)용으로 본 명세서에 기술된 유닛들의 기능은 당해 분야에서 널리 인지되어 본 명세서에서 보다 상세하게 기술되지는 않을 것이다.
일 구현예를 위해, 효율적인 프레임 재정렬 프로세스가 다음과 같이 기술된다.
도 3을 참조하면, 본 개시의 적어도 일부의 구현예에 따라 구성된 예의 프로세스(300)의 플로우차트가 도시된다. 일반적으로, 프로세스(300)는 컴퓨터로 구현되는 비디오 코딩 방법 및 특히 비디오 코딩을 위한 프레임 재정렬 방법을 제공할 수 있다. 도시된 구현예에서, 프로세스(300)는 우수로 번호가 매겨진 하나 이상의 동작(302 내지 308)에 의해 도시된 하나 이상의 동작, 기능 또는 행위를 포함할 수 있다. 비제한적인 예로서, 프로세스(300)는 본 명세서에서 논의되는 예의 시스템(100, 200, 1000, 1200, 1400, 1600, 또는 1800) 및 타임라인(500, 600, 700 및 800)과 관련하여 도 1, 도 2, 도 5 내지 16과 관련하여 논의되는 동작을 참조하여 기술될 것이다.
프로세스(300)는 "제1 순서로 온칩 메모리로부터의 프레임들을 가진 제1 비디오 시퀀스의 이미지 데이터의 로컬 프레임들을 수신하는 단계"(302)를 포함할 수 있으며, 이해되는 바와 같이, 이미지 데이터는 크로마 및 루미넌스 픽셀 데이터를 포함할 수 있을 뿐만 아니라 비디오 시퀀스를 인코딩, 디코딩 및 디스플레이하기 위한 임의의 다른 데이터를 포함할 수 있다. 제1 순서는 프레임들이 캡처되었던 것과 동일한 프레임들의 순서(이 순서는 프레임들을 디스플레이하는 순서와 동일할 수 있음)일 수 있거나, 프레임들을 인코딩 또는 디코딩하기 위한 순서일 수 있다. 로컬 프레임들은 제1 비디오 시퀀스의 하나 이상의 소정의 픽처 타입, 가령 I-프레임, B-프레임, 및/또는 P-프레임일 수 있다. 본 명세서에 설명되는 바와 같이, 캡처 순서에서 인코드 순서로 프레임을 재정렬할 경우, 로컬 프레임들은 P-프레임일 수 있지만, 디코드 순서에서 디스플레이 순서로 프레임을 재정렬할 경우 로컬 프레임은 B-프레임일 수 있다. 비디오 시퀀스를 (가령, 30fps에서 60fps로와 같은) 상이한 디스플레이 레이트 또는 (가령 8k에서 4k로와 같은) 상이한 스케일로 변환하는 경우를 포함하는 다른 상이한 예가 아래에 기술된다.
온칩 메모리는 시스템 온 칩(SOC)과 같은 프로세서 칩 또는 다른 그러한 구조를 공유하는 캐시 또는 다른 메모리일 수 있다. 따라서, 온칩 메모리로부터 로컬 프레임을 수신하는 것은 온칩 메모리로부터(또는 다른 말로서 온칩 메모리 상에 배치된 프레임을 가진 ISP 또는 디코더로부터)의 프레임의 다이렉트 스트리밍으로 지칭된다.
프로세스(300)는 또한 "오프칩 메모리로부터 제1 비디오 시퀀스의 프레임을 수신하는 단계"(304)를 포함할 수 있으며, 일부 실시예에서, 로컬 온칩 메모리에 저장되어 있지 않은 프레임 타입을 포함할 수 있다. 따라서, 일부 실시예에서, B-프레임이 로컬 또는 온칩 메모리로 송신될 경우, I-프레임 및 P-프레임은 오프칩 메모리로 송신된다. 디스플레이 레이트를 변환하는 경우와 같은 다른 실시예에서, 프레임들의 일부 또는 전부는 아래에 기술된 바와 같이 온칩 메모리 및 오프칩 메모리 모두에 기입된다. 오프칩 메모리는 RAM과 같이 프로세서 칩 또는 SOC의 외부의 메모리일 수 있거나 또는 아래에서 기술되는 다른 외부 메모리일 수 있으며, 그에 따라 오프칩 메모리로부터 프레임을 검색하는 것은 프레임을 인출하는 것으로 지칭된다.
프로세스(300)는 또한 "프레임을 제1 순서와는 상이한 제2 순서를 갖는 제2 비디오 시퀀스로 재정렬하는 단계로서 제2 비디오 시퀀스 내에 로컬 프레임을 제2 순서에 따라 그리고 오프칩 메모리로부터의 프레임과 함께 배치하는 것을 포함하는 단계"(306)를 포함할 수 있다. 아래에서 상세하게 기술되는 바와 같이, 이러한 동작은 온칩 메모리로부터 스트리밍된 프레임과 오프칩 메모리로부터 인출된 프레임으로 제2 비디오 시퀀스를 형성하는 것을 포함할 수 있다. 따라서, B-프레임 또는 P-프레임과 같은 소정 타입의 프레임들은 온칩 메모리로부터 스트리밍될 수 있지만, 나머지 타입의 프레임들은 가령, 온칩 B-프레임에 대해 오프칩 I 및 P-프레임, 또는 온칩 P-프레임에 대해 오프칩 I 및 B-프레임과 같이, 오프칩 메모리로부터 인출된다. 다른 예로서, 제2 비디오 시퀀스는 가령, 소정의 디스플레이 레이트로 변환하는 경우 온칩 메모리 및 오프칩 메모리로부터 프레임의 동일 사본을 인출함으로써 형성될 수 있다. 이러한 경우에, 제2 비디오 시퀀스는 상이한 메모리들로부터 프레임의 복수의 사본을 가져 제2 비디오 시퀀스를 형성할 수 있다. 예로서, 제1 순서가 캡처 순서 IBBP인 경우, 제2 순서는 디스플레이 순서 IIBBBBPP 등일 수 있다. 제1 순서가 캡처 순서, 인코더 순서(IPBB), 또는 디코더 순서(IPBB)인 경우 제2 순서는 디스플레이(IBBP) 순서일 수 있거나, 또는 제1 순서가 캡처 순서일 경우, 제2 순서는 인코더 순서일 수 있다. 주목할 것은 IBBP 및 IPBB 순서는 단지 예로서 사용될 뿐 가능한 유일한 순서일 필요는 없다는 것이다.
프로세스(300)는 또한 "제2 비디오 시퀀스 내에 프레임들을 제공하여 이미지 데이터를 코딩하거나 디스플레이하는 단계"(308)를 포함할 수 있으며, 이는 제2 비디오 시퀀스에 대한 액세스를 제공하거나 제2 비디오 시퀀스를 다음 비디오 코딩 컴포넌트 또는 디스플레이에 송신하여, 제2 비디오 시퀀스가 추가로 코딩중인지, 비휘발성 스토리지 상에 제2 비디오 시퀀스를 저장하는 것인지, 또는 디스플레이용 송신 및/또는 스트리밍을 위한 임시 메모리 상에 제2 비디오 시퀀스를 저장하는 것인지에 따라, 제2 비디오 시퀀스를 사용하여 다음 태스크를 수행하는 것을 포함할 수 있다. 다른 변형 및 예가 아래에 제공된다.
이제 도 4a를 참조하면, 상세한 예의 비디오 코딩 프로세스(400)가 본 개시의 적어도 일부의 구현예에 따라 배치된다. 도시된 구현예에서, 프로세스(400)는 비디오 코딩을 위한 프레임 재정렬 프로세스이고, 캡처 순서에서 인코드 또는 코딩 순서로 프레임을 재정렬하는 프로세스이며, 짝수 번호로 매겨진 하나 이상의 동작(402 내지 424)에 의해 도시된 바와 같은 하나 이상의 동작, 기능 또는 행위를 포함할 수 있다. 비제한적인 예로서, 프로세스(400)는 도 1, 도 2, 도 5 내지 도 16 및 도 18과 관련하여 기술된 동작을 참조하여 기술될 것이며, 본 명세서에서 논의되는 예의 시스템(100, 200, 1000, 1200, 1400, 1600, 또는 1800) 및 타임라인(500, 600, 700, 및 800)을 참조하여 논의될 수 있다.
프로세스(400)는 "캡처된 순서의 프레임들을 가진 비디오 시퀀스 형태의 원시 이미지 데이터를 캡처하는 단계"(402)를 포함할 수 있으며, 특히 적어도 크로마 및 루미넌스 픽셀값을 포함하지만, 프레임을 재구성하는 데 필요하며 비디오 카메라 또는 비디오 카메라를 가진 디바이스와 같은 이미지 캡처 디바이스로부터 수신되는 다른 오버헤드 데이터를 포함할 수도 있다. 캡처된 순서는 카메라가 프레임들을 캡처하는 것과 동일한 연대 순을 지칭한다. 이는 IBBP 순서일 수 있다.
프로세스(400)는 "원시 이미지 데이터 프레임을 저장하는 단계"(404)를 포함할 수 있으며, 그에 따라, 원시 입력 프레임은, RAM 또는 (프로세서 칩으로부터 분리된 외부 수단인) 휘발성 또는 비휘발성인 다른 타입의 외부 메모리와 같은 오프칩 메모리에 저장될 수 있거나, 또는 SOC 또는 유사한 온보드 회로에 의해 제공되는 캐시(또는 L2 캐시) 또는 다른 메모리와 같은 온칩 메모리에 저장될 수 있다.
프로세스(400)는 "원시 이미지 프레임을 프로세싱하는 단계"(406)를 포함할 수 있다. 이 동작은, 프레임들이 미리보기 스크린의 디스플레이 제어기에 의해 디스플레이될 수 있을 정도로 충분하고 인코더에 의해 사용되도록 충분히 개선되는 다수의 상이한 사전 프로세싱 동작, 사후 프로세싱 동작, 및 프레임 구성 동작을 포함할 수 있다. 이는 시스템(1800) 상에 도시된 것과 같은 이미지 신호 프로세서(ISP)에 의해 수행될 수 있다. 가능한 프로세싱 태스크는 아래에서, 미리보기 디스플레이를 위해 캡처된 순서에서 디스플레이 순서로 프레임을 재정렬하는 것에 관한 프로세스(480)(도 8)의 동작(486)과 함께 기술된다. 코딩의 경우, 원시 이미지 데이터 프레임은 적어도 인터-예측을 위해 I, P, 또는 B(또는 기준 프레임으로서 사용 또는 기준 프레임과의 사용에 따른 다른 타입의 프레임들)로서 충분하게 레이블되도록 사전 프로세싱되어야 한다. 이는 코딩, 디스플레이, 및/또는 다른 목적을 위해 컬러 및/또는 루미넌스 값의 개선을 필요로 하거나 필요로 하지 않을 수 있다.
프로세스(400)는 다음에 "프레임들의 픽처 타입을 식별하는 단계"(408)를 포함할 수 있으며, 특히 인트라-코딩되고 기준 프레임으로서 사용될 I-프레임과, 기준 프레임으로서 사용될 예측 P-프레임과, 양방향 B-프레임을 식별하는 것을 포함할 수 있다. B-프레임은 또한 기준 프레임으로서 사용될 수 있고 그 프로세스들은 그러한 경우에 대해 조정될 수 있다는 것이 이해된다. 시간 순서대로의 캡처 순서의 경우, 이는 캡처된 비디오 시퀀스를 생성하며 이 캡처된 비디오 시퀀스는 몇몇 예로서 제공되는 가령 IP1P2P3P4...; IB1P1B2P2...; 또는 IB1B2P1B3B4P2...와 같이 휴대형 디바이스에 의해 사용되는 바와 같은 픽처 그룹(GOP)과의 순서를 가질 수 있다. IBBP GOP는 모든 구현예에 대해 캡처(및 디스플레이) 비디오 시퀀스로서 사용될 것이다. 아래 첨자 번호는 픽처 타입(I, B, 또는 P)에 의한 프레임의 순서를 나타낸다. 전술한 바와 같이, I-프레임은 기준 프레임을 갖지 않으며, P-프레임만이 이전 I-프레임을 기준 프레임으로서 사용하며, I-프레임 및 P-프레임은 모두 바로 I-프레임과 P-프레임 사이의 B-프레임에 대한 기준 프레임이 된다.
도 5를 참조하면, 일 예의 타임라인 챠트(또는 타임라인)(500)가 제공되어 프로세스(400)의 설명을 지원하며 그 챠트는 시간이 진행함에 따라 오른쪽으로 이동하게 된다. 타임라인(500)은 캡처 순서에서 코딩 순서로 프레임을 재정렬하는 예를 나타내도록 제공되며, 이들 순서에서 캡처 및 인코딩 프레임 시퀀스들은 동일한 프레임 레이트를 가지며, 캡처 프로세싱 프레임 구간은 코딩 프로세싱 구간과 동일한 시간의 양을 커버하며, 이들 구간은 모두 원하는 디스플레이 프레임 구간(506)과 동일하다. 가령, 캡처 프로세싱 프레임 레이트 및 코딩 프로세싱 프레임 레이트 모두는 30fps로 설정될 수 있거나, 또는 60fps로 설정될 수 있다. 따라서, 오프칩 메모리 또는 RAM과 같은 메모리(502)는 캡처 비디오 시퀀스(504)로부터 캡처 프레임 프로세싱 라인을 따라 전술한 바와 같은 캡처 순서(IB1B2P1B3B4P2B5B6...)로 획득되는 프레임들의 일부를 저장하기 위해 제공된다. 각각의 프레임의 프로세싱은 타임 라인 t를 따라서 디스플레이 프레임 구간(506)과 동등한 것을 소비하는 것으로 도시되며, 이는 이미지들이 디스플레이되는 타겟 디스플레이 또는 텔레비전의 리프레시 레이트(종종 60 또는 120 Hz)에 기초할 수 있다. 따라서, 이 디스플레이 프레임 구간은 단일 프레임을 리프레시하기 위한 시간 구간일 수 있다. 이 디스플레이 프레임 구간은 메모리로부터 프레임을 인출하고 그 프레임을 디스플레이하도록 코딩 또는 프로세싱하는 시간을 포함할 수 있다.
프로세스(400)는 "오프칩 메모리에 I-프레임 및 B-프레임을 버퍼링하는 단계"(410)를 포함할 수 있으며, 특히 RAM, DRAN, DDR, DRAM, 및 다른 타입의 RAM과 같은 휘발성 메모리일 수 있거나 심지어는 디스크 기반 또는 플래시 메모리이든 비휘발성 메모리일 수 있는 오프칩 메모리(502)에 I-프레임 및 B-프레임을 저장하는 것을 포함할 수 있다. 여러 다른 예들도 가능하다. 이러한 동작은 타임라인(500) 상에서 화살표(512, 514, 516, 524, 528, 534 및 538)로 도시되며, 이 화살표는 캡처 비디오 시퀀스(504)에서 메모리(502)로 안내하고 있다. I-프레임 및 B-프레임은 (DDR로 지칭될 수 있는) 메모리(502)에 ISP 또는 다른 프로세서에 의해 기입될 수 있다.
프로세스(400)는 "온칩 메모리에 P-프레임을 저장하는 단계"(412)를 포함할 수 있다. 온칩 메모리는 프로세서 칩 상의(또는 ISP에서의) 캐시 또는 다른 메모리일 수 있거나 또는 전술한 바와 같은 SOC의 일부인 다른 메모리일 수 있다. 이는 전술한 원시 입력 프레임을 저장하는 동일한 온칩 메모리일 수 있다. 이 예에서, P-프레임은 오프칩 메모리 대역폭을 저장하기 위해 오프칩 메모리에 기입되지 않는다. 이 예에서, 온칩 메모리 및 오프칩 메모리 모두에서의 버퍼링된 버전의 프레임들은 적어도 원시 데이터 프로세싱 및 픽처 타입(I, P, B, 등)의 식별 후에 형성된 것들이며, 인코딩을 위해 준비되고 있다. 이는 인코딩 전에 발생할 수 있는 프레임들의 이미지 데이터의 임의의 여분의 사전 프로세싱, 개선 또는 스케일링을 포함할 수 있거나 포함하지 않을 수 있다. 온칩 메모리에 저장된 다른 버전(이 버전에서 프레임들은 상이한 프로세싱 스테이지에 존재함)이 아래에 기술된 바와 같이 가능하다.
프로세스(400)는 "오프칩 메모리로부터 프레임을 인출하고 온칩 메모리로부터의 프레임을 코딩 순서로 스트리밍하는 단계"(414)와 "인출된 프레임을 코딩 순서로 코딩 비디오 시퀀스에 배치하는 단계"(416)를 포함할 수 있다. 이 동작은 재정렬 유닛(또는 스트리밍 인터페이스 유닛)에 의해 수행될 수 있다. 예의 타임라인(500)의 코딩 비디오 시퀀스(510)와 같은 코딩 비디오 시퀀스가 구성될 수 있어서 기준 프레임들은 중간 B-프레임을 인코딩하기 전에 인코딩된다. 따라서, 이 실시예에서, 프레임들은, 프레임들을 재정렬하고 코딩 순서 IP1B1B2P2B3B4...를 형성하기 위해, 인출되고 스트리밍된다. 이는 비디오 시퀀스를 생성하며, 이 비디오 시퀀스는 B1 및 B2 프레임이 인코딩되기 전에 P1 프레임을 인코딩하는 데 사용될 수 있으며, 그에 따라 P1 프레임은 B1 및 B2 프레임에 대한 기준 프레임들 중의 하나일 수 있다.
오프칩 메모리에 기입된 프레임들은 인출되어 그 프레임은 코딩 비디오 시퀀스 상에 화살표(520, 526, 530, 536, 및 540)에 의해 표시된 바와 같이 정확하고 재정렬된 위치 내에 배치된다. 온칩 메모리로부터 스트리밍하는 동작(414)과 그 후 프레임을 코딩 비디오 시퀀스에 배치하는 동작(416)은 ISP(또는 다른 프로세서)로부터 코딩 비디오 시퀀스 또는 인코더로 다이렉트 스트리밍하는 것으로 지칭될 수 있거나 또는 프레임이 캡처 비디오 시퀀스 또는 온칩 메모리로부터 다이렉트 스트리밍된다고 언급될 수 있다. 이러한 프레임은 오프칩 메모리(502)에 기입되지 않고 코딩 비디오 시퀀스(510)에 배치되며, 타임라인(500)의 화살표(522, 532)로 표시된다.
지연(518)은 이 예의 경우 프레임 재정렬 내에 의도적으로 배치되어, 코딩 비디오 시퀀스(510)의 제1 프레임은 캡처 비디오 시퀀스(504)의 프로세싱(또는 메모리에 기입하기)의 시작 이후에 두 개의 프레임(또는 두 개의 디스플레이 프레임 구간)을 시작한다. 이는, P-프레임이 다이렉트 스트리밍될 경우, 캡처 비디오 시퀀스(504) 내의 P1 프레임에서의 프로세싱의 것과 동일한 시간 또는 동일한 디스플레이 프레임 구간에 P-프레임이 온칩 메모리(502)로부터 인출되고 코딩 비디오 시퀀스(510)에 바로 배치될 수 있도록, 수행된다. 즉, 지연(518)은, 캡처 비디오 시퀀스 및 코딩 비디오 시퀀스가 상이한 순서를 가짐에도 불구하고, 이 두 개의 시퀀스 모두에서 P-프레임 포지션의 시간 방식 정렬을 제공한다. 이러한 것은, 다른 태스크들용으로 사용될 수 있는 오프칩 메모리 대역폭의 감소 및 대역폭 절감을 발생시킨다.
도 5a를 참조하면, 캡처와 코딩 또는 미리보기 디스플레이 간의 스트리밍 플로우 및 타이밍을 나타내는 다른 개략적인 도면(501)이 제공된다. 따라서, ISP 컬럼은 캡처 순서의 프레임 1 내지 10을 나타내지만, DRAM 컬럼은 임시의 오프칩 메모리에 기입된 프레임을 나타내며, 이들은 화살표에 의해 표시되는 바와 같이 그리고 오프칩 메모리로부터 인출되는 바와 같이 인코더로 제공된다. ISP 컬럼으로부터 인코더 컬럼으로의 직접적인 화살표를 가진 프레임들은 ISP(또는 온칩 메모리)로부터 다이렉트 스트리밍된다. 대안으로서, 프레임들은 ISP로부터 디스플레이를 위한 미리보기 컬럼으로 송신되며 이 경우의 순서는 변화되지 않는다. 보다 상세한 미리보기 디스플레이의 다른 예가 프로세스(480)(도 4d) 및 타임라인(800)을 위해 제공된다.
프로세스(400)는 "이미지 데이터를 압축하기 위해 코딩 비디오 시퀀스를 인코딩하는 단계"(418)를 포함할 수 있으며 그리고 이는 이미 위에서 시스템(100)과 함께 기술되었다. 이러한 동작은, P-프레임 및 I-프레임을 사용하여 B-프레임을 재구성하는 인터-예측을 사용하고, 그리고 때로는 제공시에 기준 프레임으로서 B-프레임을 참조함으로써 프레임을 재구성하는 단계를 포함할 수 있다.
프로세스(400)는 "기준 프레임을 저장하는 단계"(420)와, 특히 기준 프레임으로서 사용될 재구성된 프레임을 저장하는 단계를 포함할 수 있으며, 이는 RAM과 같은 오프칩 메모리, 온칩 메모리, 또는 일부 다른 특정 타입의 메모리에 프레임을 저장하는 단계를 포함할 수 있다. 그 후 기준 프레임들이 획득될 수 있고(422) 필요에 따라 인코더에 제공될 수 있다.
다른 방식으로, 프로세스(400)는 "압축된 이미지 데이터 비트스트림을 제공하는 단계"(424)를 포함할 수 있으며, 특히 코딩 순서의 프레임을 포함한 이미지 데이터를 디스플레이 디바이스와 같이 디코더를 가진 디바이스에 또는 스토리지에 송신하는 것을 포함할 수 있다.
타임라인(500)의 예는 오프칩 메모리에 모든 프레임을 기입하는 시스템에 비해 시스템 대역폭 절감을 제공하며, 그리고 NV12 초고선명(UHD) p60 콘텐츠의 경우, P-프레임을 스트리밍하는 것으로 인해 사용되지 않는 3840×2160×1.5×2×20=475 MB/s를 제공하며, 여기서 3840×2160는 스크린의 픽셀 카운트이며, 1.5는 NV12의 패킹 포맷에서 컬러 컴포넌트들의 다운샘플링을 위한 것이며, 2는 현재의 대역폭 절감 방법을 사용함으로써 오프칩 메모리로부터 생략되는 각각의 P-프레임에 대해 오프칩 메모리에 일단 기입하고 그 후 오프칩 메모리로부터 인출하기 위한 것이며, 20은 테스트를 위해 사용되는 초당 프레임들이다.
프로세스(400)의 변형으로서, 코딩 순서 대신에, 캡처 비디오 시퀀스가 디스플레이 순서로 재정렬되어 디지털 카메라 상에서와 같은 미리보기 스크린 상에서 프레임을 볼 수 있다. 이러한 대안을 언급하는 다른 방법은 그 대안이 ISP로부터 디스플레이(미리보기)로 프레임 재정렬을 수행한다는 것이다. 이러한 경우, 모든 픽처 타입(I, P, 및 B)의 프레임들은 디스플레이 순서의 디스플레이 비디오 시퀀스에 (캡처 순서로부터 변경될 필요가 없이) 스트리밍될 수 있다. 디스플레이 순서는 (위의 동작(406) 또는 아래의 동작(486)과 함께하는 것과 같은) 원시 이미지 데이터의 프로세싱으로부터 발생하는 ISP 출력 순서이다. 오프칩 메모리에 모든 프레임을 제공하는 것과 비교하여 시스템 대역폭은 절감되며 NV12 UHD p60 콘텐츠의 경우 3840×2160×1.5×2×60=1425 MB/s가 된다.
도 4b를 참조하면, 본 개시의 적어도 일부 구현에 따라 상세한 예의 비디오 코딩 프로세스(430)가 배열된다. 이 구현예에서, 프로세스(430)는 비디오 코딩을 위한 프레임 재정렬 프로세스이며, 특히 디코딩(또는 코딩) 순서로부터 디스플레이 순서로의 재정렬을 위한 것으로 비디오 재생으로 지칭되기도 하며, 그리고 짝수 번호로 매겨진 하나 이상의 동작(432 내지 444)에 의해 예시되는 바와 같은 하나 이상의 동작, 기능 또는 행위를 포함할 수 있다. 비제한적인 예로서, 프로세스(430)는 도 1, 도 2, 도 5 내지 도 16, 및 도 18과 관련하여 논의된 동작을 참조하여 기술될 수 있으며 예의 시스템(100, 200, 1000, 1200, 1400, 1600, 또는 1800)을 참조하여 논의될 수 있다.
프로세스(430)는 "코딩 순서의 프레임과 함께 압축된 이미지 데이터의 비트스트림을 수신하는 단계"(432)를 포함할 수 있다. 이 동작은 인코더에 의해 이미 압축되고 디코딩을 위해 액세스가능한 비트스트림의 수신을 커버한다. 이 비트스트림은 모션 벡터 및 임의의 다른 헤더 데이터와 더불어 엔트로피 인코딩된 변환 및 양자화된 계수를 포함할 수 있다. 일 형태로서, 이미지 데이터는 IPBBPBB....와 같은 코딩 순서의 프레임(및 실제로 그 프레임을 재구성하기 위한 데이터)를 포함할 수 있다.
프로세스(430)는 "프레임을 디코딩하고 디스플레이 프레임을 재구성하는 단계"(434)를 포함할 수 있으며, 프레임을 재구성하기 위한 비트스트림으로부터의 이미지 데이터를 사용함으로써 그리고 디코더(200)로 이미 설명된 동작에 의해 코딩 비디오 시퀀스를 디코딩할 수 있다. 디코딩 동작은 전술한 기준 프레임을 사용하는 인트라-코딩 및 인터-예측을 사용하여 프레임을 재구성할 수 있다. 따라서, 프로세스(430)는 "오프칩 메모리에 I-프레임 및 P-프레임을 버퍼링하는 단계"(436)를 포함할 수 있으며, 특히 인터-예측을 위해 기준 프레임을 버퍼링하는 것이다. 디코더는 그 후 다른 프레임을 재구성하는데 사용하기 위해 필요에 따라 오프칩 메모리로부터 "기준 프레임을 획득"(438)할 수 있다. 디코더 출력은 그 후 IP1B1B2P2B3B4....의 순서로 제공될 수 있으며, 따라서 디스플레이되기 전에 재정렬될 필요가 있다.
도 6을 다시 참조하면, 일 예의 타임라인 챠트(또는 타임라인)(600)가 제공되어 프로세스(430)의 설명을 지원하며 그 챠트는 시간이 진행함에 따라 오른쪽으로 이동하게 된다. 타임라인(600)은 코딩 순서에서 디스플레이 순서로 프레임을 재정렬하는 예를 나타내도록 제공되며, 이들 순서에서 디코딩 프레임 시퀀스 및 디스플레이 프레임 시퀀스는 모두 동일한 디스플레이 프레임 레이트를 위해 설정되며, 가령, 모두는 30fps에 설정되거나 60fps에 설정된다. 따라서, 오프칩 메모리 또는 RAM과 같은 메모리(602)는 코딩 프레임 프로세싱 라인을 따라 그리고 가령 전술한 IP1B1B2P2B3B4P3...의 순서와 같은 코딩 순서로 코딩 비디오 시퀀스(604)로부터 획득되는 프레임들의 일부를 저장하기 위해 제공된다. 각각의 프레임의 프로세싱은 타임 라인 t를 따라서 디스플레이 프레임 구간(606)을 채우는 것으로 도시된다. 이 프레임 및 이 실시예의 I-프레임 및 P-프레임은 화살표(612, 614, 626, 및 634)에 의해 도시되는 바와 같이 오프칩 메모리에 기입되며, 이어서 인출되어 그 프레임은 디스플레이 비디오 시퀀스(610) 상의 정확한 재정렬 위치에 배치되게 된다.
오프칩 메모리 대역폭을 절감하기 위해, 프로세스(430)는 "온칩 메모리에 B-프레임을 저장하는 단계"(440)를 포함할 수 있으며, 이 실시예에서는 B-프레임을 오프칩 메모리에 기입하지 않는다. 이 실시예에서, 온칩 메모리 및 오프칩 메모리에 버퍼링된 버전의 프레임들은 적어도 이미 디코딩되어 디스플레이될 준비가 된 프레임들이다. 이는, 프레임들의 이미지 데이터의 증강, 개선 또는 스케일링과 같은 임의의 사후 프로세싱을 포함하거나 포함하지 않을 수 있다. (프레임들이 다른 프로세싱 스테이지에 존재하는) 다른 버전들이 본 명세서에 기술된 바와 같이 가능하다.
프로세스(430)는 "디스플레이 순서의 프레임들을 인출하고 스트리밍하여 디스플레이 비디오 시퀀스를 형성하는 단계"(442)를 포함할 수 있으며, 특히 이 실시예의 경우 타임라인(600)의 화살표(620, 628, 및 636)로 표시되는 바와 같이 오프칩 메모리로부터 I-프레임 및 P-프레임을 인출하고 타임라인(600)의 화살표(622, 624, 630, 및 632)로 표시되는 바와 같이 온칩 메모리로부터 B-프레임을 스트리밍할 수 있다. 온칩 메모리로부터 스트리밍하는 동작(440)과 그 후 프레임을 코딩 비디오 시퀀스에 효율적으로 배치하는 동작(442)은 ISP(또는 다른 프로세서) 또는 디코더로부터 디스플레이 비디오 시퀀스로의 다이렉트 스트리밍으로 지칭될 수 있거나, 또는 그 프레임들이 코딩 비디오 시퀀스로부터(그러나 더 정확히는 온칩 메모리로부터) 다이렉트 스트리밍되는 것으로 언급될 수 있다. 이러한 프레임은 오프칩 메모리(602)에 기입되지 않고 디스플레이 비디오 시퀀스(610) 내에 배치되며, 이는 오프칩 메모리 대역폭을 감소시킨다. 이러한 결과의 디스플레이 순서는 IB1B2P1B3B4P2...일 수 있다.
지연(518)과 유사한 지연(618)이 프로세스 내에 구축되는데, 여기서 예외인 것은 지연(618)이 한 구간 지연이며, 코딩 비디오 시퀀스(604) 및 디스플레이 비디오 시퀀스(610) 모두 내의 B-프레임들이 동일한 디스플레이 프레임 구간(606)에서 정렬하도록 제공된다는 것이다. 따라서, 코딩 비디오 시퀀스(604) 내의 B1은 디스플레이 비디오 시퀀스(610) 내의 B1과 동일한 디스플레이 프레임 구간(606)에 있다.
프로세스(430)는 "디스플레이 비디오 시퀀스를 적어도 하나의 디스플레이에 제공하는 단계"(444)를 포함할 수 있으며, 여기서 디스플레이 비디오 시퀀스는 IBBP 디스플레이 순서의 프레임을 가지게 된다. 오프칩 메모리에 모든 프레임을 제공하는 종래의 시스템에 비해 본 시스템의 오프칩 메모리 대역폭은 절감되며, NV12 UHD p60 콘텐츠의 경우 3840×2160×1.5×2×40=949 MB/s가 된다.
이제 도 4c를 참조하면, 본 개시의 적어도 일부의 구현예에 따른 상세한 예의 비디오 코딩 프로세스(450)가 배열된다. 이 구현예에서, 프로세스(450)는 비디오 코딩을 위한 프레임 재정렬 프로세스이며, 특히 디코딩(또는 코딩) 순서에서 디스플레이 순서로 프레임을 재정렬하고 또는 재생하고, 코딩된 비디오 시퀀스에 대한 디코딩 레이트와는 상이한 디스플레이 레이트를 갖는 디스플레이 비디오 시퀀스를 위한 것이다. 이 실시예는 디코드 레이트의 두 배의 디스플레이 레이트를 가진 프로세스(450)를 설명하고 있다. 프로세스(450)는 짝수 번호로 매겨진 하나 이상의 동작(452 내지 472)에 의해 도시되는 바와 같은 하나 이상의 동작, 기능 또는 행위를 포함할 수 있다. 비제한적인 예로서, 프로세스(450)는 도 1, 도 2, 도 5 내지 도 16, 및 도 18과 관련하여 논의된 동작을 참조하여 기술될 것이며, 예의 시스템(100, 200, 1000, 1200, 1400, 1600, 또는 1800)을 참조하여 논의될 수 있다.
프로세스(450)가 프로세스(430)에서와 동일하게 재생 및 디스플레이에 관한 것이기 때문에, "코딩 순서 및 코딩 레이트의 프레임과 함께 압축된 이미지 데이터의 비트스트림을 수신하는 단계"(452), "프레임을 디코딩하고 디스플레이 프레임을 재구성하는 단계"(454), 및 "기준 프레임을 획득하는 단계"(458)는 프로세스(430)와 함께 기술된 것과 동일하거나 유사하며, 추가의 설명을 필요로 하지 않지만, 예외적으로 코딩 레이트(또는 즉, 프레임 레이트)는 주목된다.
그러나, 프로세스(450)는 프로세스(430)과는 상이한 "오프칩 메모리에 I-프레임, P-프레임 및 B-프레임을 버퍼링하는 단계"(456)를 포함할 수 있다. 여기서, 일 예로서, 모든 프레임 타입들은 오프칩 메모리에 버퍼링되며, 일 예로서 모든 프레임들은 오프칩 메모리에 버퍼링된다.
도 7을 참조하면, 일 예의 타임라인 챠트(또는 타임라인)(700)가 제공되어 프로세스(450)의 설명을 지원하며 그 챠트는 시간이 진행함에 따라 오른쪽으로 이동하게 된다. 타임라인(700)은, 코딩 레이트를 가진 코딩 비디오 시퀀스의 코딩 순서와, 상기 코딩 레이트와는 상이한 디스플레이 레이트의 디스플레이 비디오 시퀀스의 디스플레이 순서로부터 프레임을 재정렬하는 예를 나타내기 위해 제공된다. 여기서, 코딩 비디오 시퀀스는 30fps의 디코딩 레이트를 가지며, 디스플레이 비디오 시퀀스는 60fps의 디스플레이 레이트와 관련된다. 따라서, 오프칩 메모리 또는 RAM과 같은 메모리(702)는 코딩 프레임 프로세싱 라인(704)을 따라 그리고 가령 전술한 IP1B1B2P2B3B4P3...의 순서와 같은 코딩 순서로 코딩 비디오 시퀀스(704)로부터 획득되는 프레임들의 일부를 저장하기 위해 제공된다. 코딩 비디오 시퀀스(704)에서의 각각의 프레임의 프로세싱은 타임 라인 t를 따라서 디스플레이 프레임 구간(706)을 채우는 것으로 도시된다. 이 프레임 및 이 실시예의 I-프레임 및 P-프레임은 화살표(712, 714, 720, 726, 732, 738, 744 및 750)에 의해 도시되는 바와 같이 오프칩 메모리에 기입되며, 이어서 인출되어 그 프레임은 디스플레이 비디오 시퀀스(710) 상의 정확한 재정렬 위치에 배치되게 된다.
프로세스(450)는 "온칩 메모리에 B-프레임을 저장하는 단계"(460)를 포함할 수 있으며 온칩 메모리는 위에서 기술되었다. 이는 버퍼링되는 B-프레임의 두 개의 사본을 생성하며, 하나의 사본은 온칩 메모리에 저장되며, 다른 사본은 오프칩 메모리에 저장되어, 그 결과 프로세스는 동일한 B-프레임의 두 개의 사본, 및 일 실시예에서의 B-프레임들의 각각의 사본을 버퍼링한다. 이 실시예에서, 온칩 메모리 및 오프칩 메모리의 버퍼링된 버전의 프레임들은 적어도 이미 디코딩되고 디스플레이를 위해 준비되어 있는 것이다. 이는 프레임들의 이미지 데이터의 증강, 개선 또는 스케일링과 같은 임의의 사후 프로세싱을 포함하거나 포함하지 않을 수 있다. 다른 버전(이 버전에서 프레임들은 상이한 프로세싱 스테이지에 존재함)이 본 명세서에 기술된 바와 같이 가능하다.
프로세스(450)는 "디스플레이 순서의 프레임들을 인출하고 스트리밍하여 코딩 레이트보다 빠른 디스플레이 레이트의 디스플레이 비디오 시퀀스를 형성하는 단계"(462)를 포함할 수 있다. 코딩 프로세스 레이트를 보다 빠른 디스플레이 레이트로 변환하기 위해, 동일한 프레임의 복수의 사본은 보다 저속 레이트의 디스플레이 프레임 구간에 배치될 수 있으며, 그 때, 보다 고속의 디스플레이 레이트는 상기 저속 레이트의 배수가 되는데, 가령 여기서, 디코딩 레이트는 30fps이며 디스플레이 레이트는 60fps로서 여기서 60/30=2는 레이트 계수가 된다. 이러한 경우, 각각의 프페임의 두 개의 사본은 인출되는데, 여기서 보다 고속의 디스플레이 레이트의 계수는 보다 저속의 레이트의 단일 디스플레이 프레임 구간을 채우는 보다 고속 레이트의 프레임들의 개수 및 페이즈(phases)의 개수가 된다. 디스플레이 레이트가 코딩 레이트의 2배(상기 계수는 2임)가 되는 프레임 레이트 변환 이후의 디스플레이 순서는 일 예의 형태에 의해 순서 IIB1B1B2B2P1P1B3B3B4B4P2P2...로 될 수 있다. 디스플레이 프레임 구간(706)의 페이즈들(701 및 703)은 디스플레이 비디오 시퀀스(710)를 따라 타임라인(700) 상에서 표시된 바와 같이 왼쪽에서 오른쪽으로 연대순으로 충진되지만 I-프레임, P-프레임, 및 B-프레임의 인출 및 삽입에 관한 동작은 아래에서 개별적으로 논의된다.
비디오 시퀀스는, 코딩 비디오 시퀀스(704)의 디스플레이 프레임 구간(706)의 B-프레임 슬롯들을 디스플레이 비디오 시퀀스(710)의 B-프레임 디스플레이 프레임 구간과 정렬시키도록, 타임라인(500)의 지연(518)과 유사한 지연(717) 이후에 개시된다. 따라서, 프로세스(450)는 타임라인(700) 상의 화살표(716, 718, 734, 736, 및 752, 754)에 의해 표시된 바와 같이 "I-프레임 및 P-프레임의 적어도 두 개의 프레임 사본을 인출하는 단계"(464)를 포함할 수 있다. 그 후, 프로세스(450)는 디스플레이 비디오 시퀀스(710)에서 II 또는 PP 순서를 발생시키는 "디스플레이 비디오 시퀀스의 다수의 상이한 프레임에 대해 코딩 레이트의 디스플레이 구간에 동일한 프레임 사본을 배치하는 단계"(466)를 포함할 수 있다.
프로세스(450)는 "오프칩 메모리로부터 B-프레임의 하나의 사본을 인출하고 온칩 메모리로부터 하나의 사본을 스트리밍하는 단계"(468)를 포함할 수 있으며, 오프칩 메모리 대역폭을 감소시키기 위한 것이다. 따라서, 오프칩 메모리(702)로부터 B-프레임을 인출하는 것은 화살표(724, 730, 742, 및 748)로 표시될 수 있으며, ISP(또는 온칩 메모리로부터) 비디오 시퀀스(710)로의 B-프레임의 다이렉트 스트리밍은 타임라인(700)의 화살표(722, 728, 732, 740, 및 746)로 표시될 수 있다.
프로세스(450)는 "디스플레이 비디오 시퀀스의 다수의 상이한 프레임에 대해 코딩 레이트의 디스플레이 구간에 동일 B-프레임의 사본을 배치하는 단계"(470)를 포함할 수 있으며, 특히 하나의 프레임은 제1 페이즈(701)에 다른 프레임은 제2 페이즈(703)에 배치하는데, 여기서, 단일 디스플레이 프레임 구간에 대한 페이즈들(및 디스플레이 프레임들)의 개수는 전술한 바와 같이 레이트 계수와 동일하다. 일 예로서, 온칩 메모리로부터의 스트리밍된 B-프레임 사본은 디스플레이 프레임 구간의 제1 페이즈 내에 배치되지만, 오프칩 메모리로부터의 B-프레임 사본은 각각의 디스플레이 프레임 구간에 대해 제2 페이즈 내에 배치된다. 이는 전체 비디오 시퀀스에 대해 또는 소정의 장면 또는 장면의 부분들과 같은 시퀀스의 오직 일부들에 대해, 또는 디바이스에 의한 모든 그러한 비디오 프로세싱을 위해 일관성있는 것일 수 있다.
주목할 것은, 디스플레이가 변환을 수행하기 위한 자신의 프레임 버퍼를 가지고 있지 않을 경우 스트리밍에 의해 수행되는 프레임 레이트 변환이 사용될 수 있다는 것이다. 따라서, 디스플레이 패널 자체 리프레시(DSR) 또는 패널 자체 리프레시(PSR) 기능과 같은 자체 프레임 버퍼를 갖는 디스플레이 제어기는 비트스트림의 변형을 수행하여 디스플레이 레이트를 변경할 수 있다.
프로세스(450)는 이미 위에서 기술된 바와 같이 "디스플레이 비디오 시퀀스를 적어도 하나의 디스플레이에 제공하는 단계"(472)를 포함할 수 있다.
DSR/PSR 옵션을 사용하는 시나리오의 경우, NV12 UHD p30 콘텐츠에 대해 3840×2160×1.5×30=356MB/s의 시스템 대역폭 절감이 이루어진다. 그러나, 스트리밍 옵션은, NV12 UHD p60 콘텐츠의 경우 3840×2160×1.5×20=237MB/s의 시스템 대역폭 절감에 도달하는 오프칩 메모리에 모든 프레임을 저장하는 것에 비해 여전히 대역폭 절감을 제공하고 있다. 유사한 프로세스가 24fps 비디오 입력(캡처 프레임 레이트)에 대해 적용될 수 있다.
이제 도 4d를 참조하면, 본 개시의 적어도 일부의 구현예에 따른 상세한 예의 비디오 코딩 프로세스(480)가 배열된다. 이 구현예에서, 프로세스(480)는 비디오 코딩을 위한 프레임 재정렬 프로세스이며, 특히 디코딩(또는 코딩) 순서에서 디스플레이 순서로 프레임을 재정렬하고, 캡처 레이트와는 상이한 레이트를 갖는 디스플레이 비디오 시퀀스를 위한 것이며, 프로세스(480)는 짝수 번호로 매겨진 하나 이상의 동작(482 내지 496)에 의해 도시되는 바와 같은 하나 이상의 동작, 기능 또는 행위를 포함할 수 있다. 비제한적인 예로서, 프로세스(480)는 도 1, 도 2, 도 5 내지 도 16, 및 도 18과 관련하여 논의된 동작을 참조하여 기술될 것이며, 예의 시스템(100, 200, 1000, 1200, 1400, 1600, 또는 1800) 또는 본 명세서에 논의되는 바와 같은 타임라인(500, 600, 700, 또는 800)을 참조하여 논의될 수 있다.
프로세스(480)는 "캡처된 순서 및 캡처 레이트의 프레임들을 가진 비디오 시퀀스 형태의 원시 이미지 데이터를 캡처하는 단계"(482)를 포함할 수 있으며, 특히 비디오 카메라와 같은 이미지 캡처 디바이스로부터 크로마 및 루미넌스 픽셀 값을 수신하는 것을 포함할 수 있다. 캡처된 순서는 이미 위에서 언급한 바와 같은 연대순을 지칭한다. 이 예에서, 캡처 레이트는 30fps이다.
프로세스(480)는, 프레임이 (RAM과 같은) 오프칩 메모리 또는 (L2 캐시(ML2)의 SOC 모듈과 같은) 온칩 메모리에 저장될 수 있도록, "원시 이미지 데이터 프레임을 저장하는 단계"(484)를 포함할 수 있다.
프로세스(480)는 "원시 이미지 데이터 프레임을 프로세싱하는 단계"(486)를 포함할 수 있으며, 특히 노이즈 감소, 픽셀 선형화 및 음영 보정과 같은 원시 데이터의 사전 프로세싱 단계를 포함할 수 있다. 이는 또한, 해상도 감소, 베이어 디모자이크(Bayer demosaic), 및/또는 비그넷 제거(vignette elimination), 시간적 디노이징(temporal de-noising), 이미지 샤프닝(image sharpening), 등을 포함할 수 있다. 일단 사전 프로세싱된다면, 일반적인 이미지 통계 정보가 산출될 수 있다. 이 정보는 몇몇 예로서, 루미넌스/크로미넌스 값 및 평균과, 루미넌스/크로미넌스 고 주파수 및 텍스처 콘텐츠(luminance/chrominance high frequency and texture content)와, 프레임간의 모션 콘텐츠와, 임의의 다른 컬러 콘텐츠 값과, 디블럭킹 제어에 관한 픽처 통계 데이터(가령, 디블럭킹(deblocking)/넌-디블럭킹(non-deblocking)을 제어하는 정보)와, RGB 그리드와, 필터 응답 그리드와, RGB 히스토그램을 포함할 수 있다. 이 정보는 매크로블럭 또는 코딩 유닛(CU) 단위로(가령, 16×16, 또는 8×8, 또는 다른 사이즈 단위의 픽셀 블럭으로) 제공될 수 있거나, 또는 픽셀 단위로, 또는 디코딩 레이트와 같은 소정의 코딩 표준에 대한 호환성 파라미터에 따라 원하는 다른 유닛 단위로 제공될 수 있다.
일단 사전 프로세싱되고 통계가 집계되면, 자동 화이트 밸런스(AWB), 또는 자동 포커스(AF) 또는 자동 노출 제어(AEC)과 관련된 다른 조정이 장래의 이미지 캡처를 위해 또한 적용될 수 있고, ISP가 각 프레임마다의 데이터를 프로세싱하여 사전 프로세싱 및 통계로부터의 조정을 통해 프레임을 재구성할 수 있다.
그 후 사후 프로세싱이 발생할 수 있으며 사후 프로세싱은 컬러 필터 어레이(CFA) 보간, (원시 RGB에서 가령 아직 수행되지하지 않은 sRGB로의 변환과 같은) 컬러 공간 변환, 감마 보정(gamma correction), RGB에서 YUV 변환, 이미지 샤프닝, 등을 포함할 수 있다. 원시 데이터 프로세싱은, 소프트웨어 및/또는 ISP의 하드웨어 파이프라인에 의해 그 프로세스를 수행하기 위한, ISP 또는 본 명세서에서 언급되는 다른 프로세서와 같은 프로세서에 의해 수행될 수 있다.
프로세스(480)는 "오프칩 메모리에 I-프레임, P-프레임, 및 B-프레임을 버퍼링하는 단계"(488)를 포함할 수 있으며, 전술한 유사한 특징들 중의 임의의 것과 함께 설명되는 바와 같이 RAM과 같은 오프칩 임시 메모리에 I-프레임, P-프레임, 및 B-프레임을 버퍼링하는 것을 포함할 수 있다. 그러나, 그러한 경우, 모든 프레임 타입이 오프칩 메모리에 기입되며 일 예로서 모든 프레임이 오프칩 메모리에 기입된다.
도 8을 참조하면, 일 예의 타임라인 챠트(또는 타임라인)(800)가 제공되어 프로세스(480)의 설명을 지원하며 그 챠트는 시간이 진행함에 따라 오른쪽으로 이동하게 된다. 타임라인(800)은, 하나의 디스플레이 레이트를 가진 캡처된 비디오 시퀀스의 캡처 순서와 상이한 디스플레이 레이트의 디스플레이 비디오 시퀀스의 미리보기 디스플레이 순서로부터 프레임을 재정렬하는 예를 나타내도록 제공된다. 이러한 캡처 프레임 레이트는 캡처 비디오 시퀀스의 경우 30fps일 수 있지만, 디스플레이 비디오 시퀀스는 60fps의 디스플레이 레이트와 관련될 수 있다. 따라서, 오프칩 메모리 또는 RAM과 같은 메모리(802)는 캡처 프레임 프로세싱 라인(b04)을 따라 그리고 가령 전술한 IP1B1B2P2B3B4P3...의 순서와 같은 코딩 순서로 캡처 비디오 시퀀스(804)로부터 획득되는 프레임들을 저장하기 위해 제공된다. 캡처 비디오 시퀀스(804)에서 각각의 프레임의 프로세싱은 타임 라인 t를 따라서 디스플레이 프레임 구간(806)을 채우는 것으로 도시된다. 이 실시예에서, 타임라인(800) 상의 화살표(812, 818, 824, 836, 842, 848 및 854)는 오프칩 메모리로의 프레임의 버퍼링을 나타낸다.
프로세스(480)는 "I-프레임, P-프레임, 및 B-프레임을 온칩 메모리(490)에 저장하는 단계"(490)를 포함할 수 있다. 따라서, 개개의 프레임들은 오프칩 메모리 및 온칩 메모리 모두에 기입되거나 버퍼링된다. 일 예로서, 모든 프레임들은 오프칩 메모리 및 온칩 메모리 모두에 복사된다. 온칩 메모리로의 저장은 타임라인(800) 상에 도시되지 않는데, 그 이유는 그것이 캡처 비디오 시퀀스(또는 ISP)로부터의 다이렉트 스트리밍으로 간주될 수 있기 때문이다. 이 실시예에서, 온칩 메모리 및 오프칩 메모리 모두로의 프레임의 버퍼링된 버전은 원시 데이터 프로세싱으로부터 즉시 형성되며 이 후에 코딩 프로세싱(중간 또는 최종 버전의 인코딩)이 수행된다. 본 명세서에 기술되는 파라미터에 일관되는 다른 버전(이 버전에서 프레임들은 상이한 프로세싱 스테이지에 존재함)이 가능하다.
프로세스(480)는 "다수의 상이한 프레임들에 대해 모든 메모리로부터 동일한 프레임 사본을 인출하는 단계"(492)를 포함할 수 있으며, 특히 온칩 메모리로부터 하나의 프레임 사본을 인출하고 오프칩 메모리로부터 동일 프레임의 다른 프레임 사본을 인출하는 단계를 포함할 수 있다. 이는 모든 프레임 타입 I, P, 및 B, 등에 대해 수행된다. 온칩 메모리로부터 그리고 디스플레이 비디오 시퀀스(810)로 다이렉트 스트리밍되는 프레임 사본들은 화살표(814, 820, 826, 832, 838, 844, 850, 856)로 표시된다. 오프칩 메모리로부터 인출되는 프레임 사본들은 화살표(816, 822, 828, 834, 840, 846, 852, 및 858)로 표시된다.
프로세스(480)는 "다수의 상이한 프레임들에 대한 캡처 레이트의 디스플레이 구간에 동일한 프레임 사본들을 배치하여 캡처 레이트보다 빠른 디스플레이 레이트의 디스플레이 비디오 시퀀스를 형성하는 단계"(494)를 포함할 수 있다. 특히, 온칩 메모리로부터 스트리밍된 프레임 사본들은 각각의 디스플레이 프레임 구간(806)의 제1 페이즈(801)에 배치되지만, 오프칩 메모리(802)로부터 인출되는 프레임 사본들은 디스플레이 프레임 구간(806)의 제2 페이즈(803)에 배치된다. 이러한 것은, 단일 디스플레이 프레임 구간에 배치할 두 개를 초과하는 프레임이 존재할 경우, 교환될 수 있거나 다른 배치가 사용될 수 있다는 것이 이해될 것이다.
프로세스(480)는 "디스플레이 비디오 시퀀스를 적어도 하나의 디스플레이에 제공하는 단계"(496)를 포함할 수 있다. 따라서, 프로세싱된 비디오 이미지는 디지털 카메라 또는 폰 스크린 상의 뷰 파인더(view-finder) 또는 미리 보기 이미지로서, 또는 다른 디바이스 상의 최종 디스플레이로서 디스플레이될 수 있거나, 또는 나중의 시청(viewing)을 위해 저장될 수 있다. 대안으로서, 또는 추가적으로, 이미지 데이터는, 압축 및 디코딩을 가진 다른 디스플레이로의 송신을 위한 인코더에 또는 스토리지 디바이스에 제공될 수 있다.
오프칩 메모리로부터 모든 프레임을 저장 및 인출하는 시스템에 비해, NV12UHDp60 콘텐츠에 대한 시스템 대역폭 절감은 3840×2160×1.5×20=356MB/s이 된다.
도 9 내지 도 16을 참조하면, 본 명세서에 기술된 바와 같은 프레임 재정렬을 위해 소정의 프레임의 다이렉트 스트리밍을 사용함으로써 오프칩 메모리 대역폭을 감소시키는 방법을 수행하는 데 사용될 수 있는 시스템의 상세한 구현예와 비교하기 위한 기존의 구현예가 제공된다. 여러 구현예는 동일하거나 유사한 컴포넌트들을 갖는다. 따라서, 일 구현예 상의 유사하게 라벨링된 하나의 컴포넌트는 다른 구현예 상의 유사한 라벨을 가진 컴포넌트와 동일하거나 유사한 것일 수 있다. 이러한 경우, 그 컴포넌트를 다시 기재하는 것은 불필요하다. 프레임의 다이렉트 스트리밍을 사용하는 상이한 구현예는 상이한 미디어 사용을 위해 오프칩 메모리 대역폭을 감소시키는 것에 관한 해결책을 포함하고 있다.
도 9를 참조하면, 시스템(900)은 비디오 레코드 동안 IPU-ISP (이미징)와 코덱 유닛 (비디오 인코더) 간의 스트리밍을 지원하지 않는 기존의 구현예이다. 시스템(900)은 디지털 카메라와 같이, 이미지를 캡처하고 60fps에서의 4k 스크린(4k60)을 통해 레코딩 및 미리보기 디스플레이를 위한 이미지 프로세싱 유닛(IPU)(902)을 가질 수 있다. IPU(902)는 RAM과 같은 오프칩 임시 메모리(904) 상에 이미지를 저장할 수 있으며, 다수의 상이한 프로세싱 스테이지에서 프레임 또는 이미지를 저장하기 위해 메모리(904)를 사용할 수 있으며, 한편, 일반적 미디어 유닛(906)은 임베딩된 멀티미디어 제어기(아래에서 상세하게 기술되는 EMMC(932))를 통해 디코더에 송신을 위한 비트스트림으로 배치하기 위해 이미지 데이터를 인코딩하거나 미리보기 스크린 상에서 프레임을 시청하기 위한 디스플레이 유닛(908)을 제공한다.
특히, IPU(902)는 일 실시예로서 비디오 이미지 데이터를 캡처하기 위해 카메라 시리얼 인터페이스(CSI) 기능을 위한 모바일 인더스트리 프로세서 인터페이스(MIPI) 표준을 사용할 수 있다. 이러한 프로세싱은 이미지 데이터를 보유하기 위한 L1 캐시를 가진 ISP(910)에 의해 수행될 수 있다. 원시 데이터의 프로세싱후, 캡처된 프레임(912)은 메모리(904) 상에 저장될 수 있다. 일 대안의 예로서, 사후 및 사전 프로세싱 유닛(914)이 제공된다. 이러한 유닛은 코덱 유닛에 대한 위치에 따라서 사전 프로세싱 유닛 또는 사후 프로세싱 유닛으로 지칭될 수 있으며, 이는 본 명세서에 기술되는 사후 프로세싱 유닛 및 사전 프로세싱 유닛 모두의 경우에 동일하다. 사전 프로세싱 유닛(914)에는 L1 캐시가 제공되어, 컬러 샤프니스(color sharpness)를 위한 이미지 데이터를 추가적으로 변형 및 개선시키거나 이후 다른 사후 프로세싱 동작이 디스플레이 순서의 프레임을 획득할 수 있다. 현재 프로세싱된 프레임(916)은 메모리에 기입되며, 이전 프레임은 이전 프레임 데이터가 현재 프레임을 증강시키는 데 필요한 경우에 사전 프로세싱 유닛에 의해 인출될 수 있다. 그 후, 사용자가 비디오 프레임을 시청하기 위해 이미지의 디스플레이를 제어하고 디스플레이를 위한 비디오 시퀀스를 제공하기 위한 메뉴를 가진 환경 또는 스크린을 제공하는 사용자 인터페이스(UI) 프레임과 더불어, 프로세싱된 프레임은 디스플레이 유닛에서의 디스플레이 제어기(918)에 제공될 수 있다. 일 형태에서, MIPI 디스플레이 시리얼 인터페이스(DSI) 표준이 사용될 수 있다.
다른 방식으로, 프로세싱된 프레임(916)은 인코더일 수 있는 코덱 유닛(922)에 제공될 수 있으며, 코넥 유닛(922)은 재구성된 기준 프레임(924)을 저장하고, 그 후, 현재 프레임을 재구성하고 필요에 따라 코딩 순서로 그 프레임을 배치할 필요가 있을 경우 그 프레임(I, P, 또는 B 기준 프레임이든)을 인출한다. 결과의 비디오 비트스트림(V-BS)(926)은 모든 프레임과 함께 메모리(904)에 저장되며, 그 후 L2 캐시를 가진 CPU(928)에 제공되어 메모리(904) 상에 저장된 전체 오디오-비디오 비트스트림(AV-BS)(930)을 재구성한다. 최종 비트스트림은 사용 및 디코더로의 전송을 위해 EMMC에 제공된다.
임베딩된 멀티미디어 제어기(EMMC 또는 eMMC)는 동일한 실리콘 다이 상에 집적된 플래시 메모리 및 플래시 메모리 제어기로 구성된 패키지를 지칭한다. EMMC 솔루션은 적어도 세 개의 컴포넌트, 즉, 멀티미디어 카드(MMC) 인터페이스, 플래시 메모리, 및 플래시 메모리 제어기로 구성된다. EMMC는 산업 표준 BGA 패키지에 제공된다. EMMC는 멀티미디어 제어기를 플래시 다이 내로 번들링하기 위한 표준화된 방법으로 개발되었다. EMMC는 고성능 및 보안성, 등을 위한 요건을 충족하는 시큐어 이레이즈 앤드 트림(secure erase and trim)과 고우선순위 인터럽트(high-priority interrupt)와 같은 특징들에 대한 프로비전(provisions)을 포함할 수 있다. EMMC 제어기는 디코더 및 디스플레이를 가진 다른 디바이스로의 비트스트림의 전송을 관리할 수 있다.
기존의 시스템(900)은 메모리(904)에 대해 입력(또는 기입) 및 출력(또는 인출) 전송을 따른 숫자로 표시된 바와 같이 10252 MB/s의 전체 오프칩 메모리 대역폭을 제공한다.
도 10을 참조하면, 비디오 레코딩 동안 IPU-ISP(이미징)와 코덱 유닛(비디오 인코더) 간의 스트리밍을 지원하는 예가 제공된다. 비디오 레코딩 및 코딩과 디스플레이는 모두 4k60 스크린용으로 제공된다. 이 예는 프로세스(400)(도 4a) 및 타임라인(500)을 구현할 수 있다. 시스템(1000)은 L2 캐시(ML2)의 모듈(본 명세서에서 내부 또는 로컬 메모리로 지칭되기도 함)과 같은 내부 또는 온칩 메모리를 가진 미디어 허브(1002)를 가지며, 여기서 미디어 허브 또는 미디어 허브의 적어도 일부는 하나 이상의 SOC 또는 유사한 구조에 의해 형성된다. 본 명세서에 기술된 바와 같은 오프칩 메모리(1004)가 또한 사용될 수 있다. 시스템(1000)은 캡처 프레임(영역으로 표시됨)(1010)이 온칩 메모리(1006)에 기입되는 것을 제외하고는 전술한 ISP(910)와 유사한 ISP(1008)를 사용한다. 온칩 메모리에 저장된 프레임은 영역으로 지칭되는데, 그 이유는 그 프레임이 메모리 용량이 전체 이미지에 대해 허용되지 않을 때 전체 이미지보다는 이미지의 영역을 소정의 시점에 여전히 저장할 수 있기 때문이다. 캡처 프레임은 디스플레이(또는 캡처) 순서(일 예로서 IBBP)의 입력 프레임으로서 제공되며, 일 예로서, 이전에 프로세싱된 프레임(1014)이 먼저 인출되어 온칩 메모리(영역 또는 캐시)(1016)에 배치되고 그리고 나서 사전 프로세싱 유닛(1012)에 제공되는 것을 제외하고는 사전 프로세싱 유닛(914)과 유사한 사후 및 사전 프로세싱 유닛(1012)에 제공된다. 프로세싱된 모든 프레임의 사본은 온칩 메모리 영역(1018)에 배치될 수 있다. UI 프레임(1021)과 더불어 사전 프로세싱 유닛(1012)으로부터의 개선을 가진 프로세싱 프레임은 디스플레이 제어기(1020)에 제공될 수 있으며, 이 디스플레이 제어기(1020)는 MIPI-DSI를 사용하여 본 명세서에 기술된 바와 같은 프레임 재정렬 및 코딩을 갖지 않고도 비디오의 미리보기 디스플레이를 행할 수 있다.
다른 방식으로, 스트리머 인터페이스(streamer interface)(또는 재정렬 유닛)(1022)은 로컬 온칩 메모리 영역(1018)으로부터 P-프레임을 스트리밍할 수 있을 뿐만 아니라 오프칩 메모리(1004)로부터 I-프레임 및 B-프레임을 인출하여 (예의 타임라인(500)에서와 같이 IPBB) 코딩 순서의 프레임을 가진 코딩 비디오 시퀀스를 재구성할 수 있다. 이러한 코딩 비디오 시퀀스는 코덱 유닛(인코더)(1024)에 제공된다. 코딩 동안, 코덱 유닛은, 기준 프레임(1026)으로서 사용되고 오프칩 메모리(1004)에 저장되는 재구성된 프레임을 생성할 수 있다. 오프칩 메모리(1004)로부터의 프레임들 중의 일부는 L2 캐시 영역(1028)에 배치되어 메모리(1004)로부터의 스트레이트 인출을 감소시키지만, 캐시 미스인 경우 메모리(1004) 상의 기준 프레임(1026)으로부터 직접 검색된다. 결과의 비디오 비트스트림(V-BS)(1030)은 온칩 메모리(1006)에 저장될 수 있으며, 그 후 L2 캐시를 가진 미디어 허브 CPU(MH-CPU)에 제공되어 전체 오디오-비디오 비트스트림(AV-BS)(1034)을 구성할 수 있으며, 그 후 전체 오디오 -비디오 비트스트림은 오프칩 메모리(1004)에 저장될 수 있으며, 그리고 나서 전술한 바와 같은 EMMC에 제공될 수 있다.
전체 오프칩 메모리 대역폭은 5882 MB/s이며, 이는 시스템(900)의 대역폭에 비해 대략 43% 적은 대역폭이며, 전체 온칩 메모리 대역폭은 9174 MB/s이다. 심지어는 전체 대역폭이 시스템(900)보다는 시스템(1000)을 스트리밍하기 위해 더 커지더라도, 시스템(1000)은 다른 사용을 위해 오프칩 메모리의 보다 많은 대역폭 용량을 남겨놓기에 더욱 효율적이다. 이는 본 명세서에 기술되는 모든 시스템의 경우에 유사한 결론이 된다.
도 11을 참조하면, 디코딩을 위한 다른 기존 구현예가 제공되며, 이 구현예는 비디오 재생 동안 코덱 유닛(비디오 디코더)과 디스플레이 제어기 간의 스트리밍을 지원하지 않는다. 여기서, 시스템(1100)은 일반적 미디어 유닛(1102)과, 오프칩 또는 외부 임시 메모리(1104)와, 디스플레이 유닛(1106)을 갖는다. EMMC(1108)는 코딩된 이미지 데이터의 비트스트림(AV-BS)(1110)을 제공하며, 이 비트스트림은 메모리(1104)에 기입되고 그 후 CPU(1112)에 제공되어 오디오로부터 비디오를 분리시키며 비디오 비트스트림(V-BS)(1114)을 디코더(코덱 유닛)(1116)에 제공한다. 디코더(1116)는 메모리(1104) 상의 기준 프레임을 포함한 재구성된 프레임(1118)을 저장하며, 필요에 따라 그리고 코딩 순서의 코딩 비디오 시퀀스를 형성하며 코딩하기 위하여 기준 프레임(1118)을 인출한다. 재구성된 프레임은 그 후 디스플레이를 위한 디스플레이 유닛(1106)에서의 디스플레이 제어기(1120)에 제공되며 일 예로서 MIPI-DSI 표준을 사용하여 제공된다. 이러한 시스템(1100)은 3118 MB/s의 전체 오프칩 메모리 대역폭을 사용한다.
도 12를 참조하면, 시스템(1200)은 비디오 재생 동안 코덱 유닛(비디오 디코더)와 디스플레이 제어기 간의 스트리밍을 지원하며, 여기서 코딩 및 디스플레이는 4k60에 제공된다. 시스템(1200)은 프로세스(430)(도 4b) 및 타임라인(600)을 수행할 수 있다. 시스템(1200)은 모듈 ML2(1206)을 가진 미디어 허브 유닛(1202)을 가질 수 있으며, 이 모듈은 L2 캐시와 같은 온칩 또는 내부 임시 메모리 또는 아키텍처의 SOC 타입에 의해 제공될 수 있는 다른 타입의 메모리이거나 이를 가질 수 있다. 또한, 오프칩 또는 외부 메모리(1204)가 또한 제공될 수 있다.
시스템(1200)은 EMMC(1208)를 통한 디코딩을 위해 (IPBB 순서의) 코딩된 비트스트림을 수신할 수 있고 오프칩 메모리(1204) 상에 AV-BS(1210)를 저장할 수 있다. MH-CPU(1212)는 AV-BS(1210)를 검색하고 비디오로부터 오디오를 분리시킬 수 있으며, 그 후 온칩 메모리(1206) 상에 V-BS(1214)를 저장할 수 있다. 코딩 순서의 비디오 스트림은 그 후 L1 캐시(1218)를 가진 디코더 또는 코덱 유닛(1216)에 제공될 수 있다. 재구성된 기준 프레임(1220)은 그 후 I, P, 및 B 기준 프레임을 포함하는 오프칩 메모리(1204)에 저장된다. 디코더(1216)는 그 후 기준 프레임을 필요에 따라 온칩 L2 캐시(영역)(1222)로부터 또는 오프칩 메모리(1204) 상의 기준 프레임(1220)의 스토어로부터 다이렉트로 인출한다. 비-기준 B-프레임은 온칩 메모리(1206) 상의 영역(1224)에 저장된다.
스트리머 인터페이스(또는 재정렬 유닛)(1226)는 그 후 I 및 P 프레임과 B 기준 프레임(존재할 경우)을 오프칩 메모리로부터 인출하며, 비기준 B-프레임을 온칩 메모리로부터 스트리밍하며, 디스플레이 순서(일 예의 경우 IBBP)의 디스플레이 시퀀스를 형성한다. 디스플레이 비디오 시퀀스는 그 후 디스플레이를 위한 디스플레이 제어기(1228)에 제공된다. 이 구현예는 단지 1772 MB/s의 전체 오프칩 메모리 대역폭을 사용하며, 이는 시스템(1100)을 통한 스트리밍을 갖지 않는 경우보다 대략 43% 적은 대역폭이다. 온칩 ML2 전체 대역폭은 3331 MB/s이다.
도 13을 참조하면, 비디오 재생 동안 스케일링 및 포맷 컨버터(SFC)를 통한 코딩과 디스플레이 제어기 간의 스트리밍을 지원하지 않는 다른 기존의 예가 제공된다. SFC는, 가령 매 픽셀 보다는 픽셀들 중의 한 샘플링의 프레임을 형성하고 프레임들을 형성하는 이미지의 사이즈를 변경하는 포매팅 알고리즘(formatting algorithms)을 적용함으로써 프레임들을 형성하는 이미지의 사이즈를 변경한다. 여기서, 시스템(1300)은 8k30 코딩으로부터 4k60 디스플레이로 변환을 수행한다. 또한, 시스템(1300)은 시스템(1100)의 특징과는 유사한 특징을 가지며, 참조 번호가 유사하다(가령, 일반적 미디어 유닛(1302)은 시스템(1100) 상의 일반적 미디어 유닛(1102)와 유사하다). 따라서, 유사한 특징들은 다시 기술될 필요가 없다. 그러나, 시스템(1300)은 오프칩 메모리(1304) 상에 스케일링된 프레임(1324)을 저장하는 SFC 유닛(1322)을 갖는다. SFC 유닛(1322)은 디코더(코덱 유닛)(1316)로부터 코딩 순서(IPBB)의 디코딩된 프레임을 수신한다. 스케일링된 프레임(1324)은 코딩 순서로 저장되며 디스플레이 순서(IBBP)로 디스플레이 제어기에 의해 인출된다. 디스플레이 제어기(1320)는 디스플레이 레이트를 30fps에서 60fps로 변환하면서 프레임을 저장하는 디스플레이 버퍼(DSR/PSR)(1326)를 가질 수 있다. 이러한 시스템(1300)은 7052 MB/s의 전체 오프칩 메모리 대역폭을 사용한다.
도 14를 참조하면, 시스템(1400)은 비디오 재생 동안 스케일링 및 포맷 컨버터(SFC)를 이용한 코딩과 디스플레이 제어기 간의 스트리밍과, 8k30에서의 코딩으로부터 4k60에서의 디스플레이로의 변환을 지원한다. 시스템(1400)은 프로세스(450)(도 4c)와 타임라인(700)(도 7)을 수행할 수 있다. 시스템(1400)은 유사하게 번호가 매겨진 시스템(1200)의 것과 유사한 컴포넌트를 가지며, 그에 따라 이러한 컴포넌트에 대해 추가적인 기재는 불필요하다. 시스템(1400)은 시스템(1200)의 것과 유사한 디코더(코덱 유닛)(1416)에 의해 수신되는 이미지 데이터의 코딩된 비트스트림을 수신한다. 그러나, 시스템(1400)은 모든 프레임을 포함하여 코딩된 순서로 디코딩된 비트스트림을 스케일 및 포맷 컨버터(SFC) 유닛(1430)에 제공하여 전술한 바와 같은 프레임들의 사이즈 및 포맷을 변경한다. 이러한 경우, 모든 픽처 타입의 모든 스케일링된 프레임(1432)은 오프칩 메모리(1404)에 기입될 수 있다. 일 예로서, 디스플레이 제어기(1428)는 이러한 프레임에 대해 속도의 변경이 원해지지 않을 경우에 바로 인출하며, 그리고 필요로 하는 디스플레이 순서로 인출한다. 이와는 달리, 비기준 B-프레임은 온칩 메모리의 스케일링된 영역(1434)에 추가로 저장된다. 스트리머 인터페이스(또는 재정렬 유닛)(1436)는 그 후 오프칩 메모리에 기입된 스케일링된 프레임(1432)으로부터 I 및 P(및 기준 B) 프레임을 인출함으로써 보다 빠른 디스플레이 속도(60fps)의 디스플레이 순서로 디스플레이 비디오 시퀀스를 구축하며, 온칩 메모리의 스케일링된 영역(1434)으로부터 비기준 B-프레임을 스트리밍한다. 타임라인(700)에 대해 언급된 바와 같이, 재정렬된 디스플레이 비디오 시퀀스는 각각의 프레임의 사본을 보다 저속의 레이트의 디스플레이 프레임 구간의 페이즈 내로 피팅(fitting)하여 동일한 프레임의 복수의 사본이 전술한 바와 같이 디스플레이 프레임 구간을 채우도록 함으로써 IIBBBBPP...가 될 수 있다. 보다 고속의 디스플레이 레이트의 디스플레이 비디오 시퀀스는 그 후 디스플레이 제어기(1428)에 스트리밍된다. 전체 오프칩 메모리 대역폭은 4542 MB/s(이는 기존의 시스템(1300)의 것보다 대략 36% 적음)이지만, 전체 ML2 대역폭은 6714 MB/s이다.
도 15를 참조하면, 비디오 재생 동안 코덱 유닛(비디오 디코더)과 디스플레이 순서 내의 사후 프로세싱 유닛 간의 스트리밍을 지원하지 않는 다른 기존의 구현예가 제공된다. 시스템(1500)은 또한 8k30 코딩을 4k60 디스플레이로 변환한다. 시스템(1500)의 여러 특징은 시스템(1100, 1300)의 것과 동일하거나 유사하며 여기서 다시 설명될 필요는 없다. 그러나, 시스템(1500)의 경우, 모든 디코딩된 프레임(1518)은 오프칩 메모리(1504)에 저장될 수 있으며, 그 후 사후 프로세싱 유닛(1528)에 이해 디스플레이 순서로 인출되어 이미 위에서 설명된 바와 같은 사후 프로세싱 개선을 제공할 수 있다. 사전 프로세싱 유닛(914)(도 9)과 함께 언급된 바와 같이, 사후 프로세싱 유닛(1528)은 오프칩 메모리(1504)에 프로세싱된 프레임(1530)을 저장할 수 있으며 그리고 이전에 프로세싱된 프레임을 검색하여 현재 프레임을 수정할 수 있다. 프로세싱된 프레임은 여전히 코딩 순서로 되어 있으며, 스케일링 및 추가의 포맷 수정을 위해 SFC(1522)에 제공될 수 있다. 코딩 순서에 있는 다운스케일링된 프레임(1524)은 오프칩 메모리(1504)에 저장될 수 있다. 디스플레이 제어기(1520)는 메모리(1504)에서 디스플레이 순서로 스케일링된 프레임(1524)을 검색하는 버퍼(1526)를 가질 수 있으며, 그 자신의 DSR/PSR 버퍼(1526)를 사용하여 디스플레이 레이트를 가령 60fps로 변환한다. 전체 메모리 대역폭은 18568 MB/s이다.
도 16을 참조하면, 시스템(1600)은 비디오 재생 동안 코덱 유닛(비디오 디코더) 코딩과 디스플레이를 위한 스케일링을 가진 사후 프로세싱 유닛 간의 스트리밍을 지원하며, 여기서 코딩은 8k30으로 제공되며, 디스플레이는 4k60으로 제공된다. 시스템(1600)은 시스템(1200 또는 1400)의 것과 동일하거나 유사한 다수의 특징을 가지며, 그 번호는 유사하게 매겨져 그 특징의 추가의 설명은 불필요하다. 그러나, 시스템(1600)은 코딩 순서(IPBBIPBB...)로 코딩 비디오 시퀀스를 디코딩하며, 그 후 메모리(1606) 상의 온칩 로컬 영역(1650)에 비기준 B-프레임을 저장하며 동시에 기준 프레임(1620)은 오프칩 메모리에 저장된다. 스트리머 인터페이스(재정렬 유닛)(1640)는 그 후 오프칩 메모리(1604)로부터 기준 프레임(1620)을 인출하며 비기준 프레임(1650)을 온칩 메모리(1706)로부터(또는 디코더 또는 ISP로부터 효율적으로) 스트리밍한다. 재정렬 유닛(1640)은 그 후 디스플레이 순서의 디스플레이 비디오 시퀀스를 구축하며, 그리고 동시에 다수의 메모리로부터의 프레임들의 복수의 사본을 사용하여 디스플레이 비디오 시퀀스를 전술한 바와 같은 60fps 프레임 레이트로 변환하여 보다 저속 레이트의 단일 디스플레이 프레임 구간을 채운다. 따라서, 최종 디스플레이 비디오 시퀀스는 IIBBBBPP....의 순서를 가질 수 있다.
사후 프로세싱 유닛(1642)은 그 후 디스플레이 비디오 시퀀스를 수신하며 이미지 샤프니스 조정 및 다른 사후 프로세싱 개선과 같은 수정을 적용한다. 프로세싱된 프레임(1644)은 오프칩 메모리에 기입되며, 그리고 이전 프로세싱된 프레임은 캐시 영역(1646)에 우선적으로 배치되든 아니든 간에 검색되어 처리중인 현재 프레임을 수정하는 데 사용될 수 있다. 디스플레이 비디오 시퀀스의 프로세싱된 프레임은 그 후 SFC(1430)에 대해 설명된 바와 같은 스케일링 및 포맷 컨버전(SFC) 유닛(1630)에 제공된다. 그러나, 여기서, SFC(1630) 유닛은 또한 온칩 메모리를 사용하여 오프칩 메모리 대역폭을 저장하지만, 프레임들은 이 시점에 재정렬되지 않으며, 프레임들은 리사이징(re-sized)된다. 따라서, SFC(1630)는 다운스케일링된 영역(또는 프레임)을 온칩 메모리(1606)의 스케일링된 영역(1634)에 저장하면서 동시에 스케일링된 프레임(1632)을 오프칩 메모리에 기입하며, 그 후 디스플레이 제어기(1628)는 온칩 메모리로부터 다운스케일링된 프레임을 스트리밍할 수 있으며 그리고 오프칩 메모리로부터의 스케일링된 프레임을 디스플레이 제어기(1628)에 인출하여 디스플레이 비디오 시퀀스를 디스플레이한다. SFC는 여러 상이한 조합으로 프레임을 오프칩 메모리에 저장하는 대신, 또는 이에 추가적으로, 소정 타입의 프레임을 온칩 메모리에 저장할 수 있다. 여기서, 디스플레이 비디오 시퀀스가 보다 높은 프레임 레이트로 이미 변환된 경우에, SFC는 온칩 메모리에 프레임의 제2 사본을 저장할 수 있으며, 그 결과 개개의 프레임의 적어도 하나의 사본이 스트리밍되며, 이 실시예에서 각각의 프레임의 하나의 사본은 스트리밍되지만 동시에 다른 사본은 오프칩 메모리로부터 인출되며, 그에 따라 동일 프레임의 여러 사본은 보다 저속 레이트의 단일 디스플레이 프레임 구간을 채우게 된다. 대안으로서, 재정렬 유닛(1640)은 프레임 레이트의 변경을 위한 수정 없이도 코딩 비디오 시퀀스를 디스플레이 비디오 시퀀스로 재정렬할 수 있다. 이 경우, SFC 유닛은 타임라인(800)(도 8)에서와 같이 보다 고속의 프레임 레이트로 변환하는 태스크를 다룰 수 있다. 이는, 사후 프로세싱 동작들의 동작에 따라 또는 SFC가 시스템(1600)(도 16) 상에 도시된 순서 대신 사후 프로세싱 유닛 이전에 동작할 필요가 있을 경우 현실적인 것일 수도 있고 비현실적인 것일 수 있다.
이 실시예를 위한 전체 오프칩 메모리 대역폭은 11250 MB/s이며, 이는 비스트리밍 시스템(1500)보다 대략 40% 적은 것이며, 전체 ML2 대역폭은 16600MB/s이다.
도 17을 참조하면, 시스템(1800)은, 본 개시의 적어도 일부의 구현예에 따라 동작하고 배열된 비디오 코딩을 위한 일 예의 프레임 재정렬 프로세스(1700)용으로 사용될 수 있다. 이 구현예에서, 이 프로세스(1700)는 캡처 순서에서 코딩 순서로 또는 코딩 순서로부터 디스플레이 순서로 프레임을 재정렬하는 구현예에 관한 것이다. 이 프로세스(1700)는 짝수 번호로 매겨진 하나 이상의 행위(1702 내지 1726)에 의해 도시되며 대안으로서 또는 여러 상이한 조합으로서 사용되는 바와 같은 하나 이상의 동작, 기능 또는 행위를 포함할 수 있다. 비제한적인 예로서, 프로세스(1700)는 본 명세서에 기술된 여러 구현예와 관련하여 논의되는 동작을 참조하여 기술될 것이다.
도시된 구현예에서, 시스템(1800)은 로직 유닛, 로직 회로 또는 모듈(1804) 등, 및/또는 이들의 조합을 가진 프로세싱 유닛(1802)을 포함할 수 있다. 일 예의 경우, 로직 회로 또는 모듈(1804)은 원시 이미지 프로세싱 유닛(1820)과, 인터-예측 기능을 모두 가진 비디오 디코더(200) 및/또는 비디오 인코더(100)를 구비한 코더 유닛(1814)과, 스케일 및 포맷 컨버전(SFC) 유닛(1834)과, 사후 및 사전 프로세싱 유닛(1836)을 포함할 수 있다. 또한, 시스템(1800)은 중앙 프로세싱 유닛 또는 프로세서(들)(1806) 및/또는 그래픽 프로세싱 유닛(들)(1808)을 가질 수 있으며, 이들은 ISP를 가지거나 ISP일 수 있으며, 시스템(1800)은 온칩 메모리(1816) 및 오프칩 메모리(1810)와 같은 온칩 및 오프칩 메모리 모두로부터 비디오 시퀀스를 구성하기 위해 재정렬 유닛(1822)(이는 또한 본 명세서에서 스트리밍 인터페이스로 지칭되기도 함)을 갖는다. 비록 도 18에 도시된 바와 같은 시스템(1800)이 특정의 모듈 또는 유닛과 관련된 하나의 특정 세트의 동작 또는 행위를 포함할 수 있으나, 이들 동작 또는 행위는 여기에 도시된 특정의 모듈 또는 유닛과는 상이한 모듈과 관련될 수 있다.
프로세스(1700)는 "제1 순서의 프레임을 포함한 이미지 데이터를 수신하는 단계"(1702)를 포함할 수 있다. 이 순서는 디코딩 및 디스플레이 디바이스에 의해 수신될 경우의 코딩 순서(IPBB)일 수 있거나, 제1 순서는 인코딩 디바이스에 의해 수신될 경우의 캡처 순서(IBBP)일 수 있다.
프로세스(1700)는 "프레임 타입(I, P, 또는 B)을 식별하는 단계"(1704)를 포함할 수 있다. 일부의 형태로서, 이는 기준 B-프레임과 비기준 B-프레임을 식별하는 단계를 포함할 수 있다. 이와는 달리, 이 특징은 다른 구현예와 관련하여 위에서 설명되고 있다. 일부 대안으로서, 이러한 동작은, 프레임 재정렬을 위해 단독으로 수행될 경우와 모든 프레임이 그 프레임의 픽처 타입에 의한 구별없이 온칩 메모리 및 오프칩 메모리 모두에 복사될 경우에 생략하는 것이 가능할 수 있다.
우선, 인코딩을 위한 구현예에 지속해서, 프로세스(1700)는 "온칩 메모리 및 오프칩 메모리에 프레임을 버퍼링하는 단계"(1706)를 포함할 수 있으며, 일 예로서 여기서, I 및 B 프레임은 오프칩 메모리에 기입되며 동시에 P-프레임은 온칩 메모리에 저장된다. 이는 타임라인(500)에 대해 도시된 프로세스와 유사하다.
프로세스(1700)는 "오프칩 메모리로부터 프레임을 인출하고 온칩 메모리로부터 스트리밍하는 단계"(1708)를 포함할 수 있다. 특히, 재정렬 유닛이 IBBP 순서의 캡처 비디오 시퀀스를 코딩 비디오 시퀀스를 위한 코딩 순서로 재정렬할 경우, 프레임들은 전술한 바와 같은 코딩 순서로 두 개의 상이한 메모리로부터 획득된다.
프로세스(1700)는 "상이한 순서로 인출되고 스트리밍된 프레임을 배치하여 코딩 또는 디스플레이 비디오 시퀀스를 형성하는 단계"(1710)를 포함할 수 있다. 따라서, 프레임은 그 후 코딩 순서로 코딩 비디오 시퀀스 내로 배치된다(가령 도 5 참조). P-프레임은 비디오 시퀀스로 다이렉트로 스트리밍되어 오프칩 메모리 대역폭을 감소시킨다.
프로세스(1700)는 "코딩 비디오 시퀀스를 상이한 순서로 제공하는 단계"(1712)를 포함할 수 있다. 따라서, 일 예의 형태로서, 코딩 비디오 시퀀스는 이제 코딩 순서로 코더에 제공되며, 프로세스(1700)는 "프레임을 인코딩하는 단계"(1714)를 포함할 수 있다. 이후, 프로세스(1700)는 "압축된 비트스트림을 제공하는 단계"(1716)를 포함할 수 있다. 이 동작은 송신을 위한 코딩 순서의 프레임 데이터와 함께 압축된 데이터의 비트스트림을 디코더에 제공하는 단계를 포함할 수 있다.
대안으로서, (가령 IPBB와 같은) 디코딩된(코딩) 순서의 압축된 비디오 시퀀스를 디코딩하고 그 후 그 프레임을 디스플레이 순서 비디오 시퀀스로 재정렬할 경우, 프로세스(1700)는 동작(1702)(이미지 데이터 수신 동작)과 동작(1704)(프레임 타입 식별 동작)을 포함할 수 있고, 그 후 프로세스(1700)는 "프레임을 디코딩하는 단계"(1718)를 포함할 수 있다. 프로세스(1700)는 그 후 재구성된 프레임을 저장하기 위해 "온칩 메모리 및/또는 오프칩 메모리에 프레임을 버퍼링하는 단계"(1706)를 수행한다. 일 예의 결과로서, I 및 P 프레임과 같은 재구성된 기준 프레임은 (이들이 사용될 경우의 기준 B-프레임과 더불어) 오프칩 메모리에 기입되며 동시에 비기준 B-프레임은 온칩 메모리에 저장된다. 이는 타임라인(600)(도 6)과 함께 사용되는 프로세스와 유사하다.
따라서, 동작(1708 및 1710)에서 재정렬이 발생될 수 있어서 오프칩 메모리에서 기준 프레임을 인출할 수 있고 온칩 메모리로부터 비기준 프레임을 스트리밍하여 상이한 또는 디스플레이 순서(IBBP...)로 배치하여 디스플레이 비디오 시퀀스를 형성할 수 있다.
이후, 프로세스(1700)는 "디스플레이 비디오 시퀀스를 제공하는 단계"(1720)를 포함할 수 있고 특히 디스플레이 비디오 시퀀스를 스크린상에 시청하거나 나중의 시청을 위해 디스플레이 비디오 시퀀스를 저장하기 위한 디스플레이 제어기 또는 다른 디스플레이 디바이스에 제공하는 것을 포함할 수 있다.
다른 대안으로서, 프로세스(1700)는 코딩 레이트(또는 캡처 레이트)에서 디스플레이 레이트로의 레이트의 변환이 있을 경우 "동일한 프레임의 복수의 사본을 인출하여 저속 레이트의 디스플레이 프레임 구간을 채우는 단계(1709)"를 포함할 수 있다. 일 예로서, 이 변환은 30fps에서 60fps로의 변경일 수 있다. 이 경우, 재정렬은 타임라인(700)(도 7)에서와 동일하게 진행할 수 있으며, 여기서 동일 프레임의 복수의 사본(적어도 하나는 오프칩 메모리로부터이고 적어도 다른 하나는 온칩 메모리로부터임)이 저속 레이트의 단일 디스플레이 프레임 구간에 배치된다. 이는 (B-프레임과 같은) 프레임의 특정의 픽처 타입의 경우에 수행될 수 있지만, 다른 픽처 타입의 프레임의 복수의 사본(가령, 두 개의 I-프레임(II) 또는 두 개의 P-프레임(PP))은 오프칩 메모리로부터만 획득된다. 다른 대안으로서, 모든 픽처 타입은 온칩 메모리 및 오프칩 메모리 모두로부터 획득된다. 여러 변형예가 가능하다. 그러한 경우의 각각의 프레임은 전술한 바와 같이 디스플레이 프레임 구간의 페이즈를 채우는 것으로 간주된다. 또한, 그러한 경우, 프로세스(1700)는 계속해서 오프칩 메모리 및 온칩 메모리로부터의 (스트리밍된 프레임을 포함한) 인출된 프레임을 디스플레이 비디오 시퀀스 내로 배치할 수 있다. 하나의 시퀀스는 IIBBBBPP...순서일 수 있다(동작 1710). 그 후, 디스플레이 비디오 시퀀스는 위에서 기술된 바와 같이 제공될 수 있다(1720).
또 다른 대안으로서, 프로세스(1700)는 "프레임을 스케일링하고 디바이스에 따라 포맷하는 단계"(1722)를 포함할 수 있다. 이 경우, SFC 유닛(1834)은 위에서 언급된 복수의 구현예에서 언급된 바와 같이 상이한 사이즈의 프레임을 스케일링 및 포맷할 수 있다. 이러한 스케일링은 디코딩 이후에 코딩 순서로 발생할 수 있으며, 프레임을 스케일링한 스케일링 이후 재정렬이 발생하고, 그에 따라, 디코딩을 위해 전술한 바와 같이 저장 동작(1706) 및 재정렬 동작(1708-1710)이 스케일링된 프레임에 적용되며, 동작은 재정렬 유닛이 온칩 메모리 및 오프칩 메모리 모두를 사용하여 전술한 바와 같이 오프칩 메모리 대역폭을 감소시키도록 유사하게 진행된다. 이러한 대안은 시스템(1400)의 것과 유사하다.
다른 대안으로서, 프로세스(1700)는 "디스플레이 비디오 시퀀스를 제공하는 단계"(1724)를 포함할 수 있고, 사전 또는 사후 프로세싱 유닛(1836)으로 제공하는 것을 포함할 수 있다. 특히, 프레임이 디코딩되어 디스플레이 순서로 배치(동작(1708-내지1710))되고 프레임 레이트가 60fps로 변경된 후(여기서, 프레임의 순서는 IIBBBBPP...임), 프로세스(1700)는 시스템(1600)(도 16)과 함께 논의되는 바와 같이 "사전 및/또는 사후 프로세싱을 적용하는 단계"(1726)를 포함할 수 있다. 일 예의 형태로서, 프로세싱된 프레임은 그 후 스케일링 및 포맷 컨버전을 위해(1722) SFC 유닛(1834)에 제공되며 그 후 다시 온칩 메모리 및 오프칩 메모리에 버퍼링된다(1706). 프레임을 온칩 메모리 또는 오프칩 메모리에 할당하거나 이들 메모리 모두에 할당하는 것은 위에서 설명되었다. 스케일링된 프레임이 디스플레이 비디오 시퀀스 내에 재구축된다면, 그 디스플레이 비디오 시퀀스는 디스플레이(1720)를 위해, 또는 저장 또는 다른 사용을 위해 제공될 수 있다. 스케일링된 프레임은 기술적으로 재정렬될 수 없으며 온칩 메모리의 사용은 일 예로서 오프칩 메모리 대역폭을 절감하기 위해서만 사용될 수 있다는 것이 이해될 것이다. 따라서, 이 경우에, 재정렬 유닛과는 상이한 유닛이 버퍼링 및 스트리밍을 수행할 수 있다.
예의 프로세스(300, 400, 430, 450, 480, 및/또는 1700)와 타임라인(500, 600, 700 및 800)의 구현예가 예시된 순서로 도시된 모든 동작을 시행하는 것을 포함할 수 있지만, 본 개시는 이에 국한되지는 않으며, 다양한 실시예에서, 본 명세서의 프로세스의 임의의 구현은 도시된 및/또는 예시된 것과는 상이한 순서의 동작들의 서브세트만의 시행을 포함할 수 있다.
구현예들에서, 본 명세서에 기술된 특징들은 하나 이상의 컴퓨터 프로그램 제품에 의해 제공되는 명령어에 응답하여 시행될 수 있다. 그러한 프로그램 제품은 가령, 프로세서에 의해 실행될 경우 본 명세서에 기술된 기능을 제공할 수 있는 명령어를 제공하는 신호 함유 매체를 포함할 수 있다. 컴퓨터 프로그램 제품은 하나 이상의 머신 판독가능한 매체의 임의의 형태로 제공될 수 있다. 따라서, 가령, 하나 이상의 프로세서 코어를 포함하는 프로세서는 하나 이상의 머신 판독가능 매체에 의해 상기 프로세서에 전달되는 프로그램 코드 및/또는 명령어 또는 명령어 세트에 응답하여 본 명세서에 기술된 하나 이상의 특징들을 시행할 수 있다. 일반적으로, 머신 판독가능 매체는 본 명세서에 기술되는 디바이스들 및/또는 시스템들 중의 임의의 것으로 하여금 본 명세서에 기술된 특징들의 적어도 일부를 구현할 수 있게 하는 프로그램 코드 및/또는 명령어 또는 명령어 세트의 형태의 소프트웨어를 전달할 수 있다. 이전에 언급된 바와 같이, 다른 형태에서, 비일시적인 컴퓨터 판독가능 매체와 같은 비일시적인 제품은 위에서 언급된 실시예들 또는 다른 실시예들 중의 임의의 실시예와 함께 사용될 수 있지만, 예외적으로 일시적인 신호 그 자체를 포함하지는 않는다. 그 제품은 RAM 등과 같은 "일시적인" 방식으로 데이터를 일시적으로 유지할 수 있는 신호 그 자체와는 상이한 엘리먼트들을 포함한다.
본 명세서에 기술된 임의의 구현예에서 사용되는 바와 같이, 용어 "모듈"은 본 명세서에 기술되는 특징을 제공하도록 구성되는 소프트웨어 로직, 펌웨어 로직 및/또는 하드웨어 로직의 임의의 조합을 지칭한다. 소프트웨어는 소프트웨어 패지지, 코드 및/또는 명령어 세트 또는 명령어로서 구현될 수 있으며, 본 명세서에서 기술되는 임의의 구현예에 사용되는 "하드웨어"는 가령, 프로그램가능한 회로에 의해 실행되는 명령어를 저장하는 고정배선 회로, 프로그램가능 회로, 상태 머신 회로, 및/또는 펌웨어의 단독 또는 임의의 조합을 포함할 수 있다. 모듈은 대형 시스템, 가령 집적 회로(IC), 시스템 온 칩(SoC), 등의 일부를 형성하는 회로로서 집합적으로 또는 개별적으로 구현될 수 있다. 가령, 모듈은 본 명세서에서 논의되는 코딩 시스템의 소프트웨어, 펌웨어, 또는 하드웨어를 통한 구현을 위한 로직 회로에서 구현될 수 있다.
본 명세서에 기술되는 임의의 구현예에서 사용되는 바와 같이, 용어 "로직 유닛"은 본 명세서에 기술되는 기능을 제공하도록 구성되는 펌웨어 로직 및/또는 하드웨어 로직의 임의의 조합을 지칭한다. 로직 유닛은 대형 시스템, 가령 집적 회로(IC), 시스템 온 칩(SoC), 등의 일부를 형성하는 회로로서 집합적으로 또는 개별적으로 구현될 수 있다. 가령, 로직 유닛은 본 명세서에서 논의되는 코딩 시스템의 펌웨어 또는 하드웨어를 통한 구현을 위한 로직 회로에서 구현될 수 있다. 당업자는 하드웨어 및/또는 펌웨어에 의해 수행되는 동작이 대안으로서 소프트웨어를 통해 구현될 수 있으며, 이 소프트웨어는 소프트웨어 패키지, 코드 및/또는 명령어 세트 또는 명령어로서 구현될 수 있다는 것을 이해할 것이며, 또한 로직 유닛이 그 기능을 구현하는 소프트웨어의 일부를 이용할 수 있다는 것을 이해할 것이다.
본 명세서에서 기술되는 임의의 구현예에서 사용되는 바와 같이, 용어 "컴포넌트"는 전술한 바와 같이 모듈 또는 로직 유닛을 지칭할 수 있다. 따라서, 용어 "컴포넌트"는 본 명세서에 기술되는 기능을 제공하도록 구성되는 소프트웨어 로직, 펌웨어 로직, 및/또는 하드웨어 로직의 임의의 조합을 지칭할 수 있다. 가령, 당업자는 하드웨어 및/또는 펌웨어에 의해 수행되는 동작이 대안으로서 소프트웨어 모듈을 통해 구현될 수 있으며, 이 소프트웨어 모듈은 소프트웨어 패키지, 코드 및/또는 명령어 세트로서 구현될 수 있다는 것을 이해할 것이며, 또한 로직 유닛이 그 기능을 구현하는 소프트웨어의 일부를 이용할 수 있다는 것을 이해할 것이다.
도 18을 참조하면, 비디오 코딩을 위한 프레임 재정렬을 위한 일 예의 비디오 코딩 시스템(1800)이 본 개시의 적어도 일부의 구현예에 따라 배열될 수 있다. 예시된 구현예에서, 시스템(1800)은 하나 이상의 온칩 메모리(1816)를 갖는 하나 이상의 프로세서(1806)와, 이미지를 캡처하는 이미징 디바이스(1801)와, 안테나(1803)와, 디스플레이 디바이스(1812)와, 하나 이상의 오프칩 메모리 스토어(1810)를 포함할 수 있다. 프로세서(1806), 메모리 스토어(1810), 및/또는 디스플레이 디바이스(1812)는 가령, 버스, 와이어, 또는 다른 액세스를 통해, 서로 통신가능할 수 있다. 다양한 구현예에서, 디스플레이 디바이스(1812)는 시스템(1800) 내에 통합될 수 있거나 시스템(1800)과는 분리되게 구현될 수 있다.
도 18에 도시되고 위에서 논의된 바와 같이, 프로세싱 유닛(1802)은 인코더(100) 및/또는 디코더(200)를 갖는 코더 유닛(1814)을 구비한 로직 회로(1804)를 가질 수 있다. 비디오 인코더(100) 및 디코더(200)는 소정의 픽처 타입의 프레임 및 전술한 바와 같은 다른 컴포넌트를 사용하는 인터-예측 유닛을 가질 수 있다. 또한, CPU(1806) 또는 그래픽 프로세싱 유닛(1808)은 ISP(1814, 또는 1838) 및 그래픽 데이터 압축 및/또는 압축해제(코덱) 모듈(1828)을 가질 수 있다. 그래픽 프로세싱 유닛, CPU, 또는 다른 유닛은 또한 재정렬 유닛(1822 및/또는 1830)과, 온칩 메모리(1816 또는 1832)를 가질 수 있으며, 이 온칩 메모리는 L2 캐시 또는 다른 SOC 타입의 메모리 또는 적어도 온칩 메모리를 제공하는 유사한 아키텍처의 형태일 수 있다. 다른 캐시(1818)가 또한 제공될 수 있다. 오프칩 메모리(1810)는 전술한 바와 같은 비디오 시퀀스의 프레임을 유지하기 위한 원시 이미지 버퍼(1824) 및/또는 그래픽 프레임 버퍼(1826)를 가질 수 있다. 디스플레이 디바이스(1812)는 일 예로서 DSR/PSR 구조의 일부로서 자신의 프레임 버퍼(1840)를 가질 수 있다. 이러한 컴포넌트는 본 명세서에 기술되는 프로세스 및 타임라인과 함께 기술되는 바와 같이 본 명세서에 기술되는 여러 특징을 제공한다.
이해되는 바와 같이, 도 18에 예시된 모듈은 소프트웨어 또는 하드웨어 또는 그 조합을 통해 구현될 수 있는 다양한 소프트웨어 및/또는 하드웨어 모듈 및/또는 모듈들을 포함할 수 있다. 가령, 모듈은 프로세싱 유닛(1802)을 통해 소프트웨어로서 구현될 수 있거나, CPU(1806)(또는 ISP(1814)) 또는 GPU(1808) 상의 전용 하드웨어 부분을 통해 구현될 수 있다. 또한, 메모리 스토어(1810)는, 이미지 데이터 프레임과 비-비디오 데이터의 디스플레이 및/또는 코딩을 위해 필요한 프레임 및 임의의 다른 데이터를 저장하기 위한, 프로세싱 유닛(1802)용의 공유 메모리일 수 있다. 오프칩 메모리는 일 예로서 프로세서(1806 또는 1808) 상의 온칩 L2 캐시로부터 원격에 위치한 RAM일 수 있거나 몇몇 예로서 DDR DRAM과 같은 특정 타입의 RAM일 수 있다. 또한, 시스템(1808)은 다양한 방식으로 구현될 수 있다. 가령, (오프칩 메모리(1810)를 배제하는) 시스템(1800)은 그래픽 프로세서, 쿼드-코어 중앙 프로세싱 유닛, 및/또는 메모리 제어기 입/출력(I/O) 모듈을 갖는 단일 칩 또는 디바이스로서 구현될 수 있다. 다른 실시예에서, (오프칩 메모리(1810)를 다시 배제하는) 시스템(1800)은 칩셋으로서 구현될 수 있다.
프로세서(1806)는 가령, 마이크로프로세서, 멀티코어 프로세서, ASIC, 칩, 칩셋, 프로그램가능 로직 디바이스, 그래픽 카드, 집적 그래픽, 범용 그래픽 프로세싱 유닛, 등을 포함한 임의의 적당한 구현예를 포함할 수 있다. 또한, 메모리 스토어(1810)는 휘발성 메모리(가령, 정적 랜덤 액세스 메모리(SRAM), 동적 랜덤 액세스 메모리(DRAM), 등) 또는 비휘발성 메모리(가령, 플래시 메모리 등), 등과 같은 임의의 타입의 메모리일 수 있다. 비제한적인 실시예에서, 메모리 스토어(1810)는 또한 온칩 메모리(1816)가 L2 캐시인지 아닌지 간에 원격 캐시 메모리를 통해 구현될 수 있다. 다양한 실시예에서, 시스템(1800)은 칩셋으로서 또는 (오프칩 메모리(1810)를 배제한) 시스템 온 칩으로서 구현될 수 있다.
다양한 구현예에서, 일 예의 이미지 프로세싱 시스템(1800)은 이미징 디바이스(1801)를 사용하여 캡처된 이미지 데이터를 형성 또는 수신할 수 있다. 이는 다양한 방식으로 구현될 수 있다. 따라서, 일 형태로, 이미지 프로세싱 시스템(1800)은 하나 이상의 디지털 카메라 또는 다른 이미지 캡처 디바이스일 수 있으며, 이 경우에, 이미징 디바이스(1801)는 카메라 하드웨어 및 카메라 센서 소프트웨어, 모듈 또는 컴포넌트(1804)일 수 있다. 다른 실시예에서, 이미지 프로세싱 시스템(1800)은 하나 이상의 카메라를 포함하거나 하나 이상의 카메라일 수 있는 이미징 디바이스(1801)를 가질 수 있으며, 로직 모듈(1804)은 이미지 데이터의 추가의 프로세싱을 위해 이미징 디바이스(1801)와 원격으로 통신할 수 있거나 이와는 달리 이미징 디바이스(1801)에 통신가능하게 연결될 수 있다.
따라서, 이미지 프로세싱 시스템(1800)은 스마트폰, 태블릿, 랩탑, 또는 스마트 글래스, 스마트 헤드폰, 엑서사이즈 밴드(exercise bands) 등을 포함한 웨어러블과 같은 모바일 디바이스일 수 있거나, 이의 일부일 수 있거나, 또는 이와 통신가능할 수 있다. 이들 중 임의의 경우에, 그러한 기술은, 스틸 픽처 또는 비디오 카메라이든, 미리보기 스크린을 제공하는 카메라이든, 또는 이들의 조합이든, 디지털 카메라 시스템, 전용 카메라 디바이스, 또는 이미징 폰 또는 태블릿과 같은 카메라를 포함할 수 있다. 따라서, 일 형태로서, 이미징 디바이스(1801)는 하나 이상의 센서, 오토 포커스, 줌, 조리개, ND 필터, 오토 노출, 플래시 및 액츄에이터 제어기를 구비한 카메라 하드웨어 및 광학 장치를 포함할 수 있다. 이미징 디바이스(1801)는 또한 렌즈, RGB 베이어 컬러 필터를 가진 이미지 센서, 아날로그 증폭기, A/D 컨버터, 입사광을 디지털 신호로 변환하는 다른 컴포넌트, 등, 및/또는 이들의 조합을 가질 수 있다. 디지털 신호는 또한 본 명세서에서 원시 이미지 데이터로 지칭될 수 있다.
다른 형태는 카메라 센서 타입 이미징 디바이스 등(가령, 웹캠 또는 웹캠 센서 또는 다른 상보형 금속-산화물-반도체-타입 이미지 센서(CMOS))을 포함하지만, RGB 심도 카메라 및/또는 누가 말하고 있는지를 찾기 위한 마이크로폰 어레이를 사용하지는 않는다. 다른 실시예에서, RGB 심도 카메라 및/또는 마이크로폰 어레이는 카메라 센서에 추가적으로 또는 대안으로서 사용될 수도 있다. 일부 실시예에서, 이미징 디바이스(1801)에는 눈 추적 카메라가 제공될 수 있다.
이와는 달리, 이미징 디바이스(1801)는 비디오 게임 패널 또는 콘솔, 셋탑 박스 등과 같은 디지털 이미지를 레코딩, 디스플레이 또는 프로세싱하는 임의의 다른 디바이스일 수 있다.
예시된 바와 같이, 이러한 컴포넌트들 중 임의의 컴포넌트는 서로 통신가능 및/또는 로직 모듈(1804) 및/또는 이미징 디바이스(1801)의 일부와 통신가능할 수 있다. 따라서, 프로세서(1806 또는 1808)는 이러한 컴포넌트들을 동작시키기 위해 이미징 디바이스(1801) 및 로직 모듈(1804) 모두에 통신가능하게 연결될 수 있다. 일 방법으로, 도 18에 도시된 이미지 프로세싱 시스템(1800)이 특정의 컴포넌트 또는 모듈과 관련된 하나의 특정 세트의 블럭 또는 행위를 포함할 수 있지만, 이러한 블럭 또는 행위는 여기서 예시된 특정의 컴포넌트 또는 모듈과는 상이한 컴포넌트 또는 모듈과 관련될 수 있다.
도 19를 참조하면, 본 개시 및 다양한 구현예에 따른 일 예의 시스템(1900)은 매체 시스템일 수 있지만 시스템(1900)은 이에 국한되는 것은 아니다. 가령, 시스템(1900)은 퍼스널 컴퓨터(PC), 랩탑 컴퓨터, 울트라 랩탑 컴퓨터, 태블릿, 터치패드, 휴대형 컴퓨터, 핸드헬드 컴퓨터, 팜탑 컴퓨터, PDA, 셀룰러 텔레폰, 조합 셀룰러 텔레폰/PDA, 텔레비전, 스마트 디바이스(가령, 스마트폰, 스마트 태블릿 또는 스마트 텔레비전), 모바일 인터넷 디바이스(MID), 메시징 디바이스, 데이터 통신 디바이스 등에 통합될 수 있다.
다양한 구현예에서, 시스템(1900)은 디스플레이(1920)에 통신가능하게 연결된 플랫폼(1902)을 포함한다. 플랫폼(1902)은 콘텐츠 서비스 디바이스(1930) 또는 콘텐츠 전달 디바이스(1940) 또는 다른 유사 콘텐츠 소스와 같은 콘텐츠 디바이스로부터 콘텐츠를 수신할 수 있다. 하나 이상의 네비게이션 특징을 포함하는 네비게이션 제어기(1950)는 가령 플랫폼(1902) 및/또는 디스플레이(1920)와 상호작용하는 데 사용될 수 있다. 이러한 컴포넌트의 각각은 아래에서 보다 상세하게 기술된다.
다양한 구현예에서, 플랫폼(1902)은 칩셋(1905), 프로세서(1914), 메모리(1912), 스토리지(1911), 그래픽 서브시스템(1915), 애플리케이션(1916) 및/또는 무선부(1918) 및 안테나(1910)의 임의의 조합을 포함할 수 있다. 칩셋(1905)은 프로세서(1914), 메모리(1912), 스토리지(1911), 그래픽 서브시스템(1915), 애플리케이션(1916) 및/또는 무선부(1918) 간의 상호통신을 제공할 수 있다. 가령, 칩셋(1905)은 스토리지(1911)와의 상호통신을 가능하게 하는 스토리지 어댑터(미도시)를 포함할 수 있다.
프로세서(1914)는 복합 명령 세트 컴퓨터(CISC) 또는 감소 명령 세트 컴퓨터(RISC) 프로세서, x86 명령 세트 호환가능 프로세서, 멀티 코어, 또는 임의의 다른 마이크로프로세서 또는 중앙 프로세싱 유닛(CPU)으로서 구현될 수 있다. 다양한 구현예에서, 프로세서(1914)는 듀얼 코어 프로세서, 듀얼 코어 모바일 프로세서 등일 수 있다.
메모리(1912)는 RAM, DRAM, 또는 SRAM과 같은, 그러나 이에 국한되지 않는 휘발성 메모리 디바이스로서 구현될 수 있다.
스토리지(1911)는 자기 디스크 드라이브, 광 디스크 드라이브, 테이프 드라이브, 내부 스토리지 디바이스, 부착형 스토리지 디바이스, 플래시 메모리, 배터리 백업 SDRAM, 및/또는 네트워크 액세스가능 스토리지 디바이스와 같은, 그러나 이에 국한되지 않는 비휘발성 스토리지 디바이스로서 구현될 수 있다. 다양한 구현예에서, 스토리지(1911)는 가령 복수의 하드 드라이브가 포함될 경우에 귀중한 디지털 매체용의 개선된 보호로 스토리지 성능을 증가시키기 위한 기술을 포함할 수 있다.
그래픽 서브시스템(1915)은 디스플레이를 위한 스틸 또는 비디오와 같은 이미지의 프로세싱을 수행할 수 있다. 그래픽 서브시스템(1915)은 가령 그래픽 프로세싱 유닛(GPU) 또는 비주얼 프로세싱 유닛(VPU)일 수 있다. 아날로그 또는 디지털 인터페이스는 그래픽 서브시스템(1915) 및 디스플레이(1920)를 통신가능하게 연결하는 데 사용될 수 있다. 가령, 그 인터페이스는 고선명 멀티미디어 인터페이스, 디스플레이 포트, 무선 HDMI, 및/또는 무선 HD 호환 기술 중의 임의의 것일 수 있다. 그래픽 서브시스템(1915)은 프로세서(1914) 또는 칩셋(1905) 내에 통합될 수 있다. 일부 구현예에서, 그래픽 서브시스템(1915)은 칩셋(1905)에 통신가능하게 연결된 독립형 카드일 수 있다.
본 명세서에 기술되는 그래픽 및/또는 비디오 프로세싱 기술은 다양한 하드웨어 아키텍처로 구현될 수 있다. 가령, 그래픽 및/또는 비디오 기능은 칩셋 내에 통합될 수 있다. 대안으로서, 이산 그래픽 및/또는 비디오 프로세서가 사용될 수 있다. 또다른 구현예로서, 그래픽 및/또는 비디오 기능은 멀티코어 프로세서를 포함한 범용 프로세서에 의해 제공될 수 있다. 다른 구현예에서, 기능은 소비자 가전 디바이스에 구현될 수 있다.
무선부(1918)는 다양한 적절한 무선 통신 기술을 사용하여 신호를 송신 및 수신할 수 있는 하나 이상의 무선부를 포함할 수 있다. 이러한 기술은 하나 이상의 무선 네트워크를 가로지르는 통신을 포함할 수 있다. 예의 무선 네트워크는 무선 로컬 영역 네트워크(WLAN), 무선 퍼스널 영역 네트워크(WPAN), 무선 메트로폴리탄 영역 네트워크(WMAN), 셀룰러 네트워크, 및 위성 네트워크를 포함하지만 이에 국한되는 것은 아니다. 이러한 네트워크를 가로지르는 통신에서, 무선부(1918)는 임의의 버전의 하나 이상의 적용가능한 표준에 따라 동작할 수 있다.
다양한 구현예에서, 디스플레이(1920)는 임의의 텔레비전 타입 모니터 또는 디스플레이를 포함할 수 있다. 디스플레이(1920)는 가령, 컴퓨터 디스플레이 스크린, 터치 스크린 디스플레이, 비디오 모니터, 텔레비전형 디바이스, 및/또는 텔레비전을 포함할 수 있다. 디스플레이(1920)는 디지털 및/또는 아날로그일 수 있다. 다양한 구현예에서, 디스플레이(1920)는 홀로그래픽 디스플레이일 수 있다. 또한, 디스플레이(1920)는 비주얼 프로젝션을 수신할 수 있는 투명 표면일 수 있다. 이러한 프로젝션은 다양한 형태의 정보, 이미지, 및/또는 객체를 전달할 수 있다. 가령, 그러한 프로젝션은 모바일 증강 현실(MAR) 애플리케이션을 위한 비주얼 오버레이일 수 있다. 하나 이상의 소프트웨어 애플리케이션(1916)의 제어하에, 플랫폼(1902)은 디스플레이(1920) 상에 사용자 인터페이스(1922)를 디스플레이할 수 있다.
다양한 구현예에서, 콘텐츠 서비스 디바이스(1930)는 임의의 국가, 국제 및/또는 독립 서비스에 의해 호스팅될 수 있으며 따라서 가령 인터넷을 통해 플랫폼(1902)에 액세스가능하다. 콘텐츠 서비스 디바이스(1930)는 플랫폼(1902) 및/또는 디스플레이(1920)에 연결될 수 있다. 플랫폼(1902) 및/또는 콘텐츠 서비스 디바이스(1930)는 매체 정보를 네트워크(1960)에 대해 통신(예를 들어, 발송 및/또는 수신)하도록 네트워크(1960)에 연결될 수 있다. 콘텐츠 전달 디바이스(1940)는 또한 플랫폼(1902) 및/또는 디스플레이(1920)에 연결될 수 있다.
다양한 구현예에서, 콘텐츠 서비스 디바이스(1930)는 디지털 정보 및/또는 콘텐츠를 전달할 수 있는 케이블 텔레비전 박스, 퍼스널 컴퓨터, 네트워크, 텔레폰, 인터넷 가능형 디바이스 또는 기기와, 콘텐츠 제공자와 플랫폼(1902) 및/또는 디스플레이(1920) 간에 네트워크(1960)를 통해 또는 직접 콘텐츠를 일방향으로 또는 양방향으로 통신할 수 있는 임의의 다른 유사 디바이스를 포함할 수 있다. 콘텐츠는 시스템(1900) 내의 컴포넌트들 중의 임의의 컴포넌트 및 콘텐츠 제공자에 대해 네트워크(1960)를 통해 일방향으로 및/또는 양방향으로 통신될 수 있다는 것이 이해될 것이다. 예의 콘텐츠는 가령, 비디오, 뮤직, 의료 및 게임 정보 등을 포함하는 임의의 매체 정보를 포함할 수 있다.
콘텐츠 서비스 디바이스(1930)는 매체 정보, 디지털 정보, 및/또는 다른 콘텐츠를 포함하는 케이블 텔레비전 프로그래밍과 같은 콘텐츠를 수신할 수 있다. 예의 콘텐츠 제공자는 임의의 케이블 또는 위성 텔레비전 또는 무선부 또는 인터넷 콘텐츠 제공자를 포함할 수 있다. 제공된 예는 본 개시에 따른 구현예를 임의의 방식으로 제한하는 것으로 의미되는 것은 아니다.
다양한 구현예에서, 플랫폼(1902)은 하나 이상의 네비게이션 특징을 갖는 네비게이션 제어기(1950)로부터 제어 신호를 수신할 수 있다. 네비게이션 제어기(1950)의 네비게이션 특징은 가령, 사용자 인터페이스(1922)와 상호작용하는 데 사용될 수 있다. 구현예에서, 네비게이션 제어기(1950)는 사용자가 컴퓨터 내에 공간 데이터(가령, 연속 및 멀티 차원 데이터)를 입력하게 허용하는 컴퓨터 하드웨어 컴포넌트(특히, 휴먼 인터페이스 디바이스)일 수 있는 포인팅 디바이스일 수 있다. 그래픽 사용자 인터페이스(GUI)와 같은 여러 시스템과, 텔레비전 및 모니터는 사용자로 하여금 물리적 제스처를 사용하여 컴퓨터 또는 텔레비전에 데이터를 제어 및 제공하게 한다.
네비게이션 제어기(1950)의 네비게이션 특징의 움직임은 디스플레이 상에 디스플레이되는 포인터, 커서, 포커스 링, 또는 다른 비주얼 표시자의 움직임에 의해 디스플레이 상(예를 들어, 디스플레이(1920))에 복제될 수 있다. 가령, 소프트웨어 애플리케이션(1916)의 제어하에, 네비게이션 제어기(1950) 상에 위치한 네비게이션 특징은 가령, 사용자 인터페이스(1922) 상에 디스플레이되는 가상 네비게이션 특징에 매핑될 수 있다. 구현예에서, 제어기(1950)는 개별 컴포넌트일 수 없으며 플랫폼(1902) 및/또는 디스플레이(1920) 내에 통합될 수 있다. 그러나, 본 개시는 이러한 엘리먼트 또는 본 명세서에 도시되거나 개시된 문맥에 국한되는 것이 아니다.
다양한 구현예에서, 드라이버(미도시)는 가령, 인에이블될 경우, 최초의 부트업 후에 버튼의 터치로 사용자가 텔레비전과 같은 플랫폼(1902)을 즉시 턴온 및 턴오프하게 하는 기술을 포함할 수 있다. 프로그램 로직은 플랫폼(1902)이 턴오프되는 경우에도 플랫폼(1902)이 콘텐츠를 매체 어댑터 또는 다른 콘텐츠 서비스 디바이스(1930) 또는 콘텐츠 전달 디바이스(1940)에 스트리밍하게 할 수 있다. 게다가, 칩셋(1905)은 가령, 7.1 서라운드 사운드 오디오 및/또는 고선명(7.1) 서라운드 사운드 오디오에 대한 하드웨어 및/또는 소프트웨어 지원을 포함할 수 있다. 드라이버는 통합된 그래픽 플랫폼에 대한 그래픽 드라이버를 포함할 수 있다. 구현예에서, 그래픽 드라이버는 주변 컴포넌트 상호접속(PCI) 익스프레스 그래픽 카드를 포함할 수 있다.
다양한 구현예에서, 시스템(1900) 내에 도시된 임의의 하나 이상의 컴포넌트는 통합될 수 있다. 가령, 플랫폼(1902) 및 콘텐츠 서비스 디바이스(1930)가 통합될 수 있거나, 플랫폼(1902) 및 콘텐츠 전달 디바이스(1940)가 통합될 수 있거나, 플랫폼(1902), 콘텐츠 서비스 디바이스(1930), 및 콘텐츠 전달 디바이스(1940)가 통합될 수 있다. 다양한 구현예에서, 플랫폼(1902) 및 디스플레이(1920)가 통합된 유닛일 수 있다. 가령, 디스플레이(1920) 및 콘텐츠 서비스 디바이스(1930)가 통합될 수 있거나, 디스플레이(1920) 및 콘텐츠 전달 디바이스(1940)가 통합될 수 있다. 이러한 예는 본 개시를 제한하는 것을 의미하는 것이 아니다.
다양한 구현예에서, 시스템(1900)은 무선 시스템, 유선 시스템, 또는 이들의 조합으로서 구현될 수 있다. 무선 시스템으로서 구현될 경우, 시스템(1900)은 하나 이상의 안테나, 송신기, 수신기, 송수신기, 증폭기, 필터, 제어 로직 등과 같은 무선 공유 매체를 통해 통신하는 데 적합한 컴포넌트 및 인터페이스를 포함할 수 있다. 무선 공유 매체의 예는 RF 스펙트럼 등과 같은 무선 스펙트럼의 일부를 포함할 수 있다. 유선 시스템으로서 구현될 경우, 시스템(1900)은 입/출력(I/O) 어댑터, I/O 어댑터를 대응 유선 통신 매체에 연결하는 물리적 커넥터, 네트워크 인터페이스 카드(NIC), 디스크 제어기, 비디오 제어기, 오디오 제어기, 등과 같은 유선 통신 매체를 통해 통신하는 데 적합한 컴포넌트 및 인터페이스를 포함할 수 있다. 유선 통신 매체의 예는 유선, 케이블, 금속 리드, 인쇄 회로 기판(PCB), 백플레인, 스위치 패브릭, 반도체 물질, 연선, 동축 케이블, 파이버 광학장치 등을 포함할 수 있다.
플랫폼(1902)은 정보를 통신하기 위해 하나 이상의 로직 채널 또는 물리 채널을 수립할 수 있다. 이 정보는 매체 정보 및 제어 정보를 포함할 수 있다. 매체 정보는 사용자를 위한 콘텐츠를 나타내는 임의의 데이터를 지칭할 수 있다. 콘텐츠의 예는 가령, 음성 대화로부터의 데이터, 비디오컨퍼런스, 스트리밍 비디오, 전자 메일 메시지, 음성 메일 메시지, 문자 심볼, 그래픽, 이미지, 비디오, 텍스트 등을 포함할 수 있다. 음성 대화로부터의 데이터는 가령, 스피치 정보, 무음 구간, 백그라운드 노이즈, 컴포트 노이즈(comfort noise), 톤 등일 수 있다. 제어 정보는 자동화된 시스템을 위한 커맨드 워드, 명령 워드 또는 제어 워드를 나타내는 임의의 데이터를 지칭할 수 있다. 가령, 제어 정보는 시스템을 통해 매체 정보를 라우팅하거나 노드에 명령하여 매체 정보를 사전결정된 방식으로 프로세싱하는 데 사용될 수 있다. 그러나, 구현예는 이들 엘리먼트 또는 도 19에 도시되거나 기술된 문맥에 국한되는 것은 아니다.
전술한 바와 같이, 시스템(1800 또는 1900)은 다양한 물리적 스타일 또는 폼 팩터(form factors)로 구현될 수 있다. 도 20은 시스템(1800 또는 1900)이 구현될 수 있는 소형 폼 팩터 디바이스(2000)의 구현예를 도시하고 있다. 가령, 구현예에서, 디바이스(2000)는 무선 기능을 갖는 모바일 컴퓨팅 디바이스로서 구현될 수 있다. 모바일 컴퓨팅 디바이스는 가령, 하나 이상의 배터리와 같은 모바일 파워 소스 또는 서플라이와 프로세싱 시스템을 갖는 임의의 디바이스를 지칭할 수 있다.
전술한 바와 같이, 모바일 컴퓨팅 디바이스의 예는 퍼스널 컴퓨터(PC), 랩탑 컴퓨터, 울트라 랩탑 컴퓨터, 태블릿, 터치 패드, 휴대형 컴퓨터, 핸드헬드 컴퓨터, 팜탑 컴퓨터, PDA, 셀룰러 텔레폰, 조합 셀룰러 텔레폰/PDA, 텔레비전, 스마트 디바이스(가령, 스마트폰, 스마트 태블릿 또는 스마트 텔레비전), 모바일 인터넷 디바이스(MID), 메시징 디바이스, 데이터 통신 디바이스 등을 포함할 수 있다.
모바일 컴퓨팅 디바이스의 예는 또한 사람이 착용하도록 배치된 리스트 컴퓨터(wrist computer), 핑거(finger) 컴퓨터, 링(ring) 컴퓨터, 아이글래스 컴퓨터(eyeglass computer), 벨트 클립 컴퓨터, 암밴드 컴퓨터(arm-band computer), 슈 컴퓨터(shoe computer), 클로딩(clothing) 컴퓨터, 및 다른 웨어러블 컴퓨터와 같은 컴퓨터를 포함할 수 있다. 다양한 구현예에서, 가령, 모바일 컴퓨팅 디바이스는 컴퓨터 애플리케이션과 음성 통신 및/또는 데이터 통신을 실행할 수 있는 스마트폰으로서 구현될 수 있다. 일부 구현예가 일 예로서 스마트폰으로서 구현되는 모바일 컴퓨팅 디바이스와 함께 기술될 수 있지만, 다른 구현예는 다른 무선 모바일 컴퓨팅 디바이스를 사용하여 구현될 수도 있다는 것이 이해될 수 있다. 구현예는 이에 국한되는 것은 아니다.
도 20에 도시된 바와 같이, 디바이스(2000)는 하우징(2002), 디스플레이(2004), 입/출력(I/O) 디바이스(2006), 및 안테나(2008)를 포함할 수 있다. 디바이스(2000)는 또한 네비게이션 특징(2012)을 포함할 수 있다. 디스플레이(2004)는 모바일 컴퓨팅 디바이스용으로 적합한 정보를 디스플레이하는 디스플레이 유닛 상의 임의의 적당한 스크린(2010)을 포함할 수 있다. I/O 디바이스(2006)는 모바일 컴퓨팅 디바이스 내로 정보를 입력하기 위한 임의의 적당한 I/O 디바이스를 포함할 수 있다. I/O 디바이스(2006)에 대한 예는 문자 키보드, 숫자 키패드, 터치 패드, 입력 키, 버튼, 스위치, 록커 스위치(rocker switches), 마이크로폰, 스피커, 음성 인식 디바이스 및 소프트웨어 등을 포함할 수 있다. 정보는 또한 마이크로폰(미도시)을 통해 디바이스(2000) 내로 입력될 수 있다. 그러한 정보는 음성 인식 디바이스(미도시)에 의해 디지털화될 수 있다. 구현예는 이에 국한되는 것은 아니다.
다양한 구현예는 하드웨어 엘리먼트, 소프트웨어 엘리먼트, 또는 이들의 조합을 사용하여 구현될 수 있다. 하드웨어 엘리먼트의 예는 프로세서, 마이크로프로세서, 회로, 회로 엘리먼트(가령, 트랜지스터, 저항, 캐패시터, 인덕터, 등), 집적 회로, ASIC, 프로그램가능 로직 디바이스(PLD), 디지털 신호 프로세서(DSP), 필드 프로그램가능 게이트 어레이(FPGA), 로직 게이트, 레지스터, 반도체 디바이스, 칩, 마이크로칩, 칩셋, 등을 포함할 수 있다. 소프트웨어의 예는 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수(functions), 메쏘드(methods), 프로시저(procedures), 소프트웨어 인터페이스, 애플리케이션 프로그램 인터페이스(API), 명령 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼, 또는 그의 임의의 조합을 포함할 수 있다. 구현예가 하드웨어 엘리먼트 및/또는 소프트웨어 엘리먼트를 사용하여 구현되는지의 결정은 원하는 계산 레이트, 파워 레벨, 내열성, 프로세싱 사이클 버짓, 입력 데이터 레이트, 출력 데이터 레이트, 메모리 리소스, 데이터 버스 레이트 및 다른 디자인 또는 성능 제약과 같은 임의의 개수의 팩터에 따라 달라질 수 있다.
전술한 하나 이상의 측면은 프로세서 내의 다양한 로직을 나타내는 머신 판독가능 매체 상에 저장된 대표적인 명령어에 의해 구현될 수 있으며, 이 명령어는 머신에 의해 판독될 경우 머신으로 하여금 본 명세서에 기술된 기술을 수행하는 로직을 제조하게 한다. "IP 코어"로 알려진 이러한 표현들은 유형의 머신 판독가능 매체 상에 저장될 수 있으며, 다양한 커스터머 또는 제조 수단에 제공되어 로직 또는 프로세서를 실제로 만드는 제조 머신 내에 로딩되게 할 수 있다.
본 명세서에 열거된 소정의 특징들이 다양한 구현예를 참조하여 기술되었지만, 이러한 설명은 제한적인 의미로 해석되는 것으로 의도되는 것이 아니다. 따라서, 본 명세서에 기술되는 구현예 및 다른 구현예의 다양한 변형은 본 개시의 당업자에게는 명확하며 본 개시의 사상 및 범주 내에 존재하는 것으로 간주된다.
아래의 예는 추가의 구현예와 관련된다.
일 예로서, 비디오 코딩을 위한 프레임 재정렬의 컴퓨터 구현 방법은 프레임을 갖는 제1 비디오 시퀀스의 이미지 데이터의 로컬 프레임을 제1 순서로 온칩 메모리로부터 수신하는 단계와, 오프칩 메모리로부터 상기 제1 비디오 시퀀스의 프레임을 수신하는 단계와, 상기 제1 순서와는 상이한 제2 순서를 가진 제2 비디오 시퀀스 내로 상기 프레임을 재정렬하는 단계 - 이 단계는 상기 제2 순서에 따라 그리고 상기 오프칩 메모리로부터의 프레임과 함께 상기 로컬 프레임을 상기 제2 비디오 시퀀스 내에 배치하는 것을 포함함 - 와, 상기 이미지 데이터를 코딩 또는 디스플레이하기 위해 상기 프레임을 상기 제2 비디오 시퀀스 내에 제공하는 단계를 포함한다.
다른 구현예로서, 이 방법은 상기 제1 순서는 상기 프레임이 이미지 캡처링 디바이스에 의해 캡처된 캡처 순서이며 상기 제2 순서는 상기 프레임이 인코딩될 프레임의 코딩 순서인 것과, 상기 제1 순서는 상기 프레임이 이미지 캡처링 디바이스에 의해 캡처된 캡처 순서이며 상기 제2 순서는 상기 프레임이 디스플레이될 디스플레이 순서인 것과, 상기 제1 순서는 상기 프레임을 디코딩할 코딩 순서이며 상기 제2 순서는 상기 프레임이 디스플레이될 디스플레이 순서인 것 중 적어도 하나를 포함할 수 있다. 이 방법은 또한 상기 제2 비디오 시퀀스 내의 상기 제2 순서로 재정렬되도록, I-프레임 및 B-프레임은 오프칩 메모리로 제공되며 P-프레임은 상기 오프칩 메모리보다는 온칩 메모리로 제공되는 것과, I-프레임, B-프레임 및 P-프레임이 온칩 메모리 및 오프칩 메모리 모두에 제공되어, 상기 온칩 메모리 및 오프칩 메모리 모두로부터의 동일 프레임의 프레임 사본이 상기 제2 비디오 시퀀스 내의 상기 제2 순서로 재정렬되는 것과, 상기 제2 비디오 시퀀스 내의 상기 제2 순서로 재정렬되도록, I-프레임 및 P-프레임은 오프칩 메모리로 제공되며 B-프레임은 상기 오프칩 메모리보다는 온칩 메모리로 제공되는 것과, I-프레임 및 P-프레임은 오프칩 메모리에 제공되며 B-프레임은 온칩 메모리 및 오프칩 메모리 모두에 제공되어, 상기 온칩 메모리 및 오프칩 메모리 모두로부터의 동일 프레임의 B-프레임 사본이 상기 제2 비디오 시퀀스 내의 상기 제2 순서로 재정렬되는 것 중 적어도 하나를 포함할 수 있다. 이 방법은 또한, 상기 제1 순서 및 상기 제2 순서 중의 하나는 IBBP를 반복하며, 다른 하나는 IPBB를 반복하는 것과, 상기 제1 순서 및 상기 제2 순서 중의 하나는 IBBP 또는 IPBB를 반복하며, 다른 하나는 IIBBBBPP 또는 IIPPBBBB를 반복하는 것 중 적어도 하나를 포함할 수 있으며, 상기 제1 비디오 시퀀스 순서는 제1 레이트와 관련되며, 상기 제2 비디오 시퀀스 순서는 상기 제1 레이트와는 상이한 제2 레이트와 관련되며, 상기 오프칩 메모리 내의 상기 로컬 프레임 및 상기 로컬 프레임의 사본은 모두 상기 제2 순서로 상기 제2 비디오 시퀀스 내에 배치되며, 상기 제1 비디오 시퀀스 순서의 개개의 디스플레이 프레임 구간은 상기 제2 비디오 시퀀스 순서의 복수의 프레임으로 대체되며, 상기 복수의 프레임의 적어도 하나는 상기 온칩 메모리로부터 나오며, 상기 복수의 프레임 중 또 하나는 개개의 디스플레이 프레임 구간을 위해 상기 오프칩 메모리로부터 나온다. 이 방법은 비디오 시퀀스의 일부 프레임을 오프칩 메모리에 버퍼링하고, 상기 비디오 시퀀스의 다른 프레임을 오프칩 메모리보다는 온칩 메모리에 버퍼링하거나 또는 상기 프레임의 이미지 데이터의 스케일링, 포매팅, 및/또는 개선 후에 오프칩 메모리에 추가로 버퍼링하는 단계와, 상기 비디오 시퀀스를 상기 오프칩 메모리 및 상기 온칩 메모리의 프레임과 함께 디스플레이 순서로 재형성하는 단계를 포함한다.
또 다른 구현예로서, 컴퓨터 구현 시스템은 적어도 하나의 디스플레이와, 이미지 데이터의 프레임을 수신하기 위한 적어도 하나의 온칩 메모리 및 적어도 하나의 오프칩 메모리와, 상기 온칩 메모리 및 상기 오프칩 메모리와 상기 디스플레이에 통신가능하게 연결되는 적어도 하나의 프로세서와, 상기 적어도 하나의 프로세서에 의해 동작되는 적어도 하나의 재정렬 유닛을 포함하되, 상기 재정렬 유닛은 프레임을 갖는 제1 비디오 시퀀스의 이미지 데이터의 로컬 프레임을 제1 순서로 온칩 메모리로부터 수신하는 것과, 오프칩 메모리로부터 상기 제1 비디오 시퀀스의 프레임을 수신하는 것과, 상기 제1 순서와는 상이한 제2 순서를 가진 제2 비디오 시퀀스 내로 상기 프레임을 재정렬하는 것 - 상기 재정렬하는 것은 상기 제2 순서에 따라 그리고 상기 오프칩 메모리로부터의 프레임과 함께 상기 로컬 프레임을 상기 제2 비디오 시퀀스 내에 배치하는 것을 포함함 - 과, 상기 이미지 데이터를 코딩 또는 디스플레이하기 위해 상기 프레임을 상기 제2 비디오 시퀀스 내에 제공하는 것을 수행하도록 구성된다.
다른 구현예로서, 이 시스템은, 상기 제1 순서는 상기 프레임이 이미지 캡처링 디바이스에 의해 캡처된 캡처 순서이며 상기 제2 순서는 상기 프레임이 인코딩될 프레임의 코딩 순서인 것과, 상기 제1 순서는 상기 프레임이 이미지 캡처링 디바이스에 의해 캡처된 캡처 순서이며 상기 제2 순서는 상기 프레임이 디스플레이될 디스플레이 순서인 것과, 상기 제1 순서는 상기 프레임을 디코딩할 코딩 순서이며 상기 제2 순서는 상기 프레임이 디스플레이될 디스플레이 순서인 것 중 적어도 하나가 되도록 구성된다. 이 시스템은, 상기 제2 비디오 시퀀스 내의 상기 제2 순서로 재정렬되도록, I-프레임 및 B-프레임은 오프칩 메모리로 제공되며 P-프레임은 상기 오프칩 메모리보다는 온칩 메모리로 제공되는 것과, I-프레임, B-프레임 및 P-프레임이 온칩 메모리 및 오프칩 메모리 모두에 제공되어, 상기 온칩 메모리 및 오프칩 메모리 모두로부터의 동일 프레임의 프레임 사본이 상기 제2 비디오 시퀀스 내의 상기 제2 순서로 재정렬되는 것과, 상기 제2 비디오 시퀀스 내의 상기 제2 순서로 재정렬되도록, I-프레임 및 P-프레임은 오프칩 메모리로 제공되며 B-프레임은 상기 오프칩 메모리보다는 온칩 메모리로 제공되는 것과, I-프레임 및 P-프레임은 오프칩 메모리에 제공되며 B-프레임은 온칩 메모리 및 오프칩 메모리 모두에 제공되어, 상기 온칩 메모리 및 오프칩 메모리 모두로부터의 동일 프레임의 B-프레임 사본이 상기 제2 비디오 시퀀스 내의 상기 제2 순서로 재정렬되는 것 중 적어도 하나가 되도록 구성된다. 이 시스템은, 상기 제1 순서 및 상기 제2 순서 중의 하나는 IBBP를 반복하며, 다른 하나는 IPBB를 반복하는 것과, 상기 제1 순서 및 상기 제2 순서 중의 하나는 IBBP 또는 IPBB를 반복하며, 다른 하나는 IIBBBBPP 또는 IIPPBBBB를 반복하는 것 중 적어도 하나가 되며, 상기 제1 비디오 시퀀스 순서는 제1 레이트와 관련되며, 상기 제2 비디오 시퀀스 순서는 상기 제1 레이트와는 상이한 제2 레이트와 관련되며, 상기 오프칩 메모리 내의 상기 로컬 프레임 및 상기 로컬 프레임의 사본은 모두 상기 제2 순서로 상기 제2 비디오 시퀀스 내에 배치되며, 상기 제1 비디오 시퀀스 순서의 개개의 디스플레이 프레임 구간은 상기 제2 비디오 시퀀스 순서의 복수의 프레임으로 대체되며, 상기 복수의 프레임의 적어도 하나는 상기 온칩 메모리로부터 나오며, 상기 복수의 프레임 중 또 하나는 개개의 디스플레이 프레임 구간을 위해 상기 오프칩 메모리로부터 나온다. 상기 재정렬 유닛은 비디오 시퀀스의 일부 프레임을 오프칩 메모리에 버퍼링하고, 상기 프레임의 이미지 데이터의 스케일링, 포맷팅, 및/또는 개선 후에 상기 비디오 시퀀스의 다른 프레임을 상기 오프칩 메모리에 더하여, 또는 상기 오프칩 메모리 대신에, 온칩 메모리에 버퍼링하는 것과, 상기 비디오 시퀀스를 상기 오프칩 메모리 및 상기 온칩 메모리의 프레임과 함께 디스플레이 순서로 재형성하는 것을 수행하도록 구성될 수 있다.
한 접근법으로서, 적어도 하나의 컴퓨터 판독가능 저장 매체는 실행시 컴퓨팅 디바이스로 하여금 아래의 동작을 수행하게 하는 명령어를 저장하되, 상기 동작은, 프레임을 갖는 제1 비디오 시퀀스의 이미지 데이터의 로컬 프레임을 제1 순서로 온칩 메모리로부터 수신하는 것과, 오프칩 메모리로부터 상기 제1 비디오 시퀀스의 프레임을 수신하는 것과, 상기 제1 순서와는 상이한 제2 순서를 가진 제2 비디오 시퀀스 내로 상기 프레임을 재정렬하는 것 - 이 재정렬하는 것은 상기 제2 순서에 따라 그리고 상기 오프칩 메모리로부터의 프레임과 함께 상기 로컬 프레임을 상기 제2 비디오 시퀀스 내에 배치하는 것을 포함함 - 과, 상기 이미지 데이터를 코딩 또는 디스플레이하기 위해 상기 프레임을 상기 제2 비디오 시퀀스 내에 제공하는 것을 포함한다.
다른 구현예로서, 이 명령어는 상기 제1 순서는 상기 프레임이 이미지 캡처링 디바이스에 의해 캡처된 캡처 순서이며 상기 제2 순서는 상기 프레임이 인코딩될 프레임의 코딩 순서인 것과, 상기 제1 순서는 상기 프레임이 이미지 캡처링 디바이스에 의해 캡처된 캡처 순서이며 상기 제2 순서는 상기 프레임이 디스플레이될 디스플레이 순서인 것과, 상기 제1 순서는 상기 프레임을 디코딩할 코딩 순서이며 상기 제2 순서는 상기 프레임이 디스플레이될 디스플레이 순서인 것 중 적어도 하나를 포함할 수 있다. 이 명령어는 상기 제2 비디오 시퀀스 내의 상기 제2 순서로 재정렬되도록, I-프레임 및 B-프레임은 오프칩 메모리로 제공되며 P-프레임은 상기 오프칩 메모리보다는 온칩 메모리로 제공되는 것과, I-프레임, B-프레임 및 P-프레임이 온칩 메모리 및 오프칩 메모리 모두에 제공되어, 상기 온칩 메모리 및 오프칩 메모리 모두로부터의 동일 프레임의 프레임 사본이 상기 제2 비디오 시퀀스 내의 상기 제2 순서로 재정렬되는 것과, 상기 제2 비디오 시퀀스 내의 상기 제2 순서로 재정렬되도록, I-프레임 및 P-프레임은 오프칩 메모리로 제공되며 B-프레임은 상기 오프칩 메모리보다는 온칩 메모리로 제공되는 것과, I-프레임 및 P-프레임은 오프칩 메모리에 제공되며 B-프레임은 온칩 메모리 및 오프칩 메모리 모두에 제공되어, 상기 온칩 메모리 및 오프칩 메모리 모두로부터의 동일 프레임의 B-프레임 사본이 상기 제2 비디오 시퀀스 내의 상기 제2 순서로 재정렬되는 것 중 적어도 하나를 포함할 수 있다. 이 명령어는 상기 제1 순서 및 상기 제2 순서 중의 하나는 IBBP를 반복하며, 다른 하나는 IPBB를 반복하는 것과, 상기 제1 순서 및 상기 제2 순서 중의 하나는 IBBP 또는 IPBB를 반복하며, 다른 하나는 IIBBBBPP 또는 IIPPBBBB를 반복하는 것 중 적어도 하나를 포함할 수 있으며, 상기 제1 비디오 시퀀스 순서는 제1 레이트와 관련되며, 상기 제2 비디오 시퀀스 순서는 상기 제1 레이트와는 상이한 제2 레이트와 관련되며, 상기 오프칩 메모리 내의 상기 로컬 프레임 및 상기 로컬 프레임의 사본은 모두 상기 제2 순서로 상기 제2 비디오 시퀀스 내에 배치되며, 상기 제1 비디오 시퀀스 순서의 개개의 디스플레이 프레임 구간은 상기 제2 비디오 시퀀스 순서의 복수의 프레임으로 대체되며, 상기 복수의 프레임의 적어도 하나는 상기 온칩 메모리로부터 나오며, 상기 복수의 프레임 중 또 하나는 개개의 디스플레이 프레임 구간을 위해 상기 오프칩 메모리로부터 나온다. 이 명령어는 실행시 상기 컴퓨팅 디바이스로 하여금, 비디오 시퀀스의 일부 프레임을 오프칩 메모리에 버퍼링하고, 상기 프레임의 이미지 데이터의 스케일링, 포맷팅, 및/또는 개선 후에 상기 비디오 시퀀스의 다른 프레임을 상기 오프칩 메모리에 더하여, 또는 상기 오프칩 메모리 대신에, 온칩 메모리에 버퍼링하는 것과, 상기 비디오 시퀀스를 상기 오프칩 메모리 및 상기 온칩 메모리의 프레임과 함께 디스플레이 순서로 재형성하는 것을 수행하게 한다.
다른 실시예에서, 적어도 하나의 컴퓨터 판독가능 저장 매체는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여 상기 컴퓨팅 디바이스로 하여금 전술한 실시예 중 어느 한 실시예에 따른 방법을 수행하게 하는 복수의 명령어를 포함할 수 있다.
또 다른 실시예에서, 장치는 전술한 실시예들 중 어느 한 실시예에 따른 방법을 수행하는 수단을 포함할 수 있다.
전술한 실시예는 특정 조합의 특징들을 포함할 수 있다. 그러나, 전술한 실시예들은 이에 국한되지 않으며, 다양한 구현예에서, 전술한 실시예는 그러한 특징들의 서브세트만을 시행하는 것, 그러한 특징들의 상이한 순서를 시행하는 것, 그러한 특징들의 상이한 조합을 시행하는 것, 및/또는 명시적으로 열거된 그러한 특징들에 대해 추가되는 특징을 시행하는 것을 포함할 수 있다. 가령, 실시예의 방법과 관련하여 기술되는 모든 특징들은 실시예의 장치, 실시예의 시스템, 및/또는 실시예의 제품과 관련하여 구현될 수 있으며 그 반대도 마찬가지이다.

Claims (25)

  1. 비디오 코딩을 위한 컴퓨터 구현 방법으로서,
    프레임을 갖는 제1 비디오 시퀀스의 이미지 데이터의 비디오 프레임을 제1 순서로 수신하는 단계와,
    상기 비디오 프레임의 이미지 데이터를 수정하여 로컬 비디오 프레임을 만드는 처리 동작을 수행하는 단계와,
    오프칩 메모리로부터 먼저 상기 로컬 비디오 프레임을 획득하는 단계 없이, 상기 처리 동작의 바로 다음에, 상기 제1 비디오 시퀀스의 상기 로컬 비디오 프레임을 온칩 메모리 내에 위치시키는 단계와,
    상기 오프칩 메모리로부터 상기 제1 비디오 시퀀스의 다른 프레임을 수신하는 단계와,
    상기 제1 순서와는 상이한 제2 순서를 가진 제2 비디오 시퀀스 내로 상기 프레임을 재정렬하는 단계 - 이 단계는 상기 오프칩 메모리의 사용 없이, 상기 온칩 메모리를 통하여 상기 로컬 비디오 프레임을 획득하는 것과, 상기 제2 순서에 따라 그리고 상기 오프칩 메모리로부터의 프레임과 함께 상기 로컬 프레임을 상기 제2 비디오 시퀀스 내에 배치하는 것을 포함함 - 와,
    상기 이미지 데이터를 코딩 또는 디스플레이하기 위해 상기 프레임을 상기 제2 비디오 시퀀스 내에 제공하는 단계를 포함하는
    컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 제1 순서는 상기 프레임이 이미지 캡처링 디바이스에 의해 캡처된 캡처 순서이며, 상기 제2 순서는 상기 프레임이 인코딩될 프레임의 코딩 순서인
    컴퓨터 구현 방법.
  3. 제1항에 있어서,
    상기 제1 순서는 상기 프레임이 이미지 캡처링 디바이스에 의해 캡처된 캡처 순서이며, 상기 제2 순서는 상기 프레임이 디스플레이될 디스플레이 순서인
    컴퓨터 구현 방법.
  4. 제1항에 있어서,
    상기 제1 순서는 상기 프레임을 디코딩할 코딩 순서이며, 상기 제2 순서는 상기 프레임이 디스플레이될 디스플레이 순서인
    컴퓨터 구현 방법.
  5. 제1항에 있어서,
    상기 제2 비디오 시퀀스 내에서 상기 제2 순서로 재정렬되도록, I-프레임 및 B-프레임은 상기 오프칩 메모리로 제공되며 P-프레임은 상기 오프칩 메모리보다는 상기 온칩 메모리로 제공되는
    컴퓨터 구현 방법.
  6. 제1항에 있어서,
    I-프레임, B-프레임 및 P-프레임이 상기 온칩 메모리 및 상기 오프칩 메모리 모두에 제공되어, 상기 온칩 메모리 및 상기 오프칩 메모리 모두로부터의 동일 프레임의 프레임 사본이 상기 제2 비디오 시퀀스 내에서 상기 제2 순서로 재정렬되는
    컴퓨터 구현 방법.
  7. 제1항에 있어서,
    상기 제2 비디오 시퀀스 내에서 상기 제2 순서로 재정렬되도록, I-프레임 및 P-프레임은 상기 오프칩 메모리로 제공되며 B-프레임은 상기 오프칩 메모리보다는 상기 온칩 메모리로 제공되는
    컴퓨터 구현 방법.
  8. 제1항에 있어서,
    I-프레임 및 P-프레임은 상기 오프칩 메모리에 제공되며 B-프레임은 상기 온칩 메모리 및 상기 오프칩 메모리 모두에 제공되어, 상기 온칩 메모리 및 상기 오프칩 메모리 모두로부터의 동일 프레임의 B-프레임 사본이 상기 제2 비디오 시퀀스 내에서 상기 제2 순서로 재정렬되는
    컴퓨터 구현 방법.
  9. 제1항에 있어서,
    상기 제1 순서 및 상기 제2 순서 중의 하나는 IBBP를 반복하며, 다른 하나는 IPBB를 반복하는
    컴퓨터 구현 방법.
  10. 제1항에 있어서,
    상기 제1 비디오 시퀀스 순서는 제1 레이트와 관련되며, 상기 제2 비디오 시퀀스 순서는 상기 제1 레이트와는 상이한 제2 레이트와 관련되는
    컴퓨터 구현 방법.
  11. 제10항에 있어서,
    상기 오프칩 메모리 내의 상기 로컬 프레임 및 상기 로컬 프레임의 사본은 모두 상기 제2 순서로 상기 제2 비디오 시퀀스 내에 배치되는
    컴퓨터 구현 방법.
  12. 제10항에 있어서,
    상기 제1 비디오 시퀀스 순서의 개개의 디스플레이 프레임 구간은 상기 제2 비디오 시퀀스 순서의 복수의 프레임으로 대체되며, 상기 복수의 프레임의 적어도 하나는 상기 온칩 메모리로부터 나오며, 상기 복수의 프레임 중 또 하나는 개개의 디스플레이 프레임 구간을 위해 상기 오프칩 메모리로부터 나오는
    컴퓨터 구현 방법.
  13. 제1항에 있어서,
    상기 제1 순서 및 상기 제2 순서 중의 하나는 IBBP 또는 IPBB를 반복하며, 다른 하나는 IIBBBBPP 또는 IIPPBBBB를 반복하는
    컴퓨터 구현 방법.
  14. 제1항에 있어서,
    비디오 시퀀스의 일부 프레임을 상기 오프칩 메모리에 버퍼링하고, 상기 프레임의 이미지 데이터의 스케일링, 포맷팅, 및/또는 개선 후에 상기 비디오 시퀀스의 다른 프레임을 상기 오프칩 메모리에 더하여, 또는 상기 오프칩 메모리 대신에, 상기 온칩 메모리에 버퍼링하는 단계와,
    상기 비디오 시퀀스를 상기 오프칩 메모리 및 상기 온칩 메모리의 프레임과 함께 디스플레이 순서로 재형성하는 단계를 포함하는
    컴퓨터 구현 방법.
  15. 제1항에 있어서,
    상기 제1 순서는 상기 프레임이 이미지 캡처링 디바이스에 의해 캡처된 캡처 순서이며 상기 제2 순서는 상기 프레임이 인코딩될 프레임의 코딩 순서인 것과,
    상기 제1 순서는 상기 프레임이 이미지 캡처링 디바이스에 의해 캡처된 캡처 순서이며 상기 제2 순서는 상기 프레임이 디스플레이될 디스플레이 순서인 것과,
    상기 제1 순서는 상기 프레임을 디코딩할 코딩 순서이며 상기 제2 순서는 상기 프레임이 디스플레이될 디스플레이 순서인 것 중
    적어도 하나가 되며;
    상기 제2 비디오 시퀀스 내에서 상기 제2 순서로 재정렬되도록, I-프레임 및 B-프레임은 상기 오프칩 메모리로 제공되며 P-프레임은 상기 오프칩 메모리보다는 상기 온칩 메모리로 제공되는 것과,
    I-프레임, B-프레임 및 P-프레임이 상기 온칩 메모리 및 상기 오프칩 메모리 모두에 제공되어, 상기 온칩 메모리 및 상기 오프칩 메모리 모두로부터의 동일 프레임의 프레임 사본이 상기 제2 비디오 시퀀스 내에서 상기 제2 순서로 재정렬되는 것과,
    상기 제2 비디오 시퀀스 내에서 상기 제2 순서로 재정렬되도록, I-프레임 및 P-프레임은 오프칩 메모리로 제공되며 B-프레임은 상기 오프칩 메모리보다는 상기 온칩 메모리로 제공되는 것과,
    I-프레임 및 P-프레임은 상기 오프칩 메모리에 제공되며 B-프레임은 상기 온칩 메모리 및 상기 오프칩 메모리 모두에 제공되어, 상기 온칩 메모리 및 상기 오프칩 메모리 모두로부터의 동일 프레임의 B-프레임 사본이 상기 제2 비디오 시퀀스 내에서 상기 제2 순서로 재정렬되는 것 중
    적어도 하나가 되며;
    상기 제1 순서 및 상기 제2 순서 중의 하나는 IBBP를 반복하며, 다른 하나는 IPBB를 반복하는 것과,
    상기 제1 순서 및 상기 제2 순서 중의 하나는 IBBP 또는 IPBB를 반복하며, 다른 하나는 IIBBBBPP 또는 IIPPBBBB를 반복하는 것 중
    적어도 하나가 되며;
    상기 제1 비디오 시퀀스 순서는 제1 레이트와 관련되며, 상기 제2 비디오 시퀀스 순서는 상기 제1 레이트와는 상이한 제2 레이트와 관련되며, 상기 오프칩 메모리 내의 상기 로컬 프레임 및 상기 로컬 프레임의 사본은 모두 상기 제2 순서로 상기 제2 비디오 시퀀스 내에 배치되며, 상기 제1 비디오 시퀀스 순서의 개개의 디스플레이 프레임 구간은 상기 제2 비디오 시퀀스 순서의 복수의 프레임으로 대체되며, 상기 복수의 프레임의 적어도 하나는 상기 온칩 메모리로부터 나오며, 상기 복수의 프레임 중 또 하나는 개개의 디스플레이 프레임 구간을 위해 상기 오프칩 메모리로부터 나오며;
    상기 방법은
    비디오 시퀀스의 일부 프레임을 상기 오프칩 메모리에 버퍼링하고, 상기 프레임의 이미지 데이터의 스케일링, 포맷팅, 및/또는 개선 후에 상기 비디오 시퀀스의 다른 프레임을 상기 오프칩 메모리에 더하여, 또는 상기 오프칩 메모리 대신에, 상기 온칩 메모리에 버퍼링하는 단계와,
    상기 비디오 시퀀스를 상기 오프칩 메모리 및 상기 온칩 메모리의 프레임과 함께 디스플레이 순서로 재형성하는 단계를 포함하는
    컴퓨터 구현 방법.
  16. 컴퓨터 구현 시스템으로서,
    적어도 하나의 디스플레이와,
    이미지 데이터의 프레임을 수신하기 위한 적어도 하나의 온칩 메모리 및 적어도 하나의 오프칩 메모리와,
    상기 온칩 메모리 및 상기 오프칩 메모리와 상기 디스플레이에 통신가능하게 연결되는 적어도 하나의 프로세서를 포함하되,
    상기 프로세서는,
    프레임을 갖는 제1 비디오 시퀀스의 이미지 데이터의 비디오 프레임을 제1 순서로 수신하는 것과,
    상기 비디오 프레임의 이미지 데이터를 수정하여 로컬 비디오 프레임을 만드는 처리 동작을 수행하는 것과,
    상기 오프칩 메모리로부터 먼저 상기 로컬 비디오 프레임을 획득하는 단계 없이, 상기 처리 동작의 바로 다음에, 상기 제1 비디오 시퀀스의 상기 로컬 비디오 프레임을 상기 온칩 메모리 내에 위치시키는 것과,
    상기 오프칩 메모리로부터 상기 제1 비디오 시퀀스의 다른 프레임을 수신하는 것과,
    상기 제1 순서와는 상이한 제2 순서를 가진 제2 비디오 시퀀스 내로 상기 프레임을 재정렬하는 것 - 상기 재정렬하는 것은 상기 오프칩 메모리의 사용 없이, 상기 온칩 메모리를 통하여 상기 비디오 로컬 비디오 프레임을 획득하는 것과, 상기 제2 순서에 따라 그리고 상기 오프칩 메모리로부터의 프레임과 함께 상기 로컬 프레임을 상기 제2 비디오 시퀀스 내에 배치하는 것을 포함함 - 과,
    상기 이미지 데이터를 코딩 또는 디스플레이하기 위해 상기 프레임을 상기 제2 비디오 시퀀스 내에 제공하는 것을 수행하도록 구성되는
    컴퓨터 구현 시스템.
  17. 제16항에 있어서,
    상기 제1 순서는 상기 프레임이 이미지 캡처링 디바이스에 의해 캡처된 캡처 순서이며, 상기 제2 순서는 상기 프레임이 인코딩될 프레임의 코딩 순서인
    컴퓨터 구현 시스템.
  18. 제16항에 있어서,
    상기 제1 순서는 상기 프레임이 이미지 캡처링 디바이스에 의해 캡처된 캡처 순서이며, 상기 제2 순서는 상기 프레임이 디스플레이될 디스플레이 순서인
    컴퓨터 구현 시스템.
  19. 제16항에 있어서,
    상기 제1 순서는 상기 프레임을 디코딩할 코딩 순서이며, 상기 제2 순서는 프레임이 디스플레이될 디스플레이 순서인
    컴퓨터 구현 시스템.
  20. 제16항에 있어서,
    상기 제2 비디오 시퀀스 내에서 상기 제2 순서로 재정렬되도록, I-프레임 및 B-프레임은 상기 오프칩 메모리로 제공되며 P-프레임은 상기 오프칩 메모리보다는 상기 온칩 메모리로 제공되는 것과,
    I-프레임, B-프레임 및 P-프레임이 상기 온칩 메모리 및 상기 오프칩 메모리 모두에 제공되어, 상기 온칩 메모리 및 상기 오프칩 메모리 모두로부터의 동일 프레임의 프레임 사본이 상기 제2 비디오 시퀀스 내에서 상기 제2 순서로 재정렬되는 것과,
    상기 제2 비디오 시퀀스 내에서 상기 제2 순서로 재정렬되도록, I-프레임 및 P-프레임은 상기 오프칩 메모리로 제공되며 B-프레임은 상기 오프칩 메모리보다는 상기 온칩 메모리로 제공되는 것 중
    적어도 하나가 되는
    컴퓨터 구현 시스템.
  21. 제16항에 있어서,
    상기 제1 순서는 상기 프레임이 이미지 캡처링 디바이스에 의해 캡처된 캡처 순서이며 상기 제2 순서는 상기 프레임이 인코딩될 프레임의 코딩 순서인 것과,
    상기 제1 순서는 상기 프레임이 이미지 캡처링 디바이스에 의해 캡처된 캡처 순서이며 상기 제2 순서는 상기 프레임이 디스플레이될 디스플레이 순서인 것과,
    상기 제1 순서는 상기 프레임을 디코딩할 코딩 순서이며 상기 제2 순서는 상기 프레임이 디스플레이될 디스플레이 순서인 것 중
    적어도 하나가 되며;
    상기 제2 비디오 시퀀스 내에서 상기 제2 순서로 재정렬되도록, I-프레임 및 B-프레임은 상기 오프칩 메모리로 제공되며 P-프레임은 상기 오프칩 메모리보다는 상기 온칩 메모리로 제공되는 것과,
    I-프레임, B-프레임 및 P-프레임이 상기 온칩 메모리 및 상기 오프칩 메모리 모두에 제공되어, 상기 온칩 메모리 및 상기 오프칩 메모리 모두로부터의 동일 프레임의 프레임 사본이 상기 제2 비디오 시퀀스 내에서 상기 제2 순서로 재정렬되는 것과,
    상기 제2 비디오 시퀀스 내에서 상기 제2 순서로 재정렬되도록, I-프레임 및 P-프레임은 상기 오프칩 메모리로 제공되며 B-프레임은 상기 오프칩 메모리보다는 상기 온칩 메모리로 제공되는 것과,
    I-프레임 및 P-프레임은 상기 오프칩 메모리에 제공되며 B-프레임은 상기 온칩 메모리 및 상기 오프칩 메모리 모두에 제공되어, 상기 온칩 메모리 및 상기 오프칩 메모리 모두로부터의 동일 프레임의 B-프레임 사본이 상기 제2 비디오 시퀀스 내에서 상기 제2 순서로 재정렬되는 것 중
    적어도 하나가 되며;
    상기 제1 순서 및 상기 제2 순서 중의 하나는 IBBP를 반복하며, 다른 하나는 IPBB를 반복하는 것과,
    상기 제1 순서 및 상기 제2 순서 중의 하나는 IBBP 또는 IPBB를 반복하며, 다른 하나는 IIBBBBPP 또는 IIPPBBBB를 반복하는 것 중
    적어도 하나가 되며;
    상기 제1 비디오 시퀀스 순서는 제1 레이트와 관련되며, 상기 제2 비디오 시퀀스 순서는 상기 제1 레이트와는 상이한 제2 레이트와 관련되며, 상기 오프칩 메모리 내의 상기 로컬 프레임 및 상기 로컬 프레임의 사본은 모두 상기 제2 순서로 상기 제2 비디오 시퀀스 내에 배치되며, 상기 제1 비디오 시퀀스 순서의 개개의 디스플레이 프레임 구간은 상기 제2 비디오 시퀀스 순서의 복수의 프레임으로 대체되며, 상기 복수의 프레임의 적어도 하나는 상기 온칩 메모리로부터 나오며, 상기 복수의 프레임 중 또 하나는 개개의 디스플레이 프레임 구간을 위해 상기 오프칩 메모리로부터 나오며;
    상기 재정렬 유닛은
    비디오 시퀀스의 일부 프레임을 상기 오프칩 메모리에 버퍼링하고, 상기 프레임의 이미지 데이터의 스케일링, 포맷팅, 및/또는 개선 후에 상기 비디오 시퀀스의 다른 프레임을 상기 오프칩 메모리에 더하여, 또는 상기 오프칩 메모리 대신에, 상기 온칩 메모리에 버퍼링하는 것과,
    상기 비디오 시퀀스를 상기 오프칩 메모리 및 상기 온칩 메모리의 프레임과 함께 디스플레이 순서로 재형성하는 것을 수행하도록 구성되는
    컴퓨터 구현 시스템.
  22. 실행시 컴퓨팅 디바이스로 하여금 아래의 동작을 수행하게 하는 명령어를 저장한 적어도 하나의 컴퓨터 판독가능 저장 매체로서,
    상기 동작은,
    프레임을 갖는 제1 비디오 시퀀스의 이미지 데이터의 비디오 프레임을 제1 순서로 수신하는 것과,
    상기 비디오 프레임의 이미지 데이터를 수정하여 로컬 비디오 프레임을 만드는 처리 동작을 수행하는 것과,
    오프칩 메모리로부터 먼저 상기 로컬 비디오 프레임을 획득하는 단계 없이, 상기 처리 동작의 바로 다음에, 상기 제1 비디오 시퀀스의 상기 로컬 비디오 프레임을 온칩 메모리 내에 위치시키는 것과,
    상기 오프칩 메모리로부터 상기 제1 비디오 시퀀스의 다른 프레임을 수신하는 것과,
    상기 제1 순서와는 상이한 제2 순서를 가진 제2 비디오 시퀀스 내로 상기 프레임을 재정렬하는 것 - 이 재정렬하는 것은 상기 오프칩 메모리의 사용 없이, 상기 온칩 메모리를 통하여 상기 비디오 로컬 비디오 프레임을 획득하는 것과, 상기 제2 순서에 따라 그리고 상기 오프칩 메모리로부터의 프레임과 함께 상기 로컬 프레임을 상기 제2 비디오 시퀀스 내에 배치하는 것을 포함함 - 과,
    상기 이미지 데이터를 코딩 또는 디스플레이하기 위해 상기 프레임을 상기 제2 비디오 시퀀스 내에 제공하는 것을 포함하는
    컴퓨터 판독가능 저장 매체.
  23. 제22항에 있어서,
    상기 제1 순서는 상기 프레임이 이미지 캡처링 디바이스에 의해 캡처된 캡처 순서이며 상기 제2 순서는 상기 프레임이 인코딩될 프레임의 코딩 순서인 것과,
    상기 제1 순서는 상기 프레임이 이미지 캡처링 디바이스에 의해 캡처된 캡처 순서이며 상기 제2 순서는 상기 프레임이 디스플레이될 디스플레이 순서인 것과,
    상기 제1 순서는 상기 프레임을 디코딩할 코딩 순서이며 상기 제2 순서는 상기 프레임이 디스플레이될 디스플레이 순서인 것 중
    적어도 하나가 되며;
    상기 제2 비디오 시퀀스 내에서 상기 제2 순서로 재정렬되도록, I-프레임 및 B-프레임은 상기 오프칩 메모리로 제공되며 P-프레임은 상기 오프칩 메모리보다는 상기 온칩 메모리로 제공되는 것과,
    I-프레임, B-프레임 및 P-프레임이 상기 온칩 메모리 및 상기 오프칩 메모리 모두에 제공되어, 상기 온칩 메모리 및 상기 오프칩 메모리 모두로부터의 동일 프레임의 프레임 사본이 상기 제2 비디오 시퀀스 내에서 상기 제2 순서로 재정렬되는 것과,
    상기 제2 비디오 시퀀스 내에서 상기 제2 순서로 재정렬되도록, I-프레임 및 P-프레임은 상기 오프칩 메모리로 제공되며 B-프레임은 상기 오프칩 메모리보다는 상기 온칩 메모리로 제공되는 것과,
    I-프레임 및 P-프레임은 상기 오프칩 메모리에 제공되며 B-프레임은 상기 온칩 메모리 및 상기 오프칩 메모리 모두에 제공되어, 상기 온칩 메모리 및 상기 오프칩 메모리 모두로부터의 동일 프레임의 B-프레임 사본이 상기 제2 비디오 시퀀스 내에서 상기 제2 순서로 재정렬되는 것 중
    적어도 하나가 되며;
    상기 제1 순서 및 상기 제2 순서 중의 하나는 IBBP를 반복하며, 다른 하나는 IPBB를 반복하는 것과,
    상기 제1 순서 및 상기 제2 순서 중의 하나는 IBBP 또는 IPBB를 반복하며, 다른 하나는 IIBBBBPP 또는 IIPPBBBB를 반복하는 것 중
    적어도 하나가 되며;
    상기 제1 비디오 시퀀스 순서는 제1 레이트와 관련되며, 상기 제2 비디오 시퀀스 순서는 상기 제1 레이트와는 상이한 제2 레이트와 관련되며, 상기 오프칩 메모리 내의 상기 로컬 프레임 및 상기 로컬 프레임의 사본은 모두 상기 제2 순서로 상기 제2 비디오 시퀀스 내에 배치되며, 상기 제1 비디오 시퀀스 순서의 개개의 디스플레이 프레임 구간은 상기 제2 비디오 시퀀스 순서의 복수의 프레임으로 대체되며, 상기 복수의 프레임의 적어도 하나는 상기 온칩 메모리로부터 나오며, 상기 복수의 프레임 중 또 하나는 개개의 디스플레이 프레임 구간을 위해 상기 오프칩 메모리로부터 나오며;
    상기 명령어는 실행시 상기 컴퓨팅 디바이스로 하여금
    비디오 시퀀스의 일부 프레임을 상기 오프칩 메모리에 버퍼링하고, 상기 프레임의 이미지 데이터의 스케일링, 포맷팅, 및/또는 개선 후에 상기 비디오 시퀀스의 다른 프레임을 상기 오프칩 메모리에 더하여, 또는 상기 오프칩 메모리 대신에, 상기 온칩 메모리에 버퍼링하는 것과,
    상기 비디오 시퀀스를 상기 오프칩 메모리 및 상기 온칩 메모리의 프레임과 함께 디스플레이 순서로 재형성하는 것을 수행하게 하는
    컴퓨터 판독가능 저장 매체.
  24. 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여 상기 컴퓨팅 디바이스로 하여금 제1항 내지 제15항 중 어느 한 항에 따른 방법을 수행하게 하는 복수의 명령어를 포함하는 적어도 하나의 머신 판독가능 저장 매체.
  25. 제1항 내지 제15항 중 어느 한 항에 따른 방법을 수행하는 수단을 포함하는 장치.
KR1020187002600A 2015-08-31 2016-07-26 비디오 코딩을 위한 프레임 재정렬 방법 및 시스템 KR102606584B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/841,624 2015-08-31
US14/841,624 US11051026B2 (en) 2015-08-31 2015-08-31 Method and system of frame re-ordering for video coding
PCT/US2016/044066 WO2017039878A1 (en) 2015-08-31 2016-07-26 Method and system of frame re-ordering for video coding

Publications (2)

Publication Number Publication Date
KR20180037186A KR20180037186A (ko) 2018-04-11
KR102606584B1 true KR102606584B1 (ko) 2023-11-24

Family

ID=58096383

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187002600A KR102606584B1 (ko) 2015-08-31 2016-07-26 비디오 코딩을 위한 프레임 재정렬 방법 및 시스템

Country Status (4)

Country Link
US (1) US11051026B2 (ko)
KR (1) KR102606584B1 (ko)
CN (1) CN107925777A (ko)
WO (1) WO2017039878A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102553886B1 (ko) 2015-12-24 2023-07-11 삼성전자주식회사 전자 장치 및 전자 장치의 이미지 제어 방법
US11429658B1 (en) * 2018-04-11 2022-08-30 Soroco Private Limited Systems and methods for content-aware image storage
EP3573338A1 (en) * 2018-05-25 2019-11-27 Carrier Corporation Video device and network quality evaluation/diagnostic tool
JP2021061501A (ja) * 2019-10-04 2021-04-15 シャープ株式会社 動画像変換装置及び方法
CN111176582A (zh) * 2019-12-31 2020-05-19 北京百度网讯科技有限公司 矩阵存储方法、矩阵访问方法、装置和电子设备
CA3136322A1 (en) * 2020-12-02 2022-06-02 The Boeing Company Debug trace streams for core synchronization
WO2024000463A1 (zh) * 2022-06-30 2024-01-04 华为技术有限公司 处理视频的方法、装置和计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110280312A1 (en) * 2010-05-13 2011-11-17 Texas Instruments Incorporated Video processing device with memory optimization in image post-processing
US20120240174A1 (en) * 2011-03-16 2012-09-20 Samsung Electronics Co., Ltd. Method and apparatus for configuring content in a broadcast system

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3531532B2 (ja) * 1999-05-18 2004-05-31 日本電気株式会社 動画像符号化装置、及び方法
US6937245B1 (en) * 2000-08-23 2005-08-30 Nintendo Co., Ltd. Graphics system with embedded frame buffer having reconfigurable pixel formats
US7411959B2 (en) * 2002-08-30 2008-08-12 Broadcom Corporation System and method for handling out-of-order frames
CA2531503C (en) 2003-07-09 2012-06-26 Broadlogic Network Technologies Inc. Method and system for providing a high speed multi-stream mpeg processor
KR20060127170A (ko) 2004-03-03 2006-12-11 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 비디오 스트림 처리 회로 및 방법
KR100640592B1 (ko) * 2004-10-25 2006-11-01 삼성전자주식회사 향상된 압축 속도를 가지는 동영상 압축 장치 및 그 방법
DE602006010402D1 (de) 2005-08-17 2009-12-24 Nxp Bv Videocodierung und -decodierung unter berücksichtigung von positionen im cache
US9432679B2 (en) 2005-11-01 2016-08-30 Entropic Communications, Llc Data processing system
WO2008146455A1 (ja) 2007-05-22 2008-12-04 Panasonic Corporation 動画像復号化装置及び動画像復号化方法
US20110109721A1 (en) 2009-11-06 2011-05-12 Sony Corporation Dynamic reference frame reordering for frame sequential stereoscopic video encoding
US9877033B2 (en) * 2009-12-21 2018-01-23 Qualcomm Incorporated Temporal and spatial video block reordering in a decoder to improve cache hits
US8781000B2 (en) 2010-12-30 2014-07-15 Vixs Systems, Inc. Dynamic video data compression
HRP20231180T1 (hr) 2011-06-30 2024-01-05 Microsoft Technology Licensing, Llc Smanjenje latencije u kodiranju i dekodiranju videozapisa
CN103813174B (zh) 2012-11-12 2016-04-27 腾讯科技(深圳)有限公司 一种混合分辨率编解码方法和装置
US9292899B2 (en) * 2013-09-25 2016-03-22 Apple Inc. Reference frame data prefetching in block processing pipelines
GB2525208B (en) * 2014-04-15 2020-04-08 Advanced Risc Mach Ltd Method of and apparatus for generating an encoded frame

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110280312A1 (en) * 2010-05-13 2011-11-17 Texas Instruments Incorporated Video processing device with memory optimization in image post-processing
US20120240174A1 (en) * 2011-03-16 2012-09-20 Samsung Electronics Co., Ltd. Method and apparatus for configuring content in a broadcast system

Also Published As

Publication number Publication date
US20170064309A1 (en) 2017-03-02
WO2017039878A1 (en) 2017-03-09
CN107925777A (zh) 2018-04-17
KR20180037186A (ko) 2018-04-11
US11051026B2 (en) 2021-06-29

Similar Documents

Publication Publication Date Title
KR102606584B1 (ko) 비디오 코딩을 위한 프레임 재정렬 방법 및 시스템
CN109792540B (zh) 利用每帧参数控制的硬件加速的视频编码方法和系统
KR101836027B1 (ko) 일정 품질 비디오 코딩
US10554977B2 (en) Method and system of high throughput arithmetic entropy coding for video coding
US11223831B2 (en) Method and system of video coding using content based metadata
US10827186B2 (en) Method and system of video coding with context decoding and reconstruction bypass
US10516891B2 (en) Method and system of reference frame caching for video coding
US10674151B2 (en) Adaptive in-loop filtering for video coding
CN106664412B (zh) 包括目标比特率的视频编码速率控制和质量控制
EP3167616A1 (en) Adaptive bitrate streaming for wireless video
US20170006303A1 (en) Method and system of adaptive reference frame caching for video coding
CN115623222A (zh) 多层视频编码的方法和系统
CN107736026B (zh) 样本自适应偏移编码
WO2018089146A1 (en) Conversion buffer to decouple normative and implementation data path interleaving of video coefficients
US9942552B2 (en) Low bitrate video coding
KR101777487B1 (ko) 코딩 단위 비트 수 제한

Legal Events

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