KR101475544B1 - 공유 메모리 풀을 사용한 디지털 데이터 관리 - Google Patents

공유 메모리 풀을 사용한 디지털 데이터 관리 Download PDF

Info

Publication number
KR101475544B1
KR101475544B1 KR1020097026720A KR20097026720A KR101475544B1 KR 101475544 B1 KR101475544 B1 KR 101475544B1 KR 1020097026720 A KR1020097026720 A KR 1020097026720A KR 20097026720 A KR20097026720 A KR 20097026720A KR 101475544 B1 KR101475544 B1 KR 101475544B1
Authority
KR
South Korea
Prior art keywords
memory
media
amount
shareable
desired amount
Prior art date
Application number
KR1020097026720A
Other languages
English (en)
Other versions
KR20100036256A (ko
Inventor
아서 윌리암 제임스 프리만
올리비에 콜레
제임스 씨. 핑거
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20100036256A publication Critical patent/KR20100036256A/ko
Application granted granted Critical
Publication of KR101475544B1 publication Critical patent/KR101475544B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/127Prioritisation of hardware or computational resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Television Signal Processing For Recording (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Communication Control (AREA)

Abstract

메모리 관리 기술은 공유가능 메모리의 양을 갖는 메모리 풀의 설정, 및 시퀀스화된 디지털 데이터 유닛들의 다수의 집합을 동시에 관리하기 위한 공유가능 메모리의 동적 할당을 수반한다. 예시적인 시나리오에서, 시퀀스화된 디지털 데이터 유닛들의 집합은 미디어 콘텐트의 클립을 형성하는 시간-순서화 미디어 샘플들의 집합이고, 이 기술은 2개 이상의 클립으로부터의 미디어 샘플이 독립적으로 제어된 스트림으로서 사용자에게 동시에 프레젠테이션 가능할 때 적용된다. 공유가능 메모리의 가변적인 양은 다가오는 미디어 샘플을 사용자에게 프레젠테이션할 준비를 하기 위해 동적으로 할당된다. 한가지 가능한 구현에서, 개별 스트림의 평균 데이터 레이트의 비가 계산되고, 공유가능 메모리의 양은 이러한 비에 기초하여 각 스트림의 렌더링에 할당된다. 그 다음, 개별 스트림의 렌더링에 할당된 공유가능 메모리는 특정의 다가오는 미디어 샘플을 사용자에게 프레젠테이션할 준비를 하기 위해 필요에 따라 예약된다.
공유가능 메모리, 디지털 데이터, 동적 할당, 우선순위, 데이터 레이트

Description

공유 메모리 풀을 사용한 디지털 데이터 관리{DIGITAL DATA MANAGEMENT USING SHARED MEMORY POOL}
효과적인 디지털 데이터 처리는 흔히 메모리와 같은 제한된 컴퓨팅 자원의 효율적인 사용에 의존한다. 메모리라는 용어는, 디지털 데이터 처리시에 컴퓨터에 의해 사용된 메모리가 흔히 RAM(random access memory)이긴 하지만, 임의의 유형의 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 흔히, 디지털 데이터를 처리하기 위해 고정된 양의 메모리가 미리 할당된다. 그러나, 때로는 이러한 고정된 메모리 할당이 비효율적이다. 비효율성이 발생할 수 있는 한가지 상황은 시퀀스화된(sequenced) 디지털 데이터 유닛들의 다수의 집합이 동시에 처리될 경우이다.
일반적으로 시퀀스화된 디지털 데이터의 처리를 위해, 특히 디지털 미디어 콘텐트의 렌더링을 위해, 효율적인 메모리 사용을 향상시키는 것이 바람직하다. 디지털 미디어 콘텐트는 비디오, 오디오, 이미지, 텍스트 및/또는 그래픽의 시퀀스화된 샘플로 이루어진다. 미디어 콘텐트 플레이어가 이러한 시퀀스화된 샘플을 사용자에게 프레젠테이션할 때, 이러한 시퀀스화된 샘플은 미디어 콘텐트 스트림이라 칭해진다.
더욱 새로운 미디어 콘텐트 플레이어는 2개 이상의 독립적으로 제어된 미디어 콘텐트 스트림을(예를 들어, 감독의 해설, 배우의 신상 또는 광고와 같은 특별 영상(features)과 함께 메인 영화를) 동시에 렌더링하도록 구성된다. 이러한 미디어 콘텐트 플레이어는 또한 하나 이상의 미디어 콘텐트 스트림과 동시에 사용자 선택가능한 가시 또는 가청 개체(예를 들어, 다양한 메뉴, 게임, 특수 효과 또는 기타 옵션)를 렌더링할 수 있다. 미디어 콘텐트-특히 동시에 재생되는 독립적으로 제어된 미디어 콘텐트 스트림-의 렌더링은 상당한 양의 제한된 플레이어 자원, 특히 메모리를 소모할 수 있다.
여기에 설명된 메모리 관리 기술은 공유가능 메모리의 양을 갖는 메모리 풀의 설정, 및 시퀀스화된 디지털 데이터 유닛들의 다수의 집합을 동시에 관리하기 위한 공유가능 메모리의 동적 할당을 수반한다. 예시적인 시나리오에서, 시퀀스화된 디지털 데이터 유닛들의 집합은 비트, 프레임, 픽처 그룹, 비디오 개체 유닛 등과 같은 시간-순서(time-ordered) 미디어 샘플들의 집합이다. 미디어 콘텐트와 관련하여, 여기에 설명된 기술은 일반적으로, 2개 이상의 집합으로부터의 미디어 샘플이 독립적으로 제어된 미디어 콘텐트 스트림으로서 사용자에게 동시에 프레젠테이션 가능할 때 적용된다. 그러나, 그외 다른 시나리오가 가능하다는 것과, 여기에 설명된 기술은 임의의 동시에 처리된 시퀀스화된 디지털 데이터 유닛에 적용할 수 있다는 것을 알 수 있을 것이다.
특정 메모리 관리 기술은 시퀀스화된 디지털 데이터 유닛들의 제1 집합 내의 디지털 데이터 유닛들의 일부를 처리하는 것과 관련된 하나의 자원 소모 표시자의 확인, 및 시퀀스화된 디지털 데이터 유닛들의 제2 집합 내의 디지털 데이터 유닛들의 일부를 처리하는 것과 관련된 다른 자원 소모 표시자의 확인을 수반한다. 자원 소모는 디지털 데이터, 디지털 데이터를 처리하기 위해 사용된 컴퓨팅 시스템 및 사용자 입력과 관련된 요인을 포함하는(이에 제한되지 않음) 다양한 요인에 기초하여 달라질 수 있다. 일단 확인되면, 자원 소모 표시자는 비교되고, 공유가능 메모리는 비교에 기초하여 동적으로 할당된다.
때때로, 사용 가능한 공유가능 메모리는 원하는 메모리 할당을 즉시 구현하기에 불충분하다. 이때, 사용 가능한 공유가능 메모리는 처리 결함을 방지하기 위해 우선순위(priority) 방식에 따라 할당될 수 있다. 한 시나리오에서, 더 높은 우선순위는 최대 자원 소모를 한 디지털 데이터 유닛들의 집합(들)의 처리와 관련된 동작에 공유가능 메모리를 할당하는 것에 부여된다. 더 낮은 자원 소모를 한 디지털 데이터 유닛들의 집합(들)은 반복적으로 자원을 재요청하도록 요구될 수 있다. 대안적으로, 이러한 집합에는 공유가능 메모리 자원이 사용 가능하게 될 때 우선순위가 부여되는 보류중인 메모리 요청이 배정될 수 있다. 이러한 방식으로, 시퀀스화된 디지털 데이터 유닛들의 다수의 집합이 동시에 처리될 때 공유가능 메모리의 효율적인 동적 할당을 보장할 수 있다.
미디어 콘텐트 스트림의 경우에, 자원 소모 표시자는 개별 미디어 콘텐트 스트림의 렌더링과 관련된 데이터 레이트(예를 들어, 평균 데이터 레이트)이다. 소정의 데이터 레이트를 갖는 미디어 콘텐트 스트림을 처리하도록(그리고 이러한 스트림 내의 특정 미디어 샘플을 처리하도록) 요구된 메모리 자원은 미디어 샘플 자체(예를 들어, 그 중에서 특히, 미디어 샘플 소스/위치, 미디어 샘플 크기, 인코딩 및/또는 디코딩 파라미터 및 암호화 파라미터), 미디어 콘텐트 플레이어(예를 들어, 그 중에서 특히, 플레이어 아키텍처 또는 동적 처리 로드), 또는 사용자 입력(예를 들어, 빨리 앞으로 가기, 느리게 앞으로 가기, 빨리 뒤로 가기 또는 느리게 뒤로 가기와 같은 사용자 선택 재생 속도 또는 사용자 선택 미디어 콘텐트 포맷)과 관련된 요인을 포함하는(이에 제한되지 않음) 다양한 요인에 기초하여 달라질 수 있다. 개별적인 미디어 콘텐트 스트림의 데이터 레이트의 비가 계산되고, 공유가능 메모리는 비교에 기초하여 동적으로 할당된다. 사용 가능한 공유가능 메모리가 원하는 메모리 할당을 즉시 구현하기에 불충분할 때, 한가지 가능한 우선순위 방식은 공유가능 메모리의 할당된 부분보다 현재 작게 갖는 미디어 콘텐트 스트림의 처리와 관련된 동작에 공유가능 메모리가 확실하게 먼저 배정되게 하는 것이다.
이 요약은 개념들의 선택된 개념을 단순화된 형태로 소개하기 위해 제공된다. 개념은 상세한 설명 부분에서 더욱 설명된다. 이 요약에서 설명된 것들 이외의 요소들 또는 단계들이 가능하고, 요소 또는 단계가 반드시 요구되는 것은 아니다. 이 요약은 청구된 주제의 중요한 특징이나 본질적인 특징을 식별하고자 하는 것도 아니고, 청구된 주제의 범위를 결정하는 데 보조적으로 사용하고자 하는 것도 아니다. 더구나, 청구된 주제는 이 문서의 임의의 부분에 설명된 임의의 또는 모든 단점을 해결하는 구현에 제한되지 않는다.
도 1은 예시적인 미디어 콘텐트 플레이어의 단순 기능 블록도.
도 2는 도 1의 미디어 콘텐트 관리자 블록의 실시양상을 더욱 상세하게 도시 한 단순 기능 블록도.
도 3은 도 1에 도시된 미디어 콘텐트 플레이어 및/또는 도 4의 순서도에 도시된 방법의 소정의 실시양상과 관련하여 사용 가능한, 미디어 샘플들의 집합과 관련된 미디어 타임라인을 도시한 개략도.
도 4는 도 2에 도시된 공유가능 메모리와 같은 공유 메모리를 사용하여 다수의 디지털 데이터 집합을 동시에 관리하는 방법의 순서도.
도 5는 컴퓨팅 장치의 예시적인 구성의 단순 기능 블록도.
도 6은 도 1에 도시된 미디어 콘텐트 플레이어, 도 4에 도시된 방법 및/또는 도 5에 도시된 컴퓨팅 장치의 전부 또는 일부가 구현되거나 사용될 수 있는 운영 환경의 예시적인 구성의 블록도.
도 7은 도 6에 도시된 운영 환경의 실시양상이 구현되거나 사용될 수 있는 클라이언트-서버 아키텍처의 단순 기능 블록도.
여기에 설명된 메모리 관리 기술은 메모리 풀로부터의 공유가능 메모리를 시퀀스화된 디지털 데이터 유닛들의 다수의 집합의 동시 처리에 동적으로 할당한다. 예시적으로(제한하고자 하는 것이 아님), 다수의 미디어 콘텐트 스트림의 동시 렌더링이 구체적으로 설명되는데, 여기에 설명된 기술은 임의의 동시에 처리된 시퀀스화된 디지털 데이터 유닛들에 적용가능하다는 것을 알 수 있을 것이다.
소정의 미디어 콘텐트 플레이어는 2개의 독립적으로 제어된 미디어 콘텐트 스트림을 동시에 렌더링할 수 있다. 예를 들어, 고선명 DVD 플레이어는 주 미디어 콘텐트 스트림(이를테면, 영화) 및 보조 미디어 콘텐트 스트림(예를 들어, 감독의 해설, 배우의 신상 또는 광고와 같은 특별 영상)을 동시에 렌더링하도록 구성된다. 뜻밖의 사용자 입력은 개별 미디어 콘텐트 스트림이 프레젠테이션될 지의 여부 및/또는 그러한 스트림이 프레젠테이션되는 때를 판정한다.
미디어 콘텐트의 프레젠테이션 시의 사용자 인지가능 결함을 방지하기 위해, 미디어 콘텐트 렌더링은 일반적으로, 미디어 샘플(들)의 예정된 재생 시간 이전에, 사용자에게 프레젠테이션될 하나 이상의 다가오는 미디어 샘플을 식별하고 그러한 샘플의 프레젠이션 준비를 하는 것을 포함한다. 특정 미디어 샘플을 프레젠테이션할 준비를 하도록 요구된 메모리 자원은 반드시 샘플마다 일정한 것은 아니다. 요구된 메모리 자원에 영향을 미치는 몇몇 요인은 미디어 샘플 자체(미디어 샘플 크기, 미디어 샘플 소스/위치, 인코딩 또는 디코딩 파라미터 및 암호화 파라미터와 같은 요인들을 포함하는데, 이에 제한되지는 않음)와 관련되지만, 또한 미디어 콘텐트 플레이어(예를 들어, 그 중에서 특히, 플레이어 아키텍처 또는 동적 처리 로드) 또는 사용자 입력(예를 들어, 사용자 선택 미디어 콘텐트 포맷 또는 사용자 선택 재생 속도)과 관련될 수 있다.
미디어 콘텐트 렌더링에 적용될 때, 여기에 설명된 특정 메모리 관리는 특정의 다가오는 미디어 샘플을 프레젠테이션할 준비를 하기 위해 공유가능 메모리의 가변적인 양을 동적으로 할당하는 것을 포함한다. 일단 특정 미디어 샘플이 사용자에게 프레젠테이션 되었으면, 공유가능 메모리의 할당된 양은 해제되고, 재할당을 위해 사용 가능하게 될 수 있다.
단일 미디어 콘텐트 스트림이 사용자에게 프레젠테이션되고 있을 때, 모든 사용 가능한 공유가능 메모리는 일반적으로 단일 미디어 콘텐트 스트림의 렌더링에 할당될 수 있다. 그러나, 사용자가 그외 다른 미디어 콘텐트 스트림을 독립적으로 시작하고 정지할 때, 사용 가능한 공유가능 메모리는 2개 이상의 스트림에 할당된다. 한 시나리오에서, 각 스트림으로부터의 특정의 다가오는 미디어 샘플을 프레젠테이션할 준비를 하기 위한 공유가능 메모리의 동적 할당은 개별 미디어 콘텐트 스트림의 상대적인 평균 데이터 레이트에 기초한다. 예시적인 구현에서, 개별 미디어 콘텐트 스트림의 데이터 레이트(예를 들어, 비트 레이트)의 비가 계산되고, 공유가능 메모리는 데이터 레이트의 비에 기초하여 분할된다. 그 다음, 개별 스트림에 할당된 공유가능 메모리는 그 스트림으로부터의 특정의 다가오는 미디어 샘플을 준비하기 위해 필요에 따라 예약된다.
사용 가능한 공유가능 메모리가 원하는 메모리 할당을 즉시 구현하기에 불충분하고 및/또는 개별 스트림에 할당된 공유가능 메모리가 그 스트림으로부터의 특정의 다가오는 미디어 샘플을 준비하기에 불충분할 때, 한가지 가능한 우선순위 방식은 공유가능 메모리의 할당된 부분보다 현재 작게 갖는 미디어 처리 파이프라인에 의해 처리되는 미디어 콘텐트 스트림의 처리와 관련된 동작에 공유가능 메모리가 먼저 배정되고, 그외 다른 미디어 콘텐트 스트림에 메모리 요청이 선택적으로 배정되도록 보장하는 것이다. 공유가능 메모리가 사용 가능하게 될 때, 공유가능 메모리는 메모리 요청이 보류중인 데이터 스트림에 할당될 수 있다.
동일한 번호가 동일한 구성요소를 나타내는 도면을 참조하면, 도 1은 비디 오, 오디오, 이미지, 텍스트 및/또는 그래픽의 시퀀스화된(일반적으로, 시간 순서) 샘플로 이루어진 미디어 콘텐트를 렌더링하는 예시적인 미디어 콘텐트 플레이어(100)의 단순 기능 블록도이다. 미디어 콘텐트 플레이어(100)는 광 매체 플레이어, 컴퓨터, 오디오 플레이어, 셋톱 박스, 통신 장치, 개인용 정보 단말기(PDA), 이미지 레코더 또는 비디오 레코더를 포함하여(이에 제한되지 않음), 미디어 콘텐트를 렌더링하는 임의의 시스템일 수 있지만, 도시된 바와 같이, 미디어 콘텐트 플레이어(100)는 대화형 멀티미디어 프레젠테이션 시스템(이후 "프레젠테이션 시스템(100)"이라 칭함)이다.
프레젠테이션 시스템(100)은 미디어 콘텐트 관리자(102), 대화형 콘텐트("IC") 관리자(104), 프레젠테이션 관리자(106), 타이밍 신호 관리 블록(108) 및 믹서/렌더러(110)를 포함한다. 일반적으로, 디자인 선정은 프레젠테이션 시스템(100)의 특정 기능이 구현되는 방법을 지시한다. 이러한 기능은 하드웨어, 소프트웨어 또는 펌웨어, 또는 그 조합을 사용하여 구현될 수 있다.
동작시에, 프레젠테이션 시스템(100)은 대화형 멀티미디어 프레젠테이션 콘텐트("프레젠테이션 콘텐트")(120)를 처리한다. 프레젠테이션 콘텐트(120)는 미디어 콘텐트 컴포넌트("미디어 컴포넌트")(122) 및 대화형 콘텐트 컴포넌트("IC 컴포넌트")(124)를 포함한다. 미디어 컴포넌트(122) 및 IC 컴포넌트(124)는 각각 미디어 콘텐트 관리자(102) 및 IC 관리자(104)에 의해, 일반적으로 분리된 데이터 스트림으로 처리되지만, 꼭 그렇게 처리되지 않아도 된다.
프레젠테이션 시스템(100)은 또한 프레젠테이션 콘텐트(120)를 재생된 프레 젠테이션(127)으로서 사용자(도시 생략)에게 용이하게 프레젠테이션한다. 재생된 프레젠테이션(127)은 믹서/렌더러(110)에 의해 생성되고 디스플레이 또는 스피커(도시 생략)와 같은 장치를 통해 사용자에 의해 수신가능한 프레젠테이션 콘텐트(120)와 관련된 가시 및/또는 가청 정보를 나타낸다. 설명을 위해, 프레젠테이션 콘텐트(120) 및 재생된 프레젠테이션(127)은 임의의 포맷으로 고선명 DVD 영화 콘텐트의 양상을 나타내는 것으로 가정된다. 그러나, 프레젠테이션 콘텐트(120) 및 재생된 프레젠테이션(127)은 지금 알려져 있거나 나중에 개발되는 임의의 유형의 미디어 콘텐트 프레젠테이션을 나타내도록 구성될 수 있다는 것을 알 수 있을 것이다.
미디어 컴포넌트(122)는 미디어 콘텐트 스트림(미디어 콘텐트 스트림(208 및 228)은 도 2와 관련하여 도시되고 나중에 설명됨)으로서 사용자에게 프레젠테이션 가능한 샘플(예를 들어, 비디오, 오디오, 이미지, 텍스트 및/또는 그래픽 샘플)의 하나 이상의 시퀀스(일반적으로 시간 순서)를 나타낸다. 2개 이상의 독립적으로 제어된 미디어 콘텐트 스트림이(예를 들어, 감독의 해설, 배우의 신상 또는 광고와 같은 특별 영상과 함께 메인 영화가) 동시에 프레젠테이션될 수 있다. 미디어 컴포넌트(122)가 흔히 영화와 관련하여 설명되지만, 미디어 컴포넌트(122)는 사실상 비디오, 오디오, 데이터 또는 이들의 임의의 조합일 수 있다.
영화는 일반적으로, 하나 이상의 버전(예를 들어, 성인용 버전 및 청소년용 버전); 각 타이틀(타이틀은 프레젠테이션 관리자(106)와 관련하여 나중에 설명됨)과 관련된 하나 이상의 챕터(도시 생략)를 갖는 하나 이상의 타이틀(131); 하나 이 상의 오디오 트랙(예를 들어, 영화는 서브타이틀이 있거나 없이, 하나 이상의 언어로 재생될 수 있음); 및 감독의 해설, 추가적인 영화 장면, 배우의 신상, 광고, 예고편 등과 같은 추가 특별 영상을 갖는다. 타이틀과 챕터의 구별은 단순히 논리적 구별이라는 것을 알 수 있을 것이다. 예를 들어, 단일의 인지된 미디어 세그먼트는 단일 타이틀/챕터의 부분일 수 있고, 또는 다수의 타이틀/챕터로 구성될 수 있다. 적용 가능한 논리적 구별의 판정은 콘텐트 제작 소스가 해야 한다.
미디어 컴포넌트(122)의 양상을 이루는 미디어 샘플의 집합(예를 들어, 비디오, 오디오 또는 데이터 샘플의 집합)은 일반적으로 클립(123)이라 칭해진다(클립(123)은 미디어 컴포넌트(122) 및 재생 목록(128) 내에 도시되고, 또한 도 2에서 언급되고, 나중에 설명된다). 그러나, 미디어 샘플의 집합은 그룹화되고 및/또는 임의의 바람직한 방식으로 관련된다는 것을 알 수 있을 것이다. 미디어 샘플은 임의의 원하는 유닛, 예를 들어 비트, 프레임, 데이터 패킷, 픽처 그룹, 확대된 비디오 개체 유닛 등등으로 나타내질 수 있다. 특정 미디어 샘플의 디지털 콘텐트(및 또한 특정 미디어 샘플의 크기)는 샘플을 구성하는 비디오, 오디오 또는 데이터 콘텐트의 특성, 또는 샘플이 얻어지는 미디어 소스와 관련된 하나 이상의 파라미터(예를 들어, 미디어 소스 ID 및/또는 위치, 인코더/디코더 파라미터 또는 설정치, 또는 암호화 파라미터 또는 설정치)와 같은 몇 가지 요인에 기초할 수 있다. 미디어 소스는 도 2와 관련하여 나중에 설명된다.
미디어 데이터(132)는 미디어 콘텐트 관리자(102)에 의해 렌더링할 준비가 되어 믹서/렌더러(110)에 전송된, 미디어 컴포넌트(122)와 관련된 데이터이다. 미 디어 데이터(132)는 일반적으로 각 활성 클립(123)에 대해 클립의 일부분의 렌더링을 포함한다.
다시 프레젠테이션 콘텐트(120)과 관련하여, IC 컴포넌트(124)는 가시 또는 가청 개체를 프레젠테이션하기 위한 임의의 명령어(애플리케이션(155)으로서 도시됨)와 함께, 선택적으로 미디어 컴포넌트(122)와 동시에 프레젠테이션 가능한 사용자 선택가능 가시 또는 가청 개체인 대화형 개체(125)를 포함한다. 대화형 개체의 예는 그 중에서 특히, 비디오 샘플 또는 클립, 오디오 샘플 또는 클립, 이미지, 그래픽, 텍스트 및 그 조합을 포함한다.
애플리케이션(155)은 프레젠테이션 시스템(100)이 사용자에게 대화형 개체(125)를 프레젠테이션하는 메커니즘을 제공한다. 애플리케이션(155)은 데이터에 관한 미리 결정된 동작을 전자적으로 제어하는 임의의 신호 처리 방법 또는 저장된 명령어(들)를 나타낸다.
IC 관리자(104)는 애플리케이션(155)과 관련된 명령을 수신하고 해석하여 실행하도록 하는 하나 이상의 명령어 처리 엔진(181)을 포함한다. 애플리케이션(155)의 실행이 진행되고, 사용자 입력(150)이 수신됨에 따라, 재생된 프레젠테이션(127) 내에서의 동작이 트리거될 수 있다. "ICM으로부터의 입력"(190)으로 표시되어 있는 애플리케이션(155)의 소정의 명령어의 실행은 프레젠테이션 시스템(100) 내의 그외 다른 기능 또는 컴포넌트와의 통신 또는 상호 운용성을 용이하게 할 수 있다. 도시된 바와 같이, 입력(190)은 미디어 콘텐트 관리자(102)에 의해 수신되지만(도 2와 관련하여 나중에 설명됨), 프레젠테이션 시스템(100) 내의 그외 다른 컴포넌트 또는 기능이 또한 입력(190)에 응답할 수 있다.
대화형 콘텐트 데이터("IC 데이터")(134)는 IC 관리자(104)에 의해 렌더링할 준비가 되어 믹서/렌더러(110)에 전송된, IC 컴포넌트(124)와 관련된 데이터이다.
타이밍 신호 관리 블록(108)은, 각각 미디어 콘텐트 관리자(102) 및 IC 관리자(104)에 의한 미디어 데이터(132) 및 IC 데이터(134)의 준비 및 생성을 위한 타이밍을 제어하는데 사용되는 다양한 타이밍 신호(158)를 생성한다. 예를 들어, 타이밍 신호 관리 블록(108)은 일반적으로 미디어 데이터(132)가 사용자에게 프레젠테이션되는 레이트(도 3과 관련하여 도시되고 설명되는 "미디어 데이터 프레젠테이션 레이트(307)") 및 IC 데이터(134)가 사용자에게 프레젠테이션되는 레이트를 판정하는 책임이 있다. 다른 예에서, 타이밍 신호(158)는 미디어 데이터(132)와 IC 데이터(134)의 대략적인 동기화(예를 들어, 프레임마다 또는 다른 시간 기준에 따른 타이밍/동기화)를 달성하기 위해 사용된다.
믹서/렌더러는 미디어 데이터(132)를 비디오 평면(도시 생략)에 렌더링하고, IC 데이터(134)를 그래픽 평면(도시 생략)에 렌더링한다. 그래픽 평면은 일반적으로 사용자를 위해 재생된 프레젠테이션(127)을 생성하기 위해 비디오 평면 위에 겹쳐지는데, 반드시 그런 것은 아니다.
미디어 콘텐트 관리자(102), IC 관리자(104), 믹서/렌더러(110) 및 타이밍 신호 관리 블록(108)과 통신하도록 구성되는 프레젠테이션 관리자(106)는 프레젠테이션 콘텐트(120)의 처리 및 사용자로의 재생된 프레젠테이션(127)의 프레젠테이션을 용이하게 한다. 프레젠테이션 관리자(106)는 재생 목록(128)으로 액세스할 수 있다. 재생 목록(128)은 그 중에서 특히, 사용자에게 프레젠테이션 가능한 클립(123) 및 애플리케이션(155)(대화형 개체(125)를 포함)의 시간 순서 시퀀스를 포함한다. 클립(123) 및 애플리케이션(155)/대화형 개체(125)는 하나 이상의 타이틀(131)을 형성하도록 되어 있을 수 있다. 위에서 설명된 바와 같이, 2개 이상의 독립적으로 제어된 타이틀/미디어 콘텐트 스트림이 사용자에게 동시에 재생되는 것이 가능하다.
프레젠테이션 관리자(106)는 특정 타이틀(131)을 위한 프레젠테이션 타임라인(130)을 확인하기 위해 재생 목록(128)을 사용한다. 개념적으로, 프레젠테이션 타임라인(130)은 특정 클립(123) 및 애플리케이션(155)이 사용자에게 프레젠테이션 가능할 때 타이틀(131) 내에 시간을 표시한다. 특정 상황에서, 하나 이상의 미디어 콘텐트 타임라인("미디어 타임라인(들)")(142)(예시적인 미디어 타임라인(142)은 도 3과 관련하여 도시되고 나중에 설명됨)을 확인하기 위해 재생 목록(128) 및/또는 프레젠테이션 타임라인(130)을 사용하는 것도 유용하다.
동작시에, 프레젠테이션 관리자(106)는 프레젠테이션 타임라인(130) 및/또는 미디어 타임라인(142)에 대한 정보를 포함하는(이에 제한되지 않음) 정보를 미디어 콘텐트 관리자(102) 및 IC 관리자(104)에 제공한다. 프레젠테이션 관리자(106)로부터의 입력에 기초하여, 미디어 콘텐트 관리자(102)는 미디어 데이터(132)를 렌더링할 준비를 하고, IC 관리자(104)는 IC 데이터(134)를 렌더링할 준비를 한다.
도 2는 미디어 콘텐트 관리자(102)의 실시양상을 더욱 상세하게 도시한 단순 기능 블록도이다. 미디어 콘텐트 관리자(102)는 하나 이상의 미디어 처리 파이프 라인을 포함한다(임의의 수의 미디어 처리 파이프라인이 가능하지만, 2개의 미디어 처리 파이프라인, 즉 미디어 처리 파이프라인 1(202) 및 미디어 처리 파이프라인 2(220)가 도시된다). 일반적으로, 미디어 처리 파이프라인 1(202) 및 미디어 처리 파이프라인 2(220)는 각각, 독립적으로 제어된 미디어 콘텐트 스트림(208 및 228)을 사용자에게 프레젠테이션할 준비를 하기 위해 사용된다. 하나의 미디어 처리 파이프라인은 일반적으로 영화와 같은 주 미디어 콘텐트 스트림을 준비할 책임이 있고, 다른 하나의 미디어 처리 파이프라인은 감독의 해설, 배우의 신상, 광고 등과 같은 하나 이상의 보조 미디어 콘텐트 스트림을 준비할 책임이 있다. 미디어 콘텐트 관리자(102)는 미디어 컴포넌트(122) 및/또는 IC 컴포넌트(124)를 구성하는 다양한 클립(123)의 ID 및 스케줄링(미리 결정되거나, 뜻밖의 사용자 입력(150)에 기초함)에 기초하여 동적 처리 로드가 있을 수 있다는 것을 알 수 있을 것이다.
2개 이상의 클립으로부터의, 동시에 준비하는 다가오는 미디어 샘플은 쉽게 예측할 수 없는 방식으로 (예를 들어, 정보 버퍼링에 사용된) 메모리와 같은 대량의 컴퓨팅 자원을 소모할 수 있다. 더구나, 특정 미디어 샘플을 프레젠테이션할 준비를 하도록 요구된 메모리 자원은 반드시 샘플마다 또는 클립마다 일정한 것은 아니다. 요구된 메모리 자원에 영향을 미치는 몇 가지 요인은 미디어 샘플 자체와 관련된다(미디어 샘플 크기, 미디어 샘플 소스/위치, 인코딩 또는 디코딩 파라미터 및 암호화 파라미터와 같은 요인을 포함하지만 이에 제한되지는 않는다). 요구된 메모리 자원에 영향을 미치는 그외 다른 요인은 미디어 콘텐트 플레이어(예를 들어, 그 중에서 특히, 플레이어 아키텍처 또는 동적 처리 로드)와 관련되는 반면, 요구된 메모리 자원에 영향을 미치는 또 다른 요인은 사용자 입력(예를 들어, 사용자 선택 미디어 콘텐트, 콘텐트 포맷 또는 재생 속도)와 관련된다.
미디어 콘텐트의 프레젠테이션 시의 사용자 인지가능 결함을 방지하기 위해, 미디어 콘텐트 렌더링은 일반적으로 미디어 샘플(들)의 예정된 재생 시간 이전에, 사용자에게 프레젠테이션될 하나 이상의 다가오는 미디어 샘플들을 각각 식별하는 것 및 그러한 샘플들의 프레젠테이션 준비를 하는 것을 포함한다. 사용자에게 프레젠테이션하기 위한 특정의 다가오는 미디어 샘플은 다음의 재생가능 미디어 샘플을 식별하는 단계 및 특정 미디어 소스(나중에 설명됨)로부터 다음의 재생가능 미디어 샘플을 판독하는 단계를 포함하는 여러 단계를 포함하는데, 이에 제한되는 것은 아니다. 미디어 콘텐트가 일반적으로 인코딩되고, 암호화되며, 및/또는 압축되기 때문에, 다음의 재생가능 미디어 샘플은 디멀티플렉싱되고, 디코딩되며, 및/또는 암호해독되어, 미디어 소스로부터 판독된 정보로부터 렌더링 가능한 콘텐트를 얻을 수 있다.
다음의 재생가능 미디어 샘플을 식별하는 단계는 도 3에 도시된 예시적인 미디어 타임라인(142)을 참조하여 설명된다. 다양한 미디어 샘플 프레젠테이션 시간(302)은 미디어 타임라인(142) 상에 표시된다. 미디어 샘플 프레젠테이션 시간(302)은 하나 이상의 미디어 샘플이 미디어 데이터(132)로서 프레젠테이션 가능한 특정 클립의 재생 지속시간 내의 시간을 나타낸다. 도시된 바와 같이, 미디어 샘플 프레젠테이션 시간(302)은 클립마다 다를 수 있는 미리 결정된 미디어 데이터 프레젠테이션 레이트(307)에 기초한 레이트로 발생한다. 주의할 점은 미디어 데이 터 프레젠테이션 레이트가 특정 클립의 인코딩 레이트에 기초하여 변할 수 있지만, 미디어 데이터 프레젠테이션 레이트(307)가, 특정 클립(123)이 인코딩된 레이트와 반드시 동일하지는 않다는 것이다. 소정의 사용자 입력(150)은 또한 미디어 소스로부터의 미디어 샘플 검색 속도에 영향을 미치므로, 미디어 샘플 프레젠테이션 시간(302)이 발생할 수 있는 레이트에 영향을 미칠 수 있다. 예를 들어, 재생된 프레젠테이션(127)은 정상 속도로 앞 방향으로 진행될 수 있고, 또한 정상 속도보다 빠르거나 느린 속도로 앞과 뒤 방향으로 진행할 수 있다. 정상 속도는 상대적인 조건이고, 정상 속도는 프레젠테이션마다 그리고 클립마다 다를 수 있다는 것을 알 수 있을 것이다. 빨리 뒤로 가기 및 빨리 앞으로 가기 동작 동안에, 소정의 미디어 콘텐트의 재생은 종종 생략된다. 그외 다른 사용자 입력은 사용자가 영화의 한 부분에서 다른 부분으로 건너뛸 때와 같은 때에 소정의 콘텐트의 재생이 생략되게 할 수 있다.
(재생 지속시간의) 현재 경과 재생 시간(309)이 미디어 타임라인(142) 상에 표시된다. 다음의 프레젠테이션 가능한 미디어 샘플 프레젠테이션 시간(314)이 또한 표시된다. 다음의 프레젠테이션 가능한 미디어 샘플 프레젠테이션 시간(314)은 사용자에게 프레젠테이션 가능한 (현재 경과 재생 시간(309)과 관련된 현재 미디어 샘플 후의) 다음 미디어 샘플(들)과 관련된 미디어 샘플 프레젠테이션 시간(302)을 나타낸다. 다음의 프레젠테이션 가능한 미디어 샘플은 재생 목록(128)에 기초한 다음의 연속적인 미디어 샘플일 수 있고, 또는 현재 경과 재생 시간(309)과 관련된 미디어 샘플에서 멀리 떨어진 하나 이상의 미디어 샘플 프레젠테이션 시간(302)의 미디어 샘플일 수 있다는 것을 알 수 있을 것이다.
다음의 프레젠테이션 가능한 미디어 샘플/미디어 샘플 프레젠테이션 시간(314)을 확인하는 다양한 방식이 있는데, 여기에서는 상세하게 설명되지 않는다. 일반적으로, 예측 경과 재생 시간(320) 및 대응하는 다음의 프레젠테이션 가능한 미디어 샘플이 확인된다. 예측 경과 재생 시간(320)은 재생 속도 및 미디어 프레임 레이트(307)에 기초하여 경과했을 (현재 경과 재생 시간(309) 이외의) 재생 지속시간의 양을 나타낸다. 예측 경과 재생 시간은 다음의 프레젠테이션 가능한 미디어 샘플 프레젠테이션 시간(314)이 될 특정 미디어 샘플 프레젠테이션 시간(302)을 찾아내기 위해 사용되고, 다음의 프레젠테이션 가능한 미디어 샘플이 식별될 수 있다.
다시 도 2와 관련하여, 2개의 클립의 미디어 샘플이 사용자에게 동시에 프레젠테이션 가능하게 되면, 미디어 처리 파이프라인 1(202) 내에서, 특정 클립(123)과 관련된 다가오는 미디어 샘플이 미디어 소스 1(204)로부터 식별되고 검색되며, 디코더 1(206)에서 디멀티플렉싱, 디코딩 및/또는 해독된다. 이와 마찬가지로, 미디어 처리 파이프라인 2(220) 내에서, 다른 특정 클립(123)과 관련된 다가오는 미디어 샘플은 미디어 소스 2(224)로부터 식별되고 검색되며, 디코더 2(226)에서 디멀티플렉싱, 디코딩 및/또는 해독된다. 미디어 소스는 미디어 샘플이 획득되거나 얻어지는 임의의 장치, 위치 또는 데이터이다. 디코더는 미디어 소스로부터 수신된 정보로부터 렌더링 가능한 미디어 샘플을 검색하기 위해 사용된 임의의 장치, 기술 또는 단계이다. 디코더와 미디어 소스 사이의 1 대 1 관계가 도시되지만, 하 나의 디코더가 다수의 미디어 소스에 대응할 수 있고, 이와 반대로 될 수도 있다는 것을 알 수 있을 것이다.
프레젠테이션 시스템(100)의 메모리 자원의 사용을 효율적으로 관리하기 위해, 미디어 콘텐트 관리자(102)는 미디어 처리 파이프라인(202 및 220)에 응답하는 메모리 할당 관리자("MAM")(205)를 포함한다. MAM(205)은 특정의 다가오는 미디어 샘플을 프레젠테이션할 준비를 하기 위해 공유가능 메모리의 가변적인 양을 동적으로 할당하는 책임이 있다. 한 가능한 구현에서, MAM(205)은 실행시에 도 4와 관련하여 도시되고 나중에 설명되는 방법의 실시양상을 실행하는 컴퓨터 판독가능 매체 상에 인코딩된 컴퓨터 실행가능 명령어들의 집합이다. MAM(205)이, 미디어 처리 파이프라인(202 및 220)을 위한 명령어를 만든 이에 의해 액세스되는 하나 이상의 API 기능(예를 들어, 나중에 설명되는 메모리 풀(240)의 메모리 위치를 반환하는 기능)의 구현이 되는 것이 바람직할 수 있다. 다른 구현에서, MAM(205)은 프레젠테이션 시스템(100)의 기타 물리적 또는 논리적 컴포넌트 내에 위치할 수 있다.
메모리 풀(240)은 소정의 알고리즘(예시적인 알고리즘은 도 4와 관련하여 도시되고 아래에 설명됨)에 따라 미디어 처리 파이프라인(202 및 220)에 의해 사용하기 위해, MAM(205)을 통해 따로따로 할당될 수 있는 유닛을 갖는 것으로 생각될 수 있는 특정 컴퓨터 판독가능 저장 매체의 (임의의 크기 또는 구성의) 양 또는 면적의 추상 표현이다. 메모리 풀(240)의 한 부분은 미디어 처리 파이프라인 1(202) 또는 미디어 처리 파이프라인 2에 의해(둘 다에 의해서는 아님) 사용하도록 제한되는 메모리 유닛을 나타내는 비공유 메모리(241)로 칭해진다. 메모리 풀(240)의 다 른 부분은 미디어 처리 파이프라인 1(202) 또는 미디어 처리 파이프라인 2(220), 또는 둘 다(또는 적용 가능한 다른 미디어 처리 파이프라인)에 의해 사용하기 위해 할당될 수 있는 메모리 유닛을 나타내는 공유가능 메모리(244)로 칭해진다. 예시적인 예에서, 메모리 풀(240)은 RAM의 40 MB이고, 공유가능 메모리(244)는 30 MB이며, 비공유 메모리(241)는 10 MB인데, 비공유 메모리의 5 MB는 미디어 처리 파이프라인 1(202)에 의해서만 사용하도록 제한되고, 비공유 메모리의 5 MB는 미디어 처리 파이프라인 2(220)에 의해서만 사용하도록 제한된다.
동적 공유 메모리 할당 1(246)은 미디어 처리 파이프라인 1(202)에 의해 사용하기 위해 (도 4와 관련하여 나중에 설명되는 데이터 레이트와 같은 자원 소모 표시자에 따라) 할당된 공유가능 메모리(244)의 총 양을 나타내고, 동적 공유 메모리 할당 2(248)는 미디어 처리 파이프라인 2(220)에 의해 사용하기 위해 할당된 공유가능 메모리(244)의 총 양을 나타낸다. 일반적으로, 가변적인 양의 공유가능 메모리 할당 1(246)은 다가오는 미디어 샘플을 프레젠테이션할 준비를 하기 위해 미디어 처리 파이프라인 1(202)에 의해 요청되고 예약되며, 미디어 샘플이 사용자에게 재생될 때, 공유 메모리 할당 1(246)의 요청된/예약된 양이 해제된다. 이와 마찬가지로, 가변적인 양의 공유 메모리 할당 2(248)는 다음의 미디어 샘플을 프레젠테이션할 준비를 하기 위해 미디어 처리 파이프라인 2(220)에 의해 요청되고 예약되며, 미디어 샘플이 사용자에게 재생될 때, 공유 메모리 할당 2(248)의 요청된/예약된 양이 해제된다.
계속하여, 도 1-3과 관련하여, 도 4는 공유가능 메모리(244)를 사용하여 관 리되는 다수의 시퀀스화된 미디어 샘플 집합(이를테면 클립(123))으로 구성된 미디어 콘텐트와 같은 다수의 디지털 데이터 집합을 공유 메모리를 사용하여 동시에 관리하는 방법의 순서도이다.
도 4에 도시된 프로세스(들)는 도 5와 관련하여 아래에 설명되는 프로세서(502)와 같은 하나 이상의 일반적인 다목적 또는 단일 목적 프로세서로 구현될 수 있다. 특별히 설명되지 않는 한, 여기에 설명된 방법은 특정 순서 또는 시퀀스에 제한되지 않는다. 게다가, 설명된 방법 또는 그 요소의 일부는 동시에 발생하거나 실행될 수 있다.
방법은 블록(400)에서 시작되고, 디지털 유닛의 제1 집합을 처리하기 위한 공유 메모리의 양이 예약되는 블록(402)으로 계속된다. 프레젠테이션 시스템(100)과 관련하여, 디지털 유닛의 제1 집합은 미디어 처리 파이프라인(202)을 통해 (미디어 콘텐트 스트림 1(208)로서) 렌더링되는 영화의 특정 클립(123)으로 생각될 수 있다. 미디어 콘텐트 스트림 1(208)이 사용자에게 프레젠테이션되는 유일한 미디어 콘텐트 스트림일 때, 모든 사용 가능한 공유가능 메모리(244)는 일반적으로 MAM(205)에 의해 미디어 콘텐트 스트림 1(208)의 렌더링에 할당될 수 있다.
다음에, 판정 블록(404)에서, 디지털 유닛의 제2 집합이 디지털 유닛의 제1 집합과 동시에 처리될 것인지 판정된다. 프레젠테이션 시스템(100)과 관련하여, 디지털 유닛의 제2 집합은, 그 중에 특히, 화면 속 화면의 감독 해설, 광고 또는 고선명으로 렌더링된 영화의 일부와 같은 사용자-선택의 보조 미디어 콘텐트 스트림(미디어 콘텐트 스트림 2(228)으로서 렌더링됨)으로 생각될 수 있다. 미디어 콘 텐트 스트림 1(208) 및 미디어 콘텐트 스트림 2(228)가 동시에 렌더링되고 있을 때, 공유가능 메모리(244)는 일반적으로 MAM(205)에 의해, (미디어 콘텐트 스트림 1(208)로부터의 다가오는 미디어 샘플을 식별하고 디코딩하기 위한) 미디어 처리 파이프라인 1(202)에 의한 사용과 (미디어 콘텐트 스트림 2(228)로부터의 다가오는 미디어 샘플을 식별하고 디코딩하기 위한) 미디어 처리 파이프라인 2(220)에 의한 사용 사이에서 나누어질 것이다. 공유가능 메모리(244)가 특별히 설명되지만, 주의할 점은, 미디어 처리 파이프라인은 또한 일반적으로, 특정 클립/미디어 콘텐트 스트림으로부터의 (제1 순차 미디어 샘플일 수도 있고 아닐 수도 있는) 미디어 샘플의 렌더링을 시작하기 위해 일반적으로 사용되는 비공유 메모리(241)의 양에 액세스할 수 있고, 비공유 메모리 액세스 이외에 공유가능 메모리(244)에 액세스할 수 있다는 것이다.
블록(406)에 나타낸 바와 같이, 동시에 디지털 유닛의 2개의 집합을 처리하는 것과 관련된 동작들 사이에서 공유 메모리의 사용을 나누는 한가지 방식은 디지털 유닛 집합의 처리와 관련된 상대적인 자원 소모 레이트에 기초하여 공유 메모리를 할당하는 것이다. 프레젠테이션 시스템(100)과 관련하여, 예시적인 자원 소모 레이트는 특정 미디어 콘텐트 스트림의 평균 데이터 레이트이고, 예시적인 할당은 평균 데이터 레이트의 비에 기초한 할당이다.
미디어 콘텐트 스트림 1(208) 및 미디어 콘텐트 스트림 2(228)와 같은 특정 미디어 콘텐트 스트림의 평균 데이터 레이트는 특정 클립으로부터 현재 렌더링되는 전체 샘플 수(예를 들어, 디코딩되고 있거나 디코딩되어 버퍼링되었지만 아직 사용 자에게 재생되지 않은 샘플의 크기)를, 현재 렌더링되는 샘플의 총 수의 총 재생 시간(예를 들어, 미디어 타임라인(142)으로부터 판정됨)으로 나눔으로써 계산될 수 있다. 다가오는 미디어 샘플이 (예를 들어, 미디어 타임라인(412)을 사용하여) 식별되고, 공유가능 메모리가 식별된 다가오는 미디어 샘플을 렌더링하기 위해 성공적으로 예약될 때, 또한 렌더링된 미디어 샘플이 사용자에게 재생되고, 메모리가 성공적으로 해제될 때, 평균 데이터 레이트가 갱신될 수 있다. 예를 들어, 위에서 설명된 바와 같이, 공유가능 메모리(244)가 30 MB이고, 미디어 콘텐트 스트림 1(208)이 40 MB/초의 평균 데이터 레이트를 가지며, 미디어 콘텐트 스트림 2(228)가 20 MB/초의 평균 데이터 레이트를 갖는다고 하면, 미디어 콘텐트 스트림 1(208)과 미디어 콘텐트 스트림 2(228) 사이의 데이터 레이트의 비는 2:1이 될 것이고, 이 비에 기초한 공유가능 메모리(244)의 할당은 미디어 콘텐트 스트림 1(208)을 렌더링하는 미디어 처리 파이프라인 1(202)에 20 MB가 할당되고, 미디어 콘텐트 스트림 2(228)를 렌더링하는 미디어 처리 파이프라인 2(220)에 10 MB가 할당될 것이다.
때때로, 판정 블록(407)에 나타낸 바와 같이, 계산된 비에 기초하여 원하는 양의 공유가능 메모리(244)를 즉시 할당하는 것이 불가능할 수 있다(예를 들어, 하나 또는 두 개의 미디어 처리 파이프라인은 아직 해제되지 않은, 아래에서 설명되는 블록(412)에서 이전에 예약된 메모리가 있을 수 있다). 원하는 할당이 현재 불가능하면, 한가지 해결책은 블록(418)에 나타낸 바와 같이, 우선순위 방식에 기초하여 사용 가능한 공유가능 메모리를 배정하는 것이다. 판정 블록(420)에 나타낸 바와 같이 메모리 요청 우선순위가 배정되면, 블록(416)에서 공유가능 메모리의 분 리된 양이 해제되고(판정 블록(424) 참조), 그러한 공유가능 메모리의 양이, 해제하는 미디어 처리 파이프라인의 원하는 할당(평균 데이터 레이트의 비에 기초함)을 초과할 때, 그러한 공유가능 메모리는 보류중인 메모리 요청 우선순위에 따라 즉시 재할당될 수 있다.
블록(406)에서 계산된 비에 기초하여 원하는 양의 공유가능 메모리(244)를 즉시 할당하는 것이 판정 블록(407)에서 가능하다고 하면, 블록(408)에서, 디지털 유닛 집합의 일부를 처리하기 위해 할당된 공유 메모리의 특정 양을 요청 및/또는 예약하는 단계가 실행된다. 프레젠테이션 시스템(100)과 관련하여, 미디어 처리 파이프라인 1(202) 및 미디어 처리 파이프라인 2(220)는 식별된 다가오는 미디어 샘플(예를 들어, 미디어 타임라인(142)에 기초하여 식별됨)을 렌더링하기 위해 요구되는 이전에 할당된 공유가능 메모리(244)의 분리된 양의 예약을 (예를 들어, MAM(205)으로부터) 요청한다. 개별 미디어 샘플을 준비하기 위해 요구된 메모리 자원은 반드시 샘플마다 또는 클립마다 일정한 것이 아니라, 미디어 샘플 크기, 미디어 소스 위치 또는 ID, 인코딩 또는 디코딩 파라미터, 미디어 샘플 프레젠테이션 포맷, 압축 파라미터, 암호화 파라미터, 재생 속도, 미디어 콘텐트 플레이어의 동적 처리 로드 및 기타 요인과 같은 요인에 의해 영향을 받는다.
판정 블록(410)에서, 특정 클립/미디어 콘텐트 스트림의 특정의 다가오는 미디어 샘플을 렌더링하기 위해 요구된 메모리의 분리된 양에 대한 요청을 이행하기에 충분하고 예약되지 않은 공유가능 메모리(244)(블록(206)에서 할당됨)가 존재한다고 판정되면, 요청된 메모리의 양은 블록(412)에 나타낸 바와 같이, 요청하는 미 디어 처리 파이프라인을 위하여 (예를 들어, MAM(205)에 의해) 예약된다. 일반적으로, 예약은 요청하는 미디어 처리 파이프라인에 사용 가능한 공유가능 메모리(244)의 양(블록(406)에서 할당됨)을 감소시킨다. 주의할 점은 이러한 예약이 또한 독립적으로, 적용가능 미디어 콘텐트 스트림의 평균 데이터 레이트의 블록(406)에서의 계산에 영향을 미칠 수 있다는 것이다.
블록(416)에 나타낸 바와 같이, 처리(예를 들어, 미디어 데이터(132)의 사용자로의 프레젠테이션)가 완료될 때, 블록(412)에서 예약된 메모리의 분리된 양은 MAM(205)에 의해 해제된다. 일반적으로, 해제는 해제하는 미디어 처리 파이프라인에 사용 가능한 공유가능 메모리(244)의 양(블록(406)에서 할당됨)을 증가시킨다. 블록(406)에서, 공유가능 메모리(244)의 원하는 할당이 즉시 구현될 수 없는 경우에, 해제된 메모리의 양이 해제하는 미디어 콘텐트 파이프라인의 원하는 할당보다 많으면, 해제된 메모리는 블록(406)에서 계산된 원하는 할당에 따라 즉시 재할당될 수 있다. 이와 마찬가지로, 판정 블록(414)에 나타낸 바와 같이 보류중인 메모리 요청 우선순위가 있으면(나중에 설명됨), 보류중인 메모리 요청 우선순위가 이행된다.
다시, 판정 블록(410)으로 돌아가서, 원하는 할당이 구현되었지만, (하나 이상의 미디어 처리 파이프라인에 대해), 특정의 다가오는 미디어 샘플을 렌더링하기 위해 요구된 메모리의 분리된 양에 대한 요청을 이행하기에 불충분한 예약되지 않은 공유가능 메모리(244)(블록(206)에서 할당됨)가 있다고 판정된다고 하면, 사용 가능한 공유가능 메모리는 블록(418)에 나타낸 바와 같이 우선순위 방식에 기초하 여 배정된다. 한가지 가능한 우선순위 방식에서, 더 높은 우선순위는 공유가능 메모리의 할당된 부분보다 현재 작게 갖는 미디어 처리 파이프라인에 공유가능 메모리를 배정하는 데에 부여된다. 대안적인 방식이 가능한데, 예를 들어, 평균 데이터 레이트가 더 높은 미디어 콘텐트 스트림을 갖는 미디어 처리 파이프라인에 공유가능 메모리를 배정하는 데에 더 높은 우선순위를 줄 수 있다. 예를 들어, 두 개의 미디어 처리 파이프라인이 블록(406)에서 계산된 할당을 초과하여 공유가능 메모리를 요청했다고 하자. 블록(420)에서, 메모리 요청 우선순위가, 공유가능 메모리의 할당된 부분보다 현재 작게 갖는 미디어 처리 파이프라인에 배정되면, 다른 미디어 처리 파이프라인은 더 낮은 메모리 요청 우선순위를 수신하거나, 메모리 요청 우선순위를 받지 못할 수도 있다. 메모리 요청 우선순위를 수신한 후, 미디어 처리 파이프라인은 블록(422)에 나타낸 바와 같이, (기다리는 미디어 처리 파이프라인에 의해 또는 어느 한 미디어 처리 파이프라인에 의해) 블록(416)에서 충분한 메모리가 해제될 때까지 기다리고, 해제된 메모리는 메모리 요청 우선순위(들)에 따라 즉시 예약된다.
다른 예에서, 한 미디어 처리 파이프라인이 블록(406)에서 계산된 할당을 초과하여 공유가능 메모리를 요청했다고 하자. 한가지 해결책은 미디어 처리 파이프라인이 공유가능 메모리의 할당된 부분보다 현재 작게 갖는 경우에 메모리 요청 우선순위를 배정하고, 요청하는 미디어 처리 파이프라인이 공유가능 메모리의 할당된 부분을 갖는 경우에 메모리 요청 우선순위를 배정하지 않는 것일 수 있다. 메모리 요청 우선순위가 배정되면, 미디어 처리 파이프라인은 블록(422)에 나타낸 바와 같 이, 어느 한 미디어 처리 파이프라인에 의해 블록(416)에서 충분한 메모리가 해제될 때까지 기다리고, 해제된 메모리는 메모리 요청 우선순위(들)에 따라 즉시 예약된다.
판정 블록(420)에 나타낸 바와 같이, 메모리 요청 우선순위가 배정되지 않을 때, 한가지 해결책은 요구된 메모리가 사용 가능할 때까지(예를 들어, 블록(406)에서 계산된 할당이 변경되고, 및/또는 다른 미디어 처리 파이프라인이 현재의 할당을 초과하여 메모리를 해제할 때까지) 메모리의 분리된 양을 반복적으로 재요청하도록 미디어 처리 파이프라인에 요구하는 것이다.
판정 블록(414)에 나타낸 바와 같이, 보류중인 메모리 요청 우선순위는 일반적으로 우선순위 또는 시간 순서로 제공된다. 블록(406)에서 공유가능 메모리가 다시 할당될 때에 메모리 요청 우선순위를 다시 설정하는 것이 바람직할 수 있다. 이러한 재할당은 미디어 타임라인(142)에 표시된 미디어 샘플 프레젠테이션 시간에 관계없이 여러 번 발생할 수 있다. 보류중인 메모리 요청 우선순위가 없고, 미디어 데이터 스트림이 정지하면, 방법은 블록(402)으로 돌아가고, 여기에서 모든 사용 가능한 공유가능 메모리(244)는 렌더링되는 다른 미디어 데이터 스트림(들)에 사용 가능하다.
도 5는 프레젠테이션 시스템(100)의 다양한 기능적 컴포넌트를 구현하기 위해 사용될 수 있거나, 그러한 기능적 컴포넌트에 의해 액세스될 수 있거나, 그러한 기능적 컴포넌트 내에 포함될 수 있는 소정의 기능적 컴포넌트를 도시한 범용 컴퓨팅 장치(500)의 블록도이다. 컴퓨팅 장치(500)의 하나 이상의 컴포넌트는 IC 관리 자(104), 프레젠테이션 관리자(106) 및 미디어 콘텐트 관리자(102)를 구현하기 위해 사용될 수 있거나, 그러한 관리자에 의해 액세스될 수 있거나, 그러한 관리자 내에 포함될 수 있다. 예를 들어, 도 5의 하나 이상의 컴포넌트는 프레젠테이션 시스템(100)의 기능을 (전체적으로 또는 부분적으로) 여러 가지 방식으로 구현하기 위해 함께 또는 따로 패키징될 수 있다.
하나 이상의 프로세서(502)는 컴퓨터 판독가능 매체(504)에 그리고 컴퓨터 프로그램(506)에 응답한다. 실제 또는 가상 프로세서일 수 있는 프로세서(들)(502)는 컴퓨터 실행가능 명령어를 실행함으로써 전자 장치의 기능을 제어한다. 프로세서(들)(502)는 특정 프로세스를 실행하기 위해 어셈블리, 컴파일 또는 기계 레벨에서의 명령어를 실행할 수 있다. 이러한 명령어는 소스 코드 또는 임의의 다른 공지된 컴퓨터 프로그램 설계 도구를 사용하여 작성될 수 있다.
컴퓨터 판독가능 매체(504)는 프로세서(502)에 의해 실행가능한 명령어와 같은 컴퓨터 판독가능 데이터를 기록, 저장 또는 전송할 수 있는, 현재 알려져 있거나 나중에 개발되는 임의의 형태로 된 임의의 수 및 조합의 로컬 또는 원격 장치를 나타낸다. 특히, 컴퓨터 판독가능 매체(504)는 (예를 들어, ROM, 임의의 유형의 프로그램가능 ROM(PROM), RAM 또는 플래시 메모리와 같은) 반도체 메모리; (플로피 디스크 드라이브, 하드 디스크 드라이브, 자기 드럼, 자기 테이프 또는 광 자기 디스크와 같은) 자기 저장 장치; (임의의 유형의 콤팩트 디스크 또는 DVD(digital versatile disk)와 같은) 광 저장 장치; 버블 메모리; 캐시 메모리; 코어 메모리; 홀로그래픽 메모리; 메모리 스틱; 페이퍼 테이프; 펀치 카드; 또는 이들의 임의의 조합일 수 있고, 또는 이들을 포함할 수 있다. 컴퓨터 판독가능 매체(504)는 또한 관련된 전송 매체 및 데이터를 포함할 수 있다. 전송 매체/데이터의 예는 피변조 반송파 신호에 의해 전달된 패킷화 또는 비패킷화 데이터와 같은, 임의의 형태의 유선 또는 무선 전송으로 구현된 데이터를 포함하는데, 이에 제한되지는 않는다.
컴퓨터 프로그램(506)은 데이터에 관한 미리 결정된 동작을 전자적으로 제어하는 임의의 신호 처리 방법 또는 저장된 명령어를 나타낸다. 일반적으로, 컴퓨터 프로그램(506)은 컴포넌트 기반 소프트웨어 개발을 위한 잘 알려진 실시에 따라 소프트웨어 컴포넌트로서 구현되고, 컴퓨터 판독가능 매체(이를테면, 컴퓨터 판독가능 매체(504)) 내에 인코딩된 컴퓨터 실행가능 명령어이다. 컴퓨터 프로그램은 다양한 방식으로 결합되거나 분산될 수 있다.
프레젠테이션 시스템(100)과 관련하여 설명된 기능/컴포넌트는 컴퓨터 프로그램의 임의의 특정 실시예에 의한 구현에 제한되지 않는다. 오히려, 기능은 데이터를 전달하거나 변환하는 프로세스이고, 일반적으로 프레젠테이션 시스템(100)의 기능적 요소들의 임의의 조합에 의해 구현될 수 있고, 또는 프레젠테이션 시스템(100)의 기능적 요소들의 임의의 조합에 위치하거나 이것에 의해 액세스된 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 실행될 수 있다.
도 5와 계속 관련하여, 도 6은 컴퓨팅 장치(500) 또는 프레젠테이션 시스템(100)의 전부 또는 일부가 구현되거나 사용될 수 있는 운영 환경(600)의 예시적인 구성의 블록도이다. 운영 환경(600)은 일반적으로 광범위한 범용 또는 특수 목적 컴퓨팅 환경을 나타낸다. 운영 환경(600)은 적합한 운영 환경의 한 예일 뿐이 고, 여기에서 설명된 시스템(들) 및 방법의 사용 또는 기능의 범위에 관해 어떤 제한을 암시하고자 하는 것이 아니다. 예를 들어, 운영 환경(600)은 퍼스널 컴퓨터, 워크스테이션, 서버, 휴대용 장치, 랩톱, 태블릿과 같은 컴퓨터 유형, 또는 현재 알려져 있거나 나중에 개발되는 광 매체 플레이어 또는 다른 유형의 미디어 플레이어와 같은 임의의 다른 유형의 전자 장치, 또는 이들의 임의의 실시양상일 수 있다. 운영 환경(600)은 또한, 예를 들어 분산 컴퓨팅 네트워크 또는 웹 서비스일 수 있다. 운영 환경(600)의 특정 예는 고선명 DVD 영화의 재생을 용이하게 하는 DVD 플레이어 또는 관련된 운영 체제와 같은 환경이다.
도시된 바와 같이, 운영 환경(600)은 프로세서(502), 컴퓨터 판독가능 매체(504) 및 컴퓨터 프로그램(506)을 포함하는 컴퓨팅 장치(506)의 컴포넌트를 포함하거나 액세스한다. 잘 알려져 있고 널리 사용 가능한 요소인 하나 이상의 내부 버스(620)는 컴퓨팅 환경(600) 또는 그 요소 내에서나, 그곳으로, 또는 그곳으로부터 데이터, 어드레스, 제어 신호 및 기타 정보를 전달하기 위해 사용될 수 있다.
입력 인터페이스(들)(608)는 컴퓨팅 환경(600)에 입력을 제공한다. 입력은 현재 알려져 있거나 나중에 개발되는 임의의 유형의 인터페이스, 이를테면 사용자 인터페이스를 사용하여 수집될 수 있다. 사용자 인터페이스는 원격 컨트롤, 디스플레이, 마우스, 펜, 스타일러스, 트랙볼, 키보드, 마이크, 스캐닝 장치, 및 데이터 입력에 사용되는 모든 유형의 장치와 같은 터치 입력 장치이다.
출력 인터페이스(들)(610)는 운영 환경(600)으로부터의 출력을 제공한다. 출력 인터페이스(들)(610)의 예는 디스플레이, 프린터, 스피커, 드라이브(이를테면 광 디스크 드라이브 및 기타 디스크 드라이브) 등을 포함한다.
외부 통신 인터페이스(들)(612)는 채널 신호, 데이터 신호 또는 컴퓨터 판독가능 매체와 같은 통신 매체를 통해 다른 엔티티로부터 정보를 수신하거나 다른 엔티티에 정보를 전송하는 운영 환경(600)의 능력을 향상시키기 위해 사용 가능하다. 외부 통신 인터페이스(들)(612)는 케이블 모뎀, 데이터 단말 장치, 미디어 플레이어, 데이터 저장 장치, PDA, 또는 임의의 다른 장치 또는 그 컴포넌트/조합일 수 있고, 이들을 관련된 네트워크 지원 장치 및/또는 소프트웨어 또는 인터페이스와 함께 포함할 수 있다. 특수 하드웨어(615)는 트랜시버, 코덱, 특수 회로, 디스크 드라이브 등과 같은 운영 환경(600)의 기능을 구현하는 임의의 하드웨어 또는 펌웨어를 나타낸다.
도 7은 프레젠테이션 시스템(100), 컴퓨팅 장치(500) 또는 운영 환경(600)이 관련하여 사용될 수 있는 클라이언트-서버 아키텍처(700)의 단순 기능 도면이다. 프레젠테이션 시스템(100), 컴퓨팅 장치(500) 및/또는 운영 환경(600)의 하나 이상의 실시양상은 아키텍처(700)의 클라이언트 측(702) 상에 또는 아키텍처(700)의 서버 측(704) 상에 나타내질 수 있다. 도시된 바와 같이, (임의의 유형, 예를 들어 유선 또는 무선의 임의의 공중 또는 사설 네트워크일 수 있는) 통신 프레임워크(703)는 클라이언트 측(702)과 서버 측(704) 사이의 통신을 용이하게 한다.
클라이언트 측(702)에서, 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수 있는 하나 이상의 클라이언트(706)는 클라이언트 데이터 저장소(708)에 응답한다. 클라이언트 데이터 저장소(708)는 클라이언트(706)에 국한된 정보를 저장하기 위해 이용된 컴퓨터 판독가능 매체(504)일 수 있다. 서버 측(704)에서, 하나 이상의 서버(710)는 서버 데이터 저장소(712)에 응답한다. 클라이언트 데이터 저장소(708)와 같이, 서버 데이터 저장소(712)는 서버(710)에 국한된 정보를 저장하기 위해 이용된 하나 이상의 컴퓨터 판독가능 매체(504)일 수 있다.
미디어 콘텐트와 동시에 사용자에게 대화형 콘텐트를 프레젠테이션하기 위해 사용되는 프레젠테이션 시스템의 다양한 실시양상이 설명되었다. 그러나, 프레젠테이션 시스템의 설명된 모든 컴포넌트가 사용될 필요도 없고, 그 컴포넌트들이 사용시에 동시에 프레젠테이션되어야 하는 것도 아니라는 것을 이해할 것이다. 프레젠테이션 시스템(100)과 관련하여 컴퓨터 프로그램인 것으로 설명된 기능/컴포넌트는 컴퓨터 프로그램의 임의의 특정 실시예에 의한 구현에 제한되지 않는다. 오히려, 기능은 데이터를 전달하거나 변환하는 프로세스이고, 일반적으로 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 실행되거나 이들에 의해 구현될 수 있다.
본 주제가 구조적 특징 및/또는 방법적 동작에 특정된 언어로 설명되었지만, 청구범위에 정의된 주제는 위에서 설명된 특정 특징 또는 동작에 반드시 제한되는 것은 아니라는 것을 또한 이해할 것이다. 오히려, 위에서 설명된 특정 특징 및 동작은 청구범위를 구현하는 예시적인 형태로 개시된다.
한 요소가 다른 요소에 응답하는 것으로 표시될 때, 요소들은 직접 또는 간접으로 결합될 수 있다는 것을 더욱 이해할 것이다. 여기에 도시된 접속은 요소들 사이의 결합 또는 통신 인터페이스를 달성하기 위해 실제로 논리적 또는 물리적 접속이 될 수 있다. 접속은 그외 다른 방식 중에서, 소프트웨어 프로세스들 사이의 프로세스간 통신, 또는 네트워크화된 컴퓨터들 사이의 기계간 통신으로서 구현될 수 있다.
"예시적"이라는 단어는 예, 보기 또는 예시로서 쓰인다는 것을 나타내기 위해 여기에서 사용된다. "예시적"으로 여기에서 설명된 임의의 구현 또는 그 실시양상은 반드시 그외 다른 구현 또는 그 실시양상보다 양호하거나 유리한 것으로 해석될 필요는 없다.
위에서 설명된 특정 실시예 이외의 실시예가 첨부된 청구범위의 정신 및 범위를 벗어나지 않고서 고려될 수 있다는 것을 이해하므로, 본 주제의 범위는 다음의 청구범위에 의해 결정되게 하고자 한다.

Claims (20)

  1. 프로세서에 의해 실행될 때, 공유가능 메모리의 양(an amount of sharable memory)을 갖는 메모리 풀(pool)을 사용하여 디지털 데이터를 관리하는 방법을 실행하는 컴퓨터 실행가능 명령어들을 포함하는 컴퓨터 판독가능 저장 매체에 있어서 - 상기 디지털 데이터는 시퀀스화된(sequenced) 디지털 데이터 유닛들의 다수의 집합을 포함함 -, 상기 방법은,
    제1 시퀀스를 갖는 디지털 데이터 유닛들의 제1 집합을 식별하는 단계;
    제2 시퀀스를 갖는 디지털 데이터 유닛들의 제2 집합을 식별하는 단계;
    상기 제1 집합의 일부분이 상기 제2 집합의 일부분과 동시에 처리될 때,
    상기 제1 시퀀스의 디지털 데이터 유닛들의 일부를 처리하는 것과 관련된 제1 자원 소모 표시자를 확인하는 단계;
    상기 제2 시퀀스의 디지털 데이터 유닛들의 일부를 처리하는 것과 관련된 제2 자원 소모 표시자를 확인하는 단계;
    상기 제2 자원 소모 표시자에 대한 상기 제1 자원 소모 표시자의 비(ratio)를 계산하는 단계; 및
    상기 비에 따라, 상기 제1 집합의 처리와 관련된 동작들 및 상기 제2 집합의 처리와 관련된 동작들 사이에서 상기 메모리 풀 내의 상기 공유가능 메모리의 양을 동적으로 할당하는 단계를 포함하는
    컴퓨터 판독가능 저장 매체.
  2. 제1항에 있어서, 상기 방법은
    상기 제1 집합의 일부분이 상기 제2 집합의 일부분과 동시에 처리되지 않을 때, 상기 제1 집합의 처리와 관련된 동작들 또는 상기 제2 집합의 처리와 관련된 동작들에 상기 메모리 풀 내의 상기 공유가능 메모리의 양을 동적으로 할당하는 단계를 더 포함하는
    컴퓨터 판독가능 저장 매체.
  3. 제1항에 있어서,
    상기 제1 및 제2 자원 소모 표시자들은 각각 상기 디지털 데이터 유닛들의 제1 및 제2 집합들의 처리와 관련된 평균 자원 소모 레이트들을 포함하는
    컴퓨터 판독가능 저장 매체.
  4. 제1항에 있어서, 상기 방법은
    상기 제1 집합의 일부분이 상기 제2 집합의 일부분과 동시에 처리될 때,
    사용 가능한 공유가능 메모리 양이 상기 비에 따라 할당하기에 불충분하다는 것을 확인하는 단계;
    상기 디지털 유닛들의 제1 집합의 처리와 관련된 동작들 또는 상기 디지털 유닛들의 제2 집합의 처리와 관련된 동작들에 우선순위를 배정하는 단계; 및
    배정된 상기 우선순위에 기초하여 상기 메모리 풀 내의 상기 공유가능 메모리의 양을 동적으로 할당하는 단계를 더 포함하는
    컴퓨터 판독가능 저장 매체.
  5. 제4항에 있어서,
    상기 우선순위에 기초하여 상기 메모리 풀 내의 상기 공유가능 메모리의 양을 할당하는 단계는,
    상기 우선순위가 상기 제1 집합의 처리와 관련된 동작들에 배정될 때, 상기 제1 집합의 처리와 관련된 동작들에 상기 메모리 풀 내의 상기 공유가능 메모리의 양을 할당하는 단계, 및
    상기 우선순위가 상기 제2 집합의 처리와 관련된 동작들에 배정될 때, 상기 제2 집합의 처리와 관련된 동작들에 상기 메모리 풀 내의 상기 공유가능 메모리의 양을 동적으로 할당하는 단계를 포함하는
    컴퓨터 판독가능 저장 매체.
  6. 제1항에 있어서,
    상기 제1 시퀀스 또는 상기 제2 시퀀스 중의 한 시퀀스, 또는 둘 다의 시퀀스는 미리 결정되거나 또는 동적으로 결정되는
    컴퓨터 판독가능 저장 매체.
  7. 프로세서에 의해 실행될 때, 공유가능 메모리 풀을 사용하여 미디어 콘텐트를 렌더링하는 방법을 실행하는 컴퓨터 실행가능 명령어들을 포함하는 컴퓨터 판독가능 저장 매체에 있어서 - 상기 미디어 콘텐트는 시퀀스화된 미디어 샘플들의 다수의 집합으로 구성됨 -, 상기 방법은,
    제1 미디어 소스로부터 수신가능한 미디어 샘플들의 제1 집합을 식별하는 단계;
    제2 미디어 소스로부터 수신가능한 미디어 샘플들의 제2 집합을 식별하는 단계;
    상기 미디어 샘플들의 제1 집합의 렌더링과 관련된 제1 데이터 레이트를 계산하는 단계;
    상기 미디어 샘플들의 제2 집합의 렌더링과 관련된 제2 데이터 레이트를 계산하는 단계;
    상기 제1 데이터 레이트를 상기 제2 데이터 레이트와 비교하는 단계; 및
    상기 비교하는 단계에 기초하여, 상기 미디어 샘플들의 제1 집합을 렌더링하기 위한 상기 공유가능 메모리 풀로부터의 제1 메모리 양, 및 상기 미디어 샘플들의 제2 집합을 동시에 렌더링하기 위한 상기 공유가능 메모리 풀로부터의 제2 메모리 양을 동적으로 할당하는 단계를 포함하는
    컴퓨터 판독가능 저장 매체.
  8. 제7항에 있어서, 상기 방법은,
    상기 미디어 샘플들의 제1 집합으로부터 제1의 다가오는(upcoming) 미디어 샘플을 식별하는 단계;
    상기 미디어 샘플들의 제2 집합으로부터 제2의 다가오는 미디어 샘플을 식별하는 단계 - 상기 제2의 다가오는 미디어 샘플은 상기 제1의 다가오는 미디어 샘플과 동시에 렌더링될 것임-;
    상기 제1의 다가오는 미디어 샘플을 렌더링하기 위한 제1의 원하는 메모리 양을 확인하는 단계;
    상기 제2의 다가오는 미디어 샘플을 렌더링하기 위한 제2의 원하는 메모리 양을 확인하는 단계;
    상기 공유가능 메모리 풀로부터 사용 가능한 메모리의 양이 상기 제1의 원하는 메모리 양 및 상기 제2의 원하는 메모리 양 둘 다를 동적으로 할당하기에 충분할 때,
    상기 제1의 다가오는 미디어 샘플을 렌더링하기 위한 상기 제1의 원하는 메모리 양을 동적으로 할당하고, 상기 공유가능 메모리 풀로부터 사용 가능한 메모리 양을 상기 제1의 원하는 메모리 양만큼 감소시키며,
    상기 제2의 다가오는 미디어 샘플을 렌더링하기 위한 상기 제2의 원하는 메모리 양을 동적으로 할당하고, 상기 공유가능 메모리 풀로부터 사용 가능한 메모리 양을 상기 제2의 원하는 메모리 양만큼 감소시키는 단계; 및
    상기 공유가능 메모리 풀로부터 사용 가능한 메모리의 양이 상기 제1의 원하는 메모리 양 및 상기 제2의 원하는 메모리 양 둘 다를 동적으로 할당하기에 불충분할 때,
    상기 제1의 다가오는 미디어 샘플을 렌더링하기 위한 상기 제1의 원하는 메모리 양을 동적으로 할당하고, 상기 공유가능 메모리 풀로부터 사용 가능한 메모리 양을 상기 제1의 원하는 메모리 양만큼 감소시키거나, 또는
    상기 제2의 다가오는 미디어 샘플을 렌더링하기 위한 상기 제2의 원하는 메모리 양을 동적으로 할당하고, 상기 공유가능 메모리 풀로부터 사용 가능한 메모리 양을 상기 제2의 원하는 메모리 양만큼 감소시키는 단계를 더 포함하는
    컴퓨터 판독가능 저장 매체.
  9. 제8항에 있어서,
    상기 공유가능 메모리 풀로부터 사용 가능한 메모리의 양이 상기 제1의 원하는 메모리 양 및 상기 제2의 원하는 메모리 양 둘 다를 동적으로 할당하기에 불충분할 때,
    상기 제1 데이터 레이트가 상기 제2 데이터 레이트보다 높을 경우에 상기 제1의 원하는 메모리 양을 동적으로 할당하고,
    상기 제2 데이터 레이트가 상기 제1 데이터 레이트보다 높을 경우에 상기 제2의 원하는 메모리 양을 동적으로 할당하는
    컴퓨터 판독가능 저장 매체.
  10. 제8항에 있어서, 상기 방법은
    상기 제1의 원하는 메모리 양이 동적으로 할당되었을 때, 상기 제1의 다가오는 미디어 샘플이 렌더링된 후, 상기 공유가능 메모리 풀로부터 사용 가능한 메모리의 양을 상기 제1의 원하는 메모리 양만큼 증가시키는 단계; 및
    상기 제2의 원하는 메모리 양이 동적으로 할당되었을 때, 상기 제2의 다가오는 미디어 샘플이 렌더링된 후, 상기 공유가능 메모리 풀로부터 사용 가능한 메모리의 양을 상기 제2의 원하는 메모리 양만큼 증가시키는 단계를 더 포함하는
    컴퓨터 판독가능 저장 매체.
  11. 제8항에 있어서, 상기 방법은
    상기 공유가능 메모리 풀로부터 사용 가능한 메모리의 양이 상기 제1의 원하는 메모리 양 및 상기 제2의 원하는 메모리 양 둘 다를 동적으로 할당하기에 불충분할 때, 상기 제2의 원하는 메모리 양이 동적으로 할당된 경우에 상기 제1의 원하는 메모리 양에 메모리 할당 우선순위를 배정하거나, 또는 상기 제1의 원하는 메모리 양이 동적으로 할당된 경우에 상기 제2의 원하는 메모리 양에 할당 우선순위를 배정하는 단계;
    상기 할당 우선순위가 상기 제1의 원하는 메모리 양에 배정되고 상기 공유가능 메모리 풀로부터 사용 가능한 메모리의 양이 상기 제1의 원하는 메모리 양과 동일하거나 그보다 크게 될 때, 상기 공유가능 메모리 풀로부터 상기 제1의 원하는 메모리 양을 자동으로 동적으로 할당하는 단계; 및
    상기 할당 우선순위가 상기 제2의 원하는 메모리 양에 배정되고 상기 공유가능 메모리 풀로부터 사용 가능한 메모리의 양이 상기 제2의 원하는 메모리 양과 동일하거나 그보다 크게 될 때, 상기 공유가능 메모리 풀로부터 상기 제1의 원하는 메모리 양을 자동으로 동적으로 할당하는 단계를 더 포함하는
    컴퓨터 판독가능 저장 매체.
  12. 제7항에 있어서,
    상기 제1 미디어 소스는 상기 제2 미디어 소스와 동일하거나 다르고,
    미디어 샘플들은 비트들; 프레임들; 데이터 패킷들; 픽처 그룹들(groups of pictures); 및 확장된(enhanced) 비디오 개체 유닛들로 이루어진 그룹에서 선택되는
    컴퓨터 판독가능 저장 매체.
  13. 제7항에 있어서,
    상기 비교하는 단계는 상기 제2 데이터 레이트에 대한 상기 제1 데이터 레이트의 비를 계산하는 단계를 포함하고, 상기 동적 할당 단계는 상기 비에 따라 동적으로 할당하는 단계를 포함하는
    컴퓨터 판독가능 저장 매체.
  14. 제7항에 있어서,
    상기 제1 데이터 레이트는 상기 미디어 샘플들의 제1 집합의 렌더링 속도(speed); 프레젠테이션 시스템의 특성; 및 상기 제1 미디어 소스의 특성으로 이루어진 그룹에서 선택된 정보에 기초하여 계산된 평균 데이터 레이트를 포함하고,
    상기 제2 데이터 레이트는 상기 미디어 샘플들의 제2 집합의 렌더링 속도; 상기 프레젠테이션 시스템의 특성; 및 상기 제2 미디어 소스의 특성으로 이루어진 그룹에서 선택된 정보에 기초하여 계산된 평균 데이터 레이트를 포함하는
    컴퓨터 판독가능 저장 매체.
  15. 제14항에 있어서,
    상기 프레젠테이션 시스템의 특성들은 상기 미디어 샘플들의 제1 집합 또는 상기 미디어 샘플들의 제2 집합, 또는 이들 모두의 재생 상태; 상기 프레젠테이션 시스템 내의 처리 로드; 및 상기 프레젠테이션 시스템과 관련된 클록 주파수로 이루어진 그룹에서 선택되는
    컴퓨터 판독가능 저장 매체.
  16. 제14항에 있어서,
    상기 제1 및 제2 미디어 소스들의 특성들은 인코더-디코더 쌍 파라미터들; 및 암호화 파라미터들로 이루어진 그룹에서 선택되는
    컴퓨터 판독가능 저장 매체.
  17. 제14항에 있어서,
    상기 제1 집합의 미디어 샘플들의 렌더링과 관련된 평균 데이터 레이트를 계산하는 단계는
    상기 미디어 샘플들의 제1 집합을 렌더링하기 위해 현재 할당된 상기 공유가능 메모리 풀의 메모리 양을 확인하는 단계,
    현재 렌더링되고 있는 상기 제1 집합의 제1 미디어 샘플 수의 크기를 확인하는 단계,
    상기 제1 미디어 샘플 수를 사용자에게 재생하는 것과 관련된 제1 시간 양을 확인하는 단계, 및
    상기 제1 미디어 샘플 수의 크기를 상기 제1 시간 양으로 나누는 단계를 포함하고,
    상기 제2 집합의 미디어 샘플들의 렌더링과 관련된 평균 데이터 레이트를 계산하는 단계는
    상기 미디어 샘플들의 제2 집합을 렌더링하기 위해 현재 할당된 상기 공유가능 메모리 풀의 메모리 양을 확인하는 단계,
    현재 렌더링되고 있는 상기 제2 집합의 제2 미디어 샘플 수의 크기를 확인하는 단계,
    상기 제2 미디어 샘플 수를 사용자에게 재생하는 것과 관련된 제2 시간 양을 확인하는 단계, 및
    상기 제2 미디어 샘플 수의 크기를 상기 제2 시간 양으로 나누는 단계를 포함하는
    컴퓨터 판독가능 저장 매체.
  18. 시퀀스화된 미디어 샘플들의 다수의 집합으로 구성된 미디어 콘텐트를 렌더링하는 시스템에 있어서,
    제1 미디어 소스로부터의 미디어 샘플들의 제1 집합을 렌더링하고 제2 미디어 소스로부터의 미디어 샘플들의 제2 집합을 렌더링하도록 동작가능한 미디어 콘텐트 관리자;
    상기 미디어 콘텐트 관리자와 통신하도록 구성된 프레젠테이션 관리자 - 상기 프레젠테이션 관리자는 상기 제1 집합으로부터의 제1 미디어 샘플이 상기 제2 집합으로부터의 제2 미디어 샘플과 동시에 렌더링될 때를 식별하도록 동작가능함-; 및
    상기 미디어 콘텐트 관리자 및 상기 프레젠테이션 관리자에 응답하는 메모리 할당 관리자를 포함하고,
    상기 메모리 할당 관리자는 공유가능 메모리 풀을 관리하고,
    상기 메모리 할당 관리자는
    상기 미디어 샘플들의 제1 집합의 렌더링과 관련된 제1 데이터 레이트를 확인하고,
    상기 미디어 샘플들의 제2 집합의 렌더링과 관련된 제2 데이터 레이트를 확인하며,
    상기 제1 데이터 레이트를 상기 제2 데이터 레이트와 비교하고,
    상기 비교에 기초하여, 상기 미디어 샘플들의 제1 집합으로부터의 상기 제1 미디어 샘플을 렌더링하기 위한 상기 공유가능 메모리 풀로부터의 제1 메모리 양, 및 상기 미디어 샘플들의 제2 집합으로부터의 상기 제2 미디어 샘플을 동시에 렌더링하기 위한 상기 공유가능 메모리 풀로부터의 제2 메모리 양을 동적으로 할당하는
    미디어 콘텐트 렌더링 시스템.
  19. 제18항에 있어서,
    상기 시스템은 운영 체제를 포함하는
    미디어 콘텐트 렌더링 시스템.
  20. 제18항에 있어서,
    상기 시스템은 디지털 미디어 플레이어를 포함하는
    미디어 콘텐트 렌더링 시스템.
KR1020097026720A 2007-06-28 2008-06-17 공유 메모리 풀을 사용한 디지털 데이터 관리 KR101475544B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/823,510 2007-06-28
US11/823,510 US7698528B2 (en) 2007-06-28 2007-06-28 Shared memory pool allocation during media rendering

Publications (2)

Publication Number Publication Date
KR20100036256A KR20100036256A (ko) 2010-04-07
KR101475544B1 true KR101475544B1 (ko) 2014-12-22

Family

ID=40162136

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097026720A KR101475544B1 (ko) 2007-06-28 2008-06-17 공유 메모리 풀을 사용한 디지털 데이터 관리

Country Status (13)

Country Link
US (1) US7698528B2 (ko)
EP (1) EP2160685B1 (ko)
JP (1) JP5513381B2 (ko)
KR (1) KR101475544B1 (ko)
CN (1) CN101689137B (ko)
AU (1) AU2008270802B2 (ko)
BR (1) BRPI0813398B1 (ko)
CA (1) CA2689585A1 (ko)
IL (1) IL202618A (ko)
MX (1) MX2009013843A (ko)
RU (1) RU2466451C2 (ko)
TW (1) TWI368875B (ko)
WO (1) WO2009006016A2 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101259015B1 (ko) * 2008-02-29 2013-04-29 삼성전자주식회사 재생 방법 및 장치
NO329425B1 (no) * 2009-03-17 2010-10-18 Microsoft Internat Holdings B System og fremgangsmate til a forbedre konfigurasjon og kostnadseffektivitet for databehandlingsoppgaver
US8423088B2 (en) * 2009-07-22 2013-04-16 Microsoft Corporation Aggregated, interactive communication timeline
CN101883153B (zh) * 2010-07-22 2015-05-13 中兴通讯股份有限公司 一种基于云计算的信息呈现方法、系统及终端设备
EP2707810A1 (en) * 2011-05-10 2014-03-19 Thomson Licensing Technique for synchronized content sharing
KR102277258B1 (ko) * 2014-02-27 2021-07-14 엘지전자 주식회사 디지털 디바이스 및 상기 디지털 디바이스에서 애플리케이션 처리 방법
CN105701019A (zh) 2014-11-25 2016-06-22 阿里巴巴集团控股有限公司 一种内存管理方法以及装置
US9882960B2 (en) * 2014-12-30 2018-01-30 Airwatch Llc Security framework for media playback
CN108573162A (zh) * 2017-05-31 2018-09-25 北京金山云网络技术有限公司 数据拷贝系统、方法及装置
CN117081690A (zh) 2018-01-10 2023-11-17 交互数字专利控股公司 用于接收下行链路传输的方法及wtru
US10838868B2 (en) 2019-03-07 2020-11-17 International Business Machines Corporation Programmable data delivery by load and store agents on a processing chip interfacing with on-chip memory components and directing data to external memory components

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004159231A (ja) * 2002-11-08 2004-06-03 Sharp Corp デジタル符号化情報記録再生装置
US6775467B1 (en) * 2000-05-26 2004-08-10 Cyberlink Corporation DVD playback system capable of playing two subtitles at the same time
JP2005004581A (ja) * 2003-06-13 2005-01-06 Matsushita Electric Ind Co Ltd メディア処理装置及びメディア処理方法
US20050030971A1 (en) * 2003-08-08 2005-02-10 Visionflow, Inc. Adaptive bandwidth allocation over a heterogeneous system interconnect delivering true bandwidth-on-demand

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2842738B2 (ja) * 1992-08-25 1999-01-06 富士通株式会社 オンライン処理システム
US6205522B1 (en) * 1998-04-15 2001-03-20 Diamond Multimedia Systems, Inc. DSP code swapping with continuous DSP execution
US6490250B1 (en) * 1999-03-09 2002-12-03 Conexant Systems, Inc. Elementary stream multiplexer
JP2001043616A (ja) * 1999-07-30 2001-02-16 Sharp Corp 記録方法、記録媒体及び記録装置
KR100407494B1 (ko) * 1999-10-29 2003-12-01 엘지전자 주식회사 스트림 사양정보의 기록 및 이의 제공방법
US6578109B1 (en) * 2000-06-29 2003-06-10 Sony Corporation System and method for effectively implementing isochronous processor cache
JP4231698B2 (ja) * 2001-05-10 2009-03-04 ポリコム イスラエル リミテッド 多地点マルチメディア/音声システムの制御ユニット
US7266132B1 (en) * 2002-10-24 2007-09-04 Cisco Technology, Inc. Flexible memory allocation for data transmission
CA2422252C (en) * 2003-03-14 2008-09-02 Ibm Canada Limited - Ibm Canada Limitee Reduced synchronization reservation system and method for a shared memory buffer
US7472246B2 (en) * 2003-04-30 2008-12-30 International Business Machines Corporation Method and system for automated memory reallocating and optimization between logical partitions
WO2006003539A1 (en) * 2004-06-29 2006-01-12 Koninklijke Philips Electronics N.V. Method and circuit for buffering a stream of data
US20060041895A1 (en) * 2004-08-04 2006-02-23 Microsoft Corporation Systems and methods for interfacing with codecs across an architecture optimized for audio
US7380038B2 (en) * 2005-02-04 2008-05-27 Microsoft Corporation Priority registers for biasing access to shared resources
US7769274B2 (en) * 2005-05-06 2010-08-03 Mediatek, Inc. Video processing and optical recording using a shared memory
KR20070014945A (ko) * 2005-07-29 2007-02-01 엘지전자 주식회사 기록매체, 데이터 재생방법 및 재생장치와 데이터 기록방법및 기록장치
US20080049036A1 (en) * 2006-08-24 2008-02-28 Mediatek Inc. Multimedia Playback System, FIFO Memory System, and Method for Storing Multimedia Data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6775467B1 (en) * 2000-05-26 2004-08-10 Cyberlink Corporation DVD playback system capable of playing two subtitles at the same time
JP2004159231A (ja) * 2002-11-08 2004-06-03 Sharp Corp デジタル符号化情報記録再生装置
JP2005004581A (ja) * 2003-06-13 2005-01-06 Matsushita Electric Ind Co Ltd メディア処理装置及びメディア処理方法
US20050030971A1 (en) * 2003-08-08 2005-02-10 Visionflow, Inc. Adaptive bandwidth allocation over a heterogeneous system interconnect delivering true bandwidth-on-demand

Also Published As

Publication number Publication date
JP2010532056A (ja) 2010-09-30
CA2689585A1 (en) 2009-01-08
IL202618A0 (en) 2010-06-30
RU2009148525A (ru) 2011-06-27
CN101689137B (zh) 2015-07-29
CN101689137A (zh) 2010-03-31
WO2009006016A3 (en) 2009-04-23
AU2008270802B2 (en) 2012-07-05
AU2008270802A1 (en) 2009-01-08
JP5513381B2 (ja) 2014-06-04
US20090006771A1 (en) 2009-01-01
KR20100036256A (ko) 2010-04-07
EP2160685A2 (en) 2010-03-10
TWI368875B (en) 2012-07-21
US7698528B2 (en) 2010-04-13
MX2009013843A (es) 2010-03-10
IL202618A (en) 2014-12-31
BRPI0813398B1 (pt) 2019-08-20
TW200912754A (en) 2009-03-16
WO2009006016A2 (en) 2009-01-08
BRPI0813398A2 (pt) 2014-12-30
EP2160685B1 (en) 2016-12-14
EP2160685A4 (en) 2011-01-26
RU2466451C2 (ru) 2012-11-10

Similar Documents

Publication Publication Date Title
KR101475544B1 (ko) 공유 메모리 풀을 사용한 디지털 데이터 관리
JP5394375B2 (ja) デジタルメディア処理用インターフェース
JP4907653B2 (ja) メディア・コンテンツのレンダリングの諸側面
KR101365829B1 (ko) 대화형 멀티미디어 프리젠테이션을 재생하는 방법을 수행하는 컴퓨터 실행가능 명령어들이 인코딩된 컴퓨터 판독가능 매체, 및 대화형 멀티미디어 프리젠테이션을 재생하는 프리젠테이션 시스템 및 장치
TW201342096A (zh) 用於硬體加速視頻系統中策略察知之裝置及方法
CN112887786B (zh) 视频播放方法、装置及计算机可读介质

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
FPAY Annual fee payment

Payment date: 20171117

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181115

Year of fee payment: 5