Я тут задал вопрос про DVDx+ffmpeg, но пока результатов нет. В общем-то, как вариант на первое время можно сделать DVDx+XviD. Только XviD придётся распространять вместе с самой прогой и устанавливать следовательно автоматически. Тут где-то предлагался вариант установки с помощью INF-файла. Я пробовал — работает, только с всплывающим окном "Установка оборудования: Устройство не тестировалось на совместимось с XP ... и т.д.". С другой стороны релиз XviD'а сам по себе ставится без такого сообщения, но со всеми стандартными для инсталлятора (выбор папки и т.п.).
Поэтому вопрос:
Как зарегить в системе Xvid (xvid.ax, xvidcore.dll, xvidvfw.dll) без участия юзера?
Здравствуйте, consumer, Вы писали:
C>Я тут задал вопрос про DVDx+ffmpeg, но пока результатов нет. В общем-то, как вариант на первое время можно сделать DVDx+XviD. Только XviD придётся распространять вместе с самой прогой и устанавливать следовательно автоматически. Тут где-то предлагался вариант установки с помощью INF-файла. Я пробовал — работает, только с всплывающим окном "Установка оборудования: Устройство не тестировалось на совместимось с XP ... и т.д.". С другой стороны релиз XviD'а сам по себе ставится без такого сообщения, но со всеми стандартными для инсталлятора (выбор папки и т.п.).
C>Поэтому вопрос: C>Как зарегить в системе Xvid (xvid.ax, xvidcore.dll, xvidvfw.dll) без участия юзера?
C>Спасибо.
Всё элементарно:программно копируешь xvid.dll,xvidcore.dll,xvidvfw.dll,xvid.ax в win\system,
регистрируешь xvid.ax как com-объект и ставишь reg-файл с настройками(советую написать функцию экспорта из файла в реестр):
Здравствуйте, NSP, Вы писали:
NSP>Всё элементарно:программно копируешь xvid.dll,xvidcore.dll,xvidvfw.dll,xvid.ax в win\system, NSP>регистрируешь xvid.ax как com-объект и ставишь reg-файл с настройками(советую написать функцию экспорта из файла в реестр):
Вот я для проверки Вашего варианта сделал такой батничек: NSP>
В xvid.reg — это ранее экспортированная в файл ветка ...\GNU\XviD\
для моей версии XviD'a.
Да, всё проходит без взаимодействия с юзером. Только кодек не добавляется в список кодеков. Что я сделал не так? Может программная регистрация COM-объекта принципиально отличается от вызова DllRegisterServer regsvr32?
Здравствуйте, consumer, Вы писали:
C>Здравствуйте, NSP, Вы писали:
NSP>>Всё элементарно:программно копируешь xvid.dll,xvidcore.dll,xvidvfw.dll,xvid.ax в win\system, NSP>>регистрируешь xvid.ax как com-объект и ставишь reg-файл с настройками(советую написать функцию экспорта из файла в реестр):
C>Вот я для проверки Вашего варианта сделал такой батничек: NSP>>
C>В xvid.reg — это ранее экспортированная в файл ветка ...\GNU\XviD\ C>для моей версии XviD'a.
C>Да, всё проходит без взаимодействия с юзером. Только кодек не добавляется в список кодеков. Что я сделал не так? Может программная регистрация COM-объекта принципиально отличается от вызова DllRegisterServer regsvr32?
Нет,не отличается.У меня всегда так ставилось нормально.А,если не секрет, откуда Вы берёте этот список кодеков?
Здравствуйте, NSP, Вы писали:
NSP>Здравствуйте, consumer, Вы писали:
C>>Здравствуйте, NSP, Вы писали:
NSP>>>Всё элементарно:программно копируешь xvid.dll,xvidcore.dll,xvidvfw.dll,xvid.ax в win\system, NSP>>>регистрируешь xvid.ax как com-объект и ставишь reg-файл с настройками(советую написать функцию экспорта из файла в реестр):
C>>Вот я для проверки Вашего варианта сделал такой батничек: NSP>>>
C>>В xvid.reg — это ранее экспортированная в файл ветка ...\GNU\XviD\ C>>для моей версии XviD'a.
C>>Да, всё проходит без взаимодействия с юзером. Только кодек не добавляется в список кодеков. Что я сделал не так? Может программная регистрация COM-объекта принципиально отличается от вызова DllRegisterServer regsvr32?
NSP>Нет,не отличается.У меня всегда так ставилось нормально.А,если не секрет, откуда Вы берёте этот список кодеков?
Ну дк. система\Диспетчер устройств\Звуковые, видео и игровые устр-ва\Видео Кодеки\Свойства...
Ну и ещё прога моя список выдаёт, где идёт работа через API ICOpen, ICGetSettings и т.п...
C>Ну дк. система\Диспетчер устройств\Звуковые, видео и игровые устр-ва\Видео Кодеки\Свойства...
C>Ну и ещё прога моя список выдаёт, где идёт работа через API ICOpen, ICGetSettings и т.п...
C>Не знаю. Не добавляется.
Дык туда и не должно...Он прекрано будет работать и так,но если надо,чтобы был виден именно там,добавь в reg-файл регистрацию (по образцу там) XviD в HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers32
HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers.desc
и все дела!
Здравствуйте, NSP, Вы писали:
C>>Ну дк. система\Диспетчер устройств\Звуковые, видео и игровые устр-ва\Видео Кодеки\Свойства...
C>>Ну и ещё прога моя список выдаёт, где идёт работа через API ICOpen, ICGetSettings и т.п...
C>>Не знаю. Не добавляется.
NSP>Дык туда и не должно...Он прекрано будет работать и так,но если надо,чтобы был виден именно там,добавь в reg-файл регистрацию (по образцу там) XviD в NSP>HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers32 NSP>HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers.desc NSP>и все дела!
Да. Всё фурычит. Спасибо Вам и Вашим потомкам.
P/S/
Вот эта функция без записей в drivers.desc и drivers32 не выводит кодек. Может некоторым утилитам они не нужны, но всё таки эти записи необходимы по "ГОСТам". Или этот метод устарел...
int AVIEnumVideoCompressor(int h_size,int v_size,int out_format,ICINFO *codec_info) {
AVISetDimension(h_size,v_size,out_format);
ICINFO info;
ZeroMemory(&info, sizeof(ICINFO));
info.dwSize = sizeof(ICINFO);
int i,j;
for(i=0,j=0; ICInfo(ICTYPE_VIDEO, i, &info); i++) {
HIC hic = ICOpen(info.fccType, info.fccHandler, ICMODE_COMPRESS);
if (hic) {
if ( ICCompressQuery(hic, lpinput, NULL)==ICERR_OK )
ICGetInfo(hic, &codec_info[j++], sizeof(ICINFO));
ICClose(hic);
}
}
return j;
}