72     crc = 
av_crc(crc_table, crc, tagbuf, 4);
 
   75         crc = 
av_crc(crc_table, crc, buf, length);
 
   90                "APNG muxer supports only a single video APNG stream.\n");
 
   98                "Last frame delay is too precise. Reducing to %d/%d (%f).\n",
 
  122     int side_data_size = 0;
 
  128     if (side_data_size) {
 
  141         av_log(format_context, 
AV_LOG_INFO, 
"Only a single frame so saving as a normal PNG.\n");
 
  145         if (existing_acTL_chunk) {
 
  146             uint8_t *chunk_after_acTL = existing_acTL_chunk + 
AV_RB32(existing_acTL_chunk) + 12;
 
  155         if (existing_fcTL_chunk) {
 
  156             uint8_t *chunk_after_fcTL = existing_fcTL_chunk + 
AV_RB32(existing_fcTL_chunk) + 12;
 
  172             if (!existing_acTL_chunk) {
 
  183         if (existing_fcTL_chunk) {
 
  186             existing_fcTL_chunk += 8;
 
  187             delay.
num = 
AV_RB16(existing_fcTL_chunk + 20);
 
  188             delay.
den = 
AV_RB16(existing_fcTL_chunk + 22);
 
  190             if (delay.
num == 0 && delay.
den == 0) {
 
  194                     if (!
av_reduce(&delay.
num, &delay.
den, delay_num_raw, delay_den_raw, USHRT_MAX) &&
 
  197                                "Frame rate is too high or specified too precisely. Unable to copy losslessly.\n");
 
  275 #define OFFSET(x) offsetof(APNGMuxContext, x) 
  276 #define ENC AV_OPT_FLAG_ENCODING_PARAM 
  278     { 
"plays", 
"Number of times to play the output: 0 - infinite loop, 1 - no loop", 
OFFSET(plays),
 
  280     { 
"final_delay", 
"Force delay after the last frame", 
OFFSET(last_delay),
 
  295     .mime_type      = 
"image/png",
 
  296     .extensions     = 
"apng",
 
  303     .priv_class     = &apng_muxer_class,
 
static void write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int unqueue)
 
void avio_wb64(AVIOContext *s, uint64_t val)
 
static int apng_write_trailer(AVFormatContext *format_context)
 
#define AV_LOG_WARNING
Something somehow does not look correct. 
 
#define LIBAVUTIL_VERSION_INT
 
enum AVCodecID codec_id
Specific type of the encoded data (the codec used). 
 
static const AVClass apng_muxer_class
 
int64_t avio_seek(AVIOContext *s, int64_t offset, int whence)
fseek() equivalent for AVIOContext. 
 
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
 
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_WB64 unsigned int_TMPL AV_WB32 unsigned int_TMPL AV_WB24 unsigned int_TMPL AV_RB16
 
This struct describes the properties of an encoded stream. 
 
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
 
#define av_assert0(cond)
assert() equivalent, that is always enabled. 
 
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_WB64 unsigned int_TMPL AV_RB32
 
AVStream ** streams
A list of all streams in the file. 
 
Public header for CRC hash function implementation. 
 
static int flush_packet(AVFormatContext *format_context, AVPacket *packet)
 
static void apng_write_chunk(AVIOContext *io_context, uint32_t tag, uint8_t *buf, size_t length)
 
static av_always_inline int64_t avio_tell(AVIOContext *s)
ftell() equivalent for AVIOContext. 
 
int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max)
Reduce a fraction. 
 
void avio_write(AVIOContext *s, const unsigned char *buf, int size)
 
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered. 
 
uint8_t * av_packet_get_side_data(const AVPacket *pkt, enum AVPacketSideDataType type, int *size)
Get side information from packet. 
 
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
 
AVOutputFormat ff_apng_muxer
 
enum AVMediaType codec_type
General type of the encoded data. 
 
simple assert() macros that are a bit more flexible than ISO C assert(). 
 
int extradata_size
Size of the extradata content in bytes. 
 
unsigned int nb_streams
Number of elements in AVFormatContext.streams. 
 
int seekable
A combination of AVIO_SEEKABLE_ flags or 0 when the stream is not seekable. 
 
static int write_trailer(AVFormatContext *s1)
 
uint32_t av_crc(const AVCRC *ctx, uint32_t crc, const uint8_t *buffer, size_t length)
Calculate the CRC of a block. 
 
static uint8_t * apng_find_chunk(uint32_t tag, uint8_t *buf, size_t length)
 
#define AVIO_SEEKABLE_NORMAL
Seeking works like for a local file. 
 
The AV_PKT_DATA_NEW_EXTRADATA is used to notify the codec or the format that the extradata buffer was...
 
#define AV_LOG_INFO
Standard information. 
 
AVIOContext * pb
I/O context. 
 
void av_packet_unref(AVPacket *pkt)
Wipe the packet. 
 
int av_copy_packet(AVPacket *dst, const AVPacket *src)
Copy packet, including contents. 
 
Describe the class of an AVClass context structure. 
 
static const AVOption options[]
 
Rational number (pair of numerator and denominator). 
 
static int apng_write_packet(AVFormatContext *format_context, AVPacket *packet)
 
const AVCRC * av_crc_get_table(AVCRCId crc_id)
Get an initialized standard CRC table. 
 
#define MKBETAG(a, b, c, d)
 
#define AV_INPUT_BUFFER_PADDING_SIZE
Required number of additionally allocated bytes at the end of the input bitstream for decoding...
 
void * priv_data
Format private data. 
 
static void write_header(FFV1Context *f)
 
uint8_t * extradata
Extra binary data needed for initializing the decoder, codec-dependent. 
 
int64_t dts
Decompression timestamp in AVStream->time_base units; the time at which the packet is decompressed...
 
void avio_wb32(AVIOContext *s, unsigned int val)
 
AVCodecParameters * codecpar
 
AVRational time_base
This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented...
 
This structure stores compressed data. 
 
static int apng_write_header(AVFormatContext *format_context)