Loading media/codec2/vndk/util/C2InterfaceUtils.cpp +23 −9 Original line number Diff line number Diff line Loading @@ -216,9 +216,14 @@ C2SupportedFlags<T> C2SupportedFlags<T>::limitedTo(const C2SupportedFlags<T> &li if (limit.contains(minMask) && contains(minMask)) { values[0] = minMask; // keep only flags that are covered by limit std::remove_if(values.begin(), values.end(), [&limit, minMask](const C2Value::Primitive &v) -> bool { values.erase(std::remove_if(values.begin(), values.end(), [&limit, minMask]( const C2Value::Primitive &v) -> bool { T value = v.ref<ValueType>() | minMask; return value == minMask || !limit.contains(value); }); return value == minMask || !limit.contains(value); }), values.end()); // we also need to do it vice versa for (const C2Value::Primitive &v : _mValues) { T value = v.ref<ValueType>() | minMask; Loading Loading @@ -264,24 +269,33 @@ bool C2SupportedValueSet<T>::contains(T value) const { template<typename T> C2SupportedValueSet<T> C2SupportedValueSet<T>::limitedTo(const C2SupportedValueSet<T> &limit) const { std::vector<C2Value::Primitive> values = _mValues; // make a copy std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool { return !limit.contains(v.ref<ValueType>()); }); values.erase(std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool { return !limit.contains(v.ref<ValueType>()); }), values.end()); return C2SupportedValueSet(std::move(values)); } template<typename T> C2SupportedValueSet<T> C2SupportedValueSet<T>::limitedTo(const C2SupportedRange<T> &limit) const { std::vector<C2Value::Primitive> values = _mValues; // make a copy std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool { return !limit.contains(v.ref<ValueType>()); }); values.erase(std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool { return !limit.contains(v.ref<ValueType>()); }), values.end()); return C2SupportedValueSet(std::move(values)); } template<typename T> C2SupportedValueSet<T> C2SupportedValueSet<T>::limitedTo(const C2SupportedFlags<T> &limit) const { std::vector<C2Value::Primitive> values = _mValues; // make a copy std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool { return !limit.contains(v.ref<ValueType>()); }); values.erase(std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool { return !limit.contains(v.ref<ValueType>()); }), values.end()); return C2SupportedValueSet(std::move(values)); } Loading Loading
media/codec2/vndk/util/C2InterfaceUtils.cpp +23 −9 Original line number Diff line number Diff line Loading @@ -216,9 +216,14 @@ C2SupportedFlags<T> C2SupportedFlags<T>::limitedTo(const C2SupportedFlags<T> &li if (limit.contains(minMask) && contains(minMask)) { values[0] = minMask; // keep only flags that are covered by limit std::remove_if(values.begin(), values.end(), [&limit, minMask](const C2Value::Primitive &v) -> bool { values.erase(std::remove_if(values.begin(), values.end(), [&limit, minMask]( const C2Value::Primitive &v) -> bool { T value = v.ref<ValueType>() | minMask; return value == minMask || !limit.contains(value); }); return value == minMask || !limit.contains(value); }), values.end()); // we also need to do it vice versa for (const C2Value::Primitive &v : _mValues) { T value = v.ref<ValueType>() | minMask; Loading Loading @@ -264,24 +269,33 @@ bool C2SupportedValueSet<T>::contains(T value) const { template<typename T> C2SupportedValueSet<T> C2SupportedValueSet<T>::limitedTo(const C2SupportedValueSet<T> &limit) const { std::vector<C2Value::Primitive> values = _mValues; // make a copy std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool { return !limit.contains(v.ref<ValueType>()); }); values.erase(std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool { return !limit.contains(v.ref<ValueType>()); }), values.end()); return C2SupportedValueSet(std::move(values)); } template<typename T> C2SupportedValueSet<T> C2SupportedValueSet<T>::limitedTo(const C2SupportedRange<T> &limit) const { std::vector<C2Value::Primitive> values = _mValues; // make a copy std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool { return !limit.contains(v.ref<ValueType>()); }); values.erase(std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool { return !limit.contains(v.ref<ValueType>()); }), values.end()); return C2SupportedValueSet(std::move(values)); } template<typename T> C2SupportedValueSet<T> C2SupportedValueSet<T>::limitedTo(const C2SupportedFlags<T> &limit) const { std::vector<C2Value::Primitive> values = _mValues; // make a copy std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool { return !limit.contains(v.ref<ValueType>()); }); values.erase(std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool { return !limit.contains(v.ref<ValueType>()); }), values.end()); return C2SupportedValueSet(std::move(values)); } Loading