am 068b41d5: Merge "Publish MediaMetadataRetriever.java as public API" into honeycomb
* commit '068b41d5d41a4a78c96586b85ea89d464d302548': Publish MediaMetadataRetriever.java as public API
This commit is contained in:
@@ -29,7 +29,6 @@ import java.io.IOException;
|
||||
/**
|
||||
* MediaMetadataRetriever class provides a unified interface for retrieving
|
||||
* frame and meta data from an input media file.
|
||||
* {@hide}
|
||||
*/
|
||||
public class MediaMetadataRetriever
|
||||
{
|
||||
@@ -48,30 +47,6 @@ public class MediaMetadataRetriever
|
||||
native_setup();
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this method before setDataSource() so that the mode becomes
|
||||
* effective for subsequent operations. This method can be called only once
|
||||
* at the beginning if the intended mode of operation for a
|
||||
* MediaMetadataRetriever object remains the same for its whole lifetime,
|
||||
* and thus it is unnecessary to call this method each time setDataSource()
|
||||
* is called. If this is not never called (which is allowed), by default the
|
||||
* intended mode of operation is to both capture frame and retrieve meta
|
||||
* data (i.e., MODE_GET_METADATA_ONLY | MODE_CAPTURE_FRAME_ONLY).
|
||||
* Often, this may not be what one wants, since doing this has negative
|
||||
* performance impact on execution time of a call to setDataSource(), since
|
||||
* both types of operations may be time consuming.
|
||||
*
|
||||
* @param mode The intended mode of operation. Can be any combination of
|
||||
* MODE_GET_METADATA_ONLY and MODE_CAPTURE_FRAME_ONLY:
|
||||
* 1. MODE_GET_METADATA_ONLY & MODE_CAPTURE_FRAME_ONLY:
|
||||
* For neither frame capture nor meta data retrieval
|
||||
* 2. MODE_GET_METADATA_ONLY: For meta data retrieval only
|
||||
* 3. MODE_CAPTURE_FRAME_ONLY: For frame capture only
|
||||
* 4. MODE_GET_METADATA_ONLY | MODE_CAPTURE_FRAME_ONLY:
|
||||
* For both frame capture and meta data retrieval
|
||||
*/
|
||||
public native void setMode(int mode);
|
||||
|
||||
/**
|
||||
* Sets the data source (file pathname) to use. Call this
|
||||
* method before the rest of the methods in this class. This method may be
|
||||
@@ -199,15 +174,15 @@ public class MediaMetadataRetriever
|
||||
* that the implementation considers as representative may be returned.
|
||||
*
|
||||
* @param option a hint on how the frame is found. Use
|
||||
* {@link OPTION_PREVIOUS_SYNC} if one wants to retrieve a sync frame
|
||||
* {@link #OPTION_PREVIOUS_SYNC} if one wants to retrieve a sync frame
|
||||
* that has a timestamp earlier than or the same as timeUs. Use
|
||||
* {@link OPTION_NEXT_SYNC} if one wants to retrieve a sync frame
|
||||
* {@link #OPTION_NEXT_SYNC} if one wants to retrieve a sync frame
|
||||
* that has a timestamp later than or the same as timeUs. Use
|
||||
* {@link OPTION_CLOSEST_SYNC} if one wants to retrieve a sync frame
|
||||
* {@link #OPTION_CLOSEST_SYNC} if one wants to retrieve a sync frame
|
||||
* that has a timestamp closest to or the same as timeUs. Use
|
||||
* {@link OPTION_CLOSEST} if one wants to retrieve a frame that may
|
||||
* {@link #OPTION_CLOSEST} if one wants to retrieve a frame that may
|
||||
* or may not be a sync frame but is closest to or the same as timeUs.
|
||||
* {@link OPTION_CLOSEST} often has larger performance overhead compared
|
||||
* {@link #OPTION_CLOSEST} often has larger performance overhead compared
|
||||
* to the other options if there is no sync frame located at timeUs.
|
||||
*
|
||||
* @return A Bitmap containing a representative video frame, which
|
||||
@@ -228,7 +203,7 @@ public class MediaMetadataRetriever
|
||||
* and returns it as a bitmap. This is useful for generating a thumbnail
|
||||
* for an input data source. Call this method if one does not care
|
||||
* how the frame is found as long as it is close to the given time;
|
||||
* otherwise, please call {@link getFrameAtTime(long, int)}.
|
||||
* otherwise, please call {@link #getFrameAtTime(long, int)}.
|
||||
*
|
||||
* @param timeUs The time position where the frame will be retrieved.
|
||||
* When retrieving the frame at the given time position, there is no
|
||||
@@ -252,7 +227,7 @@ public class MediaMetadataRetriever
|
||||
* and returns it as a bitmap. This is useful for generating a thumbnail
|
||||
* for an input data source. Call this method if one does not
|
||||
* care about where the frame is located; otherwise, please call
|
||||
* {@link getFrameAtTime(long)} or {@link getFrameAtTime(long, int)}
|
||||
* {@link #getFrameAtTime(long)} or {@link #getFrameAtTime(long, int)}
|
||||
*
|
||||
* @return A Bitmap containing a representative video frame, which
|
||||
* can be null, if such a frame cannot be retrieved.
|
||||
@@ -269,8 +244,8 @@ public class MediaMetadataRetriever
|
||||
|
||||
/**
|
||||
* Call this method after setDataSource(). This method finds the optional
|
||||
* graphic or album art associated (embedded or external url linked) the
|
||||
* related data source.
|
||||
* graphic or album art associated associated with the data source. If
|
||||
* there are more than one pictures, (any) one of them is returned.
|
||||
*
|
||||
* @return null if no such graphic is found.
|
||||
*/
|
||||
@@ -299,52 +274,129 @@ public class MediaMetadataRetriever
|
||||
}
|
||||
}
|
||||
|
||||
public static final int MODE_GET_METADATA_ONLY = 0x01;
|
||||
public static final int MODE_CAPTURE_FRAME_ONLY = 0x02;
|
||||
|
||||
/**
|
||||
* Option used in method {@link getFrameAtTime(long, int)} to get a
|
||||
* Option used in method {@link #getFrameAtTime(long, int)} to get a
|
||||
* frame at a specified location.
|
||||
*
|
||||
* @see #getFrameAtTime(long, int)
|
||||
*/
|
||||
/* Do not change these values without updating their counterparts
|
||||
/* Do not change these option values without updating their counterparts
|
||||
* in include/media/stagefright/MediaSource.h!
|
||||
*/
|
||||
/**
|
||||
* This option is used with {@link #getFrameAtTime(long, int)} to retrieve
|
||||
* a sync (or key) frame associated with a data source that is located
|
||||
* right before or at the given time.
|
||||
*
|
||||
* @see #getFrameAtTime(long, int)
|
||||
*/
|
||||
public static final int OPTION_PREVIOUS_SYNC = 0x00;
|
||||
/**
|
||||
* This option is used with {@link #getFrameAtTime(long, int)} to retrieve
|
||||
* a sync (or key) frame associated with a data source that is located
|
||||
* right after or at the given time.
|
||||
*
|
||||
* @see #getFrameAtTime(long, int)
|
||||
*/
|
||||
public static final int OPTION_NEXT_SYNC = 0x01;
|
||||
/**
|
||||
* This option is used with {@link #getFrameAtTime(long, int)} to retrieve
|
||||
* a sync (or key) frame associated with a data source that is located
|
||||
* closest to (in time) or at the given time.
|
||||
*
|
||||
* @see #getFrameAtTime(long, int)
|
||||
*/
|
||||
public static final int OPTION_CLOSEST_SYNC = 0x02;
|
||||
/**
|
||||
* This option is used with {@link #getFrameAtTime(long, int)} to retrieve
|
||||
* a frame (not necessarily a key frame) associated with a data source that
|
||||
* is located closest to or at the given time.
|
||||
*
|
||||
* @see #getFrameAtTime(long, int)
|
||||
*/
|
||||
public static final int OPTION_CLOSEST = 0x03;
|
||||
|
||||
/*
|
||||
* Do not change these values without updating their counterparts
|
||||
* in include/media/mediametadataretriever.h!
|
||||
* Do not change these metadata key values without updating their
|
||||
* counterparts in include/media/mediametadataretriever.h!
|
||||
*/
|
||||
/**
|
||||
* The metadata key to retrieve the numberic string describing the
|
||||
* order of the audio data source on its original recording.
|
||||
*/
|
||||
public static final int METADATA_KEY_CD_TRACK_NUMBER = 0;
|
||||
/**
|
||||
* The metadata key to retrieve the information about the album title
|
||||
* of the data source.
|
||||
*/
|
||||
public static final int METADATA_KEY_ALBUM = 1;
|
||||
/**
|
||||
* The metadata key to retrieve the information about the artist of
|
||||
* the data source.
|
||||
*/
|
||||
public static final int METADATA_KEY_ARTIST = 2;
|
||||
/**
|
||||
* The metadata key to retrieve the information about the author of
|
||||
* the data source.
|
||||
*/
|
||||
public static final int METADATA_KEY_AUTHOR = 3;
|
||||
/**
|
||||
* The metadata key to retrieve the information about the composer of
|
||||
* the data source.
|
||||
*/
|
||||
public static final int METADATA_KEY_COMPOSER = 4;
|
||||
/**
|
||||
* The metadata key to retrieve the date when the data source was created
|
||||
* or modified.
|
||||
*/
|
||||
public static final int METADATA_KEY_DATE = 5;
|
||||
/**
|
||||
* The metadata key to retrieve the content type or genre of the data
|
||||
* source.
|
||||
*/
|
||||
public static final int METADATA_KEY_GENRE = 6;
|
||||
/**
|
||||
* The metadata key to retrieve the data source title.
|
||||
*/
|
||||
public static final int METADATA_KEY_TITLE = 7;
|
||||
/**
|
||||
* The metadata key to retrieve the year when the data source was created
|
||||
* or modified.
|
||||
*/
|
||||
public static final int METADATA_KEY_YEAR = 8;
|
||||
/**
|
||||
* The metadata key to retrieve the playback duration of the data source.
|
||||
*/
|
||||
public static final int METADATA_KEY_DURATION = 9;
|
||||
/**
|
||||
* The metadata key to retrieve the number of tracks, such as audio, video,
|
||||
* text, in the data source, such as a mp4 or 3gpp file.
|
||||
*/
|
||||
public static final int METADATA_KEY_NUM_TRACKS = 10;
|
||||
public static final int METADATA_KEY_IS_DRM_CRIPPLED = 11;
|
||||
public static final int METADATA_KEY_CODEC = 12;
|
||||
public static final int METADATA_KEY_RATING = 13;
|
||||
public static final int METADATA_KEY_COMMENT = 14;
|
||||
public static final int METADATA_KEY_COPYRIGHT = 15;
|
||||
public static final int METADATA_KEY_BIT_RATE = 16;
|
||||
public static final int METADATA_KEY_FRAME_RATE = 17;
|
||||
public static final int METADATA_KEY_VIDEO_FORMAT = 18;
|
||||
public static final int METADATA_KEY_VIDEO_HEIGHT = 19;
|
||||
public static final int METADATA_KEY_VIDEO_WIDTH = 20;
|
||||
public static final int METADATA_KEY_WRITER = 21;
|
||||
public static final int METADATA_KEY_MIMETYPE = 22;
|
||||
public static final int METADATA_KEY_DISCNUMBER = 23;
|
||||
public static final int METADATA_KEY_ALBUMARTIST = 24;
|
||||
public static final int METADATA_KEY_COMPILATION = 25;
|
||||
/**
|
||||
* The metadata key to retrieve the information of the writer (such as
|
||||
* lyricist) of the data source.
|
||||
*/
|
||||
public static final int METADATA_KEY_WRITER = 11;
|
||||
/**
|
||||
* The metadata key to retrieve the mime type of the data source. Some
|
||||
* example mime types include: "video/mp4", "audio/mp4", "audio/amr-wb",
|
||||
* etc.
|
||||
*/
|
||||
public static final int METADATA_KEY_MIMETYPE = 12;
|
||||
/**
|
||||
* The metadata key to retrieve the information about the performers or
|
||||
* artist associated with the data source.
|
||||
*/
|
||||
public static final int METADATA_KEY_ALBUMARTIST = 13;
|
||||
/**
|
||||
* The metadata key to retrieve the numberic string that describes which
|
||||
* part of a set the audio data source comes from.
|
||||
*/
|
||||
public static final int METADATA_KEY_DISC_NUMBER = 14;
|
||||
/**
|
||||
* The metadata key to retrieve the music album compilation status.
|
||||
*/
|
||||
public static final int METADATA_KEY_COMPILATION = 15;
|
||||
// Add more here...
|
||||
}
|
||||
|
||||
@@ -146,7 +146,6 @@ public class ThumbnailUtils {
|
||||
Bitmap bitmap = null;
|
||||
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
|
||||
try {
|
||||
retriever.setMode(MediaMetadataRetriever.MODE_CAPTURE_FRAME_ONLY);
|
||||
retriever.setDataSource(filePath);
|
||||
bitmap = retriever.getFrameAtTime(-1);
|
||||
} catch (IllegalArgumentException ex) {
|
||||
|
||||
Reference in New Issue
Block a user