summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/filtershow/cache
diff options
context:
space:
mode:
authornicolasroard <nicolasroard@google.com>2013-07-02 15:46:23 -0700
committernicolasroard <nicolasroard@google.com>2013-07-02 15:46:23 -0700
commitf51cdda5060a742863d0d74d57040d48d9ab394d (patch)
tree34e6d4dda59fd68bb7075466ee8b7de5a6c31c18 /src/com/android/gallery3d/filtershow/cache
parent68ff24597aa829f4ef4d9bd1ab21c3ff9e42f217 (diff)
downloadandroid_packages_apps_Snap-f51cdda5060a742863d0d74d57040d48d9ab394d.tar.gz
android_packages_apps_Snap-f51cdda5060a742863d0d74d57040d48d9ab394d.tar.bz2
android_packages_apps_Snap-f51cdda5060a742863d0d74d57040d48d9ab394d.zip
Move classes to pipeline package
Change-Id: I9d664537d845d9daeb352c8006d0296a3f546dca
Diffstat (limited to 'src/com/android/gallery3d/filtershow/cache')
-rw-r--r--src/com/android/gallery3d/filtershow/cache/CachingPipeline.java462
-rw-r--r--src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java245
-rw-r--r--src/com/android/gallery3d/filtershow/cache/ImageLoader.java2
-rw-r--r--src/com/android/gallery3d/filtershow/cache/RenderingRequest.java170
-rw-r--r--src/com/android/gallery3d/filtershow/cache/RenderingRequestCaller.java21
5 files changed, 1 insertions, 899 deletions
diff --git a/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java b/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java
deleted file mode 100644
index 5a4267efa..000000000
--- a/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java
+++ /dev/null
@@ -1,462 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.gallery3d.filtershow.cache;
-
-import android.app.Activity;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.RenderScript;
-import android.util.Log;
-
-import com.android.gallery3d.filtershow.filters.FiltersManager;
-import com.android.gallery3d.filtershow.filters.ImageFilterGeometry;
-import com.android.gallery3d.filtershow.imageshow.GeometryMetadata;
-import com.android.gallery3d.filtershow.imageshow.MasterImage;
-import com.android.gallery3d.filtershow.pipeline.SharedBuffer;
-import com.android.gallery3d.filtershow.presets.FilterEnvironment;
-import com.android.gallery3d.filtershow.presets.ImagePreset;
-import com.android.gallery3d.filtershow.presets.PipelineInterface;
-
-public class CachingPipeline implements PipelineInterface {
- private static final String LOGTAG = "CachingPipeline";
- private boolean DEBUG = false;
-
- private static final Bitmap.Config BITMAP_CONFIG = Bitmap.Config.ARGB_8888;
-
- private static volatile RenderScript sRS = null;
- private static volatile Resources sResources = null;
-
- private FiltersManager mFiltersManager = null;
- private volatile Bitmap mOriginalBitmap = null;
- private volatile Bitmap mResizedOriginalBitmap = null;
-
- private FilterEnvironment mEnvironment = new FilterEnvironment();
-
- private volatile Allocation mOriginalAllocation = null;
- private volatile Allocation mFiltersOnlyOriginalAllocation = null;
-
- protected volatile Allocation mInPixelsAllocation;
- protected volatile Allocation mOutPixelsAllocation;
- private volatile int mWidth = 0;
- private volatile int mHeight = 0;
-
- private volatile GeometryMetadata mPreviousGeometry = null;
- private volatile float mPreviewScaleFactor = 1.0f;
- private volatile float mHighResPreviewScaleFactor = 1.0f;
- private volatile String mName = "";
-
- private ImageFilterGeometry mGeometry = null;
-
- public CachingPipeline(FiltersManager filtersManager, String name) {
- mFiltersManager = filtersManager;
- mName = name;
- }
-
- public static synchronized RenderScript getRenderScriptContext() {
- return sRS;
- }
-
- public static synchronized void createRenderscriptContext(Activity context) {
- if (sRS != null) {
- Log.w(LOGTAG, "A prior RS context exists when calling setRenderScriptContext");
- destroyRenderScriptContext();
- }
- sRS = RenderScript.create(context);
- sResources = context.getResources();
- }
-
- public static synchronized void destroyRenderScriptContext() {
- if (sRS != null) {
- sRS.destroy();
- }
- sRS = null;
- sResources = null;
- }
-
- public void stop() {
- mEnvironment.setStop(true);
- }
-
- public synchronized void reset() {
- synchronized (CachingPipeline.class) {
- if (getRenderScriptContext() == null) {
- return;
- }
- mOriginalBitmap = null; // just a reference to the bitmap in ImageLoader
- if (mResizedOriginalBitmap != null) {
- mResizedOriginalBitmap.recycle();
- mResizedOriginalBitmap = null;
- }
- if (mOriginalAllocation != null) {
- mOriginalAllocation.destroy();
- mOriginalAllocation = null;
- }
- if (mFiltersOnlyOriginalAllocation != null) {
- mFiltersOnlyOriginalAllocation.destroy();
- mFiltersOnlyOriginalAllocation = null;
- }
- mPreviousGeometry = null;
- mPreviewScaleFactor = 1.0f;
- mHighResPreviewScaleFactor = 1.0f;
-
- destroyPixelAllocations();
- }
- }
-
- public Resources getResources() {
- return sRS.getApplicationContext().getResources();
- }
-
- private synchronized void destroyPixelAllocations() {
- if (DEBUG) {
- Log.v(LOGTAG, "destroyPixelAllocations in " + getName());
- }
- if (mInPixelsAllocation != null) {
- mInPixelsAllocation.destroy();
- mInPixelsAllocation = null;
- }
- if (mOutPixelsAllocation != null) {
- mOutPixelsAllocation.destroy();
- mOutPixelsAllocation = null;
- }
- mWidth = 0;
- mHeight = 0;
- }
-
- private String getType(RenderingRequest request) {
- if (request.getType() == RenderingRequest.ICON_RENDERING) {
- return "ICON_RENDERING";
- }
- if (request.getType() == RenderingRequest.FILTERS_RENDERING) {
- return "FILTERS_RENDERING";
- }
- if (request.getType() == RenderingRequest.FULL_RENDERING) {
- return "FULL_RENDERING";
- }
- if (request.getType() == RenderingRequest.GEOMETRY_RENDERING) {
- return "GEOMETRY_RENDERING";
- }
- if (request.getType() == RenderingRequest.PARTIAL_RENDERING) {
- return "PARTIAL_RENDERING";
- }
- if (request.getType() == RenderingRequest.HIGHRES_RENDERING) {
- return "HIGHRES_RENDERING";
- }
- return "UNKNOWN TYPE!";
- }
-
- private void setupEnvironment(ImagePreset preset, boolean highResPreview) {
- mEnvironment.setPipeline(this);
- mEnvironment.setFiltersManager(mFiltersManager);
- if (highResPreview) {
- mEnvironment.setScaleFactor(mHighResPreviewScaleFactor);
- } else {
- mEnvironment.setScaleFactor(mPreviewScaleFactor);
- }
- mEnvironment.setQuality(FilterEnvironment.QUALITY_PREVIEW);
- mEnvironment.setImagePreset(preset);
- mEnvironment.setStop(false);
- }
-
- public void setOriginal(Bitmap bitmap) {
- mOriginalBitmap = bitmap;
- Log.v(LOGTAG,"setOriginal, size " + bitmap.getWidth() + " x " + bitmap.getHeight());
- ImagePreset preset = MasterImage.getImage().getPreset();
- setupEnvironment(preset, false);
- updateOriginalAllocation(preset);
- }
-
- private synchronized boolean updateOriginalAllocation(ImagePreset preset) {
- Bitmap originalBitmap = mOriginalBitmap;
-
- if (originalBitmap == null) {
- return false;
- }
-
- GeometryMetadata geometry = preset.getGeometry();
- if (mPreviousGeometry != null && geometry.equals(mPreviousGeometry)) {
- return false;
- }
-
- if (DEBUG) {
- Log.v(LOGTAG, "geometry has changed");
- }
-
- RenderScript RS = getRenderScriptContext();
-
- Allocation filtersOnlyOriginalAllocation = mFiltersOnlyOriginalAllocation;
- mFiltersOnlyOriginalAllocation = Allocation.createFromBitmap(RS, originalBitmap,
- Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT);
- if (filtersOnlyOriginalAllocation != null) {
- filtersOnlyOriginalAllocation.destroy();
- }
-
- Allocation originalAllocation = mOriginalAllocation;
- mResizedOriginalBitmap = preset.applyGeometry(originalBitmap, mEnvironment);
- mOriginalAllocation = Allocation.createFromBitmap(RS, mResizedOriginalBitmap,
- Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT);
- if (originalAllocation != null) {
- originalAllocation.destroy();
- }
-
- mPreviousGeometry = new GeometryMetadata(geometry);
- return true;
- }
-
- public synchronized void render(RenderingRequest request) {
- synchronized (CachingPipeline.class) {
- if (getRenderScriptContext() == null) {
- return;
- }
- if (((request.getType() != RenderingRequest.PARTIAL_RENDERING
- && request.getType() != RenderingRequest.HIGHRES_RENDERING)
- && request.getBitmap() == null)
- || request.getImagePreset() == null) {
- return;
- }
-
- if (DEBUG) {
- Log.v(LOGTAG, "render image of type " + getType(request));
- }
-
- Bitmap bitmap = request.getBitmap();
- ImagePreset preset = request.getImagePreset();
- setupEnvironment(preset,
- request.getType() != RenderingRequest.HIGHRES_RENDERING);
- mFiltersManager.freeFilterResources(preset);
-
- if (request.getType() == RenderingRequest.PARTIAL_RENDERING) {
- ImageLoader loader = MasterImage.getImage().getImageLoader();
- if (loader == null) {
- Log.w(LOGTAG, "loader not yet setup, cannot handle: " + getType(request));
- return;
- }
- bitmap = loader.getScaleOneImageForPreset(request.getBounds(),
- request.getDestination());
- if (bitmap == null) {
- Log.w(LOGTAG, "could not get bitmap for: " + getType(request));
- return;
- }
- }
-
- if (request.getType() == RenderingRequest.HIGHRES_RENDERING) {
- ImageLoader loader = MasterImage.getImage().getImageLoader();
- bitmap = loader.getOriginalBitmapHighres();
- if (bitmap != null) {
- bitmap = preset.applyGeometry(bitmap, mEnvironment);
- }
- }
-
- if (request.getType() == RenderingRequest.FULL_RENDERING
- || request.getType() == RenderingRequest.GEOMETRY_RENDERING
- || request.getType() == RenderingRequest.FILTERS_RENDERING) {
- updateOriginalAllocation(preset);
- }
-
- if (DEBUG) {
- Log.v(LOGTAG, "after update, req bitmap (" + bitmap.getWidth() + "x" + bitmap.getHeight()
- + " ? resizeOriginal (" + mResizedOriginalBitmap.getWidth() + "x"
- + mResizedOriginalBitmap.getHeight());
- }
-
- if (request.getType() == RenderingRequest.FULL_RENDERING
- || request.getType() == RenderingRequest.GEOMETRY_RENDERING) {
- mOriginalAllocation.copyTo(bitmap);
- } else if (request.getType() == RenderingRequest.FILTERS_RENDERING) {
- mFiltersOnlyOriginalAllocation.copyTo(bitmap);
- }
-
- if (request.getType() == RenderingRequest.FULL_RENDERING
- || request.getType() == RenderingRequest.FILTERS_RENDERING
- || request.getType() == RenderingRequest.ICON_RENDERING
- || request.getType() == RenderingRequest.PARTIAL_RENDERING
- || request.getType() == RenderingRequest.HIGHRES_RENDERING
- || request.getType() == RenderingRequest.STYLE_ICON_RENDERING) {
-
- if (request.getType() == RenderingRequest.ICON_RENDERING) {
- mEnvironment.setQuality(FilterEnvironment.QUALITY_ICON);
- } else {
- mEnvironment.setQuality(FilterEnvironment.QUALITY_PREVIEW);
- }
-
- Bitmap bmp = preset.apply(bitmap, mEnvironment);
- if (!mEnvironment.needsStop()) {
- request.setBitmap(bmp);
- }
- mFiltersManager.freeFilterResources(preset);
- }
- }
- }
-
- public synchronized void renderImage(ImagePreset preset, Allocation in, Allocation out) {
- synchronized (CachingPipeline.class) {
- if (getRenderScriptContext() == null) {
- return;
- }
- setupEnvironment(preset, false);
- mFiltersManager.freeFilterResources(preset);
- preset.applyFilters(-1, -1, in, out, mEnvironment);
- boolean copyOut = false;
- if (preset.nbFilters() > 0) {
- copyOut = true;
- }
- preset.applyBorder(in, out, copyOut, mEnvironment);
- }
- }
-
- public synchronized Bitmap renderFinalImage(Bitmap bitmap, ImagePreset preset) {
- synchronized (CachingPipeline.class) {
- if (getRenderScriptContext() == null) {
- return bitmap;
- }
- setupEnvironment(preset, false);
- mEnvironment.setQuality(FilterEnvironment.QUALITY_FINAL);
- mEnvironment.setScaleFactor(1.0f);
- mFiltersManager.freeFilterResources(preset);
- bitmap = preset.applyGeometry(bitmap, mEnvironment);
- bitmap = preset.apply(bitmap, mEnvironment);
- return bitmap;
- }
- }
-
- public Bitmap renderGeometryIcon(Bitmap bitmap, ImagePreset preset) {
- // Called by RenderRequest on the main thread
- // TODO: change this -- we should reuse a pool of bitmaps instead...
- if (mGeometry == null) {
- mGeometry = new ImageFilterGeometry();
- }
- mGeometry.useRepresentation(preset.getGeometry());
- return mGeometry.apply(bitmap, mPreviewScaleFactor,
- FilterEnvironment.QUALITY_PREVIEW);
- }
-
- public synchronized void compute(SharedBuffer buffer, ImagePreset preset, int type) {
- synchronized (CachingPipeline.class) {
- if (getRenderScriptContext() == null) {
- return;
- }
- if (DEBUG) {
- Log.v(LOGTAG, "compute preset " + preset);
- preset.showFilters();
- }
-
- String thread = Thread.currentThread().getName();
- long time = System.currentTimeMillis();
- setupEnvironment(preset, false);
- mFiltersManager.freeFilterResources(preset);
-
- Bitmap resizedOriginalBitmap = mResizedOriginalBitmap;
- if (updateOriginalAllocation(preset) || buffer.getProducer() == null) {
- resizedOriginalBitmap = mResizedOriginalBitmap;
- buffer.setProducer(resizedOriginalBitmap);
- mEnvironment.cache(buffer.getProducer());
- }
-
- Bitmap bitmap = buffer.getProducer().getBitmap();
- long time2 = System.currentTimeMillis();
-
- if (bitmap == null || (bitmap.getWidth() != resizedOriginalBitmap.getWidth())
- || (bitmap.getHeight() != resizedOriginalBitmap.getHeight())) {
- mEnvironment.cache(buffer.getProducer());
- buffer.setProducer(resizedOriginalBitmap);
- bitmap = buffer.getProducer().getBitmap();
- }
- mOriginalAllocation.copyTo(bitmap);
-
- Bitmap tmpbitmap = preset.apply(bitmap, mEnvironment);
- if (tmpbitmap != bitmap) {
- mEnvironment.cache(buffer.getProducer());
- buffer.setProducer(tmpbitmap);
- }
-
- mFiltersManager.freeFilterResources(preset);
-
- time = System.currentTimeMillis() - time;
- time2 = System.currentTimeMillis() - time2;
- if (DEBUG) {
- Log.v(LOGTAG, "Applying type " + type + " filters to bitmap "
- + bitmap + " (" + bitmap.getWidth() + " x " + bitmap.getHeight()
- + ") took " + time + " ms, " + time2 + " ms for the filter, on thread " + thread);
- }
- }
- }
-
- public boolean needsRepaint() {
- SharedBuffer buffer = MasterImage.getImage().getPreviewBuffer();
- return buffer.checkRepaintNeeded();
- }
-
- public void setPreviewScaleFactor(float previewScaleFactor) {
- mPreviewScaleFactor = previewScaleFactor;
- }
-
- public void setHighResPreviewScaleFactor(float highResPreviewScaleFactor) {
- mHighResPreviewScaleFactor = highResPreviewScaleFactor;
- }
-
- public synchronized boolean isInitialized() {
- return getRenderScriptContext() != null && mOriginalBitmap != null;
- }
-
- public boolean prepareRenderscriptAllocations(Bitmap bitmap) {
- RenderScript RS = getRenderScriptContext();
- boolean needsUpdate = false;
- if (mOutPixelsAllocation == null || mInPixelsAllocation == null ||
- bitmap.getWidth() != mWidth || bitmap.getHeight() != mHeight) {
- destroyPixelAllocations();
- Bitmap bitmapBuffer = bitmap;
- if (bitmap.getConfig() == null || bitmap.getConfig() != BITMAP_CONFIG) {
- bitmapBuffer = bitmap.copy(BITMAP_CONFIG, true);
- }
- mOutPixelsAllocation = Allocation.createFromBitmap(RS, bitmapBuffer,
- Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT);
- mInPixelsAllocation = Allocation.createTyped(RS,
- mOutPixelsAllocation.getType());
- needsUpdate = true;
- }
- if (RS != null) {
- mInPixelsAllocation.copyFrom(bitmap);
- }
- if (bitmap.getWidth() != mWidth
- || bitmap.getHeight() != mHeight) {
- mWidth = bitmap.getWidth();
- mHeight = bitmap.getHeight();
- needsUpdate = true;
- }
- if (DEBUG) {
- Log.v(LOGTAG, "prepareRenderscriptAllocations: " + needsUpdate + " in " + getName());
- }
- return needsUpdate;
- }
-
- public synchronized Allocation getInPixelsAllocation() {
- return mInPixelsAllocation;
- }
-
- public synchronized Allocation getOutPixelsAllocation() {
- return mOutPixelsAllocation;
- }
-
- public String getName() {
- return mName;
- }
-
- public RenderScript getRSContext() {
- return CachingPipeline.getRenderScriptContext();
- }
-}
diff --git a/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java b/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java
deleted file mode 100644
index 3232db774..000000000
--- a/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.gallery3d.filtershow.cache;
-
-import android.graphics.Bitmap;
-import android.os.*;
-import android.os.Process;
-import android.support.v8.renderscript.*;
-import android.util.Log;
-
-import com.android.gallery3d.filtershow.filters.FiltersManager;
-import com.android.gallery3d.filtershow.filters.ImageFilterRS;
-import com.android.gallery3d.filtershow.imageshow.GeometryMetadata;
-import com.android.gallery3d.filtershow.imageshow.MasterImage;
-import com.android.gallery3d.filtershow.pipeline.SharedBuffer;
-import com.android.gallery3d.filtershow.pipeline.SharedPreset;
-import com.android.gallery3d.filtershow.presets.ImagePreset;
-
-public class FilteringPipeline implements Handler.Callback {
-
- private static volatile FilteringPipeline sPipeline = null;
- private static final String LOGTAG = "FilteringPipeline";
- private boolean DEBUG = false;
-
- private static long HIRES_DELAY = 300; // in ms
-
- private volatile boolean mPipelineIsOn = false;
-
- private CachingPipeline mAccessoryPipeline = null;
- private CachingPipeline mPreviewPipeline = null;
- private CachingPipeline mHighresPreviewPipeline = null;
-
- private HandlerThread mHandlerThread = null;
- private final static int NEW_PRESET = 0;
- private final static int NEW_RENDERING_REQUEST = 1;
- private final static int COMPUTE_PRESET = 2;
- private final static int COMPUTE_RENDERING_REQUEST = 3;
- private final static int COMPUTE_PARTIAL_RENDERING_REQUEST = 4;
- private final static int COMPUTE_HIGHRES_RENDERING_REQUEST = 5;
-
- private volatile boolean mHasUnhandledPreviewRequest = false;
-
- private String getType(int value) {
- if (value == COMPUTE_RENDERING_REQUEST) {
- return "COMPUTE_RENDERING_REQUEST";
- }
- if (value == COMPUTE_PARTIAL_RENDERING_REQUEST) {
- return "COMPUTE_PARTIAL_RENDERING_REQUEST";
- }
- if (value == COMPUTE_HIGHRES_RENDERING_REQUEST) {
- return "COMPUTE_HIGHRES_RENDERING_REQUEST";
- }
- return "UNKNOWN TYPE";
- }
-
- private Handler mProcessingHandler = null;
- private final Handler mUIHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case NEW_PRESET: {
- MasterImage.getImage().notifyObservers();
- if (mHasUnhandledPreviewRequest) {
- updatePreviewBuffer();
- }
- break;
- }
- case NEW_RENDERING_REQUEST: {
- RenderingRequest request = (RenderingRequest) msg.obj;
- request.markAvailable();
- break;
- }
- }
- }
- };
-
- @Override
- public boolean handleMessage(Message msg) {
- if (!mPipelineIsOn) {
- return false;
- }
- switch (msg.what) {
- case COMPUTE_PRESET: {
- SharedBuffer buffer = MasterImage.getImage().getPreviewBuffer();
- SharedPreset preset = MasterImage.getImage().getPreviewPreset();
- ImagePreset renderingPreset = preset.dequeuePreset();
- if (renderingPreset != null) {
- mPreviewPipeline.compute(buffer, renderingPreset, COMPUTE_PRESET);
- // set the preset we used in the buffer for later inspection UI-side
- buffer.getProducer().setPreset(renderingPreset);
- buffer.getProducer().sync();
- buffer.swapProducer(); // push back the result
- Message uimsg = mUIHandler.obtainMessage(NEW_PRESET);
- mUIHandler.sendMessage(uimsg);
- }
- break;
- }
- case COMPUTE_RENDERING_REQUEST:
- case COMPUTE_PARTIAL_RENDERING_REQUEST:
- case COMPUTE_HIGHRES_RENDERING_REQUEST: {
-
- if (DEBUG) {
- Log.v(LOGTAG, "Compute Request: " + getType(msg.what));
- }
-
- RenderingRequest request = (RenderingRequest) msg.obj;
- if (msg.what == COMPUTE_HIGHRES_RENDERING_REQUEST) {
- mHighresPreviewPipeline.render(request);
- } else {
- mAccessoryPipeline.render(request);
- }
- if (request.getBitmap() != null) {
- Message uimsg = mUIHandler.obtainMessage(NEW_RENDERING_REQUEST);
- uimsg.obj = request;
- mUIHandler.sendMessage(uimsg);
- }
- break;
- }
- }
- return false;
- }
-
- private FilteringPipeline() {
- mHandlerThread = new HandlerThread("FilteringPipeline",
- Process.THREAD_PRIORITY_FOREGROUND);
- mHandlerThread.start();
- mProcessingHandler = new Handler(mHandlerThread.getLooper(), this);
- mAccessoryPipeline = new CachingPipeline(
- FiltersManager.getManager(), "Accessory");
- mPreviewPipeline = new CachingPipeline(
- FiltersManager.getPreviewManager(), "Preview");
- mHighresPreviewPipeline = new CachingPipeline(
- FiltersManager.getHighresManager(), "Highres");
- }
-
- public synchronized static FilteringPipeline getPipeline() {
- if (sPipeline == null) {
- sPipeline = new FilteringPipeline();
- }
- return sPipeline;
- }
-
- public void setOriginal(Bitmap bitmap) {
- if (mPipelineIsOn) {
- Log.e(LOGTAG, "setOriginal called after pipeline initialization!");
- return;
- }
- mAccessoryPipeline.setOriginal(bitmap);
- mPreviewPipeline.setOriginal(bitmap);
- mHighresPreviewPipeline.setOriginal(bitmap);
- }
-
- public void postRenderingRequest(RenderingRequest request) {
- if (!mPipelineIsOn) {
- return;
- }
- int type = COMPUTE_RENDERING_REQUEST;
- if (request.getType() == RenderingRequest.PARTIAL_RENDERING) {
- type = COMPUTE_PARTIAL_RENDERING_REQUEST;
- }
- if (request.getType() == RenderingRequest.HIGHRES_RENDERING) {
- type = COMPUTE_HIGHRES_RENDERING_REQUEST;
- ImageLoader imageLoader = MasterImage.getImage().getImageLoader();
- if (imageLoader.getOriginalBitmapHighres() == null) {
- return;
- }
- }
- Message msg = mProcessingHandler.obtainMessage(type);
- msg.obj = request;
- if (type == COMPUTE_PARTIAL_RENDERING_REQUEST
- || type == COMPUTE_HIGHRES_RENDERING_REQUEST) {
- if (mProcessingHandler.hasMessages(msg.what)) {
- mProcessingHandler.removeMessages(msg.what);
- }
- mProcessingHandler.sendMessageDelayed(msg, HIRES_DELAY);
- } else {
- mProcessingHandler.sendMessage(msg);
- }
- }
-
- public void updatePreviewBuffer() {
- if (!mPipelineIsOn) {
- return;
- }
- mHasUnhandledPreviewRequest = true;
- mHighresPreviewPipeline.stop();
- if (mProcessingHandler.hasMessages(COMPUTE_PRESET)) {
- return;
- }
- if (!mPreviewPipeline.needsRepaint()) {
- return;
- }
- if (MasterImage.getImage().getPreset() == null) {
- return;
- }
- Message msg = mProcessingHandler.obtainMessage(COMPUTE_PRESET);
- msg.obj = MasterImage.getImage().getPreset();
- mHasUnhandledPreviewRequest = false;
- mProcessingHandler.sendMessageAtFrontOfQueue(msg);
- }
-
- public void setPreviewScaleFactor(float previewScaleFactor) {
- mAccessoryPipeline.setPreviewScaleFactor(previewScaleFactor);
- mPreviewPipeline.setPreviewScaleFactor(previewScaleFactor);
- mHighresPreviewPipeline.setPreviewScaleFactor(previewScaleFactor);
- }
-
- public void setHighResPreviewScaleFactor(float highResPreviewScaleFactor) {
- mAccessoryPipeline.setHighResPreviewScaleFactor(highResPreviewScaleFactor);
- mPreviewPipeline.setHighResPreviewScaleFactor(highResPreviewScaleFactor);
- mHighresPreviewPipeline.setHighResPreviewScaleFactor(highResPreviewScaleFactor);
- }
-
- public static synchronized void reset() {
- sPipeline.mAccessoryPipeline.reset();
- sPipeline.mPreviewPipeline.reset();
- sPipeline.mHighresPreviewPipeline.reset();
- sPipeline.mHandlerThread.quit();
- sPipeline = null;
- }
-
- public void turnOnPipeline(boolean t) {
- mPipelineIsOn = t;
- if (mPipelineIsOn) {
- assert(mPreviewPipeline.isInitialized());
- assert(mAccessoryPipeline.isInitialized());
- assert(mHighresPreviewPipeline.isInitialized());
- updatePreviewBuffer();
- }
- }
-}
diff --git a/src/com/android/gallery3d/filtershow/cache/ImageLoader.java b/src/com/android/gallery3d/filtershow/cache/ImageLoader.java
index a7149d1f0..85cebab4d 100644
--- a/src/com/android/gallery3d/filtershow/cache/ImageLoader.java
+++ b/src/com/android/gallery3d/filtershow/cache/ImageLoader.java
@@ -39,7 +39,7 @@ import com.android.gallery3d.filtershow.FilterShowActivity;
import com.android.gallery3d.filtershow.history.HistoryManager;
import com.android.gallery3d.filtershow.imageshow.ImageShow;
import com.android.gallery3d.filtershow.imageshow.MasterImage;
-import com.android.gallery3d.filtershow.presets.ImagePreset;
+import com.android.gallery3d.filtershow.pipeline.ImagePreset;
import com.android.gallery3d.filtershow.tools.SaveCopyTask;
import com.android.gallery3d.util.XmpUtilHelper;
diff --git a/src/com/android/gallery3d/filtershow/cache/RenderingRequest.java b/src/com/android/gallery3d/filtershow/cache/RenderingRequest.java
deleted file mode 100644
index e5bc411de..000000000
--- a/src/com/android/gallery3d/filtershow/cache/RenderingRequest.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.gallery3d.filtershow.cache;
-
-import android.graphics.Bitmap;
-import android.graphics.Rect;
-import com.android.gallery3d.app.Log;
-import com.android.gallery3d.filtershow.filters.FiltersManager;
-import com.android.gallery3d.filtershow.imageshow.MasterImage;
-import com.android.gallery3d.filtershow.presets.FilterEnvironment;
-import com.android.gallery3d.filtershow.presets.ImagePreset;
-
-public class RenderingRequest {
- private static final String LOGTAG = "RenderingRequest";
- private boolean mIsDirect = false;
- private Bitmap mBitmap = null;
- private ImagePreset mImagePreset = null;
- private ImagePreset mOriginalImagePreset = null;
- private RenderingRequestCaller mCaller = null;
- private float mScaleFactor = 1.0f;
- private Rect mBounds = null;
- private Rect mDestination = null;
- private int mType = FULL_RENDERING;
- public static final int FULL_RENDERING = 0;
- public static final int FILTERS_RENDERING = 1;
- public static final int GEOMETRY_RENDERING = 2;
- public static final int ICON_RENDERING = 3;
- public static final int PARTIAL_RENDERING = 4;
- public static final int HIGHRES_RENDERING = 5;
- public static final int STYLE_ICON_RENDERING = 6;
-
- private static final Bitmap.Config mConfig = Bitmap.Config.ARGB_8888;
-
- public static void post(Bitmap source, ImagePreset preset, int type, RenderingRequestCaller caller) {
- RenderingRequest.post(source, preset, type, caller, null, null);
- }
-
- public static void post(Bitmap source, ImagePreset preset, int type,
- RenderingRequestCaller caller, Rect bounds, Rect destination) {
- if (((type != PARTIAL_RENDERING && type != HIGHRES_RENDERING) && source == null)
- || preset == null || caller == null) {
- Log.v(LOGTAG, "something null: source: " + source
- + " or preset: " + preset + " or caller: " + caller);
- return;
- }
- RenderingRequest request = new RenderingRequest();
- Bitmap bitmap = null;
- if (type == FULL_RENDERING
- || type == GEOMETRY_RENDERING
- || type == ICON_RENDERING
- || type == STYLE_ICON_RENDERING) {
- CachingPipeline pipeline = new CachingPipeline(
- FiltersManager.getManager(), "Icon");
- bitmap = pipeline.renderGeometryIcon(source, preset);
- } else if (type != PARTIAL_RENDERING && type != HIGHRES_RENDERING) {
- bitmap = Bitmap.createBitmap(source.getWidth(), source.getHeight(), mConfig);
- }
-
- request.setBitmap(bitmap);
- ImagePreset passedPreset = new ImagePreset(preset);
- passedPreset.setImageLoader(MasterImage.getImage().getImageLoader());
- request.setOriginalImagePreset(preset);
- request.setScaleFactor(MasterImage.getImage().getScaleFactor());
-
- if (type == PARTIAL_RENDERING) {
- request.setBounds(bounds);
- request.setDestination(destination);
- passedPreset.setPartialRendering(true, bounds);
- }
-
- request.setImagePreset(passedPreset);
- request.setType(type);
- request.setCaller(caller);
- request.post();
- }
-
- public void post() {
- FilteringPipeline.getPipeline().postRenderingRequest(this);
- }
-
- public void markAvailable() {
- if (mBitmap == null || mImagePreset == null
- || mCaller == null) {
- return;
- }
- mCaller.available(this);
- }
-
- public boolean isDirect() {
- return mIsDirect;
- }
-
- public void setDirect(boolean isDirect) {
- mIsDirect = isDirect;
- }
-
- public Bitmap getBitmap() {
- return mBitmap;
- }
-
- public void setBitmap(Bitmap bitmap) {
- mBitmap = bitmap;
- }
-
- public ImagePreset getImagePreset() {
- return mImagePreset;
- }
-
- public void setImagePreset(ImagePreset imagePreset) {
- mImagePreset = imagePreset;
- }
-
- public int getType() {
- return mType;
- }
-
- public void setType(int type) {
- mType = type;
- }
-
- public void setCaller(RenderingRequestCaller caller) {
- mCaller = caller;
- }
-
- public Rect getBounds() {
- return mBounds;
- }
-
- public void setBounds(Rect bounds) {
- mBounds = bounds;
- }
-
- public void setScaleFactor(float scaleFactor) {
- mScaleFactor = scaleFactor;
- }
-
- public float getScaleFactor() {
- return mScaleFactor;
- }
-
- public Rect getDestination() {
- return mDestination;
- }
-
- public void setDestination(Rect destination) {
- mDestination = destination;
- }
-
- public ImagePreset getOriginalImagePreset() {
- return mOriginalImagePreset;
- }
-
- public void setOriginalImagePreset(ImagePreset originalImagePreset) {
- mOriginalImagePreset = originalImagePreset;
- }
-}
diff --git a/src/com/android/gallery3d/filtershow/cache/RenderingRequestCaller.java b/src/com/android/gallery3d/filtershow/cache/RenderingRequestCaller.java
deleted file mode 100644
index 240eb8f44..000000000
--- a/src/com/android/gallery3d/filtershow/cache/RenderingRequestCaller.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.gallery3d.filtershow.cache;
-
-public interface RenderingRequestCaller {
- public void available(RenderingRequest request);
-}