1e41f4b71Sopenharmony_ci# Media Subsystem Changelog
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci## cl.multimedia.1 OH_AVCodecBufferAttr Behavior Changed
4e41f4b71Sopenharmony_ci
5e41f4b71Sopenharmony_ci**Access Level**
6e41f4b71Sopenharmony_ci
7e41f4b71Sopenharmony_ciPublic API
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ci**Reason for Change**
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ciFor a video track, **pts** in the obtained **OH_AVCodecBufferAttr** struct is the timestamp encapsulated in the file minus the track start time so that it starts from 0. However, the **pts** processing is different for the audio and video tracks. When **pts** is used for audio and video synchronization, abnormal video effects occur.
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci**Change Impact**
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ciThis change is a non-compatible change. The **pts** value of the video track obtained is no longer starting from 0. Specifically, the **pts** information encapsulated in the file is used.
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ci**Start API Level**
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci10
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci**Change Since**
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ciOpenHarmony SDK 5.0.0.39
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci**Key API/Component Changes**
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ci| Name                     | Description                       |
28e41f4b71Sopenharmony_ci| ------------------------- | --------------------------- |
29e41f4b71Sopenharmony_ci| OH_AVCodecBufferAttr | Description information about the buffer of an **OH_AVCodec** instance.|
30e41f4b71Sopenharmony_ci
31e41f4b71Sopenharmony_ci**Adaptation Guide**
32e41f4b71Sopenharmony_ci
33e41f4b71Sopenharmony_ciThe method of obtaining **pts** remains unchanged. However, no additional processing is performed internally. As such, **pts** is the timestamp encapsulated in the file. You can use and process **pts** based on your service logic. The sample code is as follows:
34e41f4b71Sopenharmony_ci
35e41f4b71Sopenharmony_ci```c++
36e41f4b71Sopenharmony_ciOH_AVBuffer *buffer = OH_AVBuffer_Create(w * h * 3 >> 1);
37e41f4b71Sopenharmony_ciif (buffer == nullptr) {
38e41f4b71Sopenharmony_ci    // Exception handling.
39e41f4b71Sopenharmony_ci}
40e41f4b71Sopenharmony_ciint32_t ret = OH_AVDemuxer_ReadSampleBuffer(demuxer, trackIndex, buffer);
41e41f4b71Sopenharmony_ciif (ret != AV_ERR_OK) {
42e41f4b71Sopenharmony_ci    // Exception handling.
43e41f4b71Sopenharmony_ci}
44e41f4b71Sopenharmony_ci
45e41f4b71Sopenharmony_ciOH_AVCodecBufferAttr info;
46e41f4b71Sopenharmony_ciret = OH_AVBuffer_GetBufferAttr(buffer, &info);
47e41f4b71Sopenharmony_ciif (ret != AV_ERR_OK) {
48e41f4b71Sopenharmony_ci    // Exception handling.
49e41f4b71Sopenharmony_ci}
50e41f4b71Sopenharmony_ciint64_t newPts = info.pts;
51e41f4b71Sopenharmony_ci```
52e41f4b71Sopenharmony_ci
53e41f4b71Sopenharmony_ciYou can also convert the obtained **pts** to **pts** before the change based on the track start time, **OH_MD_KEY_TRACK_START_TIME**, which can be obtained since API version 12. The code is as follows:
54e41f4b71Sopenharmony_ci```c++
55e41f4b71Sopenharmony_ciOH_AVFormat *trackFormat = OH_AVSource_GetTrackFormat(source, trackIndex);
56e41f4b71Sopenharmony_ciif (trackFormat == nullptr) {
57e41f4b71Sopenharmony_ci    // Exception handling.
58e41f4b71Sopenharmony_ci}
59e41f4b71Sopenharmony_ciint64_t startTime = 0;
60e41f4b71Sopenharmony_ciif (!OH_AVFormat_GetLongValue(trackFormat, OH_MD_KEY_TRACK_START_TIME, &startTime)) {
61e41f4b71Sopenharmony_ci    // Exception handling.
62e41f4b71Sopenharmony_ci}
63e41f4b71Sopenharmony_ciint64_t oldPts = newPts - startTime;
64e41f4b71Sopenharmony_ci```
65e41f4b71Sopenharmony_ci
66e41f4b71Sopenharmony_ci## cl.multimedia.2 EffectSuggestionType Behavior Changed
67e41f4b71Sopenharmony_ci
68e41f4b71Sopenharmony_ci**Access Level**
69e41f4b71Sopenharmony_ci
70e41f4b71Sopenharmony_ciSystem API
71e41f4b71Sopenharmony_ci
72e41f4b71Sopenharmony_ci**Reason for Change**
73e41f4b71Sopenharmony_ci
74e41f4b71Sopenharmony_ciOnly system APIs can obtain or update the enums related to effect recommendation.
75e41f4b71Sopenharmony_ci
76e41f4b71Sopenharmony_ci**Change Impact**
77e41f4b71Sopenharmony_ci
78e41f4b71Sopenharmony_ciThis change is a non-compatible change.
79e41f4b71Sopenharmony_ci
80e41f4b71Sopenharmony_ciBefore change: The enum is a public interface.
81e41f4b71Sopenharmony_ci
82e41f4b71Sopenharmony_ciAfter change: The enum is a system interface.
83e41f4b71Sopenharmony_ci
84e41f4b71Sopenharmony_ci**Start API Level**
85e41f4b71Sopenharmony_ci
86e41f4b71Sopenharmony_ci12
87e41f4b71Sopenharmony_ci
88e41f4b71Sopenharmony_ci**Change Since**
89e41f4b71Sopenharmony_ci
90e41f4b71Sopenharmony_ciOpenHarmony SDK 5.0.0.39
91e41f4b71Sopenharmony_ci
92e41f4b71Sopenharmony_ci**Key API/Component Changes**
93e41f4b71Sopenharmony_ci
94e41f4b71Sopenharmony_ciEffectSuggestionType/camera component
95e41f4b71Sopenharmony_ci
96e41f4b71Sopenharmony_ci**Adaptation Guide**
97e41f4b71Sopenharmony_ci
98e41f4b71Sopenharmony_ciNo adaptation is required. Related APIs are not opened. The change is only to keep the access level consistent with that of related APIs.
99e41f4b71Sopenharmony_ci
100e41f4b71Sopenharmony_ci## cl.multimedia.3 EffectSuggestionStatus Behavior Changed
101e41f4b71Sopenharmony_ci
102e41f4b71Sopenharmony_ci**Access Level**
103e41f4b71Sopenharmony_ci
104e41f4b71Sopenharmony_ciSystem API
105e41f4b71Sopenharmony_ci
106e41f4b71Sopenharmony_ci**Reason for Change**
107e41f4b71Sopenharmony_ci
108e41f4b71Sopenharmony_ciOnly system APIs can obtain or update the classes related to effect recommendation.
109e41f4b71Sopenharmony_ci
110e41f4b71Sopenharmony_ci**Change Impact**
111e41f4b71Sopenharmony_ci
112e41f4b71Sopenharmony_ciThis change is a non-compatible change.
113e41f4b71Sopenharmony_ci
114e41f4b71Sopenharmony_ciBefore change: The class is a public interface.
115e41f4b71Sopenharmony_ci
116e41f4b71Sopenharmony_ciAfter change: The class is a system interface.
117e41f4b71Sopenharmony_ci
118e41f4b71Sopenharmony_ci**Start API Level**
119e41f4b71Sopenharmony_ci
120e41f4b71Sopenharmony_ci12
121e41f4b71Sopenharmony_ci
122e41f4b71Sopenharmony_ci**Change Since**
123e41f4b71Sopenharmony_ci
124e41f4b71Sopenharmony_ciOpenHarmony SDK 5.0.0.39
125e41f4b71Sopenharmony_ci
126e41f4b71Sopenharmony_ci**Key API/Component Changes**
127e41f4b71Sopenharmony_ci
128e41f4b71Sopenharmony_ciEffectSuggestionStatus/camera component
129e41f4b71Sopenharmony_ci
130e41f4b71Sopenharmony_ci**Adaptation Guide**
131e41f4b71Sopenharmony_ci
132e41f4b71Sopenharmony_ciNo adaptation is required. Related APIs are not opened. The change is only to keep the access level consistent with that of related APIs.
133