From 9be69bd990889cc942a53c22f6f8463f146fd8e7 Mon Sep 17 00:00:00 2001 From: Shivaprasad Hongal Date: Fri, 18 Sep 2015 15:17:14 -0700 Subject: stagefright: Remove additional deep-copy of encoder buffers MPEG4Writer makes a copy of encoded buffer to avoid holding on to the read buffer. This is not needed with MediaCodecSource, as the encoded-output buffer is already copied to a heap buffer. This saves a copy and some power. However, cloning the buffer is still needed for upstream sources that cannot afford to keep the buffers with writer up until they are released. So, pass a hint in buffer's metadata to indicate if it is OK to delay the release and not copy the buffer Change-Id: Ib59ac29ebc6ce4afd6fc272688a8260438ab1517 --- media/libavextensions/stagefright/AVExtensions.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'media/libavextensions') diff --git a/media/libavextensions/stagefright/AVExtensions.h b/media/libavextensions/stagefright/AVExtensions.h index 9c712e4..17ea475 100644 --- a/media/libavextensions/stagefright/AVExtensions.h +++ b/media/libavextensions/stagefright/AVExtensions.h @@ -161,6 +161,9 @@ struct AVUtils { virtual bool useQCHWEncoder(const sp &, AString &) { return false; } + virtual bool canDeferRelease(const sp &/*meta*/) { return false; } + virtual void setDeferRelease(sp &/*meta*/) {} + struct HEVCMuxer { virtual bool reassembleHEVCCSD(const AString &mime, sp csd0, sp &meta); -- cgit v1.1 From d4c3afbb613f7201ece31ad2230ec22289422680 Mon Sep 17 00:00:00 2001 From: Sidipotu Ashok Date: Fri, 16 Oct 2015 06:16:13 +0530 Subject: NuPlayer: use a generic funtion to get flags Use a generic function to get flags while creating extractor, so that there is no restriction to a particular usecase. CRs-Fixed: 911338 Change-Id: I8520d2ea9b25ab564b7eee6610744fcaa364fe87 --- media/libavextensions/mediaplayerservice/AVNuExtensions.h | 2 +- media/libavextensions/mediaplayerservice/AVNuUtils.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'media/libavextensions') diff --git a/media/libavextensions/mediaplayerservice/AVNuExtensions.h b/media/libavextensions/mediaplayerservice/AVNuExtensions.h index c6aba71..7aeb5c3 100644 --- a/media/libavextensions/mediaplayerservice/AVNuExtensions.h +++ b/media/libavextensions/mediaplayerservice/AVNuExtensions.h @@ -80,7 +80,7 @@ struct AVNuUtils { virtual void setDecodedPCMFormat(const sp &); virtual status_t convertToSinkFormatIfNeeded(const sp &, sp &, audio_format_t sinkFormat, bool isOffload); - virtual uint32_t getUseSetBuffersFlag(); + virtual uint32_t getFlags(); virtual bool canUseSetBuffers(const sp &Meta); virtual void printFileName(int fd); diff --git a/media/libavextensions/mediaplayerservice/AVNuUtils.cpp b/media/libavextensions/mediaplayerservice/AVNuUtils.cpp index c254a70..51c4a37 100644 --- a/media/libavextensions/mediaplayerservice/AVNuUtils.cpp +++ b/media/libavextensions/mediaplayerservice/AVNuUtils.cpp @@ -104,7 +104,7 @@ void AVNuUtils::checkFormatChange(bool * /*formatChange*/, const sp & /*accessUnit*/) { } -uint32_t AVNuUtils::getUseSetBuffersFlag() { +uint32_t AVNuUtils::getFlags() { return 0; } -- cgit v1.1 From a729f437f5f46efbd366721d7d4f398186ce77cd Mon Sep 17 00:00:00 2001 From: Shalaj Jain Date: Tue, 13 Oct 2015 17:56:23 -0700 Subject: nuplayer: Drop frames with DATACORRUPT flag Drop frames in NuplayerDecoder if the corresponding OMX_BUFFERFLAG_DATACORRUPT is set from OMX. Add a util function to easily switch off this feature. Do not declare MediaSource explicitly. Change-Id: I97bd238d52d660e1ab61eac222cdff28334cc5cc --- media/libavextensions/mediaplayerservice/AVNuExtensions.h | 1 + media/libavextensions/mediaplayerservice/AVNuUtils.cpp | 2 ++ media/libavextensions/stagefright/AVExtensions.h | 1 - 3 files changed, 3 insertions(+), 1 deletion(-) (limited to 'media/libavextensions') diff --git a/media/libavextensions/mediaplayerservice/AVNuExtensions.h b/media/libavextensions/mediaplayerservice/AVNuExtensions.h index 7aeb5c3..1d45c00 100644 --- a/media/libavextensions/mediaplayerservice/AVNuExtensions.h +++ b/media/libavextensions/mediaplayerservice/AVNuExtensions.h @@ -85,6 +85,7 @@ struct AVNuUtils { virtual void printFileName(int fd); virtual void checkFormatChange(bool *formatChange, const sp &accessUnit); + virtual bool dropCorruptFrame(); // ----- NO TRESSPASSING BEYOND THIS LINE ------ DECLARE_LOADABLE_SINGLETON(AVNuUtils); diff --git a/media/libavextensions/mediaplayerservice/AVNuUtils.cpp b/media/libavextensions/mediaplayerservice/AVNuUtils.cpp index 51c4a37..95f6454 100644 --- a/media/libavextensions/mediaplayerservice/AVNuUtils.cpp +++ b/media/libavextensions/mediaplayerservice/AVNuUtils.cpp @@ -112,6 +112,8 @@ bool AVNuUtils::canUseSetBuffers(const sp &/*Meta*/) { return false; } +bool AVNuUtils::dropCorruptFrame() { return false; } + // ----- NO TRESSPASSING BEYOND THIS LINE ------ AVNuUtils::AVNuUtils() {} diff --git a/media/libavextensions/stagefright/AVExtensions.h b/media/libavextensions/stagefright/AVExtensions.h index b45c051..891c7f8 100644 --- a/media/libavextensions/stagefright/AVExtensions.h +++ b/media/libavextensions/stagefright/AVExtensions.h @@ -47,7 +47,6 @@ struct ACodec; struct ALooper; struct IMediaHTTPConnection; struct MediaCodec; -struct MediaSource; struct MediaHTTP; struct NuCachedSource2; class CameraParameters; -- cgit v1.1