Проект PJSIP: дескриптор окна, созданный из pjsua всегда NULL

В проекте PJSIP (Windows 32 Bit MFC / C ++) мы работаем с SIP-сервером, чтобы показать входящий видеозвонок.
Поскольку используются слои SDL / DirectShow (DirectX), SDL создает свое собственное окно для отображения входящего видео (это работает). Мой config_site.h выглядит так:

#define PJMEDIA_HAS_VIDEO           1
#define PJMEDIA_HAS_FFMPEG          1
#define PJMEDIA_VIDEO_DEV_HAS_SDL       1
#define PJMEDIA_VIDEO_DEV_HAS_DSHOW     1

Я бы показал видео в собственных окнах, а не в окне SDL.
Поэтому я пытаюсь получить HWND окна SDL и использовать его как дочернее окно собственного:

pjsua_call_get_info(call_id, &ci);
for (unsigned i = 0; i < ci.media_cnt; ++i)
{
if ((ci.media[i].type == PJMEDIA_TYPE_VIDEO) &&
(ci.media[i].dir & PJMEDIA_DIR_DECODING))
{
pjsua_vid_win_info wi;
pjsua_vid_win_get_info(ci.media[i].stream.vid.win_in, &wi);
// Using handle like this or whatever:
//HWND hwndOld = ::SetParent((HWND)&wi.hwnd.info.win.hwnd, pWnd->m_hWnd);
break;
}
}

Эта проблема: wi.hwnd.info.win.hwnd всегда NULL!

Может быть, у кого-то есть похожая проблема с окнами SDL?
Вопрос также в том, нужен ли мне, конечно, слой SDL — возможно, я просто уроню его, используя только PJSIP? Я имею в виду:

#define PJMEDIA_HAS_VIDEO           1
#define PJMEDIA_HAS_FFMPEG          1
//#define PJMEDIA_VIDEO_DEV_HAS_SDL       1
//#define PJMEDIA_VIDEO_DEV_HAS_DSHOW     1

Я попробовал этот конфиг, но видео не было показано …

-1

Решение

Обходной путь найден (быстрый & грязный) — FindWindow помогает (:

CWnd* pWnd = mainView->GetDlgItem(IDC_STATIC_CTRL);
RECT rectWin;
::GetWindowRect(pWnd->m_hWnd, &rectWin);

HWND hWnd = FindWindow( _T("SDL_app"), NULL);

::SetWindowPos(hWnd,
NULL,
rectWin.left,
rectWin.top,
rectWin.right - rectWin.left,
rectWin.bottom - rectWin.top,
SWP_SHOWWINDOW );
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]