Remove CEA-6/708 support from DefaultSubtitleParserFactory

`Cea608Parser` and `Cea708Parser` don't currently work correctly on
their own without the re-ordering of input buffers implemented in
`CeaDecoder`, and it's not clear how we can properly do this re-ordering
during extraction. This change ensures that if 'parse subtitles
during extraction' is enabled, CEA-6/708 subs will be passed through
without transcoding and can then be decoded during rendering by
`Cea6/708Decoder`.

PiperOrigin-RevId: 595658628
This commit is contained in:
ibaker 2024-01-04 03:45:11 -08:00 committed by Copybara-Service
parent 8eda9f2ed2
commit 1cb6865884
3 changed files with 7 additions and 24 deletions

View File

@ -20,8 +20,6 @@ import androidx.media3.common.Format;
import androidx.media3.common.Format.CueReplacementBehavior;
import androidx.media3.common.MimeTypes;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.extractor.text.cea.Cea608Parser;
import androidx.media3.extractor.text.cea.Cea708Parser;
import androidx.media3.extractor.text.dvb.DvbParser;
import androidx.media3.extractor.text.pgs.PgsParser;
import androidx.media3.extractor.text.ssa.SsaParser;
@ -46,8 +44,6 @@ import java.util.Objects;
* <li>PGS ({@link PgsParser})
* <li>DVB ({@link DvbParser})
* <li>TTML ({@link TtmlParser})
* <li>CEA-608 ({@link Cea608Parser})
* <li>CEA-708 ({@link Cea708Parser})
* </ul>
*/
@UnstableApi
@ -63,10 +59,7 @@ public final class DefaultSubtitleParserFactory implements SubtitleParser.Factor
|| Objects.equals(mimeType, MimeTypes.APPLICATION_TX3G)
|| Objects.equals(mimeType, MimeTypes.APPLICATION_PGS)
|| Objects.equals(mimeType, MimeTypes.APPLICATION_DVBSUBS)
|| Objects.equals(mimeType, MimeTypes.APPLICATION_TTML)
|| Objects.equals(mimeType, MimeTypes.APPLICATION_MP4CEA608)
|| Objects.equals(mimeType, MimeTypes.APPLICATION_CEA608)
|| Objects.equals(mimeType, MimeTypes.APPLICATION_CEA708);
|| Objects.equals(mimeType, MimeTypes.APPLICATION_TTML);
}
@Override
@ -90,11 +83,6 @@ public final class DefaultSubtitleParserFactory implements SubtitleParser.Factor
return DvbParser.CUE_REPLACEMENT_BEHAVIOR;
case MimeTypes.APPLICATION_TTML:
return TtmlParser.CUE_REPLACEMENT_BEHAVIOR;
case MimeTypes.APPLICATION_MP4CEA608:
case MimeTypes.APPLICATION_CEA608:
return Cea608Parser.CUE_REPLACEMENT_BEHAVIOR;
case MimeTypes.APPLICATION_CEA708:
return Cea708Parser.CUE_REPLACEMENT_BEHAVIOR;
default:
break;
}
@ -123,17 +111,6 @@ public final class DefaultSubtitleParserFactory implements SubtitleParser.Factor
return new DvbParser(format.initializationData);
case MimeTypes.APPLICATION_TTML:
return new TtmlParser();
case MimeTypes.APPLICATION_MP4CEA608:
case MimeTypes.APPLICATION_CEA608:
// Deliberately pass a timeout longer than Cea608Parser.MIN_DATA_CHANNEL_TIMEOUT_MS
// because Cea608Parser erases 'stuck' cues starting from their start time, rather than
// the last piece of CEA data received.
return new Cea608Parser(
mimeType,
format.accessibilityChannel,
/* validDataChannelTimeoutMs= */ 2 * Cea608Parser.MIN_DATA_CHANNEL_TIMEOUT_MS);
case MimeTypes.APPLICATION_CEA708:
return new Cea708Parser(format.accessibilityChannel, format.initializationData);
default:
break;
}

View File

@ -47,6 +47,9 @@ import java.util.Collections;
import java.util.List;
/** A {@link SubtitleParser} for CEA-608 (also known as "line 21 captions" and "EIA-608"). */
// TODO: b/317488646 - Either re-combine this with Cea608Decoder (if we decide that decoding this
// format must happen during rendering), or re-add it to DefaultSubtitleParserFactory (if we're
// able to solve the re-ordering issue during extraction).
@UnstableApi
public final class Cea608Parser implements SubtitleParser {

View File

@ -48,6 +48,9 @@ import java.util.List;
import org.checkerframework.checker.nullness.qual.RequiresNonNull;
/** A {@link SubtitleParser} for CEA-708 (also known as "EIA-708"). */
// TODO: b/317488646 - Either re-combine this with Cea708Decoder (if we decide that decoding this
// format must happen during rendering), or re-add it to DefaultSubtitleParserFactory (if we're
// able to solve the re-ordering issue during extraction).
@UnstableApi
public final class Cea708Parser implements SubtitleParser {