DirectShow 보유 DIB 의 조작   [목차열람] [주소복사] [슬롯비우기]
DIB 의 조작
 
Microsoft DirectX 9.0

DIB 의 조작

비압축 비디오는, 보통, 약 30 프레임/초라고 하는 레이트로, 고속으로 연속해 재생되는 일련의 비트 맵이다. 많은 비디오는 압축된 포맷으로 DirectShow 필터 그래프에 입력되므로, 비디오 스트림은 일반적으로 압축 해제용의 디코더에 의해 처리된다. 디코더의 상당수는 데이터를 YUV 포맷으로 출력해, 비디오 하드웨어용의 RGB 에의 최종적인 변환을 렌더링의 직전까지 실시하지 않는다. 디코더가 DirectX 비디오 가속화를 사용하는 경우, 비디오 하드웨어는 이미지를 디코드하기 위한 추가의 처리를 실행한다. 따라서, 비트 맵의 최종적인 압축 해제는, 데이터가 비디오 하드웨어에 도달할 때까지 실행되지 않는 경우가 있다.

그러나, 비디오의 해석·처리·편집을 실행하려면 , 비디오를 렌더링 하거나 파일에 기입하기 전에, RGB 또는 YUV 등의 포맷에 압축 해제된 비트 맵을 처리하는 것이 필요하게 되는 경우가 있다. 이 처리는, 보통,CTransformFilter base class에 근거하는 변환 필터내의 Transform 메서드가 실시한다. 이 메서드는, 비디오 데이터를 캡슐화하는 IMediaSample 개체의 포인터를 받는다. IMediaSample::GetPointer 메서드는, 미처리의 데이터의 최초의 바이트의 포인터를 돌려준다. 비압축 프레임의 경우, 이 데이터는 필터가 직접 액세스 해 변경할 수 있는 픽셀로 구성된다. 이후의 섹션에서는, 이러한 방법으로 DIB 데이터를 효율적으로 조작하기 위한 배경 정보를 나타낸다.

  GDI, GDI+, DirectDraw, 또는 Direct3D 의 함수를 사용해 비트를 변경할 수도 있지만, 이러한 방법에 대해서는 여기에서는 설명하지 않는다.

여기에서는 다음의 내용에 대해 설명한다.

↑TOP