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