[1,of,3] cx88: Add support for stereo and sap detection for A2
Commit Message
On Sun, 5 Apr 2009, Mauro Carvalho Chehab wrote:
> Hi Marton,
>
> I suspect that you will need to use div64 math or some othe way to calculate the freq:
>
> /home/v4l/master/v4l/cx88-dsp.c: In function 'detect_a2_a2m_eiaj':
> /home/v4l/master/v4l/cx88-dsp.c:147: error: SSE register return with SSE disabled
> make[3]: *** [/home/v4l/master/v4l/cx88-dsp.o] Error 1
> make[3]: *** Waiting for unfinished jobs....
Gcc should have optimised away the floating point operations and the
__builtin_remainder function. Hmm, it seems that older gcc's don't do
this. Would you try the attached patch? It uses integer modulo instead
of __builtin_remainder, so only basic floating point operations needs
optimising, hopefully every common gcc version will be able to do it.
Regards,
Marton
# HG changeset patch
# User Marton Balint <cus@fazekas.hu>
# Date 1238977280 -7200
# Node ID 5a396f71d463b738c363c12bf53a3e446016aa95
# Parent 119acaa1dee387960325ba637c6257af2b0fd3af
cx88: dsp: more gcc compatible remainder function
From: Marton Balint <cus@fazekas.hu>
Priority: normal
Signed-off-by: Marton Balint <cus@fazekas.hu>
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Comments
On Mon, 6 Apr 2009 02:36:01 +0200 (CEST)
Marton Balint <cus@fazekas.hu> wrote:
> On Sun, 5 Apr 2009, Mauro Carvalho Chehab wrote:
>
> > Hi Marton,
> >
> > I suspect that you will need to use div64 math or some othe way to calculate the freq:
> >
> > /home/v4l/master/v4l/cx88-dsp.c: In function 'detect_a2_a2m_eiaj':
> > /home/v4l/master/v4l/cx88-dsp.c:147: error: SSE register return with SSE disabled
> > make[3]: *** [/home/v4l/master/v4l/cx88-dsp.o] Error 1
> > make[3]: *** Waiting for unfinished jobs....
>
> Gcc should have optimised away the floating point operations and the
> __builtin_remainder function. Hmm, it seems that older gcc's don't do
> this. Would you try the attached patch? It uses integer modulo instead
> of __builtin_remainder, so only basic floating point operations needs
> optimising, hopefully every common gcc version will be able to do it.
Worked. I've folded this patch with the previous one, to avoid bisect breakage upstream.
Cheers,
Mauro
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
@@ -28,8 +28,11 @@
#define INT_PI ((s32)(3.141592653589 * 32768.0))
+#define compat_remainder(a, b) \
+ ((float)(((s32)((a)*100))%((s32)((b)*100)))/100.0)
+
#define baseband_freq(carrier, srate, tone) ((s32)( \
- (__builtin_remainder(carrier + tone, srate)) / srate * 2 * INT_PI))
+ (compat_remainder(carrier + tone, srate)) / srate * 2 * INT_PI))
/* We calculate the baseband frequencies of the carrier and the pilot tones
* based on the the sampling rate of the audio rds fifo. */