KR101071302B1 - DMA를 이용한 임베디드 WinCE 기반의 다이렉트쇼 필터 및 그 구동방법 - Google Patents

DMA를 이용한 임베디드 WinCE 기반의 다이렉트쇼 필터 및 그 구동방법 Download PDF

Info

Publication number
KR101071302B1
KR101071302B1 KR1020090065341A KR20090065341A KR101071302B1 KR 101071302 B1 KR101071302 B1 KR 101071302B1 KR 1020090065341 A KR1020090065341 A KR 1020090065341A KR 20090065341 A KR20090065341 A KR 20090065341A KR 101071302 B1 KR101071302 B1 KR 101071302B1
Authority
KR
South Korea
Prior art keywords
filter
multimedia stream
render
address
pointer
Prior art date
Application number
KR1020090065341A
Other languages
English (en)
Other versions
KR20110007746A (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 KR1020090065341A priority Critical patent/KR101071302B1/ko
Publication of KR20110007746A publication Critical patent/KR20110007746A/ko
Application granted granted Critical
Publication of KR101071302B1 publication Critical patent/KR101071302B1/ko

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/431Generation of visual interfaces for content selection or interaction; Content or additional data rendering
    • H04N21/4318Generation of visual interfaces for content selection or interaction; Content or additional data rendering by altering the content in the rendering process, e.g. blanking, blurring or masking an image region
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4435Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 DMA를 이용한 임베디드 WinCE 기반의 다이렉트쇼 필터 및 그 구동방법에 관한 것이다.
본 발명에 따른 다이렉스쇼 필터는 소스 필터, 변환 필터, 렌더 필터 및, 필터 제어기를 포함하며, 소스 필터는 디스크, 인터넷 서버 또는 VCR로부터 부호화된 멀티미디어 스트림을 수신하고, 변환 필터로 전달하며, 변환 필터는 소스 필터로부터 전달된 부호화된 멀티미디어 스트림을 복호화 하기 위하여 부호화된 멀티미디어 스트림을 DSP로 전달하며, DSP를 통해 복호화된 멀티미디어 스트림을 렌더링 하기 위하여 렌더 필터에 할당된 가상 메모리 주소를 제1 물리 메모리 주소로 변환하고 변환된 제1 물리 메모리 주소를 기설정된 포인터에 할당하여 가상 메모리 주소를 포인터의 주소와 맵핑하고, DSP를 통해 복호화된 멀티미디어 스트림이 저장될 제2 물리 메모리 주소를 포인터의 주소로 설정하여 DSP를 통해 복호화된 멀티미디어 스트림이 포인터의 주소에 저장되도록 하며, 렌더 필터는 포인터의 주소에 저장된 복호화된 멀티미디어 스트림을 렌더링하며, 필터 제어기는 소스 필터, 변환 필터 및, 렌더 필터의 동작을 제어하는 것을 특징으로 한다.
본 발명에 따르면, DMA 메모리 공유 방식을 이용하여 대용량의 데이터가 메모리 카피 없이 직접 전송 할 수 있으므로, 기존의 메모리 카피 방식으로 인한 CPU의 사용 부담을 줄일 수 있게 된다. 또한, DMA 메모리 공유 방식을 이용하여 멀티미디어 스트림을 전송하므로, 필터간에 데이터 전송 속도를 향상시킬 수 있다. 또 한, CPU에 부담을 적게 주게 됨으로, 임베디드 WinCE 시스템에서도 PC에서처럼 자연스러운 영상을 볼 수 있게 된다.
WinCE, DirectShow, 소스 필터, 변환 필터, 렌더 필터, 메모리 카피(Memory Copy)

Description

DMA를 이용한 임베디드 WinCE 기반의 다이렉트쇼 필터 및 그 구동방법{THE EMBEDDED WINDOW COMPACT EDITION DIRECTSHOW FILTER FOR UNSING DIRECT MEMORY ACCESS AND DRIVING METHOD THEREOF}
본 발명은 다이렉트쇼 필터 및 그 구동방법에 관한 것이다. 보다 구체적으로, DMA를 이용한 임베디드 WinCE 기반의 다이렉트쇼 필터 및 그 구동방법에 관한 것이다.
마이크로소프트사는 비디오의 재생이나 처리과정의 개발을 위한 WinCE(Window Compact Edition) DirectShow SDK(software development kit)를 제공한다. 다이렉트쇼는 여러 가지 포맷(MPEG, AV)으로 부호화된 디지털 데이터를 영상으로 재생할 수 있도록 동적 링크 라이브러리(dynamic-link library, DLLs)를 제공하여 필터의 제작을 용이하게 한다.
도 1은 일반적인 다이렉트쇼 필터의 구성과 멀티미디어 스트림의 전송로직을 개략적으로 나타낸 도면이다.
다이렉트쇼는 다이렉트쇼에서 가장 핵심적인 객체인 필터라는 모듈러 컴포넌트(modular component)를 사용하여 멀티미디어 스트림을 어떠한 식으로 제어하고 처리할 것인지를 정의한다.
어플리케이션(100)은 필터 그래프 매니저(filter graph manager)라 불리는 개체를 사용하여 필터 그래프(filter graph)를 생성하고, 멀티미디어 스트림이 필터 그래프를 통하여 움직이게 한다. 필터 그래프는 다양한 종류의 필터들이 연결된 집합으로 구성되며, 이러한 필터들은 입력 핀 또는출력 핀을 가지고(혹은 입력 핀과 출력 핀을 가지고) 연결된다. 이러한 핀은 필터 그래프상에서 연결된 필터 간에 멀티미디어 스트림을 전달할 때, 필터간의 연결이 이루어지는 부분으로서 멀티미디어 스트림의 전달 통로라고 할 수 있다.
필터 그래프에 구성된 필터들은 도 1에 도시된 바와 같이, 크게 소스 필터(120), 변환 필터(130), 렌더 필터(140)로 구분된다.
소스 필터(120)는 디스크, 인터넷 서버 또는 VCR로부터 소스를 얻고, 필터 그래프에게 알리는 역할을 한다.
변환 필터(130)는 소스 필터(120)로부터 멀티미디어 스트림을 전달 받고 전달 받은 스트림을 오디오 스트림과 비디오 스트림으로 분리 할 수 있다. 또한, 분리된 스트림을 DSP(digital signal processor, 200)로 전달하여 복호화(decoding) 될 수 있도록 하고, 복호화된 멀티미디어 스트림을 렌더 필터(140)로 전달하는 역할을 한다.
렌더 필터(140)는 복호화된 멀티미디어 스트림(11)을 렌더링(rendering)하여 출력한다.
필터 제어기(110)는 소스 필터(120), 변환 필터(130) 및 렌더 필터(140)의 동작을 제어하는 역할을 한다.
도 2는 종래의 다이렉트쇼 필터에서의 메모리 카피 기술을 나타낸 도면이다.
도 2에 도시된 바와 같이, 변환 필터(130)는 소스 필터(120)로부터 전달받은 부호화(encoding)된 멀티미디어 스트림(10)을 DSP(200)로 보내어 복호화(decoding) 되도록 한다. DSP(200)를 통해 복호화된 멀티미디어 스트림(11)은 직접 메모리 접근(direct memory access, 이하 DMA) 방식을 통하여 물리 메모리 공간(131)에 저장된다. 물리 메모리 공간(131)에 저장된 멀티미디어 스트림(11)은 렌더 필터(140)에서 정의 해 놓은 임의의 메모리 공간(141)을 통해 렌더 필터(140)로 전달된다. 이와 같이, 물리 메모리 공간(131)에 저장된 멀티미디어 스트림(11)이 렌더 필터(140)로 전송되는 경우, 임의의 메모리 공간(141)을 통하여 렌더 필터(140)로 전송되며, 렌더 필터(140)는 임의의 메모리 공간(141)을 통해 전송된 멀티미디어 스트림(11)을 렌더링 하게 한다. 여기서, 임의의 메모리 공간(141)은 렌더 필터(140)가 필터그래프에 등록될 때, DSP(200)를 통해 복호화된 멀티미디어 스트림(11)을 받아오기 위해 렌더 필터(140)에 할당된 가상 메모리 공간으로서 도 2에서는 렌더 버퍼(141)로 도시하였다.
렌더 필터(140)에 할당된 렌더 버퍼(141)는 가상 주소(virtual address)를 가지고 있는 반면, DSP(200)는 하나의 드라이버로서 물리 주소(physical address)를 할당받게 된다. 따라서 렌더 필터(140)는 DSP(200)를 통해 복호화된 멀티미디어 스트림(11)을 직접적으로 전송 받을 수 없기 때문에, 물리 메모리 공간(131)에 저장된 멀티미디어 스트림(11)을 메모리 카피(Memory Copy) 방식을 통하여 렌더 버 퍼(141)로 복사한 후 렌더링 하게 된다.
한편, 변환 필터(130)가 복호화된 멀티미디어 스트림(11)을 렌더 필터(140)로 전달하기 위해서는 'CTransformFilter' 또는 'CBaseFilter'라는 베이스 클래스로부터 새로운 서브 클래스들을 상속 받아야 한다.
도 3a 및 도 3b는 종래의 'CTransformFilter'로부터 상속 받은 서브 클래스들 중 'DecideBufferSize function'과 'Transform function' 소스의 일부분에 대한 일례를 나타낸 도면이다. 도 3a에 도시된 'DecideBufferSize function' 소스의 일부분에 대한 일례는 각각 하기와 같을 수 있다.
"DecideBufferSize function"
...
//Allocate input shared buffer
M_bitStreamPtr = (unsigned char *) alg_Memory_contigAlloc(m_nHeigh*m_Width*2,Memory_DEFAULTALIGNMENT);

m_bitStreamSize = m_nHeight*m_nWidth*2;
m_videoFrameSize = sizeYUV422Buf(m_Width,m_nHeight);
for(i=0;i<NUM_VIDEO_FRAME_BUFS,i++)
{
m_videoFrameBufferArray[i] = (unsigned char *)alg_Memory_contigAlloc(m_videoFrameSize,Memory_ DEFAULTALIGNMENT);

if(m_videoFrameBufferArray[i]==NULL)
{
...
}
}}
또한, 도 3b에 도시된 '"Transform function" 소스의 일부분에 대한 일례는 각각 하기와 같다.
"Transform function"
...
//The VISA variable declaration
long ActualDataLength;
unsigned char* pucInputBuffer;
unsigned char*pucOutputBuffer;
hr=pIn->GetPointer((BYTE**)&putUntputBuffer);
hr=pOut->GetPointer((BYTE**)&putUntputBuffer);
//The VISA variables declaration
ActualDataLength = pIn->GetActualDataLength();
Memcpy(m_bitStreamPtr, pucInputBuffer, ActualDataLength);
ActualDataLength = pIn->GetActualDataLength();
memcpy(m_bitStreamPtr, pucInputBuffer, ActualDataLength);
m_outFrameIndex = algExecVideo((void*)m_VideoDecoderHandle,
m_bitStreamPtr, m_videoFrameBufferArray[m_vidFrameIndex] , ActualDataLength,
m_videoFrameSize, m_vidFrameIndex);
m_vidFrameIndex=(m_vidFrameIndex+1)%NUM_VIDEO_FRAME_BUFS;

if(m_outFrameIndex>=0)
{
pOut->SetActualDataLength(m_nWidth*m_mHeigth*2);
if(m_VideoSubType == VIDEO_UYUY)//if YUY format
{
CopyMemory((PVOID)ucOutBuffer,
(PVOID)m_videoFrameBufferArray[m_outFrameIndex],m_videoFrameSize);
} else {
unsigned char*dest = (unsigned
char*)(m_videoFrameBufferArray[m_outFrameIndex]);
YUY_convert(dest,pucOutputBuffer, m_nWidth, m_nHeight);
}}
...
"DecideBufferSize function" 및 도 3a을 참조하면, 먼저, 'DecideBufferSize function'에서는 (3-1) 부분과 같이, 복호화된 멀티미디어 스트림을 저장할 물리 메모리 공간의 크기를 정의하고, (3-2) 부분과 같이, 그 물리 메모리 공간을 할당한다.
다음, "Transform function" 및 도 3b을 참조하면, 'Transform function'에서는 (3-3) 부분과 같이 렌더 필터(140)에 임의의 메모리 공간(렌더 버퍼)을 할당한다. 또한, (3-4) 부분과 같이, 'DecideBufferSize function'을 통하여 할당된 물리 메모리 공간에서 DSP를 이용한 복호화 처리를 하며, 복호화된 멀티미디어 스트 림을 저장한다. 또한, (3-5) 부분과 같이, 물리 메모리 공간에 저장된 멀티미디어 스트림이 메모리 카피 방식을 통하여 렌더 필터(140)에 할당된 임의의 메모리 공간(렌더 버퍼)으로 복사된다.
이와 같이, 변환 필터(130)에 할당된 물리 메모리 공간(131)에서 렌더 필터(140)에 할당된 임의의 메모리 공간(141)으로 복호화된 멀티미디어 스트림(11)을 전송하는 경우, 메모리 카피 기술을 이용하게 되는데, 복호화된 멀티미디어 스트림과 같이 대용량의 데이터를 카피하여 이용하여 전송하게 되면, CPU의 사용률이 증가하게 된다. 이에 따라, 대용량 스트림을 처리하는 시스템의 경우 그 시스템의 전체적인 성능을 저하 시키는 주 요인이 된다.
이러한 문제점을 해결하기 위한 본 발명은 필터간 데이터 전송 속도를 향상시키고, CPU 성능 저하를 최소화 시킬 수 있는 다이렉트쇼 필터 및 그 구동방법을 제공하는 것을 그 목적으로 한다.
본 발명에 따른 다이렉스쇼 필터는 소스 필터, 변환 필터, 렌더 필터 및, 필터 제어기를 포함하며, 소스 필터는 디스크, 인터넷 서버 또는 VCR로부터 부호화된 멀티미디어 스트림을 수신하고, 변환 필터로 전달하며, 변환 필터는 소스 필터로부터 전달된 부호화된 멀티미디어 스트림을 복호화 하기 위하여 부호화된 멀티미디어 스트림을 DSP로 전달하며, DSP를 통해 복호화된 멀티미디어 스트림을 렌더링 하기 위하여 렌더 필터에 할당된 가상 메모리 주소를 제1 물리 메모리 주소로 변환하고 변환된 제1 물리 메모리 주소를 기설정된 포인터에 할당하여 가상 메모리 주소를 포인터의 주소와 맵핑하고, DSP를 통해 복호화된 멀티미디어 스트림이 저장될 제2 물리 메모리 주소를 포인터의 주소로 설정하여 DSP를 통해 복호화된 멀티미디어 스트림이 포인터의 주소에 저장되도록 하며, 렌더 필터는 포인터의 주소에 저장된 복호화된 멀티미디어 스트림을 렌더링하며, 필터 제어기는 소스 필터, 변환 필터 및, 렌더 필터의 동작을 제어하는 것을 특징으로 한다.
변환 필터는,
포인터의 주소에 저장된 복호화된 멀티미디어 스트림 중 비디오 스트림의 포맷이 RGB 또는 YUV420 일 경우, YUV422 포맷으로 변환하는 것이 바람직하다.
본 발명에 따른 다이렉트쇼 필터의 구동방법은 (A) 소스 필터, 변환 필터 및 렌더 필터를 구성하는 단계를 포함하되, 변환 필터를 구성하는 단계는, (a-1) DSP를 통해 복호화된 멀티미디어 스트림을 렌더링 하기 위하여 렌더 필터에 할당된 가상 메모리 주소를 제1 물리 메모리 주소로 변환하는 단계, (a-2) 변환된 제1 물리 메모리 주소를 기설정된 포인터에 할당하여 가상 메모리 주소와 포인터의 주소를 맵핑하는 단계 및, (a-3) DSP를 통해 복호화된 멀티미디어 스트림이 저장될 제2 물리 메모리 주소를 포인터의 주소로 변경하는 단계를 포함하고, (B) 디스크, 인터넷 서버 또는 VCR로부터 부호화된 멀티미디어 스트림을 소스 필터를 통해 수신하는 단계, (C) 소스 필터를 통해 수신된 부호화된 멀티미디어 스트림을 변환 필터로 전달 하는 단계, (D) 변환 필터로 전달된 부호화된 멀티미디어 스트림을 복호화 하기 위하여 부호화된 멀티미디어 스트림을 DSP로 전달하는 단계, (E) DSP를 통해 복호화된 멀티미디어 스트림이 포인터의 주소에 저장되는 단계 및, (F) 포인터의 주소에 저장된 복호화된 멀티미디어 스트림을 렌더 필터를 통해 렌더링 하는 단계를 포함한다.
(D) 단계 이후,
포인터의 주소에 저장된 복호화된 멀티미디어 스트림 중 비디오 스트림의 포맷이 RGB 또는 YUV420 일 경우, YUV422 포맷으로 변환하는 YUV 변환 단계를 더 포함하는 것이 바람직하다.
본 발명에 따르면, DSP를 통해 복호화된 멀티미디어 스트림이 물리 메모리 공간에서 가상 메모리 공간으로 전송 될 때, DMA 메모리 공유 방식을 이용함으로써, 복호화된 멀티미디어 스트림과 같이 대용량의 데이터가 메모리 카피 없이 직접 전송 될 수 있으므로, 기존의 메모리 카피 방식으로 인한 CPU의 사용 부담을 줄일 수 있게 된다.
또한, DMA 메모리 공유 방식을 이용하여 멀티미디어 스트림을 전송하므로, 필터간에 데이터 전송 속도를 향상시킬 수 있다.
또한, CPU에 부담을 적게 주게 됨으로, 임베디드 WinCE 시스템에서도 PC에서처럼 자연스러운 영상을 볼 수 있게 된다.
이하에는, 첨부된 도면을 참조하여 본 발명의 실시예에 따른 다이렉트쇼 필터에 대하여 상세히 설명한다.
도 4는 본 발명의 실시예에 따른 다이렉트쇼 필터(400)의 구성 및 멀티미디어 스트림의 전송 흐름을 개략적으로 나타낸 도면이다.
도 4를 참조하면, 본 발명에 따른 다이렉트쇼 필터(400)는 소스 필터(410), 변환 필터(420), 렌더 필터(430) 및, 필터 제어기(440)를 포함한다.
소스 필터(410)는 디스크, 인터넷 서버 또는 VCR(video cassette recorder)로부터 부호화(encoding)된 멀티미디어 스트림을 입력 받고, 이를 필터 그래프에 알린 후, 필터 그래프 상에서 자신과 연결된 다운 스트림 필터로 전달한다. 여기서 다운 스트림 필터로는 변환 필터(420)가 이에 해당될 수 있다.
변환 필터(420)는 소스 필터(410)로부터 부호화된 멀티미디어 스트림을 입력 받고, 입력된 스트림을 원하는 형식으로 변환하는 기능 블록으로서, 소스 필터(410)로부터 전달된 멀티미디어 스트림을 오디오 스트림과 비디오 스트림으로 분리할 수 있으며, 분리된 스트림의 복호화(decoding) 처리를 위하여DSP(500)로 전달 할 수 있다. 또한, DSP(500)를 통해 복호화된 멀티미디어 스트림을 렌더 필터(430)에서 원하는 포맷으로 변환 할 수 있으며, 변환된 멀티미디어 스트림을 필터 그래프 상에서 자신과 연결된 다운 스트림 필터로 전달 할 수 있다. 여기서 다운 스트림 필터로는 렌더 필터(420)가 이에 해당 될 수 있다.
변환 필터(420)는 DSP(500)를 통해 복호화된 멀티미디어 스트림을 렌더 필터(430)로 전달하기 위하여 우선, 'CTransformFilter' 또는 'CBaseFilter'라는 베 이스 클래스(base class)로부터 새로운 서브 클래스들을 상속 받게 된다. 본 발명의 실시예에서는 'CTransformFilter' 로부터 서브 클래스들을 상속 받는 것을 예로 하여 설명한다.
'CTransformFilter'로부터 상속된 서브 클래스들에는 도 4에 도시된 바와 같이, CreateInstance, CheckInputType, DecideBufferSize, SetMediaType, GetMediaType, CheckTransform, Transform, DSP, YUV_convert 등이 있으며, 이들을 사용하여 멀티미디어 스트림을 DSP(500)를 보내어 복호화 처리를 할 수 있으며, 복호화된 멀티미디어 스트림을 렌더 필터(430)로 전달 할 수 있다.
CreateInstance(1)는 어플리케이션에서 변환 필터(420)를 생성할 때 호출된다. CheckInputType(2)은 소스 필터(410)로부터 받은 입력이 변환 필터(420)에 적당한 것인지 아닌지를 결정해 준다. DecideBufferSize(3)는 물리주소(physical address)를 이용하여 복호화된 멀티미디어 스트림이 저장 될 물리 메모리 공간(share physical memory, 421)과 그 크기를 지정한다. SetMediaType(4)은 핀의 미디어 타입을 설정 할 경우에 호출된다. GetMediaType(5)은 출력핀의 우선 미디어 타입을 얻어 온다. CheckTransform은 입력미디어(부호화된 멀티미디어 스트림) 타입이 출력 미디어(복호화된 멀티미디어 스트림) 타입과 호환성이 있을지 어떨지를 체크한다. Transform(6)은 DSP(500)를 통해 복호화된 멀티미디어 스트림을 렌더 버퍼(441)을 통해 렌더 필터(430)로 전달 할 수 있게 한다. YUV_convert(7)는 YUV_컨버터(425)이며, YUV_컨버터(425)는 DSP(500)를 통해 복호화된 멀티미디어 스트림 중 비디오 스트림(MPEG4/H264)의 포맷이 RGB 또는 YUV420일 경우 YUV422 포맷으로 변환 할 수 있도록 해 준다.
도 5는 본 발명의 실시예에 따른 OMAP3530 보드의 비디오 출력 레이어를 나타낸 도면이다. 본 실시예에서는 OMAP3530 보드의 비디오 출력 레이어는 YUV422를 사용한다. 예를 들어, 해상도 320x240 기준으로 LAYER1 RGB24에서 드로우(draw) 하면 100ms의 시간이 걸리며, LAYER2 YUV422에서 드로우(draw) 하면 5ms의 시간이 걸리게 된다. 또한, LAYER3 RGB565의 경우는 LAYER2 YUV422 보다 더 많은 시간이 소요된다. 이에 따라, 변환 필터(420)는 DSP(500)에서 복호화된 멀티미디어 스트림 중 비디오 스트림의 포맷이 RGB 또는 YUV420 일 경우, 이것을 OMAP3530 보드의 비디오 레이어에 맞게 YUV422 포맷으로 변환 할 수 있다.
일반적으로, DecideBufferSize(3)와 Transform(6)에서는, DSP(500)를 통해 복호화된 멀티미디어 스트림이 저장될 제2 물리 메모리 공간(미도시)이 설정된다. 여기서, 제2 물리 메모리 공간(미도시)은 변환 필터(420)가 필터 그래프에 등록될 때, DSP(500)를 통해 복호화된 멀티미디어 스트림을 저장하기 위해 할당된 물리 메모리 공간을 의미한다.
또한, 렌더 필터(430)가 복호화된 멀티미디어 스트림을 렌더링 하기 위해서는, 제2 물리 메모리 공간(미도시)에 저장된 멀티미디어 스트림이 렌더 버퍼(423)를 통하여 렌더 필터(430)에 전달하여야 한다. 여기서, 렌더 버퍼(441)는 렌더 필터(430)가 필터 그래프에 등록 될 때, 렌더링 할 멀티미디어 스트림을 받아오기 위하여 가상 메모리(virtual memory)상에 할당된 임의의 메모리 공간을 의미한다.
이와 같이, 기존에는 제2 물리 메모리 공간(미도시)에 저장된 멀티미디어 스 트림을 메모리 카피 방식을 이용하여 렌더 버퍼(423)에 복사한 후 렌더버퍼(423)을 통하여 렌더 필터(430)로 전달되었다. 그러나 본 발명의 실시예에서는 메모리 카피 방식이 아닌, DMA(Direct Memory Access)를 이용한 메모리 공유 방식을 이용하여 DSP(500)에서 복호화된 멀티미디어 스트림을 렌더 필터(430)로 직접 전달 할 수 있도록 한다.
이하에는, 첨부된 도 6a 및 도 6b를 참조하여 변환 필터에서 사용하는 DMA를 이용한 메모리 공유 방법에 관하여 보다 상세히 설명한다.
도 6a는 본 발명의 실시예에 따른 변환 필터(420)에서 사용하는 Transform(6) 함수의 소스의 일례를 나타낸 도면이다. 도 6a에 도시된 Transform 함수는 하기와 같을 수 있다.
...
unsigned char* pucOutputBuffer;
Buffer_Handle hOutBuf = hDecoder->hDstBuf;
hr = pOut->GetPointer((BYTE**)&pucOutputBuffer);
Buffer_setUserPtr(hOutBuf, (Int8 *) pucOutputBuffer);
m_outFrameIndex = algExecVideo(
(void *)m_VideoDecoderHandle,
m_bitStreamPtr,
hOutBuf /* share Physical memory*/,
ActualDataLength,
m_videoFrameSize,
m_vidFrameIndex);

m_vidFrameIndex = (m_vidFrameIndex+1) % NUM_VIDEO_FRAME_BUFS;

if(m_outFrameIndex>=0)
{
pOut->SetActualDataLength(m_nWidth * m_nHeight*2);
}
...
도 6b는 본 발명의 실시예에 따른 hOufBuf'라는 구조체를 나타낸 도면이다. 도 6b에 도시된 'hOufBuf' 구조체는 하기와 같을 수 있다.
typedef struct BufTab_Object {
Buffer_Handle *hBufs; /* Array of buffers in the BufTab. */
Int numBufs; /* The number of buffers in the BufTab. */
Buffer_Handle *hOrigBufs;
Int origNumBufs;
} BufTab_Object;
Transform(6) 함수 및 도 6a를 참조하면, 버퍼 핸들러 드라이버(buffer handler driver)(6-1) 함수가 도시되어 있다. 변환 필터(420)로 전달된 부호화된 멀티미디어 스트림을 복호화 하기 위하여DSP(500)로 전달하는데, 이때, 이 Transform 함수에는, DSP(500)를 통해 복호화된 멀티미디어 스트림이 저장될 제2 물리 메모리 주소와 그 사이즈 등에 관한 데이터가 정의되어 있으며, 이 데이터가 DSP(500)로 전달 되도록 할 수 있다. 여기서, 제2 물리 메모리 주소는 DSP(500)를 통해 복호화된 멀티미디어 스트림이 저장될 메모리의 위치이고, 사이즈는 그 메모리의 크기를 의미한다. 또한, 제2 물리 메모리 주소는 기존의 메모리 카피 방식을 설명하는 도 3b의(3-4) 부분에 해당될 수 있다.
다음, Buffer_setUserPtr() 함수(6-2)가 도시되어 있다. 이 함수는 "pucOutPutBuffer" 라는 렌더 버퍼(423)의 가상 메모리 주소를 제1 물리 메모리 주소로 변환 할 수 있으며, 변환된 제1 물리 메모리 주소를 'hOufBuf'라는 구조체내에 있는 'hBufs'라는 포인터에 할당 할 수 있다. 'hOufBuf' 구조체 내에는*hBufs 포인터가 있다. 이에 따라, 렌더 버퍼(423)의 가상 메모리 주소("pucOutPutBuffer")는 hBufs 포인터의 주소와 맵핑(mapping) 될 수 있다.
다음, algExecVideo의 3번째 변수 자리 즉, 제2 물리 메모리 주소의 자리에 hOutBuf 구조체가 있다. 즉, 제2 물리 메모리 주소가 hOutBuf 구조체의 hBufs 포인 터의 주소로 변경되어 있다. 이에 따라, DSP(500)를 통해 복호화된 멀티 미디어 스트림은 hBufs 포인터의 주소에 저장된다. 즉, hBufs 포인터에 할당된 제1 물리 메모리 주소에 복호화된 멀티 미디어 스트림이 저장 될 수 있다. 또한, hBufs 포인터의 주소는 렌더 버퍼(423)의 가상 메모리 주소("pucOutPutBuffer")와 맵핑되어 있으므로, 렌더 필터(430)는 hBufs 포인터의 주소에 저장된 복호화된 멀티미디어 스트림을 메모리 카피 없이 직접 가져다가 렌더링 할 수 있게 된다.
이는, 렌더 버퍼(430)를, DSP(500)를 통해 복호화된 멀티미디어 스트림을 저장하는 포인터(421)로서 사용 할 수 있음을 의미하며, 또한 렌더 버퍼(423)와, 포인터(421)가 하나의 공유 버퍼(427)로서 사용 할 수 있음을 의미한다.
렌더 필터(430)는 DSP(500)를 통하여 복호화된 멀티미디어 스트림을 하드웨어 장치에 렌더링(rendering)을 할 수 있다. 또한, 메모리나 디스크 파일에서도 렌더링 할 수 있다.
필터 제어기(440)는 소스 필터(410), 변환 필터(420) 및, 렌더 필터(430)를 선택하여 서로간의 상관 관계를 설정하고, 필요한 메모리 입출력 수 등을 결정하여 미디어 스트림이 원활히 재생될 수 있도록 소스 필터(410), 변환 필터(420) 및, 렌더 필터(430)의 동작을 제어한다.
도 7은 본 발명의 실시예에 따른 변환 필터(420)와 렌더 필터(430)간의 데이터 통신을 나타낸 도면이다.
도 7에 도시된 공유 버퍼(427)는 도4에 도시된 포인터 버퍼 즉, DSP(500)를 통해 복호화된 멀티미디어 스트림이 저장되는 공유 메모리(share physical memory, 421)와 렌더 버퍼(423)로 구성될 수 있으며, 이러한 두 구성은 하나의 버퍼로서 동작 할 수 있음을 나타내기 위하여 하나의 블록(427)으로 도시하였다. 이에 따라, 렌더 필터(430)는 공유 버퍼(427)에 저장된 스트림을 메모리 카피 없이 직접 전송 받아 렌더링 하게 된다.
이하에는, 첨부된 도면을 참조하여 본 발명의 실시예에 따른 다이렉트쇼 필터의 구동방법에 대하여 상세히 설명한다.
도 8은 본 발명의 실시예에 따른 다이렉트쇼 필터의 구동방법을 설명하기 위해 나타낸 도면이다. 또한, 본 발명의 다이렉트쇼 필터의 구동방법에 대한 이해를 돕기 위해, 도 4와 결부하여 상세히 설명한다.
도 4 및 도 8을 참조하면, 본 발명에 따른 다이렉트쇼 필터의 구동방법은 소스 필터(410), 변환 필터(420) 및, 렌더 필터(430)의 구성단계(S81), 부호화(encoding)된 멀티미디어 스트림 수신단계(S82), 부호화된 멀티미디어 스트림의 복호화(decoding) 단계(S83), 복호화된 멀티미디어 스트림을 포인터의 주소에 저장하는 단계(S84), 복호화된 비디오 스트림의 포맷을 변환하는 단계(S85) 및, 포인터의 주소에 저장된 복호화된 멀티미디어 스트림을 렌더링 하는 단계(S86)를 포함한다.
먼저, 소스 필터(410), 변환 필터(420) 및, 렌더 필터(430)의 구성단계(S81)에서는 멀티미디어 스트림을 재생하기 위하여 소스 필터(410), 변환 필터(420) 및, 렌더 필터(430)를 구성한다. 이 중 변환 필터 구성단계에서는 소스 필터(410), 변 환 필터(420) 및, 렌더 필터(430)를 구동하기 전에 하기의 3가지 단계를 수행 할 수 있다.
첫 번째, DSP(500)를 통해 복호화된 멀티미디어 스트림을 렌더링 하기 위하여 렌더 필터(430)에 할당된 가상 메모리 주소 즉, 렌더 버퍼(423)를 제1 물리 메모리 주소로 변환한다(S811).
두 번째, 제1 물리 메모리 주소로 변환된 렌더 버퍼(423)의 주소를 기설정된 포인터에 할당하여 렌더 버퍼(423)의 주소와 포인터의 주소를 맵핑한다(S812).
세 번째, DSP(500)를 통해 복호화된 멀티미디어 스트림이 저장될 제2 물리 메모리 주소를 포인터의 주소로 변경한다(S813). 이에 따라, DSP를 통해 복호화된 멀티미디어 스트림이 포인터의 주소에 저장된다. 여기서, 포인터의 주소가 가상 메모리 주소(렌더 버퍼(423)의 주소)와 맵핑되어 있으므로, 렌더 필터에서 렌더링 하기 위해 스트림을 전송 받을 경우, 렌더 버퍼(423)의 주소를 통하여 메모리 카피 없이 포인터의 주소에 저장된 스트림을 렌더 필터(430)로 직접 전송 될 수 있도록 한다.
다음, 부호화(encoding)된 멀티미디어 스트림 수신단계(S82)에서는, 소스 필터(410), 변환 필터(420) 및, 렌더 필터(430)를 구성 한 후, 소스 필터(410)를 통해 디스크, 인터넷 서버 또는 VCR로부터 부호화된 멀티미디어 스트림을 수신한다.
다음, 부호화된 멀티미디어 스트림의 복호화(decoding) 단계(S83)에서는 소스 필터(410)에서 부호화된 멀티미디어 스트림을 변환 필터(420)에 전달한 후, 전달된 멀티미디어 스트림을 복호화 하기 위하여 변환 필터에서 DSP(500)에 전달할 수 있다. DSP(500)로 부호화된 멀티미디어 스트림을 전달하기 전 단계에는 소스 필터(410)로부터 전달된 멀티미디어 스트림을 비디오 스트림과 오디오 스트림으로 분리 할 수 있다.
다음, 복호화된 멀티미디어 스트림을 포인터의 주소에 저장하는 단계(S84)에서는, 변환 필터의 구성 단계(S81)를 통하여 설정되어 있는 바와 같이, DSP(500)에서 복호화된 멀티미디어 스트림이 포인터의 주소(421)에 저장된다.
다음, YUV 변환하는 단계(S85)에서는 포인터의 주소(421)에 저장되어 있는 복호화된 멀티미디어 스트림 중 비디오 스트림의 포맷이 RGB 또는 YUV420 일 경우 저장된 비디오 스트림을 YUV422 포맷으로 변환 할 수 있다.
다음, 포인터의 주소(421)에 저장된 복호화된 멀티미디어 스트림을 렌더링 하는 단계(S86)에서는, 변환 필터의 구성 단계(S81)를 통하여 설정된 바와 같이, 복호화된 멀티미디어 스트림이 렌더 필터(430)에 할당된 렌더 버퍼(423)에 복사되는 메모리 카피를 하지 않고, 포인터의 주소(421)에 저장된 멀티미디어 스트림을 렌더 버퍼(423)의 주소를 통해 렌더 필터(430)로 직접 전송 할 수 있다. 이에 따라, 포인터의 주소 즉, 물리 메모리(421)와 렌더 버퍼(421)가 하나의 공유 버퍼(427)로서 동작 할 수 있게 된다.
본 발명에 따르면, DSP를 통해 복호화된 멀티미디어 스트림이 물리 메모리 공간에서 가상 메모리 공간으로 전송 될 때, DMA 메모리 공유 방식을 이용함으로써, 복호화된 멀티미디어 스트림과 같이 대용량의 데이터가 메모리 카피 없이 직접 전송 될 수 있으므로, 기존의 메모리 카피 방식으로 인한 CPU의 사용 부담을 줄일 수 있게 된다. 또한, DMA 메모리 공유 방식을 이용하여 멀티미디어 스트림을 전송하므로, 필터간에 데이터 전송 속도를 향상시킬 수 있다. 또한, CPU에 부담을 적게 주게 됨으로, 임베디드 WinCE 시스템에서도 PC에서처럼 자연스러운 영상을 볼 수 있게 된다.
이상에서 기재한 각각의 소스들은 본 발명의 이해를 돕기 위한 예시적인 것이며, 본 발명이 속하는 기술 분야의 당업자라면 쉽게 이해 할 수 있을 것이다.
또한, 이상에서 보는 바와 같이, 본 발명이 속하는 기술 분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시 될 수 있다는 것을 이해할 수 있을 것이다.
그러므로 이상에서 기술한 실시 예는 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 하고, 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
도 1은 일반적인 다이렉트쇼 필터의 구성과 멀티미디어 스트림의 전송 로직을 개략적으로 나타낸 도면.
도 2는 종래의 다이렉트쇼 필터에서의 메모리 카피 기술을 나타낸 도면.
도 3a 및 도 3b는 종래의 DecideBufferSize function과 Transform function을 나타낸 도면.
도 4는 본 발명의 실시예에 따른 다이렉트쇼 필터의 구성 및 멀티미디어 스트림의 전송 흐름을 개략적으로 나타낸 도면.
도 5는 본 발명의 실시예에 따른 OMAP3530 보드의 비디오 출력 레이어를 나타낸 도면.
도 6a는 본 발명의 실시예에 따른 변환 필터에서 사용하는 Transform 함수를 나타낸 도면.
도 6b는 hOutBuf 구조체를 나타낸 도면.
도 7은 본 발명의 실시예에 따른 변환 필터와 렌더 필터간의 데이터 통신 방법을 간략하게 도시화 하여 나타낸 도면.
도 8은 본 발명의 실시예에 따른 다이렉트쇼 필터의 구동방법을 설명하기 위해 나타낸 도면.

Claims (4)

  1. 멀티미디어 스트림을 재생하기 위한 임베디드 WinCE 기반의 다이렉트쇼 필터로서,
    소스 필터, 변환 필터, 렌더 필터 및, 필터 제어기를 포함하며,
    상기 소스 필터는 디스크, 인터넷 서버 또는 VCR로부터 부호화된 멀티미디어 스트림을 수신하고, 상기 변환 필터로 전달하며,
    상기 변환 필터는,
    상기 소스 필터로부터 전달된 상기 부호화된 멀티미디어 스트림을 복호화 하기 위하여 상기 부호화된 멀티미디어 스트림을 DSP로 전달하며,
    상기 DSP를 통해 복호화된 멀티미디어 스트림을 렌더링 하기 위하여 상기 렌더 필터에 할당된 가상 메모리 주소를 제1 물리 메모리 주소로 변환하고 상기 변환된 제1 물리 메모리 주소를 기설정된 포인터에 할당하여 상기 가상 메모리 주소를 상기 포인터의 주소와 맵핑하고,
    상기 DSP를 통해 복호화된 멀티미디어 스트림이 저장될 제2 물리 메모리 주소를 상기 포인터의 주소로 설정하여 상기 DSP를 통해 상기 복호화된 멀티미디어 스트림이 상기 포인터의 주소에 저장되도록 하며,
    상기 렌더 필터는 상기 가상 메모리 주소를 통해 상기 포인터의 주소에 저장된 상기 복호화된 멀티미디어 스트림을 렌더링하며,
    상기 필터 제어기는 상기 소스 필터, 상기 변환 필터 및, 상기 렌더 필터의 동작을 제어하는 것을 특징으로 하는 임베디드 WinCE 기반의 다이렉트쇼 필터.
  2. 제1항에 있어서,
    상기 변환 필터는,
    상기 포인터의 주소에 저장된 상기 복호화된 멀티미디어 스트림 중 비디오 스트림의 포맷이 RGB 또는 YUV420 일 경우, YUV422 포맷으로 변환하는 것을 특징으로 하는, 임베디드 WinCE 기반의 다이렉트쇼 필터.
  3. 멀티미디어 스트림을 재생하기 위한 임베디드 WinCE 기반의 다이렉트쇼 필터의 구동방법으로서,
    (A) 소스 필터, 변환 필터 및 렌더 필터를 구성하는 단계를 포함하되,
    상기 변환 필터를 구성하는 단계는,
    (a-1) DSP를 통해 복호화된 멀티미디어 스트림을 렌더링 하기 위하여 상기 렌더 필터에 할당된 가상 메모리 주소를 제1 물리 메모리 주소로 변환하는 단계;
    (a-2) 상기 변환된 제1 물리 메모리 주소를 기설정된 포인터에 할당하여 상기 가상 메모리 주소와 상기 포인터의 주소를 맵핑하는 단계; 및
    (a-3) 상기 DSP를 통해 복호화된 멀티미디어 스트림이 저장될 제2 물리 메모리 주소를 상기 포인터의 주소로 변경하는 단계를 포함하고,
    (B) 디스크, 인터넷 서버 또는 VCR로부터 부호화된 멀티미디어 스트림을 상기 소스 필터를 통해 수신하는 단계;
    (C) 상기 소스 필터를 통해 수신된 상기 부호화된 멀티미디어 스트림을 상기 변환 필터로 전달하는 단계;
    (D) 상기 변환 필터로 전달된 상기 부호화된 멀티미디어 스트림을 복호화 하기 위하여 상기 부호화된 멀티미디어 스트림을 상기 DSP로 전달하는 단계;
    (E) 상기 DSP를 통해 복호화된 멀티미디어 스트림이 상기 포인터의 주소에 저장되는 단계; 및
    (F) 상기 포인터의 주소에 저장된 상기 복호화된 멀티미디어 스트림을 상기 렌더 필터를 통해 렌더링 하는 단계
    를 포함하는 임베디드 WinCE 기반의 다이렉트쇼 필터의 구동방법.
  4. 제3항에 있어서,
    상기 (D) 단계 이후,
    상기 포인터의 주소에 저장된 상기 복호화된 멀티미디어 스트림 중 비디오 스트림의 포맷이 RGB 또는 YUV420 일 경우, YUV422 포맷으로 변환하는 YUV 변환 단계를 더 포함하는, 임베디드 WinCE 기반의 다이렉트쇼 필터의 구동방법.
KR1020090065341A 2009-07-17 2009-07-17 DMA를 이용한 임베디드 WinCE 기반의 다이렉트쇼 필터 및 그 구동방법 KR101071302B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090065341A KR101071302B1 (ko) 2009-07-17 2009-07-17 DMA를 이용한 임베디드 WinCE 기반의 다이렉트쇼 필터 및 그 구동방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090065341A KR101071302B1 (ko) 2009-07-17 2009-07-17 DMA를 이용한 임베디드 WinCE 기반의 다이렉트쇼 필터 및 그 구동방법

Publications (2)

Publication Number Publication Date
KR20110007746A KR20110007746A (ko) 2011-01-25
KR101071302B1 true KR101071302B1 (ko) 2011-10-07

Family

ID=43614122

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090065341A KR101071302B1 (ko) 2009-07-17 2009-07-17 DMA를 이용한 임베디드 WinCE 기반의 다이렉트쇼 필터 및 그 구동방법

Country Status (1)

Country Link
KR (1) KR101071302B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1185455A (ja) 1997-09-12 1999-03-30 Nec Corp 図形描画処理方式
JP2003186666A (ja) 2001-12-21 2003-07-04 Toshiba Corp マイクロコンピュータおよびdma制御回路

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1185455A (ja) 1997-09-12 1999-03-30 Nec Corp 図形描画処理方式
JP2003186666A (ja) 2001-12-21 2003-07-04 Toshiba Corp マイクロコンピュータおよびdma制御回路

Also Published As

Publication number Publication date
KR20110007746A (ko) 2011-01-25

Similar Documents

Publication Publication Date Title
EP2162827B1 (en) Interfaces for digital media processing
US6044397A (en) System and method for generation and interfacing of bitstreams representing MPEG-coded audiovisual objects
US7555540B2 (en) Media foundation media processor
US6341375B1 (en) Video on demand DVD system
US7970049B2 (en) Method and apparatus for encoding video in conjunction with a host processor
US6662060B1 (en) Method and apparatus for multimedia playback with title specific parameters
JP5335416B2 (ja) 音声/映像コーデックを抽象化するためのシステム
US6240469B1 (en) System for transferring motion picture data between peripheral device interfaces by second peripheral interface issuing data transaction based on information set by processor to designate first peripheral interface
KR20130137147A (ko) 오디오/비디오 소스로부터의 오디오 및 비디오 스트림을 복수의 오디오/비디오 싱크로 매핑하기 위한 시스템 및 방법
US20050055483A1 (en) System and method for file comperssion
KR101071302B1 (ko) DMA를 이용한 임베디드 WinCE 기반의 다이렉트쇼 필터 및 그 구동방법
KR20140117889A (ko) 클라이언트 장치, 서버 장치, 멀티미디어 리디렉션 시스템 및 그 방법
US20080071950A1 (en) Thin client implementation based on redirection of virtual i/o devices
US20130106873A1 (en) Pluggable media source and sink
JP3526153B2 (ja) データ記録再生装置
KR100599086B1 (ko) 멀티 디바이스 억세스 시스템 및 이를 이용한 멀티디바이스 억세스 기능을 갖는 av장치
KR100954010B1 (ko) 데이터 처리 시스템의 프로그래머블 멀티미디어 장치
EP0917144B1 (en) Method and apparatus for controlling a data buffer
KR101071303B1 (ko) DMA를 이용한 임베디드 WinCE 기반의 멀티미디어 플레이어
Castillo Lasheras Audio module integration into high quality video transmission software
Ennis Open digital media solutions using Windows NT
Chen et al. Architecting a Versatile Multi-Channel Multi-Decoder System on a DSP
JP2007141407A (ja) 記録メディア及びそれを用いた記録再生システム
Jacobson Computers, Bandwidth, and Speed
KR20070048872A (ko) 개인용 비디오 녹화기 및 그 파일 변환 방법

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
FPAY Annual fee payment

Payment date: 20140827

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee