Please find in the attached zip file a binary patch (.bsdiff) and a objdump patch (.diff) to show the differences in the ARM32 disassembly, in case the binary patch ever fails and a new one must be derived. Changes:
1. In _ZN7android29ExynosCameraMetadataConverter49m_createScalerAvailableStreamConfigurationsOutputEPKNS_26ExynosCameraSensorInfoBaseEPNS_6VectorIiEE@@Base, we do NOT take two branches based on the presumably zero contents of offsets #24 and #28.
2. In _ZN7android29ExynosCameraMetadataConverter40m_createScalerAvailableMinFrameDurationsEPKNS_26ExynosCameraSensorInfoBaseEPNS_6VectorIxEE@@Base, we similarly do NOT take the branch based on the presumably zero contents of offset #24.
To test, in TWRP I took the original libexynoscamera3.so from my phone from /vendor/lib. I applied the binary patch. I copied back the patched file. I rebooted.
You should immediately notice the difference! In OpenCamera, now the front camera is overexposed. Colours are good, but a bit too bright. I also tried zgcam, now the front camera works, also overexposed. I also tried idan's gcam 5.1 for RAW front cameras, that also works, but only on first execute. The next time you run it it crashes, and keeps crashing. So I cannot recommend that gcam 5.1 over the one I already did.
If you do decide to apply this patch by default, I'd recommend backing off the default exposure for the front camera a bit. I'd also get someone more into photography to give it more testing, and perhaps to suggest a default exposure for RAW front camera so it matches non-RAW front camera.
I haven't ported the patch to the arm64 libexynoscamera3.so. I'm out of time today, but I'll look into that tomorrow. No idea how many 64 bit camera apps there are mind you, but completeness is a virtue.