29 #include "libavutil/attributes.h"
30 #include "libavutil/avassert.h"
31 #include "libavutil/avstring.h"
32 #include "libavutil/channel_layout.h"
33 #include "libavutil/crc.h"
34 #include "libavutil/frame.h"
36 #include "libavutil/mathematics.h"
37 #include "libavutil/pixdesc.h"
38 #include "libavutil/imgutils.h"
39 #include "libavutil/samplefmt.h"
40 #include "libavutil/dict.h"
42 #include "libavutil/opt.h"
85 static int initialized = 0;
102 return codec && codec->
decode;
126 #if FF_API_SET_DIMENSIONS
175 *data = matrix_encoding;
180 #if HAVE_SIMD_ALIGN_16
181 # define STRIDE_ALIGN 16
183 # define STRIDE_ALIGN 8
271 *width =
FFALIGN(*width, w_align);
272 *height =
FFALIGN(*height, h_align);
277 for (i = 0; i < 4; i++)
289 align =
FFMAX(linesize_align[0], linesize_align[3]);
290 linesize_align[1] <<= chroma_shift;
291 linesize_align[2] <<= chroma_shift;
292 align =
FFMAX3(align, linesize_align[1], linesize_align[2]);
293 *width =
FFALIGN(*width, align);
298 int buf_size,
int align)
300 int ch, planar, needed_size, ret = 0;
305 if (buf_size < needed_size)
319 sample_fmt, align)) < 0) {
341 int w = frame->
width;
343 int tmpsize, unaligned;
359 for (i = 0; i < 4; i++)
368 for (i = 0; i < 3 && picture.
data[i + 1]; i++)
369 size[i] = picture.
data[i + 1] - picture.
data[i];
370 size[i] = tmpsize - (picture.
data[i] - picture.
data[0]);
372 for (i = 0; i < 4; i++) {
377 if (!pool->
pools[i]) {
392 int planes = planar ? ch : 1;
405 if (!pool->
pools[0]) {
420 for (i = 0; i < 4; i++)
431 int planes = pool->
planes;
481 memset(pic->
data, 0,
sizeof(pic->
data));
484 for (i = 0; i < 4 && pool->
pools[i]; i++) {
516 #if FF_API_GET_BUFFER
532 #if FF_API_GET_BUFFER
588 memcpy(frame_sd->
data, packet_sd, size);
597 memcpy(frame_sd->
data, packet_sd, size);
606 memcpy(frame_sd->
data, packet_sd, size);
615 int override_dimensions = 1;
623 override_dimensions = 0;
669 default:
return AVERROR(EINVAL);
681 #if FF_API_GET_BUFFER
714 priv->
avctx = *avctx;
715 priv->
frame = *frame;
723 #define WRAP_PLANE(ref_out, data, data_size) \
725 AVBufferRef *dummy_ref = av_buffer_ref(dummy_buf); \
727 ret = AVERROR(ENOMEM); \
730 ref_out = av_buffer_create(data, data_size, compat_release_buffer, \
733 av_frame_unref(frame); \
734 ret = AVERROR(ENOMEM); \
747 if (!desc || planes <= 0) {
752 for (i = 0; i < planes; i++) {
760 planes = planar ? avctx->
channels : 1;
839 #if FF_API_GET_BUFFER
856 for (i = 0; i < count; i++) {
857 int r = func(c, (
char *)arg + i * size);
868 for (i = 0; i < count; i++) {
869 int r = func(c, arg, i, 0);
895 if (hwaccel->
id == codec_id
896 && hwaccel->
pix_fmt == pix_fmt)
923 "Could not find an AVHWAccel for the pixel format: %s",
935 err = hwaccel->
init(avctx);
947 #if FF_API_AVFRAME_LAVC
948 void avcodec_get_frame_defaults(
AVFrame *frame)
953 memset(frame, 0,
sizeof(
AVFrame));
962 AVFrame *avcodec_alloc_frame(
void)
970 avcodec_get_frame_defaults(frame);
976 void avcodec_free_frame(
AVFrame **frame)
990 if ((!codec && !avctx->
codec)) {
994 if ((codec && avctx->
codec && codec != avctx->
codec)) {
996 "but %s passed to avcodec_open2().\n", avctx->
codec->
name, codec->
name);
1000 codec = avctx->
codec;
1016 av_log(avctx,
AV_LOG_ERROR,
"insufficient thread locking around avcodec_open/close()\n");
1093 avctx->
codec = codec;
1208 else if (channels != avctx->
channels) {
1210 "channel layout does not match number of channels\n");
1252 #if FF_API_DESTRUCT_PACKET
1258 if (avpkt->
size < size)
1262 #if FF_API_DESTRUCT_PACKET
1317 int *got_packet_ptr)
1322 int user_packet = !!avpkt->
data;
1324 *got_packet_ptr = 0;
1337 "with more than %d channels, but extended_data is not set.\n",
1360 frame = padded_frame;
1371 ret = avctx->
codec->
encode2(avctx, avpkt, frame, got_packet_ptr);
1373 if (*got_packet_ptr) {
1386 if (!user_packet && avpkt->
size) {
1395 if (ret < 0 || !*got_packet_ptr) {
1415 int *got_packet_ptr)
1418 int user_packet = !!avpkt->
data;
1420 *got_packet_ptr = 0;
1434 ret = avctx->
codec->
encode2(avctx, avpkt, frame, got_packet_ptr);
1436 if (!*got_packet_ptr)
1441 if (!user_packet && avpkt->
size) {
1450 if (ret < 0 || !*got_packet_ptr)
1484 "changes, but PARAM_CHANGE side data was sent to it.\n");
1491 flags = bytestream_get_le32(&data);
1497 avctx->
channels = bytestream_get_le32(&data);
1515 avctx->
width = bytestream_get_le32(&data);
1516 avctx->
height = bytestream_get_le32(&data);
1575 int *got_picture_ptr,
1581 *got_picture_ptr = 0;
1600 ret = avctx->
codec->
decode(avctx, picture, got_picture_ptr,
1614 if (*got_picture_ptr) {
1657 ret = avctx->
codec->
decode(avctx, frame, got_frame_ptr, avpkt);
1658 if (ret >= 0 && *got_frame_ptr) {
1685 ret = avctx->
codec->
decode(avctx, sub, got_sub_ptr, avpkt);
1758 return experimental;
1802 int bits_per_sample;
1824 int i,
len, ret = 0;
1826 #define TAG_PRINT(x) \
1827 (((x) >= '0' && (x) <= '9') || \
1828 ((x) >= 'a' && (x) <= 'z') || ((x) >= 'A' && (x) <= 'Z') || \
1829 ((x) == '.' || (x) == ' '))
1831 for (i = 0; i < 4; i++) {
1832 len = snprintf(buf, buf_size,
1833 TAG_PRINT(codec_tag & 0xFF) ?
"%c" :
"[%d]", codec_tag & 0xFF);
1835 buf_size = buf_size > len ? buf_size - len : 0;
1844 const char *codec_name;
1845 const char *profile =
NULL;
1859 codec_name = p->
name;
1864 codec_name =
"mpeg2ts";
1869 snprintf(buf1,
sizeof(buf1),
"%s / 0x%04X", tag_buf, enc->
codec_tag);
1875 snprintf(buf, buf_size,
1879 snprintf(buf + strlen(buf), buf_size - strlen(buf),
1882 snprintf(buf + strlen(buf), buf_size - strlen(buf),
1887 snprintf(buf + strlen(buf), buf_size - strlen(buf),
1895 snprintf(buf + strlen(buf), buf_size - strlen(buf),
1896 " [PAR %d:%d DAR %d:%d]",
1898 display_aspect_ratio.
num, display_aspect_ratio.
den);
1902 snprintf(buf + strlen(buf), buf_size - strlen(buf),
1908 snprintf(buf + strlen(buf), buf_size - strlen(buf),
1909 ", q=%d-%d", enc->
qmin, enc->
qmax);
1913 snprintf(buf, buf_size,
1917 snprintf(buf + strlen(buf), buf_size - strlen(buf),
1920 snprintf(buf + strlen(buf), buf_size - strlen(buf),
1926 snprintf(buf + strlen(buf), buf_size - strlen(buf),
1931 snprintf(buf, buf_size,
"Data: %s", codec_name);
1934 snprintf(buf, buf_size,
"Subtitle: %s", codec_name);
1937 snprintf(buf, buf_size,
"Attachment: %s", codec_name);
1940 snprintf(buf, buf_size,
"Invalid Codec type %d", enc->
codec_type);
1945 snprintf(buf + strlen(buf), buf_size - strlen(buf),
1948 snprintf(buf + strlen(buf), buf_size - strlen(buf),
1953 snprintf(buf + strlen(buf), buf_size - strlen(buf),
1954 ", %d kb/s", bitrate / 1000);
1983 #define LICENSE_PREFIX "libavcodec license: "
2073 if (bps > 0 && ch > 0 && frame_bytes > 0)
2074 return (frame_bytes * 8) / (bps * ch);
2101 return 256 * sr / 245;
2106 return (480 << (sr / 22050)) / ch;
2114 case 20:
return 160;
2115 case 19:
return 144;
2116 case 29:
return 288;
2117 case 37:
return 480;
2121 case 38:
return 160;
2122 case 50:
return 240;
2127 if (frame_bytes > 0) {
2130 return 240 * (frame_bytes / 32);
2132 return 256 * (frame_bytes / 64);
2137 return frame_bytes * 8 /
bps;
2145 return (frame_bytes - 4 * ch) * 2 / ch;
2147 return (frame_bytes - 4) * 2 / ch;
2149 return (frame_bytes - 8) * 2 / ch;
2151 return (frame_bytes / 128) * 224 / ch;
2153 return (frame_bytes - 6 - ch) / ch;
2155 return (frame_bytes - 8) / ch;
2157 return (frame_bytes - 2 * ch) / ch;
2159 return 3 * frame_bytes / ch;
2161 return 6 * frame_bytes / ch;
2163 return 2 * (frame_bytes / (5 * ch));
2170 return frame_bytes / ch;
2172 return frame_bytes * 2 / ch;
2178 int blocks = frame_bytes / ba;
2181 return blocks * (1 + (ba - 4 * ch) / (4 * ch) * 8);
2183 return blocks * (((ba - 16) * 2 / 3 * 4) / ch);
2185 return blocks * (1 + (ba - 4 * ch) * 2 / ch);
2187 return blocks * (2 + (ba - 7 * ch) * 2 / ch);
2195 return 2 * (frame_bytes / ((bps * 2 / 8) * ch));
2197 return frame_bytes / ((
FFALIGN(ch, 2) *
bps) / 8);
2199 return 2 * (frame_bytes / ((bps + 4) / 4)) / ch;
2233 for (i = 0; i < size && !(
tab[i][0] == a &&
tab[i][1] ==
b); i++) ;
2237 #if FF_API_MISSING_SAMPLE
2242 "version to the newest one from Git. If the problem still "
2243 "occurs, it means that your file has a feature which has not "
2244 "been implemented.\n", feature);
2251 va_list argument_list;
2253 va_start(argument_list, msg);
2258 "of this file to ftp://upload.libav.org/incoming/ "
2259 "and contact the libav-devel mailing list.\n");
2261 va_end(argument_list);
2404 for (i = 0; i < 3; i++) {
2405 uint32_t tmp = *state << 8;
2406 *state = tmp + *(p++);
2407 if (tmp == 0x100 || p == end)
2412 if (p[-1] > 1 ) p += 3;
2413 else if (p[-2] ) p += 2;
2414 else if (p[-3]|(p[-1]-1)) p++;
2421 p =
FFMIN(p, end) - 4;
#define WRAP_PLANE(ref_out, data, data_size)
#define FF_SANE_NB_CHANNELS
static int apply_param_change(AVCodecContext *avctx, AVPacket *avpkt)
uint64_t av_get_default_channel_layout(int nb_channels)
Return default channel layout for a given number of channels.
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
static AVCodec * find_encdec(enum AVCodecID id, int encoder)
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
const char * avcodec_configuration(void)
Return the libavcodec build-time configuration.
const char * avcodec_license(void)
Return the libavcodec license.
int av_pix_fmt_count_planes(enum AVPixelFormat pix_fmt)
void av_buffer_unref(AVBufferRef **buf)
Free a given reference and automatically free the buffer if there are no more references to it...
void av_free_packet(AVPacket *pkt)
Free a packet.
This structure describes decoded (raw) audio or video data.
int(* init)(AVCodecContext *avctx)
Initialize the hwaccel private data.
int stride_align[AV_NUM_DATA_POINTERS]
A dummy id pointing at the start of audio codecs.
#define CODEC_FLAG_PASS2
Use internal 2pass ratecontrol in second pass mode.
#define CODEC_CAP_VARIABLE_FRAME_SIZE
Audio encoder supports receiving a different number of samples in each call.
int coded_width
Bitstream width / height, may be different from width/height e.g.
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.
enum AVSampleFormat * sample_fmts
array of supported sample formats, or NULL if unknown, array is terminated by -1
int linesize[AV_NUM_DATA_POINTERS]
number of bytes per line
#define AV_LOG_WARNING
Something somehow does not look correct.
uint8_t * subtitle_header
Header containing style information for text subtitles.
#define CODEC_FLAG_PASS1
Use internal 2pass ratecontrol in first pass mode.
packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr
int rc_initial_buffer_occupancy
Number of bits which should be loaded into the rc buffer before decoding starts.
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.
enum AVColorRange color_range
MPEG vs JPEG YUV range.
int nb_extended_buf
Number of elements in extended_buf.
uint8_t ** extended_data
pointers to the data planes/channels.
enum AVPixelFormat pix_fmt
Supported pixel format.
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.
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.
AVPacket * pkt
Current packet as passed into the decoder, to avoid having to pass the packet into every function...
void av_log(void *avcl, int level, const char *fmt,...) av_printf_format(3
Send the specified message to the log if the level is less than or equal to the current av_log_level...
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx.
planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian)
void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size)
Allocate a buffer with padding, reusing the given one if large enough.
A dummy ID pointing at the start of various fake codecs.
void av_frame_move_ref(AVFrame *dst, AVFrame *src)
Move everythnig contained in src to dst and reset src.
size_t av_get_codec_tag_string(char *buf, size_t buf_size, unsigned int codec_tag)
Put a string representing the codec tag codec_tag in buf.
AVBufferPool * pools[4]
Pools for each data plane.
int(* decode)(AVCodecContext *, void *outdata, int *outdata_size, AVPacket *avpkt)
int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
Encode a frame of audio.
planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, AVPacket *avpkt)
Decode a subtitle message.
void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic)
attribute_deprecated int(* get_buffer)(struct AVCodecContext *c, AVFrame *pic)
Called at the beginning of each frame to get a buffer for it.
four components are given, that's all.
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.
AVLockOp
Lock operation used by lockmgr.
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.
uint8_t * extradata
some codecs need / can use extradata like Huffman tables.
attribute_deprecated void(* release_buffer)(struct AVCodecContext *c, AVFrame *pic)
Called to release buffers which were allocated with get_buffer.
packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb)
unsigned avcodec_get_edge_width(void)
Return the amount of padding in pixels which the get_buffer callback must provide around the edge of ...
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
AVBufferRef * buf
A reference to the reference-counted buffer where the packet data is stored.
AVFrame * av_frame_alloc(void)
Allocate an AVFrame and set its fields to default values.
AVRational time_base
This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented...
void av_freep(void *ptr)
Free a memory block which has been allocated with av_malloc(z)() or av_realloc() and set the pointer ...
planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
int av_codec_is_decoder(const AVCodec *codec)
int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels, enum AVSampleFormat sample_fmt, const uint8_t *buf, int buf_size, int align)
Fill audio frame data and linesize.
int av_codec_is_encoder(const AVCodec *codec)
void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height)
Modify width and height values so that they will result in a memory buffer that is acceptable for the...
packed YUV 4:2:2, 16bpp, Y0 Cr Y1 Cb
static int volatile entangled_thread_counter
enum AVPixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum AVPixelFormat *fmt)
enum AVSampleFormat sample_fmt
audio sample format
Opaque data information usually continuous.
planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
attribute_deprecated void(* destruct)(struct AVPacket *)
int avpriv_set_systematic_pal2(uint32_t pal[256], enum AVPixelFormat pix_fmt)
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.
static AVCodec * first_avcodec
This side data contains a 3x3 transformation matrix describing an affine transformation that needs to...
int ff_side_data_update_matrix_encoding(AVFrame *frame, enum AVMatrixEncoding matrix_encoding)
Add or update AV_FRAME_DATA_MATRIXENCODING side data.
Multithreading support functions.
AVCodec * avcodec_find_decoder_by_name(const char *name)
Find a registered decoder with the specified name.
AVFrameSideData * av_frame_new_side_data(AVFrame *frame, enum AVFrameSideDataType type, int size)
Add a new side data to a frame.
int av_frame_ref(AVFrame *dst, const AVFrame *src)
Set up a new reference to the data described by the source frame.
int64_t pts
Presentation timestamp in time_base units (time when frame should be shown to user).
int ff_reget_buffer(AVCodecContext *avctx, AVFrame *frame)
Identical in function to av_frame_make_writable(), except it uses ff_get_buffer() to allocate the buf...
const char * name
Name of the codec implementation.
int attribute_align_arg avcodec_encode_video2(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
Encode a frame of video.
AVBufferRef * av_buffer_create(uint8_t *data, int size, void(*free)(void *opaque, uint8_t *data), void *opaque, int flags)
Create an AVBuffer from an existing array.
#define CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
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.
planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
struct AVCodecInternal * internal
Private context used for internal data.
#define AV_NUM_DATA_POINTERS
enum AVSampleFormat av_get_planar_sample_fmt(enum AVSampleFormat sample_fmt)
Get the planar alternative form of the given sample format.
int ff_match_2uint16(const uint16_t(*tab)[2], int size, int a, int b)
Return the index into tab at which {a,b} match elements {[0],[1]} of tab.
int bits_per_coded_sample
bits per sample/pixel from the demuxer (needed for huffyuv).
int ff_set_sar(AVCodecContext *avctx, AVRational sar)
Check that the provided sample aspect ratio is valid and set it on the codec context.
uint8_t * data[AV_NUM_DATA_POINTERS]
int duration
Duration of this packet in AVStream->time_base units, 0 if unknown.
void av_dict_copy(AVDictionary **dst, const AVDictionary *src, int flags)
Copy entries from one AVDictionary struct into another.
enum AVChromaLocation chroma_sample_location
This defines the location of chroma samples.
#define FF_BUFFER_TYPE_INTERNAL
int av_sample_fmt_is_planar(enum AVSampleFormat sample_fmt)
Check if the sample format is planar.
static void compat_release_buffer(void *opaque, uint8_t *data)
#define AV_PKT_FLAG_KEY
The packet contains a keyframe.
planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
const OptionDef options[]
void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, int linesize_align[AV_NUM_DATA_POINTERS])
Modify width and height values so that they will result in a memory buffer that is acceptable for the...
static av_cold void avcodec_init(void)
int ff_thread_decode_frame(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, AVPacket *avpkt)
Submit a new frame to a decoding thread.
void avcodec_set_dimensions(AVCodecContext *s, int width, int height)
Libavcodec version macros.
int(* close)(AVCodecContext *)
av_cold int avcodec_close(AVCodecContext *avctx)
Close a given AVCodecContext and free all the data associated with it (but not the AVCodecContext its...
int av_new_packet(AVPacket *pkt, int size)
Allocate the payload of a packet and initialize its fields with default values.
AVCodecID
Identify the syntax and semantics of the bitstream.
int width
width and height of the video frame
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
int av_get_bits_per_sample(enum AVCodecID codec_id)
Return codec bits per sample.
void av_free(void *ptr)
Free a memory block which has been allocated with av_malloc(z)() or av_realloc(). ...
packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3
planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples)
uint8_t log2_chroma_h
Amount to shift the luma height right to find the chroma height.
planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian)
int av_samples_set_silence(uint8_t **audio_data, int offset, int nb_samples, int nb_channels, enum AVSampleFormat sample_fmt)
Fill an audio buffer with silence.
#define CODEC_CAP_PARAM_CHANGE
Codec supports changed parameters at any point.
AVHWAccel * av_hwaccel_next(const AVHWAccel *hwaccel)
If hwaccel is NULL, returns the first registered hardware accelerator, if hwaccel is non-NULL...
#define CODEC_CAP_DELAY
Encoder or decoder requires flushing with NULL input at the end in order to give the complete and cor...
An AV_PKT_DATA_PARAM_CHANGE side data packet is laid out as follows:
planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples)
unsigned int avpriv_toupper4(unsigned int x)
void av_frame_free(AVFrame **frame)
Free the frame and any dynamically allocated objects in it, e.g.
AVCodec * avcodec_find_encoder(enum AVCodecID id)
Find a registered encoder with a matching codec ID.
int qmax
maximum quantizer
#define CODEC_CAP_SMALL_LAST_FRAME
Codec can be fed a final frame with a smaller size.
int active_thread_type
Which multithreading methods are in use by the codec.
int avcodec_is_open(AVCodecContext *s)
int capabilities
Codec capabilities.
enum AVColorRange color_range
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
int ff_thread_init(AVCodecContext *s)
void av_dict_free(AVDictionary **m)
Free all the memory allocated for an AVDictionary struct and all keys and values. ...
int av_get_channel_layout_nb_channels(uint64_t channel_layout)
Return the number of channels in the channel layout.
enum AVColorSpace colorspace
int64_t av_const av_gcd(int64_t a, int64_t b)
Return the greatest common divisor of a and b.
enum AVMediaType avcodec_get_type(enum AVCodecID codec_id)
Get the type of the given codec.
int av_log_get_level(void)
Get the current log level.
int av_buffer_realloc(AVBufferRef **buf, int size)
Reallocate a given buffer.
planar GBR 4:4:4 30bpp, little-endian
void ff_thread_free(AVCodecContext *avctx)
Libavcodec external API header.
AVPixelFormat
Pixel format.
av_cold void ff_me_cmp_init_static(void)
int av_frame_copy(AVFrame *dst, const AVFrame *src)
Copy the frame data from src to dst.
int priv_data_size
Size of the private data to allocate in AVCodecInternal.hwaccel_priv_data.
int flags
A combination of AV_PKT_FLAG values.
uint64_t channel_layout
Audio channel layout.
int rc_buffer_size
decoder bitstream buffer size
uint64_t channel_layout
Channel layout of the audio data.
int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max)
Reduce a fraction.
int(* encode_sub)(AVCodecContext *, uint8_t *buf, int buf_size, const struct AVSubtitle *sub)
common internal API header
#define FF_INPUT_BUFFER_PADDING_SIZE
Required number of additionally allocated bytes at the end of the input bitstream for decoding...
#define FF_MAX_EXTRADATA_SIZE
Maximum size in bytes of extradata.
planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
static AVHWAccel * find_hwaccel(enum AVCodecID codec_id, enum AVPixelFormat pix_fmt)
AVFrameSideData * av_frame_get_side_data(const AVFrame *frame, enum AVFrameSideDataType type)
int av_image_check_size(unsigned int w, unsigned int h, int log_offset, void *log_ctx)
Check if the given dimension of an image is valid, meaning that all bytes of the image can be address...
static int update_frame_pool(AVCodecContext *avctx, AVFrame *frame)
int bit_rate
the average bitrate
planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples)
uint8_t * data
The data buffer.
int err_recognition
Error recognition; may misdetect some more or less valid parts as errors.
AVPicture pict
data+linesize for the bitmap of this subtitle.
const uint8_t * avpriv_find_start_code(const uint8_t *restrict p, const uint8_t *end, uint32_t *restrict state)
int av_get_exact_bits_per_sample(enum AVCodecID codec_id)
Return codec bits per sample.
int(* alloc_frame)(AVCodecContext *avctx, AVFrame *frame)
Allocate a custom buffer.
static int is_hwaccel_pix_fmt(enum AVPixelFormat pix_fmt)
uint8_t * av_packet_get_side_data(AVPacket *pkt, enum AVPacketSideDataType type, int *size)
Get side information from packet.
int width
picture width / height.
attribute_deprecated int reference
void * av_malloc(size_t size) av_malloc_attrib 1(1)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
FF_ENABLE_DEPRECATION_WARNINGS int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame)
Set various frame properties from the codec context / packet data.
#define CODEC_CAP_AUTO_THREADS
Codec supports avctx->thread_count == 0 (auto).
enum AVColorPrimaries color_primaries
Chromaticity coordinates of the source primaries.
#define FF_ARRAY_ELEMS(a)
void ff_thread_finish_setup(AVCodecContext *avctx)
If the codec defines update_thread_context(), call this when they are ready for the next thread to st...
packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1
int64_t reordered_opaque
opaque 64bit number (generally a PTS) that will be reordered and output in AVFrame.reordered_opaque
static int video_get_buffer(AVCodecContext *s, AVFrame *pic)
int refcounted_frames
If non-zero, the decoded audio and video frames returned from avcodec_decode_video2() and avcodec_dec...
planar GBR 4:4:4 30bpp, big-endian
#define FF_PROFILE_UNKNOWN
int mb_decision
macroblock decision mode
Usually treated as AVMEDIA_TYPE_DATA.
void av_log_ask_for_sample(void *avc, const char *msg,...)
char * ass
0 terminated ASS/SSA compatible event line.
Opaque data information usually sparse.
int ff_alloc_packet(AVPacket *avpkt, int size)
Check AVPacket size and/or allocate data.
AVBufferRef ** extended_buf
For planar audio which requires more than AV_NUM_DATA_POINTERS AVBufferRef pointers, this array will hold all the references which cannot fit into AVFrame.buf.
#define LIBAVCODEC_VERSION_INT
enum AVPixelFormat pix_fmt
static pthread_mutex_t * mutex
static int audio_get_buffer(AVCodecContext *avctx, AVFrame *frame)
AVBufferRef * av_buffer_pool_get(AVBufferPool *pool)
Allocate a new AVBuffer, reusing an old buffer from the pool when available.
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
#define FF_COMPLIANCE_EXPERIMENTAL
Allow nonstandardized experimental things.
#define AVERROR_EXPERIMENTAL
Requested feature is flagged experimental. Set strict_std_compliance if you really want to use it...
int thread_count
thread count is used to decide how many independent tasks should be passed to execute() ...
const AVPixFmtDescriptor * av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
8 bit with PIX_FMT_RGB32 palette
void avcodec_flush_buffers(AVCodecContext *avctx)
Reset the internal decoder state / flush internal buffers.
AVCodec * avcodec_find_decoder(enum AVCodecID id)
Find a registered decoder with a matching codec ID.
int format
format of the frame, -1 if unknown or unset Values correspond to enum AVPixelFormat for video frames...
AVCodec * av_codec_next(const AVCodec *c)
If c is NULL, returns the first registered codec, if c is non-NULL, returns the next registered codec...
int frame_size
Number of samples per channel in an audio frame.
#define attribute_align_arg
#define AV_PIX_FMT_FLAG_HWACCEL
Pixel format is an HW accelerated format.
int avcodec_default_get_buffer2(AVCodecContext *avctx, AVFrame *frame, int flags)
The default callback for AVCodecContext.get_buffer2().
int av_image_fill_pointers(uint8_t *data[4], enum AVPixelFormat pix_fmt, int height, uint8_t *ptr, const int linesizes[4])
Fill plane data pointers for an image with pixel format pix_fmt and height height.
enum AVMediaType codec_type
void(* init_static_data)(struct AVCodec *codec)
Initialize codec static data, called from avcodec_register().
int avcodec_default_reget_buffer(AVCodecContext *s, AVFrame *pic)
AVSampleFormat
Audio Sample Formats.
This side data contains a 3x3 transformation matrix describing an affine transformation that needs to...
int av_frame_is_writable(AVFrame *frame)
Check if the frame data is writable.
int av_opt_set_dict(void *obj, struct AVDictionary **options)
int sample_rate
samples per second
#define AV_PIX_FMT_RGB555
const char * name
short name for the profile
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes...
main external API structure.
#define FF_THREAD_FRAME
Decode more than one frame at once.
int qmin
minimum quantizer
packed RGB 8:8:8, 24bpp, BGRBGR...
void avsubtitle_free(AVSubtitle *sub)
Free all allocated data in the given subtitle struct.
AVRational sample_aspect_ratio
Sample aspect ratio for the video frame, 0/1 if unknown/unspecified.
unsigned int codec_tag
fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').
planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV422P and setting color_...
planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
int av_samples_copy(uint8_t **dst, uint8_t *const *src, int dst_offset, int src_offset, int nb_samples, int nb_channels, enum AVSampleFormat sample_fmt)
Copy samples from src to dst.
AVBufferRef * buf[AV_NUM_DATA_POINTERS]
AVBuffer references backing the data for this frame.
#define AVERROR_BUG
Bug detected, please report the issue.
unsigned int av_xiphlacing(unsigned char *s, unsigned int v)
Encode extradata length to a buffer.
int64_t reordered_opaque
reordered opaque 64bit (generally an integer or a double precision float PTS but can be anything)...
Describe the class of an AVClass context structure.
int sample_rate
Sample rate of the audio data.
enum AVPixelFormat(* get_format)(struct AVCodecContext *s, const enum AVPixelFormat *fmt)
callback to negotiate the pixelFormat
int av_image_fill_linesizes(int linesizes[4], enum AVPixelFormat pix_fmt, int width)
Fill plane linesizes for an image with pixel format pix_fmt and width width.
void av_buffer_pool_uninit(AVBufferPool **pool)
Mark the pool as being available for freeing.
int av_samples_get_buffer_size(int *linesize, int nb_channels, int nb_samples, enum AVSampleFormat sample_fmt, int align)
Get the required buffer size for the given audio parameters.
enum AVColorSpace colorspace
YUV colorspace type.
rational number numerator/denominator
enum AVColorTransferCharacteristic color_trc
Color Transfer Characteristic.
void ff_thread_release_buffer(AVCodecContext *avctx, ThreadFrame *f)
Wrapper around release_buffer() frame-for multithreaded codecs.
AVFrame * coded_frame
the picture in the bitstream
void void av_vlog(void *avcl, int level, const char *fmt, va_list vl)
Send the specified message to the log if the level is less than or equal to the current av_log_level...
const int * supported_samplerates
array of supported audio samplerates, or NULL if unknown, array is terminated by 0 ...
int linesize[AV_NUM_DATA_POINTERS]
For video, size in bytes of each picture line.
int(* get_buffer2)(struct AVCodecContext *s, AVFrame *frame, int flags)
This callback is called at the beginning of each frame to get data buffer(s) for it.
static FF_ENABLE_DEPRECATION_WARNINGS AVHWAccel * first_hwaccel
enum AVChromaLocation chroma_location
int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options)
Initialize the AVCodecContext to use the given AVCodec.
planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb)
planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian)
int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes)
Return audio frame duration.
planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV444P and setting color_...
size_t av_strlcat(char *dst, const char *src, size_t size)
Append the string src to the string dst, but to a total length of no more than size - 1 bytes...
int64_t pkt_pts
PTS copied from the AVPacket that was decoded to produce this frame.
int av_frame_get_buffer(AVFrame *frame, int align)
Allocate new buffer(s) for audio or video data.
void av_frame_unref(AVFrame *frame)
Unreference all the buffers referenced by frame and reset the frame fields.
This side data should be associated with an audio stream and contains ReplayGain information in form ...
int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags)
Get a buffer for a frame.
planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
planar YUV 4:4:0 full scale (JPEG), deprecated in favor of PIX_FMT_YUV440P and setting color_range ...
planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples)
static int av_toupper(int c)
Locale-independent conversion of ASCII characters to uppercase.
planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
int64_t pkt_dts
DTS copied from the AVPacket that triggered returning this frame.
A reference to a data buffer.
static int op(uint8_t **dst, const uint8_t *dst_end, GetByteContext *gb, int pixel, int count, int *x, int width, int linesize)
Perform decode operation.
void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size)
Allocate a buffer, reusing the given one if large enough.
void av_opt_free(void *obj)
Free all allocated objects in obj.
#define FF_DISABLE_DEPRECATION_WARNINGS
AVBufferPool * av_buffer_pool_init(int size, AVBufferRef *(*alloc)(int size))
Allocate and initialize a buffer pool.
common internal api header.
int avpriv_lock_avformat(void)
void av_register_hwaccel(AVHWAccel *hwaccel)
Register the hardware accelerator hwaccel.
int(* uninit)(AVCodecContext *avctx)
Uninitialize the hwaccel private data.
void * hwaccel_priv_data
hwaccel-specific private data
uint32_t start_display_time
#define CODEC_CAP_EXPERIMENTAL
Codec is experimental and is thus avoided in favor of non experimental encoders.
enum AVCodecID id
Codec implemented by the hardware accelerator.
void ff_thread_report_progress(ThreadFrame *f, int progress, int field)
Notify later decoding threads when part of their reference picture is ready.
planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples)
void av_init_packet(AVPacket *pkt)
Initialize optional fields of a packet with default values.
planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
const char * av_get_profile_name(const AVCodec *codec, int profile)
Return a name for the specified profile, if available.
int avcodec_default_execute2(AVCodecContext *c, int(*func)(AVCodecContext *c2, void *arg2, int jobnr, int threadnr), void *arg, int *ret, int count)
enum AVPixelFormat * pix_fmts
array of supported pixel formats, or NULL if unknown, array is terminated by -1
const struct AVCodec * codec
planar GBR 4:4:4 27bpp, little-endian
void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
FAKE codec to indicate a raw MPEG-2 TS stream (only used by libavformat)
Y , 16bpp, little-endian.
int av_samples_fill_arrays(uint8_t **audio_data, int *linesize, const uint8_t *buf, int nb_channels, int nb_samples, enum AVSampleFormat sample_fmt, int align)
Fill channel data pointers and linesize for samples with sample format sample_fmt.
AVBufferRef * av_buffer_ref(AVBufferRef *buf)
Create a new reference to an AVBuffer.
void ff_thread_flush(AVCodecContext *avctx)
Wait for decoding threads to finish and reset internal state.
#define FF_ENABLE_DEPRECATION_WARNINGS
as in Berlin toast format
struct AVHWAccel * hwaccel
Hardware accelerator in use.
int channels
number of audio channels
planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian)
const AVClass * priv_class
AVClass for the private context.
unsigned avcodec_version(void)
Return the LIBAVCODEC_VERSION_INT constant.
static void * avformat_mutex
int key_frame
1 -> keyframe, 0-> not
static int get_bit_rate(AVCodecContext *ctx)
int attribute_align_arg avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, AVPacket *avpkt)
Decode the video frame of size avpkt->size from avpkt->data into picture.
enum AVColorPrimaries color_primaries
static const struct twinvq_data tab
void ff_thread_await_progress(ThreadFrame *f, int progress, int field)
Wait for earlier decoding threads to finish reference pictures.
int64_t dts
Decompression timestamp in AVStream->time_base units; the time at which the packet is decompressed...
planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV420P and setting color_...
av_cold void avcodec_register(AVCodec *codec)
Register the codec codec and initialize libavcodec.
int frame_number
Frame counter, set by libavcodec.
static int unrefcount_frame(AVCodecInternal *avci, AVFrame *frame)
enum AVColorTransferCharacteristic color_trc
int ff_get_format(AVCodecContext *avctx, const enum AVPixelFormat *fmt)
Select the (possibly hardware accelerated) pixel format.
int ff_thread_ref_frame(ThreadFrame *dst, ThreadFrame *src)
static int(* lockmgr_cb)(void **mutex, enum AVLockOp op)
#define av_assert0(cond)
assert() equivalent, that is always enabled.
static av_always_inline int64_t ff_samples_to_time_base(AVCodecContext *avctx, int64_t samples)
Rescale from sample rate to AVCodecContext.time_base.
planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
int ff_thread_get_buffer(AVCodecContext *avctx, ThreadFrame *f, int flags)
Wrapper around get_buffer() for frame-multithreaded codecs.
char * text
0 terminated plain UTF-8 text
planar GBR 4:4:4 27bpp, big-endian
int avpriv_unlock_avformat(void)
ReplayGain information in the form of the AVReplayGain struct.
int(* init)(AVCodecContext *)
attribute_deprecated int type
AVCodec * avcodec_find_encoder_by_name(const char *name)
Find a registered encoder with the specified name.
Stereoscopic 3d metadata.
This structure stores compressed data.
int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, const AVSubtitle *sub)
int(* encode2)(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet_ptr)
Encode data to an AVPacket.
#define AV_GET_BUFFER_FLAG_REF
The decoder will keep a reference to the frame and may reuse it later.
int nb_samples
number of audio samples (per channel) described by this frame
int strict_std_compliance
strictly follow the standard (MPEG4, ...).
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
const uint64_t * channel_layouts
array of support channel layouts, or NULL if unknown. array is terminated by 0
The data is the AVMatrixEncoding enum defined in libavutil/channel_layout.h.
int64_t pts
Presentation timestamp in AVStream->time_base units; the time at which the decompressed packet will b...
planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples)
A dummy ID pointing at the start of subtitle codecs.
int av_frame_copy_props(AVFrame *dst, const AVFrame *src)
Copy only "metadata" fields from src to dst.
#define AV_NOPTS_VALUE
Undefined timestamp value.
static void compat_free_buffer(void *opaque, uint8_t *data)
const AVProfile * profiles
array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN} ...
void * av_mallocz(size_t size) av_malloc_attrib 1(1)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
int avcodec_default_execute(AVCodecContext *c, int(*func)(AVCodecContext *c2, void *arg2), void *arg, int *ret, int count, int size)
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.
int last_audio_frame
An audio frame with less than required samples has been submitted and padded with silence...
FF_DISABLE_DEPRECATION_WARNINGS int avcodec_default_get_buffer(AVCodecContext *avctx, AVFrame *frame)
int attribute_align_arg avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, AVPacket *avpkt)
Decode the audio frame of size avpkt->size from avpkt->data into frame.