diff asf-enc.c @ 1782:4f4edbced58a libavformat

dont set the keyframe flag for audio as microshitty doesnt do it and some things have problems with our asfs, maybe that has a positive effect?
author michael
date Mon, 12 Feb 2007 19:24:53 +0000
parents 3562fd629c37
children 82809df9668b
line wrap: on
line diff
--- a/asf-enc.c	Mon Feb 12 15:57:21 2007 +0000
+++ b/asf-enc.c	Mon Feb 12 19:24:53 2007 +0000
@@ -715,10 +715,14 @@
     AVCodecContext *codec;
     int64_t packet_st,pts;
     int start_sec,i;
+    int flags= pkt->flags;
 
     codec = s->streams[pkt->stream_index]->codec;
     stream = &asf->streams[pkt->stream_index];
 
+    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);
@@ -726,10 +730,10 @@
     asf->duration= FFMAX(asf->duration, duration);
 
     packet_st = asf->nb_packets;
-    put_frame(s, stream, pkt->dts, pkt->data, pkt->size, pkt->flags);
+    put_frame(s, stream, pkt->dts, pkt->data, pkt->size, flags);
 
     /* check index */
-    if ((!asf->is_streamed) && (codec->codec_type == CODEC_TYPE_VIDEO) && (pkt->flags & PKT_FLAG_KEY)) {
+    if ((!asf->is_streamed) && (flags & PKT_FLAG_KEY)) {
         start_sec = (int)(duration / INT64_C(10000000));
         if (start_sec != (int)(asf->last_indexed_pts / INT64_C(10000000))) {
             for(i=asf->nb_index_count;i<start_sec;i++) {