메모리 부족 오류로 인해 Setalphabitmap이 작동하지 않습니다.

에 삭키 라자

직접 쇼 애플리케이션에서 스트리밍하는 라이브 비디오 위에 선을 그리려고합니다. 성공적으로 선을 그리는하지만 지속적으로 기능 아래를 호출하여 선을 만들려면, 오류가 발생했습니다 건가요 E_OUTOFMEMORY으로부터 SetAlphaBitmap(). drawlineOverlay()함수를 차례로 호출 하고 있으며 호출의 8은 괜찮지 만 아홉 번째 및 후속 호출은 그렇지 않습니다. 처음 8 번의 부름에 대해 SetAlphaBitmap반환 S_OK하고 9 번째로 반환합니다 8007000E. 그러나 비디오 스트리밍은 평화롭게 진행되고 있으며 오버레이 다이어그램 만 매달려 있습니다. 때때로 비디오 스트리밍이 중단되고 중단 된 후에도 계속 해당 함수를 호출하면.

이 오류가 발생하는 이유는 무엇입니까?

void drawlineOverlay(HWND m_hwndApp)
{
    int cx, cy;
    HRESULT hr;
    HBITMAP hbm;
    RECT rcClient;

    GetResolution(&cx,&cy);

    GetClientRect(m_hwndApp,&rcClient);

    HDC hdc = GetDC(m_hwndApp);

    if (hdc == NULL)
    {
        return E_FAIL;
    }
    HDC hdcBmp = CreateCompatibleDC(hdc);    
    if (hdcBmp == NULL)
    {
        return E_FAIL;
    }
   hbm = CreateCompatibleBitmap(hdc,cx,cy);
    BITMAP bm;
    if (0 == GetObject(hbm, sizeof(bm), &bm))
    {
        DeleteDC(hdcBmp);
        return E_FAIL;
    }           

    HBITMAP hbmOld = (HBITMAP)SelectObject(hdcBmp, hbm);
    if (hbmOld == 0)
    {
        DeleteDC(hdcBmp);
        return E_FAIL;
    }               
    //To draw line
    drawLine1(xx1, yy1, xx2, yy2,hdcBmp,2);

    VMR9AlphaBitmap bmpInfo;
    ZeroMemory(&bmpInfo, sizeof(bmpInfo));

    bmpInfo.dwFlags = VMRBITMAP_HDC | VMRBITMAP_SRCCOLORKEY;

    bmpInfo.hdc = hdcBmp;

    SetRect(&bmpInfo.rSrc, 0, 0, bm.bmWidth, bm.bmHeight);   
    bmpInfo.rDest.left = 0.f;
    bmpInfo.rDest.top = 0.f;
    bmpInfo.rDest.right = 1.0f;
    bmpInfo.rDest.bottom = 1.0f;

    // Set the transparency value (1.0 is opaque, 0.0 is transparent).
    bmpInfo.fAlpha = 0.5f;  
    bmpInfo.clrSrcKey = RGB(0,0,0);

    if(m_pVideoRender != NULL)
    {
        IVMRMixerBitmap9* pBmp; 
        hr = m_pVideoRender->QueryInterface(IID_IVMRMixerBitmap9, (LPVOID *)&pBmp);
        if (SUCCEEDED(hr)) 
        {
            hr = pBmp->SetAlphaBitmap(&bmpInfo);
            if(FAILED(hr))
            {
                PrintMessage(L"pBmp->SetAlphaBitmap hr = 0x%x  GetLastError() = %d\r\n",hr,GetLastError());
            }
            pBmp->Release();
            //SAFE_RELEASE(pBmp);

        }
    }
    // Clean up.
    ReleaseDC(m_hwndApp, hdc);
    DeleteBitmap(hbm);
    DeleteObject(SelectObject(hdcBmp, hbmOld));
    DeleteDC(hdcBmp);
}



void drawLine1(int xx1, int yy1, int xx2, int yy2,HDC hdcBmp) 
{
    RECT clntRc;
    int temp,s1,s2,swap;
    double dx,dy,p,x,y;
    x = xx1;
    y = yy1;
    dx = abs(xx2 - xx1);
    dy = abs(yy2 - yy1);
    s1 = sign(xx2 - xx1); 
    s2 = sign(yy2 - yy1);
    swap = 0;
    if (dy > dx)
    { 
        temp = dx; 
        dx = dy;
        dy = temp;
        swap = 1;
    }
    p = 2*dy - dx;
    for (int i = 0; i < dx; i++)
    {
        clntRc.left =x;
        clntRc.top = y;
        clntRc.right = x+g_Thickness;
        clntRc.bottom =y+g_Thickness;   
        FillRect(hdcBmp,&clntRc,CreateSolidBrush(RGB(0,255,0)));

        while (p >= 0)
        { 
            p = p - 2*dx; 
            if (swap)
                x += s1; 
            else
                y += s2;
        }
            p = p + 2*dy; 
            if (swap) 
                y += s2; 
            else 
                x += s1;
    }
}
VuVirt

CreateSolidBrush (RGB (0,255,0))에서 리소스가 누출됩니다. CreateSolidBrush (RGB (0,255,0))에서 반환 된 핸들을 DeleteObject해야합니다. https://msdn.microsoft.com/en-us/library/windows/desktop/dd183523(v=vs.85).aspx

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

메모리 부족으로 인해 앱이 종료 될 때 onLowMemory ()가 호출되지 않습니다.

분류에서Dev

메모리 부족 오류-왜 페이징하지 않습니까?

분류에서Dev

내 앱이 Genymotion에서 실행되지 않습니다. 메모리 부족 오류가 발생합니다.

분류에서Dev

메모리 부족 오류로 인해 프로세스가 종료됩니다.

분류에서Dev

부모에 대한 포인터로 인해 별 알고리즘이 작동하지 않습니다.

분류에서Dev

np.mean ()으로 인해 메모리 부족 오류가 발생합니다.

분류에서Dev

메모리 부족으로 인해 앱이 계속 충돌합니다.

분류에서Dev

메모리 부족 오류 이미지 로더

분류에서Dev

이전에 시작되었지만 지금은 "메모리 부족으로 인해 종료"된 앱을 어떻게 해결할 수 있습니까?

분류에서Dev

AVG_SUM_ONLY_NUMERIC 오류로 인해 쿼리 수식이 작동하지 않습니다.

분류에서Dev

Ubuntu 18.04 : 동적 스왑 공간 크기 조정이 실용적입니까? 메모리 부족으로 인해 Ubuntu가 충돌했습니다.

분류에서Dev

여러 이미지로 인한 메모리 부족

분류에서Dev

Photos.app을 사용할 때 메모리 부족으로 인해 iOS 앱이 종료되었습니다.

분류에서Dev

Magento에서 메모리 부족으로 치명적인 오류가 발생하는 이유는 무엇입니까?

분류에서Dev

안드로이드 범용 이미지 로더 메모리 부족 오류

분류에서Dev

메모리 증가로 인해 Outlook이 응답하지 않습니다.

분류에서Dev

MySQL 단순 내부 조인-메모리 부족-이 쿼리의 한 버전에서 메모리 부족 오류가 발생하는 이유는 무엇입니까?

분류에서Dev

메모리 부족으로 인해 iPhone 응용 프로그램이 충돌합니다.

분류에서Dev

TestCafe-BrowserStack 스크립트는 테스트 된 페이지에서 500이 발생하거나 & quot; 메모리 부족 & quot;과 같은 일반적인 오류가 발생하면 중단되고 종료되지 않습니다.

분류에서Dev

메모리 부족 오류, permgen, Java 8에서 Java 7로 이동

분류에서Dev

Android에서 이미지 품질을 저하시키지 않고 메모리 부족 (OOM) 오류를 해결하는 방법

분류에서Dev

연결 및 혼합에 대한 FFmpeg 필터 그래프가 작동하지 않습니다. 메모리 부족 오류

분류에서Dev

Java : 메모리 부족 오류로 인해 대형 Guava 테이블 개체의 직렬화가 실패 함

분류에서Dev

활동을 여러 번 다시로드 할 때 메모리 부족 오류

분류에서Dev

PHP 메모리 부족 오류는 php.ini의 memory_limit 설정을 반영하지 않습니다.

분류에서Dev

커널의 "while"/ "for"루프로 인해 CUDA 메모리 부족 오류가 발생합니까?

분류에서Dev

반응 네이티브 iOS, 메모리 부족 시나리오에서 캐시에서 로컬 이미지를 해제하는 방법은 무엇입니까?

분류에서Dev

바인딩 라이브러리 내부의 Xamarin 메모리 부족 오류

분류에서Dev

Linux 메모리 부족 (OOM) 킬러가 자동으로 실행되지 않고 sysrq-key에서 작동하는 이유는 무엇입니까?

Related 관련 기사

  1. 1

    메모리 부족으로 인해 앱이 종료 될 때 onLowMemory ()가 호출되지 않습니다.

  2. 2

    메모리 부족 오류-왜 페이징하지 않습니까?

  3. 3

    내 앱이 Genymotion에서 실행되지 않습니다. 메모리 부족 오류가 발생합니다.

  4. 4

    메모리 부족 오류로 인해 프로세스가 종료됩니다.

  5. 5

    부모에 대한 포인터로 인해 별 알고리즘이 작동하지 않습니다.

  6. 6

    np.mean ()으로 인해 메모리 부족 오류가 발생합니다.

  7. 7

    메모리 부족으로 인해 앱이 계속 충돌합니다.

  8. 8

    메모리 부족 오류 이미지 로더

  9. 9

    이전에 시작되었지만 지금은 "메모리 부족으로 인해 종료"된 앱을 어떻게 해결할 수 있습니까?

  10. 10

    AVG_SUM_ONLY_NUMERIC 오류로 인해 쿼리 수식이 작동하지 않습니다.

  11. 11

    Ubuntu 18.04 : 동적 스왑 공간 크기 조정이 실용적입니까? 메모리 부족으로 인해 Ubuntu가 충돌했습니다.

  12. 12

    여러 이미지로 인한 메모리 부족

  13. 13

    Photos.app을 사용할 때 메모리 부족으로 인해 iOS 앱이 종료되었습니다.

  14. 14

    Magento에서 메모리 부족으로 치명적인 오류가 발생하는 이유는 무엇입니까?

  15. 15

    안드로이드 범용 이미지 로더 메모리 부족 오류

  16. 16

    메모리 증가로 인해 Outlook이 응답하지 않습니다.

  17. 17

    MySQL 단순 내부 조인-메모리 부족-이 쿼리의 한 버전에서 메모리 부족 오류가 발생하는 이유는 무엇입니까?

  18. 18

    메모리 부족으로 인해 iPhone 응용 프로그램이 충돌합니다.

  19. 19

    TestCafe-BrowserStack 스크립트는 테스트 된 페이지에서 500이 발생하거나 & quot; 메모리 부족 & quot;과 같은 일반적인 오류가 발생하면 중단되고 종료되지 않습니다.

  20. 20

    메모리 부족 오류, permgen, Java 8에서 Java 7로 이동

  21. 21

    Android에서 이미지 품질을 저하시키지 않고 메모리 부족 (OOM) 오류를 해결하는 방법

  22. 22

    연결 및 혼합에 대한 FFmpeg 필터 그래프가 작동하지 않습니다. 메모리 부족 오류

  23. 23

    Java : 메모리 부족 오류로 인해 대형 Guava 테이블 개체의 직렬화가 실패 함

  24. 24

    활동을 여러 번 다시로드 할 때 메모리 부족 오류

  25. 25

    PHP 메모리 부족 오류는 php.ini의 memory_limit 설정을 반영하지 않습니다.

  26. 26

    커널의 "while"/ "for"루프로 인해 CUDA 메모리 부족 오류가 발생합니까?

  27. 27

    반응 네이티브 iOS, 메모리 부족 시나리오에서 캐시에서 로컬 이미지를 해제하는 방법은 무엇입니까?

  28. 28

    바인딩 라이브러리 내부의 Xamarin 메모리 부족 오류

  29. 29

    Linux 메모리 부족 (OOM) 킬러가 자동으로 실행되지 않고 sysrq-key에서 작동하는 이유는 무엇입니까?

뜨겁다태그

보관