Darken edge when using image overlay with transparency exported through Transformer lib
Version
Media3 main branch
More version details
main & version 1.8.0
Devices that reproduce the issue
- Pixel6
- many other phones
Devices that do not reproduce the issue
No response
Reproducible in the demo app?
Not tested
Reproduction steps
Media3TransformerBlendingTest.zip Please try this project. It includes all the asset and setup for reproducing the issue.
Expected result
The alpha blending will work normally and the dark edge is not shown around the sticker overlay.
Actual result
As you see from the following video, there is a dark edge around the sticker. I believe this is due to the blending setup for GLES.
https://github.com/user-attachments/assets/c1b20083-558e-4e8f-863a-c4afc64a7095
If I load the image in straight alpha format using following snippet, then the edge seems correct.
val staticImage = context.assets.open("image1.png").use {
val bitmapOption = BitmapFactory.Options().apply {
inPremultiplied = false
}
BitmapFactory.decodeStream(it, null, bitmapOption)
}!!
From
to
BTW, I also tried to load the image as an MediaItem, and the result is the same. The blending is wrong.
Media
The video is streamed from internet. The url is in the project source code.
Bug Report
- [ ] You will email the zip file produced by
adb bugreportto [email protected] after filing this issue.
This is another set of result files using inPremultiplied = true and false.
Premultiplied (wrong)
Straight alpha (correct)
Thank you for the report. Yes, our built-in effects assume non-premultiplied (straight) alpha, and do not respect Bitmap.isPremultiplied.
I filed an internal bug ID 453994890 to follow-up with our team
Sorry for the delayed response!