On Sat, 2 Feb 2019, Michael Niedermayer wrote:

On Fri, Feb 01, 2019 at 10:29:13PM +0100, Marton Balint wrote:


On Fri, 25 Jan 2019, Marton Balint wrote:



On Fri, 25 Jan 2019, Michael Niedermayer wrote:

On Thu, Jan 24, 2019 at 09:38:00PM +0100, Marton Balint wrote:
discard_pid can be quite expensive, so let's cache it and recalculate
it
on
every packet start.

ffmpeg -y -i samples/MPEG-VOB/sdtv/RAI.ts -c copy -map 0:v:0 -map
0:a:0 -f
mpegts /dev/null

Before:
  1685 decicycles in handle_packet,  523483 runs,    805 skips

After:
   883 decicycles in handle_packet,  523505 runs,    783 skips

Signed-off-by: Marton Balint <c...@passwd.hu>
---
libavformat/mpegts.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 300db110d4..b04fd7b4f4 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -91,6 +91,7 @@ struct MpegTSFilter {
    int es_id;
    int last_cc; /* last cc code (-1 if first packet) */
    int64_t last_pcr;
+    int discard;
    enum MpegTSFilterType type;
    union {
        MpegTSPESFilter pes_filter;
@@ -2474,8 +2475,6 @@ static int handle_packet(MpegTSContext *ts,
const
uint8_t *packet)
    int64_t pos;

    pid = AV_RB16(packet + 1) & 0x1fff;
-    if (pid && discard_pid(ts, pid))
-        return 0;
    is_start = packet[1] & 0x40;
    tss = ts->pids[pid];
    if (ts->auto_guess && !tss && is_start) {
@@ -2484,6 +2483,10 @@ static int handle_packet(MpegTSContext *ts,
const
uint8_t *packet)
    }
    if (!tss)
        return 0;
+    if (is_start)
+        tss->discard = discard_pid(ts, pid);
+    if (tss->discard)
+        return 0;

this is moving the discard check over the auto_guess /add_pes_stream()
have you checked or know that this is ok ?
its not immedeatly obviouls (to me) why this would have no side effects

As far as I see that code is used to add streams which are not part of the
detected programs. Therefore program discards should not concern them.

Will apply soon.

sure ok

Thanks, applied.

Regards,
Marton
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to