Mercurial > libavcodec.hg
annotate utils.c @ 4714:fc70a43a4f01 libavcodec
Fix H.264 8x8 transform selection
It seems that it's opt parse bug, it can't process the flags which start by
digit. After change 8x8dct to dct8x8, I can set it without problem. I guess
nobody will use it since it can't work as expected, so the quick fix is change
the option name.
Patch by Limin Wang lance dot lmwang at gmail com
author | mru |
---|---|
date | Sat, 24 Mar 2007 12:07:07 +0000 |
parents | 48de02206807 |
children | 4d346a3ea729 |
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 */ | |
4624
6a900f539e2c
Add the prefix "av_" to img_crop(), img_copy() and img_pad(), and rename "img"
takis
parents:
4621
diff
changeset
|
373 av_picture_copy((AVPicture*)pic, (AVPicture*)&temp_pic, s->pix_fmt, s->width, |
1630 | 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[]={ |
4631 | 414 {"b", "set bitrate (in bits/s)", OFFSET(bit_rate), FF_OPT_TYPE_INT, AV_CODEC_DEFAULT_BITRATE, INT_MIN, INT_MAX, V|E}, |
415 {"ab", "set bitrate (in bits/s)", OFFSET(bit_rate), FF_OPT_TYPE_INT, 64*1000, INT_MIN, INT_MAX, A|E}, | |
4325 | 416 {"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 | 417 {"flags", NULL, OFFSET(flags), FF_OPT_TYPE_FLAGS, DEFAULT, INT_MIN, INT_MAX, V|A|E|D, "flags"}, |
2881 | 418 {"mv4", "use four motion vector by macroblock (mpeg4)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_4MV, INT_MIN, INT_MAX, V|E, "flags"}, |
419 {"obmc", "use overlapped block motion compensation (h263+)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_OBMC, INT_MIN, INT_MAX, V|E, "flags"}, | |
420 {"qpel", "use 1/4 pel motion compensation", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_QPEL, INT_MIN, INT_MAX, V|E, "flags"}, | |
421 {"loop", "use loop filter", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_LOOP_FILTER, INT_MIN, INT_MAX, V|E, "flags"}, | |
422 {"qscale", "use fixed qscale", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_QSCALE, INT_MIN, INT_MAX, 0, "flags"}, | |
423 {"gmc", "use gmc", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_GMC, INT_MIN, INT_MAX, V|E, "flags"}, | |
424 {"mv0", "always try a mb with mv=<0,0>", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_MV0, INT_MIN, INT_MAX, V|E, "flags"}, | |
425 {"part", "use data partitioning", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_PART, INT_MIN, INT_MAX, V|E, "flags"}, | |
426 {"input_preserved", NULL, 0, FF_OPT_TYPE_CONST, CODEC_FLAG_INPUT_PRESERVED, INT_MIN, INT_MAX, 0, "flags"}, | |
427 {"pass1", "use internal 2pass ratecontrol in first pass mode", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_PASS1, INT_MIN, INT_MAX, 0, "flags"}, | |
428 {"pass2", "use internal 2pass ratecontrol in second pass mode", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_PASS2, INT_MIN, INT_MAX, 0, "flags"}, | |
429 {"extern_huff", "use external huffman table (for mjpeg)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_EXTERN_HUFF, INT_MIN, INT_MAX, 0, "flags"}, | |
430 {"gray", "only decode/encode grayscale", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_GRAY, INT_MIN, INT_MAX, V|E|D, "flags"}, | |
431 {"emu_edge", "don't draw edges", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_EMU_EDGE, INT_MIN, INT_MAX, 0, "flags"}, | |
432 {"psnr", "error[?] variables will be set during encoding", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_PSNR, INT_MIN, INT_MAX, V|E, "flags"}, | |
433 {"truncated", NULL, 0, FF_OPT_TYPE_CONST, CODEC_FLAG_TRUNCATED, INT_MIN, INT_MAX, 0, "flags"}, | |
434 {"naq", "normalize adaptive quantization", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_NORMALIZE_AQP, INT_MIN, INT_MAX, V|E, "flags"}, | |
435 {"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
|
436 {"low_delay", "force low delay", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_LOW_DELAY, INT_MIN, INT_MAX, V|D|E, "flags"}, |
2881 | 437 {"alt", "enable alternate scantable (mpeg2/mpeg4)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_ALT_SCAN, INT_MIN, INT_MAX, V|E, "flags"}, |
438 {"trell", "use trellis quantization", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_TRELLIS_QUANT, INT_MIN, INT_MAX, V|E, "flags"}, | |
439 {"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"}, | |
440 {"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"}, | |
441 {"aic", "h263 advanced intra coding / mpeg4 ac prediction", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_AC_PRED, INT_MIN, INT_MAX, V|E, "flags"}, | |
442 {"umv", "use unlimited motion vectors", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_H263P_UMV, INT_MIN, INT_MAX, V|E, "flags"}, | |
443 {"cbp", "use rate distortion optimization for cbp", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_CBP_RD, INT_MIN, INT_MAX, V|E, "flags"}, | |
2890 | 444 {"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 | 445 {"aiv", "h263 alternative inter vlc", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_H263P_AIV, INT_MIN, INT_MAX, V|E, "flags"}, |
446 {"slice", NULL, 0, FF_OPT_TYPE_CONST, CODEC_FLAG_H263P_SLICE_STRUCT, INT_MIN, INT_MAX, V|E, "flags"}, | |
447 {"ilme", "interlaced motion estimation", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_INTERLACED_ME, INT_MIN, INT_MAX, V|E, "flags"}, | |
448 {"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 | 449 {"cgop", "closed gop", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_CLOSED_GOP, INT_MIN, INT_MAX, V|E, "flags"}, |
2881 | 450 {"fast", "allow non spec compliant speedup tricks", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_FAST, INT_MIN, INT_MAX, V|E, "flags2"}, |
451 {"sgop", "strictly enforce gop size", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_STRICT_GOP, INT_MIN, INT_MAX, V|E, "flags2"}, | |
452 {"noout", "skip bitstream encoding", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_NO_OUTPUT, INT_MIN, INT_MAX, V|E, "flags2"}, | |
453 {"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 | 454 {"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
|
455 {"me_method", "set motion estimation method", OFFSET(me_method), FF_OPT_TYPE_INT, ME_EPZS, INT_MIN, INT_MAX, V|E, "me_method"}, |
2862 | 456 {"extradata_size", NULL, OFFSET(extradata_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
457 {"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
|
458 {"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
|
459 {"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
|
460 {"ar", "set audio sampling rate (in Hz)", OFFSET(sample_rate), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
3966 | 461 {"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
|
462 {"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
|
463 {"frame_size", NULL, OFFSET(frame_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, A|E}, |
2862 | 464 {"frame_number", NULL, OFFSET(frame_number), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
465 {"real_pict_num", NULL, OFFSET(real_pict_num), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
466 {"delay", NULL, OFFSET(delay), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
3916 | 467 {"qcomp", "video quantizer scale compression (VBR)", OFFSET(qcompress), FF_OPT_TYPE_FLOAT, 0.5, FLT_MIN, FLT_MAX, V|E}, |
468 {"qblur", "video quantizer scale blur (VBR)", OFFSET(qblur), FF_OPT_TYPE_FLOAT, 0.5, FLT_MIN, FLT_MAX, V|E}, | |
469 {"qmin", "min video quantizer scale (VBR)", OFFSET(qmin), FF_OPT_TYPE_INT, 2, 1, 51, V|E}, | |
470 {"qmax", "max video quantizer scale (VBR)", OFFSET(qmax), FF_OPT_TYPE_INT, 31, 1, 51, V|E}, | |
471 {"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
|
472 {"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
|
473 {"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 | 474 {"rc_strategy", "ratecontrol method", OFFSET(rc_strategy), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
475 {"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 | 476 {"hurry_up", NULL, OFFSET(hurry_up), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|D}, |
4608
62e88c68166c
get rid of rtp_mode field after next major bump
bcoudurier
parents:
4607
diff
changeset
|
477 #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) |
2862 | 478 {"rtp_mode", NULL, OFFSET(rtp_mode), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
4608
62e88c68166c
get rid of rtp_mode field after next major bump
bcoudurier
parents:
4607
diff
changeset
|
479 #endif |
4613
c1c2e47aa5fe
remove ps option and rename rtp_payload_size AVOption to ps
bcoudurier
parents:
4608
diff
changeset
|
480 {"ps", "rtp payload size in bits", OFFSET(rtp_payload_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
2862 | 481 {"mv_bits", NULL, OFFSET(mv_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
482 {"header_bits", NULL, OFFSET(header_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
483 {"i_tex_bits", NULL, OFFSET(i_tex_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
484 {"p_tex_bits", NULL, OFFSET(p_tex_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
485 {"i_count", NULL, OFFSET(i_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
486 {"p_count", NULL, OFFSET(p_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
487 {"skip_count", NULL, OFFSET(skip_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
488 {"misc_bits", NULL, OFFSET(misc_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
489 {"frame_bits", NULL, OFFSET(frame_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
490 {"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
|
491 {"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 | 492 {"autodetect", NULL, 0, FF_OPT_TYPE_CONST, FF_BUG_AUTODETECT, INT_MIN, INT_MAX, V|D, "bug"}, |
4261 | 493 {"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"}, |
494 {"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"}, | |
495 {"ump4", "(autodetected if fourcc==UMP4)", 0, FF_OPT_TYPE_CONST, FF_BUG_UMP4, INT_MIN, INT_MAX, V|D, "bug"}, | |
496 {"no_padding", "padding bug (autodetected)", 0, FF_OPT_TYPE_CONST, FF_BUG_NO_PADDING, INT_MIN, INT_MAX, V|D, "bug"}, | |
2881 | 497 {"amv", NULL, 0, FF_OPT_TYPE_CONST, FF_BUG_AMV, INT_MIN, INT_MAX, V|D, "bug"}, |
4261 | 498 {"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 | 499 {"qpel_chroma", NULL, 0, FF_OPT_TYPE_CONST, FF_BUG_QPEL_CHROMA, INT_MIN, INT_MAX, V|D, "bug"}, |
4261 | 500 {"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 | 501 {"qpel_chroma2", NULL, 0, FF_OPT_TYPE_CONST, FF_BUG_QPEL_CHROMA2, INT_MIN, INT_MAX, V|D, "bug"}, |
4261 | 502 {"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"}, |
503 {"edge", "edge padding bug (autodetected per fourcc/version)", 0, FF_OPT_TYPE_CONST, FF_BUG_EDGE, INT_MIN, INT_MAX, V|D, "bug"}, | |
2881 | 504 {"hpel_chroma", NULL, 0, FF_OPT_TYPE_CONST, FF_BUG_HPEL_CHROMA, INT_MIN, INT_MAX, V|D, "bug"}, |
505 {"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
|
506 {"ms", "workaround various bugs in microsofts broken decoders", 0, FF_OPT_TYPE_CONST, FF_BUG_MS, INT_MIN, INT_MAX, V|D, "bug"}, |
2881 | 507 {"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}, |
508 {"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 | 509 {"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
|
510 {"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
|
511 {"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 | 512 {"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
|
513 {"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
|
514 {"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
|
515 {"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 | 516 {"er", "set error resilience strategy", OFFSET(error_resilience), FF_OPT_TYPE_INT, FF_ER_CAREFUL, INT_MIN, INT_MAX, A|V|D, "er"}, |
2881 | 517 {"careful", NULL, 0, FF_OPT_TYPE_CONST, FF_ER_CAREFUL, INT_MIN, INT_MAX, V|D, "er"}, |
518 {"compliant", NULL, 0, FF_OPT_TYPE_CONST, FF_ER_COMPLIANT, INT_MIN, INT_MAX, V|D, "er"}, | |
519 {"aggressive", NULL, 0, FF_OPT_TYPE_CONST, FF_ER_AGGRESSIVE, INT_MIN, INT_MAX, V|D, "er"}, | |
520 {"very_aggressive", NULL, 0, FF_OPT_TYPE_CONST, FF_ER_VERY_AGGRESSIVE, INT_MIN, INT_MAX, V|D, "er"}, | |
2862 | 521 {"has_b_frames", NULL, OFFSET(has_b_frames), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
522 {"block_align", NULL, OFFSET(block_align), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
523 {"parse_only", NULL, OFFSET(parse_only), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
4261 | 524 {"mpeg_quant", "use MPEG quantizers instead of H.263", OFFSET(mpeg_quant), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
2862 | 525 {"stats_out", NULL, OFFSET(stats_out), FF_OPT_TYPE_STRING, DEFAULT, CHAR_MIN, CHAR_MAX}, |
526 {"stats_in", NULL, OFFSET(stats_in), FF_OPT_TYPE_STRING, DEFAULT, CHAR_MIN, CHAR_MAX}, | |
3916 | 527 {"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 | 528 {"rc_qmod_amp", "experimental quantizer modulation", OFFSET(rc_qmod_amp), FF_OPT_TYPE_FLOAT, DEFAULT, -FLT_MAX, FLT_MAX, V|E}, |
529 {"rc_qmod_freq", "experimental quantizer modulation", OFFSET(rc_qmod_freq), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, | |
2862 | 530 {"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
|
531 {"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
|
532 {"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
|
533 {"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
|
534 {"bufsize", "set ratecontrol buffer size (in bits)", OFFSET(rc_buffer_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
4261 | 535 {"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
|
536 {"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
|
537 {"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
|
538 {"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 | 539 {"dct", "DCT algorithm", OFFSET(dct_algo), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, V|E, "dct"}, |
540 {"auto", "autoselect a good one (default)", 0, FF_OPT_TYPE_CONST, FF_DCT_AUTO, INT_MIN, INT_MAX, V|E, "dct"}, | |
541 {"fastint", "fast integer", 0, FF_OPT_TYPE_CONST, FF_DCT_FASTINT, INT_MIN, INT_MAX, V|E, "dct"}, | |
542 {"int", "accurate integer", 0, FF_OPT_TYPE_CONST, FF_DCT_INT, INT_MIN, INT_MAX, V|E, "dct"}, | |
2881 | 543 {"mmx", NULL, 0, FF_OPT_TYPE_CONST, FF_DCT_MMX, INT_MIN, INT_MAX, V|E, "dct"}, |
544 {"mlib", NULL, 0, FF_OPT_TYPE_CONST, FF_DCT_MLIB, INT_MIN, INT_MAX, V|E, "dct"}, | |
545 {"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
|
546 {"faan", "floating point AAN DCT", 0, FF_OPT_TYPE_CONST, FF_DCT_FAAN, INT_MIN, INT_MAX, V|E, "dct"}, |
4261 | 547 {"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
|
548 {"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
|
549 {"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
|
550 {"p_mask", "inter masking", OFFSET(p_masking), FF_OPT_TYPE_FLOAT, 0, -FLT_MAX, FLT_MAX, V|E}, |
4261 | 551 {"dark_mask", "compresses dark areas stronger than medium ones", OFFSET(dark_masking), FF_OPT_TYPE_FLOAT, 0, -FLT_MAX, FLT_MAX, V|E}, |
2862 | 552 {"unused", NULL, OFFSET(unused), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
4293 | 553 {"idct", "select IDCT implementation", OFFSET(idct_algo), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, V|E|D, "idct"}, |
2881 | 554 {"auto", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_AUTO, INT_MIN, INT_MAX, V|E|D, "idct"}, |
555 {"int", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_INT, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
556 {"simple", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLE, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
557 {"simplemmx", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLEMMX, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
558 {"libmpeg2mmx", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_LIBMPEG2MMX, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
559 {"ps2", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_PS2, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
560 {"mlib", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_MLIB, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
561 {"arm", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_ARM, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
562 {"altivec", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_ALTIVEC, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
563 {"sh4", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SH4, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
564 {"simplearm", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLEARM, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
3769 | 565 {"simplearmv5te", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLEARMV5TE, INT_MIN, INT_MAX, V|E|D, "idct"}, |
2881 | 566 {"h264", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_H264, INT_MIN, INT_MAX, V|E|D, "idct"}, |
567 {"vp3", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_VP3, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
568 {"ipp", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_IPP, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
569 {"xvidmmx", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_XVIDMMX, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
2862 | 570 {"slice_count", NULL, OFFSET(slice_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
4261 | 571 {"ec", "set error concealment strategy", OFFSET(error_concealment), FF_OPT_TYPE_FLAGS, 3, INT_MIN, INT_MAX, V|D, "ec"}, |
572 {"guess_mvs", "iterative motion vector (MV) search (slow)", 0, FF_OPT_TYPE_CONST, FF_EC_GUESS_MVS, INT_MIN, INT_MAX, V|D, "ec"}, | |
573 {"deblock", "use strong deblock filter for damaged MBs", 0, FF_OPT_TYPE_CONST, FF_EC_DEBLOCK, INT_MIN, INT_MAX, V|D, "ec"}, | |
2862 | 574 {"bits_per_sample", NULL, OFFSET(bits_per_sample), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
2890 | 575 {"pred", "prediction method", OFFSET(prediction_method), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "pred"}, |
2881 | 576 {"left", NULL, 0, FF_OPT_TYPE_CONST, FF_PRED_LEFT, INT_MIN, INT_MAX, V|E, "pred"}, |
577 {"plane", NULL, 0, FF_OPT_TYPE_CONST, FF_PRED_PLANE, INT_MIN, INT_MAX, V|E, "pred"}, | |
578 {"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
|
579 {"aspect", "sample aspect ratio", OFFSET(sample_aspect_ratio), FF_OPT_TYPE_RATIONAL, DEFAULT, 0, 10, V|E}, |
2877 | 580 {"debug", "print specific debug info", OFFSET(debug), FF_OPT_TYPE_FLAGS, DEFAULT, 0, INT_MAX, V|A|S|E|D, "debug"}, |
4261 | 581 {"pict", "picture info", 0, FF_OPT_TYPE_CONST, FF_DEBUG_PICT_INFO, INT_MIN, INT_MAX, V|D, "debug"}, |
582 {"rc", "rate control", 0, FF_OPT_TYPE_CONST, FF_DEBUG_RC, INT_MIN, INT_MAX, V|E, "debug"}, | |
2881 | 583 {"bitstream", NULL, 0, FF_OPT_TYPE_CONST, FF_DEBUG_BITSTREAM, INT_MIN, INT_MAX, V|D, "debug"}, |
4261 | 584 {"mb_type", "macroblock (MB) type", 0, FF_OPT_TYPE_CONST, FF_DEBUG_MB_TYPE, INT_MIN, INT_MAX, V|D, "debug"}, |
585 {"qp", "per-block quantization parameter (QP)", 0, FF_OPT_TYPE_CONST, FF_DEBUG_QP, INT_MIN, INT_MAX, V|D, "debug"}, | |
586 {"mv", "motion vector", 0, FF_OPT_TYPE_CONST, FF_DEBUG_MV, INT_MIN, INT_MAX, V|D, "debug"}, | |
2881 | 587 {"dct_coeff", NULL, 0, FF_OPT_TYPE_CONST, FF_DEBUG_DCT_COEFF, INT_MIN, INT_MAX, V|D, "debug"}, |
588 {"skip", NULL, 0, FF_OPT_TYPE_CONST, FF_DEBUG_SKIP, INT_MIN, INT_MAX, V|D, "debug"}, | |
589 {"startcode", NULL, 0, FF_OPT_TYPE_CONST, FF_DEBUG_STARTCODE, INT_MIN, INT_MAX, V|D, "debug"}, | |
590 {"pts", NULL, 0, FF_OPT_TYPE_CONST, FF_DEBUG_PTS, INT_MIN, INT_MAX, V|D, "debug"}, | |
4261 | 591 {"er", "error resilience", 0, FF_OPT_TYPE_CONST, FF_DEBUG_ER, INT_MIN, INT_MAX, V|D, "debug"}, |
592 {"mmco", "memory management control operations (H.264)", 0, FF_OPT_TYPE_CONST, FF_DEBUG_MMCO, INT_MIN, INT_MAX, V|D, "debug"}, | |
2881 | 593 {"bugs", NULL, 0, FF_OPT_TYPE_CONST, FF_DEBUG_BUGS, INT_MIN, INT_MAX, V|D, "debug"}, |
4261 | 594 {"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"}, |
595 {"vis_mb_type", "visualize block types", 0, FF_OPT_TYPE_CONST, FF_DEBUG_VIS_MB_TYPE, INT_MIN, INT_MAX, V|D, "debug"}, | |
596 {"vismv", "visualize motion vectors (MVs)", OFFSET(debug_mv), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, V|D, "debug_mv"}, | |
597 {"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"}, | |
598 {"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"}, | |
599 {"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 | 600 {"mb_qmin", "obsolete, use qmin", OFFSET(mb_qmin), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
601 {"mb_qmax", "obsolete, use qmax", OFFSET(mb_qmax), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, | |
2881 | 602 {"cmp", "full pel me compare function", OFFSET(me_cmp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
603 {"subcmp", "sub pel me compare function", OFFSET(me_sub_cmp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
2878 | 604 {"mbcmp", "macroblock compare function", OFFSET(mb_cmp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
3704 | 605 {"ildctcmp", "interlaced dct compare function", OFFSET(ildct_cmp), FF_OPT_TYPE_INT, FF_CMP_VSAD, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
4261 | 606 {"dia_size", "diamond type & size for motion estimation", OFFSET(dia_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
607 {"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
|
608 {"preme", "pre motion estimation", OFFSET(pre_me), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
2878 | 609 {"precmp", "pre motion estimation compare function", OFFSET(me_pre_cmp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
4261 | 610 {"sad", "sum of absolute differences, fast (default)", 0, FF_OPT_TYPE_CONST, FF_CMP_SAD, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
611 {"sse", "sum of squared errors", 0, FF_OPT_TYPE_CONST, FF_CMP_SSE, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
612 {"satd", "sum of absolute Hadamard transformed differences", 0, FF_OPT_TYPE_CONST, FF_CMP_SATD, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
613 {"dct", "sum of absolute DCT transformed differences", 0, FF_OPT_TYPE_CONST, FF_CMP_DCT, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
614 {"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"}, | |
615 {"bit", "number of bits needed for the block", 0, FF_OPT_TYPE_CONST, FF_CMP_BIT, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
616 {"rd", "rate distortion optimal, slow", 0, FF_OPT_TYPE_CONST, FF_CMP_RD, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
617 {"zero", "0", 0, FF_OPT_TYPE_CONST, FF_CMP_ZERO, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
618 {"vsad", "sum of absolute vertical differences", 0, FF_OPT_TYPE_CONST, FF_CMP_VSAD, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
619 {"vsse","sum of squared vertical differences", 0, FF_OPT_TYPE_CONST, FF_CMP_VSSE, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
620 {"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
|
621 #ifdef CONFIG_SNOW_ENCODER |
4261 | 622 {"w53", "5/3 wavelet, only used in snow", 0, FF_OPT_TYPE_CONST, FF_CMP_W53, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
623 {"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
|
624 #endif |
2881 | 625 {"dctmax", NULL, 0, FF_OPT_TYPE_CONST, FF_CMP_DCTMAX, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
626 {"chroma", NULL, 0, FF_OPT_TYPE_CONST, FF_CMP_CHROMA, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
4261 | 627 {"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 | 628 {"subq", "sub pel motion estimation quality", OFFSET(me_subpel_quality), FF_OPT_TYPE_INT, 8, INT_MIN, INT_MAX, V|E}, |
2862 | 629 {"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
|
630 {"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
|
631 {"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
|
632 {"pbias", "inter quant bias", OFFSET(inter_quant_bias), FF_OPT_TYPE_INT, FF_DEFAULT_QUANT_BIAS, INT_MIN, INT_MAX, V|E}, |
2862 | 633 {"color_table_id", NULL, OFFSET(color_table_id), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
634 {"internal_buffer_count", NULL, OFFSET(internal_buffer_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
635 {"global_quality", NULL, OFFSET(global_quality), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
2878 | 636 {"coder", NULL, OFFSET(coder_type), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "coder"}, |
2890 | 637 {"vlc", "variable length coder / huffman coder", 0, FF_OPT_TYPE_CONST, FF_CODER_TYPE_VLC, INT_MIN, INT_MAX, V|E, "coder"}, |
638 {"ac", "arithmetic coder", 0, FF_OPT_TYPE_CONST, FF_CODER_TYPE_AC, INT_MIN, INT_MAX, V|E, "coder"}, | |
639 {"context", "context model", OFFSET(context_model), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, | |
2862 | 640 {"slice_flags", NULL, OFFSET(slice_flags), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
641 {"xvmc_acceleration", NULL, OFFSET(xvmc_acceleration), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
4261 | 642 {"mbd", "macroblock decision algorithm (high quality mode)", OFFSET(mb_decision), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "mbd"}, |
643 {"simple", "use mbcmp (default)", 0, FF_OPT_TYPE_CONST, FF_MB_DECISION_SIMPLE, INT_MIN, INT_MAX, V|E, "mbd"}, | |
644 {"bits", "use fewest bits", 0, FF_OPT_TYPE_CONST, FF_MB_DECISION_BITS, INT_MIN, INT_MAX, V|E, "mbd"}, | |
645 {"rd", "use best rate distortion", 0, FF_OPT_TYPE_CONST, FF_MB_DECISION_RD, INT_MIN, INT_MAX, V|E, "mbd"}, | |
2862 | 646 {"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
|
647 {"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
|
648 {"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
|
649 {"lmax", "max lagrange factor (VBR)", OFFSET(lmax), FF_OPT_TYPE_INT, 31*FF_QP2LAMBDA, 0, INT_MAX, V|E}, |
2890 | 650 {"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
|
651 {"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 | 652 {"inter_threshold", NULL, OFFSET(inter_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
3704 | 653 {"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
|
654 {"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
|
655 {"antialias", "MP3 antialias algorithm", OFFSET(antialias_algo), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|D, "aa"}, |
2881 | 656 {"auto", NULL, 0, FF_OPT_TYPE_CONST, FF_AA_AUTO, INT_MIN, INT_MAX, V|D, "aa"}, |
657 {"fastint", NULL, 0, FF_OPT_TYPE_CONST, FF_AA_FASTINT, INT_MIN, INT_MAX, V|D, "aa"}, | |
658 {"int", NULL, 0, FF_OPT_TYPE_CONST, FF_AA_INT, INT_MIN, INT_MAX, V|D, "aa"}, | |
659 {"float", NULL, 0, FF_OPT_TYPE_CONST, FF_AA_FLOAT, INT_MIN, INT_MAX, V|D, "aa"}, | |
2890 | 660 {"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
|
661 {"threads", NULL, OFFSET(thread_count), FF_OPT_TYPE_INT, 1, INT_MIN, INT_MAX, V|E|D}, |
2877 | 662 {"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
|
663 {"mb_threshold", "macroblock threshold", OFFSET(mb_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
3765 | 664 {"dc", "intra_dc_precision", OFFSET(intra_dc_precision), FF_OPT_TYPE_INT, 0, INT_MIN, INT_MAX, V|E}, |
2890 | 665 {"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
|
666 {"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
|
667 {"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 | 668 {"profile", NULL, OFFSET(profile), FF_OPT_TYPE_INT, FF_PROFILE_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "profile"}, |
2881 | 669 {"unknown", NULL, 0, FF_OPT_TYPE_CONST, FF_PROFILE_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "profile"}, |
2878 | 670 {"level", NULL, OFFSET(level), FF_OPT_TYPE_INT, FF_LEVEL_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "level"}, |
2881 | 671 {"unknown", NULL, 0, FF_OPT_TYPE_CONST, FF_LEVEL_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "level"}, |
4261 | 672 {"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
|
673 {"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
|
674 {"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
|
675 {"skip_exp", "frame skip exponent", OFFSET(frame_skip_exp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
2927 | 676 {"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 | 677 {"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 | 678 {"mblmin", "min macroblock lagrange factor (VBR)", OFFSET(mb_lmin), FF_OPT_TYPE_INT, FF_QP2LAMBDA * 2, 1, FF_LAMBDA_MAX, V|E}, |
679 {"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
|
680 {"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 | 681 {"bidir_refine", "refine the two motion vectors used in bidirectional macroblocks", OFFSET(bidir_refine), FF_OPT_TYPE_INT, DEFAULT, 0, 4, V|E}, |
682 {"brd_scale", "downscales frames for dynamic B-frame decision", OFFSET(brd_scale), FF_OPT_TYPE_INT, DEFAULT, 0, 10, V|E}, | |
683 {"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
|
684 {"cqp", "constant quantization parameter rate control method", OFFSET(cqp), FF_OPT_TYPE_INT, -1, INT_MIN, INT_MAX, V|E}, |
4261 | 685 {"keyint_min", "minimum interval between IDR-frames (x264)", OFFSET(keyint_min), FF_OPT_TYPE_INT, 25, INT_MIN, INT_MAX, V|E}, |
686 {"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
|
687 {"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
|
688 {"bframebias", "influences how often B-frames are used", OFFSET(bframebias), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
4261 | 689 {"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
|
690 {"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 | 691 {"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
|
692 {"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
|
693 {"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"}, |
4714 | 694 {"dct8x8", "high profile 8x8 transform (H.264)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_8X8DCT, 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
|
695 {"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
|
696 {"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
|
697 {"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
|
698 {"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
|
699 {"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
|
700 {"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
|
701 {"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
|
702 {"partitions", "macroblock subpartition sizes to consider", OFFSET(partitions), FF_OPT_TYPE_FLAGS, DEFAULT, INT_MIN, INT_MAX, V|E, "partitions"}, |
2996 | 703 {"parti4x4", NULL, 0, FF_OPT_TYPE_CONST, X264_PART_I4X4, INT_MIN, INT_MAX, V|E, "partitions"}, |
704 {"parti8x8", NULL, 0, FF_OPT_TYPE_CONST, X264_PART_I8X8, INT_MIN, INT_MAX, V|E, "partitions"}, | |
705 {"partp4x4", NULL, 0, FF_OPT_TYPE_CONST, X264_PART_P4X4, INT_MIN, INT_MAX, V|E, "partitions"}, | |
706 {"partp8x8", NULL, 0, FF_OPT_TYPE_CONST, X264_PART_P8X8, INT_MIN, INT_MAX, V|E, "partitions"}, | |
707 {"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
|
708 {"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 | 709 {"mv0_threshold", NULL, OFFSET(mv0_threshold), FF_OPT_TYPE_INT, 256, 0, INT_MAX, V|E}, |
3305 | 710 {"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
|
711 {"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
|
712 {"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
|
713 {"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
|
714 {"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
|
715 {"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
|
716 {"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
|
717 {"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
|
718 {"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
|
719 {"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
|
720 {"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
|
721 {"drop_frame_timecode", NULL, 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_DROP_FRAME_TIMECODE, INT_MIN, INT_MAX, V|E, "flags2"}, |
4621 | 722 {"non_linear_q", "use non linear quantizer", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_NON_LINEAR_QUANT, INT_MIN, INT_MAX, V|E, "flags2"}, |
2862 | 723 {NULL}, |
724 }; | |
725 | |
2873 | 726 #undef A |
727 #undef V | |
3688
c63b9bb49532
undefines a few temporary defines which were not undefined after their usage.
gpoirier
parents:
3666
diff
changeset
|
728 #undef S |
c63b9bb49532
undefines a few temporary defines which were not undefined after their usage.
gpoirier
parents:
3666
diff
changeset
|
729 #undef E |
c63b9bb49532
undefines a few temporary defines which were not undefined after their usage.
gpoirier
parents:
3666
diff
changeset
|
730 #undef D |
c63b9bb49532
undefines a few temporary defines which were not undefined after their usage.
gpoirier
parents:
3666
diff
changeset
|
731 #undef DEFAULT |
2873 | 732 |
2862 | 733 static AVClass av_codec_context_class = { "AVCodecContext", context_to_name, options }; |
1856 | 734 |
4630
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
735 void avcodec_get_context_defaults2(AVCodecContext *s, enum CodecType codec_type){ |
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
736 int flags=0; |
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
737 memset(s, 0, sizeof(AVCodecContext)); |
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
738 |
1856 | 739 s->av_class= &av_codec_context_class; |
3702 | 740 |
4630
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
741 if(codec_type == CODEC_TYPE_AUDIO) |
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
742 flags= AV_OPT_FLAG_AUDIO_PARAM; |
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
743 else if(codec_type == CODEC_TYPE_VIDEO) |
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
744 flags= AV_OPT_FLAG_VIDEO_PARAM; |
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
745 else if(codec_type == CODEC_TYPE_SUBTITLE) |
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
746 flags= AV_OPT_FLAG_SUBTITLE_PARAM; |
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
747 av_opt_set_defaults2(s, flags, flags); |
3702 | 748 |
681 | 749 s->rc_eq= "tex^qComp"; |
2637 | 750 s->time_base= (AVRational){0,1}; |
903 | 751 s->get_buffer= avcodec_default_get_buffer; |
752 s->release_buffer= avcodec_default_release_buffer; | |
998 | 753 s->get_format= avcodec_default_get_format; |
1799 | 754 s->execute= avcodec_default_execute; |
1548 | 755 s->sample_aspect_ratio= (AVRational){0,1}; |
2635 | 756 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
|
757 s->sample_fmt= SAMPLE_FMT_S16; // FIXME: set to NONE |
2967 | 758 |
1585
6b224ca24033
revised palette API, courtesy of Roberto Togni (rtogni at freemail.it)
melanson
parents:
1582
diff
changeset
|
759 s->palctrl = NULL; |
1630 | 760 s->reget_buffer= avcodec_default_reget_buffer; |
681 | 761 } |
762 | |
4630
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
763 AVCodecContext *avcodec_alloc_context2(enum CodecType codec_type){ |
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
764 AVCodecContext *avctx= av_malloc(sizeof(AVCodecContext)); |
2967 | 765 |
681 | 766 if(avctx==NULL) return NULL; |
2967 | 767 |
4630
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
768 avcodec_get_context_defaults2(avctx, codec_type); |
2967 | 769 |
681 | 770 return avctx; |
771 } | |
772 | |
4630
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
773 void avcodec_get_context_defaults(AVCodecContext *s){ |
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
774 avcodec_get_context_defaults2(s, CODEC_TYPE_UNKNOWN); |
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
775 } |
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
776 |
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
777 AVCodecContext *avcodec_alloc_context(void){ |
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
778 return avcodec_alloc_context2(CODEC_TYPE_UNKNOWN); |
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
779 } |
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
780 |
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
781 void avcodec_get_frame_defaults(AVFrame *pic){ |
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
782 memset(pic, 0, sizeof(AVFrame)); |
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
783 |
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
784 pic->pts= AV_NOPTS_VALUE; |
2488 | 785 pic->key_frame= 1; |
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
786 } |
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
787 |
925 | 788 AVFrame *avcodec_alloc_frame(void){ |
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
789 AVFrame *pic= av_malloc(sizeof(AVFrame)); |
2967 | 790 |
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
791 if(pic==NULL) return NULL; |
2967 | 792 |
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
793 avcodec_get_frame_defaults(pic); |
2967 | 794 |
903 | 795 return pic; |
796 } | |
797 | |
0 | 798 int avcodec_open(AVCodecContext *avctx, AVCodec *codec) |
799 { | |
2806 | 800 int ret= -1; |
2967 | 801 |
2806 | 802 entangled_thread_counter++; |
803 if(entangled_thread_counter != 1){ | |
804 av_log(avctx, AV_LOG_ERROR, "insufficient thread locking around avcodec_open/close()\n"); | |
805 goto end; | |
806 } | |
0 | 807 |
1456
670fca257a69
detect avcodec_open() on an already opened AVCodecContext
michaelni
parents:
1455
diff
changeset
|
808 if(avctx->codec) |
2806 | 809 goto end; |
1456
670fca257a69
detect avcodec_open() on an already opened AVCodecContext
michaelni
parents:
1455
diff
changeset
|
810 |
374
02147e22f8c8
* Don't allocate 0 bytes of memory. It upsets electricFence!
philipjsg
parents:
362
diff
changeset
|
811 if (codec->priv_data_size > 0) { |
02147e22f8c8
* Don't allocate 0 bytes of memory. It upsets electricFence!
philipjsg
parents:
362
diff
changeset
|
812 avctx->priv_data = av_mallocz(codec->priv_data_size); |
2967 | 813 if (!avctx->priv_data) |
2806 | 814 goto end; |
374
02147e22f8c8
* Don't allocate 0 bytes of memory. It upsets electricFence!
philipjsg
parents:
362
diff
changeset
|
815 } else { |
02147e22f8c8
* Don't allocate 0 bytes of memory. It upsets electricFence!
philipjsg
parents:
362
diff
changeset
|
816 avctx->priv_data = NULL; |
02147e22f8c8
* Don't allocate 0 bytes of memory. It upsets electricFence!
philipjsg
parents:
362
diff
changeset
|
817 } |
2270 | 818 |
819 if(avctx->coded_width && avctx->coded_height) | |
820 avcodec_set_dimensions(avctx, avctx->coded_width, avctx->coded_height); | |
821 else if(avctx->width && avctx->height) | |
822 avcodec_set_dimensions(avctx, avctx->width, avctx->height); | |
823 | |
2422 | 824 if((avctx->coded_width||avctx->coded_height) && avcodec_check_dimensions(avctx,avctx->coded_width,avctx->coded_height)){ |
825 av_freep(&avctx->priv_data); | |
2806 | 826 goto end; |
2422 | 827 } |
828 | |
3159 | 829 avctx->codec = codec; |
830 avctx->codec_id = codec->id; | |
831 avctx->frame_number = 0; | |
0 | 832 ret = avctx->codec->init(avctx); |
833 if (ret < 0) { | |
394 | 834 av_freep(&avctx->priv_data); |
3159 | 835 avctx->codec= NULL; |
2806 | 836 goto end; |
0 | 837 } |
2806 | 838 ret=0; |
839 end: | |
840 entangled_thread_counter--; | |
841 return ret; | |
0 | 842 } |
843 | |
2967 | 844 int avcodec_encode_audio(AVCodecContext *avctx, uint8_t *buf, int buf_size, |
0 | 845 const short *samples) |
846 { | |
2422 | 847 if(buf_size < FF_MIN_BUFFER_SIZE && 0){ |
4526 | 848 av_log(avctx, AV_LOG_ERROR, "buffer smaller than minimum size\n"); |
2422 | 849 return -1; |
850 } | |
2091 | 851 if((avctx->codec->capabilities & CODEC_CAP_DELAY) || samples){ |
852 int ret = avctx->codec->encode(avctx, buf, buf_size, (void *)samples); | |
853 avctx->frame_number++; | |
854 return ret; | |
855 }else | |
856 return 0; | |
0 | 857 } |
858 | |
2967 | 859 int avcodec_encode_video(AVCodecContext *avctx, uint8_t *buf, int buf_size, |
925 | 860 const AVFrame *pict) |
0 | 861 { |
2422 | 862 if(buf_size < FF_MIN_BUFFER_SIZE){ |
4526 | 863 av_log(avctx, AV_LOG_ERROR, "buffer smaller than minimum size\n"); |
2422 | 864 return -1; |
865 } | |
866 if(avcodec_check_dimensions(avctx,avctx->width,avctx->height)) | |
867 return -1; | |
2091 | 868 if((avctx->codec->capabilities & CODEC_CAP_DELAY) || pict){ |
869 int ret = avctx->codec->encode(avctx, buf, buf_size, (void *)pict); | |
870 avctx->frame_number++; | |
2764 | 871 emms_c(); //needed to avoid an emms_c() call before every return; |
2967 | 872 |
2091 | 873 return ret; |
874 }else | |
875 return 0; | |
0 | 876 } |
877 | |
2967 | 878 int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, |
2756 | 879 const AVSubtitle *sub) |
880 { | |
881 int ret; | |
882 ret = avctx->codec->encode(avctx, buf, buf_size, (void *)sub); | |
883 avctx->frame_number++; | |
884 return ret; | |
885 } | |
886 | |
2967 | 887 int avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture, |
0 | 888 int *got_picture_ptr, |
1064 | 889 uint8_t *buf, int buf_size) |
0 | 890 { |
891 int ret; | |
2967 | 892 |
2028 | 893 *got_picture_ptr= 0; |
2422 | 894 if((avctx->coded_width||avctx->coded_height) && avcodec_check_dimensions(avctx,avctx->coded_width,avctx->coded_height)) |
895 return -1; | |
2453 | 896 if((avctx->codec->capabilities & CODEC_CAP_DELAY) || buf_size){ |
2967 | 897 ret = avctx->codec->decode(avctx, picture, got_picture_ptr, |
2453 | 898 buf, buf_size); |
814 | 899 |
2764 | 900 emms_c(); //needed to avoid an emms_c() call before every return; |
2967 | 901 |
902 if (*got_picture_ptr) | |
2453 | 903 avctx->frame_number++; |
904 }else | |
905 ret= 0; | |
906 | |
0 | 907 return ret; |
908 } | |
909 | |
4351 | 910 int avcodec_decode_audio2(AVCodecContext *avctx, int16_t *samples, |
0 | 911 int *frame_size_ptr, |
1064 | 912 uint8_t *buf, int buf_size) |
0 | 913 { |
914 int ret; | |
915 | |
2791 | 916 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
|
917 //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
|
918 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
|
919 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
|
920 return -1; |
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
921 } |
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
922 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
|
923 *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
|
924 *frame_size_ptr < buf_size){ |
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
925 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
|
926 return -1; |
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
927 } |
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
928 |
2967 | 929 ret = avctx->codec->decode(avctx, samples, frame_size_ptr, |
2791 | 930 buf, buf_size); |
931 avctx->frame_number++; | |
4351 | 932 }else{ |
2791 | 933 ret= 0; |
4351 | 934 *frame_size_ptr=0; |
935 } | |
0 | 936 return ret; |
937 } | |
938 | |
4351 | 939 #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) |
940 int avcodec_decode_audio(AVCodecContext *avctx, int16_t *samples, | |
941 int *frame_size_ptr, | |
942 uint8_t *buf, int buf_size){ | |
943 *frame_size_ptr= AVCODEC_MAX_AUDIO_FRAME_SIZE; | |
944 return avcodec_decode_audio2(avctx, samples, frame_size_ptr, buf, buf_size); | |
945 } | |
946 #endif | |
947 | |
2756 | 948 int avcodec_decode_subtitle(AVCodecContext *avctx, AVSubtitle *sub, |
949 int *got_sub_ptr, | |
950 const uint8_t *buf, int buf_size) | |
951 { | |
952 int ret; | |
953 | |
954 *got_sub_ptr = 0; | |
2967 | 955 ret = avctx->codec->decode(avctx, sub, got_sub_ptr, |
2756 | 956 (uint8_t *)buf, buf_size); |
957 if (*got_sub_ptr) | |
958 avctx->frame_number++; | |
959 return ret; | |
960 } | |
961 | |
0 | 962 int avcodec_close(AVCodecContext *avctx) |
963 { | |
2806 | 964 entangled_thread_counter++; |
965 if(entangled_thread_counter != 1){ | |
966 av_log(avctx, AV_LOG_ERROR, "insufficient thread locking around avcodec_open/close()\n"); | |
967 entangled_thread_counter--; | |
968 return -1; | |
969 } | |
970 | |
0 | 971 if (avctx->codec->close) |
972 avctx->codec->close(avctx); | |
1994 | 973 avcodec_default_free_buffers(avctx); |
394 | 974 av_freep(&avctx->priv_data); |
0 | 975 avctx->codec = NULL; |
2806 | 976 entangled_thread_counter--; |
0 | 977 return 0; |
978 } | |
979 | |
980 AVCodec *avcodec_find_encoder(enum CodecID id) | |
981 { | |
982 AVCodec *p; | |
983 p = first_avcodec; | |
984 while (p) { | |
985 if (p->encode != NULL && p->id == id) | |
986 return p; | |
987 p = p->next; | |
988 } | |
989 return NULL; | |
990 } | |
991 | |
177 | 992 AVCodec *avcodec_find_encoder_by_name(const char *name) |
993 { | |
994 AVCodec *p; | |
995 p = first_avcodec; | |
996 while (p) { | |
997 if (p->encode != NULL && strcmp(name,p->name) == 0) | |
998 return p; | |
999 p = p->next; | |
1000 } | |
1001 return NULL; | |
1002 } | |
1003 | |
0 | 1004 AVCodec *avcodec_find_decoder(enum CodecID id) |
1005 { | |
1006 AVCodec *p; | |
1007 p = first_avcodec; | |
1008 while (p) { | |
1009 if (p->decode != NULL && p->id == id) | |
1010 return p; | |
1011 p = p->next; | |
1012 } | |
1013 return NULL; | |
1014 } | |
1015 | |
1016 AVCodec *avcodec_find_decoder_by_name(const char *name) | |
1017 { | |
1018 AVCodec *p; | |
1019 p = first_avcodec; | |
1020 while (p) { | |
1021 if (p->decode != NULL && strcmp(name,p->name) == 0) | |
1022 return p; | |
1023 p = p->next; | |
1024 } | |
1025 return NULL; | |
1026 } | |
1027 | |
1028 void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode) | |
1029 { | |
1030 const char *codec_name; | |
1031 AVCodec *p; | |
1032 char buf1[32]; | |
337 | 1033 char channels_str[100]; |
92 | 1034 int bitrate; |
0 | 1035 |
1036 if (encode) | |
1037 p = avcodec_find_encoder(enc->codec_id); | |
1038 else | |
1039 p = avcodec_find_decoder(enc->codec_id); | |
1040 | |
1041 if (p) { | |
1042 codec_name = p->name; | |
1449
7fbe89a76b73
update sub_id in mpegaudio decoding (might need same method as MPEG2VIDEO too ?)
bellard
parents:
1396
diff
changeset
|
1043 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
|
1044 if (enc->sub_id == 2) |
7fbe89a76b73
update sub_id in mpegaudio decoding (might need same method as MPEG2VIDEO too ?)
bellard
parents:
1396
diff
changeset
|
1045 codec_name = "mp2"; |
7fbe89a76b73
update sub_id in mpegaudio decoding (might need same method as MPEG2VIDEO too ?)
bellard
parents:
1396
diff
changeset
|
1046 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
|
1047 codec_name = "mp1"; |
7fbe89a76b73
update sub_id in mpegaudio decoding (might need same method as MPEG2VIDEO too ?)
bellard
parents:
1396
diff
changeset
|
1048 } |
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
|
1049 } 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
|
1050 /* 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
|
1051 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
|
1052 codec_name = "mpeg2ts"; |
0 | 1053 } else if (enc->codec_name[0] != '\0') { |
1054 codec_name = enc->codec_name; | |
1055 } else { | |
1056 /* output avi tags */ | |
2967 | 1057 if( isprint(enc->codec_tag&0xFF) && isprint((enc->codec_tag>>8)&0xFF) |
2856 | 1058 && isprint((enc->codec_tag>>16)&0xFF) && isprint((enc->codec_tag>>24)&0xFF)){ |
2967 | 1059 snprintf(buf1, sizeof(buf1), "%c%c%c%c / 0x%04X", |
0 | 1060 enc->codec_tag & 0xff, |
1061 (enc->codec_tag >> 8) & 0xff, | |
1062 (enc->codec_tag >> 16) & 0xff, | |
2856 | 1063 (enc->codec_tag >> 24) & 0xff, |
1064 enc->codec_tag); | |
0 | 1065 } else { |
1066 snprintf(buf1, sizeof(buf1), "0x%04x", enc->codec_tag); | |
1067 } | |
1068 codec_name = buf1; | |
1069 } | |
1070 | |
1071 switch(enc->codec_type) { | |
1072 case CODEC_TYPE_VIDEO: | |
1073 snprintf(buf, buf_size, | |
1074 "Video: %s%s", | |
1389 | 1075 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
|
1076 if (enc->pix_fmt != PIX_FMT_NONE) { |
55 | 1077 snprintf(buf + strlen(buf), buf_size - strlen(buf), |
1078 ", %s", | |
988
001b7d3045e5
moved avcodec_get_chroma_sub_sample() to imgconvert.c
bellard
parents:
963
diff
changeset
|
1079 avcodec_get_pix_fmt_name(enc->pix_fmt)); |
55 | 1080 } |
0 | 1081 if (enc->width) { |
1082 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
|
1083 ", %dx%d", |
a332778dfa06
print more time_base fps stuff if av_log level is at debug or above
michael
parents:
2881
diff
changeset
|
1084 enc->width, enc->height); |
4500
18a88f830d1a
Directly access av_log_level instead of calling av_log_{set, get}_level()
lucabe
parents:
4494
diff
changeset
|
1085 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
|
1086 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
|
1087 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
|
1088 ", %d/%d", |
a332778dfa06
print more time_base fps stuff if av_log level is at debug or above
michael
parents:
2881
diff
changeset
|
1089 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
|
1090 } |
0 | 1091 } |
741 | 1092 if (encode) { |
1093 snprintf(buf + strlen(buf), buf_size - strlen(buf), | |
1094 ", q=%d-%d", enc->qmin, enc->qmax); | |
1095 } | |
92 | 1096 bitrate = enc->bit_rate; |
0 | 1097 break; |
1098 case CODEC_TYPE_AUDIO: | |
1099 snprintf(buf, buf_size, | |
1100 "Audio: %s", | |
1101 codec_name); | |
318
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1102 switch (enc->channels) { |
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1103 case 1: |
337 | 1104 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
|
1105 break; |
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1106 case 2: |
337 | 1107 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
|
1108 break; |
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1109 case 6: |
337 | 1110 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
|
1111 break; |
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1112 default: |
2423 | 1113 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
|
1114 break; |
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1115 } |
0 | 1116 if (enc->sample_rate) { |
1117 snprintf(buf + strlen(buf), buf_size - strlen(buf), | |
1118 ", %d Hz, %s", | |
1119 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
|
1120 channels_str); |
0 | 1121 } |
2967 | 1122 |
92 | 1123 /* for PCM codecs, compute bitrate directly */ |
1124 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
|
1125 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
|
1126 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
|
1127 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
|
1128 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
|
1129 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
|
1130 break; |
6f7428adc6ad
Support de-/encoding of 24 and 32 bit PCM (from and to internal 16 bit).
reimar
parents:
2840
diff
changeset
|
1131 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
|
1132 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
|
1133 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
|
1134 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
|
1135 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
|
1136 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
|
1137 break; |
92 | 1138 case CODEC_ID_PCM_S16LE: |
1139 case CODEC_ID_PCM_S16BE: | |
1140 case CODEC_ID_PCM_U16LE: | |
1141 case CODEC_ID_PCM_U16BE: | |
94 | 1142 bitrate = enc->sample_rate * enc->channels * 16; |
92 | 1143 break; |
1144 case CODEC_ID_PCM_S8: | |
1145 case CODEC_ID_PCM_U8: | |
1146 case CODEC_ID_PCM_ALAW: | |
1147 case CODEC_ID_PCM_MULAW: | |
94 | 1148 bitrate = enc->sample_rate * enc->channels * 8; |
92 | 1149 break; |
1150 default: | |
1151 bitrate = enc->bit_rate; | |
1152 break; | |
1153 } | |
0 | 1154 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
|
1155 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
|
1156 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
|
1157 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
|
1158 break; |
2756 | 1159 case CODEC_TYPE_SUBTITLE: |
1160 snprintf(buf, buf_size, "Subtitle: %s", codec_name); | |
1161 bitrate = enc->bit_rate; | |
1162 break; | |
0 | 1163 default: |
2281 | 1164 snprintf(buf, buf_size, "Invalid Codec type %d", enc->codec_type); |
1165 return; | |
0 | 1166 } |
741 | 1167 if (encode) { |
1168 if (enc->flags & CODEC_FLAG_PASS1) | |
1169 snprintf(buf + strlen(buf), buf_size - strlen(buf), | |
1170 ", pass 1"); | |
1171 if (enc->flags & CODEC_FLAG_PASS2) | |
1172 snprintf(buf + strlen(buf), buf_size - strlen(buf), | |
1173 ", pass 2"); | |
1174 } | |
92 | 1175 if (bitrate != 0) { |
2967 | 1176 snprintf(buf + strlen(buf), buf_size - strlen(buf), |
92 | 1177 ", %d kb/s", bitrate / 1000); |
0 | 1178 } |
1179 } | |
1180 | |
362 | 1181 unsigned avcodec_version( void ) |
1182 { | |
1183 return LIBAVCODEC_VERSION_INT; | |
1184 } | |
55 | 1185 |
379 | 1186 unsigned avcodec_build( void ) |
1187 { | |
1188 return LIBAVCODEC_BUILD; | |
1189 } | |
1190 | |
3169 | 1191 static void init_crcs(void){ |
4663 | 1192 #if LIBAVUTIL_VERSION_INT < (50<<16) |
3169 | 1193 av_crc04C11DB7= av_mallocz_static(sizeof(AVCRC) * 257); |
3170 | 1194 av_crc8005 = av_mallocz_static(sizeof(AVCRC) * 257); |
3171 | 1195 av_crc07 = av_mallocz_static(sizeof(AVCRC) * 257); |
4663 | 1196 #endif |
3169 | 1197 av_crc_init(av_crc04C11DB7, 0, 32, 0x04c11db7, sizeof(AVCRC)*257); |
3170 | 1198 av_crc_init(av_crc8005 , 0, 16, 0x8005 , sizeof(AVCRC)*257); |
3171 | 1199 av_crc_init(av_crc07 , 0, 8, 0x07 , sizeof(AVCRC)*257); |
3169 | 1200 } |
1201 | |
0 | 1202 void avcodec_init(void) |
1203 { | |
303
9a931fd8d06c
multiple init bugfix (patch by Alex Beregszaszi <alex@naxine.org>)
michaelni
parents:
267
diff
changeset
|
1204 static int inited = 0; |
9a931fd8d06c
multiple init bugfix (patch by Alex Beregszaszi <alex@naxine.org>)
michaelni
parents:
267
diff
changeset
|
1205 |
9a931fd8d06c
multiple init bugfix (patch by Alex Beregszaszi <alex@naxine.org>)
michaelni
parents:
267
diff
changeset
|
1206 if (inited != 0) |
2979 | 1207 return; |
303
9a931fd8d06c
multiple init bugfix (patch by Alex Beregszaszi <alex@naxine.org>)
michaelni
parents:
267
diff
changeset
|
1208 inited = 1; |
9a931fd8d06c
multiple init bugfix (patch by Alex Beregszaszi <alex@naxine.org>)
michaelni
parents:
267
diff
changeset
|
1209 |
4197 | 1210 dsputil_static_init(); |
3169 | 1211 init_crcs(); |
0 | 1212 } |
1213 | |
341 | 1214 void avcodec_flush_buffers(AVCodecContext *avctx) |
1215 { | |
1368 | 1216 if(avctx->codec->flush) |
1217 avctx->codec->flush(avctx); | |
341 | 1218 } |
1219 | |
2231 | 1220 void avcodec_default_free_buffers(AVCodecContext *s){ |
1214 | 1221 int i, j; |
1222 | |
1223 if(s->internal_buffer==NULL) return; | |
2967 | 1224 |
1214 | 1225 for(i=0; i<INTERNAL_BUFFER_SIZE; i++){ |
1226 InternalBuffer *buf= &((InternalBuffer*)s->internal_buffer)[i]; | |
1227 for(j=0; j<4; j++){ | |
1228 av_freep(&buf->base[j]); | |
1229 buf->data[j]= NULL; | |
1230 } | |
1231 } | |
1232 av_freep(&s->internal_buffer); | |
2967 | 1233 |
1214 | 1234 s->internal_buffer_count=0; |
1235 } | |
1236 | |
1264 | 1237 char av_get_pict_type_char(int pict_type){ |
1238 switch(pict_type){ | |
2967 | 1239 case I_TYPE: return 'I'; |
1240 case P_TYPE: return 'P'; | |
1241 case B_TYPE: return 'B'; | |
1242 case S_TYPE: return 'S'; | |
1243 case SI_TYPE:return 'i'; | |
1244 case SP_TYPE:return 'p'; | |
1264 | 1245 default: return '?'; |
1246 } | |
1247 } | |
1248 | |
3433 | 1249 int av_get_bits_per_sample(enum CodecID codec_id){ |
1250 switch(codec_id){ | |
3435
ffa9e863f3be
simplify the voc demuxer using av_get_bits_per_sample()
aurel
parents:
3433
diff
changeset
|
1251 case CODEC_ID_ADPCM_SBPRO_2: |
3438 | 1252 return 2; |
3435
ffa9e863f3be
simplify the voc demuxer using av_get_bits_per_sample()
aurel
parents:
3433
diff
changeset
|
1253 case CODEC_ID_ADPCM_SBPRO_3: |
3438 | 1254 return 3; |
3435
ffa9e863f3be
simplify the voc demuxer using av_get_bits_per_sample()
aurel
parents:
3433
diff
changeset
|
1255 case CODEC_ID_ADPCM_SBPRO_4: |
3438 | 1256 case CODEC_ID_ADPCM_CT: |
1257 return 4; | |
3433 | 1258 case CODEC_ID_PCM_ALAW: |
1259 case CODEC_ID_PCM_MULAW: | |
1260 case CODEC_ID_PCM_S8: | |
1261 case CODEC_ID_PCM_U8: | |
1262 return 8; | |
1263 case CODEC_ID_PCM_S16BE: | |
1264 case CODEC_ID_PCM_S16LE: | |
1265 case CODEC_ID_PCM_U16BE: | |
1266 case CODEC_ID_PCM_U16LE: | |
1267 return 16; | |
1268 case CODEC_ID_PCM_S24DAUD: | |
1269 case CODEC_ID_PCM_S24BE: | |
1270 case CODEC_ID_PCM_S24LE: | |
1271 case CODEC_ID_PCM_U24BE: | |
1272 case CODEC_ID_PCM_U24LE: | |
1273 return 24; | |
1274 case CODEC_ID_PCM_S32BE: | |
1275 case CODEC_ID_PCM_S32LE: | |
1276 case CODEC_ID_PCM_U32BE: | |
1277 case CODEC_ID_PCM_U32LE: | |
1278 return 32; | |
1279 default: | |
1280 return 0; | |
1281 } | |
1282 } | |
1283 | |
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
|
1284 #if !defined(HAVE_THREADS) |
2013
85e547a18d87
dummy avcodec_thread_init() to avoid linking issues
michael
parents:
2002
diff
changeset
|
1285 int avcodec_thread_init(AVCodecContext *s, int thread_count){ |
85e547a18d87
dummy avcodec_thread_init() to avoid linking issues
michael
parents:
2002
diff
changeset
|
1286 return -1; |
85e547a18d87
dummy avcodec_thread_init() to avoid linking issues
michael
parents:
2002
diff
changeset
|
1287 } |
85e547a18d87
dummy avcodec_thread_init() to avoid linking issues
michael
parents:
2002
diff
changeset
|
1288 #endif |
2676 | 1289 |
1290 unsigned int av_xiphlacing(unsigned char *s, unsigned int v) | |
1291 { | |
1292 unsigned int n = 0; | |
1293 | |
1294 while(v >= 0xff) { | |
1295 *s++ = 0xff; | |
1296 v -= 0xff; | |
1297 n++; | |
1298 } | |
1299 *s = v; | |
1300 n++; | |
1301 return n; | |
1302 } | |
3233
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1303 |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1304 /* 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
|
1305 * 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
|
1306 * *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
|
1307 * 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
|
1308 * and opened file name in **filename. */ |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1309 int av_tempfile(char *prefix, char **filename) { |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1310 int fd=-1; |
3461
7581658de3d1
CONFIG_WIN32 implies MinGW and Cygwin and possibly more, so use just
diego
parents:
3442
diff
changeset
|
1311 #ifdef __MINGW32__ |
3233
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1312 *filename = tempnam(".", prefix); |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1313 #else |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1314 size_t len = strlen(prefix) + 12; /* room for "/tmp/" and "XXXXXX\0" */ |
3372 | 1315 *filename = av_malloc(len); |
3233
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1316 #endif |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1317 /* -----common section-----*/ |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1318 if (*filename == NULL) { |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1319 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
|
1320 return -1; |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1321 } |
3461
7581658de3d1
CONFIG_WIN32 implies MinGW and Cygwin and possibly more, so use just
diego
parents:
3442
diff
changeset
|
1322 #ifdef __MINGW32__ |
3233
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1323 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
|
1324 #else |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1325 snprintf(*filename, len, "/tmp/%sXXXXXX", prefix); |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1326 fd = mkstemp(*filename); |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1327 if (fd < 0) { |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1328 snprintf(*filename, len, "./%sXXXXXX", prefix); |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1329 fd = mkstemp(*filename); |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1330 } |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1331 #endif |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1332 /* -----common section-----*/ |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1333 if (fd < 0) { |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1334 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
|
1335 return -1; |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1336 } |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1337 return fd; /* success */ |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1338 } |