Jump to content

ChanChan

Member
  • Posts

    1
  • Joined

  • Last visited

Reputation Activity

  1. Informative
    ChanChan reacted to LAwLz in Apple Abandons JPEG In Favor of HEIF/HEVC   
    Why is this not all over the news? It's huge news and yet it was not mentioned in MKBHD's nor Linus' video (WANK show) about iOS 11.
     
     
    TL;DR:
    Apple is moving away from from a really bad, 24 year old image format.
    The new format is about twice as efficient as JPEG, and supports a lot of great features.
    I am worried how this will play out because of licensing issues. Will this lead to another format war?
     
     
     
    Long version:
     
    Don't know how many people here cares about media formats, but I care a lot.
    At the WWDC a few days ago, Apple quickly mentioned that they will start using HEVC for video recording. In the same segment, they also mentioned that they will start saving pictures taken on your iPhone as HEIF files, encoded with HEVC. The move to HEVC for video is not that interesting, and hopefully Apple will move over to AV1 once that is released, but what is important and interesting is HEIF.
     
    HEIF (pronounced HEEF) stands for "High Efficient File Format". It's an image container format with a ton of very great features. Apple will start saving pictures taken with iOS devices' cameras as HEVC encoded image inside HEIF files. MacOS High Sierra and iOS 11 will support it.
    JPEG is old and should have been replaced years ago. Google tried with WebP but the lack of support in OSes and applications lead to it just creating headaches for users and it has mostly faded away into obscurity. With Apple's tremendous control over their iOS ecosystem, it is very possible that they will implement convertion from HEIF to JPEG/PNG in an elegant way which is transparent to the users. Once the new format has gotten traction, more and more OSes and applications might start adding native support for it and it might become a true replacement for JPEG.
     
    It's important to understand that HEIF is a container, not a codec. The specifications does however include special instructions on how to encapsulate HEVC images into HEIF-complaint files. Apple has stated that they will start using HEIF as a container, and HEVC as the codec for images saved within the HEIF container. What this means is that it should be possible to save AV1 encoded images inside a HEIF file in the future.
     
    To break it down:
    HEVC - A codec. It specifies how to make that 1GB video into a 500MB video, without losing too much image quality.
    HEIF - A container. It's like wrapping paper for your files. It allows you to put one or more files, which may have different codecs, inside a single file, and it tells your programs how to interpret these files. For example .mp4 is a container, and it makes it possible to bundle the video file and audio file into a single file which your video player understands how to play.
    HEVC as an image format - Since HEVC is meant for video, it does not include any of the features needed to be used as a still image format. HEIF fixes this by including special specifications on how to encode a single image using HEVC into a HEIF-complaint file.
     
     
     
    HEIF container info and benefits:
    Developed by MPEG, so it is not Apple exclusive. It's developed by the same group that created .mp4 (MPEG) and is an ISO standard. Extremely flexible (this can also be a drawback as we have seen with MKV, since supporting it can be complex). Support for multiple images in the same file (for example, if you burst shoot on your phone then all images can be saved in the same file, instead of individually). This also means that you can save an entire gallery as a single file. Wanna send 10 images from your trip to your mom? Send her a single file containing all the images, instead of 10 individual files. "Derived images" support, which means you can do non-destructive images editing. When a HEIF image is edited, the standard allows for the modifications to be saved as transform operations, in the metadata, instead of as a brand new image. This means that you get to keep the original image intact, as well as a modified version in the same file (with extremely little overhead). The types of native edits you can do are fairly limited (cropping, rotation, overlays and image grids), but it is possible for programs to write their own instructions. This could remove the need for special file formats such as Photoshop's psd. It is possible to have multiple images in the same file mix together to create a single image that is presented to the user. The most common example of this will most likely be HDR images. Right now, when you take an HDR photo you either get multiple, separate images (for example one low exposure, one with high exposure, and one that's mixed together) or the low and high exposure images are thrown out and you only get the mixed one. With HEIF, it will be possible for a HDR shot to output a single file that contains all three aforementioned versions, while only being a single file and only needing to save data for the high and low exposure shots. Support for several different metadata types (including Exif and XMP) and can be extended to support more. Other types of media such as video, audio and subtitles can be saved inside the HEIF file as well. This is very hand if we want to use it to replace animated gifs. Thumbnails can be embedded into the same file as the master image. I am not sure how this will work, but my guess is that it will be possible for applications to request only the thumbnail image, instead of needing to download the entire file to access the thumbnail. If this is the case, then it will be very useful for developers. For example websites would no longer need to save thumbnails and full resolution images as separate files. There is a field for "looping". This is useful if you want to create looping animated images (think like gifs), but you can also write a number to this field which means the animation will only loop for a certain number of times.  
    As you can probably tell by the long list, this format has many benefits over jpeg, gif and PNG which are the three most common image containers (and codecs) used today. It is clear that MPEG looked at what features are needed in modern devices and wanted to create a format that supports all of them. Not only that, but a lot of the specifications are very flexible and open, which will allow future changes or third party developers to adapt the format to suit their needs (such as Adobe embedding Photoshop transformation information inside it).
     
    But like I said, HEIF is just the container. Apple also said that they are going to encode the images in the HEVC format. Why?
     
    HEVC as image format benefits and features:
    Again, this is an ISO standard and is in no way limited to only Apple. For still images, HEVC is on average twice as efficient as JPEG. This means that your images will either be half the size they would be if they were in the JPEG format at the same quality, or you can increase the quality, or a combination of both. Samples can be found here. Since it is a video format, it can be animated and it will be far better than gif at it. It supports more colors and is much more efficient. There are two comparisons between HEIF/HEVC and gif in the link I posted above. Can be lossless (and thus, it can replace PNG too). It supports transparency. The same hardware acceleration used for video playback can also be used to decode and render images. This means that decoding the images will use less power and be faster than JPEG, gif and PNG. Even on devices which does not support hardware acceleration of HEVC, the fact that it is HEVC and based on slices allows decoding to be heavily parallelized, and more flexible. So while you might not save any power, it will still be fast to decode. It will also be possible to prioritize individual slices which may be more relevant to the user than other slices, instead of the standard "always render from top to bottom" we have today with JPEG and PNG.  
    The one thing that worries me, is that HEVC is a licensing nightmare. Compared to H.264, the per-unit fees are in some cases 10 times as high for HEVC. There is no annual fee cap anymore, as well as a 0.5% royalt on revenue generated from HEVC video services. All of those things combined meant that for Mozilla and many other companies, moving from H.264 to HEVC would increase their yearly licensing cost by about 10,000% (100 times as much). For companies like Netflix, Amazon and Google which relies even more on video services, the cost increase would have been even larger.
    In fact, HEVC licensing is such a big issue that Amazon, Cisco, Google, Intel, Microsoft, Mozilla and Netflix (and many more joined later) all got together to create a new format (AV1 which I mentioned earlier) which will be open and free to use. Apple however, is not in this alliance. This move, is signaling that Apple are not interested in moving to the free and open AV1 format.
     
    AV1 might be supported in HEIF in the future, but changing formats is not some small task and I doubt Apple would want to change from HEIF/HEVC to HEIF/AV1 in a year or two. Since HEVC and AV1 are also competitors, we might run into a situation where MPEG, the creators of HEIF and HEVC will make it more convenient to use HEVC over AV1 inside HEIF.
    So what we might get is a format war between Apple and MPEG with HEIF/HEVC vs essentially the rest of the industry with a superior video format, but no image format alternative. Even if another standard using AV1 for images gets developed we will end up in a situation where we got two competing formats trying to solve the same issues (and HEIF/HEVC will have 1-3 year head start).
     
     
    Thoughts?
    Personally I think it is great that we are finally seeing a large company move away from JPEG in a graceful way. My only problem is that it is relying on HEVC which I consider essentially dead because of the AV1 codec which will hopefully be finalized in late 2017 (Q3 or Q4), with hardware support for it released in 2018.
    What I want to see is HEIF extended to support AV1 so that we can get the best of both worlds. Sadly, that will probably not happen and in that case I hope that AOMedia will reinvent the wheel by creating their own image format.
  2. Funny
    ChanChan reacted to 79wjd in AOL Desktop Software to end free access plan   
    Suckers! Everyone told me I was dumb for saving these, but look at me now! 
  3. Like
    ChanChan reacted to Trik'Stari in AOL Desktop Software to end free access plan   
    OP just go ahead and mark this ^
     
    as correct answer
  4. Like
    ChanChan reacted to SammyGoad in Working man's gaming pc   
    Put together while in college, my hand-me-down pc is looking pretty good now a days:
    -I5 2500
    -12gb assorted DDR3 1600Mhz Ram
    -1 terabyte hdd
    -MSI 1050TI OC
    -ThermalTake 650W Bronze PSU
    sub $400 USD

  5. Like
    ChanChan reacted to Markmjb in Ultimate Programming Resources Thread   
    Introduction
    Some of you guys might now Zonked thread with the exact name. He started the topic to gather our knowledge of the best programming stuff you can find.
    So first, a thank you for Zonked who started this work!
    Since he is unable to update the thread regularly, I will, with the consensus of alpenwasser, continue his thread.
     
    Zonkeds intro
    I decided it would be a good idea to have a thread that is a complete collection of helpful programming resources and tutorials. This will be an going, frequently updated post that will require input from you guys also. So help me build the ultimate programming resources thread. Simply leave them in the comments and I will add them.

    General Programming Resources
    Stack Overflow -A forum inhabited by professional developers. You can also ask questions and will receive help.
    MIT Open Courseware -Online Computer Science lectures from MIT University. Features lectures, resources and handouts
    The New Boston - Video tutorials of lots of languages, also entertaining.
    Code Cademy - Interactive learning with rewards in a variety of languages
    Code School - Interactive Tutorials in a variety of languages
    TopCoder - Programming competitions
    Google Code Jam - Archived Google Jam contests and exercises
    USACO Training Gateway - Programming problems
    Tutorials Point - Extensive written tutorials about a variety of languages
    Tutorialized - Tutorial Site with the code embedded next to the tutorials
    Educator - Tutorial site on a variety of languages

    Python
    Learn Python The Hard Way - Extensive HTML book on the basic of Python
    Dive Into Python - Same concept as the above resource, but slightly more advanced
    PyGame - Features tutorials for Python game development.
    Python.Org - Official Python website. Includes tutorials and documentation.
    Invent With Python - Online tutorials of actual programs and games (very good!)

    C
    Live Gnome - Variety of C resources and projects
    Learn C The Hard Way - Learn C the Hard way (Work In Progress)
    C Programming WikiBook - C programming Wiki
    Tutorials Point - Lots of C resources
    Learn C.org - Interactive C resources
    [bOOK] C Programming in Easy Steps -  Mike McGrath (isbn 978-1840785449)

    C#
    MSDN - Official Site for C#
    Home and Learn - Beginner C# Tutorials
    C# Crash Course

    C++
    C++ Reference - C++ reference
    C Plus Plus - Official C++ reference
    Tutorials Point - C++ tutorials
    C Programming - In depth tutorials on C++
    MSDN Visual C++ - Visual C++ tutorials
    Stephan T. Lavavej Video Tutorials: Core C++
    Stephan T. Lavavej Video Tutorials: STL
    Stephan T. Lavavej Video Tutorials: Advanced STL

    Visual Basic
    VB Code - VB tutorials
    Home and Learn - Basic Visual Basic tutorials
    Tutorials Point - Loads of great VB tutorials
    Tutorialized - Even more Visual Basic tutorials

    Java
    Oracle Docs - Official Java documents
    Code Ranch - Great Java forum
    Tutorials Point - Lots of Java Tutorials
    Learn Java Online - Lots of Java resources and interactive learning
    Programcreek Great Java Tutorial Site

    HTML/CSS/Javascript
    W3 Schools - Good starting point for html/css/javascript
    Mozilla Developers - Web development tutorials
    HTML Dog - HTML, CSS and JavaScript tutorials
    CSS Tricks - CSS Tutorials
    JsFiddle - Javascript Collab Tool

    PHP
    Better PHP - PHP Video tutorials of code snippets
    PHP Academy - PHP videos and tutorials
    PHP.Net - Useful PHP documentation

    SQL
    Learn SQL the hard Way - Learn SQL the Hard Way

    Perl
    Perl.Org - Official Perl website.
    Perl Meme - Perl Tutorials.
    Perl Begin - Perl for beginners.
    Modern Perl Books - Book on Pearl
    High Order Perl Book - High Order Pearl Book

    Ruby
    Try Ruby - Ruby interactive resources.
    Learn Ruby The Hard Way - Learn Ruby the Hard Way

    Android Development
    Android Developers - Official Google docs, tutorials, guides, tips and tricks
    Google Developers - News and guides for a variety of languages including Android development
    XDA Developers - #1 Android dev forum. Includes tutorials, ROMS, news, tips, techniques and much more!!!

    iOS Development
    Apple Documentation - Official Apple Documentation
    Apps A Muck - Lots of iOS development tutorials
    App Coda - More iOS application development

    3D Programming
    OpenGL Tutorials
    Learning Modern 3D Graphics Programming

    Books
    Free Programming Book List on Github
    Stackoverflow C++ Book Guide
    Think Python -Allen Downey
    Design for the non Designer -Robin WIlliams
    The Pragmatic Programmer -Dave Thomas
    Javascript: The Good Parts -Douglas Crockford
    Code Complete -Steve McConnell
    The Art of Computer Programming -Donald Knuth
    Discrete Mathematics for Computer Scientists -John Truss
    The art of Unix Programming -Eric S. Raymond
    Head First Java and Design Patterns -Eric Freeman
    C Programming Language -Brian Kernighan, Dennis Ritchie
    Computers as Components -Wayne Wolf
    Operating Systems Concepts with Java -Abraham Silberschatz, Peter Galvin, Greg Gagne
    Higher Order Perl - Mark Jason Dominus
    Perls of Wisdom - Steve Litt
    The C++ Programming Language -Bjarne Stroustrup
    Game Coding Complete -Mike McShaffry
    Introduction to Algorithms -Thomas H. Cormen, Charles E. Leiserson and Ronald L. Riverst
    Computer Organisation and Architecture -Linda Null and Julia Lobur
    The Mythical Man-Month -Frederick P. Brooks JR
    Computer Organisation and Design -David A. Patterson and John L. Hennesy
    Architecture of Open Source Applications
    Modern C++ Design -Andrei Alexandrescu
    Computer Networking: A top-down approach featuring the internet -
    Database System Concepts -Abraham Silberschatz, Henry F. Korth, S. Sudarshan
    Artificial Intelligence, A Modern Approach -Stuart Russel, Peter Norvig
    Concepts in Programming Languages -John C. Mitchell
    The Art of Prolog -Leon Sterling, Ehud Shapiro
    Elements of the Theory of Computation -Papadimitriou
    Computer Graphics: Principles and Practice -Hughes, van Dam, McGuire, Sklart
    Java - How to Program -Harvey & Paul Deitel
    Thinking in Java -Bruce Eckel
    C++ Primer Plus (6th Edition) (Developer's Library)-Stephen Prata


    Compilers/IDE's
    Microsoft Visual Studio - Microsoft Visual Studio (C, C#, C++)
    Eclipse - Eclipse (Java/Android)
    Netbeans (Java)
    Code Blocks - Code Blocks (C++)
    Bloodshed (C++)
    Android Studio
    Jetbrains - Several IDE's and/or plugins that make C#/Python/Java/Php etc easier to code

    Text Editors
    Notepad++(Windows)
    Text Mate (Mac)
    Sublime Text(Windows/Linux)
    Brackets
    Aptana -Open source web development tool
    Qt Project - C++/QML IDE
    VIM -Advanced (!) Text Editor (small tutorial[/url)
    Emacs -Advanced (!) Text Editor

    Other
    Gamedev.net - A forum full of professional game developers
    DBforums - Database Forums
    Codingbat - Java & Python Challenges
    Bitbucket - Source Control Provider like github, but then Private
    Sourcetreeapp - Tool to manage github/bitbucket
    OverAPI - Cheatsheets for several languages
    Regexr - Regular Expressioin Tester
    Project Euler - Programming and math exercises (Can get quite advanced)

    Contributors So far...
    Darkfeign
    alpenwasser
    WanderingFool
    majorawsome
    pzyko103
    WhatARoaster
    crocski
    Flojer0
    MikeD
    wolfsinner
    hAxx
    colonel_mortis
    lord4163
    Getov
    TSegers
    Hikaru12
    fletch to 99
    Nuluvius
    forbsie1888
    Robi_g
  6. Funny
    ChanChan reacted to fletch to 99 in The under 100 line challenge!   
  7. Funny
    ChanChan reacted to ThinkWithPortals in WING X99 | A CNC-milled Scratch Build! (Benchmarks, temps and wallpapers posted!)   
    6950X?
    1080 SLI?
    2x 750 series SSDs?
    Custom loop?
    Custom case?
     

×