Updated FFmpeg.

This commit is contained in:
Christopher Snowhill 2018-11-14 02:29:20 -08:00
parent 9e84e8cabc
commit 26ee932828
29 changed files with 469 additions and 79 deletions

View File

@ -409,6 +409,7 @@ enum AVCodecID {
AV_CODEC_ID_DXV,
AV_CODEC_ID_SCREENPRESSO,
AV_CODEC_ID_RSCC,
AV_CODEC_ID_AVS2,
AV_CODEC_ID_Y41P = 0x8000,
AV_CODEC_ID_AVRP,
@ -446,6 +447,11 @@ enum AVCodecID {
AV_CODEC_ID_SVG,
AV_CODEC_ID_GDV,
AV_CODEC_ID_FITS,
AV_CODEC_ID_IMM4,
AV_CODEC_ID_PROSUMER,
AV_CODEC_ID_MWSC,
AV_CODEC_ID_WCMV,
AV_CODEC_ID_RASC,
/* various PCM "codecs" */
AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs
@ -485,6 +491,7 @@ enum AVCodecID {
AV_CODEC_ID_PCM_S64BE,
AV_CODEC_ID_PCM_F16LE,
AV_CODEC_ID_PCM_F24LE,
AV_CODEC_ID_PCM_VIDC,
/* various ADPCM codecs */
AV_CODEC_ID_ADPCM_IMA_QT = 0x11000,
@ -637,6 +644,7 @@ enum AVCodecID {
AV_CODEC_ID_APTX,
AV_CODEC_ID_APTX_HD,
AV_CODEC_ID_SBC,
AV_CODEC_ID_ATRAC9,
/* subtitle codecs */
AV_CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs.
@ -665,6 +673,7 @@ enum AVCodecID {
AV_CODEC_ID_PJS,
AV_CODEC_ID_ASS,
AV_CODEC_ID_HDMV_TEXT_SUBTITLE,
AV_CODEC_ID_TTML,
/* other specific kind of codecs (generally used for attachments) */
AV_CODEC_ID_FIRST_UNKNOWN = 0x18000, ///< A dummy ID pointing at the start of various fake codecs.
@ -1062,6 +1071,13 @@ typedef struct RcOverride{
*/
#define AV_CODEC_CAP_HYBRID (1 << 19)
/**
* This codec takes the reordered_opaque field from input AVFrames
* and returns it in the corresponding field in AVCodecContext after
* encoding.
*/
#define AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE (1 << 20)
/**
* Pan Scan area.
* This specifies the area which should be displayed.
@ -1344,6 +1360,25 @@ enum AVPacketSideDataType {
*/
AV_PKT_DATA_A53_CC,
/**
* This side data is encryption initialization data.
* The format is not part of ABI, use av_encryption_init_info_* methods to
* access.
*/
AV_PKT_DATA_ENCRYPTION_INIT_INFO,
/**
* This side data contains encryption info for how to decrypt the packet.
* The format is not part of ABI, use av_encryption_info_* methods to access.
*/
AV_PKT_DATA_ENCRYPTION_INFO,
/**
* Active Format Description data consisting of a single byte as specified
* in ETSI TS 101 154 using AVActiveFormatDescription enum.
*/
AV_PKT_DATA_AFD,
/**
* The number of side data types.
* This is not part of the public API/ABI in the sense that it may
@ -1599,6 +1634,7 @@ typedef struct AVCodecContext {
* The allocated memory should be AV_INPUT_BUFFER_PADDING_SIZE bytes larger
* than extradata_size to avoid problems if it is read with the bitstream reader.
* The bytewise contents of extradata must not depend on the architecture or CPU endianness.
* Must be allocated with the av_malloc() family of functions.
* - encoding: Set/allocated/freed by libavcodec.
* - decoding: Set/allocated/freed by user.
*/
@ -2648,7 +2684,10 @@ typedef struct AVCodecContext {
/**
* opaque 64-bit number (generally a PTS) that will be reordered and
* output in AVFrame.reordered_opaque
* - encoding: unused
* - encoding: Set by libavcodec to the reordered_opaque of the input
* frame corresponding to the last returned packet. Only
* supported by encoders with the
* AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE capability.
* - decoding: Set by user.
*/
int64_t reordered_opaque;
@ -2920,6 +2959,10 @@ typedef struct AVCodecContext {
#define FF_PROFILE_HEVC_MAIN_STILL_PICTURE 3
#define FF_PROFILE_HEVC_REXT 4
#define FF_PROFILE_AV1_MAIN 0
#define FF_PROFILE_AV1_HIGH 1
#define FF_PROFILE_AV1_PROFESSIONAL 2
#define FF_PROFILE_MJPEG_HUFFMAN_BASELINE_DCT 0xc0
#define FF_PROFILE_MJPEG_HUFFMAN_EXTENDED_SEQUENTIAL_DCT 0xc1
#define FF_PROFILE_MJPEG_HUFFMAN_PROGRESSIVE_DCT 0xc2
@ -2928,6 +2971,13 @@ typedef struct AVCodecContext {
#define FF_PROFILE_SBC_MSBC 1
#define FF_PROFILE_PRORES_PROXY 0
#define FF_PROFILE_PRORES_LT 1
#define FF_PROFILE_PRORES_STANDARD 2
#define FF_PROFILE_PRORES_HQ 3
#define FF_PROFILE_PRORES_4444 4
#define FF_PROFILE_PRORES_XQ 5
/**
* level
* - encoding: Set by user.
@ -3079,6 +3129,7 @@ typedef struct AVCodecContext {
#define FF_SUB_CHARENC_MODE_DO_NOTHING -1 ///< do nothing (demuxer outputs a stream supposed to be already in UTF-8, or the codec is bitmap for instance)
#define FF_SUB_CHARENC_MODE_AUTOMATIC 0 ///< libavcodec will select the mode itself
#define FF_SUB_CHARENC_MODE_PRE_DECODER 1 ///< the AVPacket data needs to be recoded to UTF-8 before being fed to the decoder, requires iconv
#define FF_SUB_CHARENC_MODE_IGNORE 2 ///< neither convert the subtitles, nor check them for valid UTF-8
/**
* Skip processing alpha if supported by codec.
@ -4347,7 +4398,7 @@ int av_packet_from_data(AVPacket *pkt, uint8_t *data, int size);
* @warning This is a hack - the packet memory allocation stuff is broken. The
* packet is allocated if it was not really allocated.
*
* @deprecated Use av_packet_ref
* @deprecated Use av_packet_ref or av_packet_make_refcounted
*/
attribute_deprecated
int av_dup_packet(AVPacket *pkt);
@ -4518,6 +4569,33 @@ void av_packet_move_ref(AVPacket *dst, AVPacket *src);
*/
int av_packet_copy_props(AVPacket *dst, const AVPacket *src);
/**
* Ensure the data described by a given packet is reference counted.
*
* @note This function does not ensure that the reference will be writable.
* Use av_packet_make_writable instead for that purpose.
*
* @see av_packet_ref
* @see av_packet_make_writable
*
* @param pkt packet whose data should be made reference counted.
*
* @return 0 on success, a negative AVERROR on error. On failure, the
* packet is unchanged.
*/
int av_packet_make_refcounted(AVPacket *pkt);
/**
* Create a writable reference for the data described by a given packet,
* avoiding data copy if possible.
*
* @param pkt Packet whose data should be made writable.
*
* @return 0 on success, a negative AVERROR on failure. On failure, the
* packet is unchanged.
*/
int av_packet_make_writable(AVPacket *pkt);
/**
* Convert valid timing fields (timestamps / durations) in a packet from one
* timebase to another. Timestamps with unknown values (AV_NOPTS_VALUE) will be
@ -5721,6 +5799,7 @@ typedef struct AVBitStreamFilter {
int (*init)(AVBSFContext *ctx);
int (*filter)(AVBSFContext *ctx, AVPacket *pkt);
void (*close)(AVBSFContext *ctx);
void (*flush)(AVBSFContext *ctx);
} AVBitStreamFilter;
#if FF_API_OLD_BSF
@ -5847,6 +5926,11 @@ int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt);
*/
int av_bsf_receive_packet(AVBSFContext *ctx, AVPacket *pkt);
/**
* Reset the internal bitstream filter state / flush internal buffers.
*/
void av_bsf_flush(AVBSFContext *ctx);
/**
* Free a bitstream filter context and everything associated with it; write NULL
* into the supplied pointer.

View File

@ -85,4 +85,17 @@ typedef struct MediaCodecBuffer AVMediaCodecBuffer;
*/
int av_mediacodec_release_buffer(AVMediaCodecBuffer *buffer, int render);
/**
* Release a MediaCodec buffer and render it at the given time to the surface
* that is associated with the decoder. The timestamp must be within one second
* of the current java/lang/System#nanoTime() (which is implemented using
* CLOCK_MONOTONIC on Android). See the Android MediaCodec documentation
* of android/media/MediaCodec#releaseOutputBuffer(int,long) for more details.
*
* @param buffer the buffer to render
* @param time timestamp in nanoseconds of when to render the buffer
* @return 0 on success, < 0 otherwise
*/
int av_mediacodec_render_buffer_at_time(AVMediaCodecBuffer *buffer, int64_t time);
#endif /* AVCODEC_MEDIACODEC_H */

View File

@ -28,7 +28,7 @@
#include "libavutil/version.h"
#define LIBAVCODEC_VERSION_MAJOR 58
#define LIBAVCODEC_VERSION_MINOR 14
#define LIBAVCODEC_VERSION_MINOR 39
#define LIBAVCODEC_VERSION_MICRO 100
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \

View File

@ -846,6 +846,7 @@ typedef struct AVStreamInternal AVStreamInternal;
#define AV_DISPOSITION_DESCRIPTIONS 0x20000
#define AV_DISPOSITION_METADATA 0x40000
#define AV_DISPOSITION_DEPENDENT 0x80000 ///< dependent audio stream (mix_type=0 in mpegts)
#define AV_DISPOSITION_STILL_IMAGE 0x100000 ///< still images in video stream (still_picture_flag=1 in mpegts)
/**
* Options for behavior on timestamp wrap detection.
@ -1102,6 +1103,13 @@ typedef struct AVStream {
*/
int stream_identifier;
/**
* Details of the MPEG-TS program which created this stream.
*/
int program_num;
int pmt_version;
int pmt_stream_idx;
int64_t interleaver_chunk_size;
int64_t interleaver_chunk_duration;
@ -1259,6 +1267,7 @@ typedef struct AVProgram {
int program_num;
int pmt_pid;
int pcr_pid;
int pmt_version;
/*****************************************************************
* All fields below this line are not part of the public API. They
@ -1474,7 +1483,9 @@ typedef struct AVFormatContext {
* This flag is mainly intended for testing.
*/
#define AVFMT_FLAG_BITEXACT 0x0400
#define AVFMT_FLAG_MP4A_LATM 0x8000 ///< Enable RTP MP4A-LATM payload
#if FF_API_LAVF_MP4A_LATM
#define AVFMT_FLAG_MP4A_LATM 0x8000 ///< Deprecated, does nothing.
#endif
#define AVFMT_FLAG_SORT_DTS 0x10000 ///< try to interleave outputted packets by dts (using this flag can slow demuxing down)
#define AVFMT_FLAG_PRIV_OPT 0x20000 ///< Enable use of private options by delaying codec open (this could be made default once all code is converted)
#if FF_API_LAVF_KEEPSIDE_FLAG
@ -1926,6 +1937,13 @@ typedef struct AVFormatContext {
* - decoding: set by user
*/
int max_streams;
/**
* Skip duration calcuation in estimate_timings_from_pts.
* - encoding: unused
* - decoding: set by user
*/
int skip_estimate_duration_from_pts;
} AVFormatContext;
#if FF_API_FORMAT_GET_SET

View File

@ -32,7 +32,7 @@
// Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium)
// Also please add any ticket numbers that you believe might be affected here
#define LIBAVFORMAT_VERSION_MAJOR 58
#define LIBAVFORMAT_VERSION_MINOR 10
#define LIBAVFORMAT_VERSION_MINOR 22
#define LIBAVFORMAT_VERSION_MICRO 100
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
@ -70,6 +70,9 @@
#ifndef FF_API_HLS_WRAP
#define FF_API_HLS_WRAP (LIBAVFORMAT_VERSION_MAJOR < 59)
#endif
#ifndef FF_API_HLS_USE_LOCALTIME
#define FF_API_HLS_USE_LOCALTIME (LIBAVFORMAT_VERSION_MAJOR < 59)
#endif
#ifndef FF_API_LAVF_KEEPSIDE_FLAG
#define FF_API_LAVF_KEEPSIDE_FLAG (LIBAVFORMAT_VERSION_MAJOR < 59)
#endif
@ -94,6 +97,12 @@
#ifndef FF_API_NEXT
#define FF_API_NEXT (LIBAVFORMAT_VERSION_MAJOR < 59)
#endif
#ifndef FF_API_DASH_MIN_SEG_DURATION
#define FF_API_DASH_MIN_SEG_DURATION (LIBAVFORMAT_VERSION_MAJOR < 59)
#endif
#ifndef FF_API_LAVF_MP4A_LATM
#define FF_API_LAVF_MP4A_LATM (LIBAVFORMAT_VERSION_MAJOR < 59)
#endif
#ifndef FF_API_R_FRAME_RATE

View File

@ -66,7 +66,7 @@
#endif
/**
* Assert that floating point opperations can be executed.
* Assert that floating point operations can be executed.
*
* This will av_assert0() that the cpu is not in MMX state on X86
*/

View File

@ -232,7 +232,7 @@ static av_always_inline av_const int av_clip_intp2_c(int a, int p)
*/
static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p)
{
if (a & ~((1<<p) - 1)) return -a >> 31 & ((1<<p) - 1);
if (a & ~((1<<p) - 1)) return (~a) >> 31 & ((1<<p) - 1);
else return a;
}

View File

@ -0,0 +1,205 @@
/**
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef AVUTIL_ENCRYPTION_INFO_H
#define AVUTIL_ENCRYPTION_INFO_H
#include <stddef.h>
#include <stdint.h>
typedef struct AVSubsampleEncryptionInfo {
/** The number of bytes that are clear. */
unsigned int bytes_of_clear_data;
/**
* The number of bytes that are protected. If using pattern encryption,
* the pattern applies to only the protected bytes; if not using pattern
* encryption, all these bytes are encrypted.
*/
unsigned int bytes_of_protected_data;
} AVSubsampleEncryptionInfo;
/**
* This describes encryption info for a packet. This contains frame-specific
* info for how to decrypt the packet before passing it to the decoder.
*
* The size of this struct is not part of the public ABI.
*/
typedef struct AVEncryptionInfo {
/** The fourcc encryption scheme, in big-endian byte order. */
uint32_t scheme;
/**
* Only used for pattern encryption. This is the number of 16-byte blocks
* that are encrypted.
*/
uint32_t crypt_byte_block;
/**
* Only used for pattern encryption. This is the number of 16-byte blocks
* that are clear.
*/
uint32_t skip_byte_block;
/**
* The ID of the key used to encrypt the packet. This should always be
* 16 bytes long, but may be changed in the future.
*/
uint8_t *key_id;
uint32_t key_id_size;
/**
* The initialization vector. This may have been zero-filled to be the
* correct block size. This should always be 16 bytes long, but may be
* changed in the future.
*/
uint8_t *iv;
uint32_t iv_size;
/**
* An array of subsample encryption info specifying how parts of the sample
* are encrypted. If there are no subsamples, then the whole sample is
* encrypted.
*/
AVSubsampleEncryptionInfo *subsamples;
uint32_t subsample_count;
} AVEncryptionInfo;
/**
* This describes info used to initialize an encryption key system.
*
* The size of this struct is not part of the public ABI.
*/
typedef struct AVEncryptionInitInfo {
/**
* A unique identifier for the key system this is for, can be NULL if it
* is not known. This should always be 16 bytes, but may change in the
* future.
*/
uint8_t* system_id;
uint32_t system_id_size;
/**
* An array of key IDs this initialization data is for. All IDs are the
* same length. Can be NULL if there are no known key IDs.
*/
uint8_t** key_ids;
/** The number of key IDs. */
uint32_t num_key_ids;
/**
* The number of bytes in each key ID. This should always be 16, but may
* change in the future.
*/
uint32_t key_id_size;
/**
* Key-system specific initialization data. This data is copied directly
* from the file and the format depends on the specific key system. This
* can be NULL if there is no initialization data; in that case, there
* will be at least one key ID.
*/
uint8_t* data;
uint32_t data_size;
/**
* An optional pointer to the next initialization info in the list.
*/
struct AVEncryptionInitInfo *next;
} AVEncryptionInitInfo;
/**
* Allocates an AVEncryptionInfo structure and sub-pointers to hold the given
* number of subsamples. This will allocate pointers for the key ID, IV,
* and subsample entries, set the size members, and zero-initialize the rest.
*
* @param subsample_count The number of subsamples.
* @param key_id_size The number of bytes in the key ID, should be 16.
* @param iv_size The number of bytes in the IV, should be 16.
*
* @return The new AVEncryptionInfo structure, or NULL on error.
*/
AVEncryptionInfo *av_encryption_info_alloc(uint32_t subsample_count, uint32_t key_id_size, uint32_t iv_size);
/**
* Allocates an AVEncryptionInfo structure with a copy of the given data.
* @return The new AVEncryptionInfo structure, or NULL on error.
*/
AVEncryptionInfo *av_encryption_info_clone(const AVEncryptionInfo *info);
/**
* Frees the given encryption info object. This MUST NOT be used to free the
* side-data data pointer, that should use normal side-data methods.
*/
void av_encryption_info_free(AVEncryptionInfo *info);
/**
* Creates a copy of the AVEncryptionInfo that is contained in the given side
* data. The resulting object should be passed to av_encryption_info_free()
* when done.
*
* @return The new AVEncryptionInfo structure, or NULL on error.
*/
AVEncryptionInfo *av_encryption_info_get_side_data(const uint8_t *side_data, size_t side_data_size);
/**
* Allocates and initializes side data that holds a copy of the given encryption
* info. The resulting pointer should be either freed using av_free or given
* to av_packet_add_side_data().
*
* @return The new side-data pointer, or NULL.
*/
uint8_t *av_encryption_info_add_side_data(
const AVEncryptionInfo *info, size_t *side_data_size);
/**
* Allocates an AVEncryptionInitInfo structure and sub-pointers to hold the
* given sizes. This will allocate pointers and set all the fields.
*
* @return The new AVEncryptionInitInfo structure, or NULL on error.
*/
AVEncryptionInitInfo *av_encryption_init_info_alloc(
uint32_t system_id_size, uint32_t num_key_ids, uint32_t key_id_size, uint32_t data_size);
/**
* Frees the given encryption init info object. This MUST NOT be used to free
* the side-data data pointer, that should use normal side-data methods.
*/
void av_encryption_init_info_free(AVEncryptionInitInfo* info);
/**
* Creates a copy of the AVEncryptionInitInfo that is contained in the given
* side data. The resulting object should be passed to
* av_encryption_init_info_free() when done.
*
* @return The new AVEncryptionInitInfo structure, or NULL on error.
*/
AVEncryptionInitInfo *av_encryption_init_info_get_side_data(
const uint8_t* side_data, size_t side_data_size);
/**
* Allocates and initializes side data that holds a copy of the given encryption
* init info. The resulting pointer should be either freed using av_free or
* given to av_packet_add_side_data().
*
* @return The new side-data pointer, or NULL.
*/
uint8_t *av_encryption_init_info_add_side_data(
const AVEncryptionInitInfo *info, size_t *side_data_size);
#endif /* AVUTIL_ENCRYPTION_INFO_H */

View File

@ -1,5 +1,5 @@
/* Automatically generated by version.sh, do not manually edit! */
#ifndef AVUTIL_FFVERSION_H
#define AVUTIL_FFVERSION_H
#define FFMPEG_VERSION "N-90388-g2ddc6b4392"
#define FFMPEG_VERSION "N-92435-g759589b55e"
#endif /* AVUTIL_FFVERSION_H */

View File

@ -33,6 +33,8 @@
* allocated buffer or map it with mmap() when available.
* In case of success set *bufptr to the read or mmapped buffer, and
* *size to the size in bytes of the buffer in *bufptr.
* Unlike mmap this function succeeds with zero sized files, in this
* case *bufptr will be set to NULL and *size will be set to 0.
* The returned buffer must be released with av_file_unmap().
*
* @param log_offset loglevel offset used for logging

View File

@ -158,6 +158,14 @@ enum AVFrameSideDataType {
*/
AV_FRAME_DATA_QP_TABLE_DATA,
#endif
/**
* Timecode which conforms to SMPTE ST 12-1. The data is an array of 4 uint32_t
* where the first uint32_t describes how many (1-3) of the other timecodes are used.
* The timecode format is described in the av_timecode_get_smpte_from_framenum()
* function in libavutil/timecode.c.
*/
AV_FRAME_DATA_S12M_TIMECODE,
};
enum AVActiveFormatDescription {
@ -381,7 +389,6 @@ typedef struct AVFrame {
* that time,
* the decoder reorders values as needed and sets AVFrame.reordered_opaque
* to exactly one of the values provided by the user through AVCodecContext.reordered_opaque
* @deprecated in favor of pkt_pts
*/
int64_t reordered_opaque;

View File

@ -41,6 +41,7 @@ typedef struct AVCUDADeviceContextInternal AVCUDADeviceContextInternal;
*/
typedef struct AVCUDADeviceContext {
CUcontext cuda_ctx;
CUstream stream;
AVCUDADeviceContextInternal *internal;
} AVCUDADeviceContext;

View File

@ -58,6 +58,9 @@ typedef struct AVDRMObjectDescriptor {
size_t size;
/**
* Format modifier applied to the object (DRM_FORMAT_MOD_*).
*
* If the format modifier is unknown then this should be set to
* DRM_FORMAT_MOD_INVALID.
*/
uint64_t format_modifier;
} AVDRMObjectDescriptor;

View File

@ -289,6 +289,7 @@ typedef struct AVOption {
#define AV_OPT_FLAG_READONLY 128
#define AV_OPT_FLAG_BSF_PARAM (1<<8) ///< a generic parameter which can be set by the user for bit stream filtering
#define AV_OPT_FLAG_FILTERING_PARAM (1<<16) ///< a generic parameter which can be set by the user for filtering
#define AV_OPT_FLAG_DEPRECATED (1<<17) ///< set if option is deprecated, users should refer to AVOption.help text for more information
//FIXME think about enc-audio, ... style flags
/**

View File

@ -158,17 +158,21 @@ typedef struct AVPixFmtDescriptor {
* in some cases be simpler. Or the data can be interpreted purely based on
* the pixel format without using the palette.
* An example of a pseudo-paletted format is AV_PIX_FMT_GRAY8
*
* @deprecated This flag is deprecated, and will be removed. When it is removed,
* the extra palette allocation in AVFrame.data[1] is removed as well. Only
* actual paletted formats (as indicated by AV_PIX_FMT_FLAG_PAL) will have a
* palette. Starting with FFmpeg versions which have this flag deprecated, the
* extra "pseudo" palette is already ignored, and API users are not required to
* allocate a palette for AV_PIX_FMT_FLAG_PSEUDOPAL formats (it was required
* before the deprecation, though).
*/
#define AV_PIX_FMT_FLAG_PSEUDOPAL (1 << 6)
/**
* The pixel format has an alpha channel. This is set on all formats that
* support alpha in some way. The exception is AV_PIX_FMT_PAL8, which can
* carry alpha as part of the palette. Details are explained in the
* AVPixelFormat enum, and are also encoded in the corresponding
* AVPixFmtDescriptor.
*
* The alpha is always straight, never pre-multiplied.
* support alpha in some way, including AV_PIX_FMT_PAL8. The alpha is always
* straight, never pre-multiplied.
*
* If a codec or a filter does not support alpha, it should set all alpha to
* opaque, or use the equivalent pixel formats without alpha component, e.g.
@ -343,7 +347,13 @@ char *av_get_pix_fmt_string(char *buf, int buf_size,
* format writes the values corresponding to the palette
* component c in data[1] to dst, rather than the palette indexes in
* data[0]. The behavior is undefined if the format is not paletted.
* @param dst_element_size size of elements in dst array (2 or 4 byte)
*/
void av_read_image_line2(void *dst, const uint8_t *data[4],
const int linesize[4], const AVPixFmtDescriptor *desc,
int x, int y, int c, int w, int read_pal_component,
int dst_element_size);
void av_read_image_line(uint16_t *dst, const uint8_t *data[4],
const int linesize[4], const AVPixFmtDescriptor *desc,
int x, int y, int c, int w, int read_pal_component);
@ -361,7 +371,12 @@ void av_read_image_line(uint16_t *dst, const uint8_t *data[4],
* @param y the vertical coordinate of the first pixel to write
* @param w the width of the line to write, that is the number of
* values to write to the image line
* @param src_element_size size of elements in src array (2 or 4 byte)
*/
void av_write_image_line2(const void *src, uint8_t *data[4],
const int linesize[4], const AVPixFmtDescriptor *desc,
int x, int y, int c, int w, int src_element_size);
void av_write_image_line(const uint16_t *src, uint8_t *data[4],
const int linesize[4], const AVPixFmtDescriptor *desc,
int x, int y, int c, int w);

View File

@ -42,6 +42,10 @@
* This is stored as BGRA on little-endian CPU architectures and ARGB on
* big-endian CPUs.
*
* @note
* If the resolution is not a multiple of the chroma subsampling factor
* then the chroma plane resolution must be rounded up.
*
* @par
* When the pixel format is palettized RGB32 (AV_PIX_FMT_PAL8), the palettized
* image data is stored in AVFrame.data[0]. The palette is transported in
@ -330,6 +334,12 @@ enum AVPixelFormat {
*/
AV_PIX_FMT_OPENCL,
AV_PIX_FMT_GRAY14BE, ///< Y , 14bpp, big-endian
AV_PIX_FMT_GRAY14LE, ///< Y , 14bpp, little-endian
AV_PIX_FMT_GRAYF32BE, ///< IEEE-754 single precision Y, 32bpp, big-endian
AV_PIX_FMT_GRAYF32LE, ///< IEEE-754 single precision Y, 32bpp, little-endian
AV_PIX_FMT_NB ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions
};
@ -349,6 +359,7 @@ enum AVPixelFormat {
#define AV_PIX_FMT_GRAY9 AV_PIX_FMT_NE(GRAY9BE, GRAY9LE)
#define AV_PIX_FMT_GRAY10 AV_PIX_FMT_NE(GRAY10BE, GRAY10LE)
#define AV_PIX_FMT_GRAY12 AV_PIX_FMT_NE(GRAY12BE, GRAY12LE)
#define AV_PIX_FMT_GRAY14 AV_PIX_FMT_NE(GRAY14BE, GRAY14LE)
#define AV_PIX_FMT_GRAY16 AV_PIX_FMT_NE(GRAY16BE, GRAY16LE)
#define AV_PIX_FMT_YA16 AV_PIX_FMT_NE(YA16BE, YA16LE)
#define AV_PIX_FMT_RGB48 AV_PIX_FMT_NE(RGB48BE, RGB48LE)
@ -397,6 +408,8 @@ enum AVPixelFormat {
#define AV_PIX_FMT_GBRPF32 AV_PIX_FMT_NE(GBRPF32BE, GBRPF32LE)
#define AV_PIX_FMT_GBRAPF32 AV_PIX_FMT_NE(GBRAPF32BE, GBRAPF32LE)
#define AV_PIX_FMT_GRAYF32 AV_PIX_FMT_NE(GRAYF32BE, GRAYF32LE)
#define AV_PIX_FMT_YUVA420P9 AV_PIX_FMT_NE(YUVA420P9BE , YUVA420P9LE)
#define AV_PIX_FMT_YUVA422P9 AV_PIX_FMT_NE(YUVA422P9BE , YUVA422P9LE)
#define AV_PIX_FMT_YUVA444P9 AV_PIX_FMT_NE(YUVA444P9BE , YUVA444P9LE)

View File

@ -95,6 +95,14 @@ void av_thread_message_queue_set_err_recv(AVThreadMessageQueue *mq,
void av_thread_message_queue_set_free_func(AVThreadMessageQueue *mq,
void (*free_func)(void *msg));
/**
* Return the current number of messages in the queue.
*
* @return the current number of messages or AVERROR(ENOSYS) if lavu was built
* without thread support
*/
int av_thread_message_queue_nb_elems(AVThreadMessageQueue *mq);
/**
* Flush the message queue
*

View File

@ -79,8 +79,8 @@
*/
#define LIBAVUTIL_VERSION_MAJOR 56
#define LIBAVUTIL_VERSION_MINOR 11
#define LIBAVUTIL_VERSION_MICRO 100
#define LIBAVUTIL_VERSION_MINOR 23
#define LIBAVUTIL_VERSION_MICRO 101
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
LIBAVUTIL_VERSION_MINOR, \
@ -126,6 +126,9 @@
#ifndef FF_API_FRAME_GET_SET
#define FF_API_FRAME_GET_SET (LIBAVUTIL_VERSION_MAJOR < 57)
#endif
#ifndef FF_API_PSEUDOPAL
#define FF_API_PSEUDOPAL (LIBAVUTIL_VERSION_MAJOR < 57)
#endif
/**

View File

@ -29,8 +29,8 @@
#include "libavutil/avutil.h"
#define LIBSWRESAMPLE_VERSION_MAJOR 3
#define LIBSWRESAMPLE_VERSION_MINOR 0
#define LIBSWRESAMPLE_VERSION_MICRO 101
#define LIBSWRESAMPLE_VERSION_MINOR 4
#define LIBSWRESAMPLE_VERSION_MICRO 100
#define LIBSWRESAMPLE_VERSION_INT AV_VERSION_INT(LIBSWRESAMPLE_VERSION_MAJOR, \
LIBSWRESAMPLE_VERSION_MINOR, \

View File

@ -6,6 +6,7 @@ EXPORTS
av_bitstream_filter_init
av_bitstream_filter_next
av_bsf_alloc
av_bsf_flush
av_bsf_free
av_bsf_get_by_name
av_bsf_get_class
@ -79,6 +80,7 @@ EXPORTS
av_mediacodec_default_free
av_mediacodec_default_init
av_mediacodec_release_buffer
av_mediacodec_render_buffer_at_time
av_new_packet
av_packet_add_side_data
av_packet_alloc
@ -88,6 +90,8 @@ EXPORTS
av_packet_free_side_data
av_packet_from_data
av_packet_get_side_data
av_packet_make_refcounted
av_packet_make_writable
av_packet_merge_side_data
av_packet_move_ref
av_packet_new_side_data
@ -198,17 +202,9 @@ EXPORTS
avpriv_dca_convert_bitstream
avpriv_dca_parse_core_frame_header
avpriv_dca_sample_rates
avpriv_exif_decode_ifd
avpriv_find_pix_fmt
avpriv_find_start_code
avpriv_get_raw_pix_fmt_tags
avpriv_mjpeg_bits_ac_chrominance
avpriv_mjpeg_bits_ac_luminance
avpriv_mjpeg_bits_dc_chrominance
avpriv_mjpeg_bits_dc_luminance
avpriv_mjpeg_val_ac_chrominance
avpriv_mjpeg_val_ac_luminance
avpriv_mjpeg_val_dc
avpriv_mpa_bitrate_tab
avpriv_mpa_freq_tab
avpriv_mpeg4audio_get_config

Binary file not shown.

View File

@ -1,16 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEdiLr51NrDwQ29PFjjWyYR59K3nEFAlqx1TAACgkQjWyYR59K
3nGMPw/8CKcaUz0CW0q0gaTSlPRij4nSLkdoyV4HOolo5CV8/Ee2JWJzQSp8gNYu
6/EAG/jgjoiwyTf7ajXhbNGFQfEq6tLTGRGQny3vdrWKI4OFlj3GIiMrNm2LVFFP
MWtd8luU6VBHT2DV2/wwpvpXEFu44IWb14N1UBMyxlo8Cs9o3/6hZ1I5hwGbQ/HL
Tl9bz/U9E7JXNR1mXlPZDiQx5QnD/Lhmw8xynEw03YNG2YB8G+kujlf1egxbvrzy
htr3BZtxY6OmiLzv4Vf4/KhtYaRV249zN3ydINLHOwXT/gN/hGk/u9RQpigABKCU
lrTVx5HjLvuYd7FmMsmLuCKpUI900RhqqvmlQB/7Scppo3I/fAfZoIojH7P3rH8V
ipdjBqxoeZN+fhvRK3IH0VBq7d/o1MTDUR1+8NXjmjdSqWXxDYD9izfFMi3BKm8o
jx8b0l2CPPJl7q/xZpcTpNzOWLFmTA9IEwmh0LjR1TSvRK0gWoaSsYBCel6zkuRp
8QyLCeky7uQo2XRfSNF+ZtfX0Zg3IMARzir250oY+T/ssb1DrBBYmmeNbNxYFFdi
qp2fznTzhdNGkgq1TmhoowvQ5i5HEG6JfgFRNLL4l3tUek2QNjpW032HPt08kqhG
34QbcvRE80Mr/jH5x3G2klE2CLQSnynPEzO4F942x8et1LmwyVI=
=qCwb
wsFcBAABCAAQBQJb6/iiCRCNbJhHn0recQAAdooQALZQZyPr3x/lR5ZhmPy1zzJJ
jyTnuykOUlm0a/cBTRVKkThcMNrhggvuD3J18yRLJ6c/elbyrjzD3uYYMYY2o9he
+cnu3J3WrlZqZyLo3qddROE7DaGAfHsqo7GBKGGQsaYWyHnjtFzP1b5qr4qIkN4U
A2uLo7NUOEth7EAgsd4XTcCQAoMaki1DuOK50k4wNIJ6/p07CANVjNKiRnoOlMIH
K8XtqNW9vIbJXYlgjIJ/nc7/pJYnqVyFUF5sUymmLRbrfBCSX9i1zXwtZ2d7PhUt
VDSh77m5vcw538J2zTJAySMCauh6TzmwlB+18ysX5aApHNHAjWfpZeoTEXEAoJmY
PCAGgJdje3YIX57CuAk1a46w0li5Yc4h2lBXb7j2eavnjU128rAeR2t2ULceE50R
65Jvt8PPguL9skryc8DKdexGe5zf/wgeUNPpe7VvmWHkFo/kH2ichgKZmutW1jIe
yqLFvJGiFGP9kJy4dpqNsx9jD2jkKKtTylmIk8Z5hLuudCxcLPEGGtoslBhCbcWq
so28lA+ABcUhZwZsbxYzz0d63Hg9ilpjtAazAnXpOuk6JC37Qfq8S/fm0WudSjJV
X6Cj6Uq/cSXWuoFbC5D23em7cBmsGdKP7J+GIWF534MNKDHFZ0cfhMeswmLmvLUd
iNcSQDSWEQWGKA4RG03N
=hykQ
-----END PGP SIGNATURE-----

Binary file not shown.

View File

@ -1,16 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEdiLr51NrDwQ29PFjjWyYR59K3nEFAlqx1TAACgkQjWyYR59K
3nHIng//R1X9FrxcMubJrEwRckmXYkdBANdjbLkGjaSA+pgUGqtB/t5r6JiMHW9C
POULXwaFBxVd/OKnx54NwFSiZiSQiq9MKCS8tdO61F/A6E623QoIx5lqYiuTIZ+S
8qboxiFksMrLzQ/I5P5603QOJ5/mbzam1vBIhf9NwdsUmUp5aD8bOZGj1K9OBE+E
uEqbQh1kmaPOiQo0pwxCPvu12Aiq2dVQcGqmkacZUr0B2LENh60SUAnYiiashlgH
hGiiZeBoET/eKXwHV3Q8rTx3RpuroF2lonAb6PXlJWVfU37D5GqHpKWA5pU3W26c
vWHYS9B1KMHefZonBJzVZiDp9zwVFDtL730NJcsQE61zGU7CxJBc8O1pVblSnQy6
022EP8euKZoKGmtj5m2HS8W85tf+CbdhsqK6oP7NVYW2ka0xReck8mStbHk6Q/yR
+1ccGtq5VIVoMztAW1nlYsUovqcKe2LUwddKLMMOihmQDz2kSXrd9XbGbHsccpKE
m40jkoMvuIR6fiz0YZGGTD133xtYNt1IF01wWPW3BLPIMq0BfYq0PJv7aqQZkgUy
RYdHfsw4vgQrrr0+w1l/CftC92RdtnbdXFmZZB0huQvfTJ9JUCrS++ce/GZzIPMS
6Fvui9MV+wexsZjFnHKGXbnRxBiXfFRx6E9xMz0NTVZGQ0l2qE0=
=Py3f
wsFcBAABCAAQBQJb6/iyCRCNbJhHn0recQAACiQQAJKvYqk7nZjf9wEcwzMRr4EB
i6+LvdxOfIk9owzLfXwlBBKnB8dwQpL0KgvhA7UKFTE/7tOUvKdmq1IaRaD3bbQm
vvrqLEXEJkqz/7+T5YuAyW2/GSDlV/nwLu0IQdaCdzytMSOnh+HHbWdGjGJr+okP
hO2K5SLVwrcf/OhOvwqOQcdL+BTwfA9uUkeHHQylVQZhp/xcTOKwfLcYi43TuaKs
DddqhyE92rpXamvIfM+PstfPEvZNuiKyRLtioOweKzzAX+1v59M3E+oUY8QoFUsu
F6CKHwhISOhpFoOKXbPKbkQbsiWW2Wisuq5SUKPhEyaG9Olpive+7LIMgNJAtvQ6
sQAf5FHxFB2nQgr5WLDJ6Fy8RiII17T0m4hhP1CAcZSgaNoztphz1jMs2Hm8YbDA
sLYjoiVhXXMSI/wslgGEfdMo3zIVt6xGAetWo0EzXLiy/YFagC09dmu/+El438Jv
zxpVXm5J5uX0tAkEMxHU731nlR6kPoSfl4VoAFK29TZatoE93Ou+PPvcHRdiq7q2
48QWZCAHDdVVdJtgInYWbJw2GAiUDfbdKloGp6o8jVW4SXnF0hbdbYQAtoPXM6oR
X3eNIMqsFlUTDnaiWspi4OlUjAbpknoS4nhND1rQyVAIdk3eMO1FsO8xEKdbjvzV
jtk+A+yzaf9soPRj9oVv
=969w
-----END PGP SIGNATURE-----

View File

@ -121,6 +121,15 @@ EXPORTS
av_dynarray_add
av_dynarray_add_nofree
av_dynarray2_add
av_encryption_info_add_side_data
av_encryption_info_alloc
av_encryption_info_clone
av_encryption_info_free
av_encryption_info_get_side_data
av_encryption_init_info_add_side_data
av_encryption_init_info_alloc
av_encryption_init_info_free
av_encryption_init_info_get_side_data
av_escape
av_expr_eval
av_expr_free
@ -389,6 +398,7 @@ EXPORTS
av_rc4_crypt
av_rc4_init
av_read_image_line
av_read_image_line2
av_realloc
av_realloc_array
av_realloc_f
@ -459,6 +469,7 @@ EXPORTS
av_thread_message_flush
av_thread_message_queue_alloc
av_thread_message_queue_free
av_thread_message_queue_nb_elems
av_thread_message_queue_recv
av_thread_message_queue_send
av_thread_message_queue_set_err_recv
@ -490,6 +501,7 @@ EXPORTS
av_version_info
av_vlog
av_write_image_line
av_write_image_line2
av_xtea_alloc
av_xtea_crypt
av_xtea_init

Binary file not shown.

View File

@ -1,16 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEdiLr51NrDwQ29PFjjWyYR59K3nEFAlqx1TEACgkQjWyYR59K
3nFvCA/8DfkMhBKR/Yc8razgdOWI9tZVMvGJKkN1y1c0Zj+Ti9Vzf/E7APiCx0e/
NvnDeSZwO8P7TlOJUNaWg2tgHxrroBWrNGw3BBPmEpiMQ4muL1TnzRy8la1NeMiD
27UMSYu3bcMRQKJ1imYOK6MqZYBFTM9bFBIAPI3muBCBqltqIUtAel2/LaUx9gmu
rz66oetqOVCTA7to3e/ceE52tW7BaEdblEdJ4yscqiOIlcNLXsCb6/yuPEc/lgda
lucILs/EfXBpFrlHVIslZyh8SPmmzb/buKmGwu/d8H58Hn0NkzJZG1kRIdC+F5h2
XflslMqOHlmWMfGSk12T7jBYFejTtD6XneMMmRF/cqVjf1Y02HZGCyR/1IUltPkT
luDrp1nBYFs7SauDygDU6pawUGhGmfndVWBAvl0YAc6VpqToUkySIfvsowTto+pQ
XzkiE1yj1kfvXVg5EaX2298Nl3IMHlm8JkXlCADOlmcucIxdIu2q3M8jfMya06Hy
qWXE5Br3+GJaamAKoapEefCemyVhM06oTJmHTJ4os3SRilUquV08tI347lFYfutn
8c2JZVWwsmYa/BMbXBpqJqD027flGOW3HMcBuZA8vP9zGP3cxgJe5l9R9QsJ1t9y
1KB8fXavyQVFsDwAHCscMaJE5wMeheR4QbgblchR+AZVh7S/+qk=
=fOm7
wsFcBAABCAAQBQJb6/jCCRCNbJhHn0recQAA+GoQAHKO/lFqhBF+YZNfuDvxstg2
YMsWqFgSXGFqbkRy48yRViDTJXqAZLQw5ZeQIscUnwfIKxSLDGnv+FbVPC0CKm8H
YB8+8f/IQxWnqapdXTCEPd3AUv4ZBWEcLR7Ne/MPzFq4x9nU2ZvC/7a9kkjvZJcx
w8DHScMx/SR1rjwuZWIL95rDS+Qa/KI+bBf9zlErJoEiosJv/RocJ7zcTFBWw++7
6wrvJY3wHwKWCVKj6tOXwg6NEZt15OBZi8MFAbiT9xH+4hlUKPy/2W7l1S4Dkut7
QZJ6PlFNOe59K9PeNP+ZJrp/mNHl4fU+VLbekdQDPki3ZToBYHUJw6Hr+A2R5eJH
1Iz6Zw8V6YaEqIHC5S/9wFyvdpnC84vc9jr0IG2CF509dquq0RTqvkHxF1h9i956
8aQXih26RGcSYIEHcr9Xp+2IFNdDBXy7Gpez21xnFM8MN8CCGuTgiQXXFCJtXRkJ
DV45TLLIHDtAVXKvFiQDtFJ9ZYSknJkW+3HxTBBMqie1XVlRQm/saozGxCjP9Hzc
YSpfkw01twbk+l7VspWY3sFJChHtBbgqW4Q+XL9Eb8xe83yvO1B+3E58v2q1BoY+
gSQAiAE5X3x/ndJR6ENeBjHkVjnk1O3QW8CEegMLNETogxHfMMWaWIjpmxbf7zr3
jWPqt+xhV4+HvB5JlDZq
=93xE
-----END PGP SIGNATURE-----

Binary file not shown.

View File

@ -1,16 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEdiLr51NrDwQ29PFjjWyYR59K3nEFAlqx1SQACgkQjWyYR59K
3nGr3g/9E86vs68h7nZvSlMWtsaNNmdkY5GX4LlD1L8XfZ8RfxwV8xmEOvqezdmI
EonU2jUGzocAf2nuiahFHJ0bXT7TxY7btoLzT5P/M+Frvog1l+9fmxCo6/b143J1
pwersbMW2F8fUcxx75JHx4hdV3FL4LCNU/tztxdf0TN45cNMYs/XugAsBzBfJZQ3
Yd1D1dCnrZ9R560M3sZgLF24wdhxa+cZxwLJpnZeQxN/IWi4/npkZVhjLsoMhPPg
K8cnjOpX6rZ9ux/XhG1LyQK6FCigJ/ta5gBMi+neLisNB2ryPfx3mimE+o7k15wX
tAwry8UgeXAVWMp+idppqDRjbzDODEfZRpfoPFbOosNNFy963NO2bVDGRIna/wnt
05szWlzm1PtnVxYMjeg+GdGnU+GA/J+F8alRNu+RgMW4WSGQ2OKBV8AoGn9Htmpa
ELpIGEqHXbBmcSMgDIuU38AGiiBLnfNst5CgkwZe/QqKFRa/hpPT28ljDKqdKxXg
3p/KwD60oNGxMQ2bbRKGrrh+UCWp6L+gyBRwwupGfM5oxUSjoIsZLcM2+55u9kUT
BfjOROZFoK3BA5leCO893cs63AiHRjXjSIxTmbF70EdxsqrrNc1LFGThu8CPlE1U
Dn8aaU2JxeQTkrmT1KrmTcO7wIE05oHfs50hdhrt/b303Q2t+v4=
=8sKv
wsFcBAABCAAQBQJb6/jMCRCNbJhHn0recQAAwoEQAGnJaP9jaDkfj3srEUMP6ItK
j2S8GSJOW8sxkeAmwTdiSi9NXdHFFdiTc6q+WmvGw+FfNSCQYgaWovIVvAsJux+P
fBZaeTnCQ6RYW7uzBIQXAXBMKXoWjPB4ri3jp0rfEJ5qk4A/hrIexlDm06Pt/wcQ
2Ou20tRd22u8rKP0fac3VvG3oquKun465EGKLBGthu44x7tFhF9xgwmVjK8FXOA6
J1CRfobJuk8MQcoF53yjkRubUDgipPIfGo9A87uxHGvAtcZwfjR2D+1ZBCo3jkgH
8JRRrvQASjb+LGq7A4W5I2btdZthAQS+7i33KkAE4wvznPgYEg03VZnst0BIbNp5
LbWq3Wu3lrWUPgIjHKVPaXUuelVSzFZrejrLBAyOy8UTe0DURXbpFhD9ga/UF4Io
ah3Cv9yLk1XUDwkpMRTWzRN51GcmuDG6omszwilV0423rJm1GjGqAPRaK5scIrjj
sjUnBmirID7464tJgjI/g5XT5dnw7Dw2kIPJGE+ZWo+/C/U4xBc5TAOtoBeVxVjQ
tQDTHJLiv5qm0JdOdAddO2SITgzz80/Xhb2eMOfEIjAykZqId6WL6Z8T7dMTH9gF
xIacmKXuBOL1VWlkVRo01UwPcM6bwkKGBAuCf692Fbv9IbwtAwSyCyBmloMtKpv6
admrdWEK0SAcLwfLel8n
=qeTK
-----END PGP SIGNATURE-----