|
I have no idea. I just noticed this today. Going to test on my PC after work. I would guess that Windows already has the codecs to view this image file format, but not certain.
|
|
|
|
|
I gave it a Wikipedia look. Supposedly twice the compression of jpg with the same quality. Windows doesn't natively support it but a Win10 update is available from MicroSloth.
Not to worry ! There was a reference to a free downloadable codec for this that worked in Win7 and up. Some browsers support it (experimentally). Apparently, it's not so much a format as a container (or some version of that - it's an alphabet soup).
Ravings en masse^ |
---|
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|
|
Slacker007 wrote: I would guess that Windows already has the codecs to view this image file format
FWIW:
I don't think I have anything that can create an actual .heic file, but if I create a 0-byte .txt file, and change the extension to .heic, I can see that Explorer, even though it doesn't display a custom file type string, displays a custom icon for it.
And if I double-click on the file, I'm prompted what to open it with - Win 10's built-in Photo app, Paint, or Paint.NET. So it at least knows it's some sort of image format.
And I can see that Paint.NET's File Open has an entry for HEIC. Maybe it registered the file type as known...this is where I stopped investigating.
|
|
|
|
|
|
Followed that link, which links to the Microsoft store, which says "HEVC Video Extensions from Device Manufacturer is currently not available ". Have they run out of them? Are people panic-downloading codecs these days? (Maybe the download server is hosted on a Google site.... )
|
|
|
|
|
Well, you know what it's like - when you run out of TP, you'll use anything!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
You tell it the demolition man...
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpful answers is nice, but saying thanks can be even nicer.
|
|
|
|
|
I've turned it off a while back because of some compatibility issues.
Maybe it has been fixed.
I'd rather be phishing!
|
|
|
|
|
Looks like this weekend, I'll be busy writing article on how to load HEIC image on Windows Form and WPF.
|
|
|
|
|
So I am shoring up my JSON library for constrained devices. I'm testing it on a PC where I have access to a full debugger and such, but this is incredible performance, even an ancient I5 with an HDD.
Gosh I love being back to bare metal unmanaged code. This is ace! WIN WIN WIN
Output:
...
S07E06 All or Nothing
S07E07 Psychological Warfare
S07E08 Nature of the Beast
S07E09 Bitter Pill
S07E10 Things Unseen
S07E11 Tipping Point
S07E12 Sea Change
S07E13 Reckoning
Max used bytes of pool: 227
Scanned 112 episodes and 191288 characters in 5 milliseconds
5 MILLISECONDS
227 bytes of heap
I'm not counting the lexcontext space here which I have set to 1kB due to an unrelated bug I'm running down, this is just for the pooled JSON data, but when I fix the lexcontext bug I expect it will only require another 256 bytes for this query, if that.
You can give it whitelist or blacklist filters for JSON fields so you can load partial objects. I get the season_number , episode_number and name and ditch all the rest to save on average about 6k of heap (for *each* object). The whitelist filter is particularly powerful in that it can return the values for the fields already filled in to a structure for you as it filters, leading to even better performance.
if (!lexContext.open("./data.json"))
{
printf("Json file not found\r\n");
return -1;
}
const char* fields[] = {"season_number","episode_number","name"};
JsonElement* values[3];
JsonParseFilter filter(fields,3,JsonParseFilter::WhiteList);
filter.pvalues=values;
size_t max = 0;
size_t episodes=0;
milliseconds start = duration_cast<milliseconds>(system_clock::now().time_since_epoch());
while (jsonReader.skipToField("episodes", JsonReader::All) && jsonReader.read() ) {
if(JsonReader::Array==jsonReader.nodeType() && jsonReader.read()) {
while(JsonReader::EndArray!=jsonReader.nodeType()) {
JsonElement *pr= jsonReader.parseSubtree(pool,&filter);
if(!pr) {
printf("\r\nError (%d): %s\r\n\r\n",jsonReader.lastError(),jsonReader.value());
} else {
printf("S%02dE%02d %s\r\n",(int)filter.pvalues[0]->integer(),(int)filter.pvalues[1]->integer(),filter.pvalues[2]->string());
++episodes;
}
if(pool.used()>max)
max=pool.used();
pool.freeAll();
}
}
}
milliseconds end = duration_cast<milliseconds>(system_clock::now().time_since_epoch() );
printf("Max used bytes of pool: %d\r\nScanned %d episodes and %llu characters in %d milliseconds\r\n",(int)max,(int)episodes,lexContext.position()+1,(int)(end.count()-start.count()));
lexContext.close();
Real programmers use butterflies
modified 16-Dec-20 0:56am.
|
|
|
|
|
Being in between the bit stream is nice from time to time
It does not solve my Problem, but it answers my question
Chemists have exactly one rule: there are only exceptions
modified 19-Jan-21 21:04pm.
|
|
|
|
|
It <expletive> rocks. I love coding for tiny devices where performance actually matters, because it tickles part of the problem solving portion of my brain that only gets exercised sometimes - and not enough for my liking.
Back when I started coding, all devices were like that, and programming felt fresh to me. Maybe it's nostalgia, but having to solve these kinds of problems in small space/time brings some joy back to the craft.
Real programmers use butterflies
|
|
|
|
|
I started with Motorola 6805 before decades with (I can be wrong, it was even less) 1024 byte of ram and maybe 4K ROM
Anyway it was fun, but I also enjoy to have a "nearly" unlimited machine available to make some strange tests.
It does not solve my Problem, but it answers my question
Chemists have exactly one rule: there are only exceptions
modified 19-Jan-21 21:04pm.
|
|
|
|
|
Some of these little devices I'm dealing with have less than 32kb of RAM, so being able to do complicated queries using tiny amounts of heap is really useful.
I think I'm going to own all on JSON performance in the scenarios I designed it for. It's not as fast to look up as it would be using in memory hashtables to store object fields, but this isn't designed to use much in memory querying, much less devote precious extra ram to hashing which if it improves performance, you're already loading more object fields into memory in the first place than you should be. It's designed to go from disk/network->query->result in as few moves as possible with as little ram as possible, and given that limitation, as fast as possible. It does this fantastically, and it actually performs probably better than a other libraries in that scenario where you do a read->query-result->recycle loop
It's pretty great. It might even be useful on full size machines. It's certainly performance tuned. (or as microsofties might say "performant")
Real programmers use butterflies
|
|
|
|
|
Wait, I thought your house was on fire!?
You're quite the pyromaniac!
|
|
|
|
|
C++ is a bad influence on me. Such power should not be in the hands of ambitiously destructive (or creative for that matter) mortals.
Real programmers use butterflies
|
|
|
|
|
I'm on fire EVERY DAY - as my profile pic so clearly shows!
Anything that is unrelated to elephants is irrelephant Anonymous
- The problem with quotes on the internet is that you can never tell if they're genuine Winston Churchill, 1944
- Never argue with a fool. Onlookers may not be able to tell the difference. Mark Twain
|
|
|
|
|
honey the codewitch wrote: I'm on fire today!
Has a descendant of Witchsmeller Pursuivant caught up with you?
(OT: Good work!)
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows.
-- 6079 Smith W.
|
|
|
|
|
If you eat a Christmas tree, will you get tinsellitus?
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Not wishing to needle you, but I do not care to o-pine on the matter.
Ravings en masse^ |
---|
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|
|
Ornamint what is that anyway?
A pine flavored breath mint?
I'm not sure how many cookies it makes to be happy, but so far it's not 27.
JaxCoder.com
|
|
|
|
|
You're safe as long as the tree is fresh!
|
|
|
|
|
This morning I stepped on a corn flake.
Get me coffee and no one gets hurt!
|
|
|
|
|
For some reason that got a suicidal tendencies song in my head.
My mind wanders.
Real programmers use butterflies
|
|
|
|
|
Then it's time for you to go for the Cheerios. Stat.
Ravings en masse^ |
---|
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|