/* * @(#)StreamInfo * * Copyright (c) 2005-2008 by dvb.matt, All Rights Reserved. * * This file is part of ProjectX, a free Java based demux utility. * By the authors, ProjectX is intended for educational purposes only, * as a non-commercial test project. * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ package net.sourceforge.dvb.projectx.xinput; import net.sourceforge.dvb.projectx.common.Resource; import net.sourceforge.dvb.projectx.common.Keys; /** * */ public class StreamInfo extends Object { private Object[] videostreams; private Object[] audiostreams; private Object[] teletextstreams; private Object[] subpicturestreams; private String file_name; private String file_date; private String file_size; private String file_type; private String file_location; private String file_playtime; private String file_source; private String additionals; private int streamtype; private Object[] pids; private byte[] videoheader; private int[] thumbnail; private long scanposition = 0; private String line_separator = System.getProperty("line.separator"); /** * */ public StreamInfo() { setStreamInfo("", "", "", "", "", "", ""); } /** * */ public StreamInfo(String _file_source, String _file_type, String _file_name, String _file_location, String _file_date, String _file_size, String _file_playtime) { setStreamInfo(_file_source, _file_type, _file_name, _file_location, _file_date, _file_size, _file_playtime); } /** * */ public StreamInfo(String _file_source, String _file_type, String _file_name, String _file_location, String _file_date, String _file_size, String _file_playtime, Object[] _videostreams, Object[] _audiostreams, Object[] _teletextstreams, Object[] _subpicturestreams) { setStreamInfo(_file_source, _file_type, _file_name, _file_location, _file_date, _file_size, _file_playtime, _videostreams, _audiostreams, _teletextstreams, _subpicturestreams); } /** * */ public StreamInfo(int _streamtype, String _file_source, String _file_type, String _file_name, String _file_location, String _file_date, String _file_size, String _file_playtime, Object[] _videostreams, Object[] _audiostreams, Object[] _teletextstreams, Object[] _subpicturestreams, Object[] _pids, byte[] _videoheader, int[] _thumbnail) { streamtype = _streamtype; pids = _pids; videoheader = _videoheader; thumbnail = _thumbnail; setStreamInfo(_file_source, _file_type, _file_name, _file_location, _file_date, _file_size, _file_playtime, _videostreams, _audiostreams, _teletextstreams, _subpicturestreams); } /** * */ public void setStreamInfo(String _file_source, String _file_type, String _file_name, String _file_location, String _file_date, String _file_size, String _file_playtime) { setStreamInfo(_file_source, _file_type, _file_name, _file_location, _file_date, _file_size, _file_playtime, null, null, null, null); } /** * */ public void setStreamInfo(String _file_source, String _file_type, String _file_name, String _file_location, String _file_date, String _file_size, String _file_playtime, Object[] _videostreams, Object[] _audiostreams, Object[] _teletextstreams, Object[] _subpicturestreams) { videostreams = _videostreams; audiostreams = _audiostreams; teletextstreams = _teletextstreams; subpicturestreams = _subpicturestreams; file_name = _file_name; file_date = _file_date; file_size = _file_size; file_type = _file_type; file_location = _file_location; file_playtime = _file_playtime; file_source = _file_source; } /** * */ public int[] getThumbnail() { return thumbnail; } /** * */ public void setThumbnail(int[] pic) { thumbnail = new int[pic.length]; System.arraycopy(pic, 0, thumbnail, 0, pic.length); } /** * */ public String getFileName() { return file_name; } /** * */ public String getFileSourceBase() { return file_source; } /** * */ public String getFileSource() { return "[" + getFileSourceBase() + "]"; } /** * */ public String getFileSourceAndName() { return getFileSource() + " - " + getFileName(); } /** * */ public String getFileDate() { return file_date; } /** * */ public String getFileSize() { return file_size; } /** * */ public String getFileType() { return file_type; } /** * */ public String getFileLocation() { return file_location; } /** * */ public String getPlaytime() { return file_playtime; } /** * */ public Object[] getVideoStreams() { return videostreams; } /** * */ public Object[] getAudioStreams() { return audiostreams; } /** * */ public Object[] getTeletextStreams() { return teletextstreams; } /** * */ public Object[] getSubpictureStreams() { return subpicturestreams; } /** * */ public String getVideo() { return getString(getVideoStreams()); } /** * */ public String getAudio() { return getString(getAudioStreams()); } /** * */ public String getTeletext() { return getString(getTeletextStreams()); } /** * */ public String getSubpicture() { return getString(getSubpictureStreams()); } /** * */ public String getAdditionals() { return additionals; } /** * */ private String getString(Object[] obj) { String str = ""; if (obj == null || obj.length == 0) return "n/a"; str = obj[0].toString(); for (int i = 1; i < obj.length; i++) str += line_separator + obj[i].toString(); return str; } /** * */ public String getFullInfo() { String str = ""; str += Resource.getString("ScanInfo.Location") + line_separator; str += getFileSource() + " @ " + getFileLocation() + line_separator; str += Resource.getString("ScanInfo.Name") + line_separator; str += getFileName() + line_separator; str += Resource.getString("ScanInfo.Size") + line_separator; str += getFileSize() + line_separator; str += Resource.getString("ScanInfo.Date") + line_separator; str += getFileDate() + line_separator; str += line_separator; str += Resource.getString("ScanInfo.Type") + line_separator; str += getFileType() + line_separator; str += Resource.getString("ScanInfo.Video") + line_separator; str += getVideo() + line_separator; str += Resource.getString("ScanInfo.Audio") + line_separator; str += getAudio() + line_separator; str += Resource.getString("ScanInfo.Teletext") + line_separator; str += getTeletext() + line_separator; str += Resource.getString("ScanInfo.Subpicture") + line_separator; str += getSubpicture() + line_separator; str += Resource.getString("ScanInfo.Playtime") + line_separator; str += getPlaytime(); return str; } /** * */ public long getScanPosition() { return scanposition; } /** * */ public void setScanPosition(long value) { scanposition = value; } /** * */ public void setStreamType(int _streamtype) { streamtype = _streamtype; file_type = Keys.ITEMS_FileTypes[getStreamType()].toString(); } /** * */ public void setStreamType(int _streamtype, String str) { streamtype = _streamtype; file_type = "[" + getStreamSubType() + "] " + Keys.ITEMS_FileTypes[getStreamType()].toString() + " " + str; } /** * */ public int getStreamType() { return (0xFF & streamtype); } /** * */ public int getStreamSubType() { return (0xFF & streamtype>>>8); } /** * */ public int getStreamFullType() { return streamtype; } /** * */ public void setPIDs(Object[] _pids) { pids = _pids; } /** * */ public int[] getPIDs() { int len = pids == null ? 0 : pids.length; int[] array = new int[len]; for (int i = 0; i < len; i++) array[i] = Integer.parseInt(pids[i].toString()); return array; } /** * */ public int[] getMediaPIDs() { int len = pids == null || pids.length == 0 ? 0 : pids.length - 1; int[] array = new int[len]; for (int i = 0; i < len; i++) array[i] = Integer.parseInt(pids[1 + i].toString()); return array; } /** * */ public void setVideoHeader(byte[] _videoheader) { if (_videoheader == null) videoheader = null; else { videoheader = new byte[12]; System.arraycopy(_videoheader, 0, videoheader, 0, _videoheader.length); } } /** * */ public byte[] getVideoHeader() { return videoheader; } /** * */ private Object[] copyContent(Object[] _obj) { if (_obj == null) return null; Object[] obj = new Object[_obj.length]; System.arraycopy(_obj, 0, obj, 0, obj.length); return obj; } /** * */ private byte[] copyContent(byte[] _array) { if (_array == null) return null; byte[] array = new byte[_array.length]; System.arraycopy(_array, 0, array, 0, array.length); return array; } /** * */ private int[] copyContent(int[] _array) { if (_array == null) return null; int[] array = new int[_array.length]; System.arraycopy(_array, 0, array, 0, array.length); return array; } /** * */ public StreamInfo getNewInstance() { return new StreamInfo(streamtype, file_source, file_type, file_name, file_location, file_date, file_size, file_playtime, copyContent(videostreams), copyContent(audiostreams), copyContent(teletextstreams), copyContent(subpicturestreams), copyContent(pids), copyContent(videoheader), copyContent(thumbnail)); } }