int reorder;
/**
- * bitstream filters to run on stream
+ * bitstream filter to run on stream
* - encoding: Set by muxer using ff_stream_add_bitstream_filter
* - decoding: unused
*/
- AVBSFContext **bsfcs;
- int nb_bsfcs;
+ AVBSFContext *bsfc;
/**
* Whether or not check_bitstream should still be run on each packet
*/
int need_context_update;
+ int is_intra_only;
+
FFFrac *priv_pts;
};
int ff_hex_to_data(uint8_t *data, const char *p);
/**
- * Add packet to AVFormatContext->packet_buffer list, determining its
+ * Add packet to an AVFormatContext's packet_buffer list, determining its
* interleaved position using compare() function argument.
- * @return 0, or < 0 on error
+ * @return 0 on success, < 0 on error. pkt will always be blank on return.
*/
int ff_interleave_add_packet(AVFormatContext *s, AVPacket *pkt,
int (*compare)(AVFormatContext *, const AVPacket *, const AVPacket *));
int ff_write_chained(AVFormatContext *dst, int dst_stream, AVPacket *pkt,
AVFormatContext *src, int interleave);
-/**
- * Get the length in bytes which is needed to store val as v.
- */
-int ff_get_v_length(uint64_t val);
-
-/**
- * Put val using a variable number of bytes.
- */
-void ff_put_v(AVIOContext *bc, uint64_t val);
-
/**
* Read a whole line of text from AVIOContext. Stop reading after reaching
* either a \\n, a \\0 or EOF. The returned string is always \\0-terminated,
int ff_read_packet(AVFormatContext *s, AVPacket *pkt);
/**
- * Interleave a packet per dts in an output media file.
- *
- * Packets with pkt->destruct == av_destruct_packet will be freed inside this
- * function, so they cannot be used after it. Note that calling av_packet_unref()
- * on them is still safe.
+ * Interleave an AVPacket per dts so it can be muxed.
*
- * @param s media file handle
+ * @param s an AVFormatContext for output. pkt resp. out will be added to
+ * resp. taken from its packet buffer.
* @param out the interleaved packet will be output here
- * @param pkt the input packet
+ * @param pkt the input packet; will be blank on return if not NULL
* @param flush 1 if no further packets are available as input and all
* remaining packets should be output
- * @return 1 if a packet was output, 0 if no packet could be output,
- * < 0 if an error occurred
+ * @return 1 if a packet was output, 0 if no packet could be output
+ * (in which case out may be uninitialized), < 0 if an error occurred
*/
int ff_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out,
AVPacket *pkt, int flush);
enum AVCodecID ff_codec_get_id(const AVCodecTag *tags, unsigned int tag);
+int ff_is_intra_only(enum AVCodecID id);
+
/**
* Select a PCM codec based on the given parameters.
*
int ff_stream_encode_params_copy(AVStream *dst, const AVStream *src);
/**
- * Wrap errno on rename() error.
+ * Wrap avpriv_io_move and log if error happens.
*
- * @param oldpath source path
- * @param newpath destination path
+ * @param url_src source path
+ * @param url_dst destination path
* @return 0 or AVERROR on failure
*/
-static inline int ff_rename(const char *oldpath, const char *newpath, void *logctx)
-{
- int ret = 0;
- if (rename(oldpath, newpath) == -1) {
- ret = AVERROR(errno);
- if (logctx) {
- char err[AV_ERROR_MAX_STRING_SIZE] = {0};
- av_make_error_string(err, AV_ERROR_MAX_STRING_SIZE, ret);
- av_log(logctx, AV_LOG_ERROR, "failed to rename file %s to %s: %s\n", oldpath, newpath, err);
- }
- }
- return ret;
-}
+int ff_rename(const char *url_src, const char *url_dst, void *logctx);
/**
* Allocate extradata with additional AV_INPUT_BUFFER_PADDING_SIZE at end