[SCM] libav/experimental: Correctly increment continuity_counter in PCR packets.

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 17:01:25 UTC 2013


The following commit has been merged in the experimental branch:
commit 8d819221db607fc0c9e6b74196118ee68bd5b247
Author: Yann Coupin <yann.coupin+ffmpeg at gmail.com>
Date:   Wed Feb 24 10:56:13 2010 +0000

    Correctly increment continuity_counter in PCR packets.
    
    Patch by Yann Coupin, yann.coupin+ffmpeg gmail
    
    Originally committed as revision 22020 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
index 9b12af7..0d315a0 100644
--- a/libavformat/mpegtsenc.c
+++ b/libavformat/mpegtsenc.c
@@ -89,8 +89,8 @@ static void mpegts_write_section(MpegTSSection *s, uint8_t *buf, int len)
             b |= 0x40;
         *q++ = b;
         *q++ = s->pid;
-        *q++ = 0x10 | s->cc;
         s->cc = (s->cc + 1) & 0xf;
+        *q++ = 0x10 | s->cc;
         if (first)
             *q++ = 0; /* 0 offset */
         len1 = TS_PACKET_SIZE - (q - packet);
@@ -399,12 +399,12 @@ static int mpegts_write_header(AVFormatContext *s)
     service->pmt.opaque = s;
 
     ts->pat.pid = PAT_PID;
-    ts->pat.cc = 0;
+    ts->pat.cc = 15; // Initialize at 15 so that it wraps and be equal to 0 for the first packet we write
     ts->pat.write_packet = section_write_packet;
     ts->pat.opaque = s;
 
     ts->sdt.pid = SDT_PID;
-    ts->sdt.cc = 0;
+    ts->sdt.cc = 15;
     ts->sdt.write_packet = section_write_packet;
     ts->sdt.opaque = s;
 
@@ -647,8 +647,8 @@ static void mpegts_write_pes(AVFormatContext *s, AVStream *st,
             val |= 0x40;
         *q++ = val;
         *q++ = ts_st->pid;
-        *q++ = 0x10 | ts_st->cc | (write_pcr ? 0x20 : 0);
         ts_st->cc = (ts_st->cc + 1) & 0xf;
+        *q++ = 0x10 | ts_st->cc | (write_pcr ? 0x20 : 0);
         if (write_pcr) {
             // add 11, pcr references the last byte of program clock reference base
             pcr = ts->cur_pcr + (4+7)*8*90000LL / ts->mux_rate;
diff --git a/tests/ref/lavf/ts b/tests/ref/lavf/ts
index e892e40..6f19705 100644
--- a/tests/ref/lavf/ts
+++ b/tests/ref/lavf/ts
@@ -1,3 +1,3 @@
-a1a799fe07b3b9944aad8455a9706c5f *./tests/data/b-lavf.ts
-430144 ./tests/data/b-lavf.ts
+3ecdc566c525d58bc287ce1baffd9407 *./tests/data/b-lavf.ts
+  430144 ./tests/data/b-lavf.ts
 ./tests/data/b-lavf.ts CRC=0x133216c1

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list