Loading media/codec2/sfplugin/CCodecBufferChannel.cpp +9 −3 Original line number Diff line number Diff line Loading @@ -67,6 +67,7 @@ using hardware::hidl_string; using hardware::hidl_vec; using hardware::fromHeap; using hardware::HidlMemory; using server_configurable_flags::GetServerConfigurableFlag; using namespace hardware::cas::V1_0; using namespace hardware::cas::native::V1_0; Loading @@ -82,6 +83,11 @@ constexpr size_t kSmoothnessFactor = 4; // than making it non-blocking. Do not change this value. const static size_t kDequeueTimeoutNs = 0; static bool areRenderMetricsEnabled() { std::string v = GetServerConfigurableFlag("media_native", "render_metrics_enabled", "false"); return v == "true"; } } // namespace CCodecBufferChannel::QueueGuard::QueueGuard( Loading Loading @@ -148,6 +154,7 @@ CCodecBufferChannel::CCodecBufferChannel( mCCodecCallback(callback), mFrameIndex(0u), mFirstValidFrameIndex(0u), mAreRenderMetricsEnabled(areRenderMetricsEnabled()), mIsSurfaceToDisplay(false), mHasPresentFenceTimes(false), mRenderingDepth(3u), Loading @@ -174,8 +181,7 @@ CCodecBufferChannel::CCodecBufferChannel( Mutexed<BlockPools>::Locked pools(mBlockPools); pools->outputPoolId = C2BlockPool::BASIC_LINEAR; } std::string value = server_configurable_flags::GetServerConfigurableFlag( "media_native", "ccodec_rendering_depth", "3"); std::string value = GetServerConfigurableFlag("media_native", "ccodec_rendering_depth", "3"); android::base::ParseInt(value, &mRenderingDepth); mOutputSurface.lock()->maxDequeueBuffers = kSmoothnessFactor + mRenderingDepth; } Loading Loading @@ -996,7 +1002,7 @@ status_t CCodecBufferChannel::renderOutputBuffer( int64_t mediaTimeUs = 0; (void)buffer->meta()->findInt64("timeUs", &mediaTimeUs); if (mIsSurfaceToDisplay) { if (mAreRenderMetricsEnabled && mIsSurfaceToDisplay) { trackReleasedFrame(qbo, mediaTimeUs, timestampNs); processRenderedFrames(qbo.frameTimestamps); } else { Loading media/codec2/sfplugin/CCodecBufferChannel.h +1 −0 Original line number Diff line number Diff line Loading @@ -335,6 +335,7 @@ private: sp<MemoryDealer> makeMemoryDealer(size_t heapSize); std::deque<TrackedFrame> mTrackedFrames; bool mAreRenderMetricsEnabled; bool mIsSurfaceToDisplay; bool mHasPresentFenceTimes; Loading media/libstagefright/MediaCodec.cpp +9 −2 Original line number Diff line number Diff line Loading @@ -92,6 +92,7 @@ using aidl::android::media::BnResourceManagerClient; using aidl::android::media::IResourceManagerClient; using aidl::android::media::IResourceManagerService; using aidl::android::media::ClientInfoParcel; using server_configurable_flags::GetServerConfigurableFlag; using FreezeEvent = VideoRenderQualityTracker::FreezeEvent; using JudderEvent = VideoRenderQualityTracker::JudderEvent; Loading Loading @@ -282,6 +283,11 @@ static bool isResourceError(status_t err) { return (err == NO_MEMORY); } static bool areRenderMetricsEnabled() { std::string v = GetServerConfigurableFlag("media_native", "render_metrics_enabled", "false"); return v == "true"; } static const int kMaxRetry = 2; static const int kMaxReclaimWaitTimeInUs = 500000; // 0.5s static const int kNumBuffersAlign = 16; Loading Loading @@ -1148,9 +1154,10 @@ MediaCodec::MediaCodec( mHavePendingInputBuffers(false), mCpuBoostRequested(false), mIsSurfaceToDisplay(false), mAreRenderMetricsEnabled(areRenderMetricsEnabled()), mVideoRenderQualityTracker( VideoRenderQualityTracker::Configuration::getFromServerConfigurableFlags( server_configurable_flags::GetServerConfigurableFlag)), GetServerConfigurableFlag)), mLatencyUnknown(0), mBytesEncoded(0), mEarliestEncodedPtsUs(INT64_MAX), Loading Loading @@ -6169,7 +6176,7 @@ status_t MediaCodec::onReleaseOutputBuffer(const sp<AMessage> &msg) { // If rendering to the screen, then schedule a time in the future to poll to see if this // frame was ever rendered to seed onFrameRendered callbacks. if (mIsSurfaceToDisplay) { if (mAreRenderMetricsEnabled && mIsSurfaceToDisplay) { if (mediaTimeUs != INT64_MIN) { noRenderTime ? mVideoRenderQualityTracker.onFrameReleased(mediaTimeUs) : mVideoRenderQualityTracker.onFrameReleased(mediaTimeUs, Loading media/libstagefright/VideoRenderQualityTracker.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -154,7 +154,7 @@ VideoRenderQualityTracker::Configuration } VideoRenderQualityTracker::Configuration::Configuration() { enabled = true; enabled = false; // Assume that the app is skipping frames because it's detected that the frame couldn't be // rendered in time. Loading media/libstagefright/include/media/stagefright/MediaCodec.h +1 −0 Original line number Diff line number Diff line Loading @@ -572,6 +572,7 @@ private: sp<ALooper> mCryptoLooper; bool mIsSurfaceToDisplay; bool mAreRenderMetricsEnabled; PlaybackDurationAccumulator mPlaybackDurationAccumulator; VideoRenderQualityTracker mVideoRenderQualityTracker; Loading Loading
media/codec2/sfplugin/CCodecBufferChannel.cpp +9 −3 Original line number Diff line number Diff line Loading @@ -67,6 +67,7 @@ using hardware::hidl_string; using hardware::hidl_vec; using hardware::fromHeap; using hardware::HidlMemory; using server_configurable_flags::GetServerConfigurableFlag; using namespace hardware::cas::V1_0; using namespace hardware::cas::native::V1_0; Loading @@ -82,6 +83,11 @@ constexpr size_t kSmoothnessFactor = 4; // than making it non-blocking. Do not change this value. const static size_t kDequeueTimeoutNs = 0; static bool areRenderMetricsEnabled() { std::string v = GetServerConfigurableFlag("media_native", "render_metrics_enabled", "false"); return v == "true"; } } // namespace CCodecBufferChannel::QueueGuard::QueueGuard( Loading Loading @@ -148,6 +154,7 @@ CCodecBufferChannel::CCodecBufferChannel( mCCodecCallback(callback), mFrameIndex(0u), mFirstValidFrameIndex(0u), mAreRenderMetricsEnabled(areRenderMetricsEnabled()), mIsSurfaceToDisplay(false), mHasPresentFenceTimes(false), mRenderingDepth(3u), Loading @@ -174,8 +181,7 @@ CCodecBufferChannel::CCodecBufferChannel( Mutexed<BlockPools>::Locked pools(mBlockPools); pools->outputPoolId = C2BlockPool::BASIC_LINEAR; } std::string value = server_configurable_flags::GetServerConfigurableFlag( "media_native", "ccodec_rendering_depth", "3"); std::string value = GetServerConfigurableFlag("media_native", "ccodec_rendering_depth", "3"); android::base::ParseInt(value, &mRenderingDepth); mOutputSurface.lock()->maxDequeueBuffers = kSmoothnessFactor + mRenderingDepth; } Loading Loading @@ -996,7 +1002,7 @@ status_t CCodecBufferChannel::renderOutputBuffer( int64_t mediaTimeUs = 0; (void)buffer->meta()->findInt64("timeUs", &mediaTimeUs); if (mIsSurfaceToDisplay) { if (mAreRenderMetricsEnabled && mIsSurfaceToDisplay) { trackReleasedFrame(qbo, mediaTimeUs, timestampNs); processRenderedFrames(qbo.frameTimestamps); } else { Loading
media/codec2/sfplugin/CCodecBufferChannel.h +1 −0 Original line number Diff line number Diff line Loading @@ -335,6 +335,7 @@ private: sp<MemoryDealer> makeMemoryDealer(size_t heapSize); std::deque<TrackedFrame> mTrackedFrames; bool mAreRenderMetricsEnabled; bool mIsSurfaceToDisplay; bool mHasPresentFenceTimes; Loading
media/libstagefright/MediaCodec.cpp +9 −2 Original line number Diff line number Diff line Loading @@ -92,6 +92,7 @@ using aidl::android::media::BnResourceManagerClient; using aidl::android::media::IResourceManagerClient; using aidl::android::media::IResourceManagerService; using aidl::android::media::ClientInfoParcel; using server_configurable_flags::GetServerConfigurableFlag; using FreezeEvent = VideoRenderQualityTracker::FreezeEvent; using JudderEvent = VideoRenderQualityTracker::JudderEvent; Loading Loading @@ -282,6 +283,11 @@ static bool isResourceError(status_t err) { return (err == NO_MEMORY); } static bool areRenderMetricsEnabled() { std::string v = GetServerConfigurableFlag("media_native", "render_metrics_enabled", "false"); return v == "true"; } static const int kMaxRetry = 2; static const int kMaxReclaimWaitTimeInUs = 500000; // 0.5s static const int kNumBuffersAlign = 16; Loading Loading @@ -1148,9 +1154,10 @@ MediaCodec::MediaCodec( mHavePendingInputBuffers(false), mCpuBoostRequested(false), mIsSurfaceToDisplay(false), mAreRenderMetricsEnabled(areRenderMetricsEnabled()), mVideoRenderQualityTracker( VideoRenderQualityTracker::Configuration::getFromServerConfigurableFlags( server_configurable_flags::GetServerConfigurableFlag)), GetServerConfigurableFlag)), mLatencyUnknown(0), mBytesEncoded(0), mEarliestEncodedPtsUs(INT64_MAX), Loading Loading @@ -6169,7 +6176,7 @@ status_t MediaCodec::onReleaseOutputBuffer(const sp<AMessage> &msg) { // If rendering to the screen, then schedule a time in the future to poll to see if this // frame was ever rendered to seed onFrameRendered callbacks. if (mIsSurfaceToDisplay) { if (mAreRenderMetricsEnabled && mIsSurfaceToDisplay) { if (mediaTimeUs != INT64_MIN) { noRenderTime ? mVideoRenderQualityTracker.onFrameReleased(mediaTimeUs) : mVideoRenderQualityTracker.onFrameReleased(mediaTimeUs, Loading
media/libstagefright/VideoRenderQualityTracker.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -154,7 +154,7 @@ VideoRenderQualityTracker::Configuration } VideoRenderQualityTracker::Configuration::Configuration() { enabled = true; enabled = false; // Assume that the app is skipping frames because it's detected that the frame couldn't be // rendered in time. Loading
media/libstagefright/include/media/stagefright/MediaCodec.h +1 −0 Original line number Diff line number Diff line Loading @@ -572,6 +572,7 @@ private: sp<ALooper> mCryptoLooper; bool mIsSurfaceToDisplay; bool mAreRenderMetricsEnabled; PlaybackDurationAccumulator mPlaybackDurationAccumulator; VideoRenderQualityTracker mVideoRenderQualityTracker; Loading