type
  TDeviceType = (dtVideo, dtAudio);
function EnumDirectShowInputDevices(ADevices: TStrings; AType: TDeviceType; APrefix: Boolean; AUniqueName: Boolean = False): Boolean; overload;
function EnumDirectShowInputDevices(ADevices: TStrings; AUniqueName: Boolean): Boolean; overload;

implementation

const
  CPrefixs: array[TDeviceType] of string = ('video', 'audio');

function EnumDirectShowInputDevices(ADevices: TStrings; AType: TDeviceType; APrefix, AUniqueName: Boolean): Boolean;
begin
  ...
end;

function EnumDirectShowInputDevices(ADevices: TStrings; AUniqueName: Boolean): Boolean;
begin
  Result := EnumDirectShowInputDevices(ADevices, dtVideo, True, AUniqueName);
  Result := EnumDirectShowInputDevices(ADevices, dtAudio, True, AUniqueName) or Result;
end;
