1e41f4b71Sopenharmony_ci# Multimedia Subsystem Changelog 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci## cl.multimedia.1 AudioRenderer and AudioCapturer Callbacks Changed 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci**Access Level** 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ciPublic 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci**Reason for Change** 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ciThe callbacks of the **AudioRenderer** and **AudioCapturer** classes are changed to accurately indicate the device used to play or record the current stream. 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci**Change Impact** 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ciIn non-playback or non-recording state, **AudioRendererChangeInfo.deviceDescriptors** and **AudioCapturerChangeInfo.deviceDescriptors** are empty. 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ci**Change Since** 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ciOpenHarmony SDK 4.1.3.3 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci**Key API/Component Changes** 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ciBefore change: 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_cion(type: 'audioRendererChange', callback: Callback<AudioRendererChangeInfoArray>): void; 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_cion(type: 'audioCapturerChange', callback: Callback<AudioCapturerChangeInfoArray>): void; 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ciIn non-playback or non-recording state, **AudioRendererChangeInfo.deviceDescriptors** and **AudioCapturerChangeInfo.deviceDescriptors** the device that played or recorded the audio stream last time. 30e41f4b71Sopenharmony_ci 31e41f4b71Sopenharmony_ciAfter change: 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_cion(type: 'audioRendererChange', callback: Callback<AudioRendererChangeInfoArray>): void; 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_cion(type: 'audioCapturerChange', callback: Callback<AudioCapturerChangeInfoArray>): void; 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ciIn non-playback or non-recording state, **AudioRendererChangeInfo.deviceDescriptors** and **AudioCapturerChangeInfo.deviceDescriptors** are empty. 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci**Adaptation Guide** 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ciIf you want to obtain the current audio capturer or renderer through the callbacks, you must start audio playback or recording first. 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci## cl.multimedia.2 Behavior Changed for open() and on() of CameraInput 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci**Access Level** 46e41f4b71Sopenharmony_ci 47e41f4b71Sopenharmony_ciPublic 48e41f4b71Sopenharmony_ci 49e41f4b71Sopenharmony_ci**Reason for Change** 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ciThe preemption mechanism is added to **open()** of the **CameraInput** class to ensure that high-priority applications can preferentially use the camera. As such, the behavior of **open()** and **on()** changes. 52e41f4b71Sopenharmony_ci 53e41f4b71Sopenharmony_ci**Change Impact** 54e41f4b71Sopenharmony_ci 55e41f4b71Sopenharmony_ciThis change is incompatible with earlier versions. Applications that use the involved APIs may have compatibility issues. 56e41f4b71Sopenharmony_ci 57e41f4b71Sopenharmony_ci**Change Since** 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_ciOpenHarmony SDK 4.1.3.3 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ci**Key API/Component Changes** 62e41f4b71Sopenharmony_ci 63e41f4b71Sopenharmony_ciBefore change: 64e41f4b71Sopenharmony_ci 65e41f4b71Sopenharmony_cion(type: 'error', camera: CameraDevice, callback: ErrorCallback): void; 66e41f4b71Sopenharmony_ci 67e41f4b71Sopenharmony_ciopen(callback: AsyncCallback<void>): void; 68e41f4b71Sopenharmony_ci 69e41f4b71Sopenharmony_ciWhen application A is using the camera, application B fails to open the camera using **open()**, and the error code **CONFLICT_CAMERA** is returned. 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ciAfter change: 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_cion(type: 'error', camera: CameraDevice, callback: ErrorCallback): void; 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ciopen(callback: AsyncCallback<void>): void; 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ciWhen application A is using the camera, application B can successfully open the camera using **open()** if application B has a higher priority than application A, for example, if application B is in the foreground while application A in the background. 78e41f4b71Sopenharmony_ci 79e41f4b71Sopenharmony_ciThe error code **DEVICE_PREEMPTED** is not returned. 80e41f4b71Sopenharmony_ci 81e41f4b71Sopenharmony_ci**Adaptation Guide** 82e41f4b71Sopenharmony_ci 83e41f4b71Sopenharmony_ciIf your code involves the use of **on()** in **CameraInput**, add the logic for processing the **DEVICE_PREEMPTED** error code. 84