19bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava/*
29bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Copyright (C) 2010 The Android Open Source Project
39bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava *
49bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Licensed under the Apache License, Version 2.0 (the "License");
59bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * you may not use this file except in compliance with the License.
69bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * You may obtain a copy of the License at
79bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava *
89bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava *      http://www.apache.org/licenses/LICENSE-2.0
99bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava *
109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Unless required by applicable law or agreed to in writing, software
119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * distributed under the License is distributed on an "AS IS" BASIS,
129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * See the License for the specific language governing permissions and
149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * limitations under the License.
159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */
169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavapackage android.media.videoeditor;
199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava/**
219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This class allows to apply color effect on a media item.
229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@hide}
239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */
249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavapublic class EffectColor extends Effect {
259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Change the video frame color to the RGB color value provided
289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int TYPE_COLOR = 1;
309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Change the video frame color to a gradation from RGB color (at the top of
329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * the frame) to black (at the bottom of the frame).
339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int TYPE_GRADIENT = 2;
359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Change the video frame color to sepia
379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int TYPE_SEPIA = 3;
399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Invert the video frame color
419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int TYPE_NEGATIVE = 4;
439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Make the video look like as if it was recorded in 50's
459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int TYPE_FIFTIES = 5;
479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Change the video frame color to the RGB color value GREEN
499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int GREEN = 0x0000ff00;
519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Change the video frame color to the RGB color value PINK
539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int PINK = 0x00ff66cc;
559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Change the video frame color to the RGB color value GRAY
579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public static final int GRAY = 0x007f7f7f;
599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *  The effect type
629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    private final int mType;
649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *  The effect color
679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    private final int mColor;
699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * An object of this type cannot be instantiated by using the default
729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * constructor
739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    @SuppressWarnings("unused")
759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    private EffectColor() {
769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        this(null, null, 0, 0, 0, 0);
779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Constructor
819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *
829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @param mediaItem The media item owner
839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @param effectId The effect id
849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @param startTimeMs The start time relative to the media item to which it
859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *            is applied
869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @param durationMs The duration of this effect in milliseconds
879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @param type type of the effect. type is one of: TYPE_COLOR,
889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *            TYPE_GRADIENT, TYPE_SEPIA, TYPE_NEGATIVE, TYPE_FIFTIES.
899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @param color If type is TYPE_COLOR, color is the RGB color as 888.
909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *              If type is TYPE_GRADIENT, color is the RGB color at the
919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *              top of the frame. Otherwise, color is ignored
929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public EffectColor(MediaItem mediaItem, String effectId, long startTimeMs,
949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                      long durationMs, int type, int color) {
959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        super(mediaItem, effectId, startTimeMs, durationMs);
969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        switch (type) {
979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            case TYPE_COLOR:
989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            case TYPE_GRADIENT: {
999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                switch (color) {
1009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                    case GREEN:
1019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                    case PINK:
1029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                    case GRAY:
1039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                        mColor = color;
1049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                        break;
1059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
1069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                    default:
1079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                        throw new IllegalArgumentException("Invalid Color: " + color);
1089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                    }
1099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                    break;
1109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            }
1119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            case TYPE_SEPIA:
1129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            case TYPE_NEGATIVE:
1139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            case TYPE_FIFTIES: {
1149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                mColor = -1;
1159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                break;
1169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            }
1179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
1189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            default: {
1199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                throw new IllegalArgumentException("Invalid type: " + type);
1209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            }
1219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        }
1229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        mType = type;
1239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
1249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
1259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
1269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Get the effect type.
1279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *
1289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @return The effect type
1299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
1309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public int getType() {
1319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        return mType;
1329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
1339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
1349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
1359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Get the color if effect type is TYPE_COLOR or TYPE_GRADIENT.
1369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *
1379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @return the color as RGB 888 if type is TYPE_COLOR or TYPE_GRADIENT.
1389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
1399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public int getColor() {
1409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        return mColor;
1419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
1429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava}
143