From 04b580074a65307d8ac3a6bfbf7d6d6107256d55 Mon Sep 17 00:00:00 2001 From: Mike Hommey Date: Mon, 25 Dec 2023 21:29:43 +0000 Subject: [PATCH] Bug 1870786 - Fix the type of RTP timestamps in WebrtcGmpVideoEncoder. r=webrtc-reviewers,pehrsons,media-playback-reviewers,aosmond The keys inserted in the map come from GMPVideoEncodedFrame::TimeStamp, which returns a uint64_t, and truncation is probably not wanted, although it might just work in practice. Differential Revision: https://phabricator.services.mozilla.com/D197012 --- dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp | 2 +- dom/media/gtest/TestGMPRemoveAndDelete.cpp | 2 +- dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp | 2 +- dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp b/dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp index 4c5e95643e153..a2ca4f713d2b5 100644 --- a/dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp +++ b/dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp @@ -99,7 +99,7 @@ struct EncodedFrame { uint8_t y_; uint8_t u_; uint8_t v_; - uint32_t timestamp_; + uint64_t timestamp_; } idr_nalu; }; #pragma pack(pop) diff --git a/dom/media/gtest/TestGMPRemoveAndDelete.cpp b/dom/media/gtest/TestGMPRemoveAndDelete.cpp index b969027c6eda2..9f2118ea8aead 100644 --- a/dom/media/gtest/TestGMPRemoveAndDelete.cpp +++ b/dom/media/gtest/TestGMPRemoveAndDelete.cpp @@ -361,7 +361,7 @@ void GMPRemoveTest::gmp_Decode() { uint8_t y_; uint8_t u_; uint8_t v_; - uint32_t timestamp_; + uint64_t timestamp_; } idr_nalu; }; #pragma pack(pop) diff --git a/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp b/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp index 50e39b22d06ae..7200cf10b356d 100644 --- a/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp +++ b/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp @@ -540,7 +540,7 @@ void WebrtcGmpVideoEncoder::Encoded( webrtc::VideoFrameType ft; GmpFrameTypeToWebrtcFrameType(aEncodedFrame->FrameType(), &ft); - uint32_t timestamp = (aEncodedFrame->TimeStamp() * 90ll + 999) / 1000; + uint64_t timestamp = (aEncodedFrame->TimeStamp() * 90ll + 999) / 1000; GMP_LOG_DEBUG("GMP Encoded: %" PRIu64 ", type %d, len %d", aEncodedFrame->TimeStamp(), aEncodedFrame->BufferType(), diff --git a/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h b/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h index ef3e1bd5afba9..865f9afff06db 100644 --- a/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h +++ b/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h @@ -302,7 +302,7 @@ class WebrtcGmpVideoEncoder : public GMPVideoEncoderCallbackProxy, int64_t timestamp_us; }; // Map rtp time -> input image data - DataMutex> mInputImageMap; + DataMutex> mInputImageMap; MediaEventProducer mInitPluginEvent; MediaEventProducer mReleasePluginEvent;