Video Coding Basics - How is this so efficient?

  Рет қаралды 6,270

Christian Feldmann

Christian Feldmann

Күн бұрын

Ever wondered how video coding works on the insides? I mean you might have used some video encoders and decoders but what is under the hood in the intestines of these modules?
I am not going into detail on any specific codec but I try to cover the basic building blocks of encoders and decoders which are common to all popular video coding standards like h.264/AVC, h.265/HEVC, VP8, VP9, AV1 or even h.266/VVC. So after watching this you hopefully know the basics of how it is even possible to transmit stunning looking high quality video at such incredibly low bitrates.
References:
- Material: github.com/ChristianFeldmann/...
- YUView: github.com/IENT/YUView
Full coding Videos:
- Sequential: • Block Based Video Deco...
- Slices: • Block Based Video Deco...
- Tiles: • Block Based Video Deco...
- Wavefront: • Block Based Video Deco...
Content:
00:00 - Intro
03:14 - Compression Efficiency
06:55 - Redundancy
10:29 - Splitting into blocks
12:37 - Block partitioning
13:53 - Coding Loop
15:13 - Intra Prediction
17:07 - Motion Compensation
18:11 - Coding Order
19:24 - Bi-directional Motion Compensation
20:33 - Transformation and Quantization
21:41 - Discrete Cosine Transform
25:07 - Quantization
29:28 - Entropy Coding
31:17 - Loop Filtering
32:58 - Coding Loop - Again
35:25 - Decoding in Action
37:48 - Practical example - YUView
39:44 - References

Пікірлер: 34
@user-us7rg4cd6p
@user-us7rg4cd6p 5 ай бұрын
Dude.. Where was this guy all along? This is an amazing video!
@shenghuang95
@shenghuang95 Жыл бұрын
This is the best video on Video Coding basics out there. Thank you!
@darshan5044
@darshan5044 6 ай бұрын
A gem of a video thanks for the presentation.
@farhatibrahim4034
@farhatibrahim4034 2 жыл бұрын
simply, amazing, we want other videos for every standard ! (start by VVC)
@christianfeldmann3774
@christianfeldmann3774 2 жыл бұрын
Yep that would be fun to do. Or there also is much more to say about the individual components. Now if only the week were one day longer :p
@psychatrix
@psychatrix 2 жыл бұрын
Really well explained, clear and to the point. Thank you!
@halodiski
@halodiski 2 жыл бұрын
Really nice deep dive into video coding. I wish I had a presentation like this one back at university :)
@omarmashaal237
@omarmashaal237 11 ай бұрын
Excellent explanation and demonstration. Thanks
@boshi9
@boshi9 7 ай бұрын
Thanks for making this presentation, Christian! It's very helpful and definitely deserves more views.
@phanindra406
@phanindra406 7 ай бұрын
Thanks a lot for the information, It really helped in grasping the whole process.
@MrVipulLal
@MrVipulLal Ай бұрын
Very useful video. Thanks!
@manfredvonrunkel6771
@manfredvonrunkel6771 2 жыл бұрын
Amazing! Thanks for sharing!
@jianhuazhou4867
@jianhuazhou4867 2 жыл бұрын
Thank you for your knowledge sharing!
@chandusrinivas7813
@chandusrinivas7813 7 ай бұрын
Really, you did very hard work, Thank you so much Christian Feldmann. 🙏🤝 you have explained the concepts very easily.
@armint598
@armint598 2 жыл бұрын
Awesome, I liked the 60 fps hand gestures.
@luc3056
@luc3056 10 ай бұрын
Fantastic explanation of a complex topic. This is the best teaching material out there. Thank you very much, also for the interesting tool! Would LCEVC be a good follow-up video? To the best of my understanding, it introduces some new concepts. Probably there is already much more to say anyway. All the best for your predictable and unpredictable future frames of life.
@christianfeldmann3774
@christianfeldmann3774 10 ай бұрын
Great to hear that it was helpful. Yes the list for follow-up videos is long. I would first like to go a bit deeper into details of video coding though.
@adithyan_ai
@adithyan_ai 2 жыл бұрын
Nice!
@bboybasics2
@bboybasics2 2 жыл бұрын
I looked very hard to see a video of this quality, thank you. Isn't techniques like RLE used before the enthropy coding? Do you have books, articles or other videos if we want to dig further?
@christianfeldmann3774
@christianfeldmann3774 2 жыл бұрын
Thank you! You are right. So in order to use entropy coding efficiently, the data that you push into it is usually preprocessed and ordered in certain ways. This is in some way similar to run length encoding where certain bins that are put into the entropy coding engine can mean "all of the following coefficients in the block are 0" (or something similar. I really depends on the codec).
@christianfeldmann3774
@christianfeldmann3774 2 жыл бұрын
For more reading this page has a list of papers, books and other things: awesome.video/
@simulping4371
@simulping4371 7 ай бұрын
@@christianfeldmann3774 oh my god this is such a lifesaver for a multimedia enthusiast
@AdmMusicc
@AdmMusicc 2 ай бұрын
Wow amazing video! How does the coding loop know when the encoding has been finished, if we are iteratively sending the same frame's prediction back to the intra-prediction module? Also, how are the intra and inter-prediction modules working together? Since, they both will try to predict pixel values for the same pixels (albeit using different approaches)
@christianfeldmann3774
@christianfeldmann3774 Ай бұрын
The loop is running on a block base. So each frame is split into blocks and these are processed sequentially. Once all blocks have been processed, the encoding of the frame is done. The intra and inter prediction modules do not interfere. The encoder can try out all different modes but ultimately it will have to decide on exactly one mode (intra or inter) that is then signaled in the bitstream.
@AdmMusicc
@AdmMusicc Ай бұрын
@@christianfeldmann3774 Amazing perfect!! Do you have resources or book material where I xan study this more algorithmically, preferably with code?
@christianfeldmann3774
@christianfeldmann3774 Ай бұрын
@@AdmMusicc I am not sure if there is something that covers this with code. But this is always a good starting point: github.com/krzemienski/awesome-video?tab=readme-ov-file#books
@AuroraLex
@AuroraLex Жыл бұрын
Hi! Is it true that B-frames are not well suited for high-motion content? For example, if dynamic B-frames/look-ahead is used, is the amount of motion the deciding factior regarding the number of consecutive B-frames the encoder choose to use?
@christianfeldmann3774
@christianfeldmann3774 Жыл бұрын
Hi. So this question is hard to answer because this is probably dependent on the codec as well as the specific encoder implementation. But in general for a "normal user" of an encoder this should not matter because the encoder will choose the best coding structure depending on the content that comes in (if the encoder is allowed to choose the coding structure freely). So there is certainly situations where B-frames are less effective (e.g. if the frames are very dissimilar which may happen for very high motion). But in those situations motion compensation in general is not effective.
@AuroraLex
@AuroraLex Жыл бұрын
Ok, thank you for the explaination! Video encoding is such a fascinating topic 🙂
@uzefulvideos3440
@uzefulvideos3440 7 ай бұрын
5:27 Not exactly a fair comparison, since near-transparent audio quality is compared with medium-appeal video here. For transparent video and audio compression, the difference in compression ratio isn't that huge anymore. A big difference seems to be that audio quality below transparency quickly becomes unappealing (maybe partly because it's more densely filled with information we deem important?), while the same is not true for images or video, where we often don't really mind significant perceptual degradation in quality.
@christianfeldmann3774
@christianfeldmann3774 7 ай бұрын
Hi! I am sorry if I offended any audio compression engineers here. I did not mean to say that audio compression is easy. It is definitely not. We can probably discuss all day what would be good/bad quality in video compared to audio and what is worse or comparable. But I think my main point still holds. I was just using very typical values from practical applications. But why they are typical is also discussable. Mostly I think that audio bitrates are low compared to video so that they are typically chosen higher then actually necessary because the main focus is on saving bitrate on video. But of course I also get your point this greatly depends on the application and what you consider good/transparent quality for video and audio.
@Ray-jp8hr
@Ray-jp8hr 2 жыл бұрын
քʀօʍօֆʍ 😄
@MohamedBenamer940
@MohamedBenamer940 6 ай бұрын
It's very good vidéo, but you know why it's really bad also
@MohamedBenamer940
@MohamedBenamer940 6 ай бұрын
👎
Video Compression Is Magical
29:55
Theo - t3․gg
Рет қаралды 86 М.
PCS 2018 - Learned Image Compression
58:59
J Ballé
Рет қаралды 12 М.
Неприятная Встреча На Мосту - Полярная звезда #shorts
00:59
Полярная звезда - Kuzey Yıldızı
Рет қаралды 7 МЛН
WHO DO I LOVE MOST?
00:22
dednahype
Рет қаралды 77 МЛН
I CAN’T BELIEVE I LOST 😱
00:46
Topper Guild
Рет қаралды 64 МЛН
🌊Насколько Глубокий Океан ? #shorts
00:42
Christian Feldmann - VVC - the Next-Next Gen Codec
23:53
Demuxed
Рет қаралды 8 М.
Into the Depths: The Technical Details behind AV1 by Nathan Egge
30:58
Video Compression as Fast As Possible
6:10
Techquickie
Рет қаралды 647 М.
What is MSAA in Graphics? Efficient Multisampling in Vulkan
6:00
Stateless V4L2 Video Encoding - Andrzej Pietrasiewicz, Collabora
33:16
The Linux Foundation
Рет қаралды 693
Why dark video is a terrible mess
6:16
Tom Scott
Рет қаралды 7 МЛН
why do header files even exist?
10:53
Low Level Learning
Рет қаралды 370 М.
Неприятная Встреча На Мосту - Полярная звезда #shorts
00:59
Полярная звезда - Kuzey Yıldızı
Рет қаралды 7 МЛН