ÈÕÀú
| |||||||||
| ÈÕ | Ò» | ¶þ | Èý | ËÄ | Îå | Áù | |||
| 1 | 2 | 3 | 4 | ||||||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 | |||
| 12 | 13 | 14 | 15 | 16 | 17 | 18 | |||
| 19 | 20 | 21 | 22 | 23 | 24 | 25 | |||
| 26 | 27 | 28 | 29 | 30 | 31 | ||||
´æµµ
ËÑË÷±êÌâ
×îÐÂÀ´¿Í
ÎÒµÄÊÕ²Ø
ͳ¼ÆÐÅÏ¢
- ·ÃÎÊÁ¿: 1991
- ÈÕÖ¾Êý: 24
- ͼƬÊý: 3
- ½¨Á¢Ê±¼ä: 2006-12-11
- ¸üÐÂʱ¼ä: 2008-10-06
ÎÒµÄ×îÐÂÈÕÖ¾
-
´úÂ븲¸ÇÂÊ·ÖÎö£¨gcov£©(ת)
2008-8-11
ΪʲôÐèÒª´úÂ븲¸ÇÂÊ·ÖÎö£¿
ÔÚ·¢²¼´úÂëµÄʱºò£¬ÎÒÃdz£³£»á¶ÔÆä½øÐÐһϵÁеIJâÊÔÀ´Ðµ÷Èí¼þµÄÐÔÄܺ͹¦ÄÜ£¬Ê¹ËûÃǺÍÔ¤¼ÆµÄÏàͬ¡£µ«ÊǼìÑéͨ³£¶¼ÊÇÏ൱µÄÀ§ÄÑ£¬¼´Ê¹³ÌÐòÏ൱µÄ¼òµ¥¡£¿ª·¢Õß³£³£»á½èÖúһЩ²âÊÔ¹¤¾ß£¨test suite)À´Ä£Äâ»òÕßÖØ½¨Ö´Ðнű¾¡£Èç¹û²âÊÔ³ÌÐò×éÊdz¹µ×µÄ£¬ÄÇô³ÌÐòµÄ¸÷¸ö¹¦Äܶ¼½«±»²âÊÔµ½²¢ÇÒ¶¼¿ÉÒÔÖ¤Ã÷ÊÇ¿ÉÒÔ¹¤×÷µÄ¡£
µ«ÊÇÔõÑù²ÅËã³¹µ×ÄØ£¿¼òµ¥µã˵¾ÍÊDzâÊÔ³ÌÐòµÄÿһÌõ·¾¶£¬Ñé֤ÿһ¸ö½á¹û£¬Ö´ÐÐÿһÌõÓï¾ä£¬Ö¤Ã÷ûһ¾äÓï¾äÊÇûÓõġ£gcov¾ÍÊÇÒ»¸öÓÃÀ´¼ìÑéÄãµÄÿһ¾äÓï¾äÊÇ·ñ¶¼Ö´ÐÐÁ˵Ť¾ß¡£
ʲôÊÇ´úÂ븲¸ÇÂÊ·ÖÎö£¿
´úÂ븲¸ÇÂÊ·ÖÎö¾ÍÊÇÕÒµ½¶¨Î»Ã»ÓõĻòÕß²»Ö´ÐеĴúÂëµÄ¹ý³Ì¡£Ã»ÓõĴúÂë²»»á´æÔÚʲôÎÊÌ⣬µ«ÊÇËûÃÇ»áÓ°Ïì³ÌÐòµÄ¿É¶ÁÐÔ£»²»Ö´ÐеĴúÂëÔò¿ÉÄÜÊÇδÀ´bugµÄËùÔÚ¡£ËùÒÔÕÒµ½ËûÃÇ£¬°ÑËûÃÇ´ÓÄãµÄ³ÌÐòÖÐÒÆ´¦ÊÇ´óÓÐñÔÒæµÄ¡£
¸²¸ÇÂÊ·ÖÎöÖ÷ÒªÓÐÏÂÃæµÄ¼¸¸ö¹ý³Ì£º
ͨ¹ý²âÊÔ³ÌÐò×éÕÒµ½²»Ö´ÐеijÌÐò¶Î£»
Ìí¼Ó¶îÍâ²âÊÔ³ÌÐò×飬ÒÔ±ãÔö¼Ó´úÂ븲¸ÇÂÊ£»
¾ö¶¨´úÂ븲¸ÇÂʵ͍Á¿²â¶È£¬ËûÒ²ÊdzÌÐòÖÊÁ¿µÄ¼ä½Ó²â¶È¡£
´úÂ븲¸ÇÂÊ·ÖÎöµÄȱÏÝ
´úÂ븲¸ÇÂÊ·ÖÎö²»ÄÜÕÒ³ö³ÌÐòµÄÂß¼´íÎ󡣿¼ÂÇÒ»ÏÂÏÂÃæµÄ´úÂë
10: rc = call_to_xx ();
11: if (rc == ERROR_FATAL)
12: exit(2); /* exit with error code 2 */
13: else
14: /* continue on */
µ±²âÊÔ³ÌÐò¶ÎÔËÐе½11ÐÐʱ£¬11ÐÐʼÖÕ¶¼²»ÄÜÎªÕæ¡£call_to_xx·µ»ØÁËÁíÍâµÄÒ»¸ö´íÎó±ÈÈçERROR_HANDLE£¬³ý·ÇÎÒÃǼÓÈëÕâÖÖ´íÎóµÄ´¦Àí·½Ê½µÄ´úÂë¡£
´úÂ븲¸Ç²âÊÔ¹¤¾ß²»»á¸æËßÄãʲôÊDZØÐëµÄ£¬ËûÃÇÖ»ÄÜÏÔʾÒѾ´æÔڵĴúÂëµÄ¸²¸ÇÂÊ¡£
´úÂ븲¸ÇÂʵÄÀàÐÍ
gcov¿ÉÒÔÓÃÀ´²âÁ¿¸÷ÖÖÐÎʽµÄ´úÂ븲¸ÇÂÊ¡£×î³£¼û×îÓÐÓõÄÁ½ÖÖÊÇ·ÖÖ§¸²¸Ç£¨branch coverage)ºÍÑ»·¸²¸Ç£¨loop coverage£©
·ÖÖ§¸²¸ÇÖ¤Ã÷¸÷¸ö·½ÏòµÄÿһÌõ·ÖÖ§¶¼±»Ö´Ðе½ÁË¡£Ñ»·¸²¸ÇÊÔͼ֤Ã÷Ñ»·ÄÚ²¿µÄÿһÌõ·¾¶¶¼±»²âÊÔµ½ÁË¡£Ñ»·¸²¸ÇËÆºõ·Ç³£µÄ¸´ÔÓ£¬µ«»ù±¾ÉÏÖ»ÒªÂú×ãÏÂÃæµÄÈý¸ö×´¿ö£¬¾Í¿ÉÒÔ×÷ÁË¡£
1¡£Ñ»·Ìõ¼þ²»Âú×㣬ѻ·Ã»ÓÐÄÚ²¿Ã»ÓÐÖ´ÐУ»
2¡£Ñ»·Ìõ¼þ¾ÍÂú×ãÁËÒ»´Î£¬Ñ»·ÄÚ²¿¾ÍÖ´ÐÐÁËÒ»´Î£»
3¡£Ñ»·Ìõ¼þÖÁÉÙÂú×ãÁËÁ½´Î£¬Ñ»·ÖÁÉÙÖ´ÐÐÁËÁ½´Î¡£
¾Ù¸öÀý×Ó
void function(int number)
{
if (number % 2) == 0)
printf("even \n");
for (;number < 9; number++){
printf("number is %d\n", number);
}
}
function(11); Âú×ã×´¿öÒ»
function(8); Âú×ã×´¿ö¶þ
function(6); Âú×ã×´¿öÈý
´úÂ븲¸ÇÂʹ¤¾ßgcovµÄʹÓÃ
ҪʹÓÃgcov£¬ÐèÒªÔÚÎÒÃÇÓÃgcc±àÒë³ÌÐòʱ¼ÓÈëÁ½¸ö²ÎÊýfprofile-arcsºÍftest-coverage.
fprofile-arcs²ÎÊýʹgcc´´½¨Ò»¸ö³ÌÐòµÄÁ÷ͼ£¬Ö®ºóÕÒµ½ÊʺÏͼµÄÉú³ÉÊ÷¡£Ö»Óв»ÔÚÉú³ÉÊ÷ÖеĻ¡±»²Ù×Ý£¨instrumented£©£ºgccÌí¼ÓÁË´úÂëÀ´ÇåµãÕâЩ»¡Ö´ÐеĴÎÊý¡£µ±Õâ¶Î»¡ÊÇÒ»¸ö¿éµÄΨһ³ö¿Ú»òÈë¿Úʱ£¬²Ù×ݹ¤¾ß´úÂ루instrumentation code)½«»áÌí¼Óµ½¿éÖУ¬·ñÔò´´½¨Ò»¸ö»ù´¡¿éÀ´°üº¬²Ù×ݹ¤¾ß´úÂë¡£
gcovÖ÷ҪʹÓÃ.gcnoºÍ.gcdaÁ½¸öÎļþ
.gcnoÊÇÓÉ-ftest-coverage²úÉúµÄ£¬Ëü°üº¬ÁËÖØ½¨»ù±¾¿éͼºÍÏàÓ¦µÄ¿éµÄÔ´ÂëµÄÐкŵÄÐÅÏ¢¡£
.gcdaÊÇÓɼÓÁË-fprofile-arcs±àÒë²ÎÊýµÄ±àÒëºóµÄÎļþÔËÐÐËù²úÉúµÄ£¬Ëü°üº¬ÁË»¡Ìø±äµÄ´ÎÊýºÍÆäËûµÄ¸ÅÒªÐÅÏ¢¡£
ÏÂÃæÊÇÒ»¸ö¼òÒªµÄ·¶Àý£º
1 #include <stdlib.h>
2 #include <stdio.h>
3
4 int main(int argc,char** argv)
5 {
6 int x,y;
7 int arraysize;
8 int **array;
9
10 if(argc!=2)
11 {
12 printf("Usage: %s Enter arraysize value\n;",argv[0]);
13 exit(-1);
14 }
15 else
16 {
17 arraysize = atoi(argv[1]);
18 if(arraysize <=0)
19 {
20 printf("Array size must be larger than 0\n;");
21 exit(-1);
22 }
23 }
24
25 array = (int**) malloc( arraysize*sizeof(int*));
26
27 printf("Creating an %d by %d array \n",arraysize,arraysize);
28
29 if(array == NULL)
30 {
31 printf("Malloc failed for array size %d \n",arraysize);
32 exit(-1);
33 }
34
35 for (x=0;x<arraysize;x++)
36 {
37 array[x] = (int*) malloc (arraysize*sizeof(int));
38
39 if(array[x] == NULL)
40 {
41 printf("Failed malloc for array size %d\n",arraysize);
42 exit(-1);
43 }
44 }
45
46 exit(0);
47 }
$ gcc -fprofile-arcs -ftest-coverage -g -o sample test.c
$ ./sample 10
Creating an 10 by 10 array
$ gcov test.c
File ''/usr/include/sys/sysmacros.h''
Lines executed:0.00% of 6
/usr/include/sys/sysmacros.h:creating ''sysmacros.h.gcov''
File ''test.c''
Lines executed:57.89% of 19
test.c:creating ''test.c.gcov''
$ cat test.c.gcov
-: 0:Source:test.c
-: 0:Graph:test.gcno
-: 0:Data:test.gcda
-: 0:Runs:1
-: 0:Programs:1-: 1:#include <stdlib.h>
-: 2:#include <stdio.h>
-: 3:
-: 4:int main(int argc,char** argv)
1: 5:{
-: 6: int x,y;
-: 7: int arraysize;
-: 8: int **array;
-: 9:
1: 10: if(argc!=2)
-: 11: {
#####: 12: printf("Usage: %s Enter arraysize value;\n",argv[0]);
#####: 13: exit(-1);
-: 14: }
-: 15: else
-: 16: {
1: 17: arraysize = atoi(argv[1]);
1: 18: if(arraysize <=0)
-: 19: {
#####: 20: printf("Array size must be larger than 0;\n");
#####: 21: exit(-1);
-: 22: }
-: 23: }
-: 24:
1: 25: array = (int**) malloc( arraysize*sizeof(int*));
-: 26:
1: 27: printf("Creating an %d by %d array \n",arraysize,arraysize);
-: 28:
1: 29: if(array == NULL)
-: 30: {
#####: 31: printf("Malloc failed for array size %d \n",arraysize);
#####: 32: exit(-1);
-: 33: }
-: 34:
11: 35: for (x=0;x<arraysize;x++)
-: 36: {
10: 37: array[x] = (int*) malloc (arraysize*sizeof(int));
-: 38:
10: 39: if(array[x] == NULL)
-: 40: {
#####: 41: printf("Failed malloc for array size %d\n",arraysize);
#####: 42: exit(-1);
-: 43: }
-: 44: }
-: 45:
1: 46:&n
bsp; exit(0);
-: 47:}
ÕýÈçÎÒÃÇ¿´µ½µÄ,ÎÒÃÇÏÖÔڵĸ²¸ÇÂÊÊÇ57.89%£¬#####ºóÃæµÄÓï¾äÊÇÏÖÔÚûÓй»Ö´Ðе½µÄ¡£
$ ./sample
Usage: ./sample Enter arraysize value;
$ gcov test.c
File ''/usr/include/sys/sysmacros.h''
Lines executed:0.00% of 6
/usr/include/sys/sysmacros.h:creating ''sysmacros.h.gcov''
File ''test.c''
Lines executed:68.42% of 19
test.c:creating ''test.c.gcov''
ÏÖÔÚÔËÐÐÁËûÓвÎÊýµÄÇé¿ö£¬ÕâÖÖÇé¿öÕ¼ÁË10.53%(68.42-57.89)
$ ./sample 0
Array size must be larger than 0;
$ gcov test.c
File ''/usr/include/sys/sysmacros.h''
Lines executed:0.00% of 6
/usr/include/sys/sysmacros.h:creating ''sysmacros.h.gcov''
File ''test.c''
Lines executed:78.95% of 19
test.c:creating ''test.c.gcov''
ÓвâÊÔÁËÒ»ÖÖÇé¿ö£¬ÄǾÍÊÇarraysize=0ÏÖÔڵĸ²¸ÇÂÊÒѾ´ïµ½ÁË78.95%
»¹ÓÐÁ½ÖÖÇé¿ö£¬ÄǾÍÊǶþάÊý×éµÄµÚһάºÍµÚ¶þάÄÚ´æ¿Õ¼äµÄÉêÇëÁË¡£ÔÚÏÖÔÚµÄ×´¿öÏ£¬malloc()²»Ì«¿ÉÄÜ·ÖÅäʧ°Ü£¬ËùÒÔÎÒÃǽèÖú¹¤¾ßgdbÀ´Ä£Äâmallocʧ°ÜʱµÄÇé¿ö¡£
$ gdb sample
GNU gdb Red Hat Linux (6.6-16.fc7rh)
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) l
1 #include <stdlib.h>
2 #include <stdio.h>
3
4 int main(int argc,char** argv)
5 {
6 int x,y;
7 int arraysize;
8 int **array;
9
10 if(argc!=2)
(gdb) l
11 {
12 printf("Usage: %s Enter arraysize value\n;",argv[0]);
13 exit(-1);
14 }
15 else
16 {
17 arraysize = atoi(argv[1]);
18 if(arraysize <=0)
19 {
20 printf("Array size must be larger than 0\n;");
(gdb) l
21 exit(-1);
22 }
23 }
24
25 array = (int**) malloc( arraysize*sizeof(int*));
26
27 printf("Creating an %d by %d array \n",arraysize,arraysize);
28
29 if(array == NULL)
30 {
(gdb) b 29
Breakpoint 1 at 0x8048ada: file test.c, line 29.
(gdb) r 10
Starting program: /home/secularbird/Templates/test/sample 10
Creating an 10 by 10 array
Breakpoint 1, main (argc=2, argv=0xbf9b59f4) at test.c:29
29 if(array == NULL)
(gdb) print array
$1 = (int **) 0x90af008
(gdb) set array=0
(gdb) print array
$2 = (int **) 0x0
(gdb) step
31 printf("Malloc failed for array size %d \n",arraysize);
(gdb) cont
Continuing.
Malloc failed for array size 10
Program exited with code 0377.
(gdb) quit
lÃüÁîÊÇlistµÄ¼òд£¬ÏÔʾÁ˳ÌÐòµÄÔ´´úÂë¡£
b 29ÊÇÔÚ29ÐÐÉèÖÃÒ»¸ö¶Ïµã£¬Ö®ËùÒÔÕâÑùÉèÖÃÊÇÒòΪarray¿Õ¼äÉêÇë¹ýÁË£¬ÎÒÃÇΪÁËÄ£ÄâÐèÒª¸Ä±äËüµÄÖµ¡£
r 10ÊÇrun 10£¬Ò²¾ÍÊÇÔËÐгÌÐò£¬10ÊÇ´«µÝµÄÃüÁîÐвÎÊý¡£
print array´òÓ¡arrayµÄµØÖ·
set array=0½«arrayÖ¸Ïò¿ÕµØÖ·
stepÒ»²½Ò»²½µÄÔËÐгÌÐò£¬¼òдÊÇs
cont¼ÌÐøÔËÐгÌÐò
quitÍ˳ögdb¡£
½ÓÏÂÀ´×öÀàËÆµÄ¹¤×÷²úÉúÁíÒ»¸ömalloc fail¡£
$ gdb sample
GNU gdb Red Hat Linux (6.6-16.fc7rh)
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "sh ow copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) l
1 #include <stdlib.h>
2 #include <stdio.h>
3
4 int main(int argc,char** argv)
5 {
6 int x,y;
7 int arraysize;
8 int **array;
9
10 if(argc!=2)
(gdb) l
11 {
12 printf("Usage: %s Enter arraysize value\n;",argv[0]);
13 exit(-1);
14 }
15 else
16 {
17 arraysize = atoi(argv[1]);
18 if(arraysize <=0)
19 {
20 printf("Array size must be larger than 0\n;");
(gdb) l
21 exit(-1);
22 }
23 }
24
25 array = (int**) malloc( arraysize*sizeof(int*));
26
27 printf("Creating an %d by %d array \n",arraysize,arraysize);
28
29 if(array == NULL)
30 {
(gdb) l
31 printf("Malloc failed for array size %d \n",arraysize);
32 exit(-1);
33 }
34
35 for (x=0;x<arraysize;x++)
36 {
37 array[x] = (int*) malloc (arraysize*sizeof(int));
38
39 if(array[x] == NULL)
40 {
(gdb) b 39
Breakpoint 1 at 0x8048b7a: file test.c, line 39.
(gdb) r 10
Starting program: /home/secularbird/Templates/test/sample 10
Creating an 10 by 10 array
Breakpoint 1, main (argc=2, argv=0xbfdcae04) at test.c:39
39 if(array[x] == NULL)
(gdb) print array[0]
$1 = (int *) 0x9bc2038
(gdb) set array[0]=0
(gdb) step
41 printf("Failed malloc for array size %d\n",arraysize);
(gdb) cont
Continuing.
Failed malloc for array size 10
Program exited with code 0377.
(gdb) quit
$ gcov test.c
File ''/usr/include/sys/sysmacros.h''
Lines executed:0.00% of 6
/usr/include/sys/sysmacros.h:creating ''sysmacros.h.gcov''
File ''test.c''
Lines executed:100.00% of 19
test.c:creating ''test.c.gcov''
µ½ÏÖÔÚΪֹÿÌõ·¾¶¶¼²âÊÔ¹ýÁË£¬´úÂ븲¸ÇÂÊÒ²ÒѾ´ïµ½ÁË100%£¬Ò²¿ÉÒԲ鿴һÏÂtest.c.gcovÎļþ
ÀïÃæÒѾûÓÐ#####ÁË¡£
²Î¿¼×ÊÁÏ£º
Linux® Debugging and Performance Tuning: Tips and Techniques By Steve Best
man gcov
http://gcc.gnu.org/onlinedocs/gcc/Gcov-Data-Files.html#Gcov-Data-Files -
H.264¼òµ¥×ܽá(Èç˪µÄÌì¿Õ)(ÑÏÖØ²Î¿¼µÄÊDZϺñ½ÜµÄÊé)
2008-7-28
Ò»¡¢ÊÓÆµÐÅÏ¢ºÍÐźŵÄÌØµã
1£®1 Ö±¹ÛÐÔ
ÀûÓÃÈ˵ÄÊÓ¾õϵͳ£¬Ö±½Ó»ñÈ¡ÊÓÆµÐÅÏ¢
1£®2 È·¶¨ÐÔ
ÊÓÆµÐÅÏ¢Ö»¹Ü¾ßÌ壬²»Ò×ÓëÆäËûÄÚÈÝ»ìÏý
1£®3 ¸ßЧÐÔ
ÀûÓÃÊÓ¾õϵͳ£¬ÈËÃÇ¿ÉÒÔ²¢ÐеĹ۲ìͼÏñµÄ¸÷¸öÏóËØ£¬Òò´Ë¾ßÓиßЧÐÔ¡£
1£®4 ¹ã·ºÐÔ
ÊÓ¾õϵͳռÍâ½çÐÅÏ¢×ÜÁ¿µÄ70£¥
1£®5ÊÓÆµÐźŵĸߴø¿íÐÔ
ÊÓÆµÐÅÏ¢°üº¬´óÁ¿µÄ±ä»¯µÄÐÅÏ¢£¬ÐÅÏ¢Á¿¼«´ó£¬´«ÊäÍøÂçËùÐèÒªµÄ´ø¿íÏà¶Ô½Ï´ó¡£
¶þ¡¢ÊÓÆµÑ¹ËõµÄÒªÇóºÍ¿ÉÄÜÐÔ
2£®1ÊÓÆµÑ¹Ëõ±àÂëµÄÄ¿±ê
ÓÉÓÚÊÓÆµÐÅÏ¢Á¿´ó£¬´«Êä´ø¿í¸ß£¬¾ÍÒªÇóÏȶÔÊÓÆµÔ´Ñ¹Ëõ£¬È»ºó´«Ê䣬ÒÔ±ã½ÚÔ¼´ø¿íºÍ´æ´¢¿Õ¼ä¡£
£¨1£© ÊÓÆµ±ØÐëѹËõÔÚÒ»¶¨µÄ´ø¿íÄÚ£¬Òª±£Ö¤×ã¹»µÄѹËõ±È¡£
£¨2£© ÊÓÆµÑ¹Ëõºó£¬¾»Ö¸´Òª±£Ö¤Ò»¶¨µÄÊÓÆµÖÊÁ¿
£¨3£© ÊÓÆµ±àÂëÆ÷µÄʵÏÖ·½Ê½Ó¦Á¦Çó¼òµ¥¡¢Ò×ʵÏÖ¡¢µÍ³É±¾¡¢¿É¿¿ÐԸߡ£
2£®2ÊÓÆµÑ¹ËõµÄ¿ÉÄÜÐÐ
£¨1£©Ê±¼äÏà¹ØÐÐ
ÔÚÒ»×éÊÓÆµÐòÁÐÖУ¬ÏàÁÚÁ½Ö¡Ö»Óм«ÉٵIJ»Í¬Ö®´¦£¬Õâ±ãÊÇʱ¼äÏà¹ØÐÔ¡£
£¨2£©¿Õ¼äÏà¹ØÐÔ
ÔÚͬһ֡ÖУ¬ÏàÁÚÏóËØÖ®¼äÓкܴóµÄÏà¹ØÐÔ£¬Á½ÏóËØÔ½½ü£¬²àÏà¹ØÐÔԽǿ¡£
Èý¡¢ÊÓÆµ±àÂë¼¼Êõ
3£®1»ù±¾½á¹¹
ÊÓÆµ±àÂ뷽ʽÓë²ÉÓõÄÐÅÔ´Óйء£¸ù¾Ý²ÉÓõÄÐÅÔ´µÄÄ£ÐÍ£¬ÊÓÆµ±àÂë¿ÉÒÔ·ÖΪÁ½´óÀࣺ»ùÓÚ²¨ÐεıàÂëºÍ»ùÓÚÄÚÈݵıàÂë¡£
3£®2 »ùÓÚ²¨ÐεıàÂë
Èç¹û²ÉÓá°Ò»·ùͼÏñÓÉÐí¶àÏóËØ¹¹³É¡±µÄÐÅÔ´Ä£ÐÍ£¬ÕâÖÖÐÅÔ´Ä£Ð͵IJÎÊý¾ÍÊÇÏóËØµÄÁÁ¶ÈºÍÉ«¶ÈµÄ·ù¶ÈÖµ£¬¶ÔÕâЩ²ÎÊý½øÐбàÂëµÄ¼¼Êõ¼´Îª»ùÓÚ²¨ÐαàÂë¡£
ÀûÓÃÏóËØ¿Õ¼äµÄÏà¹ØÐÔºÍÖ¡¼äµÄʱ¼äÏà¹ØÐÔ£¬²ÉÓÃÔ¤²â±àÂëºÍ±ä»¯±àÂë¼¼Êõ£¬¼õÉÙÊÓÆµÐźŵÄÏà¹ØÐÔ£¬´Ó¶øÏÔÖø½µµÍÊÓÆµÐòÁеÄÂëÂÊ£¬ÊµÏÖѹËõ±àÂëµÄÄ¿±ê¡£
3£®3 »ùÓÚÄÚÈݵıàÂë
Èç¹û²ÉÓÃÒ»¸ö·ÖÁ¿Óм¸¸öÎïÌå¹¹³ÉµÄÐÅÔ´Ä£ÐÍ£¬ÕâÖÖÐÅÔ´Ä£Ð͵IJÎÊýʸ÷¸öÎïÌåµÄÐÎ×´£¬ÎÆÀí£¬Ô˶¯£¬¶ÔÕâЩ²ÎÊý½øÐбàÂëµÄ¼¼Êõ¾ÍÊÇ»ùÓÚÄÚÈݵıàÂë¡£
ËÄ¡¢h264µÄÓ¦ÓÃ
4£®1 H. 264µÄ¼¼ÊõÌØµã¿ÉÒÔ¹éÄÉΪÈý¸ö·½Ãæ
£¨1£©×¢ÖØÊµÓÃ;
£¨2£©×¢ÖضÔÒÆ¶¯ºÍIPÍøÂçµÄÊÊÓ¦;
£¨3£©ÔÚ»ìºÏ±àÂëÆ÷µÄ»ù±¾¿ò¼ÜÏ£¬¶ÔÆäÖ÷Òª¹Ø¼ü²¿¼þ¶¼×öÁËÖØ´ó¸Ä½ø£¬Èç¶àģʽÔ˶¯¹À¼Æ¡¢Ö¡ÄÚÔ¤²â¡¢¶àÖ¡Ô¤²â¡¢»ùÓÚÄÚÈݵı䳤±àÂë¡¢4X4¶þάÕûÊý±ä»»µÈ¡£
£¨4£©ÔÚ¹Ø×¢H. 264µÄÓÅÔ½ÐÔÄܵÄͬʱ±ØÈ»ÐèÒªºâÁ¿ÆäʵÏÖÄѶȡ£´Ó×ÜÌåÉÏ˵£¬H. 264ÐÔÄܵĸĽøÊÇÒÔÔö¼Ó¸´ÔÓÐÔΪ´ú¼Û¶ø»ñµÃµÄ¡£¾Ý¹À¼Æ£¬H. 264 ±àÂëµÄ¼ÆË㸴ÔÓ¶È´óÔ¼Ï൱ÓÚH. 263µÄ3±¶£¬½âÂ븴ÔÓ¶È´óÔ¼Ï൱ÓÚH. 263µÄ2±¶.
4£®2 h264Ó¦ÓÿɷÖΪ3¸ö¼¶±ð:
(1) »ù±¾µµ´Î: (¼òµ¥°æ±¾, Ó¦ÓÃÃæ¹ã, Ö§³ÖÖ¡ÄÚºÍÖ¡¼ä±àÂë, »ùÓڿɱä³Ì¶ÈµÄìØ±àÂë.)
Ó¦ÓÃÁìÓò: ÊÓÆµ»á»°, »áÒéµçÊÓ, ÎÞÏßͨÐŵÈʵʱͨÐÅ.
(2) Ö÷Òªµµ´Î: ( ²ÉÓÃÁ˶àÏîÌá¸ßͼÏñÖÊÁ¿ºÍÔö¼ÓѹËõ±ÈµÄ¼¼Êõ´ëÊ©, Ö§³Ö¸ôÐÐÊÓÆµ, Ö§³Ö»ùÓÚÉÏÏÂÎĵÄ×ÔÊÊÓ¦µÄËãÊõ±àÂë.)
Ó¦ÓÃÁìÓò: Êý×ֹ㲥ÓëÊý×ÖÊÓÆµ´æ´¢.
£¨3£©À©Õ¹µµ´Î: Ó¦ÓÃÁìÓò: ¿ÉÓÃÓÚ¸÷ÖÖÍøÂçµÄÊÓÆµÁ÷´«Ê䣬ÊÓÆµµã²¥
Îå¡¢ÊÓÆµ±àÂëÔÀí
5£®1»ù±¾¸ÅÄî
£¨1£©ÊÓÆµ±àÂëÆ÷Äܹ»¶ÔÒ»¸öͼÏñ»òÕßÒ»¸öÊÓÆµÐòÁнøÐÐѹËõ£¬²úÉúÂëÁ÷¡£
ÔÚÉÏͼÖУ¬±àÂëÆ÷ÊäÈëµÄÖ¡»ò³¡Fn£¬ÒÔºê¿éΪµ¥Î»±»±àÂëÆ÷´¦Àí (ͼÉÏ´«²»Éϰ¡£¡)¡£
Èç¹û²ÉÓÃÖ¡¼äÔ¤²â±àÂ룺ÆäÔ¤²âÖµP£¬ÊÇÓÉÒѱàÂëµÄͼÏñ×ö²Î¿¼£¬¾Ô˶¯²¹³¥µÃµ½µÄ¡£Ô¤²âͼÏñPºÍµ±Ç°Ö¡FnÏà¼õ£¬µÃµ½Á½Í¼ÏñµÄ²Ð²îÖµDn£¬DnÔÚ¾¹ýת»»T£¬Á¿»¯Q£¬È¥´¦¿Õ¼äÈßÓ࣬µÃµ½ÏµÊýX£¬½«XÖØÅÅ£¨Ê¹Êý¾Ý¸ü¼Ó½ô´Õ£©£¬ìرàÂ루¼ÓÈëÔ˶¯Ê¸Á¿¡£Ò»Ð©Í¼ÏñÏà¹ØµÃÐÅÏ¢£©£¬µÃµ½nalÊý¾Ý¡£
ÔÚ±àÂëÆ÷ÖÐÓиöÖØ¹¹µÄ¹ý³Ì£¨½âÂëµÄ¹ý³Ì£©£¬Á¿»¯ÏµÊýX£¬·´Á¿»¯£¬·´±ä»»£¬µÃµ½Dn¡¯£¬Dn¡¯ºÍÔ¤²âͼÏñPÏà¼Ó£¬µÃµ½uFn¡¯,ÔÙÂ˲¨µÃµ½Fn¡¯£¬Fn¡¯¾ÍÊÇFn±àÂëÔÙ½âÂëºóµÃͼÏñ¡£
Èç¹û²ÉÓÃÖ¡ÄÚÔ¤²â±àÂ룺Ԥ²âÖµP£¬ÊÇÓɵ±Ç°Æ¬ÖУ¬¼º±àÂëµÄºê¿éÔ¤²âµÃµ½µÄ£¨ÁÁ¶È4¡Á4»òÕß16¡Á16Ô¤²â£¬É«¶È8¡Á8Ô¤²â£©¡£µ±Ç°´ý´¦ÀíµÄ¿é£¬¼õÈ¥Ô¤²âÖµP£¬µÃ²Ð²îÖµDn£¬DnÔÚ¾¹ýת»»T£¬Á¿»¯Q£¬µÃµ½ÏµÊýX£¬½«XÖØÅÅ£¨Ê¹Êý¾Ý¸ü¼Ó½ô´Õ£©£¬ìرàÂ룬µÃµ½nalÊý¾Ý¡£
ÔÚÖØ¹¹µÄ¹ý³ÌÖУ¬Á¿»¯ÏµÊýX£¬·´Á¿»¯£¬·´±ä»»£¬µÃµ½Dn¡¯£¬Dn¡¯ºÍÔ¤²âͼÏñPÏà¼ÓµÃµ½µ±Ç°ºê¿é±àÂë½âÂëºóµÃÖµ£¬¸ÃÖµ¿ÉÒÔÓÃÀ´×öÖ¡ÄÚÔ¤²âµÄ²Î¿¼ºê¿é¡£
±àÂëÆ÷ÒªÓÐÖØ¹¹»úÖÆµÄÔÒò£ºÖع¹¹ý³Ì£¬ÊµÖÊÉÏÊǸö½âÂëµÄ¹ý³Ì£¬½âÂëºóµÄͼÏñºÍԴͼ¿Ï¶¨Óвî±ð£¬ÎÒÃÅÀûÓýâÂëºóµÄͼÏñ×ö²Î¿¼£¬¾ÍÄܹ»ºÍ½âÂëÆ÷Öб£ÖµÒ»Ö£¬¾ÍÄܹ»Ìá¸ßͼÏñµÄÔ¤²â¾«¶È¡££¨ÔÚ½âÂëÆ÷ÖУ¬ÊÇÀûÓüº½âÂëµÄͼÏñ×ö²Î¿¼£¬ÊÇ´Ó½âÂëµÄͼÏñÔ¤²â³öÏÂÒ»¸±Í¼Ïñ£©
£¨2£©ÊÓÆµ½âÂëÆ÷£º Äܹ»¶ÔÒ»¸öÂëÁ÷½âÂ룬²úÉúºÍԴͼ»òÔ´ÊÓÆµÐòÁÐÏà½üµÄͼÏñ»òÊÓÆµÐòÁС£Èç¹û½âÂë³öµÄͼÏñºÍԴͼÊÇÒ»ÑùµÄ£¬Õâ¸ö±à½âÂë¹ý³ÌÊÇÎÞËðµÄ£¬·ñÔòÊÇÓÐËð¡£
½âÂëÆ÷µÄʵÏֺͱàÂëÆ÷µÄÖØ¹¹»úÖÆ£¬ÊÇÒ»ÑùµÄ¡£
£¨3£©³¡ ¡¢Ö¡¡¢Í¼Ïñ
³¡£º¸ôÐÐɨÃèµÄͼÏñ£¬Å¼ÊýÐгÉΪ¶¥³¡ÐС£ÆæÊýÐгÉΪµ×³¡ÐС£ËùÓж¥³¡ÐгÆÎª¶¥³¡¡£ËùÓе׳¡ÐгÆÎªµ×³¡¡£
Ö¡£ºÖðÐÐɨÃèµÄͼÏñ¡£
ͼÏñ£º³¡ºÍÖ¡¶¼¿ÉÈÏΪÊÇͼÏñ¡£
£¨4£©ºê¿é¡¢Æ¬£º
ºê¿é£ºÒ»¸öºê¿éÓÉÒ»¸ö16¡Á16ÁÁ¶È¿é¡¢Ò»¸ö8¡Á8CbºÍÒ»¸ö8¡Á8Cr×é³É¡£
Ƭ£ºÒ»¸öͼÏñ¿ÉÒÔ»®·Ö³ÉÒ»¸ö»ò¶à¸öƬ£¬Ò»¸öƬÓÉÒ»¸ö»ò¶à¸öºê¿é×é³É¡£
5£®2±àÂëÊý¾Ý¸ñʽ
5£®2£®1 h264Ö§³Ö4£º2£º0µÄÁ¬Ðø»ò¸ôÐÐÊÓÆµ±àÂë½âÂë¡£
5£®2£®2 h264µÄ±àÂë¸ñʽ
ÖÆ¶¨h264µÄÖ÷ҪĿ±êÓÐÁ½¸ö£º
£¨1£©µÃµ½¸ßµÄÊÓÆµÑ¹Ëõ±È
£¨2£©¾ßÓÐÁ¼ºÃµÄÍøÂçÇ׺ÍÐÔ£¬¼´¿ÉÊÊÓ¦ÓÚ¸÷ÖÖ´«ÊäÍøÂç¡£
Ϊ´Ë£¬h264µÄ¹¦ÄÜ·ÖΪÁ½²ã£¬ÊÓÆµ±àÂë²ã£¨VCL£©ºÍÍøÂçÌáÈ¡²ã£¨NAL£©
VCLÊý¾Ý¼´±»Ñ¹Ëõ±àÂëºóµÄÊÓÆµÊý¾ÝÐòÁС£ÔÚVCLÊý¾ÝÒª·â×°µ½NALµ¥ÔªÖÐÖ®ºó£¬²Å¿ÉÒÔÓÃÀ´´«Êä»ò´æ´¢¡£NALµ¥Ôª¸ñʽÈçÏÂͼ£º
NalÍ·
Rbsp
NalÍ·
Rbsp
NalÍ·
Rbsp
5£®2£®3 h264ÂëÁ÷½á¹¹
²é¿´(15) ÆÀÂÛ(0)H.264½âÂëÆ÷Öвο¼Í¼ÏñµÄ¹ÜÀí(ת×Ô ÀîÊÀƽ)
2008-7-28
¡¾Ð´ÔÚÇ°Ãæ¡¿ÓÉÓÚH.264²ÉÓÃÁ˶à²Î¿¼Ö¡Ô¤²â¼¼Êõ£¬ËùÒÔÆä²Î¿¼Í¼ÏóµÄ¹ÜÀí±È½Ï¸´ÔÓ¡£GO50Ö»ÊÇ˵Ã÷ÁËÔõôÓã¬Ã»Óн²Ã÷ΪʲôÕâôÓ㬴ó¼Ò¿´¹ýÖ®ºóÍùÍù»áÓкܶàÒɻ󡣱¾ÎıȽÏϸÖµĽ²½âÁ˲ο¼Í¼Ïó¹ÜÀíµÄÎÊÌ⣬ּÔÚ½øÒ»²½½Ò¿ªÆäëüëʵÄÃæÉ´£º£©NOTE£ºÎªÁ˱ãÓÚ´Óºê¹Û½Ç¶È½²½â²Î¿¼Í¼ÏóµÄ¹ÜÀí£¬±¾ÎÄûÓп¼ÂÇBÖ¡ºÍ³¡Ä£Ê½¡£PS£ºÔÚH.264ÖУ¬±à½âÂëÆ÷Ҫά»¤²Î¿¼Í¼ÏñÁбíµÄͬ²½£¬ËùÒÔÔÚ±àÂëÆ÷ºÍ½âÂëÆ÷Öвο¼Í¼ÏñµÄ¹ÜÀíÊÇ»ù±¾Ò»Ö¡£ÔÚ¿´´Ëƪ֮ǰ£¬´ó¼Ò¿ÉÒÔÏÈ¿´¿´ÎÒÒÔǰдµÄ¡¶JM85ÖеĶà²Î¿¼Ö¡ÎÊÌâ¡·: http://blog.csdn.net/sunshine1314/archive/2004/11/08/172498.aspx¡¾outline¡¿Ò»¡¢Ïà¹Ø±äÁ¿º¬Òå¶þ¡¢½âÂëÁ÷³Ì£¨Í»³ö²Î¿¼Í¼Ïñ¹ÜÀí²¿·Ö£©Èý¡¢²Î¿¼Í¼ÏñµÄ±ê¼ÇËÄ¡¢²Î¿¼Í¼ÏñµÄ³õʼ»¯Îå¡¢²Î¿¼Í¼ÏñµÄÖØÅÅÐòÒ»¡¢Ïà¹Ø±äÁ¿º¬ÒåDPB(Decoded Picture Buffer): ±£´æËùÓеÄÖØ½¨Í¼Ïñ£¬ListX[i]: ²Î¿¼Ö¡ÁÐ±í£¬Æä°üº¬µÄ²Î¿¼Ö¡Ö¸ÏòdpbÖеÄÖØ½¨Í¼Ïñ£¬¶øÇÒÊǾ¹ýÅÅÐòµÄ¡£ListX[0]ÊÇǰÏò²Î¿¼Ö¡ÁÐ±í£¬P¡¢BÖ¡¶¼»áÓõ½£»ListX[1]ÊǺóÏò²Î¿¼Ö¡ÁÐ±í£¬Ö»ÓÐBÖ¡¶¼»áÓõ½£¬MaxFrameNum£º 1 << (active_sps->log2_max_frame_num_minus4 + 4);frame_num£º±íʾ²Î¿¼Ö¡µÄÐòºÅ£¨Ö¸µÄÊǽâÂë˳Ðò£©¡£¾ßÌå¼ûͼ1µÄÀý×Ó¡£
ͼ1 frame_numȡֵʾÀýnote:BÖ¡²»×÷²Î¿¼Ê±£¬ÎÒÃÇ¿ÉÒÔºöÂÔBÖ¡£¬È»ºóI/PÖ¡°´ÅÅÁÐ˳ÐòÊÇÒÀ´ÎµÝÔöµÃ¡£BÖ¡×÷²Î¿¼Ê±£¬frame_num¾ÍÍêÈ«µÈͬÓë±à½âÂëµÃ˳Ðò¡£PicNum: ¶ÌÆÚ²Î¿¼Í¼ÏñµÄÐòºÅ£¬Æä¼ÆËã¹ý³ÌÈçÏ£º//note: frame_numΪµ±Ç°Í¼ÏóµÄÐòºÅif(listX[i]->frame_num > frame_num){FrameNumWrap=listX[i]->frame_num - frame_num;}elseFrameNumWrap=listX[i]->frame_num;listX[i]->PicNum=FrameNumWrap;LongTermPicNum: ³¤ÆÚ²Î¿¼Í¼ÏóµÄÐòºÅ£¬Íⲿָ¶¨¡£¶þ¡¢½âÂëÁ÷³Ì£¨Í»³ö²Î¿¼Í¼Ïñ¹ÜÀí²¿·Ö£©
ͼ2 ½âÂëÁ÷³Ì²Î¿¼Í¼ÏñÁбí³õʼ»¯£º½«DBPÖзûºÏÒªÇóµÄÖØ½¨Í¼Ïñ·Åµ½listX[0]£¬²¢½øÐÐÅÅÐò¡£²Î¿¼Í¼ÏñÁбíÖØÅÅÐò£º¸ù¾Ýµ±Ç°sliceÂëÁ÷ÖÐµÄ¾ä·¨ÔªËØ£¬¶ÔlistX[0]½øÐÐÖØÅÅÐò¡£²Î¿¼Í¼ÏñµÄ±ê¼Ç£º¶ÔDBPÖеÄÖØ½¨Í¼Ïñ½øÐбê¼Ç£¬¿É±ê¼ÇΪ£º²»×÷²Î¿¼£¬¶ÌÆÚ²Î¿¼£¬»ò³¤ÆÚ²Î¿¼¡£¶þ¡¢²Î¿¼Í¼ÏñµÄ±ê¼Çnote: Ö®ËùÒÔÏȽ²²Î¿¼Í¼ÏñµÄ±ê¼Ç£¬ÊÇΪÁ˺Íʵ¼Ê½âÂëµÄ¹ý³ÌÏàÒ»Ö£¬ÒòΪµÚ1Ö¡IÖ¡ÊDz»ÐèÒªÓõ½²Î¿¼Ö¡µÄ£¬Ö»»á±£´æ²Î¿¼Ö¡¡£Èç¹ûµ±Ç°Í¼Ïñ²»×÷²Î¿¼£¬ÔòÌø¹ý¸Ã»·½Ú¡£1¡¢±£´æÖؽ¨Í¼Ïñµ½DPBÈç¹ûµ±Ç°Í¼ÏñÊÇIDRÖ¡£¬Ôò¸ù¾Ý¶ÁÈëµÄÓï·¨ÔªËØ£¬Ö¸Ã÷ÊÇ·ñÇå¿ÕDPB£¬ÁíÍ⣬»¹È·¶¨½«IDRÖ¡×÷Ϊ³¤ÆÚ²Î¿¼»¹ÊÇ¶ÌÆÚ²Î¿¼¡£·ÇIDRÖ¡Çé¿ö£¬µ±Ç°Ö¡×÷Ϊ¶ÌÆÚ²Î¿¼²åÈëDPB¡£2¡¢²Î¿¼Í¼Ïñ±ê¼Ç²Î¿¼Í¼Ïñ±ê¼ÇÓÐÁ½ÖÖ·½·¨£¬×Ô¶¯»¬´°·¨ºÍ×Ô¶¨Òå±ê¼Ç·¨£¬ÓÉÏàÓ¦µÄ¾ä·¨ÔªËØÈ·¶¨²ÉÓúÎÖÖ·½·¨¡£×Ô¶¯»¬´°·¨£º¼´FIFOµÄ·½·¨£¬µ±DPBÒÑÂúʱ£¬½«DPBÖÐPicNum×îСµÄ¶ÌÆÚ²Î¿¼Í¼Ïñ£¨¼´×îÔçµÄ²Î¿¼Í¼Ïñ£©ÒƳöDPB¡£×Ô¶¨Òå±ê¼Ç·¨(adaptive_ref_pic_marking_mode)£ºÔÚ¾ä·¨ÔªËØÖÐÖ¸¶¨½«Ä³Ò»²Î¿¼Í¼ÏñÉèÖÃΪºÎÖÖÀàÐ͵IJο¼Í¼Ïñ»òÒÆ³ö¡£ÆäÃüÁîÈçÏÂ±í£º±í1 ×Ô¶¨Òå²Î¿¼Í¼Ïó±ê¼ÇÃüÁîÃüÁî±ê¼Ç²Ù×÷0½áÊø±ê¼Ç²Ù×÷1½«Ò»¸ö¶ÌÆÚ²Î¿¼±ê¼ÇΪ·Ç²Î¿¼£¨¼´ÒƳö£©2½«Ò»¸ö³¤ÆÚ²Î¿¼±ê¼ÇΪ·Ç²Î¿¼£¨¼´ÒƳö£©3½«Ò»¸ö¶ÌÆÚ²Î¿¼±ê¼ÇΪ³¤ÆÚ²Î¿¼4Ö¸¶¨³¤ÆÚ²Î¿¼Í¼ÏñµÄ×î´óÊýÄ¿5Çå¿ÕDBP£¬²¢½ûÓó¤ÆÚ²Î¿¼6½«µ±Ç°Í¼Ïñ´æÎª³¤ÆÚ²Î¿¼Èý¡¢²Î¿¼Í¼ÏñµÄ³õʼ»¯1¡¢½«DBPÖзûºÏÒªÇóµÄÖØ½¨Í¼Ïñ·Åµ½listX[0]2¡¢ÅÅÐòlistX[0]ÖУ¬ÏÈ·Å¶ÌÆÚ²Î¿¼£¬Ôٷų¤ÆÚ²Î¿¼£¬¶ÌÆÚ²Î¿¼°´PicNum½µÐòÅÅÁУ¬³¤ÆÚ²Î¿¼°´LongTermPicNumÉýÐòÅÅÁС£¾ßÌå¼û±í2µÄʾÀý£º±í2 ²Î¿¼Í¼Ïó³õʼ»¯ÅÅÐòʵÀý
ËÄ¡¢²Î¿¼Í¼ÏñµÄÖØÅÅÐòÎªÊ²Ã´ÒªÖØÅÅÐò£º½ÚÊ¡ÂëÁ÷£¬µ±Ò»¸öÐòºÅ(ref_idx)±È½Ï´óµÄ²Î¿¼Í¼Ïó±»Óõ½µÄ±ÈÀýºÜ´ó£¬Õâ¸öʱºò½«¸Ã²Î¿¼Í¼ÏóµÄÐòºÅµ÷С¿ÉÒÔ½µµÍÂëÂÊ¡£Õâ¸ö¹ý³Ì¼´ÖØÅÅÐò¡£²Î¿¼Í¼ÏóÖØÅÅÐòµÄ´óÖ¹ý³ÌÈçÏ£º¶ÔlistX[0]ÖеIJο¼Í¼Ïó½øÐбéÀú£¬Ã¿±éÀúµ½Ò»¸ö²Î¿¼Í¼Ï󣬶ÁÈë¾ä·¨ÔªËØreordering_of_pic_nums_idc£¬¸üÐÂÆä²Î¿¼Í¼ÏóÐòºÅ¡£reordering_of_pic_nums_idc¾ßÌåÃüÁîÈçÏ£º0/1£ºÖ¸¶¨¶ÌÆÚ²Î¿¼Í¼ÏóÐòºÅ£¬·Ö±ðÓÃ¼ÓÆ«ÒÆÁ¿ºÍ¼õÆ«ÒÆÁ¿µÄ·½·¨2£ºÖ¸¶¨³¤ÆÚ²Î¿¼Í¼ÏóÐòºÅ3£º½áÊøÖØÅÅÐò¡£²Î¿¼Í¼ÏóÖØÅÅÐòʵÀý£º
H.264Ãû´Ê
2008-7-28
A
ABT: ×ÔÊÊÓ¦¿é±ä»»
ABR: Average BitsRate - ƽ¾ùÂëÂÊ
AC: ½»Á÷
ASO: Arbitrary Slice Order - ÈÎÒâµÄƬ´ÎÐò
B
Bottom POC: µ×³¡ÐòÁкÅ
C
CABAC: Context-based Adaptive Binary Arithmetic Coding - »ùÓÚÉÏÏÂÎÄ×ÔÊÊÓ¦¶þ½øÖÆËãÊõìØ±àÂë
CAVLC: Context Adaptive Variable Length Coding - »ùÓÚÉÏÏÂÎÄ×ÔÊÊÓ¦¿É±ä³¤±àÂë
CBP: Coded Block Pattern - ±àÂëģʽ
CBR: Constant Bit Rate - ºã¶¨±ÈÌØËÙÂÊ
CPB: Coded Picture Buffer - ±àÂëͼÏñ»º´æÇø
D
DCT: Discrete Cosine Transform - ÀëÉ¢ÓàÏұ任
dec : ²Î¿¼Ö¡
DC : Ö±Á÷
DPB: Decoded Picture Buffer - ½âÂëͼÏñ»º´æÇø
E
EBSP£ºÀ©Õ¹×Ö½ÚÐòÁÐÔØºÉ
EC: Error Concealment - ÎóÂëÑÚ¸Ç
enc: ±àÂëÖ¡
EOB: ¿é½áÊø·û
F
FME: ¿ìËÙÔ˶¯¹À¼Æ
FMO: Flexible Macroblock Order - Áé»îºê¿é´ÎÐò
G
GOP: ͼÏñ×é(ÏàÁÚIÖ¡Ö®¼äµÄÖ¡Êý)
H
HDTV: High Definition Television - ¸ßÇåÎúµçÊÓ
I
IDCT: ·´ÀëÉ¢ÓàÏұ仯
IDR: Instantaneous Decoding Refresh - ¼´Ê±½âÂëË¢ÐÂ
J
K
KAYAK: ¸ôÐÐɨÃèÐòÁÐ
L
LSB: Least Significant Bit - µÍÓÐЧλ
M
MAD: Mean Average Differences - ƽ¾ù²Ð²î¾ø¶ÔÖµ
MB: MacroBlock - ºê¿é
MBAFF: Macroblock-Adaptive Frame-Field Coding - ºê¿é×ÔÊÊÓ¦Ö¡³¡±àÂë MC : Ô˶¯²¹³¥
ME: Ô˶¯¹À¼Æ
MSB: Most Significant Bit - ¸ßÓÐЧλ
MSE: Mean Square - ¾ù·½Îó²î
MVD: Ô¤²âʸÁ¿Ó뵱ǰʸÁ¿µÄ²îÒì
MVP: Ô¤²âʸÁ¿
N
NAL: Network Abstract Layer - ÍøÂçÌáÈ¡²ã
NALU: Network Abstract Layer Unit - NALµ¥Ôª
NC: Number Current - µ±Ç°¿éÖµ
O
P
POC: Picture Order Count - ͼÏñÐòÁкÅ
POC Lsb: POCµÍÓÐЧλ
POC Msb : POC¸ßÓÐЧλ
PPS: ͼÏñ²ÎÊý¼¯
PSNR: Peak Signal to Noise Ratio - ·åÖµÐÅÔë±È
Q
QP: Quantization Parameter - Á¿»¯²ÎÊý
QStep: Á¿»¯²½³¤
R
RBSP: Raw Byte Sequence Payload - Ôʼ×Ö½ÚÐòÁиººÉ
RC: Rate Control - ÂëÂÊ¿ØÖÆ
RD: ËÙÂÊÊ§Õæ
RDO : ÂÊÊ§ÕæÓÅ»¯
RDOPT: Rate Distortion Optimization Technology - ÂÊÊ§ÕæÓÅ»¯¼¼Êõ
S
SAD: Sum of Absolute Difference - ¾ø¶ÔÎó²îºÍ
SAE: Sum of Absolute Error - ¾ø¶ÔÎó²îºÍ
SATD: ±ä»»¾ø¶Ô²îÖµ×ÜÁ¿
SCP: Start_Code_Prefix_one_3bytes ÆðʼÂëǰ׺ 0x000001
SEI: Supplemental Enhancement Information - ²¹³äµÄÔöÇ¿ÐÅÏ¢
SH: Slice Header - Ƭͷ
SODB: String Of Data Bits - Êý¾Ý±ÈÌØ´®
SPS: ÐòÁвÎÊý¼¯
SSD: Sum of the Squared Differences - Îó²îƽ·½ºÍ
T
TC : ±ä»»ÏµÊý
Top POC : ¶¥³¡ÐòÁкÅ
U
UVLC: ͳһ¿É±ä³¤±àÂë
V
VBR: Variable Bit Rate - ¿É±ä±ÈÌØËÙÂÊ
VBV: Video Buffer Verify(or Verifier) ÊÓÆµ»º³åÑéÖ¤(»òÑéÖ¤Æ÷)
VCL: Video Coding Layer - ÊÓÆµ±àÂë²ã
VLC: Variable Length Code - ±ä³¤±àÂë
VQ: Video Quality - ʸÁ¿Á¿»¯
W
X
Y
Z
Zig-Zag: Ö®×ֱ任ɨÃè
ABTÖ¡¼ä±àÂë: °Ñ±ä»»±àÂëÔ¤²âÎó²îµÄ¿é³ß´çÓëÔ˶¯²¹³¥µÄ¿é³ß´çÏà¹ØÁª¡£ABTÏÞÖÆÆä×î´ó¿ÉÓõĿé³ß´çΪ8x8¡£(Ö¡¼ä±àÂë)
IÖ¡ºÍIDRÖ¡µÄÇø±ð£¿
IDRÖ¡µÄ×÷ÓÃÊÇÁ¢¿ÌË¢ÐÂ, ʹ´íÎó²»Ö´«²¥, ´ÓIDRÖ¡¿ªÊ¼, ÖØÐÂËãÒ»¸öеÄÐòÁпªÊ¼±àÂë¡£IDR»áµ¼ÖÂDPBÇå¿Õ£¬¶ø I ²»»á
RD: RD±ê×¼Ö÷ÒªºâÁ¿±ä»»ÏµÊýºÍÏàÓ¦Ô¤²âÄ£¿éÏà¶ÔÓÚÔ¤²âÎó²îµÄЧÂÊ¡£(Ö¡¼ä±àÂë)
SATD : SATDÌåÏÖÁ˱任ÖдæÔÚµÄÔ¤²âÎó²î¡£¼ÆËãÁËÔ¤²âÎó²îµÄ×ÜÁ¿ºÍ±ä»»µÄ»¨·Ñ(»¨·ÑÊÓΪ¶Ô±àÂëЧÂʵĹÀ¼Æ)¡£(Ö¡¼ä±àÂë)
T1 : ÍÏβϵÊý£¬ÊýÄ¿·¶Î§ÊÇ0~3£¬Èç¹ûÕý¸º1µÄ¸öÊý´óÓÚ3¸ö£¬Ö»ÓÐ×îºó3¸ö±»ÊÓΪÍÏβϵÊý£¬ÆäÓàµÄ±»ÊÓΪÆÕͨµÄ·ÇÁãϵÊý¡£(CAVLC) ±ÏÊéP119
±¸×¢£ºÐÒéÀïµÄÃû´Ê
ASO ÈÎÒâÌõ´øË³Ðò£¬Ìõ´ø±àÂë¿ÉÒÔ²»ÊǹâդɨÃè˳Ðò
BAB ¶þÖµAlpha¿é£¬ÓÃÓÚ±êÊ¾ÇøÓòµÄ±ß½ç
BAP ÉíÌ嶯»²ÎÊý
¿é ×ö±ä»»µÄºê¿éÇøÓò 8x8 4x4
¿éÆ¥Åä ¾ØÐÎͼÏóÇøÓòÉϵÄÔ˶¯¹À¼Æ
¿éЧӦ ͼÏóµÄ·½¿é»ò¾ØÐÎÊ§ÕæÇøÓò
BÖ¡ Ë«ÏòÔ˶¯²¹³¥Ô¤²âµÄ±àÂëͼÏñ(Ìõ´ø)
CABAC »ùÓÚÉÏÏÂÎĵÄ×ÔÊÊÓ¦¶þÖµËãÊý±àÂë
CAE »ùÓÚÉÏÏÂÎĵÄËãÊý±àÂë
CAVLC »ùÓÚÉÏÏÂÎĵÄ×ÔÊÊÓ¦±ä³¤±àÂë
É«¶È É«²Ê²îÒì·ÖÁ¿
CIF ͨÓÃÖмä¸ñʽ,Ò»ÖÖ²ÊɫͼÏñ¸ñʽ 352 x 288
É«²Ê¿Õ¼ä ±íʾ²ÊɫͼÏñµÄ·½·¨
DCT ÀëÉ¢ÓàÏұ任
Ö±½ÓÔ¤²â Ò»ÖÖ±àÂëģʽ,´ËģʽÖв»´«ÊäÔ˶¯ÊÊÁ¿
DPCM ²î·ÖÂö³å±àÂëµ÷ÖÆ
DSCQS Ë«¼¤ÀøÁ¬ÐøÖÊÁ¿µÈ¼¶£¬Ö÷¹ÜÖÊÁ¿ºâÁ¿µÄµÈ¼¶ºÍ·½·¨
DWT ÀëɢС²¨±ä»»
ìØ±àÂë ½µµÍÈßÓàµÄ±àÂë·½·¨
´íÎóÒþ²Ø ±àÂëͼÏñµÄºó´¦Àí£¬ÒÔÏû³ý»ò¼õС¿É¼ûµÄ´íÎóЧӦ
Exp-Colomb Ö¸Êý¸çÂײ¼±ä³¤±àÂë
FAP Á³²¿¶¯»²ÎÊý
FBA Á³²¿ºÍÉíÌ嶯»
FGS ¾«Ï¸¿ÅÁ£·Ö¼¶
³¡ ¸ôÐÐÊÓÆµÐòÁеÄżÊýÐлòÆæÊýÐÐ
Á÷³Ìͼ ±ä»»Ëã·¨µÄͼʾ±íʾ
FMO Áé»îµÄºê¿é˳Ðò,ºê¿éµÄ±àÂë˳Ðò¿ÉÒÔ²»ÊǹâդɨÃè˳Ðò
ÍêÈ«ËÑË÷ Ò»ÖÖÔ˶¯¹À¼ÆËã·¨
GMC È«¾ÖÔ˶¯²¹³¥£¬ÓÃÓÚÕû¸ö±àÂë¶ÔÏó
GOP ͼÏñ×é,±àÂëÊÓÆµÍ¼ÏñµÄ¼¯ºÏ
¹þ·òÂü±àÂë ½µµÍÈßÓàµÄ±àÂë·½·¨
HVS ÈËÌåÊÓ¾õϵͳ£¬ÓÃÀ´¹Ù³¡ºÍ½âÊÍÊÓÆµÍ¼ÏñµÄϵͳ
»ìºÏ ÒÔÓ¿¶¯²¹³¥ºÍ±ä»»ÎªÌØÕ÷µÄ±à½âÂëÆ÷
IEC ¹ú¼Êµç¹¤Î¯Ô±»á,Ò»¸ö±ê×¼Ì壻
Ö¡¼ä±àÂë ʹÓÃʱ¼äÔ¤²âºÍ²¹³¥µÄÊÓÆµÖ¡±àÂë
¸ôÐÐɨÃè ±íʾΪһϵÁг¡µÄÊÓÆµÊý¾Ý
Ö¡ÄÚ±àÂë ²»Ê¹ÓÃʱ¼äÔ¤²âµÄÊÓÆµÖ¡±àÂë
ISO ¹ú¼Ê±ê×¼»¯×éÖ¯
ITU ¹ú¼Êµ

