Most active commenters
  • mrheosuper(6)
  • Arnt(5)
  • Xss3(4)
  • mystifyingpoi(3)
  • (3)
  • lelanthran(3)
  • fc417fc802(3)

←back to thread

A new PNG spec

(www.programmax.net)
618 points bluedel | 82 comments | | HN request time: 2.317s | source | bottom
1. LeoPanthera ◴[] No.44373778[source]
> I know you all immediately wondered, better compression?. We're already working on that.

This worries me. Because presumably, changing the compression algorithm will break backwards compatibility, which means we'll start to see "png" files that aren't actually png files.

It'll be like USB-C but for images.

replies(11): >>44373790 #>>44373796 #>>44373928 #>>44373937 #>>44374139 #>>44374147 #>>44374842 #>>44375132 #>>44375261 #>>44375615 #>>44380021 #
2. skywal_l ◴[] No.44373790[source]
Can't you improve a compression algorithm and still produce a still valid decompression input? PNG is based on zip, there's certainly ways to improve zip without breaking backwards compatibility.

That being said, they also can do dumb things however, right at the end of the sentence you quote they say:

> we want to make sure we do it right.

So there's hope.

replies(2): >>44373849 #>>44373875 #
3. lifthrasiir ◴[] No.44373796[source]
Better compression can also mean a new set of filter methods or a new interlacing algorithm. But yeah, any of them would cause an instant incompatibility. As noted in the relevant issue [1], we will need a new media type at the very least.

[1] https://github.com/w3c/png/issues/39#issuecomment-2674690324

replies(2): >>44374822 #>>44374939 #
4. masklinn ◴[] No.44373849[source]
> Can't you improve a compression algorithm and still produce a still valid decompression input? PNG is based on zip, there's certainly ways to improve zip without breaking backwards compatibility.

That's just changing an implementation detail of the encoder, and you don't need spec changes for that e.g. there are PNG compressors which support zopfli for extra gains on the DEFLATE (at a non-insignificant cost). This is transparent to the client as the output is still just a DEFLATE stream.

5. vhcr ◴[] No.44373875[source]
That's what OptiPNG already does.
replies(1): >>44375432 #
6. Lerc ◴[] No.44373928[source]
It has fields to say what compression is used. Adding another compression form should be handled by existing software as recognizing it as a valid PNG that they can't decompress.

The PNG format is specifically designed to allow software to read the parts they can understand and to leave the parts they cannot. Having an extensible format and electing never to extend it seems pointless.

replies(7): >>44374018 #>>44374025 #>>44374290 #>>44374346 #>>44374473 #>>44374501 #>>44374528 #
7. colanderman ◴[] No.44373937[source]
One could imagine a PNG file which contains a low-resolution version of the image with a traditional compression algorithm, and encodes additional higher-resolution detail using a new compression algorithm.
8. mort96 ◴[] No.44374018[source]
> Adding another compression form should be handled by existing software as recognizing it as a valid PNG that they can't decompress.

Yeah, we know. That's terrible.

9. koito17 ◴[] No.44374025[source]
> Having an extensible format and electing never to extend it seems pointless.

This proves OP analogy regarding USB-C. Having PNG as some generic container for lossless bitmap compression means fragmentation in libraries, hardware support, etc. The reason being that if the container starts to support too many formats, implementations will start restricting to only the subsets the implementers care about.

For instance, almost nobody fully implements MPEG-4 Part 3; the standard includes dozens of distinct codecs. Most software only targets a few profiles of AAC (specifically, the LC and HE profiles), and MPEG-1 Layer 3 audio. Next to no software bothers with e.g. ALS, TwinVQ, or anything else in the specification. Even libavcodec, if I recall correctly, does not implement encoders for MPEG-4 Part 3 formats like TwinVQ. GP's fear is exactly this -- that PNG ends up as a standard too large to fully implement and people have to manually check which subsets are implemented (or used at all).

replies(4): >>44374437 #>>44374579 #>>44374729 #>>44374926 #
10. mrheosuper ◴[] No.44374139[source]
Does usb-c spec break backward compatibility ?, a 2018 macbook work perfectly fine with 2025 usb c charger
replies(5): >>44374198 #>>44374221 #>>44374310 #>>44374340 #>>44374966 #
11. bmacho ◴[] No.44374147[source]
+1 why not name it png4 or something. It's better if compatibility is obvious upfront
replies(1): >>44374208 #
12. techpression ◴[] No.44374198[source]
I don’t know if it’s the spec or just a plethora of vendors that ignores it, but I have many things with a USB-C port that requires USB-A as source. USB-C to A to C works, yay dongles, but not just C to C. So maybe it’s not really breaking backwards compatibility, just a weird mix of a port and the communication being separate standards.
replies(2): >>44374252 #>>44374411 #
13. josephg ◴[] No.44374208[source]
I think if they did that, nobody would use it. And anyway, from the article:

> Many of the programs you use already support the new PNG spec: Chrome, Safari, Firefox, iOS/macOS, Photoshop, DaVinci Resolve, Avid Media Composer...

It might be too late to rename png to .png4 or something. It sounds like we're using the new png standard already in a lot of our software.

14. danielheath ◴[] No.44374221[source]
Some things don't work unless you use the right kind of USB-C cable.

EG your GPU and monitor both have a USB-C port. Plug them together with the right USB cable and you'll get images displayed. Plug them together with the wrong USB cable and you won't.

USB 3 didn't have this issue - every cable worked with every port.

replies(1): >>44374244 #
15. mrheosuper ◴[] No.44374244{3}[source]
That is not backward compatible problem. If a cable that does 100w charging when using pd2.0, but only 60w when using with pd3.1 device, then i would agree with you.
replies(1): >>44374298 #
16. mrheosuper ◴[] No.44374252{3}[source]
because those usb-c ports do not follow the spec. If they had followed the spec from 1st day there would be no problem even now.
17. pvorb ◴[] No.44374290[source]
Extending the format just because you can – and breaking backwards compatibility along the way – is even more pointless.

If you've created an extensible file format, but you never need to extend it, you've done everything right, I'd say.

replies(1): >>44374468 #
18. yoz-y ◴[] No.44374298{4}[source]
The problem is not backward compatibility but labeling. A USB-C cable looks universal but isn’t. Some of them just charge, some do data, some do PD, some give you access to high speed. But there is no way to know.

I believe the problem here is that you will have PNG images that “look” like you can open them but can’t.

replies(4): >>44374367 #>>44374387 #>>44374393 #>>44374432 #
19. mystifyingpoi ◴[] No.44374310[source]
Yeah, I also don't think they've broken backwards compat ever. Super high end charger from 2024 can charge old equipment from 2014 just fine with regular 5V.

What was broken was the promise of a "single cable to rule them all", partly due to manufacturers ignoring the requirements of USB-C (missing resistors or PD chips to negotiate voltages, requiring workarounds with A-to-C adapters), and a myriad of optional stuff, that might be supported or not, without a clear way to indicate it.

20. ◴[] No.44374340[source]
21. dooglius ◴[] No.44374346[source]
> Having an extensible format and electing never to extend it seems pointless.

So then it was pointless for PNG to be extensible? Not sure what your argument is.

22. mrheosuper ◴[] No.44374367{5}[source]
the parent said "changing the compression algorithm will break backwards compatibility", which i assume is something works now won't work in the future. The usb-c spec is intentionally trying to avoid that.
replies(1): >>44374409 #
23. mystifyingpoi ◴[] No.44374387{5}[source]
Cable labeling could fix 99% of the issues with USB-C compat. The solution should never be blaming consumer for buying the wrong cable. Crappy two-wire charge-only cables are perfectly fine for something like a night desk lamp. Keep the poor cables, they are okay, just tell me if that's the case.
replies(3): >>44374559 #>>44374654 #>>44381220 #
24. globular-toast ◴[] No.44374393{5}[source]
Some aren't even USB. Thunderbolt and DisplayPort both use USB-C too.
replies(1): >>44374893 #
25. danielheath ◴[] No.44374409{6}[source]
Today, I can save a PNG file off a random website and then open it.

If PNG gets extended, it's entirely plausible that someone will view a PNG in their browser, save it, and then not be able to open the file they just saved.

There are those who claim "backwards compatibility" doesn't cover "how you use it" - but roughly none of the people who now have to deal with broken software care about such semantic arguments. It used to work, and now it doesn't.

replies(3): >>44374443 #>>44374628 #>>44374663 #
26. fragmede ◴[] No.44374411{3}[source]
it's vendors just changing the physical port but not updating the electronics. specifically, a 5.1kΩ pull-up resistors on the CC1 and/or CC pins is needed on the host (was usb-a) side in order for the c to c cable to work.
27. voidUpdate ◴[] No.44374432{5}[source]
That's not just an issue with usb-c. normal usb a and b cables can have data or no data depending on how stingy the company wants to be, and you can't know until you test it
replies(1): >>44374886 #
28. bayindirh ◴[] No.44374437{3}[source]
JPEG is no different. Only the decoder is specified. As long as the decoder decodes what you give it to the image you wanted to see, you can implement anything. This is how imgoptim/squash/aerate/dietJPG works. By (ab)using this flexibility.

Same is also true for the most advanced codecs. MPEG-* family and MP3 comes to my mind.

Nothing stops PNG from defining a "set of decoders", and let implementers loose on that spec to develop encoders which generate valid files. Then developers can go to town with their creativity.

replies(1): >>44374957 #
29. johnisgood ◴[] No.44374443{7}[source]
This is what I fear, too.

Do they mention which C libraries use this spec?

30. jajko ◴[] No.44374468{3}[source]
What about an extensible format that would have as part of header an algorithm (in some recognized DSL) of how to decompress it (or any other step required for image manipulation)? I know its not so much about PNG but some future format.

That's what I would call really extensible, but then there may be no limits and hacking/viruses could have easily a field day.

replies(1): >>44374541 #
31. chithanh ◴[] No.44374473[source]
> Adding another compression form should be handled by existing software

In an ideal world, yes. In practice however, if some field doesn't change often, then software will start to assume that it never changes, and break when it does.

TLS has learned this the hard way when they discovered that huge numbers of existing web servers have TLS version intolerance. So now TLS 1.2 is forever enshrined in the ClientHello.

32. shiomiru ◴[] No.44374501[source]
The difference between valid PNG you can't decompress and invalid PNG is fairly irrelevant when your aim is to get an image onto the screen.

And considering we already have plenty of more advanced competing lossless formats, I really don't see why "feed a BMP to deflate" needs a new, incompatible spin in 2025.

replies(2): >>44374624 #>>44375023 #
33. HelloNurse ◴[] No.44374528[source]
Extensibility of PNG has been amply used, as intended, for proprietary chunks that hold application specific data (e.g. PICO-8 games) without bothering other software.
replies(1): >>44377066 #
34. lelanthran ◴[] No.44374541{4}[source]
> What about an extensible format that would have as part of header an algorithm (in some recognized DSL) of how to decompress it (or any other step required for image manipulation)?

Will sooner or later be used to implement RCEs. Even if you could do a restriction as is done for eBPF, that code still has to execute.

Best would be not to extend it.

35. ay ◴[] No.44374559{6}[source]
Same thing with PNG. Just call the format with new additions it PNGX, so the user can clearly see that the reason their software can’t display the image is not a file corruption.

This is just pretending that if you have a cat and a dog in two bags and you call it “a bag”, it’s one and the same thing…

36. fc417fc802 ◴[] No.44374579{3}[source]
I honestly don't see an issue with the mpeg-4 example.

Regarding the potential for fragmentation of the png ecosystem the alternative is a new file format which has all the same support issues. Every time you author something you make a choice between legacy support and using new features.

From a developer perspective, adding support for a new compression type is likely to be much easier than implementing logic for an entirely new format. It's also less surface area for bugs. In terms of libraries, support added to a dependency propagates to all consumers with zero additional effort. Meanwhile adding a new library for a new format is linear effort with respect to the number of programs.

37. fc417fc802 ◴[] No.44374624{3}[source]
> plenty of more advanced competing lossless formats

Other than JXL which still has somewhat spotty support in older software? TIFF comes to mind but AFAIK its size tends to be worse than PNG. Edit: Oh right OpenEXR as well. How widespread is support for that in common end user image viewer software though?

38. mrheosuper ◴[] No.44374628{7}[source]
which is what usb-c spec has been avoiding so far. Even in USB4 spec, there are a lot of mentioning the new spec should be compatible with TB3 devices.

USB-C spec is anything but breaking backward compatible.

39. lelanthran ◴[] No.44374654{6}[source]
> Cable labeling could fix 99% of the issues with USB-C compat.

Labelling is a poor band-aid on the root problem - consumer cables which look identical and fit identically should work wherever they fit.

There should never have been a power-only spec for USB-C socket dimensions.

If a cable supports both power and data, it must fit in all sockets. If a cable supports only power it must not fit into a power and data socket. If a cable supports only data, it should not fit into a power and data socket.

It is possible to have designed the sockets under these constraints, with the caveat that they only go in one way. I feel that that would have been a better trade-off. Making them reversible means that you cannot have a design which enforces cable type.

replies(2): >>44374908 #>>44374974 #
40. fc417fc802 ◴[] No.44374663{7}[source]
The alternative is the website operator who wants to save on bandwidth instead adopts JXL or WEBP or what have you and ... the end user with old software still can't open it.

It's a dichotomy. Either the provider accommodates users with older software or not. The file extension or internal headers don't change that reality.

Another example, new versions of PDF can adopt all the bells and whistles in the world but I will still be saving anything intended to be long lived as 1/a which means I don't get to use any of those features.

41. 7bit ◴[] No.44374729{3}[source]
I never once in 25 years encountered an issue with an mp4 Container that could Not be solved by installing either the divx or xvid codec. And I extensively used mp4's metatdat for music, even with esoteric Tags.

Not Sure what youre talking abouz.

replies(1): >>44374838 #
42. snvzz ◴[] No.44374822[source]
I am hopeful whatever better compression doesn't end up multiplying memory requirements, or increase burden on cpu, especially on decompression.

Now, PNG datatype for AmigaOS will need upgrading.

replies(2): >>44374936 #>>44375008 #
43. Arnt ◴[] No.44374838{4}[source]
He's saying that in 25 years, you used only the LC and HE profiles, and didn't encounter TwinVQ even once. I looked at my thousand-odd MPEG-4 files. They're overwhelmingly AAC LC, a little bit of AAC LC SBR, no TwinVQ at all.

If you want to check yours: mediainfo **/*.mp4 | grep -A 2 '^Audio' | grep Format | sort | uniq -c

https://en.wikipedia.org/wiki/TwinVQ#TwinVQ_in_MPEG-4 tells the story of TwinVQ in MPEG-4.

replies(1): >>44375009 #
44. jillesvangurp ◴[] No.44374842[source]
Old PNGs will work just fine. And forward compatibility is much less important.

The main use case for PNG is web browsers and all of them seem to be on board. Using old web browsers is a bad idea. You do get these relics showing up using some old version of internet explorer. But some images not rendering is the least of their problems. The main challenge is actually going to be updating graphics tools to export the new files. And teaching people that sRGB maybe isn't good enough any more. That's going to be hard since most people have no clue about color spaces.

Anyway, that gives everybody plenty of time to upgrade. By the time this stuff is widely used, it will be widely supported. So, you kind of get forward compatibility that way. Your browser already supports the new format. Your image editor probably doesn't.

replies(4): >>44374979 #>>44375084 #>>44376086 #>>44377705 #
45. Xss3 ◴[] No.44374886{6}[source]
You can get pretty good guesses just by feel and length. Tiny with a super thin cable? Probably charge only.
46. Xss3 ◴[] No.44374893{6}[source]
Thunderbolt meets usbc specs (and exceeds them afaik), so it is still usb...
47. Xss3 ◴[] No.44374908{7}[source]
So since my vape (example, i dont vape) has a power and data slot for charging and firmware updates, i should be limited to only using dual purpose cables day to day rather than a power only cable?
replies(1): >>44375182 #
48. cm2187 ◴[] No.44374926{3}[source]
But where the analogy with USB-C is very good is that just like USB-C, there is no way for a user to tell from the look of the port or the file extension what the capabilities are. Which even for a fairly tech savvy user like me is frustrating. I have a bunch of cables, some purchased years ago, how do I know what is fit for what?

And now think of the younger generation that has grown up with smartphones and have been trained to not even know what a file is. I remember this story about senior high school students failing their school tests during covid because the school software didn't support heif files and they were changing the file extension to jpg to attempt to convert them.

I have no trust the software ecosystem will adapt. For instance the standard libraries of the .net framework are fossilised in the world of multimedia as of 2008-ish. Don't believe heif is even supported to this day. So that's a whole bunch of code which, unless the developers create workarounds, will never support a newer png format.

replies(1): >>44375967 #
49. Arnt ◴[] No.44374939[source]
We would need a new media type. But the actual new features don't need one, because the news don't break compatibility.

https://svgees.us/blog/img/revoy-cICP-bt.2020.png uses the new colour space. If your software and monitor can handle it, you see better colour than I, otherwise, you see what I see.

50. cm2187 ◴[] No.44374957{4}[source]
Video files aren't a good analogy. Before God placed VLC and ffmpeg on earth, you had to install a galaxy of codecs on your computer to get a chance to read a video file and you could never tell exactly what codec was stored in a container, nor if you had the right codec version. Unfortunately there is no vlc and ffmpeg for images (I mean there is, the likes of imagemagick, but the vast majority of software doesn't use them).
replies(1): >>44376878 #
51. zirgs ◴[] No.44374966[source]
Yeah - it's a mess. Some devices only charge with a charger that supports PD. Some other devices need a charger WITHOUT PD support.
replies(1): >>44383588 #
52. mystifyingpoi ◴[] No.44374974{7}[source]
> If a cable supports only power it must not fit into a power and data socket

That's even more confusing than the current state of affairs. If my phone has power and data socket, then I cannot use power only cable to only charge it? Presumably with the charger that has power only socket. So I need a cable with two different ends anyway. Just go micro-USB at this point :)

Funnily enough, there is a 100% overkill way to solve such issues. Just use super expensive certified TB cables. Well... plus a A-to-C adapter for noncompliant devices, I guess.

53. ◴[] No.44374979[source]
54. Arnt ◴[] No.44375008{3}[source]
I don't see why? If your video output is plain old RGB (like the Amiga hardware), then an unmodified decoder will handle new files without a problem. You only need a new decoder if your video output can handle more vivid colours than RGB can express.
replies(1): >>44376534 #
55. ◴[] No.44375009{5}[source]
56. Arnt ◴[] No.44375023{3}[source]
It's a new and compatible spin. https://svgees.us/blog/img/revoy-cICP-bt.2020.png uses the important new feature and your old software can display it.

More generally, PNG has a simple feature to specify what's needed. A file consists of a number of chunks, and one bit in the chunk specifies whether that chunk is required for display. All of the extensions I've seen in the past decades set that bit to "optional".

For example, this update includes a chunk containing EXIF data. As you'd expect, the exif chunk sets that bit to "optional".

57. hnlmorg ◴[] No.44375084[source]
Browsers aren't the only software that work with PNGs. Far from it in fact.
58. ajnin ◴[] No.44375132[source]
What backward compatibility are we talking about here? Backwards compatibility of images will be fine, backwards compatibility of decoders might be impacted, but the article says the major image viewers (browsers) and image editors already support the 3rd version. Better compression is only planned for the 5th version of the spec.

Also if you forbid evolving existing formats, the only alternative to improve is to introduce a new format, and I argue that it would be causing even more fragmentation and be more difficult to adopt to. Look at all the drama surrounding JPEG XL.

59. lelanthran ◴[] No.44375182{8}[source]
> So since my vape (example, i dont vape) has a power and data slot for charging and firmware updates, i should be limited to only using dual purpose cables day to day rather than a power only cable?

Well, yes.

Why can't you use a power+data cable for the vape (or whichever appliance takes both)? What's the deal-breaker here?

The alternative is labeling, or plugging cables in to see if they do what you want them to do.

Both are a poor user interface.

replies(1): >>44381492 #
60. altairprime ◴[] No.44375261[source]
They could, for example, use lossy compression for the compatibility layer and then fill it in the rest of the way to lossless using incompatible new compression objects. Legacy uses will see some fidelity degradation, but they are already being stuck with sRGB downmixes, so that’s fine — and those who are bothered by it can just emit a lossless-pixels (but lossy-color and lossy-range) compatibility layer and reserve the compression benefits for the color and dynamic range.

I’m not saying this is what will happen — but if I was able to construct a plausible approach to compression in ten minutes, then perhaps it’s a bit early to predict the doom of compatibility.

61. josefx ◴[] No.44375432{3}[source]
Doesn't OptiPNG just brute force various settings and pick the best result?
62. bawolff ◴[] No.44375615[source]
I don't think that will super be an issue. How often has "progressive jpeg" ever caused problems? That's the same thing.
63. skissane ◴[] No.44375967{4}[source]
> there is no way for a user to tell from the look of the port or the file extension what the capabilities are

But that's typical for file extensions. Consider EXE – it is probably an executable, but an executable for what? Most commonly Windows – but which Windows version will this EXE run on? Maybe this EXE only works on Windows 11, and you are still running Windows 10. Or maybe you are running x86-64 Windows, but this EXE is actually for ARM or MIPS or Alpha. Or maybe it is for some other platform which uses that extension for executable files – such as DOS, OS/2, 16-bit Windows, Windows CE, OpenVMS, TOPS-10, TOPS-20, RSX-11...

.html, .js, .css – suggest to use a web browser, but don't tell you whether they'll work with any particular one. Maybe they use the latest features but you use an old web browser which doesn't support them. Maybe they require deprecated proprietary extensions and so only work on some really old browser. Maybe this HTML page only works on Internet Explorer. Maybe instead of UTF-8 it is in some obscure legacy character set which your browser doesn't support.

.zip – supports extensible compression and encryption methods, your unzip utility might not support the methods used to compress/encrypt this particular zip file. This is actually normal for very old ZIP files (from the 1980s) – early versions of PKZIP used various deprecated compression mechanisms, which few contemporary unzip utilities support. The format was extended to 64-bit without changing the extension, there's still a lot of 32-bit only implementations out there. ZIP also supports platform-specific file attributes–e.g. PKZIP for z/OS creates ZIP files which contain metadata about mainframe data storage formats, unzip on another platform is going to have no idea what it means, but the metadata is actually essential to interpreting the data correctly (e.g. if RECFM=V you need to parse the RDWs, if RECFM=F there won't be any)

.xml - okay, it is XML – but that tells you nothing about the actual schema. Maybe you were expecting this xml file to contain historical stock prices, but instead it is DocBook XML containing product documentation, and your market data viewer app chokes on it. Or maybe it really is historical stock prices, but you are using an old version of the app which doesn't support the new schema, so you can't view it. Or maybe someone generated it on a mainframe, but due to a misconfiguration the file came out in EBCDIC instead of ASCII, and your app doesn't know how to read EBCDIC, yet the mainframe version of the same app reads it fine...

.doc - people assume it is legacy (pre-XML) Microsoft Word: every version of which changed the file format, old versions can't read files created with newer versions correctly or at all, conversely recent versions have dropped support for files created in older versions, e.g. current Office versions can't read DOC files created with Word for DOS any more... but back in the 1980s a lot of people used that extension for plain text files which contained documentation. And it was also used by incompatible proprietary word processors (e.g. IBM DisplayWrite) and also desktop publishing packages (e.g. FrameMaker, Interleaf)

.xmi – I've seen this extension used for both XML Model Interchange (XML-based standard for exchanging UML diagrams) and XMIT (IBM mainframe file archive format). Because extensions aren't guaranteed to be unique, many incompatible file formats share the same extension

.com - is it an MS-DOS program, or is it DCL (Digital Command Language)?

.pic - probably some obscure image format, but there are dozens of possibilities

.img – could be either a disk image or a visual image, either way dozens of incompatible formats which use that extension

.db – nowadays most likely SQLite, but a number of completely incompatible database engines have also used this extension. And even if it is SQLite, maybe your version of SQLite is too old to read this file because it uses some features only found in newer versions. And even if SQLite can read it, maybe it has the wrong schema for your app, or maybe a newer version of the same schema which your old version that app doesn't support, or an old version of the schema which the current version of the app has dropped support for...

replies(2): >>44376228 #>>44377075 #
64. AlienRobot ◴[] No.44376086[source]
>The main use case for PNG is web browsers

This is news to me. I'm pretty sure the main use case for PNG is lossless transparent graphics.

replies(1): >>44379910 #
65. Calzifer ◴[] No.44376228{5}[source]
Just last week I had again some PDFs Okular could not open because of some more uncommon form features.
66. Findecanor ◴[] No.44376534{4}[source]
An image decoded in the wrong colour space for the output will look wrong. It is not using extra bits to express the increased dynamic range: the existing numeric range is stretched and warped.
replies(1): >>44379844 #
67. bayindirh ◴[] No.44376878{5}[source]
I lived through that era (first K-Lite Codec Pack, then CCCP came along), but still it holds.

Proprietary or open, any visual codec is a battleground. Even in commercial settings, I vaguely remember people saying they prefer the end result of one encoder over another, for the same video/image format, not unlike how photographers judge cameras by their colors.

So maybe, this flexibility to PNG will enable or encourage people to write better or at least unorthodox encoders which can be decoded by standard compliant ones.

68. Lerc ◴[] No.44377066{3}[source]
Doesn't pico-8 store the data in the least significant bits of colour? Maybe it got updated to use chunks.
replies(1): >>44385138 #
69. cmiller1 ◴[] No.44377075{5}[source]
> Consider EXE – it is probably an executable, but an executable for what? Most commonly Windows

Has anyone ever used .exe for anything other than Windows?

replies(3): >>44377701 #>>44378084 #>>44381864 #
70. asgerhb ◴[] No.44377701{6}[source]
Way back when, my prof was using his Linux machine to demonstrate how to use GCC. He called the end result .exe but that might have been for the benefit of the Windows users in the room. (Though Linux users being considerate to Windows users, or vice versa, is admittedly a rarity)
71. whywhywhywhy ◴[] No.44377705[source]
> The main use case for PNG is web browsers

It's not, most images you encounter on the web need better compression.

The main PNG use case is to store lossless images locally as master copies that are then compressed or in workflows where you intend to edit and change them where compressed formats would degrade the more they were edited.

72. skissane ◴[] No.44378084{6}[source]
Prior to Windows 95, the vast majority of PC games were MS-DOS exe files – so anyone who played any of those games (whether back in their heyday, or more recently through DOSBox) has run an MS-DOS exe. Most people who ever used Lotus 1-2-3 or WordPerfect were running an MS-DOS exe. Both products were eventually ported to Windows, but were far less popular under Windows than under DOS.

Under Windows 95/98/Me, most command line tools were MS-DOS executables. Their support for 32-bit Windows console apps was very poor, to the extent that the input and output of such apps was proxied through a 16-bit MS-DOS executable, conagent.exe

First time in my life I ever used GNU Emacs, it was an OS/2 exe. That's also true for bash, ls, cat, gcc, man, less, etc... EMX was my gateway drug to Slackware

73. Arnt ◴[] No.44379844{5}[source]
Yes. But how bad? AIUI the way it's done is more or less the best that can be done with old video hardware, like mine and like the Amiga.

It could be horrible in principle, but actually isn't.

74. asadotzler ◴[] No.44379910{3}[source]
Depends on whose use cases you're considering.

There are about 3.6 billion people surfing the web and experiencing PNGs. That use case, consuming PNGs, seems to dwarf the perhaps 100 million (somewhat wild guess) graphic designers, web developers, and photo editing professionals who manipulate images for publishing (in any medium) or archiving.

If, on the other hand, you're considering the use cases envisioned by PNG's creators, or the use cases that interest the people processing or publishing images, yes, these people are focused on format itself and its capabilities.

I suspect this particular use of "use case" isn't terribly clear. Also these two considerations are not incompatible.

75. ProgramMax ◴[] No.44380021[source]
Worry not! (Well, worry a little.)

The first bit of our research is "What can we already make use of which requires no spec update? There are plenty of PNG optimizers. How much of that should go into the typical PNG libraries?"

Same with parallel encoding & decoding. An older image viewer will be able to decode it on one thread without ever knowing parallel decoding was an option.

Here's the worry-a-little part: Everybody immediately jumps to file size as to what image compression is better or worse. That isn't the best take, but it is what it is. So there is pressure to adopt newer technologies.

We often do have a way to maintain some degree of backwards compatibility even when we do this. For example, we can store a downsampled image for old viewers. Then extra, new chunks will know "Mix that with this full scale data, using a different compression".

As you can imagine, this mixing complicates things. It might not be the best option. Sooooo we're researching it :)

replies(2): >>44382777 #>>44383623 #
76. kevin_thibedeau ◴[] No.44381220{6}[source]
Two wire cables are not in the specification, just like A-to-A cables aren't. The whole charging above 100mA with resistor hacks wasn't in the standard either until they had to grandfather it in. The implementers forum isn't responsible for non-members breaking their spec.
77. Xss3 ◴[] No.44381492{9}[source]
Is the same true for my laptop? Or soldering plate? Both take over 150w of power. Buying a power and data cable is expensive compared to just power, and the length of cable is severely limited...or the data speed impaired significantly. How slow does the data have to be for it to be non compliant?
78. cesarb ◴[] No.44381864{6}[source]
> Has anyone ever used .exe for anything other than Windows?

Did you know that Microsoft Windows originally ran on top of the much older MS-DOS, which used EXE files as one of its two executable formats? Most Windows users had lots and lots of EXE files which were not Windows executables, but instead DOS executables. And then came Windows 95, which introduced 32-bit Windows executables, but kept the same file extension as 16-bit Windows executables and 16-bit DOS executables.

79. ori_b ◴[] No.44382777[source]
My strong vote is to just not touch it. Stability is a feature.
80. mrheosuper ◴[] No.44383588{3}[source]
If those devices follow the spec, they dont need charger without PD support.

You don't follow spec, you're on your own.

81. HexDecOctBin ◴[] No.44383623[source]
Downsampling will make PNG not be a lossless format. Just leave it alone, and work on a separate PNG2 or PNGX or whatever.
82. HelloNurse ◴[] No.44385138{4}[source]
Yes, my mistake. I assumed common sense.

https://pico-8.fandom.com/wiki/P8PNGFileFormat

Actual cases of proprietary chunks include iDOT from Apple (apparently a performance optimization for plain images)

https://www.hackerfactor.com/blog/index.php?/archives/895-Co...

and the Macromedia Fireworks save files

https://stackoverflow.com/questions/4242402/the-fireworks-pn...