Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(465)

Side by Side Diff: Source/platform/audio/ffmpeg/FFTFrameFFMPEG.cpp

Issue 176843021: Remove redundancies of multiply() in FFTFrame. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 void FFTFrame::cleanup() 100 void FFTFrame::cleanup()
101 { 101 {
102 } 102 }
103 103
104 FFTFrame::~FFTFrame() 104 FFTFrame::~FFTFrame()
105 { 105 {
106 av_rdft_end(m_forwardContext); 106 av_rdft_end(m_forwardContext);
107 av_rdft_end(m_inverseContext); 107 av_rdft_end(m_inverseContext);
108 } 108 }
109 109
110 void FFTFrame::multiply(const FFTFrame& frame)
111 {
112 FFTFrame& frame1 = *this;
113 FFTFrame& frame2 = const_cast<FFTFrame&>(frame);
114
115 float* realP1 = frame1.realData();
116 float* imagP1 = frame1.imagData();
117 const float* realP2 = frame2.realData();
118 const float* imagP2 = frame2.imagData();
119
120 unsigned halfSize = fftSize() / 2;
121 float real0 = realP1[0];
122 float imag0 = imagP1[0];
123
124 VectorMath::zvmul(realP1, imagP1, realP2, imagP2, realP1, imagP1, halfSize);
125
126 // Multiply the packed DC/nyquist component
127 realP1[0] = real0 * realP2[0];
128 imagP1[0] = imag0 * imagP2[0];
129 }
130
131 #if OS(WIN) 110 #if OS(WIN)
132 // On Windows, the following pragmas are equivalent to compiling the code with / fp:fast. The 111 // On Windows, the following pragmas are equivalent to compiling the code with / fp:fast. The
133 // following code does not need precise FP semantics, and speed is critical here . See 112 // following code does not need precise FP semantics, and speed is critical here . See
134 // crbug.com/316740 and crrev.com/116823002. 113 // crbug.com/316740 and crrev.com/116823002.
135 #pragma float_control(except, off, push) 114 #pragma float_control(except, off, push)
136 #pragma float_control(precise, off, push) 115 #pragma float_control(precise, off, push)
137 #pragma fp_contract(on) 116 #pragma fp_contract(on)
138 #pragma fenv_access(off) 117 #pragma fenv_access(off)
139 #endif 118 #endif
140 119
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 192
214 RDFTContext* context = av_rdft_init(pow2size, (RDFTransformType)trans); 193 RDFTContext* context = av_rdft_init(pow2size, (RDFTransformType)trans);
215 return context; 194 return context;
216 } 195 }
217 196
218 } // namespace WebCore 197 } // namespace WebCore
219 198
220 #endif // USE(WEBAUDIO_FFMPEG) 199 #endif // USE(WEBAUDIO_FFMPEG)
221 200
222 #endif // ENABLE(WEB_AUDIO) 201 #endif // ENABLE(WEB_AUDIO)
OLDNEW
« no previous file with comments | « Source/platform/audio/android/FFTFrameOpenMAXDLAndroid.cpp ('k') | Source/platform/audio/ipp/FFTFrameIPP.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698