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 @@ -334,6 +334,7 @@ private: sp<MemoryDealer> makeMemoryDealer(size_t heapSize); std::deque<TrackedFrame> mTrackedFrames; bool mAreRenderMetricsEnabled; bool mIsSurfaceToDisplay; bool mHasPresentFenceTimes; Loading media/libstagefright/ACodec.cpp +12 −1 Original line number Diff line number Diff line Loading @@ -65,11 +65,14 @@ #include "include/SharedMemoryBuffer.h" #include <media/stagefright/omx/OMXUtils.h> #include <server_configurable_flags/get_flags.h> namespace android { typedef hardware::media::omx::V1_0::IGraphicBufferSource HGraphicBufferSource; using hardware::media::omx::V1_0::Status; using server_configurable_flags::GetServerConfigurableFlag; enum { kMaxIndicesToCheck = 32, // used when enumerating supported formats and profiles Loading @@ -82,6 +85,11 @@ constexpr char TUNNEL_PEEK_SET_LEGACY_KEY[] = "android._tunnel-peek-set-legacy"; } static bool areRenderMetricsEnabled() { std::string v = GetServerConfigurableFlag("media_native", "render_metrics_enabled", "false"); return v == "true"; } // OMX errors are directly mapped into status_t range if // there is no corresponding MediaError status code. // Use the statusFromOMXError(int32_t omxError) function. Loading Loading @@ -562,6 +570,9 @@ void ACodec::BufferInfo::checkReadFence(const char *dbg) { ACodec::ACodec() : mSampleRate(0), mNodeGeneration(0), mAreRenderMetricsEnabled(areRenderMetricsEnabled()), mIsWindowToDisplay(false), mHasPresentFenceTimes(false), mUsingNativeWindow(false), mNativeWindowUsageBits(0), mLastNativeWindowDataSpace(HAL_DATASPACE_UNKNOWN), Loading Loading @@ -6808,7 +6819,7 @@ void ACodec::BaseState::onOutputBufferDrained(const sp<AMessage> &msg) { int64_t mediaTimeUs = -1; buffer->meta()->findInt64("timeUs", &mediaTimeUs); if (mCodec->mIsWindowToDisplay) { if (mCodec->mAreRenderMetricsEnabled && mCodec->mIsWindowToDisplay) { mCodec->trackReleasedFrame(frameId, mediaTimeUs, timestampNs); mCodec->pollForRenderedFrames(); } else { Loading media/libstagefright/MediaCodec.cpp +9 −2 Original line number Diff line number Diff line Loading @@ -93,6 +93,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 @@ -284,6 +285,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 @@ -1027,9 +1033,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 @@ -6057,7 +6064,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 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 @@ -334,6 +334,7 @@ private: sp<MemoryDealer> makeMemoryDealer(size_t heapSize); std::deque<TrackedFrame> mTrackedFrames; bool mAreRenderMetricsEnabled; bool mIsSurfaceToDisplay; bool mHasPresentFenceTimes; Loading
media/libstagefright/ACodec.cpp +12 −1 Original line number Diff line number Diff line Loading @@ -65,11 +65,14 @@ #include "include/SharedMemoryBuffer.h" #include <media/stagefright/omx/OMXUtils.h> #include <server_configurable_flags/get_flags.h> namespace android { typedef hardware::media::omx::V1_0::IGraphicBufferSource HGraphicBufferSource; using hardware::media::omx::V1_0::Status; using server_configurable_flags::GetServerConfigurableFlag; enum { kMaxIndicesToCheck = 32, // used when enumerating supported formats and profiles Loading @@ -82,6 +85,11 @@ constexpr char TUNNEL_PEEK_SET_LEGACY_KEY[] = "android._tunnel-peek-set-legacy"; } static bool areRenderMetricsEnabled() { std::string v = GetServerConfigurableFlag("media_native", "render_metrics_enabled", "false"); return v == "true"; } // OMX errors are directly mapped into status_t range if // there is no corresponding MediaError status code. // Use the statusFromOMXError(int32_t omxError) function. Loading Loading @@ -562,6 +570,9 @@ void ACodec::BufferInfo::checkReadFence(const char *dbg) { ACodec::ACodec() : mSampleRate(0), mNodeGeneration(0), mAreRenderMetricsEnabled(areRenderMetricsEnabled()), mIsWindowToDisplay(false), mHasPresentFenceTimes(false), mUsingNativeWindow(false), mNativeWindowUsageBits(0), mLastNativeWindowDataSpace(HAL_DATASPACE_UNKNOWN), Loading Loading @@ -6808,7 +6819,7 @@ void ACodec::BaseState::onOutputBufferDrained(const sp<AMessage> &msg) { int64_t mediaTimeUs = -1; buffer->meta()->findInt64("timeUs", &mediaTimeUs); if (mCodec->mIsWindowToDisplay) { if (mCodec->mAreRenderMetricsEnabled && mCodec->mIsWindowToDisplay) { mCodec->trackReleasedFrame(frameId, mediaTimeUs, timestampNs); mCodec->pollForRenderedFrames(); } else { Loading
media/libstagefright/MediaCodec.cpp +9 −2 Original line number Diff line number Diff line Loading @@ -93,6 +93,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 @@ -284,6 +285,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 @@ -1027,9 +1033,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 @@ -6057,7 +6064,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