Я использую DirectShow для захвата кадров с моей веб-камеры. Во время настройки веб-камеры (когда я устанавливаю разрешение, fps и т. Д.) У меня есть несколько альтернатив, доступных с камеры. (47 из них).
В настоящее время я использую цикл for, который перебирает все доступные настройки камеры, и я просто печатаю значения в консоли. Но у меня нет хорошего способа напечатать значение подтипа Media.
Есть ли хороший способ напечатать фактическое название медиа подтипа?
Теперь я проверяю это так:
if(mT->subtype == MEDIASUBTYPE_MJPG){
printf(" MEDIASUBTYPE_MJPG ");
} else {
printf(" ----- ");
}
(mT = AM_MEDIA_TYPE)
Что не очень хорошо. Я хотел бы использовать то, что печатает фактическое имя подтипа.
Спасибо!
Медиа подтип просто GUID
идентификатор, безымянный. Невозможно преобразовать ее в удобную для пользователя строку без прямого сравнения со значениями, о которых вы знаете.
Здесь есть только одно исключение, и это идентификаторы, сопоставленные с четырьмя символьными кодами (FourCC). Смотрите подробности об этом на MSDN в FOURCCMap
учебный класс и вы можете захотеть сделать что-то вроде:
if(memcmp(&mT->subtype.Data2, &MEDIASUBTYPE_MJPG.Data2, sizeof (GUID) - offsetof(GUID, Data2)) == 0)
{
// NOTE: This is FourCC!
CHAR pszValue[5];
*((UINT32*) pszValue) = mT->subtype.Data1;
pszValue[4] = 0;
_tprintf(_T("Media Subtype is FourCC %hs\n"), pszValue);
} else
// ...
Других решений пока нет …