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