64 #include "libavutil/ffversion.h"
67 #if HAVE_PTHREADS || HAVE_W32THREADS || HAVE_OS2THREADS
158 static int initialized = 0;
160 if (initialized != 0)
187 last_avcodec = &codec->
next;
200 #if FF_API_SET_DIMENSIONS
255 *data = matrix_encoding;
416 w_align =
FFMAX(w_align, 8);
419 *width =
FFALIGN(*width, w_align);
420 *height =
FFALIGN(*height, h_align);
430 *width =
FFMAX(*width, 32);
433 for (i = 0; i < 4; i++)
445 align =
FFMAX(linesize_align[0], linesize_align[3]);
446 linesize_align[1] <<= chroma_shift;
447 linesize_align[2] <<= chroma_shift;
448 align =
FFMAX3(align, linesize_align[1], linesize_align[2]);
449 *width =
FFALIGN(*width, align);
458 *xpos = (pos&1) * 128;
459 *ypos = ((pos>>1)^(pos<4)) * 128;
477 int buf_size,
int align)
479 int ch,
planar, needed_size, ret = 0;
484 if (buf_size < needed_size)
498 sample_fmt, align)) < 0) {
521 int w = frame->
width;
523 int tmpsize, unaligned;
541 for (i = 0; i < 4; i++)
550 for (i = 0; i < 3 && data[i + 1]; i++)
551 size[i] = data[i + 1] - data[i];
552 size[i] = tmpsize - (data[i] - data[0]);
554 for (i = 0; i < 4; i++) {
559 CONFIG_MEMORY_POISONING ?
562 if (!pool->
pools[i]) {
577 int planes = planar ? ch : 1;
590 if (!pool->
pools[0]) {
605 for (i = 0; i < 4; i++)
616 int planes = pool->
planes;
671 "Unable to get pixel format descriptor for format %s\n",
676 memset(pic->
data, 0,
sizeof(pic->
data));
679 for (i = 0; i < 4 && pool->
pools[i]; i++) {
714 int is_chroma = p == 1 || p == 2;
717 for (y = 0; y <
height; y++) {
719 for (x = 0; x<bytes; x++)
720 ((uint16_t*)dst)[x] = c[p];
722 memset(dst, c[p], bytes);
764 static const struct {
797 memcpy(frame_sd->
data, packet_sd, size);
890 for (i = 0; i < num_planes; i++) {
899 av_log(avctx,
AV_LOG_ERROR,
"Buffer returned by get_buffer2() did not zero unused plane pointers\n");
908 int override_dimensions = 1;
920 override_dimensions = 0;
971 av_log(avctx,
AV_LOG_WARNING,
"Picture changed from size:%dx%d fmt:%s to size:%dx%d fmt:%s in reget buffer()\n",
1014 for (i = 0; i <
count; i++) {
1015 int r =
func(c, (
char *)arg + i * size);
1027 for (i = 0; i <
count; i++) {
1028 int r =
func(c, arg, i, 0);
1040 if (tags->
fourcc == fourcc)
1066 if (hwaccel->
id == codec_id
1067 && hwaccel->
pix_fmt == pix_fmt)
1081 "Could not find an AVHWAccel for the pixel format: %s",
1100 ret = hwa->
init(avctx);
1130 memcpy(choices, fmt, (n + 1) *
sizeof(*choices));
1150 #if FF_API_CAP_VDPAU
1157 if (hw_frames_ctx->
format != ret) {
1159 "does not match the format of provided AVHWFramesContext\n");
1169 for (n = 0; choices[
n] != ret; n++)
1173 choices[
n] = choices[n + 1];
1185 MAKE_ACCESSORS(AVCodecContext, codec, uint16_t*, chroma_intra_matrix)
1189 return codec->properties;
1203 memset(sub, 0,
sizeof(*sub));
1210 int bits_per_sample;
1251 if ((!codec && !avctx->
codec)) {
1255 if ((codec && avctx->
codec && codec != avctx->
codec)) {
1257 "but %s passed to avcodec_open2()\n", avctx->
codec->
name, codec->
name);
1261 codec = avctx->
codec;
1369 avctx->
codec = codec;
1389 "The %s '%s' is experimental but experimental codecs are not enabled, "
1390 "add '-strict %d' if you want to use it.\n",
1395 codec_string, codec2->
name);
1407 av_log(avctx,
AV_LOG_WARNING,
"Warning: not compiled with thread support, using thread emulation\n");
1436 "see the codecview filter instead.\n");
1441 #if FF_API_CODED_FRAME
1471 av_log(avctx,
AV_LOG_ERROR,
"Specified sample format %s is invalid or not supported\n",
1486 av_log(avctx,
AV_LOG_ERROR,
"Specified pixel format %s is invalid or not supported\n",
1525 av_log(avctx,
AV_LOG_ERROR,
"Specified channel layout '%s' is not supported\n", buf);
1537 "Channel layout '%s' with %d channels does not match number of specified channels %d\n",
1555 av_log(avctx,
AV_LOG_WARNING,
"Specified bit depth %d not possible with the specified pixel formats depth %d\n",
1576 "ticks_per_frame %d too large for the timebase %d/%d.",
1587 "Mismatching AVCodecContext.pix_fmt and AVHWFramesContext.format\n");
1594 "Mismatching AVCodecContext.sw_pix_fmt (%s) "
1595 "and AVHWFramesContext.sw_format (%s)\n",
1613 "gray decoding requested but not enabled at configuration time\n");
1625 #if FF_API_AUDIOENC_DELAY
1638 else if (channels != avctx->
channels) {
1642 "Channel layout '%s' with %d channels does not match specified number of channels %d: "
1643 "ignoring specified channel layout\n",
1656 "supported with subtitles codecs\n");
1661 "subtitles character encoding will be ignored\n",
1672 iconv_t cd = iconv_open(
"UTF-8", avctx->
sub_charenc);
1673 if (cd == (iconv_t)-1) {
1676 "with input character encoding \"%s\"\n", avctx->
sub_charenc);
1682 "conversion needs a libavcodec built with iconv support "
1683 "for this codec\n");
1691 #if FF_API_AVCTX_TIMEBASE
1696 if (codec->priv_data_size > 0 && avctx->priv_data && codec->priv_class) {
1711 avctx->codec->close(avctx);
1713 if (codec->priv_class && codec->priv_data_size)
1717 #if FF_API_CODED_FRAME
1725 if (avctx->internal) {
1732 avctx->codec =
NULL;
1738 if (avpkt->
size < 0) {
1743 av_log(avctx,
AV_LOG_ERROR,
"Invalid minimum required packet size %"PRId64
" (max allowed is %d)\n",
1748 if (avctx && 2*min_size < size) {
1750 if (!avpkt->
data || avpkt->
size < size) {
1760 if (avpkt->
size < size) {
1825 int *got_packet_ptr)
1831 int needs_realloc = !user_pkt.
data;
1833 *got_packet_ptr = 0;
1836 av_log(avctx,
AV_LOG_ERROR,
"This encoder requires using the avcodec_send_frame() API.\n");
1851 "with more than %d channels, but extended_data is not set.\n",
1858 if (!extended_frame)
1861 memcpy(extended_frame, frame,
sizeof(
AVFrame));
1863 frame = extended_frame;
1877 av_log(avctx,
AV_LOG_ERROR,
"more samples than frame size (avcodec_encode_audio2)\n");
1888 frame = padded_frame;
1902 ret = avctx->
codec->
encode2(avctx, avpkt, frame, got_packet_ptr);
1904 if (*got_packet_ptr) {
1919 if (user_pkt.
data) {
1920 if (user_pkt.
size >= avpkt->
size) {
1927 avpkt->
buf = user_pkt.
buf;
1937 if (needs_realloc && avpkt->
data) {
1946 if (ret < 0 || !*got_packet_ptr) {
1961 #if FF_API_AUDIOENC_DELAY
1971 int *got_packet_ptr)
1975 int needs_realloc = !user_pkt.
data;
1977 *got_packet_ptr = 0;
1980 av_log(avctx,
AV_LOG_ERROR,
"This encoder requires using the avcodec_send_frame() API.\n");
1984 if(CONFIG_FRAME_THREAD_ENCODER &&
2003 if (frame && (frame->
width == 0 || frame->
height == 0))
2008 ret = avctx->
codec->
encode2(avctx, avpkt, frame, got_packet_ptr);
2015 if (user_pkt.
data) {
2016 if (user_pkt.
size >= avpkt->
size) {
2023 avpkt->
buf = user_pkt.
buf;
2033 if (!*got_packet_ptr)
2038 if (needs_realloc && avpkt->
data) {
2047 if (ret < 0 || !*got_packet_ptr)
2078 int64_t reordered_pts, int64_t dts)
2096 pts = reordered_pts;
2116 "changes, but PARAM_CHANGE side data was sent to it.\n");
2124 flags = bytestream_get_le32(&data);
2130 val = bytestream_get_le32(&data);
2131 if (val <= 0 || val > INT_MAX) {
2148 val = bytestream_get_le32(&data);
2149 if (val <= 0 || val > INT_MAX) {
2160 avctx->
width = bytestream_get_le32(&data);
2161 avctx->
height = bytestream_get_le32(&data);
2228 int *got_picture_ptr,
2244 av_log(avctx,
AV_LOG_ERROR,
"This decoder requires using the avcodec_send_packet() API.\n");
2248 *got_picture_ptr = 0;
2275 ret = avctx->
codec->
decode(avctx, picture, got_picture_ptr,
2305 *got_picture_ptr = 0;
2307 if (*got_picture_ptr) {
2328 #if FF_API_AVCTX_TIMEBASE
2350 av_log(avctx,
AV_LOG_ERROR,
"This decoder requires using the avcodec_send_packet() API.\n");
2368 uint32_t discard_padding = 0;
2386 ret = avctx->
codec->
decode(avctx, frame, got_frame_ptr, &tmp);
2390 if (ret >= 0 && *got_frame_ptr) {
2407 if(side && side_size>=10) {
2409 discard_padding =
AV_RL32(side + 4);
2412 skip_reason =
AV_RL8(side + 8);
2413 discard_reason =
AV_RL8(side + 9);
2437 frame->
pts += diff_ts;
2458 if (discard_padding > 0 && discard_padding <= frame->nb_samples && *got_frame_ptr &&
2480 AV_WL32(fside->
data, avctx->internal->skip_samples);
2484 avctx->internal->skip_samples = 0;
2488 avctx->internal->pkt =
NULL;
2497 if (ret >= 0 && *got_frame_ptr) {
2498 if (!avctx->refcounted_frames) {
2509 if (!avci->showed_multi_packet_warning &&
2512 avci->showed_multi_packet_warning = 1;
2518 #define UTF8_MAX_BYTES 4
2523 iconv_t cd = (iconv_t)-1;
2552 outb = outpkt->
data;
2553 outl = outpkt->
size;
2555 if (iconv(cd, &inb, &inl, &outb, &outl) == (
size_t)-1 ||
2556 iconv(cd,
NULL,
NULL, &outb, &outl) == (
size_t)-1 ||
2557 outl >= outpkt->
size || inl != 0) {
2564 outpkt->
size -= outl;
2565 memset(outpkt->
data + outpkt->
size, 0, outl);
2568 if (cd != (iconv_t)-1)
2580 uint32_t codepoint,
min;
2584 GET_UTF8(codepoint, *(byte++),
return 0;);
2585 min = byte - str == 1 ? 0 : byte - str == 2 ? 0x80 :
2586 1 << (5 * (byte - str) - 4);
2587 if (codepoint < min || codepoint >= 0x110000 ||
2588 codepoint == 0xFFFE ||
2589 codepoint >= 0xD800 && codepoint <= 0xDFFF )
2596 #if FF_API_ASS_TIMING
2604 h = ts/360000; ts -= 360000*
h;
2605 m = ts/ 6000; ts -= 6000*m;
2606 s = ts/ 100; ts -= 100*
s;
2607 av_bprintf(buf,
"%d:%02d:%02d.%02d,", h, m, s, ts);
2622 int ts_start, ts_duration = -1;
2631 dialog = strchr(rect->
ass,
',');
2637 layer = strtol(dialog, (
char**)&dialog, 10);
2651 insert_ts(&buf, ts_duration == -1 ? -1 : ts_start + ts_duration);
2661 rect->
ass = final_dialog;
2719 ret = avctx->
codec->
decode(avctx, sub, got_sub_ptr, &pkt_recoded);
2723 #if FF_API_ASS_TIMING
2749 "Invalid UTF-8 in decoded subtitles text; "
2750 "maybe missing -sub_charenc option\n");
2757 if (tmp.
data != pkt_recoded.data) {
2759 pkt_recoded.side_data =
NULL;
2760 pkt_recoded.side_data_elems = 0;
2842 if (ret >= pkt->
size) {
2875 if (avpkt && !avpkt->
size && avpkt->
data)
2878 if (!avpkt || !avpkt->
size) {
2988 if (ret >= 0 && *got_packet) {
3028 return do_encode(avctx, frame, &(
int){0});
3054 if (ret >= 0 && !got_packet)
3072 if (CONFIG_FRAME_THREAD_ENCODER &&
3110 #if FF_API_CODED_FRAME
3127 default :
return id;
3146 return experimental;
3204 return "unknown_codec";
3209 int i,
len, ret = 0;
3211 #define TAG_PRINT(x) \
3212 (((x) >= '0' && (x) <= '9') || \
3213 ((x) >= 'a' && (x) <= 'z') || ((x) >= 'A' && (x) <= 'Z') || \
3214 ((x) == '.' || (x) == ' ' || (x) == '-' || (x) == '_'))
3216 for (i = 0; i < 4; i++) {
3218 TAG_PRINT(codec_tag & 0xFF) ?
"%c" :
"[%d]", codec_tag & 0xFF);
3220 buf_size = buf_size > len ? buf_size - len : 0;
3230 const char *codec_name;
3237 if (!buf || buf_size <= 0)
3243 snprintf(buf, buf_size,
"%s: %s", codec_type ? codec_type :
"unknown",
3245 buf[0] ^=
'a' ^
'A';
3251 snprintf(buf + strlen(buf), buf_size - strlen(buf),
" (%s)", profile);
3255 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3256 ", %d reference frame%s",
3257 enc->
refs, enc->
refs > 1 ?
"s" :
"");
3260 snprintf(buf + strlen(buf), buf_size - strlen(buf),
" (%s / 0x%04X)",
3266 char detail[256] =
"(";
3270 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3296 const char *field_order =
"progressive";
3298 field_order =
"top first";
3300 field_order =
"bottom first";
3302 field_order =
"top coded first (swapped)";
3304 field_order =
"bottom coded first (swapped)";
3306 av_strlcatf(detail,
sizeof(detail),
"%s, ", field_order);
3314 if (strlen(detail) > 1) {
3315 detail[strlen(detail) - 2] = 0;
3321 av_strlcat(buf, new_line ? separator :
", ", buf_size);
3323 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3330 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3338 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3339 " [SAR %d:%d DAR %d:%d]",
3341 display_aspect_ratio.
num, display_aspect_ratio.
den);
3345 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3351 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3352 ", q=%d-%d", enc->
qmin, enc->
qmax);
3355 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3356 ", Closed Captions");
3358 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3366 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3371 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3376 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3380 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3383 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3391 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3398 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3406 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3409 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3414 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3415 ", %"PRId64
" kb/s", bitrate / 1000);
3417 snprintf(buf + strlen(buf), buf_size - strlen(buf),
3418 ", max. %"PRId64
" kb/s", (int64_t)enc->
rc_max_rate / 1000);
3464 return FFMPEG_CONFIGURATION;
3469 #define LICENSE_PREFIX "libavcodec license: "
3570 if (be < 0 || be > 1)
3572 return map[
fmt][be];
3594 uint32_t
tag,
int bits_per_coded_sample, int64_t bitrate,
3598 int framecount = (ba > 0 && frame_bytes / ba > 0) ? frame_bytes / ba : 1;
3601 if (bps > 0 && ch > 0 && frame_bytes > 0 && ch < 32768 && bps < 32768)
3602 return (frame_bytes * 8LL) / (bps *
ch);
3603 bps = bits_per_coded_sample;
3629 return 256 * sr / 245;
3631 return 588 * sr / 44100;
3636 return (480 << (sr / 22050)) / ch;
3644 case 20:
return 160;
3645 case 19:
return 144;
3646 case 29:
return 288;
3647 case 37:
return 480;
3651 case 38:
return 160;
3652 case 50:
return 240;
3657 if (frame_bytes > 0) {
3660 return 240 * (frame_bytes / 32);
3662 return 256 * (frame_bytes / 64);
3664 return 160 * (frame_bytes / 20);
3666 return 240 * (frame_bytes / 24);
3671 return frame_bytes * 8 /
bps;
3674 if (ch > 0 && ch < INT_MAX/16) {
3678 return frame_bytes / (9 *
ch) * 16;
3681 return frame_bytes / (16 *
ch) * 28;
3685 return (frame_bytes - 4 * ch) * 2 /
ch;
3687 return (frame_bytes - 4) * 2 /
ch;
3689 return (frame_bytes - 8) * 2 /
ch;
3693 return frame_bytes * 14 / (8 *
ch);
3696 return (frame_bytes / 128) * 224 /
ch;
3698 return (frame_bytes - 6 - ch) /
ch;
3700 return (frame_bytes - 8) /
ch;
3702 return (frame_bytes - 2 * ch) /
ch;
3704 return 3 * frame_bytes /
ch;
3706 return 6 * frame_bytes /
ch;
3708 return 2 * (frame_bytes / (5 *
ch));
3711 return 4 * frame_bytes /
ch;
3718 return frame_bytes /
ch;
3720 return frame_bytes * 2 /
ch;
3726 int blocks = frame_bytes / ba;
3729 if (bps < 2 || bps > 5)
3731 return blocks * (1 + (ba - 4 *
ch) / (bps * ch) * 8);
3733 return blocks * (((ba - 16) * 2 / 3 * 4) /
ch);
3735 return blocks * (1 + (ba - 4 *
ch) * 2 / ch);
3737 return blocks * ((ba - 4 *
ch) * 2 / ch);
3739 return blocks * (2 + (ba - 7 *
ch) * 2 / ch);
3741 return blocks * (ba - 16) * 2 / ch;
3751 return 2 * (frame_bytes / ((bps * 2 / 8) * ch));
3755 return frame_bytes / ((
FFALIGN(ch, 2) *
bps) / 8);
3757 return 2 * (frame_bytes / ((bps + 4) / 4)) / ch;
3764 if (frame_size > 1 && frame_bytes)
3769 if (bitrate > 0 && frame_bytes > 0 && sr > 0 && ba > 1) {
3771 return (frame_bytes * 8LL * sr) / bitrate;
3820 for (i = 0; i < size && !(
tab[i][0] == a &&
tab[i][1] ==
b); i++) ;
3824 #if FF_API_MISSING_SAMPLE
3829 "version to the newest one from Git. If the problem still "
3830 "occurs, it means that your file has a feature which has not "
3831 "been implemented.\n", feature);
3838 va_list argument_list;
3840 va_start(argument_list, msg);
3845 "of this file to ftp://upload.ffmpeg.org/incoming/ "
3846 "and contact the ffmpeg-devel mailing list. (ffmpeg-devel@ffmpeg.org)\n");
3848 va_end(argument_list);
3862 last_hwaccel = &hwaccel->
next;
3883 void *new_codec_mutex =
NULL;
3884 void *new_avformat_mutex =
NULL;
3914 "Insufficient thread locking. At least %d threads are "
3915 "calling avcodec_open2() at the same time right now.\n",
3918 av_log(log_ctx,
AV_LOG_ERROR,
"No lock manager is set, please see av_lockmgr_register()\n");
3967 ((
unsigned)
av_toupper((x >> 24) & 0xFF) << 24);
4077 uint32_t *av_restrict
state)
4085 for (i = 0; i < 3; i++) {
4086 uint32_t
tmp = *state << 8;
4087 *state = tmp + *(p++);
4088 if (tmp == 0x100 || p == end)
4093 if (p[-1] > 1 ) p += 3;
4094 else if (p[-2] ) p += 2;
4095 else if (p[-3]|(p[-1]-1)) p++;
4102 p =
FFMIN(p, end) - 4;
4115 *size =
sizeof(*props);
4152 memset(par, 0,
sizeof(*par));
4192 memcpy(dst, src,
sizeof(*dst));
4322 void **
data,
size_t *sei_size)
4335 *sei_size = side_data->
size + 11;
4339 sei_data = (
uint8_t*)*data + prefix_len;
4354 sei_data[8] = ((side_data->
size/3) & 0x1f) | 0x40;
4357 memcpy(sei_data + 10, side_data->
data, side_data->
size);
4359 sei_data[side_data->
size+10] = 255;
4370 if (!(framerate.
num && framerate.
den))
4372 if (!(framerate.
num && framerate.
den))
4375 if (!bits_per_coded_sample) {
4379 bitrate = (int64_t)bits_per_coded_sample * avctx->
width * avctx->
height *
4380 framerate.
num / framerate.
den;
int64_t ff_guess_coded_bitrate(AVCodecContext *avctx)
Get an estimated video bitrate based on frame size, frame rate and coded bits per pixel...
#define AV_PIX_FMT_FLAG_PAL
Pixel format has a palette in data[1], values are indexes in this palette.
#define FF_CODEC_CAP_INIT_CLEANUP
The codec allows calling the close function for deallocation even if the init function returned a fai...
#define FF_SANE_NB_CHANNELS
#define FF_COMPLIANCE_EXPERIMENTAL
Allow nonstandardized experimental things.
packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1
void av_frame_set_channels(AVFrame *frame, int val)
enum AVChromaLocation chroma_location
#define FF_SUB_CHARENC_MODE_PRE_DECODER
the AVPacket data needs to be recoded to UTF-8 before being fed to the decoder, requires iconv ...
attribute_deprecated int av_packet_split_side_data(AVPacket *pkt)
const struct AVCodec * codec
planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
const char const char void * val
#define avpriv_atomic_int_add_and_fetch
enum AVFieldOrder field_order
Video only.
static int64_t get_bit_rate(AVCodecContext *ctx)
const AVCodecDescriptor * codec_descriptor
AVCodecDescriptor.
static AVCodec * find_encdec(enum AVCodecID id, int encoder)
planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian
planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
enum AVColorTransferCharacteristic color_trc
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
Number of sample formats. DO NOT USE if linking dynamically.
static enum AVPixelFormat pix_fmt
#define AV_NUM_DATA_POINTERS
void av_bprintf(AVBPrint *buf, const char *fmt,...)
int ff_thread_video_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet_ptr)
int64_t av_frame_get_pkt_duration(const AVFrame *frame)
static int shift(int a, int b)
planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
static av_always_inline int pthread_mutex_destroy(pthread_mutex_t *mutex)
#define FF_SUB_CHARENC_MODE_AUTOMATIC
libavcodec will select the mode itself
int64_t pts_correction_num_faulty_dts
Number of incorrect PTS values so far.
int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame)
Set various frame properties from the codec context / packet data.
void av_buffer_unref(AVBufferRef **buf)
Free a given reference and automatically free the buffer if there are no more references to it...
#define GET_UTF8(val, GET_BYTE, ERROR)
Convert a UTF-8 character (up to 4 bytes) to its 32-bit UCS-4 encoded form.
const AVPixFmtDescriptor * av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
This structure describes decoded (raw) audio or video data.
int(* send_packet)(AVCodecContext *avctx, const AVPacket *avpkt)
#define pthread_mutex_lock(a)
AVCodec * avcodec_find_encoder(enum AVCodecID id)
Find a registered encoder with a matching codec ID.
int(* init)(AVCodecContext *avctx)
Initialize the hwaccel private data.
int stride_align[AV_NUM_DATA_POINTERS]
ptrdiff_t const GLvoid * data
planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
This side data must be associated with an audio frame and corresponds to enum AVAudioServiceType defi...
#define AV_CODEC_FLAG2_SKIP_MANUAL
Do not skip samples and export skip information as frame side data.
int coded_width
Bitstream width / height, may be different from width/height e.g.
int capabilities
Hardware accelerated codec capabilities.
void(* flush)(AVCodecContext *)
Flush buffers.
int av_lockmgr_register(int(*cb)(void **mutex, enum AVLockOp op))
Register a user provided lock manager supporting the operations specified by AVLockOp.
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
#define AV_LOG_WARNING
Something somehow does not look correct.
int64_t bit_rate
the average bitrate
int av_pix_fmt_count_planes(enum AVPixelFormat pix_fmt)
packed RGB 8:8:8, 24bpp, RGBRGB...
int64_t pos
byte position in stream, -1 if unknown
enum AVColorRange av_frame_get_color_range(const AVFrame *frame)
AVBufferRef * buf[AV_NUM_DATA_POINTERS]
AVBuffer references backing the data for this frame.
#define LIBAVCODEC_VERSION_MICRO
planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc)
Return the number of bits per pixel used by the pixel format described by pixdesc.
AVRational sample_aspect_ratio
Video only.
int rc_initial_buffer_occupancy
Number of bits which should be loaded into the rc buffer before decoding starts.
static int do_decode(AVCodecContext *avctx, AVPacket *pkt)
int attribute_align_arg avcodec_receive_packet(AVCodecContext *avctx, AVPacket *avpkt)
Read encoded data from the encoder.
planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
This side data should be associated with a video stream and contains Stereoscopic 3D information in f...
void av_opt_set_defaults(void *s)
Set the values of all AVOption fields to their default values.
const char * avcodec_configuration(void)
Return the libavcodec build-time configuration.
enum AVColorRange color_range
MPEG vs JPEG YUV range.
int nb_extended_buf
Number of elements in extended_buf.
enum AVCodecID codec_id
Specific type of the encoded data (the codec used).
int ff_unlock_avcodec(const AVCodec *codec)
#define FF_SUB_CHARENC_MODE_DO_NOTHING
do nothing (demuxer outputs a stream supposed to be already in UTF-8, or the codec is bitmap for inst...
const char * avcodec_license(void)
Return the libavcodec license.
enum AVPixelFormat pix_fmt
Supported pixel format.
static int get_buffer_internal(AVCodecContext *avctx, AVFrame *frame, int flags)
AVRational sample_aspect_ratio
sample aspect ratio (0 if unknown) That is the width of a pixel divided by the height of the pixel...
static int pad_last_frame(AVCodecContext *s, AVFrame **dst, const AVFrame *src)
Pad last frame with silence.
planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian)
int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
Encode a frame of audio.
enum AVMediaType codec_type
#define AV_CODEC_PROP_TEXT_SUB
Subtitle codec is text based.
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx.
void av_frame_set_pkt_duration(AVFrame *frame, int64_t val)
int av_dict_copy(AVDictionary **dst, const AVDictionary *src, int flags)
Copy entries from one AVDictionary struct into another.
int attribute_align_arg avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, const AVPacket *avpkt)
Decode the audio frame of size avpkt->size from avpkt->data into frame.
enum AVPixelFormat format
The pixel format identifying the underlying HW surface type.
Mastering display metadata associated with a video frame.
int avpriv_codec_get_cap_skip_frame_fill_param(const AVCodec *codec)
void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size)
Same behaviour av_fast_malloc but the buffer has additional AV_INPUT_BUFFER_PADDING_SIZE at the end w...
planar GBR 4:4:4 36bpp, little-endian
The following 12 formats have the disadvantage of needing 1 format for each bit depth.
#define AV_CODEC_CAP_EXPERIMENTAL
Codec is experimental and is thus avoided in favor of non experimental encoders.
void av_frame_move_ref(AVFrame *dst, AVFrame *src)
Move everything contained in src to dst and reset src.
static int convert_sub_to_old_ass_form(AVSubtitle *sub, const AVPacket *pkt, AVRational tb)
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
AVBufferPool * pools[4]
Pools for each data plane.
int(* decode)(AVCodecContext *, void *outdata, int *outdata_size, AVPacket *avpkt)
int bits_per_raw_sample
Bits per sample/pixel of internal libavcodec pixel/sample format.
enum AVPixelFormat ff_thread_get_format(AVCodecContext *avctx, const enum AVPixelFormat *fmt)
Wrapper around get_format() for frame-multithreaded codecs.
int avcodec_enum_to_chroma_pos(int *xpos, int *ypos, enum AVChromaLocation pos)
Converts AVChromaLocation to swscale x/y chroma position.
#define AV_CODEC_CAP_AUTO_THREADS
Codec supports avctx->thread_count == 0 (auto).
int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, AVPacket *avpkt)
Decode a subtitle message.
int trailing_padding
Audio only.
void av_frame_set_pkt_size(AVFrame *frame, int val)
planar GBR 4:4:4 36bpp, big-endian
planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
int block_align
number of bytes per packet if constant and known or 0 Used by some WAV based audio codecs...
uint8_t log2_chroma_w
Amount to shift the luma width right to find the chroma width.
This struct describes the properties of an encoded stream.
AVLockOp
Lock operation used by lockmgr.
int av_bprint_finalize(AVBPrint *buf, char **ret_str)
Finalize a print buffer.
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.
char * text
0 terminated plain UTF-8 text
enum AVColorSpace color_space
unsigned avcodec_get_edge_width(void)
Return the amount of padding in pixels which the get_buffer callback must provide around the edge of ...
const char * av_color_space_name(enum AVColorSpace space)
Macro definitions for various function/variable attributes.
FF_DISABLE_DEPRECATION_WARNINGS void av_log_missing_feature(void *avc, const char *feature, int want_sample)
Log a generic warning message about a missing feature.
static void * codec_mutex