@@ -34,7 +34,7 @@ static void printDevice(FFSoundOptions* options, const FFSoundDevice* device, ui
3434 }
3535
3636 if (!(percentType & FF_PERCENTAGE_TYPE_HIDE_OTHERS_BIT )) {
37- if (device -> main && index > 0 ) {
37+ if (( device -> type & FF_SOUND_TYPE_MAIN ) && index > 0 ) {
3838 ffStrbufAppendS (& str , " (*)" );
3939 }
4040 }
@@ -52,8 +52,11 @@ static void printDevice(FFSoundOptions* options, const FFSoundDevice* device, ui
5252 }
5353 }
5454
55+ bool isMain = !!(device -> type & FF_SOUND_TYPE_MAIN );
56+ bool isActive = !!(device -> type & FF_SOUND_TYPE_ACTIVE );
5557 FF_PRINT_FORMAT_CHECKED (FF_SOUND_MODULE_NAME , index , & options -> moduleArgs , FF_PRINT_TYPE_DEFAULT , ((FFformatarg []) {
56- FF_ARG (device -> main , "is-main" ),
58+ FF_ARG (isMain , "is-main" ),
59+ FF_ARG (isActive , "is-active" ),
5760 FF_ARG (device -> name , "name" ),
5861 FF_ARG (percentageNum , "volume-percentage" ),
5962 FF_ARG (device -> identifier , "identifier" ),
@@ -155,18 +158,24 @@ bool ffGenerateSoundJsonResult(FFSoundOptions* options, yyjson_mut_doc* doc, yyj
155158 yyjson_mut_val * arr = yyjson_mut_obj_add_arr (doc , module , "result" );
156159 FF_LIST_FOR_EACH (FFSoundDevice , item , result ) {
157160 yyjson_mut_val * obj = yyjson_mut_arr_add_obj (doc , arr );
158- yyjson_mut_obj_add_bool (doc , obj , "active" , item -> active );
159- yyjson_mut_obj_add_bool (doc , obj , "main" , item -> main );
161+
162+ yyjson_mut_obj_add_strbuf (doc , obj , "name" , & item -> name );
163+ yyjson_mut_obj_add_strbuf (doc , obj , "identifier" , & item -> identifier );
164+ yyjson_mut_obj_add_strbuf (doc , obj , "platformApi" , & item -> platformApi );
165+
166+ yyjson_mut_val * type = yyjson_mut_obj_add_arr (doc , obj , "type" );
167+ if (item -> type & FF_SOUND_TYPE_MAIN ) {
168+ yyjson_mut_arr_add_str (doc , type , "main" );
169+ }
170+ if (item -> type & FF_SOUND_TYPE_ACTIVE ) {
171+ yyjson_mut_arr_add_str (doc , type , "active" );
172+ }
160173
161174 if (item -> volume != FF_SOUND_VOLUME_UNKNOWN ) {
162175 yyjson_mut_obj_add_uint (doc , obj , "volume" , item -> volume );
163176 } else {
164177 yyjson_mut_obj_add_null (doc , obj , "volume" );
165178 }
166-
167- yyjson_mut_obj_add_strbuf (doc , obj , "name" , & item -> name );
168- yyjson_mut_obj_add_strbuf (doc , obj , "identifier" , & item -> identifier );
169- yyjson_mut_obj_add_strbuf (doc , obj , "platformApi" , & item -> platformApi );
170179 }
171180
172181 FF_LIST_FOR_EACH (FFSoundDevice , device , result ) {
@@ -200,6 +209,7 @@ FFModuleBaseInfo ffSoundModuleInfo = {
200209 .generateJsonConfig = (void * ) ffGenerateSoundJsonConfig ,
201210 .formatArgs = FF_FORMAT_ARG_LIST (((FFModuleFormatArg []) {
202211 { "Is main sound device" , "is-main" },
212+ { "Is active sound device" , "is-active" },
203213 { "Device name" , "name" },
204214 { "Volume (in percentage num)" , "volume-percentage" },
205215 { "Identifier" , "identifier" },
0 commit comments