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     // TODO : Remove TC_MP_001
    134     @LargeTest
    135     public void testPropertiesMPEG4854_480() throws Exception {
    136         final String videoItemFilename = INPUT_FILE_PATH
    137             + "MPEG4_SP_854x480_15fps_256kbps_AACLC_16khz_48kbps_s_0_26.mp4";
    138         final int aspectRatio = MediaProperties.ASPECT_RATIO_16_9;
    139         final int fileType = MediaProperties.FILE_MP4;
    140         final int videoCodecType = MediaProperties.VCODEC_MPEG4;
    141         final int duration = 26933;
    142         final int videoBitrate = 319000;
    143         final int audioBitrate = 48000;
    144         final int fps = 15;
    145         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    146         final int audioSamplingFrequency = 16000;
    147         final int audioChannel = 2;
    148         final int videoProfile = MediaProperties.MPEG4Profile.MPEG4ProfileSimple;
    149         final int videoLevel = MediaProperties.MPEG4Level.MPEG4Level1;
    150         final int width = 854;
    151         final int height = MediaProperties.HEIGHT_480;
    152 
    153         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    154             (mVideoEditor, "m1", videoItemFilename,
    155             MediaItem.RENDERING_MODE_BLACK_BORDER);
    156 
    157         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    158             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    159             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    160     }
    161 
    162 
    163     /**
    164      *To test Media Properties for file MPEG4 WVGA
    165      */
    166     // TODO : Remove TC_MP_002
    167     @LargeTest
    168     public void testPropertiesMPEGWVGA() throws Exception {
    169         final String videoItemFilename = INPUT_FILE_PATH
    170             + "MPEG4_SP_800x480_515kbps_15fps_AMR_NB_8KHz_12.2kbps_m_0_26.mp4";
    171         final int aspectRatio = MediaProperties.ASPECT_RATIO_5_3;
    172         final int fileType = MediaProperties.FILE_MP4;
    173         final int videoCodecType = MediaProperties.VCODEC_MPEG4;
    174         final int duration = 26933;
    175         final int videoBitrate = 384000;
    176         final int audioBitrate = 12800;
    177         final int fps = 15;
    178         final int audioCodecType = MediaProperties.ACODEC_AMRNB;
    179         final int audioSamplingFrequency = 8000;
    180         final int audioChannel = 1;
    181         final int videoProfile = MediaProperties.MPEG4Profile.MPEG4ProfileSimple;
    182         final int videoLevel = MediaProperties.MPEG4Level.MPEG4Level1;
    183         final int width = 800;
    184         final int height = MediaProperties.HEIGHT_480;
    185         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    186 
    187         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    188             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    189 
    190         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    191             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    192             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    193     }
    194 
    195     /**
    196      *To test media properties for MPEG4 720x480 (NTSC) + AAC file.
    197      */
    198     // TODO : Remove TC_MP_003
    199     @LargeTest
    200     public void testPropertiesMPEGNTSC() throws Exception {
    201         final String videoItemFilename = INPUT_FILE_PATH
    202             + "MPEG4_SP_720x480_30fps_280kbps_AACLC_48kHz_161kbps_s_0_26.mp4";
    203         final int aspectRatio = MediaProperties.ASPECT_RATIO_3_2;
    204         final int fileType = MediaProperties.FILE_MP4;
    205         final int videoCodecType = MediaProperties.VCODEC_MPEG4;
    206         final int duration = 26866;
    207         final int videoBitrate = 403000;
    208         final int audioBitrate = 160000;
    209         final int fps = 30;
    210         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    211         final int audioSamplingFrequency = 48000;
    212         final int audioChannel = 2;
    213         final int videoProfile = MediaProperties.MPEG4Profile.MPEG4ProfileSimple;
    214         final int videoLevel = MediaProperties.MPEG4Level.MPEG4Level1;
    215         final int width = 720;
    216         final int height = MediaProperties.HEIGHT_480;
    217         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    218 
    219         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    220             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    221 
    222         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    223             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    224             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    225     }
    226 
    227     /**
    228      *To test Media Properties for file MPEG4 VGA
    229      */
    230     // TODO : Remove TC_MP_004
    231     @LargeTest
    232     public void testPropertiesMPEGVGA() throws Exception {
    233         final String videoItemFilename = INPUT_FILE_PATH
    234             + "MPEG4_SP_640x480_15fps_512kbps_AACLC_48khz_132kbps_s_0_26.mp4";
    235         final int aspectRatio = MediaProperties.ASPECT_RATIO_4_3;
    236         final int fileType = MediaProperties.FILE_MP4;
    237         final int videoCodecType = MediaProperties.VCODEC_MPEG4;
    238         final int duration = 26933;
    239         final int videoBitrate = 533000;
    240         final int audioBitrate = 128000;
    241         final int fps = 15;
    242         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    243         final int audioSamplingFrequency = 48000;
    244         final int audioChannel = 2;
    245         final int videoProfile = MediaProperties.MPEG4Profile.MPEG4ProfileSimple;
    246         final int videoLevel = MediaProperties.MPEG4Level.MPEG4Level1;
    247         final int width = 640;
    248         final int height = MediaProperties.HEIGHT_480;
    249         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    250 
    251         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    252             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    253 
    254         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    255             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    256             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    257     }
    258 
    259     /**
    260      *To test Media Properties for file MPEG4 QCIF
    261      */
    262     // TODO : Remove TC_MP_005
    263     @LargeTest
    264     public void testPropertiesMPEGQCIF() throws Exception {
    265         final String videoItemFilename = INPUT_FILE_PATH
    266             + "MPEG4_SP_176x144_12fps_92kbps_AMRNB_8KHz_12.2kbps_m_0_27.3gp";
    267         final int aspectRatio = MediaProperties.ASPECT_RATIO_11_9;
    268         final int fileType = MediaProperties.FILE_3GP;
    269         final int videoCodecType = MediaProperties.VCODEC_MPEG4;
    270         final int duration = 27000;
    271         final int videoBitrate = 384000;
    272         final int audioBitrate = 12200;
    273         final int fps = 12;
    274         final int audioCodecType = MediaProperties.ACODEC_AMRNB;
    275         final int audioSamplingFrequency = 8000;
    276         final int audioChannel = 1;
    277         final int videoProfile = MediaProperties.MPEG4Profile.MPEG4ProfileSimple;
    278         final int videoLevel = MediaProperties.MPEG4Level.MPEG4Level1;
    279         final int width = 176;
    280         final int height = MediaProperties.HEIGHT_144;
    281         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    282 
    283         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    284             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    285 
    286         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    287             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    288             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    289     }
    290 
    291     /**
    292      *To To test media properties for H263 176x144 (QCIF) + AAC (mono) file.
    293      */
    294     // TODO : Remove TC_MP_006
    295     @LargeTest
    296     public void testPropertiesH263QCIF() throws Exception {
    297         final String videoItemFilename = INPUT_FILE_PATH
    298             + "H263_profile0_176x144_15fps_256kbps_AACLC_16kHz_32kbps_m_0_26.3gp";
    299         final int aspectRatio = MediaProperties.ASPECT_RATIO_11_9;
    300         final int fileType = MediaProperties.FILE_3GP;
    301         final int videoCodecType = MediaProperties.VCODEC_H263;
    302         final int duration = 26933;
    303         final int videoBitrate = 384000;
    304         final int audioBitrate = 64000;
    305         final int fps = 15;
    306         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    307         final int audioSamplingFrequency = 16000;
    308         final int audioChannel = 1;
    309         final int videoProfile = MediaProperties.H263Profile.H263ProfileBaseline;
    310         final int videoLevel = MediaProperties.H263Level.H263Level10;
    311         final int width = 176;
    312         final int height = MediaProperties.HEIGHT_144;
    313         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    314         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    315             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    316 
    317         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    318             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    319             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    320     }
    321 
    322     /**
    323      *To test Media Properties for file H264 VGA
    324      */
    325     // TODO : Remove TC_MP_007
    326     @LargeTest
    327     public void testPropertiesH264VGA() throws Exception {
    328         final String videoItemFilename = INPUT_FILE_PATH
    329             + "H264_BP_640x480_15fps_1200Kbps_AACLC_48KHz_64kps_m_0_27.3gp";
    330         final int aspectRatio = MediaProperties.ASPECT_RATIO_4_3;
    331         final int fileType = MediaProperties.FILE_3GP;
    332         final int videoCodecType = MediaProperties.VCODEC_H264;
    333         final int duration = 77600;
    334         final int videoBitrate = 745000;
    335         final int audioBitrate = 64000;
    336         final int fps = 15;
    337         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    338         final int audioSamplingFrequency = 48000;
    339         final int audioChannel = 2;
    340         final int videoProfile = MediaProperties.H264Profile.H264ProfileBaseline;
    341         final int videoLevel = MediaProperties.H264Level.H264Level13;
    342         final int width = 640;
    343         final int height = MediaProperties.HEIGHT_480;
    344         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    345         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    346             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    347 
    348         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    349             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    350             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    351     }
    352 
    353     /**
    354      *To test Media Properties for file H264 NTSC
    355      */
    356     // TODO : Remove TC_MP_008
    357     @LargeTest
    358     public void testPropertiesH264NTSC() throws Exception {
    359         final String videoItemFilename = INPUT_FILE_PATH
    360             + "H264_BP_720x480_25fps_256kbps_AMRNB_8khz_12.2kbps_m_0_26.mp4";
    361         final int aspectRatio = MediaProperties.ASPECT_RATIO_3_2;
    362         final int fileType = MediaProperties.FILE_MP4;
    363         final int videoCodecType = MediaProperties.VCODEC_H264;
    364         final int duration = 26880;
    365         final int videoBitrate = 244000;
    366         final int audioBitrate = 12200;
    367         final int fps = 25;
    368         final int audioCodecType = MediaProperties.ACODEC_AMRNB;
    369         final int audioSamplingFrequency = 8000;
    370         final int audioChannel = 1;
    371         final int videoProfile = MediaProperties.H264Profile.H264ProfileBaseline;
    372         final int videoLevel = MediaProperties.H264Level.H264Level13;
    373         final int width = 720;
    374         final int height = MediaProperties.HEIGHT_480;
    375         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    376 
    377         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    378             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    379 
    380         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    381             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    382             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    383     }
    384 
    385     /**
    386      *To test media properties for H264 800x480 (WVGA) + AAC file.
    387      */
    388     // TODO : Remove TC_MP_009
    389     @LargeTest
    390     public void testPropertiesH264WVGA() throws Exception {
    391         final String videoItemFilename = INPUT_FILE_PATH +
    392               "H264_BP_800x480_15fps_512kbps_AACLC_24KHz_38Kbps_s_1_17.mp4";
    393         final int aspectRatio = MediaProperties.ASPECT_RATIO_5_3;
    394         final int fileType = MediaProperties.FILE_MP4;
    395         final int videoCodecType = MediaProperties.VCODEC_H264;
    396         final int duration = 77466;
    397         final int videoBitrate = 528000;
    398         final int audioBitrate = 38000;
    399         final int fps = 15;
    400         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    401         final int audioSamplingFrequency = 24000;
    402         final int audioChannel = 2;
    403         final int videoProfile = MediaProperties.H264Profile.H264ProfileBaseline;
    404         final int videoLevel = MediaProperties.H264Level.H264Level13;
    405         final int width = 800;
    406         final int height = MediaProperties.HEIGHT_480;
    407         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    408 
    409         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    410             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    411 
    412         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    413             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    414             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    415     }
    416 
    417     /**
    418      *To test Media Properties for file H264 HD1280
    419      */
    420     // TODO : Remove TC_MP_010
    421     @LargeTest
    422     public void testPropertiesH264HD1280() throws Exception {
    423         final String videoItemFilename = INPUT_FILE_PATH
    424             + "H264_BP_1280x720_15fps_512kbps_AACLC_16khz_48kbps_s_1_17.mp4";
    425         final int aspectRatio = MediaProperties.ASPECT_RATIO_16_9;
    426         final int fileType = MediaProperties.FILE_MP4;
    427         final int videoCodecType = MediaProperties.VCODEC_H264;
    428         final int duration = 77600;
    429         final int videoBitrate = 606000;
    430         final int audioBitrate = 48000;
    431         final int fps = 15;
    432         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    433         final int audioSamplingFrequency = 16000;
    434         final int audioChannel = 2;
    435         final int videoProfile = MediaProperties.H264Profile.H264ProfileBaseline;
    436         final int videoLevel = MediaProperties.H264Level.H264Level13;
    437         final int width = 1280;
    438         final int height = MediaProperties.HEIGHT_720;
    439         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    440 
    441         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    442             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    443 
    444         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    445             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    446             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    447     }
    448 
    449     /**
    450      *To test media properties for H264 1080x720 + AAC file
    451      */
    452     // TODO : Remove TC_MP_011
    453     @LargeTest
    454     public void testPropertiesH264HD1080WithAudio() throws Exception {
    455         final String videoItemFilename = INPUT_FILE_PATH
    456             + "H264_BP_1080x720_30fps_12Mbps_AACLC_44.1khz_64kbps_s_1_17.mp4";
    457         final int aspectRatio = MediaProperties.ASPECT_RATIO_3_2;
    458         final int fileType = MediaProperties.FILE_MP4;
    459         final int videoCodecType = MediaProperties.VCODEC_H264;
    460         final int duration = 77500;
    461         final int videoBitrate = 1190000;
    462         final int audioBitrate = 64000;
    463         final int fps = 10;
    464         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    465         final int audioSamplingFrequency = 44100;
    466         final int audioChannel = 2;
    467         final int videoProfile = MediaProperties.H264Profile.H264ProfileBaseline;
    468         final int videoLevel = MediaProperties.H264Level.H264Level13;
    469         final int width = 1080;
    470         final int height = MediaProperties.HEIGHT_720;
    471         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    472 
    473         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    474             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    475 
    476         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    477             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    478             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    479     }
    480 
    481     /**
    482      *To test Media Properties for file WMV - Unsupported type
    483      */
    484     // TODO : Remove TC_MP_012
    485     @LargeTest
    486     public void testPropertiesWMVFile() throws Exception {
    487         final String videoItemFilename = INPUT_FILE_PATH +
    488             "WMV_V7_640x480_15fps_512Kbps_wma_V9_44khz_48Kbps_s_1_30.wmv";
    489         boolean flagForException = false;
    490         if (MediaProfileReader.getWMVEnable() == false) {
    491             flagForException = true;
    492         } else {
    493             try {
    494                 new MediaVideoItem(mVideoEditor, "m1", videoItemFilename,
    495                     MediaItem.RENDERING_MODE_BLACK_BORDER);
    496             } catch (IllegalArgumentException e) {
    497                 flagForException = true;
    498             } catch (IOException e) {
    499                 flagForException = true;
    500             }
    501         }
    502         assertTrue("Media Properties for a WMV File -- Unsupported file type",
    503             flagForException);
    504     }
    505 
    506     /**
    507      *To test media properties for H.264 Main/Advanced profile.
    508      */
    509     // TODO : Remove TC_MP_013
    510     @LargeTest
    511     public void testPropertiesH264MainLineProfile() throws Exception {
    512         final String videoItemFilename = INPUT_FILE_PATH
    513             + "H264_MP_960x720_25fps_800kbps_AACLC_48Khz_192Kbps_s_1_17.mp4";
    514         final int aspectRatio = MediaProperties.ASPECT_RATIO_4_3;
    515         final int videoCodecType = MediaProperties.VCODEC_H264;
    516         final int fileType = MediaProperties.FILE_MP4;
    517         final int duration = 77500;
    518         final int videoBitrate = 800000;
    519         final int audioBitrate = 192000;
    520         final int fps = 25;
    521         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    522         final int audioSamplingFrequency = 48000;
    523         final int audioChannel = 2;
    524         final int videoProfile = MediaProperties.H264Profile.H264ProfileMain;
    525         final int videoLevel = MediaProperties.H264Level.H264Level31;
    526         final int width = 960;
    527         final int height = MediaProperties.HEIGHT_720;
    528         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    529 
    530         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    531             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    532 
    533         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    534             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    535             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    536 
    537     }
    538 
    539     /**
    540      *To test Media Properties for non existing file.
    541      */
    542     // TODO : Remove TC_MP_014
    543     @LargeTest
    544     public void testPropertiesForNonExsitingFile() throws Exception {
    545         final String videoItemFilename = INPUT_FILE_PATH + "abc.3gp";
    546         boolean flagForException = false;
    547 
    548         try {
    549             new MediaVideoItem(mVideoEditor, "m1", videoItemFilename,
    550                 MediaItem.RENDERING_MODE_BLACK_BORDER);
    551         } catch (IllegalArgumentException e) {
    552             flagForException = true;
    553         } catch (IOException e) {
    554             flagForException = true;
    555         }
    556         assertTrue("Media Properties for non exsisting file", flagForException);
    557      }
    558 
    559     /**
    560      *To test Media Properties for file H264 HD1080
    561      */
    562     // TODO : Remove TC_MP_015
    563     @LargeTest
    564     public void testPropertiesH264HD1080WithoutAudio() throws Exception {
    565         final String videoItemFilename = INPUT_FILE_PATH +
    566             "H264_BP_1080x720_30fps_800kbps_1_17.mp4";
    567         final int aspectRatio = MediaProperties.ASPECT_RATIO_3_2;
    568         final int fileType = MediaProperties.FILE_MP4;
    569         final int videoCodecType = MediaProperties.VCODEC_H264;
    570         final int duration = 77366;
    571         final int videoBitrate = 859000;
    572         final int audioBitrate = 0;
    573         final int fps = 30;
    574         final int audioCodecType = -1;
    575         final int audioSamplingFrequency = 0;
    576         final int audioChannel = 0;
    577         final int videoProfile = MediaProperties.H264Profile.H264ProfileBaseline;
    578         final int videoLevel = MediaProperties.H264Level.H264Level13;
    579         final int width = 1080;
    580         final int height = MediaProperties.HEIGHT_720;
    581         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    582 
    583         final MediaVideoItem mvi = mVideoEditorHelper.createMediaItem
    584             (mVideoEditor, "m1", videoItemFilename, renderingMode);
    585 
    586         validateVideoProperties(aspectRatio, fileType, videoCodecType, duration,
    587             videoBitrate, fps, videoProfile, videoLevel, width, height, audioCodecType,
    588             audioSamplingFrequency, audioChannel, audioBitrate, mvi);
    589     }
    590 
    591     /**
    592      *To test Media Properties for Image file of JPEG Type
    593      */
    594     // TODO : Remove TC_MP_016
    595     @LargeTest
    596     public void testPropertiesVGAImage() throws Exception {
    597         final String imageItemFilename = INPUT_FILE_PATH + "IMG_640x480.jpg";
    598         final int imageItemDuration = 10000;
    599         final int aspectRatio = MediaProperties.ASPECT_RATIO_4_3;
    600         final int fileType = MediaProperties.FILE_JPEG;
    601         final int width = 640;
    602         final int height = MediaProperties.HEIGHT_480;
    603         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    604 
    605         final MediaImageItem mii = mVideoEditorHelper.createMediaItem
    606             (mVideoEditor, "m1", imageItemFilename, imageItemDuration,
    607             renderingMode);
    608         validateImageProperties(aspectRatio, fileType, width, height, mii);
    609     }
    610 
    611     /**
    612      *To test Media Properties for Image file of PNG Type
    613      */
    614     // TODO : Remove TC_MP_017
    615     @LargeTest
    616     public void testPropertiesPNG() throws Exception {
    617         final String imageItemFilename = INPUT_FILE_PATH + "IMG_640x480.png";
    618         final int imageItemDuration = 10000;
    619         final int aspectRatio = MediaProperties.ASPECT_RATIO_4_3;
    620         final int fileType = MediaProperties.FILE_PNG;
    621         final int width = 640;
    622         final int height = 480;
    623         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    624         final MediaImageItem mii = mVideoEditorHelper.createMediaItem
    625             (mVideoEditor, "m1", imageItemFilename, imageItemDuration,
    626             renderingMode);
    627         validateImageProperties(aspectRatio, fileType, width, height, mii);
    628     }
    629 
    630     /**
    631      *To test Media Properties for file GIF - Unsupported type
    632      */
    633     // TODO : Remove TC_MP_018
    634     @LargeTest
    635     public void testPropertiesGIFFile() throws Exception {
    636 
    637         final String imageItemFilename = INPUT_FILE_PATH + "IMG_640x480.gif";
    638         final int imageItemDuration = 10000;
    639         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    640         boolean flagForException = false;
    641         try {
    642             new MediaImageItem(mVideoEditor, "m1", imageItemFilename,
    643                 imageItemDuration, renderingMode);
    644         } catch (IllegalArgumentException e) {
    645             flagForException = true;
    646         }
    647         assertTrue("Media Properties for a GIF File -- Unsupported file type",
    648             flagForException);
    649     }
    650 
    651     /**
    652      *To test Media Properties for file Text file named as 3GP
    653      */
    654     // TODO : Remove TC_MP_019
    655     @LargeTest
    656     public void testPropertiesofDirtyFile() throws Exception {
    657 
    658         final String videoItemFilename = INPUT_FILE_PATH +
    659             "Text_FileRenamedTo3gp.3gp";
    660         boolean flagForException = false;
    661 
    662         try {
    663             new MediaVideoItem(mVideoEditor, "m1", videoItemFilename,
    664                 MediaItem.RENDERING_MODE_BLACK_BORDER);
    665         } catch (IllegalArgumentException e) {
    666             flagForException = true;
    667         }
    668         assertTrue("Media Properties for a Dirty  File ",
    669             flagForException);
    670     }
    671 
    672     /**
    673      *To test Media Properties for file name as NULL
    674      */
    675     // TODO : Remove TC_MP_020
    676     @LargeTest
    677     public void testPropertieNULLFile() throws Exception {
    678         final String videoItemFilename = null;
    679         boolean flagForException = false;
    680         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    681         try {
    682             new MediaVideoItem(mVideoEditor, "m1", videoItemFilename,
    683                 renderingMode);
    684         } catch (IllegalArgumentException e) {
    685             flagForException = true;
    686         }
    687         assertTrue("Media Properties for NULL  File ",
    688             flagForException);
    689     }
    690 
    691     /**
    692      *To test Media Properties for file which is of type MPEG2
    693      */
    694     // TODO : Remove TC_MP_021
    695     @LargeTest
    696     public void testPropertiesMPEG2File() throws Exception {
    697         final String videoItemFilename = INPUT_FILE_PATH +
    698             "MPEG2_640x480_30fps_192kbps_1_5.mp4";
    699         boolean flagForException = false;
    700         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    701         try {
    702             new MediaVideoItem(mVideoEditor, "m1", videoItemFilename,
    703                 renderingMode);
    704         } catch (IllegalArgumentException e) {
    705             flagForException = true;
    706         }
    707         assertTrue("Media Properties for a MPEG2 File --Unsupported file type",
    708             flagForException);
    709     }
    710 
    711     /**
    712      *To test Media Properties TC_MP_023 for file without Video only Audio
    713      */
    714     // TODO : Remove TC_MP_023
    715     @LargeTest
    716     public void testProperties3GPWithoutVideoMediaItem() throws Exception {
    717         final String audioFilename = INPUT_FILE_PATH +
    718             "AACLC_48KHz_256Kbps_s_1_17.3gp";
    719         boolean flagForException = false;
    720         final int renderingMode = MediaItem.RENDERING_MODE_BLACK_BORDER;
    721         try {
    722             new MediaVideoItem(mVideoEditor, "m1", audioFilename,
    723                 renderingMode);
    724         } catch (IllegalArgumentException e) {
    725             flagForException = true;
    726         }
    727         assertTrue("Exception in Creaing Media Video item object without video",
    728             flagForException);
    729     }
    730 
    731     /**
    732      *To test media properties for Audio Track file. (No Video, AAC Audio)
    733      */
    734     // TODO : Remove TC_MP_024
    735     @LargeTest
    736     public void testProperties3GPWithoutVideoAudioTrack() throws Exception {
    737 
    738         final String audioFilename = INPUT_FILE_PATH +
    739             "AACLC_44.1kHz_256kbps_s_1_17.mp4";
    740         final int duration = 77554;
    741         final int audioBitrate = 384000;
    742         final int audioCodecType = MediaProperties.ACODEC_AAC_LC;
    743         final int audioSamplingFrequency = 44100;
    744         final int audioChannel = 2;
    745 
    746         final AudioTrack audioTrack = mVideoEditorHelper.createAudio
    747             (mVideoEditor, "a1", audioFilename);
    748 
    749         validateAudioProperties(audioCodecType, duration, audioSamplingFrequency,
    750             audioChannel, audioBitrate, audioTrack);
    751     }
    752 
    753         /**
    754      *To test media properties for Audio Track file. MP3 file
    755      */
    756     // TODO : Remove TC_MP_025
    757     @LargeTest
    758     public void testPropertiesMP3AudioTrack() throws Exception {
    759 
    760         final String audioFilename = INPUT_FILE_PATH +
    761             "MP3_48KHz_128kbps_s_1_17.mp3";
    762         final int duration = 77640;
    763         final int audioBitrate = 128000;
    764         final int audioCodecType = MediaProperties.ACODEC_MP3;
    765         final int audioSamplingFrequency = 48000;
    766         final int audioChannel = 2;
    767 
    768         final AudioTrack audioTrack = mVideoEditorHelper.createAudio
    769             (mVideoEditor, "a1", audioFilename);
    770 
    771         validateAudioProperties(audioCodecType, duration, audioSamplingFrequency,
    772             audioChannel, audioBitrate, audioTrack);
    773     }
    774 }
    775