KR20170065568A - 샘플 메타데이터와 미디어 샘플들의 결합 - Google Patents

샘플 메타데이터와 미디어 샘플들의 결합 Download PDF

Info

Publication number
KR20170065568A
KR20170065568A KR1020177010925A KR20177010925A KR20170065568A KR 20170065568 A KR20170065568 A KR 20170065568A KR 1020177010925 A KR1020177010925 A KR 1020177010925A KR 20177010925 A KR20177010925 A KR 20177010925A KR 20170065568 A KR20170065568 A KR 20170065568A
Authority
KR
South Korea
Prior art keywords
sample
media
metadata
current
current media
Prior art date
Application number
KR1020177010925A
Other languages
English (en)
Inventor
지야드 에이 이브라힘
용준 우
샴 사드화니
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20170065568A publication Critical patent/KR20170065568A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/19Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier
    • G11B27/28Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording
    • G11B27/30Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording on the same track as the main recording
    • G11B27/3027Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording on the same track as the main recording used signal is digitally coded
    • G11B27/3036Time code signal
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • H04N19/197Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters including determination of the initial value of an encoding parameter

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Television Signal Processing For Recording (AREA)

Abstract

샘플 메타데이터 처리 분야의 혁신은 미디어 재생 툴이 샘플 메타데이터와 미디어 샘플들 간의 동기화 손실을 피하는데 도움이 될 수 있다. 예를 들어, 미디어 재생 툴은 현재 미디어 샘플에 대한 인코딩된 데이터 및 샘플 메타데이터를 식별하고, 그 후 샘플 메타데이터를 현재 미디어 샘플과 결합한다. 미디어 재생 툴은 현재 미디어 샘플에 대한 인코딩된 데이터 및 샘플 메타데이터를 미디어 디코더에 제공하며, 미디어 디코더는 디코딩의 적어도 하나의 단계 동안에, 심지어 현재 미디어 샘플이 드롭, 지연, 분할, 또는 반복되는 경우에도, 샘플 메타데이터의 적어도 하나의 요소와 현재 미디어 샘플 간의 결합을 유지한다. 예를 들어, 미디어 재생 툴은 현재 미디어 샘플을 드롭시킬지 여부를 결정할 수 있고, 만일 현재 미디어 샘플이 드롭되면, 현재 미디어 샘플과 결합된 샘플 메타데이터도 또한 드롭시킬 수 있다.

Description

샘플 메타데이터와 미디어 샘플들의 결합 {COUPLING SAMPLE METADATA WITH MEDIA SAMPLES}
엔지니어는 디지털 미디어 데이터의 비트 레이트를 줄이기 위해 압축(소스 코딩 또는 소스 인코딩이라고도 함)을 사용한다. 압축은 미디어 데이터를 더 낮은 비트 레이트 형식으로 변환함으로써 미디어 데이터를 저장하고 전송하는 비용을 줄인다. 압축 풀기(decompression, 디코딩이라고도 함)는 압축된 형식으로부터 원본(original) 미디어 데이터의 버전을 재구성한다. "코덱"은 인코더/디코더 시스템이다. 지난 20년 동안 다양한 비디오 코덱 표준 및 포맷이 채택되었으며 다양한 오디오 코덱 표준 및 포맷이 채택되었다. 코덱 표준 또는 포맷은 통상적으로 인코딩된 미디어 비트 스트림(때로 미디어 기본 비트 스트림(media elementary bit stream)이라고도 함)의 신택스(syntax)에 대한 옵션을 정의하며, 특정 기능이 인코딩 및 디코딩에 사용되는 경우 미디어 기본 비트 스트림의 파라미터들을 자세히 설명한다. 많은 경우, 코덱 표준 또는 포맷은 또한, 미디어 디코더가 디코딩시 정확한 결과를 얻기 위해 수행해야 하는 디코딩 작업에 대한 세부 사항도 제공한다.
미디어 컨테이너 포맷(media container format) 또는 스트리밍 미디어 포맷은 저장, 전송 등을 위해 인코딩된 미디어 데이터를 어떻게 조직화하는지 특정한다. 미디어 컨테이너 포맷 또는 스트리밍 미디어 포맷은 디코딩 또는 프리젠테이션(presentation)의 타이밍을 조정하는데 사용되는 타임스탬프, 디지털 저작권 관리 데이터, 재생 제어 데이터 또는 미디어 데이터를 어떻게 디코딩 또는 렌더링(rendering)하는지 나타내는 다른 데이터와 같이, 인코딩된 미디어 데이터에 관한 메타데이터에 대한 필드를 포함할 수 있다. ITU-T H.222.0 | ISO/IEC 13818-1에 정의된 MPEG-2 TS/PS, Advanced Systems Format("ASF")(이전의 Advanced Streaming Format), ISO/IEC 14496-12(ISO 기본 미디어 파일 포맷)에 정의된 MPEG-4("MP4"), 14496-14(MP4 파일 포맷) 및 14496-15(AVC 파일 포맷), Common File Format("CFF") 및 Matroska Video Format("MKV")를 포함하여, 다양한 미디어 컨테이너 포맷이 미디어 데이터용으로 발표되었다. MPEG-DASH, HTTP Live Streaming("HLS"), 스무드 스트리밍(Smooth Streaming) 및 Real-time Transport Protocol("RTP")의 변형(variation)(예를 들어 IETF RFC 3550 또는 다른 IETF RTP 스펙에 정의됨)를 포함하여, 다양한 스트리밍 미디어 포맷이 미디어 데이터용으로 또한 발표되었는데, 이는 (MP4 또는 MPEG-2 TS와 같은) 컨테이너 포맷 파일 내 또는 하나 이상의 미디어 기본 비트 스트림 내의 인코딩된 미디어 데이터를 포함할 수 있다. 일반적으로, 미디어 소스는 미디어 파일 또는 미디어 스트림을 파싱(parsing)하고, 디코딩을 위해 미디어 기본 비트 스트림 내의 인코딩된 미디어 데이터를 미디어 디코더에 제공하는 컴포넌트이다.
매일 수백만 개의 미디어 파일과 미디어 스트림이 여러 가지 활동을 통해 사용자들에 의해 소비된다. 경우에 따라 미디어 파일 또는 미디어 스트림이 전송 중 무작위 비트 플립(bit flip) 또는 패킷 손실로 인해 손상된다. 또는 미디어 파일 또는 미디어 스트림이 부적절한 레코딩 또는 다른 이유에 기인한 스토리지 장애로 인해 손상되었을 수 있다. 미디어 파일 또는 미디어 스트림 내의 미디어 데이터가 재생될 때, 미디어 디코더는 디코딩될 수 없는 미디어 샘플(예를 들어, 비디오 프레임)을 드롭시킬 수 있다. 그러면, 미디어 데이터와 관련된 샘플 메타데이터는 디코딩되고있는 미디어 샘플에 대한 동기화를 잃을 수 있다. 이러한 메타데이터-미디어 동기화의 손실은 디코딩 또는 프리젠테이션에 문제를 일으킬 수 있는데, 이 문제는 오디오/비디오 동기화 손실 또는 복잡한 재정렬(reordering) 규칙에 따라 달라질 수 있는 미디어 샘플의 재정렬 오류와 같은 것이다. 또한, 미디어 파일 및 미디어 스트림은 다양한 소스에 의해 생성될 수 있다. 샘플 메타데이터를 미디어 샘플들과 일치시키는 것은 어려울 수 있다. 샘플 메타데이터를 적절한 미디어 샘플에 매핑하는데 있어서의 실수로 인하여 미디어 디코딩, 미디어 프리젠테이션 또는 미디어 편집에 문제가 발생할 수 있다.
요약하면 샘플 메타데이터 처리 영역의 혁신이 본 명세서에서 설명된다. 예를 들어, 미디어 재생 툴은 샘플 메타데이터를 대응 미디어 샘플과 결합시키고, 다양한 단계(stage)의 디코딩 및 출력 처리 동안에, 심지어 미디어 샘플이 드롭, 지연, 분할(split) 또는 반복되는 경우에도, 샘플 메타데이터의 적어도 일부 요소와 대응 미디어 샘플 간의 결합을 유지한다.
본 명세서에 설명된 혁신의 일 양태에 따르면, 미디어 재생 툴은 미디어 기본 비트 스트림에서 현재 미디어 샘플에 대한 인코딩된 데이터를 식별한다. 미디어 재생 툴은 또한 미디어 기본 비트 스트림 외부에서 현재 미디어 샘플에 대한 샘플 메타데이터를 식별한다. 미디어 재생 툴은 샘플 메타데이터를 현재 미디어 샘플과 결합한다. 미디어 재생 툴은 현재 미디어 샘플에 대한 샘플 메타데이터 및 인코딩된 데이터를 미디어 디코더에 동시에 제공한다.
본 명세서에 설명된 혁신의 다른 양태에 따르면, 미디어 재생 툴은 현재 미디어 샘플에 대한 인코딩된 데이터를 식별하고, 현재 미디어 샘플에 대한 샘플 메타데이터를 식별하고, 샘플 메타데이터를 현재 미디어 샘플과 결합시킨다. 미디어 재생 툴은 현재 미디어 샘플에 대해 수행된 적어도 하나의 디코딩 단계 동안 샘플 메타데이터의 적어도 하나의 샘플 메타데이터 요소와 현재 미디어 샘플과의 결합을 유지한다. 예를 들어, 미디어 재생 툴은 현재 미디어 샘플을 드롭시킬지 여부를 결정할 수 있으며, 만일 현재 미디어 샘플이 드롭되면 현재 미디어 샘플과 결합된 샘플 메타데이터도 드롭시킬 수 있다. 다른 예로서, 미디어 재생 툴은 현재 미디어 샘플을 지연시킬지 여부를 결정할 수 있고, 만일 현재 미디어 샘플이 지연되면 현재 미디어 샘플과 결합된 샘플 메타데이터도 또한 지연시킬 수 있다.
본 명세서에 설명된 혁신의 다른 양태에 따르면, 미디어 재생 툴은 미디어 소스 및 미디어 디코더를 포함한다. 미디어 소스는 데이터 단위로 분할된 입력 데이터를 수신하도록 구성된다. 미디어 컨테이너 포맷 또는 스트리밍 미디어 포맷에 따라 조직화되는 입력 데이터는 미디어 샘플들의 적어도 일부에 대해, 미디어 기본 비트 스트림 외부의 샘플 메타데이터뿐만 아니라 미디어 샘플에 대한 미디어 기본 비트 스트림 내의 인코딩된 데이터를 포함한다. 미디어 소스는 정해진 샘플 메타데이터를 데이터 유닛들 중 정해진 데이터 유닛과 연관시키고, 상기 정해진 샘플 메타데이터를 상기 정해진 데이터 유닛에서 시작하는 인코딩된 데이터를 갖는 미디어 샘플들 중 정해진 미디어 샘플과 결합시킨다. 그런 다음, 미디어 소스는 상기 정해진 샘플 메타데이터 및 상기 정해진 미디어 샘플에 대한 인코딩된 데이터를 미디어 디코더에 제공한다.
본 명세서에서 설명된 혁신은 방법의 일부로서, 그 방법을 수행하도록 구성된 컴퓨팅 시스템의 일부로서, 또는 그 방법을 수행하도록 컴퓨팅 시스템을 프로그램되게 하는 컴퓨터 실행 가능 명령어들을 저장하는 유형의(tangible) 컴퓨터 판독 가능 매체의 일부로서 구현될 수 있다. 다양한 혁신 기술을 조합하여 사용하거나 별도로 사용할 수 있다. 이 요약은 아래 상세한 설명에서 더 자세히 설명되는 단순화된 형태의 개념의 선택을 소개하기 위해 제공된다. 이 요약은 청구된 주제의 주요 특징 또는 필수 특징을 식별하기 위한 것이 아니며 청구된 주제의 범위를 제한하는 데 사용되려는 의도도 아니다. 본 발명의 상기 및 다른 목적, 특징 및 이점은 첨부된 도면을 참조하여 진행되는 이하의 상세한 설명으로부터 더욱 명백해질 것이다.
도 1은 설명된 일부 실시 예들이 구현될 수 있는 예시적인 컴퓨팅 시스템의 다이어그램이다.
도 2a 및 도 2b는 설명된 일부 실시 예들이 구현될 수 있는 예시적인 네트워크 환경의 도면이다.
도 3은 설명된 일부 실시 예들이 구현될 수 있는 예시적인 미디어 재생 툴의 다이어그램이다.
도 4a는 미디어 샘플에 대한 인코딩된 데이터 및 미디어 샘플과 결합된 샘플 메타데이터의 요소들을 저장하는 구조를, 입력으로서 받아들이는, 미디어 디코더에 의해 노출된 기능의 풋 프린트를 도시하는 의사 코드(pseudocode) 리스팅이다.
도 4b는 샘플 메타데이터의 요소들을 저장하는 예시적인 구조를 도시하는 의사 코드 리스팅이다.
도 5는 설명된 일부 실시 예들이 구현될 수 있는 예시적인 비디오 디코더 시스템의 다이어그램이다.
도 6 내지 도 8은 적절한 미디어 샘플들과 결합된 샘플 메타데이터를 처리하기 위한 일반화된 기술을 도시하는 흐름도이다.
상세한 설명은 샘플 메타데이터 처리 영역의 혁신을 나타낸다. 예를 들어,일부 혁신에 따르면, 미디어 재생 툴은 샘플 메타데이터를 적절한 미디어 샘플과 결합하고, 다양한 단계의 디코딩 및 출력 처리 동안에, 심지어 미디어 샘플이 드롭, 지연, 분할 또는 반복되는 경우에도, 샘플 메타데이터의 적어도 일부 샘플 메타데이터 요소들과 대응 미디어 샘플들 간의 결합을 유지한다. 이러한 방식으로 미디어 재생 툴은 미디어 디코딩, 미디어 프리젠테이션 또는 미디어 편집 중 문제를 일으킬 수 있는, 샘플 메타데이터와 미디어 샘플들 간의 동기화 손실을 피할 수 있다.
본 명세서에서 설명된 동작은 비디오 재생 툴에 의해 또는 비디오 재생 툴과 함께 수행되는 것으로 곳곳에서 설명되었지만, 많은 경우에 동작은 다른 유형의 미디어 재생 툴(예를 들어, 오디오 재생 툴)에 의해 또는 그와 함께 수행될 수 있다. 보다 일반적으로는, 본 명세서에서 설명된 예에 대한 다양한 대안이 가능하다. 예를 들어, 본 명세서에 설명된 방법들 중 일부는 설명된 방법 동작(method act)의 순서를 변경하거나, 특정한 방법 동작을 분할, 반복 또는 생략하는 등에 의해 변경될 수 있다. 개시된 기술의 다양한 양태는 조합하여 또는 개별적으로 사용될 수 있다. 상이한 실시 예들은 설명된 혁신 중 하나 이상을 사용한다. 본 명세서에서 설명된 혁신들 중 일부는 배경 기술에서 언급된 문제들 중 하나 이상을 해결한다. 일반적으로 정해진 기술/툴로는 이러한 모든 문제가 해결되지 않는다.
I. 예시적인 컴퓨팅 시스템.
도 1은 설명된 혁신들 중 몇몇이 구현될 수 있는 적합한 컴퓨팅 시스템(100)의 일반화된 예를 도시한다. 혁신이 다양한 범용 컴퓨팅 시스템 또는 특수 목적 컴퓨팅 시스템에서 구현될 수 있기 때문에, 컴퓨팅 시스템(100)은 사용 또는 기능의 범위에 대한 임의의 제한을 제안하는 것으로 의도되지 않는다.
도 1을 참조하면, 컴퓨팅 시스템(100)은 하나 이상의 처리 장치(110, 115) 및 메모리(120, 125)를 포함한다. 처리 장치들(110, 115)은 컴퓨터 실행 가능 명령어들을 실행한다. 처리 장치는 중앙 처리 장치(central processing unit, "CPU"), 주문형 집적 회로(application-specific integrated circuit, "ASIC") 내의 프로세서 또는 임의의 다른 유형의 프로세서일 수 있다. 다중 처리 시스템에서, 복수의 처리 장치는 처리 능력을 증가시키기 위해 컴퓨터 실행 가능 명령어들을 실행한다. 예를 들어, 도 1은 중앙 처리 장치(110) 및 그래픽 처리 장치 또는 공동 처리 장치(co-processing unit, 115)를 도시한다. 유형의 메모리(120, 125)는 처리 장치(들)이 액세스할 수 있는, 휘발성 메모리(예를 들어, 레지스터, 캐시, RAM), 비휘발성 메모리(예를 들어, ROM, EEPROM, 플래시 메모리 등), 또는 이들의 조합일 수 있다. 메모리(120, 125)는 처리 장치(들)에 의한 실행에 적합한 컴퓨터 실행 가능 명령어들의 형태로 샘플 메타데이터를 미디어 샘플들과 연결하기 위한 하나 이상의 혁신을 구현하는 소프트웨어(180)를 저장한다.
컴퓨팅 시스템에는 추가 특징이 있을 수 있다. 예를 들어, 컴퓨팅 시스템(100)은 저장 장치(140), 하나 이상의 입력 장치(150), 하나 이상의 출력 장치(160) 및 하나 이상의 통신 연결부(170)를 포함한다. 버스, 제어기 또는 네트워크와 같은 상호 연결 메카니즘(도시되지 않음)은 컴퓨팅 시스템(100)의 컴포넌트들을 상호 연결시킨다. 통상적으로, 운영 체제 소프트웨어(도시되지 않음)는 컴퓨팅 시스템(100)에서 실행되는 다른 소프트웨어에 대한 동작 환경을 제공하고, 컴퓨팅 시스템(100)의 컴포넌트들의 활동을 조정한다.
유형의 저장 장치(140)는 제거 가능하거나 제거 불가능할 수 있으며, 자기 디스크, 자기 테이프 또는 카세트, CD-ROM, DVD 또는 컴퓨팅 시스템(100) 내에서 액세스될 수 있고 정보를 저장하는데 사용될 수 있는 임의의 다른 매체를 포함한다(100). 저장 장치(140)는 샘플 메타데이터를 미디어 샘플들과 결합시키기 위한 하나 이상의 혁신을 구현하는 소프트웨어(180)에 대한 명령어들을 저장한다.
입력 장치(들)(150)는 키보드, 마우스, 펜 또는 트랙볼과 같은 터치 입력 장치, 음성 입력 장치, 스캐닝 장치 또는 컴퓨팅 시스템(100)에 입력을 제공하는 다른 장치일 수 있다. 비디오의 경우, 입력 장치(들)(150)는 카메라, 비디오 카드, TV 튜너 카드, 스크린 캡처 모듈, 또는 아날로그 또는 디지털 형태의 비디오 입력을 수용하는 유사한 장치 또는 컴퓨팅 시스템(100)으로 비디오 입력을 읽어들이는 CD-ROM 또는 CD-RW일 수 있다. 출력 장치(들)(160)는 디스플레이, 프린터, 스피커, CD-기록기(CD-writer), 또는 컴퓨팅 시스템(100)으로부터 출력을 제공하는 다른 장치일 수 있다.
통신 연결부(들)(170)는 통신 매체를 통한 다른 컴퓨팅 엔티티로의 통신을 가능하게 한다. 통신 매체는 컴퓨터 실행 가능 명령어들, 오디오 또는 비디오 입력 또는 출력, 또는 변조된 데이터 신호의 다른 데이터와 같은 정보를 전달한다. 변조된 데이터 신호는 그 특성 중 하나 이상이 신호 내에 정보를 인코딩하는 방식으로 설정되거나 변경되는 신호이다. 예로서, 통신 매체는 전기, 광학, RF 또는 다른 캐리어를 사용할 수 있지만, 이에 한정되는 것은 아니다.
혁신은 컴퓨터 판독 가능 매체의 일반적인 맥락에서 기술될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨팅 환경 내에서 액세스될 수 있는 유형의(tangible) 이용가능한 임의의 매체이다. 예를 들어, 컴퓨팅 시스템(100)과 함께, 컴퓨터 판독 가능 매체는 메모리(120, 125), 저장 장치(140) 및 상기 중 임의의 것의 조합을 포함하나, 이에 한정되는 것은 아니다.
혁신은 프로그램 모듈들에 포함된 것과 같이, 타겟 실제 또는 가상 프로세서상의 컴퓨팅 시스템에서 실행되는 컴퓨터 실행 가능 명령들어의 일반적인 맥락에서 설명될 수 있다. 일반적으로 프로그램 모듈들은 특정 작업을 수행하거나 특정한 추상 데이터 유형을 구현하는 루틴, 프로그램, 라이브러리, 오브젝트, 클래스, 컴포넌트, 데이터 구조 등을 포함한다. 프로그램 모듈들의 기능은 다양한 실시 예에서 요구되는 프로그램 모듈들 간에 결합되거나 분할될 수 있다. 프로그램 모듈들에 대한 컴퓨터 실행 가능 명령어들은 로컬 또는 분산 컴퓨팅 시스템 내에서 실행될 수 있다.
"시스템" 및 "장치"라는 용어는 본 명세서에서 서로 바꿔 사용할 수 있다. 문맥 상 달리 명시하지 않는 한, 어떠한 용어도 컴퓨팅 시스템 또는 컴퓨팅 장치의 유형에 대한 제한을 의미하지 않는다. 일반적으로, 컴퓨팅 시스템 또는 컴퓨팅 장치는 로컬 또는 분산형일 수 있으며 본 명세서에서 설명된 기능을 구현하는 소프트웨어와 함께 특수 목적 하드웨어 및/또는 범용 하드웨어의 임의의 조합을 포함할 수 있다.
개시된 방법들은 또한 개시된 방법들 중 임의의 방법을 수행하도록 구성된 특수 컴퓨팅 하드웨어를 사용하여 구현될 수 있다. 예를 들어, 개시된 방법들은 개시된 혁신들 중 임의의 혁신을 구현하도록 특별히 설계되거나 구성된 집적 회로(예를 들어, ASIC 디지털 신호 프로세서(digital signal processor, "DSP")와 같은 ASIC, 그래픽 처리 장치(graphics processing unit, "GPU"), 또는 필드 프로그래머블 게이트 어레이(field programmable gate array, "FPGA")와 같은 프로그래머블 논리 소자(programmable logic device, "PLD"))에 의해 구현될 수 있다.
프리젠테이션의 목적을 위해, 상세한 설명은 컴퓨팅 시스템의 컴퓨터 동작들을 설명하기 위하여, "결정하다(determine)" 및 "사용하다(use)"와 같은 용어들을 사용한다. 이 용어들은 컴퓨터에 의해 수행되는 동작들에 대한 상위 레벨의 추상적 개념이며, 인간에 의해 수행되는 행위와 혼동되어서는 안 된다. 이 용어들에 대응하는 실제 컴퓨터 동작들은 구현에 따라 달라진다.
II. 예시적인 네트워크 환경.
도 2a 및 2b는 미디어 인코더들(220) 및 미디어 디코더들(270)을 포함하는 예시적인 네트워크 환경(201, 202)을 도시한다. 인코더들(220) 및 디코더들(270)은 적절한 통신 프로토콜을 사용하여 네트워크(250)를 통해 연결된다. 네트워크(250)는 인터넷 또는 다른 컴퓨터 네트워크를 포함할 수 있다.
도 2a에 도시된 네트워크 환경(201)에서, 각 실시간 통신(real-time communication, "RTC") 툴(210)은 양방향 통신을 위한 하나 이상의 미디어 인코더(220) 및 하나 이상의 미디어 디코더(270)뿐만 아니라 미디어 싱크(media sink) 및 미디어 소스(media source) 컴포넌트들(도시되지 않음)도 포함한다. 비디오의 경우, 정해진 인코더(220)가 H.265/HEVC 표준, SMPTE 421M 표준, ISO/IEC 14496-10 표준(H.264/AVC라고도 함), 다른 표준, (VP6, VP8 또는 VP9와 같은) VPx 포맷 또는 다른 독점 포맷의 변형(variation) 또는 확장(extension)에 부합하는 출력을 생성할 수 있으며, 대응하는 디코더(270)가 인코더(220)로부터 인코딩된 데이터를 받아들인다. 오디오의 경우, 정해진 인코더(220)가 (코어 AAC 또는 HE AAC와 같은) AAC 표준, (AMR-WB와 같은) AMR 표준, 오푸스(Opus) 표준, 실크(Silk) 표준, 다른 표준, Windows Media Audio("WMA") 포맷 또는 다른 독점적인 포맷의 변형 또는 확장에 부합하는 출력을 생성할 수 있으며, 대응하는 디코더(270)가 인코더(220)로부터 인코딩된 데이터를 받아들인다. 미디어 싱크(media sink)는 미디어 컨테이너 포맷 또는 스트리밍 미디어 포맷에 따라 발신(outgoing) 미디어 샘플들에 대한 인코딩된 데이터를 처리하고, 미디어 소스는 미디어 컨테이너 포맷 또는 스트리밍 미디어 포맷에 따라 인입(incoming) 미디어 샘플들에 대한 인코딩된 데이터를 처리한다. 양방향 통신은 비디어 컨퍼런스, 비디오 전화 통화 또는 다른 2자(two-party)간 통신 또는 다자간 통신 시나리오의 일부일 수 있다. 인코딩된 미디어 데이터는 RTP(예를 들어 오디오, H.265/ HEVC 비디오, H.264/AVC 비디오, VP8 비디오의 경우)의 변형, RTVideo 또는 미디어 스트리밍을 위한 다른 포맷 또는 표준에 따라 포맷될 수 있다. 도 2a의 네트워크 환경(201)이 2개의 실시간 통신 툴(210)을 포함하지만, 네트워크 환경(201)은 다자간 통신에 참여하는 3개 이상의 실시간 통신 툴(210)을 대신 포함할 수 있다.
실시간 통신 툴(210)은 인코더(220)에 의한 인코딩을 관리하고 또한 디코더(270)에 의한 디코딩을 관리한다. 도 3은 미디어 디코딩 및 재생을 위해 실시간 통신 툴(210)에 포함될 수 있는 예시적인 미디어 재생 툴의 모듈을 도시한다. 대안 적으로, 실시간 통신 툴(210)은 다른 미디어 재생 툴을 사용한다. 도 4는 미디어 재생 툴의 일부로서 실시간 통신 툴(210)에 포함될 수 있는 예시적인 비디오 디코더 시스템(400)을 도시한다. 대안적으로, 실시간 통신 툴(210)은 다른 비디오 디코더 시스템을 사용한다.
도 2b에 도시된 네트워크 환경(202)에서, 인코딩 툴(212)은 다중 재생 툴(214)에 전달하기 위하여 미디어를 인코딩하는 하나 이상의 인코더(220)를 포함하고, 재생 툴 각각은 하나 이상의 디코더(270)를 포함한다. 인코더(들)(220)는 도 2a를 참조하여 기술된 코덱 표준들 및 포맷들 중 임의의 것에 따르는 출력을 생성할 수 있고 대응하는 디코더(270)가 인코더(220)로부터 인코딩된 데이터를 받아들인다. 인코딩 툴(212)에서, 미디어 싱크(도시되지 않음)는 미디어 컨테이너 포맷 또는 스트리밍 미디어 포맷에 따라 발신 미디어 샘플들에 대한 인코딩된 데이터를 처리한다. 재생 툴(214)에서, 미디어 소스(도시되지 않음)는 미디어 컨테이너 포맷 또는 스트리밍 미디어 포맷에 따라 인입 미디어 샘플들에 대한 인코딩된 데이터를 처리한다. 단방향 통신은 비디오 감시 시스템, 웹 카메라 모니터링 시스템, 원격 데스크톱 회의 프리젠테이션 또는 미디어가 인코딩되어 한 위치에서 하나 이상의 다른 위치로 전송되는 다른 시나리오에 제공될 수 있다. 인코딩된 미디어 데이터는 미디어 컨테이너 포맷(예 : MPEG-2 TS/PS, ASF, MP4, CFF 또는 MKV)에 따라 포맷될 수 있다. 또는 인코딩된 미디어 데이터는 스트리밍 미디어 포맷(예 : MPEG-DASH, HLS 또는 스무드 스트리밍(Smooth Streaming))에 따라 포맷될 수 있다. 도 2b의 네트워크 환경(202)이 2 개의 재생 툴(214)을 포함하고 있지만, 네트워크 환경(202)은 더 많거나 더 적은 재생 툴(214)을 포함할 수 있다.
인코딩 툴(212)은 하나 이상의 재생 툴(214)과의 접속을 관리하기 위한 서버 측 제어기 로직을 포함할 수 있고, 재생 툴(214)은 인코딩 툴(212)과의 접속을 관리하기 위한 클라이언트측 제어기 로직을 포함할 수 있다. 일반적으로, 재생 툴(214)은 인코딩 툴(212)과 통신하여 재생 툴(214)이 수신하기 위한 하나 이상의 미디어 데이터 스트림을 결정한다. 재생 툴(214)은 스트림(들)을 수신하고, 적절한 기간 동안 수신된 인코딩된 데이터를 버퍼링하고, 디코딩 및 재생을 시작한다. 도 3은 미디어 디코딩 및 재생을 위해 재생 툴(214)에 포함될 수 있는 예시적인 미디어 재생 툴의 모듈들을 도시한다. 대안적으로, 재생 툴(214)은 다른 미디어 재생 툴을 사용한다. 도 4는 미디어 재생 툴의 일부로서 재생 툴(214)에 포함될 수 있는 예시적인 비디오 디코더 시스템(400)을 도시한다. 대안적으로, 재생 툴(214)은 다른 비디오 디코더 시스템을 사용한다.
III. 샘플 메타데이터를 미디어 샘플들과 연결.
이 섹션에서는 미디어 재생 툴이 샘플 메타데이터를 대응 미디어 샘플들과 연결하는, 샘플 메타데이터 처리 영역의 혁신에 대해 설명한다. 미디어 샘플에 대한 샘플 메타데이터는 예를 들어, 프리젠테이션 타임스탬프(presentation timestamp, "PTS"), 디코딩 타임스탬프(decoding timestamp, "DTS"), 프레임 프리젠테이션 지속 시간 값, 최대 디코딩가능 공간 해상도, 프리 롤(pre-roll) 값, 불연속 플래그 값, 회전 데이터, 3차원 디스플레이 데이터, 또는 미디어 샘플의 디코딩 또는 프리젠테이션 동안 사용될 다른 메타데이터를 포함할 수 있다. 미디어 샘플은 비디오 프레임, 오디오 프레임 또는 다른 유형의 미디어 샘플일 수 있다. 적어도 일부 메타데이터 요소들의 경우 미디어 재생 툴은 다양한 단계의 디코딩 및 출력 처리 동안에 메타데이터-샘플 연관을 유지할 수 있다. 구현에 따라 샘플 메타데이터 처리는 미디어 재생 툴에 다양한 이점을 제공할 수 있다.
예를 들어, 미디어 재생 툴은 다양한 미디어 컨테이너 포맷 또는 스트리밍 미디어 포맷 중 임의의 포맷으로 된 입력 데이터로부터 파싱된 샘플 메타데이터를 미디어 샘플에 할당(assign)할 수 있다. 샘플 메타데이터가 제공되는 상이한 포맷들 및 상이한 방법들을 고려함으로써 미디어 재생 툴은 샘플 메타데이터를 정확하고 효율적인 방법으로 적절한 미디어 샘플들에 할당할 수 있다.
다른 예로서, 미디어 재생 툴은 디코딩 프로세스 전반에 걸쳐 미디어 샘플에 대하여 샘플 메타데이터와 인코딩된 데이터를 밀접하게 결합시킬 수 있으며, 재정렬 및 기타 출력 처리의 목적을 위해 샘플 메타데이터를 미디어 샘플의 재구성된 버전과 계속해서 결합할 수 있다. 미디어 샘플이 디코딩 중에(예를 들어 데이터 손실로 인해) 드롭되거나 디코딩 중에 (예를 들어 네트워크 정체로 인해) 지연될 경우 샘플 메타데이터가 비슷하게 드롭되거나 지연될 수 있으므로, 이는 메타데이터 처리를 위한 동기화의 손실을 피하는데 도움이 될 수 있고, 이에 의하여 샘플 메타데이터 처리를 보다 강력하게 만들 수 있다.
다른 예로서, 미디어 재생 툴은 미디어 컨퍼런스, 미디어 전화 호출, 다른 실시간 커뮤니케이션, 비디오 감시 시스템, 웹 카메라 모니터링 시스템, 원격 데스크탑 회의 프리젠테이션, 또는 다른 미디어 스트리밍을 포함하는 다양한 미디어 소비 시나리오에서 샘플 메타데이터 처리를 지원할 수 있다. 입력 데이터는 다양한 미디어 컨테이너 포맷(예를 들어, MP4 또는 MPEG-2 TS) 또는 스트리밍 미디어 포맷(예를 들어, MPEG-DASH, HLS 또는 RTP)에 따라 포맷될 수 있으며 손실된 네트워크 연결을 통해 수신될 수 있다.
다른 예로서, 미디어 재생 툴은 누락된 샘플 메타데이터 요소를 식별하고 대체할 수 있다. 예를 들어, 미디어 재생 툴은 누락된 샘플 메타데이터 요소의 대체를 결정하기 위해 (타임스탬프와 같은) 샘플 메타데이터 요소들 사이를 보간할 수 있다. 이런 식으로 일부 경우들에서 메타데이터 요소들을 제공하기 위하여 미디어 재생 툴이 메타데이터 요소의 손실, 메타데이터 요소의 손상, 또는 미디어 싱크 또는 레코딩 시스템의 장애로부터 복구될 수 있다.
다른 예로서, 미디어 재생 툴은 미디어 샘플에 결합된 샘플 메타데이터를 사용하여 DRM(digital rights management) 규칙 또는 다른 형태의 콘텐츠 보호에 대한 준수를 검증할 수 있다. 예를 들어, 미디어 샘플에 대한 인코딩된 데이터를 디코딩하기 전에, 미디어 재생 툴은 미디어 샘플에 대해 표시된 최대 디코딩가능 공간 해상도가 DRM 규칙 하에서 최대 디코딩가능 공간 해상도보다 작다는 것을 검사한다.
A. 예시적인 미디어 재생 툴.
도 3은 설명된 일부 실시 예들이 구현될 수 있는 예시적인 미디어 재생 툴(300)의 블록도이다. 미디어 재생 툴(300)은 미디어 소스(310), 미디어 디코더(320) 및 미디어 포스트 프로세서(330)를 포함한다. 미디어 재생 툴(300)은 실시간 통신을 위한 낮은 대기 시간의 디코딩 모드 및 파일 또는 스트림으로부터의 미디어 재생을 위한 더 높은 대기 시간의 디코딩 모드와 같은 다수의 재생 모드 중 임의의 모드로 동작할 수 있는 범용 미디어 재생 툴일 수 있거나, 하나의 이러한 디코딩 모드에 적응된 특수 목적 디코딩 툴일 수 있다. 미디어 재생 툴(300)의 각 컴포넌트는 운영 체제 모듈의 일부로서, 애플리케이션 라이브러리의 일부로서, 독립형(standalone) 애플리케이션의 일부로서 또는 특수 목적 하드웨어를 이용하여 구현될 수 있다. 특히, 미디어 디코더(320)는 ASIC, GPU 또는 미디어 디코딩을 위한 다른 특수 목적 하드웨어를 사용하여 적어도 부분적으로 구현될 수 있다.
미디어 소스(310)는 미디어 컨테이너 포맷 또는 스트리밍 미디어 포맷에 따라 조직화된 입력 데이터를 수신 및 파싱한다. 미디어 컨테이너 포맷은 MPEG-2 TS/PS, ASF, MP4, CFF, MKV 또는 다른 미디어 컨테이너 포맷일 수 있다. 스트리밍 미디어 포맷은 MPEG-DASH, HLS, 스무드 스트리밍(Smooth Streaming), RTP의 변형 또는 다른 스트리밍 미디어 포맷일 수 있다. 도 3에 도시된 바와 같이, 입력 데이터는 입력 데이터에서 대응 미디어 샘플들과 임의의 연관성을 가질 수 있는, 샘플 메타데이터뿐 아니라 미디어 샘플들에 대한 인코딩된 데이터를 포함한다. 예를 들어, (MP4와 같은) 일부 미디어 컨테이너 포맷에서는 미디어 샘플에 대한 인코딩된 데이터와 미디어 샘플에 대한 샘플 메타데이터(예: 타임스탬프)가 서로 다른 필드에 포함된다. 예를 들어 미디어 파일의 인덱스는 각 미디어 샘플들에 대한 인코딩된 데이터를 제외하고 타임스탬프를 미디어 샘플들에 매핑한다. 미디어 샘플들에 대한 인코딩된 데이터 중 적어도 일부는 암호화될 수 있다. 일반적으로, 미디어 소스(310)는 이러한 암호화된 콘텐츠를 처리할 것이다. 암호화된 콘텐츠의 해독은 미디어 소스(310), 미디어 디코더(320) 또는 미디어 재생 툴(300) 내의 어떤 다른 컴포넌트에서 발생할 수 있다. 암호 해독은 소프트웨어를 사용하여 수행될 수 있거나, ASIC, GPU 또는 암호 해독을 위한 기타 특수 목적 하드웨어로 암호 해독이 오프로드(offload)될 수 있다.
입력 데이터의 청크는 예를 들어, 1 바이트에서 n 바이트까지 상이한 크기를 가질 수 있으며, 여기서 n은 구현에 의존한다. 청크는 미디어 샘플 모두에 대한 인코딩된 데이터는 물론 샘플 메타데이터를 포함할 수 있다. 또는 청크는 미디어 샘플의 일부에 대한 인코딩된 데이터뿐 아니라 샘플 메타데이터를 포함할 수 있다. 또는 청크는 여러 미디어 샘플 각각의 적어도 일부에 대한 인코딩된 데이터는 물론 샘플 메타데이터를 포함할 수 있다. 또는 청크는 하나 이상의 미디어 샘플의 적어도 일부에 대한 인코딩된 데이터만 포함할 수 있다. 인코딩된 데이터는 임의의 방식으로 청크로 분할(partition)될 수 있으며 샘플 메타데이터는 인코딩된 데이터와 임의로 연관되어 전달될 수 있다. 입력 데이터 청크는 예를 들어 네트워크 지연으로 인해 임의의 순서로 수신될 수 있다. 예를 들어, 도 3에서 제1 청크는 제1 미디어 샘플 f0에 대한 샘플 메타데이터 및 제1 미디어 샘플 f0에 대한 인코딩된 데이터 중 일부를 포함한다. 제2 청크는 제4 미디어 샘플 f3에 대한 샘플 메타데이터, 제1 미디어 샘플 f0에 대한 인코딩된 데이터의 나머지 및 제4 미디어 샘플 f3에 대한 인코딩된 데이터를 포함한다. 제3 청크는 제2 미디어 샘플 f1에 대한 샘플 메타데이터, 제2 미디어 샘플 f1에 대한 인코딩된 데이터, 제3 미디어 샘플 f2에 대한 샘플 메타데이터 및 제3 미디어 샘플 f2에 대한 인코딩된 데이터 중 일부를 포함한다. 마지막으로, 제4 청크는 제3 미디어 샘플 f2에 대한 인코딩된 데이터의 나머지를 포함한다.
입력 데이터로부터, 미디어 소스(310)는 미디어 샘플들에 대한 샘플 메타데이터 및 인코딩된 데이터를 추출한다. 구현에 따라, 미디어 소스(310)는 미디어 스트림으로서 전송하기 위해 또는 파일로서 저장하기 위해 집합된 인코딩된 데이터 및 메타데이터를 탈패킷화(de-packetize)할 수 있고, 이 경우 미디어 소스(310)는 미디어 파일 또는 미디어 스트림의 신택스의 일부로서 추가되는 신택스 요소들을 파싱한다. 또는 보다 일반적으로, 미디어 소스(310)는 하나 이상의 미디어 디멀티플렉싱(demultiplexing) 프로토콜을 구현할 수 있다.
미디어 소스(310)는 입력 데이터의 청크들로부터 추출된 샘플 메타데이터를 다수의 단계에서 적절한 미디어 샘플들과 연관시킬 수 있다. 예를 들어, 정해진 미디어 샘플에 대해, 미디어 소스(310)는 먼저 입력 데이터 청크 내의 샘플 메타데이터를 그 청크 내의 올바른 데이터 유닛 또는 데이터 유닛들과 연관시킨다. 데이터 유닛은 H.264/AVC 비디오 또는 H.265/HEVC 비디오에 대한 네트워크 추상화 레이어 유닛(network abstraction layer unit, "NALU") 또는 다른 유형의 데이터 유닛일 수 있다. 그 다음, 청크 내의 식별된 데이터 유닛(들)으로부터, 그리고 가능하게는 하나 이상의 다른 청크 내의 데이터 유닛(들)으로부터, 미디어 소스(310)가 샘플 메타데이터를 상기 정해진 미디어 샘플에 대한 인코딩된 데이터와 결합시킨다. 이러한 방식으로 임의의 다양한 포맷의 입력 데이터에 대해 샘플 메타데이터가 샘플별로 재구성되고 적절한 미디어 샘플들에 결합된다.
미디어 소스(310)에서, 파서(parser)는 예를 들어 데이터 유닛 경계들 중 일부에서 입력 데이터 내의 미디어 샘플 경계들을 식별할 수 있다. 도 3에 도시된 예에서, 정해진 미디어 샘플에 대한 인코딩된 데이터는 상기 정해진 미디어 샘플에 대한 샘플 메타데이터를 포함하는 청크에서 시작하지만 그 청크에서 마무리될 필요는 없다. 미디어 소스(310)는 제1 미디어 샘플 f0에 대한 샘플 메타데이터를 추출하고, 입력 데이터의 제1 청크 및 제2 청크에서 제1 미디어 샘플 f0에 대한 인코딩된 데이터를 갖는 데이터 유닛들을 식별하고, 샘플 메타데이터를 제1 미디어 샘플 f0에 대한 인코딩된 데이터와 결합시킨다. 제2 청크로부터, 미디어 소스(310)는 제4 미디어 샘플 f3에 대한 샘플 메타데이터를 추출하고, 제4 미디어 샘플 f3에 대한 인코딩된 데이터를 갖는 임의의 데이터 유닛들을 식별한다. 미디어 소스(310)는 샘플 메타데이터를 제4 미디어 샘플 f3에 대한 인코딩된 데이터와 결합시킨다. 제3 청크로부터, 미디어 소스(310)는 제2 미디어 샘플 f1에 대한 샘플 메타데이터를 추출하고, 제2 미디어 샘플 f1에 대한 인코딩된 데이터를 가진 임의의 데이터 유닛들을 식별하고, 샘플 메타데이터를 제2 미디어 샘플 f1에 대한 인코딩된 데이터와 결합시킨다. 미디어 소스(310)는 또한 제3 미디어 샘플 f2에 대한 샘플 메타데이터를 추출하고, 제3 청크 및 제4 청크에서 제3 미디어 샘플 f2에 대한 인코딩된 데이터를 가진 데이터 유닛들을 식별하고, 샘플 메타데이터를 제3 미디어 샘플 f2에 대한 인코딩된 데이터와 결합시킨다.
샘플 메타데이터를 미디어 샘플과 결합하기 위해 디코딩 전에 미디어 재생 툴은 샘플 메타데이터에 대한 하나 이상의 필드와 인코딩된 데이터에 대한 필드를 포함하는 내부 변수를 생성할 수 있다. 디코딩하는 동안 샘플 메타데이터를 미디어 샘플과 결합시키기 위해 미디어 재생 툴은 샘플 메타데이터에 대한 하나 이상의 필드와 디코딩 파라미터 및 변수를 위한 하나 이상의 필드를 포함하는 내부 변수를 생성할 수 있다. 디코딩 후에, 샘플 메타데이터를 미디어 샘플과 결합시키기 위해, 미디어 재생 툴은 샘플 메타데이터에 대한 하나 이상의 필드 및 미디어 샘플의 재구성된 버전에 대한 필드를 포함하는 내부 변수를 생성할 수 있다. 샘플 메타데이터는 미디어 샘플(또는 미디어 샘플의 재구성 버전)에 대한 샘플 메타데이터 및 인코딩된 데이터를 정해진 함수 호출(function call)에서 함께 사용함으로써, 미디어 샘플과 결합될 수도 있다.
결합된 샘플 메타데이터와 함께 미디어 샘플들에 대한 인코딩된 데이터는 미디어 샘플들이 디코딩되는 순서인 디코딩 순서(인코더로의 입력을 위해 코딩 순서 또는 입력 순서라고도 함)로 조직화된다. 도 3에서, 미디어 샘플들의 디코딩 순서는 f0, f3, f1 및 f2인데, 이는 디스플레이 순서 f0, f1, f2 및 f3과 상이하다. 디스플레이 순서(출력 순서라고도 함)는 미디어 샘플들이 디스플레이되는 순서이다. 보다 일반적으로, 미디어 샘플들에 대한 디코딩 순서는 디스플레이 순서와 동일하거나(이 경우 디코딩 후에 재정렬은 건너뜀), 디스플레이 순서와 상이할 수 있다(이 경우 디코딩 후에 재구성된 샘플들이 재정렬됨). 특히, (H.264/AVC, H.265/HEVC 및 VP9와 같은) 최근의 비디오 코덱 포맷들에 대한 미디어 샘플들과 샘플 메타데이터를 결합할 때, 미디어 소스(310)는 샘플 메타데이터와 미디어 샘플들을 연관시킬 때 미디어 샘플들(여기서는 비디오 프레임들)의 계층적인 구조화를 고려한다.
샘플 메타데이터의 레이트가 고정되어 있지 않고 메타데이터 요소의 손실, 메타데이터 요소의 손상 또는 미디어 싱크 또는 레코딩 시스템이 메타데이터를 제공하지 못하는 것으로 인하여, 하나 이상의 미디어 샘플에 대한 메타데이터 요소가 누락될 수 있다. 예를 들어 도 3에서, 미디어 샘플들 중 하나(f2)에서 PTS가 누락되었다. 누락된 메타데이터 요소는 메타데이터 요소들 간의 보간 또는 메타데이터 요소의 반복에 의해 대체될 수 있다. 예를 들어, 미디어 재생 툴(300)은 대체 타임스탬프(DTS, PTS)를 결정하기 위해 2개의 타임스탬프(DTSS, PTSS) 사이를 보간할 수 있다. 또는, 미디어 재생 툴(300)은 이전 미디어 샘플로부터 메타데이터 요소(예를 들어, 최대 디코딩가능 공간 해상도)를 반복할 수 있다. 누락된 메타데이터 요소는 메타데이터 요소가 언제 사용될 것인지에 따라 다양한 처리 단계(예를 들어, 디코딩 전, 디코딩 중, 디코딩 후)에서 대체될 수 있다. 따라서, (디코딩 전에) 여전히 인코딩될 수 있거나, (디코딩되는 과정에서) 부분적으로 디코딩될 수 있거나, 디코딩될 수 있는 미디어 재생 툴(300)에 버퍼링된 다수의 샘플을 보간법이 사용할 수 있다. 대안적으로, 미디어 재생 툴(300)은 누락된 메타데이터 요소를 무시(대체하지 않음)할 수 있다.
전형적으로, 미디어 소스(310)는 미디어 파일 또는 미디어 스트림으로부터 샘플 메타데이터 요소들을 추출한다. 그러나, 일부 경우, 미디어 소스(310)는 미디어 재생 툴(300)의 세팅, 미디어 디코더(320)의 세팅 또는 다른 세팅으로부터 샘플 메타데이터 요소들을 결정할 수 있거나, 미디어 소스(310)는 미디어 샘플들에 대하여 인코딩된 데이터로부터 샘플 메타데이터 요소들을 도출할 수 있다.
미디어 소스(310)는 미디어 기본 비트 스트림의 미디어 샘플들에 대한 인코딩된 데이터를 디코딩을 위해 미디어 디코더(320)에 제공하고, 샘플 메타데이터가 적절한 미디어 샘플들에 결합된다. 예를 들어, 샘플마다, 미디어 소스(310)는 미디어 디코더(320)에 의해 노출된 함수를 호출하며, 이는 (a) 미디어 샘플에 대한 인코딩된 데이터 및 (b) 미디어 샘플과 결합된 샘플 메타데이터의 요소들을 저장하는 구조를 입력으로서 받아들인다.
도 4a는 미디어 디코더(320)에 의해 노출된 예시적인 함수의 풋 프린트(footprint)(400)를 도시한다. FeedSource( ) 함수는 3개의 입력 파라미터들 즉, 정해진 미디어 샘플에 대한 인코딩된 데이터를 저장하는 버퍼의 바이트 어레이(에 대한 포인터(*pBuffer), 버퍼 내의 인코딩된 데이터에 대한 길이 값(BufferLength) 및 샘플 메타데이터 요소들을 저장하는 구조(Metadata)를 포함한다. 포인터 및 길이 값(length value)은 미디어 샘플에 대한 인코딩된 데이터의 위치 및 크기를 나타낸다. 메타데이터 구조의 상세한 내용이 도 2b에 도시된다. 이 함수는 상태 값을 반환한다. 대안적으로, 미디어 디코더(320)에 의해 노출된 함수는, 예를 들어, 상이한 샘플 메타데이터 요소들에 대해 상이한 입력 파라미터들로, 또는 값에 의해 전달되는 대신에 참조에 의해 전달되는 샘플 메타데이터 요소들을 가진, 상이한 풋 프린트를 가질 수 있다.
도 4b는 샘플 메타데이터의 요소들을 저장하는 예시적인 구조(410)를 도시한다. 구조(410)는 미디어 샘플(여기서는 비디오 프레임)에 대한 PTS, 프레임 프리젠테이션 지속 시간 값 및 최대 디코딩가능 공간 해상도(폭 및 높이)에 대한 필드들을 포함한다. 구조(410)는 또한 플래그들(예를 들어, 불연속 플래그)을 위한 필드들을 포함한다. 대안적으로, 구조(410)는 디코딩 또는 프리젠테이션 동안 사용하기 위한 샘플 메타데이터 요소들의 다른 유형 및/또는 추가 유형을 포함할 수 있다.
미디어 디코더(320)는 샘플별로 미디어 샘플들에 대한 인코딩된 데이터를 받아들이고 샘플 메타데이터는 각각의 미디어 샘플에 결합된다. 경우에 따라 이러한 샘플 메타데이터가 이용 가능하지 않다면, - 예를 들어 샘플 메타데이터 요소들에 빈 구조(empty structure)를 사용하여 - 미디어 샘플에 대해 샘플 메타데이터를 생략할 수 있다. 미디어 디코더(320)는 비디오 디코더(H.265/HEVC, H.264/AVC, VPx 또는 다른 포맷), 오디오 디코더 또는 다른 유형의 미디어 디코더일 수 있다.
일반적으로, 디코딩 시작시 미디어 샘플에 대한 인코딩된 데이터와 관련된 샘플 메타데이터는 디코딩 중에 미디어 샘플과 관련되어 있지만, 미디어 디코더(320)는 디코딩 중에 일부 샘플 메타데이터 요소들을 소비할 수도 있다. 예를 들어, 미디어 디코더(320)는 미디어 샘플의 디코딩 중에 프리 롤(pre-roll) 값, 불연속 플래그 값 또는 DTS를 사용할 수 있지만, 출력 처리 동작에서 사용하기 위해 PTS와 같은 다른 메타데이터 요소들을 통과(pass through)시킬 수 있다.
미디어 디코더(320)는 각각 미디어 샘플들의 재구성된 버전을 생성하며, 샘플 메타데이터는 여전히 적절한 미디어 샘플들에 결합된다. 도 3에 도시된 바와 같이, 일부 샘플 메타데이터 요소들은 미디어 재생 툴(300)에 의해 더 이상 사용되지 않으면 폐기될 수 있다. 대안적으로, 그러한 샘플 메타데이터 요소들은 유지(retain)될 수 있다. 미디어 샘플들의 재구성된 버전은 디코딩 순서로 생성된다. 또한, 도 3에 도시된 바와 같이, 누락된 PTS 값은 2개의 다른 PTS 값들(PTS1 및 PTS3) 사이를 보간함으로써 결정된 PTS 값(PTS2)으로 대체되었다.
미디어 포스트 프로세서(330)는 샘플 재정렬, 미디어 샘플들의 스케일링, 미디어 샘플들의 회전과 같은 출력 처리 작업을 수행한다. 미디어 포스트 프로세서(330)는 일부 샘플 메타데이터 요소들, 예를 들어, PTSS, 회전 데이터, 3차원 디스플레이 메타데이터를 소비할 수 있다. 예를 들어, 미디어 포스트 프로세서(330)는 디코딩된 픽처 버퍼(decoded picture buffer, "DPB")에서 비디오 프레임들을 재정렬 할 때 PTS들 및/또는 다른 신택스 요소들을 사용한다. 도 3에서, 미디어 포스트 프로세서(330)는 재정렬된 미디어 샘플들을 디스플레이 순서로 출력한다. 미디어 샘플들을 디코딩 순서로부터 디스플레이 순서로 재정렬할 때, 미디어 포스트 프로세서(330)는 미디어 샘플들과 결합된 샘플 메타데이터를 동시에 재정렬할 수 있다.
일반적으로, 샘플 메타데이터는 미디어 소스(310)에 의한 처리, 미디어 디코더(320)에 의한 디코딩 및 미디어 포스트 프로세서(330)에 의한 출력 처리 동안에 적절한 미디어 샘플들과 결합될 수 있다. 이렇게 하면 다양한 방식으로 샘플 메타데이터를 처리하는 것을 단순화할 수 있으며, 샘플 메타데이터와 미디어 샘플들 간의 동기화 손실을 피하는데 도움이 될 수 있으며, 그렇게 하지 않으면 오디오/비디오 동기화 또는 샘플 재정렬에 문제가 발생할 수 있다. 특히, H.265/HEVC 비디오의 미디어 샘플에서는 그림 종속성이 복잡하기 때문에 샘플 메타데이터가 누락되거나 지연되는 문제가 심각할 수 있다. 디코딩 전, 디코딩 중 및 디코딩 후에 샘플 메타데이터를 적절한 미디어 샘플들과 결합함으로써, 미디어 재생 툴(300)은 이러한 문제를 피할 수 있다. 예를 들어, 어떤 이유로(예를 들어, 인코딩된 데이터의 손상으로 인해) 미디어 샘플이 드롭되면, 미디어 재생 툴(300)은 미디어 샘플과 결합된 샘플 메타데이터를 드롭시킨다. 다른 예로서, 어떤 이유로(예를 들어, 네트워크 정체로 인해) 미디어 샘플이 지연되면, 미디어 재생 툴(300)은 마찬가지로 미디어 샘플과 결합된 샘플 메타데이터를 지연시킨다. 다른 예로서, 어떤 이유로(예를 들어, 화상 반복, 트릭 모드 처리) 미디어 샘플이 다수의 새로운 미디어 샘플로 분할되면, 샘플 메타데이터는 새로운 미디어 샘플들 중 하나와 결합되지만, 다른 새로운 미디어 샘플(들)과 결합되지는 않는다. 따라서 일반적으로 샘플 메타데이터의 수명은 샘플 메타데이터가 결합된 미디어 샘플의 수명과 동일한 시간에 걸칠 수 있다. 미디어 재생 툴(300)은 미디어 샘플들보다 더 많은 샘플 메타데이터를 가지거나 미디어 샘플들에 대한 샘플 메타데이터가 충분하지 않은 상황을 회피할 수 있으며 대신 샘플 메타데이터와 미디어 샘플들 간의 올바른 연관성을 유지한다.
B. 예시적인 비디오 디코더 시스템.
도 5는 설명된 일부 실시 예들이 구현될 수 있는 예시적인 비디오 디코더 시스템(500)의 블록도이다. 비디오 디코더 시스템(500)은 도 3을 참조하여 기술된 미디어 재생 툴(300)의 예이다. 비디오 디코더 시스템(500)은 실시간 통신을 위한 낮은 대기 시간의 디코딩 모드 및 파일 또는 스트림으로부터의 미디어 재생을 위한 더 높은 대기 시간의 디코딩 모드와 같은 다수의 디코딩 모드 중 임의의 모드로 동작할 수 있는 범용 비디오 디코딩 툴일 수 있거나, 하나의 이러한 디코딩 모드에 적응된 특수 목적 디코딩 툴일 수 있다. 비디오 디코더 시스템(500)은 운영 체제 모듈의 일부로서, 애플리케이션 라이브러리의 일부로서, 독립형(standalone) 애플리케이션의 일부로서 또는 특수 목적 하드웨어를 이용하여 구현될 수 있다. 전반적으로, 디코더 시스템(500)은 채널(510)로부터 코딩된 데이터를 수신하고 출력 목적지(590)에 대한 출력으로서 재구성된 프레임들을 생성한다.
채널(510)은 입력으로서 저장, 통신 연결 또는 코딩된 데이터에 대한 다른 채널을 나타낼 수 있다. 채널(510)은 채널 코딩된 코딩 데이터를 생성한다. 도 3을 참조하여 설명한 바와 같이 미디어 소스(310)의 일 예인 채널 디코더(520)는 코딩된 데이터를 처리하여 미디어 샘플에 대한 샘플 메타데이터 및 인코딩된 데이터를 추출한다. 예를 들어, 채널 디코더(520)는(예를 들어, MPEG-2 TS/PS와 같은 미디어 프로그램 스트림 또는 전송 스트림 포맷 또는 RTP 포맷의 변형에 따라) 미디어 스트림으로서 전송 또는 저장을 위해 집합된 데이터를 탈패킷화 및/또는 디멀티플렉싱하고, 이 경우 채널 디코더(520)는 미디어 스트림의 신택스의 일부로서 부가된 신택스 요소들을 파싱할 수 있다. 또는, 채널 디코더(520)는(예를 들어, MP4와 같은 미디어 컨테이너 포맷에 따라) 파일로서 저장을 위해 집합된 코딩된 미디어 데이터를 분리(separate)하며, 이 경우 채널 디코더(520)는 미디어 파일의 신택스의 일부로서 추가된 신택스 요소들을 파싱할 수 있다. 또는 보다 일반적으로, 채널 디코더(520)는 하나 이상의 미디어 시스템 디멀티플렉싱 프로토콜 또는 전송 프로토콜을 구현할 수 있으며, 이 경우 채널 디코더(520)는 프로토콜(들)의 신택스의 일부로서 추가된 신택스 요소들을 파싱할 수 있다. 미디어 샘플들에 대한 인코딩된 데이터 중 적어도 일부는 암호화될 수 있다. 암호화된 콘텐츠의 암호 해독은 채널 디코더(520), 디코더(550) 또는 비디오 디코더 시스템(500)의 일부 다른 컴포넌트에서 발생할 수 있다. 암호 해독은 암호 해독을 위해 구성된 소프트웨어 또는 특수 목적 하드웨어를 사용하여 수행할 수 있다. 채널(510) 또는 채널 디코더(520)는 또한 예를 들어, FEC 디코딩 및 아날로그 신호 복조를 위한 다른 요소들(도시되지 않음)을 포함할 수 있다.
충분한 양의 데이터가 수신될 때까지, 채널 디코더(520)로부터 출력된 인코딩된 데이터(521) 및 샘플 메타데이터는 임시 코딩된 데이터 영역(530)에 저장된다. 인코딩된 데이터(521)는 인코딩된 프레임(531), MMCO/RPS 정보(532) 및 샘플 메타데이터를 포함한다. 코딩된 데이터 영역(530)의 인코딩된 데이터(521)는 기본 코딩된 비디오 비트 스트림의 신택스의 일부로서, 하나 이상의 프레임에 대한 인코딩된 데이터를 포함한다. 코딩된 데이터 영역(530)은 또한 프레임들에 대한 인코딩된 데이터(521)에 관한 샘플 메타데이터를 저장할 수 있으며, 비디오 디코딩 시스템(500)이 이를 적절한 프레임들과 결합시킨다.
일반적으로, 코딩된 데이터 영역(530)은, 도 3을 참조하여 설명된 미디어 디코더(320)의 일 예인 디코더(550)에 의해, 인코딩된 데이터(521)가 사용될 때까지, 인코딩된 데이터를 임시적으로 저장한다. 그 시점에서, 인코딩된 프레임(531)에 대한 인코딩된 데이터는 그에 결합된 샘플 메타데이터와 함께 그리고 MMCO/RPS 정보(532)가 코딩된 데이터 영역(530)으로부터 디코더(550)로 전송된다. 디코딩이 계속될 때, 새로운 인코딩된 데이터(521)와 샘플 메타데이터가 코딩된 데이터 영역(530)에 부가되고, 결합된 샘플 메타데이터와 함께 코딩된 데이터 영역(530)에 남아있는 가장 오래된 인코딩된 데이터가 디코더(550)로 전송된다.
디코더(550)는 인코딩된 프레임(531)을 디코딩하여, 대응하는 디코딩된 프레임(551)을 생성하며, 이는 프레임에 대한 샘플 메타데이터와 여전히 결합된다. 디코딩을 수행할 때, 디코더(550)는 하나 이상의 이전에 디코딩된 프레임(569)을 프레임 간 예측을 위한 기준 프레임으로서 적절하게 사용할 수 있다. 디코더(550)는 디코딩된 프레임 임시 메모리 저장 영역(560)으로부터 이전에 디코딩된 프레임(569)을 판독한다. 일반적으로, 디코더(550)는 엔트로피 디코딩, 프레임 내 예측, 모션 보상된 프레임 간 예측, 역 양자화 및 역 주파수 변환(생략되지 않은 경우)과 같은 디코딩 작업을 수행하는 다수의 디코딩 모듈을 포함한다. 디코더(550)에 의해 수행되는 정확한 동작은 압축 포맷에 따라 변할 수 있다.
예를 들어, 디코더(550)는 압축된 프레임 또는 프레임들의 시퀀스에 대한 인코딩된 데이터를 수신하고 샘플 메타데이터가 결합된 디코딩된 프레임(551)을 포함하는 출력을 생성한다. 디코더(550)에서, 버퍼는 압축된 프레임에 대한 인코딩된 데이터를 수신하고, 적절한 시간에, 수신된 인코딩된 데이터를 엔트로피 디코더에 이용 가능하게 만든다. 엔트로피 디코더는 엔트로피 코딩된 양자화된 데이터 및 엔트로피 코딩된 사이드 정보를 엔트로피 디코딩하며, 전형적으로 인코더에서 수행되는 엔트로피 인코딩의 역을 적용한다. 모션 보상기는 하나 이상의 기준 프레임에 모션 정보를 적용하여, 재구성되는 프레임의 모든 인터코딩된 블록에 대한 모션 보상된 예측 값들을 형성한다. 프레임 내 예측 모듈은, 이웃하고 이전에 재구성된 샘플 값들로부터 현재 블록의 샘플 값들을 공간적으로 예측할 수 있다. 디코더(550)는 또한 예측 잔여 값(prediction residual values)을 재구성한다. 역 양자화기는 엔트로피 디코딩된 데이터를 역 양자화한다. 예를 들어, 디코더(550)는 비트 스트림 내의 신택스 요소들에 기초하여 화상, 타일, 슬라이스 및/또는 비디오의 다른 부분에 대한 QP 값들을 설정하고 그에 따라 변환 계수를 역 양자화한다. 역 주파수 변환기는 양자화된 주파수 영역 데이터를 공간 영역 데이터로 변환한다. 일부 구현들에서, 주파수 변환은 생략될 수 있으며, 이 경우 역 주파수 변환 또한 생략된다. 그렇다면, 예측 잔여 값들은 엔트로피 디코딩 및 역 양자화될 수 있다. 프레임 간 예측된 블록에 대해, 디코더(550)는 재구성된 예측 잔여 값들을 모션 보상된 예측 값들과 결합한다. 디코더(550)는 유사하게 예측 잔여 값들을 인트라 예측으로부터의 예측 값들과 결합할 수 있다. 적응형 디블로킹 필터(adaptive deblocking filter)는 디코딩된 프레임(551)에서 블록 경계 행 및/또는 열을 가로지르는 불연속성을 부드럽게 하기 위해 비디오 디코더(550)의 모션 보상 루프 내에 포함된다. 대안적으로 또는 부가적으로, (예를 들어, 디-링잉(de-ringing) 필터링, ALF 또는 SAO 필터링과 같은) 다른 필터링이 루프 내 필터링 동작으로서 적용될 수 있다. 디코더(550)는 디코딩 중에 일부 샘플 메타데이터 요소들을 소비할 수 있지만, 적절한 프레임에 여전히 결합된 다른 샘플 메타데이터 요소들을 디코더(550)를 통해 전달한다. (디코딩 중에 소비된 샘플 메타데이터 요소들은 적절한 프레임과 결합된 채로 남아 있거나 폐기될 수 있다.)
디코딩된 프레임 임시 메모리 저장 영역(560)은 다수의 프레임 버퍼 저장 영역(561, 562, ..., 56n)을 포함한다. 디코딩된 프레임 저장 영역(560)은 DPB의 예이다. 디코더(550)는 샘플 메타데이터가 결합된 디코딩된 프레임(551)을 저장할 수 있는 프레임 버퍼(561, 562 등)를 식별하기 위해 MMCO/RPS 정보(532)를 사용한다. 디코더(550)는 결합된 샘플 메타데이터를 갖는 디코딩된 프레임(551)을 그 프레임 버퍼에 저장한다.
도 3을 참조하여 기술된 미디어 포스트 프로세서(330)의 일 예인 출력 시퀀서(580)는 디스플레이 순서로 생성될 다음 프레임이 디코딩된 프레임 저장 영역(560)에서 언제 이용 가능한지를 식별한다. 디스플레이 순서로 생성될 다음 프레임(581)은 디코딩된 프레임 저장 영역(560)에서 이용 가능할 때, 출력 시퀀서(580)에 의해 판독되고 출력 목적지(590)(예를 들어, 디스플레이)로 출력된다. 일반적으로, 프레임들이 디코딩된 프레임 저장 영역(560)으로부터 출력 시퀀서(580)에 의해 출력되는 순서는 프레임들이 디코더(550)에 의해 디코딩되는 순서와 다를 수 있다. 출력 시퀀서(580)는 프레임들을 재정렬 할 때 PTS 값들 및/또는 다른 신택스 요소들을 사용할 수 있다. 샘플 메타데이터를 사용할 수 있는 다른 후 처리(post-processig) 동작(예를 들어, 스케일링, 회전)은 도 5에 도시되지 않았다.
C. 샘플 메타데이터 처리를 위한 예시적인 기법들.
도 6은 적절한 미디어 샘플들과 결합된 샘플 메타데이터를 처리하기 위한 제1의 일반화된 기술(600)을 도시한다. 도 3 또는 도 5를 참조하여 설명된 미디어 재생 툴 또는 다른 미디어 재생 툴은 기술(600)을 수행할 수 있다. 도 6에 도시된 기술(600)의 초점은 샘플 메타데이터와 적절한 미디어 샘플들 간의 연관성의 식별이다.
미디어 재생 툴(610)은 데이터 유닛들로 분할된 입력 데이터를 수신한다. 입력 데이터는 미디어 컨테이너 포맷 또는 스트리밍 미디어 포맷에 따라 조직화된다. 입력 데이터는 미디어 샘플들에 대한 미디어 기본 비트 스트림의 인코딩된 데이터를 포함한다. 입력 데이터는 또한 미디어 샘플들의 적어도 일부에 대한 미디어 기본 비트 스트림 외부의 샘플 메타데이터를 포함한다.
미디어 재생 툴은 샘플 메타데이터 중 정해진 샘플 메타데이터를 데이터 유닛들 중 정해진 데이터 유닛과 연관시킨다(620). 그 다음, 미디어 재생 툴은 상기 정해진 샘플 메타데이터를, 상기 정해진 데이터 유닛에서 시작하는 인코딩된 데이터를 갖는 (미디어 샘플들 중) 정해진 미디어 샘플과 결합한다(630). 예를 들어, 상기 정해진 데이터 유닛은 (a) 정해진 미디어 샘플에 대한 인코딩된 데이터의 일부만이거나,(b) 상기 정해진 미디어 샘플에 대한 모든 인코딩된 데이터만이거나, 또는 (c) 상기 정해진 미디어 샘플에 대한 인코딩된 데이터의 적어도 일부 및 하나 이상의 다른 미디어 샘플에 대한 적어도 일부 인코딩된 데이터이다.
미디어 재생 툴은 정해진 미디어 샘플에 대한 정해진 샘플 메타데이터 및 인코딩된 데이터를 미디어 디코더에 제공한다(640). 일반적으로, 정해진 샘플 메타데이터의 수명은 디코딩 및/또는 출력 처리 단계들의 적어도 일부 동안 정해진 미디어 샘플의 수명과 동일한 시간에 걸칠 수 있다. 예를 들어, 미디어 디코더는 정해진 미디어 샘플이 드롭, 지연 또는 분할된 경우에도 정해진 미디어 샘플과 정해진 샘플 메타데이터의 결합을 유지하도록 구성된다. 정해진 미디어 샘플에 대해, 미디어 재생 툴은 (a) 정해진 미디어 샘플을 드롭시킬지 여부를 결정할 수 있고, 정해진 미디어 샘플을 드롭시키기로 결정한 것에 응답하여, 정해진 샘플 메타데이터를 드롭시킬 수도 있고, (b) 정해진 미디어 샘플을 지연시킬지 여부를 결정할 수 있고, 정해진 미디어 샘플을 지연시키기로 한 결정에 응답하여, 정해진 샘플 메타데이터를 또한 지연시킬 수 있고/있거나 (c) 정해진 미디어 샘플을 다수의 새로운 미디어 샘플들로 분할할지 여부를 결정할 수 있고, 정해진 미디어 샘플을 다수의 새로운 미디어 샘플들로 분할하는 것에 응답하여, 정해진 샘플 메타데이터를 다수의 새로운 미디어 샘플들 중 제1의 새로운 미디어 샘플에만 할당하고, 다수의 새로운 미디어 샘플들 중 다른 미디어 샘플들에는 할당하지 않을 수 있다.
도 7은 적절한 미디어 샘플들과 결합된 샘플 메타데이터를 처리하기 위한 제2의 일반화된 기술(700)을 도시한다. 도 3 또는 도 5를 참조하여 설명된 미디어 재생 툴 또는 다른 미디어 재생 툴은 기술(700)을 수행할 수 있다. 도 7에 도시된 기술(700)의 초점은 어떻게 미디어 샘플들에 대한 샘플 메타데이터 및 인코딩된 데이터가 미디어 디코더에 제공되는가 하는 것이다.
미디어 재생 툴은 미디어 기본 비트 스트림에서 현재 미디어 샘플에 대한 인코딩된 데이터를 식별한다(710). 미디어 기본 비트 스트림 외부로부터 (예를 들어, 미디어 컨테이너 포맷의 미디어 파일 또는 스트리밍 미디어 포맷의 미디어 스트림의 요소들에서 또는 미디어 재생 툴 또는 미디어 디코더의 설정으로부터) 미디어 재생 툴은 현재의 미디어 샘플에 대한 샘플 메타데이터를 식별한다(720). 미디어 재생 툴은 현재 미디어 샘플에 대한 샘플 메타데이터를 현재 미디어 샘플과 결합시킨다(730). 예를 들어, 그렇게 하기 위해, 미디어 재생 툴은 도 6에 도시된 기술(600)을 사용하여 샘플 메타데이터와 현재 미디어 샘플 간의 연관성을 결정할 수 있다. 대안적으로, 미디어 재생 툴은 다른 접근법을 사용하여 샘플 메타데이터와 적절한 미디어 샘플들 간의 연관성을 결정한다.
미디어 재생 툴은 현재 미디어 샘플에 대한 샘플 메타데이터 및 현재 미디어 샘플에 대한 인코딩된 데이터를 미디어 디코더에 동시에 제공한다(740). 예를 들어, 샘플 메타데이터 및 인코딩된 데이터는 미디어 디코더에 의해 노출된 함수에 대한 함수 호출의 파라미터들로서 미디어 디코더에 전달된다. 샘플 메타데이터는 함수 호출에서 구조(structure)로서 전달될 수 있으며 인코딩된 데이터는 포인터와 길이 값을 사용하여 참조로 전달될 수 있다. 대안적으로, 샘플 메타데이터 및 인코딩된 데이터는 다른 방법으로 미디어 디코더에 전달된다.
그런 다음, 미디어 재생 툴은 미디어 디코더를 사용하여 현재 미디어 샘플에 대한 인코딩된 데이터를 디코딩하여 현재 미디어 샘플의 재구성된 버전을 생성할 수 있다. 미디어 재생 툴은 또한 출력을 위해 현재 미디어 샘플의 재구성된 버전을 처리할 수 있는데, 예를 들어 디코딩 순서(코딩 순서 또는 입력 순서라고도 함)로부터 디스플레이 순서(출력 순서라고도 함)로 샘플 재정렬을 수행할 수 있다. 현재 미디어 샘플에 대한 샘플 메타데이터의 적어도 하나의 샘플 메타데이터 요소는 디코딩 중에 현재 미디어 샘플과 결합된 채로 유지될 수 있다. 그러한 샘플 메타데이터 요소(들)는 출력 처리 중에 소비될 수 있다. 하나 이상의 다른 신택스 요소들은 디코딩 중에 소비될 수 있다. 현재 미디어 샘플이 디코딩 순서에서 디스플레이 순서에 이르기까지 다른 미디어 샘플에 대하여 재정렬될 때, 미디어 재생 툴은 현재 미디어 샘플의 재구성된 버전의 재정렬과 평행하게 현재 미디어 샘플에 대한 샘플 메타데이터의 적어도 일부를 재정렬할 수 있다.
도 8은 적절한 미디어 샘플들과 결합된 샘플 메타데이터를 처리하기 위한 제3의 일반화된 기술(800)을 도시한다. 도 3 또는 도 5를 참조하여 설명된 미디어 재생 툴 또는 다른 미디어 재생 툴은 기술(800)을 수행할 수 있다. 도 8에 도시된 기술(800)의 초점은 디코딩 중에 샘플 메타데이터 요소들과 적절한 미디어 샘플들의 결합을 유지하는 것이다.
미디어 재생 툴은 현재 미디어 샘플에 대한 인코딩된 데이터를 식별하고(810) 현재 미디어 샘플에 대한 샘플 메타데이터를 식별한다(820). 미디어 재생 툴은 현재 미디어 샘플에 대한 샘플 메타데이터와 현재 미디어 샘플을 결합한다(830). 예를 들어 그렇게 하기 위하여, 미디어 재생 툴은 도 6에 도시된 기술(600)을 사용하여 샘플 메타데이터와 현재 미디어 샘플 간의 연관성을 결정할 수 있다. 대안적으로, 미디어 재생 툴은 다른 방식을 사용하여 샘플 메타데이터와 적절한 미디어 샘플들 간의 연관성을 결정할 수 있다.
미디어 재생 툴은 현재 미디어 샘플에 대하여 수행되는 적어도 하나의 디코딩 단계 동안 현재 미디어 샘플과, 현재 미디어 샘플에 대한 샘플 메타데이터의 적어도 하나의 샘플 메타데이터 요소의 결합을 유지한다(840). 그렇게 함에 있어서, 미디어 재생 툴은 현재 미디어 샘플을 드롭시킬지 여부를 결정하고, 현재 미디어 샘플이 드롭되면, 현재 미디어 샘플과 결합된 샘플 메타데이터도 드롭시킨다. 미디어 재생 툴은 또한 현재 미디어 샘플을 지연시킬지 여부를 결정할 수 있으며, 현재 미디어 샘플이 지연되면 현재 미디어 샘플과 결합된 샘플 메타데이터도 지연시킬 수 있다. 현재 미디어 샘플에 대한 하나 이상의 샘플 메타데이터 요소가 디코딩을 통과할 수 있지만, 디코딩 중에 하나 이상의 다른 샘플이 소비될 수 있다. 디코딩을 통과하는 샘플 메타데이터 요소(들)는 출력 처리(예를 들어, 샘플 재정렬) 동안 소비될 수 있다.
도 6, 도 7 및 도 8에 도시된 기술들(600, 700, 800)과 관련하여 현재 미디어 샘플(또는 정해진 미디어 샘플)에 대한 샘플 메타데이터는 PTS, DTS, 프레임 프리젠테이션 지속 시간 값, 최대 디코딩가능 공간 해상도 값, 프리 롤 플래그 값, 불연속 플래그 값, 회전 데이터 및 3차원 디스플레이 데이터 중 하나 이상을 포함할 수 있다. 대안적으로, 현재 미디어 샘플(또는 정해진 미디어 샘플)에 대한 샘플 메타데이터는 다른 및/또는 추가 샘플 메타데이터 요소들을 포함한다.
도 6, 도 7 및 도 8에 도시된 기술들(600, 700, 800)과 관련하여, 디코딩 전, 디코딩 도중 또는 디코딩 후에, 미디어 재생 툴은 누락된 샘플 메타데이터 요소들을 대체할 수 있다. 예를 들어, 미디어 재생 툴은 현재 미디어 샘플이 샘플 메타데이터 요소(예를 들어, 타임스탬프)를 누락하고 있는지 여부를 결정할 수 있고, 현재 미디어 샘플에 샘플 메타데이터 요소가 누락되었다는 결정에 응답하여 다른 미디어 샘플들에 대한 샘플 메타데이터 요소들(예를 들어, 타임스탬프들) 사이를 보간하여, 누락된 샘플 메타데이터 요소에 대한 대체를 결정할 수 있다.
도 6, 도 7 및 도 8에 도시된 기술들(600, 700, 800)과 관련하여, 미디어 샘플(들)에 대한 인코딩된 데이터의 적어도 일부가 암호화될 수 있다. 그렇다면 미디어 재생 툴은 인코딩된 데이터를 디코딩하기 전에 암호화된 콘텐츠를 암호 해독한다. 암호화된 콘텐츠의 암호 해독은 미디어 소스, 미디어 디코더 또는 미디어 재생 툴의 다른 컴포넌트에서 발생할 수 있다.
개시된 발명의 원리가 적용될 수 있는 많은 가능한 실시 예를 고려하여, 도시된 실시 예들은 본 발명의 선호되는 예일 뿐이며 본 발명의 범위를 제한하는 것으로 간주되어서는 안된다. 오히려, 본 발명의 범위는 다음의 청구 범위에 의해 한정된다. 따라서 우리는 이러한 청구 범위의 범위와 정신 내에서 나오는 모든 것을 우리의 발명으로 주장한다.

Claims (15)

  1. 컴퓨터 실행 가능(computer-executable) 명령어들을 저장하는 하나 이상의 컴퓨터 판독 가능(computer-readable) 매체에 있어서, 상기 컴퓨터 실행 가능 명령어들은 상기 명령어들에 의해 프로그램된 컴퓨팅 시스템으로 하여금,
    미디어 기본 비트 스트림(media elementary bit stream)에서, 현재 미디어 샘플에 대한 인코딩된 데이터를 식별하는 단계;
    상기 미디어 기본 비트 스트림 외부로부터 상기 현재 미디어 샘플에 대한 샘플 메타데이터를 식별하는 단계;
    상기 현재 미디어 샘플에 대한 샘플 메타데이터를 상기 현재 미디어 샘플과 결합하는 단계; 및
    상기 현재 미디어 샘플에 대한 샘플 메타데이터 및 상기 현재 미디어 샘플에 대한 인코딩된 데이터를 미디어 디코더에 동시에 제공하는 단계
    를 수행하도록 하는 것인 하나 이상의 컴퓨터 판독 가능 매체.
  2. 제1항에 있어서, 상기 컴퓨팅 시스템으로 하여금,
    상기 현재 미디어 샘플의 재구성된 버전을 생성하기 위하여 상기 현재 미디어 샘플에 대한 인코딩된 데이터를 디코딩하는 단계; 및
    출력을 위하여 상기 현재 미디어 샘플의 재구성된 버전을 처리하는 단계
    를 수행하도록 하는 컴퓨터 실행 가능 명령어들을 또한 저장하고,
    상기 현재 미디어 샘플에 대한 샘플 메타데이터의 적어도 하나의 샘플 메타데이터 요소는, 상기 디코딩하는 단계 동안 상기 현재 미디어 샘플과 결합되어 유지되는 것인 하나 이상의 컴퓨터 판독 가능 매체.
  3. 제2항에 있어서, 상기 현재 미디어 샘플에 대한 샘플 메타데이터의 적어도 하나의 샘플 메타데이터 요소는, 상기 출력을 위하여 처리하는 단계 동안 소비되고, 상기 현재 미디어 샘플에 대한 샘플 메타데이터의 적어도 하나의 다른 샘플 메타데이터 요소는, 상기 디코딩하는 단계 동안 소비되는 것인 하나 이상의 컴퓨터 판독 가능 매체.
  4. 제2항에 있어서, 상기 처리하는 단계는, 현재 미디어 샘플의 재구성된 버전을 재정렬하는 것(reordering)과 병렬적으로, 다른 미디어 샘플에 관하여, 상기 현재 미디어 샘플에 대한 샘플 메타데이터의 적어도 일부를 재정렬하는 것을 포함하여, 디코딩 순서로부터 디스플레이 순서로 샘플을 재정렬하는 단계를 포함하는 것인 하나 이상의 컴퓨터 판독 가능 매체.
  5. 제1항에 있어서, 상기 현재 미디어 샘플에 대한 샘플 메타데이터는, 프리젠테이션(presentation) 타임스탬프, 디코딩 타임스탬프, 프레임 프리젠테이션 지속 시간 값, 최대 디코딩가능 공간 해상도(spatial resolution) 값, 프리 롤(pre-roll) 플래그 값, 불연속 플래그 값, 회전 데이터, 및 3차원 디스플레이 데이터 중 하나 이상을 포함하는 것인 하나 이상의 컴퓨터 판독 가능 매체.
  6. 제1항에 있어서, 상기 컴퓨팅 시스템으로 하여금,
    상기 현재 미디어 샘플이 샘플 메타데이터 요소를 누락하고 있는지 여부를 결정하는 단계; 및
    상기 현재 미디어 샘플이 샘플 메타데이터 요소를 누락하고 있다는 결정에 응답하여, 상기 누락된 샘플 메타데이터 요소에 대한 대체를 결정하기 위하여 다른 미디어 샘플들에 대한 샘플 메타데이터 요소들 사이를 보간하는 단계
    를 수행하도록 하는 컴퓨터 실행 가능 명령어들을 또한 저장하는 하나 이상의 컴퓨터 판독 가능 매체.
  7. 제1항에 있어서, 상기 동시에 제공하는 단계는,
    상기 미디어 디코더에 의해 노출된 함수에 대한 함수 호출(function call)의 파라미터들로서, 상기 현재 미디어 샘플에 대한 인코딩된 데이터 및 상기 현재 미디어 샘플에 대한 샘플 메타데이터를 전달하는 단계를 포함하고,
    상기 현재 미디어 샘플에 대한 샘플 메타데이터는 구조(structure)로서 전달되고, 상기 현재 미디어 샘플에 대한 인코딩된 데이터는 포인터 및 길이 값(length value)을 사용하여 참조(reference)에 의해 전달되는 것인 하나 이상의 컴퓨터 판독 가능 매체.
  8. 제1항에 있어서, 상기 컴퓨팅 시스템으로 하여금,
    미디어 컨테이너 포맷 또는 스트리밍 미디어 포맷에 따라 조직화된 입력 데이터를 수신하는 단계로서, 상기 입력 데이터는 하나 이상의 데이터 유닛으로 분할(split)되고, 상기 입력 데이터는, 상기 현재 미디어 샘플에 대한 인코딩된 데이터; 하나 이상의 다른 미디어 샘플에 대한 인코딩된 데이터; 상기 현재 미디어 샘플에 대한 샘플 메타데이터; 및 상기 하나 이상의 다른 미디어 샘플 중 적어도 일부에 대한 샘플 메타데이터의 각각을 포함하는 것인, 상기 입력 데이터 수신 단계; 및
    상기 현재 미디어 샘플에 대한 샘플 메타데이터를, 상기 하나 이상의 데이터 유닛 중에서, 상기 현재 미디어 샘플에 대한 인코딩된 데이터가 시작되는 정해진 데이터 유닛과 연관시키는 단계
    를 수행하도록 하는 컴퓨터 실행 가능 명령어들을 또한 저장하는 하나 이상의 컴퓨터 판독 가능 매체.
  9. 미디어 재생 툴을 구현하는 컴퓨팅 시스템에서의 방법에 있어서,
    현재 미디어 샘플에 대한 인코딩된 데이터를 식별하는 단계;
    상기 현재 미디어 샘플에 대한 샘플 메타데이터를 식별하는 단계;
    상기 현재 미디어 샘플에 대한 샘플 메타데이터를 상기 현재 미디어 샘플과 결합하는 단계; 및
    상기 현재 미디어 샘플에 대한 샘플 메타데이터의 적어도 하나의 샘플 메타데이터 요소를, 상기 현재 미디어 샘플에 대하여 수행된 디코딩의 적어도 한 단계 동안 상기 현재 미디어 샘플과 결합하는 것을 유지하는 단계
    를 포함하고,
    상기 유지하는 단계는,
    상기 현재 미디어 샘플을 드롭시킬지 여부를 결정하는 단계; 및
    상기 현재 미디어 샘플을 드롭하기로 결정한 것에 응답하여, 상기 현재 미디어 샘플과 결합된 샘플 메타데이터를 또한 드롭시키는 단계
    를 포함하는 것인 미디어 재생 툴을 구현하는 컴퓨팅 시스템에서의 방법.
  10. 제9항에 있어서, 상기 현재 미디어 샘플에 대한 샘플 메타데이터 중 적어도 하나의 샘플 메타데이터 요소를 통과시키면서, 디코딩 동안 상기 현재 미디어 샘플에 대한 샘플 메타데이터 중 적어도 하나의 다른 샘플 메타데이터 요소를 소비하는 단계를 더 포함하는 미디어 재생 툴을 구현하는 컴퓨팅 시스템에서의 방법.
  11. 제9항에 있어서,
    상기 현재 미디어 샘플에 대한 샘플 메타데이터의 적어도 하나의 샘플 메타데이터 요소가 출력 처리 동안에 소비되고,
    상기 출력 처리는, 현재 미디어 샘플의 재구성된 버전을 재정렬하는 것과 병렬적으로, 다른 미디어 샘플에 관하여, 상기 현재 미디어 샘플에 대한 샘플 메타데이터의 적어도 일부를 재정렬하는 것을 포함하여, 디코딩 순서로부터 디스플레이 순서로 샘플을 재정렬하는 단계를 포함하는 것인 미디어 재생 툴을 구현하는 컴퓨팅 시스템에서의 방법.
  12. 제9항에 있어서, 상기 현재 미디어 샘플에 대한 샘플 메타데이터는, 프리젠테이션 타임스탬프, 디코딩 타임스탬프, 프레임 프리젠테이션 지속 시간 값, 최대 디코딩가능 공간 해상도 값, 프리 롤 플래그 값, 불연속 플래그 값, 회전 데이터, 및 3차원 디스플레이 데이터 중 하나 이상을 포함하는 것인 미디어 재생 툴을 구현하는 컴퓨팅 시스템에서의 방법.
  13. 제9항에 있어서,
    상기 현재 미디어 샘플이 상기 현재 미디어 샘플에 대한 샘플 메타데이터에서의 타임스탬프를 누락하고 있는지 여부를 결정하는 단계; 및
    상기 현재 미디어 샘플이 상기 현재 미디어 샘플에 대한 샘플 메타데이터에서의 타임스탬프를 누락하고 있다는 결정에 응답하여, 상기 누락된 타임스탬프에 대한 대체를 결정하기 위하여 다른 미디어 샘플들에 대한 타임스탬프들 사이를 보간하는 단계
    를 더 포함하는 미디어 재생 툴을 구현하는 컴퓨팅 시스템에서의 방법.
  14. 프로세서와 메모리를 포함하고, 미디어 재생 툴을 구현하는 컴퓨팅 시스템에 있어서,
    미디어 디코더; 및
    미디어 소스를 포함하고,
    상기 미디어 소스는,
    데이터 유닛들로 분할되는 입력 데이터 - 상기 입력 데이터는 미디어 컨테이너 포맷 또는 스트리밍 미디어 포맷에 따라 조직화되고, 상기 입력 데이터는, 미디어 샘플들에 대한 미디어 기본 비트 스트림에서의 인코딩된 데이터 및 상기 미디어 샘플들 중 적어도 일부에 대한 미디어 기본 비트 스트림 외부의 샘플 메타데이터를 포함함 - 를 수신하고;
    상기 샘플 메타데이터 중에서 정해진 샘플 메타데이터를, 상기 데이터 유닛들 중 정해진 데이터 유닛과 연관시키고;
    상기 정해진 샘플 메타데이터를, 상기 미디어 샘플들 중에서, 상기 정해진 데이터 유닛에서 시작되는 인코딩된 데이터를 가지는 정해진 미디어 샘플과 결합시키고;
    상기 정해진 미디어 샘플에 대한 상기 정해진 샘플 메타데이터 및 상기 인코딩된 데이터를 상기 미디어 디코더에 제공하도록
    구성되는 것인 미디어 재생 툴을 구현하는 컴퓨팅 시스템.
  15. 제14항에 있어서, 상기 미디어 디코더는, 상기 정해진 미디어 샘플에 대하여,
    상기 정해진 미디어 샘플을 드롭시킬지 여부를 결정하고, 상기 정해진 미디어 샘플을 드롭시키는 결정에 응답하여, 상기 정해진 샘플 메타데이터를 또한 드롭시키는 것;
    상기 정해진 미디어 샘플을 지연시킬지 여부를 결정하고, 상기 정해진 미디어 샘플을 지연시키는 결정에 응답하여, 상기 정해진 샘플 메타데이터를 또한 지연시키는 것; 및/또는
    상기 정해진 미디어 샘플을 다수의 새로운 미디어 샘플들로 분할할지 여부를 결정하고, 상기 정해진 미디어 샘플을 다수의 새로운 미디어 샘플들로 분할하는 것에 응답하여, 상기 정해진 샘플 메타데이터를, 상기 다수의 새로운 미디어 샘플들 중 제1 새로운 미디어 샘플에만 할당(assign)하고, 상기 다수의 새로운 미디어 샘플들 중 임의의 다른 미디어 샘플들에게는 할당하지 않는 것
    중 적어도 하나에 의하여, 상기 정해진 샘플 메타데이터와 상기 정해진 미디어 샘플의 결합을 유지하도록 구성되는 것인 미디어 재생 툴을 구현하는 컴퓨팅 시스템.
KR1020177010925A 2014-09-25 2015-09-16 샘플 메타데이터와 미디어 샘플들의 결합 KR20170065568A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/497,001 US10298931B2 (en) 2014-09-25 2014-09-25 Coupling sample metadata with media samples
US14/497,001 2014-09-25
PCT/US2015/050323 WO2016048735A1 (en) 2014-09-25 2015-09-16 Coupling sample metadata with media samples

Publications (1)

Publication Number Publication Date
KR20170065568A true KR20170065568A (ko) 2017-06-13

Family

ID=54292904

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177010925A KR20170065568A (ko) 2014-09-25 2015-09-16 샘플 메타데이터와 미디어 샘플들의 결합

Country Status (5)

Country Link
US (1) US10298931B2 (ko)
EP (1) EP3198871A1 (ko)
KR (1) KR20170065568A (ko)
CN (1) CN107077873A (ko)
WO (1) WO2016048735A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160057173A1 (en) * 2014-07-16 2016-02-25 Genband Us Llc Media Playback Synchronization Across Multiple Clients
US11968380B2 (en) * 2016-06-29 2024-04-23 Intel Corporation Encoding and decoding video
US11049219B2 (en) 2017-06-06 2021-06-29 Gopro, Inc. Methods and apparatus for multi-encoder processing of high resolution content
CN108573287B (zh) * 2018-05-11 2021-10-29 浙江工业大学 一种基于深度神经网络的图像编解码器的训练方法
US11146852B2 (en) 2018-05-11 2021-10-12 Qualcomm Incorporated Signaling missing sections of media data for network streaming in a segment
US10986402B2 (en) * 2018-07-11 2021-04-20 Qualcomm Incorporated Time signaling for media streaming
US11050927B2 (en) * 2019-02-14 2021-06-29 Gopro, Inc. Temporal information synchronization of imaging devices
US11228781B2 (en) 2019-06-26 2022-01-18 Gopro, Inc. Methods and apparatus for maximizing codec bandwidth in video applications
US11481863B2 (en) 2019-10-23 2022-10-25 Gopro, Inc. Methods and apparatus for hardware accelerated image processing for spherical projections

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6523046B2 (en) * 2000-02-25 2003-02-18 Microsoft Corporation Infrastructure and method for supporting generic multimedia metadata
US7298741B2 (en) * 2003-02-27 2007-11-20 Sharp Laboratories Of America, Inc. Robust MPEG-2 multiplexing system and method using an adjustable time stamp
JP4088274B2 (ja) * 2004-06-28 2008-05-21 株式会社東芝 メタデータの構造及びその編集方法
US8019167B2 (en) * 2007-01-03 2011-09-13 Human Monitoring Ltd. Compressing high resolution images in a low resolution video
KR101609890B1 (ko) * 2008-09-18 2016-04-06 파나소닉 아이피 매니지먼트 가부시키가이샤 화상 복호 장치, 화상 부호화 장치, 화상 복호 방법, 화상 부호화 방법 및 프로그램
EP2323392B1 (en) 2009-11-03 2012-01-04 Tektronix International Sales GmbH Method and apparatus for measuring delay within a compressed digital stream
US8731053B2 (en) * 2009-11-18 2014-05-20 Tektronix, Inc. Method of multiplexing H.264 elementary streams without timing information coded
US9131033B2 (en) 2010-07-20 2015-09-08 Qualcomm Incoporated Providing sequence data sets for streaming video data
US9503771B2 (en) 2011-02-04 2016-11-22 Qualcomm Incorporated Low latency wireless display for graphics
US20120230393A1 (en) 2011-03-08 2012-09-13 Sue Mon Thet Naing Methods and apparatuses for encoding and decoding video using adaptive interpolation filter length
US20130195171A1 (en) 2012-01-30 2013-08-01 Qualcomm Incorporated Method of coding video and storing video content
CN103024603B (zh) * 2012-12-27 2016-06-15 合一网络技术(北京)有限公司 一种用于解决播放网络视频时短时停顿的装置及方法
US9942545B2 (en) 2013-01-03 2018-04-10 Texas Instruments Incorporated Methods and apparatus for indicating picture buffer size for coded scalable video
CN103605778B (zh) * 2013-11-28 2017-02-15 中安消技术有限公司 一种视频文件的定位方法、装置及系统

Also Published As

Publication number Publication date
EP3198871A1 (en) 2017-08-02
US20160094847A1 (en) 2016-03-31
WO2016048735A1 (en) 2016-03-31
US10298931B2 (en) 2019-05-21
CN107077873A (zh) 2017-08-18

Similar Documents

Publication Publication Date Title
US11943480B2 (en) Constraints and unit types to simplify video random access
KR102474461B1 (ko) 코딩된 영역들의 완료를 나타내는 신택스 구조들
JP6312704B2 (ja) ビデオ・スプライシングを単純化する、バッファリング情報のためのシンタックス及びセマンティックス
US10298931B2 (en) Coupling sample metadata with media samples
US8918533B2 (en) Video switching for streaming video data
KR101944565B1 (ko) 비디오 인코딩 및 디코딩시의 레이턴시 저감 기법
TWI513281B (zh) 寫碼用於視訊寫碼之計時資訊
CN110896486B (zh) 利用高层语法架构进行编解码的方法和设备
JP2022521943A (ja) ビデオストリームにおけるサブ領域パーティションでパディング処理する方法、装置及びコンピュータプログラム
US11687386B2 (en) MPD validity expiration processing model
BR112015016254B1 (pt) Método realizado por um dispositivo de computação, mídia legível por computador e dispositivo de computação