KR101074073B1 - A buffer structure for storing multimedia data, and a buffering method - Google Patents

A buffer structure for storing multimedia data, and a buffering method Download PDF

Info

Publication number
KR101074073B1
KR101074073B1 KR1020040072961A KR20040072961A KR101074073B1 KR 101074073 B1 KR101074073 B1 KR 101074073B1 KR 1020040072961 A KR1020040072961 A KR 1020040072961A KR 20040072961 A KR20040072961 A KR 20040072961A KR 101074073 B1 KR101074073 B1 KR 101074073B1
Authority
KR
South Korea
Prior art keywords
data
list
stream
buffer
audio
Prior art date
Application number
KR1020040072961A
Other languages
Korean (ko)
Other versions
KR20060024094A (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 KR1020040072961A priority Critical patent/KR101074073B1/en
Publication of KR20060024094A publication Critical patent/KR20060024094A/en
Application granted granted Critical
Publication of KR101074073B1 publication Critical patent/KR101074073B1/en

Links

Images

Classifications

    • 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 네트워크를 통하여 화상 및 음성을 교환하는 경우, 응용 프로그램에서 인코딩된 화상 및 음성 스트림을 디코딩하기 전에 메모리에 임시 저장하는 멀티미디어 데이터 저장용 버퍼 구조 및 버퍼링 방법에 관한 것에 관한 것이다. 본 발명에 따른 멀티미디어 데이터 저장용 버퍼는, 화상 또는 음성 데이터를 임시 저장하는 멀티미디어 데이터 저장용 버퍼에 있어서, 상기 화상 또는 음성 데이터 스트림이 저장되는 노드로 구성된 데이터 리스트; 상기 데이터 리스트에 대한 정보를 갖는 노드로 구성된 주 리스트; 상기 주 리스트에 소정 노드를 추가, 삭제 또는 검색하는 주 리스트 관리 모듈; 및 상기 데이터 리스트에 소정 노드를 추가, 삭제 또는 검색하는 데이터 리스트 관리 모듈을 포함한다. 본 발명에 따르면, 인코딩된 화상 및 음성 스트림을 디코딩하기 전에 메모리에 임시 저장하는 버퍼를 효율적으로 구현함으로써, 임의의 포트에서 수신한 데이터의 메모리 효율성을 높일 수 있고, 다수의 데이터를 신속하게 처리하며, 화상과 음성을 용이하게 동기화할 수 있다.The present invention relates to a buffer structure and a buffering method for storing multimedia data, which are temporarily stored in a memory before decoding an encoded picture and audio stream in an application program when exchanging pictures and audio through a network. A multimedia data storage buffer according to the present invention comprises: a multimedia data storage buffer for temporarily storing image or audio data, comprising: a data list comprising nodes for storing the image or audio data stream; A main list consisting of nodes having information about the data list; A main list management module for adding, deleting, or searching a predetermined node to the main list; And a data list management module for adding, deleting, or searching a predetermined node to the data list. According to the present invention, by efficiently implementing a buffer for temporarily storing the encoded picture and audio stream in memory before decoding, it is possible to increase the memory efficiency of the data received from any port, and to process a large number of data quickly. Image and audio can be easily synchronized.

버퍼, 주 리스트, 데이터 리스트, 멀티미디어 데이터, 화상회의Buffer, main list, data list, multimedia data, video conferencing

Description

멀티미디어 데이터 저장용 버퍼 구조 및 버퍼링 방법 {A buffer structure for storing multimedia data, and a buffering method} A buffer structure for storing multimedia data, and a buffering method}

도 1은 본 발명의 실시예에 따른 데이터 저장용 버퍼를 구비한 화상 회의 시스템의 구성도이다.1 is a block diagram of a video conferencing system having a data storage buffer according to an embodiment of the present invention.

도 2는 본 발명의 실시예에 따른 데이터 저장용 버퍼에 저장되는 데이터 구조를 나타내는 도면이다.2 is a diagram illustrating a data structure stored in a data storage buffer according to an embodiment of the present invention.

도 3은 본 발명의 실시예에 따른 데이터 저장용 버퍼의 구조를 예시하는 도면이다.3 is a diagram illustrating a structure of a data storage buffer according to an embodiment of the present invention.

도 4는 본 발명의 실시예에 따른 데이터 저장용 버퍼를 사용하는 데이터 송수신 방법의 동작 흐름도이다.4 is a flowchart illustrating a data transmission / reception method using a data storage buffer according to an embodiment of the present invention.

도 5는 본 발명의 실시예에 따른 데이터 저장용 버퍼를 구비한 서버의 동작 흐름도이다.5 is an operation flowchart of a server provided with a data storage buffer according to an embodiment of the present invention.

도 6은 본 발명의 실시예에 따른 데이터 저장용 버퍼의 주 리스트의 동작을 예시하는 도면이다.6 is a diagram illustrating the operation of the main list of the data storage buffer according to the embodiment of the present invention.

도 7은 본 발명의 실시예에 따른 데이터 저장용 버퍼의 데이터 리스트의 동작을 예시하는 도면이다.7 is a diagram illustrating an operation of a data list of a data storage buffer according to an embodiment of the present invention.

본 발명은 멀티미디어 데이터 저장용 버퍼 구조 및 버퍼링 방법에 관한 것으로, 보다 구체적으로, 네트워크를 통하여 화상 및 음성을 교환하는 경우, 응용 프로그램에서 인코딩된 화상 및 음성 스트림을 디코딩하기 전에 메모리에 임시 저장하는 멀티미디어 데이터 저장용 버퍼 구조 및 버퍼링 방법에 관한 것에 관한 것이다.The present invention relates to a buffer structure and a buffering method for storing multimedia data. More particularly, when an image and a voice are exchanged through a network, the multimedia is temporarily stored in a memory before the encoded image and audio stream is decoded by an application program. The present invention relates to a buffer structure and a buffering method for data storage.

화상회의 시스템은 서로 먼 거리에 떨어져 있는 사람들끼리 각자의 실내에 설치된 모니터 화면에 비친 화상 및 음향 등을 통하여 회의를 진행할 수 있도록 만든 시스템으로서, 화상회의실에는 여러 대의 모니터와 카메라·마이크·스피커 이외에 필기한 정보가 그대로 상대방에 표시되는 전자칠판·팩시밀리 등이 장착될 수 있다.Video conferencing system is a system that allows people who are far apart from each other to conduct meetings through video and sound reflected on the monitor screen installed in their room. An electronic blackboard, a facsimile, or the like, in which one piece of information is displayed on the other party as it is, may be mounted.

이러한 화상회의에서 다수의 화상 및 음성 데이터가 회의 참가자 단말간에 교환되며, 각 화상 및 음성 데이터는 회의 참가자 단말의 송신기에서 인코딩되어 전송되고, 수신기에서 디코딩되어 사용자에게 표시된다.In such videoconferencing, a plurality of video and audio data are exchanged between conference participant terminals, each video and audio data encoded and transmitted at the transmitter of the conference participant terminal, decoded at the receiver and displayed to the user.

상기 수신기에서 수신한 화상 및 음성 데이터는 지연이 발생하지 않는 네트워크에서는 버퍼를 사용하지 않고 데이터의 해석을 위해 지정된 디코더에 입력되지만, 반면에 네트워크의 상태에 따라 데이터의 순서가 바뀌어 수신되거나 지연되는 경우가 발생하는 네트워크를 사용하는 수신기는 버퍼를 두어, 일정 시간 동안의 화상 및 음성 데이터를 정렬하여 저장한다. 상기 데이터 정렬을 위해 동기화를 하는 경우, 화상 및 음성 데이터가 발생한 시간을 참조하여, 발생한 시간이 특정 시간 영역에 포함되는 데이터를 사용자에게 표시한다. 또한, 화상회의 시스템에서 화상 및 음성 데이터를 서버에서 처리하는 경우, 화상회의 서버는 다수의 데이터를 처리하기 위해 효율적인 데이터 처리 버퍼를 사용할 수 있다.When the image and audio data received by the receiver are input to a designated decoder for data interpretation without using a buffer in a network where no delay occurs, on the other hand, when the data is received or delayed due to the order of the data being changed according to the state of the network. The receiver using the network in which the data is generated has a buffer to align and store the image and audio data for a predetermined time. When synchronizing for the data alignment, the user may display data in which the generated time is included in a specific time region with reference to the time when the image and audio data are generated. In addition, when video and audio data are processed by a server in a videoconferencing system, the videoconferencing server can use an efficient data processing buffer to process a large number of data.

예를 들어, 사용자 송신기가 화상 데이터를 인코딩하여 전송할 경우, 30 프레임/초의 속도로 각 프레임을 하나의 데이터 패킷 단위로 전송하고, 3초 간 버퍼링할 경우, 1000개의 화상 스트림을 처리하려면 90000(30프레임/초×3초×1000)의 노드를 버퍼링하고, 초당 30000번의 입력과 출력이 각각 발생한다. 10개의 화상 스트림을 처리하려면 같은 조건에서 900개의 노드와 초당 300번의 입력과 출력이 발생한다. 이때, 각 화상 데이터의 크기는 일정하지 않다.For example, when a user transmitter encodes and transmits image data, each frame is transmitted in one data packet at a rate of 30 frames / second, and when buffered for 3 seconds, 90000 (30) is required to process 1000 image streams. Frame / sec x 3 sec x 1000), and 30000 inputs and outputs per second occur respectively. Processing 10 picture streams produces 900 nodes and 300 inputs and outputs per second under the same conditions. At this time, the size of each image data is not constant.

한편, 빈번한 데이터의 입력과 출력이 발생하고, 데이터의 크기가 일정하지 않은 응용 프로그램에서는, 데이터 버퍼링을 위해 링크드 리스트(Linked-List), 스킵 리스트(Skip List) 또는 하이브리드 리스트(Hybrid List)가 사용된다. 예를 들어, 지연이 없는 네트워크를 사용하거나 하나의 화상 및 음성 스트림을 처리하는 경우, 한 개의 버퍼를 사용하고, 이때, 버퍼의 구성은 링크드 리스트, 스킵 리스트 또는 하이브리드 리스트를 사용할 수 있다. 또한, 다수의 화상 스트림을 처리할 경우, 여러 개의 버퍼를 사용하고, 이때, 버퍼의 구조는 노드의 추가, 삭제, 추출 시간이 짧은 자료 구조를 활용하게 된다.On the other hand, in application programs where frequent data input and output occur and the data size is not constant, a linked list, a skip list, or a hybrid list is used for data buffering. do. For example, when using a network without delay or processing one video and audio stream, one buffer is used, and the configuration of the buffer may use a linked list, a skip list, or a hybrid list. In addition, when processing a plurality of image streams, a plurality of buffers are used, and the buffer structure utilizes a data structure having a short time for adding, deleting and extracting nodes.

구체적으로, 상기 링크드 리스트는 리스트의 시작과 끝을 관리하여야 하고, 노드 개수가 늘어날 경우, 노드를 정렬하여 추가하거나, 노드를 추출하는 시간이 검색 시간의 증가로 인하여 증가하게 된다. 예를 들어, 네트워크의 지연이 없거나, 가장 간단한 화상 및 음성을 처리하는 응용 프로그램에서 사용한다. 또한, 다수의 화상 및 음성 데이터를 하나의 링크드 리스트에 저장하는 응용 프로그램에서, 출력 요청이 있을 때 가장 앞 노드를 제공하고, 화상과 음성을 동기화하는 경우, 특정 화상 데이터의 지연이 커져 데이터가 처리되지 않고, 가장 앞 노드가 버퍼에서 삭제되지 않는 경우가 발생하여, 다른 노드가 출력되지 않아 전체 데이터 처리가 지연될 수 있다.Specifically, the linked list must manage the start and end of the list, and when the number of nodes increases, the time for sorting and adding nodes or extracting nodes increases due to an increase in search time. For example, there is no network delay, or used in applications that process the simplest video and audio. In addition, in an application program that stores a plurality of image and audio data in one linked list, when an output request is provided, the front node is provided, and when the image and audio are synchronized, the delay of specific image data becomes large and the data is processed. If the first node is not deleted from the buffer, another node may not be output and the entire data processing may be delayed.

또한, 상기 스킵 리스트와 하이브리드 리스트는 이진 트리(Binary Tree)보다 노드 처리 효율성이 높은 구조로서 다량의 데이터를 처리할 수 있다. 이때, 다수의 화상 및 음성 데이터를 처리하기 위해서는 여러 개의 리스트를 만들고 이를 관리하는 모듈을 구성하여 사용할 수 있다.In addition, the skip list and the hybrid list have a higher node processing efficiency than a binary tree and may process a large amount of data. In this case, in order to process a plurality of image and audio data, a plurality of lists may be created and a module for managing the same may be used.

한편, 종래 기술로서, 대한민국 특허출원번호 제2001-64172호(2001년 10월 18일 출원)에는 "멀티미디어 데이터용 버퍼 구조 및 버퍼링 방법"이라는 명칭의 발명이 개시되어 있는데, 스킵 리스트와 원형 리스트(Circular List)를 혼용하여 화상 및 음성을 저장하는 버퍼를 구성한 방법을 제공한다.On the other hand, as a prior art, Korean Patent Application No. 2001-64172 (filed October 18, 2001) discloses the invention entitled "Buffer Structure and Buffering Method for Multimedia Data". Circular List) provides a method of configuring a buffer for storing images and audio.

구체적으로, 선행 발명은 원형 리스트의 일부를 스킵 리스트로 구현하고, 필요한 메모리를 미리 할당하고, 각 데이터 패킷의 시간 계수를 활용하여 정렬하여, 데이터의 입력과 출력을 효율화한 구조이다. 또한, 자료 처리 효율과 메모리 사용량의 상관 관계에서, 자료 처리 효율을 높이기 위해 메모리의 사용 효율을 낮춘 구조이다. Specifically, the prior invention is a structure in which a part of the prototype list is implemented as a skip list, the necessary memory is pre-allocated, and the data is sorted by using the time coefficient of each data packet, thereby making the input and output of data more efficient. In addition, in the correlation between data processing efficiency and memory usage, the memory usage efficiency is reduced to increase data processing efficiency.                         

이러한 구조를 활용하여 멀티미디어 회의에서 다수의 스트림을 처리하려면, 각 스트림 단위로 전용 버퍼를 각각 할당하여 스트림을 처리하거나, 여러 스트림의 타임 스탬프를 동기화하여 모든 스트림을 하나의 버퍼에 저장하여 처리할 수 있다.In order to process multiple streams in a multimedia conference using this structure, a dedicated buffer may be allocated to each stream to process streams, or time streams of multiple streams may be synchronized to store all streams in one buffer for processing. have.

그러나, 선행 발명에서 각 스트림에 버퍼를 할당할 경우, 버퍼를 위한 메모리를 미리 할당하므로 메모리의 사용 효율성이 낮아지고, 네트워크의 환경 변화로 인한 지연 증가가 발생하여 버퍼 크기가 예측한 크기보다 커질 경우 버퍼를 갱신해야 하는 문제점이 있다. 또한, 선행 발명에서 여러 개의 화상과 음성 데이터들은 하나의 포트를 통하여 수신하는 경우, 수신한 스트림을 저장하기 위해 각 스트림에 할당된 버퍼를 찾는 방법이 필요하며, 또한, 여러 스트림을 하나의 버퍼에 저장할 경우, 리스트의 길이가 선형적으로 증가하여 입력과 출력시간이 증가한다는 문제점이 있다.However, in the prior invention, when a buffer is allocated to each stream, the memory for the buffer is allocated in advance, and thus the use efficiency of the memory is lowered, and when the buffer size is larger than the expected size due to an increase in delay due to the change of network environment. There is a problem with updating the buffer. In addition, in the present invention, when a plurality of video and audio data are received through a single port, there is a need for a method of finding a buffer allocated to each stream to store the received stream. In case of storing, the length of the list increases linearly, which increases the input and output time.

상기 문제점을 해결하기 위한 본 발명의 목적은 주 리스트와 데이터 리스트로 구분되는 버퍼를 활용함으로써, 임의의 포트에서 수신한 데이터의 메모리 효율성을 높일 수 있는 멀티미디어 데이터 저장용 버퍼 구조 및 버퍼링 방법을 제공하기 위한 것이다.An object of the present invention for solving the above problems is to provide a buffer structure and buffering method for storing multimedia data that can increase the memory efficiency of data received from any port by utilizing a buffer divided into a main list and a data list It is for.

또한, 본 발명의 다른 목적은 다수의 데이터를 신속하게 처리하고, 화상과 음성을 동기화하기에 용이한 멀티미디어 데이터 저장용 버퍼 구조 및 버퍼링 방법을 제공하기 위한 것이다.Another object of the present invention is to provide a buffer structure and a buffering method for storing multimedia data which are easy to process a plurality of data quickly and to synchronize images and voices.

상기 목적을 달성하기 위한 수단으로서, 본 발명에 따른 멀티미디어 데이터 저장용 버퍼는,As a means for achieving the above object, a buffer for storing multimedia data according to the present invention,

화상 또는 음성 데이터를 임시 저장하는 멀티미디어 데이터 저장용 버퍼에 있어서,In the multimedia data storage buffer for temporarily storing the image or audio data,

상기 화상 또는 음성 데이터 스트림이 저장되는 노드로 구성된 데이터 리스트;A data list consisting of nodes in which the video or audio data stream is stored;

상기 데이터 리스트에 대한 정보를 갖는 노드로 구성된 주 리스트;A main list consisting of nodes having information about the data list;

상기 주 리스트에 소정 노드를 추가, 삭제 또는 검색하는 주 리스트 관리 모듈; 및 A main list management module for adding, deleting, or searching a predetermined node to the main list; And

상기 데이터 리스트에 소정 노드를 추가, 삭제 또는 검색하는 데이터 리스트 관리 모듈A data list management module for adding, deleting, or searching a predetermined node to the data list

를 포함하여 구성되는 특징이 있다.There is a feature configured to include.

여기서, 상기 주 리스트의 노드는 상기 데이터 리스트의 헤더 정보로 구성되는 것을 특징으로 한다.Here, the node of the main list is characterized by consisting of header information of the data list.

여기서, 상기 주 리스트 관리 모듈은 수신 데이터 패킷의 스트림 ID를 참조하여 상기 주 리스트에서 상기 스트림을 저장할 상기 데이터 리스트의 위치를 추출하는 것을 특징으로 한다.Here, the main list management module extracts a location of the data list to store the stream from the main list by referring to the stream ID of the received data packet.

여기서, 상기 데이터 리스트 관리 모듈은 수신 데이터 패킷의 시간 계수(Time Stamp: TS)를 사용하여 상기 데이터 리스트에 오름차순으로 데이터를 입력하는 것을 특징으로 한다. The data list management module may input data to the data list in ascending order using a time stamp (TS) of a received data packet.                     

여기서, 상기 데이터 리스트 관리 모듈은 사용자 클라이언트와 서버의 연결이 종료되는 경우, 종료된 사용자 클라이언트와 관련된 데이터 리스트를 삭제하는 것을 특징으로 한다.Herein, when the connection between the user client and the server is terminated, the data list management module deletes the data list related to the terminated user client.

여기서, 상기 주 리스트 또는 데이터 리스트는 링크드 리스트, 스킵 리스트, 또는 하이브리드 리스트 방식 중에서 어느 한 방식으로 형성되는 것을 한다.Here, the main list or data list may be formed in any one of a linked list, a skip list, or a hybrid list method.

한편, 상기 목적을 달성하기 위한 다른 수단으로서, 본 발명에 따른 멀티미디어 데이터 저장용 버퍼의 버퍼링 방법은,On the other hand, as another means for achieving the above object, the buffering method of the buffer for storing multimedia data according to the present invention,

사용자 클라이언트와 서버 사이에서 이루어지는 멀티미디어 데이터 저장용 버퍼의 버퍼링 방법에 있어서,In the buffering method of the buffer for storing multimedia data between the user client and the server,

a) 데이터가 임시 저장되는 버퍼를 화상 및 음성 데이터 스트림이 저장되는 데이터 리스트와 데이터 리스트에 대한 정보를 갖는 노드로 구성된 주 리스트로 구분하는 단계;a) dividing a buffer in which data is temporarily stored into a main list comprising a data list in which image and audio data streams are stored and a node having information on the data list;

b) 사용자가 서버에 연결된 경우, 상기 서버가 사용자에게 적어도 하나 이상의 스트림 ID를 생성하여 할당하는 단계;b) when the user is connected to a server, the server generating and assigning at least one stream ID to the user;

c) 상기 주 리스트에서 스트림 ID를 참조하여 상기 사용자의 데이터 스트림을 저장할 위치를 검색하는 단계; 및c) searching for a location to store the user's data stream with reference to the stream ID in the main list; And

d) 상기 검색된 데이터 리스트에 수신된 데이터 스트림을 저장하는 단계d) storing the received data stream in the retrieved data list

를 포함하여 이루어지는 특징이 있다.There is a feature consisting of.

여기서, 상기 c) 단계는, 상기 데이터 리스트 검색이 실패한 경우, 새로운 데이터 리스트를 생성하여 상기 주 리스트에 추가하는 것을 특징으로 한다. In the step c), if the data list retrieval fails, a new data list is generated and added to the main list.                     

여기서, 상기 d) 단계는, 수신 데이터 패킷의 시간 계수(Time Stamp: TS)를 사용하여 상기 데이터 리스트에 오름차순으로 상기 데이터 스트림을 저장하는 것을 특징으로 한다.In step d), the data stream may be stored in the data list in an ascending order using a time stamp (TS) of a received data packet.

여기서, 상기 사용자 클라이언트와 서버의 연결이 종료되는 경우, 종료된 사용자 클라이언트와 관련된 데이터 리스트를 삭제하는 단계를 추가로 포함할 수 있다.Here, when the connection between the user client and the server is terminated, the method may further include deleting a data list related to the terminated user client.

여기서, 상기 b) 단계의 스트림 ID는 상기 데이터 스트림 형식별로 상기 사용자를 각각 구분하는 하나의 스트림 ID인 것을 특징으로 한다.Here, the stream ID of step b) is one stream ID for distinguishing the user for each data stream type.

따라서, 본 발명에 따르면, 인코딩된 화상 및 음성 스트림을 디코딩하기 전에 메모리에 임시 저장하는 버퍼를 효율적으로 구현함으로써, 임의의 포트에서 수신한 데이터의 메모리 효율성을 높일 수 있고, 다수의 데이터를 신속하게 처리하며, 화상과 음성을 용이하게 동기화할 수 있다.
Therefore, according to the present invention, by efficiently implementing a buffer for temporarily storing the encoded image and audio streams in the memory before decoding, it is possible to increase the memory efficiency of the data received from any port, and to quickly It can process and synchronize the image and sound easily.

이하, 첨부된 도면을 참조하여 본 발명의 실시예에 따른 멀티미디어 데이터 저장용 버퍼 구조 및 버퍼링 방법을 상세히 설명한다.Hereinafter, a buffer structure and a buffering method for storing multimedia data according to an embodiment of the present invention will be described in detail with reference to the accompanying drawings.

본 발명의 실시예에 따른 멀티미디어 데이터 저장용 버퍼 구조는, 지연이 발생할 수 있는 네트워크를 사용하거나, 다수의 데이터를 처리하는 응용 프로그램에서 수신한 데이터를 화상, 음성, 송신기 등을 기준으로 분류 및 정렬하여 저장하는 경우에 사용될 수 있다.In the buffer structure for storing multimedia data according to an embodiment of the present invention, data received from an application program processing a plurality of data or a network that may cause delays may be classified and sorted based on an image, a voice, a transmitter, and the like. Can be used for storage.

따라서, 본 발명의 실시예에 따른 멀티미디어 데이터 저장용 버퍼를 사용하 는 경우, 전체 응용 프로그램에 영향을 주지 않으면서, 각 스트림별로 지연을 처리하고, 화상 및 음성 등의 멀티미디어 데이터를 동기화할 수 있어야 한다. 또한, 다수의 화상 및 음성 등의 멀티미디어 데이터를 동기화하려면, 저장된 데이터들이 생성된 시간을 참조하여 비슷한 시간에 생성된 데이터를 사용자에게 표시하여야 한다.Therefore, when using a buffer for storing multimedia data according to an embodiment of the present invention, it is necessary to process delays for each stream and to synchronize multimedia data such as video and audio without affecting the entire application program. do. In addition, in order to synchronize multimedia data such as a plurality of images and voices, data generated at a similar time should be displayed to the user with reference to the time when the stored data are generated.

도 1은 본 발명의 실시예에 따른 데이터 저장용 버퍼를 구비한 화상 회의 시스템의 구성도로서, 송신기(200), 수신기(300), 서버(100) 및 네트워크(400)로 구성된 환경을 나타낸다.1 is a configuration diagram of a video conferencing system having a data storage buffer according to an exemplary embodiment of the present invention, and illustrates an environment including a transmitter 200, a receiver 300, a server 100, and a network 400.

도 1을 참조하면, 상기 송신기(200)는 음성을 입력받는 마이크(210), 화상을 입력받는 카메라(220), 음성 및 화상 데이터를 저장하는 캡쳐 모듈(230), 캡처한 데이터에 대한 시간 계수(Time Stamp: TS) 및 스트림 식별자(Identification number: ID)를 지정하는 TS/ID 설정 모듈(240), 음성 및 화상 데이터를 압축하는 인코딩 모듈(250) 및 데이터를 데이터 패킷 단위로 구성하여 네트워크로 보내는 송신 모듈(260)로 구성된다.Referring to FIG. 1, the transmitter 200 includes a microphone 210 for receiving voice, a camera 220 for receiving an image, a capture module 230 for storing voice and image data, and a time coefficient for the captured data. A TS / ID setting module 240 for specifying a Time Stamp (TS) and a Stream Identification Number (ID), an encoding module 250 for compressing voice and image data, and data in units of data packets to a network. Outgoing transmission module 260.

상기 수신기(300)는 데이터 패킷을 네트워크로부터 받는 수신 모듈(310), 수신한 데이터 패킷에 첨부된 시간 계수 및 스트림 ID를 처리하는 TS/ID 해석 모듈(320), 수신한 데이터를 임시 저장하는 버퍼 모듈(330), 압축된 데이터를 푸는 디코딩 모듈(340), 음성 및 화상 데이터를 재생하는 재생 모듈(350), 음성 데이터를 재생하는 물리 장치인 스피커(360) 및 화상 스트림을 재생하는 물리 장치인 화면(370)으로 구성된다. The receiver 300 receives a data packet from a network, a receiving module 310, a TS / ID analysis module 320 for processing a time coefficient and a stream ID attached to the received data packet, and a buffer for temporarily storing the received data. Module 330, a decoding module 340 to decompress compressed data, a playback module 350 to play back voice and image data, a speaker 360 as a physical device to play back voice data, and a physical device to play back an image stream. It consists of a screen 370.                     

상기 서버(100)는 서버 수신 모듈(110), 서버 송신 모듈(120), 서버 TS/ID 해석 모듈(130), 버퍼 모듈(140) 및 ID 관리 모듈(150)을 포함할 수 있다. 여기서, 상기 서버 수신 모듈(110), 서버 송신 모듈(120), 서버 TS/ID 해석 모듈(130) 및 버퍼 모듈(140)은 화상 및 음성 데이터가 서버를 경유하여 수신자에게 분배되는 경우, 상기 서버(100)가 데이터 패킷 처리를 위해 구비하는 모듈들이다.The server 100 may include a server receiving module 110, a server transmitting module 120, a server TS / ID analysis module 130, a buffer module 140, and an ID management module 150. Here, the server receiving module 110, the server transmitting module 120, the server TS / ID analysis module 130 and the buffer module 140, the image and audio data is distributed to the receiver via the server, the server The modules 100 are provided for data packet processing.

여기서, 상기 서버 수신 모듈(110)은 송신자로부터 데이터 패킷을 수신하고, 상기 서버 송신 모듈(120)은 데이터 패킷을 수신자에게 송신하며, 상기 서버 TS/ID 해석 모듈(130)은 송수신에 관련된 데이터 패킷의 시간 계수와 스트림 ID를 추출하고, 상기 버퍼 모듈(140)에 데이터 패킷이 저장된다. 또한, 상기 ID 관리 모듈(150)은 상기 송신기(200)의 요청이 있을 때, 상기 송신기(200)가 전송할 화상 및 음성 스트림의 ID를 생성하여 발급한다. 이때, 상기 스트림 ID는 양의 정수이다. 만일, 상기 송신기(200)가 여러 개의 스트림을 전송하는 경우, 여러 개의 스트림 ID가 필요할 수도 있다. 이때, 스트림 형식별로 스트림 ID가 사용자를 각각 구분하도록 하면, 여러 개의 스트림을 하나의 스트림 ID로 구분할 수도 있다.Here, the server receiving module 110 receives a data packet from a sender, the server sending module 120 transmits a data packet to a receiver, and the server TS / ID analysis module 130 transmits a data packet related to transmission and reception. Extract the time coefficient and stream ID of the data packet is stored in the buffer module 140. In addition, the ID management module 150 generates and issues IDs of video and audio streams to be transmitted by the transmitter 200 when a request is made by the transmitter 200. At this time, the stream ID is a positive integer. If the transmitter 200 transmits multiple streams, multiple stream IDs may be required. In this case, if the stream ID distinguishes users from each stream type, several streams may be divided into one stream ID.

또한, 상기 네트워크(400)는 음성 및 화상 데이터를 전송하는 임의의 네트워크로서, 예를 들어, IP(Internet Protocol), TCP(Transmission Control Protocol), UDP(User Datagram Protocol) 또는 RTP(Real Time Protocol)를 사용하여 음성 또는 화상 데이터를 전송할 수 있는 임의의 네트워크일 수 있다.In addition, the network 400 is any network that transmits voice and image data, and is, for example, an Internet Protocol (IP), a Transmission Control Protocol (TCP), a User Datagram Protocol (UDP), or a Real Time Protocol (RTP). May be any network capable of transmitting voice or image data.

한편, 상기 버퍼 모듈(140)은 데이터 리스트의 정보를 가지는 주 리스트(142), 화상 및 음성 데이터가 실제 저장되는 데이터 리스트(144), 상기 주 리스트 (142)에 노드를 추가, 삭제, 검색하는 기능을 가지는 주 리스트 관리 모듈(141), 및 상기 데이터 리스트(144)에 노드를 추가, 삭제, 검색하는 기능을 가지는 데이터 리스트 관리 모듈(143)로 구성된다. 즉, 본 발명의 실시예에 따른 멀티미디어 데이터 저장용 버퍼는 각 화상과 음성 스트림을 저장하는 공간을 각각 마련하고, 또한, 다수의 화상과 음성을 저장할 수 있는 빠른 입출력 속도를 제공하기 위해 화상 및 음성 데이터를 저장하는 데이터 리스트와 상기 데이터 리스트에 대한 정보를 가지는 주 리스트로 구성된다.Meanwhile, the buffer module 140 adds, deletes, and retrieves a main list 142 having data list information, a data list 144 in which image and audio data are actually stored, and a node in the main list 142. A main list management module 141 having a function, and a data list management module 143 having a function of adding, deleting, and searching nodes to the data list 144. That is, the buffer for storing multimedia data according to an embodiment of the present invention provides a space for storing each image and audio stream, and also provides an image and audio for providing a high input / output speed for storing a plurality of images and audio. It consists of a data list for storing data and a main list having information about the data list.

한편, 상기 송신기(200)의 TS/ID 설정 모듈(240)에서 각각의 화상 및 음성 데이터가 캡처되었을 때, 상기 송신기(200)에서 관리하는 시간 계수기로부터 시간 계수를 읽어 캡처된 데이터에 대한 시간 계수를 설정한다. 이때, 상기 캡처된 음성 데이터 패킷에 대한 시간 계수는 사용자가 말한 시간을 나타내고, 화상 데이터 패킷에 대한 시간 계수는 사용자의 이미지가 찍힌 시간을 나타낸다.Meanwhile, when each image and audio data is captured by the TS / ID setting module 240 of the transmitter 200, the time coefficient of the captured data is read by reading the time coefficient from a time counter managed by the transmitter 200. Set. At this time, the time coefficient for the captured voice data packet indicates the time spoken by the user, and the time coefficient for the image data packet indicates the time when the user's image was taken.

이러한 시간 계수는 상기 송신기(200)에서 표준시간과 무관하게 관리하는 정보이므로, 수신기(300)에서 관리하는 시간 계수와 동기화되어 있지 않다. 이때, 캡처된 데이터는 인코딩 모듈(250)에서 압축된다.Since this time coefficient is information managed by the transmitter 200 irrespective of standard time, it is not synchronized with the time coefficient managed by the receiver 300. At this time, the captured data is compressed in the encoding module 250.

또한, 상기 송신 모듈(260)은 압축된 데이터를 하나의 데이터 패킷 단위로 구성하거나 여러 개의 데이터 패킷 단위로 분리하고, 각 데이터 패킷에 TS/ID 설정 모듈(240)에서 지정한 시간 계수 정보를 설정하고, 상기 송신기(200)가 서버(100)에게 요청하여 발급받은 스트림 ID를 설정한 후, 네트워크(400)로 전송하게 된다.In addition, the transmitting module 260 configures the compressed data in units of one data packet or in units of several data packets, sets time count information designated by the TS / ID setting module 240 in each data packet. Then, the transmitter 200 requests the server 100 to set the issued stream ID and transmits it to the network 400.

또한, 상기 수신기(300)는 수신 모듈(310)이 네트워크(400)로부터 데이터 패 킷을 수신한다. 이때, 상기 수신기(300)의 TS/ID 해석 모듈(320)은 수신한 데이터 패킷에 포함된 스트림 ID와 시간 계수 정보를 추출하고, 이를 버퍼 모듈(330)에 전달하고, 상기 버퍼 모듈(330)은 데이터를 스트림 ID별로 시간 계수의 오름차순으로 저장하게 된다.In addition, the receiver 300, the receiving module 310 receives the data packet from the network 400. At this time, the TS / ID analysis module 320 of the receiver 300 extracts the stream ID and time coefficient information included in the received data packet, transfers it to the buffer module 330, and the buffer module 330. Stores data in ascending order of time coefficients for each stream ID.

한편, 도 2는 본 발명의 실시예에 따른 데이터 저장용 버퍼에 저장되는 데이터 구조를 나타내는 도면으로서, 네트워크에서 전달되는 데이터 패킷의 형식을 나타내며, 복수의 헤더(510, 520), ID(530), TS(540) 및 데이터(550)를 포함할 수 있다.2 is a diagram illustrating a data structure stored in a data storage buffer according to an exemplary embodiment of the present invention, which shows a format of a data packet transmitted from a network, and includes a plurality of headers 510, 520, and ID 530. , TS 540 and data 550.

도 2를 참조하면, 본 발명의 실시예에 따른 데이터 저장용 버퍼에 저장되는 데이터 구조는, 네트워크가 데이터 패킷을 전달하기 위해 필요한 여러 가지 헤더(510, 520)가 붙고, 실제 화상 및 음성 데이터(550) 앞에 시간 계수(TS) 정보(540)가 첨부된다.Referring to FIG. 2, a data structure stored in a data storage buffer according to an embodiment of the present invention includes various headers 510 and 520 necessary for a network to transmit data packets, and includes actual image and audio data ( Time coefficient (TS) information 540 is preceded by 550.

여기서, 상기 네트워크에서 데이터 패킷을 전달하기 위해 필요한 헤더(510, 520)에는 IP 헤더, TCP 헤더, UDP 헤더, RTP 헤더 등이 포함될 수 있다. 이들 헤더에 시간 계수 정보가 포함될 수 있으나, 이들 헤더에 포함된 시간 계수는 데이터 패킷에 헤더가 추가된 시간을 나타내는 시간 계수이므로 이를 사용하는 것은 정확하지 않다. 따라서, 상기 시간 계수 정보는 상기 헤더와 분리되어 저장되는 것이 바람직하다.Here, the headers 510 and 520 necessary for transmitting data packets in the network may include an IP header, a TCP header, a UDP header, an RTP header, and the like. Although the time coefficient information may be included in these headers, the time coefficients included in these headers are time coefficients indicating the time when the header is added to the data packet, and thus it is not accurate to use them. Therefore, the time coefficient information is preferably stored separately from the header.

한편, 도 3은 본 발명의 실시예에 따른 데이터 저장용 버퍼의 구조를 예시하는 도면이다. 3 is a diagram illustrating a structure of a data storage buffer according to an embodiment of the present invention.                     

도 3을 참조하면, 본 발명의 실시예에 따른 데이터 저장용 버퍼는 데이터 리스트(144)에 대한 정보를 갖는 노드로 구성된 주 리스트(142)와 실제 화상 및 음성 스트림이 저장되는 노드로 구성된 다수의 데이터 리스트(144)로 구성된다.Referring to FIG. 3, a data storage buffer according to an embodiment of the present invention includes a main list 142 composed of nodes having information about a data list 144, and a plurality of nodes configured to store actual image and audio streams. It consists of a data list 144.

상기 주 리스트(142)는 도 1에 도시된 주 리스트 관리 모듈(141)에 의해 처리된다. 상기 주 리스트 관리 모듈(141)은 수신한 데이터 패킷의 스트림 ID를 참조하여 상기 주 리스트(142)에서 스트림을 저장할 데이터 리스트(144)의 위치를 추출한다.The main list 142 is processed by the main list management module 141 shown in FIG. The main list management module 141 extracts the location of the data list 144 to store the stream from the main list 142 by referring to the stream ID of the received data packet.

또한, 도 1에 도시된 데이터 리스트 관리 모듈(143)은 수신한 데이터 패킷의 시간 계수를 사용하여 상기 데이터 리스트(144)에 오름차순으로 입력하고, 도 1에 도시된 송신기(200)와 서버(100)의 연결이 종료되는 경우, 종료된 송신기(200)와 관련된 데이터 리스트(144)는 삭제된다.In addition, the data list management module 143 shown in FIG. 1 inputs the data list 144 in ascending order using the time coefficient of the received data packet, and the transmitter 200 and the server 100 shown in FIG. ) Is terminated, the data list 144 associated with the terminated transmitter 200 is deleted.

또한, 본 발명의 실시예에서, 메모리의 사용 효율성을 높이려면, 데이터를 추가할 때 메모리를 동적으로 할당하여 저장한다. 만일, 메모리 사용 효율성보다 데이터 처리 효율성이 중요한 경우, 소요 메모리를 미리 할당하여 사용할 수 있으나, 상기 동적 메모리는 네트워크 환경이 비교적 안정적인 환경에서 사용할 수 있다.In addition, in an embodiment of the present invention, to increase the use efficiency of the memory, the memory is dynamically allocated and stored when adding data. If data processing efficiency is more important than memory usage efficiency, the required memory may be allocated in advance, but the dynamic memory may be used in a relatively stable network environment.

또한, 상기 주 리스트(142)와 데이터 리스트(144)는 링크드 리스트, 스킵 리스트, 또는 하이브리드 리스트를 사용할 수 있다.In addition, the main list 142 and the data list 144 may use a linked list, a skip list, or a hybrid list.

도 4는 본 발명의 실시예에 따른 데이터 저장용 버퍼를 사용하는 데이터 송수신 방법의 동작 흐름도로서, 화상회의 진행을 예로서 설명한다. 4 is an operation flowchart of a data transmission / reception method using a data storage buffer according to an embodiment of the present invention.                     

도 4를 참조하면, 먼저, 사용자 클라이언트가 화상회의 서버와 연결된다(S401). 즉, 사용자 클라이언트가 서버에게 연결 요청을 하고 서버의 응답을 기다린 후, 상기 서버의 응답에 따라 상기 사용자 클라이언트는 서버와 연결된다. 여기서, 상기 사용자 클라이언트는 화상회의에 참가할 수 있는 복수의 클라이언트를 말하며, 각각 개별적으로 동일한 데이터 송수신이 이루어지게 되므로, 개별적인 사용자 클라이언트와 화상회의 서버 사이에 이루어지는 데이터 송수신 방법을 설명한다.Referring to FIG. 4, first, a user client is connected to a video conferencing server (S401). That is, after the user client makes a connection request to the server and waits for a response from the server, the user client is connected to the server according to the response of the server. Here, the user client refers to a plurality of clients that can participate in the videoconferencing, and since the same data transmission and reception are performed separately, the data transmission / reception method performed between the individual user client and the videoconferencing server will be described.

이후, 상기 사용자 클라이언트는 서버로부터 스트림 ID 수신 여부를 확인하게 된다(S402). 즉, 상기 서버가 자신의 정보를 전송할 때, 사용자 클라이언트가 사용할 스트림 ID를 할당하였는지 확인하게 된다.Thereafter, the user client checks whether a stream ID is received from the server (S402). That is, when the server transmits its information, it is checked whether the user ID has assigned a stream ID to use.

이후, 사용자는 상기 할당된 스트림 ID를 저장하고(S403), 향후 자신의 멀티미디어 정보를 전송할 때 사용한다.Thereafter, the user stores the allocated stream ID (S403), and uses the multimedia information in the future.

다음으로, 상기 사용자가 화상회의 참가 여부를 결정하고(S404), 이후, 상기 사용자가 화상회의에 참가하여, 화상/음성 데이터를 캡처하는지 확인하게 된다(S405). Next, the user determines whether to participate in the video conference (S404), and then, the user participates in the video conference to check whether the video / audio data is captured (S405).

만일, 사용자가 화상/음성 데이터를 캡처한 경우, 상기 사용자 클라이언트는 현재의 회의 참가자에게 시간계수와 스트림 ID를 데이터 패킷에 첨부하여 전송한다(S406). 이때, 회의 참가자가 없으면, 상기 시간계수와 스트림 ID를 전송하지 않는다If the user captures the video / audio data, the user client attaches the time coefficient and the stream ID to the data packet to the current conference participant (S406). At this time, if there is no conference participant, the time coefficient and stream ID are not transmitted.

다음으로, 상기 사용자가 상기 화상/음성 데이터를 캡처하지 않는 상태에서, 상기 사용자 클라이언트는 상기 화상회의 서버가 회의 참가자 정보를 보냈는지 확인하고(S407), 만일, 상기 사용자 클라이언트가 회의 참가자 정보를 수신한 경우, 회의 참가자 정보를 저장 또는 갱신하고(S408), 이후, 상기 사용자 클라이언트가 화상 및 음성 데이터를 전송할 때 참조한다.Next, in the state where the user does not capture the video / audio data, the user client checks whether the videoconferencing server has sent the meeting participant information (S407), and if the user client receives the meeting participant information, In one case, the meeting participant information is stored or updated (S408), and then referred to when the user client transmits video and audio data.

이후, 상기 사용자 클라이언트가 다른 회의 참가자로부터 화상 및 음성 데이터를 수신하였는지 확인하고(S409), 만일, 화상 및 음성 데이터를 수신하였으면, 상기 수신 데이터 패킷의 스트림 ID를 참조하여 본 발명의 실시예에 따른 버퍼의 주 리스트(142)에서 데이터를 저장할 데이터 리스트(144)를 검색하게 된다(S410).Subsequently, the user client checks whether video and audio data has been received from another conference participant (S409). If the user client receives video and audio data, the user client refers to the stream ID of the received data packet according to an embodiment of the present invention. In the main list 142 of the buffer, a data list 144 to store data is searched for (S410).

만일, 상기 버퍼의 주 리스트에서 데이터를 저장할 데이터 리스트(144) 검색에 실패하면, 새로운 데이터 리스트(144)를 생성하며(S411), 만일, 상기 버퍼의 주 리스트(142)에서 데이터를 저장할 데이터 리스트(144) 검색에 성공하거나 또는 상기 새로운 데이터 리스트를 생성한 경우, 시간 계수기를 참조하여 상기 데이터 리스트에서 데이터를 저장할 위치를 검색하고 저장한다(S412).If retrieval of the data list 144 to store data from the main list of the buffer fails, a new data list 144 is generated (S411), and if the data list to store data from the main list 142 of the buffer, If the search is successful or the new data list is generated, a location to store data in the data list is searched and stored with reference to a time counter (S412).

다음으로, 상기 사용자 클라이언트가 화상회의 참가/종료 여부를 결정하여(S413), 상기 화상회의에 계속 참가할 경우, 상기 S404 단계로 되돌아가서, 전술한 S404 내지 S412 단계를 반복하여 수행하게 된다.Next, the user client determines whether to join / end the video conference (S413). If the user client continues to participate in the video conference, the process returns to step S404 and the above-described steps S404 to S412 are repeated.

한편, 도 5는 본 발명의 실시예에 따른 데이터 저장용 버퍼를 구비한 서버의 동작 흐름도로서, 상기 서버가 화상회의를 진행하는 화상회의 서버인 경우를 예로서 설명한다.5 is an operation flowchart of a server having a data storage buffer according to an exemplary embodiment of the present invention, which will be described as an example of the case where the server is a video conference server conducting video conference.

도 5를 참조하면, 먼저, 상기 화상회의 서버는 사용자 클라이언트로부터 연 결 요청을 있는지 확인하여(S501), 상기 연결 요청을 있는 경우, 연결 요청을 수락하여 상기 사용자와 연결되고, 새로운 사용자에 대한 스트림 ID를 생성하여 새로운 사용자에게 스트림 ID를 전송한다(S502).Referring to FIG. 5, first, the videoconferencing server checks whether there is a connection request from a user client (S501), and if there is the connection request, accepts the connection request and is connected to the user, and streams for a new user. The ID is generated and the stream ID is transmitted to the new user (S502).

이때, 상기 스트림 ID는 임의의 양의 정수를 사용하며, 상기 스트림 ID는 난수기를 사용하여 생성할 수도 있고, 일정 범위의 정수값을 순차적으로 증가시키면서 사용할 수 있다.In this case, the stream ID may use any positive integer, and the stream ID may be generated using a random number, or may be used while sequentially increasing an integer value in a predetermined range.

만일, 사용자가 여러 개의 스트림을 전송할 경우, 여러 개의 스트림 ID가 필요할 수도 있다.If a user transmits multiple streams, multiple stream IDs may be required.

또한, 상기 사용자의 화상, 발표자료 화상, 사용자의 음성 등의 스트림 형식에 따른 네트워크 포트(Network port) 또는 스트림 처리 모듈(Stream Processing Module)이 다를 경우, 스트림 형식별로 스트림 ID가 사용자를 각각 구분하도록 하면, 여러 개의 스트림을 하나의 스트림 ID로 구분할 수도 있다. 따라서, 이러한 스트림 형식을 사용하지 않을 경우, 복수개의 스트림 ID를 사용자에게 할당하여야 한다.In addition, if the network port or stream processing module is different according to the stream format of the user's image, the presentation material image, the user's voice, etc., the stream ID may distinguish each user by the stream format. In this case, several streams may be divided into one stream ID. Therefore, when not using such a stream format, a plurality of stream IDs should be assigned to the user.

다음으로, 상기 사용자가 회의 참가 또는 종료 요청을 하면(S503), 상기 서버는 회의 참가자를 추가 또는 삭제하고, 회의 참가자에게 참가자 정보 또는 변경 내용을 전송한다(S504).Next, when the user requests to join or terminate the meeting (S503), the server adds or deletes the meeting participant and transmits the participant information or the changed information to the meeting participant (S504).

다음으로, 상기 사용자가 상기 서버와의 연결을 종료하길 원하는지 확인하여(S505), 상기 사용자가 상기 서버와의 연결을 종료하길 원하는 경우, 상기 서버는 상기 사용자가 사용하였던 스트림 ID를 삭제한다(S506). Next, by checking whether the user wants to terminate the connection with the server (S505), if the user wants to terminate the connection with the server, the server deletes the stream ID used by the user (S506). ).                     

한편, 도 6은 본 발명의 실시예에 따른 데이터 저장용 버퍼의 주 리스트의 동작을 예시하는 도면으로서, 스킵 리스트 방식을 사용하여 주 리스트(142)를 구성한 예를 나타낸다.6 is a diagram illustrating an operation of a main list of a data storage buffer according to an exemplary embodiment of the present invention, and illustrates an example in which the main list 142 is configured using a skip list method.

도 6을 참조하면, 예를 들어, 스트림 ID가 56인 데이터 패킷을 수신한 경우, 스트림 ID가 55인 노드와 67인 노드 사이에 입력된다. 이때, 상기 주 리스트(142)의 노드는 상기 데이터 리스트(144)의 헤더 정보로 구성될 수 있다.Referring to FIG. 6, for example, when a data packet having a stream ID of 56 is received, it is input between a node having a stream ID of 55 and a node having 67. In this case, the node of the main list 142 may be composed of header information of the data list 144.

한편, 도 7은 본 발명의 실시예에 따른 데이터 저장용 버퍼의 데이터 리스트의 동작을 예시하는 도면으로서, 스킵 리스트를 방식을 사용하여 데이터 리스트(144)를 구성한 예를 나타낸다.7 is a diagram illustrating an operation of a data list of a data storage buffer according to an exemplary embodiment of the present invention, and illustrates an example in which the data list 144 is configured using a skip list method.

도 7을 참조하면, 예를 들어, 스트림 ID가 33인 데이터를 수신한 경우, 스트림 ID가 32인 노드와 35인 노드 사이에 입력된다. 이때, 상기 데이터 리스트(144)를 구성하기 위해 링크드 리스트, 스킵 리스트 및 하이브리드 리스트 방식을 사용할 수 있다.Referring to FIG. 7, for example, when data having a stream ID of 33 is received, it is input between a node having a stream ID of 32 and a node having 35. In this case, linked lists, skip lists, and hybrid lists may be used to construct the data list 144.

결국, 본 발명의 실시예는 다양한 네트워크에 접속된 사용자들이 각기 다른 성능을 가지는 하드웨어를 사용하여 화상 및 음성을 압축 후 전송할 때, 네트워크 상태의 변화에 용이하게 적응할 수 있고, 수신한 데이터를 스트림별로 저장하는 버퍼의 구조 및 이를 활용하는 방법을 제공하게 된다.As a result, embodiments of the present invention can easily adapt to changes in network conditions when users connected to various networks compress and transmit video and audio using hardware having different performances, and receive the received data on a stream-by-stream basis. It provides a structure of a buffer to be stored and a method of using the same.

본 발명의 실시예에 따른 버퍼 구조는 여러 컴퓨터들이 멀티미디어 데이터를 송수신하는 환경에 적용되며, 멀티미디어 데이터를 송수신하는 과정에서 응용 프로그램에서 데이터를 처리하기 전에 메모리에 데이터를 효율적으로 임시 저장하여, 멀티미디어 데이터가 압축되기 전 상태로 표시될 수 있게 한다.The buffer structure according to the embodiment of the present invention is applied to an environment in which various computers transmit and receive multimedia data. In the process of transmitting and receiving multimedia data, multimedia data is efficiently stored temporarily in a memory before the application program processes the data. To be displayed as it was before it was compressed.

따라서, 본 발명의 실시예에 따른 버퍼 구조는 멀티미디어 데이터를 중계하는 서버, 개인용 멀티미디어 데이터 저장 프로그램 및 화상 회의 응용 프로그램에서 사용할 수 있다. 멀티미디어 데이터를 처리하는 서버에서 활용할 경우, 주 리스트와 데이터 리스트의 입출력 효율성이 높은 자료 구조를 활용하여 다수의 화상 및 음성 스트림을 분류하여 분배할 수 있다. 또한, 화상 데이터를 처리하는 단말에서 활용할 경우, 화상 및 음성 데이터를 분류 및 정렬하여 저장하고, 출력함으로써 립싱크와 같은 각 스트림 단위의 동기화가 용이해진다.Therefore, the buffer structure according to the embodiment of the present invention can be used in a server for relaying multimedia data, a personal multimedia data storage program, and a video conference application program. When used in a server processing multimedia data, a plurality of video and audio streams can be classified and distributed by utilizing a data structure having high input / output efficiency of the main list and the data list. In addition, when utilized in a terminal for processing image data, image and audio data are classified, sorted, stored, and outputted to facilitate synchronization of each stream unit such as a lip sync.

이상의 설명에서 본 발명은 특정의 실시예와 관련하여 도시 및 설명하였지만, 특허청구범위에 의해 나타난 발명의 사상 및 영역으로부터 벗어나지 않는 한도 내에서 다양한 개조 및 변화가 가능하다는 것을 당업계에서 통상의 지식을 가진 자라면 누구나 쉽게 알 수 있을 것이다.While the invention has been shown and described in connection with specific embodiments thereof, it will be appreciated that various modifications and changes can be made without departing from the spirit and scope of the invention as indicated by the claims. Anyone who owns it can easily find out.

본 발명에 따르면, 인코딩된 화상 및 음성 스트림을 디코딩하기 전에 메모리에 임시 저장하는 버퍼를 효율적으로 구현함으로써, 임의의 포트에서 수신한 데이터의 메모리 효율성을 높일 수 있고, 다수의 데이터를 신속하게 처리하며, 화상과 음성을 용이하게 동기화할 수 있다.According to the present invention, by efficiently implementing a buffer for temporarily storing the encoded picture and audio stream in memory before decoding, it is possible to increase the memory efficiency of the data received from any port, and to process a large number of data quickly. Image and audio can be easily synchronized.

Claims (11)

화상 또는 음성 데이터를 임시 저장하는 멀티미디어 데이터 저장용 버퍼에 있어서,In the multimedia data storage buffer for temporarily storing the image or audio data, 상기 화상 또는 음성 데이터 스트림이 저장되는 노드로 구성된 데이터 리스트;A data list consisting of nodes in which the video or audio data stream is stored; 상기 데이터 리스트에 대한 정보를 갖는 노드로 구성된 주 리스트;A main list consisting of nodes having information about the data list; 수신 데이터 패킷의 스트림 ID를 기초로 상기 주 리스트에 소정 노드를 추가, 삭제 또는 검색하는 주 리스트 관리 모듈; 및 A main list management module for adding, deleting, or retrieving a predetermined node to the main list based on the stream ID of the received data packet; And 상기 데이터 리스트에 소정 노드를 추가, 삭제 또는 검색하는 데이터 리스트 관리 모듈A data list management module for adding, deleting, or searching a predetermined node to the data list 을 포함하는 멀티미디어 데이터 저장용 버퍼.A buffer for storing multimedia data comprising a. 제1항에 있어서,The method of claim 1, 상기 주 리스트의 노드는 상기 데이터 리스트의 헤더 정보로 구성되는 것을 특징으로 하는 멀티미디어 데이터 저장용 버퍼.And the node of the main list comprises header information of the data list. 삭제delete 제1항에 있어서,The method of claim 1, 상기 데이터 리스트 관리 모듈은 수신 데이터 패킷의 시간 계수(Time Stamp: TS)를 사용하여 상기 데이터 리스트에 오름차순으로 데이터를 입력하는 것을 특징으로 하는 멀티미디어 데이터 저장용 버퍼.And the data list management module inputs data into the data list in ascending order using a time stamp (TS) of a received data packet. 제1항에 있어서,The method of claim 1, 상기 데이터 리스트 관리 모듈은 사용자 클라이언트와 서버의 연결이 종료되는 경우, 종료된 사용자 클라이언트와 관련된 데이터 리스트를 삭제하는 것을 특징으로 하는 멀티미디어 데이터 저장용 버퍼.And the data list management module deletes the data list related to the terminated user client when the connection between the user client and the server is terminated. 제1항에 있어서,The method of claim 1, 상기 주 리스트 또는 데이터 리스트는 링크드 리스트, 스킵 리스트, 또는 하이브리드 리스트 방식 중에서 어느 한 방식으로 형성되는 것을 특징으로 하는 멀티미디어 데이터 저장용 버퍼.The main list or the data list is a buffer for multimedia data storage, characterized in that formed in any one of a linked list, skip list, or a hybrid list method. 사용자 클라이언트와 서버 사이에서 이루어지는 멀티미디어 데이터 저장용 버퍼의 버퍼링 방법에 있어서,In the buffering method of the buffer for storing multimedia data between the user client and the server, a) 데이터가 임시 저장되는 버퍼를 화상 및 음성 데이터 스트림이 저장되는 데이터 리스트와 데이터 리스트에 대한 정보를 갖는 노드로 구성된 주 리스트로 구분하는 단계;a) dividing a buffer in which data is temporarily stored into a main list comprising a data list in which image and audio data streams are stored and a node having information on the data list; b) 사용자 클라이언트와 서버가 연결되어 전송된 데이터 스트림을 수신하는 단계;b) connecting the user client and the server to receive the transmitted data stream; c) 상기 데이터 스트림의 스트림 ID를 기초로 주 리스트에서 상기 데이터 스트림을 저장할 위치를 검색하는 단계; 및c) searching for a location in the main list to store the data stream based on the stream ID of the data stream; And d) 상기 검색한 데이터 리스트에 수신한 데이터 스트림을 저장하는 단계d) storing the received data stream in the retrieved data list 를 포함하는 멀티미디어 데이터 저장용 버퍼의 버퍼링 방법.The buffering method of the buffer for storing multimedia data comprising a. 제7항에 있어서,The method of claim 7, wherein 상기 c) 단계는, 상기 데이터 리스트 검색이 실패한 경우, 새로운 데이터 리스트를 생성하여 상기 주 리스트에 추가하는 것을 특징으로 하는 멀티미디어 데이터 저장용 버퍼의 버퍼링 방법.In the step c), if the data list retrieval fails, a new data list is generated and added to the main list. 제7항에 있어서,The method of claim 7, wherein 상기 d) 단계는, 수신 데이터 패킷의 시간 계수(Time Stamp: TS)를 사용하여 상기 데이터 리스트에 오름차순으로 상기 데이터 스트림을 저장하는 것을 특징으로 하는 멀티미디어 데이터 저장용 버퍼의 버퍼링 방법.And d) storing the data stream in ascending order in the data list using a time stamp (TS) of a received data packet. 제7항에 있어서,The method of claim 7, wherein 상기 d) 단계 이후에, 상기 사용자 클라이언트와 상기 서버의 연결이 종료되는 경우, 종료된 사용자 클라이언트와 관련된 데이터 리스트를 삭제하는 단계를 추가로 포함하는 멀티미디어 데이터 저장용 버퍼의 버퍼링 방법.And after the step d), when the connection between the user client and the server is terminated, deleting the data list related to the terminated user client. 제7항에 있어서,The method of claim 7, wherein 상기 스트림 ID는 상기 데이터 스트림 형식별로 상기 사용자 클라이언트를 각각 구분하는 하나의 스트림 ID인 것을 특징으로 하는 멀티미디어 데이터 저장용 버퍼의 버퍼링 방법.The stream ID is a buffering method of a buffer for storing multimedia data, characterized in that one stream ID for distinguishing the user client for each data stream format.
KR1020040072961A 2004-09-13 2004-09-13 A buffer structure for storing multimedia data, and a buffering method KR101074073B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020040072961A KR101074073B1 (en) 2004-09-13 2004-09-13 A buffer structure for storing multimedia data, and a buffering method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040072961A KR101074073B1 (en) 2004-09-13 2004-09-13 A buffer structure for storing multimedia data, and a buffering method

Publications (2)

Publication Number Publication Date
KR20060024094A KR20060024094A (en) 2006-03-16
KR101074073B1 true KR101074073B1 (en) 2011-10-17

Family

ID=37130088

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040072961A KR101074073B1 (en) 2004-09-13 2004-09-13 A buffer structure for storing multimedia data, and a buffering method

Country Status (1)

Country Link
KR (1) KR101074073B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100828404B1 (en) * 2006-05-08 2008-05-08 한국과학기술원 Processing method of data stream using Border Monitoring Query

Also Published As

Publication number Publication date
KR20060024094A (en) 2006-03-16

Similar Documents

Publication Publication Date Title
US9654537B2 (en) Synchronization and mixing of audio and video streams in network-based video conferencing call systems
CN1941916B (en) Method and system for synchronous packet data streams
US9819973B2 (en) Embedded appliance for multimedia capture
US6697097B1 (en) Synchronizing voice and video transmitted over separate channels
US8903916B2 (en) Method, system, and computer-readable medium to render repeatable data objects streamed over a network
CN100562121C (en) Make the synchronous method of rest image and moving picture stream
JP2002524004A (en) Communication management system for telephones based on computer networks.
US20070002902A1 (en) Audio and video synchronization
US7619645B2 (en) Audio visual media encoding system
JP2003338830A (en) Media transmitting method, media receiving method, media transmitter and media receiver
TW550948B (en) Audio/video IP camcorder
CN101789956A (en) System and method for realizing digital family remote communication service
EP2924985A1 (en) Low-bit-rate video conference system and method, sending end device, and receiving end device
CN112104918A (en) Image transmission method and device based on satellite network
US20100066806A1 (en) Internet video image producing method
CN101133590B (en) See what you see (SWYS)
KR101074073B1 (en) A buffer structure for storing multimedia data, and a buffering method
KR20020050903A (en) Education, Broad Casting, Multi-User Image Conference and Chatting Service Provision Method Using Internet
CN110502649B (en) Multimedia service classification method and device
KR20090007809A (en) System and method for real-time relay motion picture and user created content
JP2002290940A (en) Video conference system
KR20120000755A (en) Video conference device and method for providing information by voice recognition
TWI832698B (en) Video conference evaluation method and system
Johanson Designing an environment for distributed real-time collaboration
Civanla et al. IP-networked multimedia conferencing

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee