Home | History | Annotate | Download | only in videoeditor
      1 /*
      2  * Copyright (C) 2011 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.mediaframeworktest.functional.videoeditor;
     18 
     19 import java.io.File;
     20 import java.io.IOException;
     21 
     22 import android.media.videoeditor.AudioTrack;
     23 import android.media.videoeditor.MediaImageItem;
     24 import android.media.videoeditor.MediaItem;
     25 import android.media.videoeditor.MediaProperties;
     26 import android.media.videoeditor.MediaVideoItem;
     27 import android.media.videoeditor.VideoEditor;
     28 import android.os.Environment;
     29 import android.test.ActivityInstrumentationTestCase;
     30 import android.test.suitebuilder.annotation.LargeTest;
     31 import com.android.mediaframeworktest.MediaFrameworkTest;
     32 import com.android.mediaframeworktest.VideoEditorHelper;
     33 import com.android.mediaframeworktest.MediaProfileReader;
     34 
     35 public class MediaPropertiesTest extends
     36     ActivityInstrumentationTestCase<MediaFrameworkTest> {
     37     private final String TAG = "MediaPropertiesTest";
     38 
     39     private final String PROJECT_LOCATION = VideoEditorHelper.PROJECT_LOCATION_COMMON;
     40 
     41     private final String INPUT_FILE_PATH = VideoEditorHelper.INPUT_FILE_PATH_COMMON;
     42 
     43     private VideoEditor mVideoEditor;
     44 
     45     private VideoEditorHelper mVideoEditorHelper;
     46 
     47     public MediaPropertiesTest() {
     48         super("com.android.mediaframeworktest", MediaFrameworkTest.class);
     49     }
     50 
     51     @Override
     52     protected void setUp() throws Exception {
     53         // setup for each test case.
     54         super.setUp();
     55         mVideoEditorHelper = new VideoEditorHelper();
     56         // Create a random String which will be used as project path,
     57         // where all project related files will be stored.
     58         final String projectPath = mVideoEditorHelper.
     59             createRandomFile(PROJECT_LOCATION);
     60         mVideoEditor = mVideoEditorHelper.createVideoEditor(projectPath);
     61     }
     62 
     63     @Override
     64     protected void tearDown() throws Exception {
     65         mVideoEditorHelper.destroyVideoEditor(mVideoEditor);
     66         // Clean the directory created as project path
     67         mVideoEditorHelper.deleteProject(new File(mVideoEditor.getPath()));
     68         System.gc();
     69         super.tearDown();
     70     }
     71 
     72     protected void validateVideoProperties(int aspectRatio, int fileType,
     73         int videoCodecType, int duration, int videoBitrate, int fps,
     74         int videoProfile, int videoLevel, int width, int height, int audioCodecType,
     75         int audioSamplingFrequency, int audioChannel, int audioBitrate,
     76         MediaVideoItem mvi) throws Exception {
     77         assertEquals("Aspect Ratio Mismatch", aspectRatio, mvi.getAspectRatio());
     78         assertEquals("File Type Mismatch", fileType, mvi.getFileType());
     79         assertEquals("VideoCodec Mismatch", videoCodecType, mvi.getVideoType());
     80 
     81         assertTrue("Video duration Mismatch", mVideoEditorHelper.checkRange (
     82             duration, mvi.getDuration(), 10));
     83         assertEquals("Video Profile " + mvi.getVideoProfile(), videoProfile,
     84             mvi.getVideoProfile());
     85         assertEquals("Video Level " + mvi.getVideoLevel(), videoLevel,
     86             mvi.getVideoLevel());
     87         assertEquals("Video height " + mvi.getHeight(), height, mvi.getHeight());
     88         assertEquals("Video width " + mvi.getWidth(), width, mvi.getWidth());
     89         /** Check FPS with 10% range */
     90         assertTrue("fps Mismatch" + mvi.getFps(),
     91             mVideoEditorHelper.checkRange(fps, mvi.getFps(), 10));
     92 
     93         assertEquals("AudioType Mismatch ", audioCodecType, mvi.getAudioType());
     94         assertEquals("Audio Sampling " + mvi.getAudioSamplingFrequency(),
     95             audioSamplingFrequency, mvi.getAudioSamplingFrequency());
     96         // PV SW AAC codec always returns number of channels as Stereo.
     97         // So we do not assert for number of audio channels for AAC_LC
     98         if ( audioCodecType != MediaProperties.ACODEC_AAC_LC ) {
     99             assertEquals("Audio Channels " + mvi.getAudioChannels(), audioChannel,
    100                 mvi.getAudioChannels());
    101         }
    102     }
    103 
    104     protected void validateAudioProperties(int audioCodecType, int duration,
    105         int audioSamplingFrequency, int audioChannel, int audioBitrate,
    106         AudioTrack aT) throws Exception {
    107         assertEquals("AudioType Mismatch ", audioCodecType, aT.getAudioType());
    108         assertTrue("Video duration Mismatch", mVideoEditorHelper.checkRange (
    109             duration, aT.getDuration(), 10));
    110         assertEquals("Audio Sampling " + aT.getAudioSamplingFrequency(),
    111             audioSamplingFrequency, aT.getAudioSamplingFrequency());
    112         // PV SW AAC codec always returns number of channels as Stereo.
    113         // So we do not assert for number of audio channels for AAC_LC
    114         if ( audioCodecType != MediaProperties.ACODEC_AAC_LC ) {
    115             assertEquals("Audio Channels " + aT.getAudioChannels(), audioChannel,
    116                 aT.getAudioChannels());
    117         }
    118     }
    119 
    120     protected void validateImageProperties(int aspectRatio, int fileType,
    121         int width, int height, MediaImageItem mii)
    122         throws Exception {
    123         assertEquals("Aspect Ratio Mismatch", aspectRatio, mii.getAspectRatio());
    124         assertEquals("File Type Mismatch", fileType, mii.getFileType());
    125         assertEquals("Image height " + mii.getHeight(), height, mii.getHeight());
    126         assertEquals("Image width " + mii.getWidth(), width, mii.getWidth());
    127     }
    128 
    129 
    130     /**
    131      *To test Media Properties for file MPEG4 854 x 480
    132      */
    133     @LargeTest
    134     public void testPropertiesMPEG4854_480() throws Exception {
    135         final String videoItemFilename = INPUT_FILE_PATH
    136             + "MPEG4_SP_854x480_15fps_256kbps_AACLC_16khz_48kbps_s_0_26.mp4";
    137         final int aspectRatio = MediaProperties.ASPECT_RATIO_16_9;
    138         final int fileType = MediaProperties.FILE_MP4;
    139         final int videoCodecType = MediaProperties.VCODEC_MPEG4;
    140         final int duration = 26933;
    141         final int videoBitrate = 319000;
    142         final int audioBitrate = 48000;
    143         final int fps = 15;
    144         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    145         final int audioSamplingFrequency = 16000;
    146         final int audioChannel = 2;
    147         final int videoProfile = MediaProperties.MPEG4Profile.MPEG4ProfileSimple;
    148         final int videoLevel = MediaProperties.MPEG4Level.MPEG4Level1;
    149         final int width = 854;
    150         final int height = MediaProperties.HEIGHT_480;
    151 
    152         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    153             (mVideoEditor, "m1", videoItemFilename,
    154             MediaItem.RENDERING_MODE_BLACK_BORDER);
    155 
    156         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    157             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    158             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    159     }
    160 
    161 
    162     /**
    163      *To test Media Properties for file MPEG4 WVGA
    164      */
    165     @LargeTest
    166     public void testPropertiesMPEGWVGA() throws Exception {
    167         final String videoItemFilename = INPUT_FILE_PATH
    168             + "MPEG4_SP_800x480_515kbps_15fps_AMR_NB_8KHz_12.2kbps_m_0_26.mp4";
    169         final int aspectRatio = MediaProperties.ASPECT_RATIO_5_3;
    170         final int fileType = MediaProperties.FILE_MP4;
    171         final int videoCodecType = MediaProperties.VCODEC_MPEG4;
    172         final int duration = 26933;
    173         final int videoBitrate = 384000;
    174         final int audioBitrate = 12800;
    175         final int fps = 15;
    176         final int audioCodecType = MediaProperties.ACODEC_AMRNB;
    177         final int audioSamplingFrequency = 8000;
    178         final int audioChannel = 1;
    179         final int videoProfile = MediaProperties.MPEG4Profile.MPEG4ProfileSimple;
    180         final int videoLevel = MediaProperties.MPEG4Level.MPEG4Level1;
    181         final int width = 800;
    182         final int height = MediaProperties.HEIGHT_480;
    183         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    184 
    185         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    186             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    187 
    188         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    189             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    190             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    191     }
    192 
    193     /**
    194      *To test media properties for MPEG4 720x480 (NTSC) + AAC file.
    195      */
    196     @LargeTest
    197     public void testPropertiesMPEGNTSC() throws Exception {
    198         final String videoItemFilename = INPUT_FILE_PATH
    199             + "MPEG4_SP_720x480_30fps_280kbps_AACLC_48kHz_161kbps_s_0_26.mp4";
    200         final int aspectRatio = MediaProperties.ASPECT_RATIO_3_2;
    201         final int fileType = MediaProperties.FILE_MP4;
    202         final int videoCodecType = MediaProperties.VCODEC_MPEG4;
    203         final int duration = 26866;
    204         final int videoBitrate = 403000;
    205         final int audioBitrate = 160000;
    206         final int fps = 30;
    207         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    208         final int audioSamplingFrequency = 48000;
    209         final int audioChannel = 2;
    210         final int videoProfile = MediaProperties.MPEG4Profile.MPEG4ProfileSimple;
    211         final int videoLevel = MediaProperties.MPEG4Level.MPEG4Level1;
    212         final int width = 720;
    213         final int height = MediaProperties.HEIGHT_480;
    214         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    215 
    216         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    217             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    218 
    219         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    220             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    221             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    222     }
    223 
    224     /**
    225      *To test Media Properties for file MPEG4 VGA
    226      */
    227     @LargeTest
    228     public void testPropertiesMPEGVGA() throws Exception {
    229         final String videoItemFilename = INPUT_FILE_PATH
    230             + "MPEG4_SP_640x480_15fps_512kbps_AACLC_48khz_132kbps_s_0_26.mp4";
    231         final int aspectRatio = MediaProperties.ASPECT_RATIO_4_3;
    232         final int fileType = MediaProperties.FILE_MP4;
    233         final int videoCodecType = MediaProperties.VCODEC_MPEG4;
    234         final int duration = 26933;
    235         final int videoBitrate = 533000;
    236         final int audioBitrate = 128000;
    237         final int fps = 15;
    238         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    239         final int audioSamplingFrequency = 48000;
    240         final int audioChannel = 2;
    241         final int videoProfile = MediaProperties.MPEG4Profile.MPEG4ProfileSimple;
    242         final int videoLevel = MediaProperties.MPEG4Level.MPEG4Level1;
    243         final int width = 640;
    244         final int height = MediaProperties.HEIGHT_480;
    245         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    246 
    247         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    248             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    249 
    250         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    251             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    252             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    253     }
    254 
    255     /**
    256      *To test Media Properties for file MPEG4 QCIF
    257      */
    258     @LargeTest
    259     public void testPropertiesMPEGQCIF() throws Exception {
    260         final String videoItemFilename = INPUT_FILE_PATH
    261             + "MPEG4_SP_176x144_12fps_92kbps_AMRNB_8KHz_12.2kbps_m_0_27.3gp";
    262         final int aspectRatio = MediaProperties.ASPECT_RATIO_11_9;
    263         final int fileType = MediaProperties.FILE_3GP;
    264         final int videoCodecType = MediaProperties.VCODEC_MPEG4;
    265         final int duration = 27000;
    266         final int videoBitrate = 384000;
    267         final int audioBitrate = 12200;
    268         final int fps = 12;
    269         final int audioCodecType = MediaProperties.ACODEC_AMRNB;
    270         final int audioSamplingFrequency = 8000;
    271         final int audioChannel = 1;
    272         final int videoProfile = MediaProperties.MPEG4Profile.MPEG4ProfileSimple;
    273         final int videoLevel = MediaProperties.MPEG4Level.MPEG4Level1;
    274         final int width = 176;
    275         final int height = MediaProperties.HEIGHT_144;
    276         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    277 
    278         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    279             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    280 
    281         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    282             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    283             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    284     }
    285 
    286     /**
    287      *To To test media properties for H263 176x144 (QCIF) + AAC (mono) file.
    288      */
    289     @LargeTest
    290     public void testPropertiesH263QCIF() throws Exception {
    291         final String videoItemFilename = INPUT_FILE_PATH
    292             + "H263_profile0_176x144_15fps_256kbps_AACLC_16kHz_32kbps_m_0_26.3gp";
    293         final int aspectRatio = MediaProperties.ASPECT_RATIO_11_9;
    294         final int fileType = MediaProperties.FILE_3GP;
    295         final int videoCodecType = MediaProperties.VCODEC_H263;
    296         final int duration = 26933;
    297         final int videoBitrate = 384000;
    298         final int audioBitrate = 64000;
    299         final int fps = 15;
    300         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    301         final int audioSamplingFrequency = 16000;
    302         final int audioChannel = 1;
    303         final int videoProfile = MediaProperties.H263Profile.H263ProfileBaseline;
    304         final int videoLevel = MediaProperties.H263Level.H263Level10;
    305         final int width = 176;
    306         final int height = MediaProperties.HEIGHT_144;
    307         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    308         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    309             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    310 
    311         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    312             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    313             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    314     }
    315 
    316     /**
    317      *To test Media Properties for file H264 VGA
    318      */
    319     @LargeTest
    320     public void testPropertiesH264VGA() throws Exception {
    321         final String videoItemFilename = INPUT_FILE_PATH
    322             + "H264_BP_640x480_15fps_1200Kbps_AACLC_48KHz_64kps_m_0_27.3gp";
    323         final int aspectRatio = MediaProperties.ASPECT_RATIO_4_3;
    324         final int fileType = MediaProperties.FILE_3GP;
    325         final int videoCodecType = MediaProperties.VCODEC_H264;
    326         final int duration = 77600;
    327         final int videoBitrate = 745000;
    328         final int audioBitrate = 64000;
    329         final int fps = 15;
    330         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    331         final int audioSamplingFrequency = 48000;
    332         final int audioChannel = 2;
    333         final int videoProfile = MediaProperties.H264Profile.H264ProfileBaseline;
    334         final int videoLevel = MediaProperties.H264Level.H264Level13;
    335         final int width = 640;
    336         final int height = MediaProperties.HEIGHT_480;
    337         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    338         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    339             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    340 
    341         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    342             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    343             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    344     }
    345 
    346     /**
    347      *To test Media Properties for file H264 NTSC
    348      */
    349     @LargeTest
    350     public void testPropertiesH264NTSC() throws Exception {
    351         final String videoItemFilename = INPUT_FILE_PATH
    352             + "H264_BP_720x480_25fps_256kbps_AMRNB_8khz_12.2kbps_m_0_26.mp4";
    353         final int aspectRatio = MediaProperties.ASPECT_RATIO_3_2;
    354         final int fileType = MediaProperties.FILE_MP4;
    355         final int videoCodecType = MediaProperties.VCODEC_H264;
    356         final int duration = 26880;
    357         final int videoBitrate = 244000;
    358         final int audioBitrate = 12200;
    359         final int fps = 25;
    360         final int audioCodecType = MediaProperties.ACODEC_AMRNB;
    361         final int audioSamplingFrequency = 8000;
    362         final int audioChannel = 1;
    363         final int videoProfile = MediaProperties.H264Profile.H264ProfileBaseline;
    364         final int videoLevel = MediaProperties.H264Level.H264Level13;
    365         final int width = 720;
    366         final int height = MediaProperties.HEIGHT_480;
    367         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    368 
    369         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    370             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    371 
    372         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    373             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    374             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    375     }
    376 
    377     /**
    378      *To test media properties for H264 800x480 (WVGA) + AAC file.
    379      */
    380     @LargeTest
    381     public void testPropertiesH264WVGA() throws Exception {
    382         final String videoItemFilename = INPUT_FILE_PATH +
    383               "H264_BP_800x480_15fps_512kbps_AACLC_24KHz_38Kbps_s_1_17.mp4";
    384         final int aspectRatio = MediaProperties.ASPECT_RATIO_5_3;
    385         final int fileType = MediaProperties.FILE_MP4;
    386         final int videoCodecType = MediaProperties.VCODEC_H264;
    387         final int duration = 77466;
    388         final int videoBitrate = 528000;
    389         final int audioBitrate = 38000;
    390         final int fps = 15;
    391         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    392         final int audioSamplingFrequency = 24000;
    393         final int audioChannel = 2;
    394         final int videoProfile = MediaProperties.H264Profile.H264ProfileBaseline;
    395         final int videoLevel = MediaProperties.H264Level.H264Level13;
    396         final int width = 800;
    397         final int height = MediaProperties.HEIGHT_480;
    398         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    399 
    400         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    401             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    402 
    403         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    404             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    405             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    406     }
    407 
    408     /**
    409      *To test Media Properties for file H264 HD1280
    410      */
    411     @LargeTest
    412     public void testPropertiesH264HD1280() throws Exception {
    413         final String videoItemFilename = INPUT_FILE_PATH
    414             + "H264_BP_1280x720_15fps_512kbps_AACLC_16khz_48kbps_s_1_17.mp4";
    415         final int aspectRatio = MediaProperties.ASPECT_RATIO_16_9;
    416         final int fileType = MediaProperties.FILE_MP4;
    417         final int videoCodecType = MediaProperties.VCODEC_H264;
    418         final int duration = 77600;
    419         final int videoBitrate = 606000;
    420         final int audioBitrate = 48000;
    421         final int fps = 15;
    422         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    423         final int audioSamplingFrequency = 16000;
    424         final int audioChannel = 2;
    425         final int videoProfile = MediaProperties.H264Profile.H264ProfileBaseline;
    426         final int videoLevel = MediaProperties.H264Level.H264Level13;
    427         final int width = 1280;
    428         final int height = MediaProperties.HEIGHT_720;
    429         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    430 
    431         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    432             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    433 
    434         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    435             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    436             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    437     }
    438 
    439     /**
    440      *To test media properties for H264 1080x720 + AAC file
    441      */
    442     @LargeTest
    443     public void testPropertiesH264HD1080WithAudio() throws Exception {
    444         final String videoItemFilename = INPUT_FILE_PATH
    445             + "H264_BP_1080x720_30fps_12Mbps_AACLC_44.1khz_64kbps_s_1_17.mp4";
    446         final int aspectRatio = MediaProperties.ASPECT_RATIO_3_2;
    447         final int fileType = MediaProperties.FILE_MP4;
    448         final int videoCodecType = MediaProperties.VCODEC_H264;
    449         final int duration = 77500;
    450         final int videoBitrate = 1190000;
    451         final int audioBitrate = 64000;
    452         final int fps = 10;
    453         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    454         final int audioSamplingFrequency = 44100;
    455         final int audioChannel = 2;
    456         final int videoProfile = MediaProperties.H264Profile.H264ProfileBaseline;
    457         final int videoLevel = MediaProperties.H264Level.H264Level13;
    458         final int width = 1080;
    459         final int height = MediaProperties.HEIGHT_720;
    460         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    461 
    462         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    463             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    464 
    465         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    466             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    467             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    468     }
    469 
    470     /**
    471      *To test Media Properties for file WMV - Unsupported type
    472      */
    473     @LargeTest
    474     public void testPropertiesWMVFile() throws Exception {
    475         final String videoItemFilename = INPUT_FILE_PATH +
    476             "WMV_V7_640x480_15fps_512Kbps_wma_V9_44khz_48Kbps_s_1_30.wmv";
    477         boolean flagForException = false;
    478         if (MediaProfileReader.getWMVEnable() == false) {
    479             flagForException = true;
    480         } else {
    481             try {
    482                 new MediaVideoItem(mVideoEditor, "m1", videoItemFilename,
    483                     MediaItem.RENDERING_MODE_BLACK_BORDER);
    484             } catch (IllegalArgumentException e) {
    485                 flagForException = true;
    486             } catch (IOException e) {
    487                 flagForException = true;
    488             }
    489         }
    490         assertTrue("Media Properties for a WMV File -- Unsupported file type",
    491             flagForException);
    492     }
    493 
    494     /**
    495      *To test media properties for H.264 Main/Advanced profile.
    496      */
    497     @LargeTest
    498     public void testPropertiesH264MainLineProfile() throws Exception {
    499         final String videoItemFilename = INPUT_FILE_PATH
    500             + "H264_MP_960x720_25fps_800kbps_AACLC_48Khz_192Kbps_s_1_17.mp4";
    501         final int aspectRatio = MediaProperties.ASPECT_RATIO_4_3;
    502         final int videoCodecType = MediaProperties.VCODEC_H264;
    503         final int fileType = MediaProperties.FILE_MP4;
    504         final int duration = 77500;
    505         final int videoBitrate = 800000;
    506         final int audioBitrate = 192000;
    507         final int fps = 25;
    508         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    509         final int audioSamplingFrequency = 48000;
    510         final int audioChannel = 2;
    511         final int videoProfile = MediaProperties.H264Profile.H264ProfileMain;
    512         final int videoLevel = MediaProperties.H264Level.H264Level31;
    513         final int width = 960;
    514         final int height = MediaProperties.HEIGHT_720;
    515         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    516 
    517         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    518             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    519 
    520         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    521             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    522             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    523 
    524     }
    525 
    526     /**
    527      *To test Media Properties for non existing file.
    528      */
    529     @LargeTest
    530     public void testPropertiesForNonExsitingFile() throws Exception {
    531         final String videoItemFilename = INPUT_FILE_PATH + "abc.3gp";
    532         boolean flagForException = false;
    533 
    534         try {
    535             new MediaVideoItem(mVideoEditor, "m1", videoItemFilename,
    536                 MediaItem.RENDERING_MODE_BLACK_BORDER);
    537         } catch (IllegalArgumentException e) {
    538             flagForException = true;
    539         } catch (IOException e) {
    540             flagForException = true;
    541         }
    542         assertTrue("Media Properties for non exsisting file", flagForException);
    543      }
    544 
    545     /**
    546      *To test Media Properties for file H264 HD1080
    547      */
    548     @LargeTest
    549     public void testPropertiesH264HD1080WithoutAudio() throws Exception {
    550         final String videoItemFilename = INPUT_FILE_PATH +
    551             "H264_BP_1080x720_30fps_800kbps_1_17.mp4";
    552         final int aspectRatio = MediaProperties.ASPECT_RATIO_3_2;
    553         final int fileType = MediaProperties.FILE_MP4;
    554         final int videoCodecType = MediaProperties.VCODEC_H264;
    555         final int duration = 77366;
    556         final int videoBitrate = 859000;
    557         final int audioBitrate = 0;
    558         final int fps = 30;
    559         final int audioCodecType = -1;
    560         final int audioSamplingFrequency = 0;
    561         final int audioChannel = 0;
    562         final int videoProfile = MediaProperties.H264Profile.H264ProfileBaseline;
    563         final int videoLevel = MediaProperties.H264Level.H264Level13;
    564         final int width = 1080;
    565         final int height = MediaProperties.HEIGHT_720;
    566         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    567 
    568         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    569             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    570 
    571         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    572             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    573             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    574     }
    575 
    576     /**
    577      *To test Media Properties for Image file of JPEG Type
    578      */
    579     @LargeTest
    580     public void testPropertiesVGAImage() throws Exception {
    581         final String imageItemFilename = INPUT_FILE_PATH + "IMG_640x480.jpg";
    582         final int imageItemDuration = 10000;
    583         final int aspectRatio = MediaProperties.ASPECT_RATIO_4_3;
    584         final int fileType = MediaProperties.FILE_JPEG;
    585         final int width = 640;
    586         final int height = MediaProperties.HEIGHT_480;
    587         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    588 
    589         final MediaImageItem mii = mVideoEditorHelper.createMediaItem
    590             (mVideoEditor, "m1", imageItemFilename, imageItemDuration,
    591             renderingMode);
    592         validateImageProperties(aspectRatio, fileType, width, height, mii);
    593     }
    594 
    595     /**
    596      *To test Media Properties for Image file of PNG Type
    597      */
    598     @LargeTest
    599     public void testPropertiesPNG() throws Exception {
    600         final String imageItemFilename = INPUT_FILE_PATH + "IMG_640x480.png";
    601         final int imageItemDuration = 10000;
    602         final int aspectRatio = MediaProperties.ASPECT_RATIO_4_3;
    603         final int fileType = MediaProperties.FILE_PNG;
    604         final int width = 640;
    605         final int height = 480;
    606         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    607         final MediaImageItem mii = mVideoEditorHelper.createMediaItem
    608             (mVideoEditor, "m1", imageItemFilename, imageItemDuration,
    609             renderingMode);
    610         validateImageProperties(aspectRatio, fileType, width, height, mii);
    611     }
    612 
    613     /**
    614      *To test Media Properties for file GIF - Unsupported type
    615      */
    616     @LargeTest
    617     public void testPropertiesGIFFile() throws Exception {
    618 
    619         final String imageItemFilename = INPUT_FILE_PATH + "IMG_640x480.gif";
    620         final int imageItemDuration = 10000;
    621         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    622         boolean flagForException = false;
    623         try {
    624             new MediaImageItem(mVideoEditor, "m1", imageItemFilename,
    625                 imageItemDuration, renderingMode);
    626         } catch (IllegalArgumentException e) {
    627             flagForException = true;
    628         }
    629         assertTrue("Media Properties for a GIF File -- Unsupported file type",
    630             flagForException);
    631     }
    632 
    633     /**
    634      *To test Media Properties for file Text file named as 3GP
    635      */
    636     @LargeTest
    637     public void testPropertiesofDirtyFile() throws Exception {
    638 
    639         final String videoItemFilename = INPUT_FILE_PATH +
    640             "Text_FileRenamedTo3gp.3gp";
    641         boolean flagForException = false;
    642 
    643         try {
    644             new MediaVideoItem(mVideoEditor, "m1", videoItemFilename,
    645                 MediaItem.RENDERING_MODE_BLACK_BORDER);
    646         } catch (IllegalArgumentException e) {
    647             flagForException = true;
    648         }
    649         assertTrue("Media Properties for a Dirty  File ",
    650             flagForException);
    651     }
    652 
    653     /**
    654      *To test Media Properties for file name as NULL
    655      */
    656     @LargeTest
    657     public void testPropertieNULLFile() throws Exception {
    658         final String videoItemFilename = null;
    659         boolean flagForException = false;
    660         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    661         try {
    662             new MediaVideoItem(mVideoEditor, "m1", videoItemFilename,
    663                 renderingMode);
    664         } catch (IllegalArgumentException e) {
    665             flagForException = true;
    666         }
    667         assertTrue("Media Properties for NULL  File ",
    668             flagForException);
    669     }
    670 
    671     /**
    672      *To test Media Properties for file which is of type MPEG2
    673      */
    674     @LargeTest
    675     public void testPropertiesMPEG2File() throws Exception {
    676         final String videoItemFilename = INPUT_FILE_PATH +
    677             "MPEG2_640x480_30fps_192kbps_1_5.mp4";
    678         boolean flagForException = false;
    679         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    680         try {
    681             new MediaVideoItem(mVideoEditor, "m1", videoItemFilename,
    682                 renderingMode);
    683         } catch (IllegalArgumentException e) {
    684             flagForException = true;
    685         }
    686         assertTrue("Media Properties for a MPEG2 File --Unsupported file type",
    687             flagForException);
    688     }
    689 
    690     /**
    691      *To test Media Properties for file without Video only Audio
    692      */
    693     @LargeTest
    694     public void testProperties3GPWithoutVideoMediaItem() throws Exception {
    695         final String audioFilename = INPUT_FILE_PATH +
    696             "AACLC_48KHz_256Kbps_s_1_17.3gp";
    697         boolean flagForException = false;
    698         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    699         try {
    700             new MediaVideoItem(mVideoEditor, "m1", audioFilename,
    701                 renderingMode);
    702         } catch (IllegalArgumentException e) {
    703             flagForException = true;
    704         }
    705         assertTrue("Exception in Creaing Media Video item object without video",
    706             flagForException);
    707     }
    708 
    709     /**
    710      *To test media properties for Audio Track file. (No Video, AAC Audio)
    711      */
    712     @LargeTest
    713     public void testProperties3GPWithoutVideoAudioTrack() throws Exception {
    714 
    715         final String audioFilename = INPUT_FILE_PATH +
    716             "AACLC_44.1kHz_256kbps_s_1_17.mp4";
    717         final int duration = 77554;
    718         final int audioBitrate = 384000;
    719         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    720         final int audioSamplingFrequency = 44100;
    721         final int audioChannel = 2;
    722 
    723         final AudioTrack audioTrack = mVideoEditorHelper.createAudio
    724             (mVideoEditor, "a1", audioFilename);
    725 
    726         validateAudioProperties(audioCodecType, duration, audioSamplingFrequency,
    727             audioChannel, audioBitrate, audioTrack);
    728     }
    729 
    730         /**
    731      *To test media properties for Audio Track file. MP3 file
    732      */
    733     @LargeTest
    734     public void testPropertiesMP3AudioTrack() throws Exception {
    735 
    736         final String audioFilename = INPUT_FILE_PATH +
    737             "MP3_48KHz_128kbps_s_1_17.mp3";
    738         final int duration = 77640;
    739         final int audioBitrate = 128000;
    740         final int audioCodecType = MediaProperties.ACODEC_MP3;
    741         final int audioSamplingFrequency = 48000;
    742         final int audioChannel = 2;
    743 
    744         final AudioTrack audioTrack = mVideoEditorHelper.createAudio
    745             (mVideoEditor, "a1", audioFilename);
    746 
    747         validateAudioProperties(audioCodecType, duration, audioSamplingFrequency,
    748             audioChannel, audioBitrate, audioTrack);
    749     }
    750 }
    751