KR101051182B1 - A combining and dividing device for multimedia streams based on directshow filter graph - Google Patents

A combining and dividing device for multimedia streams based on directshow filter graph Download PDF

Info

Publication number
KR101051182B1
KR101051182B1 KR1020110021498A KR20110021498A KR101051182B1 KR 101051182 B1 KR101051182 B1 KR 101051182B1 KR 1020110021498 A KR1020110021498 A KR 1020110021498A KR 20110021498 A KR20110021498 A KR 20110021498A KR 101051182 B1 KR101051182 B1 KR 101051182B1
Authority
KR
South Korea
Prior art keywords
stream
filter
output
input
graph
Prior art date
Application number
KR1020110021498A
Other languages
Korean (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 주식회사 다이나믹앤라이브
Priority to KR1020110021498A priority Critical patent/KR101051182B1/en
Application granted granted Critical
Publication of KR101051182B1 publication Critical patent/KR101051182B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • 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/41Structure of client; Structure of client peripherals
    • H04N21/414Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance
    • H04N21/4143Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance embedded in a Personal Computer [PC]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

PURPOSE: A multimedia stream bond distribution device based on direct show filter graph is provided to add or delete an input device without interrupting multimedia data stream. CONSTITUTION: An input graph generating unit(30) configures input stream from an input device. A stream tank processing unit generates a stream tank which outputs output stream by selecting an input stream. An output graph generating unit generates an output filter graph to an output device.

Description

다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치 { A combining and dividing device for multimedia streams based on DirectShow filter graph }A combining and dividing device for multimedia streams based on DirectShow filter graph}

본 발명은 다이렉트쇼 필터그래프를 이용하여, 적어도 하나의 입력장치로부터 데이터 스트림(이하 입력 스트림)을 입력받고 상기 입력 스트림을 결합하고 분배하여 출력장치로 출력하는 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치에 관한 것이다.The present invention is a directshow filter graph-based multimedia stream combining distribution device that receives a data stream (hereinafter referred to as an input stream) from at least one input device, combines, distributes, and outputs the input stream to an output device using a directshow filter graph. It is about.

특히, 본 발명은 입력장치 및 출력장치 별로 필터그래프를 생성하고 상기 필터그래프의 파이프 필터를 서로 결합하거나 분배하는 스트림 탱크를 구성하는 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치에 관한 것이다.
In particular, the present invention relates to a DirectShow filter graph-based multimedia stream combining and distributing apparatus for generating a filter graph for each input device and an output device, and configuring a stream tank for combining or distributing pipe filters of the filter graph.

마이크로소프트사는 윈도우즈 상에서 비디오의 재생이나 처리과정의 개발을 위한 다이렉트쇼(DirectShow) SDK(software development kit)를 제공한다. 다이렉트쇼는 소프트웨어 개발자들이 미디어 파일이나 스트림을 가지고 다양한 기능을 수행할 수 있는 멀티미디어 프레임워크이자 API(Application Programming Interface)이다. 즉, 여러 가지 포맷(MPEG, AV)으로 부호화된 디지털 데이터를 영상으로 재생할 수 있도록 동적 링크 라이브러리(dynamic-link library, DLLs)를 제공하여 필터의 제작을 용이하게 한다.Microsoft provides the DirectShow SDK (software development kit) for developing video playback and processing on Windows. DirectShow is a multimedia framework and application programming interface (API) that allows software developers to perform various functions with media files or streams. That is, a dynamic-link library (DLLs) is provided so that digital data encoded in various formats (MPEG, AV) can be reproduced as an image, thereby facilitating the manufacture of a filter.

도 1은 일반적인 다이렉트쇼 필터의 구성과 멀티미디어 스트림의 전송로직을 개략적으로 나타낸 도면이다. 다이렉트쇼는 다이렉트쇼에서 가장 핵심적인 객체인 필터라는 모듈러 컴포넌트(modular component)를 사용하여 멀티미디어 스트림을 어떠한 식으로 제어하고 처리할 것인지를 정의한다.1 is a diagram schematically illustrating a configuration of a general direct show filter and a transmission logic of a multimedia stream. DirectShow uses a modular component called Filter, the most important object in DirectShow, to define how to control and process multimedia streams.

어플리케이션(100)은 필터 그래프 매니저(filter graph manager)(110)라 불리는 개체를 사용하여 필터 그래프(filter graph)를 생성하고, 멀티미디어 스트림이 필터 그래프를 통하여 움직이게 한다. 필터 그래프는 다양한 종류의 필터들이 연결된 집합으로 구성되며, 이러한 필터들은 입력 핀 또는 출력 핀을 가지고(혹은 입력 핀과 출력 핀을 가지고) 연결된다. 이러한 핀은 필터 그래프상에서 연결된 필터 간에 멀티미디어 스트림을 전달할 때, 필터간의 연결이 이루어지는 부분으로서 멀티미디어 스트림의 전달 통로라고 할 수 있다.The application 100 creates a filter graph using an object called a filter graph manager 110 and allows the multimedia stream to move through the filter graph. The filter graph consists of a set of connected various types of filters, which are connected with input pins or output pins (or with input pins and output pins). When the pin transfers the multimedia stream between the connected filters on the filter graph, the pin is a connection path of the multimedia stream as a connection between the filters.

필터 그래프에 구성된 필터들은 도 1에 도시된 바와 같이, 크게 소스 필터(120), 변환 필터(130), 렌더 필터(140)로 구분된다. 소스 필터(120)는 디스크, 인터넷 서버 또는 VCR 등 입력장치(또는 출력장치)로부터 소스를 얻고, 필터 그래프에게 알리는 역할을 한다. 변환 필터(130)는 소스 필터(120)로부터 멀티미디어 스트림을 전달 받고 전달 받은 스트림을 오디오 스트림과 비디오 스트림으로 분리하거나 복호화(decoding) 할 수 있다.As shown in FIG. 1, the filters configured in the filter graph are largely divided into a source filter 120, a transform filter 130, and a render filter 140. The source filter 120 obtains a source from an input device (or an output device) such as a disk, an internet server, or a VCR, and informs the filter graph. The transform filter 130 may receive the multimedia stream from the source filter 120, and may separate or decode the received stream into an audio stream and a video stream.

또한, 분리 혹은 복호화된 멀티미디어 스트림을 렌더 필터(140)로 전달하는 역할을 한다. 렌더 필터(140)는 복호화된 멀티미디어 스트림(11)을 렌더링(rendering)하여 출력한다. 필터그래프 매니저(110)는 필터그래프를 생성하여, 소스 필터(120), 변환 필터(130) 및 렌더 필터(140)로 구성하여 그 필터들의 동작을 제어하는 역할을 한다.
In addition, it serves to deliver the separated or decoded multimedia stream to the render filter 140. The render filter 140 renders and outputs the decoded multimedia stream 11. The filter graph manager 110 generates a filter graph and configures the source filter 120, the transform filter 130, and the render filter 140 to control the operation of the filters.

다이렉트쇼의 필터그래프로 멀티미디어 스트리밍을 처리하는 일례를 도 2를 참조하여 설명한다.An example of processing multimedia streaming by the filter graph of the direct show will be described with reference to FIG. 2.

일반적으로 다이렉트쇼에서는 다수의 입력 장치로부터 들어오는 스트림(stream) 데이터를 조합하고 선택하는 방식을 하나의 필터 그래프로 처리한다. 이런 사례는 두 개이상의 영상을 PIP(Picture in Picture)같이 하나의 영상으로 조합하거나 사운드(또는 오디오) 데이터를 믹싱(mixing)하는 등의 경우에 자주 사용한다. 이 경우 필터 그래프를 실행(run)중에 새로운 입출력장치(또는 디바이스)를 추가하거나 삭제할 경우 필터 그래프를 멈춰(stop)야 한다.In general, DirectShow processes a method of combining and selecting stream data coming from a plurality of input devices into one filter graph. This example is often used when combining two or more images into a single image, such as a picture in picture, or mixing sound (or audio) data. In this case, when adding or deleting a new I / O device (or device) while the filter graph is running, the filter graph must be stopped.

도 2a에서 보는 바와 같이, 다수의 필터를 일방향으로 연결하여, 멀티미디어 스트리밍을 처리하는 필터그래프를 작성한다. 즉, 카메라 1의 소스 필터에 의해 카메라 1의 화상 스트리밍을 받고, 오디오 1 소스필터에 의해 소리를 받는다. 화상 데이터는 H.264 인코딩 필터에 의해 H.264 포맷의 화상으로 인코딩되고, 오디오 데이터는 AAC 인코딩 필터에 의해 ACC 코덱으로 인코딩된다. 그리고 먹스 필터(muxer filter)에 의해 H.264 화상과 AAC 오디오 스트림이 서로 결합되어 하나의 영상파일(mp4 파일)로 생성된다. 이때 생성된 영상파일은 저장필터(File writer filter)에 의해 저장된다. 도 2a의 필터그래프에서 필터들 사이에 연결되는 선들을 핀(pin)이라 한다.As shown in Fig. 2A, a plurality of filters are connected in one direction to create a filter graph for processing multimedia streaming. In other words, the camera 1 receives the image of the camera 1 by the source filter, and the audio 1 source filter receives the sound. The picture data is encoded into the picture in H.264 format by the H.264 encoding filter, and the audio data is encoded into the ACC codec by the AAC encoding filter. A muxer filter combines the H.264 image and the AAC audio stream into one image file (mp4 file). The generated image file is stored by a file writer filter. In the filter graph of FIG. 2A, the lines connected between the filters are referred to as pins.

즉, 필터그래프 매니저(110)에 의해, 도 2a와 같은 필터 그래프가 생성되고, 그 필터그래프가 실행(run)이 되면 카메라 1과 오디오 1로부터 데이터를 받기 시작하고. 그래서 각각 H.264 코덱과 AAC 코덱에 의해 인코딩되어 mp4 파일 형태로 결합된 데이터들이 디스크에 저장된다.That is, the filter graph manager 110 generates a filter graph as shown in Fig. 2A, and when the filter graph is run, it starts to receive data from the camera 1 and the audio 1. Therefore, the data encoded by the H.264 codec and the AAC codec, respectively, and combined into an mp4 file are stored on the disk.

한편, 필터그래프는 하나의 COM(Component Object Model) 컴포넌트 객체로서 구현된다. 따라서 필터그래프는 하나의 COM 서버로서, 멀티미디어 데이터를 처리하여 그 결과를 출력하는 서비스를 제공한다. 즉, 필터그래프를 생성하여 실행시키는 것은 하나의 COM 객체를 생성하여 실행시키는 것과 같다.On the other hand, the filter graph is implemented as a single Component Object Model (COM) component object. Therefore, the filter graph is a COM server, and provides a service that processes multimedia data and outputs the result. In other words, creating and executing a filter graph is equivalent to creating and executing a COM object.

또한, 상기 필터그래프에 의해 영상파일이 저장 중에 카메라 2가 새로 추가되어, 카메라1과 카메라2 화상을 PIP로 결합하는 경우를 도 2b를 참조하여 설명한다. 한편, 새로 추가된 카메라 2로 데이터를 받아 이를 PIP(Picture-in-Picture)형태로 결합하고자 한다면 일단 필터 그래프를 중단(stop)해야 한다.In addition, a case where the camera 2 is newly added while the image file is being stored by the filter graph, and the camera 1 and the camera 2 image are combined with the PIP will be described with reference to FIG. 2B. On the other hand, if you want to receive data from the newly added Camera 2 and combine it into a picture-in-picture format, you must stop the filter graph.

그리고 도 2b에서 보는 바와 같이, 카메라 2(입력장치)로부터 화상 데이터를 받아주는 카메라 2 소스 필터를 추가하고, 카메라 1과 카메라 2의 결과를 결합하는 PIP 처리필터를 추가한다. PIP 처리필터는 H.264 인코딩을 위해 인코딩 필터와 연결된다. As shown in FIG. 2B, a camera 2 source filter for receiving image data from camera 2 (input device) is added, and a PIP processing filter for combining the results of camera 1 and camera 2 is added. The PIP processing filter is coupled with an encoding filter for H.264 encoding.

즉, 입력장치의 추가와 PIP 결합 기능 추가를 위해 필터그래프를 다시 작성해야 한다. 이렇게 작성된 필터 그래프는 다시 실행(run)해야 한다. 하나의 COM객체인 필터그래프를 실행 중에 변경시킬 수는 없기 때문이다. In other words, filter graph must be rewritten to add input device and PIP coupling function. This filter graph needs to be run again. This is because a filter graph, a COM object, cannot be changed at runtime.

따라서 종래 단일한 필터그래프를 이용하여 멀티미디어를 처리하는 방법은 상기와 같이 새로운 디바이스의 추가 시 필터 그래프를 중단하고 다시 시작해야 하는 문제점이 있다. 즉, 일반적으로 다이렉트쇼(DirectShow)를 활용한 영상과 소리 데이터 처리는 다이렉트쇼(DirectShow)의 필터그래프를 동작 시키는 동안에는 새로운 입력을 받을 수 없다. 이는 실시간 방송같이 중단 없는 스트림 처리를 요하는 경우에 매우 난처한 일이 아닐 수 없다.Therefore, the conventional method of processing multimedia using a single filter graph has a problem in that the filter graph should be stopped and restarted when adding a new device as described above. That is, in general, image and sound data processing using DirectShow cannot receive new input while the DirectShow filter graph is operated. This can be very embarrassing if it requires uninterrupted stream processing such as real time broadcasting.

즉, 라이브 방송의 경우 카메라를 교체하거나 배터리를 교체하기 위해 입력장치를 중단하는 경우, 다이렉트쇼(DirectShow)의 필터그래프는 중단시켜야 하고, 중단되면 곧바로 방송도 중단되어야 한다. 이를 막기 위해서는 스위쳐(switcher)라는 고가의 영상 교체 장치를 설치할 수 있다. 즉, 카메라 같은 입력 장치를 이에 연결한 다음 다시 다이렉트쇼(DirectShow)가 실행되고 있는 컴퓨터에 이 장비를 연결하여 사용해야 한다.That is, in case of a live broadcast, when the input device is stopped to replace the camera or replace the battery, the filter graph of DirectShow should be stopped, and the broadcast should be stopped immediately. To prevent this, an expensive image changer called a switcher can be installed. In other words, you need to connect an input device such as a camera to it, and then connect the device to a computer running DirectShow.

요약하면, 다이렉트쇼(DirectShow) 상의 입출력도 필터그래프가 동작하기 전에 정의한 장치로부터 입력받거나 송출할 수 있으며 동작 중에는 새로운 입출력 장치를 추가할 수 없다. 만약 새로운 입출력 장치를 추가하려면 다이렉트쇼(DirectShow)를 중단하고 출력장치를 추가 한 후에 재구동해야 하는 문제점이 있다.In summary, I / O on DirectShow can also be input or sent from a device defined before the filter graph is running, and new I / O devices cannot be added during operation. If you want to add a new I / O device, you need to stop DirectShow and restart after adding an output device.

본 발명의 목적은 상술한 바와 같은 문제점을 해결하기 위한 것으로, 멀티미디어 데이터의 스트림을 중단하지 않고도 입력장치를 추가, 삭제, 교체, 결합 등을 할 수 있고, 출력장치(또는 송출장치)도 중단없이 추가 또는 삭제가 가능한 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치를 제공하는 것이다.An object of the present invention is to solve the above problems, it is possible to add, delete, replace, combine, etc. input device without interrupting the stream of multimedia data, and also output device (or transmission device) without interruption The present invention provides a direct stream filter graph-based multimedia stream combining / distributing device that can be added or deleted.

또한, 본 발명의 목적은 입력장치 및 출력장치 별로 필터그래프를 생성하고 상기 필터그래프의 파이프 필터를 서로 결합하거나 분배하는 스트림 탱크를 구성하는 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치를 제공하는 것이다.
It is also an object of the present invention to provide a DirectShow filter graph-based multimedia stream combining distribution device for generating a filter graph for each input device and output device, and configuring a stream tank for combining or distributing pipe filters of the filter graph.

상기 목적을 달성하기 위해 본 발명은 다이렉트쇼 필터그래프를 이용하여, 적어도 하나의 입력장치로부터 데이터 스트림(이하 입력 스트림)을 입력받고 상기 입력 스트림을 결합하고 분배하여 출력장치로 출력하는 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치에 관한 것으로서, 하나의 입력 스트림에 대하여 하나의 입력 필터그래프를 생성하되, 상기 입력 필터그래프를 상기 입력 스트림을 입력장치로부터 입력받는 필터(이하 입력 디바이스 필터) 및 상기 입력 스트림을 내보내는 필터(이하 입력 파이프 필터)로 구성하는 입력그래프 생성부; 하나 이상의 입력 파이프 필터의 입력 스트림을 수신하고 수신한 입력 스트림을 선택하여 출력 스트림으로 출력하는 스트림 탱크를 생성하는 스트림탱크 처리부; 및, 하나의 출력장치에 대하여 하나의 출력 필터그래프를 생성하되, 상기 출력 필터그래프를 상기 스트림 탱크의 출력 스트림을 입력받는 필터(이하 출력 파이프 필터) 및 상기 출력장치로 내보내는 필터(이하 출력장치 필터)로 구성하는 출력그래프 생성부를 포함하는 것을 특징으로 한다.In order to achieve the above object, the present invention uses a directshow filter graph to receive a data stream (hereinafter, referred to as an input stream) from at least one input device, combines and distributes the input stream, and outputs the output to the output device. An apparatus for combining and distributing a multimedia stream, the apparatus comprising: generating one input filter graph for one input stream, wherein the input filter graph receives the input stream from an input device (hereinafter referred to as an input device filter) and the input stream; An input graph generation unit configured to output a filter (hereinafter referred to as an input pipe filter); A stream tank processing unit configured to receive an input stream of at least one input pipe filter and to generate a stream tank for selecting and outputting the received input stream as an output stream; And one output filter graph for one output device, wherein the output filter graph is a filter for receiving an output stream of the stream tank (hereinafter, referred to as an output pipe filter) and a filter for outputting to the output device (hereinafter, referred to as an output device filter). It characterized in that it comprises an output graph generating unit consisting of).

또, 본 발명은 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치에 있어서, 상기 스트림탱크는 하나 이상의 출력 스트림을 출력하는 것을 특징으로 한다.In addition, the present invention is a direct-show filter graph-based multimedia stream combined distribution device, the stream tank is characterized in that for outputting one or more output streams.

또, 본 발명은 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치에 있어서, 상기 스트림탱크는 적어도 2개의 입력 스트림을 결합하고, 결합한 스트림을 하나의 출력 스트림으로 출력할 수 있는 것을 특징으로 한다. In another aspect, the present invention provides a directshow filter graph-based multimedia stream combining distribution apparatus, wherein the stream tank combines at least two input streams and outputs the combined stream as one output stream.

또, 본 발명은 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치에 있어서, 상기 스트림 탱크는 입력 스트림의 연결 요청에 의하여 입력 파이프 필터와 추가 연결하여 입력 스트림을 수신하는 것을 특징으로 한다.In another aspect, the present invention, in the DirectShow filter graph-based multimedia stream combined distribution device, the stream tank is further connected to the input pipe filter in response to the connection request of the input stream to receive the input stream.

또, 본 발명은 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치에 있어서, 상기 스트림 탱크는 출력 스트림의 출력 요청에 의하여 출력 스트림을 추가 생성하는 것을 특징으로 한다.In addition, the present invention is a direct-show filter graph-based multimedia stream combined distribution device, characterized in that the stream tank further generates an output stream in response to the output request of the output stream.

또, 본 발명은 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치에 있어서, 상기 스트림탱크 처리부는 입력장치의 종류에 따라 스트림 탱크를 따로 생성하는 것을 특징으로 한다.In another aspect, the present invention, in the direct-show filter graph-based multimedia stream combined distribution device, the stream tank processing unit generates a stream tank separately according to the type of input device.

또, 본 발명은 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치에 있어서, 상기 출력 필터그래프는 입력장치로부터 직접 입력받는 입력 디바이스 필터를 구성할 수 있는 것을 특징으로 한다.In addition, the present invention is a direct show filter graph-based multimedia stream combined distribution device, the output filter graph is characterized in that it can configure an input device filter directly input from the input device.

또, 본 발명은 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치에 있어서, 상기 출력 필터그래프는 서로 다른 스트림 탱크와 동시에 출력 파이프 필터를 각각 연결할 수 있는 것을 특징으로 한다.In addition, the present invention is a direct-show filter graph-based multimedia stream combined distribution device, the output filter graph is characterized in that it is possible to connect the output pipe filter with the different stream tanks, respectively.

또, 본 발명은 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치에 있어서, 상기 출력 필터그래프는 서로 다른 종류의 스트림 탱크와 동시에 출력 파이프 필터를 각각 연결할 수 있는 것을 특징으로 한다.
In addition, the present invention is a direct-show filter graph-based multimedia stream combined distribution device, the output filter graph is characterized in that it is possible to connect the output pipe filter with the stream tank of different types, respectively.

상술한 바와 같이, 본 발명에 따른 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치에 의하면, 멀티미디어 데이터의 스트림을 중단하지 않고도 입력장치를 추가, 삭제, 교체, 결합 등을 할 수 있고, 출력장치(또는 송출장치)도 중단없이 추가 또는 삭제를 할 수 있는 효과가 얻어진다.As described above, according to the DirectShow filter graph-based multimedia stream combining distribution apparatus according to the present invention, an input apparatus can be added, deleted, replaced, combined, and the like without interrupting the stream of multimedia data, and the output apparatus (or Dispensing device) can also be added or deleted without interruption.

도 1은 일반적인 다이렉트쇼 필터의 구성과 멀티미디어 스트림의 전송로직을 개략적으로 나타낸 도면이다.
도 2는 일반적인 다이렉트쇼 필터의 구성에 의한 필터그래프를 예시한 도면이다.
도 3은 본 발명을 실시하기 위한 전체 시스템 구성의 일례를 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치의 구성에 대한 블록도이다.
도 5는 본 발명의 일실시예에 따른 컴포넌트 객체들 사이의 구조를 도시한 것이다.
도 6은 본 발명에 따른 입출력 필터그래프의 일례를 도시한 것이다.
도 7은 본 발명에 따른 각 컴포넌트 객체의 작업 수행을 설명하는 흐름도이다.
도 8은 본 발명에 따라 필터그래프들의 구조가 변경되는 과정을 도시한 것이다.
도 9와 도 10은 본 발명의 일실시예에 따라 구현된 일례의 화면 및 필터그래프 구조를 도시한 것이다.

* 도면의 주요 부분에 대한 부호의 설명 *
10 : 단말기 21 : 입력장치
30 : 스트림 결합분배 장치 31 : 입력그래프 생성부
32 : 스트림탱크 처리부 33 : 출력그래프 생성부
51 : 입력필터 그래프 52 : 스트림탱크
53 : 출력필터 그래프
60 : 필터그래프 매니저 61 : 소스필터
62 : 변환필터 63 : 렌더필터
1 is a diagram schematically illustrating a configuration of a general direct show filter and a transmission logic of a multimedia stream.
2 is a diagram illustrating a filter graph by the configuration of a general direct show filter.
3 is a diagram showing an example of the overall system configuration for implementing the present invention.
4 is a block diagram of a configuration of a directshow filter graph-based multimedia stream combining distribution apparatus according to an embodiment of the present invention.
5 illustrates a structure between component objects according to an embodiment of the present invention.
6 illustrates an example of an input / output filter graph according to the present invention.
7 is a flowchart illustrating the performance of each component object according to the present invention.
8 shows a process of changing the structure of the filter graph in accordance with the present invention.
9 and 10 illustrate exemplary screen and filter graph structures implemented according to an embodiment of the present invention.

Explanation of symbols on the main parts of the drawings
10: terminal 21: input device
30: stream combining distribution device 31: input graph generation unit
32: stream tank processing unit 33: output graph generation unit
51: input filter graph 52: stream tank
53: output filter graph
60: Filter Graph Manager 61: Source Filter
62: conversion filter 63: render filter

이하, 본 발명의 실시를 위한 구체적인 내용을 도면에 따라서 설명한다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, the present invention will be described in detail with reference to the drawings.

또한, 본 발명을 설명하는데 있어서 동일 부분은 동일 부호를 붙이고, 그 반복 설명은 생략한다.
In addition, in describing this invention, the same code | symbol is attached | subjected and the repeated description is abbreviate | omitted.

먼저, 본 발명을 실시하기 위한 전체 시스템 구성의 일례를 도 3을 참조하여 설명한다.First, an example of the whole system configuration for implementing this invention is demonstrated with reference to FIG.

도 3a에서 도시한 바와 같이, 본 발명을 실시하기 위한 전체 시스템은 단말기(10), 입력장치(21), 및, 단말기에 설치된 멀티미디어 스트림 결합분배 장치(30)로 구성된다.As shown in FIG. 3A, the entire system for implementing the present invention includes a terminal 10, an input device 21, and a multimedia stream combining and distributing device 30 installed in the terminal.

단말기(10)는 PC, 노트북, PDA, 태블릿PC, 스마트폰 등 컴퓨팅 기능을 가진 단말기로서, 멀티미디어 데이터를 저장하거나 입력 또는 수신한다. 즉, 멀티미디어 데이터는 하드디스크 등의 저장매체에 저장되거나, 카메라 또는 마이크 등 외부 입력장치(21)를 통해 실시간으로 입력될 수도 있다. 또한, 네트워크를 통해 멀티미디어 데이터를 스트리밍으로 수신할 수도 있다.The terminal 10 is a terminal having a computing function such as a PC, a notebook computer, a PDA, a tablet PC, a smartphone, and stores, inputs or receives multimedia data. That is, the multimedia data may be stored in a storage medium such as a hard disk or may be input in real time through an external input device 21 such as a camera or a microphone. In addition, it is possible to receive multimedia data by streaming over a network.

또한 단말기(10)는 멀티미디어 데이터를 출력하는 출력장치를 구비하거나 연동될 수 있다. 출력장치는 파일저장, 모니터, 네트워크로의 스트리밍 전송 등 데이터를 출력하는 하드웨어 또는 소프트웨어 장치들을 말한다.In addition, the terminal 10 may be provided with or interlocked with an output device for outputting multimedia data. Output devices are hardware or software devices that output data, such as file storage, monitor, and streaming to a network.

멀티미디어 스트림 결합분배 장치(30)는 단말기(10)에 설치되는 프로그램 장치로서, 단말기(10)에 저장된 멀티미디어 데이터 또는 입력장치(21)로부터 입력받는 멀티미디어 데이터 등을 실시간으로 입력받아, 그 데이터(또는 스트림, 스트리밍)를 결합하거나 특정 출력장치로 분배하거나 출력한다.The multimedia stream combined distribution device 30 is a program device installed in the terminal 10. The multimedia stream combined distribution device 30 receives multimedia data stored in the terminal 10 or multimedia data received from the input device 21 in real time, and the data (or Streams, streaming) or distribute or output to specific output devices.

한편, 단말기(10)에는 다이렉트쇼(DirectShow) 어플리케이션이 설치되어, 멀티미디어 스트림 결합분배 장치(30)는 다이렉트쇼 어플리케이션을 이용하여 필터그래프 등을 생성하고 제어한다. 앞서 배경기술에서 설명한 바와 같이, 다이렉트쇼는 다이렉트쇼에서 가장 핵심적인 객체인 필터라는 모듈러 컴포넌트(modular component)를 사용하여 멀티미디어 스트림을 어떠한 식으로 제어하고 처리할 것인지를 정의하는 멀티미디어 프레임워크이자 API(Application Programming Interface)이다.On the other hand, a direct show (DirectShow) application is installed in the terminal 10, the multimedia stream combination distribution device 30 generates and controls a filter graph and the like using the direct show application. As described in the Background section above, DirectShow is a multimedia framework and API that defines how to control and process multimedia streams using a modular component called Filter, the most essential object of DirectShow. Application Programming Interface).

또한, 도 3b에서 보는 바와 같이, 다른 실시예로서, 멀티미디어 스트림 결합분배 장치(30)는 네트워크 상의 하나의 서버로서 구현될 수도 있다.In addition, as shown in Figure 3b, as another embodiment, the multimedia stream combined distribution device 30 may be implemented as one server on the network.

멀티미디어 스트림 결합분배 장치(30)는 통상의 서버로서, 네트워크(13)에 연결되어, 사용자 단말(10)로부터 수신한 멀티미디어 스트림을 결합분배(선택, 결합, 처리, 분배)하여 다른 사용자 단말(10a)로 전송시켜줄 수 있다. 따라서 상기와 같은 구성을 통해, 멀티미디어 방송 등을 구현할 수도 있다.
The multimedia stream combined distribution apparatus 30 is a conventional server, connected to the network 13, and combined (distributed, selected, combined, processed, distributed) of the multimedia stream received from the user terminal 10 to another user terminal 10a. ) Can be sent. Therefore, through the above configuration, it is possible to implement a multimedia broadcast.

다음으로, 본 발명의 일실시예에 따른 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치(또는 스트림 결합분배 장치)(30)의 구성을 도 4를 참조하여 설명한다.Next, a configuration of the directshow filter graph-based multimedia stream combining distribution device (or stream combining distribution device) 30 according to an embodiment of the present invention will be described with reference to FIG. 4.

스트림 결합분배 장치(30)는 다이렉트쇼 필터그래프를 이용하여, 적어도 하나의 입력장치로부터 데이터 스트림(이하 입력 스트림)을 입력받고 상기 입력 스트림을 결합하고 분배하여 출력장치로 출력한다.The stream combining and distributing apparatus 30 receives a data stream (hereinafter referred to as an input stream) from at least one input apparatus using a direct show filter graph, combines and distributes the input streams, and outputs the output stream to the output apparatus.

도 4에서 보는 바와 같이, 스트림 결합분배 장치(30)는 입력그래프 생성부(31), 스트림탱크 처리부(32), 및, 출력그래프 생성부(33)로 구성된다. 그리고 입력그래프 생성부(31)는 입력 필터그래프(51)를, 스트림탱크 처리부(32)는 스트림 탱크(52)를, 출력그래프 생성부(33)는 출력 필터그래프(53)를 각각 생성한다.As shown in FIG. 4, the stream combining distribution device 30 includes an input graph generator 31, a stream tank processor 32, and an output graph generator 33. The input graph generator 31 generates the input filter graph 51, the stream tank processor 32 generates the stream tank 52, and the output graph generator 33 generates the output filter graph 53, respectively.

또한, 도 5에서 보는 바와 같이, 입력 필터그래프(51) 및 출력 필터그래프(53)는 다이렉트쇼(또는 다이렉트쇼의 필터그래프 매니저)를 통해, 입력 필터그래프(51) 또는 출력 필터그래프(53)를 생성한다. 즉, 입력 필터그래프(51) 및 출력 필터그래프(53)는 다이렉트쇼의 필터그래프로서 COM(Component Object Model) 객체로서 생성된다.5, the input filter graph 51 and the output filter graph 53 are connected to the input filter graph 51 or the output filter graph 53 through a direct show (or a filter graph manager of the direct show). Create That is, the input filter graph 51 and the output filter graph 53 are generated as COM (Component Object Model) objects as the filter graph of the direct show.

필터그래프 매니저(60)는 필터그래프를 생성하고, 생성된 필터그래프를 하나의 COM 객체로서 실행시킨다. 또한, 필터그래프 매니저(60)는 소스 필터(61), 변환 필터(62) 및 렌더 필터(63)를 구비하여 그 필터들의 동작을 제어하는 역할을 한다. 즉, 필터그래프는 상기와 같은 종류의 필터들로 구성되고, 필터그래프가 실행되면 필터그래프의 각 구성요소인 필터들을 소스 필터(61), 변환 필터(62) 및 렌더 필터(63) 등이 처리해준다.The filter graph manager 60 generates a filter graph and executes the generated filter graph as one COM object. In addition, the filter graph manager 60 is provided with a source filter 61, a transform filter 62 and a render filter 63 serves to control the operation of the filters. That is, the filter graph is composed of the above types of filters, and when the filter graph is executed, the source filter 61, the transform filter 62, the render filter 63, and the like, which are components of the filter graph, are processed. Do it.

한편, 스트림탱크 처리부(32)는 다이렉트쇼의 필터그래프 매니저를 이용하지 않고, COM(Component Object Model) 객체인 스트림탱크(52)를 직접 생성한다.On the other hand, the stream tank processing unit 32 directly generates the stream tank 52 which is a COM (Component Object Model) object without using the filter graph manager of the direct show.

따라서 입력 필터그래프(51), 스트림탱크(52), 및, 출력 필터그래프(53)는 각각 하나의 COM객체로서, 독립적으로 실행한다.Therefore, the input filter graph 51, the stream tank 52, and the output filter graph 53 are each independently executed as one COM object.

특히, 도 5와 같이, 입력 필터그래프(51)는 입력장치로부터 멀티미디어 데이터(또는 스트리밍, 스트림)를 수신하여(또는 입력받아) 처리하여 출력하면, 그 입력 필터그래프(51)의 출력을 스트림탱크(52)가 수신한다. 그리고 스트림탱크(52)도 그 멀티미디어 데이터(또는 스트림)를 분배(또는 선택) 또는 결합하여 출력하고, 그 출력을 출력 필터그래프(53)에서 입력받아 처리하고 최종적으로 출력장치로 출력한다.In particular, as shown in FIG. 5, when the input filter graph 51 receives (or receives) multimedia data (or streaming or stream) from an input device, processes the output, outputs the output of the input filter graph 51 to the stream tank. 52 receives. The stream tank 52 also distributes (or selects) or combines the multimedia data (or stream), outputs the received output from the output filter graph 53, and finally outputs the output to the output device.

입력 필터그래프(51)와 스트림탱크(52) 사이의 데이터 전송이나, 스트림탱크(52)와 출력 필터그래프(53) 사이의 데이터 전송은 COM 객체 사이의 데이터 전송방식에 의한다. 따라서 각 필터그래프(51,53)와 스트림탱크(52) 간에 서로 상대의 오브젝트 주소를 주고 받아서 저장하고 있다가, 필요한 경우에 상대 오브젝트의 멤버 함수를 호출해서 데이터를 메모리 채로 전달한다. 즉, 기본적으로 같은 프로세스에서 동작하기 때문에 데이터를 주고받는 방식은 메모리를 직접 전달하는 방식이다.
The data transmission between the input filter graph 51 and the stream tank 52 or the data transmission between the stream tank 52 and the output filter graph 53 are based on the data transmission method between the COM objects. Therefore, the filter graphs 51 and 53 and the stream tank 52 exchange and store the object address of each other, and if necessary, call the member function of the partner object to transfer the data to the memory. In other words, since they basically run in the same process, the way to send and receive data is to pass the memory directly.

다음으로, 본 발명의 일실시예에 따른 입출력 필터그래프 및 스트림탱크에 대하여 도 6 및 도 7을 참조하여 보다 구체적으로 설명한다.Next, the input and output filter graph and the stream tank according to an embodiment of the present invention will be described in more detail with reference to FIGS. 6 and 7.

하나의 입력 필터그래프(51)는 입력그래프 생성부(31)에 의해, 하나의 입력 스트림에 대하여 생성된다. 입력 필터그래프(51)는 상기 입력 스트림을 입력장치로부터 입력받는 필터(이하 입력 디바이스 필터) 및 상기 입력 스트림을 내보내는 필터(이하 입력 파이프 필터)로 구성된다.One input filter graph 51 is generated by the input graph generator 31 for one input stream. The input filter graph 51 is composed of a filter for receiving the input stream from an input device (hereinafter referred to as an input device filter) and a filter for sending the input stream (hereinafter referred to as an input pipe filter).

도 6a에서 보는 바와 같이, 입력 필터그래프(51)는 입력 디바이스 필터와 입력 파이프 필터로 구성된다. 이때, 인코딩 필터 등 중간처리 필터(또는 변환필터)들이 입력 디바이스 필터와 입력 파이프 필터 사이에 삽입될 수 있다.As shown in FIG. 6A, the input filter graph 51 is composed of an input device filter and an input pipe filter. In this case, intermediate processing filters (or transform filters) such as an encoding filter may be inserted between the input device filter and the input pipe filter.

입력 디바이스 필터는 다이렉트쇼의 필터 중 소스필터(61)로 구현될 수 있고, H.264 인코딩 필터 등 중간처리 필터들은 변환필터(62)로 구현된다. 입력 파이프 필터는 입력장치로부터 수신하여 처리된 스트림 데이터(또는 멀티미디어 데이터)를 스트림탱크(stream tank)(53)로 전달하는 역할을 하는 필터이다. 입력 파이프 필터는 다이렉트쇼 필터(DirectShow filter) 중 렌더 필터(renderer filter)의 일종으로 구현된다.The input device filter may be implemented as the source filter 61 among the filters of the direct show, and the intermediate processing filters such as the H.264 encoding filter may be implemented as the transform filter 62. The input pipe filter is a filter that delivers stream data (or multimedia data) received and processed from the input device to the stream tank 53. The input pipe filter is implemented as a renderer filter of the DirectShow filters.

입력 파이프 필터는 다이렉트쇼가 다루는 모든 스트림 데이터의 데이터 형태(예를 들어, 영상, 소리, 자막 등)를 다룰 수 있다. 그러나 입력 파이프 필터와 연결할 스트림탱크(52)가 정의하는 데이터 형태에 제약을 받는다.The input pipe filter can handle data types (eg, video, sound, subtitles, etc.) of all stream data handled by DirectShow. However, it is limited by the data type defined by the stream tank 52 to be connected to the input pipe filter.

한편, 입력 필터그래프(51)에 의해 동작되는 과정은 도 7a에서 보는 바와 같다. 즉, 필터그래프가 생성되고 입력 디바이스 필터와 입력 파이프 필터 등이 생성되고 실행된다. 그리고 이벤트에 의해 스트림탱크와의 연결 요청 등을 수신하여, 그에 따라 스트림탱크를 생성하거나, 스트림탱크와 연결하여 데이터를 전송한다.
Meanwhile, a process operated by the input filter graph 51 is as shown in FIG. 7A. That is, a filter graph is generated, an input device filter, an input pipe filter, and the like are generated and executed. In response to the event, a connection request with the stream tank is received, and a stream tank is generated accordingly, or the stream tank is connected to transmit data.

하나의 출력 필터그래프(53)는 출력그래프 생성부(33)에 의해, 하나의 출력장치에 대하여 생성된다. 출력 필터그래프(53)는 스트림 탱크(52)의 출력 스트림을 입력받는 필터(이하 출력 파이프 필터) 및 출력장치로 내보내는 필터(이하 출력장치 필터)로 구성된다.One output filter graph 53 is generated by the output graph generator 33 for one output device. The output filter graph 53 is composed of a filter for receiving the output stream of the stream tank 52 (hereinafter, referred to as an output pipe filter) and a filter for outputting to an output device (hereinafter, referred to as an output device filter).

도 6b에서 보는 바와 같이, 출력 필터그래프(53)는 출력 파이프 필터와 출력장치 필터로 구성된다. 이때, 인코딩 필터 등은 스트림 데이터를 중간에 처리하기 위한 중간처리 필터들이 출력 파이프 필터와 출력장치 필터 사이에 삽입될 수 있다.As shown in FIG. 6B, the output filter graph 53 is composed of an output pipe filter and an output device filter. In this case, the encoding filter or the like may be inserted between the output pipe filter and the output device filter for processing the intermediate stream data.

출력 파이프 필터는 스트림탱크(53)로부터 스트림 데이터를 전달받아 출력 장치(또는 출력장치 필터) 혹은 스트림 데이터 처리 필터(또는 중간처리 필터)로 전달하는 역할을 하는 필터이다. 그리고 출력 파이프 필터는 다이렉트쇼 필터(DirectShow filter) 중 소스 필터(source filter)의 일종으로 구현된다.The output pipe filter is a filter that receives stream data from the stream tank 53 and delivers the stream data to an output device (or an output device filter) or a stream data processing filter (or an intermediate processing filter). The output pipe filter is implemented as a type of source filter among DirectShow filters.

출력 파이프 필터는 다이렉트쇼가 다루는 모든 스트림 데이터의 데이터 형태(예를 들어, 영상, 소리, 자막 등)를 다룰 수 있다. 그러나 출력 파이프 필터와 연결할 스트림탱크(52)가 정의하는 데이터 형태에 제약을 받는다.The output pipe filter can handle data types (eg, video, sound, subtitles, etc.) of all stream data handled by DirectShow. However, it is limited by the data type defined by the stream tank 52 to be connected to the output pipe filter.

한편, 출력 필터그래프(53)는 입력 디바이스 필터를 구성요소로 포함하여, 입력장치로부터 스트림 데이터(멀티미디어 데이터)를 직접 받을 수도 있다. 또한, 중간처리 필터로서, 스트림 데이터를 변환하는 변환필터나, 2개의 필터 출력을 결합하는 먹스필터(muxer) 등도 포함할 수 있다.The output filter graph 53 may include an input device filter as a component and directly receive stream data (multimedia data) from the input device. The intermediate processing filter may also include a transform filter for converting stream data, a muxer for combining two filter outputs, and the like.

출력 필터그래프(53)는 서로 다른 스트림 탱크와 동시에 출력 파이프 필터를 각각 연결할 수 있다. 예를 들어, 제1 스트림 탱크로부터 제1 영상을, 제2 스트림 탱크로부터 제2 영상을 동시에 수신할 수 있다.The output filter graph 53 may connect the output pipe filters simultaneously with the different stream tanks, respectively. For example, the first image may be simultaneously received from the first stream tank and the second image may be simultaneously received from the second stream tank.

또한, 출력 필터그래프(53)는 서로 다른 종류의 스트림 탱크와 동시에 출력 파이프 필터를 각각 연결할 수 있다. 예를 들어, 제1 스트림 탱크로부터 제1 영상을, 제2 스트림 탱크로부터 제1 오디오를 동시에 수신할 수 있다.In addition, the output filter graph 53 may connect the output pipe filters simultaneously with different types of stream tanks. For example, the first image may be simultaneously received from the first stream tank and the first audio may be simultaneously received from the second stream tank.

한편, 출력 필터그래프(53)에 의해 동작되는 과정은 도 7b에서 보는 바와 같다. 즉, 필터그래프가 생성되고 출력장치 필터와 출력 파이프 필터 등이 생성되고 실행된다. 그리고 이벤트에 의해 스트림탱크와의 연결 요청 등을 수신하여, 그에 따라 스트림탱크를 생성하거나, 스트림탱크와 연결하여 데이터를 수신한다.
Meanwhile, a process operated by the output filter graph 53 is as shown in FIG. 7B. That is, a filter graph is generated, an output device filter, an output pipe filter, and the like are generated and executed. In response to the event, a connection request with the stream tank is received, and a stream tank is generated accordingly or data is connected with the stream tank.

또한, 스트림 탱크(52)는 스트림탱크 처리부(32)에 의해 생성되며, 하나 이상의 입력 파이프 필터의 입력 스트림을 수신하고 수신한 입력 스트림을 선택하여 출력 스트림으로 출력한다.In addition, the stream tank 52 is generated by the stream tank processing unit 32, receives an input stream of one or more input pipe filters, selects the received input stream and outputs it as an output stream.

한편, 스트림탱크 처리부(32)는 입력장치의 종류에 따라 스트림 탱크(52)를 따로 생성한다. 즉, 예를 들어, 입력장치는 영상, 오디오, 자막 등의 종류(스트림 데이터의 종류)로 구분된다. 스트림탱크(52)는 입력장치(또는 스트림 데이터) 별로 데이터를 따로 생성되어 실행된다. 즉, 영상 전용 스트림탱크, 오디오 전용 스트림탱크 등으로 따로 생성된다.Meanwhile, the stream tank processor 32 separately generates the stream tanks 52 according to the type of the input device. That is, for example, the input device is classified into a kind of video, audio, subtitle, etc. (type of stream data). The stream tank 52 generates and executes data separately for each input device (or stream data). That is, it is generated separately as a video dedicated stream tank, an audio dedicated stream tank, and the like.

스트림탱크(52)는 입력 스트림을 조합하고자 하는 COM 객체, 즉, 컴포넌트 오브젝트이다. 이 오브젝트(52)는 하나 이상의 필터 그래프(또는 입력 필터그래프)(51)에서 전달되어 오는 스트림 데이터(또는 입력 스트림)들을 선택/조합하여 새로운 스트림을 생성한다. 그리고 스트림탱크(52)는 그 새로운 스트림(또는 출력 스트림)을 출력을 담당하는 필터그래프(출력 필터그래프)(53)로 전달하는 역할을 한다.The stream tank 52 is a COM object, that is, a component object, to which the input streams are to be combined. This object 52 selects / combines stream data (or input streams) from one or more filter graphs (or input filter graphs) 51 to create a new stream. The stream tank 52 serves to deliver the new stream (or output stream) to the filter graph (output filter graph) 53 in charge of the output.

스트림탱크(52)는 마치 여러 가지 물질들을 한곳에 섞고 저장하는 탱크와 같다는 의미에서 붙인 명칭이다. 스트림탱크(52)는 필터 그래프 상에 존재하지 않고 별도로 존재한다. 즉, 스트림탱크(52)는 다이렉트쇼 필터(DirectShow filter)가 아닌 오브젝트(또는 COM객체)이다. 스트림탱크(52)가 다룰 수 있는 스트림 데이터는 다이렉트쇼(DirectShow)가 다루는 모든 스트림 데이터(stream data) 형태(예를 들어 영상, 소리, 자막 등)를 포함한다.The stream tank 52 is a name given in the sense that it is like a tank for mixing and storing various materials in one place. The stream tank 52 does not exist on the filter graph but exists separately. In other words, the stream tank 52 is an object (or COM object) that is not a DirectShow filter. Stream data that can be handled by the stream tank 52 includes all stream data types (eg, video, sound, subtitle, etc.) that DirectShow handles.

스트림탱크(52)는 하나 이상의 출력 스트림을 출력한다. 스트림탱크(52)는 다수의 출력 스트림을 출력할 수 있고, 각 출력 스트림을 서로 다른 출력 필터그래프(53)에게 전달할 수 있다.Stream tank 52 outputs one or more output streams. The stream tank 52 may output a plurality of output streams, and may deliver each output stream to different output filter graphs 53.

또한, 스트림탱크(52)는 동적으로 입력 스트림을 추가 또는 해제할 수 있다. 즉, 스트림탱크(52)는 입력 스트림의 연결 요청에 의하여 입력 파이프 필터와 추가 연결하여 입력 스트림을 수신한다. 즉, 스트림탱크(52)는 중단하지 않은 채, 지속적으로 이벤트를 살피다가 연결 요청(또는 연결 요청 이벤트)이 발생하면 요청한 입력 파이프 필터와 연결한다. 그로인해, 새로 연결한 입력 파이프 필터를 통해서도 스트림 데이터를 수신한다.In addition, the stream tank 52 may dynamically add or remove input streams. That is, the stream tank 52 receives an input stream by further connecting with an input pipe filter by a connection request of the input stream. That is, the stream tank 52 continuously monitors the event without interruption and connects with the requested input pipe filter when a connection request (or connection request event) occurs. As a result, stream data is also received through the newly connected input pipe filter.

즉, 각 입출력 필터그래프의 파이프 필터들은 하나의 스트림 탱크(52)와만 관계(연결)를 갖지만 하나의 스트림 탱크(52)는 여러 개의 파이프 필터들과 연결될 수 있다. 이때, 스트림 탱크(52)는 리스트나 배열 등을 통해 연결된 파이프 필터들의 목록을 관리하며, 만약 새롭게 파이프 필터가 추가되거나 삭제되면 이 목록에서 추가/삭제되게 된다.That is, the pipe filters of each input / output filter graph have a relationship (connection) with only one stream tank 52, but one stream tank 52 may be connected with several pipe filters. At this time, the stream tank 52 manages a list of pipe filters connected through a list or an array. If a pipe filter is newly added or deleted, the stream tank 52 is added / deleted from this list.

반대로, 스트림 탱크(52)는 출력 스트림의 출력 요청에 의하여 출력 스트림을 추가 생성한다. 즉, 스트림 탱크(52)는 다수의 출력 스트림을 동시에 출력할 수 있다. 이때, 출력요청에 따라 추가 출력하거나, 스트림 데이터의 출력을 해제한다.In contrast, the stream tank 52 further generates an output stream in response to an output request of the output stream. That is, the stream tank 52 can output multiple output streams simultaneously. At this time, additional output or output of the stream data is canceled according to the output request.

한편, 앞서 설명한 바와 같이, 파이프 필터와 스트림탱크 사이에는 물리적 연결이 아니라 소프트웨어적으로 오브젝트 주소를 주고 받는다. 그리고 필요한 경우에 데이터 처리 멤버 함수를 호출한다.On the other hand, as described above, the object address is transmitted and received between the pipe filter and the stream tank in software rather than a physical connection. Then call the data processing member function if necessary.

스트림 탱크(52)는 이전에 받았던 데이터 보관을 그 데이터의 처리에 따라 다르게 관리된다. 예를 들어 사운드 믹싱(mixing)을 담당하는 스트림 탱크를 생성하는 경우를 설명한다. 입력 파이프 필터로부터 사운드 데이터가 도착하면, 스트림 탱크는 메모리 상의 사운드 데이터에 도착한 데이터를 믹싱(mixing)한 후에 곧바로 수신한 그 데이터를 메모리 상에서 해제한다. 그러나 PIP(Picture-in-Picture)로 화상을 믹싱(mixing)하는 스트림 탱크라면 PIP 믹싱(mixing)이 일어나는 시점까지는 수신한 데이터를 보관해야 한다.The stream tank 52 manages previously received data storage differently according to the processing of the data. For example, a case of generating a stream tank in charge of sound mixing will be described. When sound data arrives from the input pipe filter, the stream tank releases the received data on the memory immediately after mixing the data arriving at the sound data on the memory. However, a stream tank that mixes pictures in picture-in-picture should keep the received data until PIP mixing occurs.

또한, 입력 파이프 필터가 스트림 탱크(52)로 데이터를 전달한 경우, 스트림 탱크(52)가 곧바로 출력 파이프 필터들에게 전달할 지는 담당하는 역할에 따라 다르다. 스트림 탱크마다 이를 달리 규정할 수 있다.In addition, when the input pipe filter delivers data to the stream tank 52, whether the stream tank 52 passes directly to the output pipe filters depends on the role it plays. Different stream tanks may specify this differently.

한편, 스트림 탱크(52)에 의해 동작되는 구체적 과정은 도 7c에서 보는 바와 같다. 즉, 스트림탱크가 생성되고 실행된다. 그리고 이벤트에 의해 파이프 필터와의 연결 또는 해제 요청 등을 수신하여, 그에 따라 파이프 필터와 연결하여 데이터를 송수신하거나, 파이프 필터를 해제한다.
Meanwhile, a specific process operated by the stream tank 52 is as shown in FIG. 7C. That is, a stream tank is created and executed. In response to the request for connection or disconnection with the pipe filter by an event, the connection with the pipe filter is performed accordingly to transmit or receive data, or release the pipe filter.

다음으로, 본 발명의 일실시예에 따라 입출력 장치(또는 디바이스)의 변동에 의해 객체의 변화 과정을 도 8을 참조하여 설명한다.Next, a process of changing an object due to a change in an input / output device (or a device) according to an embodiment of the present invention will be described with reference to FIG. 8.

도 8a에서 보는 바와 같이, 처음에, 최소한 두 개의 필터그래프가 존재한다. 하나는 디바이스(또는 입력장치)로부터 오는 데이터를 스트림 탱크에 보내주는 입력 필터그래프와, 스트림 탱크로부터 출력 결과를 받아 처리할 출력 필터그래프이다. 필터 그래프가 실행전이나 후에 입력 파이프 필터 1(스트림 입력 pipe filter1)과 출력 파이프 필터 1(스트림 출력 pipe filter 1)은 각각 약속된 스트림탱크와 연결을 한다. As shown in FIG. 8A, at least two filter graphs exist. One is an input filter graph that sends data from a device (or an input device) to a stream tank, and an output filter graph to receive and process output results from the stream tank. Input pipe filter 1 (stream input pipe filter1) and output pipe filter 1 (stream output pipe filter 1) connect to the promised stream tank, respectively, before or after the filter graph is run.

각각의 필터그래프가 실행(run)되면 카메라1 소스필터(source filter)로부터 수신된 화상 데이터는 스트림 입력 pipe filter1을 걸쳐 스트림탱크에 전달된다. 스트림 탱크는 PIP처리 루틴을 통해 이 데이터를 가공한 후에 (입력이 하나이므로 통상적으로 별 다른 가공 없는) 스트림 출력 pipe filter 1에 보내지고, 그 이후에는 일반적인 방식과 같은 절차를 밟아 mp4 파일에 저장된다.When each filter graph is executed, the image data received from the camera 1 source filter is transferred to the stream tank through the stream input pipe filter 1. The stream tank is processed by the PIP processing routine and then sent to the stream output pipe filter 1 (usually without any processing since there is one input), after which it is stored in the mp4 file following the same procedure as usual. .

다음으로, 카메라2로부터 데이터를 받는 경우를 설명한다. 이를 위해서는 도 8b와 같은 새로운 필터 그래프가 필요하다. 즉, 도 8b의 입력 필터그래프는 카메라 2로부터 영상 스트림을 받아 입력 파이프 필터로 출력되는 필터그래프이다. Next, a case of receiving data from the camera 2 will be described. This requires a new filter graph as shown in FIG. 8B. That is, the input filter graph of FIG. 8B is a filter graph that receives an image stream from camera 2 and outputs it to an input pipe filter.

도 8b의 입력 필터그래프의 스트림 입력 pipe filter2가 스트림탱크에 연결하고 실행(run)하면 도 8c와 같은 구조가 된다. 이런 방식으로 카메라2의 데이터가 스트림탱크로 도착하면 사전에 정의된 PIP처리 루틴에 의해 카메라1과 화상이 결합되어 스트림출력 pipe filter 1에 도착하게 되고, mp4파일을 중단없이 저장할 수 있다.When the stream input pipe filter2 of the input filter graph of FIG. 8B is connected to the stream tank and run, the structure becomes as shown in FIG. 8C. In this way, when the data of the camera 2 arrives in the stream tank, the camera 1 and the image are combined by the predefined PIP processing routine to arrive at the stream output pipe filter 1, and the mp4 file can be stored without interruption.

만약 카메라2를 PIP로부터 해제하려면 스트림입력 pipe filter2의 스트림 탱크과의 연결을 해제하고 도 8c에 있는 도 8b의 필터그래프를 중단(stop)하면 된다. 이 과정에서도 카메라1에서부터 나오는 데이터가 최종 mp4파일까지 만드는 과정은 중단없이 진행할 수 있다.If the camera 2 is to be released from the PIP, disconnect the stream tank of the stream input pipe filter 2 and stop the filter graph of FIG. 8B in FIG. 8C. In this process, the process of making data from camera 1 to the final mp4 file can be performed without interruption.

도 8c에서 저장하고 있는 파일의 모습을 화면으로 출력하고 싶다면 도 8d와 같이 새로운 출력 필터그래프를 만들어 스트림탱크의 출력 부분에 추가하면 된다.If you want to output the appearance of the file stored in Figure 8c to the screen to create a new output filter graph as shown in Figure 8d and add to the output portion of the stream tank.

도 8e는 도 8d의 출력 필터그래프가 추가된 구조를 도시한 것이다. 이 경우도 mp4파일을 만드는 필터 그래프는 중단없이 진행할 수 있다.8E illustrates a structure in which the output filter graph of FIG. 8D is added. In this case too, the filter graph that creates the mp4 file can proceed without interruption.

위의 경우들은 오디오의 소스 필터들은 추가/삭제가 없는 경우인데 만약 오디오까지 스트림 탱크를 이용해 중단 없는 오디오 소스 필터들의 추가/삭제를 원한다면 도 8f와 같은 구조로 필터그래프들을 추가하면 된다.In the above cases, the source filters of the audio are not added / deleted. If you want to add / remove the audio source filters without interruption using the stream tank up to the audio, the filter graphs may be added as shown in FIG. 8F.

도 8f는 카메라1과 카메라2로 들어오는 화상 데이터를 스트림탱크 1을 통해 결합 한 후에 화면으로 출력하고, H.264로 인코딩한다. 또한, 동시에, 오디오1과 오디오2로 들어오는 사운드 데이터를 스트림탱크 2에서 '오디오 처리 루틴'에 의해 가공한 후에 스피커에 출력한다. 또한, AAC로 인코딩 한 후에 앞서의 H.264영상 데이터와 결합해 하나의 mp4파일로 저장한다.
FIG. 8F combines the image data coming into the camera 1 and the camera 2 through the stream tank 1, and then outputs the image to the screen, and encodes the image in H.264. At the same time, sound data coming into the audio 1 and audio 2 is processed by the 'audio processing routine' in the stream tank 2 and then output to the speaker. Also, after encoding with AAC, it is combined with the previous H.264 video data and stored as one mp4 file.

다음으로, 본 발명에 따라 구현된 일례를 도 9와 도 10을 참조하여 설명한다. 도 9와 도 10은 카메라로 오는 화상을 화면에 출력하다가 컴퓨터 화면을 캡쳐 잡은 화상을 PIP로 결합하는 구현 예를 도시한 것이다.Next, an example implemented according to the present invention will be described with reference to FIGS. 9 and 10. 9 and 10 illustrate an embodiment in which an image coming from a camera is output on a screen, and the image captured by the computer screen is combined into a PIP.

도 9a는 카메라의 화상 데이터를 그대로 화면에 출력하는 장면이며, 도 10a는 이의 필터그래프들의 구조이다.FIG. 9A is a scene in which image data of a camera is output on a screen as it is, and FIG. 10A is a structure of filter graphs thereof.

도 9b는 카메라의 화상과 데스크탑의 화상을 PIP로 결합한 후에 화면에 출력하는 장면이고, 10b는 이의 필터그래프들의 구조이다.
FIG. 9B is a scene outputting on a screen after combining a picture of a camera and a picture of a desktop with a PIP, and 10b is a structure of its filter graphs.

이상, 본 발명자에 의해서 이루어진 발명을 실시 예에 따라 구체적으로 설명하였지만, 본 발명은 실시 예에 한정되는 것은 아니고, 그 요지를 이탈하지 않는 범위에서 여러 가지로 변경 가능한 것은 물론이다.As mentioned above, although the invention made by this inventor was demonstrated concretely according to the Example, this invention is not limited to an Example and can be variously changed in the range which does not deviate from the summary.

본 발명은 다이렉트쇼 필터그래프를 이용하여, 적어도 하나의 입력장치로부터 데이터 스트림을 입력받고 입력 스트림을 결합 또는 분배하여 출력장치로 출력하는 멀티미디어 스트림 결합분배 장치를 개발하는 데 적용이 가능하다.
The present invention is applicable to the development of a multimedia stream combination distribution device that receives a data stream from at least one input device, combines or distributes the input streams, and outputs the output stream to the output device using a direct show filter graph.

Claims (9)

다이렉트쇼 필터그래프를 이용하여, 적어도 하나의 입력장치로부터 데이터 스트림을 입력받아 출력장치로 출력하는 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치에 있어서,
하나의 입력장치로부터 입력받는 데이터 스트림(이하 입력 스트림)에 대하여 하나의 입력 필터그래프를 생성하되, 상기 입력 필터그래프를 상기 입력 스트림을 입력장치로부터 입력받는 필터(이하 입력 디바이스 필터) 및 상기 입력 스트림을 내보내는 필터(이하 입력 파이프 필터)로 구성하는 입력그래프 생성부;
하나 이상의 입력 파이프 필터의 입력 스트림을 수신하고 수신한 입력 스트림을 선택하여 출력 스트림으로 출력하는 스트림 탱크를 생성하는 스트림탱크 처리부; 및,
하나의 출력장치에 대하여 하나의 출력 필터그래프를 생성하되, 상기 출력 필터그래프를 상기 스트림 탱크의 출력 스트림을 입력받는 필터(이하 출력 파이프 필터) 및 상기 출력장치로 내보내는 필터(이하 출력장치 필터)로 구성하는 출력그래프 생성부를 포함하는 것을 특징으로 하는 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치.
In the DirectShow filter graph-based multimedia stream combined distribution device that receives a data stream from at least one input device and outputs the output stream to the output device using a directshow filter graph,
Generate one input filter graph for a data stream (hereinafter, referred to as an input stream) received from one input device, wherein the input filter graph receives the input stream from an input device (hereinafter referred to as an input device filter) and the input stream. An input graph generation unit configured to output a filter (hereinafter referred to as an input pipe filter);
A stream tank processing unit configured to receive an input stream of at least one input pipe filter and to generate a stream tank for selecting and outputting the received input stream as an output stream; And,
One output filter graph is generated for one output device, and the output filter graph is a filter for receiving an output stream of the stream tank (hereinafter referred to as an output pipe filter) and a filter for outputting to the output device (hereinafter referred to as an output device filter). Direct show filter graph-based multimedia stream combined distribution device comprising an output graph generator for configuring.
제1항에 있어서,
상기 스트림탱크는 하나 이상의 출력 스트림을 출력하는 것을 특징으로 하는 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치.
The method of claim 1,
And the stream tank outputs one or more output streams.
제1항에 있어서,
상기 스트림탱크는 적어도 2개의 입력 스트림을 수신하는 경우 상기 입력 스트림들을 결합하고, 결합한 스트림을 하나의 출력 스트림으로 출력할 수 있는 것을 특징으로 하는 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치.
The method of claim 1,
And the stream tank combines the input streams when receiving at least two input streams and outputs the combined streams as one output stream.
제1항에 있어서,
상기 스트림 탱크는 입력 스트림의 연결 요청에 의하여 입력 파이프 필터와 추가 연결하여 입력 스트림을 수신하는 것을 특징으로 하는 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치.
The method of claim 1,
The stream tank is connected directly to the input pipe filter according to the connection request of the input stream receiving direct stream filter graph, characterized in that the combined stream distribution device.
제1항에 있어서,
상기 스트림 탱크는 출력 스트림의 출력 요청에 의하여 출력 스트림을 추가 생성하는 것을 특징으로 하는 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치.
The method of claim 1,
And the stream tank further generates an output stream based on an output request of the output stream.
제1항에 있어서,
상기 스트림탱크 처리부는 입력장치의 종류에 따라 스트림 탱크를 따로 생성하는 것을 특징으로 하는 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치.
The method of claim 1,
The stream tank processor is a direct-show filter graph-based multimedia stream combined distribution device, characterized in that for generating a separate stream tank according to the type of input device.
제1항에 있어서,
상기 출력 필터그래프는 입력장치로부터 직접 입력받는 입력 디바이스 필터를 구성할 수 있는 것을 특징으로 하는 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치.
The method of claim 1,
And the output filter graph may configure an input device filter which is directly input from an input device.
제1항에 있어서,
상기 출력 필터그래프는 서로 다른 스트림 탱크와 동시에 출력 파이프 필터를 각각 연결할 수 있는 것을 특징으로 하는 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치.
The method of claim 1,
The output filter graph is a direct-show filter graph-based multimedia stream combined distribution device, characterized in that the output pipe filter can be connected to the different stream tanks at the same time.
제8항에 있어서,
상기 출력 필터그래프는 서로 다른 종류의 스트림 탱크와 동시에 출력 파이프 필터를 각각 연결할 수 있는 것을 특징으로 하는 다이렉트쇼 필터그래프 기반 멀티미디어 스트림 결합분배 장치.
The method of claim 8,
The output filter graph is a direct-show filter graph-based multimedia stream combined distribution device, characterized in that the output pipe filter can be connected to different types of stream tanks at the same time.
KR1020110021498A 2011-03-10 2011-03-10 A combining and dividing device for multimedia streams based on directshow filter graph KR101051182B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110021498A KR101051182B1 (en) 2011-03-10 2011-03-10 A combining and dividing device for multimedia streams based on directshow filter graph

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110021498A KR101051182B1 (en) 2011-03-10 2011-03-10 A combining and dividing device for multimedia streams based on directshow filter graph

Publications (1)

Publication Number Publication Date
KR101051182B1 true KR101051182B1 (en) 2011-07-22

Family

ID=44923968

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110021498A KR101051182B1 (en) 2011-03-10 2011-03-10 A combining and dividing device for multimedia streams based on directshow filter graph

Country Status (1)

Country Link
KR (1) KR101051182B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102710983A (en) * 2012-04-16 2012-10-03 杭州米加科技有限公司 Method for extracting audio and video data from multimedia

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004312313A (en) * 2003-04-04 2004-11-04 Sony Corp Data-processing apparatus, data processing system, data processing method, and program
KR20050001407A (en) * 2003-06-25 2005-01-06 마이크로소프트 코포레이션 Media foundation media processor
JP2010039860A (en) * 2008-08-06 2010-02-18 Toshiba Corp Component program controller, method for controlling component program, and program
KR20100035690A (en) * 2007-06-30 2010-04-06 마이크로소프트 코포레이션 Interfaces for digital media processing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004312313A (en) * 2003-04-04 2004-11-04 Sony Corp Data-processing apparatus, data processing system, data processing method, and program
KR20050001407A (en) * 2003-06-25 2005-01-06 마이크로소프트 코포레이션 Media foundation media processor
KR20100035690A (en) * 2007-06-30 2010-04-06 마이크로소프트 코포레이션 Interfaces for digital media processing
JP2010039860A (en) * 2008-08-06 2010-02-18 Toshiba Corp Component program controller, method for controlling component program, and program

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102710983A (en) * 2012-04-16 2012-10-03 杭州米加科技有限公司 Method for extracting audio and video data from multimedia
CN102710983B (en) * 2012-04-16 2015-01-07 杭州米加科技有限公司 Method for extracting audio and video data from multimedia

Similar Documents

Publication Publication Date Title
US7669206B2 (en) Dynamic redirection of streaming media between computing devices
US9621854B2 (en) Recording a videoconference using separate video
US9407867B2 (en) Distributed recording or streaming of a videoconference in multiple formats
JP5781441B2 (en) Subscription for video conferencing using multi-bitrate streams
US8780166B2 (en) Collaborative recording of a videoconference using a recording server
US7609653B2 (en) Resolving partial media topologies
JP6404912B2 (en) Live broadcasting system
US7900140B2 (en) Media processing methods, systems and application program interfaces
US7712108B2 (en) Media processing methods, systems and application program interfaces
JP2019036969A (en) Live broadcast system
US7577940B2 (en) Managing topology changes in media applications
KR101051182B1 (en) A combining and dividing device for multimedia streams based on directshow filter graph
US20140141875A1 (en) Temporary modification for extending functionality of computer games and software applications.
JP4249569B2 (en) Demultiplexer application program interface
US11778011B2 (en) Live streaming architecture with server-side stream mixing

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated 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: 20140627

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150817

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee