kyom | Bonjour,
Je dois avoir du mal pour libérer mes structs, pointeurs et autre parce que mon programme a de grosse fuite mémoire (quelques giga en quelques secondes). Je crois avoir isoler le probleme dans ces deux fonctions, pouvez vous m'aider a me montrer ce que j'ai oublié de libérer et comment les libérer.
Code :
- BITMAP take_screenshot()
- {
- HDC hCaptureDC = CreateCompatibleDC(hDesktopDC);
- HBITMAP hCaptureBitmap =CreateCompatibleBitmap(hDesktopDC,
- nScreenWidth, nScreenHeight);
- SelectObject(hCaptureDC,hCaptureBitmap);
- BitBlt(hCaptureDC,0,0,nScreenWidth,nScreenHeight,
- hDesktopDC,0,0,SRCCOPY|CAPTUREBLT);
- //Get Cursor Pos
- POINT xPoint;
- GetCursorPos( &xPoint );
- //Draw the Cursor
- bool g_recordcursor = 1;
- if (g_recordcursor == 1) {
- BOOL ret;
- CURSORINFO cinfo;
- cinfo.cbSize = sizeof(CURSORINFO);
- ret = GetCursorInfo(&cinfo);
- DrawIcon( hCaptureDC, cinfo.ptScreenPos.x, cinfo.ptScreenPos.y, cinfo.hCursor);
- }
- HBITMAP hNewBitmap = (HBITMAP)SelectObject(hCaptureDC, hCaptureBitmap);
- BITMAP bm;
- ZeroMemory(&bm,sizeof(BITMAP));
- GetObject(hNewBitmap, sizeof(bm), &bm);
- int bm_size = bm.bmWidthBytes * bm.bmHeight;
- bm.bmBits = new char[bm_size];
- long nfetched = GetBitmapBits(hCaptureBitmap, bm_size, bm.bmBits);
- DeleteDC(hCaptureDC);
- DeleteObject(hCaptureBitmap);
- DeleteObject(hNewBitmap);
- return bm;
- }
- static void fill_yuv_image(AVFrame *pict, int frame_index, int width, int height)
- {
- BITMAP bm = take_screenshot();
- SwsContext *fooContext = sws_getContext(nScreenWidth,nScreenHeight,PIX_FMT_RGB32,
- width,height,STREAM_PIX_FMT,
- sws_flags,NULL,NULL,NULL);
- uint8_t *movie_dib_bits = reinterpret_cast<uint8_t *>(bm.bmBits);
- int dibrowbytes = bm.bmWidthBytes;
- uint8_t* data_out[4];
- int stride_out[4];
- data_out[0] = movie_dib_bits;
- stride_out[0] = dibrowbytes;
- sws_scale(fooContext,data_out,stride_out,0,nScreenHeight,pict->data,pict->linesize);
- // A partir d'ici j'ai besoin de plus rien sauf pict
- free(movie_dib_bits);
- DeleteObject(&bm);
- }
|
Merci ! Message édité par kyom le 02-09-2009 à 16:51:53
|