KR102122628B1 - 컨테이너 포맷으로 된 미디어 파일의 구문 인식 조작 - Google Patents
컨테이너 포맷으로 된 미디어 파일의 구문 인식 조작 Download PDFInfo
- Publication number
- KR102122628B1 KR102122628B1 KR1020157031759A KR20157031759A KR102122628B1 KR 102122628 B1 KR102122628 B1 KR 102122628B1 KR 1020157031759 A KR1020157031759 A KR 1020157031759A KR 20157031759 A KR20157031759 A KR 20157031759A KR 102122628 B1 KR102122628 B1 KR 102122628B1
- Authority
- KR
- South Korea
- Prior art keywords
- container format
- syntax
- syntax elements
- defined according
- media file
- Prior art date
Links
- 238000012795 verification Methods 0.000 claims abstract description 28
- 238000002790 cross-validation Methods 0.000 claims abstract description 18
- 238000000034 method Methods 0.000 claims description 44
- 239000000872 buffer Substances 0.000 claims description 6
- 238000012545 processing Methods 0.000 abstract description 63
- 238000012360 testing method Methods 0.000 abstract description 8
- 239000012634 fragment Substances 0.000 description 24
- 230000006854 communication Effects 0.000 description 23
- 238000004891 communication Methods 0.000 description 23
- 230000015654 memory Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000009877 rendering Methods 0.000 description 5
- AWSBQWZZLBPUQH-UHFFFAOYSA-N mdat Chemical compound C1=C2CC(N)CCC2=CC2=C1OCO2 AWSBQWZZLBPUQH-UHFFFAOYSA-N 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000002059 diagnostic imaging Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/40—Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
- G06F16/48—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/40—Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B27/00—Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
- G11B27/36—Monitoring, i.e. supervising the progress of recording or reproducing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Multimedia (AREA)
- Library & Information Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Information Transfer Between Computers (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Television Signal Processing For Recording (AREA)
Abstract
컨테이너 포맷 처리 도구는 미디어 파일의 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소의 구문 인식 조작을 수행한다. 예를 들면, 컨테이너 포맷 검증기는 컨테이너 포맷에 대한 미디어 파일의 일치성을 체크하고, 이것은 다양한 미디어 콘텐츠 소스와 재생 장비 간의 상호 운용성을 보장하는데 도움을 줄 수 있다. 일치성 검증은 개별 구문 요소의 검증, 교차 검증, 임의의 강제적 구문 요소가 존재하는지의 검증, 및/또는 동기화의 검증을 포함할 수 있다. 또는, 컨테이너 포맷 "퍼저"는 미디어 파일의 손상을 시뮬레이션하고, 이것은 미디어 파일의 에러에 대한 재생 장비의 회복성을 테스트하는데 도움을 줄 수 있다. 컨테이너 포맷 퍼저는 랜덤 비트 플리핑 에러, 오디오 기록 실패 또는 부정확한 기록 종결을 시뮬레이션할 수 있다. 또는, 컨테이너 포맷 편집기는 컨테이너 포맷의 미디어 파일을 다른 방식으로 편집할 수 있다.
Description
엔지니어들은 디지털 미디어 콘텐츠의 비트율을 감소시키기 위해 압축(소스 코딩 또는 소스 인코딩이라고도 부른다)을 이용한다. 압축은 정보를 더 낮은 비트율 형태로 변환함으로써 미디어 정보의 저장 및 전송 비용을 감소시킨다. 압축풀기(디코딩이라고도 부른다)는 압축 형태로부터 원래 정보의 버전을 재구성한다. "코덱"은 인코더/디코더 시스템이다. 과거 20년 동안, 각종의 비디오 코덱 표준 및 포맷이 채용되어 왔고, 각종의 오디오 코덱 표준 및 포맷이 채용되어 왔다. 코덱 표준 및 포맷은 전형적으로 인코딩된 미디어 비트스트림(가끔은 기본 미디어 비트스트림이라 부름)의 구문에 대한 옵션들을 규정하여 인코딩 및 디코딩시에 특정의 특징을 사용할 때 기본 미디어 비트스트림의 파라미터들을 상세히 열거한다. 많은 경우에, 코덱 표준 또는 포맷은 디코딩시에 정확한 결과를 달성하기 위해 디코더가 수행해야 하는 디코딩 동작에 대한 세부를 또한 제공한다.
미디어 컨테이너 포맷은 인코딩된 미디어 콘텐츠를 저장, 전송 등을 위해 조직하는 법을 특정한다. 미디어 컨테이너 포맷은 인코딩된 미디어 콘텐츠, 타이밍 정보, 디지털 권리 관리 정보, 에러 보정 정보 또는 기타 정보에 대한 메타데이터를 특정할 수 있다. MPEG-2 TS/PS, 진보형 시스템 포맷("ASF")(공식적으로는 진보형 스트리밍 포맷), ISO/IEC 14496-12(ISO 베이스 미디어 파일 포맷), 14496-14(MP4 파일 포맷) 및 14496-15(AVC 파일 포맷)에서 규정된 MPEG-4("MP4"), 공통 파일 포맷("CFF") 및 마트로스카(Matroska) 비디오 포맷("MKV")을 비롯한 각종의 컨테이너 포맷이 멀티미디어 콘텐츠용으로 공표되었다. MP4 또는 CFF와 같은 컨테이너 포맷의 명세서는 미디어 파일이 컨테이너 포맷과 일치하도록 인코딩된 미디어 콘텐츠를 조직하고 인코딩된 미디어 콘텐츠용의 메타데이터를 추가하는 법을 규정한다. 컨테이너 포맷 명세서는 전형적으로 컨테이너 포맷의 미디어 파일의 구문에 대한 옵션들을 규정하여 특정한 특징이 사용될 때 미디어 파일의 파라미터의 의미 및 조직을 상세히 열거한다. 일부 경우에, 컨테이너 포맷 명세서는 컨테이너 포맷 싱크 또는 컨테이너 포맷 소스에 의해 수행되는 동작에 대한 세부를 또한 제공할 수 있다. 컨테이너 포맷 싱크는 (예를 들면, 오디오 인코더 또는 비디오 인코더와 같은 미디어 인코더로부터의) 기본 미디어 비트스트림의 인코딩된 미디어 콘텐츠를 컨테이너 포맷에 따라 미디어 파일에 둔다. 컨테이너 포맷 소스는 컨테이너 포맷의 미디어 파일을 파싱(parse)하고 기본 미디어 비트스트림을 디코딩을 위해 미디어 디코더에 제공한다.
컨테이너 포맷의 수백만 개의 미디어 파일이 매일 다양한 소스에 의해 생성된다. 컨테이너 포맷의 더 많은 미디어 파일이 다양한 활동을 통하여 다른 사용자들에 의해 소비된다. 일부 경우에, 컨테이너 포맷의 미디어 파일은 스트리밍 또는 컨퍼런싱 동안에 랜덤 비트 플립에 기인하여 손상(corrupt)된다. 또는, 미디어 파일은 저장 실패, 스마트폰에 의한 부적당한 기록 또는 다른 이유에 기인해서 손상될 수 있다. 그러나, 최근의 많은 컨테이너 포맷에 대하여, 기존의 도구(tool)들은 컨테이너 포맷에 대한 미디어 파일의 일치성을 검증하기 위한, 또는 적어도 손상된 파일 컨테이너를 식별하기 위한 충분한 수단을 제공하지 않을 뿐만 아니라, 미디어 파일의 에러에 대한 재생 장비의 회복력(resilience)을 테스트하기 위해 미디어 파일의 요소들을 변경하는 충분한 수단을 제공하지 않는다.
요약하자면, 여기에서 설명하는 혁신(innovation)은 미디어 파일에서 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소의 구문 인식 조작을 수행하는 방법을 제공한다. 예를 들면, 컨테이너 포맷 검증기는 컨테이너 포맷에 대한 미디어 파일의 일치성을 체크하고, 이것은 다양한 미디어 콘텐츠 소스와 재생 장비 간의 상호운용성을 보장하는데 도움을 줄 수 있다. 또는, 컨테이너 포맷 "퍼저"(fuzzer)는 미디어 파일의 손상을 시뮬레이션하고, 이것은 미디어 파일의 에러에 대한 재생 장비의 회복성을 테스트하는데 도움을 줄 수 있다. 또는, 컨테이너 포맷 편집기는 등가적인 미디어 파일을 생성하고, 이것은 미디어 파일의 새로운 객체를 테스트하는데 도움을 줄 수 있다.
여기에서 설명하는 하나의 혁신 집합에 따르면, 컨테이너 포맷 처리 도구는 오디오 콘텐츠, 이미지 콘텐츠 및/또는 비디오 콘텐츠를 포함하는 프리젠테이션용 컨테이너 포맷의 미디어 파일을 수신한다. 컨테이너 포맷은 미디어 파일이 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소를 포함하도록 트리 구조형이다. 예를 들면, 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소는 컨테이너 포맷에 따라 계층 내에 네스트된 객체 및 객체들의 속성이다. 컨테이너 포맷 처리 도구는 미디어 파일의 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소의 적어도 일부의 구문 인식 조작을 수행한다.
예를 들면, 구문 인식 조작의 일부로서, 컨테이너 포맷 검증기는 컨테이너 포맷에 대한 미디어 파일의 일치성을 체크한다. 검증은 주어진 구문 요소의 값이 컨테이너 포맷에 따른 주어진 구문 요소에 대한 하나 이상의 구속을 만족시킨다는 것을 컨테이너 포맷 검증기가 체크하는 단일 요소 검증을 포함할 수 있다. 또는, 검증은 주어진 구문 요소의 값이 컨테이너 포맷에 따라 규정된 하나 이상의 다른 구문 요소의 값과 일치한다는 것을 컨테이너 포맷 검증기가 체크하는 교차 검증을 포함할 수 있다. 더 나아가, 검증은 프리젠테이션에서 오디오 샘플과 비디오 샘플 간의 동기화 체크 또는 컨테이너 포맷에 따라 규정된 임의의 강제적 구문 요소의 존재에 대한 체크를 포함할 수 있다.
또는, 구문 인식 조작의 일부로서, 컨테이너 포맷 퍼저는 컨테이너 포맷의 미디어 포맷의 손상을 시뮬레이션한다. 미디어 파일의 손상을 시뮬레이션하기 위해, 컨테이너 포맷 퍼저는 유효 값들을 컨테이너 포맷에 따라 규정된 하나 이상의 구문 요소의 다른 값들로 교체하고, 컨테이너 포맷의 미디어 파일의 파일 포맷 구조를 보전할 수 있다. 또는, 컨테이너 포맷 퍼저는 주어진 구문 요소의 값을 변경함으로써 랜덤 비트 플립을 시뮬레이션할 수 있다. 더 나아가, 컨테이너 포맷 퍼저는 (예를 들면, 컨테이너 포맷의 미디어 파일의 오디오 트랙으로부터 오디오 데이터를 제거함으로써) 오디오 기록 실패를, 또는 (예를 들면, 컨테이너 포맷에 따라 규정된 무연고(extraneous) 구문 요소를 컨테이너 포맷의 미디어 파일의 객체에 추가함으로써) 기록의 부정확한 종결을 시뮬레이션할 수 있다.
또는, 구문 인식 조작의 일부로서, 컨테이너 포맷 편집기는 미디어 파일을 다른 방식으로 편집할 수 있다. 예를 들면, 컨테이너 포맷 편집기는 컨테이너 포맷에 따라 규정된 새로운 구문 요소를 미디어 파일에 삽입하여 컨테이너 포맷의 다른 미디어 파일로 문제점을 모델링할 수 있다. 또는, 컨테이너 포맷 편집기는 컨테이너 포맷에 따라 규정된 구문 요소들 중에서 하나 이상의 손상된 값을 검출하고, 하나 이상의 손상된 값을 보정할 수 있다.
미디어 파일에서 컨테이너 포맷에 따라 규정된 구문 요소의 구문 인식 조작은 방법의 일부로서, 방법을 수행하도록 적응된 컴퓨팅 시스템의 일부로서 또는 컴퓨팅 시스템이 방법을 수행하게 하는 컴퓨터 실행가능 명령어를 저장한 유형체의 컴퓨터 판독가능 매체의 일부로서 구현될 수 있다.
본 발명의 상기 및 다른 목적, 특징 및 장점들은 첨부 도면과 함께하는 이하의 상세한 설명으로부터 명백하게 될 것이다.
도 1은 여기에서 설명하는 일부 실시형태를 구현할 수 있는 예시적인 컴퓨팅 시스템을 보인 도이다.
도 2a 및 도 2b는 여기에서 설명하는 일부 실시형태를 구현할 수 있는 예시적인 네트워크 환경을 보인 도이다.
도 3은 여기에서 설명하는 일부 실시형태를 구현할 수 있는 예시적인 미디어 처리 시스템을 보인 도이다.
도 4는 여기에서 설명하는 일부 실시형태를 함께 구현할 수 있는 컨테이너 포맷 처리 도구를 보인 도이다.
도 5는 미디어 파일의 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소를 보인 도이다.
도 6은 미디어 파일의 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소의 구문 인식 조작을 위한 일반화된 기술을 보인 흐름도이다.
도 7은 컨테이너 포맷에 대한 미디어 파일의 일치성을 검증하는 기술을 보인 흐름도이다.
도 8은 미디어 파일의 컨테이너 포맷에 따라 규정된 계층적으로 구문 요소의 교차 검증을 보인 도이다.
도 9는 컨테이너 포맷으로 미디어 파일의 손상을 시뮬레이션하는 기술을 보인 흐름도이다.
도 10은 미디어 파일의 손상을 시뮬레이션하기 위해 랜덤 값으로 교체된 미디어 파일의 컨테이너 포맷에 따라 규정된 선택된 구문 요소의 값들을 보인, 속성 익스플로러의 화면을 보인 차트이다.
도 2a 및 도 2b는 여기에서 설명하는 일부 실시형태를 구현할 수 있는 예시적인 네트워크 환경을 보인 도이다.
도 3은 여기에서 설명하는 일부 실시형태를 구현할 수 있는 예시적인 미디어 처리 시스템을 보인 도이다.
도 4는 여기에서 설명하는 일부 실시형태를 함께 구현할 수 있는 컨테이너 포맷 처리 도구를 보인 도이다.
도 5는 미디어 파일의 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소를 보인 도이다.
도 6은 미디어 파일의 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소의 구문 인식 조작을 위한 일반화된 기술을 보인 흐름도이다.
도 7은 컨테이너 포맷에 대한 미디어 파일의 일치성을 검증하는 기술을 보인 흐름도이다.
도 8은 미디어 파일의 컨테이너 포맷에 따라 규정된 계층적으로 구문 요소의 교차 검증을 보인 도이다.
도 9는 컨테이너 포맷으로 미디어 파일의 손상을 시뮬레이션하는 기술을 보인 흐름도이다.
도 10은 미디어 파일의 손상을 시뮬레이션하기 위해 랜덤 값으로 교체된 미디어 파일의 컨테이너 포맷에 따라 규정된 선택된 구문 요소의 값들을 보인, 속성 익스플로러의 화면을 보인 차트이다.
상세한 설명은 컨테이너 포맷으로 미디어 파일의 구문 인식 조작을 위한 각종 혁신을 제시한다. 혁신은 미디어 파일의 일치성 검증을 위한 동작, 미디어 파일 손상의 시뮬레이션 동작 및 미디어 파일의 다른 편집 동작을 포함할 수 있다.
상이한 소스에 의해 생성된 미디어 파일이 주어진 컨테이너 포맷과 일치하는지의 검증은 재생 장비와의 상호운용성을 보장하는데 도움을 준다. 여기에서 설명하는 혁신의 일 실시형태에 따르면, 구문 인식 컨테이너 포맷 검증기는 주어진 컨테이너 포맷에 대한 미디어 파일의 일치성을 체크한다. 미디어 파일은 샘플의 타임스탬프(예를 들면, 비디오의 프레임), 샘플에 대한 인코딩된 콘텐츠의 청크의 크기, 인코딩된 콘텐츠의 청크의 오프셋 또는 위치, 트랙 정보 또는 기타 정보를 표시하는 컨테이너 포맷 구문 요소를 포함할 수 있다. 컨테이너 포맷 검증기는 컨테이너 포맷 명세서에서 특정된 구속에 대한 개별 구문 요소의 평가, 구문 요소의 값이 컨테이너 포맷에 따라 규정된 다른 관련된 구문 요소의 값과 일치하는지의 교차 검증, 및 컨테이너 포맷에 따라 규정된 임의의 강제적인 구문 요소가 존재하는지의 검증을 포함한 여러가지 방법으로 컨테이너 포맷에 대한 구문 요소의 일치성을 검증할 수 있다.
미디어 파일 손상의 시뮬레이션은 컨테이너 포맷 소스의 능력을 테스트하는데 도움을 줄 수 있다. 여기에서 설명하는 혁신의 다른 양태에 따르면, 구문 인식 컨테이너 포맷 퍼저는 미디어 파일의 파일 포맷 구조를 본래대로(intact) 유지하면서 미디어 파일의 컨테이너 포맷에 따라 규정된 구문 요소에 대한 임의의 각종 유형의 손상을 시뮬레이션한다. 컨테이너 포맷의 미디어 파일을 파싱 및 소비하는 컨테이너 포맷 소스는 미디어 파일의 에러에 취약할 수 있다. 바닥 수준 파싱 동작 중에 다른 유형의 손상된 미디어 파일과 마주칠 때 컨테이너 포맷 소스의 수행 평가는 에러의 검출, 에러에 대한 보호, 에러의 은닉 및 에러로부터의 복구에 있어서 개선을 가져올 수 있다. 이 방법으로, 컨테이너 포맷 소스는 컨테이너 포맷 소스가 복구할 수 있는 손상(소정 종류의 에러를 감추는 것 및 단순히 재생을 정지하는 것보다는 재생을 복구하는 것)에 대하여 더 강하게 될 수 있고, 한편 컨테이너 포맷 소스가 재생을 정지해야 하는 상황을 더 정확히 식별할 수 있다.
여기에서 설명하는 혁신의 다른 양태에 따르면, 구문 인식 컨테이너 포맷 편집기는 미디어 파일을 컨테이너 포맷으로 편집하고, 이것은 바람직한 속성을 가진 미디어 파일의 평가 및 공유를 촉진한다. 예를 들면, 컨테이너 포맷 편집기는 미디어 파일의 손상을 검출 및 보정한다. 또는, 다른 예로서, 컨테이너 포맷 편집기는 다른 미디어 파일에서 보여지는 문제점을 모델링하기 위해 컨테이너 포맷에 따라 규정된 새로운 구문 요소를 삽입함으로써 미디어 파일을 만든다. 이 방법으로, 컨테이너 포맷의 주어진 미디어 파일에 대하여, 컨테이너 포맷 편집기는 저작권 관계 또는 디지털 권리 관리에 기인하는 접근 제한을 가진 인코딩된 미디어 콘텐츠를 이용하지 않고 다른 미디어 파일에서 식별된 문제점을 논증하기 위해 컨테이너 포맷에 따라 규정된 구문 요소의 다른 조합을 발생할 수 있다.
비록 여기에서 설명하는 동작들이 컨테이너 포맷 싱크 또는 컨테이너 포맷 소스와 관련된 컨테이너 포맷 처리 도구에 의해 수행되는 것으로 대신 설명되지만, 많은 경우에 그 동작들은 대안적으로 다른 유형의 컨테이너 포맷 처리 도구에 의해 수행될 수 있다. 여기에서 설명하는 일부 예는 비디오 콘텐츠를 수반한다. 더 일반적으로, 여기에서 설명하는 혁신은 이미지 콘텐츠(예를 들면, 일반적인 정지 화상 콘텐츠, 메디컬 스캔 콘텐츠, 다중 스펙트럼 심상 콘텐츠), 오디오 콘텐츠 또는 다른 유형의 미디어 콘텐츠에 적용될 수 있다.
여기에서 설명하는 일부 혁신은 MP4 또는 CFF 컨테이너 포맷에 특유한 구문 요소 및 동작을 참조하여 설명된다. 여기에서 설명하는 혁신은 ASF, MPEG-2 TS/PS 및 MKV와 같은 다른 컨테이너 포맷에 대하여 또한 구현될 수 있다.
더 일반적으로, 여기에서 설명하는 예들에 대한 각종의 대안예가 가능하다. 예를 들면, 여기에서 설명하는 방법들의 일부는 설명되는 방법 단계들의 순서를 변경함으로써, 소정의 방법 단계를 분리, 반복 또는 생략함으로써 변경될 수 있다. 개시된 기술의 각종 양태는 조합해서 또는 별도로 사용될 수 있다. 다른 실시형태는 여기에서 설명하는 하나 이상의 혁신을 사용한다. 여기에서 설명하는 일부 혁신은 배경에서 언급한 하나 이상의 문제점을 다룬다. 전형적으로, 주어진 기술/도구는 그러한 문제점들을 모두 해결하지 않는다.
I. 예시적인 컴퓨팅 시스템
도 1은 여기에서 설명하는 몇 가지 혁신을 구현할 수 있는 적당한 컴퓨팅 시스템(100)의 일반화된 예를 보인 것이다. 컴퓨팅 시스템(100)은, 혁신이 다양한 범용 또는 특수 용도 컴퓨팅 시스템으로 구현될 수 있기 때문에, 사용 범위 또는 기능에 대하여 임의의 제한을 주는 것으로 의도되지 않는다.
도 1을 참조하면, 컴퓨팅 시스템(100)은 하나 이상의 처리 장치(110, 115)와 메모리(120, 125)를 포함한다. 처리 장치(110, 115)는 컴퓨터 판독가능 명령어를 실행한다. 처리 장치는 범용 중앙 처리 장치("CPU"), 주문형 반도체("ASIC")의 프로세서 또는 임의의 다른 유형의 프로세서일 수 있다. 다중 처리 시스템에서는 처리 능력을 증가시키기 위해 복수의 처리 장치가 컴퓨터 실행가능 명령어를 실행한다. 예를 들면, 도 1은 중앙 처리 장치(110)뿐만 아니라 그래픽 처리 장치 또는 병렬 처리 장치(110)를 도시하고 있다. 유형체(tangible) 메모리(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일 수 있다. 오디오의 경우에, 입력 장치(150)는 마이크로폰 또는 아날로그 또는 디지털 형태의 오디오 입력을 수신하는 유사한 장치, 또는 컴퓨팅 시스템(100)에 오디오 샘플을 읽어들이는 CD-ROM 또는 CD-RW일 수 있다. 출력 장치(160)는 디스플레이, 프린터, 스피커, CD-기입기(writer), 또는 컴퓨팅 시스템(100)으로부터 출력을 제공하는 다른 장치일 수 있다.
통신 접속(170)은 통신 매체를 통해 다른 컴퓨팅 엔티티와 통신할 수 있게 한다. 통신 매체는 컴퓨터 실행가능 명령어, 오디오 또는 비디오 입력 또는 출력, 또는 피변조 데이터 신호의 다른 데이터와 같은 정보를 운반한다. 피변조 데이터 신호는 하나 이상의 특성 집합을 가진 신호 또는 신호의 정보를 인코딩하는 방식으로 변경된 신호이다. 비제한적인 예로서, 통신 매체는 전기적, 광학적, RF 또는 다른 반송자를 이용할 수 있다.
혁신은 컴퓨터 판독가능 매체의 일반적인 상황으로 설명될 수 있다. 컴퓨터 판독가능 매체는 컴퓨팅 환경에서 접근될 수 있는 임의의 이용가능한 유형체 매체이다. 비제한적인 예로서, 컴퓨팅 시스템(100)에서, 컴퓨터 판독가능 매체는 메모리(120, 125), 스토리지(140), 및 전술한 것들의 임의 조합을 포함한다.
혁신은 목표 실제 또는 가상 프로세서의 컴퓨팅 시스템에서 실행되는 프로그램 모듈(컴퓨터 프로그램 제품이라고도 부른다)에 포함된 것과 같은 컴퓨터 실행가능 명령어(기계 판독가능 명령어라고도 부른다)의 일반적인 상황으로 설명될 수 있다. 일반적으로, 프로그램 모듈은 특정의 태스크를 수행하거나 특정의 추상적 데이터 유형을 구현하는 루틴, 프로그램, 라이브러리, 객체, 부류(class), 컴포넌트, 데이터 구조 등을 포함한다. 프로그램 모듈의 기능은 각종 실시형태에서 필요에 따라 결합 또는 분리될 수 있다. 프로그램 모듈의 컴퓨터 실행가능 명령어는 국지적 또는 분산형 컴퓨팅 시스템 내에서 실행될 수 있다.
용어 "시스템" 및 "장치"는 여기에서 상호 교환적으로 사용된다. 문맥에서 다른 방식으로 명확히 표시하지 않는 한, 상기 용어는 컴퓨팅 시스템 또는 컴퓨팅 장치의 유형에 어떠한 제한도 함축하지 않는다. 일반적으로, 컴퓨팅 시스템 또는 컴퓨팅 장치는 국지형 또는 분산형일 수 있고, 여기에서 설명하는 기능을 구현하는 소프트웨어와 함께 특수 용도 하드웨어 및/또는 범용 하드웨어의 임의 조합을 포함할 수 있다.
개시되는 방법은 개시된 임의의 방법을 수행하도록 구성된 특수 컴퓨팅 하드웨어를 이용하여 또한 구현될 수 있다. 예를 들면, 개시된 방법은 개시된 임의의 방법을 구현하도록 특수하게 설계 또는 구성된 집적 회로(예를 들면, ASIC 디지털 신호 처리 장치와 같은 ASIC, 그래픽 처리 장치, 또는 필드 프로그래머블 게이트 어레이와 같은 프로그램 가능한 논리 장치)에 의해 또한 구현될 수 있다.
프리젠테이션을 위해, 상세한 설명은 컴퓨팅 시스템의 컴퓨터 동작을 설명하기 위해 "결정한다", "제공한다" 및 "사용한다" 등의 용어를 사용한다. 이러한 용어들은 컴퓨터에 의해 수행되는 동작의 높은 수준 추상화(high-level abstraction)이고, 인간에 의해 수행되는 행동과 혼동되어서는 안된다. 이러한 용어에 대응하는 실제 컴퓨터 동작은 구현예에 따라서 변한다. 여기에서 사용되는 용어 "...에 의해 제공된"은 엔티티로부터 직접적으로 또는 엔티티로부터 하나 이상의 매개물을 통하여 간접적으로 행하는 임의의 전달 형태를 의미한다.
II. 예시적인 네트워크 환경
도 2a와 도 2b는 미디어 인코더(220)와 미디어 디코더(270)를 포함한 예시적인 네트워크 환경(201, 202)을 보인 것이다. 인코더(220)와 디코더(270)는 적당한 통신 프로토콜을 이용하는 네트워크(250)를 통해 접속된다. 네트워크(250)는 인터넷 또는 다른 컴퓨터 네트워크를 포함할 수 있다.
도 2a에 도시된 네트워크 환경(201)에서, 각각의 실시간 통신("RTC") 도구(210)는 양방향 통신을 위한 하나 이상의 인코더(220) 및 하나 이상의 디코더(270)뿐만 아니라 컨테이너 포맷 싱크 및 소스 도구(도시 생략됨)를 포함한다. 비디오의 경우에, 주어진 인코더(220)는 SMPTE 421M 표준, ISO/IEC 14496-10 표준(H.264 또는 AVC라고도 알려져 있음), HEVC 표준, 다른 표준 또는 사적 포맷과 호환되는 출력을 생성할 수 있고, 대응하는 디코더(270)는 상기 인코더(220)로부터 인코딩된 데이터를 수신한다. 오디오의 경우에, 주어진 인코더(220)는 HE AAC 표준, AAC 표준, 윈도즈 미디어 오디오("WMA") 포맷 또는 다른 사적 포맷과 호환되는 출력을 생성할 수 있고, 대응하는 디코더(270)는 상기 인코더(220)로부터 인코딩된 데이터를 수신한다. 컨테이너 포맷 싱크는 컨테이너 포맷에 따라 출력 미디어 콘텐츠를 처리하고, 컨테이너 포맷 소스는 컨테이너 포맷에 따라 입력 미디어 콘텐츠를 처리한다. 양방향 통신은 화상 회의, 화상 전화 통화, 또는 다른 양자(two-party)간 통신 시나리오의 일부일 수 있다. 비록 도 2a의 네트워크 환경(201)이 2개의 실시간 통신 도구(210)를 포함하지만, 네트워크 환경(201)은 그 대신에 다자간 통신에 참여하는 3개 이상의 실시간 통신 도구(210)를 포함할 수 있다.
실시간 통신 도구(210)는 인코더(220)에 의한 인코딩을 관리한다. 도 3은 실시간 통신 도구(210)에 포함될 수 있는, 컨테이너 포맷 싱크를 포함하는, 예시적인 인코더 시스템을 (상반부에) 도시한다. 대안적으로, 실시간 통신 도구(210)는 다른 인코더 시스템을 이용한다. 실시간 통신 도구(210)는 디코더(270)에 의한 디코딩을 또한 관리한다. 도 3은 실시간 통신 도구(210)에 포함될 수 있는, 컨테이너 포맷 소스를 포함하는, 예시적인 디코더 시스템을 (하반부에) 또한 도시한다. 대안적으로, 실시간 통신 도구(210)는 다른 디코더 시스템을 이용한다.
도 2b에 도시된 네트워크 환경(202)에 있어서, 인코딩 도구(212)는 디코더(270)를 포함한 복수의 재생 도구(214)에 전달하기 위한 미디어를 인코딩하는 하나 이상의 인코더(220)를 포함한다. 인코딩 도구(212)에 있어서, 컨테이너 포맷 싱크(도시 생략됨)는 컨테이너 포맷에 따라 출력 미디어 콘텐츠를 처리한다. 재생 도구(214)에 있어서, 컨테이너 포맷 소스(도시 생략됨)는 컨테이너 포맷에 따라 입력 미디어 콘텐츠를 처리한다. 단방향 통신은 영상 감시 시스템, 웹 카메라 모니터링 시스템, 원격 데스크톱 회의 프리젠테이션, 또는 미디어가 인코드되어 하나의 위치로부터 하나 이상의 다른 위치로 전송되는 다른 시나리오에 대하여 제공될 수 있다. 비록 도 2b의 네트워크 환경(202)이 2개의 재생 도구(214)를 포함하지만, 네트워크 환경(202)은 더 많은 또는 더 적은 재생 도구(214)를 포함할 수 있다. 일반적으로, 재생 도구(214)는 재생 도구(214)가 수신하는 미디어의 스트림을 결정하기 위해 인코딩 도구(212)와 통신한다. 재생 도구(214)는 스트림을 수신하고, 수신한 인코딩된 데이터를 적당한 기간 동안 버퍼링하고, 디코딩 및 재생을 시작한다.
도 3은 인코딩 도구(212)에 포함될 수 있는, 컨테이너 포맷 싱크를 포함하는, 예시적인 인코더 시스템을 (상반부에) 도시한다. 대안적으로, 인코딩 도구(212)는 다른 인코더 시스템을 이용한다. 인코딩 도구(212)는 하나 이상의 재생 도구(214)와의 접속을 관리하기 위한 서버 측 제어기 로직을 또한 포함할 수 있다. 도 3은 재생 도구(214)에 포함될 수 있는, 컨테이너 포맷 소스를 포함하는, 예시적인 디코더 시스템을 (하반부에) 또한 도시한다. 대안적으로, 재생 도구(214)는 다른 디코더 시스템을 이용한다. 재생 도구(214)는 인코딩 도구(212)와의 접속을 관리하기 위한 클라이언트 측 제어기 로직을 또한 포함할 수 있다.
도 2a에 도시된 네트워크 환경(201)은 복수의 인코더를 구비한 복수의 RTC 도구를 포함할 수 있다. 도 2b에 도시된 네트워크 환경(202)은 복수의 인코더를 구비한 복수의 인코딩 도구를 포함할 수 있다. 그러한 인코더들은 접속 도구(splicing tool)에 의해 단일 비트스트림으로 접속되는 복수의 출력 비트스트림을 생성할 수 있다. 또는, 단일 인코더가 접속 도구에 의해 단일 비트스트림으로 접속되는 복수의 비트스트림을 생성할 수 있다.
III. 예시적인 컨테이너 포맷 처리 도구 및 컨테이너 포맷
도 3은 개시된 일부 실시형태가 함께 구현될 수 있는 예시적인 미디어 처리 시스템(300)의 블록도이다. 인코더 측에서, 시스템(300)은 하나 이상의 미디어 소스(310), 오디오 인코더(321), 비디오 인코더(322) 및 컨테이너 포맷 싱크(330)를 포함한다. 디코더 측에서, 시스템(300)은 컨테이너 포맷 소스(360), 오디오 디코더(371), 비디오 디코더(372) 및 렌더링(rendering) 엔진(381, 382)을 포함한다.
미디어 소스(310)는 미디어 콘텐츠를 제공한다. 비디오의 경우에, 미디어 소스(310)는 카메라, 튜너 카드, 스토리지 미디어, 스크린 포착 모듈, 애니메이션 출력 또는 다른 비디오 소스일 수 있다. 비디오 소스는 전형적으로 비디오 프레임의 시퀀스를 생성한다. 컨테이너 포맷 처리의 목적으로, 비디오의 "샘플"은 전형적으로 시간 인스턴스와 관련된 비디오 프레임이지만, 그 대신에, 주어진 시간에 비디오 객체를 나타내는 인터레이스된 비디오 필드 또는 비디오 객체 평면일 수 있다. 이미지 콘텐츠의 경우에, 미디어 소스(310)는 그래픽 출력, 스캐너, 의료 촬상 도구 또는 다른 디지털 이미지 소스일 수 있고, 샘플은 전형적으로 이미지이다. 오디오 콘텐츠의 경우에, 미디어 소스(310)는 마이크로폰, 다른 음성 입력 장치, 스토리지 미디어 또는 다른 오디오 소스일 수 있다. 컨테이너 포맷 처리의 목적으로, 오디오의 "샘플"은 전형적으로 주어진 시간 또는 기간(time span)과 관련된 진폭 값의 프레임이다.
인코더(321, 322) 전에, 시스템(300)은 미디어 콘텐츠를 저장하는 버퍼뿐만 아니라 인코딩 전에 미디어 콘텐츠의 전처리(예를 들면, 필터링)를 수행하는 프리프로세서(pre-processor)를 포함할 수 있다. 예를 들면, 이미지 또는 비디오 콘텐츠의 경우에, 전처리는 색 공간 변환, 색 범위 스케일링 및/또는 다른 처리를 또한 포함할 수 있다.
일반적으로, 인코더(오디오 인코더(321), 비디오 인코더(322) 또는 다른 인코더)는 미디어 소스(310)에 의해 제공된 미디어 콘텐츠를 수신하고, 컨테이너 포맷 싱크(330)에 대한 출력으로서 기본 미디어 비트스트림으로 인코딩된 미디어 콘텐츠를 생성한다. 인코더(321, 322)는 실시간 통신을 위한 낮은 대기시간 인코딩 모드, 트랜스코딩 모드, 및 파일 또는 스트림으로부터의 미디어 재생을 위한 규칙적인 인코딩 모드와 같은 복수의 인코딩 모드 중의 임의의 모드로 동작할 수 있는 범용 인코딩 도구일 수 있고, 또는 상기 인코딩 모드 중의 하나용으로 적응된 특수 용도 인코딩 도구일 수 있다. 인코더(321, 322)는 운영체제 모듈로서, 애플리케이션 라이브러리의 일부로서, 독립식 애플리케이션의 일부로서 또는 특수 용도 하드웨어를 이용하여 구현될 수 있다.
일반적으로, 인코더(321, 322)는 예측, 주파수 변환, 양자화 및 엔트로피 코딩과 같은 인코딩 태스크를 수행하는 복수의 인코딩 모듈을 포함한다. 인코더(321, 322)에 의해 수행되는 정확한 동작은 코덱 포맷에 따라 변할 수 있다. 비디오의 경우에, 출력 인코딩된 비디오 콘텐츠의 포맷은 윈도즈 미디어 비디오 포맷, VC-1 포맷, MPEG-x 포맷(예를 들면, MPEG-1, MPEG-2 또는 MPEG-4), H.26x 포맷(예를 들면, H.261, H.262, H.263, H.264), HEVC 포맷, VPx 포맷 또는 다른 포맷일 수 있다. 이미지의 경우에, 출력 인코딩된 이미지 콘텐츠의 포맷은 JPEG 포맷, JPEG-XR 포맷 또는 다른 포맷일 수 있다. 오디오의 경우에, 인코딩된 오디오 콘텐츠의 포맷은 AAC 포맷(예를 들면, HE AAC), WMA 포맷 또는 다른 포맷일 수 있다.
기본 미디어 비트스트림의 인코딩된 미디어 콘텐츠는 임시 코드화 데이터 영역에서 집성 및 버퍼링된다. 집성되는 인코딩된 미디어 콘텐츠는, 각각의 기본 미디어 비트스트림의 구문의 일부로서, 인코딩된 미디어 콘텐츠에 관한 미디어 메타데이터를 포함할 수 있다.
컨테이너 포맷 싱크(330)는 기본 비트스트림의 인코딩된 미디어 콘텐츠를 수신한다. 컨테이너 포맷 싱크(330)는 MP4(ISO/IEC 14496-12, -14 또는 -15), CFF, ASF 또는 다른 컨테이너 포맷과 같은 컨테이너 포맷에 따라 미디어 파일로 인코딩된 미디어 콘텐츠를 조직한다. 예시적인 구현예에 있어서, 컨테이너 포맷 싱크(330)는 MP4 싱크 또는 CFF 싱크이다. 구현예에 따라서, 컨테이너 포맷 싱크(330)는 미디어 스트림으로서 송신하기 위해 또는 컨테이너 포맷에 따른 파일로서 저장하기 위해 인코딩된 미디어 콘텐츠를 패킷화할 수 있고, 그 경우에 컨테이너 포맷 싱크(330)는 미디어 파일의 구문의 일부로서 요소들을 추가한다. 또는, 더 일반적으로, 컨테이너 포맷 싱크(330)는 컨테이너 포맷에 대한 하나 이상의 미디어 시스템 다중화 프로토콜 또는 운송 프로토콜을 구현할 수 있다. 컨테이너 포맷 싱크(330)는 운영체제 모듈로서, 애플리케이션 라이브러리의 일부로서, 독립식 애플리케이션의 일부로서 또는 특수 용도 하드웨어를 이용하여 구현될 수 있다.
컨테이너 포맷 싱크(330)는 채널(350)에의 출력을 위해 컨테이너 포맷으로 미디어 파일을 제공할 수 있다. 채널(350)은 저장, 통신 접속(예를 들면, 인터넷을 통해) 또는 출력용의 다른 채널을 나타낸다.
또는, 컨테이너 포맷 싱크(330)는 컨테이너 포맷 구문 요소의 구문 인식 조작을 수행하는 컨테이너 포맷 처리 도구(340)에 컨테이너 포맷으로 미디어 파일을 제공할 수 있다. 컨테이너 포맷 처리 도구(340)는 운영체제 모듈로서, 애플리케이션 라이브러리의 일부로서, 독립식 애플리케이션의 일부로서 또는 특수 용도 하드웨어를 이용하여 구현될 수 있다. 비록 도 3에는 컨테이너 포맷 싱크(330)로부터 미디어 파일을 수신하고 채널(350)에 출력을 제공하는 컨테이너 포맷 처리 도구(340)가 도시되어 있지만, 대안적으로, 컨테이너 포맷 처리 도구(340)는 시스템(300)의 다른 곳에 위치될 수 있다. 예를 들면, 컨테이너 포맷 처리 도구(340)는 채널(350)로부터 미디어 파일들을 수신하고, 조정된 미디어 파일들을 다시 채널(350)에 또는 컨테이너 포맷 소스(360)에 제공할 수 있다. 또는, 컨테이너 포맷 처리 도구(340)의 하나 이상의 모듈이 예를 들면 일치성 검증을 위해 컨테이너 포맷 싱크(330)에서 직접 구현될 수 있다.
도 4는 컨테이너 포맷 처리 도구(340)의 예시적인 구조를 보인 것이다. 컨테이너 포맷 처리 도구(340)는 입력 미디어 파일(405)을 컨테이너 포맷으로 수신하고 출력 미디어 파일(495)을 컨테이너 포맷으로 생성한다. 컨테이너 포맷 처리 도구(340)는 컨테이너 포맷 검증기(410), 컨테이너 포맷 퍼저(420) 및 컨테이너 포맷 편집기(430)를 포함한다. 컨테이너 포맷 처리 도구(340)는 또한 입력 미디어 파일(405)을 임시로 저장하기 위한 버퍼(도시 생략됨)와, 출력 미디어 파일(495)을 임시로 저장하기 위한 버퍼(도시 생략됨)를 포함한다.
컨테이너 포맷 검증기(410)는 미디어 파일이 컨테이너 포맷과 일치하는지를 검증하기 위한 하나 이상 유형의 동작을 수행하도록 적응된다. 예를 들면, 컨테이너 포맷 검증기(410)는 섹션 IV에서 설명하는 바와 같이 단일 요소 검증, 교차 검증, 동기화 체크 및/또는 임의의 강제적 컨테이너 포맷 구문 요소가 존재하는지의 검증을 수행하도록 적응된다. 대안적으로, 컨테이너 포맷 검증기(410)는 컨테이너 포맷에 대한 일치성을 검증하도록 다른 및/또는 추가적인 유형의 동작을 수행하도록 적응된다.
컨테이너 포맷 퍼저(420)는 컨테이너 포맷의 미디어 파일의 손상을 시뮬레이션하는 하나 이상 유형의 동작을 수행하도록 적응된다. 예를 들면, 컨테이너 포맷 퍼저(420)는 섹션 IV에서 설명하는 바와 같이 컨테이너 포맷 구문 요소의 유효 값을 랜덤 값으로 교체하고, 오디오 기록 실패를 시뮬레이션하고 및/또는 기록의 부정확한 종결을 시뮬레이션하도록 적응된다. 대안적으로, 컨테이너 포맷 퍼저(420)는 미디어 파일의 손상을 시뮬레이션하는 다른 및/또는 추가적인 유형의 동작을 수행하도록 적응된다.
컨테이너 포맷 편집기(430)는 컨테이너 포맷의 미디어 파일을 다른 방식으로 편집하는 하나 이상 유형의 동작을 수행하도록 적응된다. 예를 들면, 컨테이너 포맷 편집기(430)는 섹션 IV에서 설명하는 바와 같이 컨테이너 포맷에 따라 규정된 새로운 구문 요소를 미디어 파일에 삽입하도록 적응된다. 대안적으로, 컨테이너 포맷 편집기(430)는 다른 및/또는 추가적인 유형의 편집 동작을 수행하도록 적응된다.
컨테이너 포맷 처리 도구(340)는 컨테이너 포맷 검증기(410), 퍼저(420) 및 편집기(430) 중의 하나 이상을 생략할 수 있다. 대안적으로, 컨테이너 포맷 처리 도구(340)는 다른 및/또는 추가적인 모듈을 포함할 수 있다.
도 5는 컨테이너 포맷의 예시적인 미디어 파일(500)을 보인 것이다. 미디어 파일(500)은 다른 객체 및/또는 컨테이너 포맷 속성을 내포하는 객체(가끔은 "박스"라고 부른다)를 포함하는 트리 구조형, 즉 계층적으로 조직된다. 객체(박스)는 전형적으로 박스에 대한 크기(즉, 길이) 값 및 유형 값을 포함하고, 그 다음에 다른 속성 및/또는 내포된 객체를 포함한다. "컨테이너"는 다른 객체들의 집합을 내포하고 그룹짓지만, 전형적으로 그 자체가 속성(크기 및 유형 값은 제외함)을 내포하지 않는 객체이다. 컨테이너 포맷 구문 요소는 객체(박스) 또는 속성일 수 있다.
미디어 파일(500)은 오디오 콘텐츠, 비디오 콘텐츠, 이미지 콘텐츠 및/또는 다른 콘텐츠로 프리젠테이션하기 위한 메타데이터를 포함한다. 프리젠테이션은 비디오 트랙 및 오디오 트랙과 같은 트랙으로 논리적으로 나누어진다. 트랙의 경우에, 각각의 시간 단위는 샘플(예를 들면, 비디오의 프레임, 오디오의 프레임)이다. 트랙 내의 샘플들은 번호가 붙여진다. 트랙은 또한 하나 이상의 샘플 설명을 갖는다. 트랙 내의 샘플은 인용에 의해 설명에 결합되고, 샘플의 설명은 샘플이 디코드되는 법을 표시한다.
미디어 파일(500)의 경우에, 파일(500)의 물리적 구조는 미디어 콘텐츠의 물리적 구조 및 조직에 결합되지 않는다. 즉, 샘플에 대한 헤더 정보와 기타의 메타데이터는 미디어 파일(500)에서 샘플의 인코딩된 미디어 콘텐츠와 인접할 필요가 없다. 더 나아가, 미디어 파일(500)의 물리적 구조뿐만 아니라 인코딩된 미디어 콘텐츠의 레이아웃은 미디어 샘플의 시간 순서에 결합된다. 그 대신에, 컨테이너 포맷에 따라 규정된 파일 구조 및 다른 구문 요소는 예를 들면 타임스탬프에 의해 미디어 샘플의 배치 및 타이밍을 특정한다. 이것은 탐구(seek) 동작 및 무작위 접근을 가능하게 한다.
도 5에서, 미디어 파일(500)은 파일 유형(502), 메타데이터용의 컨테이너(510) 및 미디어 데이터용의 컨테이너(590)를 포함한다. 파일 유형(502)은 미디어 파일(500)이 일치하는 컨테이너 포맷 명세서를 표시한다. 메타데이터용 컨테이너(510)는 프리젠테이션용 메타데이터를 내포하고, 미디어 데이터용 컨테이너(590)는 예를 들면 비디오의 샘플 및 오디오의 샘플에 대한 인코딩된 미디어 콘텐츠를 내포한다. 대안적으로, 인코딩된 미디어 콘텐츠는 인코딩된 미디어 콘텐츠의 위치를 표시하는 미디어 파일(500) 내의 참조문과 함께 미디어 파일(500)과는 별도로 저장될 수 있다.
메타데이터용의 컨테이너(510)는 무비 헤더(520)와 2개의 트랙용 컨테이너(531, 532)를 포함한다. 무비 헤더(520)는 지속기간, 타임 스케일, 양호한 재생 속도 및 양호한 볼륨과 같은 전체 프리젠테이션에 관한 구문 요소를 내포한다. 각각의 트랙 컨테이너(531, 532)는 트랙 헤더(541, 542)와 미디어 정보용 컨테이너(551, 552)를 포함한다. 트랙 헤더(541, 542)는 트랙 식별자, 지속기간 및 (비디오의 경우) 폭, 높이 및 층과 같은 트랙에 관한 구문 요소를 내포한다. 미디어 정보용 컨테이너(551, 552)는 미디어 헤더(561, 562)와, 샘플의 타이밍, 샘플 설명, 샘플의 인코딩된 미디어 콘텐츠의 청크의 위치 등에 대한 추가 정보(571, 572)를 포함한다. 예시적인 컨테이너 포맷의 구문 요소에 대한 추가적인 세부는 예를 들면 ISO/IEC 14496-12, -14 및 -15 또는 CFF 명세서를 참조한다.
대안적으로, 미디어 파일은 다른 및/또는 추가적인 컨테이너 포맷 구문 요소를 포함한다.
도 3으로 되돌아가서, 컨테이너 포맷 소스(360)는 컨테이너 포맷의 미디어 파일을 수신 및 처리한다. 컨테이너 포맷 소스(360)는 MP4, ASF, WebM과 같은 컨테이너 포맷 또는 다른 컨테이너 포맷에 따라 미디어 파일로 조직된 인코딩된 미디어 콘텐츠를 제거한다. 예시적인 구현예에 있어서, 컨테이너 포맷 소스(360)는 MP4 소스 또는 CFF 소스이다. 컨테이너 포맷 소스(360)는 섹션 IV에서 설명하는 바와 같이 컨테이너 포맷 구문 요소에 의해 소정 유형의 문제점을 검출 및 보정할 수 있다.
구현예에 따라서, 컨테이너 포맷 소스(360)는 미디어 스트림으로서의 송신을 위해 또는 컨테이너 포맷에 따른 파일로서의 저장을 위해 집성된 인코딩된 미디어 콘텐츠를 탈패킷화(de-packetize)할 수 있고, 이 경우에, 컨테이너 포맷 소스(360)는 미디어 파일의 구문의 일부로서 추가된 구문 요소를 파싱한다. 또는, 더 일반적으로, 컨테이너 포맷 소스(360)는 컨테이너 포맷에 대한 하나 이상의 미디어 시스템 역다중화 프로토콜 또는 운송 프로토콜을 구현할 수 있다. 컨테이너 포맷 소스(360)는 운영체제 모듈로서, 애플리케이션 라이브러리의 일부로서, 독립식 애플리케이션의 일부로서 또는 특수 용도 하드웨어를 이용하여 구현될 수 있다.
(하나 이상의 기본 미디어 비트스트림으로서) 컨테이너 포맷 소스(360)로부터 출력된 인코딩된 미디어 콘텐츠는 충분한 양의 이러한 데이터가 수신될 때까지 임시 코드화 데이터 영역에 저장된다. 버퍼링되는 인코딩된 미디어 콘텐츠는 기본 미디어 비트스트림의 구문의 일부로서 인코딩된 미디어 콘텐츠에 관한 미디어 메타데이터를 포함할 수 있다.
일반적으로, 디코더(오디오 디코더(371), 비디오 디코더(372) 또는 다른 디코더)는 기본 미디어 비트스트림으로 컨테이너 포맷 소스(360)에 의해 제공된 인코딩된 미디어 콘텐츠를 수신하고, 재구성된 미디어 콘텐츠를 생성한다. 디코더(371, 372)는 실시간 통신을 위한 낮은 대기시간 디코딩 모드, 및 파일 또는 스트림으로부터의 미디어 재생을 위한 규칙적인 디코딩 모드와 같은 복수의 디코딩 모드 중의 임의의 모드로 동작할 수 있는 범용 디코딩 도구일 수 있고, 또는 상기 디코딩 모드 중의 하나용으로 적응된 특수 용도 디코딩 도구일 수 있다. 디코더(371, 372)는 운영체제 모듈로서, 애플리케이션 라이브러리의 일부로서, 독립식 애플리케이션의 일부로서 또는 특수 용도 하드웨어를 이용하여 구현될 수 있다.
일반적으로, 디코더(371, 372)는 엔트로피 디코딩, 역 양자화, 역 주파수 변환 및 예측과 같은 디코딩 태스크를 수행하는 복수의 디코딩 모듈을 포함한다. 디코더(371, 372)에 의해 수행되는 정확한 동작은 코덱 포맷에 따라 변할 수 있다. 비디오의 경우에, 인코딩된 비디오 콘텐츠의 포맷은 윈도즈 미디어 비디오 포맷, VC-1 포맷, MPEG-x 포맷(예를 들면, MPEG-1, MPEG-2 또는 MPEG-4), H.26x 포맷(예를 들면, H.261, H.262, H.263, H.264), HEVC 포맷, VPx 포맷 또는 다른 포맷일 수 있다. 이미지의 경우에, 인코딩된 이미지 콘텐츠의 포맷은 JPEG 포맷, JPEG-XR 포맷 또는 다른 포맷일 수 있다. 오디오의 경우에, 인코딩된 오디오 콘텐츠의 포맷은 AAC 포맷(예를 들면, HE AAC), WMA 포맷 또는 다른 포맷일 수 있다.
디코드화 프레임 임시 메모리 저장 영역은 재구성된 미디어 콘텐츠용의 복수의 프레임 버퍼 저장 영역을 포함할 수 있다. 렌더링 엔진(381, 382)은 출력을 위해 상기 재구성된 미디어 콘텐츠를 처리한다. 오디오 렌더링 엔진(381)은 출력을 위해 상기 재구성된 오디오를 처리하고, 비디오 렌더링 엔진(382)은 출력을 위해 상기 재구성된 비디오를 처리한다. 예시적인 구현예에 있어서, 비디오 렌더링 엔진(382)은 색 변환기 및 디스플레이 모듈을 포함한다.
IV. 컨테이너 포맷 구문 요소의 구문 인식 조작
여기에서 설명하는 혁신은 미디어 파일의 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소의 구문 인식 조작을 수행하는 방법을 제공한다.
도 6은 미디어 파일의 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소의 구문 인식 조작을 위한 일반화된 기술(600)을 보인 것이다. 도 3과 관련하여 설명한 것과 같은 컨테이너 포맷 처리 도구가 이 기술(600)을 수행한다.
컨테이너 포맷 처리 도구는 프리젠테이션을 위해 컨테이너 포맷의 미디어 파일을 수신한다(610). 프리젠테이션은 오디오 콘텐츠, 이미지 콘텐츠 및/또는 비디오 콘텐츠를 포함한다. 컨테이너 포맷은 미디어 파일이 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소를 포함하도록 트리 구조형이다. 예를 들면, 컨테이너 포맷은 MP4, CFF 또는 다른 컨테이너 포맷이다. 더 일반적으로, 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소는 컨테이너 포맷에 따라 계층적으로 네스트된 객체 및 객체들의 속성이다.
컨테이너 포맷 처리 도구는 미디어 파일의 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소의 적어도 일부의 구문 인식 조작을 수행한다(620). 예를 들면, 구문 인식 조작은 일치성 검증(섹션 IV.A), 미디어 파일 손상의 시뮬레이션(섹션 IV.B) 및/또는 미디어 파일의 다른 편집(섹션 IV.C)을 포함할 수 있다.
A. 일치성 검증
일치성 검증을 위해, 컨테이너 포맷 처리 도구의 컨테이너 포맷 검증기는 미디어 파일의 컨테이너 포맷 구문 요소가 컨테이너 포맷 명세서와 일치하는지를 체크한다. 이것은 다양한 소스에 의해 생성된 미디어 파일의 상호 운용성을 보장하는데 도움을 줄 수 있다.
도 7은 컨테이너 포맷의 미디어 파일의 일치성을 검증하는 기술(700)을 보인 것이다. 도 3과 관련하여 설명한 바와 같은 컨테이너 포맷 처리 도구가 이 기술(700)을 수행한다.
도 7은 일치성 검증을 위한 동작 중 4개의 주요 단계를 보인 것이다. 대안적으로, 컨테이너 포맷 처리 도구는 일치성 검증의 일부로서 기타 및/또는 다른 동작을 수행한다. 특히, 도구는 도 7에 도시된 동작들을 모두 수행할 필요가 없다.
도 7에 도시된 기술(700)에 따르면, 도구는 개별적으로 취해진 컨테이너 포맷 구문 요소를 검증한다(710). 예를 들면, 주어진 구문 요소에 대하여 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소에 대한 이러한 단일 요소 검증의 일부로서, 도구는 구문 요소의 값이 구문 요소에 대한 하나 이상의 구속을 만족시키는지 체크한다. 전형적으로, 상기 구속은 관련 컨테이너 포맷 명세서의 구문 요소에 대하여 규정된다. 도구는 미디어 파일의 모든 구문 요소(박스, 속성)를 체크하거나 구문 요소의 부분집합을 체크할 수 있다. 도구는 컨테이너 포맷 명세서에 따라 미디어 파일의 구문 요소의 파싱 중에 또는 나중 단계에서 단일 요소 검증을 수행할 수 있다.
컨테이너 포맷 처리 도구는 선택된 컨테이너 포맷 구문 요소의 값들을 교차 검증한다(720). 예를 들면, 주어진 구문 요소에 대하여 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소의 집합에 대한 이러한 교차 검증의 일부로서, 도구는 구문 요소의 값이 계층적으로 조직된 구문 요소 중의 하나 이상의 다른 구문 요소의 값과 일치하는지 체크한다. 이것은 주어진 구문 요소와 미디어 파일 내의 다른 구문 요소 간의 상호작용이 유효한지 검증한다. 표 1은 예시적인 구현예에 있어서 일부 MP4 구문 요소에 대한 교차 검증의 사례들을 설명한다.
구문요소(들) 또는 조건 | 교차 검증을 위한 평가 |
트랙 헤더(tkhd) 박스에서의 지속기간 구문 요소 | 트랙 헤더 박스에서의 지속기간 구문 요소는, 무비 헤더 박스에 표시된 시간척도(timescale)로 트랙의 지속기간을 표시하는 정수이다. 트랙 헤더 박스에서의 지속기간 구문 요소의 값은 모든 트랙 편집의 지속기간의 합과 동일해야 한다. 그러나, 만일 편집 리스트가 없으면, 트랙 헤더 박스의 지속기간은 무비 헤더 박스로부터의 시간척도로 번환된 샘플 지속기간의 합과 동일해야 한다. 만일 트랙의 지속기간을 결정할 수 없으면, 지속기간은 모두 1로 세트되어야 한다(32-비트 maxint). 만일 상기 구속들이 만족되지 않으면, 미디어 파일은 일치하지 않는다. |
동기 샘플(stss) 박스에서 샘플_번호(shample_number) 구문 요소 | 동기 샘플 박스에서의 샘플_번호(sample_number) 구문 요소는 스트림의 임의 접근점들인 샘플들의 번호들(식별 번호들)을 제공하고, 샘플은 예를 들면 비디오 프레임 또는 오디오 프레임일 수 있다. 동기 샘플 박스에서 샘플_번호(sample_number) 요소의 값은 샘플 크기(stsz) 박스에서 샘플_수(sample_count) 요소의 값보다 크지 않아야 한다. 샘플 크기(stsz) 박스에서 샘플_수(sample_count) 요소는 트랙 내 샘플들의 개수(수)를 제공하는 정수이다. |
샘플 크기(stsz) 박스에서 엔트리_크기(entry_size) 구문 요소 | 만일 샘플 크기 박스에서 샘플_크기(sample_size) 요소의 값이 0이면, 샘플들은 다른 크기를 가질 수 있고, 샘플들의 크기는 개별적으로 특정된다. 트랙 내 샘플들의 수(sample_count) 각각에 대하여, 표는 그 번호에 의해 인덱싱되는 하나의 샘플의 크기를 특정하는 정수인 엔트리 크기(entry_size) 구문 요소를 포함한다. 샘플 크기(엔트리_크기 요소에 의해 특정된 것)의 합은 미디어 파일 크기보다 크지 않아야 한다. |
무비 프래그먼트를 가진 미디어 파일이 임의 접근 능력을 갖는다 | 만일 무비 프래그먼트를 가진 미디어 파일이 임의 접근 능력을 또한 가지면, 미디어 파일은 무비 프래그먼트 임의 접근(mfra) 박스 및 트랙 프래그먼트 임의 접근(tfra) 박스를 가질 것이다. |
청크 오프셋의 청크_오프셋(chunk_offset) 구문 요소, 부분 데이터 오프셋 정보(stco) 박스 | 청크_오프셋(chunk_offset) 구문 요소의 값은 청크를 내포한 미디어 파일로의 청크의 시작부의 오프셋을 표시한다. stco 박스의 표에서 청크_오프셋(chunk_offset) 구문 요소에 의해 표시된 최대치는 파일 크기보다 크지 않아야 한다. |
샘플에 대한 디코딩 시간(stts) 박스로부터의 샘플의 수에 비교되는 샘플에 대한 조성 시간(ctts) 박스 내 엔트리의 수 | stts 박스는 샘플 번호에 대한 디코딩 시간으로부터의 인덱싱을 촉진하는 표를 포함하고, 이때 각 엔트리는 시간 델타 및 그 시간 델타를 가진 연속 샘플의 수를 제공한다. ctts 박스는 디코딩 시간과 조성 시간 간의 오프셋을 제공하는 표를 포함하고, 이때 각 엔트리는 (디코딩 시간에 대한) 조성 시간 오프셋 및 그 조성 시간 오프셋을 가진 연속 샘플의 수를 제공한다. ctts 박스 내 엔트리의 수는 stts 박스로부터의 샘플의 수 이하일 것이다 |
무비 프래그먼트 임의 접근 오프셋(mfro) 박스와 무비 프래그먼트 임의 접근(mfra) 박스 | mfra 박스는 무비 프래그먼트가 있는 파일에서 임의 접근점을 찾는 것을 촉진하는 표를 제공한다. 전형적으로, mfra 박스는 미디어 파일의 끝에 있다. mfra 박스의 최종 박스는 mfra 박스의 크기를 반복하는 크기 속성을 포함한 mfro 박스이다. mfro 박스의 크기 속성은 mfra 박스 자체에 대하여 주어진 크기 값과 일치하여 파일의 끝으로부터 (mfro 박스의 크기 속성을 이용하여) 계산된 오프셋이 mfra 박스를 지시하고 박스 크기를 조정하게 해야 한다 |
무비 프래그먼트 임의 접근(mfra) 박스의 트랙 프래그먼트 임의 접근(tfra) 박스의 구문 요소 | mfra 박스는 임의 접근 정보가 제공되는 각 트랙에 대한 tfra 박스를 내포한다. tfra 박스는 임의 접근 샘플의 엔트리를 내포하고, 이때 각 엔트리는 구문 요소 moof_offset, traf_number, trun_number 및 sample_number를 이용하여 임의 접근 샘플에 대한 위치 및 프리젠테이션 시간을 제공한다. tfra 박스의 엔트리에 대하여, moof_offset 구문 요소는 파일의 시작부로부터 샘플의 무비 프래그먼트(moof) 박스까지의 유효 오프셋을 제공해야 하고, traf_number, trun_number 및 sample_number 구문 요소는 moof 박스 내 무비 프래그먼트의 트랙 프래그먼트 런(run) 내의 샘플을 식별하기 위해 존재하고 유효하여야 한다. |
무비 프래그먼트(moof) 박스의 무비 프래그먼트 헤더(mfhd) 박스 내 sequence_number 구문 요소 | moof 박스는 프리젠테이션을 시간적으로 연장하는 무비 프래그먼트에 대한 하나 이상의 tfra 박스 및 mfhd 박스를 내포한다. mfhd 박스에서, sequence_number 구문 요소는 프래그먼트에 대한 서수를 제공한다. 프래그먼트에 대한 sequence_number는 이전 프래그먼트에 대한 sequence_number에 비하여 오름차순으로 되어야 한다. |
부모 및 자식 박스 | 부모 박스의 크기는 부모 박스 자체 및 그 모든 자식 박스의 구문 요소를 포함하도록 충분해야 한다. |
트랙 프래그먼트 런(trun) 박스의 샘플_크기(sample_size) 구문 요소 및 미디어 데이터(mdat) 박스의 크기 | 트랙 런은 트랙에 대한 트랙 프래그먼트의 연속적인 샘플 집합을 기록한다. 트랙 런 내의 샘플들은 디폴트 크기(default size) 또는 명시적으로 시그널링된 크기를 가질 수 있다. 트랙 런 내 샘플들의 샘플 크기의 합은 mdat 박스의 크기 이하이어야 한다. |
대안적으로, 컨테이너 포맷 처리 도구는 교차 검증의 다른 및/또는 추가적인 사례(instance)들을 체크한다.
도 8은 교차 검증의 일반화된 예를 보인 것이다. 도 8에서, 컨테이너(571)는 샘플의 타이밍, 샘플 설명 및 샘플에 대한 인코딩된 미디어 콘텐츠의 청크 위치에 대한 정보를 갖는다. 컨테이너(571)는 비디오의 사용에 관한 속성을 가진 비디오 헤더(810), 샘플의 청크 위치에 관한 속성을 가진 미디어 데이터 소스(820) 객체, 및 샘플의 타이밍, 샘플 설명 등에 관한 정보를 가진 객체(840, 850, 860)들을 포함한 컨테이너(830)를 포함한다. 교차 검증을 위해, 도구는 객체 1(840)의 속성 2의 값이 객체 2(850)의 속성 3의 값 및 객체 3(860)의 속성 1의 값과 일치하는지 검증한다.
도 7로 되돌아가서, 컨테이너 포맷 처리 도구는 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소 중에서 임의의 강제적인 구문 요소의 존재를 또한 검증한다(730). 예를 들면, 도구는 임의의 미디어 파일에 필요한 임의의 컨테이너 포맷 구문 요소가 존재하는지를 체크한다. 또한, 주어진 미디어 파일에 대하여 사용되는 특징(예를 들면, 무비 프래그먼트의 임의 접근)을 고려하여, 도구는 그 특징을 지원하는 컨테이너 포맷 구문 요소의 존재를 체크할 수 있다(이것은 교차 검증의 경우로서 보여질 수 있다).
마지막으로, 컨테이너 포맷 처리 도구는 동기화를 검증한다(740). 예를 들면, 프리젠테이션의 오디오 샘플과 비디오 샘플 간의 동기화를 체크하기 위해, 도구는 오디오 샘플 중의 하나에 대한 타임스탬프가 비디오 샘플 중의 대응하는 하나에 대한 타임스탬프에 (예를 들면, 미리 규정된 문턱값에 따라서) 충분히 가까운지 체크한다. 이 방법으로, 도구는 타임스탬프가 너무 멀리 떨어져 있지 않은지 검증한다. 만일 타임스탬프가 너무 멀리 떨어져 있으면, 도구는 타임스탬프를 조정하거나, 동기화를 개선하기 위해 프레임(예를 들면, 비디오 프레임)들을 버리거나(drop), 재생이 실패하게 할 수 있다.
B. 손상
시뮬레이션
컨테이너 포맷 처리 도구는 컨테이너 포맷의 미디어 파일의 손상을 또한 시뮬레이션할 수 있다. 손상된 미디어 파일은 컨테이너 포맷 소스가 파싱 중에 고장나게(crash) 하거나, 또는 다른 방식으로 서비스의 거절을 야기할 수 있다. 미디어 파일의 손상을 시뮬레이션함으로써, 도구는 컨테이너 포맷 소스의 능력의 테스트를 촉진한다.
컨테이너 포맷 처리 도구는 미디어 파일에 대한 다른 종류의 손상을 시뮬레이션하도록 미디어 파일을 다른 방법으로 변경할 수 있다. 일부 경우에, 컨테이너 포맷의 미디어 파일은 스트리밍 또는 컨퍼런싱(conferencing) 중에 랜덤 비트 플립(flip)에 기인하여 손상된다. 컨테이너 포맷 도구는 도 9에 도시된 기술(900)을 이용하여 그러한 손상을 시뮬레이션할 수 있다. 도 3과 관련하여 설명한 것과 같은 컨테이너 포맷 처리 도구가 기술(900)을 수행한다.
컨테이너 포맷 처리 도구는 미디어 파일에서 변경할 다음 컨테이너 포맷 구문 요소를 취득한다(910). 예를 들면, 도구는 변경할 다음 컨테이너 포맷 구문 요소를 식별하기 위해 미디어 파일 내에서 또는 미디어 파일의 객체 내에서 전방으로 스킵한다. 또는, 도구는 변경을 위해 사용자가 선택한 유형의 다음 컨테이너 포맷 구문 요소를 식별한다.
도구는 컨테이너 포맷 구문 요소의 값을 다른 값으로 교체한다(920). 예를 들면, 도구는 구문 요소의 값을 교체한 때 하나 이상의 랜덤 비트 플립을 시뮬레이션한다. 대안적으로, 도구는 어떤 다른 방법으로 값을 교체한다.
도구는 변경할 임의의 추가의 컨테이너 포맷 구문 요소가 있는지를 체크하고(930), 만일 있으면, 변경할 다음 컨테이너 포맷 구문 요소를 취득한다(910). 이 방법으로, 도구는 미디어 파일 내의 하나 이상의 컨테이너 포맷 구문 요소를 변경할 수 있다.
따라서, 도 9에 도시된 기술(900)에 따르면, 컨테이너 포맷 처리 도구는 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소의 적어도 일부에 대하여 유효 값들을 다른 값(예를 들면, 랜덤 값)으로 교체한다. 그러나, 이와 동시에, 도구는 컨테이너 포맷의 미디어 파일에 대한 파일 포맷 구조를 보전한다. 컨테이너 포맷 소스의 성능 평가는, 컨테이너 포맷 소스가 바닥 수준 파싱 동작 중에 다른 유형의 에러와 마주친 때, 에러의 검출, 에러에 대한 보호, 에러의 은닉 및 에러로부터의 복구에 있어서 개선을 가져올 수 있다.
도 10은 미디어 파일의 손상을 시뮬레이션하기 위해 랜덤 값으로 교체된 미디어 파일의 선택된 MP4 구문 요소의 값들을 보인 속성 익스플로러의 화면(1000)을 보인 것이다. 미디어 파일의 파일 포맷 구조는 본래대로 유지되지만, "샘플에 대한 (조성) 시간" 박스 내의 몇 개의 샘플 오프셋(sample_offset) 구문 요소의 값들은 변경되었다.
미디어 파일은 다른 방법으로 손상될 수 있다. 일부 경우에, 컨테이너 포맷의 미디어 파일은 오디오 기록 실패에 기인하여 손상된다. 예를 들면, 스마트폰 또는 다른 것의 기록 시스템은 오디오와 비디오 둘 다의 기록을 위해 초기화되지만, 어떤 이유로 오디오 데이터가 수신되지 않는다. 결과적인 미디어 파일은 의미있는 구조 없이 비어있는 오디오 트랙을 갖는다. 컨테이너 포맷 처리 도구는 컨테이너 포맷의 미디어 파일의 오디오 트랙으로부터 오디오 데이터를 제거함으로써 상기와 같은 오디오 기록 실패를 시뮬레이션할 수 있다. 다른 경우에, 컨테이너 포맷의 미디어 파일은 부정확한 기록 종결에 기인하여 손상된다. 예를 들면, 스마트폰 또는 다른 것의 기록 시스템은 기록 종점에서의 무효 데이터를 미디어 파일의 박스에 전파할 수 있다. 컨테이너 포맷 처리 도구는 컨테이너 포맷에 따라 규정된 무연고 구문 요소를 컨테이너 포맷의 미디어 파일의 객체에 추가함으로써 상기와 같은 부정확한 기록 종결을 시뮬레이션할 수 있다.
미디어 파일을 파싱 및 소비할 때, 컨테이너 포맷 소스는 다른 방법으로 미디어 파일의 에러에 반응할 수 있다. 일부 유형의 에러에 대하여, 컨테이너 포맷 소스는 예를 들면 파싱이 실패일 때 재생을 종결한다. 다른 유형의 에러에 대하여, 컨테이너 포맷 소스는 에러를 무시하거나 에러를 보정 또는 은닉하는 것을 계속할 수 있다.
일반적으로, 컨테이너 포맷 소스는 미디어 파일의 에러를 검출하고, 손상된 미디어 파일에 마주친 때 더 좋은 사용자 경험을 제공하기 위해 적어도 일부 유형의 에러를 은닉 또는 그 에러로부터 복구하는 능력을 갖는다. 예를 들면, 컨테이너 포맷 처리 도구는 컨테이너 포맷 구문 요소에서 소정 유형의 에러를 검출하고, 다른 값으로부터의 추론에 기초하여 에러들을 보정할 수 있다. 일부 특수한 예들을 이하에 설명한다.
ㆍ 지속기간 값은 다른 지속기간 값과 내부적으로 일치하도록 보정될 수 있다.
ㆍ 샘플 크기가 크기 문턱값(다른 샘플의 샘플 크기의 값에 기초하여 설정된 값, 또는 미리 규정된 문턱값으로 설정된 값)을 초과하는 경우에 샘플의 재생이 스킵될 수 있다.
ㆍ 만일 무비 프래그먼트 임의 접근 오프셋(mfro) 박스 내의 크기 필드가 (예를 들면, 부모 무비 프래그먼트 임의 접근(mfra) 박스에 대하여 특정된 크기 값과 정합하지 않기 때문에) 부정확하면, 단지 순차적인 재생만이 가능하도록 미디어 파일의 임의 접근 능력이 디스에이블될 수 있다.
ㆍ 만일 (트랙 프래그먼트 런(trun) 박스에서 표시된 것처럼) 트랙 런의 샘플들에 대한 샘플 크기의 합이 미디어 데이터(mdat) 박스의 크기보다 더 크면, 오프셋 포인트가 mdat 박스의 외부에 있는 샘플들은 스킵될 수 있다.
ㆍ 유사하게, 파일 크기보다 더 큰 오프셋을 가진 청크는 스킵될 수 있다.
대안적으로, 컨테이너 포맷 처리 도구는 컨테이너 포맷 구문 요소 내의 다른 및/또는 추가 유형의 에러를 검출 및 보정한다.
C. 기타의 편집
컨테이너 포맷 처리 도구는 컨테이너 포맷의 미디어 파일을 다른 방식으로 편집할 수 있다. 그러한 편집은 몇 가지 시나리오에서 유용할 수 있다.
일부 비디오 파일은 예를 들면 저작권 관계로 인하여 접근 및 배포에 제한이 있다. 어떤 컨테이너 포맷 구문 요소 또는 관심있는 컨테이너 포맷 구문 요소 조합이 저작권 보호된 콘텐츠를 가진 미디어 파일에만 존재하면, 그 미디어 파일의 유포가 제한될 수 있고, 컨테이너 포맷 소스의 테스트에 의해 달성될 수 있는 개선을 잠재적으로 방해한다. 이러한 상황을 다루기 위해, 컨테이너 포맷 처리 도구는 다른 인코딩된 미디어 콘텐츠를 내포하는 다른 미디어 파일을 만들 때 새로운 컨테이너 포맷 구문 요소를 삽입할 수 있다. 즉, 자유롭게 배포할 수 있는 미디어 콘텐츠를 가진 소정의 미디어 파일의 경우에, 컨테이너 포맷 처리 도구는 저작권 관계에 기인하는 잠재적 접근 제한을 갖는 특정 비디오 파일을 필요로 하지 않고 미디어 파일에 대한 컨테이너 포맷 구문 요소의 다른 조합을 발생할 수 있다. 발생된 컨테이너 포맷 구문 요소의 조합은 컨테이너 포맷의 다른 미디어 파일과 함께 문제점(예를 들면, 자유롭게 배포될 수 없는 미디어 파일을 갖는 문제점)을 모델링하거나 테스트 목적의 시나리오를 모델링할 수 있다.
또는, 다른 예로서, 컨테이너 포맷 처리 도구는 컨테이너 포맷 소스에 대한 미디어 파일의 추가적인 배포 전에 문제점들을 고정하기 위해 미디어 파일 내의 에러들을 검출 및 보정할 수 있다. 예를 들면, 컨테이너 포맷의 미디어 파일의 파싱 중에, 컨테이너 포맷 처리 도구는 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소 중에서 하나 이상의 손상된 값을 검출한다. 그 다음에, 컨테이너 포맷 처리 도구는 예를 들면 예시적인 컨테이너 포맷 소스와 관련하여 위에서 설명한 바 와 같이 하나 이상의 손상된 값을 보정한다.
개시된 발명의 원리를 적용할 수 있는 많은 가능한 실시형태에 비추어, 예시된 실시형태는 발명의 단지 양호한 실시예일 뿐이고 발명의 범위를 제한하는 것으로 해석되어서는 안된다는 것을 이해하여야 한다. 그보다, 본 발명의 범위는 이하의 특허 청구범위에 의해 규정된다. 그러므로, 우리는 특허 청구범위의 정신 및 범위 내에 있는 모든 실시형태를 우리의 발명으로서 청구한다.
Claims (22)
- 컴퓨팅 시스템으로 하여금 프로그래밍되어 동작들을 수행하게 하기 위한 컴퓨터 실행가능 명령어들을 저장한 하나 이상의 컴퓨터 판독가능 매체에 있어서, 상기 동작들은,
오디오 콘텐츠, 이미지 콘텐츠, 및 비디오 콘텐츠 중 하나 이상을 포함하는 프리젠테이션용의 컨테이너 포맷의 미디어 파일을 수신하는 동작 - 상기 컨테이너 포맷은 상기 미디어 파일이 상기 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소들(hierarchically organized syntax elements)을 포함하도록 하는 트리 구조형임 -; 및
상기 미디어 파일의 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중의 적어도 일부의 구문 인식 조작(syntax-aware manipulation)을 수행하는 동작
을 포함하고,
상기 구문 인식 조작을 수행하는 동작은 상기 컨테이너 포맷에 대한 상기 미디어 파일의 일치성(conformance)을 검증하는 동작을 포함하고, 상기 검증하는 동작은, 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 상기 적어도 일부에 대한 교차 검증을 포함하고, 상기 교차 검증은, 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중의 주어진 구문 요소에 대하여, 지속기간, 프레임들의 수(count), 샘플 크기, 파일 크기, 박스 크기, 또는 청크 오프셋(chunk offset) 중 주어진 하나가, 상기 주어진 구문 요소의 값과, 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 하나 이상의 다른 구문 요소 각각의 값 간에 각각 일치함을 체크하는 동작을 포함하는 것인, 컴퓨터 판독가능 매체. - 제1항에 있어서,
상기 검증하는 동작은, 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 상기 적어도 일부에 대한 단일 요소 검증을 더 포함하고, 상기 단일 요소 검증은, 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 상기 주어진 구문 요소에 대해, 상기 주어진 구문 요소의 값이 상기 주어진 구문 요소에 대한 하나 이상의 구속(constraints)을 만족시킴을 체크하는 동작을 포함하는 것인, 컴퓨터 판독가능 매체. - 제1항에 있어서,
상기 검증하는 동작은, 프리젠테이션의 오디오 샘플들과 비디오 샘플들 간의 동기화를 체크하는 동작을 더 포함하고, 상기 동기화를 체크하는 동작은, 상기 오디오 샘플들 중 하나에 대한 타임스탬프가 상기 비디오 샘플들 중 대응하는 하나에 대한 타임스탬프에 충분히 가까움을 체크하는 동작을 포함하는 것인, 컴퓨터 판독가능 매체. - 제1항에 있어서,
상기 검증하는 동작은, 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 임의의 강제적인 구문 요소의 존재에 대해 체크하는 동작을 더 포함하는 것인, 컴퓨터 판독가능 매체. - 제1항에 있어서,
상기 구문 인식 조작을 수행하는 동작은 상기 컨테이너 포맷의 상기 미디어 파일의 손상(corruption)을 시뮬레이션하는 동작을 더 포함하는 것인, 컴퓨터 판독가능 매체. - 제5항에 있어서,
상기 손상을 시뮬레이션하는 동작은, 상기 컨테이너 포맷의 상기 미디어 파일의 파일 포맷 구조를 보전하면서, 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 상기 적어도 일부 중 하나 이상에 대해, 유효한 값을 다른 값으로 교체하는 동작을 포함하는 것인, 컴퓨터 판독가능 매체. - 제5항에 있어서,
상기 손상을 시뮬레이션하는 동작은, 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 상기 주어진 구문 요소에 대해, 상기 주어진 구문 요소의 값을 변경함으로써 랜덤 비트 플립(random bit flip)을 시뮬레이션하는 동작을 포함하는 것인, 컴퓨터 판독가능 매체. - 제5항에 있어서,
상기 손상을 시뮬레이션하는 동작은, 상기 컨테이너 포맷의 상기 미디어 파일의 오디오 트랙으로부터 오디오 데이터를 제거함으로써 오디오 기록 실패를 시뮬레이션하는 동작을 포함하는 것인, 컴퓨터 판독가능 매체. - 제5항에 있어서,
상기 손상을 시뮬레이션하는 동작은, 상기 컨테이너 포맷에 따라 규정된 무연고(extraneous) 구문 요소를 상기 컨테이너 포맷의 상기 미디어 파일의 객체(object)에 추가함으로써 부정확한 기록 종결을 시뮬레이션하는 동작을 포함하는 것인, 컴퓨터 판독가능 매체. - 제1항에 있어서,
상기 구문 인식 조작을 수행하는 동작은,
상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중에서 하나 이상의 손상된 값을 검출하는 동작; 및
상기 하나 이상의 손상된 값을 보정하는 동작
을 더 포함하는 것인, 컴퓨터 판독가능 매체. - 제1항에 있어서,
상기 구문 인식 조작을 수행하는 동작은, 상기 컨테이너 포맷의 또 다른 미디어 파일의 문제점(problem)을 모델링하기 위해, 상기 컨테이너 포맷에 따라 규정된 계층적으로 조직된 새로운 구문 요소들을 상기 컨테이너 포맷의 상기 미디어 파일에 삽입하는 동작을 더 포함하는 것인, 컴퓨터 판독가능 매체. - 제1항에 있어서,
상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들은 상기 컨테이너 포맷에 따라 계층 내에 네스트(nest)된 객체들 및 객체들의 속성들인 것인, 컴퓨터 판독가능 매체. - 컴퓨팅 시스템에서의 방법에 있어서,
오디오 콘텐츠, 이미지 콘텐츠, 및 비디오 콘텐츠 중 하나 이상을 포함하는 프리젠테이션용의 컨테이너 포맷의 미디어 파일을 수신하는 단계 - 상기 컨테이너 포맷은 상기 미디어 파일이 상기 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소들을 포함하도록 하는 트리 구조형임 -; 및
상기 미디어 파일의 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 적어도 일부의 구문 인식 조작을 수행하는 단계
를 포함하고,
상기 구문 인식 조작은,
상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 임의의 강제적인 구문 요소의 존재에 대해 체크하는 동작;.
상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 상기 적어도 일부 중의 각각에 대해 단일 요소 검증을 수행하는 동작; 및
상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 상기 적어도 일부 중의 일부에 대해 교차 검증을 수행하는 동작
에 의해 상기 컨테이너 포맷에 대한 상기 미디어 파일의 일치성을 검증하는 동작을 포함하며,
상기 교차 검증은, 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 주어진 구문 요소에 대하여, 지속기간, 프레임들의 수, 샘플 크기, 파일 크기, 박스 크기, 또는 청크 오프셋 중 주어진 하나가, 상기 주어진 구문 요소의 값과, 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 하나 이상의 다른 구문 요소 각각의 값 간에 각각 일치함을 체크하는 동작을 포함하는 것인, 컴퓨팅 시스템에서의 방법. - 컴퓨팅 시스템에서의 방법에 있어서,
오디오 콘텐츠, 이미지 콘텐츠, 및 비디오 콘텐츠 중 하나 이상을 포함하는 프리젠테이션용의 컨테이너 포맷의 미디어 파일을 수신하는 단계 - 상기 컨테이너 포맷은 상기 미디어 파일이 상기 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소들을 포함하도록 하는 트리 구조형임 -; 및
상기 미디어 파일의 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 적어도 일부의 구문 인식 조작을 수행하는 단계
를 포함하고,
상기 구문 인식 조작을 수행하는 단계는 상기 컨테이너 포맷에 대한 상기 미디어 파일의 일치성을 검증하는 단계를 포함하고, 상기 검증하는 단계는, 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 상기 적어도 일부에 대한 교차 검증을 포함하고, 상기 교차 검증은, 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 주어진 구문 요소에 대하여, 지속기간, 프레임들의 수, 샘플 크기, 파일 크기, 박스 크기, 또는 청크 오프셋 중 주어진 하나가, 상기 주어진 구문 요소의 값과, 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 하나 이상의 다른 구문 요소 각각의 값 간에 각각 일치함을 체크하는 단계를 포함하는 것인, 컴퓨팅 시스템에서의 방법. - 제14항에 있어서,
상기 검증하는 단계는, 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 상기 적어도 일부에 대한 단일 요소 검증을 더 포함하고, 상기 단일 요소 검증은 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 상기 주어진 구문 요소에 대해, 상기 주어진 구문 요소의 값이 상기 주어진 구문 요소에 대한 하나 이상의 구속을 만족시킴을 체크하는 단계를 포함하는 것인, 컴퓨팅 시스템에서의 방법. - 제14항에 있어서,
상기 검증하는 단계는, 프리젠테이션의 오디오 샘플들과 비디오 샘플들 간의 동기화를 체크하는 단계를 더 포함하고, 상기 동기화를 체크하는 단계는, 상기 오디오 샘플들 중 하나에 대한 타임스탬프가 상기 비디오 샘플들 중 대응하는 하나에 대한 타임스탬프에 충분히 가까움을 체크하는 단계를 포함하는 것인, 컴퓨팅 시스템에서의 방법. - 제14항에 있어서,
상기 구문 인식 조작을 수행하는 단계는 상기 컨테이너 포맷의 상기 미디어 파일의 손상을 시뮬레이션하는 단계를 더 포함한 것인, 컴퓨팅 시스템에서의 방법. - 컴퓨팅 시스템에 있어서,
오디오 콘텐츠, 이미지 콘텐츠, 및 비디오 콘텐츠 중 하나 이상을 포함하는 프리젠테이션용의 컨테이너 포맷의 미디어 파일을 저장하기 위한 버퍼 - 상기 컨테이너 포맷은 상기 미디어 파일이 상기 컨테이너 포맷에 따라 규정된 계층적으로 조직된 구문 요소들을 포함하도록 하는 트리 구조형임 -; 및
상기 미디어 파일의 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 적어도 일부의 구문 인식 조작을 수행하도록 구성된 구문 조작 도구
를 포함하고,
상기 구문 조작 도구는 상기 컨테이너 포맷에 대한 상기 미디어 파일의 일치성 검증을 수행하도록 구성되고, 상기 일치성 검증은 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 상기 적어도 일부에 대한 교차 검증을 포함하고, 상기 교차 검증은, 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 주어진 구문 요소에 대하여, 지속기간, 프레임들의 수, 샘플 크기, 파일 크기, 박스 크기, 또는 청크 오프셋 중 주어진 하나가, 상기 주어진 구문 요소의 값과, 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 하나 이상의 다른 구문 요소 각각의 값 간에 각각 일치함을 체크하는 동작을 포함하는 것인, 컴퓨팅 시스템. - 제18항에 있어서,
상기 일치성 검증은, 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 상기 적어도 일부에 대한 단일 요소 검증을 더 포함하고, 상기 단일 요소 검증은 상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들 중 상기 주어진 구문 요소에 대해, 상기 주어진 구문 요소의 값이 상기 주어진 구문 요소에 대한 하나 이상의 구속을 만족시킴을 체크하는 동작을 포함하는 것인, 컴퓨팅 시스템. - 제18항에 있어서,
상기 일치성 검증은 상기 프리젠테이션의 오디오 샘플들과 비디오 샘플들 간의 동기화를 체크하는 동작을 더 포함하고, 상기 동기화를 체크하는 동작은 상기 오디오 샘플들 중 하나에 대한 타임스탬프가 상기 비디오 샘플들 중 대응하는 하나에 대한 타임스탬프에 충분히 가까움을 체크하는 동작을 포함하는 것인, 컴퓨팅 시스템. - 제18항에 있어서,
상기 구문 인식 조작은 상기 컨테이너 포맷의 상기 미디어 파일의 손상을 시뮬레이션하는 동작을 더 포함하는 것인, 컴퓨팅 시스템. - 제18항에 있어서,
상기 컨테이너 포맷에 따라 규정된 상기 계층적으로 조직된 구문 요소들은 상기 컨테이너 포맷에 따라 계층 내에 네스트된 객체들 및 객체들의 속성들인 것인, 컴퓨팅 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/857,975 | 2013-04-05 | ||
US13/857,975 US9262419B2 (en) | 2013-04-05 | 2013-04-05 | Syntax-aware manipulation of media files in a container format |
PCT/US2013/059564 WO2014163663A1 (en) | 2013-04-05 | 2013-09-13 | Syntax-aware manipulation of media files in a container format |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150139595A KR20150139595A (ko) | 2015-12-11 |
KR102122628B1 true KR102122628B1 (ko) | 2020-06-12 |
Family
ID=49274864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157031759A KR102122628B1 (ko) | 2013-04-05 | 2013-09-13 | 컨테이너 포맷으로 된 미디어 파일의 구문 인식 조작 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9262419B2 (ko) |
EP (1) | EP2981964A1 (ko) |
JP (1) | JP6475228B2 (ko) |
KR (1) | KR102122628B1 (ko) |
CN (1) | CN105122370B (ko) |
WO (1) | WO2014163663A1 (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9215471B2 (en) | 2010-11-12 | 2015-12-15 | Microsoft Technology Licensing, Llc | Bitstream manipulation and verification of encoded digital media data |
EP2890075B1 (en) * | 2013-12-26 | 2016-12-14 | Telefonica Digital España, S.L.U. | A method and a system for smooth streaming of media content in a distributed content delivery network |
US10776419B2 (en) * | 2014-05-16 | 2020-09-15 | Gracenote Digital Ventures, Llc | Audio file quality and accuracy assessment |
CN104683810B (zh) * | 2015-02-28 | 2019-09-06 | 武汉烽火众智数字技术有限责任公司 | 一种基于特征分析的动态解码方法和装置 |
CN104735426A (zh) * | 2015-04-07 | 2015-06-24 | 中国工商银行股份有限公司 | 多输入和多输出的视频处理装置及方法 |
US10165310B2 (en) | 2016-06-10 | 2018-12-25 | Affirmed Networks, Inc. | Transcoding using time stamps |
US10432686B1 (en) * | 2016-06-13 | 2019-10-01 | Amazon Technologies, Inc. | Streaming media file management |
WO2018075909A1 (en) | 2016-10-21 | 2018-04-26 | Affirmed Networks, Inc. | Adaptive content optimization |
US10509766B2 (en) * | 2016-11-07 | 2019-12-17 | International Business Machines Corporation | Storing and retrieving restricted datasets to and from a cloud network with non-restricted datasets |
CN110351492B (zh) * | 2018-04-06 | 2021-11-19 | 中兴通讯股份有限公司 | 一种视频数据处理方法、装置及介质 |
CN108683901B (zh) * | 2018-05-10 | 2020-11-03 | Oppo广东移动通信有限公司 | 一种数据处理方法、mec服务器及计算机可读存储介质 |
EP4014120A4 (en) | 2019-08-12 | 2024-04-10 | Audio Visual Preservation Solutions, Inc. | FORENSIC SOURCE DETECTION SYSTEM, APPARATUS AND METHOD FOR MULTIMEDIA FILES |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070198595A1 (en) * | 2005-12-28 | 2007-08-23 | Sony Corporation | Information processing apparatus, information processing method, and program |
US20080175325A1 (en) * | 2007-01-08 | 2008-07-24 | Nokia Corporation | System and method for providing and using predetermined signaling of interoperability points for transcoded media streams |
US20080301588A1 (en) * | 2007-05-29 | 2008-12-04 | Shailesh Kumar | Method for verification of file-based media content |
US20090249301A1 (en) * | 2008-03-31 | 2009-10-01 | International Business Machines Corporation | Method and Apparatus for Testing Soft Error Rate of an Application Program |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6763392B1 (en) | 2000-09-29 | 2004-07-13 | Microsoft Corporation | Media streaming methods and arrangements |
US7076392B1 (en) | 2000-10-06 | 2006-07-11 | Arm Limited | Test bit-stream generator and method for decoders |
US6957343B2 (en) * | 2001-03-30 | 2005-10-18 | Intel Corporation | Validating keying material by using a validation area of read-only media to prevent playback of unauthorized copies of content stored on the media |
US6946715B2 (en) * | 2003-02-19 | 2005-09-20 | Micron Technology, Inc. | CMOS image sensor and method of fabrication |
US7827116B2 (en) * | 2002-08-20 | 2010-11-02 | Piccionelli Gregory A | Methods of producing and transmitting content based on compliance |
TW591952B (en) | 2003-03-14 | 2004-06-11 | Cyberlink Corp | Intelligent video stream processing method and system thereof |
US20040243882A1 (en) * | 2003-05-27 | 2004-12-02 | Sun Microsystems, Inc. | System and method for fault injection and monitoring |
US20060126725A1 (en) | 2004-12-10 | 2006-06-15 | Weimin Zeng | Automated test vector generation for complicated video system verification |
JP2006238003A (ja) * | 2005-02-24 | 2006-09-07 | Matsushita Electric Ind Co Ltd | 逆多重化装置 |
US20070047411A1 (en) * | 2005-08-30 | 2007-03-01 | Manuel Rivera | Method and system for verifying media compliance |
US20070168591A1 (en) | 2005-12-08 | 2007-07-19 | Inter-Tel, Inc. | System and method for validating codec software |
US20080071617A1 (en) * | 2006-06-29 | 2008-03-20 | Lance Ware | Apparatus and methods for validating media |
ES2362975T3 (es) * | 2007-09-19 | 2011-07-18 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Aparato y método para almacenar y leer un archivo que tiene un contenedor de datos de medios y un contenedor de metadatos. |
FR2923923B1 (fr) * | 2007-11-19 | 2009-12-04 | St Microelectronics Sa | Verification de donnees lues en memoire |
US8073668B2 (en) * | 2008-01-30 | 2011-12-06 | International Business Machines Corporation | Method and apparatus for testing a full system integrated circuit design by statistical fault injection using hardware-based simulation |
US8793498B2 (en) * | 2008-08-11 | 2014-07-29 | Nbcuniversal Media, Llc | System and method for forensic analysis of media works |
US9049477B2 (en) * | 2008-11-13 | 2015-06-02 | At&T Intellectual Property I, Lp | Apparatus and method for managing media content |
US9253496B2 (en) | 2008-12-12 | 2016-02-02 | Qualcomm Incorporated | Intelligent decoded picture buffering |
US8631281B1 (en) * | 2009-12-16 | 2014-01-14 | Kip Cr P1 Lp | System and method for archive verification using multiple attempts |
US9215471B2 (en) | 2010-11-12 | 2015-12-15 | Microsoft Technology Licensing, Llc | Bitstream manipulation and verification of encoded digital media data |
US20120275511A1 (en) * | 2011-04-29 | 2012-11-01 | Google Inc. | System and method for providing content aware video adaptation |
US8930794B2 (en) * | 2012-05-30 | 2015-01-06 | Lsi Corporation | Error injection for LDPC retry validation |
-
2013
- 2013-04-05 US US13/857,975 patent/US9262419B2/en active Active
- 2013-09-13 KR KR1020157031759A patent/KR102122628B1/ko active IP Right Grant
- 2013-09-13 EP EP13771001.8A patent/EP2981964A1/en not_active Ceased
- 2013-09-13 JP JP2016506305A patent/JP6475228B2/ja active Active
- 2013-09-13 WO PCT/US2013/059564 patent/WO2014163663A1/en active Application Filing
- 2013-09-13 CN CN201380075289.7A patent/CN105122370B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070198595A1 (en) * | 2005-12-28 | 2007-08-23 | Sony Corporation | Information processing apparatus, information processing method, and program |
US20080175325A1 (en) * | 2007-01-08 | 2008-07-24 | Nokia Corporation | System and method for providing and using predetermined signaling of interoperability points for transcoded media streams |
US20080301588A1 (en) * | 2007-05-29 | 2008-12-04 | Shailesh Kumar | Method for verification of file-based media content |
US20090249301A1 (en) * | 2008-03-31 | 2009-10-01 | International Business Machines Corporation | Method and Apparatus for Testing Soft Error Rate of an Application Program |
Also Published As
Publication number | Publication date |
---|---|
CN105122370A (zh) | 2015-12-02 |
KR20150139595A (ko) | 2015-12-11 |
JP6475228B2 (ja) | 2019-02-27 |
JP2016522601A (ja) | 2016-07-28 |
US9262419B2 (en) | 2016-02-16 |
CN105122370B (zh) | 2018-03-30 |
EP2981964A1 (en) | 2016-02-10 |
WO2014163663A1 (en) | 2014-10-09 |
US20140304303A1 (en) | 2014-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102122628B1 (ko) | 컨테이너 포맷으로 된 미디어 파일의 구문 인식 조작 | |
RU2434277C2 (ru) | Запись потока мультимедийных данных в трек указаний о приеме контейнерного медиафайла | |
US10798145B1 (en) | Analyzing data streams | |
US11606576B2 (en) | Method and apparatus for generating media file comprising 3-dimensional video content, and method and apparatus for replaying 3-dimensional video content | |
US9215471B2 (en) | Bitstream manipulation and verification of encoded digital media data | |
US10298931B2 (en) | Coupling sample metadata with media samples | |
CN110740391B (zh) | 一种修复mp4损坏文件的方法 | |
KR101199166B1 (ko) | 보간 프레임 생성 시스템 | |
US11838602B2 (en) | MPD chaining in a live CMAF/DASH player using W3C media source and encrypted extensions | |
US9911460B2 (en) | Fast and smart video trimming at frame accuracy on generic platform | |
US11973820B2 (en) | Method and apparatus for mpeg dash to support preroll and midroll content during media playback | |
US11588870B2 (en) | W3C media extensions for processing DASH and CMAF inband events along with media using process@append and process@play mode | |
US11799943B2 (en) | Method and apparatus for supporting preroll and midroll during media streaming and playback | |
US20230224557A1 (en) | Auxiliary mpds for mpeg dash to support prerolls, midrolls and endrolls with stacking properties | |
CN109495793B (zh) | 一种弹幕写入方法、装置、设备及介质 | |
EP4394602A1 (en) | Method for system verification and apparatus for implementing the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |