PDA

원본 보기 : VC1 재생시 메모리 누수 문제


z
2008-06-12, 07:19 PM
ftp에 vc1_ts.rar하고 MPCVideoDec.rar 올려두었습니다.

VC1_ts.rar 이 샘플로 테스트한 겁니다.
KMP 초기화 상태에서

vc-1 디코더는 아래 것을 사용하고 비디오 필터를 떼고 DxVA로 사용했습니다.
MPCVideoDec.rar

위 VC1_ts 샘플을 상기 디코더로 VMR9 renderless로 재생하면 DxVA로 재생이 되는데 VMR mixing 모드(+yuv모드전환)를 enable하지 않으면 화면비율이 어긋나고 영상하단의 8픽셀에 노이즈가 끼더군요.

이 샘플은 원본 블루레이에서 ts container에 mux된 vc1 샘플입니다.
이상하게 이 vc1동영상을 evr + ms의 vc-1 디코더로 재생해도 DxVA가 안되더군요.

참고로 kmp 디코더 설정의 vc-1 디코더 초기값이 "시스템 기본"으로 되어 있는지 확인 한번 해보시기 바랍니다. 제가 테스트를 할 때 이상하다 싶으면 두번째 스샷에서처럼 환경설정을 하나 만들어서 테스트합니다. 두번째 스샷에서 해당 버튼을 누르면 kmp초기값으로 환경설정을 만들어주는데 vc-1디코더 부분이 설정이 안되어 있는 것 같더군요. 제 생각에 세번째 스샷처럼 "시스템 기본값"에 맞추는게 좋을 것 같습니다. 안 그러면 low merit로 libavcodec으로 연결이 됩니다.

ms사의 vc-1 디코더 dxva가 evr에서도 안되는 것이 무슨 다른 조건이 특별히 있는지 왜 ts에 mux된 vc-1에 적용이 안되는지 모르겠네요. 혹시 이유를 아는 분 있으면 댓글 좀 부탁합니다. 그러다가 이 동영상을 mpc로 우연히 돌려봤는데 DxVA가 되서 확인해 보고 별개로 컴파일된 mpcvideo 디코더를 구해서 kmp에 연결해봤더니 EVR뿐 아니라 VMR9 renderless상태에서도 DxVA가 적용이 되더군요.

(vmr 믹싱기능을 enable해야 문제가 없습니다. 최근 버전의 mpc를 보면 vmr 믹싱 모드에 kmp처럼 여분의 yuv모드전환 옵션이 사라진 걸로 봐서 기본적으로 yuv모드로 세팅하고 있는 것 같습니다. 제가 생각하기에 vmr믹싱 모드를 켜면 항상 yuv모드를 사용하는 것이 좋다고 여겨지기 때문에 추후에 확인해 보시고 옵션을 통합하면 좋젰습니다.)

제 생각에 kmp 자체에 vc1의 dxva1,2모듈을 가지는 것이 더 낫겠다 싶은 생각이 듭니다.
그런데 이 mpcvideo 디코더를 kmp에 연결하고 재생하면 첫번째 스크린샷처럼 메모리 누수가 생깁니다. kmp 자체 vc1의 dxva모듈을 가지지 않아도 외부 dxva 디코더를 연결해서 사용할 수 있는 방법이 있으니 괜찮기는 한데 이렇게 메모리 누수가 생기니 좀 난감했습니다. 혹시 디코더 버그인가 싶어서 다른 재생기에 연결해서 재생해 보니 괜찮은 것 같더군요.

한번 확인해 보시고 이 부분을 조정해 주실 수 있으면 좋겠습니다.


[Primary Filtergraph]
0) - vc1.ts
1) - KMP MPEG2(TS) Splitter
2) - KMP AVI<->AC3/DTS Transform
3) - CyberLink Audio Decoder (PDVD7)
4) - MPC - Video decoder
5) - KMP Audio Transform(Copy)
6) - Video Mixing Renderer9(Renderless)
7) - Default DirectSound Device

[Video Info]
Decoder - (WVC1) MPC - Video decoder
Format - Major Type: Video - Sub Type: UnKnown
VideoInfo2: dxva 1920X1088, 12 bits

z
2008-06-15, 03:44 PM
음.. 이거 메모리 누수가 좀 심하군요.

위 동영상 20분 재생하고 난 후.. :eek:

램이 조금 넉넉해서 그런가 별로 탈은 없는데 메모리 누수가 진행형이라는데 문제가 있습니다.

종료시 하드 긁는 소리도 좀 납니다.

Raiden
2008-06-17, 01:34 PM
참고로 kmp 디코더 설정의 vc-1 디코더 초기값이 "시스템 기본"으로 되어 있는지 확인 한번 해보시기 바랍니다. 제가 테스트를 할 때 이상하다 싶으면 두번째 스샷에서처럼 환경설정을 하나 만들어서 테스트합니다. 두번째 스샷에서 해당 버튼을 누르면 kmp초기값으로 환경설정을 만들어주는데 vc-1디코더 부분이 설정이 안되어 있는 것 같더군요. 제 생각에 세번째 스샷처럼 "시스템 기본값"에 맞추는게 좋을 것 같습니다. 안 그러면 low merit로 libavcodec으로 연결이 됩니다.


=> 기존에 "특별한 처리를 하지 않음(권장)" 으로 되어 있어서
"System 기본으로 재생" 되게 수정해 두었습니다.

hackerslav
2008-06-17, 04:12 PM
제가 봐도 약간 누수 현상은 심한듯 합니다만....
Z 님 하드 긁는 소리가 난다 함은 제생각인데 아마 님의 컴터 램이 아닌

가상 메모리로 하드 스왑이 많이 이루어 졌기 떄문에.. 그런 현상이 발생한게 아닐지
생각이 됩니다..

z
2008-07-12, 04:22 AM
음... 이거 WMVideo Decoder DMO에서도 새는 것 같습니다. 디코더 문제가 아니라 ts스플리터 문제같네요.

Raiden
2008-07-12, 07:55 AM
이거 쭉 테스트를 좀 해봤었는데,
디코더 문제는 아닌게 확실하더군요.
그런데, 다른 ts 파일로 테스트 해보니,
누수가 발생 안하는거 같아서 잠시 보류했었습니다. :o