KR20090096619A - Hd-dvd 타이밍 마크업의 처리 최적화 - Google Patents

Hd-dvd 타이밍 마크업의 처리 최적화 Download PDF

Info

Publication number
KR20090096619A
KR20090096619A KR1020097013888A KR20097013888A KR20090096619A KR 20090096619 A KR20090096619 A KR 20090096619A KR 1020097013888 A KR1020097013888 A KR 1020097013888A KR 20097013888 A KR20097013888 A KR 20097013888A KR 20090096619 A KR20090096619 A KR 20090096619A
Authority
KR
South Korea
Prior art keywords
instructions
timing
machine
processing
readable storage
Prior art date
Application number
KR1020097013888A
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 KR20090096619A publication Critical patent/KR20090096619A/ko

Links

Images

Classifications

    • 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/32Indexing; 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 separate auxiliary tracks of the same or an auxiliary record carrier
    • G11B27/322Indexing; 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 separate auxiliary tracks of the same or an auxiliary record carrier used signal is digitally coded
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/12Formatting, e.g. arrangement of data block or words on the record carriers
    • 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/02Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8543Content authoring using a description language, e.g. Multimedia and Hypermedia information coding Expert Group [MHEG], eXtensible Markup Language [XML]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers
    • G11B2220/25Disc-shaped record carriers characterised in that the disc is based on a specific recording technology
    • G11B2220/2537Optical discs
    • G11B2220/2579HD-DVDs [high definition DVDs]; AODs [advanced optical discs]

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Television Signal Processing For Recording (AREA)
  • Processing Or Creating Images (AREA)
  • Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)
  • Management Or Editing Of Information On Record Carriers (AREA)

Abstract

HD-DVD(high-definition digital versatile disk) 타이밍 마크업의 실행을 최적화하는 시스템, 방법 및/또는 기술("도구")이 여기에서 설명된다. 도구는 HD-DVD 디스크로부터 판독된 타이밍 마크업을 수신할 수 있고, 여기에서 설명된 한가지 이상의 최적화 전략을 사용하여 타이밍 마크업의 처리를 최적화할 수 있다.
Figure P1020097013888
XPATH 식, 마크업, 틱, 프레젠테이션 엔진, 최적화 엔진, 타이밍 컨테이너, 타이밍 노드

Description

HD-DVD 타이밍 마크업의 처리 최적화{OPTIMIZING EXECUTION OF HD-DVD TIMING MARKUP}
HD-DVD(high definition digital versatile disks) 매체 및 관련 플레이어는 더욱 인기있고 널리 사용되고 있다. 더 많은 제조자가 이 시장에 진입함에 따라, 경쟁이 증가하여, 가격이 하락하는 추세이다. 이러한 가격결정 환경에서, HD-DVD 플레이어 내에서 실행되는 소프트웨어는 통상적으로 비교적 저렴한 소비자 하드웨어 상에서 실행된다.
HD-DVD 콘텐트 및 스타일 마크업을 표시를 위해 유형의 형태로 변환하는 것은 컴퓨터 조작 면에서 값이 비싸다. 통상적으로, HD-DVD 마크업을 위한 렌더링 속도의 합리적인 목표는 받아들일 수 있는 사용자 경험을 위해 대략 초당 24 프레임이다. HD-DVD 마크업을 변환하고 렌더링하는 종래의 기술은 저렴한 소비자 하드웨어 상에서 컴퓨터 조작상 값비싼 작업을 실행함으로써, 이러한 렌더링 속도 목표에 도달하려고 시도할 때 어려움에 직면할 수 있다.
HD-DVD 타이밍 마크업의 실행을 최적화하는 시스템, 방법 및/또는 기술("도구")이 여기에서 설명된다. 도구는 HD-DVD 디스크로부터 판독된 타이밍 마크업을 수신할 수 있고, 여기에서 설명된 한가지 이상의 최적화 전략을 사용하여 타이밍 마크업의 처리를 최적화할 수 있다.
이 요약은 아래의 상세한 설명에서 더욱 설명되는 개념들의 선택된 개념을 단순화된 형태로 소개하기 위해 제공된다. 이 요약은 청구된 주제의 중요한 또는 본질적인 특징을 식별하고자 하는 것도 아니고, 청구된 주제의 범위를 결정하는데 보조적으로 사용되고자 하는 것도 아니다. 예를 들어, "도구"라는 용어는 상기 설명에 의해 그리고 명세서 전반을 통해 가능하게 된 시스템(들), 방법(들), 컴퓨터 판독가능 명령어들 및/또는 기술(들)을 나타낼 수 있다.
HD-DVD 타이밍 마크업의 실행 최적화에 관련된 도구가 다음의 도면과 관련하여 설명된다. 동일한 번호는 동일한 컴포넌트 및 특징을 참조하기 위해 명세서 및 도면 전반에서 사용된다. 참조번호의 첫 번째 숫자는 그 참조 번호가 도입된 도면을 표시한다.
도 1은 HD-DVD 타이밍 마크업의 실행을 최적화하는 운영 환경의 블록도.
도 2는 프레젠테이션 엔진 및 타이밍 마크업의 추가 실시양상의 블록도.
도 3은 타이밍 마크업의 처리를 최적화하는 전략 및 XPATH 식(expression) 매니저의 실시양상의 블록도.
도 4는 타이밍 마크업을 처리하기 위한 데이터 및 프로세스 흐름의 블록도.
도 5는 도 4에 도시된 데이터 및 프로세스 흐름의 추가 실시양상의 블록도.
도 6은 소정의 XPATH 식의 사전 구문분석 및 사전 계산을 수반하는 최적화 전략에 관련된 컴포넌트 및 프로세스 흐름의 블록도.
도 7은 이벤트 반응형(event-driven) 식의 최적화에 관련된 컴포넌트 및 흐름의 블록도.
도 8은 이벤트 의존형 식의 처리를 최적화하는 프로세스 흐름의 블록도.
도 9는 유한 상태 기계를 사용하는 최적화 기술의 블록도.
도 10은 공용 메모리 풀을 사용하는 타이밍 마크업 처리의 최적화에 관련된 컴포넌트 및 흐름의 블록도.
도 11은 타이밍 트리 탐색을 감소시키기 위한 스케줄러의 사용에 관련된 최적화 기술의 블록도.
개요
다음 문서는 다수의 기술 및 프로세스를 실행 및/또는 지원할 수 있는 도구를 설명한다. 다음 설명은 도구가 HD-DVD 타이밍 마크업의 실행을 최적화할 수 있는 예시적인 방식을 설명한다. 이 설명은 또한 도구가 실행할 수 있는 그외 다른 기술 및/또는 프로세스를 설명한다.
도 1은 HD-DVD 타이밍 마크업의 실행을 최적화하는 운영 환경(100)을 도시한 것이다. 운영 환경(100)은 한 명 이상의 사용자(102)가 하나 이상의 HD-DVD 디스크(104)를 재생할 수 있게 할 수 있다. 이들 HD-DVD 디스크(104)는 하나 이상의 기계 판독가능 소프트웨어 컴포넌트를 포함할 수 있다. 이들 컴포넌트는, 예를 들어 하나 이상의 마크업 파일(106)을 포함할 수 있다. 마크업 파일(106)은 선언적 XML 기반 언어로서 구현될 수 있고, 상이한 어휘 또는 마크업 컴포넌트를 포함할 수 있다.
마크업 파일의 예는 최소한, 콘텐트 마크업(108), 스타일 마크업(110) 및 타이밍 마크업(112)을 포함할 수 있다. 콘텐트 마크업(108)은 주어진 마크업 문서의 메인 <body> 섹션 내에 포함되고, 마크업 내에 정의된 개체 또는 요소의 전체 레이아웃 구조를 설명한다. 아래에 표시된 표 1은 예시적인 HD-DVD 콘텐트 마크업 요소의 트리를 나타낸 것이다.
Figure 112009040516380-PCT00001
스타일 마크업(110)은 개체 또는 요소가 포매팅될 수 있는 방법을 설명하는 어휘이다. 스타일 마크업 부분(110)은 콘텐트 마크업 부분(108) 내에 포함되는 요소가 사용자에게 표시될 때 나타나기 위한 방법을 설명하는 XML 어휘를 포함할 수 있다. 다르게 말해서, 콘텐트 마크업 부분은 어떤 요소가 사용자에게 렌더링될 것인지 지정할 수 있고; 스타일 마크업 부분은 이들 요소가 어떻게 사용자에게 렌더링될 것인지 지정할 수 있다.
타이밍 마크업(112)은 콘텐트가 시간에 따라 그리고 사용자와의 상호작용성을 통해 변경될 수 있는 방법을 설명하는 어휘이다. 여기에서 설명된 HD-DVD 타이밍 마크업은 업계 표준 SMIL 언어의 서브세트이지만, SMIL 언어가 마크업 문서의 <body> 섹션의 밖에 포함될 수 있게 하는 확장명을 추가한다. 예를 들어, 여기에서 설명된 타이밍 마크업은 애니메이션 속성이 적용되는 마크업 문서 내의 요소를 정의하는, SMIL에 의해 정의되지 않은, "큐(cue)"라고 하는 특별 타이밍 컨테이너를 추가한다.
콘텐트 마크업 부분, 스타일 마크업 부분 및 타이밍 마크업 부분은 선언적 프로그래밍 언어로 구현될 수 있다. 그러나, 스크립트 부분(113)은 시간에 따라 스타일 마크업 내에서 비결정적 변경을 일으키는 명령적 프로그래밍 어휘로 구현될 수 있다.
전체적으로 볼 때, 콘텐트 마크업(108), 스타일 마크업(110) 및 타이밍 마크업(112)은 문서 개체 모델(DOM)(115)을 정의한다. DOM(115)은 XML 어휘를 사용하여 트리 데이터 구조로서 구현될 수 있다. DOM은 도 2에서 일반적으로 참조번호(117)로 표시한 다수의 개별 마크업 요소를 포함할 수 있다. 상기 표 1은 법적 부모-자식 요소 조합의 세트를 나타낸 것으로, DOM 상태(115)의 특정 예를 제공한다.
도 1은 참조번호(117a 및 117n)로 표시된 마크업 요소의 2가지 예를 도시한 것이다. 그러나, DOM의 구현은 임의 수의 요소(204)를 포함할 수 있고, DOM 트리는 임의의 적합한 형태를 취할 수 있다. 스크립트(113)는 DOM을 비결정적으로 변경하는 명령적 프로그래밍 언어일 수 있다.
HD-DVD는 그 중에서 특히, HD-DVD 고급 애플리케이션이 사용자 및 오디오/비디오 재생 시스템과 상호작용할 수 있는 방식을 정의하는 상호작용성 계층을 포함한다. 이러한 상호작용성 계층의 예는 HDiTM라는 상표로 마이크로소프트사에서 시판된다. HDiTM 상호작용성 계층은 고급 애플리케이션 콘텐트로서 정의된 데이터 포맷들의 컬렉션으로서 인코딩된다. 이들 포맷은 콘텐트의 선언적 설명을 제공하고, XML에서 파생될 수 있다.
운영 환경(100)은 사용자(102)가 재생을 위해, 점선(116)으로 나타낸 바와 같이, HD-DVD 디스크(104)를 HD-DVD 플레이어(114) 내로 삽입할 수 있게 할 수 있다. HD-DVD 플레이어(114)는 참조번호(118)로 표시된 하나 이상의 프로세서를 포함하는 컴퓨터 기반 시스템일 수 있다. 이들 프로세서(118)는 또한 주어진 유형 또는 아키텍처를 갖는 것으로 분류되거나 특징지워질 수 있지만, 동일한 유형 또는 아키텍처를 가질 수도 있고 갖지 않을 수도 있다. 가능한 구현에서, 프로세서는 하나 이상의 대화형 명령 프로세서(ICP)를 포함할 수 있다.
HD-DVD 플레이어는 또한, 일반적으로 참조번호(120)로 표시된 기계 판독가능 또는 컴퓨터 판독가능 매체의 하나 이상의 인스턴스를 포함할 수 있다. 컴퓨터 판독가능 매체(120)는 명령어를 포함할 수 있는데, 이 명령어는 프로세서(118)에 의해 실행될 때, HD-DVD 플레이어 내의 임의의 컴포넌트에 의해 실행되고 있는 것으로 여기에서 설명되는 임의의 도구 또는 관련 함수를 실행한다. 프로세서는 컴퓨터 판독가능 매체 상으로 포함된 또는 인코딩된 명령어를 액세스 및/또는 실행할 수 있고, 및/또는 컴퓨터 판독가능 매체에 저장된 데이터를 액세스할 수 있다.
컴퓨터 판독가능 매체(120)를 더욱 상세하게 참조하면, 컴퓨터 판독가능 매체(120)는 HD-DVD 프레젠테이션 엔진(122)의 하나 이상의 인스턴스를 포함할 수 있다. HD-DVD 프레젠테이션 엔진(122)은 예를 들어, 하나 이상의 소프트웨어 모듈을 포함할 수 있는데, 이 하나 이상의 소프트웨어 모듈은 프로세서 내로 로드되어 실행될 때, HD-DVD 플레이어가 타이밍 마크업(106)을 포함하여 마크업 및 기타 요소를 HD-DVD 디스크(104)로부터 로드하게 한다. 프레젠테이션 엔진(122)은 HD-DVD 디스크에서 판독된 마크업을 포매팅하여, 사용자에게 표시하기에 적합한 렌더링된 콘텐트 내로 매핑할 수 있다. 도 1은 이러한 렌더링된 콘텐트를 일반적으로 참조번호(124)로 표시한다.
도 1에 도시된 바와 같이, HD-DVD 플레이어(114)는 사용자 인터페이스(126)를 제공할 수 있는데, 이 사용자 인터페이스(126)를 통해, 사용자(102)는 HD-DVD 플레이어와 상호작용할 수 있다. 사용자 인터페이스(126)는 HD-DVD 플레이어에 의해 제공된 하드웨어를 포함할 수 있고, 또는 다른 장치에 의해, 예를 들어 HD-DVD 플레이어가 접속되거나 연결되는 텔레비전 세트 또는 표시 화면에 의해 제공된 하드웨어를 포함할 수 있다. 일반적으로, 사용자 인터페이스(126)는 사용자가 HD-DVD 플레이어와 상호작용할 수 있게 하기에 적합한 임의의 하드웨어 및/또는 소프트웨어 컴포넌트를 나타낼 수 있다. 도 1은 일반적으로 사용자(102)와 HD-DVD 플레이어(108) 사이의 상호작용을 참조번호(128)로 표시한다.
렌더링된 콘텐트(124)는 메뉴, 프롬프트, 또는 사용자로부터 응답 또는 입력을 이끌어내기 위해 프레젠테이션 엔진(122)에 의해 발생되는 기타 아이템을 포함할 수 있다. 이러한 응답 또는 입력은, 예를 들어 구두 또는 음성 명령, 장치(예를 들어, 사용자 인터페이스(126) 및/또는 HD-DVD 플레이어(114)와 관련된 원격 제어기)를 통해 입력된 명령, HD-DVD 플레이어에 의해 제공된 버튼을 통해 입력된 명령, 또는 임의의 기타 적합한 형태를 포함할 수 있다.
컴퓨터 판독가능 매체(120)로 돌아가면, 컴퓨터 판독가능 매체(120)는 타이밍 마크업(112)의 처리를 최적화하기 위해 프레젠테이션 엔진(122)과 협력하는 타이밍 최적화 엔진(130)을 포함할 수 있다. 여기에서 전반적으로 설명된 바와 같이, 타이밍 최적화 엔진(130)은 프레젠테이션 엔진(122)이, 받아들일 수 있는 사용자 경험을 제공하기에 충분한 프레임 속도로 HD-DVD로부터의 콘텐트를 사용자에게 렌더링할 수 있게 하기 위해 하나 이상의 전략을 이용할 수 있다.
도 1에서 운영 환경(100)을 설명했으므로, 이제 설명은 도 2에 나타낸 프레젠테이션 엔진(122) 및 타이밍 마크업(112)의 더욱 상세한 설명으로 진행한다.
도 2는 프레젠테이션 엔진(122) 및 타이밍 마크업(112)의 추가 실시양상(200)을 도시한 것이다. 편의를 위해(제한되는 것은 아님), 앞에서 설명된 일부 요소는 도 2로 넘겨지고, 동일한 참조 번호로 표시된다.
프레젠테이션 엔진(122)은 일반적으로 참조번호(202)로 표시된 프레임 렌더링 속도로 동작할 수 있다. 이 프레임 속도(202)는 HD-DVD(104)의 저작자에 의해 설정될 수 있다. 더욱 구체적으로, 저작자는 마크업 내에 타깃 프레임 속도를 지정할 수 있다. 예를 들어, 저작자는 "재생 목록"이라고 하는 파일 내에 원하는 프레임 속도를 선언할 수 있다. 다른 예에서, 저작자는 타이밍 섹션마다 클록 제수(divisor)를 선언할 수 있다. 그러나, HD-DVD 사양은 타이밍 마크업이 처리될 때 이들 타깃 프레임 속도가 달성될 것이라는 것을 보장하지 못한다. 저작자는 섹션 당 60 프레임의 타깃 프레임 속도를 선언할 수 있지만, 시스템이 실행하고 있는 하드웨어 플랫폼과 결합된 HD-DVD 소프트웨어의 구현 상세는 타깃 프레임 속도가 달성될 수 있는지 판정한다. 따라서, 타이밍 마크업을 처리하기 위해 여기에서 설명된 최적화는 타깃 프레임 속도를 달성할 가능성을 증가시킬 수 있다.
프레젠테이션 엔진(116)은 HD-DVD로부터 판독된 마크업의 처리, 포매팅 및 렌더링을 조정하거나 동기화하는, 일반적으로 참조번호(204)로 표시된 타이밍 클록 펄스 또는 틱을 수신할 수 있다. HD-DVD 플레이어(108)는 틱이 HD-DVD 타이밍 모델에 따라 생성된다고 하면, 임의의 적합한 기술을 사용하여 틱(204)을 생성할 수 있다.
HD-DVD 디스크(104)로부터 판독된 타이밍 마크업(106)을 더욱 상세하게 참조하면, 이 마크업은 타이밍 컨테이너(206)의 하나 이상의 인스턴스를 정의할 수 있다. 도 2는 참조부호(206a 및 206n)로 표시된 타이밍 컨테이너의 2가지 예를 제공한다. 그러나, 주의할 점은 타이밍 마크업(106)의 인스턴스들이 임의 수의 타이밍 컨테이너(206)를 정의할 수 있다는 것이다.
타이밍 컨테이너(206)는 상이한 유형 또는 형태를 취할 수 있다. 도 2에 도시된 예에서, 타이밍 컨테이너는 순차 타이밍 컨테이너(208), 또는 간략하게 <seqs>를 포함할 수 있다. 타이밍 컨테이너는 병렬 타이밍 컨테이너(210), 또는 간략하게 <pars>를 포함할 수 있다. 타이밍 컨테이너는 큐 타이밍 컨테이너(212), 또는 간략하게 <cues>를 포함할 수 있다.
<Par> 및 <Seq> 타임 컨테이너는 자식 타이밍 컨테이너의 하나 이상의 인스턴스(즉, <seqs>(208a), <pars>(210a) 및 <cues>(212a))를 포함할 수 있다. <Par> 및 <Seq> 타이밍 컨테이너는 이들 각각의 자식이 평가되는 때와 평가되는 방법을 제어한다. <par> 타이밍 컨테이너의 자식은 동시에 처리되는 반면, <seq> 타이밍 컨테이너의 자식은 차례로 처리된다. <Cues>는 다른 타임 컨테이너를 포함하지 않지만, 마크업 콘텐트에 관련된 하나 이상의 속성(214)을 포함할 수 있고, 또는 리스너(listener)(218)에게 신호로 알려질 수 있는 0개 이상의 이벤트(216)를 포함할 수 있다. 리스너(218)는 HD-DVD 애플리케이션의 저작자에 의해 쓰여진 JavaScript 코드로 구현될 수 있다.
<Cue> 타이밍 컨테이너(212a)는 특정 이벤트(216)를 포함할 수 있다. 더욱 구체적으로, 타이밍 컨테이너는 타이밍 컨테이너가 활성상태 및 비활성상태로 될 때와, 특정 애니메이션 동작이 어떤 특정 노드에 적용되는지를 정의하는 하나 이상의 특성을 포함할 수 있다. 애니메이션 동작의 예는 <animate>, <set> 및 <event>를 포함한다. 도 2는 시작 시간 특성(220), 종료 시간 특성(222) 및 지속시간 특성(224)으로 표시된 타이밍 관련 특성의 3가지 예를 도시하고 있다.
이들 특성을 더욱 상세하게 참조하면, 시작 시간 특성(220)은 특정 시간 간격이 시작하는 때를 지정할 수 있고, 종료 시간 특성(222)은 특정 시간 간격이 끝나는 때를 지정할 수 있다. 지속시간 특성(224)은 시작 시간 특성(220) 및 종료 시간 특성(222)에서 구해질 수 있고, 또는 특성(220 및 222)을 대신하여 따로 지정될 수 있다.
상기 설명으로부터, 타이밍 컨테이너가 <par>, <seq> 또는 <cue>일 수 있다는 것을 상기하자. 타이밍 컨테이너는 컨테이너가 활성상태 또는 비활성상태일 때(예를 들어, begin, end, dur)를 정의하는 특성을 포함한다. <cue>는 또한 주어진 애니메이션 동작이 적용되는 DOM 내의 노드를 정의하는 "select" 특성을 포함할 수 있다. 특성 'begin', 'end' 및 'select'는 시간 식을 사용할 수 있다. 시간 식은 정해진 기간, 또는 XPATH 식(예를 들어, "id('myButton')[state:focused()=true()]")을 포함할 수 있다.
지속시간 특성을 더욱 상세하게 참조하면, 타이밍 컨테이너는 몇몇 경우에, 특정 시간 오프셋과 관련하여 지속시간 특성을 지정할 수 있다. 이들 경우에, 이러한 특정 시간 오프셋에 의해 정의된 간격은 도 2에서 참조번호(226)로 표시된 "정해진" 간격으로 생각될 수 있다. 정해진 간격의 예는 10초, 20 밀리초 등과 같은 지정된 지속시간을 포함할 수 있다.
사용자 상호작용성, 및 DOM에 대한 기타 변경은 시간 간격의 지속시간에 영향을 미칠 수 있다. 예를 들어, 임의의 타이밍 컨테이너의 "end" 특성은 XPATH 식으로서 정의될 수 있다. XPATH 식은 사용자 입력으로 인해, 또는 저작자에 의해 이루어진 스크립트(예를 들어, 113)의 변경으로 인해 변경되는 하나 이상의 속성에 대한 특정 변경을 찾기 위해 DOM을 쿼리할 수 있다. 이번에는, 이들 변경이 시간 컨테이너의 지속시간에 영향을 미칠 수 있다. 이들 경우에, 이러한 특정 시간 오프셋에 의해 정의된 간격은 도 2에서 참조번호(228)로 표시된 "정해져 있지 않은" 간격으로 생각될 수 있다. 몇몇 구현에서, 타이밍 컨테이너는 XML 경로 식 또는 XPATH 식과 관련하여 이러한 정해져 있지 않은 간격을 지정할 수 있다. 도 2는 참조부호(230a 및 230n)(일반적으로, 230)로 표시된 XPATH 식의 2가지 예를 제공한다. 그러나, 타이밍 컨테이너의 구현은 임의의 적합한 수의 XPATH 식(230)을 포함할 수 있다.
다음은 타이밍 마크업의 예이다:
Figure 112009040516380-PCT00002
상기 예는 지속시간이 2초의 정해진 간격이고, 관련 콘텐트 노드 세트가 식별자 id='mybutton'을 갖는 요소인 단일 병렬 타임 컨테이너(예를 들어, 210)를 정의한다. 이 병렬 타임 컨테이너는 그 부모 병렬 컨테이너로부터 2초의 지속시간을 물려받는 단일 순차 타임 컨테이너(예를 들어, 208)를 포함한다.
병렬 타임 컨테이너는 2개의 큐 타이밍 컨테이너를 포함한다. 제1 큐 타임 컨테이너는 1초 동안 실행되고, 마크업 요소 'mybutton'의 배경 색을 적색으로 설정한다. 제1 큐에 의해 설정된 배경 색은 프레젠테이션 값을 가질 수 있는 속성(예를 들어, 214)의 한 예이다. 제1 큐는 또한 활성상태가 되면 "myevent"라는 이름의 이벤트(예를 들어, 216)를 발생시킨다.
제2 큐는 제1 및 제2 큐의 부모 컨테이너가 순차 컨테이너이기 때문에, 제1 큐가 완료된 후에 활성화된다. 제2 큐는 1초동안 실행된다. 제2 큐가 활성상태인 동안에, 제2 큐는 마크업 요소 'mybutton'의 x 위치를 0 내지 100 픽셀에서 움직이게 하고, 또한 마크업 요소 'mybutton'의 배경 색을 청색으로 변경한다. 이들 큐가 비활성상태로 될 때, 배경 색의 원래 속성 값이 복원된다.
타이밍 컨테이너의 몇몇 구현에서, 하나의 XPATH 식은 다른 XPATH 식 내에 중첩될 수 있다. 다른 구현에서, XPATH 식에 의해 정의된 2개 이상의 간격은 부모-자식 관계로 배열될 수 있다. 이러한 몇 가지 경우에, 타이밍 간격이 "유지"될 수 있는데, 이것은 자식 간격이 부모 또는 다른 조상 간격의 지속시간 동안 계산된 속성 값의 최종 집합을 유지한다는 것을 의미한다.
도 2에서 프레젠테이션 엔진 및 타이밍 마크업을 더욱 상세하게 설명했으므로, 이제 설명은 도 3에 나타낸, 타이밍 마크업의 처리를 최적화하는 전략 및 XPATH 식 매니저의 설명으로 진행한다.
도 3은 타이밍 마크업의 처리를 최적화하는 전략 및 XPATH 식 매니저의 실시양상(300)을 도시한 것이다. 편의를 위해(제한되는 것은 아님), 앞에서 설명된 일부 요소는 도 3으로 넘겨지고, 동일한 참조 번호로 표시된다.
프레젠테이션 엔진(122)은 틱(204)에 응답하여 HD-DVD(104)로부터 판독된 요소를 처리할 때, 타이밍 마크업(112) 내에서 하나 이상의 XPATH 식(218a)과 마주칠 수 있다. 프레젠테이션 엔진이 마크업 내의 XPATH 식의 위치를 찾으면, 프레젠테이션 엔진은 처리 및 평가를 위해 이들 XPATH 식을 XPATH 식 매니저 컴포넌트(302)에 전송할 수 있다. 도 3은 XPATH 식 매니저에게 전송된 XPATH 식을 참조번호(218b)로 나타낸다.
게다가, XPATH 식 매니저는 타이밍 마크업(112)이 처리될 때 발생하는 스타일 및 상태 변경을 나타내는 데이터를 수신할 수 있다. 도 3은 이들 스타일 및 상태 변경을 참조번호(303)로 표시한다. 시간 간격은 활성상태로 될 때, 간격이 활성상태인 동안 적용될 하나 이상의 애니메이션 동작의 목록, 및 이들 애니메이션 동작이 적용될 특정 타깃 노드 세트를 포함한다. 애니메이션 동작은 예를 들어, <set>, <animate>, <event> 및 <link>를 포함한다. 다음 예는 설명을 용이하게 하기 위해 제공된 것이지, 가능한 구현을 제한하는 것이 아니다:
Figure 112009040516380-PCT00003
Figure 112009040516380-PCT00004
상기 예는 예시적인 마크업 파일의 타이밍 섹션 및 본문 섹션을 보여준다. 타이밍 섹션은 2개의 타이밍 컨테이너: <par> 및 <cue>를 포함한다. <par>는 정의되어 있지 않지만, "select" 특성에 의해 관련된 노드 세트를 움직이게 하는 <cue>를 포함한다. "select" 특성은 id=div2인 요소를 의미하는 일정한 XPATH 식 = id('div2')로서 정의된다. 이 <cue>의 'begin' 특성은 정해져 있지 않은 XPATH 식으로서 정의되고, id='animate1'인 요소의 실행 상태가 참으로 될 때 <cue>가 활성 상태로 되는 것을 의미한다. 일단 이 조건이 충족되었으면, 시간 간격(이 경우에 <cue>)은 활성 상태로 되고, 시간 간격은 포함하고 있는 애니메이션 동작을 적용한다. 이 예에서, 애니메이션 동작을 다음을 포함한다:
1) <animate>: 간격의 지속시간 동안 값들의 범위에 걸쳐 타깃 노드 세트(이 경우에 'div2')에 대한 style:x 위치를 삽입;
2) <set>: 타깃 노드 세트 'div2'에 대한 style:backgroundColor 속성에 값 'blue'를 적용;
3) <event>: 간격이 활성 상태인 시점에만 타깃 노드 세트 'div2'에 대해 이름이 'myEvent'인 이벤트를 발생시킴. 저작자에 의해 스크립트에 정의된 리스너 함수(예를 들어, 218)는 이 통지를 수신할 수 있고, 이 통지 수신시에 스크립트 내의 임의 수의 연산을 호출할 수 있다.
XPATH 식 매니저 컴포넌트는 XPATH 식을 평가하는 명령어를 포함하는 하나 이상의 소프트웨어 모듈을 포함할 수 있다. 게다가, XPATH 식 매니저(302)는 XPATH 식(218)의 처리가 최적화될 수 있는지 판정하기 위해 XPATH 식을 최적화 엔진(130)에 전송할 수 있다. 도 3은 최적화 엔진에 전송된 XPATH 식을 참조번호(218c)로 표시한다.
몇몇 경우에, 최적화 엔진은 여기에서 설명된 하나 이상의 전략을 사용하여 XPATH 식의 처리를 최적화할 수 있다. 이들 경우에, 최적화 엔진은 XPATH 식의 최적화된 평가로부터 비롯된 결과(304)를 반환할 수 있다. 도 3은 최적화 엔진이 이들 결과(304)를 XPATH 식 매니저(302)에 또는 이 매니저(302)를 통해 반환하는 예를 도시한 것이다.
몇몇 경우에, XPATH 식(218)은 여기에서 설명된 어떤 전략을 사용해도 최적화 처리에 적합하지 않을 수 있다. 이들 경우에, XPATH 식 매니저(302)는 이들 XPATH 식을 스스로 평가하여, 값(306)을 프레젠테이션 엔진으로 반환할 수 있다. 이 값(306)은 비최적화 평가의 결과를 나타낸다.
최적화 엔진(124)은 타이밍 마크업(106)의 처리를 최적화하는 하나 이상의 전략을 구현하는 소프트웨어 모듈을 포함할 수 있다. 도 3은 이들 전략을 블록 형태로 나타내고, 나중의 도면에서 이들 전략을 더욱 상세하게 설명한다.
블록(308)에 나타낸 바와 같이, 한 전략은 HD-DVD로부터 판독된 마크업에 정의된 XPATH 식들의 최소한 몇몇을 사전 구문 분석하고 사전 계산하는 것을 포함할 수 있다. 블록(310)에 의해 나타낸 전략은 포커스 상태에 의존하는 식을 위한 처리를 최적화하는 것을 포함할 수 있다. 블록(312)에 의해 나타낸 전략은 유한 상태 기계를 사용함으로써 처리를 최적화하는 것을 포함할 수 있다. 블록(314)에 의해 나타낸 전략은 상보적인 식을 인식하고 평가함으로써 타이밍 컨테이너의 처리를 최적화하는 것을 포함할 수 있다. 블록(316)에 의해 나타낸 전략은 타이밍 관련 데이터 구조를 저장하기 위해 공용 메모리 풀을 사용함으로써 타이밍 컨테이너의 처리를 최적화하는 것을 포함할 수 있다. 블록(318)에 의해 나타낸 전략은 스케줄러를 사용함으로써 처리를 최적화하는 것을 포함할 수 있다.
이러한 다양한 전략(308-318)을 아래에 더욱 상세하게 설명하지만, 여기에서의 설명의 구현은 적절하게 조합하여 이들 전략의 하나, 일부 또는 전부를 포함할 수 있다는 것을 알기 바란다. 또한, 이들 전략은 분리된 소프트웨어 모듈로 구현될 수 있고, 또는 하나 이상의 공통 모듈 내로 통합될 수 있다. 따라서, 도 3은 이들 가능한 구현을 제한하기 위해서가 아니라 단지 설명 및 참조의 용이성을 위해서 이들 전략을 분리된 블록으로 도시했다는 것을 알기 바란다.
최적화 엔진(130)은 최적화 전략(308-318)의 어느 것을 사용해도 최적화되지 않은 임의의 XPATH 식을 재평가하기 위해 XPATH 평가 엔진(320)과 협력할 수 있다. XPATH 평가 엔진(320)은 W3C XPATH 2.0에서 파생된 HD-DVD XPATH 구문에 따를 수 있다. XPATH 식 매니저(302)는 주어진 XPATH 식을 재평가하기 위해 XPATH 평가 엔진(320)을 직접 호출할 수 있다. 도 3에서의 점선(218d)은 이러한 호출을 나타내고, XPATH 평가 엔진(320)에 입력으로서 제공된 XPATH 식을 나타낸다. 그 다음에, XPATH 평가 엔진(320)은 평가 결과(322)를 생성하고, 이들 결과를 최적화 엔진에 제공할 수 있다.
도 3에서 타이밍 마크업의 처리를 최적화하는 몇 가지 전략 및 XPATH 식 매니저를 설명했으므로, 이제 설명은 도 4에 나타낸 타이밍 마크업을 처리하기 위한 데이터 및 프로세스 흐름의 설명으로 진행한다.
도 4는 타이밍 마크업을 처리하기 위한 데이터 및 프로세스 흐름(400)을 도시한 것이다. 편의를 위해(제한되는 것은 아님), 앞에서 설명된 일부 요소는 도 4로 넘겨지고, 동일한 참조 번호로 표시된다. 게다가, 도 4는 설명의 용이성을 위해(제한되는 것은 아님) 소정의 컴포넌트에 의해 실행되는 데이터 및 프로세스 흐름(400)의 몇몇 실시양상을 도시하고 있다.
블록(402)은 클록 펄스 또는 틱(예를 들어, 204)의 수신에 응답하여 클록 투플(tuple)을 발생시키는 것을 나타낸다. 클록 투플은 제목 클록, 페이지 클록 및 애플리케이션 클록 값들을 포함할 수 있다. 틱이 발생할 때, 블록(402)은 대응하는 클록 투플을 발생시킨다. 이들 클록 투플은 동일한 클록 기준에 동기화된다. 도 4에 도시된 바와 같이, 프로세서(예를 들어, ICP(112))는 블록(402)을 실행할 수 있다. 몇몇 구현에서, 프로세서 내에 있는 오실레이터 또는 유사한 타이밍 요소는 블록(402)을 실행할 수 있다. 다른 구현에서, 오실레이터 또는 타이밍 요소는 프로세서의 외부에 있을 수 있다.
블록(404)은 클록 펄스에 응답하여 온-틱(on-tick) 메시지를 생성하고 송신하는 것을 나타낸다. 이 온-틱 메시지는 도 4에 도시된 나머지 프로세스 요소에 통지 메카니즘을 제공하는 것으로, 클록 펄스가 발생했다는 것을 표시한다.
블록(406)은 블록(402)에서 생성된 클록 투플을, 예를 들어 프레젠테이션 엔진(예를 들어, 116)에 송신하는 것을 나타낸다. 도 4는 프레젠테이션 엔진에 보낸 클록 투플을 참조번호(408)로 표시한다. 클록 투플(408)은 참조번호(410)로 표시된 온-틱 메시지를 포함할 수 있다. 온-틱 메시지(410)는 예를 들어, 현재 페이지 클록 값(412), 제목 클록 값(414) 및 애플리케이션 클록 값(416) 중의 하나 이상을 포함할 수 있다.
프레젠테이션 엔진에서, 블록(418)은 클록 투플(408)을 수신하는 것을 나타낸다. 블록(420)은 입력 클록 투플 내에 나타난 틱에 대한 시간 해상도를 실행하는 것을 나타낸다. 블록(420)의 실행시에, 프레젠테이션 엔진은 문서 개체 모델(DOM)(422)과 같은 데이터 구조를 쿼리할 수 있다. DOM(422)은 예를 들어, HD-DVD 디스크(예를 들어, 104) 상에 인코딩되고 이 디스크로부터 판독가능한 콘텐트 마크업, 스타일 마크업 및 타이밍 마크업(106)을 포함할 수 있다. DOM은 XML 어휘를 사용하여 트리 데이터 구조로서 구현될 수 있다.
DOM(422)은 틱(204)이 발생할 때 처리하기 위해 관련되는 하나 이상의 XPATH 식(예를 들어, 218)을 저장할 수 있다. DOM은 도 4에서 블록(422와 420)을 연결하는 점선으로 나타낸 바와 같이, 프레젠테이션 엔진으로부터의 쿼리에 응답하여 이들 XPATH 식(218)을 제공할 수 있다.
블록(424)은 클록 투플에 응답하여 활성 애니메이션 목록을 갱신하는 것을 나타낸다. 더욱 구체적으로, 블록(424)은 새로운 클록 투플에 대한 활성 간격 목록을 갱신하는 것을 포함할 수 있다. 전체적인 처리 부담을 줄이기 위해, 이전의 결과가 캐시될 수 있고, 새로운 클록 투플로부터 발생한 변경사항만이 활성 간격 목록에 반영된다. 타이밍 간격이 활성 상태로 될 때, 이들은 활성 간격 목록에 추가되고; 이와 반대로, 타이밍 간격이 비활성 상태로 될 때, 이들은 활성 간격 목록에서 제거된다.
활성 간격 목록은 어느 간격이 활성상태인지 나타낸다. 다르게 말하면, 블록(424)은 XPATH 식 내에 지정된 타이밍 간격 중에서 어느 타이밍 간격이 주어진 틱에서 활성상태인지 또는 활성상태로 되는지 판정하는 것을 포함할 수 있다. 주어진 시간에 활성상태인 타이밍 간격은 "활성 간격"이라 칭해진다.
블록(426)은 활성 간격을 평가하는 것과, 활성 간격에 대한 새로운 프레젠테이션 값을 계산하는 것을 포함할 수 있는 애니메이션 처리를 실행하는 것을 나타낸다. 이들 간격의 값은 레이어(layer)들이 다양한 방식으로 조합되거나 모호해질 수 있을 정도로 레이어링될 수 있다. "프레젠테이션 값"이라는 용어는 주어진 시점에 대한 네트 또는 실효 값을 일컫는다. 다른 값들이 주어진 간격과 관련되고, 레이어링 시에 숨겨지며, 및/또는 이러한 전체 프레젠테이션 값에 일조하기 위해 조합될 수 있긴 하지만, 프레젠테이션 값은 주어진 간격 동안에 사용자에게 명백해진다. 블록(426)은 일반적으로 참조번호(428)로 표시된 샌드위치 모델에 기초하여 이들 새로운 프레젠테이션 값을 계산하는 것을 포함할 수 있다. 샌드위치 모델은 주어진 틱에 대한 프레젠테이션 값을 지정할 수 있고, DOM의 레이아웃 섹션 내의 관계있는 노드들과 관련된 동적 속성을 지정할 수 있다.
블록(430)은 블록(426)에서 결과적으로 얻은 프레젠테이션 값에 대해 포매팅 및 레이아웃 동작을 실행하는 것을 나타낸다. 블록(430)은 확장성 스타일시트 언어(XSL)를 사용하여 포매팅 및 레이아웃을 지정하는 것을 포함할 수 있다.
도 4에서 타이밍 마크업을 처리하기 위한 데이터 및 프로세스 흐름을 설명했으므로, 이제 설명은 도 5에 나타낸 이들 데이터 및 프로세스 흐름의 몇몇 실시양상에 관한 자세한 내용의 설명으로 진행한다.
도 5는 도 4에 도시된 데이터 및 프로세스 흐름의 추가 실시양상(500)을 도시한 것이다. 편의를 위해(제한되는 것은 아님), 앞에서 설명된 일부 요소는 도 5로 넘겨지고, 동일한 참조 번호로 표시된다.
도 5에 도시된 바와 같이, DOM(422)은 도 5에서 일반적으로 참조번호(502)로 표시된 다수의 개별 마크업 요소를 포함할 수 있다. 도 5는 3가지 예의 마크업 요소를 참조번호(502a, 502b 및 502n)로 표시한다. 그러나, DOM의 구현은 임의 수의 요소(502)를 포함할 수 있고, DOM 트리는 임의의 적합한 형태를 취할 수 있다. 이들 마크업 요소는 사용자에게 온-스크린 렌더링되는 장면 설명을 정의할 수 있다.
도 4에서 설명된 바와 같이, 블록(424)은 다수의 타이밍 컨테이너를 포함할 수 있는 활성 애니메이션 목록을 생성하는 것을 나타낸다. 블록(424)은 블록(504)에 의해 나타낸 바와 같이, 시작 시간 특성에 의해 활성 애니메이션 목록 내의 타이밍 컨테이너를 정렬하는 것(예를 들어, 도 2의 208)을 포함할 수 있다. 블록(424)은 또한 블록(506)에 의해 나타낸 바와 같이, 활성 애니메이션 목록 내의 타이밍 컨테이너를 사전식으로 정렬하는 것을 포함할 수 있다.
타이밍 간격의 정렬 또는 순서화는 적절한 데이터 구조를 사용하여 "그 자리에서" 행해질 수 있다. 여기에서 설명된 기술을 사용하면, 모든 활성 타이밍 간격은 각 클록 틱에서 재정렬되거나 재순서화될 필요가 없다. 예를 들어, 데이터 구조는 활성 간격 목록에 추가된 최종 시간 및 타이밍 간격을 추적할 수 있다. 데이터 구조는 프로세스(400 및 500)가 디폴트에 의해 최신의 타이밍 간격을 활성 간격 목록의 끝에 추가하게 했다는 통계적 증거를 포함할 수 있다. 예외적인 경우에만, 프로세스는 새로운 타이밍 간격에 대한 적절한 삽입 지점의 위치를 지정하기 위해 활성 간격 목록을 다시 더 들여다볼 수 있다. 통상적으로, 적절한 삽입 지점은 가장 최근에 추가된 간격에 가까운 부근이다. 그러나, 이 삽입 지점의 위치지정은 HD-DVD 타이밍 마크업의 본문에 관한 이전의 통계적 분석에 기초할 수 있다.
블록(426)을 참조하면, 이 블록은 블록(508)에서 나타낸 바와 같이, 활성 애니메이션 목록에 포함된 활성 간격을 처리하는 것을 또한 나타낼 수 있다. 블록(426)은 블록(510)에 의해 나타낸 바와 같이, 현재의 틱에 대한 새로운 프레젠테이션 값을 계산하는 것을 또한 포함할 수 있다. 블록(426)은 블록(512)에 의해 나타낸 바와 같이, 마크업 특정 이벤트를 발생시키는 것을 포함할 수 있다. 마지막으로, 블록(428)은 블록(514)에 의해 나타낸 바와 같이, 임의의 비활성 타이밍 간격을 복원하는 것을 포함할 수 있다.
여기에서 나타낸 도구 및 기술을 사용하면, 프로세스(400 및 500)는 XPATH 식의 처리를 최적화할 수 있다. 여기에서 설명된 XPATH 식의 처리의 최적화는 더 빠른 프레임 속도를 달성할 수 있고, HD-DVD 콘텐트와 상호작용할 때 더 양호한 사용자 또는 시청자 경험을 제공할 수 있다.
도 5에서 이들 데이터 및 프로세스 흐름의 추가 실시양상을 설명했으므로, 이제 설명은 도 6에서 시작되는 최적화 전략의 더욱 상세한 설명으로 진행한다.
도 6은 소정의 XPATH 식의 사전 구문분석 및 사전 계산을 수반하는 최적화 전략에 관련된 컴포넌트 및 프로세스 흐름(600)을 도시한 것이다. 편의를 위해(제한되는 것은 아님), 앞에서 설명된 일부 요소는 도 6으로 넘겨지고, 동일한 참조번호로 표시된다.
도 6에 도시된 바와 같이, 최적화 엔진(예를 들어, 124)은 소정의 XPATH 식의 사전 구문분석 및 사전 계산에 적합한 소프트웨어 컴포넌트를 포함할 수 있다. 도 3은 이러한 소프트웨어 컴포넌트의 예를 참조번호(308)로 표시하고, 블록(308)은 도 6으로 넘겨진다. 최적화 엔진은 XPATH 식 매니저(예를 들어, 302)와 협력할 수 있다.
도 6은 사전 구문분석 및 사전 계산에 의해 XPATH 식의 처리를 최적화하는 프로세스 흐름(600)을 도시한 것이다. 블록(602)은 XPATH 식 매니저에 의해 수신된 입력 XPATH 식을 구문 분석하는 것을 나타낸다. 도 6은 XPATH 식의 예를 참조번호(218)로 표시한다.
블록(604)은 입력 XPATH 식(218) 내에 존재하는 하나 이상의 중간 XPATH 식을 식별하는 것을 나타낸다. 도 6은 이들 중간 식의 2가지 예를 참조번호(606a 및 606n)로 표시한다. 그러나, 임의 수의 중간 식(606)은 주어진 XPATH 식(218)에 존재할 수 있다.
블록(608)은 중간 식(606)을 캐시하고, 이들을 DOM 트리 내의 대응하는 요소 또는 노드와 관련시키는 것을 나타낸다. DOM 트리(422) 및 관련 노드(502)는 도 6으로 넘겨진다. 캐시(610)는 DOM 트리 및 관련 노드를 저장할 수 있다.
블록(612)은 전체 XPATH 식을 구성할 수 있는 중간 식들의 계산 결과와 구별되는 전체 XPATH 식의 결과를 계산하는 것을 나타낸다. 몇몇 클록 틱에 관해 잠시 더욱 상세하게 설명되는 바와 같이, 중간 XPATH 식들 중의 어떤 중간 식도 값을 변경시킬 수 없으므로, 전체 XPATH 식의 값은 일정하게 유지된다.
블록(614)은 전체 XPATH 식의 값을 개시하는 것을 나타낸다. 전체 XPATH 식의 값이 주어진 틱 후에 일정하게 유지되는 경우에, 전체 XPATH 식의 이전 값은 다음에 캐시로부터 검색될 수 있다.
주의할 점은 블록(602-608)이 블록(612-614)과 동시에 실행될 수 있다는 것이다. 이러한 방식으로, 전체 XPATH 식은 중간 식(예를 들어, 606a 및 606n), 및 다양한 중간 식을 위해 계산되고 캐시된 값으로 구문 분석될 수 있다. 한편, 전체 XPATH 식의 값은 블록(616)에 의해 나타낸 바와 같이, 계산되고 캐시될 수 있다.
블록(618)은 틱 또는 다른 타이밍 이벤트를 수신하는 것을 나타낸다. 틱과 관련하여, 블록(620)은 캐시 내에 저장된 사전 분석되고 사전 계산된 중간 식(예를 들어, 606)을 평가하는 것을 나타낸다. 블록(620)은 또한 캐시 내에 저장된 사전 계산된 전체 식(예를 들어, 616)을 평가하는 것을 포함할 수 있다. 블록(622)은 블록(620)에서 실행된 평가로부터 얻은 값을 반환하는 것을 나타낸다. 그 후, 프로세스 흐름(600)은 블록(618)으로 돌아가 다음 틱을 기다릴 수 있다.
도 6에 도시된 기술에서, 중간 식은 각 XPATH 축을 정규형으로 완전히 변형시키는데, 정규형은 노드 세트의 이진 표현, 연산자의 이진 목록, 및 술어(predicate) 필터의 이진 표현을 포함할 수 있다. 술어 필터 외에는 모두 완전히 변형될 수 있는데, 이것은 중간 식이 완전히 구문분석되었고, 축 노드 세트가 축 내의 DOM 노드의 목록을 나타내는 참조 데이터 구조를 참조하며, 술어 필터가 선언적 형태의 원래 문자열 데이터를, 재해석할 필요없이 효율적으로 평가될 수 있는 더욱 단순한 이진 형태로 변환시켰다는 것을 의미한다.
이들 식을 캐시하는 것은 시간 간격 노드를 캡슐화하는 데이터 구조/개체에 관한 구문분석된 식에 대한 참조를 저장하는 것을 포함하여, 상이한 메커니즘으로 행해질 수 있다. XPATH 식은 구문분석되고, 미리 계산되며, 로드시에, 또는 연속적인 온-틱/레이아웃 동작 이전의 임의의 시점에서, 이진 정규형으로 변환될 수 있다. 주의할 점은 이 동작이 주어진 DOM에 대해 한 번만 행해지고, DOM이 변화하는 경우에만 다시 행해진다는 것이다. 일단 XPATH 식이 구문분석되고, 최소한 부분적으로 변형(몇몇 경우에는 완전히 변형)되면, 식 매니저는 역시 단순화된 술어 필터에 관해서만 식을 평가할 수 있다.
다음 예를 생각해보자:
<cue begin="//button[style:backgroundColor()='red']"dur="500ms"...>
XPATH 식 '//button[style:backgroundColor()='red']'은 요소 이름이 "button"인 XML DOM 내의 모든 요소를 쿼리하고, 그 세트 중에서, style:backgroundColor 속성의 현재 계산된 값이 'red' 값과 동일한 임의의 요소를 반환한다는 의미이다.
전형적인 환경에서, 이 식은 먼저 구문분석된 다음에, 그 후에 평가될 수 있다. 구문분석 단계는 원래의 문자열을 일련의 하나 이상의 토큰으로 변환하고, 원래 문자열 식의 더욱 단순하고 효율적인 형태를 설명하는 참조 데이터 구조 내에 저장한다. 통상적으로, 재귀 하강 구문분석 알고리즘이 식을 구문 분석하기 위해 사용될 수 있다. 그러나, 다른 구문분석 알고리즘 및 방법이 사용될 수 있다.
구문분석 단계 동안에 실행될 수 있는 하나의 프로세스는 축 변환이다. 축 변환은 0개 이상의 술어 필터가 동작할 하나 이상의 노드 세트를 생성하는 프로세스를 일컫는다. 각각의 시간 간격이 정해져 있지 않은 XPATH 식을 구문 분석할 때, 간격은 구문분석되어 부분적으로 변형된 식에 대한 참조를 유지한다. 통상적으로, 이 참조는 하위 DOM이 변화(일반적으로 HD-DVD 애플리케이션에서는 드문 일임)하지 않으면, 이 구문분석 단계를 다시 실행할 필요성을 모두 없애준다.
일단 구문분석 단계가 완료되었으면, 더욱 단순하고 더욱 효율적인 이진 데이터 구조는 식 평가인 제2 단계를 위해 사용된다. 식 평가는 더욱 단순한 데이터 구조에서 실행되고, 0개 이상의 술어 필터에 기초하여 변환하고 결과를 생성하는 것만을 수반한다. 술어 필터는 또한 이진 정규형으로 나타내지므로, 식 평가에 관련된 처리 부담을 감소시킨다.
도 6에 도시된 방식 하에서, XPATH 식을 구문 분석하는 시간 소모적이고 처리 집약적인 작업은 한 번만 행해지고, 중간 식은 부분적으로(또는 몇몇 경우에 완전히) 변형된다. 이들 최적화는 XPATH 식의 처리 및 평가와 관련된 처리 부담을 상당히 감소시킬 수 있다.
도 6에서 식의 사전 계산을 수반하는 최적화 전략을 설명했으므로, 이제 설명은 이벤트 반응형(event-driven) 식을 수반하는 최적화 전략의 더욱 상세한 설명으로 진행한다.
이벤트 반응형 식을 수반하는 최적화 전략을 더욱 상세하게 참조하면, 도 3은 최적화 엔진(124)에 의해 제공될 수 있는 이벤트 반응형 식을 수반하는 최적화 전략을 참조번호(310)로 도시했다. 이들 최적화 전략은 정해져 있지 않은 식을, 이벤트의 발생에 의해 또는 이벤트의 발생에 의존하여 구동될 수 있는 식(기본 값이 폴링(polling)에 의해 결정될 수 있는 식과 구별됨)으로 분리하는 것을 포함할 수 있다. 예를 들어, 타이밍 컨테이너(예를 들어, par, seq 및 cue)는 이들 각각의 간격이 활성상태 또는 비활성상태로 되는 때를 정의하기 위해 HD-DVD 상태 네임스페이스를 사용할 수 있다. 상호작용 상태(예를 들어, state:foreground, state:focused, state:pointer, state:actioned, state:value 및 state:enabled)는 주로 사용자가 제어기를 통해 시작하는 이벤트로부터 구동될 수 있다. 이들 이벤트-반응형 이벤트는 타이밍 마크업의 처리로부터 대역에서 벗어나 다루어질 수 있다. 이들 이벤트 또는 상태 천이는 틱마다 실행되는 식 평가의 수를 제거 또는 감소할 수 있는 이벤트 반응형 메커니즘을 트리거하기 위해 사용될 수 있다.
HD-DVD 사양은 제어기 이벤트 또는 "제스처"가 프레젠테이션 엔진에 전달되는 방법에 대한 모델을 정의한다. 이들 이벤트는 "틱" 처리로부터 대역을 벗어나 보내질 수 있고, 마크업 DOM의 "상태" 네임스페이스에 영향을 줄 수 있다. HD-DVD 사양은 "상태"에 대한 변경이 DOM 내의 기본 특성을 즉시 변경시킨다는 점에서, 샌드위치 모델의 관점에서 "상태" 네임스페이스를 "스타일" 네임스페이스와 다르게 정의한다.
상태 값이 틱 및 레이아웃 처리로부터 대역을 벗어나 다루어지기 때문에, 제스처 이벤트를 다루는 프로세스는 차후에 온-틱 처리 동안에 다루어지는 애니메이션 목록을 관리하는 데이터 구조에 관련될 수 있다. 상태 값이 변경될 때, 상태 값은 이 상태 변경의 변환을 기다리고 있는 임의의 XPATH 식에 직접 연결될 수 있다.
begin XPATH 식을 포함하는 다음 큐를 생각해보자:
<cue begin="id('myButton1')[state:focused()=1]"...>
이 큐는 고유 이름이 'myButton1'인 요소에 대해 state:focused 특성이 "1"로 설정될 때 시작해야 한다는 것을 선언한다. 프레젠테이션 엔진 내의 제스처 처리 로직은 사용자 입력 및 차후의 상태 관리를 관리할 수 있다. 이 식이 참으로 되는 때에 대해 XPATH 엔진을 연속적으로 폴링하기 보다는 오히려, 제스처 처리 로직은 XPATH 식을 평가하지 않고 XPATH 식을 변환할 수 있게 하는 미리 결정된 지식을 가질 수 있어서, 이로 인해 XPATH 식을 평가하는 부담을 없애준다.
이벤트 반응형 식의 최적화에 관한 사전 처리를 설명했으므로, 이제 설명은 도 7에 나타낸 바와 같이, 이벤트가 발생할 때 실행될 수 있는 처리의 설명으로 진행한다.
도 7은 이벤트 반응형 식의 최적화에 관련된 컴포넌트 및 흐름(700)을 도시한 것이다. 편의를 위해(제한되는 것은 아님), 앞에서 설명된 일부 요소는 도 7로 넘겨지고, 동일한 참조번호로 표시된다.
여기에서 사용된 "이벤트" 또는 "이벤트들"이라는 용어는 애니메이션 및/또는 스크립트로부터 비롯된 스타일 및 상태에 대한 변경뿐만 아니라, 사용자 입력으로부터 비롯된 스타일 및 상태에 대한 변경을 나타낼 수 있다. 더욱 구체적으로, XPATH 식 매니저(예를 들어, 302)는 프레젠테이션 엔진(예를 들어, 122)과의 관계를 설정하고, 그 관계하에, XPATH 식 매니저는 상기 설명된 저작자 정의 스크립트 코드, 사용자 입력 또는 애니메이션으로부터 비롯된 상태 및 스타일 속성에 대한 변경을 받아들인다. 달리 말하면, 스크립트 코드는 0개 이상의 속성 값(상태 및 스타일)을 수정할 수 있고, 사용자 입력은 임의의 상호작용 요소의 상태를 변경할 수 있으며, 애니메이션(즉, 타이밍 요소의 처리)은 요소의 상태 및 스타일의 변경을 초래할 수 있다. XPATH 식 매니저는 이들 입력을 받아들이고, 이에 따라 XPATH 식의 내부 캐시를 관리하고 갱신한다.
앞에서 설명된 바와 같이, 사용자(예를 들어, 102)는 HD-DVD 플레이어(예를 들어, 도 1의 108)에 입력을 제공할 수 있다. 예를 들어, 사용자는 명령을 입력할 수 있고, 또는 프레젠테이션 엔진(예를 들어, 116)에 의해 표시된 프롬프트 또는 메뉴에 응답할 수 있다. 도 7은 이러한 사용자 입력을 일반적으로 참조번호(702)로 표시하고, 음성 명령, 원격 제어 장치를 통하거나 HD-DVD 플레이어 상의 버튼을 통해 입력된 명령 등을 포함할 수 있다. 프레젠테이션 엔진은 사용자 입력(702)을 수신하고 처리하는 제스처 처리 로직(704)을 포함하거나 이 로직과 협력할 수 있다.
제스처 처리 로직(704)은 사용자 입력(702)에 응답하여 발생하는 특정 이벤트를 인식할 수 있고, 이들 이벤트에 대응하는 식별자로 캐시(706)를 쿼리할 수 있다. 도 7은 이러한 식별자(708)의 예를 제공한다. 도 7은 이들 쿼리를 참조번호(710)로 표시한다. 그 다음에, 캐시(706)는 입력 이벤트 식별자(708)에 일치하는 임의의 필드를 반환할 수 있다. 입력 이벤트 식별자가 캐시 내의 임의의 필드 또는 레코드에 일치하면, 캐시는 일치 필드 또는 레코드와 관련된 임의의 평가된 식(712)을 반환할 수 있다. 식(712)은 사용자 입력(702)에서 비롯된 이벤트에 응답하여 값이 변할 수 있는 이들 식을 포함한다.
프레젠테이션 엔진을 참조하면, 틱(204)이 발생할 때, 프레젠테이션 엔진(116)은 이들 틱에 응답하여 DOM(422)으로부터 XPATH 식(218)을 수신할 수 있다. 프레젠테이션 엔진(116)은 XPATH 식(218)을, 캐시(706)로부터 반환된 임의의 이벤트 반응형 또는 이벤트 의존형 식(712)과 비교할 수 있다. 이 비교는 평가치가 사용자 입력(702)으로부터 비롯된 이벤트에 관계없는 이들 XPATH 식을 식별할 뿐만 아니라, 이러한 이벤트로 인해 평가치가 변할 수 있는 이들 XPATH 식을 식별한다. 전자는 이벤트 독립형 식이라 칭해질 수 있고, 참조번호(218a)로 표시된다. 후자는 이벤트 반응형 또는 이벤트 의존형 식이라 칭해질 수 있고, 참조번호(218b)로 표시된다.
이제 이벤트 독립형 식(218a)을 참조하면, 이들 식의 값 또는 평가치는 사용자 이벤트(들)로 인해 변경되지 않는다. 그러므로, 이러한 식의 이전 값이 (예를 들어, 캐시(714) 내에) 미리 저장된 경우, 이들 이전의 값은 변경되지 않고 현재 정확하게 유지될 수 있다. 따라서, 프레젠테이션 엔진(116)은 이들 이벤트 독립형 식(218a)을 참조번호(302a)로 표시된 XPATH 식 매니저의 인스턴스로 전송할 수 있다. XPATH 식 매니저(302a)는 이들 이벤트 독립형 식의 이전 값을 캐시(714)로부터 검색할 수 있다. 그 다음, XPATH 식 매니저(302a)는 이들 평가된 식(참조번호(716)로 표시됨)에 대한 값을 사용을 위해 프레젠테이션 엔진으로 전송할 수 있다.
이제 이벤트 의존형 XPATH 식(218b)을 참조하면, 이들 식은 사용자 입력(702)으로 인해 값 또는 평가치를 변경시킬 수 있다. 이들 경우에, 프레젠테이션 엔진(116)은 임의의 이벤트 의존형 식(218b)을 참조번호(302b)로 표시된 XPATH 식 매니저의 인스턴스에 전송할 수 있는데, XPATH 식 매니저(302b)는 이벤트 의존형 식(218b)을 재평가하고, 참조번호(718)로 표시된 이들 재평가된 식에 대한 갱신된 값을 반환한다.
도 7은 가능한 구현을 제한하기 위해서가 아니라 단지 예시 및 참조를 용이하게 하기 위해 XPATH 식 매니저의 상이한 인스턴스를 도시한 것이다. 더욱 구체적으로, 몇몇 구현에서, 단일 XPATH 식 매니저(302)는 이벤트 독립형 식(218a) 및 이벤트 의존형 식(218b) 둘 다를 처리할 수 있다.
도 8은 이벤트 의존형 또는 이벤트 반응형 식의 처리를 최적화하는 프로세스 흐름(800)을 도시한 것이다. 도 8은 도 7과 관련하여 도시되고 설명된 처리를 순서도 형태로 도시한 것이다. 편의를 위해(제한되는 것은 아님), 앞에서 설명된 일부 요소는 도 8로 넘겨지고, 동일한 참조번호로 표시된다.
게다가, 설명의 용이성을 위해(제한되는 것은 아님), 도 8은 몇 개의 처리 요소를 프레젠테이션 엔진(예를 들어, 116) 및 최적화 엔진(예를 들어, 124)에 대응하는 열로 배열한다. 최적화 엔진은 이벤트 반응형 식 처리의 최적화(예를 들어, 310)에 관련된 소프트웨어 컴포넌트를 포함할 수 있다.
블록(802)은 사용자로부터 입력을 수신하는 것을 나타낸다. 도 7은 사용자(102)의 예를 도시하고, 사용자로부터 수신된 입력(802)의 예를 제공한다.
블록(804)은 블록(802)에서 수신된 사용자 입력으로부터 비롯된 임의의 상태 변경 또는 이벤트를 식별하는 것을 나타낸다. 블록(804)은 미리 정의된 이벤트 식별자(예를 들어, 도 7의 708)에 대응할 수 있는 임의의 이벤트를 식별하는 것을 포함할 수 있다. 이들 미리 정의된 이벤트 식별자는 이들 이벤트의 결과로서 값이 변경될 수 있는 임의의 XPATH 식의 식별을 가능하게 할 수 있다.
블록(806)은 이벤트 반응형 또는 이벤트 의존형 식을 식별하는 것을 나타낸다. 블록(806)은 하나 이상의 기본 이벤트가 발생하는 경우에 값이 변경될 수 있는 대응하는 XPATH 식에 관련되는 이벤트 식별자의 캐시를 쿼리하는 것을 포함할 수 있다. 도 7은 이벤트 식별자(708) 및 이벤트 의존형 식(712)과 함께 이러한 캐시(706)의 예를 제공한다.
블록(808)은 틱 또는 다른 타이밍 입력이 발생했다는 표시를 수신하는 것을 나타낸다. 여기에서, 도 7 및 다른 도면은 틱(204)의 예를 도시한다.
블록(810)은 블록(808)에서 수신된 틱에 응답하여 하나 이상의 XPATH 식을 수신하는 것을 나타낸다. 도 7 및 다른 도면은 XPATH 식(218)의 예를 도시하고, 블록(810)은 이들 XPATH 식을 DOM(예를 들어, 도 7의 422)으로부터 수신하는 것을 포함할 수 있다.
주의할 점은 블록(802-806)에 나타낸 처리가 블록(808 및 810)에 나타낸 처리와 동시에 진행될 수 있다는 것이다. 이러한 방식으로, 프로세스 흐름(800)은 입력 타이밍 틱을 처리하면서, 들어오는 사용자 이벤트를 처리할 수 있다.
블록(812)은 블록(810)에서 수신된 XPATH 식이 블록(802)에서 수신된 사용자 입력으로부터 비롯된 임의의 이벤트에 의존하는지 평가하는 것을 나타낸다. XPATH 식이 이벤트에 반응하거나 이벤트에 의존하면, 이들 식의 값은 블록(802)에서 수신된 사용자 입력에 관한 이벤트로 인해 변경되었을 수 있다. 따라서, 프로세스 흐름(800)은 예(Yes) 분기로(814)로 갈라져 나와서, 사용자 이벤트의 발생을 고려하여 임의의 이벤트 반응형 XPATH 식이 재평가되도록 요청하는 것을 나타내는 블록(816)으로 진행할 수 있다. 블록(816)은 XPATH 식 매니저(예를 들어, 302)가 식을 재평가하도록 요청하는 것을 포함할 수 있다. 도 8은 이 요청을 참조번호(818)로 표시한다.
XPATH 식 매니저(302)를 참조하면, 블록(820)은 XPATH 식을 평가하라는 요청을 수신하는 것을 나타낸다. 블록(820)은 이벤트에 의존하거나 이벤트에 반응하는 XPATH 식을 재평가하라는 요청을 수신하는 것을 포함할 수 있다.
블록(822)은 요청(818)에 응답하여 하나 이상의 XPATH 식을 평가하는 것을 나타낸다. 블록(822)은 하나 이상의 이벤트의 발생에 응답하여 하나 이상의 이벤트 반응형 XPATH 식을 재평가하는 것을 포함할 수 있다.
블록(824)은 블록(822)에서의 식 재평가로부터 생긴 값을 보내는 것을 나타낸다. 다르게 말하면, 블록(824)은 식이 의존하는 임의의 이벤트의 발생을 고려하여 식의 값을 갱신하는 것을 나타낸다. 도 8은 이러한 식 재평가 결과를 참조번호(826)로 표시한다.
블록(828)은 블록(824)에서의 식의 재평가 결과를 수신하는 것을 나타낸다. 도 8에 도시된 예에서, 프레젠테이션 엔진은 블록(828)을 실행할 수 있다.
평가 블록(812)으로 돌아가서, 입력 XPATH 식이 사용자 이벤트에 의존하지 않으면, 프로세스 흐름(800)은 아니오(No) 분기로(830)로 갈라져서, 식의 이전 값을 검색하는 것을 나타내는 블록(832)으로 진행할 수 있다. 예를 들어, 블록(832)은 캐시(예를 들어, 714)에 저장된 식의 이전 평가 결과를 검색하는 것을 포함할 수 있다. 이러한 방식으로, 프로세스 흐름(800)은 값이 기본 사용자 이벤트의 발생에 의존하지 않는 임의의 XPATH 식에 대한 블록(816-828)에 나타낸 처리를 취소할 수 있다.
이벤트 반응 식의 처리를 최적화하기 위한 도 8의 프로세스 흐름(800)을 설명했으므로, 이제 설명은 도 9에 나타낸 바와 같이 유한 상태 기계를 사용하는 최적화 기술의 설명으로 진행한다.
도 9는 유한 상태 기계를 사용하는 최적화 기술(900)을 도시한 것이다. 편의를 위해(제한되는 것은 아님), 앞에서 설명된 일부 요소는 도 9로 넘겨지고, 동일한 참조번호로 표시된다.
도 9는 일반적으로 참조번호(312)로 나타낸, 유한 상태 기계를 수반하는 최적화 기술에 관련된 처리의 추가 설명을 제공한다. 최적화 엔진(124)은 이들 최적화 기술을 제공할 수 있다.
여기에서 설명된 유한 상태 기계는 다양한 타이밍 간격 및 그 관련 조상을 효율적으로 처리하기 위해 애니메이션 엔진에 포함될 수 있는 메커니즘을 제공한다. 기본 상태는 비활성 상태, 활성 상태 및 유지 상태이다. 주어진 타이밍 간격 내의 중간 상태 변수는 재개시가능 상태, 불확정 상태 및 변환된 상태를 포함할 수 있다. 상태 변수는 또한 임의의 지정된 시작, 종료 및 지속시간 특성(해당되는 경우)을 포함할 수 있다. 도 2는 이러한 특성(220, 222 및 224)의 예를 도시하고 있다.
애니메이션 엔진 내의 이러한 상태 메커니즘의 이용은 타이밍 간격의 완전한 서브트리의 스킵을 용이하게 하기 때문에 특정 타임 시트 내의 시간 간격의 효율적인 처리를 가능하게 한다. 가능한 구현을 제한하지 않고, 여기에서 사용된 "타임 시트"라는 용어는 동일한 시간 기준에 모두 동기화되는 타이밍 요소들의 컨테이너를 일컬을 수 있다. 게다가, 주어진 부모 시간 간격이 비활성 상태로 되면, 모든 그 자식은 비활성 상태로 되어 재개시가능하게 된다. 상태 기계는 또한 주어진 시간 간격의 재개시가능 상태를 추적할 수 있다.
도 9에 도시된 바와 같이, 블록(902)은 최소한 하나의 틱, 타이밍 펄스 또는 그외 다른 클록 관련 이벤트의 표시를 수신하는 것을 나타낸다. 블록(904)은 주어진 XPATH 식 내의 부모 타이밍 컨테이너가 활성 상태인지 평가하는 것을 나타낸다. 활성상태가 아니면, 블록(906)은 부모 타이밍 컨테이너의 임의의 자식의 처리를 생략하는 것을 나타낸다. 그렇지 않고, 부모 타이밍 컨테이너가 활성 상태이면, 블록(908)은 처리하기 위한 부모의 자식 타이밍 컨테이너를 선택하는 것을 나타낸다.
블록(910)은 자식 타이밍 컨테이너 내에 지정된 임의의 시작 조건이 참인지 평가하는 것을 나타낸다. 참이면, 블록(912)은 자식 타이밍 컨테이너 내에 지정된 임의의 식을 평가하는 것을 나타낸다. 그렇지 않으면, 블록(914)은 부모 타이밍 컨테이너가 아직 평가될 자식을 더 갖고 있는지 평가하는 것을 나타낸다. 평가될 자식이 더 있는 경우, 블록(916)은 처리하기 위한 다음 자식 타이밍 컨테이너를 선택하는 것을 나타낸다. 그 후, 프로세스(900)는 블록(910) 앞으로 돌아가서 이러한 다음 자식으로 프로세스를 반복한다.
블록(914)에서, 부모 타이밍 컨테이너가 더 이상 자식을 갖지 않으면, 블록(918)은 평가될 부모 타이밍 컨테이너가 더 남아있는지 평가하는 것을 나타낸다. 남아있으면, 블록(920)은 처리하기 위한 다음 부모 타이밍 컨테이너를 선택하는 것을 나타낸다. 그 후, 프로세스(900)는 블록(904) 앞으로 돌아가서 이러한 다음 부모로 프로세스를 반복한다.
블록(918)에서, 부모 타이밍 컨테이너가 더 이상 없으면, 프로세스(900)는 종료 상태(922)에 도달할 수 있다.
상기 프로세스(900)는 여기에서 도시되고 설명된 기능을 실행하는 하나 이상의 유한 상태 기계로서 구현될 수 있다.
도 3에서 일반적으로 참조번호(314)로 표시된 다른 최적화 기술은 중복 식을 평가하는 것을 막고, 그 대신에 유일한 XPATH 식을 평가하는 것에 집중하기 위해 상보적인 식을 인식한다. "상보적인" 식은 불(Boolean) 논리와 관련하여 정의된다. 예를 들어, 식 "A"가 참이면, 식 "not A"에 관련되는 모든 경우는 거짓이다.
HD-DVD 콘텐트의 저작자는 타이밍 컨테이너의 동작을 제어하기 위해 주어진 "숨겨진" 입력 요소에 관한 state:value를 사용할 수 있다. 동일한 식이 여러 번 사용될 때, 하지만 상이한 타임 컨테이너와 관련하여 사용될 때, 식의 단 한 번의 평가는 충분할 수 있다. 식에 대한 다른 참조는 한 번의 평가의 상태를 반영하기 위해 갱신될 수 있다.
이와 유사하게, 이들 식과 상보적인(즉, 반대 불 연산자를 사용하는) 식은 또한, 임의의 차후의 상보적인 식이 참인지 거짓인지 판정하는데 단 한 번의 평가가 충분하기 때문에 스킵될 수 있다. 다음 큐를 고려해보자:
<cue begin="id('myButton1')[state:value() = 'HELLO']"...>
<cue begin="id('myButton1')[state:value() != 'HELLO']"...>
<cue begin="id('myButton1')[state:value() = 'WORLD']"...>
타이밍 엔진이 제1 큐를 평가하고, 그것이 활성상태(또는 참)라고 판정한다고 가정하자. 이 경우에, 타이밍 엔진은 제2 큐가 제1 큐 결과의 반대 결과일 수 있기 때문에, 제2 큐의 평가를 스킵할 수 있다. 또한, 타이밍 엔진은 제1 큐가 참이면, 제3 큐가 또한 참이 될 수 없기 때문에, 제3 큐의 평가를 스킵할 수 있다.
이 최적화는 관련되고 상보적인 식을 연결하기 위해 로드 시간 동안 수정될 수 있는 참조 데이터 구조를 사용하여 구현될 수 있다. 이들 참조 데이터 구조는 또한 온 틱 처리 동안에 액세스 가능하므로, 평가가 행해지고 있을 때 식의 변형을 갱신할 수 있다.
도 10은 공용 메모리 풀을 사용하는 타이밍 마크업 처리의 최적화에 관련된 컴포넌트 및 흐름(100)을 도시한 것이다. 편의를 위해(제한되는 것은 아님), 앞에서 설명된 일부 요소는 도 10으로 넘겨지고, 동일한 참조번호로 표시된다.
도 10은 도 3에서 일반적으로 블록(316)으로 나타낸 공용 메모리의 사용을 수반하는 최적화 기술에 관한 자세한 내용을 제공한다. 최적화 엔진(예를 들어, 124)은 이들 최적화 기술(316)을 구현할 수 있다.
캐시(1002)는 공용 메모리 풀(1004)로서 구현될 수 있다. 공용 메모리 풀은 DOM 타이밍 트리(예를 들어, 422, 타이밍 노드(502)가 있음)를 효율적으로 탐색하기 위한 정보를 캡슐화하는 다수의 작은 고정된 크기의 참조 데이터 구조(예를 들어, 1006a 및 1006n)를 저장할 수 있다.
데이터 구조는 다수의 정렬 링크를 고려하고, 노드의 상태에 기초하여 타이밍 노드의 그룹을 무시하고 스킵하는 것을 고려한다. 도 10은 이러한 링크(1008a) (구조(1006a)를 노드(502a)에 연결함) 및 링크(1008n)(구조(1008n)를 노드(502n)에 연결함)의 예를 도시한 것이다.
공용 메모리 풀(1004)은 메모리가 L1 데이터 캐시를 지원하는 CPU에 대해 용이하게 로컬 캐시되기 때문에 DOM 트리의 빠른 탐색을 용이하게 한다. 데이터 구조(1006)의 참조 특성은 노드의 상태에 기초하여 마크업 타이밍 내의 다수의 노드를 무시하고 스킵하는 능력을 지원한다. 게다가, 데이터 구조는 인덱스 증가 또는 포인트 추가 동작을 사용하여 전체 DOM 트리를 빠르게 탐색하는 능력을 제공한다. 이러한 기술과 함께, 관련된 공용 메모리 풀은 XPATH 식, 정렬 인덱스, 및 타이밍 및 XPATH 관련 데이터 구조의 빠르고 공간 효율적인 룩업을 용이하게 하는 룩업 키의 관계를 돕기 위해 사용될 수 있다.
도 10에서 공용 메모리 풀의 사용에 관련된 최적화 기술을 설명했으므로, 이제 설명은 도 11에 나타낸 스케줄러의 사용에 관련된 최적화 기술의 설명으로 진행한다.
도 11은 완전한 타이밍 트리 탐색의 실행을 방지하기 위한 스케줄러(1102)의 사용에 관련된 최적화 기술을 도시한 것이다. 스케줄러(1102)는 타이밍 마크업(106)으로부터의 타이밍 노드(502)를 작업 큐(1104) 내에 배치한다. 더욱 구체적으로, 스케줄러(1102)는 임의의 주어진 틱에서 평가에 적절할 수 있는 타이밍 노드들만을 배치한다. 스케줄러에 의해 처리된 작업 큐 내의 각 아이템 또는 타이밍 노드는 타이밍 간격(예를 들어, 1106a 및 1106n) 및 그 관련 자식(예를 들어, 1108a 및 1108n)에 대한 참조를 포함할 수 있다.
작업 큐는 시작 시간에 의해 순서화된 다음에, 마크업 DOM에 나타나는 것처럼 나중에 사전식으로 순서화될 수 있다. 이 순서화는 평가되거나 처리될 타이밍 간격만이 작업 큐 내에 배치될 수 있는 확률을 증가시키므로, 어떤 불필요한 타이밍 트리 처리를 제거한다. 게다가, 이 메커니즘은 또한, 잠재적으로 대역을 벗어나 발생할 수 있는 동작(예를 들어, 제스처 처리)의 더욱 양호한 직렬화를 허용할 수 있다. 이 방법은 작업 아이템 및 관련 데이터의 더욱 양호한 캐시 집약성을 허용하기 위해 상기 메모리 풀 방법과 함께 사용될 수 있다.
결론
상기 설명은 HD-DVD 타이밍 마크업의 최적화 처리와 관련하여 제시되었지만, 주의할 점은 여기에서 설명된 도구 및 기술이 다른 유형의 미디어의 처리, 또는 여기에서 설명된 것과 다른 유형의 마크업의 처리에 적합할 수 있다는 것이다.
시스템 및 방법이 구조적 특징 및/또는 방법적 액트에 특정된 언어로 설명되었지만, 첨부된 청구범위에 정의된 시스템 및 방법은 설명된 특정 기능 또는 액트에 반드시 제한되는 것은 아니라는 것을 이해할 것이다. 오히려, 특정 기능 및 액트는 청구된 시스템 및 방법을 구현하는 예시적인 형태로서 개시된다.
게다가, 여기에서 설명되고 도시된 소정의 데이터 및 프로세스 흐름도와 관련하여, 여기에서 나타낸 프로세스 및 서브 프로세스는 본 발명의 정신 및 범위를 벗어나지 않고서 도시된 것들과 다른 순서로 실행될 수 있다는 것을 알기 바란다. 또한, 이들 데이터 및 프로세스 흐름이 여기에서 소정의 컴포넌트와 관련하여 설명되지만, 이들 데이터 및 프로세스 흐름은 본 발명의 정신 및 범위를 벗어나지 않고서 그외 다른 컴포넌트로 실행될 수 있다는 것을 알기 바란다.

Claims (20)

  1. 기계(114)에 의해 실행될 때, 기계가 이하의 단계들을 포함하는 방법을 실행하게 하는 기계 판독가능 명령어들(122, 130)을 포함하는 하나 이상의 기계 판독가능 저장 매체(120)에 있어서, 상기 방법은,
    HD-DVD(high-definition digital versatile disk)(104)로부터 판독된 타이밍 마크업(112)을 수신하는 단계; 및
    상기 타이밍 마크업의 처리를 최적화하는 단계(308, 310, 312, 314, 316, 318)
    를 포함하는, 하나 이상의 기계 판독가능 저장 매체.
  2. 제1항에 있어서, 상기 타이밍 마크업의 처리를 최적화하는 명령어들은 상기 타이밍 마크업 내에 포함된 최소한 하나의 XPATH 식(expression)의 사전 계산(pre-computing)에 의해 상기 타이밍 마크업의 처리를 최적화하는 명령어들을 포함하는, 하나 이상의 기계 판독가능 저장 매체.
  3. 제2항에 있어서, 상기 타이밍 마크업의 처리를 최적화하는 명령어들은 상기 XPATH 식 내의 최소한 하나의 중간 식을 식별하는 명령어들을 포함하는, 하나 이상의 기계 판독가능 저장 매체.
  4. 제2항에 있어서, 상기 타이밍 마크업의 처리를 최적화하는 명령어들은 상기 XPATH 식 내에서 식별된 최소한 하나의 중간 식을 캐시하는 명령어들을 포함하는, 하나 이상의 기계 판독가능 저장 매체.
  5. 제2항에 있어서, 상기 타이밍 마크업의 처리를 최적화하는 명령어들은 상기 XPATH 식 내에서 식별된 최소한 하나의 중간 식을 평가하는 명령어들을 포함하는, 하나 이상의 기계 판독가능 저장 매체.
  6. 제2항에 있어서, 상기 타이밍 마크업의 처리를 최적화하는 명령어들은 상기 XPATH 식 내의 다수의 중간 식을 식별하는 명령어들, 및 상기 중간 식들을 문서 개체 모델 내의 각각의 노드들과 관련시키는 명령어들을 포함하는, 하나 이상의 기계 판독가능 저장 매체.
  7. 제1항에 있어서, 상기 타이밍 마크업의 처리를 최적화하는 명령어들은 상기 타이밍 마크업 내의 식들을 식별함으로써 상기 타이밍 마크업의 처리를 최적화하는 명령어들, 및 상기 식들의 값들이 미리 정의된 이벤트들의 발생에 의존하는지 판정하는 명령어들을 포함하는, 하나 이상의 기계 판독가능 저장 매체.
  8. 제7항에 있어서, 상기 미리 정의된 이벤트들을 이벤트 식별자들과 관련시키는 명령어들을 더 포함하고, 상기 이벤트들은 사용자 입력과 관련되는, 하나 이상 의 기계 판독가능 저장 매체.
  9. 제8항에 있어서, 상기 이벤트 식별자들을 상기 식들 중의 최소한 하나의 식과 관련시키는 명령어들을 더 포함하고, 상기 최소한 하나의 식은 상기 미리 정의된 이벤트들 중의 최소한 하나의 이벤트의 발생에 의존하는, 하나 이상의 기계 판독가능 저장 매체.
  10. 제1항에 있어서, 타이밍 틱(tick)이 발생했다는 표시를 수신하는 명령어들을 더 포함하는, 하나 이상의 기계 판독가능 저장 매체.
  11. 제10항에 있어서, 상기 틱 표시의 수신에 응답하여 최소한 하나의 XPATH 식을 수신하는 명령어들을 더 포함하는, 하나 이상의 기계 판독가능 저장 매체.
  12. 제11항에 있어서, 사용자 입력이 발생했다는 표시를 수신하고, 상기 사용자 입력을 최소한 하나의 미리 정의된 이벤트와 관련시키는 명령어들을 더 포함하는, 하나 이상의 기계 판독가능 저장 매체.
  13. 제12항에 있어서, 상기 XPATH 식이 상기 미리 정의된 이벤트의 발생에 의존하는지 판정하는 명령어들을 더 포함하는, 하나 이상의 기계 판독가능 저장 매체.
  14. 제13항에 있어서, 상기 XPATH 식이 상기 미리 정의된 이벤트의 발생에 의존하는 경우에 상기 XPATH 식을 재평가하는 명령어들을 더 포함하는, 하나 이상의 기계 판독가능 저장 매체.
  15. 제13항에 있어서, 상기 XPATH 식이 상기 미리 정의된 이벤트의 발생에 관계없는 경우에 상기 XPATH 식의 이전 값을 검색하는 명령어들을 더 포함하는, 하나 이상의 기계 판독가능 저장 매체.
  16. 제1항에 있어서, 상기 타이밍 마크업의 처리를 최적화하는 명령어들은 유한 상태 기계를 사용하여 상기 처리를 최적화하는 명령어들을 포함하는, 하나 이상의 기계 판독가능 저장 매체.
  17. 제1항에 있어서, 상기 타이밍 마크업의 처리를 최적화하는 명령어들은 상기 타이밍 마크업 내에 존재하는 다수의 식을 식별함으로써 상기 처리를 최적화하고, 상기 식들 중의 최소한 2개의 식이 서로 상보적이라는 것을 인식하는 명령어들을 포함하는, 하나 이상의 기계 판독가능 저장 매체.
  18. 제1항에 있어서, 상기 타이밍 마크업의 처리를 최적화하는 명령어들은 공용 메모리 풀(shared memory pool)을 사용함으로써 상기 처리를 최적화하는 명령어들을 포함하는, 하나 이상의 기계 판독가능 저장 매체.
  19. 제1항에 있어서, 상기 타이밍 마크업의 처리를 최적화하는 명령어들은 스케줄러(scheduler)를 사용함으로써 상기 처리를 최적화하는 명령어들을 포함하는, 하나 이상의 기계 판독가능 저장 매체.
  20. 제1항의 기계 판독가능 저장 매체를 포함하는 HD-DVD 플레이어 장치.
KR1020097013888A 2007-01-05 2007-12-26 Hd-dvd 타이밍 마크업의 처리 최적화 KR20090096619A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US88375107P 2007-01-05 2007-01-05
US60/883,751 2007-01-05
US11/770,167 US20080165281A1 (en) 2007-01-05 2007-06-28 Optimizing Execution of HD-DVD Timing Markup
US11/770,167 2007-06-28
PCT/US2007/088840 WO2008085730A1 (en) 2007-01-05 2007-12-26 Optimizing execution of hd-dvd timing markup

Publications (1)

Publication Number Publication Date
KR20090096619A true KR20090096619A (ko) 2009-09-11

Family

ID=39593937

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097013888A KR20090096619A (ko) 2007-01-05 2007-12-26 Hd-dvd 타이밍 마크업의 처리 최적화

Country Status (15)

Country Link
US (1) US20080165281A1 (ko)
EP (1) EP2100303A4 (ko)
JP (1) JP5059124B2 (ko)
KR (1) KR20090096619A (ko)
CN (1) CN101573758B (ko)
AU (1) AU2007342158B2 (ko)
BR (1) BRPI0720615A2 (ko)
CA (1) CA2674059A1 (ko)
IL (1) IL199578A0 (ko)
MX (1) MX2009007269A (ko)
NO (1) NO20092510L (ko)
RU (1) RU2460157C2 (ko)
TW (1) TWI480756B (ko)
WO (1) WO2008085730A1 (ko)
ZA (1) ZA200904536B (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101359497A (zh) * 2007-07-30 2009-02-04 科立尔数位科技股份有限公司 时间标记的检测及表示方法与记录其数据结构的记录媒体
US10104436B1 (en) * 2009-02-23 2018-10-16 Beachfront Media Llc Automated video-preroll method and device
US10706106B2 (en) 2017-02-09 2020-07-07 Micron Technology, Inc. Merge tree modifications for maintenance operations
US10719495B2 (en) 2017-02-09 2020-07-21 Micron Technology, Inc. Stream selection for multi-stream storage devices
US10725988B2 (en) * 2017-02-09 2020-07-28 Micron Technology, Inc. KVS tree
US10706105B2 (en) 2017-02-09 2020-07-07 Micron Technology, Inc. Merge tree garbage metrics
TWI643043B (zh) * 2017-06-16 2018-12-01 東元電機股份有限公司 控制命令產生方法及其裝置
US11100071B2 (en) 2018-10-10 2021-08-24 Micron Technology, Inc. Key-value store tree data block spill with compaction
US10915546B2 (en) 2018-10-10 2021-02-09 Micron Technology, Inc. Counter-based compaction of key-value store tree data block
US11048755B2 (en) 2018-12-14 2021-06-29 Micron Technology, Inc. Key-value store tree with selective use of key portion
US10852978B2 (en) 2018-12-14 2020-12-01 Micron Technology, Inc. Key-value store using journaling with selective data storage format
US10936661B2 (en) 2018-12-26 2021-03-02 Micron Technology, Inc. Data tree with order-based node traversal

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0165439B1 (ko) * 1995-09-14 1999-03-20 김광호 디지탈 비디오 테이프 레코더의 화면 구성 장치 및 방법
US6038573A (en) * 1997-04-04 2000-03-14 Avid Technology, Inc. News story markup language and system and process for editing and processing documents
KR100287366B1 (ko) * 1997-11-24 2001-04-16 윤순조 엠피이지 방식을 이용한 휴대용 음향 재생장치 및 방법
US6810503B1 (en) * 1998-02-11 2004-10-26 Microsoft Corporation Method and apparatus for controlling the timing of the invocation of events within a computer runtime environment
US6519594B1 (en) * 1998-11-14 2003-02-11 Sony Electronics, Inc. Computer-implemented sharing of java classes for increased memory efficiency and communication method
US6654030B1 (en) * 1999-03-31 2003-11-25 Canon Kabushiki Kaisha Time marker for synchronized multimedia
US20020112247A1 (en) * 2001-02-09 2002-08-15 Horner David R. Method and system for creation, delivery, and presentation of time-synchronized multimedia presentations
JP2002312180A (ja) * 2001-04-11 2002-10-25 Hitachi Ltd 動的命令変換機能を有するプロセッサシステム、該プロセッサシステムを備えたコンピュータにて実行されるバイナリートランスレーションプログラム及びそのプロセッサシステムを実装した半導体デバイス
US20030211447A1 (en) * 2001-11-01 2003-11-13 Telecommunications Research Associates Computerized learning system
ATE513415T1 (de) * 2001-12-28 2011-07-15 Koninkl Philips Electronics Nv Verfahren zur verarbeitung von multimediainhalt
JP4039484B2 (ja) * 2002-02-28 2008-01-30 インターナショナル・ビジネス・マシーンズ・コーポレーション XPath評価方法、これを用いたXML文書処理システム及びプログラム
AU2003243169B2 (en) * 2002-04-24 2009-03-19 Intel Corporation System and method for processing of XML documents represented as an event stream
KR20030095048A (ko) * 2002-06-11 2003-12-18 엘지전자 주식회사 멀티미디어 재생 방법 및 장치
DK1490801T3 (da) * 2002-07-23 2008-01-28 Samsung Electronics Co Ltd Metadataindeksstruktur, fremgangsmåde til tilvejebringelse af metadataindekser og metadatasögningsfremgangsmåde og apparat der anvender metadataindekserne
EP1403778A1 (en) * 2002-09-27 2004-03-31 Sony International (Europe) GmbH Adaptive multimedia integration language (AMIL) for adaptive multimedia applications and presentations
US7519616B2 (en) * 2002-10-07 2009-04-14 Microsoft Corporation Time references for multimedia objects
JP3719516B2 (ja) * 2003-06-11 2005-11-24 ソニー株式会社 情報処理装置および方法、プログラム、並びに記録媒体
US7644064B2 (en) * 2004-02-19 2010-01-05 Microsoft Corporation Systems and methods for filter table optimization
US7877366B2 (en) * 2004-03-12 2011-01-25 Oracle International Corporation Streaming XML data retrieval using XPath
TWI263923B (en) * 2004-05-11 2006-10-11 Ali Corp Audio fast-forward playing method
US20050257201A1 (en) * 2004-05-17 2005-11-17 International Business Machines Corporation Optimization of XPath expressions for evaluation upon streaming XML data
US7603426B2 (en) * 2004-06-18 2009-10-13 Microsoft Corporation Flexible context management for enumeration sessions using context exchange
US20050289175A1 (en) * 2004-06-23 2005-12-29 Oracle International Corporation Providing XML node identity based operations in a value based SQL system
US7512592B2 (en) * 2004-07-02 2009-03-31 Tarari, Inc. System and method of XML query processing
DE102004034004A1 (de) * 2004-07-14 2006-02-09 Siemens Ag Verfahren zum Codieren eines XML-Dokuments, sowie Verfahren zum Decodieren, Verfahren zum Codieren und Decodieren, Codiervorrichtung, Decodiervorrichtung und Vorrichtung zum Codieren und Decodieren
CN101111893B (zh) * 2004-12-29 2011-08-31 Lg电子株式会社 关于记录在记录介质上的视频数据的导航信息的结构以及使用该结构的记录/再现方法和装置
US20060167869A1 (en) * 2005-01-27 2006-07-27 Kevin Jones Multi-path simultaneous Xpath evaluation over data streams
JP2006236411A (ja) * 2005-02-22 2006-09-07 Toshiba Corp 情報記憶媒体、情報記録方法、および情報再生方法
JP2006238147A (ja) * 2005-02-25 2006-09-07 Toshiba Corp コンテンツ再生装置、字幕再生方法及びプログラム
US7711095B2 (en) * 2005-03-10 2010-05-04 Avaya Inc. Coordination of content streams in interactive voice response systems
JP2006294152A (ja) * 2005-04-12 2006-10-26 Toshiba Corp 情報記憶媒体、情報記録装置、および情報再生装置
US20070006079A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation State-based timing for interactive multimedia presentations
US20070006078A1 (en) * 2005-07-01 2007-01-04 Microsoft Corporation Declaratively responding to state changes in an interactive multimedia environment
JP2007048348A (ja) * 2005-08-08 2007-02-22 Toshiba Corp 情報記憶媒体、情報再生装置、情報再生方法、及び情報再生プログラム
JP2008041199A (ja) * 2006-08-08 2008-02-21 Toshiba Corp 情報処理装置、および再生方法
US8321845B2 (en) * 2006-10-13 2012-11-27 International Business Machines Corporation Extensible markup language (XML) path (XPATH) debugging framework
US8209424B2 (en) * 2006-12-20 2012-06-26 United Video Properties, Inc. Systems and methods for providing remote access to interactive media guidance applications

Also Published As

Publication number Publication date
ZA200904536B (en) 2010-09-29
CN101573758B (zh) 2012-02-08
TWI480756B (zh) 2015-04-11
IL199578A0 (en) 2010-03-28
TW200836084A (en) 2008-09-01
AU2007342158A1 (en) 2008-07-17
RU2009125537A (ru) 2011-01-10
RU2460157C2 (ru) 2012-08-27
CA2674059A1 (en) 2008-07-17
CN101573758A (zh) 2009-11-04
EP2100303A4 (en) 2013-01-23
WO2008085730A1 (en) 2008-07-17
AU2007342158B2 (en) 2012-01-12
EP2100303A1 (en) 2009-09-16
JP5059124B2 (ja) 2012-10-24
JP2010516011A (ja) 2010-05-13
MX2009007269A (es) 2009-10-08
US20080165281A1 (en) 2008-07-10
BRPI0720615A2 (pt) 2014-04-15
NO20092510L (no) 2009-07-03

Similar Documents

Publication Publication Date Title
KR20090096619A (ko) Hd-dvd 타이밍 마크업의 처리 최적화
JP5015149B2 (ja) 対話型マルチメディア・プレゼンテーション管理の同期方法
JP4347223B2 (ja) マルチメディア文書における多モード特性に注釈を付けるためのシステムおよび方法
JP5015150B2 (ja) 対話式マルチメディア環境の状態変化への宣言式応答
US7979801B2 (en) Media presentation driven by meta-data events
CN100437552C (zh) 执行标记文档applet的设备和方法
US8700643B1 (en) Managing electronic media collections
US20150378544A1 (en) Automated Content Detection, Analysis, Visual Synthesis and Repurposing
Bertino et al. Temporal synchronization models for multimedia data
KR20000016192A (ko) 비디오내로하이퍼링크를통합하는방법및장치_
US20080215959A1 (en) Method and system for generating a media stream in a media spreadsheet
US20140033025A1 (en) Displaying a text-based description of digital content in a sub-frame
JP2002132782A (ja) マルチメディアデータ管理システム
CN104750853A (zh) 一种异构数据搜索方法及装置
US11461535B2 (en) Video buffering for interactive videos using a markup language
Vazirgiannis Interactive multimedia documents: modeling, authoring, and implementation experiences
US20090119332A1 (en) Method And System For Providing A Media Transition Having A Temporal Link To Presentable Media Available From A Remote Content Provider
US11237708B2 (en) Video previews for interactive videos using a markup language
US20210373725A1 (en) Real-time video scene modifications for interactive videos using a markup language
JP2009500909A5 (ko)
JP6663134B2 (ja) 動画編集装置およびプログラム
Vazirgiannis et al. Interactive multimedia documents: a modeling, authoring and rendering approach
Lee et al. SQL Extension for supporting Multimedia data
JP2001256249A (ja) グループ番号設定装置およびグループ番号設定方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E601 Decision to refuse application