X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Favformat.h;h=f9f39a6c7c0b045661d282aa03beaa33d7165e33;hb=366484fff1720977b8591e3a90fbef9f4885e53c;hp=1c1aad652f0926cedb4f688327ba6e51a2a49ff3;hpb=ae0a301668da542eaf8855e5dd61d0728181b0dd;p=ffmpeg diff --git a/libavformat/avformat.h b/libavformat/avformat.h index 1c1aad652f0..f9f39a6c7c0 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -201,6 +201,10 @@ #include "avio.h" #include "libavformat/version.h" +#if FF_API_AV_GETTIME +#include "libavutil/time.h" +#endif + struct AVFormatContext; @@ -370,9 +374,9 @@ typedef struct AVOutputFormat { const char *mime_type; const char *extensions; /**< comma-separated filename extensions */ /* output support */ - enum CodecID audio_codec; /**< default audio codec */ - enum CodecID video_codec; /**< default video codec */ - enum CodecID subtitle_codec; /**< default subtitle codec */ + enum AVCodecID audio_codec; /**< default audio codec */ + enum AVCodecID video_codec; /**< default video codec */ + enum AVCodecID subtitle_codec; /**< default subtitle codec */ /** * can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_RAWPICTURE, * AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS, @@ -383,7 +387,7 @@ typedef struct AVOutputFormat { /** * List of supported codec_id-codec_tag pairs, ordered by "better - * choice first". The arrays are all terminated by CODEC_ID_NONE. + * choice first". The arrays are all terminated by AV_CODEC_ID_NONE. */ const struct AVCodecTag * const *codec_tag; @@ -424,7 +428,7 @@ typedef struct AVOutputFormat { * @return 1 if the codec is supported, 0 if it is not. * A negative number if unknown. */ - int (*query_codec)(enum CodecID id, int std_compliance); + int (*query_codec)(enum AVCodecID id, int std_compliance); } AVOutputFormat; /** * @} @@ -626,6 +630,7 @@ typedef struct AVStream { * not actually used for encoding. */ AVCodecContext *codec; +#if FF_API_R_FRAME_RATE /** * Real base framerate of the stream. * This is the lowest framerate with which all timestamps can be @@ -635,6 +640,7 @@ typedef struct AVStream { * approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1. */ AVRational r_frame_rate; +#endif void *priv_data; /** @@ -710,13 +716,23 @@ typedef struct AVStream { */ #define MAX_STD_TIMEBASES (60*12+5) struct { +#if FF_API_R_FRAME_RATE int64_t last_dts; int64_t duration_gcd; int duration_count; double duration_error[MAX_STD_TIMEBASES]; - int64_t codec_info_duration; +#endif int nb_decoded_frames; int found_decoder; + + /** + * Those are used for average framerate estimation. + */ + int64_t fps_first_dts; + int fps_first_dts_idx; + int64_t fps_last_dts; + int fps_last_dts_idx; + } *info; int pts_wrap_bits; /**< number of bits in pts (used for wrapping control) */ @@ -883,6 +899,7 @@ typedef struct AVFormatContext { #define AVFMT_FLAG_IGNDTS 0x0008 ///< Ignore DTS on frames that contain both DTS & PTS #define AVFMT_FLAG_NOFILLIN 0x0010 ///< Do not infer any values from other values, just return what is stored in the container #define AVFMT_FLAG_NOPARSE 0x0020 ///< Do not use AVParsers, you also must set AVFMT_FLAG_NOFILLIN as the fillin code works on frames and no parsing -> no frames. Also seeking to frames can not work if parsing to find frame boundaries has been disabled +#define AVFMT_FLAG_NOBUFFER 0x0040 ///< Do not buffer frames when possible #define AVFMT_FLAG_CUSTOM_IO 0x0080 ///< The caller has supplied a custom AVIOContext, don't avio_close() it. #define AVFMT_FLAG_DISCARD_CORRUPT 0x0100 ///< Discard frames marked corrupted @@ -907,19 +924,19 @@ typedef struct AVFormatContext { * Forced video codec_id. * Demuxing: Set by user. */ - enum CodecID video_codec_id; + enum AVCodecID video_codec_id; /** * Forced audio codec_id. * Demuxing: Set by user. */ - enum CodecID audio_codec_id; + enum AVCodecID audio_codec_id; /** * Forced subtitle codec_id. * Demuxing: Set by user. */ - enum CodecID subtitle_codec_id; + enum AVCodecID subtitle_codec_id; /** * Maximum amount of memory in bytes to use for the index of each stream. @@ -1495,7 +1512,7 @@ AVOutputFormat *av_guess_format(const char *short_name, /** * Guess the codec ID based upon muxer and filename. */ -enum CodecID av_guess_codec(AVOutputFormat *fmt, const char *short_name, +enum AVCodecID av_guess_codec(AVOutputFormat *fmt, const char *short_name, const char *filename, const char *mime_type, enum AVMediaType type); @@ -1522,7 +1539,7 @@ enum CodecID av_guess_codec(AVOutputFormat *fmt, const char *short_name, * * @see av_hex_dump_log, av_pkt_dump2, av_pkt_dump_log2 */ -void av_hex_dump(FILE *f, uint8_t *buf, int size); +void av_hex_dump(FILE *f, const uint8_t *buf, int size); /** * Send a nice hexadecimal dump of a buffer to the log. @@ -1536,7 +1553,7 @@ void av_hex_dump(FILE *f, uint8_t *buf, int size); * * @see av_hex_dump, av_pkt_dump2, av_pkt_dump_log2 */ -void av_hex_dump_log(void *avcl, int level, uint8_t *buf, int size); +void av_hex_dump_log(void *avcl, int level, const uint8_t *buf, int size); /** * Send a nice dump of a packet to the specified file stream. @@ -1564,13 +1581,13 @@ void av_pkt_dump_log2(void *avcl, int level, AVPacket *pkt, int dump_payload, AVStream *st); /** - * Get the CodecID for the given codec tag tag. - * If no codec id is found returns CODEC_ID_NONE. + * Get the AVCodecID for the given codec tag tag. + * If no codec id is found returns AV_CODEC_ID_NONE. * * @param tags list of supported codec_id-codec_tag pairs, as stored * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag */ -enum CodecID av_codec_get_id(const struct AVCodecTag * const *tags, unsigned int tag); +enum AVCodecID av_codec_get_id(const struct AVCodecTag * const *tags, unsigned int tag); /** * Get the codec tag for the given codec id id. @@ -1579,7 +1596,7 @@ enum CodecID av_codec_get_id(const struct AVCodecTag * const *tags, unsigned int * @param tags list of supported codec_id-codec_tag pairs, as stored * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag */ -unsigned int av_codec_get_tag(const struct AVCodecTag * const *tags, enum CodecID id); +unsigned int av_codec_get_tag(const struct AVCodecTag * const *tags, enum AVCodecID id); int av_find_default_stream_index(AVFormatContext *s); @@ -1635,10 +1652,6 @@ void av_dump_format(AVFormatContext *ic, const char *url, int is_output); -#if FF_API_AV_GETTIME -int64_t av_gettime(void); -#endif - /** * Return in 'buf' the path with '%d' replaced by a number. * @@ -1694,26 +1707,26 @@ int av_match_ext(const char *filename, const char *extensions); * @return 1 if codec with ID codec_id can be stored in ofmt, 0 if it cannot. * A negative number if this information is not available. */ -int avformat_query_codec(AVOutputFormat *ofmt, enum CodecID codec_id, int std_compliance); +int avformat_query_codec(AVOutputFormat *ofmt, enum AVCodecID codec_id, int std_compliance); /** * @defgroup riff_fourcc RIFF FourCCs * @{ - * Get the tables mapping RIFF FourCCs to libavcodec CodecIDs. The tables are + * Get the tables mapping RIFF FourCCs to libavcodec AVCodecIDs. The tables are * meant to be passed to av_codec_get_id()/av_codec_get_tag() as in the * following code: * @code * uint32_t tag = MKTAG('H', '2', '6', '4'); * const struct AVCodecTag *table[] = { avformat_get_riff_video_tags(), 0 }; - * enum CodecID id = av_codec_get_id(table, tag); + * enum AVCodecID id = av_codec_get_id(table, tag); * @endcode */ /** - * @return the table mapping RIFF FourCCs for video to libavcodec CodecID. + * @return the table mapping RIFF FourCCs for video to libavcodec AVCodecID. */ const struct AVCodecTag *avformat_get_riff_video_tags(void); /** - * @return the table mapping RIFF FourCCs for audio to CodecID. + * @return the table mapping RIFF FourCCs for audio to AVCodecID. */ const struct AVCodecTag *avformat_get_riff_audio_tags(void); /**