/*
- * Adaptive stream format muxer
- * Copyright (c) 2000, 2001 Fabrice Bellard.
+ * ASF muxer
+ * Copyright (c) 2000, 2001 Fabrice Bellard
*
* This file is part of FFmpeg.
*
static void put_guid(ByteIOContext *s, const GUID *g)
{
assert(sizeof(*g) == 16);
- put_buffer(s, g, sizeof(*g));
+ put_buffer(s, *g, sizeof(*g));
}
static void put_str16_nolen(ByteIOContext *s, const char *tag);
ASFContext *asf = s->priv_data;
int packet_hdr_size, packet_filled_size;
+ assert(asf->packet_timestamp_end >= asf->packet_timestamp_start);
+
if (asf->is_streamed) {
put_chunk(s, 0x4424, asf->packet_size, 0);
}
// multi payloads
frag_len1 = asf->packet_size_left - PAYLOAD_HEADER_SIZE_MULTIPLE_PAYLOADS - PACKET_HEADER_MIN_SIZE - 1;
- asf->packet_timestamp_start = timestamp;
-
if(frag_len1 < payload_len && avst->codec->codec_type == CODEC_TYPE_AUDIO){
flush_packet(s);
continue;
if(codec->codec_type == CODEC_TYPE_AUDIO)
flags &= ~PKT_FLAG_KEY;
- //XXX /FIXME use duration from AVPacket (quick hack by)
pts = (pkt->pts != AV_NOPTS_VALUE) ? pkt->pts : pkt->dts;
assert(pts != AV_NOPTS_VALUE);
duration = pts * 10000;
- asf->duration= FFMAX(asf->duration, duration);
+ asf->duration= FFMAX(asf->duration, duration + pkt->duration * 10000);
packet_st = asf->nb_packets;
put_frame(s, stream, s->streams[pkt->stream_index], pkt->dts, pkt->data, pkt->size, flags);
return 0;
}
-#ifdef CONFIG_ASF_MUXER
+#if CONFIG_ASF_MUXER
AVOutputFormat asf_muxer = {
"asf",
- "asf format",
+ NULL_IF_CONFIG_SMALL("ASF format"),
"video/x-ms-asf",
"asf,wmv,wma",
sizeof(ASFContext),
-#ifdef CONFIG_LIBMP3LAME
+#if CONFIG_LIBMP3LAME
CODEC_ID_MP3,
#else
CODEC_ID_MP2,
asf_write_packet,
asf_write_trailer,
.flags = AVFMT_GLOBALHEADER,
- .codec_tag= (const AVCodecTag*[]){codec_asf_bmp_tags, codec_bmp_tags, codec_wav_tags, 0},
+ .codec_tag= (const AVCodecTag* const []){codec_asf_bmp_tags, codec_bmp_tags, codec_wav_tags, 0},
};
#endif
-#ifdef CONFIG_ASF_STREAM_MUXER
+#if CONFIG_ASF_STREAM_MUXER
AVOutputFormat asf_stream_muxer = {
"asf_stream",
- "asf format",
+ NULL_IF_CONFIG_SMALL("ASF format"),
"video/x-ms-asf",
"asf,wmv,wma",
sizeof(ASFContext),
-#ifdef CONFIG_LIBMP3LAME
+#if CONFIG_LIBMP3LAME
CODEC_ID_MP3,
#else
CODEC_ID_MP2,
asf_write_packet,
asf_write_trailer,
.flags = AVFMT_GLOBALHEADER,
- .codec_tag= (const AVCodecTag*[]){codec_asf_bmp_tags, codec_bmp_tags, codec_wav_tags, 0},
+ .codec_tag= (const AVCodecTag* const []){codec_asf_bmp_tags, codec_bmp_tags, codec_wav_tags, 0},
};
#endif //CONFIG_ASF_STREAM_MUXER