-
Notifications
You must be signed in to change notification settings - Fork 3.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Respect setDownsampleEnabled config in DecodeProducer #2500
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@defHLT has imported this pull request. If you are a Facebook employee, you can view this diff on Phabricator.
@sunnylqm has updated the pull request. You must reimport the pull request before landing. |
It there any update about this? |
@sunnylqm has updated the pull request. You must reimport the pull request before landing. |
@sunnylqm has updated the pull request. You must reimport the pull request before landing. |
@sunnylqm has updated the pull request. You must reimport the pull request before landing. |
@sunnylqm has updated the pull request. You must reimport the pull request before landing. |
@sunnylqm has updated the pull request. You must reimport the pull request before landing. |
@defHLT @oprisnik would you mind kindly reviewing this PR? This is a long standing and critical issue in fresco that affects React Native's image quality on Android as seen here: https://snack.expo.dev/@joelpateljp/low-quality-image-android-example?platform=android I've updated the project to a new react native version and the issue still persists. https://snack.expo.dev/@joelpateljp/low-quality-image-android-example-2023?platform=android |
@sunnylqm has updated the pull request. You must reimport the pull request before landing. |
@sunnylqm has updated the pull request. You must reimport the pull request before landing. |
@sunnylqm has updated the pull request. You must reimport the pull request before landing. |
@sunnylqm has updated the pull request. You must reimport the pull request before landing. |
@sunnylqm has updated the pull request. You must reimport the pull request before landing. |
@sunnylqm has updated the pull request. You must reimport the pull request before landing. |
@sunnylqm has updated the pull request. You must reimport the pull request before landing. |
@sunnylqm has updated the pull request. You must reimport the pull request before landing. |
gentle ping @cortinico @javache @mdvacca @yungsters @passy @oprisnik @defHLT |
@sunnylqm has updated the pull request. You must reimport the pull request before landing. |
@sunnylqm has updated the pull request. You must reimport the pull request before landing. |
1 similar comment
@sunnylqm has updated the pull request. You must reimport the pull request before landing. |
if there are confidential concerns, i don't know what else to do except update the pr😂 |
FYI: Updating the PR is not helpful. @defHLT should drive this forward as I mentioned already |
Thanks for the update @cortinico. This is now news to me (and others) and the first time we have heard about something like this blocking this PR from being merged, I would say someone from the Fresco team could have sent a message on this earlier but we had to unfortunately keep pinging since this is a serious bug / issue (that is happening in prod) that needs to be merged into Fresco for a new release. I hope it would be possible for @defHLT to provide a clearer update on this concern (if possible) and to get this PR finally merged in as this has been in limbo for over 6 years. |
Apologies for asking, but has there been any progress internally about merging in this issue yet? If the team at Facebook need a reproducible example of this issue please look at the issue below. |
The primary concern with this change is the likelihood of unintended downstream impact it may have on other use cases — not employing React Native. However, this is supposedly how Fresco has always worked since 2017: 8d83ed2 A couple potential ideas for next steps:
|
Even if it Do we have an option to disable downsampling regardless how smart it is? The And I don't think the downsampling performance matters here. We all know it's a tradeoff. The key point of a tradeoff is not about the price/performance, it's all about choice. Even if you can achieve 99.9% performance, I still have the right to choose a lossless way right? |
@sunnylqm – I understand your frustration, and I generally agree with what you're saying. (Also, I really appreciate the folks who have been pinging this and ensuring it gets the attention that it deserves.) When I previously mentioned the following:
I was referring to other use cases internally at Meta. Like React Native, Fresco is also used in production apps (and at the scale that these apps operate at, almost anything that can go wrong often does to some degree). Rest assured, I will continue to follow up on this internally. |
I just wanted to follow up here so everyone knows that this is still on my mind. I've proposed a couple alternatives to the team, and I will report back with any updates. |
Thanks again for the patience. I've shared a proposal with other engineers at Meta that everyone is happy to support, and I believe it will fulfill the requirements here. Instead of changing the existing behavior of We can introduce a new method,
We can then deprecate
Does this make sense and solve the problems that this PR is trying to solve? And if so, would this proposal be something that you would be willing to help implement? |
thank you for your proposal and it sounds perfect. will try to implement in a few days |
@yungsters Sounds good, so if this is implemented by @sunnylqm does this mean it would be merged in quicker? Would this also get resolved for React Native as well as fresco is depended on for image loading? |
Yes, reviewing the new proposal will be faster. And yes, any consumers (including React Native) will benefit from the changes. |
@yungsters please review #2760 |
Fixes #2397
Motivation (required)
Currently
setDownsampleEnabled
is not properly applied if set to false.Test Plan (required)
My understanding is that
setDownsampleEnabled(false)
should disable this feature no matter what other conditions are, whilesetDownsampleEnabled(true)
may enable it or leave it to other conditions.