mirror of
https://github.com/MaintainTeam/LastPipeBender.git
synced 2025-03-04 15:28:21 +03:00
50 lines
1.5 KiB
Java
50 lines
1.5 KiB
Java
package us.shandian.giga.postprocessing;
|
|
|
|
import android.util.Log;
|
|
|
|
import org.schabi.newpipe.streams.SrtFromTtmlWriter;
|
|
import org.schabi.newpipe.streams.io.SharpStream;
|
|
|
|
import java.io.IOException;
|
|
|
|
/**
|
|
* @author kapodamy
|
|
*/
|
|
class TtmlConverter extends Postprocessing {
|
|
private static final String TAG = "TtmlConverter";
|
|
|
|
TtmlConverter() {
|
|
// due how XmlPullParser works, the xml is fully loaded on the ram
|
|
super(false, true, ALGORITHM_TTML_CONVERTER);
|
|
}
|
|
|
|
@Override
|
|
int process(SharpStream out, SharpStream... sources) throws IOException {
|
|
// check if the subtitle is already in srt and copy, this should never happen
|
|
String format = getArgumentAt(0, null);
|
|
boolean ignoreEmptyFrames = getArgumentAt(1, "true").equals("true");
|
|
|
|
if (format == null || format.equals("ttml")) {
|
|
SrtFromTtmlWriter writer = new SrtFromTtmlWriter(out, ignoreEmptyFrames);
|
|
|
|
try {
|
|
writer.build(sources[0]);
|
|
} catch (Exception err) {
|
|
Log.e(TAG, "subtitle parse failed", err);
|
|
return err instanceof IOException ? 1 : 8;
|
|
}
|
|
|
|
return OK_RESULT;
|
|
} else if (format.equals("srt")) {
|
|
byte[] buffer = new byte[8 * 1024];
|
|
int read;
|
|
while ((read = sources[0].read(buffer)) > 0) {
|
|
out.write(buffer, 0, read);
|
|
}
|
|
return OK_RESULT;
|
|
}
|
|
|
|
throw new UnsupportedOperationException("Can't convert this subtitle, unimplemented format: " + format);
|
|
}
|
|
|
|
}
|