40     0x01, 0x4d, 0x40, 0x1e, 0xff, 0xe1, 0x00, 0x02, 0x67, 0x4d, 0x01, 0x00, 0x02, 0x68, 0xef
 
  103         fwrite(buf, 1, size, 
out);
 
  110     char timebuf[30], content[5] = { 0 };
 
  120         snprintf(timebuf, 
sizeof(timebuf), 
"nopts");
 
  122         snprintf(timebuf, 
sizeof(timebuf), 
"%"PRId64, time);
 
  129         memcpy(content, &buf[4], 4);
 
  131         snprintf(content, 
sizeof(content), 
"-");
 
  132     printf(
"write_data len %d, time %s, type %s atom %s\n", size, timebuf, str, content);
 
  144         out = fopen(buf, 
"wb");
 
  156         printf(
"%02x", 
hash[i]);
 
  168         printf(
"%d: ", line);
 
  175 #define check(value, ...) check_func(value, __LINE__, __VA_ARGS__) 
  177 static void init_fps(
int bf, 
int audio_preroll, 
int fps)
 
  241 static void init(
int bf, 
int audio_preroll)
 
  277                     if (((
frames + 1) % gop_size) == 0) {
 
  304             pkt.
pts += (1LL<<32);
 
  305             pkt.
dts += (1LL<<32);
 
  354     printf(
"movenc-test [-w]\n" 
  355            "-w          write output into files\n");
 
  358 int main(
int argc, 
char **argv)
 
  367         c = 
getopt(argc, argv, 
"wh");
 
  391     av_dict_set(&opts, 
"movflags", 
"frag_keyframe", 0);
 
  400     av_dict_set(&opts, 
"movflags", 
"frag_keyframe", 0);
 
  412     av_dict_set(&opts, 
"movflags", 
"frag_keyframe", 0);
 
  422     av_dict_set(&opts, 
"movflags", 
"frag_keyframe", 0);
 
  432     av_dict_set(&opts, 
"movflags", 
"frag_keyframe+empty_moov", 0);
 
  444     av_dict_set(&opts, 
"movflags", 
"frag_keyframe+empty_moov", 0);
 
  455     init_out(
"empty-moov-no-elst-no-adjust");
 
  456     av_dict_set(&opts, 
"movflags", 
"frag_keyframe+empty_moov", 0);
 
  469     av_dict_set(&opts, 
"movflags", 
"frag_keyframe+delay_moov", 0);
 
  479     av_dict_set(&opts, 
"movflags", 
"frag_keyframe+delay_moov", 0);
 
  488     av_dict_set(&opts, 
"movflags", 
"frag_keyframe+delay_moov", 0);
 
  502     init_out(
"delay-moov-empty-track-flush");
 
  503     av_dict_set(&opts, 
"movflags", 
"frag_custom+delay_moov", 0);
 
  521     av_dict_set(&opts, 
"movflags", 
"frag_keyframe+empty_moov", 0);
 
  530     empty_moov_pos = prev_pos = 
out_size;
 
  544     av_dict_set(&opts, 
"movflags", 
"frag_custom+delay_moov", 0);
 
  547     check(
out_size == 0, 
"Output written during init with delay_moov");
 
  554     check(
out_size == empty_moov_pos, 
"Manually flushed content differs from automatically flushed, %d vs %d", 
out_size, empty_moov_pos);
 
  558     check(!memcmp(
hash, content, 
HASH_SIZE), 
"delay_moov content differs from empty_moov");
 
  565     av_dict_set(&opts, 
"movflags", 
"frag_custom+empty_moov+dash", 0);
 
  578     av_dict_set(&opts, 
"movflags", 
"frag_custom+empty_moov+dash+frag_discont", 0);
 
  584     init_out(
"empty-moov-second-frag-discont");
 
  593     av_dict_set(&opts, 
"movflags", 
"frag_custom+delay_moov+dash+frag_discont", 0);
 
  599     init_out(
"delay-moov-second-frag-discont");
 
  609     av_dict_set(&opts, 
"movflags", 
"frag_custom+delay_moov+dash", 0);
 
  617     init_out(
"delay-moov-elst-second-frag");
 
  624     av_dict_set(&opts, 
"movflags", 
"frag_custom+delay_moov+dash+frag_discont", 0);
 
  629     init_out(
"delay-moov-elst-init-discont");
 
  633     init_out(
"delay-moov-elst-second-frag-discont");
 
  642     av_dict_set(&opts, 
"movflags", 
"frag_custom+delay_moov+dash", 0);
 
  645     init_out(
"delay-moov-elst-signal-init");
 
  650     init_out(
"delay-moov-elst-signal-second-frag");
 
  657     av_dict_set(&opts, 
"movflags", 
"frag_custom+delay_moov+dash+frag_discont", 0);
 
  663     init_out(
"delay-moov-elst-signal-init-discont");
 
  667     init_out(
"delay-moov-elst-signal-second-frag-discont");
 
  675     av_dict_set(&opts, 
"movflags", 
"frag_custom+delay_moov+dash+frag_discont", 0);
 
  681     init_out(
"delay-moov-elst-signal-init-discont-largets");
 
  684     init_out(
"delay-moov-elst-signal-second-frag-discont-largets");
 
  702     av_dict_set(&opts, 
"movflags", 
"frag_keyframe+delay_moov+dash", 0);
 
  721     av_dict_set(&opts, 
"movflags", 
"frag_keyframe+delay_moov+dash", 0);
 
  737     av_dict_set(&opts, 
"movflags", 
"frag_keyframe+delay_moov", 0);
 
  749     init_out(
"vfr-noduration-interleave");
 
  750     av_dict_set(&opts, 
"movflags", 
"frag_keyframe+delay_moov", 0);
 
  772     init_out(
"delay-moov-elst-neg-cts");
 
  773     av_dict_set(&opts, 
"movflags", 
"frag_keyframe+delay_moov+negative_cts_offsets", 0);
 
  783     av_dict_set(&opts, 
"movflags", 
"frag_keyframe+empty_moov+negative_cts_offsets", 0);
 
int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt)
Write a packet to an output media file ensuring correct interleaving. 
static const uint8_t h264_extradata[]
int av_write_frame(AVFormatContext *s, AVPacket *pkt)
Write a packet to an output media file. 
#define AV_LOG_WARNING
Something somehow does not look correct. 
enum AVCodecID codec_id
Specific type of the encoded data (the codec used). 
static void count_warnings(void *avcl, int level, const char *fmt, va_list vl)
#define AVIO_FLAG_WRITE
write-only 
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
static void mux_frames(int n, int c)
enum AVPictureType last_picture
static int io_write_data_type(void *opaque, uint8_t *buf, int size, enum AVIODataMarkerType type, int64_t time)
void av_md5_update(AVMD5 *ctx, const uint8_t *src, int len)
Update hash value. 
Trailer data, which doesn't contain actual content, but only for finalizing the output file...
struct AVMD5 * av_md5_alloc(void)
Allocate an AVMD5 context. 
int64_t duration
Duration of this packet in AVStream->time_base units, 0 if unknown. 
AVStream * avformat_new_stream(AVFormatContext *s, const AVCodec *c)
Add a new stream to a media file. 
A point in the output bytestream where a demuxer can start parsing (for non self synchronizing bytest...
AVFormatContext * avformat_alloc_context(void)
Allocate an AVFormatContext. 
int flags
Flags modifying the (de)muxer behaviour. 
static void reset_count_warnings(void)
static const uint8_t header[24]
struct AVOutputFormat * oformat
The output container format. 
#define AV_PKT_FLAG_KEY
The packet contains a keyframe. 
AVIOContext * avio_alloc_context(unsigned char *buffer, int buffer_size, int write_flag, void *opaque, int(*read_packet)(void *opaque, uint8_t *buf, int buf_size), int(*write_packet)(void *opaque, uint8_t *buf, int buf_size), int64_t(*seek)(void *opaque, int64_t offset, int whence))
Allocate and initialize an AVIOContext for buffered I/O. 
void av_dict_free(AVDictionary **pm)
Free all the memory allocated for an AVDictionary struct and all keys and values. ...
enum AVMediaType codec_type
General type of the encoded data. 
void av_log_default_callback(void *ptr, int level, const char *fmt, va_list vl)
Default logging callback. 
int flags
A combination of AV_PKT_FLAG values. 
int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b)
Compare two timestamps each in its own time base. 
int extradata_size
Size of the extradata content in bytes. 
int(* write_data_type)(void *opaque, uint8_t *buf, int buf_size, enum AVIODataMarkerType type, int64_t time)
A callback that is used instead of write_packet. 
static void init_fps(int bf, int audio_preroll, int fps)
This is any, unlabelled data. 
av_warn_unused_result int avformat_write_header(AVFormatContext *s, AVDictionary **options)
Allocate the stream private data and write the stream header to an output media file. 
void av_log_set_callback(void(*callback)(void *, int, const char *, va_list))
Set the logging callback. 
GLsizei GLboolean const GLfloat * value
AVIODataMarkerType
Different data types that can be returned via the AVIO write_data_type callback. 
AVOutputFormat * av_guess_format(const char *short_name, const char *filename, const char *mime_type)
Return the output format in the list of registered output formats which best matches the provided par...
static void mux_gops(int n)
AVIOContext * pb
I/O context. 
static void close_out(void)
static int getopt(int argc, char *argv[], char *opts)
void av_md5_init(AVMD5 *ctx)
Initialize MD5 hashing. 
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags)
Set the given entry in *pm, overwriting an existing entry. 
static const char * format
void avformat_free_context(AVFormatContext *s)
Free an AVFormatContext and all its streams. 
void av_md5_final(AVMD5 *ctx, uint8_t *dst)
Finish hashing and output digest value. 
static void init_out(const char *name)
static void init_count_warnings(void)
int sample_rate
Audio only. 
void avio_context_free(AVIOContext **s)
Free the supplied IO context and everything associated with it. 
int main(int argc, char **argv)
static void init(int bf, int audio_preroll)
void av_init_packet(AVPacket *pkt)
Initialize optional fields of a packet with default values. 
static void signal_init_ts(void)
#define AV_INPUT_BUFFER_PADDING_SIZE
Required number of additionally allocated bytes at the end of the input bitstream for decoding...
static void skip_gops(int n)
A point in the output bytestream where a decoder can start decoding (i.e. 
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...
int av_write_trailer(AVFormatContext *s)
Write the stream trailer to an output media file and free the file private data. 
static int io_write(void *opaque, uint8_t *buf, int size)
Public header for MD5 hash function implementation. 
AVCodecParameters * codecpar
static const uint8_t aac_extradata[]
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. 
void av_register_all(void)
Initialize libavformat and register all the muxers, demuxers and protocols. 
static void check_func(int value, int line, const char *msg,...)
int64_t pts
Presentation timestamp in AVStream->time_base units; the time at which the decompressed packet will b...
Header data; this needs to be present for the stream to be decodeable. 
#define AV_NOPTS_VALUE
Undefined timestamp value.