40 0x01, 0x4d, 0x40, 0x1e, 0xff, 0xe1, 0x00, 0x02, 0x67, 0x4d, 0x01, 0x00, 0x02, 0x68, 0xef
111 char timebuf[30], content[5] = { 0 };
119 default:
str =
"unknown";
break;
122 snprintf(timebuf,
sizeof(timebuf),
"nopts");
124 snprintf(timebuf,
sizeof(timebuf),
"%"PRId64, time);
131 memcpy(content, &buf[4], 4);
133 snprintf(content,
sizeof(content),
"-");
134 printf(
"write_data len %d, time %s, type %s atom %s\n",
size, timebuf,
str, content);
146 out = fopen(buf,
"wb");
158 printf(
"%02x",
hash[
i]);
170 printf(
"%d: ",
line);
177 #define check(value, ...) check_func(value, __LINE__, __VA_ARGS__)
179 static void init_fps(
int bf,
int audio_preroll,
int fps)
243 static void init(
int bf,
int audio_preroll)
250 int end_frames =
frames + n;
352 printf(
"movenc-test [-w]\n"
353 "-w write output into files\n");
356 int main(
int argc,
char **argv)
456 init_out(
"empty-moov-no-elst-no-adjust");
503 init_out(
"delay-moov-empty-track-flush");
531 empty_moov_pos = prev_pos =
out_size;
548 check(
out_size == 0,
"Output written during init with delay_moov");
555 check(
out_size == empty_moov_pos,
"Manually flushed content differs from automatically flushed, %d vs %d",
out_size, empty_moov_pos);
559 check(!memcmp(
hash, content,
HASH_SIZE),
"delay_moov content differs from empty_moov");
579 av_dict_set(&
opts,
"movflags",
"frag_custom+empty_moov+dash+frag_discont", 0);
585 init_out(
"empty-moov-second-frag-discont");
594 av_dict_set(&
opts,
"movflags",
"frag_custom+delay_moov+dash+frag_discont", 0);
600 init_out(
"delay-moov-second-frag-discont");
618 init_out(
"delay-moov-elst-second-frag");
625 av_dict_set(&
opts,
"movflags",
"frag_custom+delay_moov+dash+frag_discont", 0);
630 init_out(
"delay-moov-elst-init-discont");
634 init_out(
"delay-moov-elst-second-frag-discont");
646 init_out(
"delay-moov-elst-signal-init");
651 init_out(
"delay-moov-elst-signal-second-frag");
658 av_dict_set(&
opts,
"movflags",
"frag_custom+delay_moov+dash+frag_discont", 0);
664 init_out(
"delay-moov-elst-signal-init-discont");
668 init_out(
"delay-moov-elst-signal-second-frag-discont");
676 av_dict_set(&
opts,
"movflags",
"frag_custom+delay_moov+dash+frag_discont", 0);
682 init_out(
"delay-moov-elst-signal-init-discont-largets");
685 init_out(
"delay-moov-elst-signal-second-frag-discont-largets");
750 init_out(
"vfr-noduration-interleave");
773 init_out(
"delay-moov-elst-neg-cts");
774 av_dict_set(&
opts,
"movflags",
"frag_keyframe+delay_moov+negative_cts_offsets", 0);
784 av_dict_set(&
opts,
"movflags",
"frag_keyframe+empty_moov+negative_cts_offsets", 0);
AVIODataMarkerType
Different data types that can be returned via the AVIO write_data_type callback.
@ AVIO_DATA_MARKER_BOUNDARY_POINT
A point in the output bytestream where a demuxer can start parsing (for non self synchronizing bytest...
@ AVIO_DATA_MARKER_TRAILER
Trailer data, which doesn't contain actual content, but only for finalizing the output file.
@ AVIO_DATA_MARKER_HEADER
Header data; this needs to be present for the stream to be decodeable.
@ AVIO_DATA_MARKER_UNKNOWN
This is any, unlabelled data.
@ AVIO_DATA_MARKER_SYNC_POINT
A point in the output bytestream where a decoder can start decoding (i.e.
#define AVIO_FLAG_WRITE
write-only
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 avio_context_free(AVIOContext **s)
Free the supplied IO context and everything associated with it.
static int getopt(int argc, char *argv[], char *opts)
#define AV_INPUT_BUFFER_PADDING_SIZE
Required number of additionally allocated bytes at the end of the input bitstream for decoding.
void av_packet_free(AVPacket **pkt)
Free the packet, if the packet is reference counted, it will be unreferenced first.
void av_packet_unref(AVPacket *pkt)
Wipe the packet.
#define AV_PKT_FLAG_KEY
The packet contains a keyframe.
AVPacket * av_packet_alloc(void)
Allocate an AVPacket and set its fields to default values.
void avformat_free_context(AVFormatContext *s)
Free an AVFormatContext and all its streams.
AVFormatContext * avformat_alloc_context(void)
Allocate an AVFormatContext.
AVStream * avformat_new_stream(AVFormatContext *s, const AVCodec *c)
Add a new stream to a media file.
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.
ff_const59 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...
int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt)
Write a packet to an output media file ensuring correct interleaving.
int av_write_trailer(AVFormatContext *s)
Write the stream trailer to an output media file and free the file private data.
int av_write_frame(AVFormatContext *s, AVPacket *pkt)
Write a packet to an output media file.
void av_dict_free(AVDictionary **pm)
Free all the memory allocated for an AVDictionary struct and all keys and values.
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags)
Set the given entry in *pm, overwriting an existing entry.
#define AV_LOG_WARNING
Something somehow does not look correct.
void av_log_set_callback(void(*callback)(void *, int, const char *, va_list))
Set the logging callback.
void av_log_default_callback(void *ptr, int level, const char *fmt, va_list vl)
Default logging callback.
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.
void av_md5_init(AVMD5 *ctx)
Initialize MD5 hashing.
struct AVMD5 * av_md5_alloc(void)
Allocate an AVMD5 context.
void av_md5_final(AVMD5 *ctx, uint8_t *dst)
Finish hashing and output digest value.
void av_md5_update(AVMD5 *ctx, const uint8_t *src, int len)
Update hash value.
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
@ AV_PICTURE_TYPE_I
Intra.
@ AV_PICTURE_TYPE_P
Predicted.
@ AV_PICTURE_TYPE_B
Bi-dir predicted.
#define AV_NOPTS_VALUE
Undefined timestamp value.
Public header for MD5 hash function implementation.
static const uint8_t header[24]
int extradata_size
Size of the extradata content in bytes.
enum AVMediaType codec_type
General type of the encoded data.
uint8_t * extradata
Extra binary data needed for initializing the decoder, codec-dependent.
enum AVCodecID codec_id
Specific type of the encoded data (the codec used).
int sample_rate
Audio only.
AVIOContext * pb
I/O context.
int flags
Flags modifying the (de)muxer behaviour.
ff_const59 struct AVOutputFormat * oformat
The output container format.
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.
This structure stores compressed data.
int flags
A combination of AV_PKT_FLAG values.
int64_t duration
Duration of this packet in AVStream->time_base units, 0 if unknown.
int64_t pts
Presentation timestamp in AVStream->time_base units; the time at which the decompressed packet will b...
int64_t dts
Decompression timestamp in AVStream->time_base units; the time at which the packet is decompressed.
AVCodecParameters * codecpar
Codec parameters associated with this stream.
AVRational time_base
This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented.
static void mux_gops(int n)
static void skip_gops(int n)
int main(int argc, char **argv)
static void count_warnings(void *avcl, int level, const char *fmt, va_list vl)
static void reset_count_warnings(void)
static const uint8_t h264_extradata[]
static void mux_frames(int n, int c)
static const char * format
static void init_out(const char *name)
static void init_fps(int bf, int audio_preroll, int fps)
static int io_write(void *opaque, uint8_t *buf, int size)
enum AVPictureType last_picture
static void init(int bf, int audio_preroll)
static void close_out(void)
static const uint8_t aac_extradata[]
static void init_count_warnings(void)
static void signal_init_ts(void)
static void check_func(int value, int line, const char *msg,...)
static int io_write_data_type(void *opaque, uint8_t *buf, int size, enum AVIODataMarkerType type, int64_t time)