Browse Source

Android audio fix. OpenGL tiling bug fix.

tags/2021-05-28
jules 13 years ago
parent
commit
32aae7a2b3
2 changed files with 22 additions and 12 deletions
  1. +2
    -2
      modules/juce_audio_devices/native/juce_android_Audio.cpp
  2. +20
    -10
      modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.cpp

+ 2
- 2
modules/juce_audio_devices/native/juce_android_Audio.cpp View File

@@ -176,7 +176,7 @@ public:
numDeviceOutputChannels = 2;
outputDevice = GlobalRef (env->NewObject (AudioTrack, AudioTrack.constructor,
STREAM_MUSIC, sampleRate, CHANNEL_OUT_STEREO, ENCODING_PCM_16BIT,
(jint) (actualBufferSize * numDeviceOutputChannels * sizeof (float)), MODE_STREAM));
(jint) (actualBufferSize * numDeviceOutputChannels * sizeof (int16)), MODE_STREAM));
if (env->CallIntMethod (outputDevice, AudioTrack.getState) != STATE_UNINITIALIZED)
isRunning = true;
@@ -191,7 +191,7 @@ public:
0 /* (default audio source) */, sampleRate,
numDeviceInputChannelsAvailable > 1 ? CHANNEL_IN_STEREO : CHANNEL_IN_MONO,
ENCODING_PCM_16BIT,
(jint) (actualBufferSize * numDeviceInputChannels * sizeof (float))));
(jint) (actualBufferSize * numDeviceInputChannels * sizeof (int16))));
if (env->CallIntMethod (inputDevice, AudioRecord.getState) != STATE_UNINITIALIZED)
isRunning = true;


+ 20
- 10
modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.cpp View File

@@ -476,7 +476,7 @@ public:
ImageParams (OpenGLShaderProgram& program)
: imageTexture (program, "imageTexture"),
matrix (program, "matrix"),
imageRepeatSize (program, "imageRepeatSize")
imageLimits (program, "imageLimits")
{}
void setMatrix (const AffineTransform& trans,
@@ -491,7 +491,11 @@ public:
const GLfloat m[] = { t.mat00, t.mat01, t.mat02, t.mat10, t.mat11, t.mat12 };
matrix.set (m, 6);
imageRepeatSize.set (fullWidthProportion, fullHeightProportion);
const float halfPixelX = 0.5f / imageWidth;
const float halfPixelY = 0.5f / imageHeight;
imageLimits.set (halfPixelX, halfPixelY,
fullWidthProportion - halfPixelX,
fullHeightProportion - halfPixelY);
}
void setMatrix (const AffineTransform& trans, const OpenGLTextureFromImage& image,
@@ -503,13 +507,15 @@ public:
targetX, targetY);
}
OpenGLShaderProgram::Uniform imageTexture, matrix, imageRepeatSize;
OpenGLShaderProgram::Uniform imageTexture, matrix, imageLimits;
};
#define JUCE_DECLARE_IMAGE_UNIFORMS "uniform sampler2D imageTexture;" \
"uniform " JUCE_MEDIUMP " vec2 imageRepeatSize;" \
"uniform " JUCE_MEDIUMP " vec4 imageLimits;" \
JUCE_DECLARE_MATRIX_UNIFORM JUCE_DECLARE_VARYING_COLOUR JUCE_DECLARE_VARYING_PIXELPOS
#define JUCE_GET_IMAGE_PIXEL "texture2D (imageTexture, vec2 (texturePos.x, 1.0 - texturePos.y))"
#define JUCE_CLAMP_TEXTURE_COORD JUCE_HIGHP " vec2 texturePos = clamp (" JUCE_MATRIX_TIMES_FRAGCOORD ", imageLimits.xy, imageLimits.zw);"
#define JUCE_MOD_TEXTURE_COORD JUCE_HIGHP " vec2 texturePos = imageLimits.xy + mod (" JUCE_MATRIX_TIMES_FRAGCOORD " - imageLimits.xy, imageLimits.zw - imageLimits.xy);"
struct ImageProgram : public ShaderBase
{
@@ -517,7 +523,7 @@ public:
: ShaderBase (context, JUCE_DECLARE_IMAGE_UNIFORMS
"void main()"
"{"
JUCE_HIGHP " vec2 texturePos = clamp (" JUCE_MATRIX_TIMES_FRAGCOORD ", vec2 (0, 0), imageRepeatSize);"
JUCE_CLAMP_TEXTURE_COORD
"gl_FragColor = frontColour.a * " JUCE_GET_IMAGE_PIXEL ";"
"}"),
imageParams (program)
@@ -532,7 +538,7 @@ public:
: ShaderBase (context, JUCE_DECLARE_IMAGE_UNIFORMS JUCE_DECLARE_MASK_UNIFORMS
"void main()"
"{"
JUCE_HIGHP " vec2 texturePos = clamp (" JUCE_MATRIX_TIMES_FRAGCOORD ", vec2 (0, 0), imageRepeatSize);"
JUCE_CLAMP_TEXTURE_COORD
"gl_FragColor = frontColour.a * " JUCE_GET_IMAGE_PIXEL " * " JUCE_GET_MASK_ALPHA ";"
"}"),
imageParams (program),
@@ -549,7 +555,7 @@ public:
: ShaderBase (context, JUCE_DECLARE_IMAGE_UNIFORMS
"void main()"
"{"
JUCE_HIGHP " vec2 texturePos = mod (" JUCE_MATRIX_TIMES_FRAGCOORD ", imageRepeatSize);"
JUCE_MOD_TEXTURE_COORD
"gl_FragColor = frontColour.a * " JUCE_GET_IMAGE_PIXEL ";"
"}"),
imageParams (program)
@@ -564,7 +570,7 @@ public:
: ShaderBase (context, JUCE_DECLARE_IMAGE_UNIFORMS JUCE_DECLARE_MASK_UNIFORMS
"void main()"
"{"
JUCE_HIGHP " vec2 texturePos = mod (" JUCE_MATRIX_TIMES_FRAGCOORD ", imageRepeatSize);"
JUCE_MOD_TEXTURE_COORD
"gl_FragColor = frontColour.a * " JUCE_GET_IMAGE_PIXEL " * " JUCE_GET_MASK_ALPHA ";"
"}"),
imageParams (program),
@@ -581,7 +587,7 @@ public:
: ShaderBase (context, JUCE_DECLARE_IMAGE_UNIFORMS
"void main()"
"{"
JUCE_HIGHP " vec2 texturePos = mod (" JUCE_MATRIX_TIMES_FRAGCOORD ", imageRepeatSize);"
JUCE_MOD_TEXTURE_COORD
"gl_FragColor = frontColour.a * " JUCE_GET_IMAGE_PIXEL ";"
"}"),
imageParams (program)
@@ -597,7 +603,10 @@ public:
"void main()"
"{"
JUCE_HIGHP " vec2 texturePos = " JUCE_MATRIX_TIMES_FRAGCOORD ";"
"if (texturePos.x >= 0.0 && texturePos.y >= 0.0 && texturePos.x < imageRepeatSize.x && texturePos.y < imageRepeatSize.y)"
"if (texturePos.x >= imageLimits.x"
"&& texturePos.y >= imageLimits.y"
"&& texturePos.x < imageLimits.z"
"&& texturePos.y < imageLimits.w)"
"gl_FragColor = frontColour * " JUCE_GET_IMAGE_PIXEL ".a;"
"else "
"gl_FragColor = vec4 (0, 0, 0, 0);"
@@ -1809,6 +1818,7 @@ private:
{
activeTextures.setActiveTexture (index);
glDisable (GL_TEXTURE_2D);
glDisableClientState (GL_TEXTURE_COORD_ARRAY);
glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glTexEnvi (GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE);
glTexEnvi (GL_TEXTURE_ENV, GL_SRC0_RGB, GL_PREVIOUS);


Loading…
Cancel
Save