Minor additional cleanup of multiple DVB subtitles per PID support
This commit is contained in:
parent
f903098721
commit
c50cfd8345
@ -23,6 +23,7 @@ import com.google.android.exoplayer2.extractor.ts.TsPayloadReader.DvbSubtitleInf
|
|||||||
import com.google.android.exoplayer2.extractor.ts.TsPayloadReader.TrackIdGenerator;
|
import com.google.android.exoplayer2.extractor.ts.TsPayloadReader.TrackIdGenerator;
|
||||||
import com.google.android.exoplayer2.util.MimeTypes;
|
import com.google.android.exoplayer2.util.MimeTypes;
|
||||||
import com.google.android.exoplayer2.util.ParsableByteArray;
|
import com.google.android.exoplayer2.util.ParsableByteArray;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -58,8 +59,8 @@ public final class DvbSubtitleReader implements ElementaryStreamReader {
|
|||||||
idGenerator.generateNewId();
|
idGenerator.generateNewId();
|
||||||
TrackOutput output = extractorOutput.track(idGenerator.getTrackId(), C.TRACK_TYPE_TEXT);
|
TrackOutput output = extractorOutput.track(idGenerator.getTrackId(), C.TRACK_TYPE_TEXT);
|
||||||
output.format(Format.createImageSampleFormat(idGenerator.getFormatId(),
|
output.format(Format.createImageSampleFormat(idGenerator.getFormatId(),
|
||||||
MimeTypes.APPLICATION_DVBSUBS, null, Format.NO_VALUE, subtitleInfo.initializationData,
|
MimeTypes.APPLICATION_DVBSUBS, null, Format.NO_VALUE,
|
||||||
subtitleInfo.language, null));
|
Collections.singletonList(subtitleInfo.initializationData), subtitleInfo.language, null));
|
||||||
outputs[i] = output;
|
outputs[i] = output;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -517,11 +517,11 @@ public final class TsExtractor implements Extractor {
|
|||||||
dvbSubtitleInfos = new ArrayList<>();
|
dvbSubtitleInfos = new ArrayList<>();
|
||||||
while (data.getPosition() < positionOfNextDescriptor) {
|
while (data.getPosition() < positionOfNextDescriptor) {
|
||||||
String dvbLanguage = data.readString(3).trim();
|
String dvbLanguage = data.readString(3).trim();
|
||||||
int dvbProgramElementType = data.readUnsignedByte();
|
int dvbSubtitlingType = data.readUnsignedByte();
|
||||||
byte[] initializationData = new byte[4];
|
byte[] initializationData = new byte[4];
|
||||||
data.readBytes(initializationData, 0, 4);
|
data.readBytes(initializationData, 0, 4);
|
||||||
dvbSubtitleInfos.add(new DvbSubtitleInfo(dvbLanguage, dvbProgramElementType,
|
dvbSubtitleInfos.add(new DvbSubtitleInfo(dvbLanguage, dvbSubtitlingType,
|
||||||
Collections.singletonList(initializationData)));
|
initializationData));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Skip unused bytes of current descriptor.
|
// Skip unused bytes of current descriptor.
|
||||||
|
@ -20,7 +20,6 @@ import com.google.android.exoplayer2.extractor.ExtractorOutput;
|
|||||||
import com.google.android.exoplayer2.extractor.TrackOutput;
|
import com.google.android.exoplayer2.extractor.TrackOutput;
|
||||||
import com.google.android.exoplayer2.util.ParsableByteArray;
|
import com.google.android.exoplayer2.util.ParsableByteArray;
|
||||||
import com.google.android.exoplayer2.util.TimestampAdjuster;
|
import com.google.android.exoplayer2.util.TimestampAdjuster;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -85,18 +84,22 @@ public interface TsPayloadReader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds information about a DVB subtitle.
|
* Holds information about a DVB subtitle, as defined in ETSI EN 300 468 V1.11.1 section 6.2.41.
|
||||||
*/
|
*/
|
||||||
final class DvbSubtitleInfo {
|
final class DvbSubtitleInfo {
|
||||||
|
|
||||||
public final String language;
|
public final String language;
|
||||||
public final int programElementType;
|
public final int type;
|
||||||
public final List<byte[]> initializationData;
|
public final byte[] initializationData;
|
||||||
|
|
||||||
public DvbSubtitleInfo(String language, int programElementType,
|
/**
|
||||||
List<byte[]> initializationData) {
|
* @param language The ISO 639-2 three character language.
|
||||||
|
* @param type The subtitling type.
|
||||||
|
* @param initializationData The composition and ancillary page ids.
|
||||||
|
*/
|
||||||
|
public DvbSubtitleInfo(String language, int type, byte[] initializationData) {
|
||||||
this.language = language;
|
this.language = language;
|
||||||
this.programElementType = programElementType;
|
this.type = type;
|
||||||
this.initializationData = initializationData;
|
this.initializationData = initializationData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user