FFmpeg
avcodec.c
Go to the documentation of this file.
1 /*
2  * AVCodecContext functions for libavcodec
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 /**
22  * @file
23  * AVCodecContext functions for libavcodec
24  */
25 
26 #include "config.h"
27 #include "libavutil/avassert.h"
28 #include "libavutil/avstring.h"
29 #include "libavutil/bprint.h"
30 #include "libavutil/imgutils.h"
31 #include "libavutil/mem.h"
32 #include "libavutil/opt.h"
33 #include "libavutil/thread.h"
34 #include "avcodec.h"
35 #include "decode.h"
36 #include "encode.h"
37 #include "frame_thread_encoder.h"
38 #include "internal.h"
39 #include "thread.h"
40 
41 #include "libavutil/ffversion.h"
42 const char av_codec_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
43 
44 unsigned avcodec_version(void)
45 {
50 
52 }
53 
54 const char *avcodec_configuration(void)
55 {
56  return FFMPEG_CONFIGURATION;
57 }
58 
59 const char *avcodec_license(void)
60 {
61 #define LICENSE_PREFIX "libavcodec license: "
62  return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
63 }
64 
65 int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2), void *arg, int *ret, int count, int size)
66 {
67  int i;
68 
69  for (i = 0; i < count; i++) {
70  int r = func(c, (char *)arg + i * size);
71  if (ret)
72  ret[i] = r;
73  }
74  emms_c();
75  return 0;
76 }
77 
78 int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int jobnr, int threadnr), void *arg, int *ret, int count)
79 {
80  int i;
81 
82  for (i = 0; i < count; i++) {
83  int r = func(c, arg, i, 0);
84  if (ret)
85  ret[i] = r;
86  }
87  emms_c();
88  return 0;
89 }
90 
92 
93 static void lock_avcodec(const AVCodec *codec)
94 {
95  if (!(codec->caps_internal & FF_CODEC_CAP_INIT_THREADSAFE) && codec->init)
97 }
98 
99 static void unlock_avcodec(const AVCodec *codec)
100 {
101  if (!(codec->caps_internal & FF_CODEC_CAP_INIT_THREADSAFE) && codec->init)
103 }
104 
106 {
107  int64_t bit_rate;
108  int bits_per_sample;
109 
110  switch (ctx->codec_type) {
111  case AVMEDIA_TYPE_VIDEO:
112  case AVMEDIA_TYPE_DATA:
115  bit_rate = ctx->bit_rate;
116  break;
117  case AVMEDIA_TYPE_AUDIO:
118  bits_per_sample = av_get_bits_per_sample(ctx->codec_id);
119  if (bits_per_sample) {
120  bit_rate = ctx->sample_rate * (int64_t)ctx->channels;
121  if (bit_rate > INT64_MAX / bits_per_sample) {
122  bit_rate = 0;
123  } else
124  bit_rate *= bits_per_sample;
125  } else
126  bit_rate = ctx->bit_rate;
127  break;
128  default:
129  bit_rate = 0;
130  break;
131  }
132  return bit_rate;
133 }
134 
135 int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options)
136 {
137  int ret = 0;
138  AVDictionary *tmp = NULL;
139  AVCodecInternal *avci;
140 
141  if (avcodec_is_open(avctx))
142  return 0;
143 
144  if (!codec && !avctx->codec) {
145  av_log(avctx, AV_LOG_ERROR, "No codec provided to avcodec_open2()\n");
146  return AVERROR(EINVAL);
147  }
148  if (codec && avctx->codec && codec != avctx->codec) {
149  av_log(avctx, AV_LOG_ERROR, "This AVCodecContext was allocated for %s, "
150  "but %s passed to avcodec_open2()\n", avctx->codec->name, codec->name);
151  return AVERROR(EINVAL);
152  }
153  if (!codec)
154  codec = avctx->codec;
155 
156  if ((avctx->codec_type == AVMEDIA_TYPE_UNKNOWN || avctx->codec_type == codec->type) &&
157  avctx->codec_id == AV_CODEC_ID_NONE) {
158  avctx->codec_type = codec->type;
159  avctx->codec_id = codec->id;
160  }
161  if (avctx->codec_id != codec->id || (avctx->codec_type != codec->type &&
162  avctx->codec_type != AVMEDIA_TYPE_ATTACHMENT)) {
163  av_log(avctx, AV_LOG_ERROR, "Codec type or id mismatches\n");
164  return AVERROR(EINVAL);
165  }
166  avctx->codec = codec;
167 
168  if (avctx->extradata_size < 0 || avctx->extradata_size >= FF_MAX_EXTRADATA_SIZE)
169  return AVERROR(EINVAL);
170 
171  if (options)
172  av_dict_copy(&tmp, *options, 0);
173 
174  lock_avcodec(codec);
175 
176  avci = av_mallocz(sizeof(*avci));
177  if (!avci) {
178  ret = AVERROR(ENOMEM);
179  goto end;
180  }
181  avctx->internal = avci;
182 
183  avci->buffer_frame = av_frame_alloc();
184  avci->buffer_pkt = av_packet_alloc();
185  avci->es.in_frame = av_frame_alloc();
186  avci->ds.in_pkt = av_packet_alloc();
188  avci->pkt_props = av_fifo_alloc(sizeof(*avci->last_pkt_props));
189  if (!avci->buffer_frame || !avci->buffer_pkt ||
190  !avci->es.in_frame || !avci->ds.in_pkt ||
191  !avci->last_pkt_props || !avci->pkt_props) {
192  ret = AVERROR(ENOMEM);
193  goto free_and_end;
194  }
195 
196  avci->skip_samples_multiplier = 1;
197 
198  if (codec->priv_data_size > 0) {
199  if (!avctx->priv_data) {
200  avctx->priv_data = av_mallocz(codec->priv_data_size);
201  if (!avctx->priv_data) {
202  ret = AVERROR(ENOMEM);
203  goto free_and_end;
204  }
205  if (codec->priv_class) {
206  *(const AVClass **)avctx->priv_data = codec->priv_class;
208  }
209  }
210  if (codec->priv_class && (ret = av_opt_set_dict(avctx->priv_data, &tmp)) < 0)
211  goto free_and_end;
212  } else {
213  avctx->priv_data = NULL;
214  }
215  if ((ret = av_opt_set_dict(avctx, &tmp)) < 0)
216  goto free_and_end;
217 
218  if (avctx->codec_whitelist && av_match_list(codec->name, avctx->codec_whitelist, ',') <= 0) {
219  av_log(avctx, AV_LOG_ERROR, "Codec (%s) not on whitelist \'%s\'\n", codec->name, avctx->codec_whitelist);
220  ret = AVERROR(EINVAL);
221  goto free_and_end;
222  }
223 
224  // only call ff_set_dimensions() for non H.264/VP6F/DXV codecs so as not to overwrite previously setup dimensions
225  if (!(avctx->coded_width && avctx->coded_height && avctx->width && avctx->height &&
226  (avctx->codec_id == AV_CODEC_ID_H264 || avctx->codec_id == AV_CODEC_ID_VP6F || avctx->codec_id == AV_CODEC_ID_DXV))) {
227  if (avctx->coded_width && avctx->coded_height)
228  ret = ff_set_dimensions(avctx, avctx->coded_width, avctx->coded_height);
229  else if (avctx->width && avctx->height)
230  ret = ff_set_dimensions(avctx, avctx->width, avctx->height);
231  if (ret < 0)
232  goto free_and_end;
233  }
234 
235  if ((avctx->coded_width || avctx->coded_height || avctx->width || avctx->height)
236  && ( av_image_check_size2(avctx->coded_width, avctx->coded_height, avctx->max_pixels, AV_PIX_FMT_NONE, 0, avctx) < 0
237  || av_image_check_size2(avctx->width, avctx->height, avctx->max_pixels, AV_PIX_FMT_NONE, 0, avctx) < 0)) {
238  av_log(avctx, AV_LOG_WARNING, "Ignoring invalid width/height values\n");
239  ff_set_dimensions(avctx, 0, 0);
240  }
241 
242  if (avctx->width > 0 && avctx->height > 0) {
243  if (av_image_check_sar(avctx->width, avctx->height,
244  avctx->sample_aspect_ratio) < 0) {
245  av_log(avctx, AV_LOG_WARNING, "ignoring invalid SAR: %u/%u\n",
246  avctx->sample_aspect_ratio.num,
247  avctx->sample_aspect_ratio.den);
248  avctx->sample_aspect_ratio = (AVRational){ 0, 1 };
249  }
250  }
251 
252  if (avctx->channels > FF_SANE_NB_CHANNELS || avctx->channels < 0) {
253  av_log(avctx, AV_LOG_ERROR, "Too many or invalid channels: %d\n", avctx->channels);
254  ret = AVERROR(EINVAL);
255  goto free_and_end;
256  }
257 
258  if (avctx->sample_rate < 0) {
259  av_log(avctx, AV_LOG_ERROR, "Invalid sample rate: %d\n", avctx->sample_rate);
260  ret = AVERROR(EINVAL);
261  goto free_and_end;
262  }
263  if (avctx->block_align < 0) {
264  av_log(avctx, AV_LOG_ERROR, "Invalid block align: %d\n", avctx->block_align);
265  ret = AVERROR(EINVAL);
266  goto free_and_end;
267  }
268 
269  avctx->frame_number = 0;
271 
272  if ((avctx->codec->capabilities & AV_CODEC_CAP_EXPERIMENTAL) &&
274  const char *codec_string = av_codec_is_encoder(codec) ? "encoder" : "decoder";
275  const AVCodec *codec2;
276  av_log(avctx, AV_LOG_ERROR,
277  "The %s '%s' is experimental but experimental codecs are not enabled, "
278  "add '-strict %d' if you want to use it.\n",
280  codec2 = av_codec_is_encoder(codec) ? avcodec_find_encoder(codec->id) : avcodec_find_decoder(codec->id);
281  if (!(codec2->capabilities & AV_CODEC_CAP_EXPERIMENTAL))
282  av_log(avctx, AV_LOG_ERROR, "Alternatively use the non experimental %s '%s'.\n",
283  codec_string, codec2->name);
285  goto free_and_end;
286  }
287 
288  if (avctx->codec_type == AVMEDIA_TYPE_AUDIO &&
289  (!avctx->time_base.num || !avctx->time_base.den)) {
290  avctx->time_base.num = 1;
291  avctx->time_base.den = avctx->sample_rate;
292  }
293 
294  if (av_codec_is_encoder(avctx->codec))
295  ret = ff_encode_preinit(avctx);
296  else
297  ret = ff_decode_preinit(avctx);
298  if (ret < 0)
299  goto free_and_end;
300 
301  if (!HAVE_THREADS)
302  av_log(avctx, AV_LOG_WARNING, "Warning: not compiled with thread support, using thread emulation\n");
303 
304  if (CONFIG_FRAME_THREAD_ENCODER && av_codec_is_encoder(avctx->codec)) {
305  unlock_avcodec(codec); //we will instantiate a few encoders thus kick the counter to prevent false detection of a problem
307  lock_avcodec(codec);
308  if (ret < 0)
309  goto free_and_end;
310  }
311 
312  if (HAVE_THREADS
313  && !(avci->frame_thread_encoder && (avctx->active_thread_type&FF_THREAD_FRAME))) {
314  ret = ff_thread_init(avctx);
315  if (ret < 0) {
316  goto free_and_end;
317  }
318  }
319  if (!HAVE_THREADS && !(codec->caps_internal & FF_CODEC_CAP_AUTO_THREADS))
320  avctx->thread_count = 1;
321 
322  if (!(avctx->active_thread_type & FF_THREAD_FRAME) ||
323  avci->frame_thread_encoder) {
324  if (avctx->codec->init) {
325  ret = avctx->codec->init(avctx);
326  if (ret < 0) {
328  goto free_and_end;
329  }
330  }
331  avci->needs_close = 1;
332  }
333 
334  ret=0;
335 
336  if (av_codec_is_decoder(avctx->codec)) {
337  if (!avctx->bit_rate)
338  avctx->bit_rate = get_bit_rate(avctx);
339  /* validate channel layout from the decoder */
340  if (avctx->channel_layout) {
342  if (!avctx->channels)
343  avctx->channels = channels;
344  else if (channels != avctx->channels) {
345  char buf[512];
346  av_get_channel_layout_string(buf, sizeof(buf), -1, avctx->channel_layout);
347  av_log(avctx, AV_LOG_WARNING,
348  "Channel layout '%s' with %d channels does not match specified number of channels %d: "
349  "ignoring specified channel layout\n",
350  buf, channels, avctx->channels);
351  avctx->channel_layout = 0;
352  }
353  }
354  if (avctx->channels && avctx->channels < 0 ||
355  avctx->channels > FF_SANE_NB_CHANNELS) {
356  ret = AVERROR(EINVAL);
357  goto free_and_end;
358  }
359  if (avctx->bits_per_coded_sample < 0) {
360  ret = AVERROR(EINVAL);
361  goto free_and_end;
362  }
363 
364 #if FF_API_AVCTX_TIMEBASE
365  if (avctx->framerate.num > 0 && avctx->framerate.den > 0)
366  avctx->time_base = av_inv_q(av_mul_q(avctx->framerate, (AVRational){avctx->ticks_per_frame, 1}));
367 #endif
368  }
369  if (codec->priv_data_size > 0 && avctx->priv_data && codec->priv_class) {
370  av_assert0(*(const AVClass **)avctx->priv_data == codec->priv_class);
371  }
372 
373 end:
374  unlock_avcodec(codec);
375  if (options) {
377  *options = tmp;
378  }
379 
380  return ret;
381 free_and_end:
382  avcodec_close(avctx);
383  av_dict_free(&tmp);
384  goto end;
385 }
386 
388 {
389  AVCodecInternal *avci = avctx->internal;
390 
391  if (av_codec_is_encoder(avctx->codec)) {
392  int caps = avctx->codec->capabilities;
393 
394  if (!(caps & AV_CODEC_CAP_ENCODER_FLUSH)) {
395  // Only encoders that explicitly declare support for it can be
396  // flushed. Otherwise, this is a no-op.
397  av_log(avctx, AV_LOG_WARNING, "Ignoring attempt to flush encoder "
398  "that doesn't support it\n");
399  return;
400  }
401 
402  // We haven't implemented flushing for frame-threaded encoders.
404  }
405 
406  avci->draining = 0;
407  avci->draining_done = 0;
408  avci->nb_draining_errors = 0;
411 
413  while (av_fifo_size(avci->pkt_props) >= sizeof(*avci->last_pkt_props)) {
415  avci->last_pkt_props, sizeof(*avci->last_pkt_props),
416  NULL);
418  }
419  av_fifo_reset(avci->pkt_props);
420 
421  av_frame_unref(avci->es.in_frame);
422  av_packet_unref(avci->ds.in_pkt);
423 
424  if (HAVE_THREADS && avctx->active_thread_type & FF_THREAD_FRAME)
425  ff_thread_flush(avctx);
426  else if (avctx->codec->flush)
427  avctx->codec->flush(avctx);
428 
429  avctx->pts_correction_last_pts =
430  avctx->pts_correction_last_dts = INT64_MIN;
431 
432  if (av_codec_is_decoder(avctx->codec))
433  av_bsf_flush(avci->bsf);
434 }
435 
437 {
438  int i;
439 
440  for (i = 0; i < sub->num_rects; i++) {
441  av_freep(&sub->rects[i]->data[0]);
442  av_freep(&sub->rects[i]->data[1]);
443  av_freep(&sub->rects[i]->data[2]);
444  av_freep(&sub->rects[i]->data[3]);
445  av_freep(&sub->rects[i]->text);
446  av_freep(&sub->rects[i]->ass);
447  av_freep(&sub->rects[i]);
448  }
449 
450  av_freep(&sub->rects);
451 
452  memset(sub, 0, sizeof(*sub));
453 }
454 
456 {
457  int i;
458 
459  if (!avctx)
460  return 0;
461 
462  if (avcodec_is_open(avctx)) {
463  AVCodecInternal *avci = avctx->internal;
464 
465  if (CONFIG_FRAME_THREAD_ENCODER &&
466  avci->frame_thread_encoder && avctx->thread_count > 1) {
468  }
469  if (HAVE_THREADS && avci->thread_ctx)
470  ff_thread_free(avctx);
471  if (avci->needs_close && avctx->codec->close)
472  avctx->codec->close(avctx);
473  avci->byte_buffer_size = 0;
474  av_freep(&avci->byte_buffer);
475  av_frame_free(&avci->buffer_frame);
476  av_packet_free(&avci->buffer_pkt);
477  if (avci->pkt_props) {
478  while (av_fifo_size(avci->pkt_props) >= sizeof(*avci->last_pkt_props)) {
481  sizeof(*avci->last_pkt_props), NULL);
482  }
483  av_fifo_freep(&avci->pkt_props);
484  }
486 
487  av_packet_free(&avci->ds.in_pkt);
488  av_frame_free(&avci->es.in_frame);
489 
490  av_buffer_unref(&avci->pool);
491 
492  if (avctx->hwaccel && avctx->hwaccel->uninit)
493  avctx->hwaccel->uninit(avctx);
494  av_freep(&avci->hwaccel_priv_data);
495 
496  av_bsf_free(&avci->bsf);
497 
498  av_freep(&avctx->internal);
499  }
500 
501  for (i = 0; i < avctx->nb_coded_side_data; i++)
502  av_freep(&avctx->coded_side_data[i].data);
503  av_freep(&avctx->coded_side_data);
504  avctx->nb_coded_side_data = 0;
505 
508 
509  if (avctx->priv_data && avctx->codec && avctx->codec->priv_class)
510  av_opt_free(avctx->priv_data);
511  av_opt_free(avctx);
512  av_freep(&avctx->priv_data);
513  if (av_codec_is_encoder(avctx->codec)) {
514  av_freep(&avctx->extradata);
515  avctx->extradata_size = 0;
516  } else if (av_codec_is_decoder(avctx->codec))
517  av_freep(&avctx->subtitle_header);
518 
519  avctx->codec = NULL;
520  avctx->active_thread_type = 0;
521 
522  return 0;
523 }
524 
525 static const char *unknown_if_null(const char *str)
526 {
527  return str ? str : "unknown";
528 }
529 
530 void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
531 {
532  const char *codec_type;
533  const char *codec_name;
534  const char *profile = NULL;
535  AVBPrint bprint;
536  int64_t bitrate;
537  int new_line = 0;
538  AVRational display_aspect_ratio;
539  const char *separator = enc->dump_separator ? (const char *)enc->dump_separator : ", ";
540  const char *str;
541 
542  if (!buf || buf_size <= 0)
543  return;
544  av_bprint_init_for_buffer(&bprint, buf, buf_size);
546  codec_name = avcodec_get_name(enc->codec_id);
548 
549  av_bprintf(&bprint, "%s: %s", codec_type ? codec_type : "unknown",
550  codec_name);
551  buf[0] ^= 'a' ^ 'A'; /* first letter in uppercase */
552 
553  if (enc->codec && strcmp(enc->codec->name, codec_name))
554  av_bprintf(&bprint, " (%s)", enc->codec->name);
555 
556  if (profile)
557  av_bprintf(&bprint, " (%s)", profile);
558  if ( enc->codec_type == AVMEDIA_TYPE_VIDEO
560  && enc->refs)
561  av_bprintf(&bprint, ", %d reference frame%s",
562  enc->refs, enc->refs > 1 ? "s" : "");
563 
564  if (enc->codec_tag)
565  av_bprintf(&bprint, " (%s / 0x%04X)",
566  av_fourcc2str(enc->codec_tag), enc->codec_tag);
567 
568  switch (enc->codec_type) {
569  case AVMEDIA_TYPE_VIDEO:
570  {
571  unsigned len;
572 
573  av_bprintf(&bprint, "%s%s", separator,
574  enc->pix_fmt == AV_PIX_FMT_NONE ? "none" :
576 
577  av_bprint_chars(&bprint, '(', 1);
578  len = bprint.len;
579 
580  /* The following check ensures that '(' has been written
581  * and therefore allows us to erase it if it turns out
582  * to be unnecessary. */
583  if (!av_bprint_is_complete(&bprint))
584  return;
585 
586  if (enc->bits_per_raw_sample && enc->pix_fmt != AV_PIX_FMT_NONE &&
588  av_bprintf(&bprint, "%d bpc, ", enc->bits_per_raw_sample);
589  if (enc->color_range != AVCOL_RANGE_UNSPECIFIED &&
591  av_bprintf(&bprint, "%s, ", str);
592 
593  if (enc->colorspace != AVCOL_SPC_UNSPECIFIED ||
596  const char *col = unknown_if_null(av_color_space_name(enc->colorspace));
598  const char *trc = unknown_if_null(av_color_transfer_name(enc->color_trc));
599  if (strcmp(col, pri) || strcmp(col, trc)) {
600  new_line = 1;
601  av_bprintf(&bprint, "%s/%s/%s, ", col, pri, trc);
602  } else
603  av_bprintf(&bprint, "%s, ", col);
604  }
605 
606  if (enc->field_order != AV_FIELD_UNKNOWN) {
607  const char *field_order = "progressive";
608  if (enc->field_order == AV_FIELD_TT)
609  field_order = "top first";
610  else if (enc->field_order == AV_FIELD_BB)
611  field_order = "bottom first";
612  else if (enc->field_order == AV_FIELD_TB)
613  field_order = "top coded first (swapped)";
614  else if (enc->field_order == AV_FIELD_BT)
615  field_order = "bottom coded first (swapped)";
616 
617  av_bprintf(&bprint, "%s, ", field_order);
618  }
619 
620  if (av_log_get_level() >= AV_LOG_VERBOSE &&
623  av_bprintf(&bprint, "%s, ", str);
624 
625  if (len == bprint.len) {
626  bprint.str[len - 1] = '\0';
627  bprint.len--;
628  } else {
629  if (bprint.len - 2 < bprint.size) {
630  /* Erase the last ", " */
631  bprint.len -= 2;
632  bprint.str[bprint.len] = '\0';
633  }
634  av_bprint_chars(&bprint, ')', 1);
635  }
636  }
637 
638  if (enc->width) {
639  av_bprintf(&bprint, "%s%dx%d", new_line ? separator : ", ",
640  enc->width, enc->height);
641 
642  if (av_log_get_level() >= AV_LOG_VERBOSE &&
643  (enc->width != enc->coded_width ||
644  enc->height != enc->coded_height))
645  av_bprintf(&bprint, " (%dx%d)",
646  enc->coded_width, enc->coded_height);
647 
648  if (enc->sample_aspect_ratio.num) {
649  av_reduce(&display_aspect_ratio.num, &display_aspect_ratio.den,
650  enc->width * (int64_t)enc->sample_aspect_ratio.num,
651  enc->height * (int64_t)enc->sample_aspect_ratio.den,
652  1024 * 1024);
653  av_bprintf(&bprint, " [SAR %d:%d DAR %d:%d]",
655  display_aspect_ratio.num, display_aspect_ratio.den);
656  }
657  if (av_log_get_level() >= AV_LOG_DEBUG) {
658  int g = av_gcd(enc->time_base.num, enc->time_base.den);
659  av_bprintf(&bprint, ", %d/%d",
660  enc->time_base.num / g, enc->time_base.den / g);
661  }
662  }
663  if (encode) {
664  av_bprintf(&bprint, ", q=%d-%d", enc->qmin, enc->qmax);
665  } else {
667  av_bprintf(&bprint, ", Closed Captions");
669  av_bprintf(&bprint, ", lossless");
670  }
671  break;
672  case AVMEDIA_TYPE_AUDIO:
673  av_bprintf(&bprint, "%s", separator);
674 
675  if (enc->sample_rate) {
676  av_bprintf(&bprint, "%d Hz, ", enc->sample_rate);
677  }
678  av_bprint_channel_layout(&bprint, enc->channels, enc->channel_layout);
679  if (enc->sample_fmt != AV_SAMPLE_FMT_NONE &&
681  av_bprintf(&bprint, ", %s", str);
682  }
683  if ( enc->bits_per_raw_sample > 0
685  av_bprintf(&bprint, " (%d bit)", enc->bits_per_raw_sample);
686  if (av_log_get_level() >= AV_LOG_VERBOSE) {
687  if (enc->initial_padding)
688  av_bprintf(&bprint, ", delay %d", enc->initial_padding);
689  if (enc->trailing_padding)
690  av_bprintf(&bprint, ", padding %d", enc->trailing_padding);
691  }
692  break;
693  case AVMEDIA_TYPE_DATA:
694  if (av_log_get_level() >= AV_LOG_DEBUG) {
695  int g = av_gcd(enc->time_base.num, enc->time_base.den);
696  if (g)
697  av_bprintf(&bprint, ", %d/%d",
698  enc->time_base.num / g, enc->time_base.den / g);
699  }
700  break;
702  if (enc->width)
703  av_bprintf(&bprint, ", %dx%d", enc->width, enc->height);
704  break;
705  default:
706  return;
707  }
708  if (encode) {
709  if (enc->flags & AV_CODEC_FLAG_PASS1)
710  av_bprintf(&bprint, ", pass 1");
711  if (enc->flags & AV_CODEC_FLAG_PASS2)
712  av_bprintf(&bprint, ", pass 2");
713  }
714  bitrate = get_bit_rate(enc);
715  if (bitrate != 0) {
716  av_bprintf(&bprint, ", %"PRId64" kb/s", bitrate / 1000);
717  } else if (enc->rc_max_rate > 0) {
718  av_bprintf(&bprint, ", max. %"PRId64" kb/s", enc->rc_max_rate / 1000);
719  }
720 }
721 
723 {
724  return !!s->internal;
725 }
AVSubtitle
Definition: avcodec.h:2389
avcodec_close
av_cold int avcodec_close(AVCodecContext *avctx)
Close a given AVCodecContext and free all the data associated with it (but not the AVCodecContext its...
Definition: avcodec.c:455
func
int(* func)(AVBPrint *dst, const char *in, const char *arg)
Definition: jacosubdec.c:68
av_packet_unref
void av_packet_unref(AVPacket *pkt)
Wipe the packet.
Definition: avpacket.c:403
AVCodecContext::hwaccel
const struct AVHWAccel * hwaccel
Hardware accelerator in use.
Definition: avcodec.h:1465
AVCodec
AVCodec.
Definition: codec.h:197
AVMEDIA_TYPE_SUBTITLE
@ AVMEDIA_TYPE_SUBTITLE
Definition: avutil.h:204
AV_CODEC_ID_VP6F
@ AV_CODEC_ID_VP6F
Definition: codec_id.h:141
AV_LOG_WARNING
#define AV_LOG_WARNING
Something somehow does not look correct.
Definition: log.h:187
FF_CODEC_CAP_INIT_THREADSAFE
#define FF_CODEC_CAP_INIT_THREADSAFE
The codec does not modify any global variables in the init function, allowing to call the init functi...
Definition: internal.h:41
AVERROR_EXPERIMENTAL
#define AVERROR_EXPERIMENTAL
Requested feature is flagged experimental. Set strict_std_compliance if you really want to use it.
Definition: error.h:72
r
const char * r
Definition: vf_curves.c:116
AVERROR
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later. That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another. Frame references ownership and permissions
opt.h
AVCodecContext::channel_layout
uint64_t channel_layout
Audio channel layout.
Definition: avcodec.h:1149
AVCodecContext::colorspace
enum AVColorSpace colorspace
YUV colorspace type.
Definition: avcodec.h:1066
av_opt_set_defaults
void av_opt_set_defaults(void *s)
Set the values of all AVOption fields to their default values.
Definition: opt.c:1358
FF_COMPLIANCE_EXPERIMENTAL
#define FF_COMPLIANCE_EXPERIMENTAL
Allow nonstandardized experimental things.
Definition: avcodec.h:1391
AVCodecContext::sample_rate
int sample_rate
samples per second
Definition: avcodec.h:1098
AVCodec::priv_class
const AVClass * priv_class
AVClass for the private context.
Definition: codec.h:223
sub
static float sub(float src0, float src1)
Definition: dnn_backend_native_layer_mathbinary.c:32
thread.h
av_pix_fmt_desc_get
const AVPixFmtDescriptor * av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
Definition: pixdesc.c:2541
ff_thread_flush
void ff_thread_flush(AVCodecContext *avctx)
Wait for decoding threads to finish and reset internal state.
Definition: pthread_frame.c:943
AVCodecInternal::es
EncodeSimpleContext es
Definition: internal.h:161
avcodec_string
void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
Definition: avcodec.c:530
AVCodecContext::coded_side_data
AVPacketSideData * coded_side_data
Additional data associated with the entire coded stream.
Definition: avcodec.h:1938
av_frame_free
void av_frame_free(AVFrame **frame)
Free the frame and any dynamically allocated objects in it, e.g.
Definition: frame.c:111
profile
mfxU16 profile
Definition: qsvenc.c:45
avcodec_find_encoder
const AVCodec * avcodec_find_encoder(enum AVCodecID id)
Find a registered encoder with a matching codec ID.
Definition: allcodecs.c:904
av_get_channel_layout_string
void av_get_channel_layout_string(char *buf, int buf_size, int nb_channels, uint64_t channel_layout)
Return a description of a channel layout.
Definition: channel_layout.c:217
tmp
static uint8_t tmp[11]
Definition: aes_ctr.c:27
AVCodecContext::color_trc
enum AVColorTransferCharacteristic color_trc
Color Transfer Characteristic.
Definition: avcodec.h:1059
AVCodec::capabilities
int capabilities
Codec capabilities.
Definition: codec.h:216
internal.h
AVComponentDescriptor::depth
int depth
Number of bits in the component.
Definition: pixdesc.h:58
AVCodecContext::field_order
enum AVFieldOrder field_order
Field order.
Definition: avcodec.h:1095
AVCodecInternal::frame_thread_encoder
void * frame_thread_encoder
Definition: internal.h:159
encode.h
AVCOL_TRC_UNSPECIFIED
@ AVCOL_TRC_UNSPECIFIED
Definition: pixfmt.h:476
unknown_if_null
static const char * unknown_if_null(const char *str)
Definition: avcodec.c:525
AVCodecContext::subtitle_header
uint8_t * subtitle_header
Header containing style information for text subtitles.
Definition: avcodec.h:1789
AV_LOG_VERBOSE
#define AV_LOG_VERBOSE
Detailed information.
Definition: log.h:197
AV_CODEC_ID_ADPCM_G722
@ AV_CODEC_ID_ADPCM_G722
Definition: codec_id.h:379
avcodec_profile_name
const char * avcodec_profile_name(enum AVCodecID codec_id, int profile)
Return a name for the specified profile, if available.
Definition: utils.c:479
ff_frame_thread_encoder_init
int ff_frame_thread_encoder_init(AVCodecContext *avctx, AVDictionary *options)
Definition: frame_thread_encoder.c:124
AVDictionary
Definition: dict.c:30
ff_thread_init
int ff_thread_init(AVCodecContext *avctx)
Definition: pthread.c:70
av_fifo_generic_read
int av_fifo_generic_read(AVFifoBuffer *f, void *dest, int buf_size, void(*func)(void *, void *, int))
Feed data from an AVFifoBuffer to a user-supplied callback.
Definition: fifo.c:213
avcodec_is_open
int avcodec_is_open(AVCodecContext *s)
Definition: avcodec.c:722
AVCodec::flush
void(* flush)(struct AVCodecContext *)
Flush buffers.
Definition: codec.h:325
AVCodecContext::qmax
int qmax
maximum quantizer
Definition: avcodec.h:1271
codec_type
enum AVMediaType codec_type
Definition: rtp.c:37
av_fifo_reset
void av_fifo_reset(AVFifoBuffer *f)
Reset the AVFifoBuffer to the state right after av_fifo_alloc, in particular it is emptied.
Definition: fifo.c:71
thread.h
av_packet_free
void av_packet_free(AVPacket **pkt)
Free the packet, if the packet is reference counted, it will be unreferenced first.
Definition: avpacket.c:70
av_chroma_location_name
const char * av_chroma_location_name(enum AVChromaLocation location)
Definition: pixdesc.c:2950
AVCodecInternal::pool
AVBufferRef * pool
Definition: internal.h:139
av_gcd
int64_t av_gcd(int64_t a, int64_t b)
Compute the greatest common divisor of two integer operands.
Definition: mathematics.c:37
AV_CODEC_ID_SRT
@ AV_CODEC_ID_SRT
Definition: codec_id.h:526
ff_mutex_unlock
static int ff_mutex_unlock(AVMutex *mutex)
Definition: thread.h:169
AVCodecContext::framerate
AVRational framerate
Definition: avcodec.h:1816
EncodeSimpleContext::in_frame
AVFrame * in_frame
Definition: internal.h:121
AV_FIELD_TT
@ AV_FIELD_TT
Definition: codec_par.h:39
av_color_space_name
const char * av_color_space_name(enum AVColorSpace space)
Definition: pixdesc.c:2929
AVCodecContext::codec
const struct AVCodec * codec
Definition: avcodec.h:510
AVCodecContext::thread_count
int thread_count
thread count is used to decide how many independent tasks should be passed to execute()
Definition: avcodec.h:1546
get_bit_rate
static int64_t get_bit_rate(AVCodecContext *ctx)
Definition: avcodec.c:105
AVCodecContext::initial_padding
int initial_padding
Audio only.
Definition: avcodec.h:1807
AVCodecContext::refs
int refs
number of reference frames
Definition: avcodec.h:1038
AVCodecContext::flags
int flags
AV_CODEC_FLAG_*.
Definition: avcodec.h:581
unlock_avcodec
static void unlock_avcodec(const AVCodec *codec)
Definition: avcodec.c:99
AVCodecContext::coded_height
int coded_height
Definition: avcodec.h:689
AV_CODEC_CAP_ENCODER_FLUSH
#define AV_CODEC_CAP_ENCODER_FLUSH
This encoder can be flushed using avcodec_flush_buffers().
Definition: codec.h:178
AV_FIELD_TB
@ AV_FIELD_TB
Definition: codec_par.h:41
av_reduce
int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max)
Reduce a fraction.
Definition: rational.c:35
AVRational::num
int num
Numerator.
Definition: rational.h:59
av_image_check_size2
int av_image_check_size2(unsigned int w, unsigned int h, int64_t max_pixels, enum AVPixelFormat pix_fmt, int log_offset, void *log_ctx)
Check if the given dimension of an image is valid, meaning that all bytes of a plane of an image with...
Definition: imgutils.c:286
avsubtitle_free
void avsubtitle_free(AVSubtitle *sub)
Free all allocated data in the given subtitle struct.
Definition: avcodec.c:436
av_frame_alloc
AVFrame * av_frame_alloc(void)
Allocate an AVFrame and set its fields to default values.
Definition: frame.c:98
AVFormatContext::bit_rate
int64_t bit_rate
Total stream bitrate in bit/s, 0 if not available.
Definition: avformat.h:1238
avassert.h
AVCodecContext::color_primaries
enum AVColorPrimaries color_primaries
Chromaticity coordinates of the source primaries.
Definition: avcodec.h:1052
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:181
frame_thread_encoder.h
AV_CODEC_CAP_EXPERIMENTAL
#define AV_CODEC_CAP_EXPERIMENTAL
Codec is experimental and is thus avoided in favor of non experimental encoders.
Definition: codec.h:100
av_cold
#define av_cold
Definition: attributes.h:90
FF_CODEC_PROPERTY_LOSSLESS
#define FF_CODEC_PROPERTY_LOSSLESS
Definition: avcodec.h:1929
LIBAVCODEC_VERSION_MICRO
#define LIBAVCODEC_VERSION_MICRO
Definition: version.h:32
AVMutex
#define AVMutex
Definition: thread.h:164
av_opt_set_dict
int av_opt_set_dict(void *obj, AVDictionary **options)
Set all the options from a given dictionary on an object.
Definition: opt.c:1656
ff_frame_thread_encoder_free
void ff_frame_thread_encoder_free(AVCodecContext *avctx)
Definition: frame_thread_encoder.c:252
AVCodecContext::extradata_size
int extradata_size
Definition: avcodec.h:603
s
#define s(width, name)
Definition: cbs_vp9.c:257
AVCodecInternal::buffer_pkt
AVPacket * buffer_pkt
buffers for using new encode/decode API through legacy API
Definition: internal.h:187
AVHWAccel::uninit
int(* uninit)(AVCodecContext *avctx)
Uninitialize the hwaccel private data.
Definition: avcodec.h:2277
g
const char * g
Definition: vf_curves.c:117
AVMEDIA_TYPE_AUDIO
@ AVMEDIA_TYPE_AUDIO
Definition: avutil.h:202
av_bprint_channel_layout
void av_bprint_channel_layout(struct AVBPrint *bp, int nb_channels, uint64_t channel_layout)
Append a description of a channel layout to a bprint buffer.
Definition: channel_layout.c:183
av_assert0
#define av_assert0(cond)
assert() equivalent, that is always enabled.
Definition: avassert.h:37
AV_FIELD_UNKNOWN
@ AV_FIELD_UNKNOWN
Definition: codec_par.h:37
AVCodecContext::bits_per_raw_sample
int bits_per_raw_sample
Bits per sample/pixel of internal libavcodec pixel/sample format.
Definition: avcodec.h:1531
AV_LOG_DEBUG
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
Definition: log.h:202
AVPacketSideData::data
uint8_t * data
Definition: packet.h:307
ctx
AVFormatContext * ctx
Definition: movenc.c:48
channels
channels
Definition: aptx.h:33
decode.h
AVCodecContext::max_pixels
int64_t max_pixels
The number of pixels per image to maximally accept.
Definition: avcodec.h:1990
AVCodecContext::rc_max_rate
int64_t rc_max_rate
maximum bitrate
Definition: avcodec.h:1300
av_get_sample_fmt_name
const char * av_get_sample_fmt_name(enum AVSampleFormat sample_fmt)
Return the name of sample_fmt, or NULL if sample_fmt is not recognized.
Definition: samplefmt.c:49
AVMEDIA_TYPE_DATA
@ AVMEDIA_TYPE_DATA
Opaque data information usually continuous.
Definition: avutil.h:203
AVCodecInternal::ds
DecodeSimpleContext ds
Definition: internal.h:143
AVCOL_PRI_UNSPECIFIED
@ AVCOL_PRI_UNSPECIFIED
Definition: pixfmt.h:451
AV_FIELD_BT
@ AV_FIELD_BT
Definition: codec_par.h:42
AV_CODEC_ID_H264
@ AV_CODEC_ID_H264
Definition: codec_id.h:76
ff_thread_free
void ff_thread_free(AVCodecContext *avctx)
Definition: pthread.c:82
AVCodecContext::codec_id
enum AVCodecID codec_id
Definition: avcodec.h:511
arg
const char * arg
Definition: jacosubdec.c:67
if
if(ret)
Definition: filter_design.txt:179
av_color_range_name
const char * av_color_range_name(enum AVColorRange range)
Definition: pixdesc.c:2869
AV_CODEC_CAP_FRAME_THREADS
#define AV_CODEC_CAP_FRAME_THREADS
Codec supports frame-level multithreading.
Definition: codec.h:108
av_log_get_level
int av_log_get_level(void)
Get the current log level.
Definition: log.c:435
LIBAVCODEC_VERSION_INT
#define LIBAVCODEC_VERSION_INT
Definition: version.h:34
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:67
NULL
#define NULL
Definition: coverity.c:32
av_match_list
int av_match_list(const char *name, const char *list, char separator)
Check if a name is in a list.
Definition: avstring.c:452
AVCodecContext::color_range
enum AVColorRange color_range
MPEG vs JPEG YUV range.
Definition: avcodec.h:1073
av_buffer_unref
void av_buffer_unref(AVBufferRef **buf)
Free a given reference and automatically free the buffer if there are no more references to it.
Definition: buffer.c:125
AVCodec::type
enum AVMediaType type
Definition: codec.h:210
AVRational
Rational number (pair of numerator and denominator).
Definition: rational.h:58
AVCodecContext::nb_coded_side_data
int nb_coded_side_data
Definition: avcodec.h:1939
AVCodecContext::internal
struct AVCodecInternal * internal
Private context used for internal data.
Definition: avcodec.h:536
AVCodecContext::bit_rate
int64_t bit_rate
the average bitrate
Definition: avcodec.h:551
AVCodecContext::trailing_padding
int trailing_padding
Audio only.
Definition: avcodec.h:1982
av_color_primaries_name
const char * av_color_primaries_name(enum AVColorPrimaries primaries)
Definition: pixdesc.c:2887
avcodec_license
const char * avcodec_license(void)
Return the libavcodec license.
Definition: avcodec.c:59
av_opt_free
void av_opt_free(void *obj)
Free all allocated objects in obj.
Definition: opt.c:1611
avcodec_open2
int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options)
Initialize the AVCodecContext to use the given AVCodec.
Definition: avcodec.c:135
avcodec_version
unsigned avcodec_version(void)
Return the LIBAVCODEC_VERSION_INT constant.
Definition: avcodec.c:44
AVCodecInternal::skip_samples_multiplier
int skip_samples_multiplier
Definition: internal.h:193
AVCodecInternal::draining_done
int draining_done
Definition: internal.h:189
AVCodecInternal::bsf
AVBSFContext * bsf
Definition: internal.h:144
AVCOL_RANGE_UNSPECIFIED
@ AVCOL_RANGE_UNSPECIFIED
Definition: pixfmt.h:542
c
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
Definition: undefined.txt:32
av_get_channel_layout_nb_channels
int av_get_channel_layout_nb_channels(uint64_t channel_layout)
Return the number of channels in the channel layout.
Definition: channel_layout.c:226
AVCodecInternal::last_pkt_props
AVPacket * last_pkt_props
Properties (timestamps+side data) extracted from the last packet passed for decoding.
Definition: internal.h:150
av_bprint_is_complete
static int av_bprint_is_complete(const AVBPrint *buf)
Test if the print buffer is complete (not truncated).
Definition: bprint.h:185
avcodec_find_decoder
const AVCodec * avcodec_find_decoder(enum AVCodecID id)
Find a registered decoder with a matching codec ID.
Definition: allcodecs.c:909
AVCodecContext::time_base
AVRational time_base
This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented.
Definition: avcodec.h:624
av_codec_is_decoder
int av_codec_is_decoder(const AVCodec *codec)
Definition: utils.c:79
FF_CODEC_CAP_AUTO_THREADS
#define FF_CODEC_CAP_AUTO_THREADS
Codec handles avctx->thread_count == 0 (auto) internally.
Definition: internal.h:80
options
const OptionDef options[]
av_get_bits_per_sample
int av_get_bits_per_sample(enum AVCodecID codec_id)
Return codec bits per sample.
Definition: utils.c:583
AVCodecInternal::hwaccel_priv_data
void * hwaccel_priv_data
hwaccel-specific private data
Definition: internal.h:177
AVCodec::close
int(* close)(struct AVCodecContext *)
Definition: codec.h:307
AV_CODEC_ID_DXV
@ AV_CODEC_ID_DXV
Definition: codec_id.h:240
AVCodecContext::sample_fmt
enum AVSampleFormat sample_fmt
audio sample format
Definition: avcodec.h:1106
AV_SAMPLE_FMT_NONE
@ AV_SAMPLE_FMT_NONE
Definition: samplefmt.h:59
AV_MUTEX_INITIALIZER
#define AV_MUTEX_INITIALIZER
Definition: thread.h:165
size
int size
Definition: twinvq_data.h:10344
AVCodecInternal::byte_buffer
uint8_t * byte_buffer
temporary buffer used for encoders to store their bitstream
Definition: internal.h:156
AVCHROMA_LOC_UNSPECIFIED
@ AVCHROMA_LOC_UNSPECIFIED
Definition: pixfmt.h:596
AVMEDIA_TYPE_UNKNOWN
@ AVMEDIA_TYPE_UNKNOWN
Usually treated as AVMEDIA_TYPE_DATA.
Definition: avutil.h:200
codec_mutex
static AVMutex codec_mutex
Definition: avcodec.c:91
AV_CODEC_FLAG_PASS2
#define AV_CODEC_FLAG_PASS2
Use internal 2pass ratecontrol in second pass mode.
Definition: avcodec.h:277
encode
static void encode(AVCodecContext *ctx, AVFrame *frame, AVPacket *pkt, FILE *output)
Definition: encode_audio.c:95
lock_avcodec
static void lock_avcodec(const AVCodec *codec)
Definition: avcodec.c:93
AVCodecContext::pts_correction_last_pts
int64_t pts_correction_last_pts
Number of incorrect DTS values so far.
Definition: avcodec.h:1846
avcodec_default_execute
int avcodec_default_execute(AVCodecContext *c, int(*func)(AVCodecContext *c2, void *arg2), void *arg, int *ret, int count, int size)
Definition: avcodec.c:65
ff_mutex_lock
static int ff_mutex_lock(AVMutex *mutex)
Definition: thread.h:168
av_packet_alloc
AVPacket * av_packet_alloc(void)
Allocate an AVPacket and set its fields to default values.
Definition: avpacket.c:59
av_dict_free
void av_dict_free(AVDictionary **pm)
Free all the memory allocated for an AVDictionary struct and all keys and values.
Definition: dict.c:203
AVCodecInternal
Definition: internal.h:124
AVCodecInternal::byte_buffer_size
unsigned int byte_buffer_size
Definition: internal.h:157
bitrate
int64_t bitrate
Definition: h264_levels.c:131
ff_encode_preinit
int ff_encode_preinit(AVCodecContext *avctx)
Definition: encode.c:416
FF_THREAD_FRAME
#define FF_THREAD_FRAME
Decode more than one frame at once.
Definition: avcodec.h:1557
AVCodecContext::channels
int channels
number of audio channels
Definition: avcodec.h:1099
av_bprint_init_for_buffer
void av_bprint_init_for_buffer(AVBPrint *buf, char *buffer, unsigned size)
Init a print buffer using a pre-existing buffer.
Definition: bprint.c:85
AVCodec::id
enum AVCodecID id
Definition: codec.h:211
av_codec_is_encoder
int av_codec_is_encoder(const AVCodec *codec)
Definition: utils.c:74
avcodec_get_name
const char * avcodec_get_name(enum AVCodecID id)
Get the name of a codec.
Definition: utils.c:446
AV_FIELD_BB
@ AV_FIELD_BB
Definition: codec_par.h:40
AVCodecContext::bits_per_coded_sample
int bits_per_coded_sample
bits per sample/pixel from the demuxer (needed for huffyuv).
Definition: avcodec.h:1524
bprint.h
i
int i
Definition: input.c:407
avcodec_default_execute2
int avcodec_default_execute2(AVCodecContext *c, int(*func)(AVCodecContext *c2, void *arg2, int jobnr, int threadnr), void *arg, int *ret, int count)
Definition: avcodec.c:78
AV_CODEC_ID_NONE
@ AV_CODEC_ID_NONE
Definition: codec_id.h:47
AVCodecContext::properties
unsigned properties
Properties of the stream that gets decoded.
Definition: avcodec.h:1928
av_get_bytes_per_sample
int av_get_bytes_per_sample(enum AVSampleFormat sample_fmt)
Return number of bytes per sample.
Definition: samplefmt.c:106
AVCodecContext::extradata
uint8_t * extradata
some codecs need / can use extradata like Huffman tables.
Definition: avcodec.h:602
FF_CODEC_CAP_INIT_CLEANUP
#define FF_CODEC_CAP_INIT_CLEANUP
The codec allows calling the close function for deallocation even if the init function returned a fai...
Definition: internal.h:49
AVCodecInternal::pkt_props
AVFifoBuffer * pkt_props
Definition: internal.h:151
AVCodecContext::pts_correction_last_dts
int64_t pts_correction_last_dts
PTS of the last frame.
Definition: avcodec.h:1847
ff_decode_preinit
int ff_decode_preinit(AVCodecContext *avctx)
Perform decoder initialization and validation.
Definition: decode.c:1753
AVMEDIA_TYPE_ATTACHMENT
@ AVMEDIA_TYPE_ATTACHMENT
Opaque data information usually sparse.
Definition: avutil.h:205
AVCodecContext::dump_separator
uint8_t * dump_separator
dump format separator.
Definition: avcodec.h:1913
av_frame_unref
void av_frame_unref(AVFrame *frame)
Unreference all the buffers referenced by frame and reset the frame fields.
Definition: frame.c:436
av_mallocz
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
Definition: mem.c:243
AVCodec::name
const char * name
Name of the codec implementation.
Definition: codec.h:204
av_inv_q
static av_always_inline AVRational av_inv_q(AVRational q)
Invert a rational.
Definition: rational.h:159
AVCodecContext::hw_device_ctx
AVBufferRef * hw_device_ctx
A reference to the AVHWDeviceContext describing the device which will be used by a hardware encoder/d...
Definition: avcodec.h:2012
AVCodecContext::chroma_sample_location
enum AVChromaLocation chroma_sample_location
This defines the location of chroma samples.
Definition: avcodec.h:1080
len
int len
Definition: vorbis_enc_data.h:452
AVCOL_SPC_UNSPECIFIED
@ AVCOL_SPC_UNSPECIFIED
Definition: pixfmt.h:505
AVCodecContext::height
int height
Definition: avcodec.h:674
AVCodecContext::pix_fmt
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx.
Definition: avcodec.h:711
AVCodecInternal::nb_draining_errors
int nb_draining_errors
Definition: internal.h:196
AVCodec::priv_data_size
int priv_data_size
Definition: codec.h:245
AVCodecContext::hw_frames_ctx
AVBufferRef * hw_frames_ctx
A reference to the AVHWFramesContext describing the input (for encoding) or output (decoding) frames.
Definition: avcodec.h:1963
avcodec.h
ret
ret
Definition: filter_design.txt:187
AVCodec::caps_internal
int caps_internal
Internal codec capabilities.
Definition: codec.h:330
AVCodecContext::block_align
int block_align
number of bytes per packet if constant and known or 0 Used by some WAV based audio codecs.
Definition: avcodec.h:1135
avcodec_flush_buffers
void avcodec_flush_buffers(AVCodecContext *avctx)
Reset the internal codec state / flush internal buffers.
Definition: avcodec.c:387
AVCodecContext::strict_std_compliance
int strict_std_compliance
strictly follow the standard (MPEG-4, ...).
Definition: avcodec.h:1386
LICENSE_PREFIX
#define LICENSE_PREFIX
av_bprintf
void av_bprintf(AVBPrint *buf, const char *fmt,...)
Definition: bprint.c:94
AVCodecInternal::needs_close
int needs_close
If this is set, then AVCodec->close (if existing) needs to be called for the parent AVCodecContext.
Definition: internal.h:167
av_bsf_flush
void av_bsf_flush(AVBSFContext *ctx)
Reset the internal bitstream filter state.
Definition: bsf.c:186
av_get_media_type_string
const char * av_get_media_type_string(enum AVMediaType media_type)
Return a string describing the media_type enum, NULL if media_type is unknown.
Definition: utils.c:76
AVCodecContext
main external API structure.
Definition: avcodec.h:501
AVCodecContext::active_thread_type
int active_thread_type
Which multithreading methods are in use by the codec.
Definition: avcodec.h:1565
AVCodecContext::codec_descriptor
const AVCodecDescriptor * codec_descriptor
AVCodecDescriptor.
Definition: avcodec.h:1837
c2
static const uint64_t c2
Definition: murmur3.c:52
AVCodecContext::qmin
int qmin
minimum quantizer
Definition: avcodec.h:1264
AVRational::den
int den
Denominator.
Definition: rational.h:60
AV_PIX_FMT_NONE
@ AV_PIX_FMT_NONE
Definition: pixfmt.h:65
AVCodecContext::profile
int profile
profile
Definition: avcodec.h:1631
AVPixFmtDescriptor::comp
AVComponentDescriptor comp[4]
Parameters that describe how pixels are packed.
Definition: pixdesc.h:106
FF_CODEC_PROPERTY_CLOSED_CAPTIONS
#define FF_CODEC_PROPERTY_CLOSED_CAPTIONS
Definition: avcodec.h:1930
av_mul_q
AVRational av_mul_q(AVRational b, AVRational c)
Multiply two rationals.
Definition: rational.c:80
AVCodecInternal::buffer_frame
AVFrame * buffer_frame
Definition: internal.h:188
AVCodecInternal::draining
int draining
checks API usage: after codec draining, flush is required to resume operation
Definition: internal.h:182
AVCodecContext::coded_width
int coded_width
Bitstream width / height, may be different from width/height e.g.
Definition: avcodec.h:689
AVCodecContext::codec_type
enum AVMediaType codec_type
Definition: avcodec.h:509
AVMEDIA_TYPE_VIDEO
@ AVMEDIA_TYPE_VIDEO
Definition: avutil.h:201
av_codec_ffversion
const char av_codec_ffversion[]
Definition: avcodec.c:42
mem.h
ff_set_dimensions
int ff_set_dimensions(AVCodecContext *s, int width, int height)
Check that the provided frame dimensions are valid and set them on the codec context.
Definition: utils.c:84
av_fifo_size
int av_fifo_size(const AVFifoBuffer *f)
Return the amount of data in bytes in the AVFifoBuffer, that is the amount of data you can read from ...
Definition: fifo.c:77
AVCodecContext::frame_number
int frame_number
Frame counter, set by libavcodec.
Definition: avcodec.h:1129
av_fifo_freep
void av_fifo_freep(AVFifoBuffer **f)
Free an AVFifoBuffer and reset pointer to NULL.
Definition: fifo.c:63
AVCodecContext::codec_tag
unsigned int codec_tag
fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').
Definition: avcodec.h:526
FF_MAX_EXTRADATA_SIZE
#define FF_MAX_EXTRADATA_SIZE
Maximum size in bytes of extradata.
Definition: internal.h:229
AVCodecContext::priv_data
void * priv_data
Definition: avcodec.h:528
av_freep
#define av_freep(p)
Definition: tableprint_vlc.h:35
av_dict_copy
int av_dict_copy(AVDictionary **dst, const AVDictionary *src, int flags)
Copy entries from one AVDictionary struct into another.
Definition: dict.c:217
av_bsf_free
void av_bsf_free(AVBSFContext **pctx)
Free a bitstream filter context and everything associated with it; write NULL into the supplied point...
Definition: bsf.c:40
avcodec_configuration
const char * avcodec_configuration(void)
Return the libavcodec build-time configuration.
Definition: avcodec.c:54
AVCodec::init
int(* init)(struct AVCodecContext *)
Definition: codec.h:278
codec_string
Definition: dashenc.c:201
AVCodecInternal::thread_ctx
void * thread_ctx
Definition: internal.h:141
AV_CODEC_ID_PCM_S8_PLANAR
@ AV_CODEC_ID_PCM_S8_PLANAR
Definition: codec_id.h:339
AVCodecContext::width
int width
picture width / height.
Definition: avcodec.h:674
convert_header.str
string str
Definition: convert_header.py:20
av_fifo_alloc
AVFifoBuffer * av_fifo_alloc(unsigned int size)
Initialize an AVFifoBuffer.
Definition: fifo.c:43
imgutils.h
DecodeSimpleContext::in_pkt
AVPacket * in_pkt
Definition: internal.h:117
av_log
#define av_log(a,...)
Definition: tableprint_vlc.h:28
avcodec_descriptor_get
const AVCodecDescriptor * avcodec_descriptor_get(enum AVCodecID id)
Definition: codec_desc.c:3501
av_image_check_sar
int av_image_check_sar(unsigned int w, unsigned int h, AVRational sar)
Check if the given sample aspect ratio of an image is valid.
Definition: imgutils.c:320
avstring.h
FF_SANE_NB_CHANNELS
#define FF_SANE_NB_CHANNELS
Definition: internal.h:102
AVCodecContext::codec_whitelist
char * codec_whitelist
',' separated list of allowed decoders.
Definition: avcodec.h:1921
av_color_transfer_name
const char * av_color_transfer_name(enum AVColorTransferCharacteristic transfer)
Definition: pixdesc.c:2908
AVCodecContext::sample_aspect_ratio
AVRational sample_aspect_ratio
sample aspect ratio (0 if unknown) That is the width of a pixel divided by the height of the pixel.
Definition: avcodec.h:859
av_bprint_chars
void av_bprint_chars(AVBPrint *buf, char c, unsigned n)
Append char c n times to a print buffer.
Definition: bprint.c:140
av_get_pix_fmt_name
const char * av_get_pix_fmt_name(enum AVPixelFormat pix_fmt)
Return the short name for a pixel format, NULL in case pix_fmt is unknown.
Definition: pixdesc.c:2461
AV_CODEC_FLAG_PASS1
#define AV_CODEC_FLAG_PASS1
Use internal 2pass ratecontrol in first pass mode.
Definition: avcodec.h:273
av_fourcc2str
#define av_fourcc2str(fourcc)
Definition: avutil.h:348