Можно ли так смешивать VFW и DS?
От: Аноним  
Дата: 07.05.08 11:44
Оценка:
Надо показать настройки видео-кодека, запомнить выбор юзера и потом применить его; для vfw кодеков целый геморой, пока получилось сохранять настройки, а теперь они не применяются и я не знаю, на что собственно грешить — может быть на смешивание vfw и DS подхода?

в общем у меня уже есть буфер с "сырыми" данными — настройками некоего кодека; на синепаке проще тренироваться, у него настройка одна (цветная картинка или ЧБ) и этих сырых данных всего 4 байта, в которых видно gray или colr слова... так что получаю я то, что узер навыбирал, правильно

но вот теперь применяю:

          // кодек я уже нашел, добавил в фильтр, получил входной пин, 
          // соединил с предыдущим фильтром и получил выходной пин кодека
          if Succeeded ( pVideoOutPin.QueryInterface (IID_IAMVideoCompression, pVfwConfig) ) then
          begin
            pVfwConfig.put_KeyFrameRate (AParams.VideoKeyrate);
            pVfwConfig.put_PFramesPerKeyFrame (AParams.VideoPKeyrate);
            pVfwConfig.put_Quality (AParams.VideoQuality);
            // ^^^ эти настройки работают

            // а вот тут DS-сным способом настраивать кодек не получается, пробую VFW-шным
            if fcc_code > 0 then // это я где-то уже fcc кодека получил
            begin
              h := ICOpen (mmioStringToFOURCC ('vidc', MMIO_TOUPPER), fccHandler, ICMODE_COMPRESS);
              if h > 0 then
              try
                if (AParams.VideoConfigData <> nil) then
                begin
                  ICSendMessage (h, ICM_SETSTATE, DWORD (AParams.VideoConfigData), AParams.VideoConfigDataLen);
                end;
              finally
                ICClose (h);
              end;
            end;
          end; // Succeeded ( pOutPin.QueryInterface (IID_IAMVideoCompression, pVfwConfig) )


нифига — с синепаком картинка всегда цветная, а должна бы быть местами ч/б

так вот не оттого ли это, что к примеру этим способом я настраиваю некий глобальный кодек, а конкретный экземпляр, который уже использую, так настроить не получится (бред какой то пишу, а шо делать)

или может есть разница, в каком порядке что делать? типа сначала создать фильтр, потом добавить в граф, потом настроить а только потом соединять? надо от безнадеги попробовать
Re: Можно ли так смешивать VFW и DS?
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 08.05.08 03:33
Оценка:
Вы просто "настраиваете" два разных экземпляра кодека.
Re[2]: Можно ли так смешивать VFW и DS?
От: fat.hamster http://fat-hamster.blogspot.com
Дата: 08.05.08 06:07
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Вы просто "настраиваете" два разных экземпляра кодека.


я тоже так начал уже думать...

но как же быть? по идее надо

                  if Succeeded ( pVideoCompressor.QueryInterface (IID_IAMVfwCompressDialogs, pVfwCompressDialog) ) then
                    pVfwCompressDialog.SetState (AParams.VideoConfigData, AParams.VideoConfigDataLen);

делать; все вроде ок кроме результата
Re[3]: Можно ли так смешивать VFW и DS?
От: fat.hamster http://fat-hamster.blogspot.com
Дата: 08.05.08 07:27
Оценка:
FH>
FH>                  if Succeeded ( pVideoCompressor.QueryInterface (IID_IAMVfwCompressDialogs, pVfwCompressDialog) ) then
FH>                    pVfwCompressDialog.SetState (AParams.VideoConfigData, AParams.VideoConfigDataLen);
FH>

FH>делать; все вроде ок кроме результата

ну затупил так затупил:

pVfwCompressDialog.SetState (AParams.VideoConfigData^,


конечно же; так настройка принимается и имеем ч/б картинку

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