[Sound-open-firmware] [PATCH] SRC: Fix use of int and uint types and remove unused function parameters
Seppo Ingalsuo
seppo.ingalsuo at linux.intel.com
Wed Sep 27 20:21:14 CEST 2017
Sorry, new patch version is needed, please ignore this submission. This
patch contains a bug that makes this check to fail:
/* Run as many times as buffers allow */
- while (((int)source->avail >= need_source) && ((int)sink->free
>= need_sink)) {
+ while (((int)(source->avail) >= need_source) &&
((int)(sink->free) >= need_sink)) {
I noticed this from flood of errors into trace.
Thanks,
Seppo
On 27.09.2017 19:02, Seppo Ingalsuo wrote:
>
> On 27.09.2017 18:52, Liam Girdwood wrote:
>> On Wed, 2017-09-27 at 16:49 +0300, Seppo Ingalsuo wrote:
>>> This patch fixes the warning messages shown with gcc option -Wextra.
>>>
>>> Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo at linux.intel.com>
>>> ---
>>> src/audio/src.c | 16 +++++++---------
>>> 1 file changed, 7 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/src/audio/src.c b/src/audio/src.c
>>> index 3fd9614..3723b4e 100644
>>> --- a/src/audio/src.c
>>> +++ b/src/audio/src.c
>>> @@ -65,8 +65,7 @@ struct comp_data {
>>> void (*src_func)(struct comp_dev *dev,
>>> struct comp_buffer *source,
>>> struct comp_buffer *sink,
>>> - uint32_t source_frames,
>>> - uint32_t sink_frames);
>>> + int source_frames);
>> Should this be unsigned ?
>
> No, it's intentional. The frames count is used for +/- arithmetics ops
> in the code so it's better to keep it signed integer. With unsigned
> int type I would need more casts in the code. In this case the lower
> positive range of int32 is not an issue.
>
> Generally for DSPs the signed integer is natural type to use.
> Multiplications instructions are better available for signed integer
> type so why not prefer them instead.
>
> Cheers,
> Seppo
>
>
>
>>
>>> };
>>> /* Common mute function for 2s and 1s SRC. This preserves the same
>>> @@ -113,8 +112,7 @@ static void src_muted_s32(struct comp_buffer
>>> *source, struct comp_buffer *sink,
>>> static void fallback_s32(struct comp_dev *dev,
>>> struct comp_buffer *source,
>>> struct comp_buffer *sink,
>>> - uint32_t source_frames,
>>> - uint32_t sink_frames)
>>> + int source_frames)
>> ditto
>>> {
>>> struct comp_data *cd = comp_get_drvdata(dev);
>>> @@ -129,7 +127,7 @@ static void fallback_s32(struct comp_dev *dev,
>>> /* Normal 2 stage SRC */
>>> static void src_2s_s32_default(struct comp_dev *dev,
>>> struct comp_buffer *source, struct comp_buffer *sink,
>>> - uint32_t source_frames, uint32_t sink_frames)
>>> + int source_frames)
>>> {
>>> int i;
>>> int j;
>>> @@ -203,7 +201,7 @@ static void src_2s_s32_default(struct comp_dev
>>> *dev,
>>> /* 1 stage SRC for simple conversions */
>>> static void src_1s_s32_default(struct comp_dev *dev,
>>> struct comp_buffer *source, struct comp_buffer *sink,
>>> - uint32_t source_frames, uint32_t sink_frames)
>>> + int source_frames)
>>> {
>>> int i;
>>> int j;
>>> @@ -440,7 +438,7 @@ static int src_params(struct comp_dev *dev)
>>> * be too long.
>>> */
>>> q = need.blk_out / dev->frames;
>>> - if (q * dev->frames < need.blk_out)
>>> + if (q * (int)dev->frames < need.blk_out)
>> probably wont need to cast if unsigned too.
>>
>>> ++q;
>>> if (q * dev->frames < need.blk_out + dev->frames)
>>> @@ -543,9 +541,9 @@ static int src_copy(struct comp_dev *dev)
>>> need_sink = blk_out * dev->frame_bytes;
>>> /* Run as many times as buffers allow */
>>> - while ((source->avail >= need_source) && (sink->free >=
>>> need_sink)) {
>>> + while (((int)source->avail >= need_source) && ((int)sink->free
>>> >= need_sink)) {
>>> /* Run src */
>>> - cd->src_func(dev, source, sink, blk_in, blk_out);
>>> + cd->src_func(dev, source, sink, blk_in);
>>> /* calc new free and available */
>>> comp_update_buffer_consume(source, 0);
>>
>> ---------------------------------------------------------------------
>> Intel Corporation (UK) Limited
>> Registered No. 1134945 (England)
>> Registered Office: Pipers Way, Swindon SN3 1RJ
>> VAT No: 860 2173 47
>>
>> This e-mail and any attachments may contain confidential material for
>> the sole use of the intended recipient(s). Any review or distribution
>> by others is strictly prohibited. If you are not the intended
>> recipient, please contact the sender and delete all copies.
>> _______________________________________________
>> Sound-open-firmware mailing list
>> Sound-open-firmware at alsa-project.org
>> http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware
>>
>
> _______________________________________________
> Sound-open-firmware mailing list
> Sound-open-firmware at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware
>
More information about the Sound-open-firmware
mailing list