HRESULT hr = pSurface->GetDesc(&desc) failed

HRESULT hr = pSurface->GetDesc(&desc) failed

  I have a player control like this    my source filter -----   intel media sdk h264 decoder filter  -----evr。    32 bit

  in my pc can  use  7  player controls play 7 way hd videos,  if i want play 8 way hd videos ,there have some problems 

eg:  1、  I set decoder with MFX_IMPL_SOFTWARE,   when playback D3DFrameAllocator::LockFrame(mfxMemId mid, mfxFrameData *ptr)  can be called,  if More than 8 way hd video  hr = pSurface->LockRect(&locked, 0, 0) failed. (LockRect in LockFrame), and hr = -2005532292。

if  less than 7 way hd video,  there no problems

2、 I set decoder with MFX_IMPL_HARDWARE,   when more than 8 way hd video m_decoderService->CreateSurface() offen failed which in d3d_allocator.cpp,  and when stop the 8 way video at the same time, there have problem The memory access conflict. if  less than 7 way hd video,  there no problems.

My English is relatively poor, thank you.


我使用dshow写了个播放控件,  my source filter -----   intel media sdk h264 decoder filter  -----evr。   这个控件是32位的,可以播放收到的h264视频,想播放几路视频,就要用几个这样的控件,如果播放的视频路数少的话、占的内存和cpu都比较少,这样没问题。如果我的电脑软解播放7路高清,cpu就超过了90%,这时如再多播放一路高清的话,d3d_allocator.cpp内的D3DFrameAllocator::LockFrame内的hr = pSurface->LockRect(&locked, 0, 0);就会失败,是不是有什么限制?

同样,硬解时也是,当播放的视频路数比较多时,也会有问题。 d3d这块对处理的视频路数有限制?还是说对占用内存之类的有限制?

6 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.


based on the return error code and the fact that you are processing several streams at once it looks like you are running out of memory.

I suggest adding more physical memory to the machine and also exploring moving to 64 bit OS.


hi Petter , thank you for your answer.

my pc:  CPU:  Intel(R) core(TM) i7-3770k CPU @3.50GHz 3.90GHz            RAM:4G

one way video is    my source filter----intel h264 decoder filter----evr  

in picture one. run one process--"test.exe", it play 6 way hd video, it is OK,  the" test.exe" process use 700M ram.  but if play 7 way hd video,it will  occur above problem.  A 32-bit program, there should be 2G space.

in picture two, run two "test.exe" process, one process play 6 way hd video,It is OK, So  i guess , the limit is d3d  device or d3d Surface in one process?     



Downloadimage/jpeg 1212.jpg127.75 KB
Downloadimage/jpeg 33333.jpg238.16 KB

yes , hr = pSurface->LockRect(&locked, 0, 0) failed.    hr == D3DERR_OUTOFVIDEOMEMORY    .  why only use 1G ram can D3DERR_OUTOFVIDEOMEMORY    ?

Hi Yang,

Based on the info you provided it seems pretty clear the issue is that your are running out of memory.

Depending on your 32bit Windows OS configuration it is quite common that the OS will not allocate the full 1792MB of memory to Intel HD Graphics. Some more info here on how to check how much memory is dedicated to the graphics part:

I recommend exploring using a 64 bit OS and using more RAM.


Hi Petter ,  thank you for your help.

 i will try  using the 64bit .

Leave a Comment

Please sign in to add a comment. Not a member? Join today