Updated FFmpeg.
parent
3d0d0ee24f
commit
b8110b85de
|
@ -6,13 +6,9 @@
|
|||
--disable-postproc --disable-swresample --disable-avfilter\
|
||||
--disable-swscale --disable-network --disable-swscale-alpha --disable-vdpau\
|
||||
--disable-dxva2 --disable-everything --enable-hwaccels\
|
||||
--enable-parser=ac3,mpegaudio,xma\
|
||||
--enable-demuxer=ac3,asf,xwma,mov,oma,ogg,tak,dsf,wav,aac,dts,dtshd,mp3\
|
||||
--enable-demuxer=bink,flac,msf,xmv\
|
||||
--enable-decoder=ac3,wmapro,wmav1,wmav2,wmavoice,wmalossless,xma1,xma2\
|
||||
--enable-decoder=dca,tak,dsd_lsbf,dsd_lsbf_planar,dsd_msbf,dsd_msbf_planar\
|
||||
--enable-decoder=aac,atrac3,atrac3p,mp3float,bink,binkaudio_dct,binkaudio_rdft\
|
||||
--enable-decoder=flac,pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar,theora\
|
||||
--enable-parser=ac3,mpegaudio,xma,vorbis\
|
||||
--enable-demuxer=ac3,asf,xwma,mov,oma,ogg,tak,dsf,wav,aac,dts,dtshd,mp3,bink,flac,msf,xmv,caf\
|
||||
--enable-decoder=ac3,wmapro,wmav1,wmav2,wmavoice,wmalossless,xma1,xma2,dca,tak,dsd_lsbf,dsd_lsbf_planar,dsd_mbf,dsd_msbf_planar,aac,atrac3,atrac3p,mp3float,bink,binkaudio_dct,binkaudio_rdft,flac,pcm_s16be,pcm_s16be_planar,pcm_s16le,pcm_s16le_planar,vorbis\
|
||||
--disable-parser=mpeg4video,h263\
|
||||
--disable-decoder=mpeg2video,h263,h264,mpeg1video,mpeg2video,mpeg4,hevc,vp9\
|
||||
--disable-version3
|
||||
|
|
|
@ -112,6 +112,12 @@
|
|||
* are filled. This situation is handled transparently if you follow the steps
|
||||
* outlined above.
|
||||
*
|
||||
* In theory, sending input can result in EAGAIN - this should happen only if
|
||||
* not all output was received. You can use this to structure alternative decode
|
||||
* or encode loops other than the one suggested above. For example, you could
|
||||
* try sending new input on each iteration, and try to receive output if that
|
||||
* returns EAGAIN.
|
||||
*
|
||||
* End of stream situations. These require "flushing" (aka draining) the codec,
|
||||
* as the codec might buffer multiple frames or packets internally for
|
||||
* performance or out of necessity (consider B-frames).
|
||||
|
@ -146,7 +152,8 @@
|
|||
* Unlike with the old video decoding API, multiple frames might result from
|
||||
* a packet. For audio, splitting the input packet into frames by partially
|
||||
* decoding packets becomes transparent to the API user. You never need to
|
||||
* feed an AVPacket to the API twice.
|
||||
* feed an AVPacket to the API twice (unless it is rejected with EAGAIN - then
|
||||
* no data was read from the packet).
|
||||
* Additionally, sending a flush/draining packet is required only once.
|
||||
* - avcodec_encode_video2()/avcodec_encode_audio2():
|
||||
* Use avcodec_send_frame() to feed input to the encoder, then use
|
||||
|
@ -159,7 +166,22 @@
|
|||
* and will result in undefined behavior.
|
||||
*
|
||||
* Some codecs might require using the new API; using the old API will return
|
||||
* an error when calling it.
|
||||
* an error when calling it. All codecs support the new API.
|
||||
*
|
||||
* A codec is not allowed to return EAGAIN for both sending and receiving. This
|
||||
* would be an invalid state, which could put the codec user into an endless
|
||||
* loop. The API has no concept of time either: it cannot happen that trying to
|
||||
* do avcodec_send_packet() results in EAGAIN, but a repeated call 1 second
|
||||
* later accepts the packet (with no other receive/flush API calls involved).
|
||||
* The API is a strict state machine, and the passage of time is not supposed
|
||||
* to influence it. Some timing-dependent behavior might still be deemed
|
||||
* acceptable in certain cases. But it must never result in both send/receive
|
||||
* returning EAGAIN at the same time at any point. It must also absolutely be
|
||||
* avoided that the current state is "unstable" and can "flip-flop" between
|
||||
* the send/receive APIs allowing progress. For example, it's not allowed that
|
||||
* the codec randomly decides that it actually wants to consume a packet now
|
||||
* instead of returning a frame, after it just returned EAGAIN on an
|
||||
* avcodec_send_packet() call.
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
@ -414,6 +436,10 @@ enum AVCodecID {
|
|||
AV_CODEC_ID_PSD,
|
||||
AV_CODEC_ID_PIXLET,
|
||||
AV_CODEC_ID_SPEEDHQ,
|
||||
AV_CODEC_ID_FMVC,
|
||||
AV_CODEC_ID_SCPR,
|
||||
AV_CODEC_ID_CLEARVIDEO,
|
||||
AV_CODEC_ID_XPM,
|
||||
|
||||
/* various PCM "codecs" */
|
||||
AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs
|
||||
|
@ -603,6 +629,8 @@ enum AVCodecID {
|
|||
AV_CODEC_ID_XMA1,
|
||||
AV_CODEC_ID_XMA2,
|
||||
AV_CODEC_ID_DST,
|
||||
AV_CODEC_ID_ATRAC3AL,
|
||||
AV_CODEC_ID_ATRAC3PAL,
|
||||
|
||||
/* subtitle codecs */
|
||||
AV_CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs.
|
||||
|
@ -1676,7 +1704,7 @@ enum AVFieldOrder {
|
|||
* New fields can be added to the end with minor version bumps.
|
||||
* Removal, reordering and changes to existing fields require a major
|
||||
* version bump.
|
||||
* Please use AVOptions (av_opt* / av_set/get*()) to access these fields from user
|
||||
* You can use AVOptions (av_opt* / av_set/get*()) to access these fields from user
|
||||
* applications.
|
||||
* The name string for AVOptions options matches the associated command line
|
||||
* parameter name and can be found in libavcodec/options_table.h
|
||||
|
@ -2947,8 +2975,8 @@ typedef struct AVCodecContext {
|
|||
#define FF_DEBUG_MMCO 0x00000800
|
||||
#define FF_DEBUG_BUGS 0x00001000
|
||||
#if FF_API_DEBUG_MV
|
||||
#define FF_DEBUG_VIS_QP 0x00002000 ///< only access through AVOptions from outside libavcodec
|
||||
#define FF_DEBUG_VIS_MB_TYPE 0x00004000 ///< only access through AVOptions from outside libavcodec
|
||||
#define FF_DEBUG_VIS_QP 0x00002000
|
||||
#define FF_DEBUG_VIS_MB_TYPE 0x00004000
|
||||
#endif
|
||||
#define FF_DEBUG_BUFFERS 0x00008000
|
||||
#define FF_DEBUG_THREADS 0x00010000
|
||||
|
@ -2958,7 +2986,6 @@ typedef struct AVCodecContext {
|
|||
#if FF_API_DEBUG_MV
|
||||
/**
|
||||
* debug
|
||||
* Code outside libavcodec should access this field using AVOptions
|
||||
* - encoding: Set by user.
|
||||
* - decoding: Set by user.
|
||||
*/
|
||||
|
@ -3093,8 +3120,6 @@ typedef struct AVCodecContext {
|
|||
* low resolution decoding, 1-> 1/2 size, 2->1/4 size
|
||||
* - encoding: unused
|
||||
* - decoding: Set by user.
|
||||
* Code outside libavcodec should access this field using:
|
||||
* av_codec_{get,set}_lowres(avctx)
|
||||
*/
|
||||
int lowres;
|
||||
#endif
|
||||
|
@ -3395,8 +3420,6 @@ typedef struct AVCodecContext {
|
|||
|
||||
/**
|
||||
* Timebase in which pkt_dts/pts and AVPacket.dts/pts are.
|
||||
* Code outside libavcodec should access this field using:
|
||||
* av_codec_{get,set}_pkt_timebase(avctx)
|
||||
* - encoding unused.
|
||||
* - decoding set by user.
|
||||
*/
|
||||
|
@ -3404,8 +3427,6 @@ typedef struct AVCodecContext {
|
|||
|
||||
/**
|
||||
* AVCodecDescriptor
|
||||
* Code outside libavcodec should access this field using:
|
||||
* av_codec_{get,set}_codec_descriptor(avctx)
|
||||
* - encoding: unused.
|
||||
* - decoding: set by libavcodec.
|
||||
*/
|
||||
|
@ -3416,8 +3437,6 @@ typedef struct AVCodecContext {
|
|||
* low resolution decoding, 1-> 1/2 size, 2->1/4 size
|
||||
* - encoding: unused
|
||||
* - decoding: Set by user.
|
||||
* Code outside libavcodec should access this field using:
|
||||
* av_codec_{get,set}_lowres(avctx)
|
||||
*/
|
||||
int lowres;
|
||||
#endif
|
||||
|
@ -3458,7 +3477,6 @@ typedef struct AVCodecContext {
|
|||
* However for formats that do not use pre-multiplied alpha
|
||||
* there might be serious artefacts (though e.g. libswscale currently
|
||||
* assumes pre-multiplied alpha anyway).
|
||||
* Code outside libavcodec should access this field using AVOptions
|
||||
*
|
||||
* - decoding: set by user
|
||||
* - encoding: unused
|
||||
|
@ -3475,7 +3493,6 @@ typedef struct AVCodecContext {
|
|||
#if !FF_API_DEBUG_MV
|
||||
/**
|
||||
* debug motion vectors
|
||||
* Code outside libavcodec should access this field using AVOptions
|
||||
* - encoding: Set by user.
|
||||
* - decoding: Set by user.
|
||||
*/
|
||||
|
@ -3487,7 +3504,6 @@ typedef struct AVCodecContext {
|
|||
|
||||
/**
|
||||
* custom intra quantization matrix
|
||||
* Code outside libavcodec should access this field using av_codec_g/set_chroma_intra_matrix()
|
||||
* - encoding: Set by user, can be NULL.
|
||||
* - decoding: unused.
|
||||
*/
|
||||
|
@ -3496,8 +3512,6 @@ typedef struct AVCodecContext {
|
|||
/**
|
||||
* dump format separator.
|
||||
* can be ", " or "\n " or anything else
|
||||
* Code outside libavcodec should access this field using AVOptions
|
||||
* (NO direct access).
|
||||
* - encoding: Set by user.
|
||||
* - decoding: Set by user.
|
||||
*/
|
||||
|
@ -3507,13 +3521,12 @@ typedef struct AVCodecContext {
|
|||
* ',' separated list of allowed decoders.
|
||||
* If NULL then all are allowed
|
||||
* - encoding: unused
|
||||
* - decoding: set by user through AVOPtions (NO direct access)
|
||||
* - decoding: set by user
|
||||
*/
|
||||
char *codec_whitelist;
|
||||
|
||||
/*
|
||||
* Properties of the stream that gets decoded
|
||||
* To be accessed through av_codec_get_properties() (NO direct access)
|
||||
* - encoding: unused
|
||||
* - decoding: set by libavcodec
|
||||
*/
|
||||
|
@ -3533,7 +3546,8 @@ typedef struct AVCodecContext {
|
|||
/**
|
||||
* A reference to the AVHWFramesContext describing the input (for encoding)
|
||||
* or output (decoding) frames. The reference is set by the caller and
|
||||
* afterwards owned (and freed) by libavcodec.
|
||||
* afterwards owned (and freed) by libavcodec - it should never be read by
|
||||
* the caller after being set.
|
||||
*
|
||||
* - decoding: This field should be set by the caller from the get_format()
|
||||
* callback. The previous reference (if any) will always be
|
||||
|
@ -3583,6 +3597,27 @@ typedef struct AVCodecContext {
|
|||
*/
|
||||
int64_t max_pixels;
|
||||
|
||||
/**
|
||||
* A reference to the AVHWDeviceContext describing the device which will
|
||||
* be used by a hardware encoder/decoder. The reference is set by the
|
||||
* caller and afterwards owned (and freed) by libavcodec.
|
||||
*
|
||||
* This should be used if either the codec device does not require
|
||||
* hardware frames or any that are used are to be allocated internally by
|
||||
* libavcodec. If the user wishes to supply any of the frames used as
|
||||
* encoder input or decoder output then hw_frames_ctx should be used
|
||||
* instead. When hw_frames_ctx is set in get_format() for a decoder, this
|
||||
* field will be ignored while decoding the associated stream segment, but
|
||||
* may again be used on a following one after another get_format() call.
|
||||
*
|
||||
* For both encoders and decoders this field should be set before
|
||||
* avcodec_open2() is called and must not be written to thereafter.
|
||||
*
|
||||
* Note that some decoders may require this field to be set initially in
|
||||
* order to support hw_frames_ctx at all - in that case, all frames
|
||||
* contexts used must be created on the same device.
|
||||
*/
|
||||
AVBufferRef *hw_device_ctx;
|
||||
} AVCodecContext;
|
||||
|
||||
AVRational av_codec_get_pkt_timebase (const AVCodecContext *avctx);
|
||||
|
@ -3642,7 +3677,7 @@ typedef struct AVCodec {
|
|||
const int *supported_samplerates; ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0
|
||||
const enum AVSampleFormat *sample_fmts; ///< array of supported sample formats, or NULL if unknown, array is terminated by -1
|
||||
const uint64_t *channel_layouts; ///< array of support channel layouts, or NULL if unknown. array is terminated by 0
|
||||
uint8_t max_lowres; ///< maximum value for lowres supported by the decoder, no direct access, use av_codec_get_max_lowres()
|
||||
uint8_t max_lowres; ///< maximum value for lowres supported by the decoder
|
||||
const AVClass *priv_class; ///< AVClass for the private context
|
||||
const AVProfile *profiles; ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN}
|
||||
|
||||
|
@ -4902,8 +4937,10 @@ int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub,
|
|||
* a flush packet.
|
||||
*
|
||||
* @return 0 on success, otherwise negative error code:
|
||||
* AVERROR(EAGAIN): input is not accepted right now - the packet must be
|
||||
* resent after trying to read output
|
||||
* AVERROR(EAGAIN): input is not accepted in the current state - user
|
||||
* must read output with avcodec_receive_frame() (once
|
||||
* all output is read, the packet should be resent, and
|
||||
* the call will not fail with EAGAIN).
|
||||
* AVERROR_EOF: the decoder has been flushed, and no new packets can
|
||||
* be sent to it (also returned if more than 1 flush
|
||||
* packet is sent)
|
||||
|
@ -4924,7 +4961,7 @@ int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt);
|
|||
*
|
||||
* @return
|
||||
* 0: success, a frame was returned
|
||||
* AVERROR(EAGAIN): output is not available right now - user must try
|
||||
* AVERROR(EAGAIN): output is not available in this state - user must try
|
||||
* to send new input
|
||||
* AVERROR_EOF: the decoder has been fully flushed, and there will be
|
||||
* no more output frames
|
||||
|
@ -4957,8 +4994,10 @@ int avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame);
|
|||
* avctx->frame_size for all frames except the last.
|
||||
* The final frame may be smaller than avctx->frame_size.
|
||||
* @return 0 on success, otherwise negative error code:
|
||||
* AVERROR(EAGAIN): input is not accepted right now - the frame must be
|
||||
* resent after trying to read output packets
|
||||
* AVERROR(EAGAIN): input is not accepted in the current state - user
|
||||
* must read output with avcodec_receive_packet() (once
|
||||
* all output is read, the packet should be resent, and
|
||||
* the call will not fail with EAGAIN).
|
||||
* AVERROR_EOF: the encoder has been flushed, and no new frames can
|
||||
* be sent to it
|
||||
* AVERROR(EINVAL): codec not opened, refcounted_frames not set, it is a
|
||||
|
@ -4976,8 +5015,8 @@ int avcodec_send_frame(AVCodecContext *avctx, const AVFrame *frame);
|
|||
* encoder. Note that the function will always call
|
||||
* av_frame_unref(frame) before doing anything else.
|
||||
* @return 0 on success, otherwise negative error code:
|
||||
* AVERROR(EAGAIN): output is not available right now - user must try
|
||||
* to send input
|
||||
* AVERROR(EAGAIN): output is not available in the current state - user
|
||||
* must try to send input
|
||||
* AVERROR_EOF: the encoder has been fully flushed, and there will be
|
||||
* no more output packets
|
||||
* AVERROR(EINVAL): codec not opened, or it is an encoder
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
#include "libavutil/version.h"
|
||||
|
||||
#define LIBAVCODEC_VERSION_MAJOR 57
|
||||
#define LIBAVCODEC_VERSION_MINOR 75
|
||||
#define LIBAVCODEC_VERSION_MINOR 83
|
||||
#define LIBAVCODEC_VERSION_MICRO 100
|
||||
|
||||
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
||||
|
|
|
@ -58,7 +58,8 @@ typedef struct AVVideotoolboxContext {
|
|||
|
||||
/**
|
||||
* CVPixelBuffer Format Type that Videotoolbox will use for decoded frames.
|
||||
* set by the caller.
|
||||
* set by the caller. If this is set to 0, then no specific format is
|
||||
* requested from the decoder, and its native format is output.
|
||||
*/
|
||||
OSType cv_pix_fmt_type;
|
||||
|
||||
|
|
|
@ -1005,7 +1005,9 @@ typedef struct AVStream {
|
|||
* All fields below this line are not part of the public API. They
|
||||
* may not be used outside of libavformat and can be changed and
|
||||
* removed at will.
|
||||
* New public fields should be added right above.
|
||||
* Internal note: be aware that physically removing these fields
|
||||
* will break ABI. Replace removed fields with dummy fields, and
|
||||
* add new fields to AVStreamInternal.
|
||||
*****************************************************************
|
||||
*/
|
||||
|
||||
|
@ -1201,6 +1203,12 @@ typedef struct AVStream {
|
|||
*/
|
||||
int inject_global_side_data;
|
||||
|
||||
/*****************************************************************
|
||||
* All fields above this line are not part of the public API.
|
||||
* Fields below are part of the public API and ABI again.
|
||||
*****************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* String containing paris of key and values describing recommended encoder configuration.
|
||||
* Paris are separated by ','.
|
||||
|
@ -1649,7 +1657,7 @@ typedef struct AVFormatContext {
|
|||
/**
|
||||
* Audio preload in microseconds.
|
||||
* Note, not all formats support this and unpredictable things may happen if it is used when not supported.
|
||||
* - encoding: Set by user via AVOptions (NO direct access)
|
||||
* - encoding: Set by user
|
||||
* - decoding: unused
|
||||
*/
|
||||
int audio_preload;
|
||||
|
@ -1657,7 +1665,7 @@ typedef struct AVFormatContext {
|
|||
/**
|
||||
* Max chunk time in microseconds.
|
||||
* Note, not all formats support this and unpredictable things may happen if it is used when not supported.
|
||||
* - encoding: Set by user via AVOptions (NO direct access)
|
||||
* - encoding: Set by user
|
||||
* - decoding: unused
|
||||
*/
|
||||
int max_chunk_duration;
|
||||
|
@ -1665,7 +1673,7 @@ typedef struct AVFormatContext {
|
|||
/**
|
||||
* Max chunk size in bytes
|
||||
* Note, not all formats support this and unpredictable things may happen if it is used when not supported.
|
||||
* - encoding: Set by user via AVOptions (NO direct access)
|
||||
* - encoding: Set by user
|
||||
* - decoding: unused
|
||||
*/
|
||||
int max_chunk_size;
|
||||
|
@ -1674,14 +1682,14 @@ typedef struct AVFormatContext {
|
|||
* forces the use of wallclock timestamps as pts/dts of packets
|
||||
* This has undefined results in the presence of B frames.
|
||||
* - encoding: unused
|
||||
* - decoding: Set by user via AVOptions (NO direct access)
|
||||
* - decoding: Set by user
|
||||
*/
|
||||
int use_wallclock_as_timestamps;
|
||||
|
||||
/**
|
||||
* avio flags, used to force AVIO_FLAG_DIRECT.
|
||||
* - encoding: unused
|
||||
* - decoding: Set by user via AVOptions (NO direct access)
|
||||
* - decoding: Set by user
|
||||
*/
|
||||
int avio_flags;
|
||||
|
||||
|
@ -1689,34 +1697,34 @@ typedef struct AVFormatContext {
|
|||
* The duration field can be estimated through various ways, and this field can be used
|
||||
* to know how the duration was estimated.
|
||||
* - encoding: unused
|
||||
* - decoding: Read by user via AVOptions (NO direct access)
|
||||
* - decoding: Read by user
|
||||
*/
|
||||
enum AVDurationEstimationMethod duration_estimation_method;
|
||||
|
||||
/**
|
||||
* Skip initial bytes when opening stream
|
||||
* - encoding: unused
|
||||
* - decoding: Set by user via AVOptions (NO direct access)
|
||||
* - decoding: Set by user
|
||||
*/
|
||||
int64_t skip_initial_bytes;
|
||||
|
||||
/**
|
||||
* Correct single timestamp overflows
|
||||
* - encoding: unused
|
||||
* - decoding: Set by user via AVOptions (NO direct access)
|
||||
* - decoding: Set by user
|
||||
*/
|
||||
unsigned int correct_ts_overflow;
|
||||
|
||||
/**
|
||||
* Force seeking to any (also non key) frames.
|
||||
* - encoding: unused
|
||||
* - decoding: Set by user via AVOptions (NO direct access)
|
||||
* - decoding: Set by user
|
||||
*/
|
||||
int seek2any;
|
||||
|
||||
/**
|
||||
* Flush the I/O context after each packet.
|
||||
* - encoding: Set by user via AVOptions (NO direct access)
|
||||
* - encoding: Set by user
|
||||
* - decoding: unused
|
||||
*/
|
||||
int flush_packets;
|
||||
|
@ -1726,14 +1734,14 @@ typedef struct AVFormatContext {
|
|||
* The maximal score is AVPROBE_SCORE_MAX, its set when the demuxer probes
|
||||
* the format.
|
||||
* - encoding: unused
|
||||
* - decoding: set by avformat, read by user via av_format_get_probe_score() (NO direct access)
|
||||
* - decoding: set by avformat, read by user
|
||||
*/
|
||||
int probe_score;
|
||||
|
||||
/**
|
||||
* number of bytes to read maximally to identify format.
|
||||
* - encoding: unused
|
||||
* - decoding: set by user through AVOPtions (NO direct access)
|
||||
* - decoding: set by user
|
||||
*/
|
||||
int format_probesize;
|
||||
|
||||
|
@ -1741,7 +1749,7 @@ typedef struct AVFormatContext {
|
|||
* ',' separated list of allowed decoders.
|
||||
* If NULL then all are allowed
|
||||
* - encoding: unused
|
||||
* - decoding: set by user through AVOptions (NO direct access)
|
||||
* - decoding: set by user
|
||||
*/
|
||||
char *codec_whitelist;
|
||||
|
||||
|
@ -1749,7 +1757,7 @@ typedef struct AVFormatContext {
|
|||
* ',' separated list of allowed demuxers.
|
||||
* If NULL then all are allowed
|
||||
* - encoding: unused
|
||||
* - decoding: set by user through AVOptions (NO direct access)
|
||||
* - decoding: set by user
|
||||
*/
|
||||
char *format_whitelist;
|
||||
|
||||
|
@ -1771,7 +1779,7 @@ typedef struct AVFormatContext {
|
|||
* Forced video codec.
|
||||
* This allows forcing a specific decoder, even when there are multiple with
|
||||
* the same codec_id.
|
||||
* Demuxing: Set by user via av_format_set_video_codec (NO direct access).
|
||||
* Demuxing: Set by user
|
||||
*/
|
||||
AVCodec *video_codec;
|
||||
|
||||
|
@ -1779,7 +1787,7 @@ typedef struct AVFormatContext {
|
|||
* Forced audio codec.
|
||||
* This allows forcing a specific decoder, even when there are multiple with
|
||||
* the same codec_id.
|
||||
* Demuxing: Set by user via av_format_set_audio_codec (NO direct access).
|
||||
* Demuxing: Set by user
|
||||
*/
|
||||
AVCodec *audio_codec;
|
||||
|
||||
|
@ -1787,7 +1795,7 @@ typedef struct AVFormatContext {
|
|||
* Forced subtitle codec.
|
||||
* This allows forcing a specific decoder, even when there are multiple with
|
||||
* the same codec_id.
|
||||
* Demuxing: Set by user via av_format_set_subtitle_codec (NO direct access).
|
||||
* Demuxing: Set by user
|
||||
*/
|
||||
AVCodec *subtitle_codec;
|
||||
|
||||
|
@ -1795,7 +1803,7 @@ typedef struct AVFormatContext {
|
|||
* Forced data codec.
|
||||
* This allows forcing a specific decoder, even when there are multiple with
|
||||
* the same codec_id.
|
||||
* Demuxing: Set by user via av_format_set_data_codec (NO direct access).
|
||||
* Demuxing: Set by user
|
||||
*/
|
||||
AVCodec *data_codec;
|
||||
|
||||
|
@ -1819,15 +1827,13 @@ typedef struct AVFormatContext {
|
|||
|
||||
/**
|
||||
* Output timestamp offset, in microseconds.
|
||||
* Muxing: set by user via AVOptions (NO direct access)
|
||||
* Muxing: set by user
|
||||
*/
|
||||
int64_t output_ts_offset;
|
||||
|
||||
/**
|
||||
* dump format separator.
|
||||
* can be ", " or "\n " or anything else
|
||||
* Code outside libavformat should access this field using AVOptions
|
||||
* (NO direct access).
|
||||
* - muxing: Set by user.
|
||||
* - demuxing: Set by user.
|
||||
*/
|
||||
|
@ -1864,7 +1870,7 @@ typedef struct AVFormatContext {
|
|||
/**
|
||||
* ',' separated list of allowed protocols.
|
||||
* - encoding: unused
|
||||
* - decoding: set by user through AVOptions (NO direct access)
|
||||
* - decoding: set by user
|
||||
*/
|
||||
char *protocol_whitelist;
|
||||
|
||||
|
@ -1899,18 +1905,22 @@ typedef struct AVFormatContext {
|
|||
/**
|
||||
* ',' separated list of disallowed protocols.
|
||||
* - encoding: unused
|
||||
* - decoding: set by user through AVOptions (NO direct access)
|
||||
* - decoding: set by user
|
||||
*/
|
||||
char *protocol_blacklist;
|
||||
|
||||
/**
|
||||
* The maximum number of streams.
|
||||
* - encoding: unused
|
||||
* - decoding: set by user through AVOptions (NO direct access)
|
||||
* - decoding: set by user
|
||||
*/
|
||||
int max_streams;
|
||||
} AVFormatContext;
|
||||
|
||||
/**
|
||||
* Accessors for some AVFormatContext fields. These used to be provided for ABI
|
||||
* compatibility, and do not need to be used anymore.
|
||||
*/
|
||||
int av_format_get_probe_score(const AVFormatContext *s);
|
||||
AVCodec * av_format_get_video_codec(const AVFormatContext *s);
|
||||
void av_format_set_video_codec(AVFormatContext *s, AVCodec *c);
|
||||
|
|
|
@ -313,6 +313,12 @@ typedef struct AVIOContext {
|
|||
*/
|
||||
enum AVIODataMarkerType current_type;
|
||||
int64_t last_time;
|
||||
|
||||
/**
|
||||
* A callback that is used instead of short_seek_threshold.
|
||||
* This is current internal only, do not use from outside.
|
||||
*/
|
||||
int (*short_seek_get)(void *opaque);
|
||||
} AVIOContext;
|
||||
|
||||
/**
|
||||
|
|
|
@ -32,8 +32,8 @@
|
|||
// 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 57
|
||||
#define LIBAVFORMAT_VERSION_MINOR 65
|
||||
#define LIBAVFORMAT_VERSION_MICRO 100
|
||||
#define LIBAVFORMAT_VERSION_MINOR 66
|
||||
#define LIBAVFORMAT_VERSION_MICRO 104
|
||||
|
||||
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
||||
LIBAVFORMAT_VERSION_MINOR, \
|
||||
|
@ -85,6 +85,10 @@
|
|||
#ifndef FF_API_HTTP_USER_AGENT
|
||||
#define FF_API_HTTP_USER_AGENT (LIBAVFORMAT_VERSION_MAJOR < 58)
|
||||
#endif
|
||||
#ifndef FF_API_HLS_WRAP
|
||||
#define FF_API_HLS_WRAP (LIBAVFORMAT_VERSION_MAJOR < 58)
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef FF_API_R_FRAME_RATE
|
||||
#define FF_API_R_FRAME_RATE 1
|
||||
|
|
|
@ -121,8 +121,7 @@
|
|||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(__GNUC__)
|
||||
#if defined(__GNUC__) || defined(__clang__)
|
||||
# define av_unused __attribute__((unused))
|
||||
#else
|
||||
# define av_unused
|
||||
|
@ -133,7 +132,7 @@
|
|||
* away. This is useful for variables accessed only from inline
|
||||
* assembler without the compiler being aware.
|
||||
*/
|
||||
#if AV_GCC_VERSION_AT_LEAST(3,1)
|
||||
#if AV_GCC_VERSION_AT_LEAST(3,1) || defined(__clang__)
|
||||
# define av_used __attribute__((used))
|
||||
#else
|
||||
# define av_used
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#define AV_CPU_FLAG_SSE3SLOW 0x20000000 ///< SSE3 supported, but usually not faster
|
||||
///< than regular MMX/SSE (e.g. Core1)
|
||||
#define AV_CPU_FLAG_SSSE3 0x0080 ///< Conroe SSSE3 functions
|
||||
#define AV_CPU_FLAG_SSSE3SLOW 0x4000000 ///< SSSE3 supported, but usually not faster
|
||||
#define AV_CPU_FLAG_ATOM 0x10000000 ///< Atom processor, some SSSE3 instructions are slower
|
||||
#define AV_CPU_FLAG_SSE4 0x0100 ///< Penryn SSE4.1 functions
|
||||
#define AV_CPU_FLAG_SSE42 0x0200 ///< Nehalem SSE4.2 functions
|
||||
|
|
|
@ -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-83255-g6d83f20"
|
||||
#define FFMPEG_VERSION "N-83885-g967feea"
|
||||
#endif /* AVUTIL_FFVERSION_H */
|
||||
|
|
|
@ -179,9 +179,6 @@ typedef struct AVFrameSideData {
|
|||
*
|
||||
* sizeof(AVFrame) is not a part of the public ABI, so new fields may be added
|
||||
* to the end with a minor bump.
|
||||
* Similarly fields that are marked as to be only accessed by
|
||||
* av_opt_ptr() can be reordered. This allows 2 forks to add fields
|
||||
* without breaking compatibility with each other.
|
||||
*
|
||||
* Fields can be accessed through AVOptions, the name string used, matches the
|
||||
* C structure field name for fields accessible through AVOptions. The AVClass
|
||||
|
@ -420,8 +417,6 @@ typedef struct AVFrame {
|
|||
|
||||
/**
|
||||
* MPEG vs JPEG YUV range.
|
||||
* It must be accessed using av_frame_get_color_range() and
|
||||
* av_frame_set_color_range().
|
||||
* - encoding: Set by user
|
||||
* - decoding: Set by libavcodec
|
||||
*/
|
||||
|
@ -433,8 +428,6 @@ typedef struct AVFrame {
|
|||
|
||||
/**
|
||||
* YUV colorspace type.
|
||||
* It must be accessed using av_frame_get_colorspace() and
|
||||
* av_frame_set_colorspace().
|
||||
* - encoding: Set by user
|
||||
* - decoding: Set by libavcodec
|
||||
*/
|
||||
|
@ -444,8 +437,6 @@ typedef struct AVFrame {
|
|||
|
||||
/**
|
||||
* frame timestamp estimated using various heuristics, in stream time base
|
||||
* Code outside libavutil should access this field using:
|
||||
* av_frame_get_best_effort_timestamp(frame)
|
||||
* - encoding: unused
|
||||
* - decoding: set by libavcodec, read by user.
|
||||
*/
|
||||
|
@ -453,8 +444,6 @@ typedef struct AVFrame {
|
|||
|
||||
/**
|
||||
* reordered pos from the last AVPacket that has been input into the decoder
|
||||
* Code outside libavutil should access this field using:
|
||||
* av_frame_get_pkt_pos(frame)
|
||||
* - encoding: unused
|
||||
* - decoding: Read by user.
|
||||
*/
|
||||
|
@ -463,8 +452,6 @@ typedef struct AVFrame {
|
|||
/**
|
||||
* duration of the corresponding packet, expressed in
|
||||
* AVStream->time_base units, 0 if unknown.
|
||||
* Code outside libavutil should access this field using:
|
||||
* av_frame_get_pkt_duration(frame)
|
||||
* - encoding: unused
|
||||
* - decoding: Read by user.
|
||||
*/
|
||||
|
@ -472,8 +459,6 @@ typedef struct AVFrame {
|
|||
|
||||
/**
|
||||
* metadata.
|
||||
* Code outside libavutil should access this field using:
|
||||
* av_frame_get_metadata(frame)
|
||||
* - encoding: Set by user.
|
||||
* - decoding: Set by libavcodec.
|
||||
*/
|
||||
|
@ -483,8 +468,6 @@ typedef struct AVFrame {
|
|||
* decode error flags of the frame, set to a combination of
|
||||
* FF_DECODE_ERROR_xxx flags if the decoder produced a frame, but there
|
||||
* were errors during the decoding.
|
||||
* Code outside libavutil should access this field using:
|
||||
* av_frame_get_decode_error_flags(frame)
|
||||
* - encoding: unused
|
||||
* - decoding: set by libavcodec, read by user.
|
||||
*/
|
||||
|
@ -494,8 +477,6 @@ typedef struct AVFrame {
|
|||
|
||||
/**
|
||||
* number of audio channels, only used for audio.
|
||||
* Code outside libavutil should access this field using:
|
||||
* av_frame_get_channels(frame)
|
||||
* - encoding: unused
|
||||
* - decoding: Read by user.
|
||||
*/
|
||||
|
@ -503,8 +484,7 @@ typedef struct AVFrame {
|
|||
|
||||
/**
|
||||
* size of the corresponding packet containing the compressed
|
||||
* frame. It must be accessed using av_frame_get_pkt_size() and
|
||||
* av_frame_set_pkt_size().
|
||||
* frame.
|
||||
* It is set to a negative value if unknown.
|
||||
* - encoding: unused
|
||||
* - decoding: set by libavcodec, read by user.
|
||||
|
@ -514,13 +494,11 @@ typedef struct AVFrame {
|
|||
#if FF_API_FRAME_QP
|
||||
/**
|
||||
* QP table
|
||||
* Not to be accessed directly from outside libavutil
|
||||
*/
|
||||
attribute_deprecated
|
||||
int8_t *qscale_table;
|
||||
/**
|
||||
* QP store stride
|
||||
* Not to be accessed directly from outside libavutil
|
||||
*/
|
||||
attribute_deprecated
|
||||
int qstride;
|
||||
|
@ -528,9 +506,6 @@ typedef struct AVFrame {
|
|||
attribute_deprecated
|
||||
int qscale_type;
|
||||
|
||||
/**
|
||||
* Not to be accessed directly from outside libavutil
|
||||
*/
|
||||
AVBufferRef *qp_table_buf;
|
||||
#endif
|
||||
/**
|
||||
|
@ -538,12 +513,22 @@ typedef struct AVFrame {
|
|||
* AVHWFramesContext describing the frame.
|
||||
*/
|
||||
AVBufferRef *hw_frames_ctx;
|
||||
|
||||
/**
|
||||
* AVBufferRef for free use by the API user. FFmpeg will never check the
|
||||
* contents of the buffer ref. FFmpeg calls av_buffer_unref() on it when
|
||||
* the frame is unreferenced. av_frame_copy_props() calls create a new
|
||||
* reference with av_buffer_ref() for the target frame's opaque_ref field.
|
||||
*
|
||||
* This is unrelated to the opaque field, although it serves a similar
|
||||
* purpose.
|
||||
*/
|
||||
AVBufferRef *opaque_ref;
|
||||
} AVFrame;
|
||||
|
||||
/**
|
||||
* Accessors for some AVFrame fields.
|
||||
* The position of these field in the structure is not part of the ABI,
|
||||
* they should not be accessed directly outside libavutil.
|
||||
* Accessors for some AVFrame fields. These used to be provided for ABI
|
||||
* compatibility, and do not need to be used anymore.
|
||||
*/
|
||||
int64_t av_frame_get_best_effort_timestamp(const AVFrame *frame);
|
||||
void av_frame_set_best_effort_timestamp(AVFrame *frame, int64_t val);
|
||||
|
|
|
@ -97,7 +97,7 @@
|
|||
#define DECLARE_ASM_CONST(n,t,v) \
|
||||
AV_PRAGMA(DATA_ALIGN(v,n)) \
|
||||
static const t __attribute__((aligned(n))) v
|
||||
#elif defined(__GNUC__)
|
||||
#elif defined(__GNUC__) || defined(__clang__)
|
||||
#define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v
|
||||
#define DECLARE_ASM_CONST(n,t,v) static const t av_used __attribute__ ((aligned (n))) v
|
||||
#elif defined(_MSC_VER)
|
||||
|
|
|
@ -63,6 +63,13 @@ enum AVSphericalProjection {
|
|||
* to the back.
|
||||
*/
|
||||
AV_SPHERICAL_CUBEMAP,
|
||||
|
||||
/**
|
||||
* Video represents a portion of a sphere mapped on a flat surface
|
||||
* using equirectangular projection. The @ref bounding fields indicate
|
||||
* the position of the current video in a larger surface.
|
||||
*/
|
||||
AV_SPHERICAL_EQUIRECTANGULAR_TILE,
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -122,6 +129,57 @@ typedef struct AVSphericalMapping {
|
|||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @name Bounding rectangle
|
||||
* @anchor bounding
|
||||
* @{
|
||||
* These fields indicate the location of the current tile, and where
|
||||
* it should be mapped relative to the original surface. They are
|
||||
* exported as 0.32 fixed point, and can be converted to classic
|
||||
* pixel values with av_spherical_bounds().
|
||||
*
|
||||
* @code{.unparsed}
|
||||
* +----------------+----------+
|
||||
* | |bound_top |
|
||||
* | +--------+ |
|
||||
* | bound_left |tile | |
|
||||
* +<---------->| |<--->+bound_right
|
||||
* | +--------+ |
|
||||
* | | |
|
||||
* | bound_bottom| |
|
||||
* +----------------+----------+
|
||||
* @endcode
|
||||
*
|
||||
* If needed, the original video surface dimensions can be derived
|
||||
* by adding the current stream or frame size to the related bounds,
|
||||
* like in the following example:
|
||||
*
|
||||
* @code{c}
|
||||
* original_width = tile->width + bound_left + bound_right;
|
||||
* original_height = tile->height + bound_top + bound_bottom;
|
||||
* @endcode
|
||||
*
|
||||
* @note These values are valid only for the tiled equirectangular
|
||||
* projection type (@ref AV_SPHERICAL_EQUIRECTANGULAR_TILE),
|
||||
* and should be ignored in all other cases.
|
||||
*/
|
||||
size_t bound_left; ///< Distance from the left edge
|
||||
size_t bound_top; ///< Distance from the top edge
|
||||
size_t bound_right; ///< Distance from the right edge
|
||||
size_t bound_bottom; ///< Distance from the bottom edge
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* Number of pixels to pad from the edge of each cube face.
|
||||
*
|
||||
* @note This value is valid for only for the cubemap projection type
|
||||
* (@ref AV_SPHERICAL_CUBEMAP), and should be ignored in all other
|
||||
* cases.
|
||||
*/
|
||||
size_t padding;
|
||||
} AVSphericalMapping;
|
||||
|
||||
/**
|
||||
|
@ -132,6 +190,22 @@ typedef struct AVSphericalMapping {
|
|||
*/
|
||||
AVSphericalMapping *av_spherical_alloc(size_t *size);
|
||||
|
||||
/**
|
||||
* Convert the @ref bounding fields from an AVSphericalVideo
|
||||
* from 0.32 fixed point to pixels.
|
||||
*
|
||||
* @param map The AVSphericalVideo map to read bound values from.
|
||||
* @param width Width of the current frame or stream.
|
||||
* @param height Height of the current frame or stream.
|
||||
* @param left Pixels from the left edge.
|
||||
* @param top Pixels from the top edge.
|
||||
* @param right Pixels from the right edge.
|
||||
* @param bottom Pixels from the bottom edge.
|
||||
*/
|
||||
void av_spherical_tile_bounds(AVSphericalMapping *map,
|
||||
size_t width, size_t height,
|
||||
size_t *left, size_t *top,
|
||||
size_t *right, size_t *bottom);
|
||||
/**
|
||||
* @}
|
||||
* @}
|
||||
|
|
|
@ -79,7 +79,7 @@
|
|||
*/
|
||||
|
||||
#define LIBAVUTIL_VERSION_MAJOR 55
|
||||
#define LIBAVUTIL_VERSION_MINOR 45
|
||||
#define LIBAVUTIL_VERSION_MINOR 48
|
||||
#define LIBAVUTIL_VERSION_MICRO 100
|
||||
|
||||
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,12 +1,12 @@
|
|||
prefix=/Users/Chris/Source/Repos/cog/ThirdParty/ffmpeg
|
||||
prefix=/Users/chris/Source/Repos/cog/ThirdParty/ffmpeg
|
||||
exec_prefix=${prefix}
|
||||
libdir=${prefix}/lib
|
||||
includedir=${prefix}/include
|
||||
|
||||
Name: libavcodec
|
||||
Description: FFmpeg codec library
|
||||
Version: 57.75.100
|
||||
Requires: libavutil >= 55.45.100
|
||||
Version: 57.83.100
|
||||
Requires: libavutil >= 55.48.100
|
||||
Requires.private:
|
||||
Conflicts:
|
||||
Libs: -L${libdir} -lavcodec -framework QuartzCore -framework CoreFoundation -framework VideoToolbox -framework CoreMedia -framework CoreVideo -framework CoreFoundation -framework AudioToolbox -framework CoreMedia -framework VideoDecodeAcceleration -framework CoreFoundation -framework QuartzCore -liconv -Wl,-framework,CoreFoundation -Wl,-framework,Security -lm -lbz2 -lz -pthread -framework CoreServices
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
prefix=/Users/Chris/Source/Repos/cog/ThirdParty/ffmpeg
|
||||
prefix=/Users/chris/Source/Repos/cog/ThirdParty/ffmpeg
|
||||
exec_prefix=${prefix}
|
||||
libdir=${prefix}/lib
|
||||
includedir=${prefix}/include
|
||||
|
||||
Name: libavformat
|
||||
Description: FFmpeg container format library
|
||||
Version: 57.65.100
|
||||
Requires: libavcodec >= 57.75.100, libavutil >= 55.45.100
|
||||
Version: 57.66.104
|
||||
Requires: libavcodec >= 57.83.100, libavutil >= 55.48.100
|
||||
Requires.private:
|
||||
Conflicts:
|
||||
Libs: -L${libdir} -lavformat -framework QuartzCore -framework CoreFoundation -framework VideoToolbox -framework CoreMedia -framework CoreVideo -framework CoreFoundation -framework AudioToolbox -framework CoreMedia -framework VideoDecodeAcceleration -framework CoreFoundation -framework QuartzCore -liconv -Wl,-framework,CoreFoundation -Wl,-framework,Security -lm -lbz2 -lz -pthread -framework CoreServices
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
prefix=/Users/Chris/Source/Repos/cog/ThirdParty/ffmpeg
|
||||
prefix=/Users/chris/Source/Repos/cog/ThirdParty/ffmpeg
|
||||
exec_prefix=${prefix}
|
||||
libdir=${prefix}/lib
|
||||
includedir=${prefix}/include
|
||||
|
||||
Name: libavutil
|
||||
Description: FFmpeg utility library
|
||||
Version: 55.45.100
|
||||
Version: 55.48.100
|
||||
Requires:
|
||||
Requires.private:
|
||||
Conflicts:
|
||||
|
|
Loading…
Reference in New Issue