[FFmpeg-devel] [PATCH v1 6/6] avfilter/vf_random: seeds is uint32, it's enough to use int32_t

Andreas Rheinhardt andreas.rheinhardt at gmail.com
Fri Oct 11 09:59:00 EEST 2019


Limin Wang:
> On Fri, Oct 11, 2019 at 06:20:00AM +0000, Andreas Rheinhardt wrote:
>> lance.lmwang at gmail.com:
>>> From: Limin Wang <lance.lmwang at gmail.com>
>>>
>>> Signed-off-by: Limin Wang <lance.lmwang at gmail.com>
>>> ---
>>>  libavfilter/vf_random.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/libavfilter/vf_random.c b/libavfilter/vf_random.c
>>> index 1937eae771..9f2153be61 100644
>>> --- a/libavfilter/vf_random.c
>>> +++ b/libavfilter/vf_random.c
>>> @@ -33,7 +33,7 @@ typedef struct RandomContext {
>>>  
>>>      AVLFG lfg;
>>>      int nb_frames;
>>> -    int64_t random_seed;
>>> +    int32_t random_seed;
>>>      int nb_frames_filled;
>>>      AVFrame *frames[MAX_FRAMES];
>>>      int64_t pts[MAX_FRAMES];
>>>
>>     { "seed",   "set the seed",                  OFFSET(random_seed),
>> AV_OPT_TYPE_INT64, {.i64=-1}, -1, UINT32_MAX, FLAGS },
>>
>> So in addition to the complete range of an uint32_t one also needs
>> another value that instructs init to get a random seed of its own.
> 
> yes, the max range is UINT32_MAX, so no need to use int64_t
> 
First of all, simply changing the value to 32 bit is not right -- you
would also have to change the type in the corresponding AVOption (it
might seem to work on little-endian systems, but it certainly doesn't
on big-endian systems; actually using -1 as random_seed would probably
already not work on little-endian systems either). Second, there are
more legal values for random_seed than values representable in 32 bit,
hence one has to use a type with more than 32 bit.

- Andreas


More information about the ffmpeg-devel mailing list