/*
* @(#)JobProcessing.java - used by a collection when processing it
*
* Copyright (c) 2005 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.common;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Hashtable;
import net.sourceforge.dvb.projectx.parser.Gop;
import net.sourceforge.dvb.projectx.parser.GopArray;
import net.sourceforge.dvb.projectx.thirdparty.D2V;
import net.sourceforge.dvb.projectx.thirdparty.Chapters;
/**
* saves all stuff of a collection process
*/
public class JobProcessing extends Object {
private Gop gop;
private GopArray gop_array;
private D2V d2v;
private Chapters chapters;
private List TSPidlist;
private List PVAPidlist;
private List TSdemuxlist;
private List PVAdemuxlist;
private List VDRdemuxlist;
private List PESdemuxlist;
private List TempFileList;
private List InfoAtEnd;
private List CellTimesList;
//
private Hashtable StreamObjects;
private Object[] AudioStreamInfo;
//
private int[] stream_number;
private int[] clv;
private int SourceVideoFrameNumber;
private int ExportedVideoFrameNumber;
private int FileNumber;
private int NoOfAudio;
private int NoOfPictures;
private int NoOfTTX;
private int MinBitrateValue;
private int MaxBitrateValue;
private int SplitPartNumber;
private boolean newvideo;
private boolean PureVideo;
private boolean hasSequenceHeader;
private boolean SplitLoopActive;
private boolean runningFromCLI;
private String[] VBASIC;
private String savedOutputDirectory;
private long firstVideoPTS;
private long CUT_BYTEPOSITION;
private long pva_videopts;
private long fakedPTS;
private long LastHeader_BytePosition;
private long NextFileStartPts;
private long CutComparePoint;
private long VideoExportTimeCounter;
private long VideoExportTimeSummary;
private long LastGopTimecode;
private long LastGopPts;
private long FirstAudioPts;
private long LastSimplifiedPts;
private long EndPtsOfGop;
private long ProjectFileExportLength;
private long MediaFilesExportLength;
private long AllMediaFilesExportLength;
private long SplitPartSize;
private long ProjectFileSplitSize;
/**
*
*/
public JobProcessing(JobCollection collection, boolean b, String str)
{
runningFromCLI = b;
savedOutputDirectory = str;
startProcessing(collection);
}
/**
* init the process and all variables
*/
private void startProcessing(JobCollection collection)
{
TSPidlist = new ArrayList();
PVAPidlist = new ArrayList();
TSdemuxlist = new ArrayList();
PVAdemuxlist = new ArrayList();
VDRdemuxlist = new ArrayList();
PESdemuxlist = new ArrayList();
TempFileList = new ArrayList();
InfoAtEnd = new ArrayList();
CellTimesList = new ArrayList();
//
StreamObjects = new Hashtable();
//
clv = new int[10];
stream_number = new int[10];
gop = new Gop(collection);
gop_array = new GopArray();
d2v = new D2V();
chapters = new Chapters();
SourceVideoFrameNumber = 0;
ExportedVideoFrameNumber = 0;
FileNumber = 0;
newvideo = true;
firstVideoPTS = -1;
PureVideo = false;
VBASIC = new String[5];
CUT_BYTEPOSITION = 0;
hasSequenceHeader = true;
pva_videopts = -1;
NoOfAudio = 0;
NoOfPictures = 0;
NoOfTTX = 0;
fakedPTS = -1;
LastHeader_BytePosition = 0;
NextFileStartPts = 0;
CutComparePoint = 0;
VideoExportTimeCounter = 0;
VideoExportTimeSummary = 0;
LastGopTimecode = 0;
LastGopPts = 0;
FirstAudioPts = 0;
SplitLoopActive = true;
MinBitrateValue = 262143;
MaxBitrateValue = 0;
LastSimplifiedPts = 0;
SplitPartNumber = 0;
SplitPartSize = 0;
EndPtsOfGop = 0;
ProjectFileSplitSize = 0;
ProjectFileExportLength = 0;
MediaFilesExportLength = 0;
AllMediaFilesExportLength = 0;
}
/**
* finish the process and all objects
*/
public void finishProcessing()
{
TSPidlist = null;
PVAPidlist = null;
TSdemuxlist = null;
PVAdemuxlist = null;
VDRdemuxlist = null;
PESdemuxlist = null;
TempFileList = null;
InfoAtEnd = null;
CellTimesList = null;
clv = null;
stream_number = null;
//
StreamObjects = null;
//
gop = null;
gop_array = null;
d2v = null;
chapters = null;
VBASIC = null;
}
/**
*
*/
public boolean isRunningFromCLI()
{
return runningFromCLI;
}
/**
*
*/
public List getTSPidList()
{
return TSPidlist;
}
/**
*
*/
public List getPVAPidList()
{
return PVAPidlist;
}
/**
*
*/
public List getTSDemuxList()
{
return TSdemuxlist;
}
/**
*
*/
public List getPVADemuxList()
{
return PVAdemuxlist;
}
/**
*
*/
public List getPrimaryPESDemuxList()
{
return PESdemuxlist;
}
/**
*
*/
public List getSecondaryPESDemuxList()
{
return PESdemuxlist;
}
/**
*
*/
public List getTemporaryFileList()
{
return TempFileList;
}
/**
*
*/
public List getSummaryInfo()
{
return InfoAtEnd;
}
/**
*
*/
public void clearSummaryInfo()
{
InfoAtEnd.clear();
}
/**
*
*/
public void addSummaryInfo(String str)
{
InfoAtEnd.add(str);
}
/**
*
*/
public List getCellTimes()
{
return CellTimesList;
}
/**
*
*/
public void addCellTime(String str)
{
CellTimesList.add(str);
}
/**
*
*/
public void addCellTime(int value)
{
addCellTime(String.valueOf(value));
}
/**
*
*/
public int[] getStatusVariables()
{
return clv;
}
/**
*
*/
public void clearStatusVariables()
{
Arrays.fill(clv, 0);
}
/**
*
*/
public int[] getStreamNumbers()
{
return stream_number;
}
/**
*
*/
public void clearStreamNumbers()
{
Arrays.fill(stream_number, 0);
}
/**
*
*/
public String[] getStatusStrings()
{
return VBASIC;
}
/**
*
*/
public void clearStatusStrings()
{
Arrays.fill(VBASIC, null);
}
/**
*
*/
public Gop getGop()
{
return gop;
}
/**
*
*/
public D2V getProjectFileD2V()
{
return d2v;
}
/**
*
*/
public Chapters getChapters()
{
return chapters;
}
/**
*
*/
public void setSourceVideoFrameNumber(int val)
{
SourceVideoFrameNumber = val;
}
/**
*
*/
public int countSourceVideoFrameNumber(int val)
{
SourceVideoFrameNumber += val;
return SourceVideoFrameNumber;
}
/**
*
*/
public int getSourceVideoFrameNumber()
{
return SourceVideoFrameNumber;
}
/**
*
*/
public void setFileNumber(int val)
{
FileNumber = val;
}
/**
*
*/
public int countFileNumber(int val)
{
FileNumber += val;
return FileNumber;
}
/**
*
*/
public int getFileNumber()
{
return FileNumber;
}
/**
*
*/
public boolean isNewVideoStream()
{
return newvideo;
}
/**
*
*/
public void setNewVideoStream(boolean b)
{
newvideo = b;
}
/**
*
*/
public long get1stVideoPTS()
{
return firstVideoPTS;
}
/**
*
*/
public void set1stVideoPTS(long val)
{
firstVideoPTS = val;
}
/**
*
*/
public boolean hasElementaryVideoStream()
{
return PureVideo;
}
/**
*
*/
public void setElementaryVideoStream(boolean b)
{
PureVideo = b;
}
/**
*
*/
public long getCutByteposition()
{
return CUT_BYTEPOSITION;
}
/**
*
*/
public void setCutByteposition(long val)
{
CUT_BYTEPOSITION = val;
}
/**
*
*/
public boolean hasSequenceHeader()
{
return hasSequenceHeader;
}
/**
*
*/
public void setSequenceHeader(boolean b)
{
hasSequenceHeader = b;
}
/**
*
*/
public GopArray getGopArray()
{
return gop_array;
}
/**
*
*/
public long getPvaVideoPts()
{
return pva_videopts;
}
/**
*
*/
public void setPvaVideoPts(long val)
{
pva_videopts = val;
}
/**
*
*/
public void clearSubStreamCounters()
{
NoOfAudio = 0;
NoOfPictures = 0;
NoOfTTX = 0;
}
/**
*
*/
public int countAudioStream()
{
return (NoOfAudio++);
}
/**
*
*/
public int countPictureStream()
{
return (NoOfPictures++);
}
/**
*
*/
public int countTeletextStream()
{
return (NoOfTTX++);
}
/**
*
*/
public long getBorrowedPts()
{
return fakedPTS;
}
/**
*
*/
public void setBorrowedPts(long val)
{
fakedPTS = val;
}
/**
*
*/
public long getLastHeaderBytePosition()
{
return LastHeader_BytePosition;
}
/**
*
*/
public void setLastHeaderBytePosition(long val)
{
LastHeader_BytePosition = val;
}
/**
*
*/
public long getNextFileStartPts()
{
return NextFileStartPts;
}
/**
*
*/
public void setNextFileStartPts(long val)
{
NextFileStartPts = val;
}
/**
*
*/
public long getCutComparePoint()
{
return CutComparePoint;
}
/**
*
*/
public void setCutComparePoint(long val)
{
CutComparePoint = val;
}
/**
*
*/
public void setVideoExportTime(long val)
{
VideoExportTimeCounter = val;
}
/**
*
*/
public long countVideoExportTime(long val)
{
VideoExportTimeCounter += val;
return VideoExportTimeCounter;
}
/**
*
*/
public long getVideoExportTime()
{
return VideoExportTimeCounter;
}
/**
*
*/
public void setVideoExportTimeSummary(long val)
{
VideoExportTimeSummary = val;
}
/**
*
*/
public long countVideoExportTimeSummary(long val)
{
VideoExportTimeSummary += val;
return VideoExportTimeSummary;
}
/**
*
*/
public long getVideoExportTimeSummary()
{
return VideoExportTimeSummary;
}
/**
*
*/
public void setLastGopTimecode(long val)
{
LastGopTimecode = val;
}
/**
*
*/
public long countLastGopTimecode(long val)
{
LastGopTimecode += val;
return LastGopTimecode;
}
/**
*
*/
public long getLastGopTimecode()
{
return LastGopTimecode;
}
/**
*
*/
public void setLastGopPts(long val)
{
LastGopPts = val;
}
/**
*
*/
public long getLastGopPts()
{
return LastGopPts;
}
/**
*
*/
public void setFirstAudioPts(long val)
{
FirstAudioPts = val;
}
/**
*
*/
public long getFirstAudioPts()
{
return FirstAudioPts;
}
/**
*
*/
public void setSplitLoopActive(boolean b)
{
SplitLoopActive = b;
}
/**
*
*/
public boolean isSplitLoopActive()
{
return SplitLoopActive;
}
/**
* determined bitrates
*/
public void setMinBitrate(int val)
{
MinBitrateValue = val;
}
/**
* determined bitrates
*/
public int getMinBitrate()
{
return MinBitrateValue;
}
/**
* determined bitrates
*/
public void setMaxBitrate(int val)
{
MaxBitrateValue = val;
}
/**
* determined bitrates
*/
public int getMaxBitrate()
{
return MaxBitrateValue;
}
/**
* pts build from video es
*/
public void setLastSimplifiedPts(long val)
{
LastSimplifiedPts = val;
}
/**
* pts build from video es
*/
public long getLastSimplifiedPts()
{
return LastSimplifiedPts;
}
/**
*
*/
public void setSplitPart(int val)
{
SplitPartNumber = val;
}
/**
*
*/
public int getSplitPart()
{
return SplitPartNumber;
}
/**
*
*/
public void setSplitSize(long val)
{
SplitPartSize = val;
}
/**
*
*/
public long getSplitSize()
{
return SplitPartSize;
}
/**
*
*/
public void setEndPtsOfGop(long val)
{
EndPtsOfGop = val;
}
/**
*
*/
public long getEndPtsOfGop()
{
return EndPtsOfGop;
}
/**
*
*/
public void setProjectFileSplitSize(long val)
{
ProjectFileSplitSize = val;
}
/**
*
*/
public long getProjectFileSplitSize()
{
return ProjectFileSplitSize;
}
/**
*
*/
public void setProjectFileExportLength(long val)
{
ProjectFileExportLength = val;
}
/**
*
*/
public long countProjectFileExportLength(long val)
{
ProjectFileExportLength += val;
return ProjectFileExportLength;
}
/**
*
*/
public long getProjectFileExportLength()
{
return ProjectFileExportLength;
}
/**
*
*/
public void setExportedVideoFrameNumber(int val)
{
ExportedVideoFrameNumber = val;
}
/**
*
*/
public int countExportedVideoFrameNumber(int val)
{
ExportedVideoFrameNumber += val;
return ExportedVideoFrameNumber;
}
/**
*
*/
public int getExportedVideoFrameNumber()
{
return ExportedVideoFrameNumber;
}
/**
*
*/
public void setMediaFilesExportLength(long val)
{
MediaFilesExportLength = val;
}
/**
*
*/
public long countMediaFilesExportLength(long val)
{
MediaFilesExportLength += val;
return MediaFilesExportLength;
}
/**
*
*/
public long getMediaFilesExportLength()
{
return MediaFilesExportLength;
}
/**
*
*/
public void setAllMediaFilesExportLength(long val)
{
AllMediaFilesExportLength = val;
}
/**
*
*/
public long countAllMediaFilesExportLength(long val)
{
AllMediaFilesExportLength += val;
return AllMediaFilesExportLength;
}
/**
*
*/
public long getAllMediaFilesExportLength()
{
return AllMediaFilesExportLength;
}
/**
*
*/
public String getSavedOutputDirectory()
{
return savedOutputDirectory;
}
/**
*
*/
public Hashtable getStreamObjects()
{
return StreamObjects;
}
/**
*
*/
public void setAudioStreamInfo(Object[] obj)
{
AudioStreamInfo = obj;
}
/**
*
*/
public String getAudioStreamLanguage(int pid)
{
String str = "";
String str1 = "";
if (AudioStreamInfo == null)
return str;
for (int i = 0, j = 0, k = 0; i < AudioStreamInfo.length; i++)
{
str1 = AudioStreamInfo[i].toString();
if (str1.indexOf(Common.adaptString(Integer.toHexString(pid).toUpperCase(), 4)) < 0)
continue;
j = str1.indexOf("{");
k = str1.indexOf("}");
if (j > 0 && k > j)
str = "_" + str1.substring(j + 1, k);
break;
}
return str;
}
}