[FFmpeg-cvslog] Export PCR pid

Kieran Kunhya git at videolan.org
Sat May 28 04:25:20 CEST 2011


ffmpeg | branch: master | Kieran Kunhya <kieran at kunhya.com> | Fri Mar 11 12:39:55 2011 +0000| [5501afa6ee857693bf4fe745792ab7b79477f731] | committer: Michael Niedermayer

Export PCR pid

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5501afa6ee857693bf4fe745792ab7b79477f731
---

 libavformat/avformat.h |    1 +
 libavformat/mpegts.c   |   12 ++++++++++++
 2 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 783039b..292479e 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -650,6 +650,7 @@ typedef struct AVProgram {
 
     int program_num;
     int pmt_pid;
+    int pcr_pid;
 } AVProgram;
 
 #define AVFMTCTX_NOHEADER      0x0001 /**< signal that no header is present
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index b5f25aa..df7a899 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -221,6 +221,17 @@ static void add_pid_to_pmt(MpegTSContext *ts, unsigned int programid, unsigned i
     p->pids[p->nb_pids++] = pid;
 }
 
+static void set_pcr_pid(AVFormatContext *s, unsigned int programid, unsigned int pid)
+{
+    int i;
+    for(i=0; i<s->nb_programs; i++) {
+        if(s->programs[i]->id == programid) {
+            s->programs[i]->pcr_pid = pid;
+            break;
+        }
+    }
+}
+
 /**
  * \brief discard_pid() decides if the pid is to be discarded according
  *                      to caller's programs selection
@@ -1039,6 +1050,7 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
     if (pcr_pid < 0)
         return;
     add_pid_to_pmt(ts, h->id, pcr_pid);
+    set_pcr_pid(ts->stream, h->id, pcr_pid);
 
     av_dlog(ts->stream, "pcr_pid=0x%x\n", pcr_pid);
 



More information about the ffmpeg-cvslog mailing list