[SCM] libav/experimental: remove duplicate PAT scaning code and actual PAT scan also disabling the nonsense 3yr old rawts change (it would after the above chage totally break the demuxer if its left enabled)

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:01:00 UTC 2013


The following commit has been merged in the experimental branch:
commit ad39abcdd9018dd619b8cf308e4070ad87253a5e
Author: Michael Niedermayer <michaelni at gmx.at>
Date:   Mon Jun 4 14:44:52 2007 +0000

    remove duplicate PAT scaning code and actual PAT scan
    also disabling the nonsense 3yr old rawts change (it would after the
    above chage totally break the demuxer if its left enabled)
    
    Originally committed as revision 9208 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 89c6557..d2463e0 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -600,6 +600,7 @@ static void pat_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
         if (sid == 0x0000) {
             /* NIT info */
         } else {
+            new_service(ts, sid, NULL, NULL);
             ts->stop_parse--;
                 mpegts_open_section_filter(ts, pmt_pid,
                                                             pmt_cb, ts, 1);
@@ -611,47 +612,6 @@ static void pat_cb(MpegTSFilter *filter, const uint8_t *section, int section_len
     mpegts_close_filter(ts, filter);
 }
 
-/* add all services found in the PAT */
-static void pat_scan_cb(MpegTSFilter *filter, const uint8_t *section, int section_len)
-{
-    MpegTSContext *ts = filter->u.section_filter.opaque;
-    SectionHeader h1, *h = &h1;
-    const uint8_t *p, *p_end;
-    int sid, pmt_pid;
-
-#ifdef DEBUG_SI
-    av_log(ts->stream, AV_LOG_DEBUG, "PAT:\n");
-    av_hex_dump_log(ts->stream, AV_LOG_DEBUG, (uint8_t *)section, section_len);
-#endif
-    p_end = section + section_len - 4;
-    p = section;
-    if (parse_section_header(h, &p, p_end) < 0)
-        return;
-    if (h->tid != PAT_TID)
-        return;
-
-    for(;;) {
-        sid = get16(&p, p_end);
-        if (sid < 0)
-            break;
-        pmt_pid = get16(&p, p_end) & 0x1fff;
-        if (pmt_pid < 0)
-            break;
-#ifdef DEBUG_SI
-        av_log(ts->stream, AV_LOG_DEBUG, "sid=0x%x pid=0x%x\n", sid, pmt_pid);
-#endif
-        if (sid == 0x0000) {
-            /* NIT info */
-        } else {
-            new_service(ts, sid, NULL, NULL);
-        }
-    }
-    ts->stop_parse = 1;
-
-    /* remove filter */
-    mpegts_close_filter(ts, filter);
-}
-
 static void mpegts_set_service(MpegTSContext *ts)
 {
     mpegts_open_section_filter(ts, PAT_PID,
@@ -737,14 +697,6 @@ static void mpegts_scan_sdt(MpegTSContext *ts)
                                                 sdt_cb, ts, 1);
 }
 
-/* scan services in a transport stream by looking at the PAT (better
-   than nothing !) */
-static void mpegts_scan_pat(MpegTSContext *ts)
-{
-    mpegts_open_section_filter(ts, PAT_PID,
-                                                pat_scan_cb, ts, 1);
-}
-
 static int64_t get_pts(const uint8_t *p)
 {
     int64_t pts;
@@ -1204,20 +1156,13 @@ static int mpegts_read_header(AVFormatContext *s,
         url_fseek(pb, pos, SEEK_SET);
         mpegts_scan_sdt(ts);
 
-        if (ts->nb_services <= 0) {
-            mpegts_scan_pat(ts);
-
-            handle_packets(ts, s->probesize);
-        }
-
-        if (ts->nb_services <= 0) {
+        if (ts->nb_services <= 0 && 0) {
             /* raw transport stream */
             ts->auto_guess = 1;
             s->ctx_flags |= AVFMTCTX_NOHEADER;
             goto do_pcr;
         }
 
-            url_fseek(pb, pos, SEEK_SET);
             mpegts_set_service(ts);
 
             handle_packets(ts, s->probesize);

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list