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