Skip to content

Commit

Permalink
add summary to root node
Browse files Browse the repository at this point in the history
  • Loading branch information
EricBerendsen committed Dec 31, 2024
1 parent adfa49f commit 3217e78
Show file tree
Hide file tree
Showing 4 changed files with 124 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@
import nl.digitalekabeltelevisie.data.mpeg.pes.video266.H266Handler;
import nl.digitalekabeltelevisie.data.mpeg.pid.t2mi.T2miPidHandler;
import nl.digitalekabeltelevisie.data.mpeg.psi.*;
import nl.digitalekabeltelevisie.data.mpeg.psi.EITsection.Event;
import nl.digitalekabeltelevisie.data.mpeg.psi.PMTsection.Component;
import nl.digitalekabeltelevisie.data.mpeg.psi.handler.GeneralPsiTableHandler;
import nl.digitalekabeltelevisie.data.mpeg.psi.nonstandard.M7Fastscan;
Expand Down Expand Up @@ -472,6 +473,8 @@ public PSI getPsi() {
public KVP getJTreeNode(int modus){

KVP t = new KVP("Transport Stream "+psi.getPat().getTransportStreamId()).setCrumb("root");

t.addHTMLSource(() ->getSummary(modus), "Summary");

t.add(new KVP("file",file.getPath()));
t.add(new KVP("size",file.length()));
Expand Down Expand Up @@ -513,6 +516,96 @@ public KVP getJTreeNode(int modus){
}


private String getSummary(int modus) {
StringBuilder sb = new StringBuilder();
int transportStreamId = psi.getPat().getTransportStreamId();
if(transportStreamId != -1) {
sb.append("Transport Stream: ").append(transportStreamId).append("<br/>");
}

Map<Integer, PMTsection[]> pmts = psi.getPmts().getPmts();
Iterable<Integer> serviceIds = new TreeSet<>(pmts.keySet());

sb.append("<ol>");

for (Integer programNumber : serviceIds) {
PMTsection[] sections = pmts.get(programNumber);

sb.append("<li>program: ")
.append("<a href=\"root/psi/pmts/program:")
.append(programNumber)
.append("\">")
.append(programNumber)
.append("</a>");
psi.getSdt().getServiceNameForActualTransportStreamOptional(programNumber).ifPresent(s -> sb.append(" (").append(s).append(')'));
sb.append("<br/>");

PMTsection pmtSection = sections[0];
sb.append("<ol>");
for(Component component:pmtSection.getComponentenList()) {
sb.append("<li>Pid: ");
if(!Utils.psiOnlyModus(modus)) {
sb.append("<a href=\"root/pids/pid:")
.append(component.getElementaryPID())
.append("\">");
}
sb.append(component.getElementaryPID());
if(!Utils.psiOnlyModus(modus)) {
sb.append("</a>");
}
sb.append(" Stream type: ")
.append(component.getStreamtype())
.append(" (")
.append(determineComponentType(component.getComponentDescriptorList()).
map(ComponentType::getDescription).
orElse(getStreamTypeShortString(component.getStreamtype())))
.append(")</li>");
}
sb.append("</ol><br/>");


EITsection[] pf = psi.getEit().getActualTransportStreamEitPF(programNumber);
if(pf.length >0) {

sb.append("EIT p/f:<br/>");
for(EITsection section:pf) {
int sectionNumber = section.getSectionNumber();
for(Event event : section.getEventList()) {
sb.append(Utils.escapeHTML(getEITStartTimeAsString(event.getStartTime())))
.append("&nbsp;")
.append(formatDuration(event.getDuration()))
.append("&nbsp;")

.append("<a href=\"root/psi/eit/original_network_id:")
.append(section.getOriginalNetworkID())
.append("/transport_stream_id:")
.append(section.getTransportStreamID())
.append("/service_id:")
.append(programNumber)
.append("/tableid:78");
if(!Utils.simpleModus(modus)) {
sb.append("/tablesection:")
.append(sectionNumber)
.append("/events");

}
sb.append("/event:")
.append(event.getEventID())
.append("\">")
.append(event.getEventName())
.append("</a><br/>");
}
}
}


sb.append("<br/></li>");
}
sb.append("</ol>");

return sb.toString();
}

static TableHeader<TransportStream,PID> buildPidTableHeader() {

return new TableHeaderBuilder<TransportStream,PID>().
Expand Down
30 changes: 25 additions & 5 deletions src/main/java/nl/digitalekabeltelevisie/data/mpeg/psi/EIT.java
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ public class EIT extends AbstractPSITabel{
private static final String EVENT_GRID_TITLE = "Grid";
private static final String EVENTS_SCHEDULE_TITLE = "Events Schedule";

// original_network_id,transport_stream_id, serviceId, table_id
private final Map<Integer, TreeMap<Integer, TreeMap<Integer, TreeMap<Integer,EITsection []>>>> newEit =
// original_network_id,transport_stream_id, serviceId, table_id
private final Map<Integer, TreeMap<Integer, TreeMap<Integer, TreeMap<Integer,EITsection []>>>> eit =
new TreeMap<>();

private static final Logger logger = Logger.getLogger(EIT.class.getName());
Expand All @@ -87,7 +87,7 @@ public void update(EITsection section){
int serviceId = section.getServiceID();
int tableId = section.getTableId();

TreeMap<Integer, TreeMap<Integer, TreeMap<Integer, EITsection[]>>> networkSections = newEit.computeIfAbsent(original_network_id,k -> new TreeMap<>());
TreeMap<Integer, TreeMap<Integer, TreeMap<Integer, EITsection[]>>> networkSections = eit.computeIfAbsent(original_network_id,k -> new TreeMap<>());
TreeMap<Integer, TreeMap<Integer, EITsection[]>> programStreamSections = networkSections.computeIfAbsent(streamId,k -> new TreeMap<>());
TreeMap<Integer, EITsection[]> serviceSections = programStreamSections.computeIfAbsent(serviceId,k -> new TreeMap<>());
EITsection[] tableSectionArray = serviceSections.computeIfAbsent(tableId,k -> new EITsection[section.getSectionLastNumber()+1]);
Expand All @@ -105,6 +105,26 @@ public void update(EITsection section){
}
}


public EITsection [] getActualTransportStreamEitPF(int serviceId) {

for(TreeMap<Integer, TreeMap<Integer, TreeMap<Integer, EITsection[]>>> onid:eit.values()) {
for(TreeMap<Integer, TreeMap<Integer, EITsection[]>> ts:onid.values()) {
TreeMap<Integer, EITsection[]> serviceEit = ts.get(serviceId);
if(serviceEit != null) {
EITsection[] res = serviceEit.get(0x4E); // TableType: event_information_section - actual_transport_stream, present/following
if(res != null) {
return res;
}
}
}

}
return new EITsection [0];

}


@Override
public KVP getJTreeNode(int modus) {

Expand All @@ -113,7 +133,7 @@ public KVP getJTreeNode(int modus) {

Map<ServiceIdentification, EITsection[]> allEitImageMap = new TreeMap<>();

for(Entry<Integer, TreeMap<Integer, TreeMap<Integer, TreeMap<Integer, EITsection[]>>>> network:newEit.entrySet()) {
for(Entry<Integer, TreeMap<Integer, TreeMap<Integer, TreeMap<Integer, EITsection[]>>>> network:eit.entrySet()) {
Integer orgNetworkId= network.getKey();
SortedMap<Integer, TreeMap<Integer, TreeMap<Integer, EITsection[]>>> networkSections = network.getValue();

Expand Down Expand Up @@ -335,7 +355,7 @@ public Map<ServiceIdentification, EITsection[]> getCombinedPresentFollowing() {
public Map<ServiceIdentification, EITsection[]> getFlatEit(IntPredicate scheduleOrPF) {
Map<ServiceIdentification, EITsection[]> result = new TreeMap<>();

for (Entry<Integer, TreeMap<Integer, TreeMap<Integer, TreeMap<Integer, EITsection[]>>>> networkEntry : newEit.entrySet()) {
for (Entry<Integer, TreeMap<Integer, TreeMap<Integer, TreeMap<Integer, EITsection[]>>>> networkEntry : eit.entrySet()) {
int orgNetworkId = networkEntry.getKey();
SortedMap<Integer, TreeMap<Integer, TreeMap<Integer, EITsection[]>>> network = networkEntry.getValue();

Expand Down
4 changes: 4 additions & 0 deletions src/main/java/nl/digitalekabeltelevisie/gui/DVBtree.java
Original file line number Diff line number Diff line change
Expand Up @@ -933,6 +933,10 @@ public boolean findAndShow(String s,DefaultMutableTreeNodePreorderEnumaration en
}
return false;
}

public void showRoot() {
showNode((DefaultMutableTreeNode)model.getRoot());
}

private void showNode(TreeNode node) {
TreeNode[] nodes = model.getPathToRoot(node);
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/nl/digitalekabeltelevisie/gui/TSLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
*
* http://www.digitalekabeltelevisie.nl/dvb_inspector
*
* This code is Copyright 2009-2022 by Eric Berendsen ([email protected])
* This code is Copyright 2009-2024 by Eric Berendsen ([email protected])
*
* This file is part of DVB Inspector.
*
Expand Down Expand Up @@ -67,6 +67,7 @@ protected void done() {
control.resetSearch();
PreferencesManager.setLastUsedDir(file.getParent());
control.addRecentFile(file.getCanonicalPath());
control.getTreeView().showRoot();
}
} catch (final Throwable t) {
logger.log(Level.SEVERE, "Error displaying stream", t);
Expand Down

0 comments on commit 3217e78

Please sign in to comment.