15f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde/*
25f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde * Copyright (C) 2015 The Android Open Source Project
35f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde *
45f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde * Licensed under the Apache License, Version 2.0 (the "License");
55f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde * you may not use this file except in compliance with the License.
65f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde * You may obtain a copy of the License at
75f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde *
85f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde *      http://www.apache.org/licenses/LICENSE-2.0
95f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde *
105f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde * Unless required by applicable law or agreed to in writing, software
115f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde * distributed under the License is distributed on an "AS IS" BASIS,
125f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde * See the License for the specific language governing permissions and
145f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde * limitations under the License.
155f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde */
165f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde
175f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohdepackage com.android.camera.one.v2.commands;
185f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde
195f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohdeimport com.android.camera.one.v2.core.FrameServer;
205f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohdeimport com.android.camera.one.v2.core.RequestBuilder;
215f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde
225f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde/**
235f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde * Create a two stage frame server update command for ZSL implementations.
245f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde */
255f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohdepublic class ZslPreviewCommandFactory implements PreviewCommandFactory {
265f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde    private final FrameServer mFrameServer;
277e39f8b015985fc0e539e14c193286065b5e51d4Pengchong Jin    private final RequestBuilder.Factory mPreviewWarmupRequestBuilder;
285f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde    private final RequestBuilder.Factory mZslRequestBuilder;
297e39f8b015985fc0e539e14c193286065b5e51d4Pengchong Jin    private static final int ZSL_WARMUP_BURST_SIZE = 5;
305f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde
315f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde    public ZslPreviewCommandFactory(
325f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde          FrameServer frameServer,
337e39f8b015985fc0e539e14c193286065b5e51d4Pengchong Jin          RequestBuilder.Factory previewWarmupRequestBuilder,
345f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde          RequestBuilder.Factory zslRequestBuilder) {
355f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde        mFrameServer = frameServer;
367e39f8b015985fc0e539e14c193286065b5e51d4Pengchong Jin        mPreviewWarmupRequestBuilder = previewWarmupRequestBuilder;
375f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde        mZslRequestBuilder = zslRequestBuilder;
385f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde    }
395f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde
405f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde    @Override
415f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde    public CameraCommand get(RequestBuilder.Factory previewRequestBuilder, int templateType) {
427e39f8b015985fc0e539e14c193286065b5e51d4Pengchong Jin        return new ZslPreviewCommand(mFrameServer,
437e39f8b015985fc0e539e14c193286065b5e51d4Pengchong Jin                mPreviewWarmupRequestBuilder, templateType,
447e39f8b015985fc0e539e14c193286065b5e51d4Pengchong Jin                mZslRequestBuilder, templateType,
457e39f8b015985fc0e539e14c193286065b5e51d4Pengchong Jin                previewRequestBuilder, templateType, ZSL_WARMUP_BURST_SIZE);
465f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde    }
475f1f618eb3df6b9a2f8554e97e8410467b642653Paul Rohde}
48