Mercurial > libavcodec.hg
annotate utils.c @ 4580:55d7ebd2d699 libavcodec
fix chroma mc2 bug, this is based on a patch by (Oleg Metelitsa oleg hitron co kr)
and does slow the mc2 chroma put down, avg interrestingly seems unaffected speedwise on duron
this of course should be rather done in a way which doesnt slow it down but its better a few %
slower but correct then incorrect
| author | michael |
|---|---|
| date | Fri, 23 Feb 2007 14:29:13 +0000 |
| parents | 006563b9ab27 |
| children | d15120610df2 |
| rev | line source |
|---|---|
| 0 | 1 /* |
| 2 * utils for libavcodec | |
| 429 | 3 * Copyright (c) 2001 Fabrice Bellard. |
|
1739
07a484280a82
copyright year update of the files i touched and remembered, things look annoyingly unmaintained otherwise
michael
parents:
1730
diff
changeset
|
4 * Copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at> |
| 0 | 5 * |
|
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3916
diff
changeset
|
6 * This file is part of FFmpeg. |
|
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3916
diff
changeset
|
7 * |
|
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3916
diff
changeset
|
8 * FFmpeg is free software; you can redistribute it and/or |
| 429 | 9 * modify it under the terms of the GNU Lesser General Public |
| 10 * License as published by the Free Software Foundation; either | |
|
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3916
diff
changeset
|
11 * version 2.1 of the License, or (at your option) any later version. |
| 0 | 12 * |
|
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3916
diff
changeset
|
13 * FFmpeg is distributed in the hope that it will be useful, |
| 0 | 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 429 | 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 16 * Lesser General Public License for more details. | |
| 0 | 17 * |
| 429 | 18 * You should have received a copy of the GNU Lesser General Public |
|
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3916
diff
changeset
|
19 * License along with FFmpeg; if not, write to the Free Software |
|
3036
0b546eab515d
Update licensing information: The FSF changed postal address.
diego
parents:
3031
diff
changeset
|
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| 0 | 21 */ |
| 2967 | 22 |
| 1106 | 23 /** |
| 24 * @file utils.c | |
| 25 * utils. | |
| 26 */ | |
| 2967 | 27 |
| 394 | 28 #include "avcodec.h" |
| 0 | 29 #include "dsputil.h" |
| 341 | 30 #include "mpegvideo.h" |
|
2002
b737b5e96ee0
use AVInteger in av_rescale() so it can finally do 64*64/64 instead of just 64*32/32
michael
parents:
1996
diff
changeset
|
31 #include "integer.h" |
| 2880 | 32 #include "opt.h" |
| 3169 | 33 #include "crc.h" |
|
1598
932d306bf1dc
av_log() patch by (Michel Bardiaux <mbardiaux at peaktime dot be>)
michael
parents:
1588
diff
changeset
|
34 #include <stdarg.h> |
|
2002
b737b5e96ee0
use AVInteger in av_rescale() so it can finally do 64*64/64 instead of just 64*32/32
michael
parents:
1996
diff
changeset
|
35 #include <limits.h> |
| 2862 | 36 #include <float.h> |
|
3461
7581658de3d1
CONFIG_WIN32 implies MinGW and Cygwin and possibly more, so use just
diego
parents:
3442
diff
changeset
|
37 #ifdef __MINGW32__ |
|
3233
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
38 #include <fcntl.h> |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
39 #endif |
| 0 | 40 |
|
2652
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
41 const uint8_t ff_reverse[256]={ |
|
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
42 0x00,0x80,0x40,0xC0,0x20,0xA0,0x60,0xE0,0x10,0x90,0x50,0xD0,0x30,0xB0,0x70,0xF0, |
|
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
43 0x08,0x88,0x48,0xC8,0x28,0xA8,0x68,0xE8,0x18,0x98,0x58,0xD8,0x38,0xB8,0x78,0xF8, |
|
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
44 0x04,0x84,0x44,0xC4,0x24,0xA4,0x64,0xE4,0x14,0x94,0x54,0xD4,0x34,0xB4,0x74,0xF4, |
|
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
45 0x0C,0x8C,0x4C,0xCC,0x2C,0xAC,0x6C,0xEC,0x1C,0x9C,0x5C,0xDC,0x3C,0xBC,0x7C,0xFC, |
|
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
46 0x02,0x82,0x42,0xC2,0x22,0xA2,0x62,0xE2,0x12,0x92,0x52,0xD2,0x32,0xB2,0x72,0xF2, |
|
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
47 0x0A,0x8A,0x4A,0xCA,0x2A,0xAA,0x6A,0xEA,0x1A,0x9A,0x5A,0xDA,0x3A,0xBA,0x7A,0xFA, |
|
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
48 0x06,0x86,0x46,0xC6,0x26,0xA6,0x66,0xE6,0x16,0x96,0x56,0xD6,0x36,0xB6,0x76,0xF6, |
|
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
49 0x0E,0x8E,0x4E,0xCE,0x2E,0xAE,0x6E,0xEE,0x1E,0x9E,0x5E,0xDE,0x3E,0xBE,0x7E,0xFE, |
|
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
50 0x01,0x81,0x41,0xC1,0x21,0xA1,0x61,0xE1,0x11,0x91,0x51,0xD1,0x31,0xB1,0x71,0xF1, |
|
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
51 0x09,0x89,0x49,0xC9,0x29,0xA9,0x69,0xE9,0x19,0x99,0x59,0xD9,0x39,0xB9,0x79,0xF9, |
|
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
52 0x05,0x85,0x45,0xC5,0x25,0xA5,0x65,0xE5,0x15,0x95,0x55,0xD5,0x35,0xB5,0x75,0xF5, |
|
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
53 0x0D,0x8D,0x4D,0xCD,0x2D,0xAD,0x6D,0xED,0x1D,0x9D,0x5D,0xDD,0x3D,0xBD,0x7D,0xFD, |
|
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
54 0x03,0x83,0x43,0xC3,0x23,0xA3,0x63,0xE3,0x13,0x93,0x53,0xD3,0x33,0xB3,0x73,0xF3, |
|
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
55 0x0B,0x8B,0x4B,0xCB,0x2B,0xAB,0x6B,0xEB,0x1B,0x9B,0x5B,0xDB,0x3B,0xBB,0x7B,0xFB, |
|
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
56 0x07,0x87,0x47,0xC7,0x27,0xA7,0x67,0xE7,0x17,0x97,0x57,0xD7,0x37,0xB7,0x77,0xF7, |
|
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
57 0x0F,0x8F,0x4F,0xCF,0x2F,0xAF,0x6F,0xEF,0x1F,0x9F,0x5F,0xDF,0x3F,0xBF,0x7F,0xFF, |
|
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
58 }; |
|
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
59 |
| 2806 | 60 static int volatile entangled_thread_counter=0; |
| 61 | |
| 1057 | 62 void *av_fast_realloc(void *ptr, unsigned int *size, unsigned int min_size) |
|
1031
19de1445beb2
use av_malloc() functions - added av_strdup and av_realloc()
bellard
parents:
998
diff
changeset
|
63 { |
| 2967 | 64 if(min_size < *size) |
|
1031
19de1445beb2
use av_malloc() functions - added av_strdup and av_realloc()
bellard
parents:
998
diff
changeset
|
65 return ptr; |
| 2967 | 66 |
| 2422 | 67 *size= FFMAX(17*min_size/16 + 32, min_size); |
|
1031
19de1445beb2
use av_malloc() functions - added av_strdup and av_realloc()
bellard
parents:
998
diff
changeset
|
68 |
|
19de1445beb2
use av_malloc() functions - added av_strdup and av_realloc()
bellard
parents:
998
diff
changeset
|
69 return av_realloc(ptr, *size); |
|
19de1445beb2
use av_malloc() functions - added av_strdup and av_realloc()
bellard
parents:
998
diff
changeset
|
70 } |
|
19de1445beb2
use av_malloc() functions - added av_strdup and av_realloc()
bellard
parents:
998
diff
changeset
|
71 |
|
902
6acc8394960d
* two functions to handle allocation of static data more simple
kabi
parents:
862
diff
changeset
|
72 static unsigned int last_static = 0; |
|
1900
5cde80c5d929
static allocation rewrite (old code was plain a broken mess)
michael
parents:
1858
diff
changeset
|
73 static unsigned int allocated_static = 0; |
|
5cde80c5d929
static allocation rewrite (old code was plain a broken mess)
michael
parents:
1858
diff
changeset
|
74 static void** array_static = NULL; |
|
5cde80c5d929
static allocation rewrite (old code was plain a broken mess)
michael
parents:
1858
diff
changeset
|
75 |
|
5cde80c5d929
static allocation rewrite (old code was plain a broken mess)
michael
parents:
1858
diff
changeset
|
76 void *av_mallocz_static(unsigned int size) |
|
902
6acc8394960d
* two functions to handle allocation of static data more simple
kabi
parents:
862
diff
changeset
|
77 { |
|
6acc8394960d
* two functions to handle allocation of static data more simple
kabi
parents:
862
diff
changeset
|
78 void *ptr = av_mallocz(size); |
|
6acc8394960d
* two functions to handle allocation of static data more simple
kabi
parents:
862
diff
changeset
|
79 |
| 2967 | 80 if(ptr){ |
| 1901 | 81 array_static =av_fast_realloc(array_static, &allocated_static, sizeof(void*)*(last_static+1)); |
| 2422 | 82 if(!array_static) |
| 83 return NULL; | |
|
1900
5cde80c5d929
static allocation rewrite (old code was plain a broken mess)
michael
parents:
1858
diff
changeset
|
84 array_static[last_static++] = ptr; |
|
902
6acc8394960d
* two functions to handle allocation of static data more simple
kabi
parents:
862
diff
changeset
|
85 } |
|
1900
5cde80c5d929
static allocation rewrite (old code was plain a broken mess)
michael
parents:
1858
diff
changeset
|
86 |
|
902
6acc8394960d
* two functions to handle allocation of static data more simple
kabi
parents:
862
diff
changeset
|
87 return ptr; |
|
6acc8394960d
* two functions to handle allocation of static data more simple
kabi
parents:
862
diff
changeset
|
88 } |
|
1900
5cde80c5d929
static allocation rewrite (old code was plain a broken mess)
michael
parents:
1858
diff
changeset
|
89 |
|
4577
88cf097ebe75
av_realloc_static() is an internal function and therefore should use the ff_ prefix instead of av_.
takis
parents:
4567
diff
changeset
|
90 void *ff_realloc_static(void *ptr, unsigned int size) |
|
2370
26560d4fdb1f
Memory leak fix patch by (Burkhard Plaum <plaum >at< ipf.uni-stuttgart )dot( de>)
michael
parents:
2362
diff
changeset
|
91 { |
|
26560d4fdb1f
Memory leak fix patch by (Burkhard Plaum <plaum >at< ipf.uni-stuttgart )dot( de>)
michael
parents:
2362
diff
changeset
|
92 int i; |
|
26560d4fdb1f
Memory leak fix patch by (Burkhard Plaum <plaum >at< ipf.uni-stuttgart )dot( de>)
michael
parents:
2362
diff
changeset
|
93 if(!ptr) |
|
26560d4fdb1f
Memory leak fix patch by (Burkhard Plaum <plaum >at< ipf.uni-stuttgart )dot( de>)
michael
parents:
2362
diff
changeset
|
94 return av_mallocz_static(size); |
|
26560d4fdb1f
Memory leak fix patch by (Burkhard Plaum <plaum >at< ipf.uni-stuttgart )dot( de>)
michael
parents:
2362
diff
changeset
|
95 /* Look for the old ptr */ |
|
26560d4fdb1f
Memory leak fix patch by (Burkhard Plaum <plaum >at< ipf.uni-stuttgart )dot( de>)
michael
parents:
2362
diff
changeset
|
96 for(i = 0; i < last_static; i++) { |
|
26560d4fdb1f
Memory leak fix patch by (Burkhard Plaum <plaum >at< ipf.uni-stuttgart )dot( de>)
michael
parents:
2362
diff
changeset
|
97 if(array_static[i] == ptr) { |
|
26560d4fdb1f
Memory leak fix patch by (Burkhard Plaum <plaum >at< ipf.uni-stuttgart )dot( de>)
michael
parents:
2362
diff
changeset
|
98 array_static[i] = av_realloc(array_static[i], size); |
|
26560d4fdb1f
Memory leak fix patch by (Burkhard Plaum <plaum >at< ipf.uni-stuttgart )dot( de>)
michael
parents:
2362
diff
changeset
|
99 return array_static[i]; |
|
26560d4fdb1f
Memory leak fix patch by (Burkhard Plaum <plaum >at< ipf.uni-stuttgart )dot( de>)
michael
parents:
2362
diff
changeset
|
100 } |
|
26560d4fdb1f
Memory leak fix patch by (Burkhard Plaum <plaum >at< ipf.uni-stuttgart )dot( de>)
michael
parents:
2362
diff
changeset
|
101 } |
|
26560d4fdb1f
Memory leak fix patch by (Burkhard Plaum <plaum >at< ipf.uni-stuttgart )dot( de>)
michael
parents:
2362
diff
changeset
|
102 return NULL; |
|
26560d4fdb1f
Memory leak fix patch by (Burkhard Plaum <plaum >at< ipf.uni-stuttgart )dot( de>)
michael
parents:
2362
diff
changeset
|
103 |
|
26560d4fdb1f
Memory leak fix patch by (Burkhard Plaum <plaum >at< ipf.uni-stuttgart )dot( de>)
michael
parents:
2362
diff
changeset
|
104 } |
|
26560d4fdb1f
Memory leak fix patch by (Burkhard Plaum <plaum >at< ipf.uni-stuttgart )dot( de>)
michael
parents:
2362
diff
changeset
|
105 |
| 1282 | 106 void av_free_static(void) |
|
902
6acc8394960d
* two functions to handle allocation of static data more simple
kabi
parents:
862
diff
changeset
|
107 { |
|
1900
5cde80c5d929
static allocation rewrite (old code was plain a broken mess)
michael
parents:
1858
diff
changeset
|
108 while(last_static){ |
|
5cde80c5d929
static allocation rewrite (old code was plain a broken mess)
michael
parents:
1858
diff
changeset
|
109 av_freep(&array_static[--last_static]); |
|
902
6acc8394960d
* two functions to handle allocation of static data more simple
kabi
parents:
862
diff
changeset
|
110 } |
|
1900
5cde80c5d929
static allocation rewrite (old code was plain a broken mess)
michael
parents:
1858
diff
changeset
|
111 av_freep(&array_static); |
|
902
6acc8394960d
* two functions to handle allocation of static data more simple
kabi
parents:
862
diff
changeset
|
112 } |
|
6acc8394960d
* two functions to handle allocation of static data more simple
kabi
parents:
862
diff
changeset
|
113 |
| 1854 | 114 /** |
|
2840
22eec5a1b043
Call av_free_static automatically before DLL unload patch by (plaum:ipf uni-stuttgart de)
michael
parents:
2817
diff
changeset
|
115 * Call av_free_static automatically before it's too late |
|
22eec5a1b043
Call av_free_static automatically before DLL unload patch by (plaum:ipf uni-stuttgart de)
michael
parents:
2817
diff
changeset
|
116 */ |
|
22eec5a1b043
Call av_free_static automatically before DLL unload patch by (plaum:ipf uni-stuttgart de)
michael
parents:
2817
diff
changeset
|
117 |
| 3075 | 118 static void do_free(void) __attribute__ ((destructor)); |
|
2840
22eec5a1b043
Call av_free_static automatically before DLL unload patch by (plaum:ipf uni-stuttgart de)
michael
parents:
2817
diff
changeset
|
119 |
| 3075 | 120 static void do_free(void) |
|
2840
22eec5a1b043
Call av_free_static automatically before DLL unload patch by (plaum:ipf uni-stuttgart de)
michael
parents:
2817
diff
changeset
|
121 { |
|
22eec5a1b043
Call av_free_static automatically before DLL unload patch by (plaum:ipf uni-stuttgart de)
michael
parents:
2817
diff
changeset
|
122 av_free_static(); |
|
22eec5a1b043
Call av_free_static automatically before DLL unload patch by (plaum:ipf uni-stuttgart de)
michael
parents:
2817
diff
changeset
|
123 } |
|
22eec5a1b043
Call av_free_static automatically before DLL unload patch by (plaum:ipf uni-stuttgart de)
michael
parents:
2817
diff
changeset
|
124 |
| 400 | 125 |
| 0 | 126 /* encoder management */ |
|
2169
db8baace74d8
Minor Patch for shared libs on Mac OSX by (Bill May <wmay at cisco dot com>)
michael
parents:
2167
diff
changeset
|
127 AVCodec *first_avcodec = NULL; |
| 0 | 128 |
| 129 void register_avcodec(AVCodec *format) | |
| 130 { | |
| 131 AVCodec **p; | |
| 132 p = &first_avcodec; | |
| 133 while (*p != NULL) p = &(*p)->next; | |
| 134 *p = format; | |
| 135 format->next = NULL; | |
| 136 } | |
| 137 | |
| 2270 | 138 void avcodec_set_dimensions(AVCodecContext *s, int width, int height){ |
| 139 s->coded_width = width; | |
| 140 s->coded_height= height; | |
| 141 s->width = -((-width )>>s->lowres); | |
| 142 s->height= -((-height)>>s->lowres); | |
| 143 } | |
| 144 | |
| 1214 | 145 typedef struct InternalBuffer{ |
| 903 | 146 int last_pic_num; |
| 1214 | 147 uint8_t *base[4]; |
| 903 | 148 uint8_t *data[4]; |
|
1588
de5e2acd0f80
initalize various uninitalized variables and avoid coded_picture_number as its not always correct (later should be reversed after fixing the picture_number mess)
michael
parents:
1585
diff
changeset
|
149 int linesize[4]; |
| 1214 | 150 }InternalBuffer; |
| 151 | |
| 152 #define INTERNAL_BUFFER_SIZE 32 | |
| 903 | 153 |
| 1538 | 154 #define ALIGN(x, a) (((x)+(a)-1)&~((a)-1)) |
| 155 | |
| 156 void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height){ | |
| 2967 | 157 int w_align= 1; |
| 158 int h_align= 1; | |
| 159 | |
| 1538 | 160 switch(s->pix_fmt){ |
| 161 case PIX_FMT_YUV420P: | |
|
4494
ce643a22f049
Replace deprecated PIX_FMT names by the newer variants.
diego
parents:
4453
diff
changeset
|
162 case PIX_FMT_YUYV422: |
|
2137
ef47c0b1ff28
UYVY support patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
2125
diff
changeset
|
163 case PIX_FMT_UYVY422: |
| 1538 | 164 case PIX_FMT_YUV422P: |
| 165 case PIX_FMT_YUV444P: | |
| 166 case PIX_FMT_GRAY8: | |
| 4066 | 167 case PIX_FMT_GRAY16BE: |
| 168 case PIX_FMT_GRAY16LE: | |
| 1538 | 169 case PIX_FMT_YUVJ420P: |
| 170 case PIX_FMT_YUVJ422P: | |
| 171 case PIX_FMT_YUVJ444P: | |
| 172 w_align= 16; //FIXME check for non mpeg style codecs and use less alignment | |
| 173 h_align= 16; | |
| 174 break; | |
| 175 case PIX_FMT_YUV411P: | |
|
4494
ce643a22f049
Replace deprecated PIX_FMT names by the newer variants.
diego
parents:
4453
diff
changeset
|
176 case PIX_FMT_UYYVYY411: |
| 1538 | 177 w_align=32; |
| 178 h_align=8; | |
| 179 break; | |
| 180 case PIX_FMT_YUV410P: | |
| 181 if(s->codec_id == CODEC_ID_SVQ1){ | |
| 182 w_align=64; | |
| 183 h_align=64; | |
| 184 } | |
| 2104 | 185 case PIX_FMT_RGB555: |
| 186 if(s->codec_id == CODEC_ID_RPZA){ | |
| 187 w_align=4; | |
| 188 h_align=4; | |
| 189 } | |
| 190 case PIX_FMT_PAL8: | |
| 191 if(s->codec_id == CODEC_ID_SMC){ | |
| 192 w_align=4; | |
| 193 h_align=4; | |
| 194 } | |
| 1538 | 195 break; |
|
2418
82af834636c2
Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents:
2398
diff
changeset
|
196 case PIX_FMT_BGR24: |
|
82af834636c2
Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents:
2398
diff
changeset
|
197 if((s->codec_id == CODEC_ID_MSZH) || (s->codec_id == CODEC_ID_ZLIB)){ |
|
82af834636c2
Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents:
2398
diff
changeset
|
198 w_align=4; |
|
82af834636c2
Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents:
2398
diff
changeset
|
199 h_align=4; |
|
82af834636c2
Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents:
2398
diff
changeset
|
200 } |
|
82af834636c2
Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents:
2398
diff
changeset
|
201 break; |
| 1538 | 202 default: |
| 203 w_align= 1; | |
| 204 h_align= 1; | |
| 205 break; | |
| 206 } | |
| 207 | |
| 208 *width = ALIGN(*width , w_align); | |
| 209 *height= ALIGN(*height, h_align); | |
| 210 } | |
| 211 | |
| 2422 | 212 int avcodec_check_dimensions(void *av_log_ctx, unsigned int w, unsigned int h){ |
| 213 if((int)w>0 && (int)h>0 && (w+128)*(uint64_t)(h+128) < INT_MAX/4) | |
| 214 return 0; | |
| 2967 | 215 |
| 2422 | 216 av_log(av_log_ctx, AV_LOG_ERROR, "picture size invalid (%ux%u)\n", w, h); |
| 217 return -1; | |
| 218 } | |
| 219 | |
| 925 | 220 int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic){ |
| 903 | 221 int i; |
| 1538 | 222 int w= s->width; |
| 223 int h= s->height; | |
| 1214 | 224 InternalBuffer *buf; |
|
1588
de5e2acd0f80
initalize various uninitalized variables and avoid coded_picture_number as its not always correct (later should be reversed after fixing the picture_number mess)
michael
parents:
1585
diff
changeset
|
225 int *picture_number; |
| 2422 | 226 |
|
4453
22827cd6b228
Activate guards in avcodec_default_get_buffer. Patch by Michel Bardiaux,
takis
parents:
4351
diff
changeset
|
227 if(pic->data[0]!=NULL) { |
|
22827cd6b228
Activate guards in avcodec_default_get_buffer. Patch by Michel Bardiaux,
takis
parents:
4351
diff
changeset
|
228 av_log(s, AV_LOG_ERROR, "pic->data[0]!=NULL in avcodec_default_get_buffer\n"); |
|
22827cd6b228
Activate guards in avcodec_default_get_buffer. Patch by Michel Bardiaux,
takis
parents:
4351
diff
changeset
|
229 return -1; |
|
22827cd6b228
Activate guards in avcodec_default_get_buffer. Patch by Michel Bardiaux,
takis
parents:
4351
diff
changeset
|
230 } |
|
22827cd6b228
Activate guards in avcodec_default_get_buffer. Patch by Michel Bardiaux,
takis
parents:
4351
diff
changeset
|
231 if(s->internal_buffer_count >= INTERNAL_BUFFER_SIZE) { |
|
22827cd6b228
Activate guards in avcodec_default_get_buffer. Patch by Michel Bardiaux,
takis
parents:
4351
diff
changeset
|
232 av_log(s, AV_LOG_ERROR, "internal_buffer_count overflow (missing release_buffer?)\n"); |
|
22827cd6b228
Activate guards in avcodec_default_get_buffer. Patch by Michel Bardiaux,
takis
parents:
4351
diff
changeset
|
233 return -1; |
|
22827cd6b228
Activate guards in avcodec_default_get_buffer. Patch by Michel Bardiaux,
takis
parents:
4351
diff
changeset
|
234 } |
| 903 | 235 |
| 2422 | 236 if(avcodec_check_dimensions(s,w,h)) |
| 237 return -1; | |
| 238 | |
| 1214 | 239 if(s->internal_buffer==NULL){ |
| 240 s->internal_buffer= av_mallocz(INTERNAL_BUFFER_SIZE*sizeof(InternalBuffer)); | |
| 241 } | |
| 242 #if 0 | |
| 243 s->internal_buffer= av_fast_realloc( | |
| 2967 | 244 s->internal_buffer, |
| 245 &s->internal_buffer_size, | |
| 1214 | 246 sizeof(InternalBuffer)*FFMAX(99, s->internal_buffer_count+1)/*FIXME*/ |
| 247 ); | |
| 248 #endif | |
| 2967 | 249 |
| 1214 | 250 buf= &((InternalBuffer*)s->internal_buffer)[s->internal_buffer_count]; |
|
1588
de5e2acd0f80
initalize various uninitalized variables and avoid coded_picture_number as its not always correct (later should be reversed after fixing the picture_number mess)
michael
parents:
1585
diff
changeset
|
251 picture_number= &(((InternalBuffer*)s->internal_buffer)[INTERNAL_BUFFER_SIZE-1]).last_pic_num; //FIXME ugly hack |
|
de5e2acd0f80
initalize various uninitalized variables and avoid coded_picture_number as its not always correct (later should be reversed after fixing the picture_number mess)
michael
parents:
1585
diff
changeset
|
252 (*picture_number)++; |
| 2967 | 253 |
| 1214 | 254 if(buf->base[0]){ |
|
1588
de5e2acd0f80
initalize various uninitalized variables and avoid coded_picture_number as its not always correct (later should be reversed after fixing the picture_number mess)
michael
parents:
1585
diff
changeset
|
255 pic->age= *picture_number - buf->last_pic_num; |
|
de5e2acd0f80
initalize various uninitalized variables and avoid coded_picture_number as its not always correct (later should be reversed after fixing the picture_number mess)
michael
parents:
1585
diff
changeset
|
256 buf->last_pic_num= *picture_number; |
| 903 | 257 }else{ |
| 1538 | 258 int h_chroma_shift, v_chroma_shift; |
| 2950 | 259 int pixel_size, size[3]; |
| 260 AVPicture picture; | |
| 261 | |
| 903 | 262 avcodec_get_chroma_sub_sample(s->pix_fmt, &h_chroma_shift, &v_chroma_shift); |
| 1538 | 263 |
| 264 avcodec_align_dimensions(s, &w, &h); | |
| 2967 | 265 |
| 903 | 266 if(!(s->flags&CODEC_FLAG_EMU_EDGE)){ |
| 267 w+= EDGE_WIDTH*2; | |
| 268 h+= EDGE_WIDTH*2; | |
| 269 } | |
| 2950 | 270 avpicture_fill(&picture, NULL, s->pix_fmt, w, h); |
| 271 pixel_size= picture.linesize[0]*8 / w; | |
| 272 //av_log(NULL, AV_LOG_ERROR, "%d %d %d %d\n", (int)picture.data[1], w, h, s->pix_fmt); | |
| 273 assert(pixel_size>=1); | |
| 274 //FIXME next ensures that linesize= 2^x uvlinesize, thats needed because some MC code assumes it | |
| 275 if(pixel_size == 3*8) | |
| 276 w= ALIGN(w, STRIDE_ALIGN<<h_chroma_shift); | |
| 277 else | |
| 278 w= ALIGN(pixel_size*w, STRIDE_ALIGN<<(h_chroma_shift+3)) / pixel_size; | |
| 279 size[1] = avpicture_fill(&picture, NULL, s->pix_fmt, w, h); | |
| 280 size[0] = picture.linesize[0] * h; | |
| 281 size[1] -= size[0]; | |
| 282 if(picture.data[2]) | |
| 283 size[1]= size[2]= size[1]/2; | |
| 284 else | |
| 285 size[2]= 0; | |
| 286 | |
| 1214 | 287 buf->last_pic_num= -256*256*256*64; |
| 2950 | 288 memset(buf->base, 0, sizeof(buf->base)); |
| 289 memset(buf->data, 0, sizeof(buf->data)); | |
| 903 | 290 |
| 2950 | 291 for(i=0; i<3 && size[i]; i++){ |
| 1165 | 292 const int h_shift= i==0 ? 0 : h_chroma_shift; |
| 293 const int v_shift= i==0 ? 0 : v_chroma_shift; | |
| 903 | 294 |
| 2950 | 295 buf->linesize[i]= picture.linesize[i]; |
| 903 | 296 |
| 2950 | 297 buf->base[i]= av_malloc(size[i]+16); //FIXME 16 |
| 1214 | 298 if(buf->base[i]==NULL) return -1; |
| 2950 | 299 memset(buf->base[i], 128, size[i]); |
| 300 | |
| 301 // no edge if EDEG EMU or not planar YUV, we check for PAL8 redundantly to protect against a exploitable bug regression ... | |
| 2967 | 302 if((s->flags&CODEC_FLAG_EMU_EDGE) || (s->pix_fmt == PIX_FMT_PAL8) || !size[2]) |
| 1214 | 303 buf->data[i] = buf->base[i]; |
| 903 | 304 else |
| 2324 | 305 buf->data[i] = buf->base[i] + ALIGN((buf->linesize[i]*EDGE_WIDTH>>v_shift) + (EDGE_WIDTH>>h_shift), STRIDE_ALIGN); |
| 903 | 306 } |
| 307 pic->age= 256*256*256*64; | |
| 308 } | |
|
1588
de5e2acd0f80
initalize various uninitalized variables and avoid coded_picture_number as its not always correct (later should be reversed after fixing the picture_number mess)
michael
parents:
1585
diff
changeset
|
309 pic->type= FF_BUFFER_TYPE_INTERNAL; |
| 903 | 310 |
| 1214 | 311 for(i=0; i<4; i++){ |
| 312 pic->base[i]= buf->base[i]; | |
| 313 pic->data[i]= buf->data[i]; | |
|
1588
de5e2acd0f80
initalize various uninitalized variables and avoid coded_picture_number as its not always correct (later should be reversed after fixing the picture_number mess)
michael
parents:
1585
diff
changeset
|
314 pic->linesize[i]= buf->linesize[i]; |
| 1214 | 315 } |
| 316 s->internal_buffer_count++; | |
| 317 | |
| 903 | 318 return 0; |
| 319 } | |
| 320 | |
| 925 | 321 void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic){ |
| 903 | 322 int i; |
| 4558 | 323 InternalBuffer *buf, *last; |
| 1214 | 324 |
| 924 | 325 assert(pic->type==FF_BUFFER_TYPE_INTERNAL); |
| 1396 | 326 assert(s->internal_buffer_count); |
| 1214 | 327 |
| 1455 | 328 buf = NULL; /* avoids warning */ |
| 1214 | 329 for(i=0; i<s->internal_buffer_count; i++){ //just 3-5 checks so is not worth to optimize |
| 330 buf= &((InternalBuffer*)s->internal_buffer)[i]; | |
| 331 if(buf->data[0] == pic->data[0]) | |
| 332 break; | |
| 333 } | |
| 334 assert(i < s->internal_buffer_count); | |
| 335 s->internal_buffer_count--; | |
| 336 last = &((InternalBuffer*)s->internal_buffer)[s->internal_buffer_count]; | |
| 337 | |
| 4558 | 338 FFSWAP(InternalBuffer, *buf, *last); |
| 1214 | 339 |
| 340 for(i=0; i<3; i++){ | |
| 903 | 341 pic->data[i]=NULL; |
| 1214 | 342 // pic->base[i]=NULL; |
| 343 } | |
| 903 | 344 //printf("R%X\n", pic->opaque); |
| 345 } | |
| 346 | |
| 1630 | 347 int avcodec_default_reget_buffer(AVCodecContext *s, AVFrame *pic){ |
| 348 AVFrame temp_pic; | |
| 349 int i; | |
| 350 | |
| 351 /* If no picture return a new buffer */ | |
| 352 if(pic->data[0] == NULL) { | |
| 353 /* We will copy from buffer, so must be readable */ | |
| 354 pic->buffer_hints |= FF_BUFFER_HINTS_READABLE; | |
| 355 return s->get_buffer(s, pic); | |
| 356 } | |
| 357 | |
| 358 /* If internal buffer type return the same buffer */ | |
| 359 if(pic->type == FF_BUFFER_TYPE_INTERNAL) | |
| 360 return 0; | |
| 361 | |
| 362 /* | |
| 363 * Not internal type and reget_buffer not overridden, emulate cr buffer | |
| 364 */ | |
| 365 temp_pic = *pic; | |
| 366 for(i = 0; i < 4; i++) | |
| 367 pic->data[i] = pic->base[i] = NULL; | |
| 368 pic->opaque = NULL; | |
| 369 /* Allocate new frame */ | |
| 370 if (s->get_buffer(s, pic)) | |
| 371 return -1; | |
| 372 /* Copy image data from old buffer to new buffer */ | |
| 373 img_copy((AVPicture*)pic, (AVPicture*)&temp_pic, s->pix_fmt, s->width, | |
| 374 s->height); | |
| 375 s->release_buffer(s, &temp_pic); // Release old frame | |
| 376 return 0; | |
| 377 } | |
| 378 | |
| 1799 | 379 int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void **arg, int *ret, int count){ |
| 380 int i; | |
| 381 | |
| 382 for(i=0; i<count; i++){ | |
| 383 int r= func(c, arg[i]); | |
| 384 if(ret) ret[i]= r; | |
| 385 } | |
| 386 return 0; | |
| 387 } | |
| 388 | |
| 1858 | 389 enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat * fmt){ |
| 998 | 390 return fmt[0]; |
| 391 } | |
| 392 | |
| 1856 | 393 static const char* context_to_name(void* ptr) { |
| 394 AVCodecContext *avc= ptr; | |
| 395 | |
| 396 if(avc && avc->codec && avc->codec->name) | |
| 2967 | 397 return avc->codec->name; |
| 1856 | 398 else |
| 399 return "NULL"; | |
| 400 } | |
| 401 | |
| 3719 | 402 #define OFFSET(x) offsetof(AVCodecContext,x) |
| 2862 | 403 #define DEFAULT 0 //should be NAN but it doesnt work as its not a constant in glibc as required by ANSI/ISO C |
| 2873 | 404 //these names are too long to be readable |
| 405 #define V AV_OPT_FLAG_VIDEO_PARAM | |
| 406 #define A AV_OPT_FLAG_AUDIO_PARAM | |
| 407 #define S AV_OPT_FLAG_SUBTITLE_PARAM | |
| 2967 | 408 #define E AV_OPT_FLAG_ENCODING_PARAM |
| 2873 | 409 #define D AV_OPT_FLAG_DECODING_PARAM |
| 2862 | 410 |
|
3720
c52a1096385e
Synchronize the defaults specified in the AVOptions[] array to the defaults
takis
parents:
3719
diff
changeset
|
411 #define AV_CODEC_DEFAULT_BITRATE 200*1000 |
| 3704 | 412 |
| 3420 | 413 static const AVOption options[]={ |
|
3723
26a99b559184
Rename the AVOption's names to the shorter OptionDef names.
takis
parents:
3720
diff
changeset
|
414 {"b", "set video bitrate (in bits/s)", OFFSET(bit_rate), FF_OPT_TYPE_INT, AV_CODEC_DEFAULT_BITRATE, INT_MIN, INT_MAX, V|A|E}, |
| 4325 | 415 {"bt", "set video bitrate tolerance (in bits/s)", OFFSET(bit_rate_tolerance), FF_OPT_TYPE_INT, AV_CODEC_DEFAULT_BITRATE*20, 1, INT_MAX, V|E}, |
| 2877 | 416 {"flags", NULL, OFFSET(flags), FF_OPT_TYPE_FLAGS, DEFAULT, INT_MIN, INT_MAX, V|A|E|D, "flags"}, |
| 2881 | 417 {"mv4", "use four motion vector by macroblock (mpeg4)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_4MV, INT_MIN, INT_MAX, V|E, "flags"}, |
| 418 {"obmc", "use overlapped block motion compensation (h263+)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_OBMC, INT_MIN, INT_MAX, V|E, "flags"}, | |
| 419 {"qpel", "use 1/4 pel motion compensation", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_QPEL, INT_MIN, INT_MAX, V|E, "flags"}, | |
| 420 {"loop", "use loop filter", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_LOOP_FILTER, INT_MIN, INT_MAX, V|E, "flags"}, | |
| 421 {"qscale", "use fixed qscale", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_QSCALE, INT_MIN, INT_MAX, 0, "flags"}, | |
| 422 {"gmc", "use gmc", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_GMC, INT_MIN, INT_MAX, V|E, "flags"}, | |
| 423 {"mv0", "always try a mb with mv=<0,0>", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_MV0, INT_MIN, INT_MAX, V|E, "flags"}, | |
| 424 {"part", "use data partitioning", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_PART, INT_MIN, INT_MAX, V|E, "flags"}, | |
| 425 {"input_preserved", NULL, 0, FF_OPT_TYPE_CONST, CODEC_FLAG_INPUT_PRESERVED, INT_MIN, INT_MAX, 0, "flags"}, | |
| 426 {"pass1", "use internal 2pass ratecontrol in first pass mode", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_PASS1, INT_MIN, INT_MAX, 0, "flags"}, | |
| 427 {"pass2", "use internal 2pass ratecontrol in second pass mode", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_PASS2, INT_MIN, INT_MAX, 0, "flags"}, | |
| 428 {"extern_huff", "use external huffman table (for mjpeg)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_EXTERN_HUFF, INT_MIN, INT_MAX, 0, "flags"}, | |
| 429 {"gray", "only decode/encode grayscale", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_GRAY, INT_MIN, INT_MAX, V|E|D, "flags"}, | |
| 430 {"emu_edge", "don't draw edges", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_EMU_EDGE, INT_MIN, INT_MAX, 0, "flags"}, | |
| 431 {"psnr", "error[?] variables will be set during encoding", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_PSNR, INT_MIN, INT_MAX, V|E, "flags"}, | |
| 432 {"truncated", NULL, 0, FF_OPT_TYPE_CONST, CODEC_FLAG_TRUNCATED, INT_MIN, INT_MAX, 0, "flags"}, | |
| 433 {"naq", "normalize adaptive quantization", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_NORMALIZE_AQP, INT_MIN, INT_MAX, V|E, "flags"}, | |
| 434 {"ildct", "use interlaced dct", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_INTERLACED_DCT, INT_MIN, INT_MAX, V|E, "flags"}, | |
|
4189
3c98b0938897
add low delay forcing option for mpeg1/2 encoding
bcoudurier
parents:
4158
diff
changeset
|
435 {"low_delay", "force low delay", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_LOW_DELAY, INT_MIN, INT_MAX, V|D|E, "flags"}, |
| 2881 | 436 {"alt", "enable alternate scantable (mpeg2/mpeg4)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_ALT_SCAN, INT_MIN, INT_MAX, V|E, "flags"}, |
| 437 {"trell", "use trellis quantization", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_TRELLIS_QUANT, INT_MIN, INT_MAX, V|E, "flags"}, | |
| 438 {"global_header", "place global headers in extradata instead of every keyframe", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_GLOBAL_HEADER, INT_MIN, INT_MAX, 0, "flags"}, | |
| 439 {"bitexact", "use only bitexact stuff (except (i)dct)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_BITEXACT, INT_MIN, INT_MAX, A|V|S|D|E, "flags"}, | |
| 440 {"aic", "h263 advanced intra coding / mpeg4 ac prediction", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_AC_PRED, INT_MIN, INT_MAX, V|E, "flags"}, | |
| 441 {"umv", "use unlimited motion vectors", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_H263P_UMV, INT_MIN, INT_MAX, V|E, "flags"}, | |
| 442 {"cbp", "use rate distortion optimization for cbp", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_CBP_RD, INT_MIN, INT_MAX, V|E, "flags"}, | |
| 2890 | 443 {"qprd", "use rate distortion optimization for qp selection", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_QP_RD, INT_MIN, INT_MAX, V|E, "flags"}, |
| 2881 | 444 {"aiv", "h263 alternative inter vlc", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_H263P_AIV, INT_MIN, INT_MAX, V|E, "flags"}, |
| 445 {"slice", NULL, 0, FF_OPT_TYPE_CONST, CODEC_FLAG_H263P_SLICE_STRUCT, INT_MIN, INT_MAX, V|E, "flags"}, | |
| 446 {"ilme", "interlaced motion estimation", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_INTERLACED_ME, INT_MIN, INT_MAX, V|E, "flags"}, | |
| 447 {"scan_offset", "will reserve space for svcd scan offset user data", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_SVCD_SCAN_OFFSET, INT_MIN, INT_MAX, V|E, "flags"}, | |
| 2890 | 448 {"cgop", "closed gop", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_CLOSED_GOP, INT_MIN, INT_MAX, V|E, "flags"}, |
| 2881 | 449 {"fast", "allow non spec compliant speedup tricks", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_FAST, INT_MIN, INT_MAX, V|E, "flags2"}, |
| 450 {"sgop", "strictly enforce gop size", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_STRICT_GOP, INT_MIN, INT_MAX, V|E, "flags2"}, | |
| 451 {"noout", "skip bitstream encoding", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_NO_OUTPUT, INT_MIN, INT_MAX, V|E, "flags2"}, | |
| 452 {"local_header", "place global headers at every keyframe instead of in extradata", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_LOCAL_HEADER, INT_MIN, INT_MAX, V|E, "flags2"}, | |
| 2862 | 453 {"sub_id", NULL, OFFSET(sub_id), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
|
3713
8b0992252432
adds descriptions to the libavcodec AVOptions array, taken from the
gpoirier
parents:
3704
diff
changeset
|
454 {"me_method", "set motion estimation method", OFFSET(me_method), FF_OPT_TYPE_INT, ME_EPZS, INT_MIN, INT_MAX, V|E, "me_method"}, |
| 2862 | 455 {"extradata_size", NULL, OFFSET(extradata_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
| 456 {"time_base", NULL, OFFSET(time_base), FF_OPT_TYPE_RATIONAL, DEFAULT, INT_MIN, INT_MAX}, | |
|
3723
26a99b559184
Rename the AVOption's names to the shorter OptionDef names.
takis
parents:
3720
diff
changeset
|
457 {"g", "set the group of picture size", OFFSET(gop_size), FF_OPT_TYPE_INT, 12, INT_MIN, INT_MAX, V|E}, |
|
4272
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
458 {"rate_emu", "frame rate emulation", OFFSET(rate_emu), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
|
3723
26a99b559184
Rename the AVOption's names to the shorter OptionDef names.
takis
parents:
3720
diff
changeset
|
459 {"ar", "set audio sampling rate (in Hz)", OFFSET(sample_rate), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
| 3966 | 460 {"ac", "set number of audio channels", OFFSET(channels), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
|
3031
0f5f311f2f94
Parameter added for user to set the cutoff frequency when encoding with faac.
banan
parents:
2996
diff
changeset
|
461 {"cutoff", "set cutoff bandwidth", OFFSET(cutoff), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, A|E}, |
|
3442
5d133e59ecf2
allows user-settable block size and fixes related typo
jbr
parents:
3438
diff
changeset
|
462 {"frame_size", NULL, OFFSET(frame_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, A|E}, |
| 2862 | 463 {"frame_number", NULL, OFFSET(frame_number), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
| 464 {"real_pict_num", NULL, OFFSET(real_pict_num), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
| 465 {"delay", NULL, OFFSET(delay), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
| 3916 | 466 {"qcomp", "video quantizer scale compression (VBR)", OFFSET(qcompress), FF_OPT_TYPE_FLOAT, 0.5, FLT_MIN, FLT_MAX, V|E}, |
| 467 {"qblur", "video quantizer scale blur (VBR)", OFFSET(qblur), FF_OPT_TYPE_FLOAT, 0.5, FLT_MIN, FLT_MAX, V|E}, | |
| 468 {"qmin", "min video quantizer scale (VBR)", OFFSET(qmin), FF_OPT_TYPE_INT, 2, 1, 51, V|E}, | |
| 469 {"qmax", "max video quantizer scale (VBR)", OFFSET(qmax), FF_OPT_TYPE_INT, 31, 1, 51, V|E}, | |
| 470 {"qdiff", "max difference between the quantizer scale (VBR)", OFFSET(max_qdiff), FF_OPT_TYPE_INT, 3, INT_MIN, INT_MAX, V|E}, | |
|
3736
1d70bb4e21d6
Remove the "bf" OptionDef parameter so the equally named AVOption will take
takis
parents:
3734
diff
changeset
|
471 {"bf", "use 'frames' B frames", OFFSET(max_b_frames), FF_OPT_TYPE_INT, DEFAULT, 0, FF_MAX_B_FRAMES, V|E}, |
|
3723
26a99b559184
Rename the AVOption's names to the shorter OptionDef names.
takis
parents:
3720
diff
changeset
|
472 {"b_qfactor", "qp factor between p and b frames", OFFSET(b_quant_factor), FF_OPT_TYPE_FLOAT, 1.25, FLT_MIN, FLT_MAX, V|E}, |
| 4261 | 473 {"rc_strategy", "ratecontrol method", OFFSET(rc_strategy), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
| 474 {"b_strategy", "strategy to choose between I/P/B-frames", OFFSET(b_frame_strategy), FF_OPT_TYPE_INT, 0, INT_MIN, INT_MAX, V|E}, | |
| 2873 | 475 {"hurry_up", NULL, OFFSET(hurry_up), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|D}, |
| 2862 | 476 {"rtp_mode", NULL, OFFSET(rtp_mode), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
| 477 {"rtp_payload_size", NULL, OFFSET(rtp_payload_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
| 478 {"mv_bits", NULL, OFFSET(mv_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
| 479 {"header_bits", NULL, OFFSET(header_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
| 480 {"i_tex_bits", NULL, OFFSET(i_tex_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
| 481 {"p_tex_bits", NULL, OFFSET(p_tex_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
| 482 {"i_count", NULL, OFFSET(i_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
| 483 {"p_count", NULL, OFFSET(p_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
| 484 {"skip_count", NULL, OFFSET(skip_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
| 485 {"misc_bits", NULL, OFFSET(misc_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
| 486 {"frame_bits", NULL, OFFSET(frame_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
| 487 {"codec_tag", NULL, OFFSET(codec_tag), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
|
3723
26a99b559184
Rename the AVOption's names to the shorter OptionDef names.
takis
parents:
3720
diff
changeset
|
488 {"bug", "workaround not auto detected encoder bugs", OFFSET(workaround_bugs), FF_OPT_TYPE_FLAGS, FF_BUG_AUTODETECT, INT_MIN, INT_MAX, V|D, "bug"}, |
| 2881 | 489 {"autodetect", NULL, 0, FF_OPT_TYPE_CONST, FF_BUG_AUTODETECT, INT_MIN, INT_MAX, V|D, "bug"}, |
| 4261 | 490 {"old_msmpeg4", "some old lavc generated msmpeg4v3 files (no autodetection)", 0, FF_OPT_TYPE_CONST, FF_BUG_OLD_MSMPEG4, INT_MIN, INT_MAX, V|D, "bug"}, |
| 491 {"xvid_ilace", "Xvid interlacing bug (autodetected if fourcc==XVIX)", 0, FF_OPT_TYPE_CONST, FF_BUG_XVID_ILACE, INT_MIN, INT_MAX, V|D, "bug"}, | |
| 492 {"ump4", "(autodetected if fourcc==UMP4)", 0, FF_OPT_TYPE_CONST, FF_BUG_UMP4, INT_MIN, INT_MAX, V|D, "bug"}, | |
| 493 {"no_padding", "padding bug (autodetected)", 0, FF_OPT_TYPE_CONST, FF_BUG_NO_PADDING, INT_MIN, INT_MAX, V|D, "bug"}, | |
| 2881 | 494 {"amv", NULL, 0, FF_OPT_TYPE_CONST, FF_BUG_AMV, INT_MIN, INT_MAX, V|D, "bug"}, |
| 4261 | 495 {"ac_vlc", "illegal vlc bug (autodetected per fourcc)", 0, FF_OPT_TYPE_CONST, FF_BUG_AC_VLC, INT_MIN, INT_MAX, V|D, "bug"}, |
| 2881 | 496 {"qpel_chroma", NULL, 0, FF_OPT_TYPE_CONST, FF_BUG_QPEL_CHROMA, INT_MIN, INT_MAX, V|D, "bug"}, |
| 4261 | 497 {"std_qpel", "old standard qpel (autodetected per fourcc/version)", 0, FF_OPT_TYPE_CONST, FF_BUG_STD_QPEL, INT_MIN, INT_MAX, V|D, "bug"}, |
| 2881 | 498 {"qpel_chroma2", NULL, 0, FF_OPT_TYPE_CONST, FF_BUG_QPEL_CHROMA2, INT_MIN, INT_MAX, V|D, "bug"}, |
| 4261 | 499 {"direct_blocksize", "direct-qpel-blocksize bug (autodetected per fourcc/version)", 0, FF_OPT_TYPE_CONST, FF_BUG_DIRECT_BLOCKSIZE, INT_MIN, INT_MAX, V|D, "bug"}, |
| 500 {"edge", "edge padding bug (autodetected per fourcc/version)", 0, FF_OPT_TYPE_CONST, FF_BUG_EDGE, INT_MIN, INT_MAX, V|D, "bug"}, | |
| 2881 | 501 {"hpel_chroma", NULL, 0, FF_OPT_TYPE_CONST, FF_BUG_HPEL_CHROMA, INT_MIN, INT_MAX, V|D, "bug"}, |
| 502 {"dc_clip", NULL, 0, FF_OPT_TYPE_CONST, FF_BUG_DC_CLIP, INT_MIN, INT_MAX, V|D, "bug"}, | |
|
4272
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
503 {"ms", "workaround various bugs in microsofts broken decoders", 0, FF_OPT_TYPE_CONST, FF_BUG_MS, INT_MIN, INT_MAX, V|D, "bug"}, |
| 2881 | 504 {"lelim", "single coefficient elimination threshold for luminance (negative values also consider dc coefficient)", OFFSET(luma_elim_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
| 505 {"celim", "single coefficient elimination threshold for chrominance (negative values also consider dc coefficient)", OFFSET(chroma_elim_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, | |
| 4350 | 506 {"strict", "how strictly to follow the standards", OFFSET(strict_std_compliance), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, A|V|D, "strict"}, |
|
4272
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
507 {"very", "strictly conform to a older more strict version of the spec or reference software", 0, FF_OPT_TYPE_CONST, FF_COMPLIANCE_VERY_STRICT, INT_MIN, INT_MAX, V|E, "strict"}, |
|
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
508 {"strict", "strictly conform to all the things in the spec no matter what consequences", 0, FF_OPT_TYPE_CONST, FF_COMPLIANCE_STRICT, INT_MIN, INT_MAX, V|E, "strict"}, |
| 2881 | 509 {"normal", NULL, 0, FF_OPT_TYPE_CONST, FF_COMPLIANCE_NORMAL, INT_MIN, INT_MAX, V|E, "strict"}, |
|
4272
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
510 {"inofficial", "allow inofficial extensions", 0, FF_OPT_TYPE_CONST, FF_COMPLIANCE_INOFFICIAL, INT_MIN, INT_MAX, V|E, "strict"}, |
|
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
511 {"experimental", "allow non standarized experimental things", 0, FF_OPT_TYPE_CONST, FF_COMPLIANCE_EXPERIMENTAL, INT_MIN, INT_MAX, V|E, "strict"}, |
|
3723
26a99b559184
Rename the AVOption's names to the shorter OptionDef names.
takis
parents:
3720
diff
changeset
|
512 {"b_qoffset", "qp offset between p and b frames", OFFSET(b_quant_offset), FF_OPT_TYPE_FLOAT, 1.25, FLT_MIN, FLT_MAX, V|E}, |
| 4350 | 513 {"er", "set error resilience strategy", OFFSET(error_resilience), FF_OPT_TYPE_INT, FF_ER_CAREFUL, INT_MIN, INT_MAX, A|V|D, "er"}, |
| 2881 | 514 {"careful", NULL, 0, FF_OPT_TYPE_CONST, FF_ER_CAREFUL, INT_MIN, INT_MAX, V|D, "er"}, |
| 515 {"compliant", NULL, 0, FF_OPT_TYPE_CONST, FF_ER_COMPLIANT, INT_MIN, INT_MAX, V|D, "er"}, | |
| 516 {"aggressive", NULL, 0, FF_OPT_TYPE_CONST, FF_ER_AGGRESSIVE, INT_MIN, INT_MAX, V|D, "er"}, | |
| 517 {"very_aggressive", NULL, 0, FF_OPT_TYPE_CONST, FF_ER_VERY_AGGRESSIVE, INT_MIN, INT_MAX, V|D, "er"}, | |
| 2862 | 518 {"has_b_frames", NULL, OFFSET(has_b_frames), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
| 519 {"block_align", NULL, OFFSET(block_align), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
| 520 {"parse_only", NULL, OFFSET(parse_only), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
| 4261 | 521 {"mpeg_quant", "use MPEG quantizers instead of H.263", OFFSET(mpeg_quant), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
| 2862 | 522 {"stats_out", NULL, OFFSET(stats_out), FF_OPT_TYPE_STRING, DEFAULT, CHAR_MIN, CHAR_MAX}, |
| 523 {"stats_in", NULL, OFFSET(stats_in), FF_OPT_TYPE_STRING, DEFAULT, CHAR_MIN, CHAR_MAX}, | |
| 3916 | 524 {"qsquish", "how to keep quantizer between qmin and qmax (0 = clip, 1 = use differentiable function)", OFFSET(rc_qsquish), FF_OPT_TYPE_FLOAT, DEFAULT, 0, 99, V|E}, |
| 4261 | 525 {"rc_qmod_amp", "experimental quantizer modulation", OFFSET(rc_qmod_amp), FF_OPT_TYPE_FLOAT, DEFAULT, -FLT_MAX, FLT_MAX, V|E}, |
| 526 {"rc_qmod_freq", "experimental quantizer modulation", OFFSET(rc_qmod_freq), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, | |
| 2862 | 527 {"rc_override_count", NULL, OFFSET(rc_override_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
|
3713
8b0992252432
adds descriptions to the libavcodec AVOptions array, taken from the
gpoirier
parents:
3704
diff
changeset
|
528 {"rc_eq", "set rate control equation", OFFSET(rc_eq), FF_OPT_TYPE_STRING, DEFAULT, CHAR_MIN, CHAR_MAX, V|E}, |
|
3723
26a99b559184
Rename the AVOption's names to the shorter OptionDef names.
takis
parents:
3720
diff
changeset
|
529 {"maxrate", "set max video bitrate tolerance (in bits/s)", OFFSET(rc_max_rate), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
|
26a99b559184
Rename the AVOption's names to the shorter OptionDef names.
takis
parents:
3720
diff
changeset
|
530 {"minrate", "set min video bitrate tolerance (in bits/s)", OFFSET(rc_min_rate), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
|
26a99b559184
Rename the AVOption's names to the shorter OptionDef names.
takis
parents:
3720
diff
changeset
|
531 {"bufsize", "set ratecontrol buffer size (in bits)", OFFSET(rc_buffer_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
| 4261 | 532 {"rc_buf_aggressivity", "currently useless", OFFSET(rc_buffer_aggressivity), FF_OPT_TYPE_FLOAT, 1.0, FLT_MIN, FLT_MAX, V|E}, |
|
3725
3e5ef8f13f1b
Correct the i_qfactor minimum, which was current set higher then the default
takis
parents:
3723
diff
changeset
|
533 {"i_qfactor", "qp factor between p and i frames", OFFSET(i_quant_factor), FF_OPT_TYPE_FLOAT, -0.8, -FLT_MAX, FLT_MAX, V|E}, |
|
3734
6903463caf49
Correct the constraints of some AVOptions. These had a default value of zero,
takis
parents:
3725
diff
changeset
|
534 {"i_qoffset", "qp offset between p and i frames", OFFSET(i_quant_offset), FF_OPT_TYPE_FLOAT, 0.0, -FLT_MAX, FLT_MAX, V|E}, |
|
6903463caf49
Correct the constraints of some AVOptions. These had a default value of zero,
takis
parents:
3725
diff
changeset
|
535 {"rc_init_cplx", "initial complexity for 1-pass encoding", OFFSET(rc_initial_cplx), FF_OPT_TYPE_FLOAT, DEFAULT, -FLT_MAX, FLT_MAX, V|E}, |
| 4261 | 536 {"dct", "DCT algorithm", OFFSET(dct_algo), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, V|E, "dct"}, |
| 537 {"auto", "autoselect a good one (default)", 0, FF_OPT_TYPE_CONST, FF_DCT_AUTO, INT_MIN, INT_MAX, V|E, "dct"}, | |
| 538 {"fastint", "fast integer", 0, FF_OPT_TYPE_CONST, FF_DCT_FASTINT, INT_MIN, INT_MAX, V|E, "dct"}, | |
| 539 {"int", "accurate integer", 0, FF_OPT_TYPE_CONST, FF_DCT_INT, INT_MIN, INT_MAX, V|E, "dct"}, | |
| 2881 | 540 {"mmx", NULL, 0, FF_OPT_TYPE_CONST, FF_DCT_MMX, INT_MIN, INT_MAX, V|E, "dct"}, |
| 541 {"mlib", NULL, 0, FF_OPT_TYPE_CONST, FF_DCT_MLIB, INT_MIN, INT_MAX, V|E, "dct"}, | |
| 542 {"altivec", NULL, 0, FF_OPT_TYPE_CONST, FF_DCT_ALTIVEC, INT_MIN, INT_MAX, V|E, "dct"}, | |
|
4264
769ea5de44d3
Fix some obvious mistakes in the option descriptions.
diego
parents:
4261
diff
changeset
|
543 {"faan", "floating point AAN DCT", 0, FF_OPT_TYPE_CONST, FF_DCT_FAAN, INT_MIN, INT_MAX, V|E, "dct"}, |
| 4261 | 544 {"lumi_mask", "compresses bright areas stronger than medium ones", OFFSET(lumi_masking), FF_OPT_TYPE_FLOAT, 0, -FLT_MAX, FLT_MAX, V|E}, |
|
3734
6903463caf49
Correct the constraints of some AVOptions. These had a default value of zero,
takis
parents:
3725
diff
changeset
|
545 {"tcplx_mask", "temporal complexity masking", OFFSET(temporal_cplx_masking), FF_OPT_TYPE_FLOAT, 0, -FLT_MAX, FLT_MAX, V|E}, |
|
6903463caf49
Correct the constraints of some AVOptions. These had a default value of zero,
takis
parents:
3725
diff
changeset
|
546 {"scplx_mask", "spatial complexity masking", OFFSET(spatial_cplx_masking), FF_OPT_TYPE_FLOAT, 0, -FLT_MAX, FLT_MAX, V|E}, |
|
6903463caf49
Correct the constraints of some AVOptions. These had a default value of zero,
takis
parents:
3725
diff
changeset
|
547 {"p_mask", "inter masking", OFFSET(p_masking), FF_OPT_TYPE_FLOAT, 0, -FLT_MAX, FLT_MAX, V|E}, |
| 4261 | 548 {"dark_mask", "compresses dark areas stronger than medium ones", OFFSET(dark_masking), FF_OPT_TYPE_FLOAT, 0, -FLT_MAX, FLT_MAX, V|E}, |
| 2862 | 549 {"unused", NULL, OFFSET(unused), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
| 4293 | 550 {"idct", "select IDCT implementation", OFFSET(idct_algo), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, V|E|D, "idct"}, |
| 2881 | 551 {"auto", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_AUTO, INT_MIN, INT_MAX, V|E|D, "idct"}, |
| 552 {"int", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_INT, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
| 553 {"simple", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLE, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
| 554 {"simplemmx", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLEMMX, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
| 555 {"libmpeg2mmx", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_LIBMPEG2MMX, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
| 556 {"ps2", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_PS2, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
| 557 {"mlib", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_MLIB, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
| 558 {"arm", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_ARM, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
| 559 {"altivec", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_ALTIVEC, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
| 560 {"sh4", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SH4, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
| 561 {"simplearm", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLEARM, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
| 3769 | 562 {"simplearmv5te", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLEARMV5TE, INT_MIN, INT_MAX, V|E|D, "idct"}, |
| 2881 | 563 {"h264", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_H264, INT_MIN, INT_MAX, V|E|D, "idct"}, |
| 564 {"vp3", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_VP3, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
| 565 {"ipp", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_IPP, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
| 566 {"xvidmmx", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_XVIDMMX, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
| 2862 | 567 {"slice_count", NULL, OFFSET(slice_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
| 4261 | 568 {"ec", "set error concealment strategy", OFFSET(error_concealment), FF_OPT_TYPE_FLAGS, 3, INT_MIN, INT_MAX, V|D, "ec"}, |
| 569 {"guess_mvs", "iterative motion vector (MV) search (slow)", 0, FF_OPT_TYPE_CONST, FF_EC_GUESS_MVS, INT_MIN, INT_MAX, V|D, "ec"}, | |
| 570 {"deblock", "use strong deblock filter for damaged MBs", 0, FF_OPT_TYPE_CONST, FF_EC_DEBLOCK, INT_MIN, INT_MAX, V|D, "ec"}, | |
| 2862 | 571 {"bits_per_sample", NULL, OFFSET(bits_per_sample), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
| 2890 | 572 {"pred", "prediction method", OFFSET(prediction_method), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "pred"}, |
| 2881 | 573 {"left", NULL, 0, FF_OPT_TYPE_CONST, FF_PRED_LEFT, INT_MIN, INT_MAX, V|E, "pred"}, |
| 574 {"plane", NULL, 0, FF_OPT_TYPE_CONST, FF_PRED_PLANE, INT_MIN, INT_MAX, V|E, "pred"}, | |
| 575 {"median", NULL, 0, FF_OPT_TYPE_CONST, FF_PRED_MEDIAN, INT_MIN, INT_MAX, V|E, "pred"}, | |
|
4272
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
576 {"aspect", "sample aspect ratio", OFFSET(sample_aspect_ratio), FF_OPT_TYPE_RATIONAL, DEFAULT, 0, 10, V|E}, |
| 2877 | 577 {"debug", "print specific debug info", OFFSET(debug), FF_OPT_TYPE_FLAGS, DEFAULT, 0, INT_MAX, V|A|S|E|D, "debug"}, |
| 4261 | 578 {"pict", "picture info", 0, FF_OPT_TYPE_CONST, FF_DEBUG_PICT_INFO, INT_MIN, INT_MAX, V|D, "debug"}, |
| 579 {"rc", "rate control", 0, FF_OPT_TYPE_CONST, FF_DEBUG_RC, INT_MIN, INT_MAX, V|E, "debug"}, | |
| 2881 | 580 {"bitstream", NULL, 0, FF_OPT_TYPE_CONST, FF_DEBUG_BITSTREAM, INT_MIN, INT_MAX, V|D, "debug"}, |
| 4261 | 581 {"mb_type", "macroblock (MB) type", 0, FF_OPT_TYPE_CONST, FF_DEBUG_MB_TYPE, INT_MIN, INT_MAX, V|D, "debug"}, |
| 582 {"qp", "per-block quantization parameter (QP)", 0, FF_OPT_TYPE_CONST, FF_DEBUG_QP, INT_MIN, INT_MAX, V|D, "debug"}, | |
| 583 {"mv", "motion vector", 0, FF_OPT_TYPE_CONST, FF_DEBUG_MV, INT_MIN, INT_MAX, V|D, "debug"}, | |
| 2881 | 584 {"dct_coeff", NULL, 0, FF_OPT_TYPE_CONST, FF_DEBUG_DCT_COEFF, INT_MIN, INT_MAX, V|D, "debug"}, |
| 585 {"skip", NULL, 0, FF_OPT_TYPE_CONST, FF_DEBUG_SKIP, INT_MIN, INT_MAX, V|D, "debug"}, | |
| 586 {"startcode", NULL, 0, FF_OPT_TYPE_CONST, FF_DEBUG_STARTCODE, INT_MIN, INT_MAX, V|D, "debug"}, | |
| 587 {"pts", NULL, 0, FF_OPT_TYPE_CONST, FF_DEBUG_PTS, INT_MIN, INT_MAX, V|D, "debug"}, | |
| 4261 | 588 {"er", "error resilience", 0, FF_OPT_TYPE_CONST, FF_DEBUG_ER, INT_MIN, INT_MAX, V|D, "debug"}, |
| 589 {"mmco", "memory management control operations (H.264)", 0, FF_OPT_TYPE_CONST, FF_DEBUG_MMCO, INT_MIN, INT_MAX, V|D, "debug"}, | |
| 2881 | 590 {"bugs", NULL, 0, FF_OPT_TYPE_CONST, FF_DEBUG_BUGS, INT_MIN, INT_MAX, V|D, "debug"}, |
| 4261 | 591 {"vis_qp", "visualize quantization parameter (QP), lower QP are tinted greener", 0, FF_OPT_TYPE_CONST, FF_DEBUG_VIS_QP, INT_MIN, INT_MAX, V|D, "debug"}, |
| 592 {"vis_mb_type", "visualize block types", 0, FF_OPT_TYPE_CONST, FF_DEBUG_VIS_MB_TYPE, INT_MIN, INT_MAX, V|D, "debug"}, | |
| 593 {"vismv", "visualize motion vectors (MVs)", OFFSET(debug_mv), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, V|D, "debug_mv"}, | |
| 594 {"pf", "forward predicted MVs of P-frames", 0, FF_OPT_TYPE_CONST, FF_DEBUG_VIS_MV_P_FOR, INT_MIN, INT_MAX, V|D, "debug_mv"}, | |
| 595 {"bf", "forward predicted MVs of B-frames", 0, FF_OPT_TYPE_CONST, FF_DEBUG_VIS_MV_B_FOR, INT_MIN, INT_MAX, V|D, "debug_mv"}, | |
| 596 {"bb", "backward predicted MVs of B-frames", 0, FF_OPT_TYPE_CONST, FF_DEBUG_VIS_MV_B_BACK, INT_MIN, INT_MAX, V|D, "debug_mv"}, | |
| 4300 | 597 {"mb_qmin", "obsolete, use qmin", OFFSET(mb_qmin), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
| 598 {"mb_qmax", "obsolete, use qmax", OFFSET(mb_qmax), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, | |
| 2881 | 599 {"cmp", "full pel me compare function", OFFSET(me_cmp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
| 600 {"subcmp", "sub pel me compare function", OFFSET(me_sub_cmp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
| 2878 | 601 {"mbcmp", "macroblock compare function", OFFSET(mb_cmp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
| 3704 | 602 {"ildctcmp", "interlaced dct compare function", OFFSET(ildct_cmp), FF_OPT_TYPE_INT, FF_CMP_VSAD, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
| 4261 | 603 {"dia_size", "diamond type & size for motion estimation", OFFSET(dia_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
| 604 {"last_pred", "amount of motion predictors from the previous frame", OFFSET(last_predictor_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, | |
|
3713
8b0992252432
adds descriptions to the libavcodec AVOptions array, taken from the
gpoirier
parents:
3704
diff
changeset
|
605 {"preme", "pre motion estimation", OFFSET(pre_me), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
| 2878 | 606 {"precmp", "pre motion estimation compare function", OFFSET(me_pre_cmp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
| 4261 | 607 {"sad", "sum of absolute differences, fast (default)", 0, FF_OPT_TYPE_CONST, FF_CMP_SAD, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
| 608 {"sse", "sum of squared errors", 0, FF_OPT_TYPE_CONST, FF_CMP_SSE, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
| 609 {"satd", "sum of absolute Hadamard transformed differences", 0, FF_OPT_TYPE_CONST, FF_CMP_SATD, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
| 610 {"dct", "sum of absolute DCT transformed differences", 0, FF_OPT_TYPE_CONST, FF_CMP_DCT, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
| 611 {"psnr", "sum of squared quantization errors (avoid, low quality)", 0, FF_OPT_TYPE_CONST, FF_CMP_PSNR, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
| 612 {"bit", "number of bits needed for the block", 0, FF_OPT_TYPE_CONST, FF_CMP_BIT, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
| 613 {"rd", "rate distortion optimal, slow", 0, FF_OPT_TYPE_CONST, FF_CMP_RD, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
| 614 {"zero", "0", 0, FF_OPT_TYPE_CONST, FF_CMP_ZERO, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
| 615 {"vsad", "sum of absolute vertical differences", 0, FF_OPT_TYPE_CONST, FF_CMP_VSAD, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
| 616 {"vsse","sum of squared vertical differences", 0, FF_OPT_TYPE_CONST, FF_CMP_VSSE, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
| 617 {"nsse", "noise preserving sum of squared differences", 0, FF_OPT_TYPE_CONST, FF_CMP_NSSE, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
|
3373
b8996cc5ccae
Disable w53 and w97 cmp methods when snow encoder is disabled
gpoirier
parents:
3372
diff
changeset
|
618 #ifdef CONFIG_SNOW_ENCODER |
| 4261 | 619 {"w53", "5/3 wavelet, only used in snow", 0, FF_OPT_TYPE_CONST, FF_CMP_W53, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
| 620 {"w97", "9/7 wavelet, only used in snow", 0, FF_OPT_TYPE_CONST, FF_CMP_W97, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
|
3373
b8996cc5ccae
Disable w53 and w97 cmp methods when snow encoder is disabled
gpoirier
parents:
3372
diff
changeset
|
621 #endif |
| 2881 | 622 {"dctmax", NULL, 0, FF_OPT_TYPE_CONST, FF_CMP_DCTMAX, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
| 623 {"chroma", NULL, 0, FF_OPT_TYPE_CONST, FF_CMP_CHROMA, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
| 4261 | 624 {"pre_dia_size", "diamond type & size for motion estimation pre-pass", OFFSET(pre_dia_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
| 3704 | 625 {"subq", "sub pel motion estimation quality", OFFSET(me_subpel_quality), FF_OPT_TYPE_INT, 8, INT_MIN, INT_MAX, V|E}, |
| 2862 | 626 {"dtg_active_format", NULL, OFFSET(dtg_active_format), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
|
3713
8b0992252432
adds descriptions to the libavcodec AVOptions array, taken from the
gpoirier
parents:
3704
diff
changeset
|
627 {"me_range", "limit motion vectors range (1023 for DivX player)", OFFSET(me_range), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
|
8b0992252432
adds descriptions to the libavcodec AVOptions array, taken from the
gpoirier
parents:
3704
diff
changeset
|
628 {"ibias", "intra quant bias", OFFSET(intra_quant_bias), FF_OPT_TYPE_INT, FF_DEFAULT_QUANT_BIAS, INT_MIN, INT_MAX, V|E}, |
|
8b0992252432
adds descriptions to the libavcodec AVOptions array, taken from the
gpoirier
parents:
3704
diff
changeset
|
629 {"pbias", "inter quant bias", OFFSET(inter_quant_bias), FF_OPT_TYPE_INT, FF_DEFAULT_QUANT_BIAS, INT_MIN, INT_MAX, V|E}, |
| 2862 | 630 {"color_table_id", NULL, OFFSET(color_table_id), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
| 631 {"internal_buffer_count", NULL, OFFSET(internal_buffer_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
| 632 {"global_quality", NULL, OFFSET(global_quality), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
| 2878 | 633 {"coder", NULL, OFFSET(coder_type), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "coder"}, |
| 2890 | 634 {"vlc", "variable length coder / huffman coder", 0, FF_OPT_TYPE_CONST, FF_CODER_TYPE_VLC, INT_MIN, INT_MAX, V|E, "coder"}, |
| 635 {"ac", "arithmetic coder", 0, FF_OPT_TYPE_CONST, FF_CODER_TYPE_AC, INT_MIN, INT_MAX, V|E, "coder"}, | |
| 636 {"context", "context model", OFFSET(context_model), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, | |
| 2862 | 637 {"slice_flags", NULL, OFFSET(slice_flags), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
| 638 {"xvmc_acceleration", NULL, OFFSET(xvmc_acceleration), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
| 4261 | 639 {"mbd", "macroblock decision algorithm (high quality mode)", OFFSET(mb_decision), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "mbd"}, |
| 640 {"simple", "use mbcmp (default)", 0, FF_OPT_TYPE_CONST, FF_MB_DECISION_SIMPLE, INT_MIN, INT_MAX, V|E, "mbd"}, | |
| 641 {"bits", "use fewest bits", 0, FF_OPT_TYPE_CONST, FF_MB_DECISION_BITS, INT_MIN, INT_MAX, V|E, "mbd"}, | |
| 642 {"rd", "use best rate distortion", 0, FF_OPT_TYPE_CONST, FF_MB_DECISION_RD, INT_MIN, INT_MAX, V|E, "mbd"}, | |
| 2862 | 643 {"stream_codec_tag", NULL, OFFSET(stream_codec_tag), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
|
3713
8b0992252432
adds descriptions to the libavcodec AVOptions array, taken from the
gpoirier
parents:
3704
diff
changeset
|
644 {"sc_threshold", "scene change threshold", OFFSET(scenechange_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
|
8b0992252432
adds descriptions to the libavcodec AVOptions array, taken from the
gpoirier
parents:
3704
diff
changeset
|
645 {"lmin", "min lagrange factor (VBR)", OFFSET(lmin), FF_OPT_TYPE_INT, 2*FF_QP2LAMBDA, 0, INT_MAX, V|E}, |
|
8b0992252432
adds descriptions to the libavcodec AVOptions array, taken from the
gpoirier
parents:
3704
diff
changeset
|
646 {"lmax", "max lagrange factor (VBR)", OFFSET(lmax), FF_OPT_TYPE_INT, 31*FF_QP2LAMBDA, 0, INT_MAX, V|E}, |
| 2890 | 647 {"nr", "noise reduction", OFFSET(noise_reduction), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
|
4272
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
648 {"rc_init_occupancy", "number of bits which should be loaded into the rc buffer before decoding starts", OFFSET(rc_initial_buffer_occupancy), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
| 2873 | 649 {"inter_threshold", NULL, OFFSET(inter_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
| 3704 | 650 {"flags2", NULL, OFFSET(flags2), FF_OPT_TYPE_FLAGS, CODEC_FLAG2_FASTPSKIP, INT_MIN, INT_MAX, V|A|E|D, "flags2"}, |
|
3751
0882d618eb57
Remove the "error" OptionDef. The equally named AVOption takes over its
takis
parents:
3750
diff
changeset
|
651 {"error", NULL, OFFSET(error_rate), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
|
4272
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
652 {"antialias", "MP3 antialias algorithm", OFFSET(antialias_algo), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|D, "aa"}, |
| 2881 | 653 {"auto", NULL, 0, FF_OPT_TYPE_CONST, FF_AA_AUTO, INT_MIN, INT_MAX, V|D, "aa"}, |
| 654 {"fastint", NULL, 0, FF_OPT_TYPE_CONST, FF_AA_FASTINT, INT_MIN, INT_MAX, V|D, "aa"}, | |
| 655 {"int", NULL, 0, FF_OPT_TYPE_CONST, FF_AA_INT, INT_MIN, INT_MAX, V|D, "aa"}, | |
| 656 {"float", NULL, 0, FF_OPT_TYPE_CONST, FF_AA_FLOAT, INT_MIN, INT_MAX, V|D, "aa"}, | |
| 2890 | 657 {"qns", "quantizer noise shaping", OFFSET(quantizer_noise_shaping), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
|
3723
26a99b559184
Rename the AVOption's names to the shorter OptionDef names.
takis
parents:
3720
diff
changeset
|
658 {"threads", NULL, OFFSET(thread_count), FF_OPT_TYPE_INT, 1, INT_MIN, INT_MAX, V|E|D}, |
| 2877 | 659 {"me_threshold", "motion estimaton threshold", OFFSET(me_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
|
3749
ac7cef800ab1
Remove the "mb_threshold" OptionDef. The equally named AVOption takes over its
takis
parents:
3739
diff
changeset
|
660 {"mb_threshold", "macroblock threshold", OFFSET(mb_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
| 3765 | 661 {"dc", "intra_dc_precision", OFFSET(intra_dc_precision), FF_OPT_TYPE_INT, 0, INT_MIN, INT_MAX, V|E}, |
| 2890 | 662 {"nssew", "nsse weight", OFFSET(nsse_weight), FF_OPT_TYPE_INT, 8, INT_MIN, INT_MAX, V|E}, |
|
4272
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
663 {"skip_top", "number of macroblock rows at the top which are skipped", OFFSET(skip_top), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|D}, |
|
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
664 {"skip_bottom", "number of macroblock rows at the bottom which are skipped", OFFSET(skip_bottom), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|D}, |
| 2878 | 665 {"profile", NULL, OFFSET(profile), FF_OPT_TYPE_INT, FF_PROFILE_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "profile"}, |
| 2881 | 666 {"unknown", NULL, 0, FF_OPT_TYPE_CONST, FF_PROFILE_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "profile"}, |
| 2878 | 667 {"level", NULL, OFFSET(level), FF_OPT_TYPE_INT, FF_LEVEL_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "level"}, |
| 2881 | 668 {"unknown", NULL, 0, FF_OPT_TYPE_CONST, FF_LEVEL_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "level"}, |
| 4261 | 669 {"lowres", "decode at 1= 1/2, 2=1/4, 3=1/8 resolutions", OFFSET(lowres), FF_OPT_TYPE_INT, 0, 0, INT_MAX, V|D}, |
|
3723
26a99b559184
Rename the AVOption's names to the shorter OptionDef names.
takis
parents:
3720
diff
changeset
|
670 {"skip_threshold", "frame skip threshold", OFFSET(frame_skip_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
|
26a99b559184
Rename the AVOption's names to the shorter OptionDef names.
takis
parents:
3720
diff
changeset
|
671 {"skip_factor", "frame skip factor", OFFSET(frame_skip_factor), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
|
26a99b559184
Rename the AVOption's names to the shorter OptionDef names.
takis
parents:
3720
diff
changeset
|
672 {"skip_exp", "frame skip exponent", OFFSET(frame_skip_exp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
| 2927 | 673 {"skipcmp", "frame skip compare function", OFFSET(frame_skip_cmp), FF_OPT_TYPE_INT, FF_CMP_DCTMAX, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
| 4261 | 674 {"border_mask", "increases the quantizer for macroblocks close to borders", OFFSET(border_masking), FF_OPT_TYPE_FLOAT, DEFAULT, -FLT_MAX, FLT_MAX, V|E}, |
| 4124 | 675 {"mblmin", "min macroblock lagrange factor (VBR)", OFFSET(mb_lmin), FF_OPT_TYPE_INT, FF_QP2LAMBDA * 2, 1, FF_LAMBDA_MAX, V|E}, |
| 676 {"mblmax", "max macroblock lagrange factor (VBR)", OFFSET(mb_lmax), FF_OPT_TYPE_INT, FF_QP2LAMBDA * 31, 1, FF_LAMBDA_MAX, V|E}, | |
|
3750
b95d0b7b8d73
Remove the "mepc" OptionDef. The equally named AVOption takes over its function.
takis
parents:
3749
diff
changeset
|
677 {"mepc", "motion estimation bitrate penalty compensation (1.0 = 256)", OFFSET(me_penalty_compensation), FF_OPT_TYPE_INT, 256, INT_MIN, INT_MAX, V|E}, |
| 4261 | 678 {"bidir_refine", "refine the two motion vectors used in bidirectional macroblocks", OFFSET(bidir_refine), FF_OPT_TYPE_INT, DEFAULT, 0, 4, V|E}, |
| 679 {"brd_scale", "downscales frames for dynamic B-frame decision", OFFSET(brd_scale), FF_OPT_TYPE_INT, DEFAULT, 0, 10, V|E}, | |
| 680 {"crf", "enables constant quality mode, and selects the quality (x264)", OFFSET(crf), FF_OPT_TYPE_FLOAT, DEFAULT, 0, 51, V|E}, | |
|
4272
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
681 {"cqp", "constant quantization parameter rate control method", OFFSET(cqp), FF_OPT_TYPE_INT, -1, INT_MIN, INT_MAX, V|E}, |
| 4261 | 682 {"keyint_min", "minimum interval between IDR-frames (x264)", OFFSET(keyint_min), FF_OPT_TYPE_INT, 25, INT_MIN, INT_MAX, V|E}, |
| 683 {"refs", "reference frames to consider for motion compensation (Snow)", OFFSET(refs), FF_OPT_TYPE_INT, 1, INT_MIN, INT_MAX, V|E}, | |
|
4272
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
684 {"chromaoffset", "chroma qp offset from luma", OFFSET(chromaoffset), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
|
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
685 {"bframebias", "influences how often B-frames are used", OFFSET(bframebias), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
| 4261 | 686 {"trellis", "rate-distortion optimal quantization", OFFSET(trellis), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|A|E}, |
|
4272
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
687 {"directpred", "direct mv prediction mode - 0 (none), 1 (spatial), 2 (temporal)", OFFSET(directpred), FF_OPT_TYPE_INT, 2, INT_MIN, INT_MAX, V|E}, |
| 4261 | 688 {"bpyramid", "allows B-frames to be used as references for predicting", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_BPYRAMID, INT_MIN, INT_MAX, V|E, "flags2"}, |
|
4272
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
689 {"wpred", "weighted biprediction for b-frames (H.264)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_WPRED, INT_MIN, INT_MAX, V|E, "flags2"}, |
|
4273
73abe5df48ea
Add "mixed_refs" description suggested by Loren Merritt and update accompanying
takis
parents:
4272
diff
changeset
|
690 {"mixed_refs", "one reference per partition, as opposed to one reference per macroblock", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_MIXED_REFS, INT_MIN, INT_MAX, V|E, "flags2"}, |
|
4272
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
691 {"8x8dct", "high profile 8x8 transform (H.264)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_8X8DCT, INT_MIN, INT_MAX, V|E, "flags2"}, |
|
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
692 {"fastpskip", "fast pskip (H.264)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_FASTPSKIP, INT_MIN, INT_MAX, V|E, "flags2"}, |
|
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
693 {"aud", "access unit delimiters (H.264)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_AUD, INT_MIN, INT_MAX, V|E, "flags2"}, |
|
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
694 {"brdo", "b-frame rate-distortion optimization", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_BRDO, INT_MIN, INT_MAX, V|E, "flags2"}, |
|
4329
356483de0c13
skiprd doxygen comment from avcodec.h -> AVOption comment
michael
parents:
4327
diff
changeset
|
695 {"skiprd", "RD optimal MB level residual skiping", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_SKIP_RD, INT_MIN, INT_MAX, V|E, "flags2"}, |
|
4272
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
696 {"complexityblur", "reduce fluctuations in qp (before curve compression)", OFFSET(complexityblur), FF_OPT_TYPE_FLOAT, 20.0, FLT_MIN, FLT_MAX, V|E}, |
|
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
697 {"deblockalpha", "in-loop deblocking filter alphac0 parameter", OFFSET(deblockalpha), FF_OPT_TYPE_INT, DEFAULT, -6, 6, V|E}, |
|
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
698 {"deblockbeta", "in-loop deblocking filter beta parameter", OFFSET(deblockbeta), FF_OPT_TYPE_INT, DEFAULT, -6, 6, V|E}, |
|
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
699 {"partitions", "macroblock subpartition sizes to consider", OFFSET(partitions), FF_OPT_TYPE_FLAGS, DEFAULT, INT_MIN, INT_MAX, V|E, "partitions"}, |
| 2996 | 700 {"parti4x4", NULL, 0, FF_OPT_TYPE_CONST, X264_PART_I4X4, INT_MIN, INT_MAX, V|E, "partitions"}, |
| 701 {"parti8x8", NULL, 0, FF_OPT_TYPE_CONST, X264_PART_I8X8, INT_MIN, INT_MAX, V|E, "partitions"}, | |
| 702 {"partp4x4", NULL, 0, FF_OPT_TYPE_CONST, X264_PART_P4X4, INT_MIN, INT_MAX, V|E, "partitions"}, | |
| 703 {"partp8x8", NULL, 0, FF_OPT_TYPE_CONST, X264_PART_P8X8, INT_MIN, INT_MAX, V|E, "partitions"}, | |
| 704 {"partb8x8", NULL, 0, FF_OPT_TYPE_CONST, X264_PART_B8X8, INT_MIN, INT_MAX, V|E, "partitions"}, | |
|
4272
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
705 {"sc_factor", "multiplied by qscale for each frame and added to scene_change_score", OFFSET(scenechange_factor), FF_OPT_TYPE_INT, 6, 0, INT_MAX, V|E}, |
| 3293 | 706 {"mv0_threshold", NULL, OFFSET(mv0_threshold), FF_OPT_TYPE_INT, 256, 0, INT_MAX, V|E}, |
| 3305 | 707 {"ivlc", "intra vlc table", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_INTRA_VLC, INT_MIN, INT_MAX, V|E, "flags2"}, |
|
4272
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
708 {"b_sensitivity", "adjusts sensitivity of b_frame_strategy 1", OFFSET(b_sensitivity), FF_OPT_TYPE_INT, 40, 1, INT_MAX, V|E}, |
|
3385
340e5d35b326
flac-lpc patch by (Justin Ruggles jruggle earthlink net)
michael
parents:
3373
diff
changeset
|
709 {"compression_level", NULL, OFFSET(compression_level), FF_OPT_TYPE_INT, FF_COMPRESSION_DEFAULT, INT_MIN, INT_MAX, V|A|E}, |
|
4272
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
710 {"use_lpc", "sets whether to use LPC mode (FLAC)", OFFSET(use_lpc), FF_OPT_TYPE_INT, -1, INT_MIN, INT_MAX, A|E}, |
|
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
711 {"lpc_coeff_precision", "LPC coefficient precision (FLAC)", OFFSET(lpc_coeff_precision), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, A|E}, |
|
3385
340e5d35b326
flac-lpc patch by (Justin Ruggles jruggle earthlink net)
michael
parents:
3373
diff
changeset
|
712 {"min_prediction_order", NULL, OFFSET(min_prediction_order), FF_OPT_TYPE_INT, -1, INT_MIN, INT_MAX, A|E}, |
|
340e5d35b326
flac-lpc patch by (Justin Ruggles jruggle earthlink net)
michael
parents:
3373
diff
changeset
|
713 {"max_prediction_order", NULL, OFFSET(max_prediction_order), FF_OPT_TYPE_INT, -1, INT_MIN, INT_MAX, A|E}, |
|
4272
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
714 {"prediction_order_method", "search method for selecting prediction order", OFFSET(prediction_order_method), FF_OPT_TYPE_INT, -1, INT_MIN, INT_MAX, A|E}, |
|
3385
340e5d35b326
flac-lpc patch by (Justin Ruggles jruggle earthlink net)
michael
parents:
3373
diff
changeset
|
715 {"min_partition_order", NULL, OFFSET(min_partition_order), FF_OPT_TYPE_INT, -1, INT_MIN, INT_MAX, A|E}, |
|
340e5d35b326
flac-lpc patch by (Justin Ruggles jruggle earthlink net)
michael
parents:
3373
diff
changeset
|
716 {"max_partition_order", NULL, OFFSET(max_partition_order), FF_OPT_TYPE_INT, -1, INT_MIN, INT_MAX, A|E}, |
|
4272
41a4841117d2
Add more descriptions to the AVOption array taken from the avcodec.h AVCodec structure member comments.
takis
parents:
4264
diff
changeset
|
717 {"timecode_frame_start", "GOP timecode frame start number, in non drop frame format", OFFSET(timecode_frame_start), FF_OPT_TYPE_INT, 0, 0, INT_MAX, V|E}, |
|
4158
47d1b5261f17
add option to set mpeg1/2 gop timecode start, and drop frame flag timecode flag
bcoudurier
parents:
4124
diff
changeset
|
718 {"drop_frame_timecode", NULL, 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_DROP_FRAME_TIMECODE, INT_MIN, INT_MAX, V|E, "flags2"}, |
| 2862 | 719 {NULL}, |
| 720 }; | |
| 721 | |
| 2873 | 722 #undef A |
| 723 #undef V | |
|
3688
c63b9bb49532
undefines a few temporary defines which were not undefined after their usage.
gpoirier
parents:
3666
diff
changeset
|
724 #undef S |
|
c63b9bb49532
undefines a few temporary defines which were not undefined after their usage.
gpoirier
parents:
3666
diff
changeset
|
725 #undef E |
|
c63b9bb49532
undefines a few temporary defines which were not undefined after their usage.
gpoirier
parents:
3666
diff
changeset
|
726 #undef D |
|
c63b9bb49532
undefines a few temporary defines which were not undefined after their usage.
gpoirier
parents:
3666
diff
changeset
|
727 #undef DEFAULT |
| 2873 | 728 |
| 2862 | 729 static AVClass av_codec_context_class = { "AVCodecContext", context_to_name, options }; |
| 1856 | 730 |
| 681 | 731 void avcodec_get_context_defaults(AVCodecContext *s){ |
|
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
732 memset(s, 0, sizeof(AVCodecContext)); |
|
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
733 |
| 1856 | 734 s->av_class= &av_codec_context_class; |
| 3702 | 735 |
| 736 av_opt_set_defaults(s); | |
| 737 | |
| 681 | 738 s->rc_eq= "tex^qComp"; |
| 2637 | 739 s->time_base= (AVRational){0,1}; |
| 903 | 740 s->get_buffer= avcodec_default_get_buffer; |
| 741 s->release_buffer= avcodec_default_release_buffer; | |
| 998 | 742 s->get_format= avcodec_default_get_format; |
| 1799 | 743 s->execute= avcodec_default_execute; |
| 1548 | 744 s->sample_aspect_ratio= (AVRational){0,1}; |
| 2635 | 745 s->pix_fmt= PIX_FMT_NONE; |
|
3136
ddf6d81a6369
added none/8bit/24bit audio formats and defaulting to s16 for now (once the system works like pix_fmt, the defaulting should be changed to SAMPLE_FMT_NONE)
alex
parents:
3075
diff
changeset
|
746 s->sample_fmt= SAMPLE_FMT_S16; // FIXME: set to NONE |
| 2967 | 747 |
|
1585
6b224ca24033
revised palette API, courtesy of Roberto Togni (rtogni at freemail.it)
melanson
parents:
1582
diff
changeset
|
748 s->palctrl = NULL; |
| 1630 | 749 s->reget_buffer= avcodec_default_reget_buffer; |
| 681 | 750 } |
| 751 | |
| 703 | 752 AVCodecContext *avcodec_alloc_context(void){ |
|
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
753 AVCodecContext *avctx= av_malloc(sizeof(AVCodecContext)); |
| 2967 | 754 |
| 681 | 755 if(avctx==NULL) return NULL; |
| 2967 | 756 |
| 681 | 757 avcodec_get_context_defaults(avctx); |
| 2967 | 758 |
| 681 | 759 return avctx; |
| 760 } | |
| 761 | |
|
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
762 void avcodec_get_frame_defaults(AVFrame *pic){ |
|
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
763 memset(pic, 0, sizeof(AVFrame)); |
|
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
764 |
|
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
765 pic->pts= AV_NOPTS_VALUE; |
| 2488 | 766 pic->key_frame= 1; |
|
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
767 } |
|
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
768 |
| 925 | 769 AVFrame *avcodec_alloc_frame(void){ |
|
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
770 AVFrame *pic= av_malloc(sizeof(AVFrame)); |
| 2967 | 771 |
|
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
772 if(pic==NULL) return NULL; |
| 2967 | 773 |
|
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
774 avcodec_get_frame_defaults(pic); |
| 2967 | 775 |
| 903 | 776 return pic; |
| 777 } | |
| 778 | |
| 0 | 779 int avcodec_open(AVCodecContext *avctx, AVCodec *codec) |
| 780 { | |
| 2806 | 781 int ret= -1; |
| 2967 | 782 |
| 2806 | 783 entangled_thread_counter++; |
| 784 if(entangled_thread_counter != 1){ | |
| 785 av_log(avctx, AV_LOG_ERROR, "insufficient thread locking around avcodec_open/close()\n"); | |
| 786 goto end; | |
| 787 } | |
| 0 | 788 |
|
1456
670fca257a69
detect avcodec_open() on an already opened AVCodecContext
michaelni
parents:
1455
diff
changeset
|
789 if(avctx->codec) |
| 2806 | 790 goto end; |
|
1456
670fca257a69
detect avcodec_open() on an already opened AVCodecContext
michaelni
parents:
1455
diff
changeset
|
791 |
|
374
02147e22f8c8
* Don't allocate 0 bytes of memory. It upsets electricFence!
philipjsg
parents:
362
diff
changeset
|
792 if (codec->priv_data_size > 0) { |
|
02147e22f8c8
* Don't allocate 0 bytes of memory. It upsets electricFence!
philipjsg
parents:
362
diff
changeset
|
793 avctx->priv_data = av_mallocz(codec->priv_data_size); |
| 2967 | 794 if (!avctx->priv_data) |
| 2806 | 795 goto end; |
|
374
02147e22f8c8
* Don't allocate 0 bytes of memory. It upsets electricFence!
philipjsg
parents:
362
diff
changeset
|
796 } else { |
|
02147e22f8c8
* Don't allocate 0 bytes of memory. It upsets electricFence!
philipjsg
parents:
362
diff
changeset
|
797 avctx->priv_data = NULL; |
|
02147e22f8c8
* Don't allocate 0 bytes of memory. It upsets electricFence!
philipjsg
parents:
362
diff
changeset
|
798 } |
| 2270 | 799 |
| 800 if(avctx->coded_width && avctx->coded_height) | |
| 801 avcodec_set_dimensions(avctx, avctx->coded_width, avctx->coded_height); | |
| 802 else if(avctx->width && avctx->height) | |
| 803 avcodec_set_dimensions(avctx, avctx->width, avctx->height); | |
| 804 | |
| 2422 | 805 if((avctx->coded_width||avctx->coded_height) && avcodec_check_dimensions(avctx,avctx->coded_width,avctx->coded_height)){ |
| 806 av_freep(&avctx->priv_data); | |
| 2806 | 807 goto end; |
| 2422 | 808 } |
| 809 | |
| 3159 | 810 avctx->codec = codec; |
| 811 avctx->codec_id = codec->id; | |
| 812 avctx->frame_number = 0; | |
| 0 | 813 ret = avctx->codec->init(avctx); |
| 814 if (ret < 0) { | |
| 394 | 815 av_freep(&avctx->priv_data); |
| 3159 | 816 avctx->codec= NULL; |
| 2806 | 817 goto end; |
| 0 | 818 } |
| 2806 | 819 ret=0; |
| 820 end: | |
| 821 entangled_thread_counter--; | |
| 822 return ret; | |
| 0 | 823 } |
| 824 | |
| 2967 | 825 int avcodec_encode_audio(AVCodecContext *avctx, uint8_t *buf, int buf_size, |
| 0 | 826 const short *samples) |
| 827 { | |
| 2422 | 828 if(buf_size < FF_MIN_BUFFER_SIZE && 0){ |
| 4526 | 829 av_log(avctx, AV_LOG_ERROR, "buffer smaller than minimum size\n"); |
| 2422 | 830 return -1; |
| 831 } | |
| 2091 | 832 if((avctx->codec->capabilities & CODEC_CAP_DELAY) || samples){ |
| 833 int ret = avctx->codec->encode(avctx, buf, buf_size, (void *)samples); | |
| 834 avctx->frame_number++; | |
| 835 return ret; | |
| 836 }else | |
| 837 return 0; | |
| 0 | 838 } |
| 839 | |
| 2967 | 840 int avcodec_encode_video(AVCodecContext *avctx, uint8_t *buf, int buf_size, |
| 925 | 841 const AVFrame *pict) |
| 0 | 842 { |
| 2422 | 843 if(buf_size < FF_MIN_BUFFER_SIZE){ |
| 4526 | 844 av_log(avctx, AV_LOG_ERROR, "buffer smaller than minimum size\n"); |
| 2422 | 845 return -1; |
| 846 } | |
| 847 if(avcodec_check_dimensions(avctx,avctx->width,avctx->height)) | |
| 848 return -1; | |
| 2091 | 849 if((avctx->codec->capabilities & CODEC_CAP_DELAY) || pict){ |
| 850 int ret = avctx->codec->encode(avctx, buf, buf_size, (void *)pict); | |
| 851 avctx->frame_number++; | |
| 2764 | 852 emms_c(); //needed to avoid an emms_c() call before every return; |
| 2967 | 853 |
| 2091 | 854 return ret; |
| 855 }else | |
| 856 return 0; | |
| 0 | 857 } |
| 858 | |
| 2967 | 859 int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, |
| 2756 | 860 const AVSubtitle *sub) |
| 861 { | |
| 862 int ret; | |
| 863 ret = avctx->codec->encode(avctx, buf, buf_size, (void *)sub); | |
| 864 avctx->frame_number++; | |
| 865 return ret; | |
| 866 } | |
| 867 | |
| 2967 | 868 int avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture, |
| 0 | 869 int *got_picture_ptr, |
| 1064 | 870 uint8_t *buf, int buf_size) |
| 0 | 871 { |
| 872 int ret; | |
| 2967 | 873 |
| 2028 | 874 *got_picture_ptr= 0; |
| 2422 | 875 if((avctx->coded_width||avctx->coded_height) && avcodec_check_dimensions(avctx,avctx->coded_width,avctx->coded_height)) |
| 876 return -1; | |
| 2453 | 877 if((avctx->codec->capabilities & CODEC_CAP_DELAY) || buf_size){ |
| 2967 | 878 ret = avctx->codec->decode(avctx, picture, got_picture_ptr, |
| 2453 | 879 buf, buf_size); |
| 814 | 880 |
| 2764 | 881 emms_c(); //needed to avoid an emms_c() call before every return; |
| 2967 | 882 |
| 883 if (*got_picture_ptr) | |
| 2453 | 884 avctx->frame_number++; |
| 885 }else | |
| 886 ret= 0; | |
| 887 | |
| 0 | 888 return ret; |
| 889 } | |
| 890 | |
| 4351 | 891 int avcodec_decode_audio2(AVCodecContext *avctx, int16_t *samples, |
| 0 | 892 int *frame_size_ptr, |
| 1064 | 893 uint8_t *buf, int buf_size) |
| 0 | 894 { |
| 895 int ret; | |
| 896 | |
| 2791 | 897 if((avctx->codec->capabilities & CODEC_CAP_DELAY) || buf_size){ |
|
4578
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
898 //FIXME remove the check below _after_ ensuring that all audio check that the available space is enough |
|
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
899 if(*frame_size_ptr < AVCODEC_MAX_AUDIO_FRAME_SIZE){ |
|
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
900 av_log(avctx, AV_LOG_ERROR, "buffer smaller than AVCODEC_MAX_AUDIO_FRAME_SIZE\n"); |
|
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
901 return -1; |
|
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
902 } |
|
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
903 if(*frame_size_ptr < FF_MIN_BUFFER_SIZE || |
|
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
904 *frame_size_ptr < avctx->channels * avctx->frame_size * sizeof(int16_t) || |
|
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
905 *frame_size_ptr < buf_size){ |
|
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
906 av_log(avctx, AV_LOG_ERROR, "buffer %d too small\n", *frame_size_ptr); |
|
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
907 return -1; |
|
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
908 } |
|
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
909 |
| 2967 | 910 ret = avctx->codec->decode(avctx, samples, frame_size_ptr, |
| 2791 | 911 buf, buf_size); |
| 912 avctx->frame_number++; | |
| 4351 | 913 }else{ |
| 2791 | 914 ret= 0; |
| 4351 | 915 *frame_size_ptr=0; |
| 916 } | |
| 0 | 917 return ret; |
| 918 } | |
| 919 | |
| 4351 | 920 #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) |
| 921 int avcodec_decode_audio(AVCodecContext *avctx, int16_t *samples, | |
| 922 int *frame_size_ptr, | |
| 923 uint8_t *buf, int buf_size){ | |
| 924 *frame_size_ptr= AVCODEC_MAX_AUDIO_FRAME_SIZE; | |
| 925 return avcodec_decode_audio2(avctx, samples, frame_size_ptr, buf, buf_size); | |
| 926 } | |
| 927 #endif | |
| 928 | |
| 2756 | 929 int avcodec_decode_subtitle(AVCodecContext *avctx, AVSubtitle *sub, |
| 930 int *got_sub_ptr, | |
| 931 const uint8_t *buf, int buf_size) | |
| 932 { | |
| 933 int ret; | |
| 934 | |
| 935 *got_sub_ptr = 0; | |
| 2967 | 936 ret = avctx->codec->decode(avctx, sub, got_sub_ptr, |
| 2756 | 937 (uint8_t *)buf, buf_size); |
| 938 if (*got_sub_ptr) | |
| 939 avctx->frame_number++; | |
| 940 return ret; | |
| 941 } | |
| 942 | |
| 0 | 943 int avcodec_close(AVCodecContext *avctx) |
| 944 { | |
| 2806 | 945 entangled_thread_counter++; |
| 946 if(entangled_thread_counter != 1){ | |
| 947 av_log(avctx, AV_LOG_ERROR, "insufficient thread locking around avcodec_open/close()\n"); | |
| 948 entangled_thread_counter--; | |
| 949 return -1; | |
| 950 } | |
| 951 | |
| 0 | 952 if (avctx->codec->close) |
| 953 avctx->codec->close(avctx); | |
| 1994 | 954 avcodec_default_free_buffers(avctx); |
| 394 | 955 av_freep(&avctx->priv_data); |
| 0 | 956 avctx->codec = NULL; |
| 2806 | 957 entangled_thread_counter--; |
| 0 | 958 return 0; |
| 959 } | |
| 960 | |
| 961 AVCodec *avcodec_find_encoder(enum CodecID id) | |
| 962 { | |
| 963 AVCodec *p; | |
| 964 p = first_avcodec; | |
| 965 while (p) { | |
| 966 if (p->encode != NULL && p->id == id) | |
| 967 return p; | |
| 968 p = p->next; | |
| 969 } | |
| 970 return NULL; | |
| 971 } | |
| 972 | |
| 177 | 973 AVCodec *avcodec_find_encoder_by_name(const char *name) |
| 974 { | |
| 975 AVCodec *p; | |
| 976 p = first_avcodec; | |
| 977 while (p) { | |
| 978 if (p->encode != NULL && strcmp(name,p->name) == 0) | |
| 979 return p; | |
| 980 p = p->next; | |
| 981 } | |
| 982 return NULL; | |
| 983 } | |
| 984 | |
| 0 | 985 AVCodec *avcodec_find_decoder(enum CodecID id) |
| 986 { | |
| 987 AVCodec *p; | |
| 988 p = first_avcodec; | |
| 989 while (p) { | |
| 990 if (p->decode != NULL && p->id == id) | |
| 991 return p; | |
| 992 p = p->next; | |
| 993 } | |
| 994 return NULL; | |
| 995 } | |
| 996 | |
| 997 AVCodec *avcodec_find_decoder_by_name(const char *name) | |
| 998 { | |
| 999 AVCodec *p; | |
| 1000 p = first_avcodec; | |
| 1001 while (p) { | |
| 1002 if (p->decode != NULL && strcmp(name,p->name) == 0) | |
| 1003 return p; | |
| 1004 p = p->next; | |
| 1005 } | |
| 1006 return NULL; | |
| 1007 } | |
| 1008 | |
| 1009 void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode) | |
| 1010 { | |
| 1011 const char *codec_name; | |
| 1012 AVCodec *p; | |
| 1013 char buf1[32]; | |
| 337 | 1014 char channels_str[100]; |
| 92 | 1015 int bitrate; |
| 0 | 1016 |
| 1017 if (encode) | |
| 1018 p = avcodec_find_encoder(enc->codec_id); | |
| 1019 else | |
| 1020 p = avcodec_find_decoder(enc->codec_id); | |
| 1021 | |
| 1022 if (p) { | |
| 1023 codec_name = p->name; | |
|
1449
7fbe89a76b73
update sub_id in mpegaudio decoding (might need same method as MPEG2VIDEO too ?)
bellard
parents:
1396
diff
changeset
|
1024 if (!encode && enc->codec_id == CODEC_ID_MP3) { |
|
7fbe89a76b73
update sub_id in mpegaudio decoding (might need same method as MPEG2VIDEO too ?)
bellard
parents:
1396
diff
changeset
|
1025 if (enc->sub_id == 2) |
|
7fbe89a76b73
update sub_id in mpegaudio decoding (might need same method as MPEG2VIDEO too ?)
bellard
parents:
1396
diff
changeset
|
1026 codec_name = "mp2"; |
|
7fbe89a76b73
update sub_id in mpegaudio decoding (might need same method as MPEG2VIDEO too ?)
bellard
parents:
1396
diff
changeset
|
1027 else if (enc->sub_id == 1) |
|
7fbe89a76b73
update sub_id in mpegaudio decoding (might need same method as MPEG2VIDEO too ?)
bellard
parents:
1396
diff
changeset
|
1028 codec_name = "mp1"; |
|
7fbe89a76b73
update sub_id in mpegaudio decoding (might need same method as MPEG2VIDEO too ?)
bellard
parents:
1396
diff
changeset
|
1029 } |
|
1582
ece0ad14a35d
added fake codec CODEC_ID_MPEG2TS of type CODEC_TYPE_DATA (needed for simpler handling of raw transport streams in ffserver and RTP - better solutions are welcomed)
bellard
parents:
1549
diff
changeset
|
1030 } else if (enc->codec_id == CODEC_ID_MPEG2TS) { |
|
ece0ad14a35d
added fake codec CODEC_ID_MPEG2TS of type CODEC_TYPE_DATA (needed for simpler handling of raw transport streams in ffserver and RTP - better solutions are welcomed)
bellard
parents:
1549
diff
changeset
|
1031 /* fake mpeg2 transport stream codec (currently not |
|
ece0ad14a35d
added fake codec CODEC_ID_MPEG2TS of type CODEC_TYPE_DATA (needed for simpler handling of raw transport streams in ffserver and RTP - better solutions are welcomed)
bellard
parents:
1549
diff
changeset
|
1032 registered) */ |
|
ece0ad14a35d
added fake codec CODEC_ID_MPEG2TS of type CODEC_TYPE_DATA (needed for simpler handling of raw transport streams in ffserver and RTP - better solutions are welcomed)
bellard
parents:
1549
diff
changeset
|
1033 codec_name = "mpeg2ts"; |
| 0 | 1034 } else if (enc->codec_name[0] != '\0') { |
| 1035 codec_name = enc->codec_name; | |
| 1036 } else { | |
| 1037 /* output avi tags */ | |
| 2967 | 1038 if( isprint(enc->codec_tag&0xFF) && isprint((enc->codec_tag>>8)&0xFF) |
| 2856 | 1039 && isprint((enc->codec_tag>>16)&0xFF) && isprint((enc->codec_tag>>24)&0xFF)){ |
| 2967 | 1040 snprintf(buf1, sizeof(buf1), "%c%c%c%c / 0x%04X", |
| 0 | 1041 enc->codec_tag & 0xff, |
| 1042 (enc->codec_tag >> 8) & 0xff, | |
| 1043 (enc->codec_tag >> 16) & 0xff, | |
| 2856 | 1044 (enc->codec_tag >> 24) & 0xff, |
| 1045 enc->codec_tag); | |
| 0 | 1046 } else { |
| 1047 snprintf(buf1, sizeof(buf1), "0x%04x", enc->codec_tag); | |
| 1048 } | |
| 1049 codec_name = buf1; | |
| 1050 } | |
| 1051 | |
| 1052 switch(enc->codec_type) { | |
| 1053 case CODEC_TYPE_VIDEO: | |
| 1054 snprintf(buf, buf_size, | |
| 1055 "Video: %s%s", | |
| 1389 | 1056 codec_name, enc->mb_decision ? " (hq)" : ""); |
|
2636
2344c6713011
print pix_fmt if its known instead of if the raw codec is used
michael
parents:
2635
diff
changeset
|
1057 if (enc->pix_fmt != PIX_FMT_NONE) { |
| 55 | 1058 snprintf(buf + strlen(buf), buf_size - strlen(buf), |
| 1059 ", %s", | |
|
988
001b7d3045e5
moved avcodec_get_chroma_sub_sample() to imgconvert.c
bellard
parents:
963
diff
changeset
|
1060 avcodec_get_pix_fmt_name(enc->pix_fmt)); |
| 55 | 1061 } |
| 0 | 1062 if (enc->width) { |
| 1063 snprintf(buf + strlen(buf), buf_size - strlen(buf), | |
|
2884
a332778dfa06
print more time_base fps stuff if av_log level is at debug or above
michael
parents:
2881
diff
changeset
|
1064 ", %dx%d", |
|
a332778dfa06
print more time_base fps stuff if av_log level is at debug or above
michael
parents:
2881
diff
changeset
|
1065 enc->width, enc->height); |
|
4500
18a88f830d1a
Directly access av_log_level instead of calling av_log_{set, get}_level()
lucabe
parents:
4494
diff
changeset
|
1066 if(av_log_level >= AV_LOG_DEBUG){ |
|
2884
a332778dfa06
print more time_base fps stuff if av_log level is at debug or above
michael
parents:
2881
diff
changeset
|
1067 int g= ff_gcd(enc->time_base.num, enc->time_base.den); |
|
a332778dfa06
print more time_base fps stuff if av_log level is at debug or above
michael
parents:
2881
diff
changeset
|
1068 snprintf(buf + strlen(buf), buf_size - strlen(buf), |
|
a332778dfa06
print more time_base fps stuff if av_log level is at debug or above
michael
parents:
2881
diff
changeset
|
1069 ", %d/%d", |
|
a332778dfa06
print more time_base fps stuff if av_log level is at debug or above
michael
parents:
2881
diff
changeset
|
1070 enc->time_base.num/g, enc->time_base.den/g); |
|
a332778dfa06
print more time_base fps stuff if av_log level is at debug or above
michael
parents:
2881
diff
changeset
|
1071 } |
| 0 | 1072 } |
| 741 | 1073 if (encode) { |
| 1074 snprintf(buf + strlen(buf), buf_size - strlen(buf), | |
| 1075 ", q=%d-%d", enc->qmin, enc->qmax); | |
| 1076 } | |
| 92 | 1077 bitrate = enc->bit_rate; |
| 0 | 1078 break; |
| 1079 case CODEC_TYPE_AUDIO: | |
| 1080 snprintf(buf, buf_size, | |
| 1081 "Audio: %s", | |
| 1082 codec_name); | |
|
318
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1083 switch (enc->channels) { |
|
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1084 case 1: |
| 337 | 1085 strcpy(channels_str, "mono"); |
|
318
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1086 break; |
|
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1087 case 2: |
| 337 | 1088 strcpy(channels_str, "stereo"); |
|
318
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1089 break; |
|
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1090 case 6: |
| 337 | 1091 strcpy(channels_str, "5:1"); |
|
318
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1092 break; |
|
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1093 default: |
| 2423 | 1094 snprintf(channels_str, sizeof(channels_str), "%d channels", enc->channels); |
|
318
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1095 break; |
|
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1096 } |
| 0 | 1097 if (enc->sample_rate) { |
| 1098 snprintf(buf + strlen(buf), buf_size - strlen(buf), | |
| 1099 ", %d Hz, %s", | |
| 1100 enc->sample_rate, | |
|
318
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1101 channels_str); |
| 0 | 1102 } |
| 2967 | 1103 |
| 92 | 1104 /* for PCM codecs, compute bitrate directly */ |
| 1105 switch(enc->codec_id) { | |
|
2852
6f7428adc6ad
Support de-/encoding of 24 and 32 bit PCM (from and to internal 16 bit).
reimar
parents:
2840
diff
changeset
|
1106 case CODEC_ID_PCM_S32LE: |
|
6f7428adc6ad
Support de-/encoding of 24 and 32 bit PCM (from and to internal 16 bit).
reimar
parents:
2840
diff
changeset
|
1107 case CODEC_ID_PCM_S32BE: |
|
6f7428adc6ad
Support de-/encoding of 24 and 32 bit PCM (from and to internal 16 bit).
reimar
parents:
2840
diff
changeset
|
1108 case CODEC_ID_PCM_U32LE: |
|
6f7428adc6ad
Support de-/encoding of 24 and 32 bit PCM (from and to internal 16 bit).
reimar
parents:
2840
diff
changeset
|
1109 case CODEC_ID_PCM_U32BE: |
|
6f7428adc6ad
Support de-/encoding of 24 and 32 bit PCM (from and to internal 16 bit).
reimar
parents:
2840
diff
changeset
|
1110 bitrate = enc->sample_rate * enc->channels * 32; |
|
6f7428adc6ad
Support de-/encoding of 24 and 32 bit PCM (from and to internal 16 bit).
reimar
parents:
2840
diff
changeset
|
1111 break; |
|
6f7428adc6ad
Support de-/encoding of 24 and 32 bit PCM (from and to internal 16 bit).
reimar
parents:
2840
diff
changeset
|
1112 case CODEC_ID_PCM_S24LE: |
|
6f7428adc6ad
Support de-/encoding of 24 and 32 bit PCM (from and to internal 16 bit).
reimar
parents:
2840
diff
changeset
|
1113 case CODEC_ID_PCM_S24BE: |
|
6f7428adc6ad
Support de-/encoding of 24 and 32 bit PCM (from and to internal 16 bit).
reimar
parents:
2840
diff
changeset
|
1114 case CODEC_ID_PCM_U24LE: |
|
6f7428adc6ad
Support de-/encoding of 24 and 32 bit PCM (from and to internal 16 bit).
reimar
parents:
2840
diff
changeset
|
1115 case CODEC_ID_PCM_U24BE: |
|
6f7428adc6ad
Support de-/encoding of 24 and 32 bit PCM (from and to internal 16 bit).
reimar
parents:
2840
diff
changeset
|
1116 case CODEC_ID_PCM_S24DAUD: |
|
6f7428adc6ad
Support de-/encoding of 24 and 32 bit PCM (from and to internal 16 bit).
reimar
parents:
2840
diff
changeset
|
1117 bitrate = enc->sample_rate * enc->channels * 24; |
|
6f7428adc6ad
Support de-/encoding of 24 and 32 bit PCM (from and to internal 16 bit).
reimar
parents:
2840
diff
changeset
|
1118 break; |
| 92 | 1119 case CODEC_ID_PCM_S16LE: |
| 1120 case CODEC_ID_PCM_S16BE: | |
| 1121 case CODEC_ID_PCM_U16LE: | |
| 1122 case CODEC_ID_PCM_U16BE: | |
| 94 | 1123 bitrate = enc->sample_rate * enc->channels * 16; |
| 92 | 1124 break; |
| 1125 case CODEC_ID_PCM_S8: | |
| 1126 case CODEC_ID_PCM_U8: | |
| 1127 case CODEC_ID_PCM_ALAW: | |
| 1128 case CODEC_ID_PCM_MULAW: | |
| 94 | 1129 bitrate = enc->sample_rate * enc->channels * 8; |
| 92 | 1130 break; |
| 1131 default: | |
| 1132 bitrate = enc->bit_rate; | |
| 1133 break; | |
| 1134 } | |
| 0 | 1135 break; |
|
1582
ece0ad14a35d
added fake codec CODEC_ID_MPEG2TS of type CODEC_TYPE_DATA (needed for simpler handling of raw transport streams in ffserver and RTP - better solutions are welcomed)
bellard
parents:
1549
diff
changeset
|
1136 case CODEC_TYPE_DATA: |
|
ece0ad14a35d
added fake codec CODEC_ID_MPEG2TS of type CODEC_TYPE_DATA (needed for simpler handling of raw transport streams in ffserver and RTP - better solutions are welcomed)
bellard
parents:
1549
diff
changeset
|
1137 snprintf(buf, buf_size, "Data: %s", codec_name); |
|
ece0ad14a35d
added fake codec CODEC_ID_MPEG2TS of type CODEC_TYPE_DATA (needed for simpler handling of raw transport streams in ffserver and RTP - better solutions are welcomed)
bellard
parents:
1549
diff
changeset
|
1138 bitrate = enc->bit_rate; |
|
ece0ad14a35d
added fake codec CODEC_ID_MPEG2TS of type CODEC_TYPE_DATA (needed for simpler handling of raw transport streams in ffserver and RTP - better solutions are welcomed)
bellard
parents:
1549
diff
changeset
|
1139 break; |
| 2756 | 1140 case CODEC_TYPE_SUBTITLE: |
| 1141 snprintf(buf, buf_size, "Subtitle: %s", codec_name); | |
| 1142 bitrate = enc->bit_rate; | |
| 1143 break; | |
| 0 | 1144 default: |
| 2281 | 1145 snprintf(buf, buf_size, "Invalid Codec type %d", enc->codec_type); |
| 1146 return; | |
| 0 | 1147 } |
| 741 | 1148 if (encode) { |
| 1149 if (enc->flags & CODEC_FLAG_PASS1) | |
| 1150 snprintf(buf + strlen(buf), buf_size - strlen(buf), | |
| 1151 ", pass 1"); | |
| 1152 if (enc->flags & CODEC_FLAG_PASS2) | |
| 1153 snprintf(buf + strlen(buf), buf_size - strlen(buf), | |
| 1154 ", pass 2"); | |
| 1155 } | |
| 92 | 1156 if (bitrate != 0) { |
| 2967 | 1157 snprintf(buf + strlen(buf), buf_size - strlen(buf), |
| 92 | 1158 ", %d kb/s", bitrate / 1000); |
| 0 | 1159 } |
| 1160 } | |
| 1161 | |
| 362 | 1162 unsigned avcodec_version( void ) |
| 1163 { | |
| 1164 return LIBAVCODEC_VERSION_INT; | |
| 1165 } | |
| 55 | 1166 |
| 379 | 1167 unsigned avcodec_build( void ) |
| 1168 { | |
| 1169 return LIBAVCODEC_BUILD; | |
| 1170 } | |
| 1171 | |
| 3169 | 1172 static void init_crcs(void){ |
| 1173 av_crc04C11DB7= av_mallocz_static(sizeof(AVCRC) * 257); | |
| 3170 | 1174 av_crc8005 = av_mallocz_static(sizeof(AVCRC) * 257); |
| 3171 | 1175 av_crc07 = av_mallocz_static(sizeof(AVCRC) * 257); |
| 3169 | 1176 av_crc_init(av_crc04C11DB7, 0, 32, 0x04c11db7, sizeof(AVCRC)*257); |
| 3170 | 1177 av_crc_init(av_crc8005 , 0, 16, 0x8005 , sizeof(AVCRC)*257); |
| 3171 | 1178 av_crc_init(av_crc07 , 0, 8, 0x07 , sizeof(AVCRC)*257); |
| 3169 | 1179 } |
| 1180 | |
| 0 | 1181 void avcodec_init(void) |
| 1182 { | |
|
303
9a931fd8d06c
multiple init bugfix (patch by Alex Beregszaszi <alex@naxine.org>)
michaelni
parents:
267
diff
changeset
|
1183 static int inited = 0; |
|
9a931fd8d06c
multiple init bugfix (patch by Alex Beregszaszi <alex@naxine.org>)
michaelni
parents:
267
diff
changeset
|
1184 |
|
9a931fd8d06c
multiple init bugfix (patch by Alex Beregszaszi <alex@naxine.org>)
michaelni
parents:
267
diff
changeset
|
1185 if (inited != 0) |
| 2979 | 1186 return; |
|
303
9a931fd8d06c
multiple init bugfix (patch by Alex Beregszaszi <alex@naxine.org>)
michaelni
parents:
267
diff
changeset
|
1187 inited = 1; |
|
9a931fd8d06c
multiple init bugfix (patch by Alex Beregszaszi <alex@naxine.org>)
michaelni
parents:
267
diff
changeset
|
1188 |
| 4197 | 1189 dsputil_static_init(); |
| 3169 | 1190 init_crcs(); |
| 0 | 1191 } |
| 1192 | |
| 341 | 1193 void avcodec_flush_buffers(AVCodecContext *avctx) |
| 1194 { | |
| 1368 | 1195 if(avctx->codec->flush) |
| 1196 avctx->codec->flush(avctx); | |
| 341 | 1197 } |
| 1198 | |
| 2231 | 1199 void avcodec_default_free_buffers(AVCodecContext *s){ |
| 1214 | 1200 int i, j; |
| 1201 | |
| 1202 if(s->internal_buffer==NULL) return; | |
| 2967 | 1203 |
| 1214 | 1204 for(i=0; i<INTERNAL_BUFFER_SIZE; i++){ |
| 1205 InternalBuffer *buf= &((InternalBuffer*)s->internal_buffer)[i]; | |
| 1206 for(j=0; j<4; j++){ | |
| 1207 av_freep(&buf->base[j]); | |
| 1208 buf->data[j]= NULL; | |
| 1209 } | |
| 1210 } | |
| 1211 av_freep(&s->internal_buffer); | |
| 2967 | 1212 |
| 1214 | 1213 s->internal_buffer_count=0; |
| 1214 } | |
| 1215 | |
| 1264 | 1216 char av_get_pict_type_char(int pict_type){ |
| 1217 switch(pict_type){ | |
| 2967 | 1218 case I_TYPE: return 'I'; |
| 1219 case P_TYPE: return 'P'; | |
| 1220 case B_TYPE: return 'B'; | |
| 1221 case S_TYPE: return 'S'; | |
| 1222 case SI_TYPE:return 'i'; | |
| 1223 case SP_TYPE:return 'p'; | |
| 1264 | 1224 default: return '?'; |
| 1225 } | |
| 1226 } | |
| 1227 | |
| 3433 | 1228 int av_get_bits_per_sample(enum CodecID codec_id){ |
| 1229 switch(codec_id){ | |
|
3435
ffa9e863f3be
simplify the voc demuxer using av_get_bits_per_sample()
aurel
parents:
3433
diff
changeset
|
1230 case CODEC_ID_ADPCM_SBPRO_2: |
| 3438 | 1231 return 2; |
|
3435
ffa9e863f3be
simplify the voc demuxer using av_get_bits_per_sample()
aurel
parents:
3433
diff
changeset
|
1232 case CODEC_ID_ADPCM_SBPRO_3: |
| 3438 | 1233 return 3; |
|
3435
ffa9e863f3be
simplify the voc demuxer using av_get_bits_per_sample()
aurel
parents:
3433
diff
changeset
|
1234 case CODEC_ID_ADPCM_SBPRO_4: |
| 3438 | 1235 case CODEC_ID_ADPCM_CT: |
| 1236 return 4; | |
| 3433 | 1237 case CODEC_ID_PCM_ALAW: |
| 1238 case CODEC_ID_PCM_MULAW: | |
| 1239 case CODEC_ID_PCM_S8: | |
| 1240 case CODEC_ID_PCM_U8: | |
| 1241 return 8; | |
| 1242 case CODEC_ID_PCM_S16BE: | |
| 1243 case CODEC_ID_PCM_S16LE: | |
| 1244 case CODEC_ID_PCM_U16BE: | |
| 1245 case CODEC_ID_PCM_U16LE: | |
| 1246 return 16; | |
| 1247 case CODEC_ID_PCM_S24DAUD: | |
| 1248 case CODEC_ID_PCM_S24BE: | |
| 1249 case CODEC_ID_PCM_S24LE: | |
| 1250 case CODEC_ID_PCM_U24BE: | |
| 1251 case CODEC_ID_PCM_U24LE: | |
| 1252 return 24; | |
| 1253 case CODEC_ID_PCM_S32BE: | |
| 1254 case CODEC_ID_PCM_S32LE: | |
| 1255 case CODEC_ID_PCM_U32BE: | |
| 1256 case CODEC_ID_PCM_U32LE: | |
| 1257 return 32; | |
| 1258 default: | |
| 1259 return 0; | |
| 1260 } | |
| 1261 } | |
| 1262 | |
|
2362
7a6ff8cc7c95
BeOS threading support. changed some "if FOO_THREAD||BAR_THREAD" to a more generic "if HAVE_THREADS"
mmu_man
parents:
2324
diff
changeset
|
1263 #if !defined(HAVE_THREADS) |
|
2013
85e547a18d87
dummy avcodec_thread_init() to avoid linking issues
michael
parents:
2002
diff
changeset
|
1264 int avcodec_thread_init(AVCodecContext *s, int thread_count){ |
|
85e547a18d87
dummy avcodec_thread_init() to avoid linking issues
michael
parents:
2002
diff
changeset
|
1265 return -1; |
|
85e547a18d87
dummy avcodec_thread_init() to avoid linking issues
michael
parents:
2002
diff
changeset
|
1266 } |
|
85e547a18d87
dummy avcodec_thread_init() to avoid linking issues
michael
parents:
2002
diff
changeset
|
1267 #endif |
| 2676 | 1268 |
| 1269 unsigned int av_xiphlacing(unsigned char *s, unsigned int v) | |
| 1270 { | |
| 1271 unsigned int n = 0; | |
| 1272 | |
| 1273 while(v >= 0xff) { | |
| 1274 *s++ = 0xff; | |
| 1275 v -= 0xff; | |
| 1276 n++; | |
| 1277 } | |
| 1278 *s = v; | |
| 1279 n++; | |
| 1280 return n; | |
| 1281 } | |
|
3233
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1282 |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1283 /* Wrapper to work around the lack of mkstemp() on mingw/cygin. |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1284 * Also, tries to create file in /tmp first, if possible. |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1285 * *prefix can be a character constant; *filename will be allocated internally. |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1286 * Returns file descriptor of opened file (or -1 on error) |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1287 * and opened file name in **filename. */ |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1288 int av_tempfile(char *prefix, char **filename) { |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1289 int fd=-1; |
|
3461
7581658de3d1
CONFIG_WIN32 implies MinGW and Cygwin and possibly more, so use just
diego
parents:
3442
diff
changeset
|
1290 #ifdef __MINGW32__ |
|
3233
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1291 *filename = tempnam(".", prefix); |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1292 #else |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1293 size_t len = strlen(prefix) + 12; /* room for "/tmp/" and "XXXXXX\0" */ |
| 3372 | 1294 *filename = av_malloc(len); |
|
3233
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1295 #endif |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1296 /* -----common section-----*/ |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1297 if (*filename == NULL) { |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1298 av_log(NULL, AV_LOG_ERROR, "ff_tempfile: Cannot allocate file name\n"); |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1299 return -1; |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1300 } |
|
3461
7581658de3d1
CONFIG_WIN32 implies MinGW and Cygwin and possibly more, so use just
diego
parents:
3442
diff
changeset
|
1301 #ifdef __MINGW32__ |
|
3233
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1302 fd = open(*filename, _O_RDWR | _O_BINARY | _O_CREAT, 0444); |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1303 #else |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1304 snprintf(*filename, len, "/tmp/%sXXXXXX", prefix); |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1305 fd = mkstemp(*filename); |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1306 if (fd < 0) { |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1307 snprintf(*filename, len, "./%sXXXXXX", prefix); |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1308 fd = mkstemp(*filename); |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1309 } |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1310 #endif |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1311 /* -----common section-----*/ |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1312 if (fd < 0) { |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1313 av_log(NULL, AV_LOG_ERROR, "ff_tempfile: Cannot open temporary file %s\n", *filename); |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1314 return -1; |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1315 } |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1316 return fd; /* success */ |
|
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1317 } |
