package tv.danmaku.media;
import java.util.ArrayList;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
public class MediaResourceGroup implements Parcelable {
private static final String BUNDLE_RES_LIST = "res_list";
private static final int RES_FLAGS__ANY = 0x0;
private static final int RES_FLAGS__NORMAL_URL = 0x1;
private ArrayList<MediaResourceItem> mResourceList;
public MediaResourceGroup() {
mResourceList = new ArrayList<MediaResourceItem>();
}
final public MediaResourceItem getItem() {
return findItem(RES_FLAGS__ANY);
}
final public MediaResourceItem getItem_NormalUrl() {
return findItem(RES_FLAGS__NORMAL_URL);
}
final private MediaResourceItem findItem(int flags) {
if (mResourceList == null || mResourceList.isEmpty())
return null;
for (MediaResourceItem item : mResourceList) {
if (((flags & RES_FLAGS__NORMAL_URL) != 0)
&& !item.isNormalMediaUrl())
continue;
return item;
}
return null;
}
final public boolean hasNormalUrlToPlay() {
return findItem(RES_FLAGS__NORMAL_URL) != null;
}
final public void addIndex_any_membuf(String from, String indexMrl) {
MediaResourceItem item = new MediaResourceItem();
item.mFromTag = from;
item.mTypeTag = MediaResourceItem.TYPE_TAG__ANY;
item.mMrl = indexMrl;
item.mIsIndexMrl = true;
item.mNeedMembuf = true;
mResourceList.add(item);
}
final public void addIndex_flv_membuf(String from, String indexMrl) {
MediaResourceItem item = new MediaResourceItem();
item.mFromTag = from;
item.mTypeTag = MediaResourceItem.TYPE_TAG__FLV;
item.mMrl = indexMrl;
item.mIsIndexMrl = true;
item.mNeedMembuf = true;
mResourceList.add(item);
}
final public void addUrl_any(String from, String url) {
MediaResourceItem item = new MediaResourceItem();
item.mFromTag = from;
item.mTypeTag = MediaResourceItem.TYPE_TAG__ANY;
item.mMrl = url;
mResourceList.add(item);
}
final public void addUrl_hls(String from, String url) {
MediaResourceItem item = new MediaResourceItem();
item.mFromTag = from;
item.mTypeTag = MediaResourceItem.TYPE_TAG__HLS;
item.mMrl = url;
mResourceList.add(item);
}
final public void addUrl_mp4(String from, String url) {
MediaResourceItem item = new MediaResourceItem();
item.mFromTag = from;
item.mTypeTag = MediaResourceItem.TYPE_TAG__MP4;
item.mMrl = url;
mResourceList.add(item);
}
// for Parcelable
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
Bundle bundle = new Bundle();
bundle.putParcelableArrayList(BUNDLE_RES_LIST, mResourceList);
dest.writeBundle(bundle);
}
private MediaResourceGroup(Parcel in) {
Bundle bundle = in
.readBundle(MediaResourceGroup.class.getClassLoader());
mResourceList = bundle.getParcelableArrayList(BUNDLE_RES_LIST);
}
public static final Parcelable.Creator<MediaResourceGroup> CREATOR = new Parcelable.Creator<MediaResourceGroup>() {
public MediaResourceGroup createFromParcel(Parcel in) {
return new MediaResourceGroup(in);
}
public MediaResourceGroup[] newArray(int size) {
return new MediaResourceGroup[size];
}
};
}