[FFmpeg-devel] [PATCH] avformat/mux: Check pkt->stream_index before using it

2020-05-07 Thread Andreas Rheinhardt
This commit fixes two recent regressions both of which are about using
pkt->stream_index as index in an AVFormatContext's streams array before
actually comparing the value with the count of streams in said array.
96e5e6abb9851d7a26ba21703955d5826ac857c0 did this in
prepare_input_packet() and 64063512227c4c87a7d16a1076481dc6baf19841 did
likewise in write_packets_common().

Signed-off-by: Andreas Rheinhardt 
---
The same error in the same file applied on the same day by two different
people. How unlikely.

 libavformat/mux.c | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libavformat/mux.c b/libavformat/mux.c
index 41659b19c9..f2de73af9b 100644
--- a/libavformat/mux.c
+++ b/libavformat/mux.c
@@ -761,12 +761,13 @@ static int check_packet(AVFormatContext *s, AVPacket *pkt)
 
 static int prepare_input_packet(AVFormatContext *s, AVPacket *pkt)
 {
+AVStream *st;
 int ret;
-AVStream *st = s->streams[pkt->stream_index];
 
 ret = check_packet(s, pkt);
 if (ret < 0)
 return ret;
+st = s->streams[pkt->stream_index];
 
 #if !FF_API_COMPUTE_PKT_FIELDS2 || !FF_API_LAVF_AVCTX
 /* sanitize the timestamps */
@@ -1176,10 +1177,11 @@ static int write_packets_from_bsfs(AVFormatContext *s, 
AVStream *st, AVPacket *p
 
 static int write_packets_common(AVFormatContext *s, AVPacket *pkt, int 
interleaved)
 {
-AVStream *st = s->streams[pkt->stream_index];
+AVStream *st;
 int ret = prepare_input_packet(s, pkt);
 if (ret < 0)
 return ret;
+st = s->streams[pkt->stream_index];
 
 ret = check_bitstream(s, st, pkt);
 if (ret < 0)
-- 
2.20.1

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Re: [FFmpeg-devel] [PATCH] avformat/mux: Check pkt->stream_index before using it

2020-05-10 Thread Anton Khirnov
Quoting Andreas Rheinhardt (2020-05-08 00:55:00)
> This commit fixes two recent regressions both of which are about using
> pkt->stream_index as index in an AVFormatContext's streams array before
> actually comparing the value with the count of streams in said array.
> 96e5e6abb9851d7a26ba21703955d5826ac857c0 did this in
> prepare_input_packet() and 64063512227c4c87a7d16a1076481dc6baf19841 did
> likewise in write_packets_common().
> 
> Signed-off-by: Andreas Rheinhardt 
> ---
> The same error in the same file applied on the same day by two different
> people. How unlikely.

How is it a regression? Isn't it rather invalid API use?

Not that I object to having a check. But then why is check_packet()
called so deep and not immediately on entry to the muxer?

-- 
Anton Khirnov
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Re: [FFmpeg-devel] [PATCH] avformat/mux: Check pkt->stream_index before using it

2020-05-10 Thread Marton Balint



On Sun, 10 May 2020, Anton Khirnov wrote:


Quoting Andreas Rheinhardt (2020-05-08 00:55:00)

This commit fixes two recent regressions both of which are about using
pkt->stream_index as index in an AVFormatContext's streams array before
actually comparing the value with the count of streams in said array.
96e5e6abb9851d7a26ba21703955d5826ac857c0 did this in
prepare_input_packet() and 64063512227c4c87a7d16a1076481dc6baf19841 did
likewise in write_packets_common().

Signed-off-by: Andreas Rheinhardt 
---
The same error in the same file applied on the same day by two different
people. How unlikely.


How is it a regression? Isn't it rather invalid API use?


Fun fact: 7b03b65bf0d02519c86750d2da33f413e11cf0c6

Yes, it is kind of invalid API use, but since the check is already there, 
we should make it actually worthwile.




Not that I object to having a check. But then why is check_packet()
called so deep and not immediately on entry to the muxer?


I guess it is not that deep, but recent factorization efforts hidden it a 
bit.


Regards,
Marton
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Re: [FFmpeg-devel] [PATCH] avformat/mux: Check pkt->stream_index before using it

2020-05-10 Thread Anton Khirnov
Quoting Marton Balint (2020-05-10 19:45:04)
> 
> 
> On Sun, 10 May 2020, Anton Khirnov wrote:
> 
> > Quoting Andreas Rheinhardt (2020-05-08 00:55:00)
> >> This commit fixes two recent regressions both of which are about using
> >> pkt->stream_index as index in an AVFormatContext's streams array before
> >> actually comparing the value with the count of streams in said array.
> >> 96e5e6abb9851d7a26ba21703955d5826ac857c0 did this in
> >> prepare_input_packet() and 64063512227c4c87a7d16a1076481dc6baf19841 did
> >> likewise in write_packets_common().
> >> 
> >> Signed-off-by: Andreas Rheinhardt 
> >> ---
> >> The same error in the same file applied on the same day by two different
> >> people. How unlikely.
> >
> > How is it a regression? Isn't it rather invalid API use?
> 
> Fun fact: 7b03b65bf0d02519c86750d2da33f413e11cf0c6
> 
> Yes, it is kind of invalid API use, but since the check is already there, 
> we should make it actually worthwile.

lol

I agree that checking for it is a good idea, obviously, but I wouldn't
call it a regression.

> 
> >
> > Not that I object to having a check. But then why is check_packet()
> > called so deep and not immediately on entry to the muxer?
> 
> I guess it is not that deep, but recent factorization efforts hidden it a 
> bit.

You can see in my original commit it is the very first thing done after
entering the muxer. Right now it's several function calls deep.

-- 
Anton Khirnov
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Re: [FFmpeg-devel] [PATCH] avformat/mux: Check pkt->stream_index before using it

2020-05-10 Thread Andreas Rheinhardt
Anton Khirnov:
> Quoting Marton Balint (2020-05-10 19:45:04)
>>
>>
>> On Sun, 10 May 2020, Anton Khirnov wrote:
>>
>>> Quoting Andreas Rheinhardt (2020-05-08 00:55:00)
 This commit fixes two recent regressions both of which are about using
 pkt->stream_index as index in an AVFormatContext's streams array before
 actually comparing the value with the count of streams in said array.
 96e5e6abb9851d7a26ba21703955d5826ac857c0 did this in
 prepare_input_packet() and 64063512227c4c87a7d16a1076481dc6baf19841 did
 likewise in write_packets_common().

 Signed-off-by: Andreas Rheinhardt 
 ---
 The same error in the same file applied on the same day by two different
 people. How unlikely.
>>>
>>> How is it a regression? Isn't it rather invalid API use?
>>
>> Fun fact: 7b03b65bf0d02519c86750d2da33f413e11cf0c6
>>
>> Yes, it is kind of invalid API use, but since the check is already there, 
>> we should make it actually worthwile.
> 
> lol
> 
> I agree that checking for it is a good idea, obviously, but I wouldn't
> call it a regression.
> 
How about rephrasing the first sentence to: "This commit stops using
pkt->stream_index as index in an AVFormatContext's streams array before
actually comparing the value with the count of streams in said array."
>>
>>>
>>> Not that I object to having a check. But then why is check_packet()
>>> called so deep and not immediately on entry to the muxer?
>>
>> I guess it is not that deep, but recent factorization efforts hidden it a 
>> bit.
> 
> You can see in my original commit it is the very first thing done after
> entering the muxer. Right now it's several function calls deep.
> 
I could make it the very first thing called in write_packets_common().

- Andreas
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Re: [FFmpeg-devel] [PATCH] avformat/mux: Check pkt->stream_index before using it

2020-05-11 Thread Anton Khirnov
Quoting Andreas Rheinhardt (2020-05-10 21:35:54)
> Anton Khirnov:
> > Quoting Marton Balint (2020-05-10 19:45:04)
> >>
> >>
> >> On Sun, 10 May 2020, Anton Khirnov wrote:
> >>
> >>> Quoting Andreas Rheinhardt (2020-05-08 00:55:00)
>  This commit fixes two recent regressions both of which are about using
>  pkt->stream_index as index in an AVFormatContext's streams array before
>  actually comparing the value with the count of streams in said array.
>  96e5e6abb9851d7a26ba21703955d5826ac857c0 did this in
>  prepare_input_packet() and 64063512227c4c87a7d16a1076481dc6baf19841 did
>  likewise in write_packets_common().
> 
>  Signed-off-by: Andreas Rheinhardt 
>  ---
>  The same error in the same file applied on the same day by two different
>  people. How unlikely.
> >>>
> >>> How is it a regression? Isn't it rather invalid API use?
> >>
> >> Fun fact: 7b03b65bf0d02519c86750d2da33f413e11cf0c6
> >>
> >> Yes, it is kind of invalid API use, but since the check is already there, 
> >> we should make it actually worthwile.
> > 
> > lol
> > 
> > I agree that checking for it is a good idea, obviously, but I wouldn't
> > call it a regression.
> > 
> How about rephrasing the first sentence to: "This commit stops using
> pkt->stream_index as index in an AVFormatContext's streams array before
> actually comparing the value with the count of streams in said array."

Sure, sounds good.

> >>
> >>>
> >>> Not that I object to having a check. But then why is check_packet()
> >>> called so deep and not immediately on entry to the muxer?
> >>
> >> I guess it is not that deep, but recent factorization efforts hidden it a 
> >> bit.
> > 
> > You can see in my original commit it is the very first thing done after
> > entering the muxer. Right now it's several function calls deep.
> > 
> I could make it the very first thing called in write_packets_common().

Why not move the check_packet() call out of prepare_packet() into
av_[interleaved_]write_frame() instead?

-- 
Anton Khirnov
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Re: [FFmpeg-devel] [PATCH] avformat/mux: Check pkt->stream_index before using it

2020-05-11 Thread Andreas Rheinhardt
Anton Khirnov:
> Quoting Andreas Rheinhardt (2020-05-10 21:35:54)
>> Anton Khirnov:
>>> Quoting Marton Balint (2020-05-10 19:45:04)


 On Sun, 10 May 2020, Anton Khirnov wrote:

> Quoting Andreas Rheinhardt (2020-05-08 00:55:00)
>> This commit fixes two recent regressions both of which are about using
>> pkt->stream_index as index in an AVFormatContext's streams array before
>> actually comparing the value with the count of streams in said array.
>> 96e5e6abb9851d7a26ba21703955d5826ac857c0 did this in
>> prepare_input_packet() and 64063512227c4c87a7d16a1076481dc6baf19841 did
>> likewise in write_packets_common().
>>
>> Signed-off-by: Andreas Rheinhardt 
>> ---
>> The same error in the same file applied on the same day by two different
>> people. How unlikely.
>
> How is it a regression? Isn't it rather invalid API use?

 Fun fact: 7b03b65bf0d02519c86750d2da33f413e11cf0c6

 Yes, it is kind of invalid API use, but since the check is already there, 
 we should make it actually worthwile.
>>>
>>> lol
>>>
>>> I agree that checking for it is a good idea, obviously, but I wouldn't
>>> call it a regression.
>>>
>> How about rephrasing the first sentence to: "This commit stops using
>> pkt->stream_index as index in an AVFormatContext's streams array before
>> actually comparing the value with the count of streams in said array."
> 
> Sure, sounds good.
> 

>
> Not that I object to having a check. But then why is check_packet()
> called so deep and not immediately on entry to the muxer?

 I guess it is not that deep, but recent factorization efforts hidden it a 
 bit.
>>>
>>> You can see in my original commit it is the very first thing done after
>>> entering the muxer. Right now it's several function calls deep.
>>>
>> I could make it the very first thing called in write_packets_common().
> 
> Why not move the check_packet() call out of prepare_packet() into
> av_[interleaved_]write_frame() instead?
> 
This would add code duplication and IMO it is nicer to only check a
packet for validity if there is actually a packet to check.

- Andreas
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Re: [FFmpeg-devel] [PATCH] avformat/mux: Check pkt->stream_index before using it

2020-05-12 Thread Anton Khirnov
Quoting Andreas Rheinhardt (2020-05-11 23:58:47)
> Anton Khirnov:
> > Quoting Andreas Rheinhardt (2020-05-10 21:35:54)
> >> Anton Khirnov:
> >>> Quoting Marton Balint (2020-05-10 19:45:04)
> 
> 
>  On Sun, 10 May 2020, Anton Khirnov wrote:
> 
> > Quoting Andreas Rheinhardt (2020-05-08 00:55:00)
> >> This commit fixes two recent regressions both of which are about using
> >> pkt->stream_index as index in an AVFormatContext's streams array before
> >> actually comparing the value with the count of streams in said array.
> >> 96e5e6abb9851d7a26ba21703955d5826ac857c0 did this in
> >> prepare_input_packet() and 64063512227c4c87a7d16a1076481dc6baf19841 did
> >> likewise in write_packets_common().
> >>
> >> Signed-off-by: Andreas Rheinhardt 
> >> ---
> >> The same error in the same file applied on the same day by two 
> >> different
> >> people. How unlikely.
> >
> > How is it a regression? Isn't it rather invalid API use?
> 
>  Fun fact: 7b03b65bf0d02519c86750d2da33f413e11cf0c6
> 
>  Yes, it is kind of invalid API use, but since the check is already 
>  there, 
>  we should make it actually worthwile.
> >>>
> >>> lol
> >>>
> >>> I agree that checking for it is a good idea, obviously, but I wouldn't
> >>> call it a regression.
> >>>
> >> How about rephrasing the first sentence to: "This commit stops using
> >> pkt->stream_index as index in an AVFormatContext's streams array before
> >> actually comparing the value with the count of streams in said array."
> > 
> > Sure, sounds good.
> > 
> 
> >
> > Not that I object to having a check. But then why is check_packet()
> > called so deep and not immediately on entry to the muxer?
> 
>  I guess it is not that deep, but recent factorization efforts hidden it 
>  a 
>  bit.
> >>>
> >>> You can see in my original commit it is the very first thing done after
> >>> entering the muxer. Right now it's several function calls deep.
> >>>
> >> I could make it the very first thing called in write_packets_common().
> > 
> > Why not move the check_packet() call out of prepare_packet() into
> > av_[interleaved_]write_frame() instead?
> > 
> This would add code duplication and IMO it is nicer to only check a
> packet for validity if there is actually a packet to check.

Okay. I don't entirely agree, but this is not important enough to waste
time arguing about. Feel free to push.

-- 
Anton Khirnov
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".