From ec671aa6c5dd81fc1eddc78e2bf4500babaab815 Mon Sep 17 00:00:00 2001 From: zpf Date: Sat, 30 Aug 2025 16:55:14 +0800 Subject: [PATCH] =?UTF-8?q?pts=20=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zpf --- .../lppplayer/native_lpp_video_streamer.cpp | 12 ++++++++++ .../video_streamer_impl.cpp | 10 ++++++++ .../lpp_video_streamer/video_streamer_impl.h | 2 ++ .../inner_api/native/lpp_video_streamer.h | 2 ++ interfaces/kits/c/lowpower_video_sink.h | 14 +++++++++++ .../lpp/lpp_sync_manager/lpp_sync_manager.h | 1 + .../lpp_sync_manager_adapter.h | 2 ++ .../lpp_sync_manager/src/lpp_sync_manager.cpp | 10 ++++++++ .../src/lpp_sync_manager_adapter.cpp | 8 +++++++ .../lpp_video_streamer/hilpp_vstreamer_impl.h | 1 + .../src/hilpp_vstreamer_impl.cpp | 7 ++++++ .../include/i_lpp_video_streamer_service.h | 2 ++ .../services/engine_intf/i_lpp_sync_manager.h | 1 + .../engine_intf/i_lpp_video_streamer.h | 1 + .../client/lpp_video_streamer_client.cpp | 10 ++++++++ .../client/lpp_video_streamer_client.h | 2 ++ .../i_standard_lpp_video_streamer_service.h | 3 +++ .../ipc/lpp_video_streamer_service_proxy.cpp | 19 +++++++++++++++ .../ipc/lpp_video_streamer_service_proxy.h | 2 ++ .../ipc/lpp_video_streamer_service_stub.cpp | 24 +++++++++++++++++++ .../ipc/lpp_video_streamer_service_stub.h | 4 ++++ .../server/lpp_video_streamer_server.cpp | 9 +++++++ .../server/lpp_video_streamer_server.h | 2 ++ .../mock/i_lpp_sync_manager.h | 3 ++- .../mock/hilpp_vstreamer_impl.h | 3 ++- .../mock/lpp_sync_manager.h | 3 ++- .../mock/lpp_sync_manager_adapter.h | 3 ++- .../mock/v1_0/ilpp_sync_manager_adapter.h | 3 ++- .../mock/lpp_sync_manager.h | 4 ++-- .../mock/lpp_sync_manager_adapter.h | 3 ++- .../mock/lpp_sync_manager.h | 3 ++- 31 files changed, 164 insertions(+), 9 deletions(-) diff --git a/frameworks/native/capi/lppplayer/native_lpp_video_streamer.cpp b/frameworks/native/capi/lppplayer/native_lpp_video_streamer.cpp index 2147b2427..5ed1622b2 100644 --- a/frameworks/native/capi/lppplayer/native_lpp_video_streamer.cpp +++ b/frameworks/native/capi/lppplayer/native_lpp_video_streamer.cpp @@ -634,6 +634,7 @@ OH_AVErrCode OH_LowPowerVideoSinkCallback_SetStreamChangedListener( int32_t res = callback->SetStreamChangedListener(onStreamChanged, userData); return LppMsErrToOHAvErr(res); } + OH_AVErrCode OH_LowPowerVideoSinkCallback_SetFirstFrameDecodedListener(OH_LowPowerVideoSinkCallback *callback, OH_LowPowerVideoSink_OnFirstFrameDecoded onFirstFrameDecoded, void *userData) { @@ -643,3 +644,14 @@ OH_AVErrCode OH_LowPowerVideoSinkCallback_SetFirstFrameDecodedListener(OH_LowPow int32_t res = callback->SetFirstFrameReadyListener(onFirstFrameDecoded, userData); return LppMsErrToOHAvErr(res); } + +OH_AVErrCode OH_LowPowerVideoSink_GetLatestPts(OH_LowPowerVideoSink *streamer, int64_t *pts) +{ + MEDIA_LOGD("OH_LowPowerVideoSink_GetLatestPts"); + CHECK_AND_RETURN_RET_LOG(streamer != nullptr, AV_ERR_INVALID_VAL, "streamer is nullptr!"); + LowPowerVideoSinkObject *streamerObj = reinterpret_cast(streamer); + CHECK_AND_RETURN_RET_LOG(streamerObj != nullptr, AV_ERR_INVALID_VAL, "streamerObj is nullptr"); + CHECK_AND_RETURN_RET_LOG(streamerObj->videoStreamer_ != nullptr, AV_ERR_INVALID_VAL, "videoStreamer_ is nullptr"); + int32_t res = streamerObj->videoStreamer_->GetLatestPts(*pts); + return LppMsErrToOHAvErr(res); +} diff --git a/frameworks/native/lpp_video_streamer/video_streamer_impl.cpp b/frameworks/native/lpp_video_streamer/video_streamer_impl.cpp index f7adadd72..25761bed0 100644 --- a/frameworks/native/lpp_video_streamer/video_streamer_impl.cpp +++ b/frameworks/native/lpp_video_streamer/video_streamer_impl.cpp @@ -262,5 +262,15 @@ std::string VideoStreamerImpl::GetStreamerId() CHECK_AND_RETURN_RET_LOG(streamerService_ != nullptr, "", "player service does not exist.."); return streamerService_->GetStreamerId(); } + +int32_t VideoStreamerImpl::GetLatestPts(int64_t &pts) +{ + MEDIA_LOGI("VideoStreamerImpl GetLatestPts"); + CHECK_AND_RETURN_RET_LOG(streamerService_ != nullptr, MSERR_SERVICE_DIED, + "GetLatestPts player service does not exist."); + int32_t ret = streamerService_->GetLatestPts(pts); + pts = (ret == MSERR_OK) ? pts : 0; + return ret; +} } // namespace Media } // namespace OHOS diff --git a/frameworks/native/lpp_video_streamer/video_streamer_impl.h b/frameworks/native/lpp_video_streamer/video_streamer_impl.h index 16015c442..1a0b1e3e9 100644 --- a/frameworks/native/lpp_video_streamer/video_streamer_impl.h +++ b/frameworks/native/lpp_video_streamer/video_streamer_impl.h @@ -76,6 +76,8 @@ public: std::string GetStreamerId() override; + int32_t GetLatestPts(int64_t &pts) override; + private: std::shared_ptr callback_; std::shared_ptr streamerService_ = nullptr; diff --git a/interfaces/inner_api/native/lpp_video_streamer.h b/interfaces/inner_api/native/lpp_video_streamer.h index d29cd78a0..34de7d154 100644 --- a/interfaces/inner_api/native/lpp_video_streamer.h +++ b/interfaces/inner_api/native/lpp_video_streamer.h @@ -103,6 +103,8 @@ public: virtual int32_t RenderFirstFrame() = 0; virtual std::string GetStreamerId() = 0; + + virtual int32_t GetLatestPts(int64_t &pts) = 0; }; class __attribute__((visibility("default"))) VideoStreamerFactory { diff --git a/interfaces/kits/c/lowpower_video_sink.h b/interfaces/kits/c/lowpower_video_sink.h index d1c11f7e3..f74db9821 100644 --- a/interfaces/kits/c/lowpower_video_sink.h +++ b/interfaces/kits/c/lowpower_video_sink.h @@ -314,6 +314,20 @@ OH_AVErrCode OH_LowPowerVideoSink_SetTargetStartFrame( const int64_t timeoutMs, void* userData); +/** + * @brief Get the latest presentation timestamp (PTS) from lowpower video sink. + * + * @param {OH_LowPowerVideoSink*} sink Pointer to an OH_LowPowerVideoSink instance. + * @param {int64_t*} pts Pointer to store the latest PTS value (in microseconds). + * @return Returns AV_ERR_OK if the timestamp is obtained successfully; + * otherwise, returns a specific error code as defined in {@link OH_AVErrCode}: + * {@link AV_ERR_INVALID_VAL} the sink is nullptr, or sink is invalid. + * {@link AV_ERR_SERVICE_DIED} media service is died. + * {@link AV_ERR_OPERATE_NOT_PERMIT} operation not permitted. + * @since 21 + */ +OH_AVErrCode OH_LowPowerVideoSink_GetLatestPts(OH_LowPowerVideoSink *streamer, int64_t *pts); + /** * @brief Set playback speed for the lowpower video sink * @param {OH_LowPowerVideoSink*} sink Pointer to an OH_LowPowerVideoSink instance diff --git a/services/engine/histreamer/lpp/lpp_sync_manager/lpp_sync_manager.h b/services/engine/histreamer/lpp/lpp_sync_manager/lpp_sync_manager.h index 229bbb003..52029e9a6 100644 --- a/services/engine/histreamer/lpp/lpp_sync_manager/lpp_sync_manager.h +++ b/services/engine/histreamer/lpp/lpp_sync_manager/lpp_sync_manager.h @@ -50,6 +50,7 @@ public: int32_t SetTunnelId(uint64_t tunnelId) override; int32_t SetAudioIsLpp(bool isLpp) override; void SetEventReceiver(std::shared_ptr eventReceiver) override; + int32_t GetLatestPts(int64_t &pts) override; private: void ResetTimeAnchor(); diff --git a/services/engine/histreamer/lpp/lpp_sync_manager/lpp_sync_manager_adapter.h b/services/engine/histreamer/lpp/lpp_sync_manager/lpp_sync_manager_adapter.h index c602d662d..a78c947e6 100644 --- a/services/engine/histreamer/lpp/lpp_sync_manager/lpp_sync_manager_adapter.h +++ b/services/engine/histreamer/lpp/lpp_sync_manager/lpp_sync_manager_adapter.h @@ -56,6 +56,8 @@ public: int32_t UnbindOutputBuffers(); int32_t GetShareBuffer(int32_t &fd); int32_t SetTunnelId(uint64_t tunnelId); + int32_t GetLatestPts(int64_t &pts); + void OnError(const int32_t errorCode, const std::string &errorMsg); void OnTargetArrived(const int64_t targetPts, const bool isTimeout); void OnRenderStarted(); diff --git a/services/engine/histreamer/lpp/lpp_sync_manager/src/lpp_sync_manager.cpp b/services/engine/histreamer/lpp/lpp_sync_manager/src/lpp_sync_manager.cpp index c6b7cdf88..392286602 100644 --- a/services/engine/histreamer/lpp/lpp_sync_manager/src/lpp_sync_manager.cpp +++ b/services/engine/histreamer/lpp/lpp_sync_manager/src/lpp_sync_manager.cpp @@ -263,6 +263,16 @@ int32_t LppSyncManager::SetTunnelId(uint64_t tunnelId) return MSERR_OK; } +int32_t LppSyncManager::GetLatestPts(int64_t &pts) +{ + MEDIA_LOG_I("LppSyncManager::GetLatestPts"); + FALSE_RETURN_V_NOLOG(videoIsLpp_, MSERR_UNKNOWN); + FALSE_RETURN_V_MSG_E(adapter_ != nullptr, MSERR_INVALID_OPERATION, "adapter_ is nullptr"); + auto ret = adapter_->GetLatestPts(pts); + FALSE_RETURN_V_MSG_E(ret == MSERR_OK, ret, "adapter_ GetLatestPts failed"); + return MSERR_OK; +} + int32_t LppSyncManager::SetAudioIsLpp(bool isLpp) { audioIsLpp_ = isLpp; diff --git a/services/engine/histreamer/lpp/lpp_sync_manager/src/lpp_sync_manager_adapter.cpp b/services/engine/histreamer/lpp/lpp_sync_manager/src/lpp_sync_manager_adapter.cpp index 87b1d5615..dc5aa9195 100644 --- a/services/engine/histreamer/lpp/lpp_sync_manager/src/lpp_sync_manager_adapter.cpp +++ b/services/engine/histreamer/lpp/lpp_sync_manager/src/lpp_sync_manager_adapter.cpp @@ -321,6 +321,14 @@ int32_t LppSyncManagerAdapter::SetTunnelId(uint64_t tunnelId) return MSERR_OK; } +int32_t LppSyncManagerAdapter::GetLatestPts(int64_t &pts) +{ + MediaTrace trace("LppSyncManagerAdapter::GetLatestPts"); + MEDIA_LOG_I("GetLatestPts enter"); + FALSE_RETURN_V_MSG_E(syncMgrAdapter_ != nullptr, MSERR_INVALID_OPERATION, "syncMgrAdapter_ is nullptr"); + return syncMgrAdapter_->GetLatestPts(pts); +} + void LppSyncManagerAdapter::SetEventReceiver(std::shared_ptr eventReceiver) { eventReceiver_ = eventReceiver; diff --git a/services/engine/histreamer/lpp/lpp_video_streamer/hilpp_vstreamer_impl.h b/services/engine/histreamer/lpp/lpp_video_streamer/hilpp_vstreamer_impl.h index f39780d21..dd95907cc 100644 --- a/services/engine/histreamer/lpp/lpp_video_streamer/hilpp_vstreamer_impl.h +++ b/services/engine/histreamer/lpp/lpp_video_streamer/hilpp_vstreamer_impl.h @@ -55,6 +55,7 @@ public: std::string GetStreamerId() override; std::shared_ptr GetLppSyncManager() override; int32_t RenderFirstFrame() override; + int32_t GetLatestPts(int64_t &pts) override; void OnEvent(const Event &event); private: diff --git a/services/engine/histreamer/lpp/lpp_video_streamer/src/hilpp_vstreamer_impl.cpp b/services/engine/histreamer/lpp/lpp_video_streamer/src/hilpp_vstreamer_impl.cpp index 8b4e6c0e6..4db33be9c 100644 --- a/services/engine/histreamer/lpp/lpp_video_streamer/src/hilpp_vstreamer_impl.cpp +++ b/services/engine/histreamer/lpp/lpp_video_streamer/src/hilpp_vstreamer_impl.cpp @@ -130,6 +130,13 @@ int32_t HiLppVideoStreamerImpl::SetParameter(const Format ¶m) return MSERR_OK; } +int32_t HiLppVideoStreamerImpl::GetLatestPts(int64_t &pts) +{ + MEDIA_LOG_I("HiLppVideoStreamerImpl::GetLatestPts"); + FALSE_RETURN_V_MSG(vdec_ != nullptr, MSERR_INVALID_OPERATION, "vdec_ nullptr"); + return syncMgr_->GetLatestPts(pts); +} + int32_t HiLppVideoStreamerImpl::Configure(const Format ¶m) { FALSE_RETURN_V_MSG(vdec_ != nullptr, MSERR_INVALID_OPERATION, "vdec_ nullptr"); diff --git a/services/include/i_lpp_video_streamer_service.h b/services/include/i_lpp_video_streamer_service.h index ffdc2c52f..770d1470e 100644 --- a/services/include/i_lpp_video_streamer_service.h +++ b/services/include/i_lpp_video_streamer_service.h @@ -75,6 +75,8 @@ public: virtual std::string GetStreamerId() = 0; virtual int32_t RenderFirstFrame() = 0; + + virtual int32_t GetLatestPts(int64_t &pts) = 0; }; } // namespace Media } // namespace OHOS diff --git a/services/services/engine_intf/i_lpp_sync_manager.h b/services/services/engine_intf/i_lpp_sync_manager.h index 2edba8cee..38f9bf540 100644 --- a/services/services/engine_intf/i_lpp_sync_manager.h +++ b/services/services/engine_intf/i_lpp_sync_manager.h @@ -50,6 +50,7 @@ public: virtual int32_t SetTunnelId(uint64_t tunnelId) = 0; virtual int32_t SetAudioIsLpp(bool isLpp) = 0; virtual void SetEventReceiver(std::shared_ptr eventReceiver) = 0; + virtual int32_t GetLatestPts(int64_t &pts) = 0; }; } diff --git a/services/services/engine_intf/i_lpp_video_streamer.h b/services/services/engine_intf/i_lpp_video_streamer.h index 507230511..c411b1c94 100644 --- a/services/services/engine_intf/i_lpp_video_streamer.h +++ b/services/services/engine_intf/i_lpp_video_streamer.h @@ -66,6 +66,7 @@ public: virtual std::string GetStreamerId() = 0; virtual std::shared_ptr GetLppSyncManager() = 0; virtual int32_t RenderFirstFrame() = 0; + virtual int32_t GetLatestPts(int64_t &pts) = 0; }; } // namespace Media } // namespace OHOS diff --git a/services/services/lpp_video_streamer/client/lpp_video_streamer_client.cpp b/services/services/lpp_video_streamer/client/lpp_video_streamer_client.cpp index 952fda07b..c4e3357e4 100644 --- a/services/services/lpp_video_streamer/client/lpp_video_streamer_client.cpp +++ b/services/services/lpp_video_streamer/client/lpp_video_streamer_client.cpp @@ -243,5 +243,15 @@ void LppVideoStreamerClient::MediaServerDied() "mediaserver is died, please create a new video sink instance again"); } } + +int32_t LppVideoStreamerClient::GetLatestPts(int64_t &pts) +{ + MEDIA_LOGI("LppVideoStreamerClient GetLatestPts"); + CHECK_AND_RETURN_RET_LOG(playerProxy_ != nullptr, MSERR_SERVICE_DIED, + "LppVideoStreamerClient GetLatestPts player service does not exist."); + int32_t ret = playerProxy_->GetLatestPts(pts); + CHECK_AND_RETURN_RET_LOG(ret == MSERR_OK, ret, "LppVideoStreamerClient GetLatestPts failed."); + return MSERR_OK; +} } // namespace Media } // namespace OHOS \ No newline at end of file diff --git a/services/services/lpp_video_streamer/client/lpp_video_streamer_client.h b/services/services/lpp_video_streamer/client/lpp_video_streamer_client.h index 7b5a6885d..325f8e4a1 100644 --- a/services/services/lpp_video_streamer/client/lpp_video_streamer_client.h +++ b/services/services/lpp_video_streamer/client/lpp_video_streamer_client.h @@ -76,6 +76,8 @@ public: int32_t RenderFirstFrame() override; + int32_t GetLatestPts(int64_t &pts) override; + void MediaServerDied(); private: diff --git a/services/services/lpp_video_streamer/ipc/i_standard_lpp_video_streamer_service.h b/services/services/lpp_video_streamer/ipc/i_standard_lpp_video_streamer_service.h index 32982afbf..c9928ef1d 100644 --- a/services/services/lpp_video_streamer/ipc/i_standard_lpp_video_streamer_service.h +++ b/services/services/lpp_video_streamer/ipc/i_standard_lpp_video_streamer_service.h @@ -80,6 +80,8 @@ public: virtual int32_t RenderFirstFrame() = 0; + virtual int32_t GetLatestPts(int64_t &pts) = 0; + /** * IPC code ID */ @@ -109,6 +111,7 @@ public: GET_STREAM_ID, SET_AUDIO_STREAMER_ID, RENDER_FIRST_FRAME, + GET_LATEST_PTS, MAX_IPC_ID, // all IPC codes should be added before MAX_IPC_ID }; diff --git a/services/services/lpp_video_streamer/ipc/lpp_video_streamer_service_proxy.cpp b/services/services/lpp_video_streamer/ipc/lpp_video_streamer_service_proxy.cpp index c4556605e..898d65663 100644 --- a/services/services/lpp_video_streamer/ipc/lpp_video_streamer_service_proxy.cpp +++ b/services/services/lpp_video_streamer/ipc/lpp_video_streamer_service_proxy.cpp @@ -429,5 +429,24 @@ int32_t LppVideoStreamerServiceProxy::RenderFirstFrame() return reply.ReadInt32(); } +int32_t LppVideoStreamerServiceProxy::GetLatestPts(int64_t &pts) +{ + MEDIA_LOGI("LppVideoStreamerServiceProxy GetLatestPts"); + MessageParcel data; + MessageParcel reply; + MessageOption option; + + bool token = data.WriteInterfaceToken(LppVideoStreamerServiceProxy::GetDescriptor()); + CHECK_AND_RETURN_RET_LOG(token, MSERR_INVALID_OPERATION, "Failed to write descriptor!"); + + int32_t error = Remote()->SendRequest(GET_LATEST_PTS, data, reply, option); + CHECK_AND_RETURN_RET_LOG( + error == MSERR_OK, MSERR_INVALID_OPERATION, "GetLatestPts SendRequest failed, error: %{public}d", error); + int32_t ret = reply.ReadInt32(); + pts = reply.ReadInt64(); + CHECK_AND_RETURN_RET_LOG( + ret == MSERR_OK, MSERR_INVALID_OPERATION, "GetLatestPts failed, error: %{public}d", ret); + return ret; +} } // namespace Media } // namespace OHOS diff --git a/services/services/lpp_video_streamer/ipc/lpp_video_streamer_service_proxy.h b/services/services/lpp_video_streamer/ipc/lpp_video_streamer_service_proxy.h index efc84e5a7..3ba478a87 100644 --- a/services/services/lpp_video_streamer/ipc/lpp_video_streamer_service_proxy.h +++ b/services/services/lpp_video_streamer/ipc/lpp_video_streamer_service_proxy.h @@ -74,6 +74,8 @@ public: std::string GetStreamerId() override; + int32_t GetLatestPts(int64_t &pts) override; + int32_t RenderFirstFrame() override; private: static inline BrokerDelegator delegator_; diff --git a/services/services/lpp_video_streamer/ipc/lpp_video_streamer_service_stub.cpp b/services/services/lpp_video_streamer/ipc/lpp_video_streamer_service_stub.cpp index a3c2b2974..3c2caa459 100644 --- a/services/services/lpp_video_streamer/ipc/lpp_video_streamer_service_stub.cpp +++ b/services/services/lpp_video_streamer/ipc/lpp_video_streamer_service_stub.cpp @@ -82,6 +82,7 @@ int32_t LppVideoStreamerServiceStub::Init() void LppVideoStreamerServiceStub::SetPlayerFuncs() { FillPlayerFuncPart1(); + FillPlayerFuncPart2(); } void LppVideoStreamerServiceStub::FillPlayerFuncPart1() @@ -136,6 +137,12 @@ void LppVideoStreamerServiceStub::FillPlayerFuncPart1() [this](MessageParcel &data, MessageParcel &reply) { return RenderFirstFrame(data, reply); }}; } +void LppVideoStreamerServiceStub::FillPlayerFuncPart2() +{ + playerFuncs_[GET_LATEST_PTS] = {"Player::GetLatestPts", + [this](MessageParcel &data, MessageParcel &reply) { return GetLatestPts(data, reply); }}; +} + int LppVideoStreamerServiceStub::OnRemoteRequest( uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { @@ -532,5 +539,22 @@ int32_t LppVideoStreamerServiceStub::RenderFirstFrame(MessageParcel &data, Messa return MSERR_OK; } +int32_t LppVideoStreamerServiceStub::GetLatestPts(int64_t &pts) +{ + MEDIA_LOGI("LppVideoStreamerServiceStub::GetLatestPts"); + CHECK_AND_RETURN_RET_LOG(lppVideoPlayerServer_ != nullptr, MSERR_INVALID_OPERATION, "player server is nullptr"); + return lppVideoPlayerServer_->GetLatestPts(pts); +} + +int32_t LppVideoStreamerServiceStub::GetLatestPts(MessageParcel &data, MessageParcel &reply) +{ + (void)data; + int64_t pts = 0; + int32_t ret = GetLatestPts(pts); + MEDIA_LOGI("LppVideoStreamerServiceStub::GetLatestPts %{public}d %{public}ld", ret, pts); + reply.WriteInt32(ret); + reply.WriteInt64(pts); + return MSERR_OK; +} } // namespace Media } // namespace OHOS diff --git a/services/services/lpp_video_streamer/ipc/lpp_video_streamer_service_stub.h b/services/services/lpp_video_streamer/ipc/lpp_video_streamer_service_stub.h index eca927564..e708a8e14 100644 --- a/services/services/lpp_video_streamer/ipc/lpp_video_streamer_service_stub.h +++ b/services/services/lpp_video_streamer/ipc/lpp_video_streamer_service_stub.h @@ -81,9 +81,12 @@ public: int32_t RenderFirstFrame() override; + int32_t GetLatestPts(int64_t &pts) override; + int32_t Init(); void SetPlayerFuncs(); void FillPlayerFuncPart1(); + void FillPlayerFuncPart2(); private: LppVideoStreamerServiceStub(); @@ -114,6 +117,7 @@ public: int32_t SetLppAudioStreamerId(MessageParcel &data, MessageParcel &reply); int32_t GetStreamerId(MessageParcel &data, MessageParcel &reply); int32_t RenderFirstFrame(MessageParcel &data, MessageParcel &reply); + int32_t GetLatestPts(MessageParcel &data, MessageParcel &reply); std::shared_ptr lppVideoPlayerServer_ = nullptr; std::map> playerFuncs_; diff --git a/services/services/lpp_video_streamer/server/lpp_video_streamer_server.cpp b/services/services/lpp_video_streamer/server/lpp_video_streamer_server.cpp index 34462bbe3..0f7725305 100644 --- a/services/services/lpp_video_streamer/server/lpp_video_streamer_server.cpp +++ b/services/services/lpp_video_streamer/server/lpp_video_streamer_server.cpp @@ -287,6 +287,15 @@ int32_t LppVideoStreamerServer::SetLppVideoStreamerCallback(const std::shared_pt return MSERR_OK; } +int32_t LppVideoStreamerServer::GetLatestPts(int64_t &pts) +{ + MEDIA_LOGI("LppVideoStreamerServer GetLatestPts"); + CHECK_AND_RETURN_RET_LOG(streamerEngine_ != nullptr, MSERR_INVALID_OPERATION, "streamerEngine_ is nullptr"); + auto ret = streamerEngine_->GetLatestPts(pts); + CHECK_AND_RETURN_RET_LOG(ret == MSERR_OK, ret, "GetLatestPts Failed!"); + return ret; +} + int32_t LppVideoStreamerServer::SetLppAudioStreamerId(const std::string audioStreamId) { MEDIA_LOGI("LppVideoStreamerServer SetLppAudioStreamerId"); diff --git a/services/services/lpp_video_streamer/server/lpp_video_streamer_server.h b/services/services/lpp_video_streamer/server/lpp_video_streamer_server.h index beec97728..0fbf7b171 100644 --- a/services/services/lpp_video_streamer/server/lpp_video_streamer_server.h +++ b/services/services/lpp_video_streamer/server/lpp_video_streamer_server.h @@ -94,6 +94,8 @@ public: int32_t RenderFirstFrame() override; + int32_t GetLatestPts(int64_t &pts) override; + void OnDataNeeded(const int32_t maxBufferSize, const int32_t maxFrameNum) override; bool OnAnchorUpdateNeeded(int64_t &anchorPts, int64_t &anchorClk) override; void OnError(const MediaServiceErrCode errCode, const std::string &errMsg) override; diff --git a/test/unittest/lpp_unit_test/engine/lpp_astream_impl_unit_test/mock/i_lpp_sync_manager.h b/test/unittest/lpp_unit_test/engine/lpp_astream_impl_unit_test/mock/i_lpp_sync_manager.h index 85e72ad28..45f109f17 100644 --- a/test/unittest/lpp_unit_test/engine/lpp_astream_impl_unit_test/mock/i_lpp_sync_manager.h +++ b/test/unittest/lpp_unit_test/engine/lpp_astream_impl_unit_test/mock/i_lpp_sync_manager.h @@ -49,7 +49,8 @@ public: MOCK_METHOD(int32_t, SetTunnelId, (uint64_t tunnelId)); MOCK_METHOD(int32_t, SetAudioIsLpp, (bool isLpp)); MOCK_METHOD(void, SetEventReceiver, (std::shared_ptr eventReceiver)); + MOCK_METHOD(int32_t, GetLatestPts, (int64_t &pts)); }; } } -#endif \ No newline at end of file +#endif diff --git a/test/unittest/lpp_unit_test/engine/lpp_video_stream_unit_test/mock/hilpp_vstreamer_impl.h b/test/unittest/lpp_unit_test/engine/lpp_video_stream_unit_test/mock/hilpp_vstreamer_impl.h index 1b9af148f..10b508f89 100644 --- a/test/unittest/lpp_unit_test/engine/lpp_video_stream_unit_test/mock/hilpp_vstreamer_impl.h +++ b/test/unittest/lpp_unit_test/engine/lpp_video_stream_unit_test/mock/hilpp_vstreamer_impl.h @@ -52,6 +52,7 @@ public: std::string GetStreamerId() override; std::shared_ptr GetLppSyncManager() override; int32_t RenderFirstFrame() override; + int32_t GetLatestPts(int64_t &pts) override; void OnEvent(const Event &event); private: @@ -84,4 +85,4 @@ private: }; } // namespace Media } // namespace OHOS -#endif \ No newline at end of file +#endif diff --git a/test/unittest/lpp_unit_test/engine/lpp_video_stream_unit_test/mock/lpp_sync_manager.h b/test/unittest/lpp_unit_test/engine/lpp_video_stream_unit_test/mock/lpp_sync_manager.h index 5cb2d3df5..2eead0187 100644 --- a/test/unittest/lpp_unit_test/engine/lpp_video_stream_unit_test/mock/lpp_sync_manager.h +++ b/test/unittest/lpp_unit_test/engine/lpp_video_stream_unit_test/mock/lpp_sync_manager.h @@ -53,7 +53,8 @@ public: MOCK_METHOD(int32_t, SetTunnelId, (uint64_t tunnelId), (override)); MOCK_METHOD(int32_t, SetAudioIsLpp, (bool isLpp), (override)); MOCK_METHOD(void, SetEventReceiver, (std::shared_ptr eventReceiver), (override)); + MOCK_METHOD(int32_t, GetLatestPts, (int64_t &pts), (override)); }; } // namespace Media } // namespace OHOS -#endif \ No newline at end of file +#endif diff --git a/test/unittest/lpp_unit_test/engine/lpp_video_stream_unit_test/mock/lpp_sync_manager_adapter.h b/test/unittest/lpp_unit_test/engine/lpp_video_stream_unit_test/mock/lpp_sync_manager_adapter.h index 2736d4528..360d66151 100644 --- a/test/unittest/lpp_unit_test/engine/lpp_video_stream_unit_test/mock/lpp_sync_manager_adapter.h +++ b/test/unittest/lpp_unit_test/engine/lpp_video_stream_unit_test/mock/lpp_sync_manager_adapter.h @@ -51,6 +51,7 @@ public: MOCK_METHOD(int32_t, GetShareBuffer, (int32_t& fd)); MOCK_METHOD(int32_t, SetTunnelId, (uint64_t tunnelId)); MOCK_METHOD(void, SetEventReceiver, (std::shared_ptr eventReceiver)); + MOCK_METHOD(int32_t, GetLatestPts, (int64_t &pts)); }; class LowPowerPlayerFactory { @@ -72,4 +73,4 @@ public: }; } // namespace Media } // namespace OHOS -#endif // LPP_SYNC_MANAGER_ADAPTER_H \ No newline at end of file +#endif // LPP_SYNC_MANAGER_ADAPTER_H diff --git a/test/unittest/lpp_unit_test/module/lpp_sync_mgr_adapter_unit_test/mock/v1_0/ilpp_sync_manager_adapter.h b/test/unittest/lpp_unit_test/module/lpp_sync_mgr_adapter_unit_test/mock/v1_0/ilpp_sync_manager_adapter.h index 9224148f3..6bb4fae05 100644 --- a/test/unittest/lpp_unit_test/module/lpp_sync_mgr_adapter_unit_test/mock/v1_0/ilpp_sync_manager_adapter.h +++ b/test/unittest/lpp_unit_test/module/lpp_sync_mgr_adapter_unit_test/mock/v1_0/ilpp_sync_manager_adapter.h @@ -51,9 +51,10 @@ public: MOCK_METHOD(int32_t, UnbindOutputBuffers, ()); MOCK_METHOD(int32_t, GetShareBuffer, (int& fd)); MOCK_METHOD(int32_t, SetTunnelId, (uint64_t tunnelId)); + MOCK_METHOD(int32_t, GetLatestPts, (int64_t &pts)); }; } // V1_0 } // LowPowerPlayer } // HDI } // OHOS -#endif // OHOS_HDI_LOW_POWER_PLAYER_V1_0_ILPPSYNCMANAGERADAPTER_H \ No newline at end of file +#endif // OHOS_HDI_LOW_POWER_PLAYER_V1_0_ILPPSYNCMANAGERADAPTER_H diff --git a/test/unittest/lpp_unit_test/module/lpp_sync_mgr_unit_test/mock/lpp_sync_manager.h b/test/unittest/lpp_unit_test/module/lpp_sync_mgr_unit_test/mock/lpp_sync_manager.h index 3f3755f5a..b7b4f8352 100644 --- a/test/unittest/lpp_unit_test/module/lpp_sync_mgr_unit_test/mock/lpp_sync_manager.h +++ b/test/unittest/lpp_unit_test/module/lpp_sync_mgr_unit_test/mock/lpp_sync_manager.h @@ -49,7 +49,7 @@ public: int32_t SetTunnelId(uint64_t tunnelId); int32_t SetAudioIsLpp(bool isLpp); void SetEventReceiver(std::shared_ptr eventReceiver); - + int32_t GetLatestPts(int64_t &pts); private: void ResetTimeAnchor(); @@ -68,4 +68,4 @@ private: } // namespace Media } // namespace OHOS -#endif \ No newline at end of file +#endif diff --git a/test/unittest/lpp_unit_test/module/lpp_sync_mgr_unit_test/mock/lpp_sync_manager_adapter.h b/test/unittest/lpp_unit_test/module/lpp_sync_mgr_unit_test/mock/lpp_sync_manager_adapter.h index c9ea2f2e3..aa01564c0 100644 --- a/test/unittest/lpp_unit_test/module/lpp_sync_mgr_unit_test/mock/lpp_sync_manager_adapter.h +++ b/test/unittest/lpp_unit_test/module/lpp_sync_mgr_unit_test/mock/lpp_sync_manager_adapter.h @@ -52,6 +52,7 @@ public: MOCK_METHOD(int32_t, GetShareBuffer, (int32_t& fd)); MOCK_METHOD(int32_t, SetTunnelId, (uint64_t tunnelId)); MOCK_METHOD(void, SetEventReceiver, (std::shared_ptr eventReceiver)); + MOCK_METHOD(int32_t, GetLatestPts, (int64_t &pts)); }; class LowPowerPlayerFactory { @@ -74,4 +75,4 @@ public: } // namespace Media } // namespace OHOS -#endif // LPP_SYNC_MANAGER_ADAPTER_H \ No newline at end of file +#endif // LPP_SYNC_MANAGER_ADAPTER_H diff --git a/test/unittest/lpp_unit_test/module/lpp_video_dec_adapter_unit_test/mock/lpp_sync_manager.h b/test/unittest/lpp_unit_test/module/lpp_video_dec_adapter_unit_test/mock/lpp_sync_manager.h index dbb510bf4..0b0d892df 100644 --- a/test/unittest/lpp_unit_test/module/lpp_video_dec_adapter_unit_test/mock/lpp_sync_manager.h +++ b/test/unittest/lpp_unit_test/module/lpp_video_dec_adapter_unit_test/mock/lpp_sync_manager.h @@ -52,7 +52,8 @@ public: MOCK_METHOD(int32_t, SetTunnelId, (uint64_t tunnelId), (override)); MOCK_METHOD(int32_t, SetAudioIsLpp, (bool isLpp), (override)); MOCK_METHOD(void, SetEventReceiver, (std::shared_ptr eventReceiver), (override)); + MOCK_METHOD(int32_t, GetLatestPts, (int64_t &pts), (override)); }; } // namespace Media } // namespace OHOS -#endif \ No newline at end of file +#endif -- Gitee