Home | History | Annotate | Download | only in data
      1 package com.android.camera.data;
      2 
      3 import android.media.MediaMetadataRetriever;
      4 
      5 import com.android.camera.debug.Log;
      6 
      7 public class VideoRotationMetadataLoader {
      8     private static final Log.Tag TAG = new Log.Tag("VidRotDataLoader");
      9     private static final String ROTATION_KEY = "metadata_video_rotation";
     10     private static final String WIDTH_KEY = "metadata_video_width";
     11     private static final String HEIGHT_KEY = "metadata_video_height";
     12 
     13     private static final String ROTATE_90 = "90";
     14     private static final String ROTATE_270 = "270";
     15 
     16     static boolean isRotated(LocalData localData) {
     17         final String rotation = localData.getMetadata().getString(ROTATION_KEY);
     18         return ROTATE_90.equals(rotation) || ROTATE_270.equals(rotation);
     19     }
     20 
     21     static int getWidth(LocalData localData) {
     22         return localData.getMetadata().getInt(WIDTH_KEY);
     23 
     24     }
     25 
     26     static int getHeight(LocalData localData) {
     27         return localData.getMetadata().getInt(HEIGHT_KEY);
     28     }
     29 
     30     static void loadRotationMetdata(final LocalData data) {
     31         final String path = data.getPath();
     32         MediaMetadataRetriever retriever = new MediaMetadataRetriever();
     33         try {
     34             retriever.setDataSource(path);
     35             String rotation = retriever.extractMetadata(
     36                 MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION);
     37             data.getMetadata().putString(ROTATION_KEY, rotation);
     38 
     39             String val = retriever.extractMetadata(
     40                     MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH);
     41             int width = Integer.parseInt(val);
     42 
     43             data.getMetadata().putInt(WIDTH_KEY, width);
     44 
     45             val = retriever.extractMetadata(
     46                     MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT);
     47             int height = Integer.parseInt(val);
     48 
     49             data.getMetadata().putInt(HEIGHT_KEY, height);
     50         } catch (RuntimeException ex) {
     51             // setDataSource() can cause RuntimeException beyond
     52             // IllegalArgumentException. e.g: data contain *.avi file.
     53             Log.e(TAG, "MediaMetdataRetriever.setDataSource() fail", ex);
     54         }
     55     }
     56 }
     57