MCPcopy Create free account
hub / github.com/Gagravarr/VorbisJava / parse

Method parse

tika/src/main/java/org/gagravarr/tika/OggParser.java:89–154  ·  view source on GitHub ↗
(
         InputStream stream, ContentHandler handler,
         Metadata metadata, ParseContext context)

Source from the content-addressed store, hash-verified

87 }
88
89 public void parse(
90 InputStream stream, ContentHandler handler,
91 Metadata metadata, ParseContext context)
92 throws IOException, TikaException, SAXException {
93 // Process the file straight through once
94 OggFile ogg = new OggFile(stream);
95
96 // To track the streams we find
97 Map<OggStreamType, Integer> streams =
98 new HashMap<OggStreamType, Integer>();
99 Map<OggStreamType.Kind, Integer> streamKinds =
100 new HashMap<OggStreamType.Kind, Integer>();
101 List<Integer> sids = new ArrayList<Integer>();
102 int totalStreams = 0;
103
104 // Start
105 XHTMLContentHandler xhtml = new XHTMLContentHandler(handler, metadata);
106 xhtml.startDocument();
107
108 // Check the streams in turn
109 OggPacketReader r = ogg.getPacketReader();
110 OggPacket p;
111 while( (p = r.getNextPacket()) != null ) {
112 if (p.isBeginningOfStream()) {
113 totalStreams++;
114 sids.add(p.getSid());
115
116 OggStreamType type = OggStreamIdentifier.identifyType(p);
117 Integer prevValue = streams.get(type);
118 if (prevValue == null) {
119 prevValue = 0;
120 }
121 streams.put(type, (prevValue+1));
122
123 prevValue = streamKinds.get(type.kind);
124 if (prevValue == null) {
125 prevValue = 0;
126 }
127 streamKinds.put(type.kind, (prevValue+1));
128 }
129 }
130
131 // Report about the streams, which is all we really can do
132 metadata.add("streams-total", Integer.toString(totalStreams));
133 for (OggStreamType type : streams.keySet()) {
134 String key = type.mimetype.substring(type.mimetype.indexOf('/')+1);
135 if (key.startsWith("x-")) {
136 key = key.substring(2);
137 }
138 if (type == OggStreamIdentifier.UNKNOWN) {
139 key = "unknown";
140 }
141 metadata.add("streams-" + key, Integer.toString(streams.get(type)));
142 }
143 for (OggStreamType.Kind kind : streamKinds.keySet()) {
144 String key = kind.name().toLowerCase();
145 metadata.add("streams-" + key, Integer.toString(streamKinds.get(kind)));
146 }

Callers 5

testSingleStreamFilesMethod · 0.45
testMultiStreamFilesMethod · 0.45
testOtherFilesMethod · 0.45
OggParserClass · 0.45
toMediaTypeMethod · 0.45

Calls 7

getPacketReaderMethod · 0.95
getNextPacketMethod · 0.95
isBeginningOfStreamMethod · 0.95
getSidMethod · 0.95
identifyTypeMethod · 0.95
closeMethod · 0.95
toStringMethod · 0.45

Tested by 3

testSingleStreamFilesMethod · 0.36
testMultiStreamFilesMethod · 0.36
testOtherFilesMethod · 0.36