Loading media/codec2/sfplugin/CCodecBufferChannel.h +9 −9 Original line number Original line Diff line number Diff line Loading @@ -62,8 +62,8 @@ public: void setCrypto(const sp<ICrypto> &crypto) override; void setCrypto(const sp<ICrypto> &crypto) override; void setDescrambler(const sp<IDescrambler> &descrambler) override; void setDescrambler(const sp<IDescrambler> &descrambler) override; virtual status_t queueInputBuffer(const sp<MediaCodecBuffer> &buffer) override; status_t queueInputBuffer(const sp<MediaCodecBuffer> &buffer) override; virtual status_t queueSecureInputBuffer( status_t queueSecureInputBuffer( const sp<MediaCodecBuffer> &buffer, const sp<MediaCodecBuffer> &buffer, bool secure, bool secure, const uint8_t *key, const uint8_t *key, Loading @@ -73,10 +73,10 @@ public: const CryptoPlugin::SubSample *subSamples, const CryptoPlugin::SubSample *subSamples, size_t numSubSamples, size_t numSubSamples, AString *errorDetailMsg) override; AString *errorDetailMsg) override; virtual status_t attachBuffer( status_t attachBuffer( const std::shared_ptr<C2Buffer> &c2Buffer, const std::shared_ptr<C2Buffer> &c2Buffer, const sp<MediaCodecBuffer> &buffer) override; const sp<MediaCodecBuffer> &buffer) override; virtual status_t attachEncryptedBuffer( status_t attachEncryptedBuffer( const sp<hardware::HidlMemory> &memory, const sp<hardware::HidlMemory> &memory, bool secure, bool secure, const uint8_t *key, const uint8_t *key, Loading @@ -88,12 +88,12 @@ public: size_t numSubSamples, size_t numSubSamples, const sp<MediaCodecBuffer> &buffer, const sp<MediaCodecBuffer> &buffer, AString* errorDetailMsg) override; AString* errorDetailMsg) override; virtual status_t renderOutputBuffer( status_t renderOutputBuffer( const sp<MediaCodecBuffer> &buffer, int64_t timestampNs) override; const sp<MediaCodecBuffer> &buffer, int64_t timestampNs) override; virtual void pollForRenderedBuffers() override; void pollForRenderedBuffers() override; virtual status_t discardBuffer(const sp<MediaCodecBuffer> &buffer) override; status_t discardBuffer(const sp<MediaCodecBuffer> &buffer) override; virtual void getInputBufferArray(Vector<sp<MediaCodecBuffer>> *array) override; void getInputBufferArray(Vector<sp<MediaCodecBuffer>> *array) override; virtual void getOutputBufferArray(Vector<sp<MediaCodecBuffer>> *array) override; void getOutputBufferArray(Vector<sp<MediaCodecBuffer>> *array) override; // Methods below are interface for CCodec to use. // Methods below are interface for CCodec to use. Loading media/libstagefright/Android.bp +2 −2 Original line number Original line Diff line number Diff line Loading @@ -270,9 +270,9 @@ cc_library { "SurfaceUtils.cpp", "SurfaceUtils.cpp", "ThrottledSource.cpp", "ThrottledSource.cpp", "Utils.cpp", "Utils.cpp", "VideoRenderQualityTracker.cpp", "VideoFrameSchedulerBase.cpp", "VideoFrameSchedulerBase.cpp", "VideoFrameScheduler.cpp", "VideoFrameScheduler.cpp", "VideoRenderQualityTracker.cpp", ], ], shared_libs: [ shared_libs: [ Loading media/libstagefright/MediaCodec.cpp +2 −2 Original line number Original line Diff line number Diff line Loading @@ -243,7 +243,7 @@ static const char *kCodecJudderScoreHistogramBuckets = "android.media.mediacodec.judder-score-histogram-buckets"; "android.media.mediacodec.judder-score-histogram-buckets"; // Freeze event // Freeze event static const char *kCodecFreezeEventCount = "android.media.mediacodec.freeze-event-count"; static const char *kCodecFreezeEventCount = "android.media.mediacodec.freeze-event-count"; static const char *kFreezeEventKeyName = "freeze"; static const char *kFreezeEventKeyName = "videofreeze"; static const char *kFreezeEventInitialTimeUs = "android.media.mediacodec.freeze.initial-time-us"; static const char *kFreezeEventInitialTimeUs = "android.media.mediacodec.freeze.initial-time-us"; static const char *kFreezeEventDurationMs = "android.media.mediacodec.freeze.duration-ms"; static const char *kFreezeEventDurationMs = "android.media.mediacodec.freeze.duration-ms"; static const char *kFreezeEventCount = "android.media.mediacodec.freeze.count"; static const char *kFreezeEventCount = "android.media.mediacodec.freeze.count"; Loading @@ -255,7 +255,7 @@ static const char *kFreezeEventDetailsDistanceMs = "android.media.mediacodec.freeze.details-distance-ms"; "android.media.mediacodec.freeze.details-distance-ms"; // Judder event // Judder event static const char *kCodecJudderEventCount = "android.media.mediacodec.judder-event-count"; static const char *kCodecJudderEventCount = "android.media.mediacodec.judder-event-count"; static const char *kJudderEventKeyName = "judder"; static const char *kJudderEventKeyName = "videojudder"; static const char *kJudderEventInitialTimeUs = "android.media.mediacodec.judder.initial-time-us"; static const char *kJudderEventInitialTimeUs = "android.media.mediacodec.judder.initial-time-us"; static const char *kJudderEventDurationMs = "android.media.mediacodec.judder.duration-ms"; static const char *kJudderEventDurationMs = "android.media.mediacodec.judder.duration-ms"; static const char *kJudderEventCount = "android.media.mediacodec.judder.count"; static const char *kJudderEventCount = "android.media.mediacodec.judder.count"; Loading media/libstagefright/include/ACodecBufferChannel.h +9 −9 Original line number Original line Diff line number Diff line Loading @@ -72,8 +72,8 @@ public: void setCrypto(const sp<ICrypto> &crypto) override; void setCrypto(const sp<ICrypto> &crypto) override; void setDescrambler(const sp<IDescrambler> &descrambler) override; void setDescrambler(const sp<IDescrambler> &descrambler) override; virtual status_t queueInputBuffer(const sp<MediaCodecBuffer> &buffer) override; status_t queueInputBuffer(const sp<MediaCodecBuffer> &buffer) override; virtual status_t queueSecureInputBuffer( status_t queueSecureInputBuffer( const sp<MediaCodecBuffer> &buffer, const sp<MediaCodecBuffer> &buffer, bool secure, bool secure, const uint8_t *key, const uint8_t *key, Loading @@ -83,10 +83,10 @@ public: const CryptoPlugin::SubSample *subSamples, const CryptoPlugin::SubSample *subSamples, size_t numSubSamples, size_t numSubSamples, AString *errorDetailMsg) override; AString *errorDetailMsg) override; virtual status_t attachBuffer( status_t attachBuffer( const std::shared_ptr<C2Buffer> &c2Buffer, const std::shared_ptr<C2Buffer> &c2Buffer, const sp<MediaCodecBuffer> &buffer) override; const sp<MediaCodecBuffer> &buffer) override; virtual status_t attachEncryptedBuffer( status_t attachEncryptedBuffer( const sp<hardware::HidlMemory> &memory, const sp<hardware::HidlMemory> &memory, bool secure, bool secure, const uint8_t *key, const uint8_t *key, Loading @@ -98,12 +98,12 @@ public: size_t numSubSamples, size_t numSubSamples, const sp<MediaCodecBuffer> &buffer, const sp<MediaCodecBuffer> &buffer, AString* errorDetailMsg) override; AString* errorDetailMsg) override; virtual status_t renderOutputBuffer( status_t renderOutputBuffer( const sp<MediaCodecBuffer> &buffer, int64_t timestampNs) override; const sp<MediaCodecBuffer> &buffer, int64_t timestampNs) override; virtual void pollForRenderedBuffers() override; void pollForRenderedBuffers() override; virtual status_t discardBuffer(const sp<MediaCodecBuffer> &buffer) override; status_t discardBuffer(const sp<MediaCodecBuffer> &buffer) override; virtual void getInputBufferArray(Vector<sp<MediaCodecBuffer>> *array) override; void getInputBufferArray(Vector<sp<MediaCodecBuffer>> *array) override; virtual void getOutputBufferArray(Vector<sp<MediaCodecBuffer>> *array) override; void getOutputBufferArray(Vector<sp<MediaCodecBuffer>> *array) override; // Methods below are interface for ACodec to use. // Methods below are interface for ACodec to use. Loading media/libstagefright/include/media/stagefright/MediaHistogram.h +21 −23 Original line number Original line Diff line number Diff line Loading @@ -29,11 +29,11 @@ class MediaHistogram { public: public: MediaHistogram(); MediaHistogram(); void clear(); void clear(); bool setup(int bucketCount, T width, T floor = 0); bool setup(size_t bucketCount, T width, T floor = 0); bool setup(const std::vector<T> &bucketLimits); bool setup(const std::vector<T> &bucketLimits); void insert(T sample); void insert(T sample); size_t size(); size_t size() const; int64_t operator[](int); int64_t operator[](int) const; T getMin() const { return mMin; } T getMin() const { return mMin; } T getMax() const { return mMax; } T getMax() const { return mMax; } T getCount() const { return mCount; } T getCount() const { return mCount; } Loading @@ -45,7 +45,7 @@ public: private: private: MediaHistogram(const MediaHistogram &); // disallow MediaHistogram(const MediaHistogram &); // disallow bool allocate(int bucketCount, bool withBucketLimits); void allocate(size_t bucketCount, bool withBucketLimits); T mFloor, mCeiling, mWidth; T mFloor, mCeiling, mWidth; T mMin, mMax, mSum; T mMin, mMax, mSum; Loading Loading @@ -73,13 +73,12 @@ void MediaHistogram<T>::clear() { } } template<typename T> template<typename T> bool MediaHistogram<T>::setup(int bucketCount, T width, T floor) { bool MediaHistogram<T>::setup(size_t bucketCount, T width, T floor) { if (bucketCount <= 0 || width <= 0) { if (bucketCount <= 0 || width <= 0) { return false; return false; } } if (!allocate(bucketCount, false)) { allocate(bucketCount, false); return false; } mWidth = width; mWidth = width; mFloor = floor; mFloor = floor; mCeiling = floor + bucketCount * width; mCeiling = floor + bucketCount * width; Loading @@ -92,14 +91,14 @@ bool MediaHistogram<T>::setup(const std::vector<T> &bucketLimits) { if (bucketLimits.size() <= 1) { if (bucketLimits.size() <= 1) { return false; return false; } } int bucketCount = bucketLimits.size() - 1; // The floor is the first bucket limit value, so offset by 1 if (!allocate(bucketCount, true)) { size_t bucketCount = bucketLimits.size() - 1; return false; allocate(bucketCount, true); } mWidth = -1; mWidth = -1; mFloor = bucketLimits[0]; mFloor = bucketLimits[0]; for (int i = 0; i < bucketCount; ++i) { for (size_t i = 0; i < bucketCount; ++i) { // The floor is the first bucket, so offset by 1 mBucketLimits[i] = bucketLimits[i + 1]; mBucketLimits[i] = bucketLimits[i + 1]; } } mCeiling = bucketLimits[bucketCount]; mCeiling = bucketLimits[bucketCount]; Loading @@ -108,7 +107,7 @@ bool MediaHistogram<T>::setup(const std::vector<T> &bucketLimits) { } } template<typename T> template<typename T> bool MediaHistogram<T>::allocate(int bucketCount, bool withBucketLimits) { void MediaHistogram<T>::allocate(size_t bucketCount, bool withBucketLimits) { assert(bucketCount > 0); assert(bucketCount > 0); if (bucketCount != mBuckets.size()) { if (bucketCount != mBuckets.size()) { mBuckets = std::vector<T>(bucketCount, 0); mBuckets = std::vector<T>(bucketCount, 0); Loading @@ -116,7 +115,6 @@ bool MediaHistogram<T>::allocate(int bucketCount, bool withBucketLimits) { if (withBucketLimits && mBucketLimits.size() != bucketCount) { if (withBucketLimits && mBucketLimits.size() != bucketCount) { mBucketLimits = std::vector<T>(bucketCount, 0); mBucketLimits = std::vector<T>(bucketCount, 0); } } return true; } } template<typename T> template<typename T> Loading @@ -128,8 +126,8 @@ void MediaHistogram<T>::insert(T sample) { mCount++; mCount++; mSum += sample; mSum += sample; if (mMin > sample) mMin = sample; mMin = std::min(mMin, sample); if (mMax < sample) mMax = sample; mMax = std::max(mMax, sample); if (sample < mFloor) { if (sample < mFloor) { mBelow++; mBelow++; Loading @@ -138,7 +136,7 @@ void MediaHistogram<T>::insert(T sample) { } else if (mWidth == -1) { } else if (mWidth == -1) { // A binary search might be more efficient for large number of buckets, but it is expected // A binary search might be more efficient for large number of buckets, but it is expected // that there will never be a large amount of buckets, so keep the code simple. // that there will never be a large amount of buckets, so keep the code simple. for (int slot = 0; slot < mBucketLimits.size(); ++slot) { for (size_t slot = 0; slot < mBucketLimits.size(); ++slot) { if (sample < mBucketLimits[slot]) { if (sample < mBucketLimits[slot]) { mBuckets[slot]++; mBuckets[slot]++; break; break; Loading @@ -153,12 +151,12 @@ void MediaHistogram<T>::insert(T sample) { } } template<typename T> template<typename T> size_t MediaHistogram<T>::size() { size_t MediaHistogram<T>::size() const { return mBuckets.size() + 1; return mBuckets.size() + 1; } } template<typename T> template<typename T> int64_t MediaHistogram<T>::operator[](int i) { int64_t MediaHistogram<T>::operator[](int i) const { assert(i >= 0); assert(i >= 0); assert(i <= mBuckets.size()); assert(i <= mBuckets.size()); if (i == mBuckets.size()) { if (i == mBuckets.size()) { Loading @@ -179,7 +177,7 @@ std::string MediaHistogram<T>::emit() const { } else { } else { ss << mFloor << "," << mWidth << "," << mBelow << "{"; ss << mFloor << "," << mWidth << "," << mBelow << "{"; } } for (int i = 0; i < mBuckets.size(); i++) { for (size_t i = 0; i < mBuckets.size(); i++) { if (i != 0) { if (i != 0) { ss << ","; ss << ","; } } Loading @@ -194,12 +192,12 @@ std::string MediaHistogram<T>::emitBuckets() const { std::stringstream ss(""); std::stringstream ss(""); if (mWidth == -1) { if (mWidth == -1) { ss << mFloor; ss << mFloor; for (int i = 0; i < mBucketLimits.size(); ++i) { for (size_t i = 0; i < mBucketLimits.size(); ++i) { ss << ',' << mBucketLimits[i]; ss << ',' << mBucketLimits[i]; } } } else { } else { ss << mFloor; ss << mFloor; for (int i = 1; i <= mBuckets.size(); ++i) { for (size_t i = 1; i <= mBuckets.size(); ++i) { ss << ',' << (mFloor + i * mWidth); ss << ',' << (mFloor + i * mWidth); } } } } Loading Loading
media/codec2/sfplugin/CCodecBufferChannel.h +9 −9 Original line number Original line Diff line number Diff line Loading @@ -62,8 +62,8 @@ public: void setCrypto(const sp<ICrypto> &crypto) override; void setCrypto(const sp<ICrypto> &crypto) override; void setDescrambler(const sp<IDescrambler> &descrambler) override; void setDescrambler(const sp<IDescrambler> &descrambler) override; virtual status_t queueInputBuffer(const sp<MediaCodecBuffer> &buffer) override; status_t queueInputBuffer(const sp<MediaCodecBuffer> &buffer) override; virtual status_t queueSecureInputBuffer( status_t queueSecureInputBuffer( const sp<MediaCodecBuffer> &buffer, const sp<MediaCodecBuffer> &buffer, bool secure, bool secure, const uint8_t *key, const uint8_t *key, Loading @@ -73,10 +73,10 @@ public: const CryptoPlugin::SubSample *subSamples, const CryptoPlugin::SubSample *subSamples, size_t numSubSamples, size_t numSubSamples, AString *errorDetailMsg) override; AString *errorDetailMsg) override; virtual status_t attachBuffer( status_t attachBuffer( const std::shared_ptr<C2Buffer> &c2Buffer, const std::shared_ptr<C2Buffer> &c2Buffer, const sp<MediaCodecBuffer> &buffer) override; const sp<MediaCodecBuffer> &buffer) override; virtual status_t attachEncryptedBuffer( status_t attachEncryptedBuffer( const sp<hardware::HidlMemory> &memory, const sp<hardware::HidlMemory> &memory, bool secure, bool secure, const uint8_t *key, const uint8_t *key, Loading @@ -88,12 +88,12 @@ public: size_t numSubSamples, size_t numSubSamples, const sp<MediaCodecBuffer> &buffer, const sp<MediaCodecBuffer> &buffer, AString* errorDetailMsg) override; AString* errorDetailMsg) override; virtual status_t renderOutputBuffer( status_t renderOutputBuffer( const sp<MediaCodecBuffer> &buffer, int64_t timestampNs) override; const sp<MediaCodecBuffer> &buffer, int64_t timestampNs) override; virtual void pollForRenderedBuffers() override; void pollForRenderedBuffers() override; virtual status_t discardBuffer(const sp<MediaCodecBuffer> &buffer) override; status_t discardBuffer(const sp<MediaCodecBuffer> &buffer) override; virtual void getInputBufferArray(Vector<sp<MediaCodecBuffer>> *array) override; void getInputBufferArray(Vector<sp<MediaCodecBuffer>> *array) override; virtual void getOutputBufferArray(Vector<sp<MediaCodecBuffer>> *array) override; void getOutputBufferArray(Vector<sp<MediaCodecBuffer>> *array) override; // Methods below are interface for CCodec to use. // Methods below are interface for CCodec to use. Loading
media/libstagefright/Android.bp +2 −2 Original line number Original line Diff line number Diff line Loading @@ -270,9 +270,9 @@ cc_library { "SurfaceUtils.cpp", "SurfaceUtils.cpp", "ThrottledSource.cpp", "ThrottledSource.cpp", "Utils.cpp", "Utils.cpp", "VideoRenderQualityTracker.cpp", "VideoFrameSchedulerBase.cpp", "VideoFrameSchedulerBase.cpp", "VideoFrameScheduler.cpp", "VideoFrameScheduler.cpp", "VideoRenderQualityTracker.cpp", ], ], shared_libs: [ shared_libs: [ Loading
media/libstagefright/MediaCodec.cpp +2 −2 Original line number Original line Diff line number Diff line Loading @@ -243,7 +243,7 @@ static const char *kCodecJudderScoreHistogramBuckets = "android.media.mediacodec.judder-score-histogram-buckets"; "android.media.mediacodec.judder-score-histogram-buckets"; // Freeze event // Freeze event static const char *kCodecFreezeEventCount = "android.media.mediacodec.freeze-event-count"; static const char *kCodecFreezeEventCount = "android.media.mediacodec.freeze-event-count"; static const char *kFreezeEventKeyName = "freeze"; static const char *kFreezeEventKeyName = "videofreeze"; static const char *kFreezeEventInitialTimeUs = "android.media.mediacodec.freeze.initial-time-us"; static const char *kFreezeEventInitialTimeUs = "android.media.mediacodec.freeze.initial-time-us"; static const char *kFreezeEventDurationMs = "android.media.mediacodec.freeze.duration-ms"; static const char *kFreezeEventDurationMs = "android.media.mediacodec.freeze.duration-ms"; static const char *kFreezeEventCount = "android.media.mediacodec.freeze.count"; static const char *kFreezeEventCount = "android.media.mediacodec.freeze.count"; Loading @@ -255,7 +255,7 @@ static const char *kFreezeEventDetailsDistanceMs = "android.media.mediacodec.freeze.details-distance-ms"; "android.media.mediacodec.freeze.details-distance-ms"; // Judder event // Judder event static const char *kCodecJudderEventCount = "android.media.mediacodec.judder-event-count"; static const char *kCodecJudderEventCount = "android.media.mediacodec.judder-event-count"; static const char *kJudderEventKeyName = "judder"; static const char *kJudderEventKeyName = "videojudder"; static const char *kJudderEventInitialTimeUs = "android.media.mediacodec.judder.initial-time-us"; static const char *kJudderEventInitialTimeUs = "android.media.mediacodec.judder.initial-time-us"; static const char *kJudderEventDurationMs = "android.media.mediacodec.judder.duration-ms"; static const char *kJudderEventDurationMs = "android.media.mediacodec.judder.duration-ms"; static const char *kJudderEventCount = "android.media.mediacodec.judder.count"; static const char *kJudderEventCount = "android.media.mediacodec.judder.count"; Loading
media/libstagefright/include/ACodecBufferChannel.h +9 −9 Original line number Original line Diff line number Diff line Loading @@ -72,8 +72,8 @@ public: void setCrypto(const sp<ICrypto> &crypto) override; void setCrypto(const sp<ICrypto> &crypto) override; void setDescrambler(const sp<IDescrambler> &descrambler) override; void setDescrambler(const sp<IDescrambler> &descrambler) override; virtual status_t queueInputBuffer(const sp<MediaCodecBuffer> &buffer) override; status_t queueInputBuffer(const sp<MediaCodecBuffer> &buffer) override; virtual status_t queueSecureInputBuffer( status_t queueSecureInputBuffer( const sp<MediaCodecBuffer> &buffer, const sp<MediaCodecBuffer> &buffer, bool secure, bool secure, const uint8_t *key, const uint8_t *key, Loading @@ -83,10 +83,10 @@ public: const CryptoPlugin::SubSample *subSamples, const CryptoPlugin::SubSample *subSamples, size_t numSubSamples, size_t numSubSamples, AString *errorDetailMsg) override; AString *errorDetailMsg) override; virtual status_t attachBuffer( status_t attachBuffer( const std::shared_ptr<C2Buffer> &c2Buffer, const std::shared_ptr<C2Buffer> &c2Buffer, const sp<MediaCodecBuffer> &buffer) override; const sp<MediaCodecBuffer> &buffer) override; virtual status_t attachEncryptedBuffer( status_t attachEncryptedBuffer( const sp<hardware::HidlMemory> &memory, const sp<hardware::HidlMemory> &memory, bool secure, bool secure, const uint8_t *key, const uint8_t *key, Loading @@ -98,12 +98,12 @@ public: size_t numSubSamples, size_t numSubSamples, const sp<MediaCodecBuffer> &buffer, const sp<MediaCodecBuffer> &buffer, AString* errorDetailMsg) override; AString* errorDetailMsg) override; virtual status_t renderOutputBuffer( status_t renderOutputBuffer( const sp<MediaCodecBuffer> &buffer, int64_t timestampNs) override; const sp<MediaCodecBuffer> &buffer, int64_t timestampNs) override; virtual void pollForRenderedBuffers() override; void pollForRenderedBuffers() override; virtual status_t discardBuffer(const sp<MediaCodecBuffer> &buffer) override; status_t discardBuffer(const sp<MediaCodecBuffer> &buffer) override; virtual void getInputBufferArray(Vector<sp<MediaCodecBuffer>> *array) override; void getInputBufferArray(Vector<sp<MediaCodecBuffer>> *array) override; virtual void getOutputBufferArray(Vector<sp<MediaCodecBuffer>> *array) override; void getOutputBufferArray(Vector<sp<MediaCodecBuffer>> *array) override; // Methods below are interface for ACodec to use. // Methods below are interface for ACodec to use. Loading
media/libstagefright/include/media/stagefright/MediaHistogram.h +21 −23 Original line number Original line Diff line number Diff line Loading @@ -29,11 +29,11 @@ class MediaHistogram { public: public: MediaHistogram(); MediaHistogram(); void clear(); void clear(); bool setup(int bucketCount, T width, T floor = 0); bool setup(size_t bucketCount, T width, T floor = 0); bool setup(const std::vector<T> &bucketLimits); bool setup(const std::vector<T> &bucketLimits); void insert(T sample); void insert(T sample); size_t size(); size_t size() const; int64_t operator[](int); int64_t operator[](int) const; T getMin() const { return mMin; } T getMin() const { return mMin; } T getMax() const { return mMax; } T getMax() const { return mMax; } T getCount() const { return mCount; } T getCount() const { return mCount; } Loading @@ -45,7 +45,7 @@ public: private: private: MediaHistogram(const MediaHistogram &); // disallow MediaHistogram(const MediaHistogram &); // disallow bool allocate(int bucketCount, bool withBucketLimits); void allocate(size_t bucketCount, bool withBucketLimits); T mFloor, mCeiling, mWidth; T mFloor, mCeiling, mWidth; T mMin, mMax, mSum; T mMin, mMax, mSum; Loading Loading @@ -73,13 +73,12 @@ void MediaHistogram<T>::clear() { } } template<typename T> template<typename T> bool MediaHistogram<T>::setup(int bucketCount, T width, T floor) { bool MediaHistogram<T>::setup(size_t bucketCount, T width, T floor) { if (bucketCount <= 0 || width <= 0) { if (bucketCount <= 0 || width <= 0) { return false; return false; } } if (!allocate(bucketCount, false)) { allocate(bucketCount, false); return false; } mWidth = width; mWidth = width; mFloor = floor; mFloor = floor; mCeiling = floor + bucketCount * width; mCeiling = floor + bucketCount * width; Loading @@ -92,14 +91,14 @@ bool MediaHistogram<T>::setup(const std::vector<T> &bucketLimits) { if (bucketLimits.size() <= 1) { if (bucketLimits.size() <= 1) { return false; return false; } } int bucketCount = bucketLimits.size() - 1; // The floor is the first bucket limit value, so offset by 1 if (!allocate(bucketCount, true)) { size_t bucketCount = bucketLimits.size() - 1; return false; allocate(bucketCount, true); } mWidth = -1; mWidth = -1; mFloor = bucketLimits[0]; mFloor = bucketLimits[0]; for (int i = 0; i < bucketCount; ++i) { for (size_t i = 0; i < bucketCount; ++i) { // The floor is the first bucket, so offset by 1 mBucketLimits[i] = bucketLimits[i + 1]; mBucketLimits[i] = bucketLimits[i + 1]; } } mCeiling = bucketLimits[bucketCount]; mCeiling = bucketLimits[bucketCount]; Loading @@ -108,7 +107,7 @@ bool MediaHistogram<T>::setup(const std::vector<T> &bucketLimits) { } } template<typename T> template<typename T> bool MediaHistogram<T>::allocate(int bucketCount, bool withBucketLimits) { void MediaHistogram<T>::allocate(size_t bucketCount, bool withBucketLimits) { assert(bucketCount > 0); assert(bucketCount > 0); if (bucketCount != mBuckets.size()) { if (bucketCount != mBuckets.size()) { mBuckets = std::vector<T>(bucketCount, 0); mBuckets = std::vector<T>(bucketCount, 0); Loading @@ -116,7 +115,6 @@ bool MediaHistogram<T>::allocate(int bucketCount, bool withBucketLimits) { if (withBucketLimits && mBucketLimits.size() != bucketCount) { if (withBucketLimits && mBucketLimits.size() != bucketCount) { mBucketLimits = std::vector<T>(bucketCount, 0); mBucketLimits = std::vector<T>(bucketCount, 0); } } return true; } } template<typename T> template<typename T> Loading @@ -128,8 +126,8 @@ void MediaHistogram<T>::insert(T sample) { mCount++; mCount++; mSum += sample; mSum += sample; if (mMin > sample) mMin = sample; mMin = std::min(mMin, sample); if (mMax < sample) mMax = sample; mMax = std::max(mMax, sample); if (sample < mFloor) { if (sample < mFloor) { mBelow++; mBelow++; Loading @@ -138,7 +136,7 @@ void MediaHistogram<T>::insert(T sample) { } else if (mWidth == -1) { } else if (mWidth == -1) { // A binary search might be more efficient for large number of buckets, but it is expected // A binary search might be more efficient for large number of buckets, but it is expected // that there will never be a large amount of buckets, so keep the code simple. // that there will never be a large amount of buckets, so keep the code simple. for (int slot = 0; slot < mBucketLimits.size(); ++slot) { for (size_t slot = 0; slot < mBucketLimits.size(); ++slot) { if (sample < mBucketLimits[slot]) { if (sample < mBucketLimits[slot]) { mBuckets[slot]++; mBuckets[slot]++; break; break; Loading @@ -153,12 +151,12 @@ void MediaHistogram<T>::insert(T sample) { } } template<typename T> template<typename T> size_t MediaHistogram<T>::size() { size_t MediaHistogram<T>::size() const { return mBuckets.size() + 1; return mBuckets.size() + 1; } } template<typename T> template<typename T> int64_t MediaHistogram<T>::operator[](int i) { int64_t MediaHistogram<T>::operator[](int i) const { assert(i >= 0); assert(i >= 0); assert(i <= mBuckets.size()); assert(i <= mBuckets.size()); if (i == mBuckets.size()) { if (i == mBuckets.size()) { Loading @@ -179,7 +177,7 @@ std::string MediaHistogram<T>::emit() const { } else { } else { ss << mFloor << "," << mWidth << "," << mBelow << "{"; ss << mFloor << "," << mWidth << "," << mBelow << "{"; } } for (int i = 0; i < mBuckets.size(); i++) { for (size_t i = 0; i < mBuckets.size(); i++) { if (i != 0) { if (i != 0) { ss << ","; ss << ","; } } Loading @@ -194,12 +192,12 @@ std::string MediaHistogram<T>::emitBuckets() const { std::stringstream ss(""); std::stringstream ss(""); if (mWidth == -1) { if (mWidth == -1) { ss << mFloor; ss << mFloor; for (int i = 0; i < mBucketLimits.size(); ++i) { for (size_t i = 0; i < mBucketLimits.size(); ++i) { ss << ',' << mBucketLimits[i]; ss << ',' << mBucketLimits[i]; } } } else { } else { ss << mFloor; ss << mFloor; for (int i = 1; i <= mBuckets.size(); ++i) { for (size_t i = 1; i <= mBuckets.size(); ++i) { ss << ',' << (mFloor + i * mWidth); ss << ',' << (mFloor + i * mWidth); } } } } Loading