]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/blobdiff - libavformat/assdec.c
frsh: Export information about the last RTP contract and VRES
[frescor/ffmpeg.git] / libavformat / assdec.c
index fa0ab793e00547b7232a057362119eeab91ab075..32fb09d22d001cb02101cc3963844667e06d5040 100644 (file)
@@ -37,7 +37,7 @@ static void get_line(ByteIOContext *s, char *buf, int maxlen)
 
     do{
         c = get_byte(s);
-        if (i < maxlen-1 && c != '\r')
+        if (i < maxlen-1)
             buf[i++] = c;
     }while(c != '\n' && c);
 
@@ -140,10 +140,10 @@ static int read_header(AVFormatContext *s, AVFormatParameters *ap)
         ass->event[i]= p;
         while(*p && *p != '\n')
             p++;
-        *p++ = 0;
+        p++;
     }
 
-    qsort(ass->event, ass->event_count, sizeof(*ass->event), event_cmp);
+    qsort(ass->event, ass->event_count, sizeof(*ass->event), (void*)event_cmp);
 
     return 0;
 
@@ -156,14 +156,15 @@ fail:
 static int read_packet(AVFormatContext *s, AVPacket *pkt)
 {
     ASSContext *ass = s->priv_data;
-    uint8_t *p;
+    uint8_t *p, *end;
 
     if(ass->event_index >= ass->event_count)
         return AVERROR(EIO);
 
     p= ass->event[ ass->event_index ];
 
-    av_new_packet(pkt, strlen(p));
+    end= strchr(p, '\n');
+    av_new_packet(pkt, end ? end-p+1 : strlen(p));
     pkt->flags |= PKT_FLAG_KEY;
     pkt->pos= p - ass->event_buffer + s->streams[0]->codec->extradata_size;
     pkt->pts= pkt->dts= get_pts(p);