[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