KR102006044B1 - 메타데이터를 이용한 비디오 디코딩 기법 - Google Patents
메타데이터를 이용한 비디오 디코딩 기법 Download PDFInfo
- Publication number
- KR102006044B1 KR102006044B1 KR1020147022904A KR20147022904A KR102006044B1 KR 102006044 B1 KR102006044 B1 KR 102006044B1 KR 1020147022904 A KR1020147022904 A KR 1020147022904A KR 20147022904 A KR20147022904 A KR 20147022904A KR 102006044 B1 KR102006044 B1 KR 102006044B1
- Authority
- KR
- South Korea
- Prior art keywords
- decoder
- decoding
- metadata
- video sequence
- profile
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/129—Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/174—Methods 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 slice, e.g. a line of blocks or a group of blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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 block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
최적화 결정을 행하기 위해 메타데이터를 사용하는 비디오 디코더가 개시된다. 일 실시예에서, 메타데이터는 다수의 이용가능 디코더 엔진 중에서 어느 것이 비디오 시퀀스를 수신해야 하는지를 선택하는데 사용될 수 있다. 다른 실시예에서, 최적화 결정은 비디오 시퀀스와 연관된 길이 및 위치 메타데이터 정보에 기초할 수 있다. 이러한 메타데이터 정보를 이용하여, 디코더 엔진은 디코딩 과정을 보다 효율적으로 하기 위해 시작 코드 스캐닝을 생략할 수 있다. 또한, 디코더 엔진의 선택에 기초하여, 에뮬레이션 방지 바이트 제거가 시작 코드 스캐닝과 함께 이루어져야 하는지 여부를 결정할 수 있다.
Description
본 출원은 일반적으로 디코딩에 관한 것으로, 특히 파일 컨테이너를 갖는 인코딩된 비디오 시퀀스로부터 메타데이터를 사용하여 디코딩을 최적화하는 것에 관한 것이다.
엔지니어는 압축(소스 코딩 또는 소스 인코딩이라고도 함)을 사용하여 디지털 비디오의 비트레이트를 줄인다. 압축은 정보를 더 낮은 비트레이트 형태로 변환함으로써 비디오 정보의 저장 및 전송 비용을 감소시킨다. 압축해제(디코딩이라고도 함)는 압축된 형태로부터 원본 정보의 버전을 재구성한다. "코덱"은 인코더/ 디코더 시스템이다.
지난 20년 동안, H.261, H.262 (MPEG-2) 및 H.263 표준 및 MPEG-1 및 MPEG-4 표준을 포함하여, 다양한 비디오 코덱 표준이 채택되었다. 보다 최근에는, H.264 표준(때때로 AVC 또는 14496-10라고도 함) 및 VC-1 표준이 채택되었다. HEVC의 차세대 표준이 개발중에 있다. 자세한 내용은 해당 표준의 대표적인 버전을 참조한다. 비디오 코덱 표준은 일반적으로 특정 기능이 인코딩 및 디코딩에 사용될 때 비디오 시퀀스의 비트스트림 내의 파라미터들을 열거하는, 인코딩된 비디오 비트스트림의 신택스에 대한 옵션을 정의한다. 많은 경우, 비디오 코덱 표준은 또한 디코딩에서 올바른 결과를 달성하기 위해 디코더가 수행할 수 있는 디코딩 동작에 대한 세부사항을 제공한다.
현대의 디코딩의 경우, 그래픽 처리 장치(GPU)가 사용될 수 있다. GPU는 디스플레이로의 출력을 위한 프레임 버퍼에 이미지들의 구축을 가속화하는 방식으로 메모리를 조작 및 변경하도록 설계된 특수한 전자 회로이다. GPU는 내장형 시스템, 휴대 전화, 개인용 컴퓨터, 워크스테이션, 게임 콘솔 등에서 사용된다. 현대의 GPU는 컴퓨터 그래픽의 조작시 매우 효율적이고, 그들의 고도의 병렬 구조는 큰 데이터 블록의 처리가 병렬로 수행되는 알고리즘의 범용 CPU보다 그들을 더 효과적이게 한다.
대부분의 GPU는 빠르기는 하지만 ASO(Arbitrary Slice Order) 및/또는 FMO(Flexible Macro-block Order)로 인코딩된 비디오를 처리하도록 설계되지 않았다. 이러한 알고리즘을 사용하여 인코딩된 비디오는 일반적으로 CPU와 같이, 베이스라인 프로파일을 처리하도록 설계된 디코더를 사용하여 처리된다. 대신에, GPU는 일반적으로 메인 프로파일과 그보다 높은 프로파일을 갖는 비디오 시퀀스를 처리하도록 설계된다. 유감스럽게도, 많은 H.264/AVC 인코더는 실제로 메인 프로파일에 호환되는 베이스라인 비트스트림을 생성하지만, 제약 플래그가 부정확하게 설정되게 한다. 이와 같이 부정확하게 설정된 플래그는 H.264/AVC 디코더로 하여금 그러한 알고리즘이 사용되지 않았을 경우에도, 해당 클립을 ASO 또는 FMO를 포함하여 순수 베이스라인(pure baseline)으로 취급하게 한다.
본 요약은 이하 발명의 상세한 설명에서 보다 자세히 기술될 개념들 중 선택된 것들을 단순화된 형식으로 소개하기 위해 제공되는 것이다. 본 요약은 청구대상의 주된 사항 또는 핵심 사항을 밝히기 위한 것이 아니며, 청구대상의 범위를 한정하기 위한 것도 아니다.
최적화 결정을 행하기 위해 인코딩된 비디오 시퀀스의 메타데이터를 사용하는 비디오 디코더가 개시된다. 예를 들어, 일 실시예에서, 메타데이터는 비디오 시퀀스를 어떤 디코더 엔진이 수신할 수 있는지를 선택하는데 사용될 수 있다. 다수의 디코더 엔진이 디코더에 이용가능할 수 있는데, 예를 들어 베이스라인 프로파일을 처리할 수 있는 것(예를 들어, CPU) 및 베이스라인 프로파일을 처리할 수 없으나 일반적으로 보다 효율적인 것(예를 들어, GPU)이 이용될 수 있다. 가장 효율적인 디코더 엔진을 선택하는데 메타데이터를 사용함으로써, 최적화된 디코더가 실현된다.
다른 실시예에서, 최적화 결정은 비디오 시퀀스와 연관된 길이 및 위치 메타데이터 정보에 기초할 수 있다. 이러한 메타데이터 정보를 이용하여, 디코더 엔진은 디코딩 과정을 보다 효율적으로 하기 위해 시작 코드 스캐닝을 건너뛸 수 있다.
또 다른 실시예에서, 비트스트림 파서가 슬라이스 헤더, 시퀀스 파라미터 세트(SPS), 픽처 파라미터 세트(PPS) 및 보충 강화 정보(SEI)를 디코딩하는 동안, 에뮬레이션 방지 바이트가 동적으로 제거될 수 있다. 네트워크 액세스 계층 유닛(NALU) 길이 정보가 이용가능하면, 하드웨어 가속 디코딩은 시작 코드 스캐닝을 완전히 생략할 수 있고, NALU를 하나씩 직접 하드웨어에 보낼 수 있다.
본 발명에 대해 전술한 및 다른 목적, 특징 및 장점은 첨부된 도면을 참조하는 다음의 상세한 설명으로부터 보다 명백해질 것이다.
도 1은 기술된 일부 실시예가 구현될 수 있는 예시적인 컴퓨팅 환경의 다이아그램이다.
도 2는 인코딩된 비디오 시퀀스에서의 메타데이터에 기초하여 디코딩 최적화 결정을 하기 위한 방법의 흐름도이다.
도 3은 비디오 시퀀스를 디코딩하는 데 사용할 수 있는 이용가능 디코더 엔진을 결정하는데 메타데이터를 사용하는 흐름도이다.
도 4는 도 3의 흐름도에서 확장하는 데 사용될 수 있는 보다 상세한 흐름도이며 MPEG-4 비디오 시퀀스의 특정 예이다.
도 5는 복수의 디코더 엔진을 포함하는 디코더의 예시적인 아키텍처 구조이다.
도 6은 사용될 수 있는 예시적인 디코더 엔진이다.
도 7은 디코더 엔진에 길이 및 위치를 전달하기 위한 방법의 흐름도이다.
도 8은 에뮬레이션 방지 바이트를 제거하기 위한 방법의 흐름도이다.
도 2는 인코딩된 비디오 시퀀스에서의 메타데이터에 기초하여 디코딩 최적화 결정을 하기 위한 방법의 흐름도이다.
도 3은 비디오 시퀀스를 디코딩하는 데 사용할 수 있는 이용가능 디코더 엔진을 결정하는데 메타데이터를 사용하는 흐름도이다.
도 4는 도 3의 흐름도에서 확장하는 데 사용될 수 있는 보다 상세한 흐름도이며 MPEG-4 비디오 시퀀스의 특정 예이다.
도 5는 복수의 디코더 엔진을 포함하는 디코더의 예시적인 아키텍처 구조이다.
도 6은 사용될 수 있는 예시적인 디코더 엔진이다.
도 7은 디코더 엔진에 길이 및 위치를 전달하기 위한 방법의 흐름도이다.
도 8은 에뮬레이션 방지 바이트를 제거하기 위한 방법의 흐름도이다.
I. 예시적인 컴퓨팅 환경
도 1은 설명된 기술 및 도구 중 몇몇이 구현될 수 있는 적절한 컴퓨팅 환경(100)의 일반화된 예를 도시한다. 기법 및 도구는 다양한 범용 또는 특수 목적의 컴퓨팅 환경에서 구현될 수 있으므로, 컴퓨팅 환경(100)은 사용 또는 기능의 범위에 어떠한 제한도 두려하지 않는다.
도 1을 참조하면, 컴퓨팅 환경(100)은 컴퓨팅 장치를 구현하는데 사용될 수 있는 하나 이상의 처리 장치(110, 115) 및 메모리(120, 125)를 포함한다. 도 1에서, 이 가장 기본적인 구성(130)은 점선 내에 포함된다. 처리 장치(110, 115)는 컴퓨터 실행가능 명령어들을 실행한다. 처리 장치는 범용 중앙 처리 장치(CPU), 응용 주문형 집적 회로(ASIC) 내의 프로세서 또는 임의의 다른 유형의 프로세서일 수 있다. 멀티 프로세싱 시스템에서, 컴퓨터 실행가능 명령어들을 다수의 처리 장치가 실행하여 처리 능력을 증가시킨다. 예를 들어, 도 1은 중앙 처리 장치(110) 뿐만 아니라 그래픽 처리 장치 또는 협력 처리 장치(115)를 도시한다. 메모리(120, 125)는 처리 장치(들)에 의해 액세스가능한 휘발성 메모리(예를 들어, 레지스터, 캐시, RAM), 비 휘발성 메모리(예컨대, ROM, EEPROM, 플래시 메모리 등) 또는 이 둘의 몇몇 조합일 수 있다. 메모리(120, 125)는 처리 장치(들)에 의해 실행하기에 적합한 컴퓨터 실행가능 명령어의 형태로, 디코더 최적화를 위한 하나 이상의 혁신을 구현하는 소프트웨어(180)를 저장한다.
컴퓨팅 환경은 추가 특징을 가질 수 있다. 예를 들어, 컴퓨팅 환경(100)은 저장소(140), 하나 이상의 입력 장치(150), 하나 이상의 출력 장치(160), 및 하나 이상의 통신 접속(170)을 포함한다. 버스, 제어기, 또는 네트워크와 같은 상호연결 메카니즘(도시되지 않음)은 컴퓨팅 환경(100)의 컴포넌트들을 상호연결한다. 통상적으로, 운영 체제 소프트웨어(도시되지 않음)는 컴퓨팅 환경(100)에서 실행되는 다른 소프트웨어를 위한 운영 환경을 제공하고, 컴퓨팅 환경(100)의 컴포넌트들의 활동을 조정한다.
유형의 저장소(140)는 분리형 또는 비 분리형일 수 있고, 자기 디스크, 자기 테이프 또는 카세트, CD-ROM, DVD, 또는 비 일시적인 방식으로 정보를 저장하는 데 사용될 수 있고 컴퓨팅 환경(100) 내에서 액세스될 수 있는 임의의 다른 매체를 포함한다. 저장소(140)는 디코더 최적화를 위한 하나 이상의 혁신을 구현하는 소프트웨어(180)에 대해 명령어들을 저장할 수 있다.
입력 장치(들)(150)는 키보드, 마우스, 펜, 또는 트랙볼, 음성 입력 장치, 스캐닝 장치, 또는 컴퓨팅 환경(100)에 입력을 제공하는 다른 장치와 같은 터치 입력 장치일 수 있다. 비디오 디코딩의 경우, 입력 장치(들)(150)는 비디오 카드, TV 튜너 카드, 또는 아날로그 또는 디지털 형태의 비디오 입력을 받아들이는 유사한 장치, 또는 비디오 샘플을 컴퓨팅 환경(100)내로 판독하는 CD-ROM 또는 CD-RW 일 수 있다. 출력 장치(들)(160)는 디스플레이, 프린터, 스피커, CD-라이터, 또는 컴퓨팅 환경(100)으로부터 출력을 제공하는 다른 장치일 수 있다.
통신 접속(들)(170)은 통신 매체를 통해 다른 컴퓨팅 개체로의 통신을 가능하게 한다. 통신 매체는 변조된 데이터 신호 내에 컴퓨터 실행가능 명령어, 오디오 또는 비디오 입력 또는 출력, 또는 다른 데이터와 같은 정보를 전달한다. 변조된 데이터 신호는 신호 내에 정보를 인코딩하도록 설정되거나 변경된 하나 이상의 특성을 갖는 신호이다. 제한이 아닌 예로서, 통신 매체는 전기, 광학, RF, 또는 다른 캐리어로 구현된 유선 또는 무선 기술을 포함한다.
기법 및 도구는 컴퓨터 판독가능 매체의 일반적인 문맥으로 설명될 수 있다. 컴퓨터 판독가능 매체는 컴퓨팅 환경 내에서 액세스될 수 있는 임의의 이용 가능한 유형의 매체이다. 제한이 아닌 예로서, 컴퓨팅 환경(100)에서, 컴퓨터 판독가능 매체는 메모리(120), 저장소(140), 및 상기의 임의의 조합을 포함한다.
기법 및 도구는 타겟이 되는 실제 또는 가상 프로세서상의 컴퓨팅 환경에서 실행되는 프로그램 모듈에 포함된 것들과 같은 컴퓨터 실행가능 명령어들의 일반적인 문맥으로 설명될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 라이브러리, 객체, 클래스, 컴포넌트, 데이터 구조 등을 포함한다. 프로그램 모듈의 기능은 다양한 실시 예에서 원하는 대로 조합되거나 프로그램 모듈들 사이에서 분할될 수 있다. 프로그램 모듈에 대한 컴퓨터 실행가능 명령어는 로컬 또는 분산 컴퓨팅 환경 내에서 실행될 수 있다.
"시스템" 및 "장치"라는 용어는 본 명세서에서 같은 의미로 사용된다. 문맥상 명백하게 다르게 나타내지 않는다면, 이 용어는 컴퓨팅 시스템 또는 컴퓨팅 장치의 유형에 어떠한 제한도 암시하지 않는다. 일반적으로 컴퓨팅 시스템 또는 컴퓨팅 장치는 로컬 또는 분산될 수 있고, 본원에서 설명된 기능을 구현하는 소프트웨어와 특수 목적의 하드웨어 및/또는 범용 하드웨어의 임의의 조합을 포함할 수 있다.
설명을 위해, 상세한 설명은 컴퓨팅 환경에서 컴퓨터 동작들을 설명하기 위해 "결정", "선택"과 같은 용어를 사용한다. 이러한 용어들은 컴퓨터에 의해 수행되는 동작들에 대한 고레벨 추상화이며, 사람에 의해 수행되는 행동과 혼동되어서는 안된다. 이들 용어에 대응하는 실제 컴퓨터 동작은 구현에 따라 달라진다.
II
. 메타데이터 보조 디코딩 최적화의 개요
도 2는 디코딩을 최적화하기 위해 메타데이터를 사용하는 방법의 흐름도이다. 처리 블록(200)에서, 인코딩된 비디오 시퀀스가 수신된다. 인코딩된 비디오 시퀀스는 무비 클립 또는 다른 비디오 시퀀스일 수 있고, MPEG-X, AVI, MKV, ASF 등을 포함한 다양한 컨테이너 포맷 중 임의의 포맷을 사용할 수 있다. 또한, 비디오 압축의 임의의 다양한 표준, 예컨대 H.264/AVC, VC-1, MPEG-4 Pt2 등이 사용될 수 있다. 처리 블록(202)에서, 인코딩된 비디오 시퀀스에서의 메타데이터는 디코딩 결정을 하기 위해 분석될 수 있다. 메타데이터는 비디오 시퀀스의 원시 이미지 데이터를 기술하거나 분류하는 것을 돕기 위해 사용되는 임의의 것일 수 있다. 예를 들어, 샘플 설명 박스(STSD)는 시퀀스 파라미터 세트(SPS) 및 픽처 파라미터 세트(PPS)와 같은 파라미터 세트에 관한 메타데이터를 얻기 위해 MPEG-4에서 사용될 수 있다. 파라미터 세트는 디코더 최적화 결정을 내리는 데(처리 블록 204) 사용될 수 있는 ASO(arbitrary slice ordering) 및 FMO(flexible macroblock ordering)에 관한 추가 정보를 포함할 수 있다. 예를 들어, 메타데이터를 사용하여, 인코딩된 데이터를 가장 효율적인 디코더 엔진에 전달할 수 있는 선택이 행해질 수 있다. 다른 예에서, 메타데이터는 이후에 더 설명되는 바와 같이, 비트스트림 파싱을 최적화하는데 사용될 수 있다. 다른 메타데이터가 이용될 수 있고, 본 명세서에 기재된 실시예들은 사용된 특정 메타데이터 및 특정 디코더 최적화 결정에 한정되지 않는다.
III
. 메타데이터를 사용하는 디코더 엔진 선택
도 3은 도 2와 연계하여 추가의 세부사항 또는 처리 블록을 나타내는 예시적인 실시예이다. 처리 블록(300)에서, 메타데이터는 가장 효율적인 디코더 엔진을 결정하기 위해 분석될 수 있다. 효율적인 디코더 엔진은 예를 들어, 최소한의 시간으로 디코딩을 수행하는 것일 수 있다. 메모리 사용량, 정확도와 같은 기타 효율 파라미터가 또한 분석될 수 있다. 처리 블록(302)에서, 디코더는 복수(예를 들어, 두 개 이상)의 디코더 엔진을 포함할 수 있고, 분석의 결과로서, 인코딩된 데이터가 적절한 디코더 엔진에 전달될 수 있다. 제1 디코더 엔진 타입은 메인 프로파일 또는 그보다 높은 프로파일의 비트스트림을 디코딩할 수 있는 디코더 엔진일 수 있다. 전형적으로, GPU와 같은 디코더 엔진은 이 그룹, 또는 디코딩용으로 설계된 특화된 하드웨어(일반적으로 하드웨어 가속이라 불림)로 디코딩의 일부를 수행하는 다른 프로세서에 속한다. 제2 디코더 엔진 타입은 베이스라인, 메인 및 그보다 높은 프로파일을 디코딩할 수 있다. 소프트웨어를 이용하여 디코딩하는 중앙 처리 장치(CPU)는 예시적인 제2 디코더 엔진 타입이다. 일반적으로, CPU는 디코딩 이외의 목적으로 이용될 수 있는 범용 하드웨어를 가지며, 결과적으로 비효율적일 수 있다. 처리 블록(304)에서, 선택된 디코더 엔진은 인코딩된 데이터를 디코딩한다. 디코딩된 데이터는 예를 들어 사용자 디스플레이 상에 디코딩된 비디오를 디스플레이하기 위해 사용될 수 있다.
도 4는 MPEG-4의 특정 예를 이용하여 처리 블록(300)에서 확장하는 방법의 흐름도이다. 처리 블록(400)에서, 인코딩된 비트스트림 메타데이터에서의 SPS 및 PPS와 같은 파라미터 세트가 분석될 수 있다. 처리 블록(402) 및 결정 블록(404)에서, SPS 및 PPS 메타데이터를 분석함으로써 ASO 또는 FMO가 사용되는지 여부가 결정될 수 있다. 사용되는 경우, 베이스라인, 메인 및 그보다 높은 프로파일을 디코딩할 수 있는 디코더 엔진, 예를 들어 소프트웨어를 이용하여 비트스트림을 디코딩하는 CPU가 선택된다(처리 블록(406)). 그렇지 않은 경우, 처리 블록(408)에서, 메인 프로파일 및 그보다 높은 프로파일을 디코딩할 수 있는 디코더 엔진, 예를 들어 GPU 또는 다른 하드웨어 가속 디코딩 엔진이 선택된다.
도 5는 이용될 수 있는 다수의 디코더 엔진(502, 504)을 포함하는 디코더(500)의 상위 레벨 다이아그램을 나타낸다. 디코더 엔진(502)은 메인 프로파일 및 보다 높은 인코딩된 데이터를 디코딩할 수 있고, 일반적으로 베이스라인 프로파일을 디코딩할 수 없거나 또는 이를 디코딩하는데에는 비효율적이다. 따라서, 디코더 엔진(502)은 데이터가 예컨대 ASO 및 FMO 같은 특정 유형의 알고리즘을 사용하여 인코딩되어 있을 때 사용하기에는 덜 바람직하다. 디코더 엔진(504)은 베이스라인, 메인 및 그보다 높은 프로파일을 디코딩할 수 있는 디코더 엔진이다. 따라서, 디코더 엔진(504)은 디코더 엔진(502)보다 광범위한 인코딩된 데이터 유형을 디코딩할 수 있다. 506에서, 디코더 결정 로직은 본 명세서에 기재된 알고리즘을 이용하여 비트스트림에서의 메타데이터에 기초하여 수신된 인코딩된 데이터를 디코딩할 수 있는 디코더 엔진(502, 504)을 선택한다.
따라서, MPEG-4 파일 포맷의 메타데이터가 이용가능한 경우, 플래그가 인코딩된 비트스트림에서 부정확하게 설정되는 경우에도, 하드웨어 가속된 비디오 디코딩은 클립에 대해 여전히 수행될 수 있다. 예를 들어, 클립에 MPEG-4 파일 포맷의 단일 'stsd' 샘플 엔트리가 있는 경우(이는 흔히 있는 일임), SPS 및 PPS 모두는 비트스트림의 디코딩의 맨 앞 부분에서 전송될 수 있다. H.264 디코더가 SPS를 파싱하고 비트스트림이 메인 프로파일과 호환되지 않는 베이스라인 프로파일에 있음을 발견한 이후에도, H.264/AVC 디코더는 모든 PPS를 파싱하고 비트스트림이 정말로 FMO 및 ASO를 사용하는지 여부를 확인할 수 있다. 사용하지 않는 경우(이는 흔히 있는 일임), 비트스트림은 여전히 비디오 디코딩을 위해 하드웨어 가속기에 전송될 수 있다. 기본적으로, MPEG-4 파일 포맷의 추가적인 메타데이터 정보를 이용하여, 그것은 한 단계 더 나아가고, 모든 PPS를 조사한 후 주어진 클립에 대해 하드웨어 가속 비디오 디코딩을 사용해야 할지 여부를 결정할 수 있다.
IV
. 예시적인 비디오 디코더 엔진
도 6은 본 명세서에 기재된 실시예들 중 임의의 실시예를 사용하여 디코딩을 수행할 수 있는 일반적인 비디오 디코더 엔진(600)의 개략도이다. 또 다른 디코더 엔진이 사용될 수 있고, 도 6은 단지 예시일뿐이다. 디코더 엔진(600)은 (예를 들어, 압축된 비디오 비트스트림을 통해) 비디오 프레임들의 압축된 시퀀스에 대한 정보(695)를 수신하고 재구성된 블록(605)을 포함하는 출력을 생성한다. 비디오 디코더의 특정 실시예들은 일반화된 디코더(600)의 변형 또는 보완된 버전을 사용할 수 있다.
디코더 엔진(600)은 인터 예측(inter-prediction) 및/또는 인트라 예측(intra-prediction)을 이용하여 코딩된 블록을 압축 해제한다. 표시를 위해, 도 6은 (인트라 블록 경로로 도시된) 디코더 엔진(600)을 통한 인트라 코딩된 블록에 대한 경로 및 (인터 블록 경로로 도시된) 인터 코딩된 블록에 대한 경로를 도시한다. 디코더 엔진(600)의 컴포넌트들의 다수는 인터 코딩된 블록과 인트라 코딩된 블록 모두를 압축 해제하는데 사용된다. 컴포넌트들에 의해 수행되는 정확한 동작은 압축 해제되는 정보의 유형에 따라 달라질 수 있다.
버퍼(690)는 압축된 비디오 시퀀스에 대한 정보(695)를 수신하고, 수신된 정보가 엔트로피 디코더(680)에 이용가능하게 한다. 버퍼(690)는 일반적으로 시간이 지남에 따라 꽤 일정한 레이트로 정보를 수신한다. 버퍼(690)는 또한 재생 버퍼 및 다른 버퍼를 포함할 수 있다. 대안적으로, 버퍼(690)는 가변 레이트로 정보를 수신한다.
엔트로피 디코더(680)는 일반적으로 인코더에서 수행된 엔트로피 인코딩의 역을 적용하여 엔트로피 코딩된 양자화된 데이터 및 엔트로피 코딩된 부가 정보(예를 들어, 움직임 정보(615), 플래그, 모드, 신택스 요소 및 다른 부가 정보)를 엔트로피 디코딩한다. 예를 들어, 엔트로피 디코더(680)는 디코딩(예를 들어, 신택스 요소의 디코딩)을 수행하기 위해 아래에서 설명되는 개시된 카운터 기반 가변 길이 코딩 기법 중 임의의 기법을 사용할 수 있다. 역 양자화기(670)는 엔트로피 디코딩된 데이터를 역 양자화한다. 역 주파수 변환기(660)는 역 주파수 변환과 같은 역 변환을 적용하여 양자화된 주파수 도메인 데이터를 공간 도메인 비디오 정보로 변환한다.
재구성되는 블록(605)이 전방 예측(forward-prediction)을 사용하여 인터 코딩된 블록인 경우에, 움직임 보상기(630)가 움직임 정보(615)(예를 들어, 예측된 움직임 정보)를 기준 프레임(625)에 적용하여 재구성되는 블록(605)의 예측(635)을 형성한다. 버퍼(저장소)(620)는 기준 프레임으로 사용하기 위해 이전의 재구성된 프레임을 저장한다. 대안적으로, 움직임 보상기는 다른 유형의 움직임 보상을 적용한다. 움직임 보상기에 의한 예측이 완벽한 것은 드물기 때문에, 디코더(600)는 예측 레지듀얼(prediction residual)(645)을 예측(635)에 추가되도록 재구성하여 블록(605)을 재구성한다.
디코더가 후속 움직임 보상을 위해 재구성된 프레임을 필요로 하는 경우, 저장소(620)는 후속 프레임의 예측에 이용하기 위한 재구성된 프레임을 버퍼링한다.프레임을 예측하는 몇몇 구현들에서, 프레임은 (도시되어 있는 바와 같이) 블록 단위로 예측되고 프레임의 각각의 블록이 예측될 수 있다. 예측되는 블록들 중 하나 이상은 동일한 프레임의 블록들 또는 다른 프레임의 하나 이상의 블록들로부터의 움직임 정보를 이용하여 예측될 수 있다.
재구성되는 블록(605)이 인트라 코딩된 블록인 경우, 인트라 예측기(655)는 재구성되는 블록(610)의 예측(665)을 형성한다. 버퍼(저장소)(620)는 이전에 재구성된 블록 및 프레임을 저장한다. 움직임 보상기에 의한 예측이 완벽한 것은 드물기 때문에, 디코더(600)는 예측 레지듀얼(prediction residual)(675)을 예측(665)에 추가되도록 재구성하여 블록(610)을 재구성한다.
특정 디코더 엔진이 설명되어 있지만, 디코더 엔진의 타입은 설계 선택의 문제이며, 특정 애플리케이션에 의존하기 때문에, 다양한 디코더 구조가 사용될 수 있다.
V. 메타데이터를 사용하여 최적화된
비트스트림
파서
도 7은 메타데이터를 사용하여 디코더 최적화를 구현하기 위한 방법의 흐름도이다. 설명을 위해, 도 7의 흐름도는 H.264/AVC 디코더에 관하여 설명된다. 그러나, 일반적으로 상기 방법은 다른 타입의 디코더에도 적용될 수 있다. 일반적으로, H.264/AVC 디코더는 각 네트워크 액세스 계층 유닛(NALU)의 시작 부분에서의 시작 코드 0x00 00 001와 함께 비트스트림을 받아들인다. MPEG-4 파일 포맷은 각 네트워크 액세스 계층 유닛의 길이를 나타내고, H.264/AVC 디코더에 샘플 당 하나의 화상을 전송한다. NALU 길이 정보가 이용가능한 경우, 하드웨어 가속 디코딩은 완벽하게 시작 코드 스캐닝을 건너뛰고 하드웨어에 NALU를 하나씩 직접 보낼 수 있다.
처리 블록(700)에서, 디코더 결정 로직(도 5에서 506으로 도시됨))은 NALU과 연관된 길이 및 위치 정보를 검색한다. 이러한 정보는 메타데이터이고 입력 비트스트림과 연관된 파일 컨테이너에서 찾을 수 있다. 처리 블록(702)에서, 길이 및 위치 정보는 전술한 바와 같이, 선택된 적절한 디코더 엔진으로 전달된다. 대안적으로, 상기 방법은 단일 디코드 엔진을 갖는 디코더에 적용될 수 있다. 처리 블록(704)에서, 디코더 엔진은 시작 코드에 대한 스캐닝없이 비트스트림을 디코딩하기 위해 길이 및 위치 메타데이터 정보를 사용할 수 있다. 위치 정보는 비트스트림에서 데이터가 시작하는 위치를 설명한다. 길이 정보는 시작과 관련하여 어디에서 데이터가 종료되는지를 제공한다. CPU 사이클의 상당한 절감은 위치 및 길이 정보가 이미 제공되어 있기 때문에 시작 코드를 스캔할 필요성을 제거함으로써 달성된다.
도 8은 에뮬레이션 방지 바이트가 분석되는 추가 방법의 실시예를 나타낸다. H.264/AVC 비디오의 소프트웨어 디코딩은 효율적인 엔트로피 디코딩을 달성하기 위해 압축된 비트스트림에서 에뮬레이션 방지 바이트 0x03를 제거할 수 있다. 즉, 소프트웨어 CABAC/CAVLC 디코딩이 엔트로피 디코딩 과정에서 에뮬레이션 방지 바이트를 검출하지 않는 것이 더 효율적일 수 있다. 소프트웨어 디코딩에서 비트스트림 파서는 시작 코드 파싱 및 에뮬레이션 방지 바이트 제거를 거의 동시에 수행하도록 설계된다. 한편, 하드웨어 가속기 디코딩은 때때로 압축된 비트스트림으로부터 에뮬레이션 방지 0x03을 제거할 필요가 없다. 다른 비트스트림 파서는 오직 시작 코드만을 스캐닝하고, 비트스트림 파서가 슬라이스 헤더, 시퀀스 파라미터 세트(SPS), 픽처 파라미터 세트(PPS) 및 보충 강화 정보(SEI)를 디코딩하는 동안 에뮬레이션 방지 바이트 0x03를 동작 중에(동적으로) 검출 및 제거하도록 설계될 수 있다.
결정 블록(800)에서, 길이 및 위치 정보가 메타데이터에서 이용가능한지 여부가 판정된다. 이용가능한 경우, 처리 블록(802)에서, 시작 코드의 길이 및 위치가 적절한 디코더에 전달되어 이 디코더는 시작 코드 스캐닝을 피할 수 있다. 이용가능하지 않은 경우, 길이 및 위치 정보가 결정될 수 있도록 시작 코드가 검색된다(처리 블록 804). 검색은 비트스트림을 스캔하고 각 바이트를 시작 코드에 비교하여 위치를 발견으로써 수행될 수 있다. 길이는 종료 코드를 검색하고 시작 코드와 종료 코드 간의 바이트를 카운트함으로써 결정될 수 있다. 결정 블록(806)에서, 소프트웨어 디코더 엔진(예를 들면, CPU)가 사용되는지 또는 에뮬레이션 방지 바이트의 제거에 의한 최적화를 필요로 하는 디코더 엔진이 사용되는지가 결정된다. 이러한 디코더 엔진 중 어느 하나가 사용되는 경우, 처리 블록(810)에서, 에뮬레이션 방지 바이트가 비트스트림으로부터 제거된다. 처리 블록(812)에서, 에뮬레이션 방지 바이트가 제거된 인코딩된 데이터는 베이스라인, 메인 및 그보다 높은 프로파일을 디코딩할 수 있는 디코더 엔진에 전송된다. 길이 및 위치 정보는 또한 디코더로 전송될 수 있다. 결정 블록(806)이 부정의 답변을 받으면, 처리 블록(816)에서, 인코딩된 데이터는 길이 및 위치 정보와 함께 에뮬레이션 방지 바이트를 갖는 메인 프로파일 및 그보다 높은 프로파일을 디코딩할 수 있는 디코더에 전송된다. NALU 길이 정보가 이용가능한 경우, 하드웨어 가속 디코딩은 완벽하게 시작 코드 스캐닝을 건너뛰고 하드웨어로 NALU를 직접 하나씩 보낼 수 있다. 최적화된 비트스트림 파서는 특히 로우 엔드 머신에서 하드웨어 가속 비디오 디코딩에서, CPU 사용량에 상당한 이득을 얻을 수 있다.
개시된 임의의 방법은 컴퓨터 판독가능 저장 매체(예를 들어, 하나 이상의 광 매체 디스크, 휘발성 메모리 컴포넌트(예컨대, DRAM 또는 SRAM), 또는 비휘발성 메모리 컴포넌트(예컨대, 하드 드라이브)와 같은 비 일시적 컴퓨터 판독가능 매체)에 저장되고 컴퓨터(예를 들어, 컴퓨팅 하드웨어를 포함하는 스마트 폰 또는 다른 모바일 장치를 포함하는 임의의 상업적으로 입수가능한 컴퓨터)에서 실행되는 컴퓨터 실행가능 명령어들로서 구현될 수 있다. 개시된 기법을 구현하기 위한 임의의 컴퓨터 실행가능 명령어들 및 개시되어 있는 실시예의 구현 동안 생성 및 사용되는 임의의 데이터는 하나 이상의 컴퓨터판독 가능 매체(예를 들면, 비 일시적 컴퓨터 판독가능 매체)에 저장될 수 있다. 컴퓨터 실행가능 명령어들은 예를 들어, 전용 소프트웨어 애플리케이션 또는 웹 브라우저 또는 다른 소프트웨어 애플리케이션(예컨대 원격 컴퓨팅 애플리케이션)을 통해 액세스되거나 또는 다운로드되는 소프트웨어 애플리케이션의 일부일 수 있다. 이러한 소프트웨어는 예를 들어 단일 로컬 컴퓨터(예를 들어, 임의의 적절한 상업적으로 입수가능한 컴퓨터)에서 실행될 수 있거나, 또는 하나 이상의 네트워크 컴퓨터를 사용하여 (예를 들면, 인터넷, 광역 네트워크, 로컬 영역 네트워크, 클라이언트 서버 네트워크(예컨대, 클라우드 컴퓨팅 네트워크) 또는 그와 같은 다른 네트워크를 통해) 네트워크 환경에서 실행될 수 있다.
명확화를 위해, 소프트웨어 기반 구현의 특정 선택된 측면이 설명되어 있다. 당업계에 잘 알려져 있는 다른 세부 사항은 생략된다. 예를 들면, 개시된 기술은 임의의 특정 컴퓨터 언어 또는 프로그램에 한정되지 않는다. 예를 들면, 개시된 기술은 C++, 자바, 펄, 자바스크립트, 어도비 플래시, 또는 임의의 다른 적절한 프로그래밍 언어로 작성된 소프트웨어에 의해 구현될 수 있다. 유사하게, 개시된 기술은 임의의 특정 컴퓨터 또는 하드웨어의 타입에 제한되지 않는다. 적합한 컴퓨터 및 하드웨어의 특정 세부 사항은 잘 알려져 있고, 본 명세서에서 상세히 설명될 필요가 없다.
또한, 임의의 소프트웨어 기반의 실시예(예를 들어, 컴퓨터가 개시된 임의의 방법을 수행하게 하는 컴퓨터 실행가능 명령어를 포함함)는 적절한 통신 수단을 통해 업로드, 다운로드 또는 원격 액세스될 수 있다. 이러한 적합한 통신 수단은 예를 들어, 인터넷, 월드 와이드 웹, 인트라넷, 소프트웨어 애플리케이션, 케이블(광케이블 포함), 자기 통신, 전자기 통신(RF, 마이크로파 및 적외선 통신을 포함), 전자 통신, 또는 이와 같은 다른 통신 수단을 포함한다.
개시된 발명의 원리들이 적용될 수 있는 많은 가능한 실시예들의 관점에서,예시된 실시예들은 단지 본 발명의 바람직한 예시하고 발명의 범위를 제한하는 것으로 간주되어서는 안된다. 그보다, 본 발명의 범위는 다음의 청구 범위에 의해 정의된다. 따라서, 이들 청구 범위의 범주 내에 속하는 모든 것을 본 발명으로 청구한다.
Claims (20)
- 비디오 디코더를 구현하는 컴퓨팅 장치에서의 방법으로서,
파일 컨테이너를 갖는 인코딩된 비디오 시퀀스를 수신하는 단계와,
상기 비디오 디코더가, 베이스라인 프로파일(baseline profile)을 디코딩할 수 있는 디코더 엔진이 필요하다는 것을 표시하는 플래그를 상기 비디오 시퀀스에서 검출하는 단계와,
상기 비디오 디코더를 구현하는 상기 컴퓨팅 장치를 통해, 상기 파일 컨테이너의 상기 인코딩된 비디오 시퀀스와 연관된 메타데이터를 분석하는 단계와,
베이스라인 프로파일을 디코딩할 수 있는 상기 디코더 엔진이 불필요하다는 것을 표시하는 상기 메타데이터에 기초하여, 상기 플래그가 부정확하게 설정되었는지 판정하는 단계와,
상기 메타데이터를 사용하여 상기 비디오 디코더에서의 디코더 최적화 결정을 수행하는 단계를 포함하되,
상기 디코더 최적화 결정은 상기 메타데이터에 따라 베이스라인 프로파일을 디코딩할 수 없는 디코더를 선택하고, 상기 플래그가 설정됨을 무시하는 것을 포함하는
방법.
- 제1항에 있어서,
상기 디코더 최적화 결정은, 상기 메타데이터에 기초하여, 복수의 디코더 엔진 중에서 디코딩을 수행할 디코더 엔진을 선택하는 것을 포함하는
방법.
- 제2항에 있어서,
상기 복수의 디코더 엔진은 메인 프로파일 및 그보다 높은 프로파일의 비디오 시퀀스를 디코딩할 수 있는 디코더 엔진 및 베이스라인, 메인 및 그보다 높은 프로파일을 디코딩할 수 있는 디코더 엔진 중 하나를 포함하는 목록으로부터 선택되는
방법.
- 제3항에 있어서,
상기 메인 프로파일 및 그보다 높은 프로파일의 비디오 시퀀스를 디코딩할 수 있는 디코더 엔진은 하드웨어 가속화를 위한 그래픽 처리 장치를 포함하고, 상기 베이스라인, 메인 및 그보다 높은 프로파일을 디코딩할 수 있는 디코더 엔진은 중앙 처리 장치를 포함하는
방법.
- 제1항에 있어서,
인코딩에서 사용된 알고리즘의 유형에 대한 메타데이터를 검색하는 단계와,
상기 알고리즘의 유형에 기초하여 디코딩 엔진을 선택하는 단계를 더 포함하는
방법.
- 제5항에 있어서,
상기 알고리즘의 유형은 ASO(arbitray slice ordering) 및 FMO(flexible macroblock ordering)를 포함하는
방법.
- 제5항에 있어서,
상기 메타데이터를 검색하는 단계는 상기 인코딩된 비디오 시퀀스에서 하나 이상의 파라미터 세트를 파싱하는 단계를 포함하는
방법.
- 제1항에 있어서,
상기 인코딩된 비디오 시퀀스와 연관된 길이 정보 및 위치 정보를 검색하는 단계와,
상기 길이 및 위치 정보를 상기 메타데이터로서 디코더 엔진으로 전달하는 단계를 더 포함하는
방법.
- 제1항에 있어서,
상기 메타데이터를 분석하는 단계는
적어도 하나의 시작 코드 및 종료 코드에 대한 상기 인코딩된 비디오 시퀀스를 스캔하는 단계와,
상기 적어도 하나의 시작 코드 및 종료 코드에 기초하여 길이 정보를 계산하는 단계를 더 포함하는
방법.
- 제9항에 있어서,
상기 인코딩된 비디오 시퀀스를 상기 디코더 엔진에 전달하기 전에 상기 메타데이터로부터 에뮬레이션 방지 바이트(emulation prevention byte)를 제거하는 단계를 더 포함하는
방법.
- 제1항에 있어서,
상기 디코더 최적화 결정은 상기 메타데이터에 기초하여 시작 코드 스캐닝을 억제하는 것을 포함하는
방법.
- 방법을 수행하도록 컴퓨팅 장치를 프로그래밍한 컴퓨터 실행가능 명령어들이 인코딩되어 있는 컴퓨터 판독가능 비휘발성 저장 장치로서,
상기 방법은
디코더에서 인코딩된 비디오 시퀀스를 수신하는 단계 - 상기 인코딩된 비디오 시퀀스는 베이스라인 프로파일을 디코딩할 수 있는 디코더 엔진의 사용을 표시하는 플래그를 포함함 - 와,
상기 인코딩된 비디오 시퀀스의 메타데이터를 분석하여 적어도 두 개의 디코더 엔진 중 어느 것이 더 효율적일 것인지를 판정하는 단계 - 상기 메타데이터는 베이스라인 프로파일을 디코딩할 수 없는 디코더 엔진의 사용을 표시하며, 표시는 상기 플래그가 표시하는 것과 반대임 - 와,
상기 메타데이터에 기초하여 상기 인코딩된 비디오 시퀀스를 상기 판정된 디코더 엔진으로 전송하는 단계 - 상기 판정된 디코더 엔진은 베이스라인 프로파일을 디코딩할 수 없음 - 를 포함하는
컴퓨터 판독가능 비휘발성 저장 장치.
- 제12항에 있어서,
상기 복수의 디코더 엔진은 메인 프로파일 및 그보다 높은 프로파일의 비디오 시퀀스를 디코딩할 수 있는 디코더 엔진 및 베이스라인, 메인 및 그보다 높은 프로파일을 디코딩할 수 있는 디코더 엔진 중 하나인
컴퓨터 판독가능 비휘발성 저장 장치.
- 제13항에 있어서,
상기 메인 프로파일 및 그보다 높은 프로파일의 비디오 시퀀스를 디코딩할 수 있는 디코더 엔진은 하드웨어 가속화를 위한 그래픽 처리 장치를 포함하고, 상기 베이스라인, 메인 및 그보다 높은 프로파일을 디코딩할 수 있는 디코더 엔진은 중앙 처리 장치를 포함하는
컴퓨터 판독가능 비휘발성 저장 장치.
- 제12항에 있어서,
상기 방법은
인코딩에서 사용된 알고리즘의 유형에 대한 메타데이터를 검색하는 단계와,
상기 알고리즘의 유형에 기초하여 디코딩 엔진을 선택하는 단계를 더 포함하는
컴퓨터 판독가능 비휘발성 저장 장치.
- 제15항에 있어서,
상기 알고리즘의 유형은 ASO 및 FMO를 포함하고, 상기 ASO 및 FMO 중 어느 하나가 사용되면 상기 베이스라인, 메인 및 그보다 높은 프로파일을 디코딩할 수 있는 디코더 엔진을 선택하는
컴퓨터 판독가능 비휘발성 저장 장치.
- 제15항에 있어서,
상기 메타데이터를 검색하는 단계는 상기 인코딩된 비디오 시퀀스에서 하나 이상의 파라미터 세트를 파싱하는 단계를 포함하는
컴퓨터 판독가능 비휘발성 저장 장치. - 비디오 디코더를 구현하는 컴퓨팅 장치로서,
상기 컴퓨팅 장치는 하나 이상의 처리 장치를 포함하고 방법을 수행하도록 구성되며,
상기 방법은
비디오 시퀀스에 대한 비트스트림의 인코딩된 데이터를 수신하는 단계 - 상기 비트스트림은 메타데이터에 포함된 하나 이상의 파라미터 세트를 포함하고, 상기 하나 이상의 파라미터 세트는 베이스라인 프로파일을 갖는 비디오 시퀀스를 디코딩할 수 있는 디코더 엔진이 필요함을 표시하는 정보를 포함함 - 와,
ASO 또는 FMO가 사용되는지 판정하기 위해 상기 하나 이상의 파라미터 세트를 파싱하는 단계와,
ASO 또는 FMO가 사용되는 경우, 베이스라인, 메인 및 그보다 높은 프로파일의 비디오 시퀀스를 디코딩할 수 있는 제1 디코더 엔진으로 상기 인코딩된 데이터를 전달하는 단계와,
상기 ASO 또는 FMO가 사용되지 않는 경우, 베이스라인 프로파일을 갖는 비디오 시퀀스를 디코딩할 수 있는 디코더 엔진이 필요함을 표시하는 정보를 포함하는 상기 하나 이상의 파라미터 세트에 관계 없이 메인 프로파일 및 그보다 높은 프로파일을 디코딩할 수 있지만 베이스라인 프로파일은 디코딩할 수 없는, 상기 제1 디코더 엔진과 다른 제2 디코더 엔진으로 상기 인코딩된 데이터를 전달하는 단계를 포함하는
컴퓨팅 장치.
- 제18항에 있어서,
상기 방법은 상기 메타데이터에 기초하여 시작 코드 스캐닝을 억제하는 단계를 더 포함하는
컴퓨팅 장치.
- 제18항에 있어서,
상기 방법은 상기 메타데이터로부터 에뮬레이션 방지 바이트를 제거하는 단계를 더 포함하는
컴퓨팅 장치.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/399,769 US9241167B2 (en) | 2012-02-17 | 2012-02-17 | Metadata assisted video decoding |
US13/399,769 | 2012-02-17 | ||
PCT/US2013/026004 WO2013123100A1 (en) | 2012-02-17 | 2013-02-13 | Metadata assisted video decoding |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140123957A KR20140123957A (ko) | 2014-10-23 |
KR102006044B1 true KR102006044B1 (ko) | 2019-07-31 |
Family
ID=48982247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147022904A KR102006044B1 (ko) | 2012-02-17 | 2013-02-13 | 메타데이터를 이용한 비디오 디코딩 기법 |
Country Status (6)
Country | Link |
---|---|
US (2) | US9241167B2 (ko) |
EP (1) | EP2815574B1 (ko) |
JP (2) | JP2015513386A (ko) |
KR (1) | KR102006044B1 (ko) |
CN (1) | CN104106264B (ko) |
WO (1) | WO2013123100A1 (ko) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104769936B (zh) * | 2013-03-28 | 2019-04-16 | 爱迪德技术有限公司 | 处理数字内容 |
US9911460B2 (en) | 2014-03-24 | 2018-03-06 | Microsoft Technology Licensing, Llc | Fast and smart video trimming at frame accuracy on generic platform |
US9516147B2 (en) | 2014-10-30 | 2016-12-06 | Microsoft Technology Licensing, Llc | Single pass/single copy network abstraction layer unit parser |
US9854261B2 (en) * | 2015-01-06 | 2017-12-26 | Microsoft Technology Licensing, Llc. | Detecting markers in an encoded video signal |
US9979983B2 (en) | 2015-03-16 | 2018-05-22 | Microsoft Technology Licensing, Llc | Application- or context-guided video decoding performance enhancements |
US10129566B2 (en) * | 2015-03-16 | 2018-11-13 | Microsoft Technology Licensing, Llc | Standard-guided video decoding performance enhancements |
US10271069B2 (en) | 2016-08-31 | 2019-04-23 | Microsoft Technology Licensing, Llc | Selective use of start code emulation prevention |
US10362241B2 (en) | 2016-12-30 | 2019-07-23 | Microsoft Technology Licensing, Llc | Video stream delimiter for combined frame |
US10931930B2 (en) * | 2018-07-06 | 2021-02-23 | Mediatek Singapore Pte. Ltd. | Methods and apparatus for immersive media content overlays |
US11165847B2 (en) * | 2018-10-23 | 2021-11-02 | Tencent America LLC | Techniques for multiple conformance points in media coding |
US11265580B2 (en) * | 2019-03-22 | 2022-03-01 | Tencent America LLC | Supplemental enhancement information messages for neural network based video post processing |
US11356706B2 (en) | 2020-01-08 | 2022-06-07 | Qualcomm Incorporated | Storage and delivery of video data for video coding |
US11831920B2 (en) * | 2021-01-08 | 2023-11-28 | Tencent America LLC | Method and apparatus for video coding |
CN115866254A (zh) * | 2022-11-24 | 2023-03-28 | 亮风台(上海)信息科技有限公司 | 一种传输视频帧及摄像参数信息的方法与设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008252818A (ja) | 2007-03-30 | 2008-10-16 | Toshiba Corp | 情報処理装置 |
US20100027974A1 (en) | 2008-07-31 | 2010-02-04 | Level 3 Communications, Inc. | Self Configuring Media Player Control |
JP2010098725A (ja) | 2008-10-14 | 2010-04-30 | Nvidia Corp | デコーディングパイプラインにおける第2デブロッカー |
Family Cites Families (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6311204B1 (en) * | 1996-10-11 | 2001-10-30 | C-Cube Semiconductor Ii Inc. | Processing system with register-based process sharing |
US7082166B2 (en) * | 2000-04-17 | 2006-07-25 | Pts Corporation | Decoder for decoding segment-based encoding of video data using segmentation performed at a decoder |
WO2003021969A2 (en) * | 2001-08-30 | 2003-03-13 | Faroudja Cognition Systems, Inc. | Multi-layer video compression system with synthetic high frequencies |
US7613727B2 (en) * | 2002-02-25 | 2009-11-03 | Sont Corporation | Method and apparatus for supporting advanced coding formats in media files |
US7924921B2 (en) * | 2003-09-07 | 2011-04-12 | Microsoft Corporation | Signaling coding and display options in entry point headers |
US7609762B2 (en) * | 2003-09-07 | 2009-10-27 | Microsoft Corporation | Signaling for entry point frames with predicted first field |
US20050259729A1 (en) * | 2004-05-21 | 2005-11-24 | Shijun Sun | Video coding with quality scalability |
US20060013305A1 (en) * | 2004-07-14 | 2006-01-19 | Sharp Laboratories Of America, Inc. | Temporal scalable coding using AVC coding tools |
JPWO2006013854A1 (ja) * | 2004-08-05 | 2008-05-01 | 松下電器産業株式会社 | 画像復号化装置および画像符号化装置 |
US20060126726A1 (en) | 2004-12-10 | 2006-06-15 | Lin Teng C | Digital signal processing structure for decoding multiple video standards |
US20060215754A1 (en) | 2005-03-24 | 2006-09-28 | Intel Corporation | Method and apparatus for performing video decoding in a multi-thread environment |
EP3503475B1 (en) * | 2005-04-15 | 2020-10-14 | InterDigital CE Patent Holdings | Remote management method of a device and corresponding device |
WO2006124885A2 (en) * | 2005-05-12 | 2006-11-23 | Kylintv, Inc. | Codec for iptv |
US20070022215A1 (en) * | 2005-07-19 | 2007-01-25 | Singer David W | Method and apparatus for media data transmission |
US8879857B2 (en) * | 2005-09-27 | 2014-11-04 | Qualcomm Incorporated | Redundant data encoding methods and device |
US8436889B2 (en) * | 2005-12-22 | 2013-05-07 | Vidyo, Inc. | System and method for videoconferencing using scalable video coding and compositing scalable video conferencing servers |
US8731051B1 (en) | 2006-02-10 | 2014-05-20 | Nvidia Corporation | Forward and inverse quantization of data for video compression |
US8619865B2 (en) * | 2006-02-16 | 2013-12-31 | Vidyo, Inc. | System and method for thinning of scalable video coding bit-streams |
CN101115195B (zh) | 2006-07-24 | 2010-08-18 | 同济大学 | 视频码流的宏块级耦合的解码和环路滤波方法和装置 |
US8331772B1 (en) * | 2006-09-07 | 2012-12-11 | Opentv, Inc. | Systems and methods to position and play content |
JP4320673B2 (ja) * | 2006-12-08 | 2009-08-26 | ソニー株式会社 | 情報処理装置および方法、並びにプログラム |
US9124650B2 (en) * | 2006-12-13 | 2015-09-01 | Quickplay Media Inc. | Digital rights management in a mobile environment |
US20130166580A1 (en) * | 2006-12-13 | 2013-06-27 | Quickplay Media Inc. | Media Processor |
US8428125B2 (en) * | 2006-12-22 | 2013-04-23 | Qualcomm Incorporated | Techniques for content adaptive video frame slicing and non-uniform access unit coding |
US8411734B2 (en) * | 2007-02-06 | 2013-04-02 | Microsoft Corporation | Scalable multi-thread video decoding |
US8265144B2 (en) | 2007-06-30 | 2012-09-11 | Microsoft Corporation | Innovations in video decoder implementations |
US8254455B2 (en) | 2007-06-30 | 2012-08-28 | Microsoft Corporation | Computing collocated macroblock information for direct mode macroblocks |
US9648325B2 (en) | 2007-06-30 | 2017-05-09 | Microsoft Technology Licensing, Llc | Video decoding implementations for a graphics processing unit |
US8208745B2 (en) * | 2008-01-31 | 2012-06-26 | Analog Devices, Inc. | Spatial domain video enhancement/scaling system and method |
TWI361009B (en) * | 2008-03-06 | 2012-03-21 | Realtek Semiconductor Corp | Method and apparatus for processing audio/vedio bi |
US9848209B2 (en) * | 2008-04-02 | 2017-12-19 | Microsoft Technology Licensing, Llc | Adaptive error detection for MPEG-2 error concealment |
US8503991B2 (en) * | 2008-04-03 | 2013-08-06 | The Nielsen Company (Us), Llc | Methods and apparatus to monitor mobile devices |
US20090290645A1 (en) * | 2008-05-21 | 2009-11-26 | Broadcast International, Inc. | System and Method for Using Coded Data From a Video Source to Compress a Media Signal |
PT104083A (pt) | 2008-06-02 | 2009-12-02 | Inst Politecnico De Leiria | Método para transcodificar imagens de vídeo h.264/avc em mpeg-2 |
KR101444907B1 (ko) | 2008-06-24 | 2014-10-01 | (주)휴맥스 홀딩스 | Avc 적응적 동영상 복호화 장치 및 방법 |
US8964828B2 (en) | 2008-08-19 | 2015-02-24 | Qualcomm Incorporated | Power and computational load management techniques in video processing |
US8320448B2 (en) | 2008-11-28 | 2012-11-27 | Microsoft Corporation | Encoder with multiple re-entry and exit points |
TW201032597A (en) | 2009-01-28 | 2010-09-01 | Nokia Corp | Method and apparatus for video coding and decoding |
US8189666B2 (en) | 2009-02-02 | 2012-05-29 | Microsoft Corporation | Local picture identifier and computation of co-located information |
US20100226444A1 (en) * | 2009-03-09 | 2010-09-09 | Telephoto Technologies Inc. | System and method for facilitating video quality of live broadcast information over a shared packet based network |
KR101632297B1 (ko) | 2009-03-31 | 2016-07-01 | 삼성전자주식회사 | 디지털 데이터 인터페이스를 통한 압축 데이터 전송 방법 및 장치, 수신 방법 및 장치 |
CN101577110B (zh) | 2009-05-31 | 2012-04-25 | 腾讯科技(深圳)有限公司 | 视频播放方法及视频播放器 |
DK2453661T3 (en) * | 2009-07-10 | 2017-10-30 | Panasonic Ip Man Co Ltd | PLAYBACK, RECORDING PROCEDURE AND SYSTEM, INCLUDING A RECORDING MEDIUM AND PLAYBACK |
US8737825B2 (en) | 2009-09-10 | 2014-05-27 | Apple Inc. | Video format for digital video recorder |
FR2951041A1 (fr) * | 2009-10-05 | 2011-04-08 | Korea Electronics Telecomm | Systeme de fourniture d'un service de diffusion a angles multiples |
WO2011080925A1 (ja) * | 2009-12-28 | 2011-07-07 | パナソニック株式会社 | 画像符号化装置および方法 |
JP5996439B2 (ja) * | 2010-02-19 | 2016-09-21 | テレフオンアクチーボラゲット エルエム エリクソン(パブル) | Httpストリーミングにおける表現切り替えのための方法及び装置 |
US9100689B2 (en) * | 2010-03-24 | 2015-08-04 | Google Technology Holdings LLC | Moving content between set top box and end devices in home |
US20110261885A1 (en) * | 2010-04-27 | 2011-10-27 | De Rivaz Peter Francis Chevalley | Method and system for bandwidth reduction through integration of motion estimation and macroblock encoding |
US8576184B2 (en) * | 2010-08-19 | 2013-11-05 | Nokia Corporation | Method and apparatus for browsing content files |
US9411795B2 (en) * | 2010-09-13 | 2016-08-09 | Hewlett-Packard Development Company, L.P. | Content placement |
JP2012085211A (ja) * | 2010-10-14 | 2012-04-26 | Sony Corp | 画像処理装置および方法、並びにプログラム |
CN101986708A (zh) | 2010-10-29 | 2011-03-16 | 北京中星微电子有限公司 | 一种视频解码方法及解码器 |
US9071848B2 (en) * | 2011-03-15 | 2015-06-30 | Broadcom Corporation | Sub-band video coding architecture for packet based transmission |
GB2492540B (en) * | 2011-06-30 | 2015-10-14 | Samsung Electronics Co Ltd | Receiving a broadcast stream |
US9338465B2 (en) * | 2011-06-30 | 2016-05-10 | Sharp Kabushiki Kaisha | Context initialization based on decoder picture buffer |
KR101649207B1 (ko) * | 2011-08-31 | 2016-08-19 | 노키아 테크놀로지스 오와이 | 멀티뷰 비디오 코딩 및 디코딩을 위한 방법, 장치 및 컴퓨터 프로그램 |
US8891630B2 (en) * | 2011-10-24 | 2014-11-18 | Blackberry Limited | Significance map encoding and decoding using partition set based context assignment |
US9942580B2 (en) * | 2011-11-18 | 2018-04-10 | At&T Intellecutal Property I, L.P. | System and method for automatically selecting encoding/decoding for streaming media |
US20130148947A1 (en) * | 2011-12-13 | 2013-06-13 | Ati Technologies Ulc | Video player with multiple grpahics processors |
US9819949B2 (en) * | 2011-12-16 | 2017-11-14 | Microsoft Technology Licensing, Llc | Hardware-accelerated decoding of scalable video bitstreams |
US9924162B2 (en) * | 2012-01-19 | 2018-03-20 | Sun Patent Trust | Image decoding method including switching a decoding order to either a fixed processing order or an adaptive processing order |
US9729870B2 (en) * | 2012-01-31 | 2017-08-08 | Apple Inc. | Video coding efficiency with camera metadata |
US11240515B2 (en) * | 2012-09-10 | 2022-02-01 | Apple Inc. | Video display preference filtering |
-
2012
- 2012-02-17 US US13/399,769 patent/US9241167B2/en active Active
-
2013
- 2013-02-13 CN CN201380009666.7A patent/CN104106264B/zh active Active
- 2013-02-13 KR KR1020147022904A patent/KR102006044B1/ko active IP Right Grant
- 2013-02-13 WO PCT/US2013/026004 patent/WO2013123100A1/en active Application Filing
- 2013-02-13 EP EP13749713.7A patent/EP2815574B1/en active Active
- 2013-02-13 JP JP2014557749A patent/JP2015513386A/ja active Pending
-
2015
- 2015-12-22 US US14/979,277 patent/US9807409B2/en active Active
-
2017
- 2017-10-13 JP JP2017199533A patent/JP6423061B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008252818A (ja) | 2007-03-30 | 2008-10-16 | Toshiba Corp | 情報処理装置 |
US20100027974A1 (en) | 2008-07-31 | 2010-02-04 | Level 3 Communications, Inc. | Self Configuring Media Player Control |
JP2010098725A (ja) | 2008-10-14 | 2010-04-30 | Nvidia Corp | デコーディングパイプラインにおける第2デブロッカー |
Non-Patent Citations (1)
Title |
---|
"H.264 : Advanced video coding for generic audiovisual services",ITU-T |
Also Published As
Publication number | Publication date |
---|---|
WO2013123100A1 (en) | 2013-08-22 |
JP2018026871A (ja) | 2018-02-15 |
US9241167B2 (en) | 2016-01-19 |
EP2815574A4 (en) | 2015-10-07 |
US9807409B2 (en) | 2017-10-31 |
US20130215978A1 (en) | 2013-08-22 |
EP2815574B1 (en) | 2019-07-24 |
JP6423061B2 (ja) | 2018-11-14 |
US20160219288A1 (en) | 2016-07-28 |
KR20140123957A (ko) | 2014-10-23 |
JP2015513386A (ja) | 2015-05-11 |
EP2815574A1 (en) | 2014-12-24 |
CN104106264A (zh) | 2014-10-15 |
CN104106264B (zh) | 2017-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102006044B1 (ko) | 메타데이터를 이용한 비디오 디코딩 기법 | |
US12010338B2 (en) | Representative motion information for temporal motion prediction in video encoding and decoding | |
TWI603609B (zh) | 簡化視訊隨機存取之限制及單元類型 | |
JP6382395B2 (ja) | ビデオコーディングにおけるビデオタイミングについてのクロックティック導出情報のシグナリング | |
US9271013B2 (en) | Merge mode for motion information prediction | |
US20180329978A1 (en) | Category-prefixed data batching of coded media data in multiple categories | |
CN105284117A (zh) | 根据运动信息压缩方案通过层间运动信息预测对图像进行编码或解码的方法和设备 | |
US8121189B2 (en) | Video decoding using created reference pictures | |
JP2007524309A (ja) | ビデオ復号の方法 | |
CN111935500B (zh) | 视频解码方法、装置及电子设备 | |
KR20240152847A (ko) | 비디오 처리 방법, 장치 및 매체 | |
JP2012156575A (ja) | 符号化装置、復号装置及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |