Видео "замораживается" при изменении его размера
От: Аноним  
Дата: 16.03.05 12:45
Оценка:
Не пойму в чем дело...
Сделал не большой примерчик по проигрыванию видео...
Если размеры оригинальные — все играется хорошо...
А если меньше (меняю ширину, к примеру) — размеры меняются поспроизводит где-то сек 10 и картинка застывает, а звук идет...
Пока не подвинешь форму — не меняется...Перестанешь двигать — опять картинка "замерзает"...
P.S. Смотрел по форуму и пробовал, как советовали — чего-то не помогло
(т.е. делать пробовал так:
void MyPlayer::Play()
{
if (!g_pMediaControl || !g_pVideoWindow)
return;
g_pMediaControl->Run();
g_pVideoWindow->put_Owner((OAHWND)Handle);
g_pVideoWindow->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS);
ResizeVideoWindow();
g_pVideoWindow->put_Visible(OATRUE);
};
)
Подскажите, в чем может быть проблема
Заранее спасибо
Re: Видео "замораживается" при изменении его размера
От: Stanky  
Дата: 16.03.05 14:30
Оценка:
> Подскажите, в чем может быть проблема
>
ResizeVideoWindow();
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re[2]: Видео "замораживается" при изменении его размера
От: Аноним  
Дата: 16.03.05 14:38
Оценка:
Здравствуйте, Stanky, Вы писали:

>> Подскажите, в чем может быть проблема

>>
S>ResizeVideoWindow();

void MyPlayer::ResizeVideoWindow(void)
{
if(!g_pVideoWindow)
return;

g_pVideoWindow->SetWindowPosition(0, 0, ClientWidth, ClientHeight);
};

пробовал убирать на всякий пожарный — не помогает...
Re[3]: Видео "замораживается" при изменении его размера
От: Stanky  
Дата: 16.03.05 20:23
Оценка:
> пробовал убирать на всякий пожарный — не помогает...
>
Во-первых: пользуйся тегами форматирования, а то код не читабелен!!!
Во-вторых: как инициализишь глобальные указатели?
В-третьих: реально ли нужны глобальные?
В-четвертых: может WindowlessMode будет более удобен?
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re: Видео "замораживается" при изменении его размера
От: Stanky  
Дата: 16.03.05 20:32
Оценка:
Кстати, почему ты делаешь ресайз при воспроизведении?
Это надо делать при ресайзе родительского окна:
case WM_SIZE:
    GetClientRect(hWnd, &DestinationRectangle);
    g_pVideoWindow->SetWindowPosition(0, 0, DestinationRectangle.right, DestinationRectangle.bottom);
    break;
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re[2]: Видео "замораживается" при изменении его размера
От: Аноним  
Дата: 16.03.05 21:53
Оценка:
Здравствуйте, Stanky, Вы писали:

S>Во-первых: пользуйся тегами форматирования, а то код не читабелен!!!


если я хочу код вставить, то включить его между [ c ] и [ /c ]? Ща попробую... =)

S>Во-вторых: как инициализишь глобальные указатели?


  hr = CoInitialize(NULL);

  hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC, IID_IGraphBuilder,
                        reinterpret_cast<void **>(&g_pGraphBuilder));

  hr = g_pGraphBuilder->QueryInterface(IID_IMediaControl, reinterpret_cast<void **>(&g_pMediaControl));

  hr = g_pGraphBuilder->QueryInterface(IID_IMediaEventEx, reinterpret_cast<void **>(&g_pMediaEventEx));

  hr = g_pGraphBuilder->QueryInterface(IID_IMediaSeeking, reinterpret_cast<void **>(&g_pMediaSeeking));

  hr = g_pGraphBuilder->QueryInterface(IID_IVideoWindow, (LPVOID *) &g_pVideoWindow);

  hr = g_pGraphBuilder->QueryInterface(IID_IBasicAudio, reinterpret_cast<void **>(&g_pBasicAudio) );

  hr = g_pGraphBuilder->QueryInterface(IID_IBasicVideo, reinterpret_cast<void **>(&g_pBasicVideo) );


S>В-третьих: реально ли нужны глобальные?


они не глабальные, а поля класса

S>В-четвертых: может WindowlessMode будет более удобен?


А чего мне даст этот режим?

S>Кстати, почему ты делаешь ресайз при воспроизведении?

S>Это надо делать при ресайзе родительского окна:

В каком-то примере увидел и когда по-разному пробовал вот и осталось...Но это, думаю, не существенно...
А так, на событии OnResize, естественно...
Re[3]: Видео "замораживается" при изменении его размера
От: Stanky  
Дата: 17.03.05 00:36
Оценка:
> если я хочу код вставить, то включить его между [ c ] и [ /c ]?
>
Именно!!!

> Ща попробую... =)

>
Ай молодца!!!

> они не глабальные, а поля класса

>
Сорри — эт я ступил, вернее не обратил внимания, что через классы делаешь!!!

> А чего мне даст этот режим?

>
Будет только одно окно — твоё и в нём ты будешь всё рисовать и только его и ресайзить никаких других окон создаваться больше никогда не будет!!!

> А так, на событии OnResize, естественно...

>
Покаж!!!
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re: Видео "замораживается" при изменении его размера
От: Stanky  
Дата: 17.03.05 01:13
Оценка:
> Если размеры оригинальные — все играется хорошо...
> А если меньше (меняю ширину, к примеру) — размеры меняются
> поспроизводит где-то сек 10 и картинка застывает, а звук идет...
>
Наклепал сейчас плеер с IVideoWindow и нет у меня никаких "заморозок"!!!
Кстати, увидел тот же эффект что и здесь
Автор: Stanky
Дата: 14.03.05
!!! Как избегаешь?
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re: Видео "замораживается" при изменении его размера
От: bolivar Латвия  
Дата: 17.03.05 07:07
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Не пойму в чем дело...


Когда собираеш граф попробуй добавить видео рендер вручную

hr = CoCreateInstance(CLSID_VideoRenderer, NULL, CLSCTX_INPROC_SERVER,
IID_IBaseFilter, (void**)&pVRen);
if(SUCCEEDED(hr) && pVRen) {
hr = pFg->AddFilter(pVRen, L"Video Renderer");
}

а потом уже запускай граф — может поможет........
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.