H.264 Learning Process

Source: Internet
Author: User

Half a year ago, I knew the term H.264. At that time, I decided to learn H.264, but I didn't even know how to collect the data. In addition, I am the only one in the school to study H. 264. I couldn't find anyone to communicate with, so it was really difficult and painful to learn at that time, but I was able to get to know a student online. 264 of the comrades really made me very happy.

Later, I found some articles about H.264 on the Internet. Of course, I also found Peter Li's website and the streaming media forum. At that time, I did not understand what others asked in the Forum. I don't know how such materials can be used even if someone else wants such materials. The most interesting thing is that I downloaded all the JVT Conference articles. At that time, I didn't know how to use these hundred megabytes of things. Now I know how to use them, it seems that there is still no white space ~~~.

First, let's look at the standards. Because the standard is in English, it is very long. So in order to avoid having forgotten the previous part after reading it, I began to translate and read a piece of translation. However, this process is boring and painful. In addition, there is no courage or confidence to watch more than 300 pages. If you think about it, forget it. Check the source code. At that time, because we knew that JM was a standard test model, we looked at JM. At first, the code was very honest. Every program and every variable was tracked. You can skip this section after tracking the read parameters and initialization variables.

In this way, when the Code cannot be understood, check the standards and go to the streaming media forum to ask. However, the Forum has both advantages and disadvantages. The advantage is that many people can participate in the forum. The disadvantage is that no matter what you ask, you cannot know the answer immediately, therefore, it is a hindrance to your continued reading of the Code. So I went to the QQ group of H.264 and was very happy to find the "H.264 home". But then I was very disappointed. So I got angry and built a group myself, so that I finally had a better communication environment. However, H.264 at that time was just a magnificent palace in my opinion. I still don't understand the questions discussed in the QQ group. In order to get a decent question as a graduation thesis as soon as possible, I did not continue to read h at that time. 264 of the content only took one and a half months to implement a seemingly superficial error hiding algorithm today (because I set my own direction to "error hiding ).

By the time my paper was completed in 264, it was still so strange to H.264. Because I did not continue to read H.264 content during this period of time, the content I have read before is not thorough in understanding and impressed, So I basically forgot it. So at this time, I can say that H.264 is still in the stage of knowing concepts. H.264 is really a huge thing, and for the Chinese, it is so new (I personally think) that large-scale commercial use has not yet begun. If I want to do something valuable before graduation, it seems impossible at the time, so I just had to work hard on my own mistakes, I hope to add some weight to my graduation thesis. In this way, start to read JM code about inter-frame error hiding. Because JM inter-frame error hiding is much more complex than intra-frame error hiding, it involves many related problems. So I should also have some knowledge about these issues during the code reading process. In addition, the frequent discussion in the QQ Group gave me a real start to learn H.264.

After I have hidden the inter-frame error, it is already the end of October. At this time, our school will hold an academic seminar. I decided to add some weight to my graduation and future job search. As a result, I began to prepare the meeting report. by preparing the report, I had to review and familiarize myself with the overall framework of H.264. Now that time has finally come, I am very happy to feel that I have stood at the door of H.264-always making progress. Haha ~~~

Now I have some ideas for learning H.264, so I will discuss it with you:

1. Phase 1:
Learning H. 264 first, you must put the most basic and necessary information in your hands, including: standard documents (that is, the ITU protocol, in the group FTP "protocol standard" Directory), test model (the source code of the decoder provided by ITU, in the group FTP "program source code" Directory), classic article (that is, the article mentioned later, in the group FTP "H. 264 related papers/classic articles ). How can we use these materials? First look inside the "H.264_MPEG-4 Part 10 White Paper", after reading the "Video coding using the H. 264 MPEG-4 AVC compression standard and H. 264 And MPEG-4 Video Compression, then you can take the time to read the Overview of the H. 264 _ AVC Video Coding Standard.pdf. After reading the first three articles, you should have a deep understanding of the overall framework of H.264. This time may only take you about three weeks (it may take so long for me to be stupid. If you happen to have used a longer time than this, it doesn't mean you are dumb than me. It only means that you must chat with MM every day. Haha ~~~), The last article is Overview and Introduction to the Fidelity Range Extensions. the value of this article mainly lies in H. the fourth grade high profile of 264 was introduced, and none of the previous articles involved this grade.

2. Stage 2:
Then you can read the code. At this time, the most commonly used tools are standard documents and test models. The Code is also exquisite. I did not read it as carefully as I did at the beginning, but later I realized that it was far from necessary. As peter Li said: the code should also start with the overall framework. First understand how the overall framework of H.264 is distributed in the code, what is the frontend module and the successor module of a function module. That is to clarify the entire code process. Standard documents may be rarely used at this stage. If the test model you are using is JM, there is one benefit: JVT provides the instruction for the test source code-H.264_MPEG-4 AVC Reference Software Manual (in the group FTP "H. 264 other documents.

3. Stage 3:
Then you can find a starting point that you are interested in and start to study this issue. When you study the problem, you should contact the test model for research. At this time, you need to carefully check the implementation of this problem in the code. At this stage, I absolutely support tracking with one line of code and one parameter. Standards may need to be checked for what is not understood in the code. Now you can refer to the standard document for targeted purposes. It is also because the standard document can be mapped to the code, so reading the standard document does not feel too difficult, but also can understand what the standard document is about, in the test model, how is Code implemented. In this phase, many H.264 related knowledge will be involved, so that we can take the dot-line and the line-plane. You will know more about H.264. And you have found your own direction and finally embarked on the glorious avenue of H.264, which created the Chinese ~~~

=========== [Note] ============
1. Do not open the code and standard documents independently. Otherwise, your difficulties will be great (of course, it may be because I am too stupid, you may be able to use "beet" in any way. Haha ~~~).
2. For people who are new to H.264, do not directly look at the code and standards. Even if they combine the standards and code, you will not be able to perform well. In other words, you 'd better not do anything before you know the overall framework of H.264.
3. You should never feel that it is a waste of time to participate in the discussion and help others find answers (of course, when you think that someone else asks a question that you are familiar. Because you participate in the discussion, especially when you help others find answers, many of your seemingly incorrect questions can gain a deeper understanding.
4. Learn and learn, that is, to ask and learn. Do not develop your own idea of dependency. In fact, you will also learn a lot during your own data query. For example, you may know which article can find the answer to a question, or collect valuable articles about more related questions ...... In addition, I was more impressed by what others told me.
5. Pay attention to methods when reading code. There are many variables in the Code. Don't look at the header file at the beginning and try to figure out what all the variables are. Read the c file directly from the main function. If you encounter a variable that you don't understand, you can check the header file again. If the header file does not provide instructions, you can't ask others-don't develop dependencies.

PS: I know three Chinese books about H264.
1, "H.264 and MPEG-4 video compression": Ouyang he (I see the original English, translation should be good)
2. New Generation video compression coding standard-H.264/AVC: Bi Houjie)
3. "wavelet encoding and network video transmission": Shen lanyun and Zhuo Li (I personally think it is good. I have an introduction to high profile)

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.