Aleksoid1978

Gold Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору wanezhiling Слушай - здесь русский форум. Либо пишем по русски, либо пишем на doom9. V0lt Цитата: А наш сплиттер скорее всего не дожидается, когда File Source (URL) докачает нужный блок. | Во первых - сплиттер и не должен такого делать. Во вторых - LAV тоже не дожидается, попросту нет этих данных. Цитата: Мое видение решения. 1. Убрать функции: HRESULT CBaseSplitterFile::HasMoreData(__int64 len, DWORD ms) HRESULT CBaseSplitterFile::WaitAvailable(DWORD dwMilliseconds, __int64 AvailBytes, HANDLE hBreak) 2. Добавить некую функцию для настройки проверки получения отсутствующих данных от предыдущего фильтра. Настраивать можно будет следующее: - интервал проверки (0,5 сек), - максимальное время, которое стоит ждать если новые данные не поступают (10 сек) - HANDLE hBreak 3. Доработать функцию HRESULT CBaseSplitterFile::Read(BYTE* pData, __int64 len) Которая, при отсутствии нужных данных будет ждать в соответствии с настройками указанными в пункте 2. 4. Другие доработки. | Ну как бы я добавил WaitAvailable() именно для этого, ждать определенное время поступление данных. И не в коем случае нельзя пихать эти проверки/ожидание в CBaseSplitterFile::Read(), т.к. к примеру при работе с MPEG-TS эта функция вызывается ОЧЕНЬ часто. Т.к. для получение текущих значений размера/имеющиеся данные вызывается m_pAsyncReader->Length(). Уже пробовал - можно не пытаться Второе - вот ты пишеш ждать 10 секунд. Ну это очень долго, а если источник сдох, а если открыли докачивающийся файл и прекратили докачку ?? Я очень много времени провел со всеми этими нюансами, поэтому и пришел к функции WaitAvailable() и вызовом ее вручную в нужных местах. Надо просто знать где ставить и примерно прикидывать сколько ждать. Добавлено: wanezhiling Listen - what do you use the MPC-BE, write here - if you use the PotPlayer ??
---------- AMD Ryzen 7 7700 /ASRock B650M Pro RS /G.Skill RIPJAWS 32 ГБ /Kingston 1Tb M.2 /RTX 4060 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215 |
|