Hi,
On 25/01/2016 19:35:58 CET, Michael Niedermayer wrote:
On Sun, Jan 24, 2016 at 03:54:34PM +0100, Vittorio Gambaletta (VittGam) wrote:
Hi,
On 24/01/2016 12:01:38 CET, Michael Niedermayer wrote:
>On Sun, Jan 24, 2016 at 06:06:36AM +0100, Vittorio Gambaletta (VittGam) wrote:
>>Signed-off-by: Vittorio Gambaletta <ffmpeg-...@vittgam.net>
>>---
>> 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;
>>+ }
>
>av_find_program_from_stream() should be run in a loop to enumerate
>the programs, see other uses of av_find_program_from_stream()
Wouldn't this solve the problem backwards?
yes, though it would avoid directly accessing the data structs.
no big problem really though, i see the av_find_program_from_stream()
isnt exactly optimal here
so applied
thanks
You're welcome!
Well, if the same logic needs to be reused somewhere else, it could
always be put in a new function, maybe av_check_stream_is_in_program().
Cheers,
Vittorio
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel