[SCM] libav/experimental: Set pts/dts in raw (yuv,rgb,pcm) demuxers.

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:11:44 UTC 2013


The following commit has been merged in the experimental branch:
commit f5b410312fb201e819f158c78d3a8266dd07eae9
Author: Michael Niedermayer <michaelni at gmx.at>
Date:   Sat Jan 12 00:24:10 2008 +0000

    Set pts/dts in raw (yuv,rgb,pcm) demuxers.
    
    Originally committed as revision 11513 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavformat/raw.c b/libavformat/raw.c
index 7efa716..d4b1389 100644
--- a/libavformat/raw.c
+++ b/libavformat/raw.c
@@ -105,7 +105,7 @@ static int raw_read_header(AVFormatContext *s, AVFormatParameters *ap)
 
 static int raw_read_packet(AVFormatContext *s, AVPacket *pkt)
 {
-    int ret, size;
+    int ret, size, bps;
     //    AVStream *st = s->streams[0];
 
     size= RAW_PACKET_SIZE;
@@ -119,6 +119,12 @@ static int raw_read_packet(AVFormatContext *s, AVPacket *pkt)
     /* note: we need to modify the packet size here to handle the last
        packet */
     pkt->size = ret;
+
+    bps= av_get_bits_per_sample(s->streams[0]->codec->codec_id);
+    assert(bps); // if false there IS a bug elsewhere (NOT in this function)
+    pkt->dts=
+    pkt->pts= pkt->pos*8 / (bps * s->streams[0]->codec->channels);
+
     return ret;
 }
 
@@ -847,6 +853,8 @@ static int rawvideo_read_packet(AVFormatContext *s, AVPacket *pkt)
         return -1;
 
     ret= av_get_packet(s->pb, pkt, packet_size);
+    pkt->pts=
+    pkt->dts= pkt->pos / packet_size;
 
     pkt->stream_index = 0;
     if (ret != packet_size) {

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list