diff options
Diffstat (limited to 'media/codec2/components/gav1/C2SoftGav1Dec.cpp')
-rw-r--r-- | media/codec2/components/gav1/C2SoftGav1Dec.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/media/codec2/components/gav1/C2SoftGav1Dec.cpp b/media/codec2/components/gav1/C2SoftGav1Dec.cpp index 7bd33581d9..386e097612 100644 --- a/media/codec2/components/gav1/C2SoftGav1Dec.cpp +++ b/media/codec2/components/gav1/C2SoftGav1Dec.cpp @@ -36,6 +36,8 @@ constexpr uint8_t NEUTRAL_UV_VALUE = 128; // codecname set and passed in as a compile flag from Android.bp constexpr char COMPONENT_NAME[] = CODECNAME; +constexpr size_t kMinInputBufferSize = 2 * 1024 * 1024; + class C2SoftGav1Dec::IntfImpl : public SimpleInterface<void>::BaseParams { public: explicit IntfImpl(const std::shared_ptr<C2ReflectorHelper> &helper) @@ -114,8 +116,7 @@ class C2SoftGav1Dec::IntfImpl : public SimpleInterface<void>::BaseParams { .build()); addParameter(DefineParam(mMaxInputSize, C2_PARAMKEY_INPUT_MAX_BUFFER_SIZE) - .withDefault(new C2StreamMaxBufferSizeInfo::input( - 0u, 320 * 240 * 3 / 4)) + .withDefault(new C2StreamMaxBufferSizeInfo::input(0u, kMinInputBufferSize)) .withFields({ C2F(mMaxInputSize, value).any(), }) @@ -231,9 +232,9 @@ class C2SoftGav1Dec::IntfImpl : public SimpleInterface<void>::BaseParams { bool mayBlock, C2P<C2StreamMaxBufferSizeInfo::input> &me, const C2P<C2StreamMaxPictureSizeTuning::output> &maxSize) { (void)mayBlock; - // assume compression ratio of 2 - me.set().value = - (((maxSize.v.width + 63) / 64) * ((maxSize.v.height + 63) / 64) * 3072); + // assume compression ratio of 2, but enforce a floor + me.set().value = c2_max((((maxSize.v.width + 63) / 64) + * ((maxSize.v.height + 63) / 64) * 3072), kMinInputBufferSize); return C2R::Ok(); } |