# Media Subsystem Changelog ## cl.multimedia.1 OH_AVCodecBufferAttr Behavior Changed **Access Level** Public API **Reason for Change** For 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. **Change Impact** This 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. **Start API Level** 10 **Change Since** OpenHarmony SDK 5.0.0.39 **Key API/Component Changes** | Name | Description | | ------------------------- | --------------------------- | | OH_AVCodecBufferAttr | Description information about the buffer of an **OH_AVCodec** instance.| **Adaptation Guide** The 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: ```c++ OH_AVBuffer *buffer = OH_AVBuffer_Create(w * h * 3 >> 1); if (buffer == nullptr) { // Exception handling. } int32_t ret = OH_AVDemuxer_ReadSampleBuffer(demuxer, trackIndex, buffer); if (ret != AV_ERR_OK) { // Exception handling. } OH_AVCodecBufferAttr info; ret = OH_AVBuffer_GetBufferAttr(buffer, &info); if (ret != AV_ERR_OK) { // Exception handling. } int64_t newPts = info.pts; ``` You 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: ```c++ OH_AVFormat *trackFormat = OH_AVSource_GetTrackFormat(source, trackIndex); if (trackFormat == nullptr) { // Exception handling. } int64_t startTime = 0; if (!OH_AVFormat_GetLongValue(trackFormat, OH_MD_KEY_TRACK_START_TIME, &startTime)) { // Exception handling. } int64_t oldPts = newPts - startTime; ``` ## cl.multimedia.2 EffectSuggestionType Behavior Changed **Access Level** System API **Reason for Change** Only system APIs can obtain or update the enums related to effect recommendation. **Change Impact** This change is a non-compatible change. Before change: The enum is a public interface. After change: The enum is a system interface. **Start API Level** 12 **Change Since** OpenHarmony SDK 5.0.0.39 **Key API/Component Changes** EffectSuggestionType/camera component **Adaptation Guide** No adaptation is required. Related APIs are not opened. The change is only to keep the access level consistent with that of related APIs. ## cl.multimedia.3 EffectSuggestionStatus Behavior Changed **Access Level** System API **Reason for Change** Only system APIs can obtain or update the classes related to effect recommendation. **Change Impact** This change is a non-compatible change. Before change: The class is a public interface. After change: The class is a system interface. **Start API Level** 12 **Change Since** OpenHarmony SDK 5.0.0.39 **Key API/Component Changes** EffectSuggestionStatus/camera component **Adaptation Guide** No adaptation is required. Related APIs are not opened. The change is only to keep the access level consistent with that of related APIs.