매개 변수 그룹화

그룹화 매개 변수는 시스템 볼륨 제어 프로그램인 Sndvol에서 단일 볼륨 컨트롤에 의해 제어되는 오디오 세션 의 컬렉션을 식별합니다. 그룹화 매개 변수는 컴퓨터의 scope 내에서 컬렉션을 고유하게 식별하는 GUID입니다.

그룹화 매개 변수의 목적은 프로세스 간 세션에 대한 세션 GUID의 용도와 유사합니다. 즉, 그룹화 매개 변수를 사용하면 사용자가 여러 프로세스의 스트림 컬렉션을 단일 단위로 제어할 수 있습니다. 그러나 그룹화 매개 변수는 교차 프로세스 세션이 솔루션을 제공할 수 없는 상황에서 이 용도로 사용됩니다.

여러 클라이언트가 개별 세션에 해당 스트림을 할당하지만 모든 세션에 동일한 그룹화 매개 변수를 할당하는 경우 Sndvol은 이러한 세션에 대한 단일 볼륨 컨트롤을 표시합니다. 그룹화 매개 변수에 대한 지원을 제공하려면 Sndvol 또는 유사한 볼륨 제어 애플리케이션에서 다음을 수행해야 합니다.

  • 볼륨 컨트롤을 표시하기 전에 모든 활성 세션의 그룹화 매개 변수를 검사. 동일한 그룹화 매개 변수가 있는 모든 세션을 단일 볼륨 컨트롤에서 함께 그룹화합니다.
  • 사용자가 특정 그룹화 매개 변수에 대한 볼륨 컨트롤의 설정을 변경하는 경우 해당 그룹화 매개 변수를 공유하는 모든 세션의 볼륨 수준을 업데이트합니다.

그룹화 매개 변수는 Sndvol에 의해 표시되는 볼륨 컨트롤의 수를 줄이는 데 도움이 됩니다. Sndvol이 너무 많은 컨트롤로 디스플레이를 어지럽히는 경우 사용자가 혼란스러워할 수 있습니다. 그룹화 매개 변수에 대한 지원이 없으면 Sndvol은 항상 각 세션에 대해 별도의 볼륨 컨트롤을 표시합니다. 이는 모든 상황에서 적절하지 않을 수 있습니다. 또한 그룹화 매개 변수는 유사한 유형의 오디오 콘텐츠를 포함하는 세션을 동일한 볼륨 수준으로 쉽게 설정할 수 있는 편리한 방법을 제공합니다.

앞에서 설명한 것처럼 상위 수준의 오디오 API는 일반적으로 스트림을 기본 프로세스별 세션(GUID_NULL 세션 GUID 값으로 식별됨)에 할당합니다. 이 기본값을 사용하면 Sndvol에서 각 클라이언트 애플리케이션 프로세스에 대해 자주 원하는 동작인 별도의 볼륨 컨트롤을 표시할 수 있습니다. 또한 동일한 클라이언트의 여러 인스턴스가 별도의 프로세스에서 실행되지만 단일 공유 볼륨 제어가 필요한 경우 클라이언트는 단순히 동일한 프로세스 간 세션에 스트림을 할당할 수 있습니다. 이러한 두 경우 모두 그룹화 매개 변수를 사용할 필요가 없습니다. 그러나 Microsoft Internet Explorer 예로 한 가지 중요한 경우는 원하는 동작을 달성하기 위해 그룹화 매개 변수를 사용해야 합니다.

인터넷 Explorer 사용하면 사용자가 여러 브라우저 창을 열 수 있으며 이러한 창이 모두 동일한 프로세스에서 실행되지 않을 수 있습니다. Sndvol이 각 애플리케이션 instance 대해 별도의 볼륨 컨트롤을 표시하면 사용자가 혼란스러워할 수 있으며, 모두 "인터넷 Explorer"이라는 레이블이 같습니다. 이 경우 크로스 프로세스 세션은 실현 가능한 솔루션이 아닙니다. 인터넷의 여러 인스턴스가 다른 프로세스에서 실행될 Explorer 있는 경우 모든 오디오 스트림을 단일 교차 프로세스 세션에 할당하지 못할 수 있습니다. 그 이유는 인터넷 Explorer 창이 Windows 미디어 플레이어 인스턴스 또는 더 높은 수준의 오디오 API를 사용하여 오디오 스트림을 재생하는 다른 멀티미디어 플러그 인을 실행할 수 있기 때문입니다. 이러한 API는 일반적으로 프로세스의 스트림을 기본 프로세스별 세션에 할당합니다. 인터넷 Explorer 이러한 스트림을 세션에 할당하는 것을 제어할 수 없습니다.

WASAPI는 인터넷 Explorer 각 instance 기본 프로세스별 세션에 대한 세션 컨트롤에 액세스하고 해당 세션에 그룹화 매개 변수를 할당할 수 있도록 하여 이 문제를 해결합니다. 인터넷의 모든 인스턴스가 모든 오디오 세션에 동일한 그룹화 매개 변수를 할당할 Explorer 경우 Sndvol은 이러한 세션에 대한 단일 볼륨 컨트롤을 표시합니다.

기본적으로 세션은 그룹화에 속하지 않습니다. 클라이언트가 그룹에 세션을 명시적으로 할당하지 않으면 Sndvol은 해당 세션에 대한 전용 볼륨 컨트롤을 표시합니다. GUID_NULL 그룹화 매개 변수 값은 세션이 그룹화에 속하지 않음을 나타냅니다. 세션에 그룹화 매개 변수를 명시적으로 할당한 클라이언트가 없는 경우 해당 세션의 그룹화 매개 변수 값은 기본적으로 GUID_NULL.

클라이언트는 세션이 할당되는 그룹링을 동적으로 변경할 수 있습니다.

그룹화에는 오디오 엔드포인트 디바이스에서 프로세스 간 세션과 프로세스별 세션의 조합이 포함될 수 있습니다.

Sndvol 사용자 인터페이스를 사용하면 사용자가 한 번에 하나의 오디오 엔드포인트 디바이스에 대해서만 볼륨 컨트롤을 표시할 수 있습니다. 사용자가 특정 디바이스에 대한 볼륨 컨트롤을 조정하는 경우 다른 디바이스에 연결하는 세션의 볼륨 수준은 영향을 받지 않습니다. 특히 특정 그룹화 매개 변수에 대한 볼륨 컨트롤은 그룹화 매개 변수를 공유하고 현재 선택한 디바이스에 연결된 세션에만 영향을 줍니다. 동일한 그룹화 매개 변수가 있지만 다른 디바이스에 연결된 세션은 영향을 받지 않습니다.

앞에서 설명한 대로 Sndvol은 표시 이름과 아이콘으로 표시되는 각 볼륨 컨트롤에 레이블을 지정합니다. 그룹화에 대한 볼륨 컨트롤의 경우 Sndvol은 그룹화의 세션 중 하나를 볼륨 컨트롤과 함께 표시하는 표시 이름 및 아이콘의 원본으로 임의로 선택합니다. 따라서 Sndvol이 항상 그룹화에 대해 동일한 표시 이름과 아이콘을 표시하도록 하려면 해당 그룹에 세션을 할당하는 모든 애플리케이션 인스턴스는 해당 세션의 표시 이름과 아이콘이 동일한지 확인해야 합니다. 표시 이름 및 아이콘에 대한 자세한 내용은 오디오 세션을 참조하세요.

Sndvol과 같은 애플리케이션은 세션에 대한 그룹화 매개 변수가 변경될 때 알림을 받도록 자신을 등록할 수 있습니다. 이러한 알림은 애플리케이션이 그룹화 매개 변수에 세션 할당에 대한 정보를 캐시하는 경우에 유용할 수 있습니다. 캐시된 정보가 더 이상 유효하지 않을 수 있음을 애플리케이션에 알릴 수 있습니다.

세션에 그룹화 매개 변수를 할당하려면 IAudioSessionControl::SetGroupingParam 메서드를 호출합니다. 세션에 할당된 그룹화 매개 변수를 가져오려면 IAudioSessionControl::GetGroupingParam 메서드를 호출합니다.

오디오 세션