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