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