Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как задать количество FPS в исходном фильтре? Для DirectShow 
:(
    Опции темы
Teran
  Дата 27.11.2007, 03:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



Есть исходный фильтр получения скринов с экрана.
Никто не знает Как можно задать колличество FPS в этом фильтре? -  smile 
т.е. Мне наобходимо чтобы функция FillBuffer вызывалась например 3 раза в секунду (3 FPS)


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
sandland
Дата 2.12.2007, 02:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 28.4.2007

Репутация: нет
Всего: 1



ну по логике как считается FPS...есть счетчик, который прибавляется +1 с каждым обновлением сцены,с каждой пройденной секундой значению FPS присваивается значение счетчика, и счетчик начинает крутиться заного...так вот ты можешь ввести доп. переменную, считающую милисекунды...когда счетчик равен 1/3 секунды - запускаем ф-цию и обнуляем сам счетчик...

я так делаю, скорее всего можно как-то еще проще.
 
PM MAIL WWW ICQ Jabber   Вверх
Teran
Дата 4.12.2007, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



Цитата(sandland @  2.12.2007,  02:15 Найти цитируемый пост)
ну по логике как считается FPS...есть счетчик, который прибавляется +1 с каждым обновлением сцены,с каждой пройденной секундой значению FPS присваивается значение счетчика, и счетчик начинает крутиться заного...так вот ты можешь ввести доп. переменную, считающую милисекунды...когда счетчик равен 1/3 секунды - запускаем ф-цию и обнуляем сам счетчик...
я так делаю, скорее всего можно как-то еще проще.

Можеш показать небольшой примерчик.... Просто не понял что значит "Запускаеш функцию" - ведь функция FillBufer запускается автоматически.



Я думал что в исходном фильтре Fps задается иначе - а именно значением параметров для функции:
Код

REFERENCE_TIME m_rtLastTime;
.....
HRESULT CMySourceStream::FillBuffer(IMediaSample *pSample)
{
    REFERENCE_TIME rtNow;
    //REFERENCE_TIME avgFrameTime = ((VIDEOINFOHEADER*)m_mt.pbFormat)->AvgTimePerFrame;
    rtNow = m_rtLastTime;
    m_rtLastTime+=10000000 / 20;  //20 FPS
    ...........................
    pSample->SetTime(&rtNow, &m_rtLastTime);
    pSample->SetSyncPoint(TRUE);
    return NOERROR;
}

Но только в таком случаи тоже почемуто не получается - Avi файл записанный например 30секунд  -  проигрывается всего за 10секунд (видео как будто ускоренное) 
непойму что происходит??? - судя повсему выпадают кадры когда процессор не успевает


Это сообщение отредактировал(а) Teran - 4.12.2007, 18:08


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
sandland
Дата 4.12.2007, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 28.4.2007

Репутация: нет
Всего: 1



я пишу на OpenGL...к примеру есть ф-ция, которая выполняется у тебя неприрывно с некоторым FPS так сказать, зависит от параметров процессора...

double time=0;
void display(void)
{
time+=0.001;
// что-нибудь рисуем на экране..пусть тут даже ф-ции прорисовки всей сцены...к примеру drawScene();
glutSwapBuffers();
}

где параметр time - это какой-то счетчик анимации...ты же можешь замедилть или ускорить анимацию...к примеру прибавляя к нему не 0.001 а 0.002 и тогда скорость анимации возрастет...ну само собой предполагается к примеру поворот на n градусов, где n=n(t);

я делал так...задал константу real_fps - количество FPS которе мне нужно чтобы было всегда...не зависимо от процессора или размера окна....
считал текущий FPS каждую секнду...и скорость анимации умножал на отношение FPS и real_FPS тем самым ф-ция сама замедляла или ускоряла анимацию в зависимости от текущего FPS...в моем тетрисе меня такой вариант вполне устроил, но с точки зрения правильности, я не думаю, что это лучший вариант, с радостью бы послушал советы более опытных...

если надо, могу тетрис скинуть.
PM MAIL WWW ICQ Jabber   Вверх
Teran
Дата 5.12.2007, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 590
Регистрация: 9.9.2005
Где: Украина, Запорожь е

Репутация: нет
Всего: 3



Цитата(sandland @  4.12.2007,  23:05 Найти цитируемый пост)
я пишу на OpenGL...к примеру есть ф-ция, которая выполняется у тебя неприрывно с некоторым FPS так сказать, зависит от параметров процессора...

Спасиб за ответ....
Но в DirectShow все подругому.... 
Интересно на форуме есть люди которые сталкивались и Исходными фильтрами под DirectShow???


--------------------
Ни цего не понимаю
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0762 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.