KR100339374B1 - multimedia middleware in distributed process system - Google Patents

multimedia middleware in distributed process system Download PDF

Info

Publication number
KR100339374B1
KR100339374B1 KR1019980045099A KR19980045099A KR100339374B1 KR 100339374 B1 KR100339374 B1 KR 100339374B1 KR 1019980045099 A KR1019980045099 A KR 1019980045099A KR 19980045099 A KR19980045099 A KR 19980045099A KR 100339374 B1 KR100339374 B1 KR 100339374B1
Authority
KR
South Korea
Prior art keywords
stream
event
connection
stream connection
virtual device
Prior art date
Application number
KR1019980045099A
Other languages
Korean (ko)
Other versions
KR20000027208A (en
Inventor
박연상
윤성진
김동성
반덕훈
Original Assignee
구자홍
엘지전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구자홍, 엘지전자주식회사 filed Critical 구자홍
Priority to KR1019980045099A priority Critical patent/KR100339374B1/en
Publication of KR20000027208A publication Critical patent/KR20000027208A/en
Application granted granted Critical
Publication of KR100339374B1 publication Critical patent/KR100339374B1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/2368Multiplexing of audio and video streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4437Implementing a Virtual Machine [VM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/64Addressing
    • H04N21/6405Multicasting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/64Addressing
    • H04N21/6408Unicasting

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

분산 처리시스템에서의 멀티미디어 미들웨어에 관한 것으로서, 특히 다양한 형태의 멀티미디어 응용프로그램들이 공통적으로 다루고 있는 오디오, 비디오 등과 같은 스트림 형식의 연속 매체들을 체계적이고 효율적으로 처리하여 전송하도록 미들웨어를 구현하기 위한 것으로서, 분산처리시스템에서 응용 프로그램을 작성하기 위한 앱스트랙션(Abstraction)들과, 상기 앱스트랙션들에서 정의하는 인터페이스들을 구현한 부분과, 상기 앱스트랙션 객체와 애플리케이션 컴포넌트(Application Component) 객체간에 제어 데이터를 전송해주는 객체 요구 중계기로 구성되는데 그 요지가 있다.The present invention relates to multimedia middleware in a distributed processing system, and more particularly, to implement middleware to systematically and efficiently process and transmit stream media such as audio and video, which are commonly handled by various types of multimedia applications. Objects for creating applications in the processing system, implementations of the interfaces defined in the applications, and an object for transferring control data between the application object and the application component object. It consists of a request repeater.

Description

분산 처리시스템에서의 멀티미디어 미들웨어{multimedia middleware in distributed process system}Multimedia middleware in distributed process system

본 발명은 분산 처리시스템에 관한 것으로, 특히 분산 처리시스템에서의 멀티미디어 미들웨어에 관한 것이다.The present invention relates to a distributed processing system, and more particularly, to multimedia middleware in a distributed processing system.

미들웨어(Middleware)란 일반적으로 응용 프로그램과 운영체제 사이에 위치하는 소프트웨어를 의미한다.Middleware generally refers to software located between an application and an operating system.

이 미들웨어의 역할은 응용 프로그램 개발자에게 운영체제가 제공하는 서비스보다 한 단계 더 추상화된 프로그래밍 앱스트랙션(programming abstraction)을 제공하는 것이다.The role of this middleware is to provide application developers with a programming abstraction one step further than the services provided by the operating system.

여기서 앱스트랙션(abstraction)이란 원래 운영체제에서 주로 쓰이는 용어인데, '말 그대로 추상화된 그 무엇'을 의미한다.Here, abstraction is a term commonly used in the operating system, meaning literally something abstract.

이하, 종래 기술에 따른 분산 처리시스템에서의 미들웨어에 대하여 첨부한 도면을 참조하여 설명하면 다음과 같다.Hereinafter, the middleware in the distributed processing system according to the prior art will be described with reference to the accompanying drawings.

먼저, 컴퓨터 시스템은 CPU, 메모리, 디스크, 이더넷 제어기(Ethernet Controller) 등과 같은 하드웨어들로 구성되어 있지만, 일반 응용 프로그램 개발자가 특정 목적의 응용 프로그램을 작성할 때, 이러한 하드웨어들을 제어하는 프로그램을 직접 작성하지는 않는다.First of all, a computer system consists of hardware such as CPU, memory, disk, Ethernet controller, etc., but when general application developers write application for specific purpose, they do not write the program to control these hardware by themselves. Do not.

상기 컴퓨터 시스템의 운영체제는 이러한 하드웨어를 각각 프로세스, 가상 메모리, 파일, 소켓 등과 같은 형태로 추상화하고, 이 추상화된 개체들을 제어할 수 있는 상위 수준(High-level)의 앱스트랙션(abstraction)들을 응용 프로그램 개발자에게 제공해 준다.The operating system of the computer system abstracts this hardware into the form of processes, virtual memory, files, sockets, and the like, respectively, and provides high-level applications that can control these abstracted objects. Provide it to the developer.

그러면 응용 프로그램 개발자는 이러한 앱스트랙션(abstraction)들을 이용하여 원하는 기능을 구현하는 프로그램을 작성하게 된다.Application developers then use these abstractions to write programs that implement the desired functionality.

상기 미들웨어는 운영체제 수준에서 정의되지 않은 상위 수준의 앱스트랙션(abstraction)들을 정의함으로써, 개발하고자 하는 특정 응용 서비스를 구현하는 데 적합한 프로그래밍 환경을 응용 프로그램 개발자들에게 제공해 준다.The middleware provides application developers with a programming environment that is suitable for implementing a specific application service to be developed by defining high-level abstractions that are not defined at the operating system level.

또한, 미들웨어는 그 종류와 특성에 따라 이를 이용하는 응용 프로그램에게 새로운 프로그래밍 모델을 제시해 주는데, 특히 네트워크 프로그래밍 환경에서 사용되는 미들웨어는 다양한 컴퓨터 시스템들과 통신 네트워크상에서 응용 프로그램을 작성하기 위한 안정된 프로그래밍 기반이라고 할 수 있다.In addition, middleware suggests a new programming model to applications that use it according to its type and characteristics. In particular, middleware used in a network programming environment is a stable programming base for writing applications on various computer systems and communication networks. Can be.

이러한 미들웨어는 응용 프로그램 인터페이스들에 대한 상세한 지식이 없이도, 손쉽게 네트워크 프로그램을 작성할 수 있도록 해 준다.This middleware makes it easy to write network programs without detailed knowledge of application program interfaces.

아울러 운영체제에 의해 제공되는 하위 수준(Low-level)의 네트워크 서비스들을 미들웨어를 통해 간접적으로 이용된다.In addition, low-level network services provided by the operating system are used indirectly through middleware.

근래에 와서는, 객체 지향형 접근법이 소프트웨어 모델링 기법으로 널리 확산되고, 이를 지원하는 객체 지향형 프로그램 언어들이 많이 보급됨에 따라 많은응용 프로그램들이 객체 지향형 언어로 모델링되고 작성되었다.In recent years, many application programs have been modeled and written in object-oriented languages as the object-oriented approach has been widely spread as a software modeling technique, and as the object-oriented programming languages supporting it have become popular.

이러한 객체 지향형 프로그래밍 기법은 소프트웨어 구성 요소의 모듈화 및 재사용을 용이하게 했을 뿐만 아니라 네트워크 환경상에서의 분산 처리를 위한 기본 개념을 형성하는데도 크게 영향을 끼쳤다.This object-oriented programming technique not only facilitated the modularization and reuse of software components, but also greatly influenced the formation of basic concepts for distributed processing in a network environment.

소프트웨어 업계를 중심으로 객체 지향형 프로그래밍 기법을 분산 처리 환경으로까지 확장하기 위한 연구가 계속되어 이와 관련된 여러 가지 사양(Specification)들이 이미 정의되었거나 검토 중에 있다.Research continues to extend object-oriented programming techniques to distributed processing environments, especially in the software industry, with several specifications already defined or under review.

이 중 대표적인 것이 관련 소프트웨어 업체들의 컨소시엄인 OMG(Object Management Group)에서 내놓은 CORBA(Common Object Request Broker Architecture) 사양이며, 이 사양을 준수하는 제품들이 이미 여러 업체에서 개발되었다.A typical example is the Common Object Request Broker Architecture (COBA) specification from the Object Management Group (OMG), a consortium of related software companies, and products that comply with this specification have already been developed by various companies.

또한, Microsoft사에서도 DCOM(Data Communication system)이라는 독자적인 형태의 객체 지향형 분산 프로그래밍 환경을 제공하고 있다.Microsoft also offers its own object-oriented distributed programming environment called DCOM (Data Communication System).

이러한 제품들은 객체 지향형 분산 프로그램을 작성하는 데 필요한 미들웨어로서 이를 이용하면 객체로 정의된 소프트웨어의 여러 구성 요소들이 네트워크상에 분산되어 존재할 수 있으며, 이는 곧 네트워크에 분산된 각 구성 요소들을 접근하는 데 있어, 위치에 대한 투명성(Transparency)이 보장됨을 의미한다.These products are the middleware needed to write object-oriented distributed programs. With this, multiple components of the software defined as objects can exist distributed on the network, which is used to access each distributed component on the network. This means that transparency of the location is guaranteed.

그러나 종래 기술에 따른 분산 처리시스템에서의 멀티미디어 미들웨어에 있어서 객체 지향형 분산 프로그래밍을 지원하는 기존의 미들웨어는 클라이언트/서버 모델에 따른 리퀘스트/리플라이(Request/Reply) 형태의 상호 작용을 전제로 하고있기 때문에 오디오나 비디오와 같은 스트림(Stream) 형태의 연속 매체(Continuous Media)를 처리하는 응용 프로그램을 작성하기에는 부적절하다는 문제점이 있다.However, since the existing middleware supporting object-oriented distributed programming in the multimedia middleware in the distributed processing system according to the prior art is based on the request / reply type interaction according to the client / server model, There is a problem that it is inappropriate to write an application that handles continuous media in the form of streams such as audio or video.

따라서 본 발명은 상기와 같은 문제점을 해결하기 위해 안출한 것으로서, 분산 처리 환경에서 다양한 형태의 멀티미디어 응용 프로그램들이 공통적으로 다루고 있는 오디오, 비디오 등과 같은 스트림 형식의 연속 매체 데이터들을 체계적이고 효율적으로 처리하여 전송하도록 한 분산 처리시스템에서의 멀티미디어 미들웨어를 제공하는데 그 목적이 있다.Accordingly, the present invention has been made to solve the above-mentioned problems, and the present invention provides a systematic and efficient processing and transmission of continuous media data in a stream format, such as audio and video, which are commonly handled by various types of multimedia applications in a distributed processing environment. The purpose is to provide a multimedia middleware in a distributed processing system.

도 1 은 본 발명에 따른 분산 멀티미디어 시스템의 전체적인 구성도를 나타낸 도면1 is a view showing the overall configuration of a distributed multimedia system according to the present invention

도 2 는 본 발명에 따른 분산 처리시스템에서의 멀티미디어 미들웨어를 적용하여 각 시스템에 동일한 형태의 응용 소프트웨어 운영 상태를 나타낸 도면2 is a diagram illustrating an application software operating state of the same type in each system by applying multimedia middleware in a distributed processing system according to the present invention.

도 3 은 도 1 의 가상 장치(Virtual Device)의 상세 구성을 나타낸 도면3 is a diagram illustrating a detailed configuration of a virtual device of FIG. 1.

도 4 는 도 1 의 스트림 커넥션(Stream Connection) 협상과정을 나타낸 도면FIG. 4 is a diagram illustrating a stream connection negotiation process of FIG. 1.

도 5 는 도 1 의 멀티캐스트 스트림 커넥션(Multicast Stream Connection) 협상과정을 나타낸 도면5 is a diagram illustrating a multicast stream connection negotiation process of FIG. 1.

도 6 은 도 3 의 포트에서 이벤트 발생시 처리과정을 나타낸 도면6 is a diagram illustrating a process of processing an event in the port of FIG. 3;

도 7 은 도 1 의 이벤트 발생시 처리과정을 나타낸 도면7 is a diagram illustrating a processing process when an event of FIG. 1 occurs;

도면의 주요부분에 대한 부호의 설명Explanation of symbols for main parts of the drawings

101 : 애플리케이션 컴포넌트(Application Component)101: application component

102 : 가상 장치(Virtual Device)102: virtual device

103 : 스트림 커넥션(Stream Connection)103: stream connection

104 : 그룹(Group)104: Group

105 : 멀티캐스트 스트림 커넥션(Multicast Stream Connection)105: Multicast Stream Connection

106, 107 : 앱스트랙션에서 정의한 인터페이스 구현부106, 107: Interface implementation part defined by Apptraction

108 : 객체 요구 중계기(Objected Request Broker)108: Object Request Broker

상기와 같은 목적을 달성하기 위한 본 발명에 따른 분산 처리시스템에서의 멀티미디어 미들웨어(MAHA; A Multimedia-supporting Architecture with High-level Abstraction)의 특징은, 분산 처리시스템에서 응용 프로그램을 작성하기 위한 앱스트랙션(Abstraction)들과, 상기 앱스트랙션들에서 정의한 인터페이스들을 구현한 부분과, 상기 앱스트랙션 객체와 애플리케이션 컴포넌트(Application Component) 객체간에 제어 데이터를 전송해주는 객체 요구 중계기로 이루어지는데 있다.A feature of A Multimedia-supporting Architecture with High-level Abstraction (MAHA) in a distributed processing system according to the present invention for achieving the above object is an application for creating an application program in a distributed processing system ( Abstraction), an implementation part of the interfaces defined in the application pieces, and an object request repeater for transmitting control data between the application piece object and the application component object.

상기와 같은 목적을 달성하기 위한 본 발명에 따른 분산 처리시스템에서의 멀티미디어 미들웨어의 다른 특징은, 상기 앱스트랙션들이 실제 하드웨어를 객체로 추상화하여 다루기 위한 가상장치(Virtual Device)와, 상기 가상 장치들간의 연결을 수행하기 위한 스트림 커넥션(Stream Connection)과, 상기 가상 장치들을 그룹핑(grouping)하여 제어하기 위한 그룹(Group)과, 상기 가상 장치들간의 다중 연결을 수행하기 위한 멀티캐스트 스트림 커넥션(Multicast Stream Connection) 등으로 이루어지는데 있다.Another feature of the multimedia middleware in the distributed processing system according to the present invention for achieving the above object is a virtual device for the application to abstract the actual hardware as an object, and between the virtual devices, Stream connection for performing the connection, Group for controlling the grouping of the virtual devices, and Multicast Stream Connection for performing the multi-connection between the virtual devices. ), Etc.

상기와 같은 목적을 달성하기 위한 본 발명에 따른 분산 처리시스템에서의 멀티미디어 미들웨어의 또 다른 특징은, 상기 가상 장치(Virtual Device)가 각 가상 장치(Virtual Device)의 고유한 동작을 수행하기 위한 프로세싱 엘리먼트(Processing Element)와, 상기 가상 장치(Virtual Device)에서 생성된 미디어 데이터를 스트림 커넥션(Stream Connection)에 전달하거나 스트림 커넥션(Stream Connection) 내부 버퍼에 쌓인 미디어 데이터를 가상 장치(Virtual Device)로부터 읽어오는 다수개의 포트(Port)와, 상기 다수개의 포트(Port)와 각각 접속되어 미디어 스트림의 위치 정보를 파악하거나 미디어 스트림의 흐름을 제어하는 포트 단위의 스트림 컨트롤러(Stream Controller)와 상기 가상 장치(Virtual Device) 단위의 스트림 컨트롤러(Stream Controller)와, 상기 다수개의 포트(Port)와 각각 접속되어 상기 미디어 데이터의 처리 및 미디어 스트림의 제어와 분리되어 미디어 데이터의 형식에 관계된 구체적인 사항들을 추상화한 포맷(Format)으로 이루어지는데 있다.Another feature of the multimedia middleware in the distributed processing system according to the present invention for achieving the above object is a processing element for the virtual device to perform a unique operation of each virtual device (Virtual Device) (Processing Element) and the media data generated by the virtual device (Virtual Device) to pass to the stream connection (Stream Connection) or the media data accumulated in the stream connection internal buffer from the virtual device (Virtual Device) A port controller and a virtual device that are connected to the plurality of ports and the plurality of ports, respectively, to determine location information of the media stream or control the flow of the media stream, and the virtual device. A stream controller in units of) and the plurality of ports, respectively, Is separate from the control of the process and the media stream of the media data may makin made in a format (Format) abstraction of the specific details relating to the format of the media data.

상기와 같은 목적을 달성하기 위한 본 발명에 따른 분산 처리시스템에서의 멀티미디어 미들웨어의 또 다른 특징은, 이벤트(event)를 처리하기 위한 콜백(callback)함수를 생성하는 단계와, 특정 MAHA 객체가 발생시키는 특정 이벤트(event)를 받을 경우 레지스터 함수를 이용하여 호출될 콜백(callback)함수를 이벤트(event) 등록 서버에 등록하는 단계와, 실제 이벤트(event)를 발생시킬MAHA 객체에게 이벤트(event)가 발생할 경우 이벤트(event) 등록 서버의 센드 이벤트 멤버 함수를 호출해 줄 것을 요청하는 단계와, 상기 이벤트(event)가 발생하면 상기 이벤트(event)를 발생시킨 객체에서 상기 이벤트(event)와 관련되는 이벤트(event) 등록 서버의 멤버 함수인 센드 이벤트 함수를 호출하는 단계와, 상기 센드 이벤트 함수를 통해 받은 정보를 바탕으로 응용 프로그램 개발자가 등록시킨 콜백(callback) 함수를 호출하는 단계로 이루어지는데 있다.Another feature of the multimedia middleware in the distributed processing system according to the present invention for achieving the above object is to generate a callback function for processing an event, and to generate a specific MAHA object Registering a callback function to be called by using register function in event registration server when a specific event is received, and event occurs to the MAHA object that will actually generate the event. Requesting to call a send event member function of an event registration server, and when the event occurs, an event related to the event in the object that generated the event ( event) calling a send event function, which is a member function of a registration server, and an application developer based on the information received through the send event function. There through interaction that calls the lock that the callback (callback) function step.

이하, 본 발명에 따른 분산 처리시스템에서의 멀티미디어 미들웨어의 바람직한 실시예에 대하여 첨부한 도면을 참조하여 설명하면 다음과 같다.Hereinafter, preferred embodiments of the multimedia middleware in the distributed processing system according to the present invention will be described with reference to the accompanying drawings.

먼저, 본 명세서에서 기술되는 멀티미디어 미들웨어의 명칭을 MAHA(a Multimedia-supporting Architecture with High-level Abstractions)로 정한다.First, the name of the multimedia middleware described in the present specification is referred to as a multimedia-supporting architecture with high-level abstractions (MAHA).

도 1 은 본 발명에 따른 분산 멀티미디어 시스템의 전체적인 구성도를 나타낸 도면으로서, 다수개의 애플리케이션 컴포넌트(Application Component)(101)와, 가상 장치(Virtual Device)(102)와, 스트림 커넥션(Stream Connection)(103)과, 그룹(Group)(104)과, 멀티캐스트 스트림 커넥션(Multicast Stream Connection)(105)과, 앱스트랙션에서 정의한 인터페이스 구현부(106)(107)로 이루어진 MAHA와, 객체 요구 중계기(Objected Request Broker)(108)와, 카메라(109)와, 디스크(110)(119)와, 마이크(111)와, 운영체제(112)(116)와, 장치 관리자(113)(118)와, RTP(Realtime Transport Protocol)(114)(117)와, 네트워크(115)와, 스피커(120)와, 화면(121)으로 구성된다.1 is a diagram showing the overall configuration of a distributed multimedia system according to the present invention, wherein a plurality of application components 101, a virtual device 102, and a stream connection ( MAHA consisting of 103, Group 104, Multicast Stream Connection 105, and Interface Implementation Units 106 and 107 defined in the application, and Object Request Repeater Request Broker) 108, Camera 109, Disk 110, 119, Microphone 111, Operating System 112, 116, Device Manager 113, 118, RTP ( Real Time Transport Protocol) 114, 117, a network 115, a speaker 120, and a screen 121.

상기 가상 장치(Virtual Device)(102)와, 스트림 커넥션(StreamConnection)(103)과, 그룹(Group)(104)과, 멀티캐스트 스트림 커넥션(Multicast Stream Connection)(105)을 가상 자원(Virtual Resource)이라 한다.The virtual device 102, the stream connection 103, the group 104, and the multicast stream connection 105 are stored as virtual resources. This is called.

상기 운영체제(112)(116)는 각각 디바이스 드라이버(11)와, UDP(User Datagram Protocol)(12)와, TCP(13), IP(14)로 이루어진다.The operating systems 112 and 116 comprise a device driver 11, a User Datagram Protocol (UDP) 12, TCP 13, and IP 14, respectively.

상기 가상 장치(Virtual Device)(102)는 다양한 미디어 데이터를 생성, 가공, 최종적으로 소비하는 다양한 실제의 장치들을 추상화하여 다룬다는 것을 의미하며, 각각의 가상 장치(Virtual Device)에 따라 다른 일을 한다.The virtual device 102 means to abstract various physical devices that generate, process, and finally consume various media data, and do different things according to each virtual device. .

예들 들어, 마이크(microphone)는 아날로그 음성을 캡쳐하는 기능을 하고, 스피커(Speaker)는 반대의 과정을 통해 아날로그 음성으로 출력하는 기능을 한다.For example, a microphone functions to capture analog voice, and a speaker functions to output analog voice through a reverse process.

이 밖에 각종 미디어 데이터를 인코딩(encoding)하고 디코딩(decoding)하는 장치들도 있을 수 있고, 여러 음원으로부터 들어오는 음성을 합성하는 믹싱(Mixing) 장치도 있을 수 있다.In addition, there may be devices for encoding and decoding various media data, and there may be a mixing device for synthesizing voices from various sound sources.

상기 스트림 커넥션(Stream Connection)(103)은 상기 가상 장치(102)들간의 미디어 데이터 전송을 위한 연결 통로 역할을 하지만 실제로 미디어 데이터를 전송하는 것은 아니다.The stream connection 103 serves as a connection path for media data transmission between the virtual devices 102 but does not actually transmit media data.

상기 그룹(Group)(104)은 상기 가상 장치(virtual Device)(102)들을 그룹핑(grouping)하여 미디어 스트림을 제어하고 자원을 할당하는 역할을 한다.The group 104 controls the media stream and allocates resources by grouping the virtual devices 102.

즉 그룹(Group)(104)은 상기 가상 장치(Virtual Device)(102)와 스트림 커넥션(Stream Connection)(103)을 통해 흘러가는 미디어 스트림을 전체적으로 제어하고, 임의의 미디어 스트림이 응용 프로그램이 요구하는 QoS를 만족하면서 흐를 수있도록 미디어 스트림이 통과하는 각 가상 장치(Virtual Device)(102)와 스트림 커넥션(Stream Connection)(103)에 대해서 컴퓨터 시스템의 여러 자원을 최적으로 할당한다.That is, the group 104 controls the media streams flowing through the virtual device 102 and the stream connection 103 as a whole, and an arbitrary media stream is requested by an application. Various resources of the computer system are optimally allocated to each virtual device 102 and stream connection 103 through which the media stream passes so as to flow while satisfying QoS.

상기 멀티캐스트 스트림 커넥션(Multicast Stream Connection)(105)은 상기 가상 장치(Virtual Device)(102)들간의 1대 다(多) 연결을 할 수 있도록 멀티캐스트 어드레스를 할당하는 역할을 한다.The multicast stream connection 105 serves to allocate a multicast address to enable one-to-many connection between the virtual devices 102.

상기 앱스트랙션에서 정의한 인터페이스 구현부(106)(107)는 가상 장치(Virtual Device)(102)와, 스트림 커넥션(Stream Connection)(103)과, 그룹(Group)(104)과, 멀티캐스트 스트림 커넥션(Multicast Stream Connection)(105) 등에서 정의한 인터페이스를 구현하여 오디오나 비디오와 같은 연속 매체 데이터를 생산하거나 소비하는 하드웨어 장치들을 제어하고 상기 연속 매체 데이터를 전송한다.The interface implementation unit 106 and 107 defined in the application section include a virtual device 102, a stream connection 103, a group 104, and a multicast stream connection. It implements the interface defined in (Multicast Stream Connection) 105 and the like to control hardware devices that produce or consume continuous media data such as audio or video and transmit the continuous media data.

상기 객체 요구 중계기(Objected Request Broker)(108)는 상기 다수개의 애플리케이션 컴포넌트(Application Component)(101)와, 가상 장치(Virtual Device)(102)와, 스트림 커넥션(Stream Connection)(103)과, 그룹(Group)(104)과, 멀티캐스트 스트림 커넥션(Multicast Stream Connection)(105)간의 통신을 담당한다.The object request broker 108 includes the plurality of application components 101, a virtual device 102, a stream connection 103, and a group. (Group) 104 and Multicast Stream Connection 105 are in charge of communication.

상기 다수개의 애플리케이션 컴포넌트(Application Component)(101)와, 가상 장치(Virtual Device)(102)와, 스트림 커넥션(Stream Connection)(103)과, 그룹(Group)(104)과, 멀티캐스트 스트림 커넥션(Multicast StreamConnection)(105)들간의 통신은 상기 객체 요구 중계기(108)가 요구하는 IDL(Interface Definition Language) 형태로 표현된다.The plurality of application components 101, the virtual device 102, the stream connection 103, the group 104, and the multicast stream connection Communication between the Multicast StreamConnections 105 is represented in the form of Interface Definition Language (IDL) required by the object request repeater 108.

도 2 는 본 발명에 따른 분산 처리시스템에서의 멀티미디어 미들웨어를 적용하여 각 시스템에 동일한 형태의 응용 소프트웨어 운영 상태를 나타낸 도면으로, 영상 회의 시스템(201~204)과 화면(205~208), 스피커(209~212), 마이크(213~216), 카메라(217~220)와 각각 접속된 제 1 내지 제 4 장치(221~224)들이 네트워크를 통해 접속되어 있으며, 다양한 하드웨어 플랫폼과 운영체제를 가진 컴퓨터 시스템들로 구성된 네트워크 환경에서 각 시스템에 동일한 객체 요구 중계기와 MAHA를 설치하면 이를 기반으로 하여 작성된 응용 프로그램이 각 시스템에 존재하는 멀티미디어 장치들을 그것이 장착된 시스템의 네트워크상의 위치와 관계없이 일관성있고, 유니폼(uniform)한 형태로 접근할 수 있다는 것을 나타낸다.2 is a diagram illustrating an application software operating state of the same type applied to each system by applying multimedia middleware in a distributed processing system according to the present invention. 209 to 212, the microphones 213 to 216, and the first to fourth devices 221 to 224, which are connected to the cameras 217 to 220, respectively, are connected through a network, and a computer system having various hardware platforms and operating systems. In this network environment, the same object request repeater and MAHA are installed on each system, and the application written on the basis of them is consistent with the uniform, uniform (regardless of the location of the network of the system in which it is installed). Indicates that it can be accessed in a uniform form.

도 3 은 도 1 의 가상 장치(Virtual Device)의 상세 구성을 나타낸 도면으로, 각 가상 장치(Virtual Device)의 고유한 동작을 수행하기 위한 프로세싱 엘리먼트(Processing Element)(301)와, 상기 프로세싱 엘리먼트에서 생성된 미디어 데이터를 스트림 커넥션(Stream Connection)에 전달하거나 스트림 커넥션(Stream Connection) 내부 버퍼에 쌓인 미디어 데이터를 프로세싱 엘리먼트로부터 읽어오는 다수개의 포트(Port)(302~304)와, 상기 다수개의 포트(Port)(302~304)와 각각 접속되어 미디어 스트림의 위치 정보를 파악하거나 미디어 스트림의 흐름을 제어하는 포트 단위의 스트림 컨트롤러(Stream Controller)(305~307)와 상기 가상 장치(Virtual device) 단위의 스트림 컨트롤러(Stream Controller)(308)와, 상기다수개의 포트(Port)(302~304)와 각각 접속되어 상기 미디어 데이터의 처리 및 미디어 스트림의 제어와 분리되어 미디어 데이터의 형식에 관계된 구체적인 사항들을 추상화한 포맷(Format)(309~311)으로 구성된다.FIG. 3 is a diagram illustrating a detailed configuration of the virtual device of FIG. 1, and includes a processing element 301 for performing a unique operation of each virtual device, and the processing element 301. A plurality of ports 302 to 304 for delivering the generated media data to a stream connection or reading media data accumulated in a stream connection internal buffer from a processing element, and the plurality of ports ( Ports 302 to 304 are connected to each of the stream controller (305 ~ 307) and the virtual device (Virtual device) unit of the port unit to determine the location information of the media stream or to control the flow of the media stream A stream controller 308 and the plurality of ports 302 to 304 are respectively connected to process the media data and control the media stream. Separated is configured in a format (Format) (309 ~ 311) abstraction of the specific details relating to the format of the media data.

상기 가상 장치(Virtual Device) 단위의 스트림 컨트롤러(308)와 포트(Port) 단위의 스트림 컨트롤러(305~307) 사이는 페어런트/차일드(parent/child) 관계가 있다.There is a parent / child relationship between the stream controller 308 in the virtual device unit and the stream controllers 305 ˜ 307 in the port unit.

상기 포트(302~304) 각각은 상기 프로세싱 엘리먼트에서 생성된 미디어 데이터를 스트림 커넥션(Stream Connection)(103)에 전달하거나 상기 스트림 커넥션(Stream Connection)(103)의 내부 버퍼에 쌓인 미디어 데이터를 상기 가상 장치 프로세싱 엘리먼트로부터 읽어오는 역할을 한다.Each of the ports 302 to 304 transfers the media data generated by the processing element to a stream connection 103 or the media data accumulated in an internal buffer of the stream connection 103. It reads from device processing elements.

도 4 는 도 1 의 스트림 커넥션(Stream Connection) 협상과정을 나타낸 도면이고, 도 5 는 도 1 의 멀티캐스트 스트림 커넥션(Multicast Stream Connection) 협상과정을 나타낸 도면이고, 도 6 은 도 3 의 포트에서 이벤트 발생시 처리과정을 나타낸 도면이고, 도 7 은 도 1 의 이벤트 발생시 처리과정을 나타낸 도면이다.4 is a diagram illustrating a stream connection negotiation process of FIG. 1, FIG. 5 is a diagram illustrating a multicast stream connection negotiation process of FIG. 1, and FIG. 6 is an event at a port of FIG. 3. FIG. 7 is a diagram illustrating a processing process when an event occurs and FIG. 7 is a diagram illustrating a processing process when an event occurs in FIG.

이와 같이 구성된 본 발명에 따른 분산 처리시스템에서의 멀티미디어 미들웨어에 대하여 첨부한 도면을 참조하여 상세히 설명하면 다음과 같다.The multimedia middleware in the distributed processing system according to the present invention configured as described above will be described in detail with reference to the accompanying drawings.

먼저, 응용 프로그램 개발자가 도 2 에 도시된 바와 같이 다양한 하드웨어 플랫폼과 운영체제를 가진 컴퓨터 시스템들로 구성된 네트워크 환경에서 제 1 장치(221)의 마이크(213)로부터 입력되는 오디오 데이터를 네트워크를 통해 제 2 장치(222)의 스피커(210)로 전송하는 응용 프로그램을 작성할 경우 도 1 에 도시된바와 같은 스트림 커넥션(103)은 도 4 에 도시된 바와 같이 상기 제 1 장치(221)와 제 2 장치(222)간을 네트워크를 통해 연결 접속하기 위한 포맷 협상(format negotiation)을 한다.First, an application developer may transmit audio data input from a microphone 213 of a first device 221 through a network in a network environment including computer systems having various hardware platforms and operating systems as shown in FIG. 2. When writing an application program that transmits to the speaker 210 of the device 222, the stream connection 103 as shown in FIG. 1 has the first device 221 and the second device 222 as shown in FIG. Format negotiation is used to connect between networks.

즉 스트림 커넥션(103)은 상기 전송할 미디어 데이터가 제 1 및 제 2 장치(221)(222)에 상응하는 제 1 및 제 2 가상 장치(Virtual Device) 모두에서 인식할 수 있는 형태인지를 검색한다.That is, the stream connection 103 searches whether the media data to be transmitted is in a form that can be recognized by both the first and second virtual devices corresponding to the first and second devices 221 and 222.

상기 검색 결과 제 1 및 제 2 가상 장치에서 인식할 수 있는 미디어 데이터라면 스트림 커넥션(103)은 전송 통로를 열게 된다.As a result of the search, if the media data can be recognized by the first and second virtual devices, the stream connection 103 opens a transmission path.

상기 포맷 협상(format negotiation) 과정은 응용 프로그램 개발자의 취향에 따라 세가지로 분류할 수 있다.The format negotiation process can be classified into three types according to the preference of the application developer.

첫째, 응용 프로그램이 두 가상 장치간에 전송할 미디어 데이터의 모든 형식을 미리 결정할 경우 스트림 커넥션(103)은 포맷 협상을 수행하지 않고 두 가상 장치에 미리 정의된 미디어 데이터의 형식이 상충되는지의 여부를 검색하여 상충된다면 상기 전송 통로 연결시 에러를 복귀하고 그렇지 않다면 상기 전송 통로 연결을 설정한다.First, if the application predetermines all the formats of media data to be transferred between the two virtual devices, the stream connection 103 does not perform a format negotiation and detects whether the formats of the predefined media data for the two virtual devices are in conflict. If there is a conflict, an error is returned in the transmission path connection, otherwise the connection path connection is established.

둘째, 응용 프로그램이 두 가상 장치 중 하나의 가상 장치만의 미디어 데이터 형식을 미리 결정할 경우 스트림 커넥션(103)은 나머지 결정되지 않은 하나의 가상 장치의 미디어 데이터 형식을 응용 프로그램이 정의한 나머지 가상 장치의 형식에 맞추게 된다.Second, if the application predetermines the media data type of only one virtual device of the two virtual devices, the stream connection 103 determines the format of the remaining virtual device by which the application defines the media data type of one virtual device that has not been determined. To match.

셋째, 응용 프로그램이 두 가상 장치의 미디어 데이터 형식을 모두 결정하지않을 경우 스트림 커넥션(103)이 두 가상 장치간의 합의할 수 있는 최상의 미디어 데이터 형식을 스스로 찾아내어 결정한다.Third, if the application program does not determine the media data format of both virtual devices, the stream connection 103 finds and determines the best media data format that can be agreed between the two virtual devices.

한편, 스트림 커넥션(103)이 연결하는 두 가상 장치가 같은 시스템에 존재할 경우도 있고, 다른 시스템에 존재할 경우도 있으므로 스트림 커넥션(103)은 내부적으로 두 가상 장치의 실제 위치를 판단한 후 때에 따라서 공유 메모리 영역 혹은 네트워크 연결 채널을 할당하여 실제 제 1 및 제 2 장치(221)(222)간의 미디어 데이터 전송 통로를 만들어 주어야 한다.On the other hand, since the two virtual devices connected to the stream connection 103 may exist in the same system, or may exist in different systems, the stream connection 103 internally determines the actual location of the two virtual devices, and sometimes the shared memory. An area or network connection channel should be allocated to create a media data transmission path between the first and second devices 221 and 222.

즉 도 3 에 도시된 바와 같이, 상기 가상 장치(Virtual Device)내 다수개의 포트(Port)(302~304)는 상기 생성된 미디어 데이터를 스트림 커넥션(Stream Connection)에 전달하거나 스트림 커넥션(Stream Connection) 내부 버퍼에 쌓인 미디어 데이터를 가상 장치(Virtual Device)로부터 읽어온다.That is, as shown in FIG. 3, a plurality of ports 302 to 304 in the virtual device deliver the generated media data to a stream connection or a stream connection. Read the media data stored in the internal buffer from the virtual device.

그러면 포트 단위의 스트림 컨트롤러(Stream Controller)(305~307)와 상기 가상 장치(Virtual Device) 단위의 스트림 컨트롤러(Stream Controller)(308)는 상기 다수개의 포트(Port)(302~304)와 각각 접속되어 미디어 스트림의 위치 정보를 파악하거나 미디어 스트림의 흐름을 제어한다.Then, the stream controllers 305 to 307 in the port unit and the stream controller 308 in the virtual device unit are connected to the plurality of ports 302 to 304, respectively. The location information of the media stream or control the flow of the media stream.

아울러 포맷(Format)(309~311)은 상기 다수개의 포트(Port)(302~304)와 각각 접속되어 상기 미디어 데이터의 처리 및 미디어 스트림의 제어와 분리되어 미디어 데이터의 형식에 관계된 구체적인 사항들을 추상화하여 제어한다.In addition, formats 309 to 311 are connected to the plurality of ports 302 to 304, respectively, and are separated from the processing of the media data and the control of the media stream, thereby abstracting detailed matters related to the format of the media data. To control.

이에 따라 프로세싱 엘리먼트(Processing Element)(301)는 엘리먼트 자신의 고유한 동작을 수행하여 포트(303)(304)를 통해 전송한다.Accordingly, the processing element 301 transmits through the ports 303 and 304 by performing an element's own operation.

상기 미디어 데이터의 형식중에는 QoS(Quality of Service)에 관련된 것이 있을 수 있는데 예를 들면 WAVE 형식을 생성하는 가상 장치와 WAVE 형식을 재생하는 가상 장치는 스트림 커넥션(Stream Connection)에 의한 포맷 협상 과정 중에 샘플 레이트(Sample Rate) 및 레졸류션(Resolution), 채널(모노 또는 스트레오 사운드) 등을 결정하게 된다.The format of the media data may be related to a quality of service (QoS). For example, a virtual device generating a WAVE format and a virtual device playing a WAVE format may be sampled during a format negotiation process by a stream connection. Sample rate, resolution, and channel (mono or stereo sound) will be determined.

상기 세가지 인자들은 결국 스트림 커넥션(Stream Connection)이 초당 전송해야 할 데이터의 양을 결정짓기 때문에 스트림 커넥션(Stream Connection)은 QoS중 대역폭(bandwidth)에 관한 정보를 암시적으로 얻을 수 있으므로, 이를 기반으로 네트워크 대역폭, 내부 버퍼의 크기 등을 결정할 수 있다.Since these three factors ultimately determine the amount of data to be transmitted per second, the stream connection can implicitly obtain information about bandwidth during QoS. You can determine the network bandwidth, the size of the internal buffer, and so on.

여기서, 다른 QoS인자들(예를 들면 지터, 딜레이 등)은 응용 프로그램이 직접 명시하기 전에는 무시된다.Here, other QoS factors (eg jitter, delay, etc.) are ignored until directly specified by the application.

한편 스트림 커넥션(Stream Connection)은 기본적으로 가상 장치들간에 1대 1 연결을 수행한다.On the other hand, Stream Connection basically performs one-to-one connection between virtual devices.

따라서 소스 가상 장치(Source Virtual Device) 1개에서 데스티네이션 가상 장치(Destination Virtual Device) 2개로 연결을 시도할 경우에는 두 개의 스트림 커넥션을 할당하여야 한다.Therefore, when attempting to connect from one source virtual device to two destination virtual devices, two stream connections must be allocated.

만약 두 개의 스트림 커넥션(Stream Connection)을 통해 전달되는 미디어 데이터의 형식이 동일하다면, 하나의 스트림 커넥션(Stream Connection)으로 1 대 다(多) 연결을 할 수도 있다.If the media data delivered through two stream connections are the same format, one to many connections may be made in one stream connection.

이러한 스트림 커넥션(Stream Connection)의 개념을 상기 가상 장치(virtualDevice)들간의 1 대 1 연결뿐만 아니라 1 대 다(多) 연결도 가능하도록 확장하여 멀티캐스트 스트림 커넥션(Multicast Stream Connection)이라는 앱스트랙션(Abstraction)을 새로 정의한다.This concept of stream connection is extended to enable one-to-many connection as well as one-to-many connection between the virtual devices, so that an application called multicast stream connection is called an abstraction. Define a new).

여기서 스트림 커넥션(Stream Connection)과 멀티캐스트 스트림 커넥션(Multicast Stream Connection)을 구분한 이유는 멀티캐스팅을 할 연결과 그렇지 못한 연결을 처음부터 구별하지 않는다면 네트워크 연결시에 멀티캐스트 어드레스(multicast address)를 할당해 주어야 하는 부담이 생기기 때문이다.The reason for distinguishing a stream connection from a multicast stream connection is to assign a multicast address to a network connection unless it distinguishes between a connection to be multicasted and a connection that is not. This creates a burden.

따라서 일반 스트림 커넥션(Stream Connection)을 통하여 가상 장치(Virtual Device)들을 네트워크상에서 연결할 경우 MAHA는 도 5 에 도시된 바와 같이, 유니캐스트(Unicast) TSAP(Transport Service Address Pair)를 할당받지만, 멀티캐스트 스트림 커넥션(Multicast Stream Connection)들을 네트워크상에서 연결할 경우에는 멀티캐스트 어드레스 할당 서버(server)로부터 멀티캐스트 어드레스(multicast address)를 할당받는다.Therefore, when connecting virtual devices on a network through a general stream connection, as shown in FIG. 5, the MAHA is assigned a unicast Transport Service Address Pair (TSAP), but does not include a multicast stream. When connecting (Multicast Stream Connections) in a network, a multicast address is allocated from a multicast address allocation server.

여기서 스트림 커넥션(Stream Connection)을 연결하는 방법은 connect()라는 스트림 커넥션(Stream Connection)의 멤버 함수(member function)를 이용한다.Here, the method of connecting a stream connection uses a member function of a stream connection called connect ().

상기 connect()는 응용 프로그램의 입장에서 보면, 단지 두 개의 가상 장치(Virtual Device)간에 가상적인 데이터 통로만 만들뿐이며 실제로 이 가상 데이터 통로를 통하여 미디어 데이터를 전송하기 위해서는 스트림 커넥션(Stream Connection)에 포함된 클래스인 스트림 컨트롤러(Stream Controller)를 이용하여야 한다.From the application's point of view, the connect () only creates a virtual data path between two virtual devices, and is actually included in a stream connection to transmit media data through the virtual data path. You must use the stream class named Stream Controller.

여기서, 상기 connect()를 통해 연결 설정된 가상 장치(Virtual Device)간의 미디어 데이터 통로는 disconnect()에 의해 무효화될 수 있다.Here, the media data path between the virtual devices connected through the connect () may be invalidated by disconnect ().

상기 멀티캐스트 커넥션 스트림(Multicast Stream Connection)의 경우에도 connect()를 사용하여 두 가상 장치(Virtual Device)간의 미디어 데이터 통로를 설정하지만 일단 connect()가 성공적으로 수행된 후 또 다른 데스티네이션 가상 장치(Destination Virtual Device)를 추가할 경우 attach()를 사용하여야 한다.In the case of the multicast stream connection, a media data path between two virtual devices is established using connect (), but once the connection () is successfully performed, another destination virtual device ( To add a Destination Virtual Device, attach () must be used.

상기 스트림 컨트롤러(Stream Controller)는 가상 자원(Virtual Resource) 클래스의 멤버로 포함되어 있기 때문에 가상 자원(Virtual Resource) 클래스를 상속받는 모든 클래스의 멤버가 된다.Since the stream controller is included as a member of the virtual resource class, the stream controller becomes a member of all classes that inherit the virtual resource class.

상기 스트림 컨트롤러(Stream Controller)는 두 가상 장치(Virtual Device)간에 connect()가 호출되어 비록 미디어 데이터를 전송할 수 있는 통로는 만들어져도 실제로 미디어 스트림의 전송을 하지 않는다.The stream controller does not actually transmit the media stream, even though a connect () is called between two virtual devices, even though a channel for transmitting the media data is created.

상기 통로를 통하여 미디어 스트림이 전송되도록 하기 위해서는 이 스트림 커넥션(Stream Connection)에 포함된 스트림 컨트롤러(Stream Controller)의 start()라는 함수를 호출하여야 한다.In order to transmit a media stream through the passage, a function called start () of a stream controller included in the stream connection must be called.

하지만 만약 상기 스트림 커넥션(Stream Connection)에 연결된 가상 장치(Virtual Device)의 스트림 컨트롤러(Stream Controller)가 start()되지 않은 상태에서 스트림 커넥션(Stream Connection)의 스트림 컨트롤러(Stream Controller)만 start()시키면, 스트림 커넥션(Stream Connection)은 내부 버퍼의 데이터 전송을 개시하지만 상기 가상 장치(Virtual Device)가 상기 내부 버퍼를 채워주지 않음으로서 결국 아무 것도 전송되지 않게 된다.However, if the stream controller of the virtual device connected to the stream connection does not start (), only the stream controller of the stream connection starts (). The stream connection initiates data transfer of the internal buffer but the virtual device does not fill the internal buffer and eventually nothing is transmitted.

따라서 스트림 커넥션(Stream Connection)이 설정해 놓은 가상 전송 경로로 미디어 스트림이 전송되기 위해서는 스트림 커넥션(Stream Connection)의 스트림 컨트롤러(Stream Controller)뿐만 아니라 상기 스트림 커넥션(Stream Connection)에 의하여 연결된 가상 장치(Virtual Device)들의 스트림 컨트롤러(Stream Controller) 역시 모두 start()되어야 한다.Therefore, in order for a media stream to be transmitted through a virtual transmission path set by a stream connection, not only a stream controller of a stream connection, but also a virtual device connected by the stream connection. The stream controllers of all of them must also be start ().

상기 스트림 컨트롤러(Stream Controller)가 제공하는 애플리케이션 프로토콜 인터페이스(Application Protocol Interface:이하 API라 약칭함)로는 start()외에 stop(), resume(), pause(), play scale() 등이 있는데, 모두 미디어 스트림을 중단, 재전송, 빨리 감기(fast forward), 되감기(rewind) 등의 역할을 하는 것으로, 마치 VCR의 제어 패널에 있는 기능들과 유사하다.Application protocol interfaces provided by the stream controllers (hereinafter, referred to as APIs) include stop (), resume (), pause (), and play scale () in addition to start (). It stops, retransmits, fast forwards, and rewinds a media stream, similar to the functions on the control panel of a VCR.

상기 MAHA의 최종적인 목표는 미디어 스트림을 녹음, 변환, 전송, 재생하는 모든 종류의 응용들을 지원하는 것에 있다.The final goal of the MAHA is to support all kinds of applications for recording, converting, transmitting and playing media streams.

따라서 VoD(Video-on-Demand), AoD(Audio-on-demand) 등과 같이 저장된 미디어 데이터를 단방향으로 녹음, 재생, 전송하는 응용들뿐만 아니라, 화상 회의(Video-Conferencing), 컴퓨터-전화 통합(Computer-Telephony Integration) 등과 라이브 스트림 데이터(live stream data)를 양방향으로 녹음, 재생 전송하는 응용들까지도 상기 MAHA의 지원 대상이 된다.Therefore, video-conferencing and computer-telephony integration, as well as unidirectional recording, playback and transmission of stored media data such as video-on-demand and audio-on-demand (AoD). Applications such as computer-telephony integration and the like to record and play back and transmit live stream data in both directions are also supported by the MAHA.

하지만 VCR의 제어 패널이 가지는 모든 기능들을 라이브 스트림 데이터(live stream data)를 사용하는 응용들에서 적용하기 불가능하므로 상기 스트림컨트롤러(Stream Controller)의 API중 일부의 것들은 라이브 스트림 데이터(live stream data)에 대해서 동작하지 않게 된다.However, some of the functions of the control panel of the VCR are not applicable in applications that use live stream data, so some of the APIs of the Stream Controller can be applied to live stream data. Will not work.

그리고 상기 스트림 컨트롤러(Stream Controller)는 하나의 미디어 스트림과 관련된 여러 가지의 연산들을 응용 프로그램의 작성을 위해 제공해 준다.In addition, the stream controller provides various operations related to one media stream for writing an application program.

한편, 포트(Port)는 상기 가상 장치(Virtual Device)에서 생성된 미디어 데이터를 스트림 커넥션(Stream Connection)에 전달하는 역할, 또는 스트림 커넥션(Stream Connection)의 내부 버퍼에 쌓인 미디어 데이터를 가상 장치(Virtual Device)로부터 읽어오는 역할을 한다.Meanwhile, the port serves to deliver media data generated by the virtual device to a stream connection, or the media data accumulated in an internal buffer of the stream connection is stored in the virtual device. Device) to read from.

상기 포트(Port)는 응용 프로그램에서 접근할 수 없는 객체이며, 가상 장치(Virtual Device)의 모듈 방식(modularity)과 이식성(portability)을 위해 정의된다.The port is an object inaccessible to the application program and is defined for the modularity and portability of the virtual device.

상기 포트(Port)는 상기 스트림 커넥션(Stream Connection)이 연결 협상을 할 때 참조하는 미디어 데이터의 형식에 관한 정보를 가지고 있으므로, 상기 스트림 커넥션(Stream Connection)이 포맷 협상을 한다는 것은, 연결된 양단의 가상 장치(Virtual Device)의 포트(Port)중에서 서로 가지고 있는 미디어 데이터 형식을 지원하는 포트(Port)가 있는 지를 검색해 본다는 의미이다.Since the port has information on the format of the media data referred to when the stream connection negotiates a connection, the fact that the stream connection negotiates a format means that the virtual connection of both ends is connected. This means that you can find out whether there are any ports that support each other's media data formats among the ports of the virtual device.

일반적으로 포트(Port)가 가지고 있는 미디어 데이터의 형식은 스트롱 타입(strong type)이 아닌 윅 타입(week type)의 형식이다.In general, the format of the media data that a port has is not a strong type but a week type.

즉 하나의 포트(Port)가 지원할 수 있는 미디어 데이터 형식은 어떤 특정한 값이라기보다는 값의 범위 또는 값의 나열이라고 할 수 있다.That is, a media data format that a port can support is not a specific value but a range of values or a list of values.

예를 들어, WAVE 형식을 지원하는 포트(Port)의 경우 이 포트(Port)가 가지는 미디어 데이터 형식 정보는For example, for a port that supports WAVE format, the media data format information that this port has is

샘플 레이트(Sample Rate) : 8000㎐, 11025㎐, 2205㎐Sample Rate: 8000㎐, 11025㎐, 2205㎐

채널(Channel) : 모노(mono) 또는 스트레오(stereo)Channel: mono or stereo

레졸루션(Resolution) : 8 비트 퍼 샘플(bit per sample) 또는 16 비트 퍼 샘플(bit per sample)Resolution: 8 bit per sample or 16 bit per sample

이며, 상기 포트(Port)의 가장 큰 목적은 가상 장치(Virtual Device)에게 유니폼(Uniform)한 인터페이스를 제공하는데 있다.The main purpose of the port is to provide a uniform interface to a virtual device.

즉 가상 장치(Virtual Device)는 생성된 미디어 데이터를 스트림 커넥션(Stream Connection)에 쓰거나 재생할 미디어 데이터를 스트림 커넥션(Stream Connection)으로부터 읽어오기 위하여 상기 포트(Port)가 제공하는 인터페이스를 사용하게 되는데 port_write(), port_read() 등이 그것이다.That is, the virtual device uses an interface provided by the port to write the generated media data to the stream connection or to read the media data to be played from the stream connection. ), port_read (), etc.

상기 포트(Port)는 비록 의미상 가상 장치(Virtual Device)에 포함된 객체이기는 하지만, 구문상 가상 장치(Virtual Device)와는 아무 연관이 없으며, 오디오 가상 장치(Virtual Device)에 사용되는 포트(Port)와 비디오 가상 장치(Virtual Device)에 사용되는 포트(Port)는 같은 클래스로부터 인스탠시에이션(instantiation)된 객체이다.Although the port is an object included in the virtual device, the port is not related to the virtual device syntactically, and the port is used for the audio virtual device. Ports used for the video and the virtual device are objects instantiated from the same class.

도 6 은 도 3 의 포트에서 이벤트 발생시 처리과정을 나타낸 도면으로, 포트(Port)는 상기 가상 장치(Virtual Device)에 이벤트(event)를 발생시킬 수 있다.FIG. 6 is a diagram illustrating a process of generating an event in the port of FIG. 3, wherein a port may generate an event in the virtual device.

즉 스트림 커넥션(Stream Connection)의 로컬 버퍼의 상태, 혹은 스트림 커넥션(Stream Connection)의 상태에 따라 수시로 가상 장치(Virtual Device)로 이벤트(event)를 전달함으로써, 상기 가상 장치(Virtual Device)가 특정 상황에 대처할 수 있는 기회를 제공한다.That is, by sending an event to a virtual device from time to time according to a state of a local buffer of a stream connection or a state of a stream connection, the virtual device may have a specific situation. Provide an opportunity to cope.

그리고 도 7 은 도 1 의 이벤트 발생시 처리과정을 나타낸 도면으로, 이에 도시된 바와 같이, process_event()라는 함수는 이벤트(event)가 발생하였을 경우, MAHA 이벤트(event) 등록 서버에 의하여 호출되는 콜백(callback) 함수로 응용 프로그램 개발자가 명시하는 함수이다.FIG. 7 is a diagram illustrating a processing process when an event occurs in FIG. 1. As shown in FIG. 1, a function called process_event () is called by a MAHA event registration server when an event occurs. callback) function that the application developer specifies.

상기 이벤트(event)가 발생하고, 이에 의해 콜백(callback) 함수가 호출되는 과정은 다음과 같다.The event occurs, whereby a callback function is called.

먼저, 응용 프로그램 개발자는 이벤트(event)를 처리할 콜백(callback) 함수를 만든다.First, the application developer creates a callback function to handle the event.

아울러 응용 프로그램 개발자는 register()를 이용하여 특정 MAHA 객체가 발생시키는 특정 이벤트(event)를 받을 경우에 호출된 콜백(callback) 함수를 이벤트(event) 등록 서버에 등록한다.In addition, the application developer registers a callback function, which is called when a specific MAHA object generates a specific event, by using register ().

그러면, 이벤트(event) 등록 서버는 register_event()를 호출하여 실제 이벤트(event)를 발생시킬 MAHA 객체에게 이벤트(event)가 발생하면 서버 자신의 send_event() 멤버 함수를 호출해 줄 것을 요청한다.Then, the event registration server calls register_event () to request the MAHA object that will generate the actual event to call the server's own send_event () member function when the event occurs.

이후 이벤트(event)가 발생하면, 상기 이벤트(event)를 발생시킨 MAHA 객체는 상기 이벤트(event)와 관련되는 이벤트(event) 등록 서버의 멤버 함수인send_event()를 호출한다.Then, when an event occurs, the MAHA object that generated the event calls send_event (), which is a member function of an event registration server related to the event.

그러면 이벤트(event) 등록 서버는 상기 send_event()에서 인자로 받은 정보를 바탕으로, 응용 프로그램 개발자가 등록시킨 콜백(callback) 함수를 호출한다.Then, the event registration server calls a callback function registered by the application developer based on the information received as the argument in the send_event ().

한편, 가상 장치(Virtual Device), 스트림 커넥션(Stream Connection), 멀티캐스트 스트림 커넥션(Multicast Stream Connection) 등과 함께, MAHA에서 제공하는 주요 앱스트랙션(abstraction)으로 그룹(Group)이 있다.Meanwhile, there is a group as a main application provided by MAHA along with a virtual device, a stream connection, a multicast stream connection, and the like.

상기 그룹(Group)은 가상 장치(Virtual Device)들을 그룹핑(grouping)하여 미디어 스트림을 제어하고 자원을 할당하는 역할을 한다.The group controls virtual media streams and allocates resources by grouping virtual devices.

즉 상기 그룹(Group)은 가상 장치(Virtual Device)와 스트림 커넥션(Stream Connection)을 통해 전송되는 미디어 스트림을 전체적으로 제어하고, 임의의 미디어 스트림이 응용 프로그램에서 요구하는 QoS를 만족하면서 전송되도록 미디어 스트림이 통과하는 각 가상 장치(Virtual Device)와 스트림 커넥션(Stream Connection)에 대해서 컴퓨터 시스템의 여러 자원들을 최적으로 할당한다.That is, the group controls the media stream transmitted through the virtual device and the stream connection as a whole, and the media stream is transmitted so that any media stream is transmitted while satisfying the QoS required by the application. Optimally allocate various resources of the computer system for each virtual device and stream connection that passes.

예들 들어, 그룹(Group)이 정의되어 있지 않은 상태에서, 오디오 데이터가 마이크에서 발생되어 스피커로 전송되는 경우 미디어 데이터 소스(source)로부터 싱크(sink)까지의 미디어 스트림을 제어하려면 상기 마이크와 스피커에 해당하는 가상 장치(Virtual Device)들과 이를 연결하는 스트림 커넥션(Stream Connection) 각각의 스트림 컨트롤러(Stream Controller)에게 별도로 제어 명령을 내려야 한다.For example, if no group is defined, and audio data is generated from the microphone and transmitted to the speaker, the microphone and speaker may be controlled to control the media stream from the media data source to the sink. A separate control command should be given to the respective Stream Controllers of the corresponding Virtual Devices and the Stream Connections connecting them.

그러나, 이들 가상 장치(Virtual Device)와 스트림 커넥션(Stream Connection)을 하나의 그룹(Group)으로 묶어주면 그룹(Group)에 정의된 스트림 컨트롤러(Stream Controller)에게 한 번만 제어 명령을 내려도 전체적으로 제어할 수 있게 된다.However, if you combine these virtual devices and stream connections into one group, you can totally control them even if you give only one control command to the stream controller defined in the group. Will be.

결국 소스 디바이스(source device)로부터 발생되어 싱크 디바이스(sink device)에 도달하여 소멸되는 하나의 미디어 스트림을 한 번에 제어하겠다는 것이 그룹(Group)을 정의한 의도이다.As a result, the intention of defining a group is to control a single media stream generated from a source device, reaching a sink device, and destroyed.

여기서 미디어 스트림은 사용자가 원하는 QoS를 만족해야 하는 단위이기도 하다.Here, the media stream is also a unit that must satisfy the QoS desired by the user.

상기 QoS인자로는 GuranteeLevel, Reliable, DelayBounds, BandwidthBounds, JitterBounds 등이 있을 수 있으며, 이들은 가상 자원(Virtual Resource) 클래스내에 정의된다.The QoS factors may include GuranteeLevel, Reliable, DelayBounds, BandwidthBounds, JitterBounds, and the like, which are defined in a virtual resource class.

예를 들면, 사용자가 그룹(Group)에 DelayBounds를 2초로 주었다면, 그룹(Group)은 이 2초를 마이크에 0.5초, 스트림 커넥션(Stream Connection)에 1초, 스피커에 0.5초를 배분하여 해당 자원을 할당한다.For example, if a user gives DelayBounds 2 seconds to a group, the group allocates 2 seconds to the microphone, 1 second to the Stream Connection, and 0.5 seconds to the speaker. Allocate resources.

이상에서 설명한 바와 같이 본 발명에 따른 분산 처리시스템에서의 멀티미디어 미들웨어는 다양한 형태의 멀티미디어 응용프로그램들이 공통적으로 다루고 있는 오디오, 비디오 등과 같은 스트림 형식의 연속 매체들을 체계적이고 효율적으로 처리하여 전송하도록 미들웨어를 구성함으로써 응용 프로그램 작성시 사용자에게 편리함을 제공할 수 있는 효과가 있다.As described above, the multimedia middleware in the distributed processing system according to the present invention configures the middleware to systematically and efficiently process and transmit continuous media in a stream format, such as audio and video, which are commonly handled by various types of multimedia applications. By doing so, there is an effect that can provide convenience to the user when writing the application.

Claims (5)

분산처리시스템에서 멀티미디어 응용 프로그램을 작성하기 위해 실제 하드웨어를 객체로 추상화하는 가상 장치(Virtual Device)와;A virtual device that abstracts real hardware into objects for creating a multimedia application program in a distributed processing system; 상기 가상 장치(Virtual Device)간의 미디어 데이터 전송을 위해 상기 가상 장치간의 연결을 협상하는 스트림 커넥션(Stream Connection)과;A stream connection for negotiating a connection between the virtual devices for the transmission of media data between the virtual devices; 상기 가상 장치(Virtual Device)들을 그룹핑(grouping)하여 미디어 스트림을 제어하고 자원을 할당하는 그룹(Group)과;A group for controlling a media stream and allocating resources by grouping the virtual devices; 상기 가상 장치(Virtual Device)들간의 다중 연결을 수행하는 멀티캐스트 스트림 커넥션(Multicast Stream Connection)과;A multicast stream connection for performing multiple connections between the virtual devices; 상기 가상 장치, 스트림 커넥션, 그룹, 멀티캐스트 스트림 커넥션과 같은 앱스트랙션들에서 정의한 인터페이스를 구현하여 연속 매체 데이터를 생산하거나 소비하는 하드웨어들을 제어하는 인터페이스 구현부와;An interface implementation unit for controlling hardware for producing or consuming continuous media data by implementing an interface defined in the application units such as the virtual device, stream connection, group, and multicast stream connection; 상기 가상 장치, 스트림 커넥션, 그룹, 멀티캐스트 스트림 커넥션간의 통신을 수행하는 객체 요구 중계기를 포함하여 구성된 것을 특징으로 하는 분산 처리시스템에서의 멀티미디어 미들웨어.Multimedia middleware in a distributed processing system comprising an object request repeater for performing communication between the virtual device, stream connection, group, multicast stream connection. 제 1항에 있어서, 상기 가상 장치(Virtual Device)는The method of claim 1, wherein the virtual device (Virtual Device) 각 가상 장치(Virtual Device)의 고유한 동작을 수행하기 위한 프로세싱 엘리먼트(Processing Element)와;A processing element for performing a unique operation of each virtual device; 상기 프로세싱 엘리먼트에 유니폼한 인터페이스를 제공하여, 상기 프로세싱 엘리먼트에서 생성된 미디어 데이터를 스트림 커넥션(Stream Connection)에 전달하거나 스트림 커넥션(Stream Connection) 내부 버퍼에 쌓인 미디어 데이터를 상기 프로세싱 엘리먼트로부터 읽어오는 다수개의 포트(Port)와;By providing a uniform interface to the processing element, the media data generated in the processing element to pass to the stream connection (Stream Connection) or a plurality of media data accumulated in the stream connection internal buffer from the processing element A port; 상기 다수개의 포트(Port)와 각각 접속되어 미디어 스트림의 위치 정보를 파악하거나 미디어 스트림의 흐름을 제어하는 포트 단위의 스트림 컨트롤러(Stream Controller)와 상기 가상 장치(Virtual Device) 단위의 스트림 컨트롤러(Stream Controller)와;A stream controller for each port connected to each of the plurality of ports to determine the location information of the media stream or to control the flow of the media stream, and a stream controller for the virtual device. )Wow; 상기 다수개의 포트(Port)와 각각 접속되어 상기 미디어 데이터의 처리 및 미디어 스트림의 제어와 분리되어 미디어 데이터의 형식에 관계된 구체적인 사항들을 추상화한 포맷(Format)을 포함하여 구성된 것을 특징으로 하는 분산 처리시스템에서의 멀티미디어 미들웨어.A distributed processing system comprising a format connected to each of the plurality of ports, each of which is separated from the processing of the media data and the control of the media stream to abstract specific details related to the format of the media data Middleware in the world. 이벤트(event)를 처리하기 위한 콜백(callback)함수를 생성하는 단계와;Generating a callback function for handling an event; 특정 MAHA 객체가 발생시키는 특정 이벤트(event)를 받을 경우 레지스터 함수를 이용하여 호출될 콜백(callback)함수를 이벤트(event) 등록 서버에 등록하는 단계와;Registering a callback function to be called using a register function in an event registration server when a specific event generated by a specific MAHA object is received; 실제 이벤트(event)를 발생시킬 MAHA 객체에게 이벤트(event)가 발생할 경우 이벤트(event) 등록 서버의 센드 이벤드 멤버 함수를 호출해 줄 것을 요청하는 단계와;Requesting a MAHA object to generate an actual event to call a send event member function of an event registration server when an event occurs; 상기 이벤트(event)가 발생하면 상기 이벤트(event)를 발생시킨 객체에서 상기 이벤트(event)와 관련되는 이벤트(event) 등록 서버의 멤버 함수인 센드 이벤트 함수를 호출하는 단계와;Invoking a send event function, which is a member function of an event registration server related to the event, from the object generating the event when the event occurs; 상기 센드 이벤트 함수를 통해 받은 정보를 바탕으로 응용 프로그램 개발자가 등록시킨 콜백(callback) 함수를 호출하는 단계로 이루어짐을 특징으로 하는 분산 처리시스템에서의 멀티미디어 미들웨어.Multimedia middleware in a distributed processing system comprising the step of calling a callback (callback) function registered by the application developer based on the information received through the send event function. 제 1 항에 있어서,The method of claim 1, 상기 스트림 커넥션(Stream Connection)을 통하여 가상 장치(Virtual Device)들을 네트워크상에서 연결할 경우에 상기 스트림 커넥션(Stream Connection)은 유니캐스트(Unicast) TSAP(Transport Service Address Pair)를 할당받는 것을 특징으로 하는 분산 처리시스템에서의 멀티미디어 미들웨어.Distributed connection, characterized in that the stream connection is assigned a unicast transport service address pair (TSAP) when the virtual devices are connected in a network through the stream connection. Multimedia middleware in the system. 제 1 항에 있어서,The method of claim 1, 상기 멀티캐스트 스트림 커넥션(Multicast Stream Connection)을 이용하여 가상 장치(Virtual Device)들을 네트워크상에서 연결할 경우에 상기 멀티캐스트 스트림 커넥션(Multicast Stream Connection)은 멀티캐스트 어드레스 할당 서버(server)로부터 멀티캐스트 어드레스(multicast address)를 할당받는 것을 특징으로 하는 분산 처리시스템에서의 멀티미디어 미들웨어.When the virtual devices are connected in a network using the multicast stream connection, the multicast stream connection is a multicast address from a multicast address allocation server. Multimedia middleware in a distributed processing system, characterized in that the address is assigned.
KR1019980045099A 1998-10-27 1998-10-27 multimedia middleware in distributed process system KR100339374B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019980045099A KR100339374B1 (en) 1998-10-27 1998-10-27 multimedia middleware in distributed process system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980045099A KR100339374B1 (en) 1998-10-27 1998-10-27 multimedia middleware in distributed process system

Publications (2)

Publication Number Publication Date
KR20000027208A KR20000027208A (en) 2000-05-15
KR100339374B1 true KR100339374B1 (en) 2002-07-18

Family

ID=19555534

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980045099A KR100339374B1 (en) 1998-10-27 1998-10-27 multimedia middleware in distributed process system

Country Status (1)

Country Link
KR (1) KR100339374B1 (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010105756A (en) * 2000-05-18 2001-11-29 김형순 Application programming interface for developing computer telephony interface service program and operating method thereof
US20020129099A1 (en) * 2001-03-08 2002-09-12 International Business Machines Corporation Method and apparatus for virtualizing a serial port in a data processing system
KR100462876B1 (en) * 2002-03-14 2004-12-17 삼성전자주식회사 Method for using standard platform of network equipments
KR100783679B1 (en) * 2006-05-11 2007-12-07 한국과학기술원 A Middleware System Facilitating Development, Deployment, and Provision of Stream-based Services
CN103034489B (en) * 2012-12-05 2016-03-23 中国电子科技集团公司第三十二研究所 Be applied to the middleware system of track traffic signal security system
KR101701224B1 (en) * 2015-11-30 2017-02-01 고려대학교 산학협력단 Distributed parallel system for real-time stream data based on object model

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR980010813A (en) * 1996-07-12 1998-04-30 황대준 Session management system and its method in a mutual participation multimedia application development environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR980010813A (en) * 1996-07-12 1998-04-30 황대준 Session management system and its method in a mutual participation multimedia application development environment

Also Published As

Publication number Publication date
KR20000027208A (en) 2000-05-15

Similar Documents

Publication Publication Date Title
EP0620935B1 (en) Call management in a collaborative working network
US5652866A (en) Collaborative working method and system for a telephone to interface with a collaborative working application
US5649105A (en) Collaborative working in a network
US5719942A (en) System and method for establishing a communication channel over a heterogeneous network between a source node and a destination node
US5742772A (en) Resource management system for a broadband multipoint bridge
US7971207B2 (en) Method, system, and computer program product for representing and connection-oriented device in a known format
US20060064701A1 (en) Multi-instance input device control
JPH09205633A (en) Distributed interactive multimedia service system
US5740384A (en) Interactive multimedia system using active backplane having programmable interface to reconfigure the media stream produced by each component
EP1962472B1 (en) Multimedia application interface
KR100339374B1 (en) multimedia middleware in distributed process system
Mines et al. DAVE: A plug and play model for distributed multimedia application development
Schulzrinne Dynamic configuration of conferencing applications using pattern-matching multicast
Coulson et al. A CORBA compliant real-time multimedia platform for broadband networks
US20030065804A1 (en) Real Time transport protocol connector
Chen et al. Designing a distributed collaborative environment
Schulzrinne et al. Message-Based API for the Dynamic Configuration of Multimedia Conferencing Applications
Trossen Scalable group communication in tightly coupled environments
Murphy et al. Integrating multimedia streams into a distributed computing system
JPH1188375A (en) Transmission system provided with management software
Amor et al. A Survey of Multimedia Software Engineering.
Surendran et al. The Design and Performance of a CORBA Audio/Video Streaming Service
Min et al. An implementation model of IntServ/RSVP based CORBA A/V stream service
Pinto et al. Distributed Objects: an approach to sharing multimedia information
Zhang et al. The design and implementation of a Jini/Java-based A/V stream control and management

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20060502

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee