Module: libav
Branch: master
Commit: e352520e3ed7f08f19e63cd60e95da6bb6f037c1

Author:    Luca Barbato <[email protected]>
Committer: Luca Barbato <[email protected]>
Date:      Thu Jan 29 01:17:43 2015 +0100

oma: Report a timestamp

Reported-By: [email protected]

Signed-off-by: Luca Barbato <[email protected]>

---

 libavformat/omadec.c |   16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/libavformat/omadec.c b/libavformat/omadec.c
index 9d9c726..8dc35d1 100644
--- a/libavformat/omadec.c
+++ b/libavformat/omadec.c
@@ -47,6 +47,7 @@
 #include "internal.h"
 #include "libavutil/intreadwrite.h"
 #include "libavutil/des.h"
+#include "libavutil/mathematics.h"
 #include "oma.h"
 #include "pcm.h"
 #include "id3v2.h"
@@ -418,9 +419,12 @@ static int oma_read_header(AVFormatContext *s)
 
 static int oma_read_packet(AVFormatContext *s, AVPacket *pkt)
 {
-    OMAContext *oc = s->priv_data;
-    int packet_size = s->streams[0]->codec->block_align;
-    int ret = av_get_packet(s->pb, pkt, packet_size);
+    OMAContext *oc  = s->priv_data;
+    AVStream *st    = s->streams[0];
+    int packet_size = st->codec->block_align;
+    int byte_rate   = st->codec->bit_rate >> 3;
+    int64_t pos     = avio_tell(s->pb);
+    int ret         = av_get_packet(s->pb, pkt, packet_size);
 
     if (ret < packet_size)
         pkt->flags |= AV_PKT_FLAG_CORRUPT;
@@ -432,6 +436,12 @@ static int oma_read_packet(AVFormatContext *s, AVPacket 
*pkt)
 
     pkt->stream_index = 0;
 
+    if (pos > 0) {
+        pkt->pts =
+        pkt->dts = av_rescale(pos, st->time_base.den,
+                              byte_rate * (int64_t)st->time_base.num);
+    }
+
     if (oc->encrypted) {
         /* previous unencrypted block saved in IV for
          * the next packet (CBC mode) */

_______________________________________________
libav-commits mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-commits

Reply via email to