[FFmpeg-cvslog] avformat/mpegtsenc: Fix multi program so that it supports adding the same stream to multiple programs.

Vittorio Gambaletta VittGam git at videolan.org
Mon Jan 25 19:47:55 CET 2016


ffmpeg | branch: master | Vittorio Gambaletta (VittGam) <ffmpeg-dev at vittgam.net> | Sun Jan 24 06:06:36 2016 +0100| [8b02af1e6fbb0d782f3561afd82f66edc7fa8ae0] | committer: Michael Niedermayer

avformat/mpegtsenc: Fix multi program so that it supports adding the same stream to multiple programs.

Signed-off-by: Vittorio Gambaletta <ffmpeg-dev at vittgam.net>
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>

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

 libavformat/mpegtsenc.c |   15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
index 2c12043..a20e229 100644
--- a/libavformat/mpegtsenc.c
+++ b/libavformat/mpegtsenc.c
@@ -275,8 +275,19 @@ static int mpegts_write_pmt(AVFormatContext *s, MpegTSService *service)
         AVDictionaryEntry *lang = av_dict_get(st->metadata, "language", NULL, 0);
 
         if (s->nb_programs) {
-            AVProgram *program = av_find_program_from_stream(s, NULL, i);
-            if (program->id != service->sid)
+            int j, k, found = 0;
+
+            for (j = 0; j < s->nb_programs; j++)
+                if (s->programs[j]->id == service->sid) {
+                    for (k = 0; k < s->programs[j]->nb_stream_indexes; k++)
+                        if (s->programs[j]->stream_index[k] == i) {
+                            found = 1;
+                            break;
+                        }
+                    break;
+                }
+
+            if (!found)
                 continue;
         }
 



More information about the ffmpeg-cvslog mailing list