KR101201000B1 - 미디어 기반 미디어 프로세서 - Google Patents

미디어 기반 미디어 프로세서 Download PDF

Info

Publication number
KR101201000B1
KR101201000B1 KR1020110127133A KR20110127133A KR101201000B1 KR 101201000 B1 KR101201000 B1 KR 101201000B1 KR 1020110127133 A KR1020110127133 A KR 1020110127133A KR 20110127133 A KR20110127133 A KR 20110127133A KR 101201000 B1 KR101201000 B1 KR 101201000B1
Authority
KR
South Korea
Prior art keywords
media
sample
topology
processor
data
Prior art date
Application number
KR1020110127133A
Other languages
English (en)
Other versions
KR20110137760A (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 KR20110137760A publication Critical patent/KR20110137760A/ko
Application granted granted Critical
Publication of KR101201000B1 publication Critical patent/KR101201000B1/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
    • 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
    • G11B27/031Electronic editing of digitised analogue information signals, e.g. audio or video signals
    • G11B27/034Electronic editing of digitised analogue information signals, e.g. audio or video signals on discs
    • 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/34Indicating arrangements 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • H04L7/04Speed or phase control by synchronisation signals
    • H04L7/10Arrangements for initial synchronisation
    • 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/2562DVDs [digital versatile discs]; Digital video discs; MMCDs; HDCDs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/40Combinations of multiple record carriers

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Stored Programmes (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Computer And Data Communications (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Power Sources (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

미디어 프로세서(media processor)를 위한 시스템 및 방법은 토폴로지(topology)를 통해서 데이터 처리 함수로부터 토폴로지 생성 및 유지 함수를 분리한다. 이러한 시스템은 한 세트의 입력 멀티미디어 스트림(input multimedia stream)들, 입력 멀티미디어 스트림들을 위한 하나 이상의 소스, 멀티미디어 데이터에 수행하기 위한 작업들의 시퀀스 및 한 세트의 출력 멀티미디어 스트림들을 기술하는 토폴로지를 생성하기 위한 토폴로지 생성 요소(topology generating element)를 포함하는 제어 계층(control layer) 및 토폴로지에서 기술된 바에 따라 멀티미디어 데이터의 전달(passing)을 통제하고, 한 세트의 출력 멀티미디어 스트림을 생성하기 위하여 멀티미디어 데이터 상에서 멀티미디어 작업 시퀀스의 수행을 통제하기 위한 미디어 프로세서를 포함한다. 핵심 계층(core layer)은 한 세트의 출력 멀티미디어 스트림들을 제공하기 위하여 입력 미디어 스트림들, 입력 멀티미디어 스트림들을 위한 소스들, 멀티미디어 데이터에 동작하는 하나 이상의 변환(transform)들, 스트림 싱크(stream sink) 및 미디어 싱크를 포함한다.

Description

미디어 기반 미디어 프로세서{MEDIA FOUNDATION MEDIA PROCESSOR}
본 발명은 일반적으로 컴퓨팅에 관한 것으로, 특히 컴퓨팅 환경에서 멀티미디어 데이터를 처리하는 것에 관한 것이다.
컴퓨터의 능력이, 예전에는 개별적인 전자 컴포넌트를 요구했던 오락 장르(entertainment genre)로 확장됨에 따라, 향상된 효율 및 사용자 친숙도가 바람직하다. 하나의 해결책은 Microsoft's® DirectShow®인데, 이는 로컬 파일 또는 인터넷 서버로부터 멀티미디어 스트림의 재생, 장치들로부터 멀티미디어 스트림의 캡처(capture) 및 멀티미디어 스트림의 형식 변환을 제공한다. DirectShow®는 Windows Media Audio, Windows Media Video, MPEG, Apple® QuickTime®, Audio-Video Interleaved(AVI) 및 WAV와 같은 파일 타입의 비디오 및 오디오 컨텐츠의 재생을 가능하게 한다. DirectShow®는 플러거블 필터 컴포넌트(pluggable filter component)의 시스템을 포함한다. 필터들은 DirectShow® 인터페이스를 지원하고, 데이터를 판독, 복사, 변경 및 파일에 기록함으로써 데이터의 스트림 상에서 동작할 수 있는 개체들이다. 필터들의 기본 유형은 디스크 상의 파일, 위성 공급(satellite feed), 인터넷 서버 또는 VCR과 같은 일부 소스로부터 데이터를 획득하고, 데이터를 필터들의 접속(connection of filter)인 필터 그래프(filter graph)에 전달하는(introduce) 소스 필터를 포함한다. 필터 그래프는 데이터를 수신하고 그 데이터를 전송하는 소스 필터, 데이터 및 싱크(sync)의 형식을 변환하는 변환 필터(transform filter) 및 데이터를 디스플레이 장치로 렌더링하는(render) 것과 같이 데이터를 렌더링하는 렌더링 필터(rendering filter)를 제공한다. 또한, 데이터는 미디어를 수용하는 임의의 위치로 렌더링될 수 있다. DirecShow®에 포함된 다른 유형의 필터들은 데이터의 유형을 변화시키지 않고 효과를 추가하는 효과 필터(effect filter) 및 소스의 형식을 알아내어 정확한 바이트를 판독하고, 시간 소인(time stamp)을 생성하며, 탐색(seek)을 수행하는 방법을 알고 있는 파서 필터(parser filter)를 포함한다.
따라서, 모든 데이터는 다량의 제어 정보와 함께 필터들 간에 전달된다. 필터들이 핀(pin)을 사용하여 접속된 경우, 필터 그래프가 생성된다. 필터 그래프 내의 데이터 흐름 및 접속들을 제어하기 위하여, DirectShow®는 필터 그래프 관리자(filter graph manager)를 포함한다. 필터 그래프 관리자는 필터들이 적절한 순서로 접속되어 있음을 확인하는 것을 돕지만, 데이터 및 많은 제어가 필터 그래프 관리자를 통과하지 않는다. 필터들은 적절히 링크되어야한다. 예컨대, 필터 그래프 관리자는 렌더링 구성을 찾아서, 이용 가능한 필터들의 유형을 결정하고, 주어진 데이터 타입을 위하여 적절한 순서로 필터들을 링크시키며, 적절한 렌더링 필터를 제공해야 한다.
필터들이 다량의 프로그램 재사용을 가능하게 하는 반면, 필터들의 사용은 또한 몇몇 예상하지 못한 문제를 발생시킨다. 필터로 인한 문제들 중의 하나는 생겨난 필터들을 위한 다수의 API들이다. 본질적으로, 각각의 필터는 개별적인 API를 갖는다. 따라서 일정한 필터는 자신이 부착될 모든 필터를 위한 API에 인터페이스할 수 있어야 한다. 또한, 필터의 사용은 확실치 않은 일정한 필터를 종료시키는 문제를 발생시킨다. 그래프 내의 일정한 필터가 종료된 경우, 종료된 필터와 인터페이스하는 임의의 필터는 상이한 연관 인터페이스(associated interface)를 요구한다. 일반적으로, 인터페이스가 소실되는 경우에 필터의 상태를 모를 수 있으므로, 인터페이스의 소실을 말끔하게 처리하도록 필터를 프로그래밍하는 것은 어렵다. 그러므로, 인터페이스의 소실은 필터 내에서 예상하지 못한 동작 및 극단적으로는 오동작 프로그램(ill behaved program)을 초래하는 경향이 있다. 더욱이, DirectShow® 내의 전체적인 제어는 두 블록 사이에 분배되어 있다. 필터 관리자가 필터들의 초기화 및 제거를 제어하는 동안 필터들 간의 인터페이스가 데이터 흐름을 제어한다. 블록들 간의 경계에 걸치는 일부 제어 함수가 필수 불가결하게 존재하므로, 이러한 방식의 제어권 분배는 소프트웨어 디자인을 성가시게 만든다. DirectShow의 다른 문제는 필터들이 미디어 형식 협상(media format negotiation) 및 버퍼 관리 기능의 의무를 부담해야 한다는 점이다. 필터들은 이러한 업무를 달성하기 위하여 다른 필터들과 통신한다. 필터들에 대한 종속성은 DirectShow 상의 애플리케이션 개발물들(application buildings)에 필터로 프로그램될 수 있는 버그 및 비효율성이 존재하기 쉽도록 한다. 그러므로, 서툴게 작성된 필터는 필터 그래프 및 필터 그래프와 연관된 애플리케이션을 쉽게 망칠 수 있다.
DirectShow® 아키텍쳐의 문제들을 처리해야 할 필요성이 존재한다. 특히, 멀티미디어 데이터의 프로세싱에 대한 제어를 향상시키고 멀티미디어 구성 요소들 간의 통신을 위한 필터들에 대한 종속성을 처리해야할 필요성이 존재한다.
따라서, 멀티미디어 데이터를 처리하는 시스템들 및 방법들은 데이터 처리 함수(data handling functions)들로부터 제어 함수들(control functions)을 분리함으로써, 멀티미디어 스트림의 효율적인 처리를 제공한다. 본 방법은 토폴로지 생성 요소(topology generation element) 내에서 하나 이상의 멀티미디어 구성 요소 사이에 접속 토폴로지의 생성을 제공하는데, 토폴로지는 한 세트의 입력 멀티미디어 스트림, 입력 멀티미디어 스트림을 위한 하나 이상의 소스, 멀티미디어 데이터 상에서 수행할 작업의 시퀀스 및 한 세트의 출력 멀티미디어 스트림을 기술한다. 더욱이, 본 방법은 미디어 프로세서로 토폴로지를 전송하고 토폴로지에 따라 데이터를 전달 -전달은 미디어 프로세서에 의해 통제됨- 하는 기능을 제공한다. 토폴로지 로더(topology loader) 및 애플리케이션이 될 수 있는 토폴로지 생성 요소는 미디어 프로세서에 의해 통제되는 범위 외부에서 수행된다. 미디어 프로세서는 출력 멀티미디어 스트림의 세트를 생성하기 위한, 멀티미디어 데이터 상에서의 멀티미디어 작업들의 시퀀스 수행을 통제한다. 일 실시예에서, 멀티미디어 컴포넌트들은 소프트웨어 개체들(software objects)이다.
다른 실시예는 미디어 프로세서가 활성인 동안, 미디어 프로세서에 의해 사용 중인 제1 토폴로지를 변경하기 위한 방법을 제공한다. 본 방법에 따르면, 미디어 프로세서는 미디어 프로세서의 현재 상태를 보존하고, 제1 토폴로지를 제2 토폴로지로 변환하기 위한 명령어들을 수신하며, 명령어들에 따라 제1 토폴로지를 제2 토폴로지로 갱신한다. 명령어들은 제1 토폴로지 및 제2 토폴로지 사이의 차이를 포함할 수 있다. 제1 토폴로지를 제2 토폴로지로 갱신한 후에, 미디어 프로세서는 제1 토폴로지를 제2 토폴로지로 갱신한 후 인터페이스 활동을 재개하고, 메지시를 애플리케이션에 송신한다. 토폴로지 변경 전에, 미디어 프로세서는 메시지 호출(message call)을 허용하도록 구성될 수 있다. 제1 토폴로지를 변경하는 프로세스를 초기화시키기 위한, 외부 소스로부터의 메시지를 통해 제1 토폴로지를 변환하기 위한 명령어들이 수신될 수 있다.
다른 실시예는 멀티미디어 데이터의 하나 이상의 스트림 상에서 멀티미디어 작업들의 시퀀스를 수행하기 위하여 한 세트의 멀티미디어 구성요소들을 어떻게 사용할 것인지 결정하는 방법에 관한 것이다. 이 방법은 이용 가능한 샘플 데이터를 위해 종전 구성요소들을 질의함으로써 멀티미디어 컴포넌트의 사용이 결정된다는 점에서 재귀적(recursive)이다. 이 방법은 싱크 장치의 입력에 접속된 출력들을 갖는 하나 이상의 멀티미디어 컴포넌트들을 위치시키는 단계, 샘플이 이용 가능한지 판단하기 위하여 멀티미디어 컴포넌트들에 질의하는 단계를 포함하는데, 질의는 샘플이 이용 가능하지 않다면 멀티미디어 컴포넌트들로의 입력들을 검사하는 단계를 포함할 수 있다. 입력들이 이용 가능한 샘플들을 갖고 있지 않다면, 멀티미디어 컴포넌트들에 샘플을 공급하는 미디어 소스를 검사한다. 미디어 소스가 이용 가능한 샘플을 갖고 있지 않다면, 이 방법은 파일 함수(file function)의 종료를 수행하고 에러 조건(error condition)을 선언할 것을 규정한다. 샘플이 이용 가능하다면, 이 방법은 샘플을 멀티미디어 컴포넌트들의 다음 멀티미디어 컴포넌트로 이동시키는 것을 규정한다.
다른 실시예는 "스크러빙(scrubbing)"이라고 불리는, 미디어 스트림의 섹션을 검색(retrieving)하기 위한 방법에 관한 것이다. 이 방법은 미디어 스트림의 섹션을 캐싱하는 단계를 포함한다. 미디어 스트림의 캐싱된 섹션은 미디어 스트림의 프리젠테이션 포인트(presentation point)를 포함할 수 있다. 이 방법은 미디어 스트림의 캐싱된 섹션을 검색하기 위하여, 외부 소스로부터 미디어 프로세서로의 요청을 수신하는 단계 및 미디어 스트림의 섹션이 캐싱되었는지 식별하기 위하여 탐색하는 단계를 규정한다. 미디어 스트림의 섹션이 캐싱되었다면, 이 방법은 요청된 캐싱 섹션(cached section)을 전달하는 단계를 규정한다. 캐싱은 애플리케이션의 (캐싱할 것인지 아닌지를 포함할 수 있는) 사용자 설정들(user settings), 다수의 프레임들, 캐싱된 섹션에 포함될 다수의 샘플들에 따른다. 일 실시예에서, 캐싱된 섹션은 연속적인 비디오 데이터(continuous video data)이다.
멀티미디어 데이터를 처리하는 시스템들 및 방법들은 데이터 처리 함수들로부터 제어 함수들을 분리함으로써, 멀티미디어 스트림의 효율적인 처리를 제공한다. 본 방법은 토폴로지 생성 요소 내에서 하나 이상의 멀티미디어 구성 요소 사이에 접속 토폴로지의 생성을 제공하는데, 토폴로지는 한 세트의 입력 멀티미디어 스트림, 입력 멀티미디어 스트림을 위한 하나 이상의 소스, 멀티미디어 데이터 상에서 수행할 작업의 시퀀스 및 한 세트의 출력 멀티미디어 스트림을 기술한다. 더욱이, 본 방법은 미디어 프로세서로 토폴로지를 전송하고 토폴로지에 따라 데이터를 전달 -전달은 미디어 프로세서에 의해 통제됨- 하는 기능을 제공한다. 토폴로지 로더 및 애플리케이션이 될 수 있는 토폴로지 생성 요소는 미디어 프로세서에 의해 통제되는 범위 외부에서 수행된다. 미디어 프로세서는 출력 멀티미디어 스트림의 세트를 생성하기 위한, 멀티미디어 데이터 상에서의 멀티미디어 작업들의 시퀀스 수행을 통제한다. 일 실시예에서, 멀티미디어 컴포넌트들은 소프트웨어 개체들이다.
도 1은 본 발명이 구현될 수 있는, 예시적인 분산 컴퓨팅 시스템을 개략적으로 도시하는 블록도.
도 2는 본 발명의 실시예들에 따른, 미디어 기반 시스템의 블록도.
도 3은 본 발명의 실시예들에 따른, DVD를 재생하기 위해 요구되는 미디어 엔진 내의 데이터 흐름(data flow)의 예에 대한 흐름도.
도 4는 본 발명의 실시예들에 따른, 데이터 흐름이 미디어 프로세서 내에서 구현되는 방법을 도시하는 블록도.
도 5는 본 발명의 실시예들에 따른, 미디어 프로세서 내의 동적 토폴로지 변경(dynamic topology change)의 흐름도.
도 6은 본 발명의 실시예들에 따른, 스크러빙(scrubbing)의 프로세스를 설명하는 흐름도.
도 1에 따르면, 발명이 구현될 수 있는 예시적인 컴퓨팅 장치(100)가 도시된다. 컴퓨팅 장치(100)는 적절한 컴퓨팅 장치의 일 예시일 뿐이고, 본 발명의 기능 또는 사용의 범위에 어떠한 제한을 제시하려는 의도가 아니다. 예컨대, 예시적인 컴퓨팅 장치(100)는 도 1에 도시된 컴퓨팅 장치들(100 내지 170) 중의 어떠한 것과도 동일하지 않다. 예시적인 컴퓨팅 장치(100)는 하나의 물리적인 컴퓨팅 구조가 다수의 구조들로 인식되도록 이하에서 기술되는 동작들을 수행하는 것을 허용하는 메모리 파티션, 가상 머신(virtual machine), 유사한 프로그래밍 기술들을 통해서와 같이 하나 이상의 컴퓨팅 장치들(100 내지 170)을 구현할 수 있다.
본 발명은 컴퓨터에 의해 실행되는, 프로그램 모듈들과 같은 컴퓨터 실행 가능 명령어들과 관련하여 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 작업을 수행하거나, 특정 추상 데이터 타입(abstract data type)을 구현하는 루틴, 프로그램, 개체, 컴포넌트, 데이터 구조 등을 포함한다. 분산 컴퓨팅 환경에서, 통신 네트워크를 통해 링크된 원격 프로세싱 장치들에 의해 작업이 수행될 수 있다. 분산 컴퓨팅 환경에서, 메모리 저장 장치를 포함하는 로컬 및 원격 컴퓨터 저장 매체 모두에 프로그램 모듈들이 위치할 수 있다.
컴퓨터 장치(100)의 컴포넌트들은 시스템 메모리를 포함하는 다양한 시스템 컴포넌트들을 프로세싱 유닛(120)에 연결시키는 시스템 버스(121), 프로세싱 유닛(120) 및 시스템 메모리(130)를 포함할 수 있으나, 이에 제한되지 않는다. 시스템 버스(121)는 메모리 버스 또는 메모리 제어기, 주변 버스(peripheral bus) 및 다양한 버스 아키텍쳐를 사용하는 로컬 버스를 포함하는 여러 타입의 버스 구조 중의 임의의 것이 될 수 있다. 제한이 아닌 예시로서, 이러한 아키텍쳐들은 ISA(Industrial Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Associate) 로컬 버스 및 메짜닌(Mezzanine) 버스로도 알려진 PCI(Peripherial Component Interconnect) 버스를 포함한다.
전형적으로, 컴퓨팅 장치(100)는 다양한 컴퓨터 판독 가능 기록 매체를 포함한다. 컴퓨터 판독 가능 기록 매체는 컴퓨팅 장치(100)에 의해 액세스될 수 있고, 휘발성 및 비휘발성 매체, 분리형(removable) 및 고정형(non-removable) 매체 모두를 포함하는 임의의 이용 가능한 매체가 될 수 있다. 제한이 아닌 예시로서, 컴퓨터 판독 가능 기록 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 고정형 매체 모두를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(Digital Versatile Disks) 또는 다른 광 디스크 저장, 자기 카세트, 자기 테이프, 자기 디스크 저장 또는 다른 자기 저장 장치들, 또는 희망하는 정보를 저장하기 위하여 사용될 수 있고, 컴퓨팅 장치(100)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이에 제한되지 않는다. 전형적으로, 통신 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 반송파나 다른 전송 메커니즘과 같은 변조된 데이터 신호(modulated data signal) 형태의 다른 데이터를 포함하고, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 하나 이상의 자신의 특징 세트(characteristics set)가 정보를 신호로 인코딩하기 위한 방식으로 설정되거나 변경된 신호를 의미한다. 제한이 아닌 예시로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속(direct-wired connection)과 같은 유선 매체 및 음파, RF, 자외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 이상의 것들의 임의의 조합들 역시 컴퓨터 판독 가능 기록 매체의 범위에 포함되어야 한다.
시스템 메모리(130)는 ROM(Read Only Memory; 131) 및 RAM(Random Access Memory; 132)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 기동(start-up) 동안처럼, 컴퓨터(110) 내에서 요소들 간의 정보 전송을 돕는 기본 루틴들을 포함하는 BIOS(Basic Input/Output System; 133)는 전형적으로 ROM(131)에 저장된다. 통상적으로, RAM(132)은 즉시 액세스 가능하고/하거나 프로세싱 유닛(120)에 의해 현재 동작이 수행되고 있는 프로그램 모듈 및/또는 데이터를 포함한다. 제한이 아닌 예시로서, 도 1은 운영 시스템(134), 애플리케이션 프로그램들(135), 다른 프로그램 모듈들(136) 및 프로그램 데이터(137)를 도시한다.
컴퓨팅 장치(100)는 또한 다른 분리형/고정형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 1은 고정형, 비휘발성 자기 매체로부터 판독하거나 그것으로 기록하는 하드디스크 드라이브(141), 분리형, 비휘발성 자기 디스크(152)로부터 판독하거나 그것으로 기록하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 다른 광 매체와 같은 분리형, 비휘발성 광 디스크(156)로부터 판독하거나 그것으로 기록하는 광 디스크 드라이브(155)를 도시한다. 예시적인 운영 환경에서 사용될 수 있는 다른 분리형/고정형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, 디지털 다용도 디스크(digital versatile disk), 디지털 비디오 테이프, 고체 상태 RAM(solid state RAM), 고체 상태 ROM 등을 포함하나 이에 한정되지 않는다. 하드디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 고정형 메모리 인터페이스를 통해 시스템 버스(121)로 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 통상적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)로 접속된다.
앞서 논의되고 도 1에서 도시된 드라이브들 및 이들의 연관된 컴퓨터 저장 매체는 컴퓨팅 장치(100)를 위하여 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 다른 데이터의 저장을 제공한다. 도 1에서, 예컨대 하드디스크 드라이브(141)는 운영 시스템(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146) 및 프로그램 데이터(147)를 저장하는 것으로서 도시된다. 이들 컴포넌트가 운영 시스템(134), 애플리케이션 프로그램(135), 다른 프로그램 모듈(136) 및 프로그램 데이터(137)와 같을 수도 있고 다를 수도 있다는 점에 주목해야 한다. 운영 시스템(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146) 및 프로그램 데이터(147)는 최소한 이들이 상이한 사본들(copies)이라는 점을 나타내기 위해 상이한 번호가 부여된다. 사용자는 키보드(162), 및 통상적으로 마우스, 트랙볼 또는 터치 패드로 불리는 위치 지정 장치(pointing device; 161)와 같은 입력 장치들을 통해 컴퓨팅 장치(100)로 명령 및 정보를 입력할 수 있다. 다른 입력 장치(도시되지 않음)들은 마이크, 조이스틱, 게임 패드, 위성 접시, 스캐너 등을 포함할 수 있다. 이러한 그리고 다른 입력 장치들은 시스템 버스로 연결된 사용자 입력 인터페이스(160)를 통해 프로세싱 유닛(120)과 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus)와 같은 다른 인터페이스 및 버스 구조에 의해 연결될 수도 있다. 또한, 모니터(191) 또는 다른 타입의 디스플레이 장치가 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(121)로 연결될 수 있다. 모니터(191) 외에도, 컴퓨터는 출력 주변장치 인터페이스(195)를 통해 접속될 수 있는 스피커(197) 및 프린터(196)와 같은 다른 주변 출력 장치들을 포함할 수 있다.
컴퓨팅 장치(100)는 하나 이상의 원격 컴퓨터로의 논리적인 접속을 사용하는, 도 1에서 도시된 것과 같은 네트워크 환경에서 동작할 수 있다. 도 1은 원격 컴퓨팅 장치(180)로의 일반적인 네트워크 접속(171)을 도시한다. 일반적인 네트워크 접속(171)은 LAN(Local Area Network), WAN(Wide Area Network), 이더넷 프로토콜 또는 토큰 링 프로토콜에 따르는 네트워크, 또는 인터넷 또는 월드 와이드 웹(World Wide Web)과 같은 다른 논리적이거나 물리적인 네트워크를 포함하는 다양하고 상이한 타입의 네트워크 접속 중의 임의의 것이 될 수 있다.
LAN 네트워킹 환경에서 사용되는 경우, 컴퓨팅 장치(100)는 네트워크 인터페이스 또는 어댑터(170)를 통해 일반적인 네트워크 접속(171)으로 접속되는데, 이는 네트워크 인터페이스 카드, 모뎀 또는 유사한 네트워킹 장치가 될 수 있다. 네트워크 환경에서, 컴퓨팅 장치(100)에 대하여 기술된 프로그램 모듈들 또는 그의 일부는 원격 메모리 저장 장치에 저장될 수 있다. 당업자는 도시된 네트워크 접속들이 예시적이고, 컴퓨터들 간에 통신 링크를 설정하는 다른 수단이 사용될 수 있음을 인식할 것이다.
이하의 설명에서, 다르게 표시되지 않는다면, 하나 이상의 컴퓨팅 장치에의해 수행되는 작업들의 상징적인 표시 및 동작들을 참고하여 본 발명이 기술될 것이다. 그러므로, 때때로 컴퓨터에 의해 실행되는 것으로 언급되는 작업 및 동작들은 컴퓨팅 장치의 프로세싱 유닛에 의한, 구조화된 형태의 데이터를 표시하는 전자 신호들의 조작을 포함한다. 이러한 조작은 데이터를 변형하고, 컴퓨팅 장치의 메모리 시스템 내의 위치에 이를 유지하는데, 이는 당업자가 충분히 이해할 수 있는 방식으로 컴퓨팅 장치의 동작을 재구성하거나 또는 변경한다. 데이터가 유지되는 데이터 구조는, 데이터의 형식에 의해 정의되는 특정한 특성을 갖는 메모리의 물리적인 위치이다. 그러나, 본 발명이 전술한 환경에서 기술되고 있지만, 이하에서 기술된 여러 동작 및 작업이 하드웨어에서도 구현될 수 있음을 당업자가 인식하는 바와 같이, 이는 본 발명을 제한하려는 의도가 아니다.
도 2에 있어서, 블록도는 미디어 기반 시스템(media foundation system; 200)을 도시한다. 핵심 계층(core layer; 211)은 미디어 소스(210), 변환(208) 및 미디어 싱크(media sink; 230)를 포함한다. 미디어 기반 시스템(200)은 미디어 스트림을 송신 및 수신하기 위한 애플리케이션(202)과 연결되어 도시된다. 제어 계층(control layer; 201)은 미디어 엔진(media engine; 260), 미디어 세션(media session; 240), 미디어 프로세서(220) 및 토폴로지 로더(topology loader; 250)를 포함한다. 데이터는 미디어 소스(210)에서 시작하여 미디어 세션(240)으로, 그리고 미디어 프로세서(220)로 진행됨으로써, 미디어 기반(200)을 통해 흐르게 된다. 데이터는 미디어 프로세서(220)로부터 변환(208)으로 흘러들어간 후에 한번 이상 미디어 프로세서로 돌아가게 된다. 그 후, 데이터는 미디어 프로세서(220)로부터 미디어 세션(240)으로, 그리고 스트림 싱크(stream sink; 212)로 흘러간다. 미디어 엔진(260)은 애플리케이션(202)으로의 인터페이스에 제어를 제공하고, 제어 계층(201)의 전체적인 제어를 제공하며, 토폴로지 로더(250)는 토폴로지에서 규정된 이벤트들이 발생하는 것을 보증한다. 미디어 기반 시스템(200)은 스트리밍 미디어 개체(streaming media object)들을 접속시키기 위한 레이아웃(layout) 및 인터페이스들을 제공한다.
핵심 계층은 미디어 소스 컴포넌트(210) 및 미디어 싱크 컴포넌트(230)를 포함한다. 또한, 미디어 소스(210)의 제어 하에서 동작하는 스트림 소스(214) 및 미디어 싱크(230)의 제어 하에서 동작하는 스트림 싱크(212)가 포함된다. 스트림 소스(214)는 멀티미디어 데이터를 저장 또는 획득 장치들(capture devices)로부터 제어 계층(201)으로 전달하고, 스트림 싱크(212)는 멀티미디어 데이터를 미디어 엔진(260)으로부터 렌더링(rendering) 또는 저장 장치들(도시되지 않음)로 전달한다. 미디어 소스 컴포넌트(210)는 스트림 소스들(214)에 대한 제어를 제공하는 상태 기계(state machine)들을 구현한다. 미디어 싱크 컴포넌트(230)는 스트림 싱크들(212)에 대한 제어를 제공하는 상태 기계들을 구현한다. 각각의 경우에, 상태 프로세싱 및 데이터 이동은 분리된다.
미디어 소스(210), 미디어 싱크(230) 및 변환들(208)은 스트림 소스들(214) 및 스트림 싱크(212)들과 함께 핵심 계층(211)의 일부를 구성하는 개체들을 포함한다. 이러한 컴포넌트들은 소정의 함수를 구현하는 프로그램 개체(programmatic object)들이다. 미디어 소스(210) 및 스트림 소스들(214)은 멀티미디어 데이터의 획득 또는 검색(retrieval) 중의 하나를 제공하고, 이러한 데이터를 미디어 세션(240)에 제공한다. 데이터의 소스들은 하드 드라이브, CD 또는 DVD와 같은 디스크, 인터넷, RAM, 비디오 RAM, 비디오 카메라, 스캐너, 스틸 영상 카메라(still image camera) 및 마이크를 포함하지만, 이에 제한되지는 않는다. 미디어 싱크(230)는 스트림 싱크들(212)에서의 데이터의 전달을 제어하는 개체들을 포함한다. 스트림 싱크들(212)은 저장 및 렌더링을 위하여 제어 계층(201)으로부터 데이터를 수용하는 개체들로 구성된다. 데이터의 싱크들은 하드 드라이브, 기록 가능 CD 또는 기록 가능 DVD, 인터넷과 같은 컴퓨터 네트워크를 통한 브로드캐스트(broadcast), 프린터, 모니터와 같은 디스플레이 장치 및 스피커를 포함하지만, 이에 제한되지는 않는다. 미디어 소스(210) 및 미디어 싱크(230) 모두를 위한 데이터는 이더넷(Ethernet), 무선 네트워크, 디지털화(digitization) 이전의 아날로그 케이블, USB, IEEE 1384, 병렬 포트, 직렬 포트 및 디스크 인터페이스를 포함하는(이에 제한되지 않음) 많은 매체들을 통해 전송될 수 있다.
변환(208)은 데이터를 조작하는 개체들을 포함한다. 이러한 변환들은 인코더, 디코더, 분할기(splitter), 멀티플렉서(multiplexer), 잔향(reverb)과 같은 효과를 부가하기 위한 저음(bass) 및 진동(tremble) 제어와 같은 오디오 프로세싱, 컬러 마스크 조정(adjusting color mask), 이미지 선명화(sharpening) 및 콘트라스트(contrast) 또는 밝기 제어와 같은 비디오 프로세싱을 포함할 수 있다. 인코더 및 디코더는 오디오, 비디오 및 영상 데이터 모두를 처리한다. 비디오 데이터 타입은 MPEG, Apple Quicktime®, AVI와 H.263 및 WMV(Windows Media Video)를 포함할 수 있다. 비디오 표준들 중의 다수가, 이러한 표준들이 오디오 및 비디오 모두를 전송하기 위한 예비(provision)를 갖는다는 점에서 이상적인 멀티미디어 표준(true multimedia standard)들이다. 영상 데이터 형식은 JPEG, GIF, Fax 및 Tiff를 포함한다. 오디오 표준들은 CD 재생을 위한 표준 및 WMA(Windows Media Audio) 뿐만 아니라, MP3, PCM, ADPCM을 포함할 수 있다. 변환(208)은 데이터를 하나의 형식으로부터 다른 형식으로 변환하기 위하여 사용될 수 있다. 예컨대, 변환(208)은 JPEG 영상을 모니터 상에서 디스플레이하기에 적합한 형식으로 변환할 수 있다.
도 3에 있어서, 전형적인 멀티미디어 프로세스의 흐름도를 보여준다. 사용자가 DVD를 시청하기를 희망한다고 가정한다. 사용자가 DVD를 시청할 수 있도록 애플리케이션이 시작될 것이다. 애플리케이션은 사용자가 재생, 정지, 중단, 고속 전진 및 되감기와 같은 기능들을 수행할 수 있도록 하는 그래픽 사용자 인터페이스(graphical user interface; GUI)를 갖는다. 블록(302)에서, 사용자는 재생 버튼을 선택하고, 애플리케이션은 미디어 기반의 미디어 엔진 컴포넌트로 메시지를 송신한다. 메시지는 애플리케이션이 DVD를 시청하기를 희망한다는 정보를 포함한다. 블록(304)에서, 미디어 엔진은 미디어 세션 및 토폴로지 로더로 메시지들을 송신하여 이러한 블록들이 DVD의 재생을 시작하도록 명령한다. 블록(306)에서, 토폴로지 로더는 토폴로지를 설정한다. 토폴로지는 데이터 스트림이 미디어 및 스트림 소스들, 변환들과 미디어 및 스트림 싱크들을 통과하는 경로를 제공한다. 블록(308)에서, 토폴로지 로더는 이러한 토폴로지를 미디어 프로세서 전달할 것이다. 미디어 프로세서는 토폴로지를 설정하고 구현한다. 블록(310)에서, 미디어 프로세서는 메시지들을 핵심 계층 컴포넌트들로 송신하여 토폴로지 로더에 의해 호출되는(called out) 개체들을 초기화할 것이다. 적절한 순서로 핵심 계층 개체들을 호출하고 개체들 간에 데이터를 전달하는 것에 부가하여, 요구되는 전송률로 오디오 및 비디오가 동기화 및 렌더링되도록 데이터 전송률(data rate)이 제어된다. 데이터 전송률은 미디어 세션에서 결정될 수 있다. 블록(312)에서, 미디어 세션은 요구되는 전송률을 지원할 수 있는가를 각각의 개체들에게 질의하여(query), 미디어 프로세서로 전송률 정보와 함께 메시지를 넘겨준다. 블록(314)에서, 미디어 프로세서는 핵심 계층의 개체(보통은 미디어 싱크)를 판단하는 전송률의 클록 속도(clock rate)를 판단하여, 클록 속도를 설정한다. 블록(316)에서, 미디어 프로세서는 핵심 계층(core level)을 호출하여 토폴로지에 의해 요구되는 바에 따라 개체들 간에 데이터를 전달한다. 궁극적으로, 데이터는 미디어 싱크들에 의해 스피커 및 모니터로 렌더링된다.
미디어 프로세서는 토폴로지에 의해 기술된 바에 따라 데이터 흐름(data flow)을 수행하는 개체이다. 미디어 프로세서는 데이터 흐름을 기술하는 토폴로지로 초기화되고, 미디어 소스 인터페이스를 통해 사용자에게 자신을 노출시킨다. 그러므로, 일단 구성되면, 실질적으로 미디어 프로세서는 사용자에게 미디어 소스처럼 보인다. 미디어 프로세서는 토폴로지에 기초하여 다수의 미디어 스트림들을 노출한다. 토폴로지에는 각각의 출력 노드에 대한 하나의 미디어 스트림이 존재할 것이다.
도 4는 토폴로지를 도시한다. 데이터 흐름은 사용자 호출(user call)에 의해 구동되어, 미디어 프로세서의 미디어 스트림들 중의 하나 상의 샘플을 가져온다. 도 4의 상위 경로에 대해 논의한다. 토폴로지 내의 출력 개체(output object)(싱크 개체(412))로 시작하여, 데이터를 생성하는 개체들의 리스트를 통해 반복적으로 진행함으로써 데이터 흐름이 동작한다. 도 4의 상위 경로에 있는 프로세스는 싱크 개체(412)로 시작한다. 입력(416)에 접속된 유일한 출력 노드는 변환 개체(408)에 접속된 출력(418)이다. 변환 개체(408)가 이용 가능한 샘플을 갖고 있다면, 미디어 프로세서(220)는 샘플을 판독하여, 그 샘플을 싱크 개체(412)에 기록한다. 변환 개체(408)가 이용 가능한 샘플을 갖고 있지 않다면, 미디어 프로세서(220)는 변환 개체(404)에 대한 출력(422)에 접속된, 변환 개체(408)의 입력(420)을 확인한다. 그 후, 샘플을 위해 변환 개체(404)에 질의한다. 샘플이 이용 가능하다면, 그 샘플은 미디어 프로세서(220)에 의해 판독되고, 변환 개체(408)에 기록된다. 이용 가능한 샘플이 없다면, 미디어 프로세서(220)는 다시 왼쪽으로 하나의 노드만큼 이동하여 이용 가능한 샘플을 위해 미디어 스트림 개체(403)에 질의한다. 미디어 스트림 개체(403)가 소스 개체(402)를 통해 적재된다. 샘플이 미디어 스트림 개체(403)로부터 이용 가능하다면, 미디어 스트림 개체(403)로부터 변환 개체(404)로 샘플이 검색된다. 어떠한 샘플도 발견되지 않으면, 미디어 프로세스는 미디어 스트림 개체(403)가 소스를 판독하도록 요청할 것이다. 유효한 샘플이 발견되어 다음 블록으로 전달된 경우, 프로세스가 시작한다(start over). 프로세스는 데이터가 위치했던 개체와 동작함으로써 완료된다. 변환 개체(404)는 데이터에 동작하고, 변환된 데이터를 변환 개체(408)로 전달하여 데이터에 동작하며, 변환된 데이터를 싱크 개체(412)에 전달하여 출력에서 샘플을 생성하는 프로세스를 완료한다. 일 실시예에서, 미디어 프로세스는 다른 개체들로 출력을 갖는 리스트 개체(list object)를 갖는다. 이러한 리스트를 이용하여, 미디어 프로세서는 출력 개체를 확인하고, 미디어 프로세서가 어떠한 개체로부터 미디어 데이터를 검색할 필요가 있는지 판단할 수 있다.
일 실시예에서, 리스트는 노드의 타입을 추적하여 개체들 및 개체에 대한 다른 정보를 유지한다. 미디어 프로세서의 요청에 따라 각각의 개체 타입은 , 데이터를 생성하는 상이한 방식을 갖는다. 변환 노드들은 변환 개체를 포함하는데, 변환 개체는 입력 미디어 샘플들을 제공하고 출력 미디어 샘플들을 생성하기 위해 사용되는 한 세트의 호출을 갖는다. T형 노드(tee node)들은 필요에 따라 샘플들을 복제하기 위한 표시를 미디어 프로세서에 제공한다. T형 노드들에 대해 언급하기 전에 이들에 대해 먼저 기술되어야 한다. 소스 노드들은, 미디어 프로세서가 스트림에게 데이터를 요청하는 방법인 비동기식 호출(asynchronous call)을 제공하는 미디어 스트림을 갖고, 스트림은 후에 데이터가 이용 가능한 경우에 데이터를 제공한다.
실시예들은 미디어 프로세서(220)를 사용하는 데이터 흐름에 관한 것이다. 일 실시예에서, 데이터 흐름은 비동기식이다. 즉, 사용자는 일정한 미디어 스트림을 위한 데이터를 생성하기 위하여 호출하고, 미디어 프로세서(220)는 데이터를 생성하여, 사용자에게 데이터가 이용 가능함을 통지한다. 일 실시예에서, 토폴로지에 의해 참조되는 컴포넌트들은 서로 호출하지 않는다. 오히려, 미디어 프로세서(220)가 모든 통신에 대한 책임을 진다. 중앙 집중 통신 방법(centrally located communication method)을 가짐으로써, 일관된 데이터 흐름이 존재하고, 컴포넌트들 간에 더 큰 상호 운용성(interoperability)이 존재한다.
일 실시예에서, 미디어 프로세서(220)는 데이터 흐름의 각 측면을 처리하지는 않는다. 예컨대, 일 실시예에서, 미디어 프로세서(220)는 미디어 샘플들에 대한 제어권을 갖지 않는다.
전체적인 미디어 기반 아키텍쳐에 있어서, 미디어 프로세서는 통상적으로 미디어 엔진과 연관하여 사용된다. 미디어 엔진(260)은, 도 2에 도시된 미디어 기반 아키텍쳐를 사용하는 경우에 애플리케이션(202)이 직접적으로 사용하는 컴포넌트이다. 미디어 엔진(260)은 데이터의 소스(일반적으로, 파일 이름, URL, 장치 또는 다수의 단순한 소스들을 지정하는 복잡한 구성) 및 데이터의 목적지(출력 멀티미디어 파일 또는 비디오 카드와 같은 렌더링 장치)를 지정하도록 애플리케이션(202)에 의해 구성될 수 있다. 미디어 엔진(260)은 런타임에 시작, 정지 등과 같은 명령을 통해 제어된다. 그러므로, 미디어 엔진(260)은 이러한 기능을 달성하기 위해 다른 미디어 기반 컴포넌트들을 사용하고, 멀티미디어 동작들을 수행하기 위하여 애플리케이션(202)이 사용하는 주요 개체가 된다. 미디어 프로세서(220)는 미디어 프로세싱 세션에 의해 직접적으로 제어될 수 있고, 토폴로지 로더(250)와 연관하여 사용될 수 있다. 미디어 프로세싱 세션은 미디어 소스(210), 미디어 프로세서(220), 미디어 싱크들(230) 및 토폴로지 로더(250)를 동작시키기 위하여 미디어 엔진(260)이 사용하는 개체이다.
일 실시예에서, 미디어 프로세서(220)는 T형 개체들을 지원하고, 하나보다 많은 입력 또는 출력을 갖는 개체들을 변환한다. 예컨대, 전환(transition)은 일반적으로 변환 개체로 구현되고, 변환 개체는 두 개의 입력과 하나의 출력을 갖는다.
노드가 하나보다 많은 입력을 갖는 경우에, 미디어 프로세서(220)는 다음의 방법을 수행한다. 변환을 위한 입력 데이터를 생성하려는 경우, 미디어 프로세서(220)는 이전 미디어 샘플들의 시간 소인(timestamp)에 기초하여 입력들 중의 하나만을 선택하고, 그 입력에 대한 데이터를 생성한다. 미디어 프로세서(220)가 입력 샘플을 변환 개체에 제공할 때마다, 미디어 프로세서(220)는 변환을 위한 출력 데이터를 생성하려고 시도한다. 변환이 어떠한 데이터도 생성하지 않으면, 미디어 프로세서(220)는 변환 개체에 입력 샘플(이미 사용된 것과 동일한 입력일 수도 있음)을 제공한다.
노드가 하나보다 많은 출력을 갖는 경우에, 미디어 프로세서(220)는 출력들에 대한 더 많은 정보를 필요로 한다. 토폴로지 로더는, 주요(primary) 또는 폐기 가능(discardable) 중의 하나가 될 수 있는 출력의 특성들을 표시할 것이다.
주요 출력(primary output)은 입력 노드들로 전달되는 샘플들을 위한 주요 메모리 할당자(primary memory allocator)로 사용된다. 폐기 가능 출력(discardable output)들은 노드로 진입하는(go into) 모든 샘플들을 획득하는 것이 보장되지 않는다. 입력 샘플이 생성된 경우에 사용자가 그 출력에 대한 샘플을 요청하지 않았다면, 폐기 가능 출력은 단순히 그 샘플을 수신하지 않을 것이다. 폐기 가능 개념은 (인코더 애플리케이션에서 미리 보기(preview) 디스플레이와 같이) 프로세싱을 늦추기보다 데이터를 소실하는 것이 바람직한 경우에 유용한다.
멀티미디어 시스템의 중요한 기능은 실행 중에 멀티미디어 세션의 특성을 변경하는 능력이다. 예컨대, 재생 애플리케이션은 윈도우 모드(windowed mode)에서의 재생으로부터 전체 화면 모드(full screen mode)로 전환할 수 있을 것이다. 또는, 인코딩 애플리케이션은 하나의 카메라를 인코딩하는 것으로부터 다른 카메라로 전환할 수 있을 것이다. 개시된 미디어 기반 시스템은 토폴로지 내의 변경을 통해 이러한 기능들을 다룬다.
그러나, 일 실시예에서, 미디어 프로세서(220)는 토폴로지 자체를 변경하지 않는다. 토폴로지 변경들은 항상 다른 컴포넌트들에 의해 수행되고, 미디어 프로세서로 통신된다. 미디어 프로세서(220)가 미디어 세션(240)에 의해 제어되는 중이면, 미디어 세션(240)은 미디어 프로세서(220)를 위한 전체 토폴로지들을 생성하기 위하여 토폴로지 로더를 사용하고, 이러한 전체 토폴로지들을 미디어 프로세서로 통신해야할 책임을 진다. 그러나, 일 실시예에서, 미디어 프로세서의 임의의 직접 사용자(direct user)는 미디어 프로세서 상에서 토폴로지 변경들을 수행할 수 있다.
일 실시예에서, 토폴로지 변경들은 정적(static) 또는 동적(dynamic)이 될 수 있다. 정적 토폴로지 변경(static topology change)은 미디어 프로세서(220)가 데이터를 처리하지 않는 경우에 발생하는데, 기존 토폴로지를 신규 토폴로지로 완전 대치(full replacement)하는 것을 의미한다. 동적 토폴로지 변경은 미디어 프로세서가 실행 중인 경우에 발생하는데, 토폴로지의 일부를 변경되지 않은 채로 유지하고 토폴로지의 일부만을 변경할 수 있다.
동적 토폴로지 변경이 생성될 수 있는 여러 가지 메커니즘들이 존재한다. 제1 메커니즘은 생성된 미디어 소스이다. 이 경우에, 미디어 프로세서(220) 내부의 미디어 소스들 중의 하나가 일부 방식(미디어 스트림이 변경되고, 미디어 스트림이 종료되거나 새로운 미디어 스트림이 생성됨)으로 자신의 형식이 변경되었음을 탐지한다. 미디어 소스는 변경이 발생했음을 미디어 프로세서(220)에게 통지한다. 미디어 프로세서(220)는 처리를 위하여 사용자에게 이러한 통지를 전달하고, 데이터 프로세싱을 중단한다. 사용자는 새로운 토폴로지를 생성하고, 그것을 미디어 프로세서로 송신할 책임을 진다. 제2 메커니즘은 생성된 토폴로지이다. 이 경우에, 토폴로지 자신은 일정 시점에서 변경될 것이라는 정보를 포함한다. 하나 이상의 토폴로지 개체가 특성으로 설정된 만료 기간(expiration time)을 갖는다. 미디어 프로세서(220)가 만료 기간에 도달했음을 탐지한 경우, 사용자에게 통지하고 데이터 프로세싱을 중단한다. 최종 유형은 생성된 사용자(user generated)이다. 이 경우에, 사용자는, 미디어 프로세서(220)가 실행 중인 동안 미디어 프로세서(220) 상에 단순히 새로운 토폴로지를 설정한다. 모든 경우에, 미디어 프로세서(220)는 동일한 방식으로 토폴로지 변경에 반응한다.
도 5에 있어서, 동적 토폴로지 변경의 단계들이 흐름도로 도시된다. 블록(502)에서, 토폴로지 변경이 미디어 프로세서에게 요청된다. 블록(504)에서, 미디어 프로세서(220)는 우선 요구되는 사용자에게 (예컨대, 미디어 소스가 형식을 변경하였음)통지한다. 블록(506)에서, 미디어 프로세서(220)는 프로세싱을 중단하고, 새로운 토폴로지에 남아있을 임의의 노드들에서 프로세싱을 재개할 수 있도록 자신의 상태를 유지한다. 또한, 미디어 프로세서(220)는, 토폴로지 변경이 완료될 때까지 사용자에 의한 실행을 계속하려는 시도가 단순히 대기하도록 하는 상태를 유지시킨다. 블록(508)에서, 미디어 프로세서(220)는 새로운 토폴로지를 수신한다. 새로운 토폴로지는 토폴로지 로더 또는 애플리케이션으로부터 유래할 수 있다. 블록(510)에서, 미디어 프로세서(220)는 새로운 토폴로지와 일치하도록 자신의 내부 토폴로지를 갱신한다. 블록(512)에서, 미디어 프로세서(220)는 새로운 토폴로지가 위치하였음을 애플리케이션에게 알리고, 프로세싱을 재개한다.
미디어 프로세서(220)는 임의의 속도에서의 실행을 지원하도록 디자인되었다. 미디어 소스 인터페이스는 풀 인터페이스(pull interface)이다. 즉, 사용자는 최대한 빠르게, 샘플들을 풀링할(pull) 수 있다. 이러한 의미에서 미디어 프로세서(220)는 자동적으로 임의의 속도들을 지원한다. 그러나, 많은 경우에 속도를 알고 있으면, 미디어 소스들 또는 변환들이 최적 조건(optimization) 또는 향상된 동작을 갖는다. 그러므로, 사용자가 미디어 프로세서(220)에게 일정한 속도로 실행되도록 명시적으로 명령한 경우, 미디어 프로세서(220)는 속도 능력들(rate capabilities)을 결정하기 위하여 토폴로지 내의 미디어 소스들 및 변환들에 질의할 것이다. 주어진 속도가 모든 미디어 소스들 및 변환들에 의해 지원될 경우, 미디어 프로세서(220)는 미디어 소스들 및 변환 개체들이 자신들의 행동에 적절한 변경을 가할 수 있도록 모든 미디어 소스 개체들 및 변환 개체들의 속도를 설정할 것이다. 반대로 멀티미디어 스트림을 실행하는 것은 속도 변경의 특별한 경우이다.
스크러빙(scrubbing)은 멀티미디어 프리젠테이션 내에서 빠르게 검색(seek)하고, 그 위치에서 소수의 미디어 샘플들을 검색(retrieve)할 수 있는 것으로 정의된다. 멀티미디어 데이터 디코딩의 복잡성으로 인해, 스크러빙은 멀티미디어 프리젠테이션으로 검색하는 것보다 더욱 복잡하고, 너무 긴 시간이 걸린다. 이는 특히, 독립적으로 디코딩 가능한 키 프레임들 간에 큰 시간 지연(time delay)을 갖는 압축 비디오 데이터(compressed video data)에 대해 사실이다.
스크러빙을 최적화하기 위하여, 미디어 프로세서(220)는 일반적으로 프리젠테이션의 현재 위치 부근에서, 일정 양의 사전 디코딩된 샘플들(pre-decoded samples)의 캐싱(caching)을 가능하게 하는 로직을 갖는데, 이러한 사전 디코딩된 샘플들로의 탐색으로 인해 미디어 프로세서(220)가 시기적절한 방식으로 요구되는 샘플들을 생성하도록 하기 위함이다. 이러한 캐싱 동작은 애플리케이션에 의해 설정 가능한데, 이로 인해 메모리 사용량과 훌륭한 스크러빙 성능 간의 트레이드오프(tradeoff)가 가능해진다.
도 6은 스크러빙을 최적화하기 위하여 사용되는 프로세스의 흐름도이다. 블록(602)은 미디어 프로세서(220)가 노드에서 생성된 각각의 샘플에 샘플 데이터의 캐싱에 관한 로직을 적용하는 것을 규정한다. 결정 블록(604)은 샘플 데이터를 캐싱할 것인지 결정하는 경우, 미디어 프로세서가 우선 샘플 데이터가 캐싱되었는지를 판단하는 것을 규정한다. 그렇다면, 블록(606)은 아무것도 하지 않는 것을 규정한다. 그렇지 않다면, 블록(608)은 미디어 프로세서(220)가 사용자가 설정한 대로 캐싱 설정(caching setting)들을 결정하는 것을 규정한다. 캐싱 설정들은 노드 캐싱이 요구되는 노드들의 식별(identification), 캐싱의 주파수 및 캐싱을 위해 사용할 메모리의 최대양 등을 포함할 수 있다. 블록(610)은 샘플을 캐싱할 것인지 아닌지를 결정하기 위하여 설정들을 적용하고, 필요에 따라 캐싱하는 것을 규정한다.
블록(612)은 미디어 프로세서(220)가 애플리케이션(202)에 의해 비롯된 데이터 "검색(seek)"을 수신하는 것을 규정한다. 데이터 검색은, 예컨대 데이터의 다음 프레임이 비디오 스트림의 진행을 프레임 단위로 가능하게 하기 위한 요청이 될 수 있다. 결정 블록(614)에서, 검색을 수신하면 미디어 프로세서(220)는 각각의 노드에 대하여 요청된 데이터가 캐시 내에 존재하는지 확인하기 위하여 검사한다. 존재한다면, 블록(616)은 샘플 데이터를 재생성하는 대신에, 그 데이터를 애플리케이션(202)으로 반송(send back)하는 것을 규정한다. 존재하지 않는다면, 블록(618)은 샘플 데이터를 생성하기 위하여 적절한 변환, 소스 또는 다른 적절한 컴포넌트를 사용하는 것을 규정한다.
일부 비디오 디코더들은 사전 디코딩된 샘플들이 디코더의 상태를 초기화하기 위하여 사용될 수 있는 모드를 지원한다. 이러한 경우에, 사전 디코디된 샘플들의 일부만을 캐싱하여, 여전히 훌륭한 스크러빙 성능을 유지하는 것이 가능하다. 예컨대, 매 4번째 사전 디코딩된 샘플(every fourth pre-decoded sample)이 캐싱되고, 사용자가 캐시 내에 존재하지 않는 샘플들 중의 하나를 찾으려 한다면, 요구되는 출력 샘플을 생성하기 위하여 많아야 세 개의 샘플들이 디코딩될 필요가 있다.
본 발명의 원리가 적용될 수 있는 많은 가능한 실시예들에 있어서, 도면 부호와 연관하여 본 명세서에서 기술된 실시예들은 단지 예시적인 의도임을 인식해야 하고, 발명의 범위를 제한하는 것으로 간주되어서는 안 된다. 예컨대, 당업자는 소프트웨어로 도시된 설명된 실시예들의 요소들은 하드웨어서 구현될 수 있고(그 반대도 가능함), 또는 설명된 실시예는 본 발명의 사상을 벗어나지 않고 배열 및 상세한 부분에 있어 변경될 수 있다. 따라서, 본 명세서에서 기술된 바에 따라 본 발명은 다음의 청구항의 범위에서 유래될 수 있는 모든 실시예들 및 그 균등물을 예상하고 있다.
< 도면의 주요 부분에 대한 부호 설명 >
201 : 제어 계층
202 : 애플리케이션
208 : 변환들
210 : 미디어 소스
212 : 스트림 싱크들
214 : 스트림 소스들
220 : 미디어 프로세서
230 : 미디어 싱크
240 : 미디어 세션
250 : 토폴로지 로더
260 : 미디어 엔진
<색인어>
미디어 프로세서, 스트림, 토폴로지, 제어 계층, 핵심 계층, 변환

Claims (20)

  1. 미디어 스트림의 사전 디코딩된 샘플을 검색하는 방법으로서,
    컴퓨팅 디바이스 상에 구현된 미디어 프로세서에 의해, 토폴로지에 의해 기술된 미디어 개체들을 포함하는 핵심 계층을 형성하는 단계 - 상기 미디어 개체들은 미디어 소스, 미디어 변환 및 미디어 싱크를 포함함 -;
    상기 미디어 프로세서에 의해, 상기 토폴로지에 따라 상기 미디어 스트림을 처리하는 단계 - 상기 미디어 프로세서는 상기 토폴로지에 따라 상기 미디어 개체들 각각과 상기 미디어 프로세서 간에 상기 미디어 스트림으로부터의 데이터를 전달하며, 상기 데이터는 상기 미디어 개체들 간에 직접적으로 전달되는 것이 아니라 상기 미디어 개체들 각각과 상기 미디어 프로세서 간에 전달됨 -;
    상기 미디어 프로세서에 의해, 상기 미디어 스트림에서의 위치를 나타내는 탐색 요구(seek request)를 수신하는 단계;
    상기 미디어 프로세서에 의해, 상기 탐색 요구에 응답하여, 상기 미디어 스트림에서의 위치에 대응하는 샘플이 캐시에 존재하는지 여부를 판정하기 위해서 상기 미디어 개체들 각각을 체크하는 단계;
    상기 체크에 기초하여, 상기 샘플이 캐싱되어 있는 것으로 판정하는 단계 - 상기 캐싱된 샘플은 상기 처리의 적어도 일부로부터 기인함 -; 및
    상기 판정에 기초하여, 상기 캐싱된 샘플을 상기 사전 디코딩된 샘플로서 상기 탐색 요구의 소스로 전송하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 미디어 스트림의 상기 캐싱된 샘플은 사용자 설정들에 따라 캐싱되는 방법.
  3. 제1항에 있어서,
    상기 탐색 요구의 소스는 애플리케이션 프로그램인 방법.
  4. 제1항에 있어서,
    상기 캐시에 포함된 다수의 샘플들은 프로그래밍가능한 방법.
  5. 제1항에 있어서,
    상기 미디어 스트림은 비디오 데이터를 나타내는 방법.

  6. 제1항에 있어서,
    상기 캐싱된 샘플에 포함된 다수의 프레임들은 프로그래밍가능한 방법.
  7. 제1항에 있어서,
    상기 캐싱된 샘플은 연속적인 비디오 데이터인 방법.
  8. 컴퓨팅 디바이스에 의해 실행되는 경우, 상기 컴퓨팅 디바이스로 하여금 미디어 스트림의 사전 디코딩된 샘플을 검색하는 방법을 수행하도록 하는 명령들이 저장된 컴퓨터 판독가능 저장 매체로서,
    상기 방법은,
    컴퓨팅 디바이스 상에 구현된 미디어 프로세서에 의해, 토폴로지에 의해 기술된 미디어 개체들을 포함하는 핵심 계층을 형성하는 단계 - 상기 미디어 개체들은 미디어 소스, 미디어 변환 및 미디어 싱크를 포함함 -;
    상기 미디어 프로세서에 의해, 상기 토폴로지에 따라 상기 미디어 스트림을 처리하는 단계 - 상기 미디어 프로세서는 상기 토폴로지에 따라 상기 미디어 개체들 각각과 상기 미디어 프로세서 간에 상기 미디어 스트림으로부터의 데이터를 전달하며, 상기 데이터는 상기 미디어 개체들 간에 직접적으로 전달되는 것이 아니라 상기 미디어 개체들 각각과 상기 미디어 프로세서 간에 전달됨 -;
    상기 미디어 프로세서에 의해, 상기 미디어 스트림에서의 위치를 나타내는 탐색 요구를 수신하는 단계;
    상기 미디어 프로세서에 의해, 상기 탐색 요구에 응답하여, 상기 미디어 스트림에서의 위치에 대응하는 샘플이 캐시에 존재하는지 여부를 판정하기 위해서 상기 미디어 개체들 각각을 체크하는 단계;
    상기 체크에 기초하여, 상기 샘플이 캐싱되어 있는 것으로 판정하는 단계 - 상기 캐싱된 샘플은 상기 처리의 적어도 일부로부터 기인함 -; 및
    상기 판정에 기초하여, 상기 캐싱된 샘플을 상기 사전 디코딩된 샘플로서 상기 탐색 요구의 소스로 전송하는 단계를 포함하는 컴퓨터 판독가능 저장 매체.
  9. 제8항에 있어서,
    상기 미디어 스트림의 상기 캐싱된 샘플은 사용자 설정들에 따라 캐싱되는 컴퓨터 판독가능 저장 매체.
  10. 제8항에 있어서,
    상기 탐색 요구의 소스는 애플리케이션 프로그램인 컴퓨터 판독가능 저장 매체.
  11. 제8항에 있어서,
    상기 캐시에 포함된 다수의 샘플들은 프로그래밍가능한 컴퓨터 판독가능 저장 매체.
  12. 제8항에 있어서,
    상기 미디어 스트림은 비디오 데이터를 나타내는 컴퓨터 판독가능 저장 매체.
  13. 제8항에 있어서,
    상기 캐싱된 샘플에 포함된 다수의 프레임들은 프로그래밍가능한 컴퓨터 판독가능 저장 매체.
  14. 제8항에 있어서,
    상기 캐싱된 샘플은 연속적인 비디오 데이터인 컴퓨터 판독가능 저장 매체.
  15. 컴퓨팅 디바이스; 및
    상기 컴퓨팅 디바이스 상에 구현된 미디어 프로세서를 포함하되,
    상기 미디어 프로세서는, 토폴로지에 의해 기술된 미디어 개체들을 포함하는 핵심 계층을 형성하도록 구성되며, 상기 미디어 개체들은 미디어 소스, 미디어 변환 및 미디어 싱크를 포함하고,
    상기 미디어 프로세서는, 상기 토폴로지에 따라 미디어 스트림을 처리하며, 상기 토폴로지에 따라 상기 미디어 개체들 각각과 상기 미디어 프로세서 간에 상기 미디어 스트림으로부터의 데이터를 전달하도록 구성되고 - 상기 데이터는 상기 미디어 개체들 간에 직접적으로 전달되는 것이 아니라 상기 미디어 개체들 각각과 상기 미디어 프로세서 간에 전달됨 -,
    상기 미디어 프로세서는, 상기 미디어 스트림에서의 위치를 나타내는 탐색 요구를 수신하도록 구성되고,
    상기 미디어 프로세서는, 상기 탐색 요구에 응답하여, 상기 미디어 스트림에서의 위치에 대응하는 샘플이 캐시에 존재하는지 여부를 판정하기 위해서 상기 미디어 개체들 각각을 체크하도록 구성되고,
    상기 미디어 프로세서는, 상기 체크에 기초하여, 상기 샘플이 캐싱되어 있는 것으로 판정하도록 구성되며 - 상기 캐싱된 샘플은 상기 처리의 적어도 일부로부터 기인함 -,
    상기 미디어 프로세서는, 상기 판정에 기초하여, 상기 캐싱된 샘플을 사전 디코딩된 샘플로서 상기 탐색 요구의 소스로 전송하도록 구성되는 시스템.
  16. 제15항에 있어서,
    상기 미디어 스트림의 상기 캐싱된 샘플은 사용자 설정들에 따라 캐싱되는 시스템.
  17. 제15항에 있어서,
    상기 탐색 요구의 소스는 애플리케이션 프로그램인 시스템.
  18. 제15항에 있어서,
    상기 캐시에 포함된 다수의 샘플들은 프로그래밍가능한 시스템.
  19. 제15항에 있어서,
    상기 캐싱된 샘플에 포함된 다수의 프레임들은 프로그래밍가능한 시스템.

  20. 제15항에 있어서,
    상기 캐싱된 샘플은 연속적인 비디오 데이터인 시스템.
KR1020110127133A 2003-06-25 2011-11-30 미디어 기반 미디어 프로세서 KR101201000B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/603,328 US7555540B2 (en) 2003-06-25 2003-06-25 Media foundation media processor
US10/603,328 2003-06-25

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020040047512A Division KR101122860B1 (ko) 2003-06-25 2004-06-24 미디어 기반 미디어 프로세서

Publications (2)

Publication Number Publication Date
KR20110137760A KR20110137760A (ko) 2011-12-23
KR101201000B1 true KR101201000B1 (ko) 2012-11-13

Family

ID=33418655

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020040047512A KR101122860B1 (ko) 2003-06-25 2004-06-24 미디어 기반 미디어 프로세서
KR1020110127133A KR101201000B1 (ko) 2003-06-25 2011-11-30 미디어 기반 미디어 프로세서

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020040047512A KR101122860B1 (ko) 2003-06-25 2004-06-24 미디어 기반 미디어 프로세서

Country Status (10)

Country Link
US (7) US7555540B2 (ko)
EP (1) EP1492022A3 (ko)
JP (1) JP4772297B2 (ko)
KR (2) KR101122860B1 (ko)
CN (1) CN100517306C (ko)
AU (1) AU2004202280B2 (ko)
BR (1) BRPI0401937A (ko)
CA (1) CA2464844C (ko)
MX (1) MXPA04006188A (ko)
RU (4) RU2487395C2 (ko)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6985934B1 (en) 2000-10-23 2006-01-10 Binham Communications Corporation Method and system for providing rich media content over a computer network
US7555540B2 (en) 2003-06-25 2009-06-30 Microsoft Corporation Media foundation media processor
US7774375B2 (en) * 2003-06-27 2010-08-10 Microsoft Corporation Media foundation topology
US7725920B2 (en) * 2003-06-27 2010-05-25 Microsoft Corporation Media foundation media sink
US7613767B2 (en) 2003-07-11 2009-11-03 Microsoft Corporation Resolving a distributed topology to stream data
US7733962B2 (en) 2003-12-08 2010-06-08 Microsoft Corporation Reconstructed frame caching
US7712108B2 (en) 2003-12-08 2010-05-04 Microsoft Corporation Media processing methods, systems and application program interfaces
US7900140B2 (en) 2003-12-08 2011-03-01 Microsoft Corporation Media processing methods, systems and application program interfaces
US7735096B2 (en) 2003-12-11 2010-06-08 Microsoft Corporation Destination application program interfaces
US20050185718A1 (en) * 2004-02-09 2005-08-25 Microsoft Corporation Pipeline quality control
US7941739B1 (en) 2004-02-19 2011-05-10 Microsoft Corporation Timeline source
US7934159B1 (en) 2004-02-19 2011-04-26 Microsoft Corporation Media timeline
US7664882B2 (en) 2004-02-21 2010-02-16 Microsoft Corporation System and method for accessing multimedia content
US7577940B2 (en) * 2004-03-08 2009-08-18 Microsoft Corporation Managing topology changes in media applications
US7609653B2 (en) * 2004-03-08 2009-10-27 Microsoft Corporation Resolving partial media topologies
US7669206B2 (en) 2004-04-20 2010-02-23 Microsoft Corporation Dynamic redirection of streaming media between computing devices
US7590750B2 (en) 2004-09-10 2009-09-15 Microsoft Corporation Systems and methods for multimedia remoting over terminal server connections
WO2006041179A1 (ja) * 2004-10-15 2006-04-20 Vodafone K.K. 連係動作方法及び通信端末装置
US7434155B2 (en) * 2005-04-04 2008-10-07 Leitch Technology, Inc. Icon bar display for video editing system
TW200731113A (en) * 2006-02-09 2007-08-16 Benq Corp Method for utilizing a media adapter for controlling a display device to display information of multimedia data corresponding to an authority datum
US8954851B2 (en) * 2006-09-15 2015-02-10 Microsoft Corporation Adding video effects for video enabled applications
JP4371150B2 (ja) * 2007-05-14 2009-11-25 セイコーエプソン株式会社 ファクシミリ装置、その制御方法及びプログラム
US7953882B2 (en) 2007-07-26 2011-05-31 Realnetworks, Inc. Adaptive variable fidelity media distribution system and method
MY158045A (en) * 2008-05-13 2016-08-30 Tata Consultancy Services Ltd Methods and system for wireless/wired transmission
US20090327344A1 (en) * 2008-06-26 2009-12-31 Microsoft Corporation Media foundation source reader
WO2011081367A2 (ko) * 2009-12-28 2011-07-07 전자부품연구원 멀티미디어 데이터 처리 방법
KR101086013B1 (ko) 2010-01-12 2011-11-22 전자부품연구원 멀티미디어 데이터 처리 방법
GB2483081A (en) 2010-08-25 2012-02-29 Sony Corp America Tamper resistance in media processing using an obfuscated buffer handle
US8621445B2 (en) * 2010-12-06 2013-12-31 Visualon, Inc. Wrapper for porting a media framework and components to operate with another media framework
KR101051182B1 (ko) * 2011-03-10 2011-07-22 주식회사 다이나믹앤라이브 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치
US8788683B2 (en) 2011-08-17 2014-07-22 The Nasdaq Omx Group, Inc. Scalable transcoding for streaming audio
US9185154B2 (en) 2011-08-17 2015-11-10 Nasdaq, Inc. Integrated call capture for streaming audio
US9152470B2 (en) 2011-09-07 2015-10-06 Imagine Communications Corp. Systems and methods for computing applications
US10310824B2 (en) 2011-09-07 2019-06-04 Imagine Communications Corp. Distributed ledger platform for computing applications
US8887154B2 (en) 2012-09-06 2014-11-11 Imagine Communications Corp. Systems and methods for partitioning computing applications to optimize deployment resources
CN110011991B (zh) * 2012-10-11 2021-09-03 三星电子株式会社 用于在广播网络中发送媒体数据的装置
US8935734B2 (en) * 2013-02-01 2015-01-13 Ebay Inc. Methods, systems and apparatus for configuring a system of content access devices
US9785767B2 (en) 2013-03-15 2017-10-10 Imagine Communications Corp. Systems and methods for determining trust levels for computing components
US9182949B2 (en) 2013-03-15 2015-11-10 Imagine Communications Corp. Systems and methods for controlling branch latency within computing applications
US10628578B2 (en) 2013-03-15 2020-04-21 Imagine Communications Corp. Systems and methods for determining trust levels for computing components using blockchain
US20140320592A1 (en) * 2013-04-30 2014-10-30 Microsoft Corporation Virtual Video Camera
US11350058B1 (en) 2021-01-21 2022-05-31 Dell Products, Lp System and method for intelligent contextual session management for videoconferencing applications
US11445128B2 (en) 2021-01-24 2022-09-13 Dell Products, Lp System and method for intelligent virtual background management for videoconferencing applications
US11463270B2 (en) 2021-01-28 2022-10-04 Dell Products, Lp System and method for operating an intelligent face framing management system for videoconferencing applications
US11463656B1 (en) 2021-07-06 2022-10-04 Dell Products, Lp System and method for received video performance optimizations during a video conference session

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5936643A (en) 1993-09-13 1999-08-10 Object Technology Licensing Corp. Method and apparatus for graphical data

Family Cites Families (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1317109U (ko)
US4644532A (en) 1985-06-10 1987-02-17 International Business Machines Corporation Automatic update of topology in a hybrid network
US4655532A (en) * 1986-02-06 1987-04-07 Allied Corporation Circumferential grounding and shielding ring for an electrical connector
KR890003485B1 (ko) * 1986-11-08 1989-09-22 삼성전자 주식회사 합성비디오신호에 포함되어 있는 디지탈 정보신호 분리집적회로
US5101348A (en) 1988-06-23 1992-03-31 International Business Machines Corporation Method of reducing the amount of information included in topology database update messages in a data communications network
US5625845A (en) * 1992-10-13 1997-04-29 International Business Machines Corporation System for facilitating continuous, real-time, unidirectional, and asynchronous intertask and end-device communication in a multimedia data processing system using open architecture data communication modules
US5325423A (en) * 1992-11-13 1994-06-28 Multimedia Systems Corporation Interactive multimedia communication system
US5404318A (en) 1992-12-01 1995-04-04 Sun Microsystems, Inc. Test mode readback in a memory display interface
US5784532A (en) * 1994-02-16 1998-07-21 Qualcomm Incorporated Application specific integrated circuit (ASIC) for performing rapid speech compression in a mobile telephone system
US5666524A (en) 1994-08-31 1997-09-09 Price Waterhouse Llp Parallel processing system for traversing a transactional database
CA2156889C (en) * 1994-09-30 1999-11-02 Edward L. Schwartz Method and apparatus for encoding and decoding data
US5761619A (en) * 1995-03-23 1998-06-02 Telefoanktiebolaget Lm Ericsson Distributed telecommunications system
US5638112A (en) 1995-08-07 1997-06-10 Zenith Electronics Corp. Hybrid analog/digital STB
US5847304A (en) 1995-08-17 1998-12-08 Advanced Micro Devices, Inc. PC audio system with frequency compensated wavetable data
US5963943A (en) * 1996-05-28 1999-10-05 Mci Communication Corporation System and method for storing and retrieving performance and topology information
US5909638A (en) 1996-08-06 1999-06-01 Maximum Video Systems, Inc. High speed video distribution and manufacturing system
US5953506A (en) * 1996-12-17 1999-09-14 Adaptive Media Technologies Method and apparatus that provides a scalable media delivery system
US20020120675A1 (en) * 1997-01-29 2002-08-29 Stewart Neil Everett Method of transferring media files over a communications network
US6111858A (en) * 1997-02-18 2000-08-29 Virata Limited Proxy-controlled ATM subnetwork
KR100562116B1 (ko) 1997-11-28 2006-05-25 마츠시타 덴끼 산교 가부시키가이샤 처리 효율을 높인 영상음성 처리장치
US6202204B1 (en) * 1998-03-11 2001-03-13 Intel Corporation Comprehensive redundant load elimination for architectures supporting control and data speculation
US6233611B1 (en) 1998-05-08 2001-05-15 Sony Corporation Media manager for controlling autonomous media devices within a network environment and managing the flow and format of data between the devices
US6499036B1 (en) * 1998-08-12 2002-12-24 Bank Of America Corporation Method and apparatus for data item movement between disparate sources and hierarchical, object-oriented representation
JP3396639B2 (ja) 1998-09-30 2003-04-14 株式会社東芝 階層記憶装置及び階層記憶制御方法
JP2955285B1 (ja) * 1998-09-30 1999-10-04 松下電器産業株式会社 デジタルオーディオ受信機
US6560674B1 (en) 1998-10-14 2003-05-06 Hitachi, Ltd. Data cache system
US6434649B1 (en) 1998-10-14 2002-08-13 Hitachi, Ltd. Data streamer
US6535728B1 (en) * 1998-11-18 2003-03-18 Lightbridge, Inc. Event manager for use in fraud detection
US6496980B1 (en) 1998-12-07 2002-12-17 Intel Corporation Method of providing replay on demand for streaming digital multimedia
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6820144B2 (en) * 1999-04-06 2004-11-16 Microsoft Corporation Data format for a streaming information appliance
US6535920B1 (en) * 1999-04-06 2003-03-18 Microsoft Corporation Analyzing, indexing and seeking of streaming information
EP1065589A1 (en) * 1999-06-28 2001-01-03 Lucent Technologies Inc. Multimedia processing system architecture
US6542921B1 (en) 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US6463508B1 (en) 1999-07-19 2002-10-08 International Business Machines Corporation Method and apparatus for caching a media stream
KR100315310B1 (ko) * 1999-08-17 2001-11-26 이계철 다중 데이터 동기화 방법 및 그를 이용한 다중 멀티미디어 데이터 스트리밍 방법
US7028096B1 (en) 1999-09-14 2006-04-11 Streaming21, Inc. Method and apparatus for caching for streaming data
EP1107512A1 (en) * 1999-12-03 2001-06-13 Sony International (Europe) GmbH Communication device and software for operating multimedia applications
EP1117240A1 (fr) * 2000-01-14 2001-07-18 TRT Lucent Technologies (SA) Procédé de gestion des ressources d'une plate-forme multimédia et plate-forme multimédia pour la mise en oeuvre de ce procédé.
US6539524B1 (en) * 2000-05-10 2003-03-25 Agere Systems Inc. Method and apparatus for matching capacitance of filters having different circuit topologies
US7624337B2 (en) * 2000-07-24 2009-11-24 Vmark, Inc. System and method for indexing, searching, identifying, and editing portions of electronic multimedia files
US7103668B1 (en) 2000-08-29 2006-09-05 Inetcam, Inc. Method and apparatus for distributing multimedia to remote clients
US6760772B2 (en) * 2000-12-15 2004-07-06 Qualcomm, Inc. Generating and implementing a communication protocol and interface for high data rate signal transfer
US6925549B2 (en) 2000-12-21 2005-08-02 International Business Machines Corporation Asynchronous pipeline control interface using tag values to control passing data through successive pipeline stages
US7143268B2 (en) 2000-12-29 2006-11-28 Stmicroelectronics, Inc. Circuit and method for instruction compression and dispersal in wide-issue processors
US20070198739A1 (en) 2001-01-19 2007-08-23 Streamworks Technologies, Inc. System and method for routing media
US6859840B2 (en) 2001-01-29 2005-02-22 Kasenna, Inc. Prefix caching for media objects
US7136934B2 (en) * 2001-06-19 2006-11-14 Request, Inc. Multimedia synchronization method and device
US6980979B2 (en) * 2001-09-19 2005-12-27 Sun Microsystems, Inc. Method and apparatus for customizing Java API implementations
US6700524B2 (en) 2001-09-27 2004-03-02 Matsushita Electric Industrial Co., Ltd. A/D converter for performing pipeline processing
RU24012U1 (ru) * 2001-10-12 2002-07-20 Павликов Сергей Николаевич Устройство для обработки информации
US7480703B2 (en) 2001-11-09 2009-01-20 Sony Corporation System, method, and computer program product for remotely determining the configuration of a multi-media content user based on response of the user
US7403564B2 (en) * 2001-11-21 2008-07-22 Vixs Systems, Inc. System and method for multiple channel video transcoding
DE60140878D1 (de) 2001-11-29 2010-02-04 Sony Deutschland Gmbh System und Verfahren zur Steuerung der Anpassung von adaptiven verteilten Multimedia-Anwendungen
EP1343327B1 (fr) * 2001-12-28 2011-06-15 Koninklijke Philips Electronics N.V. Procédé pour effectuer un traitement sur un contenu multimedia
US7158141B2 (en) * 2002-01-17 2007-01-02 University Of Washington Programmable 3D graphics pipeline for multimedia applications
US7394968B2 (en) * 2002-01-24 2008-07-01 Lsi Corporation Enhanced personal video recorder including user play programming
US7353513B2 (en) 2002-02-20 2008-04-01 Agere Systems Inc. Method and apparatus for establishing a bound on the effect of task interference in a cache memory
US7296154B2 (en) 2002-06-24 2007-11-13 Microsoft Corporation Secure media path methods, systems, and architectures
US6809732B2 (en) 2002-07-18 2004-10-26 Nvidia Corporation Method and apparatus for generation of programmable shader configuration information from state-based control information and program instructions
US7286748B2 (en) * 2002-07-25 2007-10-23 Microsoft Corporation Sharing live advanced streaming format indexed files
US7024543B2 (en) 2002-09-13 2006-04-04 Arm Limited Synchronising pipelines in a data processing apparatus
US20040083094A1 (en) 2002-10-29 2004-04-29 Texas Instruments Incorporated Wavelet-based compression and decompression of audio sample sets
US7061485B2 (en) 2002-10-31 2006-06-13 Hewlett-Packard Development Company, Lp. Method and system for producing a model from optical images
US7200114B1 (en) 2002-11-18 2007-04-03 At&T Corp. Method for reconfiguring a router
FI20022249A (fi) * 2002-12-20 2004-06-21 Chun Ye Virittimiä, viritettäviä polarointi-interferenssisuodattimia ja viritysmenetelmiä
US7191431B2 (en) * 2002-12-20 2007-03-13 International Business Machines Corporation System and method for selecting a translator to translate a component request using semantic typing
US6961820B2 (en) 2003-02-13 2005-11-01 International Business Machines Corporation System and method for identifying and accessing streaming data in a locked portion of a cache
US7245589B2 (en) * 2003-04-21 2007-07-17 Lucent Technologies Inc. Wireless media gateway with bearer path control and tone allocation
US20040225736A1 (en) 2003-05-06 2004-11-11 Raphael Roger C. Method and apparatus for providing a dynamic quality of service for serving file/block I/O
US6901072B1 (en) 2003-05-15 2005-05-31 Foundry Networks, Inc. System and method for high speed packet transmission implementing dual transmit and receive pipelines
US7191432B2 (en) 2003-06-05 2007-03-13 International Business Machines Corporation High frequency compound instruction mechanism and method for a compare operation in an arithmetic logic unit
US7555540B2 (en) 2003-06-25 2009-06-30 Microsoft Corporation Media foundation media processor
US7725920B2 (en) 2003-06-27 2010-05-25 Microsoft Corporation Media foundation media sink
US20040267778A1 (en) 2003-06-27 2004-12-30 Microsoft Corporation Media foundation topology application programming interface
US7774375B2 (en) 2003-06-27 2010-08-10 Microsoft Corporation Media foundation topology
US20050021828A1 (en) 2003-07-03 2005-01-27 Yakov Kamen Adaptive data delivery manager for heterogeneous data delivery pipelines
US7613767B2 (en) 2003-07-11 2009-11-03 Microsoft Corporation Resolving a distributed topology to stream data
US7158668B2 (en) 2003-08-01 2007-01-02 Microsoft Corporation Image processing using linear light values and other image processing improvements
US7882510B2 (en) 2003-08-06 2011-02-01 Microsoft Corporation Demultiplexer application programming interface
EP1526714A1 (en) 2003-08-06 2005-04-27 Matsuhita Electric Industrial Co., Ltd. Information processing apparatus
US20060064503A1 (en) 2003-09-25 2006-03-23 Brown David W Data routing systems and methods
US20050188107A1 (en) 2004-01-14 2005-08-25 Piercey Benjamin F. Redundant pipelined file transfer
US7539218B2 (en) 2004-03-04 2009-05-26 Nvidia Corporation Media processing engine framework
US7290003B1 (en) 2004-08-19 2007-10-30 Sun Microsystems, Inc. Migrating data using an intermediate self-describing format
US20060080407A1 (en) 2004-10-12 2006-04-13 Motorola, Inc. Multimedia session establishment in a user entity having audio floor control
US20060133513A1 (en) 2004-12-22 2006-06-22 Kounnas Michael K Method for processing multimedia streams
US7388586B2 (en) 2005-03-31 2008-06-17 Intel Corporation Method and apparatus for animation of a human speaker
US7827554B2 (en) 2005-06-20 2010-11-02 Microsoft Corporation Multi-thread multimedia processing
EP2201729A1 (en) * 2007-10-16 2010-06-30 Telefonaktiebolaget LM Ericsson (PUBL) Radio telecommunications network node and method of adjusting routing table update interval
US20090222506A1 (en) 2008-02-29 2009-09-03 Evident Software, Inc. System and method for metering and analyzing usage and performance data of a virtualized compute and network infrastructure

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5936643A (en) 1993-09-13 1999-08-10 Object Technology Licensing Corp. Method and apparatus for graphical data

Also Published As

Publication number Publication date
AU2004202280A1 (en) 2005-01-20
RU2004119366A (ru) 2005-12-10
CN1577330A (zh) 2005-02-09
US20080168101A1 (en) 2008-07-10
US7937487B2 (en) 2011-05-03
US20040267953A1 (en) 2004-12-30
EP1492022A3 (en) 2006-04-05
US20110185078A1 (en) 2011-07-28
RU2009122175A (ru) 2010-12-20
BRPI0401937A (pt) 2005-02-01
JP2005018784A (ja) 2005-01-20
US9536565B2 (en) 2017-01-03
JP4772297B2 (ja) 2011-09-14
EP1492022A2 (en) 2004-12-29
RU2009122179A (ru) 2010-12-20
US9502074B2 (en) 2016-11-22
US20080168100A1 (en) 2008-07-10
US7555540B2 (en) 2009-06-30
MXPA04006188A (es) 2005-03-23
RU2494560C2 (ru) 2013-09-27
RU2366098C2 (ru) 2009-08-27
CA2464844A1 (en) 2004-12-25
US20120185861A1 (en) 2012-07-19
US9460753B2 (en) 2016-10-04
CN100517306C (zh) 2009-07-22
KR101122860B1 (ko) 2012-04-19
US7962639B2 (en) 2011-06-14
US8171151B2 (en) 2012-05-01
KR20110137760A (ko) 2011-12-23
CA2464844C (en) 2012-04-10
KR20050001407A (ko) 2005-01-06
AU2004202280B2 (en) 2009-11-19
RU2009122177A (ru) 2010-12-20
US20110213892A1 (en) 2011-09-01
RU2487395C2 (ru) 2013-07-10
US20080181137A1 (en) 2008-07-31
RU2501176C2 (ru) 2013-12-10

Similar Documents

Publication Publication Date Title
KR101201000B1 (ko) 미디어 기반 미디어 프로세서
KR101246936B1 (ko) 미디어 타임라인 정렬
US20060236219A1 (en) Media timeline processing infrastructure
KR20100035690A (ko) 디지털 미디어 처리 인터페이스
US7941739B1 (en) Timeline source
US7934159B1 (en) Media timeline
US7725920B2 (en) Media foundation media sink
US7882510B2 (en) Demultiplexer application programming interface
JP2004015436A (ja) 映像コンテンツ作成のためのプログラム,記録媒体,方法及び装置
CN115103222A (zh) 一种视频音轨处理方法及相关设备
JP2008193344A (ja) 編集装置及び編集方法

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 7