Mercurial > libavcodec.hg
annotate utils.c @ 7983:47f50599b368 libavcodec
x264 has removed the b-rdo and bime options, and instead integrated
them into the subme number to attempt to reduce the number of
unnecessary options. subme now scales up to 9.
Patch by Jason Garett-Glaser %darkshikari A gmail P com%
author | gpoirier |
---|---|
date | Thu, 02 Oct 2008 19:05:35 +0000 |
parents | 64f35acc2407 |
children | b5f5257c0c70 |
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 |
7576
e50e9def7428
ensure we get explicit definition of various _XOPEN_SOURCE functions we use
aurel
parents:
7530
diff
changeset
|
28 /* needed for mkstemp() */ |
7936 | 29 #define _XOPEN_SOURCE 600 |
7576
e50e9def7428
ensure we get explicit definition of various _XOPEN_SOURCE functions we use
aurel
parents:
7530
diff
changeset
|
30 |
6763 | 31 #include "libavutil/integer.h" |
32 #include "libavutil/crc.h" | |
394 | 33 #include "avcodec.h" |
0 | 34 #include "dsputil.h" |
2880 | 35 #include "opt.h" |
6360 | 36 #include "imgconvert.h" |
7454
bb5e8cae1d71
Write sample format description within avcodec_string()
pross
parents:
7409
diff
changeset
|
37 #include "audioconvert.h" |
7576
e50e9def7428
ensure we get explicit definition of various _XOPEN_SOURCE functions we use
aurel
parents:
7530
diff
changeset
|
38 #include <stdlib.h> |
1598
932d306bf1dc
av_log() patch by (Michel Bardiaux <mbardiaux at peaktime dot be>)
michael
parents:
1588
diff
changeset
|
39 #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
|
40 #include <limits.h> |
2862 | 41 #include <float.h> |
5284 | 42 #if !defined(HAVE_MKSTEMP) |
3233
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
43 #include <fcntl.h> |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
44 #endif |
0 | 45 |
2652
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
46 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
|
47 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
|
48 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
|
49 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
|
50 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
|
51 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
|
52 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
|
53 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
|
54 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
|
55 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
|
56 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
|
57 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
|
58 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
|
59 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
|
60 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
|
61 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
|
62 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
|
63 }; |
659b92488061
ff_reverse to utils.c patch by (Roine Gustafsson )roine users.sourceforge net)
michael
parents:
2637
diff
changeset
|
64 |
2806 | 65 static int volatile entangled_thread_counter=0; |
66 | |
1057 | 67 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
|
68 { |
2967 | 69 if(min_size < *size) |
1031
19de1445beb2
use av_malloc() functions - added av_strdup and av_realloc()
bellard
parents:
998
diff
changeset
|
70 return ptr; |
2967 | 71 |
2422 | 72 *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
|
73 |
6532
8aafb712389e
Fix possible heap overflow caused by av_fast_realloc()
michael
parents:
6488
diff
changeset
|
74 ptr= av_realloc(ptr, *size); |
8aafb712389e
Fix possible heap overflow caused by av_fast_realloc()
michael
parents:
6488
diff
changeset
|
75 if(!ptr) //we could set this to the unmodified min_size but this is safer if the user lost the ptr and uses NULL now |
8aafb712389e
Fix possible heap overflow caused by av_fast_realloc()
michael
parents:
6488
diff
changeset
|
76 *size= 0; |
8aafb712389e
Fix possible heap overflow caused by av_fast_realloc()
michael
parents:
6488
diff
changeset
|
77 |
8aafb712389e
Fix possible heap overflow caused by av_fast_realloc()
michael
parents:
6488
diff
changeset
|
78 return ptr; |
1031
19de1445beb2
use av_malloc() functions - added av_strdup and av_realloc()
bellard
parents:
998
diff
changeset
|
79 } |
19de1445beb2
use av_malloc() functions - added av_strdup and av_realloc()
bellard
parents:
998
diff
changeset
|
80 |
0 | 81 /* 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
|
82 AVCodec *first_avcodec = NULL; |
0 | 83 |
6011 | 84 AVCodec *av_codec_next(AVCodec *c){ |
85 if(c) return c->next; | |
86 else return first_avcodec; | |
87 } | |
88 | |
0 | 89 void register_avcodec(AVCodec *format) |
90 { | |
91 AVCodec **p; | |
92 p = &first_avcodec; | |
93 while (*p != NULL) p = &(*p)->next; | |
94 *p = format; | |
95 format->next = NULL; | |
96 } | |
97 | |
2270 | 98 void avcodec_set_dimensions(AVCodecContext *s, int width, int height){ |
99 s->coded_width = width; | |
100 s->coded_height= height; | |
101 s->width = -((-width )>>s->lowres); | |
102 s->height= -((-height)>>s->lowres); | |
103 } | |
104 | |
1214 | 105 typedef struct InternalBuffer{ |
903 | 106 int last_pic_num; |
1214 | 107 uint8_t *base[4]; |
903 | 108 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
|
109 int linesize[4]; |
5522
acaaff7b6fb8
ensure that default_get_buffer() doesnt reuse images if the dimension or
michael
parents:
5383
diff
changeset
|
110 int width, height; |
acaaff7b6fb8
ensure that default_get_buffer() doesnt reuse images if the dimension or
michael
parents:
5383
diff
changeset
|
111 enum PixelFormat pix_fmt; |
1214 | 112 }InternalBuffer; |
113 | |
114 #define INTERNAL_BUFFER_SIZE 32 | |
903 | 115 |
1538 | 116 #define ALIGN(x, a) (((x)+(a)-1)&~((a)-1)) |
117 | |
118 void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height){ | |
2967 | 119 int w_align= 1; |
120 int h_align= 1; | |
121 | |
1538 | 122 switch(s->pix_fmt){ |
123 case PIX_FMT_YUV420P: | |
4494
ce643a22f049
Replace deprecated PIX_FMT names by the newer variants.
diego
parents:
4453
diff
changeset
|
124 case PIX_FMT_YUYV422: |
2137
ef47c0b1ff28
UYVY support patch by ("Todd.Kirby" <doubleshot at pacbell dot net>)
michael
parents:
2125
diff
changeset
|
125 case PIX_FMT_UYVY422: |
1538 | 126 case PIX_FMT_YUV422P: |
127 case PIX_FMT_YUV444P: | |
128 case PIX_FMT_GRAY8: | |
4066 | 129 case PIX_FMT_GRAY16BE: |
130 case PIX_FMT_GRAY16LE: | |
1538 | 131 case PIX_FMT_YUVJ420P: |
132 case PIX_FMT_YUVJ422P: | |
133 case PIX_FMT_YUVJ444P: | |
5706
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5576
diff
changeset
|
134 case PIX_FMT_YUVA420P: |
1538 | 135 w_align= 16; //FIXME check for non mpeg style codecs and use less alignment |
136 h_align= 16; | |
137 break; | |
138 case PIX_FMT_YUV411P: | |
4494
ce643a22f049
Replace deprecated PIX_FMT names by the newer variants.
diego
parents:
4453
diff
changeset
|
139 case PIX_FMT_UYYVYY411: |
1538 | 140 w_align=32; |
141 h_align=8; | |
142 break; | |
143 case PIX_FMT_YUV410P: | |
144 if(s->codec_id == CODEC_ID_SVQ1){ | |
145 w_align=64; | |
146 h_align=64; | |
147 } | |
2104 | 148 case PIX_FMT_RGB555: |
149 if(s->codec_id == CODEC_ID_RPZA){ | |
150 w_align=4; | |
151 h_align=4; | |
152 } | |
153 case PIX_FMT_PAL8: | |
154 if(s->codec_id == CODEC_ID_SMC){ | |
155 w_align=4; | |
156 h_align=4; | |
157 } | |
1538 | 158 break; |
2418
82af834636c2
Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents:
2398
diff
changeset
|
159 case PIX_FMT_BGR24: |
82af834636c2
Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents:
2398
diff
changeset
|
160 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
|
161 w_align=4; |
82af834636c2
Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents:
2398
diff
changeset
|
162 h_align=4; |
82af834636c2
Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents:
2398
diff
changeset
|
163 } |
82af834636c2
Check pointers before writing to memory, fix possible integer overflows
rtognimp
parents:
2398
diff
changeset
|
164 break; |
1538 | 165 default: |
166 w_align= 1; | |
167 h_align= 1; | |
168 break; | |
169 } | |
170 | |
171 *width = ALIGN(*width , w_align); | |
172 *height= ALIGN(*height, h_align); | |
7942
64f35acc2407
Allocate 1 line more in the chroma plane for H.264, this avoids some
michael
parents:
7941
diff
changeset
|
173 if(s->codec_id == CODEC_ID_H264) |
64f35acc2407
Allocate 1 line more in the chroma plane for H.264, this avoids some
michael
parents:
7941
diff
changeset
|
174 *height+=2; // some of the optimized chroma MC reads one line too much |
1538 | 175 } |
176 | |
2422 | 177 int avcodec_check_dimensions(void *av_log_ctx, unsigned int w, unsigned int h){ |
178 if((int)w>0 && (int)h>0 && (w+128)*(uint64_t)(h+128) < INT_MAX/4) | |
179 return 0; | |
2967 | 180 |
2422 | 181 av_log(av_log_ctx, AV_LOG_ERROR, "picture size invalid (%ux%u)\n", w, h); |
182 return -1; | |
183 } | |
184 | |
925 | 185 int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic){ |
903 | 186 int i; |
1538 | 187 int w= s->width; |
188 int h= s->height; | |
1214 | 189 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
|
190 int *picture_number; |
2422 | 191 |
4453
22827cd6b228
Activate guards in avcodec_default_get_buffer. Patch by Michel Bardiaux,
takis
parents:
4351
diff
changeset
|
192 if(pic->data[0]!=NULL) { |
22827cd6b228
Activate guards in avcodec_default_get_buffer. Patch by Michel Bardiaux,
takis
parents:
4351
diff
changeset
|
193 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
|
194 return -1; |
22827cd6b228
Activate guards in avcodec_default_get_buffer. Patch by Michel Bardiaux,
takis
parents:
4351
diff
changeset
|
195 } |
22827cd6b228
Activate guards in avcodec_default_get_buffer. Patch by Michel Bardiaux,
takis
parents:
4351
diff
changeset
|
196 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
|
197 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
|
198 return -1; |
22827cd6b228
Activate guards in avcodec_default_get_buffer. Patch by Michel Bardiaux,
takis
parents:
4351
diff
changeset
|
199 } |
903 | 200 |
2422 | 201 if(avcodec_check_dimensions(s,w,h)) |
202 return -1; | |
203 | |
1214 | 204 if(s->internal_buffer==NULL){ |
7307
52764a3665d8
Make the ugly hack which uses an unused entry in the internal buffer
michael
parents:
7293
diff
changeset
|
205 s->internal_buffer= av_mallocz((INTERNAL_BUFFER_SIZE+1)*sizeof(InternalBuffer)); |
1214 | 206 } |
207 #if 0 | |
208 s->internal_buffer= av_fast_realloc( | |
2967 | 209 s->internal_buffer, |
210 &s->internal_buffer_size, | |
1214 | 211 sizeof(InternalBuffer)*FFMAX(99, s->internal_buffer_count+1)/*FIXME*/ |
212 ); | |
213 #endif | |
2967 | 214 |
1214 | 215 buf= &((InternalBuffer*)s->internal_buffer)[s->internal_buffer_count]; |
7307
52764a3665d8
Make the ugly hack which uses an unused entry in the internal buffer
michael
parents:
7293
diff
changeset
|
216 picture_number= &(((InternalBuffer*)s->internal_buffer)[INTERNAL_BUFFER_SIZE]).last_pic_num; //FIXME ugly hack |
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
|
217 (*picture_number)++; |
2967 | 218 |
5522
acaaff7b6fb8
ensure that default_get_buffer() doesnt reuse images if the dimension or
michael
parents:
5383
diff
changeset
|
219 if(buf->base[0] && (buf->width != w || buf->height != h || buf->pix_fmt != s->pix_fmt)){ |
acaaff7b6fb8
ensure that default_get_buffer() doesnt reuse images if the dimension or
michael
parents:
5383
diff
changeset
|
220 for(i=0; i<4; i++){ |
acaaff7b6fb8
ensure that default_get_buffer() doesnt reuse images if the dimension or
michael
parents:
5383
diff
changeset
|
221 av_freep(&buf->base[i]); |
acaaff7b6fb8
ensure that default_get_buffer() doesnt reuse images if the dimension or
michael
parents:
5383
diff
changeset
|
222 buf->data[i]= NULL; |
acaaff7b6fb8
ensure that default_get_buffer() doesnt reuse images if the dimension or
michael
parents:
5383
diff
changeset
|
223 } |
acaaff7b6fb8
ensure that default_get_buffer() doesnt reuse images if the dimension or
michael
parents:
5383
diff
changeset
|
224 } |
acaaff7b6fb8
ensure that default_get_buffer() doesnt reuse images if the dimension or
michael
parents:
5383
diff
changeset
|
225 |
1214 | 226 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
|
227 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
|
228 buf->last_pic_num= *picture_number; |
903 | 229 }else{ |
1538 | 230 int h_chroma_shift, v_chroma_shift; |
6360 | 231 int size[4] = {0}; |
232 int tmpsize; | |
2950 | 233 AVPicture picture; |
7941
8a3f24796fa9
Replace second (and wrong) call to avcodec_align_dimensions() by adjusting
michael
parents:
7936
diff
changeset
|
234 int stride_align[4]; |
2950 | 235 |
903 | 236 avcodec_get_chroma_sub_sample(s->pix_fmt, &h_chroma_shift, &v_chroma_shift); |
1538 | 237 |
238 avcodec_align_dimensions(s, &w, &h); | |
2967 | 239 |
903 | 240 if(!(s->flags&CODEC_FLAG_EMU_EDGE)){ |
241 w+= EDGE_WIDTH*2; | |
242 h+= EDGE_WIDTH*2; | |
243 } | |
4986 | 244 |
6360 | 245 ff_fill_linesize(&picture, s->pix_fmt, w); |
246 | |
7941
8a3f24796fa9
Replace second (and wrong) call to avcodec_align_dimensions() by adjusting
michael
parents:
7936
diff
changeset
|
247 for (i=0; i<4; i++){ |
8a3f24796fa9
Replace second (and wrong) call to avcodec_align_dimensions() by adjusting
michael
parents:
7936
diff
changeset
|
248 //STRIDE_ALIGN is 8 for SSE* but this does not work for SVQ1 chroma planes |
8a3f24796fa9
Replace second (and wrong) call to avcodec_align_dimensions() by adjusting
michael
parents:
7936
diff
changeset
|
249 //we could change STRIDE_ALIGN to 16 for x86/sse but it would increase the |
8a3f24796fa9
Replace second (and wrong) call to avcodec_align_dimensions() by adjusting
michael
parents:
7936
diff
changeset
|
250 //picture size unneccessarily in some cases. The solution here is not |
8a3f24796fa9
Replace second (and wrong) call to avcodec_align_dimensions() by adjusting
michael
parents:
7936
diff
changeset
|
251 //pretty and better ideas are welcome! |
8a3f24796fa9
Replace second (and wrong) call to avcodec_align_dimensions() by adjusting
michael
parents:
7936
diff
changeset
|
252 #ifdef HAVE_MMX |
8a3f24796fa9
Replace second (and wrong) call to avcodec_align_dimensions() by adjusting
michael
parents:
7936
diff
changeset
|
253 if(s->codec_id == CODEC_ID_SVQ1) |
8a3f24796fa9
Replace second (and wrong) call to avcodec_align_dimensions() by adjusting
michael
parents:
7936
diff
changeset
|
254 stride_align[i]= 16; |
8a3f24796fa9
Replace second (and wrong) call to avcodec_align_dimensions() by adjusting
michael
parents:
7936
diff
changeset
|
255 else |
8a3f24796fa9
Replace second (and wrong) call to avcodec_align_dimensions() by adjusting
michael
parents:
7936
diff
changeset
|
256 #endif |
8a3f24796fa9
Replace second (and wrong) call to avcodec_align_dimensions() by adjusting
michael
parents:
7936
diff
changeset
|
257 stride_align[i] = STRIDE_ALIGN; |
8a3f24796fa9
Replace second (and wrong) call to avcodec_align_dimensions() by adjusting
michael
parents:
7936
diff
changeset
|
258 picture.linesize[i] = ALIGN(picture.linesize[i], stride_align[i]); |
8a3f24796fa9
Replace second (and wrong) call to avcodec_align_dimensions() by adjusting
michael
parents:
7936
diff
changeset
|
259 } |
6360 | 260 |
261 tmpsize = ff_fill_pointer(&picture, NULL, s->pix_fmt, h); | |
262 | |
263 for (i=0; i<3 && picture.data[i+1]; i++) | |
264 size[i] = picture.data[i+1] - picture.data[i]; | |
6390 | 265 size[i] = tmpsize - (picture.data[i] - picture.data[0]); |
2950 | 266 |
1214 | 267 buf->last_pic_num= -256*256*256*64; |
2950 | 268 memset(buf->base, 0, sizeof(buf->base)); |
269 memset(buf->data, 0, sizeof(buf->data)); | |
903 | 270 |
5706
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5576
diff
changeset
|
271 for(i=0; i<4 && size[i]; i++){ |
1165 | 272 const int h_shift= i==0 ? 0 : h_chroma_shift; |
273 const int v_shift= i==0 ? 0 : v_chroma_shift; | |
903 | 274 |
2950 | 275 buf->linesize[i]= picture.linesize[i]; |
903 | 276 |
2950 | 277 buf->base[i]= av_malloc(size[i]+16); //FIXME 16 |
1214 | 278 if(buf->base[i]==NULL) return -1; |
2950 | 279 memset(buf->base[i], 128, size[i]); |
280 | |
281 // no edge if EDEG EMU or not planar YUV, we check for PAL8 redundantly to protect against a exploitable bug regression ... | |
2967 | 282 if((s->flags&CODEC_FLAG_EMU_EDGE) || (s->pix_fmt == PIX_FMT_PAL8) || !size[2]) |
1214 | 283 buf->data[i] = buf->base[i]; |
903 | 284 else |
7941
8a3f24796fa9
Replace second (and wrong) call to avcodec_align_dimensions() by adjusting
michael
parents:
7936
diff
changeset
|
285 buf->data[i] = buf->base[i] + ALIGN((buf->linesize[i]*EDGE_WIDTH>>v_shift) + (EDGE_WIDTH>>h_shift), stride_align[i]); |
903 | 286 } |
5522
acaaff7b6fb8
ensure that default_get_buffer() doesnt reuse images if the dimension or
michael
parents:
5383
diff
changeset
|
287 buf->width = s->width; |
acaaff7b6fb8
ensure that default_get_buffer() doesnt reuse images if the dimension or
michael
parents:
5383
diff
changeset
|
288 buf->height = s->height; |
acaaff7b6fb8
ensure that default_get_buffer() doesnt reuse images if the dimension or
michael
parents:
5383
diff
changeset
|
289 buf->pix_fmt= s->pix_fmt; |
903 | 290 pic->age= 256*256*256*64; |
291 } | |
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
|
292 pic->type= FF_BUFFER_TYPE_INTERNAL; |
903 | 293 |
1214 | 294 for(i=0; i<4; i++){ |
295 pic->base[i]= buf->base[i]; | |
296 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
|
297 pic->linesize[i]= buf->linesize[i]; |
1214 | 298 } |
299 s->internal_buffer_count++; | |
300 | |
7631
b5b4bf0944b8
Provide a simpler way for the user to reorder her timestamps.
michael
parents:
7613
diff
changeset
|
301 pic->reordered_opaque= s->reordered_opaque; |
b5b4bf0944b8
Provide a simpler way for the user to reorder her timestamps.
michael
parents:
7613
diff
changeset
|
302 |
7406
7b2819083061
Add a new -debug option for tracing calls to the default get/release_buffer functions.
astrange
parents:
7331
diff
changeset
|
303 if(s->debug&FF_DEBUG_BUFFERS) |
7b2819083061
Add a new -debug option for tracing calls to the default get/release_buffer functions.
astrange
parents:
7331
diff
changeset
|
304 av_log(s, AV_LOG_DEBUG, "default_get_buffer called on pic %p, %d buffers used\n", pic, s->internal_buffer_count); |
7b2819083061
Add a new -debug option for tracing calls to the default get/release_buffer functions.
astrange
parents:
7331
diff
changeset
|
305 |
903 | 306 return 0; |
307 } | |
308 | |
925 | 309 void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic){ |
903 | 310 int i; |
4558 | 311 InternalBuffer *buf, *last; |
1214 | 312 |
924 | 313 assert(pic->type==FF_BUFFER_TYPE_INTERNAL); |
1396 | 314 assert(s->internal_buffer_count); |
1214 | 315 |
1455 | 316 buf = NULL; /* avoids warning */ |
1214 | 317 for(i=0; i<s->internal_buffer_count; i++){ //just 3-5 checks so is not worth to optimize |
318 buf= &((InternalBuffer*)s->internal_buffer)[i]; | |
319 if(buf->data[0] == pic->data[0]) | |
320 break; | |
321 } | |
322 assert(i < s->internal_buffer_count); | |
323 s->internal_buffer_count--; | |
324 last = &((InternalBuffer*)s->internal_buffer)[s->internal_buffer_count]; | |
325 | |
4558 | 326 FFSWAP(InternalBuffer, *buf, *last); |
1214 | 327 |
5706
3e8764a25c53
add support for yuva420p colorspace (yuv420p + alpha)
aurel
parents:
5576
diff
changeset
|
328 for(i=0; i<4; i++){ |
903 | 329 pic->data[i]=NULL; |
1214 | 330 // pic->base[i]=NULL; |
331 } | |
903 | 332 //printf("R%X\n", pic->opaque); |
7406
7b2819083061
Add a new -debug option for tracing calls to the default get/release_buffer functions.
astrange
parents:
7331
diff
changeset
|
333 |
7b2819083061
Add a new -debug option for tracing calls to the default get/release_buffer functions.
astrange
parents:
7331
diff
changeset
|
334 if(s->debug&FF_DEBUG_BUFFERS) |
7b2819083061
Add a new -debug option for tracing calls to the default get/release_buffer functions.
astrange
parents:
7331
diff
changeset
|
335 av_log(s, AV_LOG_DEBUG, "default_release_buffer called on pic %p, %d buffers used\n", pic, s->internal_buffer_count); |
903 | 336 } |
337 | |
1630 | 338 int avcodec_default_reget_buffer(AVCodecContext *s, AVFrame *pic){ |
339 AVFrame temp_pic; | |
340 int i; | |
341 | |
342 /* If no picture return a new buffer */ | |
343 if(pic->data[0] == NULL) { | |
344 /* We will copy from buffer, so must be readable */ | |
345 pic->buffer_hints |= FF_BUFFER_HINTS_READABLE; | |
346 return s->get_buffer(s, pic); | |
347 } | |
348 | |
349 /* If internal buffer type return the same buffer */ | |
350 if(pic->type == FF_BUFFER_TYPE_INTERNAL) | |
351 return 0; | |
352 | |
353 /* | |
354 * Not internal type and reget_buffer not overridden, emulate cr buffer | |
355 */ | |
356 temp_pic = *pic; | |
357 for(i = 0; i < 4; i++) | |
358 pic->data[i] = pic->base[i] = NULL; | |
359 pic->opaque = NULL; | |
360 /* Allocate new frame */ | |
361 if (s->get_buffer(s, pic)) | |
362 return -1; | |
363 /* 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
|
364 av_picture_copy((AVPicture*)pic, (AVPicture*)&temp_pic, s->pix_fmt, s->width, |
1630 | 365 s->height); |
366 s->release_buffer(s, &temp_pic); // Release old frame | |
367 return 0; | |
368 } | |
369 | |
1799 | 370 int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void **arg, int *ret, int count){ |
371 int i; | |
372 | |
373 for(i=0; i<count; i++){ | |
374 int r= func(c, arg[i]); | |
375 if(ret) ret[i]= r; | |
376 } | |
377 return 0; | |
378 } | |
379 | |
1858 | 380 enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat * fmt){ |
998 | 381 return fmt[0]; |
382 } | |
383 | |
1856 | 384 static const char* context_to_name(void* ptr) { |
385 AVCodecContext *avc= ptr; | |
386 | |
387 if(avc && avc->codec && avc->codec->name) | |
2967 | 388 return avc->codec->name; |
1856 | 389 else |
390 return "NULL"; | |
391 } | |
392 | |
3719 | 393 #define OFFSET(x) offsetof(AVCodecContext,x) |
5127 | 394 #define DEFAULT 0 //should be NAN but it does not work as it is not a constant in glibc as required by ANSI/ISO C |
2873 | 395 //these names are too long to be readable |
396 #define V AV_OPT_FLAG_VIDEO_PARAM | |
397 #define A AV_OPT_FLAG_AUDIO_PARAM | |
398 #define S AV_OPT_FLAG_SUBTITLE_PARAM | |
2967 | 399 #define E AV_OPT_FLAG_ENCODING_PARAM |
2873 | 400 #define D AV_OPT_FLAG_DECODING_PARAM |
2862 | 401 |
3720
c52a1096385e
Synchronize the defaults specified in the AVOptions[] array to the defaults
takis
parents:
3719
diff
changeset
|
402 #define AV_CODEC_DEFAULT_BITRATE 200*1000 |
3704 | 403 |
3420 | 404 static const AVOption options[]={ |
4631 | 405 {"b", "set bitrate (in bits/s)", OFFSET(bit_rate), FF_OPT_TYPE_INT, AV_CODEC_DEFAULT_BITRATE, INT_MIN, INT_MAX, V|E}, |
406 {"ab", "set bitrate (in bits/s)", OFFSET(bit_rate), FF_OPT_TYPE_INT, 64*1000, INT_MIN, INT_MAX, A|E}, | |
4325 | 407 {"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}, |
6541 | 408 {"flags", NULL, OFFSET(flags), FF_OPT_TYPE_FLAGS, DEFAULT, 0, UINT_MAX, V|A|E|D, "flags"}, |
2881 | 409 {"mv4", "use four motion vector by macroblock (mpeg4)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_4MV, INT_MIN, INT_MAX, V|E, "flags"}, |
410 {"obmc", "use overlapped block motion compensation (h263+)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_OBMC, INT_MIN, INT_MAX, V|E, "flags"}, | |
411 {"qpel", "use 1/4 pel motion compensation", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_QPEL, INT_MIN, INT_MAX, V|E, "flags"}, | |
412 {"loop", "use loop filter", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_LOOP_FILTER, INT_MIN, INT_MAX, V|E, "flags"}, | |
413 {"qscale", "use fixed qscale", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_QSCALE, INT_MIN, INT_MAX, 0, "flags"}, | |
414 {"gmc", "use gmc", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_GMC, INT_MIN, INT_MAX, V|E, "flags"}, | |
415 {"mv0", "always try a mb with mv=<0,0>", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_MV0, INT_MIN, INT_MAX, V|E, "flags"}, | |
416 {"part", "use data partitioning", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_PART, INT_MIN, INT_MAX, V|E, "flags"}, | |
417 {"input_preserved", NULL, 0, FF_OPT_TYPE_CONST, CODEC_FLAG_INPUT_PRESERVED, INT_MIN, INT_MAX, 0, "flags"}, | |
418 {"pass1", "use internal 2pass ratecontrol in first pass mode", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_PASS1, INT_MIN, INT_MAX, 0, "flags"}, | |
419 {"pass2", "use internal 2pass ratecontrol in second pass mode", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_PASS2, INT_MIN, INT_MAX, 0, "flags"}, | |
420 {"extern_huff", "use external huffman table (for mjpeg)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_EXTERN_HUFF, INT_MIN, INT_MAX, 0, "flags"}, | |
421 {"gray", "only decode/encode grayscale", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_GRAY, INT_MIN, INT_MAX, V|E|D, "flags"}, | |
422 {"emu_edge", "don't draw edges", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_EMU_EDGE, INT_MIN, INT_MAX, 0, "flags"}, | |
423 {"psnr", "error[?] variables will be set during encoding", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_PSNR, INT_MIN, INT_MAX, V|E, "flags"}, | |
424 {"truncated", NULL, 0, FF_OPT_TYPE_CONST, CODEC_FLAG_TRUNCATED, INT_MIN, INT_MAX, 0, "flags"}, | |
425 {"naq", "normalize adaptive quantization", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_NORMALIZE_AQP, INT_MIN, INT_MAX, V|E, "flags"}, | |
426 {"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
|
427 {"low_delay", "force low delay", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_LOW_DELAY, INT_MIN, INT_MAX, V|D|E, "flags"}, |
2881 | 428 {"alt", "enable alternate scantable (mpeg2/mpeg4)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_ALT_SCAN, INT_MIN, INT_MAX, V|E, "flags"}, |
7036
b385bb078223
enable global_header flag for audio and video encoding, was wrongly part of commit r13722
bcoudurier
parents:
7035
diff
changeset
|
429 {"global_header", "place global headers in extradata instead of every keyframe", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_GLOBAL_HEADER, INT_MIN, INT_MAX, V|A|E, "flags"}, |
2881 | 430 {"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"}, |
431 {"aic", "h263 advanced intra coding / mpeg4 ac prediction", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_AC_PRED, INT_MIN, INT_MAX, V|E, "flags"}, | |
432 {"umv", "use unlimited motion vectors", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_H263P_UMV, INT_MIN, INT_MAX, V|E, "flags"}, | |
433 {"cbp", "use rate distortion optimization for cbp", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_CBP_RD, INT_MIN, INT_MAX, V|E, "flags"}, | |
2890 | 434 {"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 | 435 {"aiv", "h263 alternative inter vlc", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_H263P_AIV, INT_MIN, INT_MAX, V|E, "flags"}, |
436 {"slice", NULL, 0, FF_OPT_TYPE_CONST, CODEC_FLAG_H263P_SLICE_STRUCT, INT_MIN, INT_MAX, V|E, "flags"}, | |
437 {"ilme", "interlaced motion estimation", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_INTERLACED_ME, INT_MIN, INT_MAX, V|E, "flags"}, | |
438 {"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 | 439 {"cgop", "closed gop", 0, FF_OPT_TYPE_CONST, CODEC_FLAG_CLOSED_GOP, INT_MIN, INT_MAX, V|E, "flags"}, |
2881 | 440 {"fast", "allow non spec compliant speedup tricks", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_FAST, INT_MIN, INT_MAX, V|E, "flags2"}, |
441 {"sgop", "strictly enforce gop size", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_STRICT_GOP, INT_MIN, INT_MAX, V|E, "flags2"}, | |
442 {"noout", "skip bitstream encoding", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_NO_OUTPUT, INT_MIN, INT_MAX, V|E, "flags2"}, | |
443 {"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 | 444 {"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
|
445 {"me_method", "set motion estimation method", OFFSET(me_method), FF_OPT_TYPE_INT, ME_EPZS, INT_MIN, INT_MAX, V|E, "me_method"}, |
5227 | 446 {"zero", "zero motion estimation (fastest)", 0, FF_OPT_TYPE_CONST, ME_ZERO, INT_MIN, INT_MAX, V|E, "me_method" }, |
447 {"full", "full motion estimation (slowest)", 0, FF_OPT_TYPE_CONST, ME_FULL, INT_MIN, INT_MAX, V|E, "me_method" }, | |
448 {"epzs", "EPZS motion estimation (default)", 0, FF_OPT_TYPE_CONST, ME_EPZS, INT_MIN, INT_MAX, V|E, "me_method" }, | |
7002
92c74bbdf4fb
add esa/dia compat me options and new tesa for libx264
bcoudurier
parents:
6941
diff
changeset
|
449 {"esa", "esa motion estimation (alias for full)", 0, FF_OPT_TYPE_CONST, ME_FULL, INT_MIN, INT_MAX, V|E, "me_method" }, |
92c74bbdf4fb
add esa/dia compat me options and new tesa for libx264
bcoudurier
parents:
6941
diff
changeset
|
450 {"tesa", "tesa motion estimation", 0, FF_OPT_TYPE_CONST, ME_TESA, INT_MIN, INT_MAX, V|E, "me_method" }, |
92c74bbdf4fb
add esa/dia compat me options and new tesa for libx264
bcoudurier
parents:
6941
diff
changeset
|
451 {"dia", "dia motion estimation (alias for epzs)", 0, FF_OPT_TYPE_CONST, ME_EPZS, INT_MIN, INT_MAX, V|E, "me_method" }, |
5227 | 452 {"log", "log motion estimation", 0, FF_OPT_TYPE_CONST, ME_LOG, INT_MIN, INT_MAX, V|E, "me_method" }, |
453 {"phods", "phods motion estimation", 0, FF_OPT_TYPE_CONST, ME_PHODS, INT_MIN, INT_MAX, V|E, "me_method" }, | |
454 {"x1", "X1 motion estimation", 0, FF_OPT_TYPE_CONST, ME_X1, INT_MIN, INT_MAX, V|E, "me_method" }, | |
455 {"hex", "hex motion estimation", 0, FF_OPT_TYPE_CONST, ME_HEX, INT_MIN, INT_MAX, V|E, "me_method" }, | |
456 {"umh", "umh motion estimation", 0, FF_OPT_TYPE_CONST, ME_UMH, INT_MIN, INT_MAX, V|E, "me_method" }, | |
457 {"iter", "iter motion estimation", 0, FF_OPT_TYPE_CONST, ME_ITER, INT_MIN, INT_MAX, V|E, "me_method" }, | |
2862 | 458 {"extradata_size", NULL, OFFSET(extradata_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
459 {"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
|
460 {"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
|
461 {"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
|
462 {"ar", "set audio sampling rate (in Hz)", OFFSET(sample_rate), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
3966 | 463 {"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
|
464 {"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
|
465 {"frame_size", NULL, OFFSET(frame_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, A|E}, |
2862 | 466 {"frame_number", NULL, OFFSET(frame_number), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
467 {"real_pict_num", NULL, OFFSET(real_pict_num), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
468 {"delay", NULL, OFFSET(delay), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
7293
dddc7406c5b6
100l, someone used FLT_MIN where -FLT_MAX was meant at a few places in the
michael
parents:
7292
diff
changeset
|
469 {"qcomp", "video quantizer scale compression (VBR)", OFFSET(qcompress), FF_OPT_TYPE_FLOAT, 0.5, -FLT_MAX, FLT_MAX, V|E}, |
dddc7406c5b6
100l, someone used FLT_MIN where -FLT_MAX was meant at a few places in the
michael
parents:
7292
diff
changeset
|
470 {"qblur", "video quantizer scale blur (VBR)", OFFSET(qblur), FF_OPT_TYPE_FLOAT, 0.5, 0, FLT_MAX, V|E}, |
3916 | 471 {"qmin", "min video quantizer scale (VBR)", OFFSET(qmin), FF_OPT_TYPE_INT, 2, 1, 51, V|E}, |
472 {"qmax", "max video quantizer scale (VBR)", OFFSET(qmax), FF_OPT_TYPE_INT, 31, 1, 51, V|E}, | |
473 {"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
|
474 {"bf", "use 'frames' B frames", OFFSET(max_b_frames), FF_OPT_TYPE_INT, DEFAULT, 0, FF_MAX_B_FRAMES, V|E}, |
7293
dddc7406c5b6
100l, someone used FLT_MIN where -FLT_MAX was meant at a few places in the
michael
parents:
7292
diff
changeset
|
475 {"b_qfactor", "qp factor between p and b frames", OFFSET(b_quant_factor), FF_OPT_TYPE_FLOAT, 1.25, -FLT_MAX, FLT_MAX, V|E}, |
4261 | 476 {"rc_strategy", "ratecontrol method", OFFSET(rc_strategy), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
477 {"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 | 478 {"hurry_up", NULL, OFFSET(hurry_up), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|D}, |
4613
c1c2e47aa5fe
remove ps option and rename rtp_payload_size AVOption to ps
bcoudurier
parents:
4608
diff
changeset
|
479 {"ps", "rtp payload size in bits", OFFSET(rtp_payload_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
2862 | 480 {"mv_bits", NULL, OFFSET(mv_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
481 {"header_bits", NULL, OFFSET(header_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
482 {"i_tex_bits", NULL, OFFSET(i_tex_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
483 {"p_tex_bits", NULL, OFFSET(p_tex_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
484 {"i_count", NULL, OFFSET(i_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
485 {"p_count", NULL, OFFSET(p_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
486 {"skip_count", NULL, OFFSET(skip_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
487 {"misc_bits", NULL, OFFSET(misc_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
488 {"frame_bits", NULL, OFFSET(frame_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
489 {"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
|
490 {"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 | 491 {"autodetect", NULL, 0, FF_OPT_TYPE_CONST, FF_BUG_AUTODETECT, INT_MIN, INT_MAX, V|D, "bug"}, |
4261 | 492 {"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"}, |
493 {"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"}, | |
494 {"ump4", "(autodetected if fourcc==UMP4)", 0, FF_OPT_TYPE_CONST, FF_BUG_UMP4, INT_MIN, INT_MAX, V|D, "bug"}, | |
495 {"no_padding", "padding bug (autodetected)", 0, FF_OPT_TYPE_CONST, FF_BUG_NO_PADDING, INT_MIN, INT_MAX, V|D, "bug"}, | |
2881 | 496 {"amv", NULL, 0, FF_OPT_TYPE_CONST, FF_BUG_AMV, INT_MIN, INT_MAX, V|D, "bug"}, |
4261 | 497 {"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 | 498 {"qpel_chroma", NULL, 0, FF_OPT_TYPE_CONST, FF_BUG_QPEL_CHROMA, INT_MIN, INT_MAX, V|D, "bug"}, |
4261 | 499 {"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 | 500 {"qpel_chroma2", NULL, 0, FF_OPT_TYPE_CONST, FF_BUG_QPEL_CHROMA2, INT_MIN, INT_MAX, V|D, "bug"}, |
4261 | 501 {"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"}, |
502 {"edge", "edge padding bug (autodetected per fourcc/version)", 0, FF_OPT_TYPE_CONST, FF_BUG_EDGE, INT_MIN, INT_MAX, V|D, "bug"}, | |
2881 | 503 {"hpel_chroma", NULL, 0, FF_OPT_TYPE_CONST, FF_BUG_HPEL_CHROMA, INT_MIN, INT_MAX, V|D, "bug"}, |
504 {"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
|
505 {"ms", "workaround various bugs in microsofts broken decoders", 0, FF_OPT_TYPE_CONST, FF_BUG_MS, INT_MIN, INT_MAX, V|D, "bug"}, |
2881 | 506 {"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}, |
507 {"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}, | |
7324 | 508 {"strict", "how strictly to follow the standards", OFFSET(strict_std_compliance), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, A|V|D|E, "strict"}, |
509 {"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|D|E, "strict"}, | |
510 {"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|D|E, "strict"}, | |
511 {"normal", NULL, 0, FF_OPT_TYPE_CONST, FF_COMPLIANCE_NORMAL, INT_MIN, INT_MAX, V|D|E, "strict"}, | |
512 {"inofficial", "allow inofficial extensions", 0, FF_OPT_TYPE_CONST, FF_COMPLIANCE_INOFFICIAL, INT_MIN, INT_MAX, V|D|E, "strict"}, | |
513 {"experimental", "allow non standardized experimental things", 0, FF_OPT_TYPE_CONST, FF_COMPLIANCE_EXPERIMENTAL, INT_MIN, INT_MAX, V|D|E, "strict"}, | |
7293
dddc7406c5b6
100l, someone used FLT_MIN where -FLT_MAX was meant at a few places in the
michael
parents:
7292
diff
changeset
|
514 {"b_qoffset", "qp offset between P and B frames", OFFSET(b_quant_offset), FF_OPT_TYPE_FLOAT, 1.25, -FLT_MAX, FLT_MAX, V|E}, |
7831 | 515 {"er", "set error detection aggressivity", OFFSET(error_recognition), FF_OPT_TYPE_INT, FF_ER_CAREFUL, INT_MIN, INT_MAX, A|V|D, "er"}, |
2881 | 516 {"careful", NULL, 0, FF_OPT_TYPE_CONST, FF_ER_CAREFUL, INT_MIN, INT_MAX, V|D, "er"}, |
517 {"compliant", NULL, 0, FF_OPT_TYPE_CONST, FF_ER_COMPLIANT, INT_MIN, INT_MAX, V|D, "er"}, | |
518 {"aggressive", NULL, 0, FF_OPT_TYPE_CONST, FF_ER_AGGRESSIVE, INT_MIN, INT_MAX, V|D, "er"}, | |
519 {"very_aggressive", NULL, 0, FF_OPT_TYPE_CONST, FF_ER_VERY_AGGRESSIVE, INT_MIN, INT_MAX, V|D, "er"}, | |
2862 | 520 {"has_b_frames", NULL, OFFSET(has_b_frames), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
521 {"block_align", NULL, OFFSET(block_align), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
522 {"parse_only", NULL, OFFSET(parse_only), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
4261 | 523 {"mpeg_quant", "use MPEG quantizers instead of H.263", OFFSET(mpeg_quant), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
2862 | 524 {"stats_out", NULL, OFFSET(stats_out), FF_OPT_TYPE_STRING, DEFAULT, CHAR_MIN, CHAR_MAX}, |
525 {"stats_in", NULL, OFFSET(stats_in), FF_OPT_TYPE_STRING, DEFAULT, CHAR_MIN, CHAR_MAX}, | |
3916 | 526 {"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 | 527 {"rc_qmod_amp", "experimental quantizer modulation", OFFSET(rc_qmod_amp), FF_OPT_TYPE_FLOAT, DEFAULT, -FLT_MAX, FLT_MAX, V|E}, |
528 {"rc_qmod_freq", "experimental quantizer modulation", OFFSET(rc_qmod_freq), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, | |
2862 | 529 {"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
|
530 {"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
|
531 {"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
|
532 {"minrate", "set min video bitrate tolerance (in bits/s)", OFFSET(rc_min_rate), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
5979 | 533 {"bufsize", "set ratecontrol buffer size (in bits)", OFFSET(rc_buffer_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, A|V|E}, |
7293
dddc7406c5b6
100l, someone used FLT_MIN where -FLT_MAX was meant at a few places in the
michael
parents:
7292
diff
changeset
|
534 {"rc_buf_aggressivity", "currently useless", OFFSET(rc_buffer_aggressivity), FF_OPT_TYPE_FLOAT, 1.0, -FLT_MAX, FLT_MAX, V|E}, |
6488 | 535 {"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}, |
536 {"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}, | |
3734
6903463caf49
Correct the constraints of some AVOptions. These had a default value of zero,
takis
parents:
3725
diff
changeset
|
537 {"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 | 538 {"dct", "DCT algorithm", OFFSET(dct_algo), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, V|E, "dct"}, |
539 {"auto", "autoselect a good one (default)", 0, FF_OPT_TYPE_CONST, FF_DCT_AUTO, INT_MIN, INT_MAX, V|E, "dct"}, | |
540 {"fastint", "fast integer", 0, FF_OPT_TYPE_CONST, FF_DCT_FASTINT, INT_MIN, INT_MAX, V|E, "dct"}, | |
541 {"int", "accurate integer", 0, FF_OPT_TYPE_CONST, FF_DCT_INT, INT_MIN, INT_MAX, V|E, "dct"}, | |
2881 | 542 {"mmx", NULL, 0, FF_OPT_TYPE_CONST, FF_DCT_MMX, INT_MIN, INT_MAX, V|E, "dct"}, |
543 {"mlib", NULL, 0, FF_OPT_TYPE_CONST, FF_DCT_MLIB, INT_MIN, INT_MAX, V|E, "dct"}, | |
544 {"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
|
545 {"faan", "floating point AAN DCT", 0, FF_OPT_TYPE_CONST, FF_DCT_FAAN, INT_MIN, INT_MAX, V|E, "dct"}, |
4261 | 546 {"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
|
547 {"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
|
548 {"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
|
549 {"p_mask", "inter masking", OFFSET(p_masking), FF_OPT_TYPE_FLOAT, 0, -FLT_MAX, FLT_MAX, V|E}, |
4261 | 550 {"dark_mask", "compresses dark areas stronger than medium ones", OFFSET(dark_masking), FF_OPT_TYPE_FLOAT, 0, -FLT_MAX, FLT_MAX, V|E}, |
4293 | 551 {"idct", "select IDCT implementation", OFFSET(idct_algo), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, V|E|D, "idct"}, |
2881 | 552 {"auto", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_AUTO, INT_MIN, INT_MAX, V|E|D, "idct"}, |
553 {"int", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_INT, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
554 {"simple", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLE, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
555 {"simplemmx", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLEMMX, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
556 {"libmpeg2mmx", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_LIBMPEG2MMX, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
557 {"ps2", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_PS2, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
558 {"mlib", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_MLIB, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
559 {"arm", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_ARM, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
560 {"altivec", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_ALTIVEC, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
561 {"sh4", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SH4, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
562 {"simplearm", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLEARM, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
3769 | 563 {"simplearmv5te", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLEARMV5TE, INT_MIN, INT_MAX, V|E|D, "idct"}, |
7160 | 564 {"simplearmv6", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLEARMV6, INT_MIN, INT_MAX, V|E|D, "idct"}, |
2881 | 565 {"h264", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_H264, INT_MIN, INT_MAX, V|E|D, "idct"}, |
566 {"vp3", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_VP3, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
567 {"ipp", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_IPP, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
568 {"xvidmmx", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_XVIDMMX, INT_MIN, INT_MAX, V|E|D, "idct"}, | |
6407 | 569 {"faani", "floating point AAN IDCT", 0, FF_OPT_TYPE_CONST, FF_IDCT_FAAN, INT_MIN, INT_MAX, V|D|E, "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"}, | |
7720
b1cacb2f48a0
Change AVCodecContext.bits_per_sample to bits_per_coded_sample.
pross
parents:
7631
diff
changeset
|
574 {"bits_per_coded_sample", NULL, OFFSET(bits_per_coded_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"}, | |
7831 | 591 {"er", "error recognition", 0, FF_OPT_TYPE_CONST, FF_DEBUG_ER, INT_MIN, INT_MAX, V|D, "debug"}, |
4261 | 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"}, | |
7406
7b2819083061
Add a new -debug option for tracing calls to the default get/release_buffer functions.
astrange
parents:
7331
diff
changeset
|
596 {"buffers", "picture buffer allocations", 0, FF_OPT_TYPE_CONST, FF_DEBUG_BUFFERS, INT_MIN, INT_MAX, V|D, "debug"}, |
4261 | 597 {"vismv", "visualize motion vectors (MVs)", OFFSET(debug_mv), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, V|D, "debug_mv"}, |
598 {"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"}, | |
599 {"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"}, | |
600 {"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 | 601 {"mb_qmin", "obsolete, use qmin", OFFSET(mb_qmin), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
602 {"mb_qmax", "obsolete, use qmax", OFFSET(mb_qmax), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, | |
2881 | 603 {"cmp", "full pel me compare function", OFFSET(me_cmp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
604 {"subcmp", "sub pel me compare function", OFFSET(me_sub_cmp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
2878 | 605 {"mbcmp", "macroblock compare function", OFFSET(mb_cmp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
3704 | 606 {"ildctcmp", "interlaced dct compare function", OFFSET(ildct_cmp), FF_OPT_TYPE_INT, FF_CMP_VSAD, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
4261 | 607 {"dia_size", "diamond type & size for motion estimation", OFFSET(dia_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
608 {"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
|
609 {"preme", "pre motion estimation", OFFSET(pre_me), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
2878 | 610 {"precmp", "pre motion estimation compare function", OFFSET(me_pre_cmp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
4261 | 611 {"sad", "sum of absolute differences, fast (default)", 0, FF_OPT_TYPE_CONST, FF_CMP_SAD, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
612 {"sse", "sum of squared errors", 0, FF_OPT_TYPE_CONST, FF_CMP_SSE, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
613 {"satd", "sum of absolute Hadamard transformed differences", 0, FF_OPT_TYPE_CONST, FF_CMP_SATD, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
614 {"dct", "sum of absolute DCT transformed differences", 0, FF_OPT_TYPE_CONST, FF_CMP_DCT, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
615 {"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"}, | |
616 {"bit", "number of bits needed for the block", 0, FF_OPT_TYPE_CONST, FF_CMP_BIT, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
617 {"rd", "rate distortion optimal, slow", 0, FF_OPT_TYPE_CONST, FF_CMP_RD, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
618 {"zero", "0", 0, FF_OPT_TYPE_CONST, FF_CMP_ZERO, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
619 {"vsad", "sum of absolute vertical differences", 0, FF_OPT_TYPE_CONST, FF_CMP_VSAD, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
620 {"vsse","sum of squared vertical differences", 0, FF_OPT_TYPE_CONST, FF_CMP_VSSE, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
621 {"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
|
622 #ifdef CONFIG_SNOW_ENCODER |
4261 | 623 {"w53", "5/3 wavelet, only used in snow", 0, FF_OPT_TYPE_CONST, FF_CMP_W53, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
624 {"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
|
625 #endif |
2881 | 626 {"dctmax", NULL, 0, FF_OPT_TYPE_CONST, FF_CMP_DCTMAX, INT_MIN, INT_MAX, V|E, "cmp_func"}, |
627 {"chroma", NULL, 0, FF_OPT_TYPE_CONST, FF_CMP_CHROMA, INT_MIN, INT_MAX, V|E, "cmp_func"}, | |
4261 | 628 {"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 | 629 {"subq", "sub pel motion estimation quality", OFFSET(me_subpel_quality), FF_OPT_TYPE_INT, 8, INT_MIN, INT_MAX, V|E}, |
2862 | 630 {"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
|
631 {"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
|
632 {"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
|
633 {"pbias", "inter quant bias", OFFSET(inter_quant_bias), FF_OPT_TYPE_INT, FF_DEFAULT_QUANT_BIAS, INT_MIN, INT_MAX, V|E}, |
2862 | 634 {"color_table_id", NULL, OFFSET(color_table_id), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
635 {"internal_buffer_count", NULL, OFFSET(internal_buffer_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
636 {"global_quality", NULL, OFFSET(global_quality), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
2878 | 637 {"coder", NULL, OFFSET(coder_type), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "coder"}, |
2890 | 638 {"vlc", "variable length coder / huffman coder", 0, FF_OPT_TYPE_CONST, FF_CODER_TYPE_VLC, INT_MIN, INT_MAX, V|E, "coder"}, |
639 {"ac", "arithmetic coder", 0, FF_OPT_TYPE_CONST, FF_CODER_TYPE_AC, INT_MIN, INT_MAX, V|E, "coder"}, | |
4775
14e7131344b3
FF_CODER_TYPE_RAW / RLE / DEFLATE extracted from a patch by Kamil Nowosad
michael
parents:
4763
diff
changeset
|
640 {"raw", "raw (no encoding)", 0, FF_OPT_TYPE_CONST, FF_CODER_TYPE_RAW, INT_MIN, INT_MAX, V|E, "coder"}, |
4777 | 641 {"rle", "run-length coder", 0, FF_OPT_TYPE_CONST, FF_CODER_TYPE_RLE, INT_MIN, INT_MAX, V|E, "coder"}, |
4775
14e7131344b3
FF_CODER_TYPE_RAW / RLE / DEFLATE extracted from a patch by Kamil Nowosad
michael
parents:
4763
diff
changeset
|
642 {"deflate", "deflate-based coder", 0, FF_OPT_TYPE_CONST, FF_CODER_TYPE_DEFLATE, INT_MIN, INT_MAX, V|E, "coder"}, |
2890 | 643 {"context", "context model", OFFSET(context_model), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
2862 | 644 {"slice_flags", NULL, OFFSET(slice_flags), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
645 {"xvmc_acceleration", NULL, OFFSET(xvmc_acceleration), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, | |
5725 | 646 {"mbd", "macroblock decision algorithm (high quality mode)", OFFSET(mb_decision), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E, "mbd"}, |
4261 | 647 {"simple", "use mbcmp (default)", 0, FF_OPT_TYPE_CONST, FF_MB_DECISION_SIMPLE, INT_MIN, INT_MAX, V|E, "mbd"}, |
648 {"bits", "use fewest bits", 0, FF_OPT_TYPE_CONST, FF_MB_DECISION_BITS, INT_MIN, INT_MAX, V|E, "mbd"}, | |
649 {"rd", "use best rate distortion", 0, FF_OPT_TYPE_CONST, FF_MB_DECISION_RD, INT_MIN, INT_MAX, V|E, "mbd"}, | |
2862 | 650 {"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
|
651 {"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
|
652 {"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
|
653 {"lmax", "max lagrange factor (VBR)", OFFSET(lmax), FF_OPT_TYPE_INT, 31*FF_QP2LAMBDA, 0, INT_MAX, V|E}, |
2890 | 654 {"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
|
655 {"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 | 656 {"inter_threshold", NULL, OFFSET(inter_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
6541 | 657 {"flags2", NULL, OFFSET(flags2), FF_OPT_TYPE_FLAGS, CODEC_FLAG2_FASTPSKIP|CODEC_FLAG2_BIT_RESERVOIR, 0, UINT_MAX, V|A|E|D, "flags2"}, |
3751
0882d618eb57
Remove the "error" OptionDef. The equally named AVOption takes over its
takis
parents:
3750
diff
changeset
|
658 {"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
|
659 {"antialias", "MP3 antialias algorithm", OFFSET(antialias_algo), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|D, "aa"}, |
2881 | 660 {"auto", NULL, 0, FF_OPT_TYPE_CONST, FF_AA_AUTO, INT_MIN, INT_MAX, V|D, "aa"}, |
661 {"fastint", NULL, 0, FF_OPT_TYPE_CONST, FF_AA_FASTINT, INT_MIN, INT_MAX, V|D, "aa"}, | |
662 {"int", NULL, 0, FF_OPT_TYPE_CONST, FF_AA_INT, INT_MIN, INT_MAX, V|D, "aa"}, | |
663 {"float", NULL, 0, FF_OPT_TYPE_CONST, FF_AA_FLOAT, INT_MIN, INT_MAX, V|D, "aa"}, | |
2890 | 664 {"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
|
665 {"threads", NULL, OFFSET(thread_count), FF_OPT_TYPE_INT, 1, INT_MIN, INT_MAX, V|E|D}, |
2877 | 666 {"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
|
667 {"mb_threshold", "macroblock threshold", OFFSET(mb_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
3765 | 668 {"dc", "intra_dc_precision", OFFSET(intra_dc_precision), FF_OPT_TYPE_INT, 0, INT_MIN, INT_MAX, V|E}, |
2890 | 669 {"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
|
670 {"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
|
671 {"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 | 672 {"profile", NULL, OFFSET(profile), FF_OPT_TYPE_INT, FF_PROFILE_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "profile"}, |
2881 | 673 {"unknown", NULL, 0, FF_OPT_TYPE_CONST, FF_PROFILE_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "profile"}, |
4891 | 674 {"aac_main", NULL, 0, FF_OPT_TYPE_CONST, FF_PROFILE_AAC_MAIN, INT_MIN, INT_MAX, A|E, "profile"}, |
675 {"aac_low", NULL, 0, FF_OPT_TYPE_CONST, FF_PROFILE_AAC_LOW, INT_MIN, INT_MAX, A|E, "profile"}, | |
676 {"aac_ssr", NULL, 0, FF_OPT_TYPE_CONST, FF_PROFILE_AAC_SSR, INT_MIN, INT_MAX, A|E, "profile"}, | |
677 {"aac_ltp", NULL, 0, FF_OPT_TYPE_CONST, FF_PROFILE_AAC_LTP, INT_MIN, INT_MAX, A|E, "profile"}, | |
2878 | 678 {"level", NULL, OFFSET(level), FF_OPT_TYPE_INT, FF_LEVEL_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "level"}, |
2881 | 679 {"unknown", NULL, 0, FF_OPT_TYPE_CONST, FF_LEVEL_UNKNOWN, INT_MIN, INT_MAX, V|A|E, "level"}, |
4261 | 680 {"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
|
681 {"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
|
682 {"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
|
683 {"skip_exp", "frame skip exponent", OFFSET(frame_skip_exp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
2927 | 684 {"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 | 685 {"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 | 686 {"mblmin", "min macroblock lagrange factor (VBR)", OFFSET(mb_lmin), FF_OPT_TYPE_INT, FF_QP2LAMBDA * 2, 1, FF_LAMBDA_MAX, V|E}, |
687 {"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
|
688 {"mepc", "motion estimation bitrate penalty compensation (1.0 = 256)", OFFSET(me_penalty_compensation), FF_OPT_TYPE_INT, 256, INT_MIN, INT_MAX, V|E}, |
7331
cb07584c262b
Add skip* AVOptions, which seem to have been missed.
michael
parents:
7324
diff
changeset
|
689 {"skip_loop_filter", NULL, OFFSET(skip_loop_filter), FF_OPT_TYPE_INT, AVDISCARD_DEFAULT, INT_MIN, INT_MAX, V|D, "avdiscard"}, |
cb07584c262b
Add skip* AVOptions, which seem to have been missed.
michael
parents:
7324
diff
changeset
|
690 {"skip_idct" , NULL, OFFSET(skip_idct) , FF_OPT_TYPE_INT, AVDISCARD_DEFAULT, INT_MIN, INT_MAX, V|D, "avdiscard"}, |
cb07584c262b
Add skip* AVOptions, which seem to have been missed.
michael
parents:
7324
diff
changeset
|
691 {"skip_frame" , NULL, OFFSET(skip_frame) , FF_OPT_TYPE_INT, AVDISCARD_DEFAULT, INT_MIN, INT_MAX, V|D, "avdiscard"}, |
cb07584c262b
Add skip* AVOptions, which seem to have been missed.
michael
parents:
7324
diff
changeset
|
692 {"none" , NULL, 0, FF_OPT_TYPE_CONST, AVDISCARD_NONE , INT_MIN, INT_MAX, V|D, "avdiscard"}, |
cb07584c262b
Add skip* AVOptions, which seem to have been missed.
michael
parents:
7324
diff
changeset
|
693 {"default" , NULL, 0, FF_OPT_TYPE_CONST, AVDISCARD_DEFAULT, INT_MIN, INT_MAX, V|D, "avdiscard"}, |
cb07584c262b
Add skip* AVOptions, which seem to have been missed.
michael
parents:
7324
diff
changeset
|
694 {"noref" , NULL, 0, FF_OPT_TYPE_CONST, AVDISCARD_NONREF , INT_MIN, INT_MAX, V|D, "avdiscard"}, |
cb07584c262b
Add skip* AVOptions, which seem to have been missed.
michael
parents:
7324
diff
changeset
|
695 {"bidir" , NULL, 0, FF_OPT_TYPE_CONST, AVDISCARD_BIDIR , INT_MIN, INT_MAX, V|D, "avdiscard"}, |
cb07584c262b
Add skip* AVOptions, which seem to have been missed.
michael
parents:
7324
diff
changeset
|
696 {"nokey" , NULL, 0, FF_OPT_TYPE_CONST, AVDISCARD_NONKEY , INT_MIN, INT_MAX, V|D, "avdiscard"}, |
cb07584c262b
Add skip* AVOptions, which seem to have been missed.
michael
parents:
7324
diff
changeset
|
697 {"all" , NULL, 0, FF_OPT_TYPE_CONST, AVDISCARD_ALL , INT_MIN, INT_MAX, V|D, "avdiscard"}, |
4261 | 698 {"bidir_refine", "refine the two motion vectors used in bidirectional macroblocks", OFFSET(bidir_refine), FF_OPT_TYPE_INT, DEFAULT, 0, 4, V|E}, |
699 {"brd_scale", "downscales frames for dynamic B-frame decision", OFFSET(brd_scale), FF_OPT_TYPE_INT, DEFAULT, 0, 10, V|E}, | |
700 {"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
|
701 {"cqp", "constant quantization parameter rate control method", OFFSET(cqp), FF_OPT_TYPE_INT, -1, INT_MIN, INT_MAX, V|E}, |
4261 | 702 {"keyint_min", "minimum interval between IDR-frames (x264)", OFFSET(keyint_min), FF_OPT_TYPE_INT, 25, INT_MIN, INT_MAX, V|E}, |
703 {"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
|
704 {"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
|
705 {"bframebias", "influences how often B-frames are used", OFFSET(bframebias), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|E}, |
4261 | 706 {"trellis", "rate-distortion optimal quantization", OFFSET(trellis), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, V|A|E}, |
7934 | 707 {"directpred", "direct mv prediction mode - 0 (none), 1 (spatial), 2 (temporal), 3 (auto)", OFFSET(directpred), FF_OPT_TYPE_INT, 2, INT_MIN, INT_MAX, V|E}, |
4261 | 708 {"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
|
709 {"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
|
710 {"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 | 711 {"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
|
712 {"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
|
713 {"aud", "access unit delimiters (H.264)", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_AUD, INT_MIN, INT_MAX, V|E, "flags2"}, |
4796 | 714 {"skiprd", "RD optimal MB level residual skipping", 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
|
715 {"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
|
716 {"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
|
717 {"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
|
718 {"partitions", "macroblock subpartition sizes to consider", OFFSET(partitions), FF_OPT_TYPE_FLAGS, DEFAULT, INT_MIN, INT_MAX, V|E, "partitions"}, |
2996 | 719 {"parti4x4", NULL, 0, FF_OPT_TYPE_CONST, X264_PART_I4X4, INT_MIN, INT_MAX, V|E, "partitions"}, |
720 {"parti8x8", NULL, 0, FF_OPT_TYPE_CONST, X264_PART_I8X8, INT_MIN, INT_MAX, V|E, "partitions"}, | |
721 {"partp4x4", NULL, 0, FF_OPT_TYPE_CONST, X264_PART_P4X4, INT_MIN, INT_MAX, V|E, "partitions"}, | |
722 {"partp8x8", NULL, 0, FF_OPT_TYPE_CONST, X264_PART_P8X8, INT_MIN, INT_MAX, V|E, "partitions"}, | |
723 {"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
|
724 {"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 | 725 {"mv0_threshold", NULL, OFFSET(mv0_threshold), FF_OPT_TYPE_INT, 256, 0, INT_MAX, V|E}, |
3305 | 726 {"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
|
727 {"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
|
728 {"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
|
729 {"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
|
730 {"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
|
731 {"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
|
732 {"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
|
733 {"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
|
734 {"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
|
735 {"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
|
736 {"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
|
737 {"drop_frame_timecode", NULL, 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_DROP_FRAME_TIMECODE, INT_MIN, INT_MAX, V|E, "flags2"}, |
4621 | 738 {"non_linear_q", "use non linear quantizer", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_NON_LINEAR_QUANT, INT_MIN, INT_MAX, V|E, "flags2"}, |
5576
1a92e129a679
Add request_channels member to AVCodecContext so we now have a proper
reimar
parents:
5548
diff
changeset
|
739 {"request_channels", "set desired number of audio channels", OFFSET(request_channels), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, A|D}, |
6047
2f9c17454842
Add option for user to scale the amount of dynamic range compression which is
jbr
parents:
6012
diff
changeset
|
740 {"drc_scale", "percentage of dynamic range compression to apply", OFFSET(drc_scale), FF_OPT_TYPE_FLOAT, 1.0, 0.0, 1.0, A|D}, |
6346
11a44fc273a5
Add 'reservoir' flag to lavc's flags2 controlling whether or not codes may
andoma
parents:
6318
diff
changeset
|
741 {"reservoir", "use bit reservoir", 0, FF_OPT_TYPE_CONST, CODEC_FLAG2_BIT_RESERVOIR, INT_MIN, INT_MAX, A|E, "flags2"}, |
7721 | 742 {"bits_per_raw_sample", NULL, OFFSET(bits_per_raw_sample), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX}, |
2862 | 743 {NULL}, |
744 }; | |
745 | |
2873 | 746 #undef A |
747 #undef V | |
3688
c63b9bb49532
undefines a few temporary defines which were not undefined after their usage.
gpoirier
parents:
3666
diff
changeset
|
748 #undef S |
c63b9bb49532
undefines a few temporary defines which were not undefined after their usage.
gpoirier
parents:
3666
diff
changeset
|
749 #undef E |
c63b9bb49532
undefines a few temporary defines which were not undefined after their usage.
gpoirier
parents:
3666
diff
changeset
|
750 #undef D |
c63b9bb49532
undefines a few temporary defines which were not undefined after their usage.
gpoirier
parents:
3666
diff
changeset
|
751 #undef DEFAULT |
2873 | 752 |
6464
0c3cc1d7a0b3
Make av_class a pointer to a const AVClass. Addresses one warning in
takis
parents:
6456
diff
changeset
|
753 static const AVClass av_codec_context_class = { "AVCodecContext", context_to_name, options }; |
1856 | 754 |
4630
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
755 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
|
756 int flags=0; |
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
757 memset(s, 0, sizeof(AVCodecContext)); |
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
758 |
1856 | 759 s->av_class= &av_codec_context_class; |
3702 | 760 |
5356 | 761 s->codec_type = codec_type; |
4630
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
762 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
|
763 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
|
764 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
|
765 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
|
766 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
|
767 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
|
768 av_opt_set_defaults2(s, flags, flags); |
3702 | 769 |
2637 | 770 s->time_base= (AVRational){0,1}; |
903 | 771 s->get_buffer= avcodec_default_get_buffer; |
772 s->release_buffer= avcodec_default_release_buffer; | |
998 | 773 s->get_format= avcodec_default_get_format; |
1799 | 774 s->execute= avcodec_default_execute; |
1548 | 775 s->sample_aspect_ratio= (AVRational){0,1}; |
2635 | 776 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
|
777 s->sample_fmt= SAMPLE_FMT_S16; // FIXME: set to NONE |
2967 | 778 |
1585
6b224ca24033
revised palette API, courtesy of Roberto Togni (rtogni at freemail.it)
melanson
parents:
1582
diff
changeset
|
779 s->palctrl = NULL; |
1630 | 780 s->reget_buffer= avcodec_default_reget_buffer; |
681 | 781 } |
782 | |
4630
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
783 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
|
784 AVCodecContext *avctx= av_malloc(sizeof(AVCodecContext)); |
2967 | 785 |
681 | 786 if(avctx==NULL) return NULL; |
2967 | 787 |
4630
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
788 avcodec_get_context_defaults2(avctx, codec_type); |
2967 | 789 |
681 | 790 return avctx; |
791 } | |
792 | |
4630
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
793 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
|
794 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
|
795 } |
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
796 |
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
797 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
|
798 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
|
799 } |
1416371d4a6c
add avcodec_get_context_defaults2() / avcodec_alloc_context2() which take CodecType as an additional parameter
michael
parents:
4625
diff
changeset
|
800 |
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
801 void avcodec_get_frame_defaults(AVFrame *pic){ |
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
802 memset(pic, 0, sizeof(AVFrame)); |
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
803 |
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
804 pic->pts= AV_NOPTS_VALUE; |
2488 | 805 pic->key_frame= 1; |
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
806 } |
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
807 |
925 | 808 AVFrame *avcodec_alloc_frame(void){ |
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
809 AVFrame *pic= av_malloc(sizeof(AVFrame)); |
2967 | 810 |
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
811 if(pic==NULL) return NULL; |
2967 | 812 |
1831
cd2d7fcfab7a
use AVFrame.pts=AV_NOPTS_VALUE instead of AVFrame.pts=0
michael
parents:
1823
diff
changeset
|
813 avcodec_get_frame_defaults(pic); |
2967 | 814 |
903 | 815 return pic; |
816 } | |
817 | |
5542
b0a566346fb1
Add attribute that forces alignment of stack to functions that need it.
ramiro
parents:
5537
diff
changeset
|
818 int attribute_align_arg avcodec_open(AVCodecContext *avctx, AVCodec *codec) |
0 | 819 { |
2806 | 820 int ret= -1; |
2967 | 821 |
2806 | 822 entangled_thread_counter++; |
823 if(entangled_thread_counter != 1){ | |
824 av_log(avctx, AV_LOG_ERROR, "insufficient thread locking around avcodec_open/close()\n"); | |
825 goto end; | |
826 } | |
0 | 827 |
6069
3670c9e7ff4d
Check for avcodec_open codec parameter == NULL and return error in that case
reimar
parents:
6047
diff
changeset
|
828 if(avctx->codec || !codec) |
2806 | 829 goto end; |
1456
670fca257a69
detect avcodec_open() on an already opened AVCodecContext
michaelni
parents:
1455
diff
changeset
|
830 |
374
02147e22f8c8
* Don't allocate 0 bytes of memory. It upsets electricFence!
philipjsg
parents:
362
diff
changeset
|
831 if (codec->priv_data_size > 0) { |
02147e22f8c8
* Don't allocate 0 bytes of memory. It upsets electricFence!
philipjsg
parents:
362
diff
changeset
|
832 avctx->priv_data = av_mallocz(codec->priv_data_size); |
5382
7f96f6e16f81
Return AVERROR(ENOMEM) on memory allocation failure of avcodec_open.
takis
parents:
5356
diff
changeset
|
833 if (!avctx->priv_data) { |
7f96f6e16f81
Return AVERROR(ENOMEM) on memory allocation failure of avcodec_open.
takis
parents:
5356
diff
changeset
|
834 ret = AVERROR(ENOMEM); |
2806 | 835 goto end; |
5382
7f96f6e16f81
Return AVERROR(ENOMEM) on memory allocation failure of avcodec_open.
takis
parents:
5356
diff
changeset
|
836 } |
374
02147e22f8c8
* Don't allocate 0 bytes of memory. It upsets electricFence!
philipjsg
parents:
362
diff
changeset
|
837 } else { |
02147e22f8c8
* Don't allocate 0 bytes of memory. It upsets electricFence!
philipjsg
parents:
362
diff
changeset
|
838 avctx->priv_data = NULL; |
02147e22f8c8
* Don't allocate 0 bytes of memory. It upsets electricFence!
philipjsg
parents:
362
diff
changeset
|
839 } |
2270 | 840 |
841 if(avctx->coded_width && avctx->coded_height) | |
842 avcodec_set_dimensions(avctx, avctx->coded_width, avctx->coded_height); | |
843 else if(avctx->width && avctx->height) | |
844 avcodec_set_dimensions(avctx, avctx->width, avctx->height); | |
845 | |
2422 | 846 if((avctx->coded_width||avctx->coded_height) && avcodec_check_dimensions(avctx,avctx->coded_width,avctx->coded_height)){ |
847 av_freep(&avctx->priv_data); | |
5383
8a28860d54ba
Return AVERROR(EINVAL) when invalid width and/or height are specified to
takis
parents:
5382
diff
changeset
|
848 ret = AVERROR(EINVAL); |
2806 | 849 goto end; |
2422 | 850 } |
851 | |
3159 | 852 avctx->codec = codec; |
853 avctx->codec_id = codec->id; | |
854 avctx->frame_number = 0; | |
4762 | 855 if(avctx->codec->init){ |
4763 | 856 ret = avctx->codec->init(avctx); |
857 if (ret < 0) { | |
858 av_freep(&avctx->priv_data); | |
859 avctx->codec= NULL; | |
860 goto end; | |
861 } | |
4762 | 862 } |
2806 | 863 ret=0; |
864 end: | |
865 entangled_thread_counter--; | |
866 return ret; | |
0 | 867 } |
868 | |
5542
b0a566346fb1
Add attribute that forces alignment of stack to functions that need it.
ramiro
parents:
5537
diff
changeset
|
869 int attribute_align_arg avcodec_encode_audio(AVCodecContext *avctx, uint8_t *buf, int buf_size, |
0 | 870 const short *samples) |
871 { | |
2422 | 872 if(buf_size < FF_MIN_BUFFER_SIZE && 0){ |
4526 | 873 av_log(avctx, AV_LOG_ERROR, "buffer smaller than minimum size\n"); |
2422 | 874 return -1; |
875 } | |
2091 | 876 if((avctx->codec->capabilities & CODEC_CAP_DELAY) || samples){ |
877 int ret = avctx->codec->encode(avctx, buf, buf_size, (void *)samples); | |
878 avctx->frame_number++; | |
879 return ret; | |
880 }else | |
881 return 0; | |
0 | 882 } |
883 | |
5542
b0a566346fb1
Add attribute that forces alignment of stack to functions that need it.
ramiro
parents:
5537
diff
changeset
|
884 int attribute_align_arg avcodec_encode_video(AVCodecContext *avctx, uint8_t *buf, int buf_size, |
925 | 885 const AVFrame *pict) |
0 | 886 { |
2422 | 887 if(buf_size < FF_MIN_BUFFER_SIZE){ |
4526 | 888 av_log(avctx, AV_LOG_ERROR, "buffer smaller than minimum size\n"); |
2422 | 889 return -1; |
890 } | |
891 if(avcodec_check_dimensions(avctx,avctx->width,avctx->height)) | |
892 return -1; | |
2091 | 893 if((avctx->codec->capabilities & CODEC_CAP_DELAY) || pict){ |
894 int ret = avctx->codec->encode(avctx, buf, buf_size, (void *)pict); | |
895 avctx->frame_number++; | |
2764 | 896 emms_c(); //needed to avoid an emms_c() call before every return; |
2967 | 897 |
2091 | 898 return ret; |
899 }else | |
900 return 0; | |
0 | 901 } |
902 | |
2967 | 903 int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, |
2756 | 904 const AVSubtitle *sub) |
905 { | |
906 int ret; | |
907 ret = avctx->codec->encode(avctx, buf, buf_size, (void *)sub); | |
908 avctx->frame_number++; | |
909 return ret; | |
910 } | |
911 | |
5542
b0a566346fb1
Add attribute that forces alignment of stack to functions that need it.
ramiro
parents:
5537
diff
changeset
|
912 int attribute_align_arg avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture, |
0 | 913 int *got_picture_ptr, |
6318
73c09e922744
Make avcodec_decode_* functions take const input buffers.
michael
parents:
6219
diff
changeset
|
914 const uint8_t *buf, int buf_size) |
0 | 915 { |
916 int ret; | |
2967 | 917 |
2028 | 918 *got_picture_ptr= 0; |
2422 | 919 if((avctx->coded_width||avctx->coded_height) && avcodec_check_dimensions(avctx,avctx->coded_width,avctx->coded_height)) |
920 return -1; | |
2453 | 921 if((avctx->codec->capabilities & CODEC_CAP_DELAY) || buf_size){ |
2967 | 922 ret = avctx->codec->decode(avctx, picture, got_picture_ptr, |
2453 | 923 buf, buf_size); |
814 | 924 |
2764 | 925 emms_c(); //needed to avoid an emms_c() call before every return; |
2967 | 926 |
927 if (*got_picture_ptr) | |
2453 | 928 avctx->frame_number++; |
929 }else | |
930 ret= 0; | |
931 | |
0 | 932 return ret; |
933 } | |
934 | |
5542
b0a566346fb1
Add attribute that forces alignment of stack to functions that need it.
ramiro
parents:
5537
diff
changeset
|
935 int attribute_align_arg avcodec_decode_audio2(AVCodecContext *avctx, int16_t *samples, |
0 | 936 int *frame_size_ptr, |
6318
73c09e922744
Make avcodec_decode_* functions take const input buffers.
michael
parents:
6219
diff
changeset
|
937 const uint8_t *buf, int buf_size) |
0 | 938 { |
939 int ret; | |
940 | |
2791 | 941 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
|
942 //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
|
943 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
|
944 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
|
945 return -1; |
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
946 } |
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
947 if(*frame_size_ptr < FF_MIN_BUFFER_SIZE || |
5707
c46509aca422
Remove check for input buffer size as it does not guarantee that
kostya
parents:
5706
diff
changeset
|
948 *frame_size_ptr < avctx->channels * avctx->frame_size * sizeof(int16_t)){ |
4578
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
949 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
|
950 return -1; |
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
951 } |
006563b9ab27
dont check buffer size if the decode function wont be called at all
michael
parents:
4577
diff
changeset
|
952 |
2967 | 953 ret = avctx->codec->decode(avctx, samples, frame_size_ptr, |
2791 | 954 buf, buf_size); |
955 avctx->frame_number++; | |
4351 | 956 }else{ |
2791 | 957 ret= 0; |
4351 | 958 *frame_size_ptr=0; |
959 } | |
0 | 960 return ret; |
961 } | |
962 | |
2756 | 963 int avcodec_decode_subtitle(AVCodecContext *avctx, AVSubtitle *sub, |
964 int *got_sub_ptr, | |
965 const uint8_t *buf, int buf_size) | |
966 { | |
967 int ret; | |
968 | |
969 *got_sub_ptr = 0; | |
2967 | 970 ret = avctx->codec->decode(avctx, sub, got_sub_ptr, |
6219
a0a645626940
one "cast discards qualifiers from pointer target type" less
michael
parents:
6184
diff
changeset
|
971 buf, buf_size); |
2756 | 972 if (*got_sub_ptr) |
973 avctx->frame_number++; | |
974 return ret; | |
975 } | |
976 | |
0 | 977 int avcodec_close(AVCodecContext *avctx) |
978 { | |
2806 | 979 entangled_thread_counter++; |
980 if(entangled_thread_counter != 1){ | |
981 av_log(avctx, AV_LOG_ERROR, "insufficient thread locking around avcodec_open/close()\n"); | |
982 entangled_thread_counter--; | |
983 return -1; | |
984 } | |
985 | |
5234 | 986 if (ENABLE_THREADS && avctx->thread_opaque) |
987 avcodec_thread_free(avctx); | |
0 | 988 if (avctx->codec->close) |
989 avctx->codec->close(avctx); | |
1994 | 990 avcodec_default_free_buffers(avctx); |
394 | 991 av_freep(&avctx->priv_data); |
0 | 992 avctx->codec = NULL; |
2806 | 993 entangled_thread_counter--; |
0 | 994 return 0; |
995 } | |
996 | |
997 AVCodec *avcodec_find_encoder(enum CodecID id) | |
998 { | |
999 AVCodec *p; | |
1000 p = first_avcodec; | |
1001 while (p) { | |
1002 if (p->encode != NULL && p->id == id) | |
1003 return p; | |
1004 p = p->next; | |
1005 } | |
1006 return NULL; | |
1007 } | |
1008 | |
177 | 1009 AVCodec *avcodec_find_encoder_by_name(const char *name) |
1010 { | |
1011 AVCodec *p; | |
1012 p = first_avcodec; | |
1013 while (p) { | |
1014 if (p->encode != NULL && strcmp(name,p->name) == 0) | |
1015 return p; | |
1016 p = p->next; | |
1017 } | |
1018 return NULL; | |
1019 } | |
1020 | |
0 | 1021 AVCodec *avcodec_find_decoder(enum CodecID id) |
1022 { | |
1023 AVCodec *p; | |
1024 p = first_avcodec; | |
1025 while (p) { | |
1026 if (p->decode != NULL && p->id == id) | |
1027 return p; | |
1028 p = p->next; | |
1029 } | |
1030 return NULL; | |
1031 } | |
1032 | |
1033 AVCodec *avcodec_find_decoder_by_name(const char *name) | |
1034 { | |
1035 AVCodec *p; | |
1036 p = first_avcodec; | |
1037 while (p) { | |
1038 if (p->decode != NULL && strcmp(name,p->name) == 0) | |
1039 return p; | |
1040 p = p->next; | |
1041 } | |
1042 return NULL; | |
1043 } | |
1044 | |
1045 void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode) | |
1046 { | |
1047 const char *codec_name; | |
1048 AVCodec *p; | |
1049 char buf1[32]; | |
337 | 1050 char channels_str[100]; |
92 | 1051 int bitrate; |
5837 | 1052 AVRational display_aspect_ratio; |
0 | 1053 |
1054 if (encode) | |
1055 p = avcodec_find_encoder(enc->codec_id); | |
1056 else | |
1057 p = avcodec_find_decoder(enc->codec_id); | |
1058 | |
1059 if (p) { | |
1060 codec_name = p->name; | |
1449
7fbe89a76b73
update sub_id in mpegaudio decoding (might need same method as MPEG2VIDEO too ?)
bellard
parents:
1396
diff
changeset
|
1061 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
|
1062 if (enc->sub_id == 2) |
7fbe89a76b73
update sub_id in mpegaudio decoding (might need same method as MPEG2VIDEO too ?)
bellard
parents:
1396
diff
changeset
|
1063 codec_name = "mp2"; |
7fbe89a76b73
update sub_id in mpegaudio decoding (might need same method as MPEG2VIDEO too ?)
bellard
parents:
1396
diff
changeset
|
1064 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
|
1065 codec_name = "mp1"; |
7fbe89a76b73
update sub_id in mpegaudio decoding (might need same method as MPEG2VIDEO too ?)
bellard
parents:
1396
diff
changeset
|
1066 } |
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
|
1067 } 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
|
1068 /* 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
|
1069 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
|
1070 codec_name = "mpeg2ts"; |
0 | 1071 } else if (enc->codec_name[0] != '\0') { |
1072 codec_name = enc->codec_name; | |
1073 } else { | |
1074 /* output avi tags */ | |
2967 | 1075 if( isprint(enc->codec_tag&0xFF) && isprint((enc->codec_tag>>8)&0xFF) |
2856 | 1076 && isprint((enc->codec_tag>>16)&0xFF) && isprint((enc->codec_tag>>24)&0xFF)){ |
2967 | 1077 snprintf(buf1, sizeof(buf1), "%c%c%c%c / 0x%04X", |
0 | 1078 enc->codec_tag & 0xff, |
1079 (enc->codec_tag >> 8) & 0xff, | |
1080 (enc->codec_tag >> 16) & 0xff, | |
2856 | 1081 (enc->codec_tag >> 24) & 0xff, |
1082 enc->codec_tag); | |
0 | 1083 } else { |
1084 snprintf(buf1, sizeof(buf1), "0x%04x", enc->codec_tag); | |
1085 } | |
1086 codec_name = buf1; | |
1087 } | |
1088 | |
1089 switch(enc->codec_type) { | |
1090 case CODEC_TYPE_VIDEO: | |
1091 snprintf(buf, buf_size, | |
1092 "Video: %s%s", | |
1389 | 1093 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
|
1094 if (enc->pix_fmt != PIX_FMT_NONE) { |
55 | 1095 snprintf(buf + strlen(buf), buf_size - strlen(buf), |
1096 ", %s", | |
988
001b7d3045e5
moved avcodec_get_chroma_sub_sample() to imgconvert.c
bellard
parents:
963
diff
changeset
|
1097 avcodec_get_pix_fmt_name(enc->pix_fmt)); |
55 | 1098 } |
0 | 1099 if (enc->width) { |
1100 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
|
1101 ", %dx%d", |
a332778dfa06
print more time_base fps stuff if av_log level is at debug or above
michael
parents:
2881
diff
changeset
|
1102 enc->width, enc->height); |
6466 | 1103 if (enc->sample_aspect_ratio.num) { |
6467 | 1104 av_reduce(&display_aspect_ratio.num, &display_aspect_ratio.den, |
1105 enc->width*enc->sample_aspect_ratio.num, | |
1106 enc->height*enc->sample_aspect_ratio.den, | |
1107 1024*1024); | |
1108 snprintf(buf + strlen(buf), buf_size - strlen(buf), | |
1109 " [PAR %d:%d DAR %d:%d]", | |
1110 enc->sample_aspect_ratio.num, enc->sample_aspect_ratio.den, | |
1111 display_aspect_ratio.num, display_aspect_ratio.den); | |
6466 | 1112 } |
6012 | 1113 if(av_log_get_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
|
1114 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
|
1115 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
|
1116 ", %d/%d", |
a332778dfa06
print more time_base fps stuff if av_log level is at debug or above
michael
parents:
2881
diff
changeset
|
1117 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
|
1118 } |
0 | 1119 } |
741 | 1120 if (encode) { |
1121 snprintf(buf + strlen(buf), buf_size - strlen(buf), | |
1122 ", q=%d-%d", enc->qmin, enc->qmax); | |
1123 } | |
92 | 1124 bitrate = enc->bit_rate; |
0 | 1125 break; |
1126 case CODEC_TYPE_AUDIO: | |
1127 snprintf(buf, buf_size, | |
1128 "Audio: %s", | |
1129 codec_name); | |
318
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1130 switch (enc->channels) { |
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1131 case 1: |
337 | 1132 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
|
1133 break; |
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1134 case 2: |
337 | 1135 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
|
1136 break; |
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1137 case 6: |
337 | 1138 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
|
1139 break; |
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1140 default: |
2423 | 1141 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
|
1142 break; |
21697f35a9ca
- Fixed AC3 decoding for 5:1 AC3 streams. Now when calling av_audio_decode for
pulento
parents:
315
diff
changeset
|
1143 } |
0 | 1144 if (enc->sample_rate) { |
1145 snprintf(buf + strlen(buf), buf_size - strlen(buf), | |
1146 ", %d Hz, %s", | |
1147 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
|
1148 channels_str); |
0 | 1149 } |
7454
bb5e8cae1d71
Write sample format description within avcodec_string()
pross
parents:
7409
diff
changeset
|
1150 if (enc->sample_fmt != SAMPLE_FMT_NONE) { |
bb5e8cae1d71
Write sample format description within avcodec_string()
pross
parents:
7409
diff
changeset
|
1151 snprintf(buf + strlen(buf), buf_size - strlen(buf), |
bb5e8cae1d71
Write sample format description within avcodec_string()
pross
parents:
7409
diff
changeset
|
1152 ", %s", avcodec_get_sample_fmt_name(enc->sample_fmt)); |
bb5e8cae1d71
Write sample format description within avcodec_string()
pross
parents:
7409
diff
changeset
|
1153 } |
2967 | 1154 |
92 | 1155 /* for PCM codecs, compute bitrate directly */ |
1156 switch(enc->codec_id) { | |
7613 | 1157 case CODEC_ID_PCM_F64BE: |
1158 case CODEC_ID_PCM_F64LE: | |
1159 bitrate = enc->sample_rate * enc->channels * 64; | |
1160 break; | |
2852
6f7428adc6ad
Support de-/encoding of 24 and 32 bit PCM (from and to internal 16 bit).
reimar
parents:
2840
diff
changeset
|
1161 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
|
1162 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
|
1163 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
|
1164 case CODEC_ID_PCM_U32BE: |
7409
21770337ff2d
add CODEC_ID_PCM_F32BE (32-bit floating point PCM big endian decoder)
pross
parents:
7406
diff
changeset
|
1165 case CODEC_ID_PCM_F32BE: |
7613 | 1166 case CODEC_ID_PCM_F32LE: |
2852
6f7428adc6ad
Support de-/encoding of 24 and 32 bit PCM (from and to internal 16 bit).
reimar
parents:
2840
diff
changeset
|
1167 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
|
1168 break; |
6f7428adc6ad
Support de-/encoding of 24 and 32 bit PCM (from and to internal 16 bit).
reimar
parents:
2840
diff
changeset
|
1169 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
|
1170 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
|
1171 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
|
1172 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
|
1173 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
|
1174 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
|
1175 break; |
92 | 1176 case CODEC_ID_PCM_S16LE: |
1177 case CODEC_ID_PCM_S16BE: | |
5940
d63186919b60
add pcm_s16le_planar support for electronicarts files
aurel
parents:
5837
diff
changeset
|
1178 case CODEC_ID_PCM_S16LE_PLANAR: |
92 | 1179 case CODEC_ID_PCM_U16LE: |
1180 case CODEC_ID_PCM_U16BE: | |
94 | 1181 bitrate = enc->sample_rate * enc->channels * 16; |
92 | 1182 break; |
1183 case CODEC_ID_PCM_S8: | |
1184 case CODEC_ID_PCM_U8: | |
1185 case CODEC_ID_PCM_ALAW: | |
1186 case CODEC_ID_PCM_MULAW: | |
7475
eaf0ebba81d7
Make avcodec_string() and av_get_bits_per_sample() report the sample size for CODEC_ID_PCM_ZORK
pross
parents:
7454
diff
changeset
|
1187 case CODEC_ID_PCM_ZORK: |
94 | 1188 bitrate = enc->sample_rate * enc->channels * 8; |
92 | 1189 break; |
1190 default: | |
1191 bitrate = enc->bit_rate; | |
1192 break; | |
1193 } | |
0 | 1194 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
|
1195 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
|
1196 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
|
1197 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
|
1198 break; |
2756 | 1199 case CODEC_TYPE_SUBTITLE: |
1200 snprintf(buf, buf_size, "Subtitle: %s", codec_name); | |
1201 bitrate = enc->bit_rate; | |
1202 break; | |
6184 | 1203 case CODEC_TYPE_ATTACHMENT: |
1204 snprintf(buf, buf_size, "Attachment: %s", codec_name); | |
1205 bitrate = enc->bit_rate; | |
1206 break; | |
0 | 1207 default: |
2281 | 1208 snprintf(buf, buf_size, "Invalid Codec type %d", enc->codec_type); |
1209 return; | |
0 | 1210 } |
741 | 1211 if (encode) { |
1212 if (enc->flags & CODEC_FLAG_PASS1) | |
1213 snprintf(buf + strlen(buf), buf_size - strlen(buf), | |
1214 ", pass 1"); | |
1215 if (enc->flags & CODEC_FLAG_PASS2) | |
1216 snprintf(buf + strlen(buf), buf_size - strlen(buf), | |
1217 ", pass 2"); | |
1218 } | |
92 | 1219 if (bitrate != 0) { |
2967 | 1220 snprintf(buf + strlen(buf), buf_size - strlen(buf), |
92 | 1221 ", %d kb/s", bitrate / 1000); |
0 | 1222 } |
1223 } | |
1224 | |
362 | 1225 unsigned avcodec_version( void ) |
1226 { | |
1227 return LIBAVCODEC_VERSION_INT; | |
1228 } | |
55 | 1229 |
0 | 1230 void avcodec_init(void) |
1231 { | |
6350 | 1232 static int initialized = 0; |
303
9a931fd8d06c
multiple init bugfix (patch by Alex Beregszaszi <alex@naxine.org>)
michaelni
parents:
267
diff
changeset
|
1233 |
6350 | 1234 if (initialized != 0) |
2979 | 1235 return; |
6350 | 1236 initialized = 1; |
303
9a931fd8d06c
multiple init bugfix (patch by Alex Beregszaszi <alex@naxine.org>)
michaelni
parents:
267
diff
changeset
|
1237 |
4197 | 1238 dsputil_static_init(); |
0 | 1239 } |
1240 | |
341 | 1241 void avcodec_flush_buffers(AVCodecContext *avctx) |
1242 { | |
1368 | 1243 if(avctx->codec->flush) |
1244 avctx->codec->flush(avctx); | |
341 | 1245 } |
1246 | |
2231 | 1247 void avcodec_default_free_buffers(AVCodecContext *s){ |
1214 | 1248 int i, j; |
1249 | |
1250 if(s->internal_buffer==NULL) return; | |
2967 | 1251 |
1214 | 1252 for(i=0; i<INTERNAL_BUFFER_SIZE; i++){ |
1253 InternalBuffer *buf= &((InternalBuffer*)s->internal_buffer)[i]; | |
1254 for(j=0; j<4; j++){ | |
1255 av_freep(&buf->base[j]); | |
1256 buf->data[j]= NULL; | |
1257 } | |
1258 } | |
1259 av_freep(&s->internal_buffer); | |
2967 | 1260 |
1214 | 1261 s->internal_buffer_count=0; |
1262 } | |
1263 | |
1264 | 1264 char av_get_pict_type_char(int pict_type){ |
1265 switch(pict_type){ | |
6450 | 1266 case FF_I_TYPE: return 'I'; |
1267 case FF_P_TYPE: return 'P'; | |
1268 case FF_B_TYPE: return 'B'; | |
1269 case FF_S_TYPE: return 'S'; | |
1270 case FF_SI_TYPE:return 'i'; | |
1271 case FF_SP_TYPE:return 'p'; | |
6456 | 1272 case FF_BI_TYPE:return 'b'; |
6455 | 1273 default: return '?'; |
1264 | 1274 } |
1275 } | |
1276 | |
3433 | 1277 int av_get_bits_per_sample(enum CodecID codec_id){ |
1278 switch(codec_id){ | |
3435
ffa9e863f3be
simplify the voc demuxer using av_get_bits_per_sample()
aurel
parents:
3433
diff
changeset
|
1279 case CODEC_ID_ADPCM_SBPRO_2: |
3438 | 1280 return 2; |
3435
ffa9e863f3be
simplify the voc demuxer using av_get_bits_per_sample()
aurel
parents:
3433
diff
changeset
|
1281 case CODEC_ID_ADPCM_SBPRO_3: |
3438 | 1282 return 3; |
3435
ffa9e863f3be
simplify the voc demuxer using av_get_bits_per_sample()
aurel
parents:
3433
diff
changeset
|
1283 case CODEC_ID_ADPCM_SBPRO_4: |
3438 | 1284 case CODEC_ID_ADPCM_CT: |
1285 return 4; | |
3433 | 1286 case CODEC_ID_PCM_ALAW: |
1287 case CODEC_ID_PCM_MULAW: | |
1288 case CODEC_ID_PCM_S8: | |
1289 case CODEC_ID_PCM_U8: | |
7475
eaf0ebba81d7
Make avcodec_string() and av_get_bits_per_sample() report the sample size for CODEC_ID_PCM_ZORK
pross
parents:
7454
diff
changeset
|
1290 case CODEC_ID_PCM_ZORK: |
3433 | 1291 return 8; |
1292 case CODEC_ID_PCM_S16BE: | |
1293 case CODEC_ID_PCM_S16LE: | |
5940
d63186919b60
add pcm_s16le_planar support for electronicarts files
aurel
parents:
5837
diff
changeset
|
1294 case CODEC_ID_PCM_S16LE_PLANAR: |
3433 | 1295 case CODEC_ID_PCM_U16BE: |
1296 case CODEC_ID_PCM_U16LE: | |
1297 return 16; | |
1298 case CODEC_ID_PCM_S24DAUD: | |
1299 case CODEC_ID_PCM_S24BE: | |
1300 case CODEC_ID_PCM_S24LE: | |
1301 case CODEC_ID_PCM_U24BE: | |
1302 case CODEC_ID_PCM_U24LE: | |
1303 return 24; | |
1304 case CODEC_ID_PCM_S32BE: | |
1305 case CODEC_ID_PCM_S32LE: | |
1306 case CODEC_ID_PCM_U32BE: | |
1307 case CODEC_ID_PCM_U32LE: | |
7409
21770337ff2d
add CODEC_ID_PCM_F32BE (32-bit floating point PCM big endian decoder)
pross
parents:
7406
diff
changeset
|
1308 case CODEC_ID_PCM_F32BE: |
7613 | 1309 case CODEC_ID_PCM_F32LE: |
3433 | 1310 return 32; |
7613 | 1311 case CODEC_ID_PCM_F64BE: |
1312 case CODEC_ID_PCM_F64LE: | |
1313 return 64; | |
3433 | 1314 default: |
1315 return 0; | |
1316 } | |
1317 } | |
1318 | |
5537 | 1319 int av_get_bits_per_sample_format(enum SampleFormat sample_fmt) { |
1320 switch (sample_fmt) { | |
1321 case SAMPLE_FMT_U8: | |
1322 return 8; | |
1323 case SAMPLE_FMT_S16: | |
1324 return 16; | |
1325 case SAMPLE_FMT_S32: | |
1326 case SAMPLE_FMT_FLT: | |
1327 return 32; | |
7612 | 1328 case SAMPLE_FMT_DBL: |
1329 return 64; | |
5537 | 1330 default: |
1331 return 0; | |
1332 } | |
1333 } | |
1334 | |
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
|
1335 #if !defined(HAVE_THREADS) |
2013
85e547a18d87
dummy avcodec_thread_init() to avoid linking issues
michael
parents:
2002
diff
changeset
|
1336 int avcodec_thread_init(AVCodecContext *s, int thread_count){ |
85e547a18d87
dummy avcodec_thread_init() to avoid linking issues
michael
parents:
2002
diff
changeset
|
1337 return -1; |
85e547a18d87
dummy avcodec_thread_init() to avoid linking issues
michael
parents:
2002
diff
changeset
|
1338 } |
85e547a18d87
dummy avcodec_thread_init() to avoid linking issues
michael
parents:
2002
diff
changeset
|
1339 #endif |
2676 | 1340 |
1341 unsigned int av_xiphlacing(unsigned char *s, unsigned int v) | |
1342 { | |
1343 unsigned int n = 0; | |
1344 | |
1345 while(v >= 0xff) { | |
1346 *s++ = 0xff; | |
1347 v -= 0xff; | |
1348 n++; | |
1349 } | |
1350 *s = v; | |
1351 n++; | |
1352 return n; | |
1353 } | |
3233
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1354 |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1355 /* 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
|
1356 * 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
|
1357 * *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
|
1358 * 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
|
1359 * and opened file name in **filename. */ |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1360 int av_tempfile(char *prefix, char **filename) { |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1361 int fd=-1; |
5284 | 1362 #if !defined(HAVE_MKSTEMP) |
3233
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1363 *filename = tempnam(".", prefix); |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1364 #else |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1365 size_t len = strlen(prefix) + 12; /* room for "/tmp/" and "XXXXXX\0" */ |
3372 | 1366 *filename = av_malloc(len); |
3233
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1367 #endif |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1368 /* -----common section-----*/ |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1369 if (*filename == NULL) { |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1370 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
|
1371 return -1; |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1372 } |
5284 | 1373 #if !defined(HAVE_MKSTEMP) |
5285 | 1374 fd = open(*filename, O_RDWR | O_BINARY | O_CREAT, 0444); |
3233
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1375 #else |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1376 snprintf(*filename, len, "/tmp/%sXXXXXX", prefix); |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1377 fd = mkstemp(*filename); |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1378 if (fd < 0) { |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1379 snprintf(*filename, len, "./%sXXXXXX", prefix); |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1380 fd = mkstemp(*filename); |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1381 } |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1382 #endif |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1383 /* -----common section-----*/ |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1384 if (fd < 0) { |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1385 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
|
1386 return -1; |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1387 } |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1388 return fd; /* success */ |
18af2f7788c6
- Add new file internal.h for common internal-use-only functions.
corey
parents:
3171
diff
changeset
|
1389 } |
5126
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1390 |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1391 typedef struct { |
5176
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1392 const char *abbr; |
5126
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1393 int width, height; |
5176
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1394 } VideoFrameSizeAbbr; |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1395 |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1396 typedef struct { |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1397 const char *abbr; |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1398 int rate_num, rate_den; |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1399 } VideoFrameRateAbbr; |
5126
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1400 |
7129 | 1401 static const VideoFrameSizeAbbr video_frame_size_abbrs[] = { |
5176
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1402 { "ntsc", 720, 480 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1403 { "pal", 720, 576 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1404 { "qntsc", 352, 240 }, /* VCD compliant NTSC */ |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1405 { "qpal", 352, 288 }, /* VCD compliant PAL */ |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1406 { "sntsc", 640, 480 }, /* square pixel NTSC */ |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1407 { "spal", 768, 576 }, /* square pixel PAL */ |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1408 { "film", 352, 240 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1409 { "ntsc-film", 352, 240 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1410 { "sqcif", 128, 96 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1411 { "qcif", 176, 144 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1412 { "cif", 352, 288 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1413 { "4cif", 704, 576 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1414 { "qqvga", 160, 120 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1415 { "qvga", 320, 240 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1416 { "vga", 640, 480 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1417 { "svga", 800, 600 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1418 { "xga", 1024, 768 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1419 { "uxga", 1600,1200 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1420 { "qxga", 2048,1536 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1421 { "sxga", 1280,1024 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1422 { "qsxga", 2560,2048 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1423 { "hsxga", 5120,4096 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1424 { "wvga", 852, 480 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1425 { "wxga", 1366, 768 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1426 { "wsxga", 1600,1024 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1427 { "wuxga", 1920,1200 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1428 { "woxga", 2560,1600 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1429 { "wqsxga", 3200,2048 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1430 { "wquxga", 3840,2400 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1431 { "whsxga", 6400,4096 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1432 { "whuxga", 7680,4800 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1433 { "cga", 320, 200 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1434 { "ega", 640, 350 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1435 { "hd480", 852, 480 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1436 { "hd720", 1280, 720 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1437 { "hd1080", 1920,1080 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1438 }; |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1439 |
7129 | 1440 static const VideoFrameRateAbbr video_frame_rate_abbrs[]= { |
5176
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1441 { "ntsc", 30000, 1001 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1442 { "pal", 25, 1 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1443 { "qntsc", 30000, 1001 }, /* VCD compliant NTSC */ |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1444 { "qpal", 25, 1 }, /* VCD compliant PAL */ |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1445 { "sntsc", 30000, 1001 }, /* square pixel NTSC */ |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1446 { "spal", 25, 1 }, /* square pixel PAL */ |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1447 { "film", 24, 1 }, |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1448 { "ntsc-film", 24000, 1001 }, |
5126
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1449 }; |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1450 |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1451 int av_parse_video_frame_size(int *width_ptr, int *height_ptr, const char *str) |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1452 { |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1453 int i; |
5176
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1454 int n = sizeof(video_frame_size_abbrs) / sizeof(VideoFrameSizeAbbr); |
5126
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1455 const char *p; |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1456 int frame_width = 0, frame_height = 0; |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1457 |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1458 for(i=0;i<n;i++) { |
5176
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1459 if (!strcmp(video_frame_size_abbrs[i].abbr, str)) { |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1460 frame_width = video_frame_size_abbrs[i].width; |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1461 frame_height = video_frame_size_abbrs[i].height; |
5126
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1462 break; |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1463 } |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1464 } |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1465 if (i == n) { |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1466 p = str; |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1467 frame_width = strtol(p, (char **)&p, 10); |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1468 if (*p) |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1469 p++; |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1470 frame_height = strtol(p, (char **)&p, 10); |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1471 } |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1472 if (frame_width <= 0 || frame_height <= 0) |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1473 return -1; |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1474 *width_ptr = frame_width; |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1475 *height_ptr = frame_height; |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1476 return 0; |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1477 } |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1478 |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1479 int av_parse_video_frame_rate(AVRational *frame_rate, const char *arg) |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1480 { |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1481 int i; |
5176
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1482 int n = sizeof(video_frame_rate_abbrs) / sizeof(VideoFrameRateAbbr); |
5126
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1483 char* cp; |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1484 |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1485 /* First, we check our abbreviation table */ |
5176
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1486 for (i = 0; i < n; ++i) |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1487 if (!strcmp(video_frame_rate_abbrs[i].abbr, arg)) { |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1488 frame_rate->num = video_frame_rate_abbrs[i].rate_num; |
82f7eaa32f46
split frame rate and frame size abbreviation into two structures
benoit
parents:
5127
diff
changeset
|
1489 frame_rate->den = video_frame_rate_abbrs[i].rate_den; |
5126
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1490 return 0; |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1491 } |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1492 |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1493 /* Then, we try to parse it as fraction */ |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1494 cp = strchr(arg, '/'); |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1495 if (!cp) |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1496 cp = strchr(arg, ':'); |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1497 if (cp) { |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1498 char* cpp; |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1499 frame_rate->num = strtol(arg, &cpp, 10); |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1500 if (cpp != arg || cpp == cp) |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1501 frame_rate->den = strtol(cp+1, &cpp, 10); |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1502 else |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1503 frame_rate->num = 0; |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1504 } |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1505 else { |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1506 /* Finally we give up and parse it as double */ |
7826 | 1507 AVRational time_base = av_d2q(strtod(arg, 0), 1001000); |
5126
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1508 frame_rate->den = time_base.den; |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1509 frame_rate->num = time_base.num; |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1510 } |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1511 if (!frame_rate->num || !frame_rate->den) |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1512 return -1; |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1513 else |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1514 return 0; |
7982b376b58a
Move the video size and rate abbreviations system from libavformat to libavcodec
benoit
parents:
4986
diff
changeset
|
1515 } |
7530
398636f16e7e
Add a generic function to lavc to log messages about missing features.
superdump
parents:
7475
diff
changeset
|
1516 |
398636f16e7e
Add a generic function to lavc to log messages about missing features.
superdump
parents:
7475
diff
changeset
|
1517 void av_log_missing_feature(void *avc, const char *feature, int want_sample) |
398636f16e7e
Add a generic function to lavc to log messages about missing features.
superdump
parents:
7475
diff
changeset
|
1518 { |
398636f16e7e
Add a generic function to lavc to log messages about missing features.
superdump
parents:
7475
diff
changeset
|
1519 av_log(avc, AV_LOG_WARNING, "%s not implemented. Update your FFmpeg " |
398636f16e7e
Add a generic function to lavc to log messages about missing features.
superdump
parents:
7475
diff
changeset
|
1520 "version to the newest one from SVN. If the problem still " |
398636f16e7e
Add a generic function to lavc to log messages about missing features.
superdump
parents:
7475
diff
changeset
|
1521 "occurs, it means that your file has a feature which has not " |
398636f16e7e
Add a generic function to lavc to log messages about missing features.
superdump
parents:
7475
diff
changeset
|
1522 "been implemented.", feature); |
398636f16e7e
Add a generic function to lavc to log messages about missing features.
superdump
parents:
7475
diff
changeset
|
1523 if(want_sample) |
398636f16e7e
Add a generic function to lavc to log messages about missing features.
superdump
parents:
7475
diff
changeset
|
1524 av_log(avc, AV_LOG_WARNING, " If you want to help, upload a sample " |
398636f16e7e
Add a generic function to lavc to log messages about missing features.
superdump
parents:
7475
diff
changeset
|
1525 "of this file to ftp://upload.mplayerhq.hu/MPlayer/incoming/ " |
398636f16e7e
Add a generic function to lavc to log messages about missing features.
superdump
parents:
7475
diff
changeset
|
1526 "and contact the FFmpeg-devel mailing list."); |
398636f16e7e
Add a generic function to lavc to log messages about missing features.
superdump
parents:
7475
diff
changeset
|
1527 av_log(avc, AV_LOG_WARNING, "\n"); |
398636f16e7e
Add a generic function to lavc to log messages about missing features.
superdump
parents:
7475
diff
changeset
|
1528 } |