diff --git a/.gitignore b/.gitignore index 37d2748b..6b849e08 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,8 @@ secret-application.yml +test*.mov +test*.ts +test*.mkv +ffprobejaxb/.ffmpeg-compile/* # Windows / macOS desktop.ini diff --git a/CHANGELOG.md b/CHANGELOG.md index 3bd6b222..0af1e6b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # All Medialib projects upgrades needs +## 15.0.0 + +Deeply refactor FFprobeJAXB to manage multiple ffprobe XSD versions #73 + ## 14.1.0 Update parent starter project to 19.0.0 #80 diff --git a/fflauncher/src/main/java/tv/hd3g/fflauncher/FFmpeg.java b/fflauncher/src/main/java/tv/hd3g/fflauncher/FFmpeg.java index 9664ee05..458d7356 100644 --- a/fflauncher/src/main/java/tv/hd3g/fflauncher/FFmpeg.java +++ b/fflauncher/src/main/java/tv/hd3g/fflauncher/FFmpeg.java @@ -22,14 +22,10 @@ import java.io.File; import java.time.Duration; import java.util.Objects; -import java.util.Optional; import java.util.function.Consumer; -import org.ffmpeg.ffprobe.StreamType; - import tv.hd3g.fflauncher.progress.ProgressCallback; import tv.hd3g.fflauncher.progress.ProgressListener; -import tv.hd3g.ffprobejaxb.FFprobeJAXB; import tv.hd3g.processlauncher.ProcesslauncherBuilder; import tv.hd3g.processlauncher.cmdline.Parameters; @@ -103,11 +99,6 @@ public FFmpeg addFastStartMovMp4File() { return this; } - @Deprecated(forRemoval = true, since = "9.1.0") - public static Optional getFirstVideoStream(final FFprobeJAXB analysingResult) {// NOSONAR S1133 - return analysingResult.getFirstVideoStream(); - } - /** * Used with hardware transcoding. * @param deviceIdToUse -1 by default diff --git a/fflauncher/src/main/java/tv/hd3g/fflauncher/HardwareProcessTraits.java b/fflauncher/src/main/java/tv/hd3g/fflauncher/HardwareProcessTraits.java index b4f2b4f2..cadea86b 100644 --- a/fflauncher/src/main/java/tv/hd3g/fflauncher/HardwareProcessTraits.java +++ b/fflauncher/src/main/java/tv/hd3g/fflauncher/HardwareProcessTraits.java @@ -105,10 +105,10 @@ default void addHardwareVideoDecoding(final String source, final var videoStream = oVideoStream.get(); final var codec = about.getCodecs().stream() - .filter(c -> (c.decodingSupported && c.name.equals(videoStream.getCodecName()))) + .filter(c -> (c.decodingSupported && c.name.equals(videoStream.codecName()))) .findFirst() .orElseThrow(() -> new MediaException("Can't found a valid decoder codec for " + videoStream - .getCodecName() + " in \"" + source + "\"")); + .codecName() + " in \"" + source + "\"")); if (hardwareCodec == FFHardwareCodec.NV && about.isNVToolkitIsAvaliable()) { final var oSourceCuvidCodecEngine = codec.decoders.stream().filter(decoder -> decoder @@ -134,7 +134,7 @@ default void addHardwareVideoDecoding(final String source, } throw new MediaException("Can't found a valid hardware decoder on \"" + source + "\" (\"" + videoStream - .getCodecLongName() + "\")"); + .codecLongName() + "\")"); } /** diff --git a/fflauncher/src/main/java/tv/hd3g/fflauncher/acm/ACMSelectedInputChannel.java b/fflauncher/src/main/java/tv/hd3g/fflauncher/acm/ACMSelectedInputChannel.java new file mode 100644 index 00000000..03a1260f --- /dev/null +++ b/fflauncher/src/main/java/tv/hd3g/fflauncher/acm/ACMSelectedInputChannel.java @@ -0,0 +1,20 @@ +/* + * This file is part of fflauncher. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2024 + * + */ +package tv.hd3g.fflauncher.acm; + +public record ACMSelectedInputChannel(InputAudioStream inputAudioStream, InputAudioChannelSelector channelSelector) { +} diff --git a/fflauncher/src/main/java/tv/hd3g/fflauncher/acm/AudioChannelManipulation.java b/fflauncher/src/main/java/tv/hd3g/fflauncher/acm/AudioChannelManipulation.java index 72eb6b19..210f4c62 100644 --- a/fflauncher/src/main/java/tv/hd3g/fflauncher/acm/AudioChannelManipulation.java +++ b/fflauncher/src/main/java/tv/hd3g/fflauncher/acm/AudioChannelManipulation.java @@ -31,13 +31,13 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import org.ffmpeg.ffprobe.StreamType; - import tv.hd3g.fflauncher.acm.ACMSplitInStreamDefinitionFilter.SplittedOut; import tv.hd3g.fflauncher.acm.OutputAudioStream.OutputAudioChannel; import tv.hd3g.fflauncher.enums.ChannelLayout; import tv.hd3g.fflauncher.filtering.FilterChains; import tv.hd3g.ffprobejaxb.FFprobeJAXB; +import tv.hd3g.ffprobejaxb.FFprobeReference; +import tv.hd3g.ffprobejaxb.data.FFProbeStream; import tv.hd3g.processlauncher.cmdline.Parameters; /** @@ -279,13 +279,14 @@ public List getMapParameters(final List prependToMapList) { * @return add non-audio sources (video, data) + getMapParameters */ public List getMapParameters(final List sourceFiles, - final BiPredicate addNonAudioStreamFromSources) { + final BiPredicate addNonAudioStreamFromSources) { - final var selectedFileStreams = new LinkedHashMap(); + final var selectedFileStreams = new LinkedHashMap(); for (var pos = 0; pos < sourceFiles.size(); pos++) { final var fileIndex = pos; sourceFiles.get(pos).getStreams().stream() - .filter(s -> FFprobeJAXB.filterVideoStream.test(s) || FFprobeJAXB.filterDataStream.test(s)) + .filter(s -> FFprobeReference.filterVideoStream.test(s) || FFprobeReference.filterDataStream.test( + s)) .filter(s -> addNonAudioStreamFromSources.test(fileIndex, s)) .forEach(s -> selectedFileStreams.put(fileIndex, s)); } @@ -294,7 +295,7 @@ public List getMapParameters(final List sourceFiles, .map(entry -> { final var fileIndex = entry.getKey(); final var streamInFile = entry.getValue(); - return fileIndex + ":" + streamInFile.getIndex(); + return fileIndex + ":" + streamInFile.index(); }) .toList()); } diff --git a/fflauncher/src/main/java/tv/hd3g/fflauncher/acm/AudioChannelManipulationSetup.java b/fflauncher/src/main/java/tv/hd3g/fflauncher/acm/AudioChannelManipulationSetup.java index aee59102..202a788e 100644 --- a/fflauncher/src/main/java/tv/hd3g/fflauncher/acm/AudioChannelManipulationSetup.java +++ b/fflauncher/src/main/java/tv/hd3g/fflauncher/acm/AudioChannelManipulationSetup.java @@ -28,7 +28,6 @@ import java.util.Optional; import java.util.regex.Pattern; -import tv.hd3g.fflauncher.acm.InputAudioStream.SelectedInputChannel; import tv.hd3g.fflauncher.enums.ChannelLayout; import tv.hd3g.fflauncher.enums.SourceNotFoundPolicy; import tv.hd3g.fflauncher.enums.SourceNotFoundPolicy.SourceNotFoundException; @@ -130,17 +129,17 @@ void mapFullStream() { final var sourceFileIndex = Integer.parseInt(outputStreamTopologyRaw.split(":")[0]); final var relativeSourceStreamIndex = Integer.parseInt(outputStreamTopologyRaw.split(":")[1]); final var inputAudioStream = InputAudioStream.getFromRelativeIndexes(inputStreams, - sourceFileIndex, - relativeSourceStreamIndex); + sourceFileIndex, + relativeSourceStreamIndex); if (inputAudioStream == null) { applySourceNotFoundBehavior("Can't found input channel by file/stream indexes: " - + sourceFileIndex + "/" + relativeSourceStreamIndex); + + sourceFileIndex + "/" + relativeSourceStreamIndex); return; } outputLayout = Optional.ofNullable(outputLayout).orElse(inputAudioStream.getLayout()); final var outputStream = new OutputAudioStream(outputLayout, outputFileIndex, - relativeOutStrmIdx); + relativeOutStrmIdx); final var chSize = inputAudioStream.getLayout().getChannelSize(); for (var pos = 0; pos < chSize; pos++) { @@ -157,17 +156,16 @@ void mapFullStream() { * @return true for cancel out stream */ boolean mapSingleSourceAbsoluteChannel(final int absoluteInputChannel, - final List selectedInputChannels) { + final List aCMSelectedInputChannels) { final var selected = InputAudioStream.getFromAbsoluteIndex(inputStreams, - absoluteInputChannel); + absoluteInputChannel); if (selected == null) { return applySourceNotFoundBehavior("Can't found absolute input channel index: " - + absoluteInputChannel); + + absoluteInputChannel); } - final var inputStream = selected.getInputAudioStream(); - final var channelSelector = selected.getChannelSelector(); - selectedInputChannels.add(inputStream.new SelectedInputChannel(inputStream, - channelSelector)); + final var inputStream = selected.inputAudioStream(); + final var channelSelector = selected.channelSelector(); + aCMSelectedInputChannels.add(new ACMSelectedInputChannel(inputStream, channelSelector)); return false; } @@ -183,7 +181,7 @@ boolean applySourceNotFoundBehavior(final String message) { * @return true for cancel out stream */ boolean mapSingleSourceRelativeChannel(final String absoluteInputRaw, - final List selectedInputChannels) { + final List aCMSelectedInputChannels) { final var absoluteInput = absoluteInputRaw.split(":"); if (absoluteInput.length != 3) { throw new IllegalArgumentException("Invalid channel map entry: " + absoluteInputRaw); @@ -192,20 +190,20 @@ boolean mapSingleSourceRelativeChannel(final String absoluteInputRaw, final var relativeSourceStreamIndex = parseInt(absoluteInput[1]); final var channelSelector = new InputAudioChannelSelector(parseInt(absoluteInput[2])); final var inputStream = InputAudioStream.getFromRelativeIndexes(inputStreams, - sourceFileIndex, - relativeSourceStreamIndex); + sourceFileIndex, + relativeSourceStreamIndex); if (inputStream == null) { return applySourceNotFoundBehavior("Can't found file/stream index: " - + sourceFileIndex + "/" - + relativeSourceStreamIndex); + + sourceFileIndex + "/" + + relativeSourceStreamIndex); } - selectedInputChannels.add(inputStream.new SelectedInputChannel(inputStream, - channelSelector)); + aCMSelectedInputChannels.add(new ACMSelectedInputChannel(inputStream, + channelSelector)); return false; } void mapSingleChannels() { - final var selectedInputChannels = new ArrayList(); + final var selectedInputChannels = new ArrayList(); final var outputChannelTopologyRaw = outputStreamTopologyRaw.split("\\+"); /** * For each source channel @@ -215,10 +213,10 @@ void mapSingleChannels() { boolean isStop; try { isStop = mapSingleSourceAbsoluteChannel(parseInt(absoluteInputRaw), - selectedInputChannels); + selectedInputChannels); } catch (final NumberFormatException e) { isStop = mapSingleSourceRelativeChannel(absoluteInputRaw, - selectedInputChannels); + selectedInputChannels); } if (isStop) { return; @@ -230,7 +228,7 @@ void mapSingleChannels() { } final var outputStream = new OutputAudioStream(outputLayout, outputFileIndex, relativeOutStrmIdx); selectedInputChannels.forEach(selectedInput -> outputStream - .mapChannel(selectedInput.getInputAudioStream(), selectedInput.getChannelSelector())); + .mapChannel(selectedInput.inputAudioStream(), selectedInput.channelSelector())); outputStreams.add(outputStream); } @@ -242,12 +240,12 @@ void extractMap() { } relativeOutStrmIdx = relativeOutStrIdxByOutFileIdx - .getOrDefault(outputFileIndex, -1) + 1; + .getOrDefault(outputFileIndex, -1) + 1; relativeOutStrIdxByOutFileIdx.put(outputFileIndex, relativeOutStrmIdx); outputStreamTopologyRaw = layoutMatcher.replaceAll(""); if (outputStreamTopologyRaw.indexOf('+') == -1 - && outputStreamTopologyRaw.split(":").length == 2) { + && outputStreamTopologyRaw.split(":").length == 2) { mapFullStream(); } else { mapSingleChannels(); @@ -262,9 +260,9 @@ private void onChannelMapEntry(final String entry) { List build() { channelMap.stream() - .map(entry -> entry.trim().replace(" ", "")) - .filter(entry -> entry.isEmpty() == false) - .forEach(this::onChannelMapEntry); + .map(entry -> entry.trim().replace(" ", "")) + .filter(entry -> entry.isEmpty() == false) + .forEach(this::onChannelMapEntry); return unmodifiableList(outputStreams); } } diff --git a/fflauncher/src/main/java/tv/hd3g/fflauncher/acm/InputAudioStream.java b/fflauncher/src/main/java/tv/hd3g/fflauncher/acm/InputAudioStream.java index 33b3a8bf..6bca3061 100644 --- a/fflauncher/src/main/java/tv/hd3g/fflauncher/acm/InputAudioStream.java +++ b/fflauncher/src/main/java/tv/hd3g/fflauncher/acm/InputAudioStream.java @@ -58,15 +58,15 @@ public static List getListFromAnalysis(final List for (var pos = 0; pos < sourcesAnalysis.size(); pos++) { final var analysis = sourcesAnalysis.get(pos); final var absoluteSourceIndex = pos; - analysis.getAudiosStreams() - .sorted((l, r) -> Integer.compare(l.getIndex(), r.getIndex())) + analysis.getAudioStreams() + .sorted((l, r) -> Integer.compare(l.index(), r.index())) .map(as -> { - final var layout = as.getChannelLayout(); + final var layout = as.channelLayout(); if (layout == null || layout.isEmpty()) { - return new InputAudioStream(ChannelLayout.getByChannelSize(as.getChannels()), - absoluteSourceIndex, as.getIndex()); + return new InputAudioStream(ChannelLayout.getByChannelSize(as.channels()), + absoluteSourceIndex, as.index()); } - return new InputAudioStream(ChannelLayout.parse(layout), absoluteSourceIndex, as.getIndex()); + return new InputAudioStream(ChannelLayout.parse(layout), absoluteSourceIndex, as.index()); }) .forEach(allSourceStreams::add); } @@ -87,27 +87,7 @@ public static InputAudioStream getFromRelativeIndexes(final List streamList, + public static ACMSelectedInputChannel getFromAbsoluteIndex(final List streamList, final int channelIndex) { var totalChannelCount = 0; for (final var inStream : streamList) { @@ -115,7 +95,7 @@ public static SelectedInputChannel getFromAbsoluteIndex(final List (l.isStdErr() && ffprobe.filterOutErrorLines().test(l - .getLine()))); + .getLine()))); return ffprobe; } @@ -65,7 +63,7 @@ private FFprobeJAXB execute(final FFprobe ffprobe) { final var rtFFprobe = ffprobe.execute(executableFinder); final var textRetention = rtFFprobe.checkExecutionGetText(); final var stdOut = textRetention.getStdout(false, System.lineSeparator()); - return new FFprobeJAXB(stdOut, warn -> log.warn(warn)); + return FFprobeJAXB.load(stdOut); } /** diff --git a/fflauncher/src/test/java/tv/hd3g/fflauncher/FFmpegTest.java b/fflauncher/src/test/java/tv/hd3g/fflauncher/FFmpegTest.java index f34060ab..f4fb4bea 100644 --- a/fflauncher/src/test/java/tv/hd3g/fflauncher/FFmpegTest.java +++ b/fflauncher/src/test/java/tv/hd3g/fflauncher/FFmpegTest.java @@ -188,7 +188,7 @@ void testGetFirstVideoStream() throws IOException, InterruptedException, Executi assertTrue(test_file.exists()); final var s = probeMedia.doAnalysing(test_file.getPath()).getFirstVideoStream().get(); - assertEquals("ffv1", s.getCodecName()); + assertEquals("ffv1", s.codecName()); } @Test diff --git a/fflauncher/src/test/java/tv/hd3g/fflauncher/acm/AudioChannelManipulationSetupTest.java b/fflauncher/src/test/java/tv/hd3g/fflauncher/acm/AudioChannelManipulationSetupTest.java index e33d1282..9aa85b34 100644 --- a/fflauncher/src/test/java/tv/hd3g/fflauncher/acm/AudioChannelManipulationSetupTest.java +++ b/fflauncher/src/test/java/tv/hd3g/fflauncher/acm/AudioChannelManipulationSetupTest.java @@ -23,6 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.when; import static tv.hd3g.fflauncher.acm.AudioChannelManipulationSetup.extractFromParentheses; import static tv.hd3g.fflauncher.enums.ChannelLayout.DOWNMIX; import static tv.hd3g.fflauncher.enums.ChannelLayout.MONO; @@ -33,7 +34,6 @@ import java.util.List; import java.util.stream.Stream; -import org.ffmpeg.ffprobe.StreamType; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; @@ -44,6 +44,7 @@ import tv.hd3g.fflauncher.enums.ChannelLayout; import tv.hd3g.fflauncher.enums.SourceNotFoundPolicy.SourceNotFoundException; import tv.hd3g.ffprobejaxb.FFprobeJAXB; +import tv.hd3g.ffprobejaxb.data.FFProbeStream; class AudioChannelManipulationSetupTest { @@ -79,25 +80,25 @@ void init() { setup = new AudioChannelManipulationSetup(); ffprobeJAXBfile0 = Mockito.mock(FFprobeJAXB.class); - final var stream00 = new StreamType(); - stream00.setIndex(1); - stream00.setChannelLayout("stereo"); - stream00.setChannels(2); + final var stream00 = Mockito.mock(FFProbeStream.class); + when(stream00.index()).thenReturn(1); + when(stream00.channelLayout()).thenReturn("stereo"); + when(stream00.channels()).thenReturn(2); - final var stream01 = new StreamType(); - stream01.setIndex(2); - stream01.setChannelLayout("stereo"); - stream01.setChannels(2); + final var stream01 = Mockito.mock(FFProbeStream.class); + when(stream01.index()).thenReturn(2); + when(stream01.channelLayout()).thenReturn("stereo"); + when(stream01.channels()).thenReturn(2); - Mockito.when(ffprobeJAXBfile0.getAudiosStreams()).thenReturn(Stream.of(stream00, stream01)); + Mockito.when(ffprobeJAXBfile0.getAudioStreams()).thenReturn(Stream.of(stream00, stream01)); ffprobeJAXBfile1 = Mockito.mock(FFprobeJAXB.class); - final var stream1 = new StreamType(); - stream1.setIndex(0); - stream1.setChannelLayout(""); - stream1.setChannels(1); + final var stream1 = Mockito.mock(FFProbeStream.class); + when(stream1.index()).thenReturn(0); + when(stream1.channelLayout()).thenReturn(""); + when(stream1.channels()).thenReturn(1); - Mockito.when(ffprobeJAXBfile1.getAudiosStreams()).thenReturn(Stream.of(stream1)); + Mockito.when(ffprobeJAXBfile1.getAudioStreams()).thenReturn(Stream.of(stream1)); sourcesFiles = List.of(ffprobeJAXBfile0, ffprobeJAXBfile1); } @@ -356,10 +357,10 @@ void testGetAllOutputStreamList_SourcesByRefsChannels_syntaxError() { } static void checkOutputAudioStream(final OutputAudioChannel outChannel, - final int inFileIndex, - final int inStreamIndex, - final int chInIndex, - final int chOutIndex) { + final int inFileIndex, + final int inStreamIndex, + final int chInIndex, + final int chOutIndex) { assertEquals(inFileIndex, outChannel.getInputAudioStream().getFileIndex()); assertEquals(inStreamIndex, outChannel.getInputAudioStream().getStreamIndex()); assertEquals(chInIndex, outChannel.getChInIndex().getPosInStream()); @@ -367,9 +368,9 @@ static void checkOutputAudioStream(final OutputAudioChannel outChannel, } static List checkOutputAudioStream(final OutputAudioStream outStream, - final int fileIndex, - final int streamIndex, - final ChannelLayout layout) { + final int fileIndex, + final int streamIndex, + final ChannelLayout layout) { assertEquals(fileIndex, outStream.getFileIndex()); assertEquals(streamIndex, outStream.getStreamIndex()); assertEquals(layout, outStream.getLayout()); diff --git a/fflauncher/src/test/java/tv/hd3g/fflauncher/acm/AudioChannelManipulationTest.java b/fflauncher/src/test/java/tv/hd3g/fflauncher/acm/AudioChannelManipulationTest.java index 817d2a02..da9e8ca0 100644 --- a/fflauncher/src/test/java/tv/hd3g/fflauncher/acm/AudioChannelManipulationTest.java +++ b/fflauncher/src/test/java/tv/hd3g/fflauncher/acm/AudioChannelManipulationTest.java @@ -4,6 +4,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.when; import static tv.hd3g.fflauncher.acm.AudioChannelManipulation.checkClassicStreamDesc; import static tv.hd3g.fflauncher.acm.InputAudioChannelSelector.IN_CH0; import static tv.hd3g.fflauncher.acm.InputAudioChannelSelector.IN_CH1; @@ -14,12 +15,12 @@ import java.util.LinkedHashMap; import java.util.List; -import org.ffmpeg.ffprobe.StreamType; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import tv.hd3g.ffprobejaxb.FFprobeJAXB; +import tv.hd3g.ffprobejaxb.data.FFProbeStream; import tv.hd3g.processlauncher.cmdline.Parameters; class AudioChannelManipulationTest { @@ -29,17 +30,17 @@ class AudioChannelManipulationTest { final static InputAudioStream inMono3 = new InputAudioStream(MONO, 0, 4); final static InputAudioStream inStereo = new InputAudioStream(STEREO, 1, 0); final static OutputAudioStream outStreamMono0 = new OutputAudioStream(MONO, 0, 0) - .mapChannel(inStereo, IN_CH0); + .mapChannel(inStereo, IN_CH0); final static OutputAudioStream outStreamMono1 = new OutputAudioStream(MONO, 0, 1) - .mapChannel(inStereo, IN_CH1); + .mapChannel(inStereo, IN_CH1); final static OutputAudioStream outStreamStereo0 = new OutputAudioStream(STEREO, 1, 0) - .mapChannel(inMono1, IN_CH0) - .mapChannel(inMono0, IN_CH0); + .mapChannel(inMono1, IN_CH0) + .mapChannel(inMono0, IN_CH0); final static OutputAudioStream outStreamStereo1 = new OutputAudioStream(STEREO, 2, 1) - .mapChannel(inMono2, IN_CH0) - .mapChannel(inMono3, IN_CH0); + .mapChannel(inMono2, IN_CH0) + .mapChannel(inMono3, IN_CH0); final static OutputAudioStream outStreamSimpleMono = new OutputAudioStream(MONO, 0, 1) - .mapChannel(inMono0, IN_CH0); + .mapChannel(inMono0, IN_CH0); @Test void testEmpty() { @@ -53,7 +54,7 @@ void testEmpty() { @Test void testStraight_1stream() { final var outStreamSimpleStereo = new OutputAudioStream(STEREO, 0, 0) - .mapChannel(inStereo, IN_CH0).mapChannel(inStereo, IN_CH1); + .mapChannel(inStereo, IN_CH0).mapChannel(inStereo, IN_CH1); final var acm = new AudioChannelManipulation(List.of(outStreamSimpleStereo)); assertTrue(acm.getToSplitFilterList().isEmpty()); @@ -65,16 +66,16 @@ void testStraight_1stream() { @Test void testStraight_4streams() { final var outStreamSimpleMono0 = new OutputAudioStream(MONO, 0, 0) - .mapChannel(inMono0, IN_CH0); + .mapChannel(inMono0, IN_CH0); final var outStreamSimpleMono1 = new OutputAudioStream(MONO, 0, 1) - .mapChannel(inMono1, IN_CH0); + .mapChannel(inMono1, IN_CH0); final var outStreamSimpleMono2 = new OutputAudioStream(MONO, 0, 2) - .mapChannel(inMono2, IN_CH0); + .mapChannel(inMono2, IN_CH0); final var outStreamSimpleMono3 = new OutputAudioStream(MONO, 0, 3) - .mapChannel(inMono3, IN_CH0); + .mapChannel(inMono3, IN_CH0); final var sourceList = List.of( - outStreamSimpleMono0, outStreamSimpleMono1, outStreamSimpleMono2, outStreamSimpleMono3); + outStreamSimpleMono0, outStreamSimpleMono1, outStreamSimpleMono2, outStreamSimpleMono3); final var acm = new AudioChannelManipulation(sourceList); assertTrue(acm.getToSplitFilterList().isEmpty()); assertTrue(acm.getMergeJoinList().isEmpty()); @@ -85,7 +86,7 @@ void testStraight_4streams() { @Test void testStraight_remap() { final var outStreamSwappedStereo = new OutputAudioStream(STEREO, 0, 0) - .mapChannel(inStereo, IN_CH1).mapChannel(inStereo, IN_CH0); + .mapChannel(inStereo, IN_CH1).mapChannel(inStereo, IN_CH0); final var acm = new AudioChannelManipulation(List.of(outStreamSwappedStereo)); assertTrue(acm.getToSplitFilterList().isEmpty()); @@ -103,7 +104,7 @@ void testStraight_remap() { @Test void testStraight_layoutChange() { final var outStreamDownmix = new OutputAudioStream(DOWNMIX, 0, 0) - .mapChannel(inStereo, IN_CH0).mapChannel(inStereo, IN_CH1); + .mapChannel(inStereo, IN_CH0).mapChannel(inStereo, IN_CH1); final var acm = new AudioChannelManipulation(List.of(outStreamDownmix)); assertTrue(acm.getToSplitFilterList().isEmpty()); @@ -135,9 +136,9 @@ void testACMSandbox_split() { @Test void testACMSandbox_split_duplicate() { final var outStreamMono0 = new OutputAudioStream(MONO, 0, 0) - .mapChannel(inStereo, IN_CH0); + .mapChannel(inStereo, IN_CH0); final var outStreamMono0Again = new OutputAudioStream(MONO, 0, 1) - .mapChannel(inStereo, IN_CH0); + .mapChannel(inStereo, IN_CH0); final var acm = new AudioChannelManipulation(List.of(outStreamMono0, outStreamMono0Again)); assertEquals(2, acm.getToSplitFilterList().size()); @@ -247,7 +248,7 @@ void testGetMapParameters_directMap() { void testGetMapParameters_manual() { final var acm = new AudioChannelManipulation(List.of(outStreamStereo0, outStreamMono0, outStreamStereo1)); final var pList = acm.getMapParameters( - (idx, outStream) -> Parameters.of(String.valueOf(idx), outStream.toMapReferenceAsInput())); + (idx, outStream) -> Parameters.of(String.valueOf(idx), outStream.toMapReferenceAsInput())); assertNotNull(pList); assertEquals(2, pList.size()); assertEquals("0 mergjoin0 1 split0", pList.get(0).toString()); @@ -279,16 +280,18 @@ void testGetMapParameters_ListString() { void testGetMapParameters_InputStreams() { final var probe = Mockito.mock(FFprobeJAXB.class); - final var streamTypeVideo = new StreamType(); - streamTypeVideo.setIndex(0); - streamTypeVideo.setCodecType("video"); - final var streamTypeAudio = new StreamType(); - streamTypeAudio.setIndex(1); - streamTypeAudio.setCodecType("audio"); + final var streamTypeVideo = Mockito.mock(FFProbeStream.class); + when(streamTypeVideo.index()).thenReturn(0); + when(streamTypeVideo.codecType()).thenReturn("video"); + + final var streamTypeAudio = Mockito.mock(FFProbeStream.class); + when(streamTypeAudio.index()).thenReturn(1); + when(streamTypeAudio.codecType()).thenReturn("audio"); + Mockito.when(probe.getStreams()).thenReturn(List.of(streamTypeVideo, streamTypeAudio)); final var acm = new AudioChannelManipulation(List.of(outStreamStereo0, outStreamMono0, outStreamStereo1)); - final var tested = new LinkedHashMap(); + final var tested = new LinkedHashMap(); final var pList = acm.getMapParameters(List.of(probe), (i, s) -> { tested.put(i, s); return true; diff --git a/fflauncher/src/test/java/tv/hd3g/fflauncher/acm/InputAudioStreamTest.java b/fflauncher/src/test/java/tv/hd3g/fflauncher/acm/InputAudioStreamTest.java index 772b4d30..b6267b0b 100644 --- a/fflauncher/src/test/java/tv/hd3g/fflauncher/acm/InputAudioStreamTest.java +++ b/fflauncher/src/test/java/tv/hd3g/fflauncher/acm/InputAudioStreamTest.java @@ -19,6 +19,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; +import static org.mockito.Mockito.when; import static tv.hd3g.fflauncher.acm.InputAudioChannelSelector.IN_CH12; import static tv.hd3g.fflauncher.enums.ChannelLayout.CH5_1; import static tv.hd3g.fflauncher.enums.ChannelLayout.MONO; @@ -27,11 +28,11 @@ import java.util.List; import java.util.stream.Stream; -import org.ffmpeg.ffprobe.StreamType; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import tv.hd3g.ffprobejaxb.FFprobeJAXB; +import tv.hd3g.ffprobejaxb.data.FFProbeStream; class InputAudioStreamTest { @@ -57,11 +58,12 @@ void testToString() { @Test void testGetListFromAnalysisFFprobeJAXBArray() { final var file0 = Mockito.mock(FFprobeJAXB.class); - final var stream00 = new StreamType(); - stream00.setIndex(1); - stream00.setChannelLayout("5.1"); - stream00.setChannels(6); - Mockito.when(file0.getAudiosStreams()).thenReturn(Stream.of(stream00)); + final var stream00 = Mockito.mock(FFProbeStream.class); + when(stream00.index()).thenReturn(1); + when(stream00.channelLayout()).thenReturn("5.1"); + when(stream00.channels()).thenReturn(6); + + Mockito.when(file0.getAudioStreams()).thenReturn(Stream.of(stream00)); final var streamList = InputAudioStream.getListFromAnalysis(file0); assertNotNull(streamList); @@ -72,25 +74,26 @@ void testGetListFromAnalysisFFprobeJAXBArray() { @Test void testGetListFromAnalysisListOfFFprobeJAXB() { final var file0 = Mockito.mock(FFprobeJAXB.class); - final var stream00 = new StreamType(); - stream00.setIndex(1); - stream00.setChannelLayout("stereo"); - stream00.setChannels(2); - final var stream01 = new StreamType(); - stream01.setIndex(2); - stream01.setChannelLayout("stereo"); - stream01.setChannels(2); + final var stream00 = Mockito.mock(FFProbeStream.class); + when(stream00.index()).thenReturn(1); + when(stream00.channelLayout()).thenReturn("stereo"); + when(stream00.channels()).thenReturn(2); + + final var stream01 = Mockito.mock(FFProbeStream.class); + when(stream01.index()).thenReturn(2); + when(stream01.channelLayout()).thenReturn("stereo"); + when(stream01.channels()).thenReturn(2); - Mockito.when(file0.getAudiosStreams()).thenReturn(Stream.of(stream00, stream01)); + Mockito.when(file0.getAudioStreams()).thenReturn(Stream.of(stream00, stream01)); final var file1 = Mockito.mock(FFprobeJAXB.class); - final var stream1 = new StreamType(); - stream1.setIndex(0); - stream1.setChannelLayout(""); - stream1.setChannels(1); + final var stream1 = Mockito.mock(FFProbeStream.class); + when(stream1.index()).thenReturn(0); + when(stream1.channelLayout()).thenReturn(""); + when(stream1.channels()).thenReturn(1); - Mockito.when(file1.getAudiosStreams()).thenReturn(Stream.of(stream1)); + Mockito.when(file1.getAudioStreams()).thenReturn(Stream.of(stream1)); final var streamList = InputAudioStream.getListFromAnalysis(List.of(file0, file1)); assertNotNull(streamList); @@ -119,9 +122,9 @@ void testGetFromRelativeIndexes() { @Test void testSelectedInputChannel() { - final var sic = audioStream.new SelectedInputChannel(audioStream, IN_CH12); - assertEquals(audioStream, sic.getInputAudioStream()); - assertEquals(IN_CH12, sic.getChannelSelector()); + final var sic = new ACMSelectedInputChannel(audioStream, IN_CH12); + assertEquals(audioStream, sic.inputAudioStream()); + assertEquals(IN_CH12, sic.channelSelector()); } @Test @@ -134,12 +137,12 @@ void testGetFromAbsoluteIndex() { final var ch2 = InputAudioStream.getFromAbsoluteIndex(list, 2); final var ch3 = InputAudioStream.getFromAbsoluteIndex(list, 3); - assertEquals(audioStream0, ch0.getInputAudioStream()); - assertEquals(InputAudioChannelSelector.IN_CH0, ch0.getChannelSelector()); - assertEquals(audioStream0, ch1.getInputAudioStream()); - assertEquals(InputAudioChannelSelector.IN_CH1, ch1.getChannelSelector()); - assertEquals(audioStream1, ch2.getInputAudioStream()); - assertEquals(InputAudioChannelSelector.IN_CH0, ch2.getChannelSelector()); + assertEquals(audioStream0, ch0.inputAudioStream()); + assertEquals(InputAudioChannelSelector.IN_CH0, ch0.channelSelector()); + assertEquals(audioStream0, ch1.inputAudioStream()); + assertEquals(InputAudioChannelSelector.IN_CH1, ch1.channelSelector()); + assertEquals(audioStream1, ch2.inputAudioStream()); + assertEquals(InputAudioChannelSelector.IN_CH0, ch2.channelSelector()); assertNull(ch3); } } diff --git a/fflauncher/src/test/java/tv/hd3g/fflauncher/recipes/MediaAnalyserSessionTest.java b/fflauncher/src/test/java/tv/hd3g/fflauncher/recipes/MediaAnalyserSessionTest.java index 3abb6761..bc0022ae 100644 --- a/fflauncher/src/test/java/tv/hd3g/fflauncher/recipes/MediaAnalyserSessionTest.java +++ b/fflauncher/src/test/java/tv/hd3g/fflauncher/recipes/MediaAnalyserSessionTest.java @@ -44,7 +44,6 @@ import java.util.function.Supplier; import java.util.stream.Stream; -import org.ffmpeg.ffprobe.StreamType; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -66,6 +65,7 @@ import tv.hd3g.fflauncher.resultparser.Ebur128StrErrFilterEvent; import tv.hd3g.fflauncher.resultparser.RawStdErrFilterEvent; import tv.hd3g.ffprobejaxb.FFprobeJAXB; +import tv.hd3g.ffprobejaxb.data.FFProbeStream; import tv.hd3g.processlauncher.InvalidExecution; import tv.hd3g.processlauncher.LineEntry; import tv.hd3g.processlauncher.Processlauncher; @@ -134,7 +134,7 @@ class MediaAnalyserSessionTest { @Mock FFprobeJAXB ffprobeResult; @Mock - StreamType streamType; + FFProbeStream streamType; @Mock BiConsumer ebur128EventConsumer; @Mock @@ -374,19 +374,19 @@ void testProcess_FileInput() { void testProcess_setFFprobeResult_noAudioStreams() { s.setFFprobeResult(ffprobeResult); - when(ffprobeResult.getAudiosStreams()).thenReturn(Stream.empty()); + when(ffprobeResult.getAudioStreams()).thenReturn(Stream.empty()); assertThrows(IllegalStateException.class, () -> s.process(emptyLavfiLinesToMerge)); - verify(ffprobeResult, times(1)).getAudiosStreams(); + verify(ffprobeResult, times(1)).getAudioStreams(); } @Test void testProcess_setFFprobeResult_noVideoStreams() { s.setFFprobeResult(ffprobeResult); - when(ffprobeResult.getAudiosStreams()).thenReturn(Stream.of(streamType)); + when(ffprobeResult.getAudioStreams()).thenReturn(Stream.of(streamType)); when(ffprobeResult.getFirstVideoStream()).thenReturn(Optional.empty()); assertThrows(IllegalStateException.class, () -> s.process(emptyLavfiLinesToMerge)); - verify(ffprobeResult, times(1)).getAudiosStreams(); + verify(ffprobeResult, times(1)).getAudioStreams(); verify(ffprobeResult, times(1)).getFirstVideoStream(); } @@ -396,7 +396,7 @@ void testProcess_setFFprobeResult_noAudioStreams_butNoAudioFilters() { s = new MediaAnalyserSession(mediaAnalyser, source, sourceFile); s.setFFprobeResult(ffprobeResult); - when(ffprobeResult.getAudiosStreams()).thenReturn(Stream.empty()); + when(ffprobeResult.getAudioStreams()).thenReturn(Stream.empty()); when(ffprobeResult.getFirstVideoStream()).thenReturn(Optional.ofNullable(streamType)); final var result = s.process(emptyLavfiLinesToMerge); @@ -416,7 +416,7 @@ void testProcess_setFFprobeResult_noAudioStreams_butNoAudioFilters() { parameters.getParameters()); parameters.clear(); - verify(ffprobeResult, times(1)).getAudiosStreams(); + verify(ffprobeResult, times(1)).getAudioStreams(); verify(ffprobeResult, times(1)).getFirstVideoStream(); verify(processLifecycle, atLeastOnce()).getLauncher(); verify(processlauncher, atLeastOnce()).getFullCommandLine(); @@ -429,7 +429,7 @@ void testProcess_setFFprobeResult_noVideoStreams_butNoVideoFilters() { s = new MediaAnalyserSession(mediaAnalyser, source, sourceFile); s.setFFprobeResult(ffprobeResult); - when(ffprobeResult.getAudiosStreams()).thenReturn(Stream.of(streamType)); + when(ffprobeResult.getAudioStreams()).thenReturn(Stream.of(streamType)); when(ffprobeResult.getFirstVideoStream()).thenReturn(Optional.empty()); final var result = s.process(emptyLavfiLinesToMerge); @@ -449,7 +449,7 @@ void testProcess_setFFprobeResult_noVideoStreams_butNoVideoFilters() { parameters.getParameters()); parameters.clear(); - verify(ffprobeResult, times(1)).getAudiosStreams(); + verify(ffprobeResult, times(1)).getAudioStreams(); verify(ffprobeResult, times(1)).getFirstVideoStream(); verify(processLifecycle, atLeastOnce()).getLauncher(); verify(processlauncher, atLeastOnce()).getFullCommandLine(); diff --git a/fflauncher/src/test/java/tv/hd3g/fflauncher/recipes/ProbeMediaTest.java b/fflauncher/src/test/java/tv/hd3g/fflauncher/recipes/ProbeMediaTest.java index b6ced48f..d5de7da0 100644 --- a/fflauncher/src/test/java/tv/hd3g/fflauncher/recipes/ProbeMediaTest.java +++ b/fflauncher/src/test/java/tv/hd3g/fflauncher/recipes/ProbeMediaTest.java @@ -53,8 +53,8 @@ void test() throws Exception { final var probe = new ProbeMedia(executableFinder, Executors.newSingleThreadScheduledExecutor()); final var result = probe.doAnalysing(test_file_to_create); - assertEquals(1, result.getFormat().getDuration().intValue()); - assertEquals(432, result.getVideoStreams().findFirst().get().getHeight().intValue()); + assertEquals(1, Math.round(result.getFormat().get().duration())); + assertEquals(432, result.getVideoStreams().findFirst().get().height()); ffmpeg.cleanUpOutputFiles(true, false); } diff --git a/ffprobejaxb/README.md b/ffprobejaxb/README.md index b07b19fe..dc061dc0 100644 --- a/ffprobejaxb/README.md +++ b/ffprobejaxb/README.md @@ -2,22 +2,65 @@ Use with Java and JAXB API for import [ffprobe](https://ffmpeg.org/ffprobe.html) xml result. -![Java CI with Maven](https://github.com/hdsdi3g/ffprobe-jaxb/workflows/Java%20CI%20with%20Maven/badge.svg) +Start ffprobe like to generate a XML file compilant: -[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=hdsdi3g_ffprobe-jaxb&metric=alert_status)](https://sonarcloud.io/dashboard?id=hdsdi3g_ffprobe-jaxb) +```shell +ffprobe -print_format xml -show_streams -show_format -show_programs -show_chapters -hide_banner -i ` +``` -![CodeQL](https://github.com/hdsdi3g/ffprobe-jaxb/workflows/CodeQL/badge.svg) +Optionally, you can add/use `-show_library_versions`, `-show_program_version`, `-show_error`, and `-show_pixel_formats`. -Start ffprobe like: +You should see another project to use *ffprobe-jaxb*: [fflauncher](https://github.com/hdsdi3g/fflauncher). -```shell -ffprobe -print_format xml -show_streams -show_format -hide_banner -i ` -``` +## Add new XSDs, after a new ffmpeg release -And pass the XML (via stdout) to give to Java (11+): +This documentation is only for *ffprobe-jaxb* maintenance. -```java -new FFprobeJAXB(final String xmlContent, final Consumer onWarnLog); -``` +> If the new XSD is the same at the most recent in the `old xsd refs` directory. -You should see another project to use *ffprobe-jaxb*: [fflauncher](https://github.com/hdsdi3g/fflauncher). +Do nothing. + +> If the new XSD adds new XML attributes + +Do an *upgrade*. + +> If the new XSD change the XML struct, rename/removes attributes, add tags... + +Do an *add*. + +On both *upgrade* and *add*: + + - put the new XSD on `src/main/resources` + - update pom.xml: change the generated package name `project/build/plugins/plugin[jaxb-maven-plugin]/configuration/generatePackage` from `org.ffmpeg.ffprobeXXX` to `org.ffmpeg.ffprobeYYY` where XXX and YYY are the current/newer ffmpeg release version dot less. + - `mvn clean` / `mvn compile` + - Move the new generated code from `target/generated-sources/xjc` to `src/main/java`. + - Move the XSD from `src/main/resources` to the `old xsd refs` dir. + - Create a new class in `tv.hd3g.ffprobejaxb` **cloned from the most recent JAXB class** `FFprobeJAXBXXX` to `FFprobeJAXBYYY`. + - Change the class `FFprobeJAXBYYY` imports from `import org.ffmpeg.ffprobeXXX.*;` to `import org.ffmpeg.ffprobeYYY.*;` + - "Adapt" the code. + - Declare the new `FFprobeJAXBYYY` class in `FFprobeXSDVersion`, **newer entry on first**. + - Run tests + - Maybe update the end-to-end ffprobe test + +## Do an end-to-end ffprobe test + +On posix/Linux, install ffmpeg (a by default, not need to get some fancy codecs) + bash + wget + the full toolkit to build ffmpeg itself (make...). + +Run `create-demo-files.bash`. It will produce video test files on `.demo-media-files` directory. + +Add the new ffmpeg version/git tag on the bottom of `extract-compile-ffmpeg.bash`. + +Run `extract-compile-ffmpeg.bash`. + +It will: + - download all ffprobe versions mentioned on the script on `.ffmpeg-compile`. + - make (compile only) ffprobe + - extract XSD from source + - run all ffprobes to the previously created demo-files + - push all the produced XMLs, **only if missing** on the `src/test/resources` + +During the next E2E test run, all will be check. + +Free feel to adapt E2E java code if the test it to sensible (like file sizes / bitrates). + +Only that can prove ffprobejaxb can run on all XMLs produced by all (current) ffprobe versions. diff --git a/ffprobejaxb/create-demo-files.bash b/ffprobejaxb/create-demo-files.bash new file mode 100755 index 00000000..a6048ffb --- /dev/null +++ b/ffprobejaxb/create-demo-files.bash @@ -0,0 +1,52 @@ +#!/bin/bash +# This file is part of medialib as internal and test source. +# It will generate some boring but specific audios and videos files. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either command 3 of the License, or +# any later command. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# Copyright (C) Media ex Machina 2023 +# +# Usage : just $0 +# You need a recent (>v5) ffmpeg setup + +set -eu + +mkdir -p .demo-media-files +cd .demo-media-files + +OPT="-y -hide_banner"; +SA="anoisesrc=sample_rate=48000:duration=5:color=pink"; +SV="mandelbrot=start_scale=1:bailout=2:end_scale=0.001:size=cif:rate=25,format=pix_fmts=yuv420p"; +FC="[0:a][1:a]join=inputs=2:channel_layout=stereo,volume=volume=-18dB[a]"; + +ffmpeg -f lavfi -i "$SA" -f lavfi -i "$SA" -f lavfi -i "$SV" -t 00:00:05 \ + -filter_complex "$FC" -map "2:0" -map "[a]" $OPT -c:v ffv1 -c:a pcm_s16le test-ffv1.mov + +ffmpeg -f lavfi -i "$SA" -f lavfi -i "$SA" -f lavfi -i "$SV" -t 00:00:05 \ + -filter_complex "$FC" -map "2:0" -map "[a]" $OPT -c:v mpeg2video -b:v 15M -c:a mp2 -bf 2 -b:a 256k \ + -f mpegts -metadata service_provider="Media ex Machina" -metadata service_name="Demo render" \ + test-mpeg2.ts + +TMP_CHAPTERS="temp-chapters.txt"; +cat <> "$TMP_CHAPTERS" +[CHAPTER] +TIMEBASE=1/1000 +START=1 +END=3000 +title=Chap One +EOF + +ffmpeg -f lavfi -i "$SA" -f lavfi -i "$SA" -f lavfi -i "$SV" -f ffmetadata -i "$TMP_CHAPTERS" -t 00:00:05 \ + -filter_complex "$FC" -map "2:0" -map "[a]" -map_metadata 2 $OPT -c:v vp8 -c:a aac \ + -metadata:g title="Media title" -metadata:s:v:0 akey=avalue -disposition:a:0 karaoke+timed_thumbnails test-vp8.mkv + +rm -f "$TMP_CHAPTERS" + diff --git a/ffprobejaxb/examples/out0.xml b/ffprobejaxb/examples/out0.xml deleted file mode 100644 index 9f159bd8..00000000 --- a/ffprobejaxb/examples/out0.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ffprobejaxb/examples/out1.xml b/ffprobejaxb/examples/out1.xml deleted file mode 100644 index 3db938f9..00000000 --- a/ffprobejaxb/examples/out1.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/ffprobejaxb/examples/out2-nobitrate.xml b/ffprobejaxb/examples/out2-nobitrate.xml deleted file mode 100644 index 937e256a..00000000 --- a/ffprobejaxb/examples/out2-nobitrate.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ffprobejaxb/examples/outErr.txt b/ffprobejaxb/examples/outErr.txt deleted file mode 100644 index 83cc6248..00000000 --- a/ffprobejaxb/examples/outErr.txt +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/ffprobejaxb/examples/outNope.xml b/ffprobejaxb/examples/outNope.xml deleted file mode 100644 index 96ac7827..00000000 --- a/ffprobejaxb/examples/outNope.xml +++ /dev/null @@ -1,4 +0,0 @@ - - -Sorry - diff --git a/ffprobejaxb/extract-compile-ffmpeg.bash b/ffprobejaxb/extract-compile-ffmpeg.bash new file mode 100755 index 00000000..fa1e1912 --- /dev/null +++ b/ffprobejaxb/extract-compile-ffmpeg.bash @@ -0,0 +1,75 @@ +#!/bin/bash + +set -eu + +DEMO_VIDEO_DIR=".demo-media-files"; +if [ ! -d "$DEMO_VIDEO_DIR" ]; then + ./create-demo-files.bash +fi + +DEMO_VIDEO_MOV="$DEMO_VIDEO_DIR/test-ffv1.mov"; +DEMO_VIDEO_TS="$DEMO_VIDEO_DIR/test-mpeg2.ts"; +DEMO_VIDEO_VP8="$DEMO_VIDEO_DIR/test-vp8.mkv"; + +mkdir -p .ffmpeg-compile +cd .ffmpeg-compile + +function video_test() { + local VIDEOF="../$1"; + local VERSION="$2"; + local XML_FILE="../src/test/resources/$(basename "$VIDEOF")-$VERSION.xml"; + if [ ! -f "$XML_FILE" ]; then + ./ffprobe-$VERSION -of xml -show_streams -show_format -show_programs -show_chapters -show_library_versions -show_program_version -show_error -show_pixel_formats -i "$VIDEOF" > "$XML_FILE"; + fi +} + +function make_and_test() { + local VERSION="$1"; + local NAME="n$VERSION.tar.gz"; + local DIR_NAME="FFmpeg-n$VERSION"; + local FFPROBE_DEST="ffprobe-$VERSION"; + + if [ ! -f "$FFPROBE_DEST" ]; then + if [ ! -f "$NAME" ]; then + wget "https://github.com/FFmpeg/FFmpeg/archive/refs/tags/$NAME" + fi + if [ ! -d "$DIR_NAME" ]; then + tar xf "$NAME"; + fi + cd "$DIR_NAME"; + ./configure --disable-ffmpeg --disable-ffplay + make -j $(nproc) + mv ffprobe "../$FFPROBE_DEST" + mv doc/ffprobe.xsd "../$FFPROBE_DEST.xsd" + cd .. + fi + + video_test "$DEMO_VIDEO_MOV" "$VERSION" + video_test "$DEMO_VIDEO_TS" "$VERSION" + video_test "$DEMO_VIDEO_VP8" "$VERSION" + + if [ -f "$NAME" ]; then + rm -f "$NAME"; + fi + if [ -d "$DIR_NAME" ]; then + rm -rf "$DIR_NAME"; + fi +} + +make_and_test "6.1.1" +make_and_test "6.2-dev" +make_and_test "6.1" +make_and_test "5.1.4" +make_and_test "2.8.22" +make_and_test "3.4.13" + +make_and_test "4.1.11" +make_and_test "4.2.9" +make_and_test "4.3.6" +make_and_test "4.4.4" + +make_and_test "5.0.3" +make_and_test "5.1.3" +make_and_test "6.0" +make_and_test "6.1-dev" + diff --git a/ffprobejaxb/src/main/resources/ffprobe-6.0.xsd b/ffprobejaxb/old xsd refs/ffprobe-4.3.6.xsd old mode 100644 new mode 100755 similarity index 92% rename from ffprobejaxb/src/main/resources/ffprobe-6.0.xsd rename to ffprobejaxb/old xsd refs/ffprobe-4.3.6.xsd index 09203801..71cbd23e --- a/ffprobejaxb/src/main/resources/ffprobe-6.0.xsd +++ b/ffprobejaxb/old xsd refs/ffprobe-4.3.6.xsd @@ -29,18 +29,22 @@ - - - - + + + + + + - - - - - + + + + + + + @@ -57,6 +61,8 @@ + + @@ -86,14 +92,14 @@ + + - - @@ -195,11 +201,6 @@ - - - - - @@ -214,10 +215,10 @@ + - @@ -226,7 +227,6 @@ - @@ -238,6 +238,7 @@ + @@ -246,7 +247,6 @@ - @@ -273,6 +273,10 @@ + + + + @@ -354,6 +358,7 @@ + diff --git a/ffprobejaxb/old xsd refs/ffprobe-6.1.1.xsd b/ffprobejaxb/old xsd refs/ffprobe-6.1.1.xsd new file mode 100755 index 00000000..23d97ed1 --- /dev/null +++ b/ffprobejaxb/old xsd refs/ffprobe-6.1.1.xsd @@ -0,0 +1,409 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/pom.xml b/ffprobejaxb/pom.xml index 2a596bc2..702f4de5 100644 --- a/ffprobejaxb/pom.xml +++ b/ffprobejaxb/pom.xml @@ -16,6 +16,11 @@ ../pom.xml + + **/org/ffmpeg/ffprobe*/*.java + **/tv/hd3g/ffprobejaxb/FFprobeJAXB*.java + + tv.hd3g.commons @@ -61,7 +66,7 @@ XMLSCHEMA - org.ffmpeg.ffprobe + org.ffmpeg.ffprobe611 true en false diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ChapterType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ChapterType.java new file mode 100644 index 00000000..a7e47ee9 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ChapterType.java @@ -0,0 +1,205 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for chapterType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="chapterType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="tag" type="{http://www.ffmpeg.org/schema/ffprobe}tagType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *       <attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="time_base" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="start" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="start_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="end_time" use="required" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "chapterType", propOrder = { + "tag" +}) +public class ChapterType { + + protected List tag; + @XmlAttribute(name = "id", required = true) + protected int id; + @XmlAttribute(name = "time_base", required = true) + protected String timeBase; + @XmlAttribute(name = "start", required = true) + protected int start; + @XmlAttribute(name = "start_time") + protected Float startTime; + @XmlAttribute(name = "end", required = true) + protected int end; + @XmlAttribute(name = "end_time", required = true) + protected float endTime; + + /** + * Gets the value of the tag property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the tag property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getTag().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link TagType } + * + * + */ + public List getTag() { + if (tag == null) { + tag = new ArrayList(); + } + return this.tag; + } + + /** + * Gets the value of the id property. + * + */ + public int getId() { + return id; + } + + /** + * Sets the value of the id property. + * + */ + public void setId(int value) { + this.id = value; + } + + /** + * Gets the value of the timeBase property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getTimeBase() { + return timeBase; + } + + /** + * Sets the value of the timeBase property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTimeBase(String value) { + this.timeBase = value; + } + + /** + * Gets the value of the start property. + * + */ + public int getStart() { + return start; + } + + /** + * Sets the value of the start property. + * + */ + public void setStart(int value) { + this.start = value; + } + + /** + * Gets the value of the startTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getStartTime() { + return startTime; + } + + /** + * Sets the value of the startTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setStartTime(Float value) { + this.startTime = value; + } + + /** + * Gets the value of the end property. + * + */ + public int getEnd() { + return end; + } + + /** + * Sets the value of the end property. + * + */ + public void setEnd(int value) { + this.end = value; + } + + /** + * Gets the value of the endTime property. + * + */ + public float getEndTime() { + return endTime; + } + + /** + * Sets the value of the endTime property. + * + */ + public void setEndTime(float value) { + this.endTime = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ChaptersType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ChaptersType.java new file mode 100644 index 00000000..d154a397 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ChaptersType.java @@ -0,0 +1,74 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for chaptersType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="chaptersType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="chapter" type="{http://www.ffmpeg.org/schema/ffprobe}chapterType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "chaptersType", propOrder = { + "chapter" +}) +public class ChaptersType { + + protected List chapter; + + /** + * Gets the value of the chapter property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the chapter property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getChapter().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link ChapterType } + * + * + */ + public List getChapter() { + if (chapter == null) { + chapter = new ArrayList(); + } + return this.chapter; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ErrorType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ErrorType.java new file mode 100644 index 00000000..e861e6c1 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ErrorType.java @@ -0,0 +1,84 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for errorType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="errorType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="code" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="string" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "errorType") +public class ErrorType { + + @XmlAttribute(name = "code", required = true) + protected int code; + @XmlAttribute(name = "string", required = true) + protected String string; + + /** + * Gets the value of the code property. + * + */ + public int getCode() { + return code; + } + + /** + * Sets the value of the code property. + * + */ + public void setCode(int value) { + this.code = value; + } + + /** + * Gets the value of the string property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getString() { + return string; + } + + /** + * Sets the value of the string property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setString(String value) { + this.string = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FfprobeType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FfprobeType.java new file mode 100644 index 00000000..c23b9cdd --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FfprobeType.java @@ -0,0 +1,342 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for ffprobeType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="ffprobeType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="program_version" type="{http://www.ffmpeg.org/schema/ffprobe}programVersionType" minOccurs="0"/>
+ *         <element name="library_versions" type="{http://www.ffmpeg.org/schema/ffprobe}libraryVersionsType" minOccurs="0"/>
+ *         <element name="pixel_formats" type="{http://www.ffmpeg.org/schema/ffprobe}pixelFormatsType" minOccurs="0"/>
+ *         <element name="packets" type="{http://www.ffmpeg.org/schema/ffprobe}packetsType" minOccurs="0"/>
+ *         <element name="frames" type="{http://www.ffmpeg.org/schema/ffprobe}framesType" minOccurs="0"/>
+ *         <element name="packets_and_frames" type="{http://www.ffmpeg.org/schema/ffprobe}packetsAndFramesType" minOccurs="0"/>
+ *         <element name="programs" type="{http://www.ffmpeg.org/schema/ffprobe}programsType" minOccurs="0"/>
+ *         <element name="streams" type="{http://www.ffmpeg.org/schema/ffprobe}streamsType" minOccurs="0"/>
+ *         <element name="chapters" type="{http://www.ffmpeg.org/schema/ffprobe}chaptersType" minOccurs="0"/>
+ *         <element name="format" type="{http://www.ffmpeg.org/schema/ffprobe}formatType" minOccurs="0"/>
+ *         <element name="error" type="{http://www.ffmpeg.org/schema/ffprobe}errorType" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "ffprobeType", propOrder = { + "programVersion", + "libraryVersions", + "pixelFormats", + "packets", + "frames", + "packetsAndFrames", + "programs", + "streams", + "chapters", + "format", + "error" +}) +public class FfprobeType { + + @XmlElement(name = "program_version") + protected ProgramVersionType programVersion; + @XmlElement(name = "library_versions") + protected LibraryVersionsType libraryVersions; + @XmlElement(name = "pixel_formats") + protected PixelFormatsType pixelFormats; + protected PacketsType packets; + protected FramesType frames; + @XmlElement(name = "packets_and_frames") + protected PacketsAndFramesType packetsAndFrames; + protected ProgramsType programs; + protected StreamsType streams; + protected ChaptersType chapters; + protected FormatType format; + protected ErrorType error; + + /** + * Gets the value of the programVersion property. + * + * @return + * possible object is + * {@link ProgramVersionType } + * + */ + public ProgramVersionType getProgramVersion() { + return programVersion; + } + + /** + * Sets the value of the programVersion property. + * + * @param value + * allowed object is + * {@link ProgramVersionType } + * + */ + public void setProgramVersion(ProgramVersionType value) { + this.programVersion = value; + } + + /** + * Gets the value of the libraryVersions property. + * + * @return + * possible object is + * {@link LibraryVersionsType } + * + */ + public LibraryVersionsType getLibraryVersions() { + return libraryVersions; + } + + /** + * Sets the value of the libraryVersions property. + * + * @param value + * allowed object is + * {@link LibraryVersionsType } + * + */ + public void setLibraryVersions(LibraryVersionsType value) { + this.libraryVersions = value; + } + + /** + * Gets the value of the pixelFormats property. + * + * @return + * possible object is + * {@link PixelFormatsType } + * + */ + public PixelFormatsType getPixelFormats() { + return pixelFormats; + } + + /** + * Sets the value of the pixelFormats property. + * + * @param value + * allowed object is + * {@link PixelFormatsType } + * + */ + public void setPixelFormats(PixelFormatsType value) { + this.pixelFormats = value; + } + + /** + * Gets the value of the packets property. + * + * @return + * possible object is + * {@link PacketsType } + * + */ + public PacketsType getPackets() { + return packets; + } + + /** + * Sets the value of the packets property. + * + * @param value + * allowed object is + * {@link PacketsType } + * + */ + public void setPackets(PacketsType value) { + this.packets = value; + } + + /** + * Gets the value of the frames property. + * + * @return + * possible object is + * {@link FramesType } + * + */ + public FramesType getFrames() { + return frames; + } + + /** + * Sets the value of the frames property. + * + * @param value + * allowed object is + * {@link FramesType } + * + */ + public void setFrames(FramesType value) { + this.frames = value; + } + + /** + * Gets the value of the packetsAndFrames property. + * + * @return + * possible object is + * {@link PacketsAndFramesType } + * + */ + public PacketsAndFramesType getPacketsAndFrames() { + return packetsAndFrames; + } + + /** + * Sets the value of the packetsAndFrames property. + * + * @param value + * allowed object is + * {@link PacketsAndFramesType } + * + */ + public void setPacketsAndFrames(PacketsAndFramesType value) { + this.packetsAndFrames = value; + } + + /** + * Gets the value of the programs property. + * + * @return + * possible object is + * {@link ProgramsType } + * + */ + public ProgramsType getPrograms() { + return programs; + } + + /** + * Sets the value of the programs property. + * + * @param value + * allowed object is + * {@link ProgramsType } + * + */ + public void setPrograms(ProgramsType value) { + this.programs = value; + } + + /** + * Gets the value of the streams property. + * + * @return + * possible object is + * {@link StreamsType } + * + */ + public StreamsType getStreams() { + return streams; + } + + /** + * Sets the value of the streams property. + * + * @param value + * allowed object is + * {@link StreamsType } + * + */ + public void setStreams(StreamsType value) { + this.streams = value; + } + + /** + * Gets the value of the chapters property. + * + * @return + * possible object is + * {@link ChaptersType } + * + */ + public ChaptersType getChapters() { + return chapters; + } + + /** + * Sets the value of the chapters property. + * + * @param value + * allowed object is + * {@link ChaptersType } + * + */ + public void setChapters(ChaptersType value) { + this.chapters = value; + } + + /** + * Gets the value of the format property. + * + * @return + * possible object is + * {@link FormatType } + * + */ + public FormatType getFormat() { + return format; + } + + /** + * Sets the value of the format property. + * + * @param value + * allowed object is + * {@link FormatType } + * + */ + public void setFormat(FormatType value) { + this.format = value; + } + + /** + * Gets the value of the error property. + * + * @return + * possible object is + * {@link ErrorType } + * + */ + public ErrorType getError() { + return error; + } + + /** + * Sets the value of the error property. + * + * @param value + * allowed object is + * {@link ErrorType } + * + */ + public void setError(ErrorType value) { + this.error = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FormatType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FormatType.java new file mode 100644 index 00000000..50ec826d --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FormatType.java @@ -0,0 +1,329 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for formatType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="formatType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="tag" type="{http://www.ffmpeg.org/schema/ffprobe}tagType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *       <attribute name="filename" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="nb_streams" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="nb_programs" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="format_name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="format_long_name" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="start_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="duration" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="size" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="bit_rate" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="probe_score" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "formatType", propOrder = { + "tag" +}) +public class FormatType { + + protected List tag; + @XmlAttribute(name = "filename", required = true) + protected String filename; + @XmlAttribute(name = "nb_streams", required = true) + protected int nbStreams; + @XmlAttribute(name = "nb_programs", required = true) + protected int nbPrograms; + @XmlAttribute(name = "format_name", required = true) + protected String formatName; + @XmlAttribute(name = "format_long_name") + protected String formatLongName; + @XmlAttribute(name = "start_time") + protected Float startTime; + @XmlAttribute(name = "duration") + protected Float duration; + @XmlAttribute(name = "size") + protected Long size; + @XmlAttribute(name = "bit_rate") + protected Long bitRate; + @XmlAttribute(name = "probe_score") + protected Integer probeScore; + + /** + * Gets the value of the tag property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the tag property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getTag().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link TagType } + * + * + */ + public List getTag() { + if (tag == null) { + tag = new ArrayList(); + } + return this.tag; + } + + /** + * Gets the value of the filename property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getFilename() { + return filename; + } + + /** + * Sets the value of the filename property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setFilename(String value) { + this.filename = value; + } + + /** + * Gets the value of the nbStreams property. + * + */ + public int getNbStreams() { + return nbStreams; + } + + /** + * Sets the value of the nbStreams property. + * + */ + public void setNbStreams(int value) { + this.nbStreams = value; + } + + /** + * Gets the value of the nbPrograms property. + * + */ + public int getNbPrograms() { + return nbPrograms; + } + + /** + * Sets the value of the nbPrograms property. + * + */ + public void setNbPrograms(int value) { + this.nbPrograms = value; + } + + /** + * Gets the value of the formatName property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getFormatName() { + return formatName; + } + + /** + * Sets the value of the formatName property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setFormatName(String value) { + this.formatName = value; + } + + /** + * Gets the value of the formatLongName property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getFormatLongName() { + return formatLongName; + } + + /** + * Sets the value of the formatLongName property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setFormatLongName(String value) { + this.formatLongName = value; + } + + /** + * Gets the value of the startTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getStartTime() { + return startTime; + } + + /** + * Sets the value of the startTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setStartTime(Float value) { + this.startTime = value; + } + + /** + * Gets the value of the duration property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getDuration() { + return duration; + } + + /** + * Sets the value of the duration property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setDuration(Float value) { + this.duration = value; + } + + /** + * Gets the value of the size property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getSize() { + return size; + } + + /** + * Sets the value of the size property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setSize(Long value) { + this.size = value; + } + + /** + * Gets the value of the bitRate property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getBitRate() { + return bitRate; + } + + /** + * Sets the value of the bitRate property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setBitRate(Long value) { + this.bitRate = value; + } + + /** + * Gets the value of the probeScore property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getProbeScore() { + return probeScore; + } + + /** + * Sets the value of the probeScore property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setProbeScore(Integer value) { + this.probeScore = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FrameSideDataListType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FrameSideDataListType.java new file mode 100644 index 00000000..3e6e0f4f --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FrameSideDataListType.java @@ -0,0 +1,76 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for frameSideDataListType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="frameSideDataListType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="side_data" type="{http://www.ffmpeg.org/schema/ffprobe}frameSideDataType" maxOccurs="unbounded"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "frameSideDataListType", propOrder = { + "sideData" +}) +public class FrameSideDataListType { + + @XmlElement(name = "side_data", required = true) + protected List sideData; + + /** + * Gets the value of the sideData property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the sideData property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getSideData().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link FrameSideDataType } + * + * + */ + public List getSideData() { + if (sideData == null) { + sideData = new ArrayList(); + } + return this.sideData; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FrameSideDataTimecodeList.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FrameSideDataTimecodeList.java new file mode 100644 index 00000000..a4f106ba --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FrameSideDataTimecodeList.java @@ -0,0 +1,74 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for frameSideDataTimecodeList complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="frameSideDataTimecodeList">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="timecode" type="{http://www.ffmpeg.org/schema/ffprobe}frameSideDataTimecodeType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "frameSideDataTimecodeList", propOrder = { + "timecode" +}) +public class FrameSideDataTimecodeList { + + protected List timecode; + + /** + * Gets the value of the timecode property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the timecode property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getTimecode().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link FrameSideDataTimecodeType } + * + * + */ + public List getTimecode() { + if (timecode == null) { + timecode = new ArrayList(); + } + return this.timecode; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FrameSideDataTimecodeType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FrameSideDataTimecodeType.java new file mode 100644 index 00000000..a57675b2 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FrameSideDataTimecodeType.java @@ -0,0 +1,65 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for frameSideDataTimecodeType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="frameSideDataTimecodeType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "frameSideDataTimecodeType") +public class FrameSideDataTimecodeType { + + @XmlAttribute(name = "value") + protected String value; + + /** + * Gets the value of the value property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getValue() { + return value; + } + + /** + * Sets the value of the value property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setValue(String value) { + this.value = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FrameSideDataType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FrameSideDataType.java new file mode 100644 index 00000000..407bd0fc --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FrameSideDataType.java @@ -0,0 +1,149 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for frameSideDataType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="frameSideDataType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="timecodes" type="{http://www.ffmpeg.org/schema/ffprobe}frameSideDataTimecodeList" minOccurs="0"/>
+ *       </sequence>
+ *       <attribute name="side_data_type" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="side_data_size" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="timecode" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "frameSideDataType", propOrder = { + "timecodes" +}) +public class FrameSideDataType { + + protected FrameSideDataTimecodeList timecodes; + @XmlAttribute(name = "side_data_type") + protected String sideDataType; + @XmlAttribute(name = "side_data_size") + protected Integer sideDataSize; + @XmlAttribute(name = "timecode") + protected String timecode; + + /** + * Gets the value of the timecodes property. + * + * @return + * possible object is + * {@link FrameSideDataTimecodeList } + * + */ + public FrameSideDataTimecodeList getTimecodes() { + return timecodes; + } + + /** + * Sets the value of the timecodes property. + * + * @param value + * allowed object is + * {@link FrameSideDataTimecodeList } + * + */ + public void setTimecodes(FrameSideDataTimecodeList value) { + this.timecodes = value; + } + + /** + * Gets the value of the sideDataType property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSideDataType() { + return sideDataType; + } + + /** + * Sets the value of the sideDataType property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSideDataType(String value) { + this.sideDataType = value; + } + + /** + * Gets the value of the sideDataSize property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getSideDataSize() { + return sideDataSize; + } + + /** + * Sets the value of the sideDataSize property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setSideDataSize(Integer value) { + this.sideDataSize = value; + } + + /** + * Gets the value of the timecode property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getTimecode() { + return timecode; + } + + /** + * Sets the value of the timecode property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTimecode(String value) { + this.timecode = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FrameType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FrameType.java new file mode 100644 index 00000000..77ec3f87 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FrameType.java @@ -0,0 +1,1041 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for frameType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="frameType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="tag" type="{http://www.ffmpeg.org/schema/ffprobe}tagType" maxOccurs="unbounded" minOccurs="0"/>
+ *         <element name="logs" type="{http://www.ffmpeg.org/schema/ffprobe}logsType" minOccurs="0"/>
+ *         <element name="side_data_list" type="{http://www.ffmpeg.org/schema/ffprobe}frameSideDataListType" minOccurs="0"/>
+ *       </sequence>
+ *       <attribute name="media_type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="stream_index" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="key_frame" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="pts" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="pts_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="pkt_pts" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="pkt_pts_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="pkt_dts" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="pkt_dts_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="best_effort_timestamp" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="best_effort_timestamp_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="pkt_duration" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="pkt_duration_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="pkt_pos" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="pkt_size" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="sample_fmt" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="nb_samples" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="channels" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="channel_layout" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="width" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="height" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="pix_fmt" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="sample_aspect_ratio" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="pict_type" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="coded_picture_number" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="display_picture_number" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="interlaced_frame" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="top_field_first" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="repeat_pict" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="color_range" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="color_space" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="color_primaries" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="color_transfer" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="chroma_location" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "frameType", propOrder = { + "tag", + "logs", + "sideDataList" +}) +public class FrameType { + + protected List tag; + protected LogsType logs; + @XmlElement(name = "side_data_list") + protected FrameSideDataListType sideDataList; + @XmlAttribute(name = "media_type", required = true) + protected String mediaType; + @XmlAttribute(name = "stream_index") + protected Integer streamIndex; + @XmlAttribute(name = "key_frame", required = true) + protected int keyFrame; + @XmlAttribute(name = "pts") + protected Long pts; + @XmlAttribute(name = "pts_time") + protected Float ptsTime; + @XmlAttribute(name = "pkt_pts") + protected Long pktPts; + @XmlAttribute(name = "pkt_pts_time") + protected Float pktPtsTime; + @XmlAttribute(name = "pkt_dts") + protected Long pktDts; + @XmlAttribute(name = "pkt_dts_time") + protected Float pktDtsTime; + @XmlAttribute(name = "best_effort_timestamp") + protected Long bestEffortTimestamp; + @XmlAttribute(name = "best_effort_timestamp_time") + protected Float bestEffortTimestampTime; + @XmlAttribute(name = "pkt_duration") + protected Long pktDuration; + @XmlAttribute(name = "pkt_duration_time") + protected Float pktDurationTime; + @XmlAttribute(name = "pkt_pos") + protected Long pktPos; + @XmlAttribute(name = "pkt_size") + protected Integer pktSize; + @XmlAttribute(name = "sample_fmt") + protected String sampleFmt; + @XmlAttribute(name = "nb_samples") + protected Long nbSamples; + @XmlAttribute(name = "channels") + protected Integer channels; + @XmlAttribute(name = "channel_layout") + protected String channelLayout; + @XmlAttribute(name = "width") + protected Long width; + @XmlAttribute(name = "height") + protected Long height; + @XmlAttribute(name = "pix_fmt") + protected String pixFmt; + @XmlAttribute(name = "sample_aspect_ratio") + protected String sampleAspectRatio; + @XmlAttribute(name = "pict_type") + protected String pictType; + @XmlAttribute(name = "coded_picture_number") + protected Long codedPictureNumber; + @XmlAttribute(name = "display_picture_number") + protected Long displayPictureNumber; + @XmlAttribute(name = "interlaced_frame") + protected Integer interlacedFrame; + @XmlAttribute(name = "top_field_first") + protected Integer topFieldFirst; + @XmlAttribute(name = "repeat_pict") + protected Integer repeatPict; + @XmlAttribute(name = "color_range") + protected String colorRange; + @XmlAttribute(name = "color_space") + protected String colorSpace; + @XmlAttribute(name = "color_primaries") + protected String colorPrimaries; + @XmlAttribute(name = "color_transfer") + protected String colorTransfer; + @XmlAttribute(name = "chroma_location") + protected String chromaLocation; + + /** + * Gets the value of the tag property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the tag property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getTag().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link TagType } + * + * + */ + public List getTag() { + if (tag == null) { + tag = new ArrayList(); + } + return this.tag; + } + + /** + * Gets the value of the logs property. + * + * @return + * possible object is + * {@link LogsType } + * + */ + public LogsType getLogs() { + return logs; + } + + /** + * Sets the value of the logs property. + * + * @param value + * allowed object is + * {@link LogsType } + * + */ + public void setLogs(LogsType value) { + this.logs = value; + } + + /** + * Gets the value of the sideDataList property. + * + * @return + * possible object is + * {@link FrameSideDataListType } + * + */ + public FrameSideDataListType getSideDataList() { + return sideDataList; + } + + /** + * Sets the value of the sideDataList property. + * + * @param value + * allowed object is + * {@link FrameSideDataListType } + * + */ + public void setSideDataList(FrameSideDataListType value) { + this.sideDataList = value; + } + + /** + * Gets the value of the mediaType property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getMediaType() { + return mediaType; + } + + /** + * Sets the value of the mediaType property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setMediaType(String value) { + this.mediaType = value; + } + + /** + * Gets the value of the streamIndex property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getStreamIndex() { + return streamIndex; + } + + /** + * Sets the value of the streamIndex property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setStreamIndex(Integer value) { + this.streamIndex = value; + } + + /** + * Gets the value of the keyFrame property. + * + */ + public int getKeyFrame() { + return keyFrame; + } + + /** + * Sets the value of the keyFrame property. + * + */ + public void setKeyFrame(int value) { + this.keyFrame = value; + } + + /** + * Gets the value of the pts property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getPts() { + return pts; + } + + /** + * Sets the value of the pts property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setPts(Long value) { + this.pts = value; + } + + /** + * Gets the value of the ptsTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getPtsTime() { + return ptsTime; + } + + /** + * Sets the value of the ptsTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setPtsTime(Float value) { + this.ptsTime = value; + } + + /** + * Gets the value of the pktPts property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getPktPts() { + return pktPts; + } + + /** + * Sets the value of the pktPts property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setPktPts(Long value) { + this.pktPts = value; + } + + /** + * Gets the value of the pktPtsTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getPktPtsTime() { + return pktPtsTime; + } + + /** + * Sets the value of the pktPtsTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setPktPtsTime(Float value) { + this.pktPtsTime = value; + } + + /** + * Gets the value of the pktDts property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getPktDts() { + return pktDts; + } + + /** + * Sets the value of the pktDts property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setPktDts(Long value) { + this.pktDts = value; + } + + /** + * Gets the value of the pktDtsTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getPktDtsTime() { + return pktDtsTime; + } + + /** + * Sets the value of the pktDtsTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setPktDtsTime(Float value) { + this.pktDtsTime = value; + } + + /** + * Gets the value of the bestEffortTimestamp property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getBestEffortTimestamp() { + return bestEffortTimestamp; + } + + /** + * Sets the value of the bestEffortTimestamp property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setBestEffortTimestamp(Long value) { + this.bestEffortTimestamp = value; + } + + /** + * Gets the value of the bestEffortTimestampTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getBestEffortTimestampTime() { + return bestEffortTimestampTime; + } + + /** + * Sets the value of the bestEffortTimestampTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setBestEffortTimestampTime(Float value) { + this.bestEffortTimestampTime = value; + } + + /** + * Gets the value of the pktDuration property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getPktDuration() { + return pktDuration; + } + + /** + * Sets the value of the pktDuration property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setPktDuration(Long value) { + this.pktDuration = value; + } + + /** + * Gets the value of the pktDurationTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getPktDurationTime() { + return pktDurationTime; + } + + /** + * Sets the value of the pktDurationTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setPktDurationTime(Float value) { + this.pktDurationTime = value; + } + + /** + * Gets the value of the pktPos property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getPktPos() { + return pktPos; + } + + /** + * Sets the value of the pktPos property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setPktPos(Long value) { + this.pktPos = value; + } + + /** + * Gets the value of the pktSize property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getPktSize() { + return pktSize; + } + + /** + * Sets the value of the pktSize property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setPktSize(Integer value) { + this.pktSize = value; + } + + /** + * Gets the value of the sampleFmt property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSampleFmt() { + return sampleFmt; + } + + /** + * Sets the value of the sampleFmt property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSampleFmt(String value) { + this.sampleFmt = value; + } + + /** + * Gets the value of the nbSamples property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getNbSamples() { + return nbSamples; + } + + /** + * Sets the value of the nbSamples property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setNbSamples(Long value) { + this.nbSamples = value; + } + + /** + * Gets the value of the channels property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getChannels() { + return channels; + } + + /** + * Sets the value of the channels property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setChannels(Integer value) { + this.channels = value; + } + + /** + * Gets the value of the channelLayout property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getChannelLayout() { + return channelLayout; + } + + /** + * Sets the value of the channelLayout property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setChannelLayout(String value) { + this.channelLayout = value; + } + + /** + * Gets the value of the width property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getWidth() { + return width; + } + + /** + * Sets the value of the width property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setWidth(Long value) { + this.width = value; + } + + /** + * Gets the value of the height property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getHeight() { + return height; + } + + /** + * Sets the value of the height property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setHeight(Long value) { + this.height = value; + } + + /** + * Gets the value of the pixFmt property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getPixFmt() { + return pixFmt; + } + + /** + * Sets the value of the pixFmt property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setPixFmt(String value) { + this.pixFmt = value; + } + + /** + * Gets the value of the sampleAspectRatio property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSampleAspectRatio() { + return sampleAspectRatio; + } + + /** + * Sets the value of the sampleAspectRatio property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSampleAspectRatio(String value) { + this.sampleAspectRatio = value; + } + + /** + * Gets the value of the pictType property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getPictType() { + return pictType; + } + + /** + * Sets the value of the pictType property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setPictType(String value) { + this.pictType = value; + } + + /** + * Gets the value of the codedPictureNumber property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getCodedPictureNumber() { + return codedPictureNumber; + } + + /** + * Sets the value of the codedPictureNumber property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setCodedPictureNumber(Long value) { + this.codedPictureNumber = value; + } + + /** + * Gets the value of the displayPictureNumber property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getDisplayPictureNumber() { + return displayPictureNumber; + } + + /** + * Sets the value of the displayPictureNumber property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setDisplayPictureNumber(Long value) { + this.displayPictureNumber = value; + } + + /** + * Gets the value of the interlacedFrame property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getInterlacedFrame() { + return interlacedFrame; + } + + /** + * Sets the value of the interlacedFrame property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setInterlacedFrame(Integer value) { + this.interlacedFrame = value; + } + + /** + * Gets the value of the topFieldFirst property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getTopFieldFirst() { + return topFieldFirst; + } + + /** + * Sets the value of the topFieldFirst property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setTopFieldFirst(Integer value) { + this.topFieldFirst = value; + } + + /** + * Gets the value of the repeatPict property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getRepeatPict() { + return repeatPict; + } + + /** + * Sets the value of the repeatPict property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setRepeatPict(Integer value) { + this.repeatPict = value; + } + + /** + * Gets the value of the colorRange property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getColorRange() { + return colorRange; + } + + /** + * Sets the value of the colorRange property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setColorRange(String value) { + this.colorRange = value; + } + + /** + * Gets the value of the colorSpace property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getColorSpace() { + return colorSpace; + } + + /** + * Sets the value of the colorSpace property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setColorSpace(String value) { + this.colorSpace = value; + } + + /** + * Gets the value of the colorPrimaries property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getColorPrimaries() { + return colorPrimaries; + } + + /** + * Sets the value of the colorPrimaries property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setColorPrimaries(String value) { + this.colorPrimaries = value; + } + + /** + * Gets the value of the colorTransfer property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getColorTransfer() { + return colorTransfer; + } + + /** + * Sets the value of the colorTransfer property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setColorTransfer(String value) { + this.colorTransfer = value; + } + + /** + * Gets the value of the chromaLocation property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getChromaLocation() { + return chromaLocation; + } + + /** + * Sets the value of the chromaLocation property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setChromaLocation(String value) { + this.chromaLocation = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FramesType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FramesType.java new file mode 100644 index 00000000..9efaad30 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/FramesType.java @@ -0,0 +1,84 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElements; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for framesType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="framesType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <choice maxOccurs="unbounded" minOccurs="0">
+ *           <element name="frame" type="{http://www.ffmpeg.org/schema/ffprobe}frameType" maxOccurs="unbounded" minOccurs="0"/>
+ *           <element name="subtitle" type="{http://www.ffmpeg.org/schema/ffprobe}subtitleType" maxOccurs="unbounded" minOccurs="0"/>
+ *         </choice>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "framesType", propOrder = { + "frameOrSubtitle" +}) +public class FramesType { + + @XmlElements({ + @XmlElement(name = "frame", type = FrameType.class), + @XmlElement(name = "subtitle", type = SubtitleType.class) + }) + protected List frameOrSubtitle; + + /** + * Gets the value of the frameOrSubtitle property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the frameOrSubtitle property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getFrameOrSubtitle().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link FrameType } + * {@link SubtitleType } + * + * + */ + public List getFrameOrSubtitle() { + if (frameOrSubtitle == null) { + frameOrSubtitle = new ArrayList(); + } + return this.frameOrSubtitle; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/LibraryVersionType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/LibraryVersionType.java new file mode 100644 index 00000000..f90cc81c --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/LibraryVersionType.java @@ -0,0 +1,155 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + +package org.ffmpeg.ffprobe436; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + +/** + *

+ * Java class for libraryVersionType complex type. + *

+ * The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="libraryVersionType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="major" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="minor" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="micro" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="version" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="ident" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "libraryVersionType") +public class LibraryVersionType { + + @XmlAttribute(name = "name", required = true) + protected String name; + @XmlAttribute(name = "major", required = true) + protected int major; + @XmlAttribute(name = "minor", required = true) + protected int minor; + @XmlAttribute(name = "micro", required = true) + protected int micro; + @XmlAttribute(name = "version", required = true) + protected int version; + @XmlAttribute(name = "ident", required = true) + protected String ident; + + /** + * Gets the value of the name property. + * @return + * possible object is + * {@link String } + */ + + public String getName() { + return name; + } + + /** + * Sets the value of the name property. + * @param value + * allowed object is + * {@link String } + */ + public void setName(final String value) { + name = value; + } + + /** + * Gets the value of the major property. + */ + + public int getMajor() { + return major; + } + + /** + * Sets the value of the major property. + */ + public void setMajor(final int value) { + major = value; + } + + /** + * Gets the value of the minor property. + */ + + public int getMinor() { + return minor; + } + + /** + * Sets the value of the minor property. + */ + public void setMinor(final int value) { + minor = value; + } + + /** + * Gets the value of the micro property. + */ + + public int getMicro() { + return micro; + } + + /** + * Sets the value of the micro property. + */ + public void setMicro(final int value) { + micro = value; + } + + /** + * Gets the value of the version property. + */ + + public int getVersion() { + return version; + } + + /** + * Sets the value of the version property. + */ + public void setVersion(final int value) { + version = value; + } + + /** + * Gets the value of the ident property. + * @return + * possible object is + * {@link String } + */ + + public String getIdent() { + return ident; + } + + /** + * Sets the value of the ident property. + * @param value + * allowed object is + * {@link String } + */ + public void setIdent(final String value) { + ident = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/LibraryVersionsType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/LibraryVersionsType.java new file mode 100644 index 00000000..339bbe0c --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/LibraryVersionsType.java @@ -0,0 +1,76 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for libraryVersionsType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="libraryVersionsType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="library_version" type="{http://www.ffmpeg.org/schema/ffprobe}libraryVersionType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "libraryVersionsType", propOrder = { + "libraryVersion" +}) +public class LibraryVersionsType { + + @XmlElement(name = "library_version") + protected List libraryVersion; + + /** + * Gets the value of the libraryVersion property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the libraryVersion property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getLibraryVersion().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link LibraryVersionType } + * + * + */ + public List getLibraryVersion() { + if (libraryVersion == null) { + libraryVersion = new ArrayList(); + } + return this.libraryVersion; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/LogType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/LogType.java new file mode 100644 index 00000000..daa9c9c6 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/LogType.java @@ -0,0 +1,200 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for logType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="logType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="context" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="level" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="category" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="parent_context" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="parent_category" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="message" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "logType") +public class LogType { + + @XmlAttribute(name = "context") + protected String context; + @XmlAttribute(name = "level") + protected Integer level; + @XmlAttribute(name = "category") + protected Integer category; + @XmlAttribute(name = "parent_context") + protected String parentContext; + @XmlAttribute(name = "parent_category") + protected Integer parentCategory; + @XmlAttribute(name = "message") + protected String message; + + /** + * Gets the value of the context property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getContext() { + return context; + } + + /** + * Sets the value of the context property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setContext(String value) { + this.context = value; + } + + /** + * Gets the value of the level property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getLevel() { + return level; + } + + /** + * Sets the value of the level property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setLevel(Integer value) { + this.level = value; + } + + /** + * Gets the value of the category property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getCategory() { + return category; + } + + /** + * Sets the value of the category property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setCategory(Integer value) { + this.category = value; + } + + /** + * Gets the value of the parentContext property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getParentContext() { + return parentContext; + } + + /** + * Sets the value of the parentContext property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setParentContext(String value) { + this.parentContext = value; + } + + /** + * Gets the value of the parentCategory property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getParentCategory() { + return parentCategory; + } + + /** + * Sets the value of the parentCategory property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setParentCategory(Integer value) { + this.parentCategory = value; + } + + /** + * Gets the value of the message property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getMessage() { + return message; + } + + /** + * Sets the value of the message property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setMessage(String value) { + this.message = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/LogsType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/LogsType.java new file mode 100644 index 00000000..6a8ad54e --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/LogsType.java @@ -0,0 +1,76 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for logsType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="logsType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="log" type="{http://www.ffmpeg.org/schema/ffprobe}logType" maxOccurs="unbounded"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "logsType", propOrder = { + "log" +}) +public class LogsType { + + @XmlElement(required = true) + protected List log; + + /** + * Gets the value of the log property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the log property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getLog().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link LogType } + * + * + */ + public List getLog() { + if (log == null) { + log = new ArrayList(); + } + return this.log; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ObjectFactory.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ObjectFactory.java new file mode 100644 index 00000000..402fb858 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ObjectFactory.java @@ -0,0 +1,320 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import javax.xml.bind.JAXBElement; +import javax.xml.bind.annotation.XmlElementDecl; +import javax.xml.bind.annotation.XmlRegistry; +import javax.xml.namespace.QName; + + +/** + * This object contains factory methods for each + * Java content interface and Java element interface + * generated in the org.ffmpeg.ffprobe436 package. + *

An ObjectFactory allows you to programatically + * construct new instances of the Java representation + * for XML content. The Java representation of XML + * content can consist of schema derived interfaces + * and classes representing the binding of schema + * type definitions, element declarations and model + * groups. Factory methods for each of these are + * provided in this class. + * + */ +@XmlRegistry +public class ObjectFactory { + + private final static QName _Ffprobe_QNAME = new QName("http://www.ffmpeg.org/schema/ffprobe", "ffprobe"); + + /** + * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.ffmpeg.ffprobe436 + * + */ + public ObjectFactory() { + } + + /** + * Create an instance of {@link FfprobeType } + * + */ + public FfprobeType createFfprobeType() { + return new FfprobeType(); + } + + /** + * Create an instance of {@link PacketsType } + * + */ + public PacketsType createPacketsType() { + return new PacketsType(); + } + + /** + * Create an instance of {@link FramesType } + * + */ + public FramesType createFramesType() { + return new FramesType(); + } + + /** + * Create an instance of {@link PacketsAndFramesType } + * + */ + public PacketsAndFramesType createPacketsAndFramesType() { + return new PacketsAndFramesType(); + } + + /** + * Create an instance of {@link PacketType } + * + */ + public PacketType createPacketType() { + return new PacketType(); + } + + /** + * Create an instance of {@link PacketSideDataListType } + * + */ + public PacketSideDataListType createPacketSideDataListType() { + return new PacketSideDataListType(); + } + + /** + * Create an instance of {@link PacketSideDataType } + * + */ + public PacketSideDataType createPacketSideDataType() { + return new PacketSideDataType(); + } + + /** + * Create an instance of {@link FrameType } + * + */ + public FrameType createFrameType() { + return new FrameType(); + } + + /** + * Create an instance of {@link LogsType } + * + */ + public LogsType createLogsType() { + return new LogsType(); + } + + /** + * Create an instance of {@link LogType } + * + */ + public LogType createLogType() { + return new LogType(); + } + + /** + * Create an instance of {@link FrameSideDataListType } + * + */ + public FrameSideDataListType createFrameSideDataListType() { + return new FrameSideDataListType(); + } + + /** + * Create an instance of {@link FrameSideDataType } + * + */ + public FrameSideDataType createFrameSideDataType() { + return new FrameSideDataType(); + } + + /** + * Create an instance of {@link FrameSideDataTimecodeList } + * + */ + public FrameSideDataTimecodeList createFrameSideDataTimecodeList() { + return new FrameSideDataTimecodeList(); + } + + /** + * Create an instance of {@link FrameSideDataTimecodeType } + * + */ + public FrameSideDataTimecodeType createFrameSideDataTimecodeType() { + return new FrameSideDataTimecodeType(); + } + + /** + * Create an instance of {@link SubtitleType } + * + */ + public SubtitleType createSubtitleType() { + return new SubtitleType(); + } + + /** + * Create an instance of {@link StreamsType } + * + */ + public StreamsType createStreamsType() { + return new StreamsType(); + } + + /** + * Create an instance of {@link ProgramsType } + * + */ + public ProgramsType createProgramsType() { + return new ProgramsType(); + } + + /** + * Create an instance of {@link StreamDispositionType } + * + */ + public StreamDispositionType createStreamDispositionType() { + return new StreamDispositionType(); + } + + /** + * Create an instance of {@link StreamType } + * + */ + public StreamType createStreamType() { + return new StreamType(); + } + + /** + * Create an instance of {@link ProgramType } + * + */ + public ProgramType createProgramType() { + return new ProgramType(); + } + + /** + * Create an instance of {@link FormatType } + * + */ + public FormatType createFormatType() { + return new FormatType(); + } + + /** + * Create an instance of {@link TagType } + * + */ + public TagType createTagType() { + return new TagType(); + } + + /** + * Create an instance of {@link ErrorType } + * + */ + public ErrorType createErrorType() { + return new ErrorType(); + } + + /** + * Create an instance of {@link ProgramVersionType } + * + */ + public ProgramVersionType createProgramVersionType() { + return new ProgramVersionType(); + } + + /** + * Create an instance of {@link ChaptersType } + * + */ + public ChaptersType createChaptersType() { + return new ChaptersType(); + } + + /** + * Create an instance of {@link ChapterType } + * + */ + public ChapterType createChapterType() { + return new ChapterType(); + } + + /** + * Create an instance of {@link LibraryVersionType } + * + */ + public LibraryVersionType createLibraryVersionType() { + return new LibraryVersionType(); + } + + /** + * Create an instance of {@link LibraryVersionsType } + * + */ + public LibraryVersionsType createLibraryVersionsType() { + return new LibraryVersionsType(); + } + + /** + * Create an instance of {@link PixelFormatFlagsType } + * + */ + public PixelFormatFlagsType createPixelFormatFlagsType() { + return new PixelFormatFlagsType(); + } + + /** + * Create an instance of {@link PixelFormatComponentType } + * + */ + public PixelFormatComponentType createPixelFormatComponentType() { + return new PixelFormatComponentType(); + } + + /** + * Create an instance of {@link PixelFormatComponentsType } + * + */ + public PixelFormatComponentsType createPixelFormatComponentsType() { + return new PixelFormatComponentsType(); + } + + /** + * Create an instance of {@link PixelFormatType } + * + */ + public PixelFormatType createPixelFormatType() { + return new PixelFormatType(); + } + + /** + * Create an instance of {@link PixelFormatsType } + * + */ + public PixelFormatsType createPixelFormatsType() { + return new PixelFormatsType(); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link FfprobeType }{@code >} + * + * @param value + * Java instance representing xml element's value. + * @return + * the new instance of {@link JAXBElement }{@code <}{@link FfprobeType }{@code >} + */ + @XmlElementDecl(namespace = "http://www.ffmpeg.org/schema/ffprobe", name = "ffprobe") + public JAXBElement createFfprobe(FfprobeType value) { + return new JAXBElement(_Ffprobe_QNAME, FfprobeType.class, null, value); + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PacketSideDataListType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PacketSideDataListType.java new file mode 100644 index 00000000..e23e18b9 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PacketSideDataListType.java @@ -0,0 +1,76 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for packetSideDataListType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="packetSideDataListType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="side_data" type="{http://www.ffmpeg.org/schema/ffprobe}packetSideDataType" maxOccurs="unbounded"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "packetSideDataListType", propOrder = { + "sideData" +}) +public class PacketSideDataListType { + + @XmlElement(name = "side_data", required = true) + protected List sideData; + + /** + * Gets the value of the sideData property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the sideData property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getSideData().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link PacketSideDataType } + * + * + */ + public List getSideData() { + if (sideData == null) { + sideData = new ArrayList(); + } + return this.sideData; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PacketSideDataType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PacketSideDataType.java new file mode 100644 index 00000000..110b807b --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PacketSideDataType.java @@ -0,0 +1,92 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for packetSideDataType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="packetSideDataType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="side_data_type" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="side_data_size" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "packetSideDataType") +public class PacketSideDataType { + + @XmlAttribute(name = "side_data_type") + protected String sideDataType; + @XmlAttribute(name = "side_data_size") + protected Integer sideDataSize; + + /** + * Gets the value of the sideDataType property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSideDataType() { + return sideDataType; + } + + /** + * Sets the value of the sideDataType property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSideDataType(String value) { + this.sideDataType = value; + } + + /** + * Gets the value of the sideDataSize property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getSideDataSize() { + return sideDataSize; + } + + /** + * Sets the value of the sideDataSize property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setSideDataSize(Integer value) { + this.sideDataSize = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PacketType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PacketType.java new file mode 100644 index 00000000..8393df03 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PacketType.java @@ -0,0 +1,493 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for packetType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="packetType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="tag" type="{http://www.ffmpeg.org/schema/ffprobe}tagType" maxOccurs="unbounded" minOccurs="0"/>
+ *         <element name="side_data_list" type="{http://www.ffmpeg.org/schema/ffprobe}packetSideDataListType" minOccurs="0"/>
+ *       </sequence>
+ *       <attribute name="codec_type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="stream_index" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="pts" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="pts_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="dts" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="dts_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="duration" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="duration_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="convergence_duration" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="convergence_duration_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="size" use="required" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="pos" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="flags" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="data" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="data_hash" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "packetType", propOrder = { + "tag", + "sideDataList" +}) +public class PacketType { + + protected List tag; + @XmlElement(name = "side_data_list") + protected PacketSideDataListType sideDataList; + @XmlAttribute(name = "codec_type", required = true) + protected String codecType; + @XmlAttribute(name = "stream_index", required = true) + protected int streamIndex; + @XmlAttribute(name = "pts") + protected Long pts; + @XmlAttribute(name = "pts_time") + protected Float ptsTime; + @XmlAttribute(name = "dts") + protected Long dts; + @XmlAttribute(name = "dts_time") + protected Float dtsTime; + @XmlAttribute(name = "duration") + protected Long duration; + @XmlAttribute(name = "duration_time") + protected Float durationTime; + @XmlAttribute(name = "convergence_duration") + protected Long convergenceDuration; + @XmlAttribute(name = "convergence_duration_time") + protected Float convergenceDurationTime; + @XmlAttribute(name = "size", required = true) + protected long size; + @XmlAttribute(name = "pos") + protected Long pos; + @XmlAttribute(name = "flags", required = true) + protected String flags; + @XmlAttribute(name = "data") + protected String data; + @XmlAttribute(name = "data_hash") + protected String dataHash; + + /** + * Gets the value of the tag property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the tag property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getTag().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link TagType } + * + * + */ + public List getTag() { + if (tag == null) { + tag = new ArrayList(); + } + return this.tag; + } + + /** + * Gets the value of the sideDataList property. + * + * @return + * possible object is + * {@link PacketSideDataListType } + * + */ + public PacketSideDataListType getSideDataList() { + return sideDataList; + } + + /** + * Sets the value of the sideDataList property. + * + * @param value + * allowed object is + * {@link PacketSideDataListType } + * + */ + public void setSideDataList(PacketSideDataListType value) { + this.sideDataList = value; + } + + /** + * Gets the value of the codecType property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCodecType() { + return codecType; + } + + /** + * Sets the value of the codecType property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCodecType(String value) { + this.codecType = value; + } + + /** + * Gets the value of the streamIndex property. + * + */ + public int getStreamIndex() { + return streamIndex; + } + + /** + * Sets the value of the streamIndex property. + * + */ + public void setStreamIndex(int value) { + this.streamIndex = value; + } + + /** + * Gets the value of the pts property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getPts() { + return pts; + } + + /** + * Sets the value of the pts property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setPts(Long value) { + this.pts = value; + } + + /** + * Gets the value of the ptsTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getPtsTime() { + return ptsTime; + } + + /** + * Sets the value of the ptsTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setPtsTime(Float value) { + this.ptsTime = value; + } + + /** + * Gets the value of the dts property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getDts() { + return dts; + } + + /** + * Sets the value of the dts property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setDts(Long value) { + this.dts = value; + } + + /** + * Gets the value of the dtsTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getDtsTime() { + return dtsTime; + } + + /** + * Sets the value of the dtsTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setDtsTime(Float value) { + this.dtsTime = value; + } + + /** + * Gets the value of the duration property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getDuration() { + return duration; + } + + /** + * Sets the value of the duration property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setDuration(Long value) { + this.duration = value; + } + + /** + * Gets the value of the durationTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getDurationTime() { + return durationTime; + } + + /** + * Sets the value of the durationTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setDurationTime(Float value) { + this.durationTime = value; + } + + /** + * Gets the value of the convergenceDuration property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getConvergenceDuration() { + return convergenceDuration; + } + + /** + * Sets the value of the convergenceDuration property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setConvergenceDuration(Long value) { + this.convergenceDuration = value; + } + + /** + * Gets the value of the convergenceDurationTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getConvergenceDurationTime() { + return convergenceDurationTime; + } + + /** + * Sets the value of the convergenceDurationTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setConvergenceDurationTime(Float value) { + this.convergenceDurationTime = value; + } + + /** + * Gets the value of the size property. + * + */ + public long getSize() { + return size; + } + + /** + * Sets the value of the size property. + * + */ + public void setSize(long value) { + this.size = value; + } + + /** + * Gets the value of the pos property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getPos() { + return pos; + } + + /** + * Sets the value of the pos property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setPos(Long value) { + this.pos = value; + } + + /** + * Gets the value of the flags property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getFlags() { + return flags; + } + + /** + * Sets the value of the flags property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setFlags(String value) { + this.flags = value; + } + + /** + * Gets the value of the data property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getData() { + return data; + } + + /** + * Sets the value of the data property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setData(String value) { + this.data = value; + } + + /** + * Gets the value of the dataHash property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getDataHash() { + return dataHash; + } + + /** + * Sets the value of the dataHash property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setDataHash(String value) { + this.dataHash = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PacketsAndFramesType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PacketsAndFramesType.java new file mode 100644 index 00000000..4d218760 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PacketsAndFramesType.java @@ -0,0 +1,87 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElements; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for packetsAndFramesType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="packetsAndFramesType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <choice maxOccurs="unbounded" minOccurs="0">
+ *           <element name="packet" type="{http://www.ffmpeg.org/schema/ffprobe}packetType" maxOccurs="unbounded" minOccurs="0"/>
+ *           <element name="frame" type="{http://www.ffmpeg.org/schema/ffprobe}frameType" maxOccurs="unbounded" minOccurs="0"/>
+ *           <element name="subtitle" type="{http://www.ffmpeg.org/schema/ffprobe}subtitleType" maxOccurs="unbounded" minOccurs="0"/>
+ *         </choice>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "packetsAndFramesType", propOrder = { + "packetOrFrameOrSubtitle" +}) +public class PacketsAndFramesType { + + @XmlElements({ + @XmlElement(name = "packet", type = PacketType.class), + @XmlElement(name = "frame", type = FrameType.class), + @XmlElement(name = "subtitle", type = SubtitleType.class) + }) + protected List packetOrFrameOrSubtitle; + + /** + * Gets the value of the packetOrFrameOrSubtitle property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the packetOrFrameOrSubtitle property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getPacketOrFrameOrSubtitle().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link FrameType } + * {@link PacketType } + * {@link SubtitleType } + * + * + */ + public List getPacketOrFrameOrSubtitle() { + if (packetOrFrameOrSubtitle == null) { + packetOrFrameOrSubtitle = new ArrayList(); + } + return this.packetOrFrameOrSubtitle; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PacketsType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PacketsType.java new file mode 100644 index 00000000..e3950049 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PacketsType.java @@ -0,0 +1,74 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for packetsType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="packetsType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="packet" type="{http://www.ffmpeg.org/schema/ffprobe}packetType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "packetsType", propOrder = { + "packet" +}) +public class PacketsType { + + protected List packet; + + /** + * Gets the value of the packet property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the packet property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getPacket().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link PacketType } + * + * + */ + public List getPacket() { + if (packet == null) { + packet = new ArrayList(); + } + return this.packet; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PixelFormatComponentType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PixelFormatComponentType.java new file mode 100644 index 00000000..46d32dff --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PixelFormatComponentType.java @@ -0,0 +1,76 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for pixelFormatComponentType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="pixelFormatComponentType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="index" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="bit_depth" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "pixelFormatComponentType") +public class PixelFormatComponentType { + + @XmlAttribute(name = "index", required = true) + protected int index; + @XmlAttribute(name = "bit_depth", required = true) + protected int bitDepth; + + /** + * Gets the value of the index property. + * + */ + public int getIndex() { + return index; + } + + /** + * Sets the value of the index property. + * + */ + public void setIndex(int value) { + this.index = value; + } + + /** + * Gets the value of the bitDepth property. + * + */ + public int getBitDepth() { + return bitDepth; + } + + /** + * Sets the value of the bitDepth property. + * + */ + public void setBitDepth(int value) { + this.bitDepth = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PixelFormatComponentsType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PixelFormatComponentsType.java new file mode 100644 index 00000000..4a053faa --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PixelFormatComponentsType.java @@ -0,0 +1,74 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for pixelFormatComponentsType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="pixelFormatComponentsType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="component" type="{http://www.ffmpeg.org/schema/ffprobe}pixelFormatComponentType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "pixelFormatComponentsType", propOrder = { + "component" +}) +public class PixelFormatComponentsType { + + protected List component; + + /** + * Gets the value of the component property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the component property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getComponent().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link PixelFormatComponentType } + * + * + */ + public List getComponent() { + if (component == null) { + component = new ArrayList(); + } + return this.component; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PixelFormatFlagsType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PixelFormatFlagsType.java new file mode 100644 index 00000000..de0f5a76 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PixelFormatFlagsType.java @@ -0,0 +1,190 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for pixelFormatFlagsType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="pixelFormatFlagsType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="big_endian" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="palette" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="bitstream" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="hwaccel" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="planar" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="rgb" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="pseudopal" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="alpha" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "pixelFormatFlagsType") +public class PixelFormatFlagsType { + + @XmlAttribute(name = "big_endian", required = true) + protected int bigEndian; + @XmlAttribute(name = "palette", required = true) + protected int palette; + @XmlAttribute(name = "bitstream", required = true) + protected int bitstream; + @XmlAttribute(name = "hwaccel", required = true) + protected int hwaccel; + @XmlAttribute(name = "planar", required = true) + protected int planar; + @XmlAttribute(name = "rgb", required = true) + protected int rgb; + @XmlAttribute(name = "pseudopal", required = true) + protected int pseudopal; + @XmlAttribute(name = "alpha", required = true) + protected int alpha; + + /** + * Gets the value of the bigEndian property. + * + */ + public int getBigEndian() { + return bigEndian; + } + + /** + * Sets the value of the bigEndian property. + * + */ + public void setBigEndian(int value) { + this.bigEndian = value; + } + + /** + * Gets the value of the palette property. + * + */ + public int getPalette() { + return palette; + } + + /** + * Sets the value of the palette property. + * + */ + public void setPalette(int value) { + this.palette = value; + } + + /** + * Gets the value of the bitstream property. + * + */ + public int getBitstream() { + return bitstream; + } + + /** + * Sets the value of the bitstream property. + * + */ + public void setBitstream(int value) { + this.bitstream = value; + } + + /** + * Gets the value of the hwaccel property. + * + */ + public int getHwaccel() { + return hwaccel; + } + + /** + * Sets the value of the hwaccel property. + * + */ + public void setHwaccel(int value) { + this.hwaccel = value; + } + + /** + * Gets the value of the planar property. + * + */ + public int getPlanar() { + return planar; + } + + /** + * Sets the value of the planar property. + * + */ + public void setPlanar(int value) { + this.planar = value; + } + + /** + * Gets the value of the rgb property. + * + */ + public int getRgb() { + return rgb; + } + + /** + * Sets the value of the rgb property. + * + */ + public void setRgb(int value) { + this.rgb = value; + } + + /** + * Gets the value of the pseudopal property. + * + */ + public int getPseudopal() { + return pseudopal; + } + + /** + * Sets the value of the pseudopal property. + * + */ + public void setPseudopal(int value) { + this.pseudopal = value; + } + + /** + * Gets the value of the alpha property. + * + */ + public int getAlpha() { + return alpha; + } + + /** + * Sets the value of the alpha property. + * + */ + public void setAlpha(int value) { + this.alpha = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PixelFormatType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PixelFormatType.java new file mode 100644 index 00000000..43cd5623 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PixelFormatType.java @@ -0,0 +1,222 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for pixelFormatType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="pixelFormatType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="flags" type="{http://www.ffmpeg.org/schema/ffprobe}pixelFormatFlagsType" minOccurs="0"/>
+ *         <element name="components" type="{http://www.ffmpeg.org/schema/ffprobe}pixelFormatComponentsType" minOccurs="0"/>
+ *       </sequence>
+ *       <attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="nb_components" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="log2_chroma_w" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="log2_chroma_h" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="bits_per_pixel" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "pixelFormatType", propOrder = { + "flags", + "components" +}) +public class PixelFormatType { + + protected PixelFormatFlagsType flags; + protected PixelFormatComponentsType components; + @XmlAttribute(name = "name", required = true) + protected String name; + @XmlAttribute(name = "nb_components", required = true) + protected int nbComponents; + @XmlAttribute(name = "log2_chroma_w") + protected Integer log2ChromaW; + @XmlAttribute(name = "log2_chroma_h") + protected Integer log2ChromaH; + @XmlAttribute(name = "bits_per_pixel") + protected Integer bitsPerPixel; + + /** + * Gets the value of the flags property. + * + * @return + * possible object is + * {@link PixelFormatFlagsType } + * + */ + public PixelFormatFlagsType getFlags() { + return flags; + } + + /** + * Sets the value of the flags property. + * + * @param value + * allowed object is + * {@link PixelFormatFlagsType } + * + */ + public void setFlags(PixelFormatFlagsType value) { + this.flags = value; + } + + /** + * Gets the value of the components property. + * + * @return + * possible object is + * {@link PixelFormatComponentsType } + * + */ + public PixelFormatComponentsType getComponents() { + return components; + } + + /** + * Sets the value of the components property. + * + * @param value + * allowed object is + * {@link PixelFormatComponentsType } + * + */ + public void setComponents(PixelFormatComponentsType value) { + this.components = value; + } + + /** + * Gets the value of the name property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getName() { + return name; + } + + /** + * Sets the value of the name property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setName(String value) { + this.name = value; + } + + /** + * Gets the value of the nbComponents property. + * + */ + public int getNbComponents() { + return nbComponents; + } + + /** + * Sets the value of the nbComponents property. + * + */ + public void setNbComponents(int value) { + this.nbComponents = value; + } + + /** + * Gets the value of the log2ChromaW property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getLog2ChromaW() { + return log2ChromaW; + } + + /** + * Sets the value of the log2ChromaW property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setLog2ChromaW(Integer value) { + this.log2ChromaW = value; + } + + /** + * Gets the value of the log2ChromaH property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getLog2ChromaH() { + return log2ChromaH; + } + + /** + * Sets the value of the log2ChromaH property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setLog2ChromaH(Integer value) { + this.log2ChromaH = value; + } + + /** + * Gets the value of the bitsPerPixel property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getBitsPerPixel() { + return bitsPerPixel; + } + + /** + * Sets the value of the bitsPerPixel property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setBitsPerPixel(Integer value) { + this.bitsPerPixel = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PixelFormatsType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PixelFormatsType.java new file mode 100644 index 00000000..11ba1f84 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/PixelFormatsType.java @@ -0,0 +1,76 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for pixelFormatsType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="pixelFormatsType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="pixel_format" type="{http://www.ffmpeg.org/schema/ffprobe}pixelFormatType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "pixelFormatsType", propOrder = { + "pixelFormat" +}) +public class PixelFormatsType { + + @XmlElement(name = "pixel_format") + protected List pixelFormat; + + /** + * Gets the value of the pixelFormat property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the pixelFormat property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getPixelFormat().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link PixelFormatType } + * + * + */ + public List getPixelFormat() { + if (pixelFormat == null) { + pixelFormat = new ArrayList(); + } + return this.pixelFormat; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ProgramType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ProgramType.java new file mode 100644 index 00000000..3aa58f6e --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ProgramType.java @@ -0,0 +1,305 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for programType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="programType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="tag" type="{http://www.ffmpeg.org/schema/ffprobe}tagType" maxOccurs="unbounded" minOccurs="0"/>
+ *         <element name="streams" type="{http://www.ffmpeg.org/schema/ffprobe}streamsType" minOccurs="0"/>
+ *       </sequence>
+ *       <attribute name="program_id" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="program_num" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="nb_streams" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="start_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="start_pts" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="end_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="end_pts" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="pmt_pid" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="pcr_pid" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "programType", propOrder = { + "tag", + "streams" +}) +public class ProgramType { + + protected List tag; + protected StreamsType streams; + @XmlAttribute(name = "program_id", required = true) + protected int programId; + @XmlAttribute(name = "program_num", required = true) + protected int programNum; + @XmlAttribute(name = "nb_streams", required = true) + protected int nbStreams; + @XmlAttribute(name = "start_time") + protected Float startTime; + @XmlAttribute(name = "start_pts") + protected Long startPts; + @XmlAttribute(name = "end_time") + protected Float endTime; + @XmlAttribute(name = "end_pts") + protected Long endPts; + @XmlAttribute(name = "pmt_pid", required = true) + protected int pmtPid; + @XmlAttribute(name = "pcr_pid", required = true) + protected int pcrPid; + + /** + * Gets the value of the tag property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the tag property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getTag().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link TagType } + * + * + */ + public List getTag() { + if (tag == null) { + tag = new ArrayList(); + } + return this.tag; + } + + /** + * Gets the value of the streams property. + * + * @return + * possible object is + * {@link StreamsType } + * + */ + public StreamsType getStreams() { + return streams; + } + + /** + * Sets the value of the streams property. + * + * @param value + * allowed object is + * {@link StreamsType } + * + */ + public void setStreams(StreamsType value) { + this.streams = value; + } + + /** + * Gets the value of the programId property. + * + */ + public int getProgramId() { + return programId; + } + + /** + * Sets the value of the programId property. + * + */ + public void setProgramId(int value) { + this.programId = value; + } + + /** + * Gets the value of the programNum property. + * + */ + public int getProgramNum() { + return programNum; + } + + /** + * Sets the value of the programNum property. + * + */ + public void setProgramNum(int value) { + this.programNum = value; + } + + /** + * Gets the value of the nbStreams property. + * + */ + public int getNbStreams() { + return nbStreams; + } + + /** + * Sets the value of the nbStreams property. + * + */ + public void setNbStreams(int value) { + this.nbStreams = value; + } + + /** + * Gets the value of the startTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getStartTime() { + return startTime; + } + + /** + * Sets the value of the startTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setStartTime(Float value) { + this.startTime = value; + } + + /** + * Gets the value of the startPts property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getStartPts() { + return startPts; + } + + /** + * Sets the value of the startPts property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setStartPts(Long value) { + this.startPts = value; + } + + /** + * Gets the value of the endTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getEndTime() { + return endTime; + } + + /** + * Sets the value of the endTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setEndTime(Float value) { + this.endTime = value; + } + + /** + * Gets the value of the endPts property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getEndPts() { + return endPts; + } + + /** + * Sets the value of the endPts property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setEndPts(Long value) { + this.endPts = value; + } + + /** + * Gets the value of the pmtPid property. + * + */ + public int getPmtPid() { + return pmtPid; + } + + /** + * Sets the value of the pmtPid property. + * + */ + public void setPmtPid(int value) { + this.pmtPid = value; + } + + /** + * Gets the value of the pcrPid property. + * + */ + public int getPcrPid() { + return pcrPid; + } + + /** + * Sets the value of the pcrPid property. + * + */ + public void setPcrPid(int value) { + this.pcrPid = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ProgramVersionType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ProgramVersionType.java new file mode 100644 index 00000000..8105c159 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ProgramVersionType.java @@ -0,0 +1,200 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for programVersionType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="programVersionType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="version" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="copyright" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="build_date" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="build_time" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="compiler_ident" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="configuration" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "programVersionType") +public class ProgramVersionType { + + @XmlAttribute(name = "version", required = true) + protected String version; + @XmlAttribute(name = "copyright", required = true) + protected String copyright; + @XmlAttribute(name = "build_date") + protected String buildDate; + @XmlAttribute(name = "build_time") + protected String buildTime; + @XmlAttribute(name = "compiler_ident", required = true) + protected String compilerIdent; + @XmlAttribute(name = "configuration", required = true) + protected String configuration; + + /** + * Gets the value of the version property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getVersion() { + return version; + } + + /** + * Sets the value of the version property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setVersion(String value) { + this.version = value; + } + + /** + * Gets the value of the copyright property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCopyright() { + return copyright; + } + + /** + * Sets the value of the copyright property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCopyright(String value) { + this.copyright = value; + } + + /** + * Gets the value of the buildDate property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getBuildDate() { + return buildDate; + } + + /** + * Sets the value of the buildDate property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setBuildDate(String value) { + this.buildDate = value; + } + + /** + * Gets the value of the buildTime property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getBuildTime() { + return buildTime; + } + + /** + * Sets the value of the buildTime property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setBuildTime(String value) { + this.buildTime = value; + } + + /** + * Gets the value of the compilerIdent property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCompilerIdent() { + return compilerIdent; + } + + /** + * Sets the value of the compilerIdent property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCompilerIdent(String value) { + this.compilerIdent = value; + } + + /** + * Gets the value of the configuration property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getConfiguration() { + return configuration; + } + + /** + * Sets the value of the configuration property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setConfiguration(String value) { + this.configuration = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ProgramsType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ProgramsType.java new file mode 100644 index 00000000..814b2a9f --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/ProgramsType.java @@ -0,0 +1,74 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for programsType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="programsType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="program" type="{http://www.ffmpeg.org/schema/ffprobe}programType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "programsType", propOrder = { + "program" +}) +public class ProgramsType { + + protected List program; + + /** + * Gets the value of the program property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the program property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getProgram().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link ProgramType } + * + * + */ + public List getProgram() { + if (program == null) { + program = new ArrayList(); + } + return this.program; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/StreamDispositionType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/StreamDispositionType.java new file mode 100644 index 00000000..18bfe51e --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/StreamDispositionType.java @@ -0,0 +1,266 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for streamDispositionType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="streamDispositionType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="default" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="dub" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="original" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="comment" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="lyrics" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="karaoke" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="forced" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="hearing_impaired" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="visual_impaired" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="clean_effects" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="attached_pic" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="timed_thumbnails" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "streamDispositionType") +public class StreamDispositionType { + + @XmlAttribute(name = "default", required = true) + protected int _default; + @XmlAttribute(name = "dub", required = true) + protected int dub; + @XmlAttribute(name = "original", required = true) + protected int original; + @XmlAttribute(name = "comment", required = true) + protected int comment; + @XmlAttribute(name = "lyrics", required = true) + protected int lyrics; + @XmlAttribute(name = "karaoke", required = true) + protected int karaoke; + @XmlAttribute(name = "forced", required = true) + protected int forced; + @XmlAttribute(name = "hearing_impaired", required = true) + protected int hearingImpaired; + @XmlAttribute(name = "visual_impaired", required = true) + protected int visualImpaired; + @XmlAttribute(name = "clean_effects", required = true) + protected int cleanEffects; + @XmlAttribute(name = "attached_pic", required = true) + protected int attachedPic; + @XmlAttribute(name = "timed_thumbnails", required = true) + protected int timedThumbnails; + + /** + * Gets the value of the default property. + * + */ + public int getDefault() { + return _default; + } + + /** + * Sets the value of the default property. + * + */ + public void setDefault(int value) { + this._default = value; + } + + /** + * Gets the value of the dub property. + * + */ + public int getDub() { + return dub; + } + + /** + * Sets the value of the dub property. + * + */ + public void setDub(int value) { + this.dub = value; + } + + /** + * Gets the value of the original property. + * + */ + public int getOriginal() { + return original; + } + + /** + * Sets the value of the original property. + * + */ + public void setOriginal(int value) { + this.original = value; + } + + /** + * Gets the value of the comment property. + * + */ + public int getComment() { + return comment; + } + + /** + * Sets the value of the comment property. + * + */ + public void setComment(int value) { + this.comment = value; + } + + /** + * Gets the value of the lyrics property. + * + */ + public int getLyrics() { + return lyrics; + } + + /** + * Sets the value of the lyrics property. + * + */ + public void setLyrics(int value) { + this.lyrics = value; + } + + /** + * Gets the value of the karaoke property. + * + */ + public int getKaraoke() { + return karaoke; + } + + /** + * Sets the value of the karaoke property. + * + */ + public void setKaraoke(int value) { + this.karaoke = value; + } + + /** + * Gets the value of the forced property. + * + */ + public int getForced() { + return forced; + } + + /** + * Sets the value of the forced property. + * + */ + public void setForced(int value) { + this.forced = value; + } + + /** + * Gets the value of the hearingImpaired property. + * + */ + public int getHearingImpaired() { + return hearingImpaired; + } + + /** + * Sets the value of the hearingImpaired property. + * + */ + public void setHearingImpaired(int value) { + this.hearingImpaired = value; + } + + /** + * Gets the value of the visualImpaired property. + * + */ + public int getVisualImpaired() { + return visualImpaired; + } + + /** + * Sets the value of the visualImpaired property. + * + */ + public void setVisualImpaired(int value) { + this.visualImpaired = value; + } + + /** + * Gets the value of the cleanEffects property. + * + */ + public int getCleanEffects() { + return cleanEffects; + } + + /** + * Sets the value of the cleanEffects property. + * + */ + public void setCleanEffects(int value) { + this.cleanEffects = value; + } + + /** + * Gets the value of the attachedPic property. + * + */ + public int getAttachedPic() { + return attachedPic; + } + + /** + * Sets the value of the attachedPic property. + * + */ + public void setAttachedPic(int value) { + this.attachedPic = value; + } + + /** + * Gets the value of the timedThumbnails property. + * + */ + public int getTimedThumbnails() { + return timedThumbnails; + } + + /** + * Sets the value of the timedThumbnails property. + * + */ + public void setTimedThumbnails(int value) { + this.timedThumbnails = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/StreamType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/StreamType.java new file mode 100644 index 00000000..35a01b1d --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/StreamType.java @@ -0,0 +1,1392 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for streamType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="streamType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="disposition" type="{http://www.ffmpeg.org/schema/ffprobe}streamDispositionType" minOccurs="0"/>
+ *         <element name="tag" type="{http://www.ffmpeg.org/schema/ffprobe}tagType" maxOccurs="unbounded" minOccurs="0"/>
+ *         <element name="side_data_list" type="{http://www.ffmpeg.org/schema/ffprobe}packetSideDataListType" minOccurs="0"/>
+ *       </sequence>
+ *       <attribute name="index" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="codec_name" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="codec_long_name" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="profile" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="codec_type" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="codec_time_base" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="codec_tag" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="codec_tag_string" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="extradata" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="extradata_hash" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="width" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="height" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="coded_width" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="coded_height" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="closed_captions" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *       <attribute name="has_b_frames" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="sample_aspect_ratio" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="display_aspect_ratio" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="pix_fmt" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="level" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="color_range" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="color_space" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="color_transfer" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="color_primaries" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="chroma_location" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="field_order" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="timecode" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="refs" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="sample_fmt" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="sample_rate" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="channels" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="channel_layout" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="bits_per_sample" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="id" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="r_frame_rate" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="avg_frame_rate" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="time_base" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="start_pts" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="start_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="duration_ts" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="duration" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="bit_rate" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="max_bit_rate" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="bits_per_raw_sample" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="nb_frames" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="nb_read_frames" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="nb_read_packets" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "streamType", propOrder = { + "disposition", + "tag", + "sideDataList" +}) +public class StreamType { + + protected StreamDispositionType disposition; + protected List tag; + @XmlElement(name = "side_data_list") + protected PacketSideDataListType sideDataList; + @XmlAttribute(name = "index", required = true) + protected int index; + @XmlAttribute(name = "codec_name") + protected String codecName; + @XmlAttribute(name = "codec_long_name") + protected String codecLongName; + @XmlAttribute(name = "profile") + protected String profile; + @XmlAttribute(name = "codec_type") + protected String codecType; + @XmlAttribute(name = "codec_time_base", required = true) + protected String codecTimeBase; + @XmlAttribute(name = "codec_tag", required = true) + protected String codecTag; + @XmlAttribute(name = "codec_tag_string", required = true) + protected String codecTagString; + @XmlAttribute(name = "extradata") + protected String extradata; + @XmlAttribute(name = "extradata_hash") + protected String extradataHash; + @XmlAttribute(name = "width") + protected Integer width; + @XmlAttribute(name = "height") + protected Integer height; + @XmlAttribute(name = "coded_width") + protected Integer codedWidth; + @XmlAttribute(name = "coded_height") + protected Integer codedHeight; + @XmlAttribute(name = "closed_captions") + protected Boolean closedCaptions; + @XmlAttribute(name = "has_b_frames") + protected Integer hasBFrames; + @XmlAttribute(name = "sample_aspect_ratio") + protected String sampleAspectRatio; + @XmlAttribute(name = "display_aspect_ratio") + protected String displayAspectRatio; + @XmlAttribute(name = "pix_fmt") + protected String pixFmt; + @XmlAttribute(name = "level") + protected Integer level; + @XmlAttribute(name = "color_range") + protected String colorRange; + @XmlAttribute(name = "color_space") + protected String colorSpace; + @XmlAttribute(name = "color_transfer") + protected String colorTransfer; + @XmlAttribute(name = "color_primaries") + protected String colorPrimaries; + @XmlAttribute(name = "chroma_location") + protected String chromaLocation; + @XmlAttribute(name = "field_order") + protected String fieldOrder; + @XmlAttribute(name = "timecode") + protected String timecode; + @XmlAttribute(name = "refs") + protected Integer refs; + @XmlAttribute(name = "sample_fmt") + protected String sampleFmt; + @XmlAttribute(name = "sample_rate") + protected Integer sampleRate; + @XmlAttribute(name = "channels") + protected Integer channels; + @XmlAttribute(name = "channel_layout") + protected String channelLayout; + @XmlAttribute(name = "bits_per_sample") + protected Integer bitsPerSample; + @XmlAttribute(name = "id") + protected String id; + @XmlAttribute(name = "r_frame_rate", required = true) + protected String rFrameRate; + @XmlAttribute(name = "avg_frame_rate", required = true) + protected String avgFrameRate; + @XmlAttribute(name = "time_base", required = true) + protected String timeBase; + @XmlAttribute(name = "start_pts") + protected Long startPts; + @XmlAttribute(name = "start_time") + protected Float startTime; + @XmlAttribute(name = "duration_ts") + protected Long durationTs; + @XmlAttribute(name = "duration") + protected Float duration; + @XmlAttribute(name = "bit_rate") + protected Integer bitRate; + @XmlAttribute(name = "max_bit_rate") + protected Integer maxBitRate; + @XmlAttribute(name = "bits_per_raw_sample") + protected Integer bitsPerRawSample; + @XmlAttribute(name = "nb_frames") + protected Integer nbFrames; + @XmlAttribute(name = "nb_read_frames") + protected Integer nbReadFrames; + @XmlAttribute(name = "nb_read_packets") + protected Integer nbReadPackets; + + /** + * Gets the value of the disposition property. + * + * @return + * possible object is + * {@link StreamDispositionType } + * + */ + public StreamDispositionType getDisposition() { + return disposition; + } + + /** + * Sets the value of the disposition property. + * + * @param value + * allowed object is + * {@link StreamDispositionType } + * + */ + public void setDisposition(StreamDispositionType value) { + this.disposition = value; + } + + /** + * Gets the value of the tag property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the tag property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getTag().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link TagType } + * + * + */ + public List getTag() { + if (tag == null) { + tag = new ArrayList(); + } + return this.tag; + } + + /** + * Gets the value of the sideDataList property. + * + * @return + * possible object is + * {@link PacketSideDataListType } + * + */ + public PacketSideDataListType getSideDataList() { + return sideDataList; + } + + /** + * Sets the value of the sideDataList property. + * + * @param value + * allowed object is + * {@link PacketSideDataListType } + * + */ + public void setSideDataList(PacketSideDataListType value) { + this.sideDataList = value; + } + + /** + * Gets the value of the index property. + * + */ + public int getIndex() { + return index; + } + + /** + * Sets the value of the index property. + * + */ + public void setIndex(int value) { + this.index = value; + } + + /** + * Gets the value of the codecName property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCodecName() { + return codecName; + } + + /** + * Sets the value of the codecName property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCodecName(String value) { + this.codecName = value; + } + + /** + * Gets the value of the codecLongName property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCodecLongName() { + return codecLongName; + } + + /** + * Sets the value of the codecLongName property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCodecLongName(String value) { + this.codecLongName = value; + } + + /** + * Gets the value of the profile property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getProfile() { + return profile; + } + + /** + * Sets the value of the profile property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setProfile(String value) { + this.profile = value; + } + + /** + * Gets the value of the codecType property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCodecType() { + return codecType; + } + + /** + * Sets the value of the codecType property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCodecType(String value) { + this.codecType = value; + } + + /** + * Gets the value of the codecTimeBase property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCodecTimeBase() { + return codecTimeBase; + } + + /** + * Sets the value of the codecTimeBase property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCodecTimeBase(String value) { + this.codecTimeBase = value; + } + + /** + * Gets the value of the codecTag property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCodecTag() { + return codecTag; + } + + /** + * Sets the value of the codecTag property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCodecTag(String value) { + this.codecTag = value; + } + + /** + * Gets the value of the codecTagString property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCodecTagString() { + return codecTagString; + } + + /** + * Sets the value of the codecTagString property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCodecTagString(String value) { + this.codecTagString = value; + } + + /** + * Gets the value of the extradata property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getExtradata() { + return extradata; + } + + /** + * Sets the value of the extradata property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setExtradata(String value) { + this.extradata = value; + } + + /** + * Gets the value of the extradataHash property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getExtradataHash() { + return extradataHash; + } + + /** + * Sets the value of the extradataHash property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setExtradataHash(String value) { + this.extradataHash = value; + } + + /** + * Gets the value of the width property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getWidth() { + return width; + } + + /** + * Sets the value of the width property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setWidth(Integer value) { + this.width = value; + } + + /** + * Gets the value of the height property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getHeight() { + return height; + } + + /** + * Sets the value of the height property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setHeight(Integer value) { + this.height = value; + } + + /** + * Gets the value of the codedWidth property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getCodedWidth() { + return codedWidth; + } + + /** + * Sets the value of the codedWidth property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setCodedWidth(Integer value) { + this.codedWidth = value; + } + + /** + * Gets the value of the codedHeight property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getCodedHeight() { + return codedHeight; + } + + /** + * Sets the value of the codedHeight property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setCodedHeight(Integer value) { + this.codedHeight = value; + } + + /** + * Gets the value of the closedCaptions property. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isClosedCaptions() { + return closedCaptions; + } + + /** + * Sets the value of the closedCaptions property. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setClosedCaptions(Boolean value) { + this.closedCaptions = value; + } + + /** + * Gets the value of the hasBFrames property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getHasBFrames() { + return hasBFrames; + } + + /** + * Sets the value of the hasBFrames property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setHasBFrames(Integer value) { + this.hasBFrames = value; + } + + /** + * Gets the value of the sampleAspectRatio property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSampleAspectRatio() { + return sampleAspectRatio; + } + + /** + * Sets the value of the sampleAspectRatio property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSampleAspectRatio(String value) { + this.sampleAspectRatio = value; + } + + /** + * Gets the value of the displayAspectRatio property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getDisplayAspectRatio() { + return displayAspectRatio; + } + + /** + * Sets the value of the displayAspectRatio property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setDisplayAspectRatio(String value) { + this.displayAspectRatio = value; + } + + /** + * Gets the value of the pixFmt property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getPixFmt() { + return pixFmt; + } + + /** + * Sets the value of the pixFmt property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setPixFmt(String value) { + this.pixFmt = value; + } + + /** + * Gets the value of the level property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getLevel() { + return level; + } + + /** + * Sets the value of the level property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setLevel(Integer value) { + this.level = value; + } + + /** + * Gets the value of the colorRange property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getColorRange() { + return colorRange; + } + + /** + * Sets the value of the colorRange property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setColorRange(String value) { + this.colorRange = value; + } + + /** + * Gets the value of the colorSpace property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getColorSpace() { + return colorSpace; + } + + /** + * Sets the value of the colorSpace property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setColorSpace(String value) { + this.colorSpace = value; + } + + /** + * Gets the value of the colorTransfer property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getColorTransfer() { + return colorTransfer; + } + + /** + * Sets the value of the colorTransfer property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setColorTransfer(String value) { + this.colorTransfer = value; + } + + /** + * Gets the value of the colorPrimaries property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getColorPrimaries() { + return colorPrimaries; + } + + /** + * Sets the value of the colorPrimaries property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setColorPrimaries(String value) { + this.colorPrimaries = value; + } + + /** + * Gets the value of the chromaLocation property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getChromaLocation() { + return chromaLocation; + } + + /** + * Sets the value of the chromaLocation property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setChromaLocation(String value) { + this.chromaLocation = value; + } + + /** + * Gets the value of the fieldOrder property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getFieldOrder() { + return fieldOrder; + } + + /** + * Sets the value of the fieldOrder property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setFieldOrder(String value) { + this.fieldOrder = value; + } + + /** + * Gets the value of the timecode property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getTimecode() { + return timecode; + } + + /** + * Sets the value of the timecode property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTimecode(String value) { + this.timecode = value; + } + + /** + * Gets the value of the refs property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getRefs() { + return refs; + } + + /** + * Sets the value of the refs property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setRefs(Integer value) { + this.refs = value; + } + + /** + * Gets the value of the sampleFmt property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSampleFmt() { + return sampleFmt; + } + + /** + * Sets the value of the sampleFmt property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSampleFmt(String value) { + this.sampleFmt = value; + } + + /** + * Gets the value of the sampleRate property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getSampleRate() { + return sampleRate; + } + + /** + * Sets the value of the sampleRate property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setSampleRate(Integer value) { + this.sampleRate = value; + } + + /** + * Gets the value of the channels property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getChannels() { + return channels; + } + + /** + * Sets the value of the channels property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setChannels(Integer value) { + this.channels = value; + } + + /** + * Gets the value of the channelLayout property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getChannelLayout() { + return channelLayout; + } + + /** + * Sets the value of the channelLayout property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setChannelLayout(String value) { + this.channelLayout = value; + } + + /** + * Gets the value of the bitsPerSample property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getBitsPerSample() { + return bitsPerSample; + } + + /** + * Sets the value of the bitsPerSample property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setBitsPerSample(Integer value) { + this.bitsPerSample = value; + } + + /** + * Gets the value of the id property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getId() { + return id; + } + + /** + * Sets the value of the id property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setId(String value) { + this.id = value; + } + + /** + * Gets the value of the rFrameRate property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getRFrameRate() { + return rFrameRate; + } + + /** + * Sets the value of the rFrameRate property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setRFrameRate(String value) { + this.rFrameRate = value; + } + + /** + * Gets the value of the avgFrameRate property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getAvgFrameRate() { + return avgFrameRate; + } + + /** + * Sets the value of the avgFrameRate property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setAvgFrameRate(String value) { + this.avgFrameRate = value; + } + + /** + * Gets the value of the timeBase property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getTimeBase() { + return timeBase; + } + + /** + * Sets the value of the timeBase property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTimeBase(String value) { + this.timeBase = value; + } + + /** + * Gets the value of the startPts property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getStartPts() { + return startPts; + } + + /** + * Sets the value of the startPts property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setStartPts(Long value) { + this.startPts = value; + } + + /** + * Gets the value of the startTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getStartTime() { + return startTime; + } + + /** + * Sets the value of the startTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setStartTime(Float value) { + this.startTime = value; + } + + /** + * Gets the value of the durationTs property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getDurationTs() { + return durationTs; + } + + /** + * Sets the value of the durationTs property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setDurationTs(Long value) { + this.durationTs = value; + } + + /** + * Gets the value of the duration property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getDuration() { + return duration; + } + + /** + * Sets the value of the duration property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setDuration(Float value) { + this.duration = value; + } + + /** + * Gets the value of the bitRate property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getBitRate() { + return bitRate; + } + + /** + * Sets the value of the bitRate property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setBitRate(Integer value) { + this.bitRate = value; + } + + /** + * Gets the value of the maxBitRate property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getMaxBitRate() { + return maxBitRate; + } + + /** + * Sets the value of the maxBitRate property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setMaxBitRate(Integer value) { + this.maxBitRate = value; + } + + /** + * Gets the value of the bitsPerRawSample property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getBitsPerRawSample() { + return bitsPerRawSample; + } + + /** + * Sets the value of the bitsPerRawSample property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setBitsPerRawSample(Integer value) { + this.bitsPerRawSample = value; + } + + /** + * Gets the value of the nbFrames property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getNbFrames() { + return nbFrames; + } + + /** + * Sets the value of the nbFrames property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setNbFrames(Integer value) { + this.nbFrames = value; + } + + /** + * Gets the value of the nbReadFrames property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getNbReadFrames() { + return nbReadFrames; + } + + /** + * Sets the value of the nbReadFrames property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setNbReadFrames(Integer value) { + this.nbReadFrames = value; + } + + /** + * Gets the value of the nbReadPackets property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getNbReadPackets() { + return nbReadPackets; + } + + /** + * Sets the value of the nbReadPackets property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setNbReadPackets(Integer value) { + this.nbReadPackets = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/StreamsType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/StreamsType.java new file mode 100644 index 00000000..132b3d0e --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/StreamsType.java @@ -0,0 +1,74 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for streamsType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="streamsType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="stream" type="{http://www.ffmpeg.org/schema/ffprobe}streamType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "streamsType", propOrder = { + "stream" +}) +public class StreamsType { + + protected List stream; + + /** + * Gets the value of the stream property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the stream property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getStream().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link StreamType } + * + * + */ + public List getStream() { + if (stream == null) { + stream = new ArrayList(); + } + return this.stream; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/SubtitleType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/SubtitleType.java new file mode 100644 index 00000000..d2528c1e --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/SubtitleType.java @@ -0,0 +1,231 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for subtitleType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="subtitleType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="media_type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" fixed="subtitle" />
+ *       <attribute name="pts" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="pts_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="format" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="start_display_time" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="end_display_time" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="num_rects" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "subtitleType") +public class SubtitleType { + + @XmlAttribute(name = "media_type", required = true) + protected String mediaType; + @XmlAttribute(name = "pts") + protected Long pts; + @XmlAttribute(name = "pts_time") + protected Float ptsTime; + @XmlAttribute(name = "format") + protected Integer format; + @XmlAttribute(name = "start_display_time") + protected Integer startDisplayTime; + @XmlAttribute(name = "end_display_time") + protected Integer endDisplayTime; + @XmlAttribute(name = "num_rects") + protected Integer numRects; + + /** + * Gets the value of the mediaType property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getMediaType() { + if (mediaType == null) { + return "subtitle"; + } else { + return mediaType; + } + } + + /** + * Sets the value of the mediaType property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setMediaType(String value) { + this.mediaType = value; + } + + /** + * Gets the value of the pts property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getPts() { + return pts; + } + + /** + * Sets the value of the pts property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setPts(Long value) { + this.pts = value; + } + + /** + * Gets the value of the ptsTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getPtsTime() { + return ptsTime; + } + + /** + * Sets the value of the ptsTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setPtsTime(Float value) { + this.ptsTime = value; + } + + /** + * Gets the value of the format property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getFormat() { + return format; + } + + /** + * Sets the value of the format property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setFormat(Integer value) { + this.format = value; + } + + /** + * Gets the value of the startDisplayTime property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getStartDisplayTime() { + return startDisplayTime; + } + + /** + * Sets the value of the startDisplayTime property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setStartDisplayTime(Integer value) { + this.startDisplayTime = value; + } + + /** + * Gets the value of the endDisplayTime property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getEndDisplayTime() { + return endDisplayTime; + } + + /** + * Sets the value of the endDisplayTime property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setEndDisplayTime(Integer value) { + this.endDisplayTime = value; + } + + /** + * Gets the value of the numRects property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getNumRects() { + return numRects; + } + + /** + * Sets the value of the numRects property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setNumRects(Integer value) { + this.numRects = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/TagType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/TagType.java new file mode 100644 index 00000000..51354e93 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/TagType.java @@ -0,0 +1,92 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + + +package org.ffmpeg.ffprobe436; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for tagType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="tagType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="key" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "tagType") +public class TagType { + + @XmlAttribute(name = "key", required = true) + protected String key; + @XmlAttribute(name = "value", required = true) + protected String value; + + /** + * Gets the value of the key property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getKey() { + return key; + } + + /** + * Sets the value of the key property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setKey(String value) { + this.key = value; + } + + /** + * Gets the value of the value property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getValue() { + return value; + } + + /** + * Sets the value of the value property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setValue(String value) { + this.value = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/package-info.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/package-info.java new file mode 100644 index 00000000..163c3a7a --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe436/package-info.java @@ -0,0 +1,9 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:01 PM CET +// + +@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.ffmpeg.org/schema/ffprobe") +package org.ffmpeg.ffprobe436; diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ChapterType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ChapterType.java new file mode 100644 index 00000000..f571bc0a --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ChapterType.java @@ -0,0 +1,205 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for chapterType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="chapterType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="tags" type="{http://www.ffmpeg.org/schema/ffprobe}tagsType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *       <attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="time_base" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="start" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="start_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="end_time" use="required" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "chapterType", propOrder = { + "tags" +}) +public class ChapterType { + + protected List tags; + @XmlAttribute(name = "id", required = true) + protected int id; + @XmlAttribute(name = "time_base", required = true) + protected String timeBase; + @XmlAttribute(name = "start", required = true) + protected int start; + @XmlAttribute(name = "start_time") + protected Float startTime; + @XmlAttribute(name = "end", required = true) + protected int end; + @XmlAttribute(name = "end_time", required = true) + protected float endTime; + + /** + * Gets the value of the tags property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the tags property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getTags().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link TagsType } + * + * + */ + public List getTags() { + if (tags == null) { + tags = new ArrayList(); + } + return this.tags; + } + + /** + * Gets the value of the id property. + * + */ + public int getId() { + return id; + } + + /** + * Sets the value of the id property. + * + */ + public void setId(int value) { + this.id = value; + } + + /** + * Gets the value of the timeBase property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getTimeBase() { + return timeBase; + } + + /** + * Sets the value of the timeBase property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTimeBase(String value) { + this.timeBase = value; + } + + /** + * Gets the value of the start property. + * + */ + public int getStart() { + return start; + } + + /** + * Sets the value of the start property. + * + */ + public void setStart(int value) { + this.start = value; + } + + /** + * Gets the value of the startTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getStartTime() { + return startTime; + } + + /** + * Sets the value of the startTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setStartTime(Float value) { + this.startTime = value; + } + + /** + * Gets the value of the end property. + * + */ + public int getEnd() { + return end; + } + + /** + * Sets the value of the end property. + * + */ + public void setEnd(int value) { + this.end = value; + } + + /** + * Gets the value of the endTime property. + * + */ + public float getEndTime() { + return endTime; + } + + /** + * Sets the value of the endTime property. + * + */ + public void setEndTime(float value) { + this.endTime = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ChaptersType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ChaptersType.java new file mode 100644 index 00000000..628d4ea6 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ChaptersType.java @@ -0,0 +1,74 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for chaptersType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="chaptersType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="chapter" type="{http://www.ffmpeg.org/schema/ffprobe}chapterType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "chaptersType", propOrder = { + "chapter" +}) +public class ChaptersType { + + protected List chapter; + + /** + * Gets the value of the chapter property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the chapter property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getChapter().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link ChapterType } + * + * + */ + public List getChapter() { + if (chapter == null) { + chapter = new ArrayList(); + } + return this.chapter; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ErrorType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ErrorType.java new file mode 100644 index 00000000..fb0c4b1f --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ErrorType.java @@ -0,0 +1,84 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for errorType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="errorType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="code" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="string" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "errorType") +public class ErrorType { + + @XmlAttribute(name = "code", required = true) + protected int code; + @XmlAttribute(name = "string", required = true) + protected String string; + + /** + * Gets the value of the code property. + * + */ + public int getCode() { + return code; + } + + /** + * Sets the value of the code property. + * + */ + public void setCode(int value) { + this.code = value; + } + + /** + * Gets the value of the string property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getString() { + return string; + } + + /** + * Sets the value of the string property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setString(String value) { + this.string = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FfprobeType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FfprobeType.java new file mode 100644 index 00000000..05ebb425 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FfprobeType.java @@ -0,0 +1,342 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for ffprobeType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="ffprobeType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="program_version" type="{http://www.ffmpeg.org/schema/ffprobe}programVersionType" minOccurs="0"/>
+ *         <element name="library_versions" type="{http://www.ffmpeg.org/schema/ffprobe}libraryVersionsType" minOccurs="0"/>
+ *         <element name="pixel_formats" type="{http://www.ffmpeg.org/schema/ffprobe}pixelFormatsType" minOccurs="0"/>
+ *         <element name="packets" type="{http://www.ffmpeg.org/schema/ffprobe}packetsType" minOccurs="0"/>
+ *         <element name="frames" type="{http://www.ffmpeg.org/schema/ffprobe}framesType" minOccurs="0"/>
+ *         <element name="packets_and_frames" type="{http://www.ffmpeg.org/schema/ffprobe}packetsAndFramesType" minOccurs="0"/>
+ *         <element name="programs" type="{http://www.ffmpeg.org/schema/ffprobe}programsType" minOccurs="0"/>
+ *         <element name="streams" type="{http://www.ffmpeg.org/schema/ffprobe}streamsType" minOccurs="0"/>
+ *         <element name="chapters" type="{http://www.ffmpeg.org/schema/ffprobe}chaptersType" minOccurs="0"/>
+ *         <element name="format" type="{http://www.ffmpeg.org/schema/ffprobe}formatType" minOccurs="0"/>
+ *         <element name="error" type="{http://www.ffmpeg.org/schema/ffprobe}errorType" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "ffprobeType", propOrder = { + "programVersion", + "libraryVersions", + "pixelFormats", + "packets", + "frames", + "packetsAndFrames", + "programs", + "streams", + "chapters", + "format", + "error" +}) +public class FfprobeType { + + @XmlElement(name = "program_version") + protected ProgramVersionType programVersion; + @XmlElement(name = "library_versions") + protected LibraryVersionsType libraryVersions; + @XmlElement(name = "pixel_formats") + protected PixelFormatsType pixelFormats; + protected PacketsType packets; + protected FramesType frames; + @XmlElement(name = "packets_and_frames") + protected PacketsAndFramesType packetsAndFrames; + protected ProgramsType programs; + protected StreamsType streams; + protected ChaptersType chapters; + protected FormatType format; + protected ErrorType error; + + /** + * Gets the value of the programVersion property. + * + * @return + * possible object is + * {@link ProgramVersionType } + * + */ + public ProgramVersionType getProgramVersion() { + return programVersion; + } + + /** + * Sets the value of the programVersion property. + * + * @param value + * allowed object is + * {@link ProgramVersionType } + * + */ + public void setProgramVersion(ProgramVersionType value) { + this.programVersion = value; + } + + /** + * Gets the value of the libraryVersions property. + * + * @return + * possible object is + * {@link LibraryVersionsType } + * + */ + public LibraryVersionsType getLibraryVersions() { + return libraryVersions; + } + + /** + * Sets the value of the libraryVersions property. + * + * @param value + * allowed object is + * {@link LibraryVersionsType } + * + */ + public void setLibraryVersions(LibraryVersionsType value) { + this.libraryVersions = value; + } + + /** + * Gets the value of the pixelFormats property. + * + * @return + * possible object is + * {@link PixelFormatsType } + * + */ + public PixelFormatsType getPixelFormats() { + return pixelFormats; + } + + /** + * Sets the value of the pixelFormats property. + * + * @param value + * allowed object is + * {@link PixelFormatsType } + * + */ + public void setPixelFormats(PixelFormatsType value) { + this.pixelFormats = value; + } + + /** + * Gets the value of the packets property. + * + * @return + * possible object is + * {@link PacketsType } + * + */ + public PacketsType getPackets() { + return packets; + } + + /** + * Sets the value of the packets property. + * + * @param value + * allowed object is + * {@link PacketsType } + * + */ + public void setPackets(PacketsType value) { + this.packets = value; + } + + /** + * Gets the value of the frames property. + * + * @return + * possible object is + * {@link FramesType } + * + */ + public FramesType getFrames() { + return frames; + } + + /** + * Sets the value of the frames property. + * + * @param value + * allowed object is + * {@link FramesType } + * + */ + public void setFrames(FramesType value) { + this.frames = value; + } + + /** + * Gets the value of the packetsAndFrames property. + * + * @return + * possible object is + * {@link PacketsAndFramesType } + * + */ + public PacketsAndFramesType getPacketsAndFrames() { + return packetsAndFrames; + } + + /** + * Sets the value of the packetsAndFrames property. + * + * @param value + * allowed object is + * {@link PacketsAndFramesType } + * + */ + public void setPacketsAndFrames(PacketsAndFramesType value) { + this.packetsAndFrames = value; + } + + /** + * Gets the value of the programs property. + * + * @return + * possible object is + * {@link ProgramsType } + * + */ + public ProgramsType getPrograms() { + return programs; + } + + /** + * Sets the value of the programs property. + * + * @param value + * allowed object is + * {@link ProgramsType } + * + */ + public void setPrograms(ProgramsType value) { + this.programs = value; + } + + /** + * Gets the value of the streams property. + * + * @return + * possible object is + * {@link StreamsType } + * + */ + public StreamsType getStreams() { + return streams; + } + + /** + * Sets the value of the streams property. + * + * @param value + * allowed object is + * {@link StreamsType } + * + */ + public void setStreams(StreamsType value) { + this.streams = value; + } + + /** + * Gets the value of the chapters property. + * + * @return + * possible object is + * {@link ChaptersType } + * + */ + public ChaptersType getChapters() { + return chapters; + } + + /** + * Sets the value of the chapters property. + * + * @param value + * allowed object is + * {@link ChaptersType } + * + */ + public void setChapters(ChaptersType value) { + this.chapters = value; + } + + /** + * Gets the value of the format property. + * + * @return + * possible object is + * {@link FormatType } + * + */ + public FormatType getFormat() { + return format; + } + + /** + * Sets the value of the format property. + * + * @param value + * allowed object is + * {@link FormatType } + * + */ + public void setFormat(FormatType value) { + this.format = value; + } + + /** + * Gets the value of the error property. + * + * @return + * possible object is + * {@link ErrorType } + * + */ + public ErrorType getError() { + return error; + } + + /** + * Sets the value of the error property. + * + * @param value + * allowed object is + * {@link ErrorType } + * + */ + public void setError(ErrorType value) { + this.error = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FormatType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FormatType.java new file mode 100644 index 00000000..254807ad --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FormatType.java @@ -0,0 +1,322 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for formatType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="formatType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="tags" type="{http://www.ffmpeg.org/schema/ffprobe}tagsType" minOccurs="0"/>
+ *       </sequence>
+ *       <attribute name="filename" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="nb_streams" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="nb_programs" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="format_name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="format_long_name" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="start_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="duration" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="size" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="bit_rate" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="probe_score" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "formatType", propOrder = { + "tags" +}) +public class FormatType { + + protected TagsType tags; + @XmlAttribute(name = "filename", required = true) + protected String filename; + @XmlAttribute(name = "nb_streams", required = true) + protected int nbStreams; + @XmlAttribute(name = "nb_programs", required = true) + protected int nbPrograms; + @XmlAttribute(name = "format_name", required = true) + protected String formatName; + @XmlAttribute(name = "format_long_name") + protected String formatLongName; + @XmlAttribute(name = "start_time") + protected Float startTime; + @XmlAttribute(name = "duration") + protected Float duration; + @XmlAttribute(name = "size") + protected Long size; + @XmlAttribute(name = "bit_rate") + protected Long bitRate; + @XmlAttribute(name = "probe_score") + protected Integer probeScore; + + /** + * Gets the value of the tags property. + * + * @return + * possible object is + * {@link TagsType } + * + */ + public TagsType getTags() { + return tags; + } + + /** + * Sets the value of the tags property. + * + * @param value + * allowed object is + * {@link TagsType } + * + */ + public void setTags(TagsType value) { + this.tags = value; + } + + /** + * Gets the value of the filename property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getFilename() { + return filename; + } + + /** + * Sets the value of the filename property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setFilename(String value) { + this.filename = value; + } + + /** + * Gets the value of the nbStreams property. + * + */ + public int getNbStreams() { + return nbStreams; + } + + /** + * Sets the value of the nbStreams property. + * + */ + public void setNbStreams(int value) { + this.nbStreams = value; + } + + /** + * Gets the value of the nbPrograms property. + * + */ + public int getNbPrograms() { + return nbPrograms; + } + + /** + * Sets the value of the nbPrograms property. + * + */ + public void setNbPrograms(int value) { + this.nbPrograms = value; + } + + /** + * Gets the value of the formatName property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getFormatName() { + return formatName; + } + + /** + * Sets the value of the formatName property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setFormatName(String value) { + this.formatName = value; + } + + /** + * Gets the value of the formatLongName property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getFormatLongName() { + return formatLongName; + } + + /** + * Sets the value of the formatLongName property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setFormatLongName(String value) { + this.formatLongName = value; + } + + /** + * Gets the value of the startTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getStartTime() { + return startTime; + } + + /** + * Sets the value of the startTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setStartTime(Float value) { + this.startTime = value; + } + + /** + * Gets the value of the duration property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getDuration() { + return duration; + } + + /** + * Sets the value of the duration property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setDuration(Float value) { + this.duration = value; + } + + /** + * Gets the value of the size property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getSize() { + return size; + } + + /** + * Sets the value of the size property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setSize(Long value) { + this.size = value; + } + + /** + * Gets the value of the bitRate property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getBitRate() { + return bitRate; + } + + /** + * Sets the value of the bitRate property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setBitRate(Long value) { + this.bitRate = value; + } + + /** + * Gets the value of the probeScore property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getProbeScore() { + return probeScore; + } + + /** + * Sets the value of the probeScore property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setProbeScore(Integer value) { + this.probeScore = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FrameSideDataListType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FrameSideDataListType.java new file mode 100644 index 00000000..1b484dfc --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FrameSideDataListType.java @@ -0,0 +1,76 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for frameSideDataListType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="frameSideDataListType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="side_data" type="{http://www.ffmpeg.org/schema/ffprobe}frameSideDataType" maxOccurs="unbounded"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "frameSideDataListType", propOrder = { + "sideData" +}) +public class FrameSideDataListType { + + @XmlElement(name = "side_data", required = true) + protected List sideData; + + /** + * Gets the value of the sideData property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the sideData property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getSideData().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link FrameSideDataType } + * + * + */ + public List getSideData() { + if (sideData == null) { + sideData = new ArrayList(); + } + return this.sideData; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FrameSideDataTimecodeList.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FrameSideDataTimecodeList.java new file mode 100644 index 00000000..0aecabe3 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FrameSideDataTimecodeList.java @@ -0,0 +1,74 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for frameSideDataTimecodeList complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="frameSideDataTimecodeList">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="timecode" type="{http://www.ffmpeg.org/schema/ffprobe}frameSideDataTimecodeType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "frameSideDataTimecodeList", propOrder = { + "timecode" +}) +public class FrameSideDataTimecodeList { + + protected List timecode; + + /** + * Gets the value of the timecode property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the timecode property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getTimecode().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link FrameSideDataTimecodeType } + * + * + */ + public List getTimecode() { + if (timecode == null) { + timecode = new ArrayList(); + } + return this.timecode; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FrameSideDataTimecodeType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FrameSideDataTimecodeType.java new file mode 100644 index 00000000..fc26db99 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FrameSideDataTimecodeType.java @@ -0,0 +1,65 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for frameSideDataTimecodeType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="frameSideDataTimecodeType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "frameSideDataTimecodeType") +public class FrameSideDataTimecodeType { + + @XmlAttribute(name = "value") + protected String value; + + /** + * Gets the value of the value property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getValue() { + return value; + } + + /** + * Sets the value of the value property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setValue(String value) { + this.value = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FrameSideDataType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FrameSideDataType.java new file mode 100644 index 00000000..f1f9260d --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FrameSideDataType.java @@ -0,0 +1,149 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for frameSideDataType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="frameSideDataType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="timecodes" type="{http://www.ffmpeg.org/schema/ffprobe}frameSideDataTimecodeList" minOccurs="0"/>
+ *       </sequence>
+ *       <attribute name="side_data_type" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="side_data_size" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="timecode" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "frameSideDataType", propOrder = { + "timecodes" +}) +public class FrameSideDataType { + + protected FrameSideDataTimecodeList timecodes; + @XmlAttribute(name = "side_data_type") + protected String sideDataType; + @XmlAttribute(name = "side_data_size") + protected Integer sideDataSize; + @XmlAttribute(name = "timecode") + protected String timecode; + + /** + * Gets the value of the timecodes property. + * + * @return + * possible object is + * {@link FrameSideDataTimecodeList } + * + */ + public FrameSideDataTimecodeList getTimecodes() { + return timecodes; + } + + /** + * Sets the value of the timecodes property. + * + * @param value + * allowed object is + * {@link FrameSideDataTimecodeList } + * + */ + public void setTimecodes(FrameSideDataTimecodeList value) { + this.timecodes = value; + } + + /** + * Gets the value of the sideDataType property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSideDataType() { + return sideDataType; + } + + /** + * Sets the value of the sideDataType property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSideDataType(String value) { + this.sideDataType = value; + } + + /** + * Gets the value of the sideDataSize property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getSideDataSize() { + return sideDataSize; + } + + /** + * Sets the value of the sideDataSize property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setSideDataSize(Integer value) { + this.sideDataSize = value; + } + + /** + * Gets the value of the timecode property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getTimecode() { + return timecode; + } + + /** + * Sets the value of the timecode property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTimecode(String value) { + this.timecode = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FrameType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FrameType.java new file mode 100644 index 00000000..bc6d4fa3 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FrameType.java @@ -0,0 +1,1142 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for frameType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="frameType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="tags" type="{http://www.ffmpeg.org/schema/ffprobe}tagsType" minOccurs="0"/>
+ *         <element name="logs" type="{http://www.ffmpeg.org/schema/ffprobe}logsType" minOccurs="0"/>
+ *         <element name="side_data_list" type="{http://www.ffmpeg.org/schema/ffprobe}frameSideDataListType" minOccurs="0"/>
+ *       </sequence>
+ *       <attribute name="media_type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="stream_index" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="key_frame" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="pts" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="pts_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="pkt_dts" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="pkt_dts_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="best_effort_timestamp" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="best_effort_timestamp_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="pkt_duration" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="pkt_duration_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="duration" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="duration_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="pkt_pos" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="pkt_size" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="sample_fmt" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="nb_samples" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="channels" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="channel_layout" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="width" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="height" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="crop_top" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="crop_bottom" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="crop_left" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="crop_right" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="pix_fmt" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="sample_aspect_ratio" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="pict_type" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="coded_picture_number" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="display_picture_number" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="interlaced_frame" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="top_field_first" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="repeat_pict" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="color_range" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="color_space" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="color_primaries" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="color_transfer" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="chroma_location" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "frameType", propOrder = { + "tags", + "logs", + "sideDataList" +}) +public class FrameType { + + protected TagsType tags; + protected LogsType logs; + @XmlElement(name = "side_data_list") + protected FrameSideDataListType sideDataList; + @XmlAttribute(name = "media_type", required = true) + protected String mediaType; + @XmlAttribute(name = "stream_index") + protected Integer streamIndex; + @XmlAttribute(name = "key_frame", required = true) + protected int keyFrame; + @XmlAttribute(name = "pts") + protected Long pts; + @XmlAttribute(name = "pts_time") + protected Float ptsTime; + @XmlAttribute(name = "pkt_dts") + protected Long pktDts; + @XmlAttribute(name = "pkt_dts_time") + protected Float pktDtsTime; + @XmlAttribute(name = "best_effort_timestamp") + protected Long bestEffortTimestamp; + @XmlAttribute(name = "best_effort_timestamp_time") + protected Float bestEffortTimestampTime; + @XmlAttribute(name = "pkt_duration") + protected Long pktDuration; + @XmlAttribute(name = "pkt_duration_time") + protected Float pktDurationTime; + @XmlAttribute(name = "duration") + protected Long duration; + @XmlAttribute(name = "duration_time") + protected Float durationTime; + @XmlAttribute(name = "pkt_pos") + protected Long pktPos; + @XmlAttribute(name = "pkt_size") + protected Integer pktSize; + @XmlAttribute(name = "sample_fmt") + protected String sampleFmt; + @XmlAttribute(name = "nb_samples") + protected Long nbSamples; + @XmlAttribute(name = "channels") + protected Integer channels; + @XmlAttribute(name = "channel_layout") + protected String channelLayout; + @XmlAttribute(name = "width") + protected Long width; + @XmlAttribute(name = "height") + protected Long height; + @XmlAttribute(name = "crop_top") + protected Long cropTop; + @XmlAttribute(name = "crop_bottom") + protected Long cropBottom; + @XmlAttribute(name = "crop_left") + protected Long cropLeft; + @XmlAttribute(name = "crop_right") + protected Long cropRight; + @XmlAttribute(name = "pix_fmt") + protected String pixFmt; + @XmlAttribute(name = "sample_aspect_ratio") + protected String sampleAspectRatio; + @XmlAttribute(name = "pict_type") + protected String pictType; + @XmlAttribute(name = "coded_picture_number") + protected Long codedPictureNumber; + @XmlAttribute(name = "display_picture_number") + protected Long displayPictureNumber; + @XmlAttribute(name = "interlaced_frame") + protected Integer interlacedFrame; + @XmlAttribute(name = "top_field_first") + protected Integer topFieldFirst; + @XmlAttribute(name = "repeat_pict") + protected Integer repeatPict; + @XmlAttribute(name = "color_range") + protected String colorRange; + @XmlAttribute(name = "color_space") + protected String colorSpace; + @XmlAttribute(name = "color_primaries") + protected String colorPrimaries; + @XmlAttribute(name = "color_transfer") + protected String colorTransfer; + @XmlAttribute(name = "chroma_location") + protected String chromaLocation; + + /** + * Gets the value of the tags property. + * + * @return + * possible object is + * {@link TagsType } + * + */ + public TagsType getTags() { + return tags; + } + + /** + * Sets the value of the tags property. + * + * @param value + * allowed object is + * {@link TagsType } + * + */ + public void setTags(TagsType value) { + this.tags = value; + } + + /** + * Gets the value of the logs property. + * + * @return + * possible object is + * {@link LogsType } + * + */ + public LogsType getLogs() { + return logs; + } + + /** + * Sets the value of the logs property. + * + * @param value + * allowed object is + * {@link LogsType } + * + */ + public void setLogs(LogsType value) { + this.logs = value; + } + + /** + * Gets the value of the sideDataList property. + * + * @return + * possible object is + * {@link FrameSideDataListType } + * + */ + public FrameSideDataListType getSideDataList() { + return sideDataList; + } + + /** + * Sets the value of the sideDataList property. + * + * @param value + * allowed object is + * {@link FrameSideDataListType } + * + */ + public void setSideDataList(FrameSideDataListType value) { + this.sideDataList = value; + } + + /** + * Gets the value of the mediaType property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getMediaType() { + return mediaType; + } + + /** + * Sets the value of the mediaType property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setMediaType(String value) { + this.mediaType = value; + } + + /** + * Gets the value of the streamIndex property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getStreamIndex() { + return streamIndex; + } + + /** + * Sets the value of the streamIndex property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setStreamIndex(Integer value) { + this.streamIndex = value; + } + + /** + * Gets the value of the keyFrame property. + * + */ + public int getKeyFrame() { + return keyFrame; + } + + /** + * Sets the value of the keyFrame property. + * + */ + public void setKeyFrame(int value) { + this.keyFrame = value; + } + + /** + * Gets the value of the pts property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getPts() { + return pts; + } + + /** + * Sets the value of the pts property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setPts(Long value) { + this.pts = value; + } + + /** + * Gets the value of the ptsTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getPtsTime() { + return ptsTime; + } + + /** + * Sets the value of the ptsTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setPtsTime(Float value) { + this.ptsTime = value; + } + + /** + * Gets the value of the pktDts property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getPktDts() { + return pktDts; + } + + /** + * Sets the value of the pktDts property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setPktDts(Long value) { + this.pktDts = value; + } + + /** + * Gets the value of the pktDtsTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getPktDtsTime() { + return pktDtsTime; + } + + /** + * Sets the value of the pktDtsTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setPktDtsTime(Float value) { + this.pktDtsTime = value; + } + + /** + * Gets the value of the bestEffortTimestamp property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getBestEffortTimestamp() { + return bestEffortTimestamp; + } + + /** + * Sets the value of the bestEffortTimestamp property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setBestEffortTimestamp(Long value) { + this.bestEffortTimestamp = value; + } + + /** + * Gets the value of the bestEffortTimestampTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getBestEffortTimestampTime() { + return bestEffortTimestampTime; + } + + /** + * Sets the value of the bestEffortTimestampTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setBestEffortTimestampTime(Float value) { + this.bestEffortTimestampTime = value; + } + + /** + * Gets the value of the pktDuration property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getPktDuration() { + return pktDuration; + } + + /** + * Sets the value of the pktDuration property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setPktDuration(Long value) { + this.pktDuration = value; + } + + /** + * Gets the value of the pktDurationTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getPktDurationTime() { + return pktDurationTime; + } + + /** + * Sets the value of the pktDurationTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setPktDurationTime(Float value) { + this.pktDurationTime = value; + } + + /** + * Gets the value of the duration property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getDuration() { + return duration; + } + + /** + * Sets the value of the duration property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setDuration(Long value) { + this.duration = value; + } + + /** + * Gets the value of the durationTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getDurationTime() { + return durationTime; + } + + /** + * Sets the value of the durationTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setDurationTime(Float value) { + this.durationTime = value; + } + + /** + * Gets the value of the pktPos property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getPktPos() { + return pktPos; + } + + /** + * Sets the value of the pktPos property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setPktPos(Long value) { + this.pktPos = value; + } + + /** + * Gets the value of the pktSize property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getPktSize() { + return pktSize; + } + + /** + * Sets the value of the pktSize property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setPktSize(Integer value) { + this.pktSize = value; + } + + /** + * Gets the value of the sampleFmt property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSampleFmt() { + return sampleFmt; + } + + /** + * Sets the value of the sampleFmt property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSampleFmt(String value) { + this.sampleFmt = value; + } + + /** + * Gets the value of the nbSamples property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getNbSamples() { + return nbSamples; + } + + /** + * Sets the value of the nbSamples property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setNbSamples(Long value) { + this.nbSamples = value; + } + + /** + * Gets the value of the channels property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getChannels() { + return channels; + } + + /** + * Sets the value of the channels property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setChannels(Integer value) { + this.channels = value; + } + + /** + * Gets the value of the channelLayout property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getChannelLayout() { + return channelLayout; + } + + /** + * Sets the value of the channelLayout property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setChannelLayout(String value) { + this.channelLayout = value; + } + + /** + * Gets the value of the width property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getWidth() { + return width; + } + + /** + * Sets the value of the width property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setWidth(Long value) { + this.width = value; + } + + /** + * Gets the value of the height property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getHeight() { + return height; + } + + /** + * Sets the value of the height property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setHeight(Long value) { + this.height = value; + } + + /** + * Gets the value of the cropTop property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getCropTop() { + return cropTop; + } + + /** + * Sets the value of the cropTop property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setCropTop(Long value) { + this.cropTop = value; + } + + /** + * Gets the value of the cropBottom property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getCropBottom() { + return cropBottom; + } + + /** + * Sets the value of the cropBottom property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setCropBottom(Long value) { + this.cropBottom = value; + } + + /** + * Gets the value of the cropLeft property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getCropLeft() { + return cropLeft; + } + + /** + * Sets the value of the cropLeft property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setCropLeft(Long value) { + this.cropLeft = value; + } + + /** + * Gets the value of the cropRight property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getCropRight() { + return cropRight; + } + + /** + * Sets the value of the cropRight property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setCropRight(Long value) { + this.cropRight = value; + } + + /** + * Gets the value of the pixFmt property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getPixFmt() { + return pixFmt; + } + + /** + * Sets the value of the pixFmt property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setPixFmt(String value) { + this.pixFmt = value; + } + + /** + * Gets the value of the sampleAspectRatio property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSampleAspectRatio() { + return sampleAspectRatio; + } + + /** + * Sets the value of the sampleAspectRatio property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSampleAspectRatio(String value) { + this.sampleAspectRatio = value; + } + + /** + * Gets the value of the pictType property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getPictType() { + return pictType; + } + + /** + * Sets the value of the pictType property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setPictType(String value) { + this.pictType = value; + } + + /** + * Gets the value of the codedPictureNumber property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getCodedPictureNumber() { + return codedPictureNumber; + } + + /** + * Sets the value of the codedPictureNumber property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setCodedPictureNumber(Long value) { + this.codedPictureNumber = value; + } + + /** + * Gets the value of the displayPictureNumber property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getDisplayPictureNumber() { + return displayPictureNumber; + } + + /** + * Sets the value of the displayPictureNumber property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setDisplayPictureNumber(Long value) { + this.displayPictureNumber = value; + } + + /** + * Gets the value of the interlacedFrame property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getInterlacedFrame() { + return interlacedFrame; + } + + /** + * Sets the value of the interlacedFrame property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setInterlacedFrame(Integer value) { + this.interlacedFrame = value; + } + + /** + * Gets the value of the topFieldFirst property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getTopFieldFirst() { + return topFieldFirst; + } + + /** + * Sets the value of the topFieldFirst property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setTopFieldFirst(Integer value) { + this.topFieldFirst = value; + } + + /** + * Gets the value of the repeatPict property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getRepeatPict() { + return repeatPict; + } + + /** + * Sets the value of the repeatPict property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setRepeatPict(Integer value) { + this.repeatPict = value; + } + + /** + * Gets the value of the colorRange property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getColorRange() { + return colorRange; + } + + /** + * Sets the value of the colorRange property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setColorRange(String value) { + this.colorRange = value; + } + + /** + * Gets the value of the colorSpace property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getColorSpace() { + return colorSpace; + } + + /** + * Sets the value of the colorSpace property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setColorSpace(String value) { + this.colorSpace = value; + } + + /** + * Gets the value of the colorPrimaries property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getColorPrimaries() { + return colorPrimaries; + } + + /** + * Sets the value of the colorPrimaries property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setColorPrimaries(String value) { + this.colorPrimaries = value; + } + + /** + * Gets the value of the colorTransfer property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getColorTransfer() { + return colorTransfer; + } + + /** + * Sets the value of the colorTransfer property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setColorTransfer(String value) { + this.colorTransfer = value; + } + + /** + * Gets the value of the chromaLocation property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getChromaLocation() { + return chromaLocation; + } + + /** + * Sets the value of the chromaLocation property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setChromaLocation(String value) { + this.chromaLocation = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FramesType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FramesType.java new file mode 100644 index 00000000..f43f3308 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/FramesType.java @@ -0,0 +1,82 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElements; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for framesType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="framesType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <choice maxOccurs="unbounded" minOccurs="0">
+ *         <element name="frame" type="{http://www.ffmpeg.org/schema/ffprobe}frameType"/>
+ *         <element name="subtitle" type="{http://www.ffmpeg.org/schema/ffprobe}subtitleType"/>
+ *       </choice>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "framesType", propOrder = { + "frameOrSubtitle" +}) +public class FramesType { + + @XmlElements({ + @XmlElement(name = "frame", type = FrameType.class), + @XmlElement(name = "subtitle", type = SubtitleType.class) + }) + protected List frameOrSubtitle; + + /** + * Gets the value of the frameOrSubtitle property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the frameOrSubtitle property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getFrameOrSubtitle().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link FrameType } + * {@link SubtitleType } + * + * + */ + public List getFrameOrSubtitle() { + if (frameOrSubtitle == null) { + frameOrSubtitle = new ArrayList(); + } + return this.frameOrSubtitle; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/LibraryVersionType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/LibraryVersionType.java new file mode 100644 index 00000000..43e0f3db --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/LibraryVersionType.java @@ -0,0 +1,155 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + +/** + *

+ * Java class for libraryVersionType complex type. + *

+ * The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="libraryVersionType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="major" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="minor" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="micro" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="version" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="ident" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "libraryVersionType") +public class LibraryVersionType { + + @XmlAttribute(name = "name", required = true) + protected String name; + @XmlAttribute(name = "major", required = true) + protected int major; + @XmlAttribute(name = "minor", required = true) + protected int minor; + @XmlAttribute(name = "micro", required = true) + protected int micro; + @XmlAttribute(name = "version", required = true) + protected int version; + @XmlAttribute(name = "ident", required = true) + protected String ident; + + /** + * Gets the value of the name property. + * @return + * possible object is + * {@link String } + */ + + public String getName() { + return name; + } + + /** + * Sets the value of the name property. + * @param value + * allowed object is + * {@link String } + */ + public void setName(final String value) { + name = value; + } + + /** + * Gets the value of the major property. + */ + + public int getMajor() { + return major; + } + + /** + * Sets the value of the major property. + */ + public void setMajor(final int value) { + major = value; + } + + /** + * Gets the value of the minor property. + */ + + public int getMinor() { + return minor; + } + + /** + * Sets the value of the minor property. + */ + public void setMinor(final int value) { + minor = value; + } + + /** + * Gets the value of the micro property. + */ + + public int getMicro() { + return micro; + } + + /** + * Sets the value of the micro property. + */ + public void setMicro(final int value) { + micro = value; + } + + /** + * Gets the value of the version property. + */ + + public int getVersion() { + return version; + } + + /** + * Sets the value of the version property. + */ + public void setVersion(final int value) { + version = value; + } + + /** + * Gets the value of the ident property. + * @return + * possible object is + * {@link String } + */ + + public String getIdent() { + return ident; + } + + /** + * Sets the value of the ident property. + * @param value + * allowed object is + * {@link String } + */ + public void setIdent(final String value) { + ident = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/LibraryVersionsType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/LibraryVersionsType.java new file mode 100644 index 00000000..fedcdc85 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/LibraryVersionsType.java @@ -0,0 +1,76 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for libraryVersionsType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="libraryVersionsType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="library_version" type="{http://www.ffmpeg.org/schema/ffprobe}libraryVersionType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "libraryVersionsType", propOrder = { + "libraryVersion" +}) +public class LibraryVersionsType { + + @XmlElement(name = "library_version") + protected List libraryVersion; + + /** + * Gets the value of the libraryVersion property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the libraryVersion property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getLibraryVersion().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link LibraryVersionType } + * + * + */ + public List getLibraryVersion() { + if (libraryVersion == null) { + libraryVersion = new ArrayList(); + } + return this.libraryVersion; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/LogType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/LogType.java new file mode 100644 index 00000000..bf1fd5b7 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/LogType.java @@ -0,0 +1,200 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for logType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="logType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="context" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="level" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="category" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="parent_context" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="parent_category" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="message" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "logType") +public class LogType { + + @XmlAttribute(name = "context") + protected String context; + @XmlAttribute(name = "level") + protected Integer level; + @XmlAttribute(name = "category") + protected Integer category; + @XmlAttribute(name = "parent_context") + protected String parentContext; + @XmlAttribute(name = "parent_category") + protected Integer parentCategory; + @XmlAttribute(name = "message") + protected String message; + + /** + * Gets the value of the context property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getContext() { + return context; + } + + /** + * Sets the value of the context property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setContext(String value) { + this.context = value; + } + + /** + * Gets the value of the level property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getLevel() { + return level; + } + + /** + * Sets the value of the level property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setLevel(Integer value) { + this.level = value; + } + + /** + * Gets the value of the category property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getCategory() { + return category; + } + + /** + * Sets the value of the category property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setCategory(Integer value) { + this.category = value; + } + + /** + * Gets the value of the parentContext property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getParentContext() { + return parentContext; + } + + /** + * Sets the value of the parentContext property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setParentContext(String value) { + this.parentContext = value; + } + + /** + * Gets the value of the parentCategory property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getParentCategory() { + return parentCategory; + } + + /** + * Sets the value of the parentCategory property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setParentCategory(Integer value) { + this.parentCategory = value; + } + + /** + * Gets the value of the message property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getMessage() { + return message; + } + + /** + * Sets the value of the message property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setMessage(String value) { + this.message = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/LogsType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/LogsType.java new file mode 100644 index 00000000..245c50d8 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/LogsType.java @@ -0,0 +1,76 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for logsType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="logsType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="log" type="{http://www.ffmpeg.org/schema/ffprobe}logType" maxOccurs="unbounded"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "logsType", propOrder = { + "log" +}) +public class LogsType { + + @XmlElement(required = true) + protected List log; + + /** + * Gets the value of the log property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the log property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getLog().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link LogType } + * + * + */ + public List getLog() { + if (log == null) { + log = new ArrayList(); + } + return this.log; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ObjectFactory.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ObjectFactory.java new file mode 100644 index 00000000..04b91b42 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ObjectFactory.java @@ -0,0 +1,336 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.JAXBElement; +import javax.xml.bind.annotation.XmlElementDecl; +import javax.xml.bind.annotation.XmlRegistry; +import javax.xml.namespace.QName; + + +/** + * This object contains factory methods for each + * Java content interface and Java element interface + * generated in the org.ffmpeg.ffprobe611 package. + *

An ObjectFactory allows you to programatically + * construct new instances of the Java representation + * for XML content. The Java representation of XML + * content can consist of schema derived interfaces + * and classes representing the binding of schema + * type definitions, element declarations and model + * groups. Factory methods for each of these are + * provided in this class. + * + */ +@XmlRegistry +public class ObjectFactory { + + private final static QName _Ffprobe_QNAME = new QName("http://www.ffmpeg.org/schema/ffprobe", "ffprobe"); + + /** + * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.ffmpeg.ffprobe611 + * + */ + public ObjectFactory() { + } + + /** + * Create an instance of {@link FfprobeType } + * + */ + public FfprobeType createFfprobeType() { + return new FfprobeType(); + } + + /** + * Create an instance of {@link PacketsType } + * + */ + public PacketsType createPacketsType() { + return new PacketsType(); + } + + /** + * Create an instance of {@link FramesType } + * + */ + public FramesType createFramesType() { + return new FramesType(); + } + + /** + * Create an instance of {@link PacketsAndFramesType } + * + */ + public PacketsAndFramesType createPacketsAndFramesType() { + return new PacketsAndFramesType(); + } + + /** + * Create an instance of {@link TagsType } + * + */ + public TagsType createTagsType() { + return new TagsType(); + } + + /** + * Create an instance of {@link PacketType } + * + */ + public PacketType createPacketType() { + return new PacketType(); + } + + /** + * Create an instance of {@link PacketSideDataListType } + * + */ + public PacketSideDataListType createPacketSideDataListType() { + return new PacketSideDataListType(); + } + + /** + * Create an instance of {@link PacketSideDataType } + * + */ + public PacketSideDataType createPacketSideDataType() { + return new PacketSideDataType(); + } + + /** + * Create an instance of {@link PacketSideDatumType } + * + */ + public PacketSideDatumType createPacketSideDatumType() { + return new PacketSideDatumType(); + } + + /** + * Create an instance of {@link FrameType } + * + */ + public FrameType createFrameType() { + return new FrameType(); + } + + /** + * Create an instance of {@link LogsType } + * + */ + public LogsType createLogsType() { + return new LogsType(); + } + + /** + * Create an instance of {@link LogType } + * + */ + public LogType createLogType() { + return new LogType(); + } + + /** + * Create an instance of {@link FrameSideDataListType } + * + */ + public FrameSideDataListType createFrameSideDataListType() { + return new FrameSideDataListType(); + } + + /** + * Create an instance of {@link FrameSideDataType } + * + */ + public FrameSideDataType createFrameSideDataType() { + return new FrameSideDataType(); + } + + /** + * Create an instance of {@link FrameSideDataTimecodeList } + * + */ + public FrameSideDataTimecodeList createFrameSideDataTimecodeList() { + return new FrameSideDataTimecodeList(); + } + + /** + * Create an instance of {@link FrameSideDataTimecodeType } + * + */ + public FrameSideDataTimecodeType createFrameSideDataTimecodeType() { + return new FrameSideDataTimecodeType(); + } + + /** + * Create an instance of {@link SubtitleType } + * + */ + public SubtitleType createSubtitleType() { + return new SubtitleType(); + } + + /** + * Create an instance of {@link StreamsType } + * + */ + public StreamsType createStreamsType() { + return new StreamsType(); + } + + /** + * Create an instance of {@link ProgramsType } + * + */ + public ProgramsType createProgramsType() { + return new ProgramsType(); + } + + /** + * Create an instance of {@link StreamDispositionType } + * + */ + public StreamDispositionType createStreamDispositionType() { + return new StreamDispositionType(); + } + + /** + * Create an instance of {@link StreamType } + * + */ + public StreamType createStreamType() { + return new StreamType(); + } + + /** + * Create an instance of {@link ProgramType } + * + */ + public ProgramType createProgramType() { + return new ProgramType(); + } + + /** + * Create an instance of {@link FormatType } + * + */ + public FormatType createFormatType() { + return new FormatType(); + } + + /** + * Create an instance of {@link TagType } + * + */ + public TagType createTagType() { + return new TagType(); + } + + /** + * Create an instance of {@link ErrorType } + * + */ + public ErrorType createErrorType() { + return new ErrorType(); + } + + /** + * Create an instance of {@link ProgramVersionType } + * + */ + public ProgramVersionType createProgramVersionType() { + return new ProgramVersionType(); + } + + /** + * Create an instance of {@link ChaptersType } + * + */ + public ChaptersType createChaptersType() { + return new ChaptersType(); + } + + /** + * Create an instance of {@link ChapterType } + * + */ + public ChapterType createChapterType() { + return new ChapterType(); + } + + /** + * Create an instance of {@link LibraryVersionType } + * + */ + public LibraryVersionType createLibraryVersionType() { + return new LibraryVersionType(); + } + + /** + * Create an instance of {@link LibraryVersionsType } + * + */ + public LibraryVersionsType createLibraryVersionsType() { + return new LibraryVersionsType(); + } + + /** + * Create an instance of {@link PixelFormatFlagsType } + * + */ + public PixelFormatFlagsType createPixelFormatFlagsType() { + return new PixelFormatFlagsType(); + } + + /** + * Create an instance of {@link PixelFormatComponentType } + * + */ + public PixelFormatComponentType createPixelFormatComponentType() { + return new PixelFormatComponentType(); + } + + /** + * Create an instance of {@link PixelFormatComponentsType } + * + */ + public PixelFormatComponentsType createPixelFormatComponentsType() { + return new PixelFormatComponentsType(); + } + + /** + * Create an instance of {@link PixelFormatType } + * + */ + public PixelFormatType createPixelFormatType() { + return new PixelFormatType(); + } + + /** + * Create an instance of {@link PixelFormatsType } + * + */ + public PixelFormatsType createPixelFormatsType() { + return new PixelFormatsType(); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link FfprobeType }{@code >} + * + * @param value + * Java instance representing xml element's value. + * @return + * the new instance of {@link JAXBElement }{@code <}{@link FfprobeType }{@code >} + */ + @XmlElementDecl(namespace = "http://www.ffmpeg.org/schema/ffprobe", name = "ffprobe") + public JAXBElement createFfprobe(FfprobeType value) { + return new JAXBElement(_Ffprobe_QNAME, FfprobeType.class, null, value); + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PacketSideDataListType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PacketSideDataListType.java new file mode 100644 index 00000000..a86ca51c --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PacketSideDataListType.java @@ -0,0 +1,76 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for packetSideDataListType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="packetSideDataListType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="side_data" type="{http://www.ffmpeg.org/schema/ffprobe}packetSideDataType" maxOccurs="unbounded"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "packetSideDataListType", propOrder = { + "sideData" +}) +public class PacketSideDataListType { + + @XmlElement(name = "side_data", required = true) + protected List sideData; + + /** + * Gets the value of the sideData property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the sideData property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getSideData().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link PacketSideDataType } + * + * + */ + public List getSideData() { + if (sideData == null) { + sideData = new ArrayList(); + } + return this.sideData; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PacketSideDataType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PacketSideDataType.java new file mode 100644 index 00000000..a7bbc1a3 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PacketSideDataType.java @@ -0,0 +1,104 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for packetSideDataType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="packetSideDataType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="side_datum" type="{http://www.ffmpeg.org/schema/ffprobe}packetSideDatumType" maxOccurs="unbounded"/>
+ *       </sequence>
+ *       <attribute name="type" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "packetSideDataType", propOrder = { + "sideDatum" +}) +public class PacketSideDataType { + + @XmlElement(name = "side_datum", required = true) + protected List sideDatum; + @XmlAttribute(name = "type") + protected String type; + + /** + * Gets the value of the sideDatum property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the sideDatum property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getSideDatum().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link PacketSideDatumType } + * + * + */ + public List getSideDatum() { + if (sideDatum == null) { + sideDatum = new ArrayList(); + } + return this.sideDatum; + } + + /** + * Gets the value of the type property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getType() { + return type; + } + + /** + * Sets the value of the type property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setType(String value) { + this.type = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PacketSideDatumType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PacketSideDatumType.java new file mode 100644 index 00000000..0e9bf9a6 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PacketSideDatumType.java @@ -0,0 +1,92 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for packetSideDatumType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="packetSideDatumType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="key" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "packetSideDatumType") +public class PacketSideDatumType { + + @XmlAttribute(name = "key") + protected String key; + @XmlAttribute(name = "value") + protected String value; + + /** + * Gets the value of the key property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getKey() { + return key; + } + + /** + * Sets the value of the key property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setKey(String value) { + this.key = value; + } + + /** + * Gets the value of the value property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getValue() { + return value; + } + + /** + * Sets the value of the value property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setValue(String value) { + this.value = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PacketType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PacketType.java new file mode 100644 index 00000000..90408e95 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PacketType.java @@ -0,0 +1,432 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for packetType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="packetType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="tags" type="{http://www.ffmpeg.org/schema/ffprobe}tagsType" minOccurs="0"/>
+ *         <element name="side_data_list" type="{http://www.ffmpeg.org/schema/ffprobe}packetSideDataListType" minOccurs="0"/>
+ *       </sequence>
+ *       <attribute name="codec_type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="stream_index" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="pts" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="pts_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="dts" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="dts_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="duration" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="duration_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="size" use="required" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="pos" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="flags" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="data" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="data_hash" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "packetType", propOrder = { + "tags", + "sideDataList" +}) +public class PacketType { + + protected TagsType tags; + @XmlElement(name = "side_data_list") + protected PacketSideDataListType sideDataList; + @XmlAttribute(name = "codec_type", required = true) + protected String codecType; + @XmlAttribute(name = "stream_index", required = true) + protected int streamIndex; + @XmlAttribute(name = "pts") + protected Long pts; + @XmlAttribute(name = "pts_time") + protected Float ptsTime; + @XmlAttribute(name = "dts") + protected Long dts; + @XmlAttribute(name = "dts_time") + protected Float dtsTime; + @XmlAttribute(name = "duration") + protected Long duration; + @XmlAttribute(name = "duration_time") + protected Float durationTime; + @XmlAttribute(name = "size", required = true) + protected long size; + @XmlAttribute(name = "pos") + protected Long pos; + @XmlAttribute(name = "flags", required = true) + protected String flags; + @XmlAttribute(name = "data") + protected String data; + @XmlAttribute(name = "data_hash") + protected String dataHash; + + /** + * Gets the value of the tags property. + * + * @return + * possible object is + * {@link TagsType } + * + */ + public TagsType getTags() { + return tags; + } + + /** + * Sets the value of the tags property. + * + * @param value + * allowed object is + * {@link TagsType } + * + */ + public void setTags(TagsType value) { + this.tags = value; + } + + /** + * Gets the value of the sideDataList property. + * + * @return + * possible object is + * {@link PacketSideDataListType } + * + */ + public PacketSideDataListType getSideDataList() { + return sideDataList; + } + + /** + * Sets the value of the sideDataList property. + * + * @param value + * allowed object is + * {@link PacketSideDataListType } + * + */ + public void setSideDataList(PacketSideDataListType value) { + this.sideDataList = value; + } + + /** + * Gets the value of the codecType property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCodecType() { + return codecType; + } + + /** + * Sets the value of the codecType property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCodecType(String value) { + this.codecType = value; + } + + /** + * Gets the value of the streamIndex property. + * + */ + public int getStreamIndex() { + return streamIndex; + } + + /** + * Sets the value of the streamIndex property. + * + */ + public void setStreamIndex(int value) { + this.streamIndex = value; + } + + /** + * Gets the value of the pts property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getPts() { + return pts; + } + + /** + * Sets the value of the pts property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setPts(Long value) { + this.pts = value; + } + + /** + * Gets the value of the ptsTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getPtsTime() { + return ptsTime; + } + + /** + * Sets the value of the ptsTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setPtsTime(Float value) { + this.ptsTime = value; + } + + /** + * Gets the value of the dts property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getDts() { + return dts; + } + + /** + * Sets the value of the dts property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setDts(Long value) { + this.dts = value; + } + + /** + * Gets the value of the dtsTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getDtsTime() { + return dtsTime; + } + + /** + * Sets the value of the dtsTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setDtsTime(Float value) { + this.dtsTime = value; + } + + /** + * Gets the value of the duration property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getDuration() { + return duration; + } + + /** + * Sets the value of the duration property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setDuration(Long value) { + this.duration = value; + } + + /** + * Gets the value of the durationTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getDurationTime() { + return durationTime; + } + + /** + * Sets the value of the durationTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setDurationTime(Float value) { + this.durationTime = value; + } + + /** + * Gets the value of the size property. + * + */ + public long getSize() { + return size; + } + + /** + * Sets the value of the size property. + * + */ + public void setSize(long value) { + this.size = value; + } + + /** + * Gets the value of the pos property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getPos() { + return pos; + } + + /** + * Sets the value of the pos property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setPos(Long value) { + this.pos = value; + } + + /** + * Gets the value of the flags property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getFlags() { + return flags; + } + + /** + * Sets the value of the flags property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setFlags(String value) { + this.flags = value; + } + + /** + * Gets the value of the data property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getData() { + return data; + } + + /** + * Sets the value of the data property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setData(String value) { + this.data = value; + } + + /** + * Gets the value of the dataHash property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getDataHash() { + return dataHash; + } + + /** + * Sets the value of the dataHash property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setDataHash(String value) { + this.dataHash = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PacketsAndFramesType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PacketsAndFramesType.java new file mode 100644 index 00000000..8b2cde9d --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PacketsAndFramesType.java @@ -0,0 +1,85 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElements; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for packetsAndFramesType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="packetsAndFramesType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <choice maxOccurs="unbounded" minOccurs="0">
+ *         <element name="packet" type="{http://www.ffmpeg.org/schema/ffprobe}packetType"/>
+ *         <element name="frame" type="{http://www.ffmpeg.org/schema/ffprobe}frameType"/>
+ *         <element name="subtitle" type="{http://www.ffmpeg.org/schema/ffprobe}subtitleType"/>
+ *       </choice>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "packetsAndFramesType", propOrder = { + "packetOrFrameOrSubtitle" +}) +public class PacketsAndFramesType { + + @XmlElements({ + @XmlElement(name = "packet", type = PacketType.class), + @XmlElement(name = "frame", type = FrameType.class), + @XmlElement(name = "subtitle", type = SubtitleType.class) + }) + protected List packetOrFrameOrSubtitle; + + /** + * Gets the value of the packetOrFrameOrSubtitle property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the packetOrFrameOrSubtitle property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getPacketOrFrameOrSubtitle().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link FrameType } + * {@link PacketType } + * {@link SubtitleType } + * + * + */ + public List getPacketOrFrameOrSubtitle() { + if (packetOrFrameOrSubtitle == null) { + packetOrFrameOrSubtitle = new ArrayList(); + } + return this.packetOrFrameOrSubtitle; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PacketsType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PacketsType.java new file mode 100644 index 00000000..917725a3 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PacketsType.java @@ -0,0 +1,74 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for packetsType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="packetsType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="packet" type="{http://www.ffmpeg.org/schema/ffprobe}packetType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "packetsType", propOrder = { + "packet" +}) +public class PacketsType { + + protected List packet; + + /** + * Gets the value of the packet property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the packet property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getPacket().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link PacketType } + * + * + */ + public List getPacket() { + if (packet == null) { + packet = new ArrayList(); + } + return this.packet; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PixelFormatComponentType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PixelFormatComponentType.java new file mode 100644 index 00000000..9c2a4d0d --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PixelFormatComponentType.java @@ -0,0 +1,76 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for pixelFormatComponentType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="pixelFormatComponentType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="index" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="bit_depth" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "pixelFormatComponentType") +public class PixelFormatComponentType { + + @XmlAttribute(name = "index", required = true) + protected int index; + @XmlAttribute(name = "bit_depth", required = true) + protected int bitDepth; + + /** + * Gets the value of the index property. + * + */ + public int getIndex() { + return index; + } + + /** + * Sets the value of the index property. + * + */ + public void setIndex(int value) { + this.index = value; + } + + /** + * Gets the value of the bitDepth property. + * + */ + public int getBitDepth() { + return bitDepth; + } + + /** + * Sets the value of the bitDepth property. + * + */ + public void setBitDepth(int value) { + this.bitDepth = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PixelFormatComponentsType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PixelFormatComponentsType.java new file mode 100644 index 00000000..6a8eca2c --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PixelFormatComponentsType.java @@ -0,0 +1,74 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for pixelFormatComponentsType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="pixelFormatComponentsType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="component" type="{http://www.ffmpeg.org/schema/ffprobe}pixelFormatComponentType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "pixelFormatComponentsType", propOrder = { + "component" +}) +public class PixelFormatComponentsType { + + protected List component; + + /** + * Gets the value of the component property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the component property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getComponent().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link PixelFormatComponentType } + * + * + */ + public List getComponent() { + if (component == null) { + component = new ArrayList(); + } + return this.component; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PixelFormatFlagsType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PixelFormatFlagsType.java new file mode 100644 index 00000000..bc823715 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PixelFormatFlagsType.java @@ -0,0 +1,171 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for pixelFormatFlagsType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="pixelFormatFlagsType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="big_endian" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="palette" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="bitstream" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="hwaccel" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="planar" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="rgb" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="alpha" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "pixelFormatFlagsType") +public class PixelFormatFlagsType { + + @XmlAttribute(name = "big_endian", required = true) + protected int bigEndian; + @XmlAttribute(name = "palette", required = true) + protected int palette; + @XmlAttribute(name = "bitstream", required = true) + protected int bitstream; + @XmlAttribute(name = "hwaccel", required = true) + protected int hwaccel; + @XmlAttribute(name = "planar", required = true) + protected int planar; + @XmlAttribute(name = "rgb", required = true) + protected int rgb; + @XmlAttribute(name = "alpha", required = true) + protected int alpha; + + /** + * Gets the value of the bigEndian property. + * + */ + public int getBigEndian() { + return bigEndian; + } + + /** + * Sets the value of the bigEndian property. + * + */ + public void setBigEndian(int value) { + this.bigEndian = value; + } + + /** + * Gets the value of the palette property. + * + */ + public int getPalette() { + return palette; + } + + /** + * Sets the value of the palette property. + * + */ + public void setPalette(int value) { + this.palette = value; + } + + /** + * Gets the value of the bitstream property. + * + */ + public int getBitstream() { + return bitstream; + } + + /** + * Sets the value of the bitstream property. + * + */ + public void setBitstream(int value) { + this.bitstream = value; + } + + /** + * Gets the value of the hwaccel property. + * + */ + public int getHwaccel() { + return hwaccel; + } + + /** + * Sets the value of the hwaccel property. + * + */ + public void setHwaccel(int value) { + this.hwaccel = value; + } + + /** + * Gets the value of the planar property. + * + */ + public int getPlanar() { + return planar; + } + + /** + * Sets the value of the planar property. + * + */ + public void setPlanar(int value) { + this.planar = value; + } + + /** + * Gets the value of the rgb property. + * + */ + public int getRgb() { + return rgb; + } + + /** + * Sets the value of the rgb property. + * + */ + public void setRgb(int value) { + this.rgb = value; + } + + /** + * Gets the value of the alpha property. + * + */ + public int getAlpha() { + return alpha; + } + + /** + * Sets the value of the alpha property. + * + */ + public void setAlpha(int value) { + this.alpha = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PixelFormatType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PixelFormatType.java new file mode 100644 index 00000000..719d7ec5 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PixelFormatType.java @@ -0,0 +1,222 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for pixelFormatType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="pixelFormatType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="flags" type="{http://www.ffmpeg.org/schema/ffprobe}pixelFormatFlagsType" minOccurs="0"/>
+ *         <element name="components" type="{http://www.ffmpeg.org/schema/ffprobe}pixelFormatComponentsType" minOccurs="0"/>
+ *       </sequence>
+ *       <attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="nb_components" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="log2_chroma_w" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="log2_chroma_h" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="bits_per_pixel" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "pixelFormatType", propOrder = { + "flags", + "components" +}) +public class PixelFormatType { + + protected PixelFormatFlagsType flags; + protected PixelFormatComponentsType components; + @XmlAttribute(name = "name", required = true) + protected String name; + @XmlAttribute(name = "nb_components", required = true) + protected int nbComponents; + @XmlAttribute(name = "log2_chroma_w") + protected Integer log2ChromaW; + @XmlAttribute(name = "log2_chroma_h") + protected Integer log2ChromaH; + @XmlAttribute(name = "bits_per_pixel") + protected Integer bitsPerPixel; + + /** + * Gets the value of the flags property. + * + * @return + * possible object is + * {@link PixelFormatFlagsType } + * + */ + public PixelFormatFlagsType getFlags() { + return flags; + } + + /** + * Sets the value of the flags property. + * + * @param value + * allowed object is + * {@link PixelFormatFlagsType } + * + */ + public void setFlags(PixelFormatFlagsType value) { + this.flags = value; + } + + /** + * Gets the value of the components property. + * + * @return + * possible object is + * {@link PixelFormatComponentsType } + * + */ + public PixelFormatComponentsType getComponents() { + return components; + } + + /** + * Sets the value of the components property. + * + * @param value + * allowed object is + * {@link PixelFormatComponentsType } + * + */ + public void setComponents(PixelFormatComponentsType value) { + this.components = value; + } + + /** + * Gets the value of the name property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getName() { + return name; + } + + /** + * Sets the value of the name property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setName(String value) { + this.name = value; + } + + /** + * Gets the value of the nbComponents property. + * + */ + public int getNbComponents() { + return nbComponents; + } + + /** + * Sets the value of the nbComponents property. + * + */ + public void setNbComponents(int value) { + this.nbComponents = value; + } + + /** + * Gets the value of the log2ChromaW property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getLog2ChromaW() { + return log2ChromaW; + } + + /** + * Sets the value of the log2ChromaW property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setLog2ChromaW(Integer value) { + this.log2ChromaW = value; + } + + /** + * Gets the value of the log2ChromaH property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getLog2ChromaH() { + return log2ChromaH; + } + + /** + * Sets the value of the log2ChromaH property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setLog2ChromaH(Integer value) { + this.log2ChromaH = value; + } + + /** + * Gets the value of the bitsPerPixel property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getBitsPerPixel() { + return bitsPerPixel; + } + + /** + * Sets the value of the bitsPerPixel property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setBitsPerPixel(Integer value) { + this.bitsPerPixel = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PixelFormatsType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PixelFormatsType.java new file mode 100644 index 00000000..f0f5ed48 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/PixelFormatsType.java @@ -0,0 +1,76 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for pixelFormatsType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="pixelFormatsType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="pixel_format" type="{http://www.ffmpeg.org/schema/ffprobe}pixelFormatType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "pixelFormatsType", propOrder = { + "pixelFormat" +}) +public class PixelFormatsType { + + @XmlElement(name = "pixel_format") + protected List pixelFormat; + + /** + * Gets the value of the pixelFormat property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the pixelFormat property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getPixelFormat().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link PixelFormatType } + * + * + */ + public List getPixelFormat() { + if (pixelFormat == null) { + pixelFormat = new ArrayList(); + } + return this.pixelFormat; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ProgramType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ProgramType.java new file mode 100644 index 00000000..39f4c9b4 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ProgramType.java @@ -0,0 +1,190 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for programType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="programType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="tags" type="{http://www.ffmpeg.org/schema/ffprobe}tagsType" minOccurs="0"/>
+ *         <element name="streams" type="{http://www.ffmpeg.org/schema/ffprobe}streamsType" minOccurs="0"/>
+ *       </sequence>
+ *       <attribute name="program_id" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="program_num" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="nb_streams" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="pmt_pid" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="pcr_pid" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "programType", propOrder = { + "tags", + "streams" +}) +public class ProgramType { + + protected TagsType tags; + protected StreamsType streams; + @XmlAttribute(name = "program_id", required = true) + protected int programId; + @XmlAttribute(name = "program_num", required = true) + protected int programNum; + @XmlAttribute(name = "nb_streams", required = true) + protected int nbStreams; + @XmlAttribute(name = "pmt_pid", required = true) + protected int pmtPid; + @XmlAttribute(name = "pcr_pid", required = true) + protected int pcrPid; + + /** + * Gets the value of the tags property. + * + * @return + * possible object is + * {@link TagsType } + * + */ + public TagsType getTags() { + return tags; + } + + /** + * Sets the value of the tags property. + * + * @param value + * allowed object is + * {@link TagsType } + * + */ + public void setTags(TagsType value) { + this.tags = value; + } + + /** + * Gets the value of the streams property. + * + * @return + * possible object is + * {@link StreamsType } + * + */ + public StreamsType getStreams() { + return streams; + } + + /** + * Sets the value of the streams property. + * + * @param value + * allowed object is + * {@link StreamsType } + * + */ + public void setStreams(StreamsType value) { + this.streams = value; + } + + /** + * Gets the value of the programId property. + * + */ + public int getProgramId() { + return programId; + } + + /** + * Sets the value of the programId property. + * + */ + public void setProgramId(int value) { + this.programId = value; + } + + /** + * Gets the value of the programNum property. + * + */ + public int getProgramNum() { + return programNum; + } + + /** + * Sets the value of the programNum property. + * + */ + public void setProgramNum(int value) { + this.programNum = value; + } + + /** + * Gets the value of the nbStreams property. + * + */ + public int getNbStreams() { + return nbStreams; + } + + /** + * Sets the value of the nbStreams property. + * + */ + public void setNbStreams(int value) { + this.nbStreams = value; + } + + /** + * Gets the value of the pmtPid property. + * + */ + public int getPmtPid() { + return pmtPid; + } + + /** + * Sets the value of the pmtPid property. + * + */ + public void setPmtPid(int value) { + this.pmtPid = value; + } + + /** + * Gets the value of the pcrPid property. + * + */ + public int getPcrPid() { + return pcrPid; + } + + /** + * Sets the value of the pcrPid property. + * + */ + public void setPcrPid(int value) { + this.pcrPid = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ProgramVersionType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ProgramVersionType.java new file mode 100644 index 00000000..82698a61 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ProgramVersionType.java @@ -0,0 +1,200 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for programVersionType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="programVersionType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="version" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="copyright" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="build_date" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="build_time" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="compiler_ident" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="configuration" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "programVersionType") +public class ProgramVersionType { + + @XmlAttribute(name = "version", required = true) + protected String version; + @XmlAttribute(name = "copyright", required = true) + protected String copyright; + @XmlAttribute(name = "build_date") + protected String buildDate; + @XmlAttribute(name = "build_time") + protected String buildTime; + @XmlAttribute(name = "compiler_ident", required = true) + protected String compilerIdent; + @XmlAttribute(name = "configuration", required = true) + protected String configuration; + + /** + * Gets the value of the version property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getVersion() { + return version; + } + + /** + * Sets the value of the version property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setVersion(String value) { + this.version = value; + } + + /** + * Gets the value of the copyright property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCopyright() { + return copyright; + } + + /** + * Sets the value of the copyright property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCopyright(String value) { + this.copyright = value; + } + + /** + * Gets the value of the buildDate property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getBuildDate() { + return buildDate; + } + + /** + * Sets the value of the buildDate property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setBuildDate(String value) { + this.buildDate = value; + } + + /** + * Gets the value of the buildTime property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getBuildTime() { + return buildTime; + } + + /** + * Sets the value of the buildTime property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setBuildTime(String value) { + this.buildTime = value; + } + + /** + * Gets the value of the compilerIdent property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCompilerIdent() { + return compilerIdent; + } + + /** + * Sets the value of the compilerIdent property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCompilerIdent(String value) { + this.compilerIdent = value; + } + + /** + * Gets the value of the configuration property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getConfiguration() { + return configuration; + } + + /** + * Sets the value of the configuration property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setConfiguration(String value) { + this.configuration = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ProgramsType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ProgramsType.java new file mode 100644 index 00000000..489a1ea6 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/ProgramsType.java @@ -0,0 +1,74 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for programsType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="programsType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="program" type="{http://www.ffmpeg.org/schema/ffprobe}programType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "programsType", propOrder = { + "program" +}) +public class ProgramsType { + + protected List program; + + /** + * Gets the value of the program property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the program property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getProgram().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link ProgramType } + * + * + */ + public List getProgram() { + if (program == null) { + program = new ArrayList(); + } + return this.program; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/StreamDispositionType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/StreamDispositionType.java new file mode 100644 index 00000000..b3a9dc83 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/StreamDispositionType.java @@ -0,0 +1,380 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for streamDispositionType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="streamDispositionType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="default" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="dub" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="original" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="comment" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="lyrics" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="karaoke" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="forced" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="hearing_impaired" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="visual_impaired" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="clean_effects" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="attached_pic" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="timed_thumbnails" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="non_diegetic" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="captions" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="descriptions" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="metadata" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="dependent" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="still_image" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "streamDispositionType") +public class StreamDispositionType { + + @XmlAttribute(name = "default", required = true) + protected int _default; + @XmlAttribute(name = "dub", required = true) + protected int dub; + @XmlAttribute(name = "original", required = true) + protected int original; + @XmlAttribute(name = "comment", required = true) + protected int comment; + @XmlAttribute(name = "lyrics", required = true) + protected int lyrics; + @XmlAttribute(name = "karaoke", required = true) + protected int karaoke; + @XmlAttribute(name = "forced", required = true) + protected int forced; + @XmlAttribute(name = "hearing_impaired", required = true) + protected int hearingImpaired; + @XmlAttribute(name = "visual_impaired", required = true) + protected int visualImpaired; + @XmlAttribute(name = "clean_effects", required = true) + protected int cleanEffects; + @XmlAttribute(name = "attached_pic", required = true) + protected int attachedPic; + @XmlAttribute(name = "timed_thumbnails", required = true) + protected int timedThumbnails; + @XmlAttribute(name = "non_diegetic", required = true) + protected int nonDiegetic; + @XmlAttribute(name = "captions", required = true) + protected int captions; + @XmlAttribute(name = "descriptions", required = true) + protected int descriptions; + @XmlAttribute(name = "metadata", required = true) + protected int metadata; + @XmlAttribute(name = "dependent", required = true) + protected int dependent; + @XmlAttribute(name = "still_image", required = true) + protected int stillImage; + + /** + * Gets the value of the default property. + * + */ + public int getDefault() { + return _default; + } + + /** + * Sets the value of the default property. + * + */ + public void setDefault(int value) { + this._default = value; + } + + /** + * Gets the value of the dub property. + * + */ + public int getDub() { + return dub; + } + + /** + * Sets the value of the dub property. + * + */ + public void setDub(int value) { + this.dub = value; + } + + /** + * Gets the value of the original property. + * + */ + public int getOriginal() { + return original; + } + + /** + * Sets the value of the original property. + * + */ + public void setOriginal(int value) { + this.original = value; + } + + /** + * Gets the value of the comment property. + * + */ + public int getComment() { + return comment; + } + + /** + * Sets the value of the comment property. + * + */ + public void setComment(int value) { + this.comment = value; + } + + /** + * Gets the value of the lyrics property. + * + */ + public int getLyrics() { + return lyrics; + } + + /** + * Sets the value of the lyrics property. + * + */ + public void setLyrics(int value) { + this.lyrics = value; + } + + /** + * Gets the value of the karaoke property. + * + */ + public int getKaraoke() { + return karaoke; + } + + /** + * Sets the value of the karaoke property. + * + */ + public void setKaraoke(int value) { + this.karaoke = value; + } + + /** + * Gets the value of the forced property. + * + */ + public int getForced() { + return forced; + } + + /** + * Sets the value of the forced property. + * + */ + public void setForced(int value) { + this.forced = value; + } + + /** + * Gets the value of the hearingImpaired property. + * + */ + public int getHearingImpaired() { + return hearingImpaired; + } + + /** + * Sets the value of the hearingImpaired property. + * + */ + public void setHearingImpaired(int value) { + this.hearingImpaired = value; + } + + /** + * Gets the value of the visualImpaired property. + * + */ + public int getVisualImpaired() { + return visualImpaired; + } + + /** + * Sets the value of the visualImpaired property. + * + */ + public void setVisualImpaired(int value) { + this.visualImpaired = value; + } + + /** + * Gets the value of the cleanEffects property. + * + */ + public int getCleanEffects() { + return cleanEffects; + } + + /** + * Sets the value of the cleanEffects property. + * + */ + public void setCleanEffects(int value) { + this.cleanEffects = value; + } + + /** + * Gets the value of the attachedPic property. + * + */ + public int getAttachedPic() { + return attachedPic; + } + + /** + * Sets the value of the attachedPic property. + * + */ + public void setAttachedPic(int value) { + this.attachedPic = value; + } + + /** + * Gets the value of the timedThumbnails property. + * + */ + public int getTimedThumbnails() { + return timedThumbnails; + } + + /** + * Sets the value of the timedThumbnails property. + * + */ + public void setTimedThumbnails(int value) { + this.timedThumbnails = value; + } + + /** + * Gets the value of the nonDiegetic property. + * + */ + public int getNonDiegetic() { + return nonDiegetic; + } + + /** + * Sets the value of the nonDiegetic property. + * + */ + public void setNonDiegetic(int value) { + this.nonDiegetic = value; + } + + /** + * Gets the value of the captions property. + * + */ + public int getCaptions() { + return captions; + } + + /** + * Sets the value of the captions property. + * + */ + public void setCaptions(int value) { + this.captions = value; + } + + /** + * Gets the value of the descriptions property. + * + */ + public int getDescriptions() { + return descriptions; + } + + /** + * Sets the value of the descriptions property. + * + */ + public void setDescriptions(int value) { + this.descriptions = value; + } + + /** + * Gets the value of the metadata property. + * + */ + public int getMetadata() { + return metadata; + } + + /** + * Sets the value of the metadata property. + * + */ + public void setMetadata(int value) { + this.metadata = value; + } + + /** + * Gets the value of the dependent property. + * + */ + public int getDependent() { + return dependent; + } + + /** + * Sets the value of the dependent property. + * + */ + public void setDependent(int value) { + this.dependent = value; + } + + /** + * Gets the value of the stillImage property. + * + */ + public int getStillImage() { + return stillImage; + } + + /** + * Sets the value of the stillImage property. + * + */ + public void setStillImage(int value) { + this.stillImage = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/StreamType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/StreamType.java new file mode 100644 index 00000000..b6126542 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/StreamType.java @@ -0,0 +1,1412 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for streamType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="streamType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="disposition" type="{http://www.ffmpeg.org/schema/ffprobe}streamDispositionType" minOccurs="0"/>
+ *         <element name="tags" type="{http://www.ffmpeg.org/schema/ffprobe}tagsType" minOccurs="0"/>
+ *         <element name="side_data_list" type="{http://www.ffmpeg.org/schema/ffprobe}packetSideDataListType" minOccurs="0"/>
+ *       </sequence>
+ *       <attribute name="index" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="codec_name" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="codec_long_name" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="profile" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="codec_type" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="codec_tag" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="codec_tag_string" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="extradata" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="extradata_size" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="extradata_hash" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="width" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="height" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="coded_width" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="coded_height" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="closed_captions" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *       <attribute name="film_grain" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *       <attribute name="has_b_frames" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="sample_aspect_ratio" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="display_aspect_ratio" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="pix_fmt" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="level" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="color_range" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="color_space" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="color_transfer" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="color_primaries" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="chroma_location" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="field_order" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="refs" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="sample_fmt" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="sample_rate" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="channels" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="channel_layout" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="bits_per_sample" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="initial_padding" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="id" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="r_frame_rate" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="avg_frame_rate" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="time_base" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="start_pts" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="start_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="duration_ts" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="duration" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="bit_rate" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="max_bit_rate" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="bits_per_raw_sample" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="nb_frames" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="nb_read_frames" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="nb_read_packets" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "streamType", propOrder = { + "disposition", + "tags", + "sideDataList" +}) +public class StreamType { + + protected StreamDispositionType disposition; + protected TagsType tags; + @XmlElement(name = "side_data_list") + protected PacketSideDataListType sideDataList; + @XmlAttribute(name = "index", required = true) + protected int index; + @XmlAttribute(name = "codec_name") + protected String codecName; + @XmlAttribute(name = "codec_long_name") + protected String codecLongName; + @XmlAttribute(name = "profile") + protected String profile; + @XmlAttribute(name = "codec_type") + protected String codecType; + @XmlAttribute(name = "codec_tag", required = true) + protected String codecTag; + @XmlAttribute(name = "codec_tag_string", required = true) + protected String codecTagString; + @XmlAttribute(name = "extradata") + protected String extradata; + @XmlAttribute(name = "extradata_size") + protected Integer extradataSize; + @XmlAttribute(name = "extradata_hash") + protected String extradataHash; + @XmlAttribute(name = "width") + protected Integer width; + @XmlAttribute(name = "height") + protected Integer height; + @XmlAttribute(name = "coded_width") + protected Integer codedWidth; + @XmlAttribute(name = "coded_height") + protected Integer codedHeight; + @XmlAttribute(name = "closed_captions") + protected Boolean closedCaptions; + @XmlAttribute(name = "film_grain") + protected Boolean filmGrain; + @XmlAttribute(name = "has_b_frames") + protected Integer hasBFrames; + @XmlAttribute(name = "sample_aspect_ratio") + protected String sampleAspectRatio; + @XmlAttribute(name = "display_aspect_ratio") + protected String displayAspectRatio; + @XmlAttribute(name = "pix_fmt") + protected String pixFmt; + @XmlAttribute(name = "level") + protected Integer level; + @XmlAttribute(name = "color_range") + protected String colorRange; + @XmlAttribute(name = "color_space") + protected String colorSpace; + @XmlAttribute(name = "color_transfer") + protected String colorTransfer; + @XmlAttribute(name = "color_primaries") + protected String colorPrimaries; + @XmlAttribute(name = "chroma_location") + protected String chromaLocation; + @XmlAttribute(name = "field_order") + protected String fieldOrder; + @XmlAttribute(name = "refs") + protected Integer refs; + @XmlAttribute(name = "sample_fmt") + protected String sampleFmt; + @XmlAttribute(name = "sample_rate") + protected Integer sampleRate; + @XmlAttribute(name = "channels") + protected Integer channels; + @XmlAttribute(name = "channel_layout") + protected String channelLayout; + @XmlAttribute(name = "bits_per_sample") + protected Integer bitsPerSample; + @XmlAttribute(name = "initial_padding") + protected Integer initialPadding; + @XmlAttribute(name = "id") + protected String id; + @XmlAttribute(name = "r_frame_rate", required = true) + protected String rFrameRate; + @XmlAttribute(name = "avg_frame_rate", required = true) + protected String avgFrameRate; + @XmlAttribute(name = "time_base", required = true) + protected String timeBase; + @XmlAttribute(name = "start_pts") + protected Long startPts; + @XmlAttribute(name = "start_time") + protected Float startTime; + @XmlAttribute(name = "duration_ts") + protected Long durationTs; + @XmlAttribute(name = "duration") + protected Float duration; + @XmlAttribute(name = "bit_rate") + protected Integer bitRate; + @XmlAttribute(name = "max_bit_rate") + protected Integer maxBitRate; + @XmlAttribute(name = "bits_per_raw_sample") + protected Integer bitsPerRawSample; + @XmlAttribute(name = "nb_frames") + protected Integer nbFrames; + @XmlAttribute(name = "nb_read_frames") + protected Integer nbReadFrames; + @XmlAttribute(name = "nb_read_packets") + protected Integer nbReadPackets; + + /** + * Gets the value of the disposition property. + * + * @return + * possible object is + * {@link StreamDispositionType } + * + */ + public StreamDispositionType getDisposition() { + return disposition; + } + + /** + * Sets the value of the disposition property. + * + * @param value + * allowed object is + * {@link StreamDispositionType } + * + */ + public void setDisposition(StreamDispositionType value) { + this.disposition = value; + } + + /** + * Gets the value of the tags property. + * + * @return + * possible object is + * {@link TagsType } + * + */ + public TagsType getTags() { + return tags; + } + + /** + * Sets the value of the tags property. + * + * @param value + * allowed object is + * {@link TagsType } + * + */ + public void setTags(TagsType value) { + this.tags = value; + } + + /** + * Gets the value of the sideDataList property. + * + * @return + * possible object is + * {@link PacketSideDataListType } + * + */ + public PacketSideDataListType getSideDataList() { + return sideDataList; + } + + /** + * Sets the value of the sideDataList property. + * + * @param value + * allowed object is + * {@link PacketSideDataListType } + * + */ + public void setSideDataList(PacketSideDataListType value) { + this.sideDataList = value; + } + + /** + * Gets the value of the index property. + * + */ + public int getIndex() { + return index; + } + + /** + * Sets the value of the index property. + * + */ + public void setIndex(int value) { + this.index = value; + } + + /** + * Gets the value of the codecName property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCodecName() { + return codecName; + } + + /** + * Sets the value of the codecName property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCodecName(String value) { + this.codecName = value; + } + + /** + * Gets the value of the codecLongName property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCodecLongName() { + return codecLongName; + } + + /** + * Sets the value of the codecLongName property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCodecLongName(String value) { + this.codecLongName = value; + } + + /** + * Gets the value of the profile property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getProfile() { + return profile; + } + + /** + * Sets the value of the profile property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setProfile(String value) { + this.profile = value; + } + + /** + * Gets the value of the codecType property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCodecType() { + return codecType; + } + + /** + * Sets the value of the codecType property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCodecType(String value) { + this.codecType = value; + } + + /** + * Gets the value of the codecTag property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCodecTag() { + return codecTag; + } + + /** + * Sets the value of the codecTag property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCodecTag(String value) { + this.codecTag = value; + } + + /** + * Gets the value of the codecTagString property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCodecTagString() { + return codecTagString; + } + + /** + * Sets the value of the codecTagString property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCodecTagString(String value) { + this.codecTagString = value; + } + + /** + * Gets the value of the extradata property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getExtradata() { + return extradata; + } + + /** + * Sets the value of the extradata property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setExtradata(String value) { + this.extradata = value; + } + + /** + * Gets the value of the extradataSize property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getExtradataSize() { + return extradataSize; + } + + /** + * Sets the value of the extradataSize property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setExtradataSize(Integer value) { + this.extradataSize = value; + } + + /** + * Gets the value of the extradataHash property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getExtradataHash() { + return extradataHash; + } + + /** + * Sets the value of the extradataHash property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setExtradataHash(String value) { + this.extradataHash = value; + } + + /** + * Gets the value of the width property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getWidth() { + return width; + } + + /** + * Sets the value of the width property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setWidth(Integer value) { + this.width = value; + } + + /** + * Gets the value of the height property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getHeight() { + return height; + } + + /** + * Sets the value of the height property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setHeight(Integer value) { + this.height = value; + } + + /** + * Gets the value of the codedWidth property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getCodedWidth() { + return codedWidth; + } + + /** + * Sets the value of the codedWidth property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setCodedWidth(Integer value) { + this.codedWidth = value; + } + + /** + * Gets the value of the codedHeight property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getCodedHeight() { + return codedHeight; + } + + /** + * Sets the value of the codedHeight property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setCodedHeight(Integer value) { + this.codedHeight = value; + } + + /** + * Gets the value of the closedCaptions property. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isClosedCaptions() { + return closedCaptions; + } + + /** + * Sets the value of the closedCaptions property. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setClosedCaptions(Boolean value) { + this.closedCaptions = value; + } + + /** + * Gets the value of the filmGrain property. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isFilmGrain() { + return filmGrain; + } + + /** + * Sets the value of the filmGrain property. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setFilmGrain(Boolean value) { + this.filmGrain = value; + } + + /** + * Gets the value of the hasBFrames property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getHasBFrames() { + return hasBFrames; + } + + /** + * Sets the value of the hasBFrames property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setHasBFrames(Integer value) { + this.hasBFrames = value; + } + + /** + * Gets the value of the sampleAspectRatio property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSampleAspectRatio() { + return sampleAspectRatio; + } + + /** + * Sets the value of the sampleAspectRatio property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSampleAspectRatio(String value) { + this.sampleAspectRatio = value; + } + + /** + * Gets the value of the displayAspectRatio property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getDisplayAspectRatio() { + return displayAspectRatio; + } + + /** + * Sets the value of the displayAspectRatio property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setDisplayAspectRatio(String value) { + this.displayAspectRatio = value; + } + + /** + * Gets the value of the pixFmt property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getPixFmt() { + return pixFmt; + } + + /** + * Sets the value of the pixFmt property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setPixFmt(String value) { + this.pixFmt = value; + } + + /** + * Gets the value of the level property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getLevel() { + return level; + } + + /** + * Sets the value of the level property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setLevel(Integer value) { + this.level = value; + } + + /** + * Gets the value of the colorRange property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getColorRange() { + return colorRange; + } + + /** + * Sets the value of the colorRange property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setColorRange(String value) { + this.colorRange = value; + } + + /** + * Gets the value of the colorSpace property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getColorSpace() { + return colorSpace; + } + + /** + * Sets the value of the colorSpace property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setColorSpace(String value) { + this.colorSpace = value; + } + + /** + * Gets the value of the colorTransfer property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getColorTransfer() { + return colorTransfer; + } + + /** + * Sets the value of the colorTransfer property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setColorTransfer(String value) { + this.colorTransfer = value; + } + + /** + * Gets the value of the colorPrimaries property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getColorPrimaries() { + return colorPrimaries; + } + + /** + * Sets the value of the colorPrimaries property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setColorPrimaries(String value) { + this.colorPrimaries = value; + } + + /** + * Gets the value of the chromaLocation property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getChromaLocation() { + return chromaLocation; + } + + /** + * Sets the value of the chromaLocation property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setChromaLocation(String value) { + this.chromaLocation = value; + } + + /** + * Gets the value of the fieldOrder property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getFieldOrder() { + return fieldOrder; + } + + /** + * Sets the value of the fieldOrder property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setFieldOrder(String value) { + this.fieldOrder = value; + } + + /** + * Gets the value of the refs property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getRefs() { + return refs; + } + + /** + * Sets the value of the refs property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setRefs(Integer value) { + this.refs = value; + } + + /** + * Gets the value of the sampleFmt property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSampleFmt() { + return sampleFmt; + } + + /** + * Sets the value of the sampleFmt property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSampleFmt(String value) { + this.sampleFmt = value; + } + + /** + * Gets the value of the sampleRate property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getSampleRate() { + return sampleRate; + } + + /** + * Sets the value of the sampleRate property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setSampleRate(Integer value) { + this.sampleRate = value; + } + + /** + * Gets the value of the channels property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getChannels() { + return channels; + } + + /** + * Sets the value of the channels property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setChannels(Integer value) { + this.channels = value; + } + + /** + * Gets the value of the channelLayout property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getChannelLayout() { + return channelLayout; + } + + /** + * Sets the value of the channelLayout property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setChannelLayout(String value) { + this.channelLayout = value; + } + + /** + * Gets the value of the bitsPerSample property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getBitsPerSample() { + return bitsPerSample; + } + + /** + * Sets the value of the bitsPerSample property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setBitsPerSample(Integer value) { + this.bitsPerSample = value; + } + + /** + * Gets the value of the initialPadding property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getInitialPadding() { + return initialPadding; + } + + /** + * Sets the value of the initialPadding property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setInitialPadding(Integer value) { + this.initialPadding = value; + } + + /** + * Gets the value of the id property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getId() { + return id; + } + + /** + * Sets the value of the id property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setId(String value) { + this.id = value; + } + + /** + * Gets the value of the rFrameRate property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getRFrameRate() { + return rFrameRate; + } + + /** + * Sets the value of the rFrameRate property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setRFrameRate(String value) { + this.rFrameRate = value; + } + + /** + * Gets the value of the avgFrameRate property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getAvgFrameRate() { + return avgFrameRate; + } + + /** + * Sets the value of the avgFrameRate property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setAvgFrameRate(String value) { + this.avgFrameRate = value; + } + + /** + * Gets the value of the timeBase property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getTimeBase() { + return timeBase; + } + + /** + * Sets the value of the timeBase property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTimeBase(String value) { + this.timeBase = value; + } + + /** + * Gets the value of the startPts property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getStartPts() { + return startPts; + } + + /** + * Sets the value of the startPts property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setStartPts(Long value) { + this.startPts = value; + } + + /** + * Gets the value of the startTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getStartTime() { + return startTime; + } + + /** + * Sets the value of the startTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setStartTime(Float value) { + this.startTime = value; + } + + /** + * Gets the value of the durationTs property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getDurationTs() { + return durationTs; + } + + /** + * Sets the value of the durationTs property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setDurationTs(Long value) { + this.durationTs = value; + } + + /** + * Gets the value of the duration property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getDuration() { + return duration; + } + + /** + * Sets the value of the duration property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setDuration(Float value) { + this.duration = value; + } + + /** + * Gets the value of the bitRate property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getBitRate() { + return bitRate; + } + + /** + * Sets the value of the bitRate property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setBitRate(Integer value) { + this.bitRate = value; + } + + /** + * Gets the value of the maxBitRate property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getMaxBitRate() { + return maxBitRate; + } + + /** + * Sets the value of the maxBitRate property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setMaxBitRate(Integer value) { + this.maxBitRate = value; + } + + /** + * Gets the value of the bitsPerRawSample property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getBitsPerRawSample() { + return bitsPerRawSample; + } + + /** + * Sets the value of the bitsPerRawSample property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setBitsPerRawSample(Integer value) { + this.bitsPerRawSample = value; + } + + /** + * Gets the value of the nbFrames property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getNbFrames() { + return nbFrames; + } + + /** + * Sets the value of the nbFrames property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setNbFrames(Integer value) { + this.nbFrames = value; + } + + /** + * Gets the value of the nbReadFrames property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getNbReadFrames() { + return nbReadFrames; + } + + /** + * Sets the value of the nbReadFrames property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setNbReadFrames(Integer value) { + this.nbReadFrames = value; + } + + /** + * Gets the value of the nbReadPackets property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getNbReadPackets() { + return nbReadPackets; + } + + /** + * Sets the value of the nbReadPackets property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setNbReadPackets(Integer value) { + this.nbReadPackets = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/StreamsType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/StreamsType.java new file mode 100644 index 00000000..7dfbf8d6 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/StreamsType.java @@ -0,0 +1,74 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for streamsType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="streamsType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="stream" type="{http://www.ffmpeg.org/schema/ffprobe}streamType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "streamsType", propOrder = { + "stream" +}) +public class StreamsType { + + protected List stream; + + /** + * Gets the value of the stream property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the stream property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getStream().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link StreamType } + * + * + */ + public List getStream() { + if (stream == null) { + stream = new ArrayList(); + } + return this.stream; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/SubtitleType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/SubtitleType.java new file mode 100644 index 00000000..73b183ec --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/SubtitleType.java @@ -0,0 +1,231 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for subtitleType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="subtitleType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="media_type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" fixed="subtitle" />
+ *       <attribute name="pts" type="{http://www.w3.org/2001/XMLSchema}long" />
+ *       <attribute name="pts_time" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       <attribute name="format" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="start_display_time" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="end_display_time" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       <attribute name="num_rects" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "subtitleType") +public class SubtitleType { + + @XmlAttribute(name = "media_type", required = true) + protected String mediaType; + @XmlAttribute(name = "pts") + protected Long pts; + @XmlAttribute(name = "pts_time") + protected Float ptsTime; + @XmlAttribute(name = "format") + protected Integer format; + @XmlAttribute(name = "start_display_time") + protected Integer startDisplayTime; + @XmlAttribute(name = "end_display_time") + protected Integer endDisplayTime; + @XmlAttribute(name = "num_rects") + protected Integer numRects; + + /** + * Gets the value of the mediaType property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getMediaType() { + if (mediaType == null) { + return "subtitle"; + } else { + return mediaType; + } + } + + /** + * Sets the value of the mediaType property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setMediaType(String value) { + this.mediaType = value; + } + + /** + * Gets the value of the pts property. + * + * @return + * possible object is + * {@link Long } + * + */ + public Long getPts() { + return pts; + } + + /** + * Sets the value of the pts property. + * + * @param value + * allowed object is + * {@link Long } + * + */ + public void setPts(Long value) { + this.pts = value; + } + + /** + * Gets the value of the ptsTime property. + * + * @return + * possible object is + * {@link Float } + * + */ + public Float getPtsTime() { + return ptsTime; + } + + /** + * Sets the value of the ptsTime property. + * + * @param value + * allowed object is + * {@link Float } + * + */ + public void setPtsTime(Float value) { + this.ptsTime = value; + } + + /** + * Gets the value of the format property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getFormat() { + return format; + } + + /** + * Sets the value of the format property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setFormat(Integer value) { + this.format = value; + } + + /** + * Gets the value of the startDisplayTime property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getStartDisplayTime() { + return startDisplayTime; + } + + /** + * Sets the value of the startDisplayTime property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setStartDisplayTime(Integer value) { + this.startDisplayTime = value; + } + + /** + * Gets the value of the endDisplayTime property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getEndDisplayTime() { + return endDisplayTime; + } + + /** + * Sets the value of the endDisplayTime property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setEndDisplayTime(Integer value) { + this.endDisplayTime = value; + } + + /** + * Gets the value of the numRects property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getNumRects() { + return numRects; + } + + /** + * Sets the value of the numRects property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setNumRects(Integer value) { + this.numRects = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/TagType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/TagType.java new file mode 100644 index 00000000..c6bd8218 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/TagType.java @@ -0,0 +1,92 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for tagType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="tagType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <attribute name="key" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       <attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "tagType") +public class TagType { + + @XmlAttribute(name = "key", required = true) + protected String key; + @XmlAttribute(name = "value", required = true) + protected String value; + + /** + * Gets the value of the key property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getKey() { + return key; + } + + /** + * Sets the value of the key property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setKey(String value) { + this.key = value; + } + + /** + * Gets the value of the value property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getValue() { + return value; + } + + /** + * Sets the value of the value property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setValue(String value) { + this.value = value; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/TagsType.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/TagsType.java new file mode 100644 index 00000000..cd388670 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/TagsType.java @@ -0,0 +1,74 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + + +package org.ffmpeg.ffprobe611; + +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for tagsType complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="tagsType">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="tag" type="{http://www.ffmpeg.org/schema/ffprobe}tagType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "tagsType", propOrder = { + "tag" +}) +public class TagsType { + + protected List tag; + + /** + * Gets the value of the tag property. + * + *

+ * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the tag property. + * + *

+ * For example, to add a new item, do as follows: + *

+     *    getTag().add(newItem);
+     * 
+ * + * + *

+ * Objects of the following type(s) are allowed in the list + * {@link TagType } + * + * + */ + public List getTag() { + if (tag == null) { + tag = new ArrayList(); + } + return this.tag; + } + +} diff --git a/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/package-info.java b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/package-info.java new file mode 100644 index 00000000..b32ad4d0 --- /dev/null +++ b/ffprobejaxb/src/main/java/org/ffmpeg/ffprobe611/package-info.java @@ -0,0 +1,9 @@ +// +// This file was generated by the Eclipse Implementation of JAXB, v2.3.7 +// See https://eclipse-ee4j.github.io/jaxb-ri +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2023.12.31 at 03:48:29 PM CET +// + +@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.ffmpeg.org/schema/ffprobe") +package org.ffmpeg.ffprobe611; diff --git a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/FFprobeJAXB.java b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/FFprobeJAXB.java index 70affe44..59f639d0 100644 --- a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/FFprobeJAXB.java +++ b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/FFprobeJAXB.java @@ -1,5 +1,5 @@ /* - * This file is part of ffprobe-jaxb. + * This file is part of ffprobejaxb. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by @@ -11,114 +11,153 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * - * Copyright (C) hdsdi3g for hd3g.tv 2018-2020 + * Copyright (C) hdsdi3g for hd3g.tv 2023 * */ package tv.hd3g.ffprobejaxb; -import static java.nio.charset.StandardCharsets.UTF_8; -import static javax.xml.XMLConstants.ACCESS_EXTERNAL_DTD; -import static javax.xml.XMLConstants.ACCESS_EXTERNAL_SCHEMA; - -import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.UncheckedIOException; -import java.util.Collections; +import java.lang.reflect.InvocationTargetException; +import java.util.EnumMap; import java.util.List; -import java.util.Optional; -import java.util.function.Consumer; -import java.util.function.Predicate; +import java.util.Map; +import java.util.Objects; +import java.util.concurrent.ConcurrentLinkedQueue; import java.util.stream.Stream; -import javax.xml.bind.JAXBContext; +import org.w3c.dom.Node; + import javax.xml.bind.JAXBException; -import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.bind.ValidationEvent; import javax.xml.parsers.ParserConfigurationException; -import org.ffmpeg.ffprobe.ChapterType; -import org.ffmpeg.ffprobe.ChaptersType; -import org.ffmpeg.ffprobe.ErrorType; -import org.ffmpeg.ffprobe.FfprobeType; -import org.ffmpeg.ffprobe.FormatType; -import org.ffmpeg.ffprobe.FramesType; -import org.ffmpeg.ffprobe.LibraryVersionType; -import org.ffmpeg.ffprobe.LibraryVersionsType; -import org.ffmpeg.ffprobe.PacketType; -import org.ffmpeg.ffprobe.PacketsAndFramesType; -import org.ffmpeg.ffprobe.PacketsType; -import org.ffmpeg.ffprobe.PixelFormatType; -import org.ffmpeg.ffprobe.PixelFormatsType; -import org.ffmpeg.ffprobe.ProgramType; -import org.ffmpeg.ffprobe.ProgramVersionType; -import org.ffmpeg.ffprobe.ProgramsType; -import org.ffmpeg.ffprobe.StreamType; -import org.ffmpeg.ffprobe.StreamsType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.xml.sax.ErrorHandler; import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; -public class FFprobeJAXB { +public abstract class FFprobeJAXB implements FFprobeReference { + private static final Logger log = LoggerFactory.getLogger(FFprobeJAXB.class); - public final FfprobeType probeResult; + private static final String LOADED_XML = "Loaded XML: {}"; private final String xmlContent; - public FFprobeJAXB(final String xmlContent, final Consumer onWarnLog) { + protected FFprobeJAXB(final String xmlContent) { this.xmlContent = xmlContent; - try { - final var jc = JAXBContext.newInstance("org.ffmpeg.ffprobe"); - final var unmarshaller = jc.createUnmarshaller(); - - /** - * Prepare an error catcher if trouble are catched during import. - */ - unmarshaller.setEventHandler(e -> { - final var locator = e.getLocator(); - onWarnLog.accept("XML validation: " - + e.getMessage() + " [s" - + e.getSeverity() + "] at line " - + locator.getLineNumber() + ", column " - + locator.getColumnNumber() + " offset " - + locator.getOffset() + " node: " - + locator.getNode() + ", object " - + locator.getObject()); - return true; - }); + } - final var xmlDocumentBuilderFactory = DocumentBuilderFactory.newInstance();// NOSONAR - xmlDocumentBuilderFactory.setAttribute(ACCESS_EXTERNAL_DTD, ""); - xmlDocumentBuilderFactory.setAttribute(ACCESS_EXTERNAL_SCHEMA, ""); - xmlDocumentBuilderFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); - final var xmlDocumentBuilder = xmlDocumentBuilderFactory.newDocumentBuilder(); - xmlDocumentBuilder.setErrorHandler(null); + @Override + public String getXmlContent() { + return xmlContent; + } - final var document = xmlDocumentBuilder.parse(new ByteArrayInputStream(xmlContent.getBytes(UTF_8))); + protected abstract void setJAXB(final Object rawJAXB); - probeResult = unmarshaller.unmarshal(document, FfprobeType.class).getValue(); - } catch (JAXBException | SAXException | ParserConfigurationException e) { + public static FFprobeJAXB load(final String xmlContent) { + Node document; + try { + document = UnmarshallerTools.parseXMLDocument(xmlContent, new ErrorHandler() { + + @Override + public void warning(final SAXParseException exception) throws SAXException { + log.debug(LOADED_XML, xmlContent); + log.warn("XML parser warning", exception); + } + + @Override + public void fatalError(final SAXParseException exception) throws SAXException { + log.debug(LOADED_XML, xmlContent); + log.error("XML parser fatal error", exception); + } + + @Override + public void error(final SAXParseException exception) throws SAXException { + log.debug(LOADED_XML, xmlContent); + log.error("XML parser error", exception); + } + }); + } catch (ParserConfigurationException | SAXException e) { throw new UncheckedIOException(new IOException("Can't load XML content", e)); - } catch (final IOException e1) { - throw new UncheckedIOException(e1); } - } - public String getXmlContent() { - return xmlContent; - } + final Map> eventsByXSDVersion = new EnumMap<>(FFprobeXSDVersion.class); + JAXBException lastJAXBException = null; + List lastEvents; + FFprobeJAXB jaxbReference = null; + for (final var xsdVersion : FFprobeXSDVersion.values()) { + final var events = new ConcurrentLinkedQueue(); + + try { + log.debug("Try to load JAXB {}", xsdVersion.name()); + final var ffRef = UnmarshallerTools.unmarshal( + xsdVersion.createInstance(), + document, + events::add, + xsdVersion.getClassJAXB()); + + lastEvents = events.stream().toList(); + eventsByXSDVersion.put(xsdVersion, lastEvents); + + if (events.isEmpty()) { + jaxbReference = xsdVersion.make(xmlContent, ffRef); + } + } catch (final JAXBException e) { + log.debug("Can't load JAXB", e); + lastJAXBException = e; + } + } - public List getChapters() { - return Optional.ofNullable(probeResult.getChapters()) - .map(ChaptersType::getChapter) - .map(Collections::unmodifiableList) - .orElse(List.of()); - } + if (jaxbReference == null) { + if (lastJAXBException != null) { + throw new UncheckedIOException(new IOException(lastJAXBException)); + } + + eventsByXSDVersion.getOrDefault(FFprobeXSDVersion.values()[0], List.of()) + .forEach(e -> { + final var locator = e.getLocator(); + log.error( + "JAXB {} says: {} [s{}] at line {}, column {} offset {} node: {}, object {}", + FFprobeXSDVersion.values()[0].name(), + e.getMessage(), + e.getSeverity(), + locator.getLineNumber(), + locator.getColumnNumber(), + locator.getOffset(), + locator.getNode(), + locator.getObject(), + e.getLinkedException()); + }); + throw new IllegalArgumentException( + "Can't properly load ffprobe JAXB. You should update ffprobe.xsd ref and/or check XML document"); + } - public List getStreams() { - return Optional.ofNullable(probeResult.getStreams()) - .map(StreamsType::getStream) - .map(Collections::unmodifiableList) - .orElse(List.of()); + return jaxbReference; } - public FormatType getFormat() { - return probeResult.getFormat(); + protected static Stream getSubList(final Object jaxbSubListClass, final Class outputFormat) { + if (jaxbSubListClass == null) { + return Stream.empty(); + } + + final var getterMethod = Stream.of(jaxbSubListClass.getClass().getMethods()) + .filter(m -> m.getName().startsWith("get")) + .filter(m -> m.getReturnType().isAssignableFrom(List.class)) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("Can't found a List getter")); + + try { + final var raw = getterMethod.invoke(jaxbSubListClass); + if (raw == null) { + return Stream.empty(); + } + return ((List) raw).stream() + .filter(Objects::nonNull) + .map(outputFormat::cast); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + throw new IllegalArgumentException(e); + } } public MediaSummary getMediaSummary() { @@ -130,92 +169,31 @@ public String toString() { return getMediaSummary().toString(); } - /** - * @return nullable - */ - public ErrorType getError() { - return probeResult.getError(); - } - - /** - * @return nullable - */ - public ProgramVersionType getProgramVersion() { - return probeResult.getProgramVersion(); - } - - public List getLibraryVersions() { - return Optional.ofNullable(probeResult.getLibraryVersions()) - .map(LibraryVersionsType::getLibraryVersion) - .map(Collections::unmodifiableList) - .orElse(List.of()); - } - - public List getPixelFormats() { - return Optional.ofNullable(probeResult.getPixelFormats()) - .map(PixelFormatsType::getPixelFormat) - .map(Collections::unmodifiableList) - .orElse(List.of()); - } - - public List getPackets() { - return Optional.ofNullable(probeResult.getPackets()) - .map(PacketsType::getPacket) - .map(Collections::unmodifiableList) - .orElse(List.of()); - } - - /** - * {@link FrameType } - * {@link SubtitleType } - */ - public List getFrames() { - return Optional.ofNullable(probeResult.getFrames()) - .map(FramesType::getFrameOrSubtitle) - .map(Collections::unmodifiableList) - .orElse(List.of()); - } - - /** - * {@link PacketType } - * {@link FrameType } - * {@link SubtitleType } - */ - public List getPacketsAndFrames() { - return Optional.ofNullable(probeResult.getPacketsAndFrames()) - .map(PacketsAndFramesType::getPacketOrFrameOrSubtitle) - .map(Collections::unmodifiableList) - .orElse(List.of()); - } - - public List getPrograms() { - return Optional.ofNullable(probeResult.getPrograms()) - .map(ProgramsType::getProgram) - .map(Collections::unmodifiableList) - .orElse(List.of()); + static boolean getNonNull(final Boolean value) { + if (value == null) { + return false; + } + return value; } - public static final Predicate filterVideoStream = streamType -> streamType - .getCodecType().equals("video"); - public static final Predicate filterAudioStream = streamType -> streamType - .getCodecType().equals("audio"); - public static final Predicate filterDataStream = streamType -> streamType - .getCodecType().equals("data"); - - public Stream getVideoStreams() { - return getStreams().stream().filter(filterVideoStream); + static int getNonNull(final Integer value) { + if (value == null) { + return 0; + } + return value; } - public Stream getAudiosStreams() { - return getStreams().stream().filter(filterAudioStream); + static long getNonNull(final Long value) { + if (value == null) { + return 0; + } + return value; } - public Optional getFirstVideoStream() { - return getVideoStreams() - .filter(vs -> vs.getDisposition().getAttachedPic() == 0) - .filter(vs -> vs.getDisposition().getTimedThumbnails() == 0) - .sorted((l, r) -> Integer.compare(r.getDisposition().getDefault(), l.getDisposition().getDefault())) - .findFirst(); + static float getNonNull(final Float value) { + if (value == null) { + return 0; + } + return value; } - } diff --git a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/FFprobeJAXB436.java b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/FFprobeJAXB436.java new file mode 100644 index 00000000..ae5bfeb4 --- /dev/null +++ b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/FFprobeJAXB436.java @@ -0,0 +1,294 @@ +/* + * This file is part of ffprobejaxb. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2023 + * + */ +package tv.hd3g.ffprobejaxb; + +import java.util.List; +import java.util.Optional; + +import org.ffmpeg.ffprobe436.ChapterType; +import org.ffmpeg.ffprobe436.FfprobeType; +import org.ffmpeg.ffprobe436.LibraryVersionType; +import org.ffmpeg.ffprobe436.PacketSideDataType; +import org.ffmpeg.ffprobe436.PixelFormatComponentType; +import org.ffmpeg.ffprobe436.PixelFormatFlagsType; +import org.ffmpeg.ffprobe436.PixelFormatType; +import org.ffmpeg.ffprobe436.ProgramType; +import org.ffmpeg.ffprobe436.StreamType; +import org.ffmpeg.ffprobe436.StreamsType; +import org.ffmpeg.ffprobe436.TagType; + +import tv.hd3g.ffprobejaxb.data.FFProbeChapter; +import tv.hd3g.ffprobejaxb.data.FFProbeError; +import tv.hd3g.ffprobejaxb.data.FFProbeFormat; +import tv.hd3g.ffprobejaxb.data.FFProbeKeyValue; +import tv.hd3g.ffprobejaxb.data.FFProbeLibraryVersion; +import tv.hd3g.ffprobejaxb.data.FFProbePacketSideData; +import tv.hd3g.ffprobejaxb.data.FFProbePixelFormat; +import tv.hd3g.ffprobejaxb.data.FFProbeProgram; +import tv.hd3g.ffprobejaxb.data.FFProbeProgramVersion; +import tv.hd3g.ffprobejaxb.data.FFProbeStream; +import tv.hd3g.ffprobejaxb.data.FFProbeStreamDisposition; + +public class FFprobeJAXB436 extends FFprobeJAXB { + + private FfprobeType ffprobe; + + protected FFprobeJAXB436(final String xmlContent) { + super(xmlContent); + } + + @Override + protected void setJAXB(final Object rawJAXB) { + ffprobe = (FfprobeType) rawJAXB; + } + + @Override + public String getXSDVersionReference() { + final var pname = ffprobe.getClass().getPackageName(); + return pname.substring(pname.lastIndexOf(".") + 1); + } + + @Override + public List getLibraryVersions() { + return getSubList(ffprobe.getLibraryVersions(), LibraryVersionType.class) + .map(f -> new FFProbeLibraryVersion( + f.getName(), + f.getMajor(), + f.getMinor(), + f.getMicro(), + f.getVersion(), + f.getIdent())) + .toList(); + } + + @Override + public Optional getProgramVersion() { + return Optional.ofNullable(ffprobe.getProgramVersion()) + .map(p -> new FFProbeProgramVersion( + p.getVersion(), + p.getCopyright(), + p.getBuildDate(), + p.getBuildTime(), + p.getCompilerIdent(), + p.getConfiguration())); + } + + @Override + public Optional getError() { + return Optional.ofNullable(ffprobe.getError()) + .map(e -> new FFProbeError(e.getCode(), e.getString())); + } + + private static List getTags(final List tagList) { + return tagList.stream() + .map(t -> new FFProbeKeyValue(t.getKey(), t.getValue())) + .toList(); + } + + @Override + public Optional getFormat() { + return Optional.ofNullable(ffprobe.getFormat()) + .map(f -> new FFProbeFormat( + getTags(f.getTag()), + f.getFilename(), + f.getNbStreams(), + f.getNbPrograms(), + f.getFormatName(), + f.getFormatLongName(), + getNonNull(f.getStartTime()), + getNonNull(f.getDuration()), + getNonNull(f.getSize()), + getNonNull(f.getBitRate()), + getNonNull(f.getProbeScore()))); + } + + @Override + public List getChapters() { + return getSubList(ffprobe.getChapters(), ChapterType.class) + .map(c -> new FFProbeChapter( + getTags(c.getTag()), + c.getId(), + c.getTimeBase(), + c.getStart(), + c.getStartTime(), + c.getEnd(), + c.getEndTime())) + .toList(); + } + + private static FFProbeStreamDisposition getDispositions(final StreamType s) { + return Optional.ofNullable(s.getDisposition()) + .map(d -> new FFProbeStreamDisposition( + d.getDefault() == 1, + d.getDub() == 1, + d.getOriginal() == 1, + d.getComment() == 1, + d.getLyrics() == 1, + d.getKaraoke() == 1, + d.getForced() == 1, + d.getHearingImpaired() == 1, + d.getVisualImpaired() == 1, + d.getCleanEffects() == 1, + d.getAttachedPic() == 1, + d.getTimedThumbnails() == 1, + /** + * getNonDiegetic + */ + false, + /** + * getCaptions + */ + false, + /** + * Descriptions + */ + false, + /** + * Metadata + */ + false, + /** + * Dependent + */ + false, + /** + * StillImage + */ + false)) + .orElseGet(FFProbeStreamDisposition::getByNames); + } + + private static List getSideDataList(final StreamType s) { + return getSubList(s.getSideDataList(), PacketSideDataType.class) + .map(sdl -> new FFProbePacketSideData( + List.of(), + sdl.getSideDataType(), + getNonNull(sdl.getSideDataSize()))) + .toList(); + } + + private static List getStreams(final StreamsType streamsType) { + return getSubList(streamsType, StreamType.class) + .map(s -> new FFProbeStream( // NOSONAR 5612 + getDispositions(s), + getTags(s.getTag()), + getSideDataList(s), + s.getIndex(), + s.getCodecName(), + s.getCodecLongName(), + s.getProfile(), + s.getCodecType(), + s.getCodecTag(), + s.getCodecTagString(), + s.getExtradata(), + /** ExtradataSize */ + 0, + s.getExtradataHash(), + getNonNull(s.getWidth()), + getNonNull(s.getHeight()), + getNonNull(s.getCodedWidth()), + getNonNull(s.getCodedHeight()), + getNonNull(s.isClosedCaptions()), + /** FilmGrain */ + false, + s.getHasBFrames() != null && s.getHasBFrames() > 0, + s.getSampleAspectRatio(), + s.getDisplayAspectRatio(), + s.getPixFmt(), + getNonNull(s.getLevel()), + s.getColorRange(), + s.getColorSpace(), + s.getColorTransfer(), + s.getColorPrimaries(), + s.getChromaLocation(), + s.getFieldOrder(), + getNonNull(s.getRefs()), + s.getSampleFmt(), + getNonNull(s.getSampleRate()), + getNonNull(s.getChannels()), + s.getChannelLayout(), + getNonNull(s.getBitsPerSample()), + /** + * InitialPadding + */ + 0, + s.getId(), + s.getRFrameRate(), + s.getAvgFrameRate(), + s.getTimeBase(), + getNonNull(s.getStartPts()), + getNonNull(s.getStartTime()), + getNonNull(s.getDurationTs()), + getNonNull(s.getDuration()), + getNonNull(s.getBitRate()), + getNonNull(s.getMaxBitRate()), + getNonNull(s.getBitsPerRawSample()), + getNonNull(s.getNbFrames()), + getNonNull(s.getNbReadFrames()), + getNonNull(s.getNbReadPackets()))) + .toList(); + } + + @Override + public List getPrograms() { + return getSubList(ffprobe.getPrograms(), ProgramType.class) + .map(p -> new FFProbeProgram( + getTags(p.getTag()), + getStreams(p.getStreams()), + p.getProgramId(), + p.getProgramNum(), + p.getNbStreams(), + p.getPmtPid(), + p.getPcrPid())) + .toList(); + } + + @Override + public List getStreams() { + return getStreams(ffprobe.getStreams()); + } + + @Override + public List getPixelFormats() { + return getSubList(ffprobe.getPixelFormats(), PixelFormatType.class) + .map(pf -> { + final var flags = Optional.ofNullable(pf.getFlags()) + .orElse(new PixelFormatFlagsType()); + final var bitDepthByComponent = getSubList(pf.getComponents(), PixelFormatComponentType.class) + .sorted((l, r) -> Integer.compare(l.getIndex(), r.getIndex())) + .map(PixelFormatComponentType::getBitDepth) + .toList(); + + return new FFProbePixelFormat( + pf.getName(), + pf.getNbComponents(), + getNonNull(pf.getLog2ChromaW()), + getNonNull(pf.getLog2ChromaH()), + getNonNull(pf.getBitsPerPixel()), + getNonNull(flags.getBigEndian()) == 1, + getNonNull(flags.getPalette()) == 1, + getNonNull(flags.getBitstream()) == 1, + getNonNull(flags.getHwaccel()) == 1, + getNonNull(flags.getPlanar()) == 1, + getNonNull(flags.getRgb()) == 1, + getNonNull(flags.getAlpha()) == 1, + bitDepthByComponent); + }) + .toList(); + } + +} diff --git a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/FFprobeJAXB611.java b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/FFprobeJAXB611.java new file mode 100644 index 00000000..cfbd4227 --- /dev/null +++ b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/FFprobeJAXB611.java @@ -0,0 +1,283 @@ +/* + * This file is part of ffprobejaxb. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2023 + * + */ +package tv.hd3g.ffprobejaxb; + +import java.util.List; +import java.util.Optional; + +import org.ffmpeg.ffprobe611.ChapterType; +import org.ffmpeg.ffprobe611.FfprobeType; +import org.ffmpeg.ffprobe611.LibraryVersionType; +import org.ffmpeg.ffprobe611.PacketSideDataType; +import org.ffmpeg.ffprobe611.PixelFormatComponentType; +import org.ffmpeg.ffprobe611.PixelFormatFlagsType; +import org.ffmpeg.ffprobe611.PixelFormatType; +import org.ffmpeg.ffprobe611.ProgramType; +import org.ffmpeg.ffprobe611.StreamType; +import org.ffmpeg.ffprobe611.StreamsType; +import org.ffmpeg.ffprobe611.TagType; +import org.ffmpeg.ffprobe611.TagsType; + +import tv.hd3g.ffprobejaxb.data.FFProbeChapter; +import tv.hd3g.ffprobejaxb.data.FFProbeError; +import tv.hd3g.ffprobejaxb.data.FFProbeFormat; +import tv.hd3g.ffprobejaxb.data.FFProbeKeyValue; +import tv.hd3g.ffprobejaxb.data.FFProbeLibraryVersion; +import tv.hd3g.ffprobejaxb.data.FFProbePacketSideData; +import tv.hd3g.ffprobejaxb.data.FFProbePixelFormat; +import tv.hd3g.ffprobejaxb.data.FFProbeProgram; +import tv.hd3g.ffprobejaxb.data.FFProbeProgramVersion; +import tv.hd3g.ffprobejaxb.data.FFProbeStream; +import tv.hd3g.ffprobejaxb.data.FFProbeStreamDisposition; + +public class FFprobeJAXB611 extends FFprobeJAXB { + + private FfprobeType ffprobe; + + protected FFprobeJAXB611(final String xmlContent) { + super(xmlContent); + } + + @Override + protected void setJAXB(final Object rawJAXB) { + ffprobe = (FfprobeType) rawJAXB; + } + + @Override + public String getXSDVersionReference() { + final var pname = ffprobe.getClass().getPackageName(); + return pname.substring(pname.lastIndexOf(".") + 1); + } + + @Override + public List getLibraryVersions() { + return getSubList(ffprobe.getLibraryVersions(), LibraryVersionType.class) + .map(f -> new FFProbeLibraryVersion( + f.getName(), + f.getMajor(), + f.getMinor(), + f.getMicro(), + f.getVersion(), + f.getIdent())) + .toList(); + } + + @Override + public Optional getProgramVersion() { + return Optional.ofNullable(ffprobe.getProgramVersion()) + .map(p -> new FFProbeProgramVersion( + p.getVersion(), + p.getCopyright(), + p.getBuildDate(), + p.getBuildTime(), + p.getCompilerIdent(), + p.getConfiguration())); + } + + @Override + public Optional getError() { + return Optional.ofNullable(ffprobe.getError()) + .map(e -> new FFProbeError(e.getCode(), e.getString())); + } + + private static List getTags(final TagsType tagsType) { + return getSubList(tagsType, TagType.class) + .map(t -> new FFProbeKeyValue(t.getKey(), t.getValue())) + .toList(); + } + + @Override + public Optional getFormat() { + return Optional.ofNullable(ffprobe.getFormat()) + .map(f -> new FFProbeFormat( + getTags(f.getTags()), + f.getFilename(), + f.getNbStreams(), + f.getNbPrograms(), + f.getFormatName(), + f.getFormatLongName(), + getNonNull(f.getStartTime()), + getNonNull(f.getDuration()), + getNonNull(f.getSize()), + getNonNull(f.getBitRate()), + getNonNull(f.getProbeScore()))); + } + + private static List getChapterTags(final ChapterType c) { + return c.getTags().stream() + .flatMap(t -> Optional.ofNullable(t.getTag()) + .stream() + .flatMap(List::stream)) + .map(t -> new FFProbeKeyValue(t.getKey(), t.getValue())) + .toList(); + } + + @Override + public List getChapters() { + return getSubList(ffprobe.getChapters(), ChapterType.class) + .map(c -> new FFProbeChapter( + getChapterTags(c), + c.getId(), + c.getTimeBase(), + c.getStart(), + c.getStartTime(), + c.getEnd(), + c.getEndTime())) + .toList(); + } + + private static FFProbeStreamDisposition getDispositions(final StreamType s) { + return Optional.ofNullable(s.getDisposition()) + .map(d -> new FFProbeStreamDisposition( + d.getDefault() == 1, + d.getDub() == 1, + d.getOriginal() == 1, + d.getComment() == 1, + d.getLyrics() == 1, + d.getKaraoke() == 1, + d.getForced() == 1, + d.getHearingImpaired() == 1, + d.getVisualImpaired() == 1, + d.getCleanEffects() == 1, + d.getAttachedPic() == 1, + d.getTimedThumbnails() == 1, + d.getNonDiegetic() == 1, + d.getCaptions() == 1, + d.getDescriptions() == 1, + d.getMetadata() == 1, + d.getDependent() == 1, + d.getStillImage() == 1)) + .orElseGet(FFProbeStreamDisposition::getByNames); + } + + private static List getSideDataList(final StreamType s) { + return getSubList(s.getSideDataList(), PacketSideDataType.class) + .map(sdl -> new FFProbePacketSideData( + sdl.getSideDatum().stream().map(sd -> new FFProbeKeyValue( + sd.getKey(), + sd.getValue())) + .toList(), + sdl.getType(), + 0)) + .toList(); + } + + private static List getStreams(final StreamsType streamsType) { + return getSubList(streamsType, StreamType.class) + .map(s -> new FFProbeStream( // NOSONAR 5612 + getDispositions(s), + getTags(s.getTags()), + getSideDataList(s), + s.getIndex(), + s.getCodecName(), + s.getCodecLongName(), + s.getProfile(), + s.getCodecType(), + s.getCodecTag(), + s.getCodecTagString(), + s.getExtradata(), + s.getExtradataSize() != null ? s.getExtradataSize() : 0, + s.getExtradataHash(), + getNonNull(s.getWidth()), + getNonNull(s.getHeight()), + getNonNull(s.getCodedWidth()), + getNonNull(s.getCodedHeight()), + getNonNull(s.isClosedCaptions()), + getNonNull(s.isFilmGrain()), + s.getHasBFrames() != null && s.getHasBFrames() > 0, + s.getSampleAspectRatio(), + s.getDisplayAspectRatio(), + s.getPixFmt(), + getNonNull(s.getLevel()), + s.getColorRange(), + s.getColorSpace(), + s.getColorTransfer(), + s.getColorPrimaries(), + s.getChromaLocation(), + s.getFieldOrder(), + getNonNull(s.getRefs()), + s.getSampleFmt(), + getNonNull(s.getSampleRate()), + getNonNull(s.getChannels()), + s.getChannelLayout(), + getNonNull(s.getBitsPerSample()), + getNonNull(s.getInitialPadding()), + s.getId(), + s.getRFrameRate(), + s.getAvgFrameRate(), + s.getTimeBase(), + getNonNull(s.getStartPts()), + getNonNull(s.getStartTime()), + getNonNull(s.getDurationTs()), + getNonNull(s.getDuration()), + getNonNull(s.getBitRate()), + getNonNull(s.getMaxBitRate()), + getNonNull(s.getBitsPerRawSample()), + getNonNull(s.getNbFrames()), + getNonNull(s.getNbReadFrames()), + getNonNull(s.getNbReadPackets()))) + .toList(); + } + + @Override + public List getPrograms() { + return getSubList(ffprobe.getPrograms(), ProgramType.class) + .map(p -> new FFProbeProgram( + getTags(p.getTags()), + getStreams(p.getStreams()), + p.getProgramId(), + p.getProgramNum(), + p.getNbStreams(), + p.getPmtPid(), + p.getPcrPid())) + .toList(); + } + + @Override + public List getStreams() { + return getStreams(ffprobe.getStreams()); + } + + @Override + public List getPixelFormats() { + return getSubList(ffprobe.getPixelFormats(), PixelFormatType.class) + .map(pf -> { + final var flags = Optional.ofNullable(pf.getFlags()) + .orElse(new PixelFormatFlagsType()); + final var bitDepthByComponent = getSubList(pf.getComponents(), PixelFormatComponentType.class) + .sorted((l, r) -> Integer.compare(l.getIndex(), r.getIndex())) + .map(PixelFormatComponentType::getBitDepth) + .toList(); + + return new FFProbePixelFormat( + pf.getName(), + pf.getNbComponents(), + getNonNull(pf.getLog2ChromaW()), + getNonNull(pf.getLog2ChromaH()), + getNonNull(pf.getBitsPerPixel()), + getNonNull(flags.getBigEndian()) == 1, + getNonNull(flags.getPalette()) == 1, + getNonNull(flags.getBitstream()) == 1, + getNonNull(flags.getHwaccel()) == 1, + getNonNull(flags.getPlanar()) == 1, + getNonNull(flags.getRgb()) == 1, + getNonNull(flags.getAlpha()) == 1, + bitDepthByComponent); + }) + .toList(); + } +} diff --git a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/FFprobeReference.java b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/FFprobeReference.java new file mode 100644 index 00000000..e50fe535 --- /dev/null +++ b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/FFprobeReference.java @@ -0,0 +1,95 @@ +/* + * This file is part of ffprobejaxb. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2024 + * + */ +package tv.hd3g.ffprobejaxb; + +import java.util.List; +import java.util.Optional; +import java.util.function.Predicate; +import java.util.stream.Stream; + +import tv.hd3g.ffprobejaxb.data.FFProbeChapter; +import tv.hd3g.ffprobejaxb.data.FFProbeError; +import tv.hd3g.ffprobejaxb.data.FFProbeFormat; +import tv.hd3g.ffprobejaxb.data.FFProbeKeyValue; +import tv.hd3g.ffprobejaxb.data.FFProbeLibraryVersion; +import tv.hd3g.ffprobejaxb.data.FFProbePixelFormat; +import tv.hd3g.ffprobejaxb.data.FFProbeProgram; +import tv.hd3g.ffprobejaxb.data.FFProbeProgramVersion; +import tv.hd3g.ffprobejaxb.data.FFProbeStream; + +public interface FFprobeReference { + + Optional getFormat(); + + List getStreams(); + + String getXmlContent(); + + String getXSDVersionReference(); + + List getLibraryVersions(); + + Optional getError(); + + List getPrograms(); + + Optional getProgramVersion(); + + List getChapters(); + + List getPixelFormats(); + + Predicate filterVideoStream = streamType -> streamType.codecType().equals("video"); + Predicate filterAudioStream = streamType -> streamType.codecType().equals("audio"); + Predicate filterDataStream = streamType -> streamType.codecType().equals("data"); + + default Stream getVideoStreams() { + return getStreams().stream().filter(filterVideoStream); + } + + default Stream getAudioStreams() { + return getStreams().stream().filter(filterAudioStream); + } + + default Optional getFirstVideoStream() { + return getVideoStreams() + .filter(vs -> vs.disposition().attachedPic() == false) + .filter(vs -> vs.disposition().timedThumbnails() == false) + .filter(vs -> vs.disposition().stillImage() == false) + .sorted((l, r) -> Boolean.compare(r.disposition().asDefault(), l.disposition().asDefault())) + .findFirst(); + } + + /** + * @param discard0TC if true, don't return "00:00:00:00" values (return empty). + */ + default Optional getTimecode(final boolean discard0TC) { + return Stream.concat( + getFormat() + .stream() + .map(FFProbeFormat::tags), + getStreams() + .stream() + .map(FFProbeStream::tags)) + .flatMap(List::stream) + .filter(t -> "timecode".equals(t.key())) + .map(FFProbeKeyValue::value) + .findFirst() + .filter(tc -> (tc.equals("00:00:00:00") && discard0TC ? false : true)); + } + +} diff --git a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/FFprobeXSDVersion.java b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/FFprobeXSDVersion.java new file mode 100644 index 00000000..f6503bfb --- /dev/null +++ b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/FFprobeXSDVersion.java @@ -0,0 +1,54 @@ +/* + * This file is part of ffprobejaxb. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2023 + * + */ +package tv.hd3g.ffprobejaxb; + +import java.util.function.Function; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; + +public enum FFprobeXSDVersion { + + V611("org.ffmpeg.ffprobe611", org.ffmpeg.ffprobe611.FfprobeType.class, FFprobeJAXB611::new), + V436("org.ffmpeg.ffprobe436", org.ffmpeg.ffprobe436.FfprobeType.class, FFprobeJAXB436::new); + + private final String contextPath; + private final Function makeJAXBRef; + private final Class classJAXB; + + FFprobeXSDVersion(final String contextPath, + final Class classJAXB, + final Function makeJAXBRef) { + this.contextPath = contextPath; + this.classJAXB = classJAXB; + this.makeJAXBRef = makeJAXBRef; + } + + public JAXBContext createInstance() throws JAXBException { + return JAXBContext.newInstance(contextPath); + } + + public FFprobeJAXB make(final String xmlContent, final Object rawJAXB) { + final var result = makeJAXBRef.apply(xmlContent); + result.setJAXB(rawJAXB); + return result; + } + + public Class getClassJAXB() { + return classJAXB; + } +} diff --git a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/MediaSummary.java b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/MediaSummary.java index 745303f1..80b347d5 100644 --- a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/MediaSummary.java +++ b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/MediaSummary.java @@ -19,6 +19,8 @@ import static java.util.stream.Collectors.counting; import static java.util.stream.Collectors.groupingBy; import static java.util.stream.Collectors.joining; +import static tv.hd3g.ffprobejaxb.FFprobeReference.filterAudioStream; +import static tv.hd3g.ffprobejaxb.FFprobeReference.filterVideoStream; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; @@ -27,41 +29,48 @@ import java.util.List; import java.util.Locale; import java.util.Optional; -import java.util.function.Function; import java.util.function.Predicate; import java.util.function.ToIntFunction; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.ffmpeg.ffprobe.FormatType; -import org.ffmpeg.ffprobe.StreamDispositionType; -import org.ffmpeg.ffprobe.StreamType; -import org.ffmpeg.ffprobe.TagType; +import tv.hd3g.ffprobejaxb.data.FFProbeFormat; +import tv.hd3g.ffprobejaxb.data.FFProbeKeyValue; +import tv.hd3g.ffprobejaxb.data.FFProbeStream; public record MediaSummary(String format, List streams) { private static final DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.US); static MediaSummary create(final FFprobeJAXB source) { - final var format = source.getFormat(); + final var format = source.getFormat() + .orElseThrow(() -> new IllegalArgumentException("Can't found FFprobe format to produce Summary")); + final var chapters = source.getChapters(); + final var entries = new ArrayList(); - entries.add(format.getFormatLongName()); + entries.add(format.formatLongName()); entries.add(computeDuration(format)); - if (format.getSize() <= 1024 * 1024) { - entries.add(format.getSize() + " bytes"); + source.getTimecode(true) + .map(t -> "TCIN: " + t) + .ifPresent(entries::add); + + if (format.size() <= 1024 * 1024) { + entries.add(format.size() + " bytes"); } else { - entries.add(format.getSize() / 1024 / 1024 + " MB"); + entries.add(format.size() / 1024 / 1024 + " MB"); } - if (format.getNbPrograms() > 0) { - entries.add(format.getNbPrograms() + " program(s)"); + if (format.nbPrograms() > 0) { + entries.add(format.nbPrograms() + " program" + + (format.nbPrograms() > 1 ? "s" : "")); } - if (source.getChapters().isEmpty() == false) { - entries.add(source.getChapters().size() + " chapter(s)"); + if (chapters.isEmpty() == false) { + entries.add(chapters.size() + " chapter" + + (chapters.size() > 1 ? "s" : "")); } - if (source.getVideoStreams().anyMatch(f -> f.getBitRate() != null) == false - && source.getAudiosStreams().anyMatch(f -> f.getBitRate() != null) == false) { - Optional.ofNullable(format.getBitRate()).ifPresent(b -> { + if (source.getVideoStreams().anyMatch(f -> f.bitRate() > 0) == false + && source.getAudioStreams().anyMatch(f -> f.bitRate() > 0) == false) { + Optional.ofNullable(format.bitRate()).ifPresent(b -> { final var bitrateKbps = (double) b / 1000d; if (bitrateKbps < 10000) { entries.add(Math.round(bitrateKbps) + " kbps"); @@ -72,12 +81,14 @@ static MediaSummary create(final FFprobeJAXB source) { } final var videos = source.getVideoStreams().map(MediaSummary::getVideoSummary); - final var audios = source.getAudiosStreams().map(MediaSummary::getAudioSummary); + final var audios = source.getAudioStreams().map(MediaSummary::getAudioSummary); final var others = computeOther(source); return new MediaSummary( entries.stream().collect(Collectors.joining(", ")), - Stream.concat(videos, Stream.concat(audios, others)).toList()); + Stream.of(videos, audios, others) + .flatMap(s -> s) + .toList()); } static Optional getValue(final String value) { @@ -89,105 +100,74 @@ static Optional getValue(final String value) { }); } - private static Stream optDisposition(final int value, final String label) { - if (value == 1) { - return Stream.of(label); - } - return Stream.empty(); - } - - public static Stream resumeDispositions(final StreamDispositionType s) { - if (s == null) { - return Stream.of(); - } - return Stream.of( - optDisposition(s.getDefault(), "default stream"), - optDisposition(s.getAttachedPic(), "attached picture"), - optDisposition(s.getTimedThumbnails(), "timed thumbnails"), - optDisposition(s.getStillImage(), "still image"), - optDisposition(s.getHearingImpaired(), "hearing impaired"), - optDisposition(s.getVisualImpaired(), "visual impaired"), - optDisposition(s.getDub(), "dub"), - optDisposition(s.getOriginal(), "original"), - optDisposition(s.getComment(), "comment"), - optDisposition(s.getLyrics(), "lyrics"), - optDisposition(s.getKaraoke(), "karaoke"), - optDisposition(s.getForced(), "forced"), - optDisposition(s.getCleanEffects(), "clean effects"), - optDisposition(s.getCaptions(), "captions"), - optDisposition(s.getDescriptions(), "descriptions"), - optDisposition(s.getMetadata(), "metadata"), - optDisposition(s.getDependent(), "dependent")) - .flatMap(Function.identity()); - } - - static String getAudioSummary(final StreamType s) { + static String getAudioSummary(final FFProbeStream s) { final var entries = new ArrayList(); - entries.add(s.getCodecType() + ": " + s.getCodecName()); + entries.add(s.codecType() + ": " + s.codecName()); - getValue(s.getProfile()).ifPresent(entries::add); + getValue(s.profile()).ifPresent(entries::add); - getValue(s.getSampleFmt()).flatMap(f -> { - if (f.equals("fltp") || s.getCodecName().contains(f)) { + getValue(s.sampleFmt()).flatMap(f -> { + if (f.equals("fltp") || f.equals("s16p") || s.codecName().contains(f)) { return Optional.empty(); } return Optional.ofNullable(f); }).ifPresent(entries::add); - if (s.getChannels() > 2) { - if (s.getChannelLayout() != null) { - entries.add(s.getChannelLayout() + " (" + s.getChannels() + " channels)"); + if (s.channels() > 2) { + if (s.channelLayout() != null) { + entries.add(s.channelLayout() + " (" + s.channels() + " channels)"); } else { - entries.add(s.getChannels() + " channels"); + entries.add(s.channels() + " channels"); } - } else if (s.getChannelLayout() != null) { - entries.add(s.getChannelLayout()); - } else if (s.getChannels() == 2) { + } else if (s.channelLayout() != null) { + entries.add(s.channelLayout()); + } else if (s.channels() == 2) { entries.add("2 channels"); } else { entries.add("mono"); } - Optional.ofNullable(s.getSampleRate()) + Optional.ofNullable(s.sampleRate()) .ifPresent(sr -> entries.add("@ " + sr + " Hz")); - Optional.ofNullable(s.getBitRate()) + Optional.ofNullable(s.bitRate()) + .filter(b -> b > 100) .ifPresent(b -> entries.add("[" + b / 1000 + " kbps]")); - final var dispositions = resumeDispositions(s.getDisposition()).collect(joining(", ")); + final var dispositions = s.disposition().resumeDispositions().collect(joining(", ")); if (dispositions.isEmpty() == false) { entries.add(dispositions); } return entries.stream().collect(joining(" ")); } - static String getVideoSummary(final StreamType s) { + static String getVideoSummary(final FFProbeStream s) { final var entries = new ArrayList(); - entries.add(s.getCodecType() + ": " + s.getCodecName()); + entries.add(s.codecType() + ": " + s.codecName()); - if (s.getWidth() != null && s.getHeight() != null) { - entries.add(s.getWidth() + "×" + s.getHeight()); + if (s.width() > 0 && s.height() > 0) { + entries.add(s.width() + "×" + s.height()); } - final var profile = getValue(s.getProfile()).filter(p -> p.equals("0") == false); - final var level = Optional.ofNullable(s.getLevel()).orElse(0); + final var profile = getValue(s.profile()).filter(p -> p.equals("0") == false); + final var level = Optional.ofNullable(s.level()).orElse(0); if (profile.isPresent()) { if (level > 0) { - entries.add(profile.get() + "/" + getLevelTag(s.getCodecName(), level)); + entries.add(profile.get() + "/" + getLevelTag(s.codecName(), level)); } else { entries.add(profile.get()); } } else if (level > 0) { - entries.add(getLevelTag(s.getCodecName(), level)); + entries.add(getLevelTag(s.codecName(), level)); } - if (s.getHasBFrames() != null && s.getHasBFrames() > 0) { + if (s.hasBFrames()) { entries.add("with B frames"); } - final var frameRate = getValue(s.getAvgFrameRate()).map(b -> { + final var frameRate = getValue(s.avgFrameRate()).map(b -> { final var pos = b.indexOf("/"); if (pos == -1) { return b; @@ -205,8 +185,11 @@ static String getVideoSummary(final StreamType s) { entries.add("@ " + frameRate + " fps"); - Optional.ofNullable(s.getBitRate()).ifPresent(b -> { + Optional.ofNullable(s.bitRate()).ifPresent(b -> { final var bitrateKbps = (double) b / 1000d; + if (bitrateKbps < 1) { + return; + } if (bitrateKbps < 10000) { entries.add("[" + Math.round(bitrateKbps) + " kbps]"); } else { @@ -219,11 +202,11 @@ static String getVideoSummary(final StreamType s) { entries.add(cpf); } - if (s.getNbFrames() != null && s.getNbFrames() > 0) { - entries.add("(" + s.getNbFrames() + " frms)"); + if (s.hasBFrames() && s.nbFrames() > 0) { + entries.add("(" + s.nbFrames() + " frms)"); } - final var dispositions = resumeDispositions(s.getDisposition()).collect(joining(", ")); + final var dispositions = s.disposition().resumeDispositions().collect(joining(", ")); if (dispositions.isEmpty() == false) { entries.add(dispositions); } @@ -325,24 +308,25 @@ public static String getLevelTag(final String videoCodec, final int rawLevel) { }; } - static String computePixelsFormat(final StreamType s) { + static String computePixelsFormat(final FFProbeStream s) { final var entries = new ArrayList(); - getValue(s.getPixFmt()).ifPresent(entries::add); - getValue(s.getColorRange()).map(v -> "colRange:" + v.toUpperCase()).ifPresent(entries::add); + getValue(s.pixFmt()).ifPresent(entries::add); + getValue(s.colorRange()).map(v -> "colRange:" + v.toUpperCase()).ifPresent(entries::add); - final var oColorSpace = getValue(s.getColorSpace()); - final var oColorTransfer = getValue(s.getColorTransfer()); - final var oColorPrimaries = getValue(s.getColorPrimaries()); + final var oColorSpace = getValue(s.colorSpace()); + final var oColorTransfer = getValue(s.colorTransfer()); + final var oColorPrimaries = getValue(s.colorPrimaries()); if (oColorSpace.isPresent() && oColorSpace.equals(oColorTransfer) && oColorSpace.equals(oColorPrimaries)) { oColorSpace.map(String::toUpperCase).ifPresent(entries::add); } else { - Stream.concat(oColorSpace.map(v -> "colSpace:" + v.toUpperCase()).stream(), - Stream.concat( - oColorTransfer.map(v -> "colTransfer:" + v.toUpperCase()).stream(), - oColorPrimaries.map(v -> "colPrimaries:" + v.toUpperCase()).stream())) + Stream.of( + oColorSpace.map(v -> "colSpace:" + v.toUpperCase()).stream(), + oColorTransfer.map(v -> "colTransfer:" + v.toUpperCase()).stream(), + oColorPrimaries.map(v -> "colPrimaries:" + v.toUpperCase()).stream()) + .flatMap(f -> f) .forEach(entries::add); } @@ -356,8 +340,8 @@ static void addZeros(final int value, final StringBuilder sbTime) { sbTime.append(value); } - public static String computeDuration(final FormatType format) { - final var duration = Duration.ofMillis(Math.round(format.getDuration() * 1000f)); + public static String computeDuration(final FFProbeFormat format) { + final var duration = Duration.ofMillis(Math.round(format.duration() * 1000f)); final var sbTime = new StringBuilder(); addZeros(duration.toHoursPart(), sbTime); sbTime.append(":"); @@ -369,27 +353,19 @@ public static String computeDuration(final FormatType format) { private static Stream computeOther(final FFprobeJAXB source) { return source.getStreams().stream() - .filter(Predicate.not(FFprobeJAXB.filterAudioStream)) - .filter(Predicate.not(FFprobeJAXB.filterVideoStream)) + .filter(Predicate.not(filterAudioStream)) + .filter(Predicate.not(filterVideoStream)) .map(v -> { - final var name = getValue(v.getCodecName()) - .or(() -> getValue(v.getCodecTagString())) + final var name = getValue(v.codecName()) + .or(() -> getValue(v.codecTagString())) .orElse(""); - final var handler = v.getTag().stream() - .filter(t -> "handler_name".equals(t.getKey())) + final var handler = v.tags().stream() + .filter(t -> "handler_name".equals(t.key())) .findFirst() - .map(TagType::getValue) + .map(FFProbeKeyValue::value) .map(t -> " (" + t + ")") .orElse(""); - - final var tc = v.getTag().stream() - .filter(t -> "timecode".equals(t.getKey())) - .findFirst() - .map(TagType::getValue) - .map(t -> " " + t) - .orElse(""); - - return v.getCodecType() + ": " + name + handler + tc; + return v.codecType() + ": " + name + handler; }); } diff --git a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/UnmarshallerTools.java b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/UnmarshallerTools.java new file mode 100644 index 00000000..095be86d --- /dev/null +++ b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/UnmarshallerTools.java @@ -0,0 +1,65 @@ +/* + * This file is part of ffprobejaxb. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2023 + * + */ +package tv.hd3g.ffprobejaxb; + +import static java.nio.charset.StandardCharsets.UTF_8; +import static javax.xml.XMLConstants.ACCESS_EXTERNAL_DTD; +import static javax.xml.XMLConstants.ACCESS_EXTERNAL_SCHEMA; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.UncheckedIOException; + +import org.w3c.dom.Node; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.ValidationEventHandler; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +import org.xml.sax.ErrorHandler; +import org.xml.sax.SAXException; + +public interface UnmarshallerTools { + + static T unmarshal(final JAXBContext context, + final Node document, + final ValidationEventHandler handler, + final Class declaredType) throws JAXBException { + final var unmarshaller = context.createUnmarshaller(); + unmarshaller.setEventHandler(handler); + return unmarshaller.unmarshal(document, declaredType).getValue(); + } + + static Node parseXMLDocument(final String xmlContent, + final ErrorHandler errorHandler) throws ParserConfigurationException, SAXException { + final var xmlDocumentBuilderFactory = DocumentBuilderFactory.newInstance();// NOSONAR + xmlDocumentBuilderFactory.setAttribute(ACCESS_EXTERNAL_DTD, ""); + xmlDocumentBuilderFactory.setAttribute(ACCESS_EXTERNAL_SCHEMA, ""); + xmlDocumentBuilderFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); + final var xmlDocumentBuilder = xmlDocumentBuilderFactory.newDocumentBuilder(); + xmlDocumentBuilder.setErrorHandler(errorHandler); + + try { + return xmlDocumentBuilder.parse(new ByteArrayInputStream(xmlContent.getBytes(UTF_8))); + } catch (final IOException e) { + throw new UncheckedIOException(e); + } + } + +} diff --git a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeChapter.java b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeChapter.java new file mode 100644 index 00000000..202124ea --- /dev/null +++ b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeChapter.java @@ -0,0 +1,28 @@ +/* + * This file is part of ffprobejaxb. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2024 + * + */ +package tv.hd3g.ffprobejaxb.data; + +import java.util.List; + +public record FFProbeChapter(List tags, + int id, + String timeBase, + int start, + float startTime, + int end, + float endTime) { +} diff --git a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeError.java b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeError.java new file mode 100644 index 00000000..8726c3f8 --- /dev/null +++ b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeError.java @@ -0,0 +1,24 @@ +/* + * This file is part of ffprobejaxb. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2024 + * + */ +package tv.hd3g.ffprobejaxb.data; + +/** + * ErrorType + */ +public record FFProbeError(int code, String string) { + +} diff --git a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeFormat.java b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeFormat.java new file mode 100644 index 00000000..3d50b6b3 --- /dev/null +++ b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeFormat.java @@ -0,0 +1,35 @@ +/* + * This file is part of ffprobejaxb. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2024 + * + */ +package tv.hd3g.ffprobejaxb.data; + +import java.util.List; + +/** + * FormatType + */ +public record FFProbeFormat(List tags, + String filename, + int nbStreams, + int nbPrograms, + String formatName, + String formatLongName, + float startTime, + float duration, + long size, + long bitRate, + int probeScore) { +} diff --git a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeKeyValue.java b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeKeyValue.java new file mode 100644 index 00000000..e7cca732 --- /dev/null +++ b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeKeyValue.java @@ -0,0 +1,24 @@ +/* + * This file is part of ffprobejaxb. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2024 + * + */ +package tv.hd3g.ffprobejaxb.data; + +/** + * TagType + */ +public record FFProbeKeyValue(String key, String value) { + +} diff --git a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeLibraryVersion.java b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeLibraryVersion.java new file mode 100644 index 00000000..7628f3ad --- /dev/null +++ b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeLibraryVersion.java @@ -0,0 +1,28 @@ +/* + * This file is part of ffprobejaxb. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2024 + * + */ +package tv.hd3g.ffprobejaxb.data; + +/** + * LibraryVersionType + */ +public record FFProbeLibraryVersion(String name, + int major, + int minor, + int micro, + int version, + String ident) { +} diff --git a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbePacketSideData.java b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbePacketSideData.java new file mode 100644 index 00000000..01c7e426 --- /dev/null +++ b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbePacketSideData.java @@ -0,0 +1,24 @@ +/* + * This file is part of ffprobejaxb. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2024 + * + */ +package tv.hd3g.ffprobejaxb.data; + +import java.util.List; + +public record FFProbePacketSideData(List sideDatum, + String type, + int size) { +} diff --git a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbePixelFormat.java b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbePixelFormat.java new file mode 100644 index 00000000..fbd40614 --- /dev/null +++ b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbePixelFormat.java @@ -0,0 +1,58 @@ +/* + * This file is part of ffprobejaxb. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2024 + * + */ +package tv.hd3g.ffprobejaxb.data; + +import java.util.List; + +/** + * PixelFormatType + */ +public record FFProbePixelFormat(String name, + int nbComponents, + int log2ChromaW, + int log2ChromaH, + int bitsPerPixel, + /** + * PixelFormatFlagsType + */ + boolean bigEndian, + /** + * PixelFormatFlagsType + */ + boolean palette, + /** + * PixelFormatFlagsType + */ + boolean bitstream, + /** + * PixelFormatFlagsType + */ + boolean hwaccel, + /** + * PixelFormatFlagsType + */ + boolean planar, + /** + * PixelFormatFlagsType + */ + boolean rgb, + /** + * PixelFormatFlagsType + */ + boolean alpha, + List bitDepthByComponent) { +} diff --git a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeProgram.java b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeProgram.java new file mode 100644 index 00000000..c59bf07a --- /dev/null +++ b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeProgram.java @@ -0,0 +1,31 @@ +/* + * This file is part of ffprobejaxb. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2024 + * + */ +package tv.hd3g.ffprobejaxb.data; + +import java.util.List; + +/** + * ProgramType + */ +public record FFProbeProgram(List tags, + List streams, + int programId, + int programNum, + int nbStreams, + int pmtPid, + int pcrPid) { +} diff --git a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeProgramVersion.java b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeProgramVersion.java new file mode 100644 index 00000000..107e8df7 --- /dev/null +++ b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeProgramVersion.java @@ -0,0 +1,28 @@ +/* + * This file is part of ffprobejaxb. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2024 + * + */ +package tv.hd3g.ffprobejaxb.data; + +/** + * ProgramVersionType + */ +public record FFProbeProgramVersion(String version, + String copyright, + String buildDate, + String buildTime, + String compilerIdent, + String configuration) { +} diff --git a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeStream.java b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeStream.java new file mode 100644 index 00000000..14e77e2a --- /dev/null +++ b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeStream.java @@ -0,0 +1,76 @@ +/* + * This file is part of ffprobejaxb. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2024 + * + */ +package tv.hd3g.ffprobejaxb.data; + +import java.util.List; + +/** + * StreamType + */ +public record FFProbeStream(FFProbeStreamDisposition disposition, + List tags, + List sideDataList, + int index, + String codecName, + String codecLongName, + String profile, + String codecType, + String codecTag, + String codecTagString, + String extradata, + int extradataSize, + String extradataHash, + int width, + int height, + int codedWidth, + int codedHeight, + boolean closedCaptions, + boolean filmGrain, + boolean hasBFrames, + String sampleAspectRatio, + String displayAspectRatio, + String pixFmt, + int level, + String colorRange, + String colorSpace, + String colorTransfer, + String colorPrimaries, + String chromaLocation, + String fieldOrder, + int refs, + String sampleFmt, + int sampleRate, + int channels, + String channelLayout, + int bitsPerSample, + int initialPadding, + String id, + String rFrameRate, + String avgFrameRate, + String timeBase, + long startPts, + float startTime, + long durationTs, + float duration, + int bitRate, + int maxBitRate, + int bitsPerRawSample, + int nbFrames, + int nbReadFrames, + int nbReadPackets) { + +} diff --git a/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeStreamDisposition.java b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeStreamDisposition.java new file mode 100644 index 00000000..dc94156c --- /dev/null +++ b/ffprobejaxb/src/main/java/tv/hd3g/ffprobejaxb/data/FFProbeStreamDisposition.java @@ -0,0 +1,117 @@ +/* + * This file is part of ffprobejaxb. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2024 + * + */ +package tv.hd3g.ffprobejaxb.data; + +import static java.util.stream.Collectors.toUnmodifiableSet; +import static org.slf4j.LoggerFactory.getLogger; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.util.Objects; +import java.util.Optional; +import java.util.stream.Stream; + +import org.slf4j.Logger; + +/** + * StreamDispositionType + */ +public record FFProbeStreamDisposition(boolean asDefault, + boolean dub, + boolean original, + boolean comment, + boolean lyrics, + boolean karaoke, + boolean forced, + boolean hearingImpaired, + boolean visualImpaired, + boolean cleanEffects, + boolean attachedPic, + boolean timedThumbnails, + boolean nonDiegetic, + boolean captions, + boolean descriptions, + boolean metadata, + boolean dependent, + boolean stillImage) { + + private static final Logger log = getLogger(FFProbeStreamDisposition.class); + + public Stream resumeDispositions() { + final var thisClass = this; + /** + * @return only booleans, please add non-boolean values after the Stream + */ + return Stream.of(this.getClass().getDeclaredFields()) + .filter(f -> { + try { + return f.getBoolean(thisClass); + } catch (final IllegalArgumentException iae) { + return false; + } catch (final IllegalAccessException e) { + throw new IllegalCallerException("Can't extract values!", e); + } + }) + .map(Field::getName) + .map(f -> f.equals("asDefault") ? "default" : f) + /** + * https://www.geeksforgeeks.org/convert-camel-case-string-to-snake-case-in-java/ + */ + .map(n -> n.replaceAll("([a-z])([A-Z]+)", "$1 $2").toLowerCase()); + } + + public static FFProbeStreamDisposition getByNames(final String... names) { + return Stream.of(FFProbeStreamDisposition.class.getConstructors()) + .findFirst() + .map(constructor -> { + final var paramNames = Stream.of(names) + .filter(Objects::nonNull) + .map(String::toLowerCase) + .map(f -> f.replace("_", "")) + .map(f -> f.equals("default") ? "asdefault" : f) + .distinct() + .collect(toUnmodifiableSet()); + + final var newInstanceParams = Stream.of(constructor.getParameters()) + .map(param -> { + if (param.getType().isAssignableFrom(boolean.class) == false) { + return null; + } + return paramNames.contains(param.getName().toLowerCase()); + }) + .toList() + .toArray(); + + try { + return (FFProbeStreamDisposition) constructor.newInstance(newInstanceParams); + } catch (InstantiationException + | IllegalAccessException + | IllegalArgumentException + | InvocationTargetException e) { + log.error("Can't create StreamDisposition", e); + } + return null; + }) + .flatMap(Optional::ofNullable) + .orElseGet(() -> new FFProbeStreamDisposition( + false, false, false, false, false, + false, false, false, false, false, + false, false, false, false, false, + false, false, false)); + } + +} diff --git a/ffprobejaxb/src/test/java/tv/hd3g/ffprobejaxb/FFprobeJAXBE2ETest.java b/ffprobejaxb/src/test/java/tv/hd3g/ffprobejaxb/FFprobeJAXBE2ETest.java new file mode 100644 index 00000000..dc3bcf45 --- /dev/null +++ b/ffprobejaxb/src/test/java/tv/hd3g/ffprobejaxb/FFprobeJAXBE2ETest.java @@ -0,0 +1,522 @@ +/* + * This file is part of ffprobejaxb. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2024 + * + */ +package tv.hd3g.ffprobejaxb; + +import static java.nio.charset.StandardCharsets.UTF_8; +import static java.util.function.Predicate.not; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.data.Offset.offset; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.DynamicTest.dynamicTest; + +import java.io.File; +import java.io.IOException; +import java.io.UncheckedIOException; +import java.util.List; +import java.util.Objects; +import java.util.stream.Stream; + +import org.apache.commons.io.FileUtils; +import org.junit.jupiter.api.DynamicTest; +import org.junit.jupiter.api.TestFactory; + +import tv.hd3g.ffprobejaxb.data.FFProbeKeyValue; +import tv.hd3g.ffprobejaxb.data.FFProbeLibraryVersion; +import tv.hd3g.ffprobejaxb.data.FFProbePixelFormat; +import tv.hd3g.ffprobejaxb.data.FFProbeStream; +import tv.hd3g.ffprobejaxb.data.FFProbeStreamDisposition; + +class FFprobeJAXBE2ETest { + + @TestFactory + Stream test() { + return Stream.of(new File("src/test/resources") + .listFiles((dir, name) -> name.startsWith("test-") && name.endsWith(".xml"))) + .sorted() + .map(CheckE2EXML::new) + .flatMap(CheckE2EXML::toDynamicTests); + } + + class CheckE2EXML { + final File xml; + String xmlContent; + FFprobeJAXB ffprobe; + FFProbeStream s; + MediaSummary ms; + + CheckE2EXML(final File xml) { + this.xml = xml; + try { + xmlContent = FileUtils.readFileToString(xml, UTF_8); + ffprobe = FFprobeJAXB.load(xmlContent); + } catch (final IOException e) { + throw new UncheckedIOException(e); + } + } + + void preCheck() throws Exception { + assertThat(ffprobe).isNotNull(); + assertThat(ffprobe.getXmlContent()).isEqualTo(xmlContent); + + assertThat(ffprobe.getChapters()).isNotNull(); + + assertThat(ffprobe.getError()).isNotNull(); + + assertThat(ffprobe.getFormat()).isNotNull(); + assertThat(ffprobe.getFormat()).isPresent(); + + assertThat(ffprobe.getLibraryVersions()).isNotNull(); + assertThat(ffprobe.getLibraryVersions()).hasSize(7); + + assertThat(ffprobe.getMediaSummary()).isNotNull(); + assertThat(ffprobe.getPrograms()).isNotNull(); + + assertThat(ffprobe.getProgramVersion()).isNotNull(); + + assertThat(ffprobe.getStreams()).isNotNull(); + assertThat(ffprobe.getStreams()).hasSize(2); + + assertThat(ffprobe.getFirstVideoStream()).isNotNull(); + assertThat(ffprobe.getFirstVideoStream()).isPresent(); + + assertThat(ffprobe.getVideoStreams()).isNotNull(); + assertThat(ffprobe.getVideoStreams()).hasSize(1); + + assertThat(ffprobe.getFirstVideoStream()).contains(ffprobe.getVideoStreams().findFirst().get()); + + assertThat(ffprobe.getAudioStreams()).isNotNull(); + assertThat(ffprobe.getAudioStreams()).hasSize(1); + + assertThat(ffprobe.getStreams()).contains( + ffprobe.getAudioStreams().findFirst().get(), + ffprobe.getVideoStreams().findFirst().get()); + + assertThat(ffprobe.getXSDVersionReference()).isNotNull(); + assertThat(ffprobe.toString()).isNotNull().isNotEmpty(); + + assertThat(ffprobe.getPixelFormats()).isNotNull(); + assertThat(ffprobe.getPixelFormats()).isNotEmpty(); + } + + private void testGetFormat() { + final var format = ffprobe.getFormat().get(); + assertThat(format.filename()).endsWith(xml.getName().substring(0, xml.getName().indexOf("-", 6))); + } + + private boolean isXMLNameContains(final String... orValues) { + final var xmlName = xml.getName(); + return Stream.of(orValues) + .filter(Objects::nonNull) + .anyMatch(xmlName::contains); + } + + private void testGetPrograms() { + if (isXMLNameContains("mpeg2.ts")) { + assertThat(ffprobe.getPrograms()).hasSize(1); + final var p = ffprobe.getPrograms().get(0); + assertThat(p.streams()).hasSize(2); + assertThat(p.programId()).isEqualTo(1); + assertThat(p.programNum()).isEqualTo(1); + assertThat(p.nbStreams()).isEqualTo(2); + assertThat(p.pcrPid()).isLessThanOrEqualTo(4096); + assertThat(p.pmtPid()).isLessThanOrEqualTo(4096); + assertThat(p.tags()).contains(new FFProbeKeyValue("service_name", "Demo render")); + assertThat(p.tags()).contains(new FFProbeKeyValue("service_provider", "Media ex Machina")); + assertThat(p.streams()).isEqualTo(ffprobe.getStreams()); + } else { + assertThat(ffprobe.getPrograms()).isEmpty(); + } + } + + private void testGetStreams() { + final var streams = ffprobe.getStreams(); + assertThat(streams).hasSize(2); + + for (var pos = 0; pos < streams.size(); pos++) { + assertEquals(pos, streams.get(pos).index(), "Bad stream pos index"); + } + assertEquals("video", streams.get(0).codecType()); + assertEquals("audio", streams.get(1).codecType()); + } + + private void testVideoStream() { + s = ffprobe.getStreams().get(0); + assertThat(s.extradata()).isNull(); + assertThat(s.extradataHash()).isNull(); + assertThat(s.width()).isEqualTo(352); + assertThat(s.height()).isEqualTo(288); + assertThat(s.closedCaptions()).isFalse(); + assertThat(s.filmGrain()).isFalse(); + assertThat(s.sampleAspectRatio()).isEqualTo("1:1"); + assertThat(s.displayAspectRatio()).isEqualTo("11:9"); + assertThat(s.pixFmt()).isEqualTo("yuv420p"); + assertThat(s.colorSpace()).isNull(); + assertThat(s.colorTransfer()).isNull(); + assertThat(s.colorPrimaries()).isNull(); + + assertThat(s.refs()).isEqualTo(1); + assertThat(s.sampleFmt()).isNull(); + assertThat(s.sampleRate()).isZero(); + assertThat(s.channels()).isZero(); + assertThat(s.channelLayout()).isNull(); + assertThat(s.bitsPerSample()).isZero(); + assertThat(s.initialPadding()).isZero(); + assertThat(s.rFrameRate()).isEqualTo("25/1"); + assertThat(s.avgFrameRate()).isEqualTo("25/1"); + assertThat(s.bitsPerRawSample()).isZero(); + assertThat(s.nbReadFrames()).isZero(); + assertThat(s.nbReadPackets()).isZero(); + + if (isXMLNameContains("mpeg2.ts")) { + if (isXMLNameContains("6.2")) { + assertThat(s.sideDataList()).hasSize(1); + assertThat(s.sideDataList().get(0).sideDatum()).hasSize(6); + assertThat(s.sideDataList().get(0).type()).isEqualTo("CPB properties"); + assertThat(s.extradataSize()).isEqualTo(22); + } + + assertThat(s.codecName()).isEqualTo("mpeg2video"); + assertThat(s.codecLongName()).isEqualTo("MPEG-2 video"); + assertThat(s.profile()).isEqualTo("Main"); + assertThat(s.disposition()).isEqualTo(FFProbeStreamDisposition.getByNames()); + assertThat(s.tags()).isEmpty(); + assertThat(s.codecTag()).isEqualTo("0x0002"); + assertThat(s.codecTagString()).isEqualTo("[2][0][0][0]"); + assertThat(s.codedWidth()).isZero(); + assertThat(s.codedHeight()).isZero(); + assertThat(s.hasBFrames()).isTrue(); + assertThat(s.level()).isEqualTo(8); + assertThat(s.colorRange()).isEqualTo("tv"); + assertThat(s.chromaLocation()).isEqualTo("left"); + assertThat(s.id()).isEqualTo("0x100"); + assertThat(s.timeBase()).isEqualTo("1/90000"); + assertThat(s.startPts()).isEqualTo(129600); + assertThat(s.startTime()).isEqualTo(1.44f); + assertThat(s.durationTs()).isEqualTo(450000); + assertThat(s.bitRate()).isZero(); + assertThat(s.nbFrames()).isZero(); + assertThat(s.duration()).isEqualTo(5.0f); + } else { + assertThat(s.sideDataList()).isEmpty(); + assertThat(s.extradataSize()).isZero(); + assertThat(s.codedWidth()).isEqualTo(352); + assertThat(s.codedHeight()).isEqualTo(288); + assertThat(s.hasBFrames()).isFalse(); + assertThat(s.level()).isEqualTo(-99); + assertThat(s.chromaLocation()).isNull(); + assertThat(s.startPts()).isZero(); + assertThat(s.startTime()).isEqualTo(0f); + } + + if (isXMLNameContains("ffv1.mov")) { + assertThat(s.codecName()).isEqualTo("ffv1"); + assertThat(s.codecLongName()).isEqualTo("FFmpeg video codec #1"); + assertThat(s.profile()).isNull(); + assertThat(s.disposition()).isEqualTo(FFProbeStreamDisposition.getByNames("asDefault")); + + if (isXMLNameContains("-2.", "-3.", "-4.0", "-4.1", "-4.2", "-4.3")) { + assertThat(s.tags()).doesNotContain(new FFProbeKeyValue("vendor_id", "FFMP")); + } else { + assertThat(s.tags()).contains(new FFProbeKeyValue("vendor_id", "FFMP")); + } + + if (isXMLNameContains("-2.", "-3.", "-4.")) { + assertThat(s.id()).isNull(); + } else { + assertThat(s.id()).isEqualTo("0x1"); + } + + assertThat(s.codecTag()).isEqualTo("0x31564646"); + assertThat(s.codecTagString()).isEqualTo("FFV1"); + assertThat(s.colorRange()).isNull(); + assertThat(s.timeBase()).isEqualTo("1/12800"); + assertThat(s.durationTs()).isEqualTo(64000); + assertThat(s.duration()).isEqualTo(5.0f); + assertThat(s.bitRate()).isEqualTo(8568404); + assertThat(s.nbFrames()).isEqualTo(125); + } + + if (isXMLNameContains("vp8.mkv")) { + if (isXMLNameContains("2.8")) { + assertThat(s.profile()).isNull(); + assertThat(s.colorRange()).isNull(); + } else { + assertThat(s.profile()).isEqualTo("0"); + assertThat(s.colorRange()).isEqualTo("tv"); + } + + assertThat(s.codecName()).isEqualTo("vp8"); + assertThat(s.codecLongName()).isEqualTo("On2 VP8"); + assertThat(s.disposition()).isEqualTo(FFProbeStreamDisposition.getByNames()); + assertThat(s.tags()).contains(new FFProbeKeyValue("AKEY", "avalue")); + assertThat(s.codecTag()).isEqualTo("0x0000"); + assertThat(s.codecTagString()).isEqualTo("[0][0][0][0]"); + assertThat(s.id()).isNull(); + assertThat(s.timeBase()).isEqualTo("1/1000"); + assertThat(s.durationTs()).isZero(); + assertThat(s.duration()).isZero(); + assertThat(s.bitRate()).isZero(); + assertThat(s.nbFrames()).isZero(); + } + + if (isXMLNameContains("2.8") == false) { + assertThat(s.fieldOrder()).isEqualTo("progressive"); + assertThat(s.maxBitRate()).isZero(); + } + } + + private void testAudioStream() { + s = ffprobe.getStreams().get(1); + + assertThat(s.avgFrameRate()).isEqualTo("0/0"); + assertThat(s.bitsPerRawSample()).isZero(); + assertThat(s.channelLayout()).isEqualTo("stereo"); + assertThat(s.channels()).isEqualTo(2); + assertThat(s.chromaLocation()).isNull(); + assertThat(s.closedCaptions()).isFalse(); + assertThat(s.extradata()).isNull(); + assertThat(s.extradataHash()).isNull(); + + if (isXMLNameContains("mpeg2.ts")) { + assertThat(s.id()).isEqualTo("0x101"); + assertThat(s.bitRate()).isEqualTo(256000); + assertThat(s.codecTagString()).isEqualTo("[3][0][0][0]"); + assertThat(s.bitsPerSample()).isZero(); + assertThat(s.codecLongName()).isEqualTo("MP2 (MPEG audio layer 2)"); + assertThat(s.codecName()).isEqualTo("mp2"); + assertThat(s.codecTag()).isEqualTo("0x0003"); + assertThat(s.durationTs()).isEqualTo(449280); + assertThat(s.nbFrames()).isZero(); + + if (isXMLNameContains("-2.", "-3.")) { + assertThat(s.sampleFmt()).isEqualTo("s16p"); + } else { + assertThat(s.sampleFmt()).isEqualTo("fltp"); + } + + assertThat(s.startPts()).isEqualTo(128698); + assertThat(s.startTime()).isBetween(0f, 2.0f); + assertThat(s.timeBase()).isEqualTo("1/90000"); + assertThat(s.duration()).isCloseTo(5.0f, offset(0.1f)); + assertThat(s.profile()).isNull(); + assertThat(s.extradataSize()).isZero(); + assertThat(s.initialPadding()).isZero(); + assertThat(s.tags()).isEmpty(); + } + + if (isXMLNameContains("ffv1.mov")) { + if (isXMLNameContains("-2.", "-3.", "-4.")) { + assertThat(s.id()).isNull(); + } else { + assertThat(s.id()).isEqualTo("0x2"); + } + + assertThat(s.bitRate()).isEqualTo(1536000); + assertThat(s.codecTagString()).isEqualTo("sowt"); + assertThat(s.disposition()).isEqualTo(FFProbeStreamDisposition.getByNames("asDefault")); + assertThat(s.bitsPerSample()).isEqualTo(16); + assertThat(s.codecLongName()).isEqualTo("PCM signed 16-bit little-endian"); + assertThat(s.codecName()).isEqualTo("pcm_s16le"); + assertThat(s.codecTag()).isEqualTo("0x74776f73"); + assertThat(s.durationTs()).isEqualTo(240000); + assertThat(s.nbFrames()).isEqualTo(240000); + assertThat(s.sampleFmt()).isEqualTo("s16"); + assertThat(s.startPts()).isZero(); + assertThat(s.startTime()).isEqualTo(0f); + assertThat(s.timeBase()).isEqualTo("1/48000"); + assertThat(s.duration()).isCloseTo(5.0f, offset(0.1f)); + assertThat(s.profile()).isNull(); + assertThat(s.extradataSize()).isZero(); + assertThat(s.initialPadding()).isZero(); + assertThat(s.tags()).isNotEmpty(); + } + + if (isXMLNameContains("vp8.mkv")) { + assertThat(s.id()).isNull(); + assertThat(s.bitRate()).isZero(); + assertThat(s.codecTagString()).isEqualTo("[0][0][0][0]"); + assertThat(s.bitsPerSample()).isZero(); + assertThat(s.codecLongName()).isEqualTo("AAC (Advanced Audio Coding)"); + assertThat(s.codecName()).isEqualTo("aac"); + assertThat(s.codecTag()).isEqualTo("0x0000"); + assertThat(s.nbFrames()).isZero(); + assertThat(s.sampleFmt()).isEqualTo("fltp"); + assertThat(s.startPts()).isBetween(-100l, 1l); + assertThat(s.startTime()).isCloseTo(0f, offset(0.1f)); + assertThat(s.timeBase()).isEqualTo("1/1000"); + assertThat(s.duration()).isZero(); + assertThat(s.profile()).isEqualTo("LC"); + + if (isXMLNameContains("-2.", "-3.", "-4.", "-5.", "-6.0", "-6.1-")) { + assertThat(s.extradataSize()).isZero(); + assertThat(s.initialPadding()).isZero(); + } else { + assertThat(s.extradataSize()).isEqualTo(5); + assertThat(s.initialPadding()).isEqualTo(1024); + } + assertThat(s.tags()).isNotEmpty(); + } + + assertThat(s.codedHeight()).isZero(); + assertThat(s.codedWidth()).isZero(); + assertThat(s.colorPrimaries()).isNull(); + assertThat(s.colorRange()).isNull(); + assertThat(s.colorSpace()).isNull(); + assertThat(s.colorTransfer()).isNull(); + assertThat(s.displayAspectRatio()).isNull(); + assertThat(s.fieldOrder()).isNull(); + assertThat(s.filmGrain()).isFalse(); + assertThat(s.sideDataList()).isEmpty(); + assertThat(s.hasBFrames()).isFalse(); + assertThat(s.height()).isZero(); + assertThat(s.level()).isZero(); + assertThat(s.maxBitRate()).isZero(); + assertThat(s.nbReadFrames()).isZero(); + assertThat(s.nbReadPackets()).isZero(); + assertThat(s.pixFmt()).isNull(); + assertThat(s.rFrameRate()).isEqualTo("0/0"); + assertThat(s.refs()).isZero(); + assertThat(s.sampleAspectRatio()).isNull(); + assertThat(s.sampleRate()).isEqualTo(48000); + assertThat(s.width()).isZero(); + } + + private void testGetChapters() { + if (isXMLNameContains("vp8.mkv")) { + assertThat(ffprobe.getChapters()) + .hasSize(1) + .allMatch(c -> List.of(new FFProbeKeyValue("title", "Chap One")).equals(c.tags())) + .allMatch(c -> c.id() == 1) + .allMatch(c -> Math.round(c.startTime()) == 0) + .allMatch(c -> Math.round(c.endTime()) == 3); + } else { + assertThat(ffprobe.getChapters()).isEmpty(); + } + } + + private void testGetMediaSummary() { + ms = ffprobe.getMediaSummary(); + assertThat(ms).isNotNull(); + assertThat(ms.format()).isNotBlank(); + assertThat(ms.streams()).hasSize(2); + + final var vStream = ms.streams().get(0); + final var aStream = ms.streams().get(1); + + if (isXMLNameContains("mpeg2.ts")) { + assertThat(ms.format()).isEqualTo("MPEG-TS (MPEG-2 Transport Stream), 00:00:05, 2 MB, 1 program"); + assertThat(vStream).isEqualTo( + "video: mpeg2video 352×288 Main/Main with B frames @ 25 fps yuv420p/colRange:TV"); + assertThat(aStream).isEqualTo( + "audio: mp2 stereo @ 48000 Hz [256 kbps]"); + } + + if (isXMLNameContains("ffv1.mov")) { + assertThat(ms.format()).isEqualTo("QuickTime / MOV, 00:00:05, 6 MB"); + assertThat(vStream).isEqualTo( + "video: ffv1 352×288 @ 25 fps [8568 kbps] yuv420p default"); + assertThat(aStream).isEqualTo( + "audio: pcm_s16le stereo @ 48000 Hz [1536 kbps] default"); + } + + if (isXMLNameContains("vp8.mkv")) { + assertThat(ms.format()).isEqualTo("Matroska / WebM, 00:00:05, 240334 bytes, 1 chapter, 383 kbps"); + + if (isXMLNameContains("-2.")) { + assertThat(vStream).isEqualTo( + "video: vp8 352×288 @ 25 fps yuv420p"); + } else { + assertThat(vStream).isEqualTo( + "video: vp8 352×288 @ 25 fps yuv420p/colRange:TV"); + } + + assertThat(aStream).isEqualTo( + "audio: aac LC stereo @ 48000 Hz"); + } + } + + private void testToString() { + assertThat(ffprobe).hasToString(ffprobe.getMediaSummary().toString()); + } + + private void testGetProgramVersion() { + final var v = ffprobe.getProgramVersion().get(); + assertThat(v.configuration()).contains("--disable-ffmpeg", "--disable-ffplay"); + assertThat(v.version()).isNotEmpty(); + assertThat(v.copyright()).contains("FFmpeg"); + assertThat(v.compilerIdent()).isNotEmpty(); + } + + private void testGetLibraryVersions() { + assertThat(ffprobe.getLibraryVersions().stream() + .map(FFProbeLibraryVersion::name) + .toList()).contains( + "libavutil", + "libavcodec", + "libavformat", + "libavdevice", + "libavfilter", + "libswscale", + "libswresample"); + + for (final var lv : ffprobe.getLibraryVersions()) { + assertThat(lv.ident()).isNotBlank(); + assertThat(lv.major()).isPositive(); + assertThat(lv.minor()).isPositive(); + assertThat(lv.micro()).isPositive(); + assertThat(lv.version()).isPositive(); + } + } + + private void testGetPixelFormats() { + final var pf = ffprobe.getPixelFormats(); + assertThat(pf) + .hasSize((int) pf.stream() + .map(FFProbePixelFormat::name) + .distinct() + .count()); + + assertTrue(pf.stream().allMatch(p -> Objects.nonNull(p.bitDepthByComponent()))); + assertTrue(pf.stream() + .filter(not(FFProbePixelFormat::hwaccel)) + .allMatch(p -> p.bitDepthByComponent().size() > 0)); + assertTrue(pf.stream() + .map(FFProbePixelFormat::bitDepthByComponent) + .flatMap(List::stream) + .allMatch(Objects::nonNull)); + } + + Stream toDynamicTests() { + return Stream.of( + dynamicTest(xml.getName() + " preCheck", this::preCheck), + dynamicTest(xml.getName() + " testGetFormat", this::testGetFormat), + dynamicTest(xml.getName() + " testGetStreams", this::testGetStreams), + dynamicTest(xml.getName() + " testVideoStream", this::testVideoStream), + dynamicTest(xml.getName() + " testAudioStream", this::testAudioStream), + dynamicTest(xml.getName() + " testGetPrograms", this::testGetPrograms), + dynamicTest(xml.getName() + " testAudioStream", this::testGetChapters), + dynamicTest(xml.getName() + " testGetMediaSummary", this::testGetMediaSummary), + dynamicTest(xml.getName() + " testToString", this::testToString), + dynamicTest(xml.getName() + " testGetProgramVersion", this::testGetProgramVersion), + dynamicTest(xml.getName() + " testGetLibraryVersions", this::testGetLibraryVersions), + dynamicTest(xml.getName() + " testGetPixelFormats", this::testGetPixelFormats)); + } + + } + +} diff --git a/ffprobejaxb/src/test/java/tv/hd3g/ffprobejaxb/FFprobeJAXBTest.java b/ffprobejaxb/src/test/java/tv/hd3g/ffprobejaxb/FFprobeJAXBTest.java index b3db6e62..635aa856 100644 --- a/ffprobejaxb/src/test/java/tv/hd3g/ffprobejaxb/FFprobeJAXBTest.java +++ b/ffprobejaxb/src/test/java/tv/hd3g/ffprobejaxb/FFprobeJAXBTest.java @@ -11,156 +11,34 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * - * Copyright (C) hdsdi3g for hd3g.tv 2020 + * Copyright (C) hdsdi3g for hd3g.tv 2024 * */ package tv.hd3g.ffprobejaxb; -import static java.nio.charset.StandardCharsets.UTF_8; -import static java.util.stream.Collectors.toUnmodifiableList; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; -import java.io.File; -import java.io.IOException; import java.io.UncheckedIOException; -import java.util.concurrent.LinkedBlockingQueue; -import org.apache.commons.io.FileUtils; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; class FFprobeJAXBTest { - private static final String OUT0_SUMMARY = "QuickTime / MOV, 00:00:50, 465 MB, video: prores 720×576 Standard @ 50 fps [76 Mbps] yuv422p10le/colRange:TV/colSpace:SMPTE170M/colTransfer:BT709/colPrimaries:BT470BG (2500 frms) default stream, audio: pcm_s16le stereo @ 48000 Hz [1536 kbps] default stream, data: tmcd (Time Code Media Handler) 00:00:00:00"; - static String out0; - static String out1; - static String outNope; - static String outErr; - - @BeforeAll - static void load() throws IOException { - out0 = FileUtils.readFileToString(new File("examples/out0.xml"), UTF_8); - out1 = FileUtils.readFileToString(new File("examples/out1.xml"), UTF_8); - outNope = FileUtils.readFileToString(new File("examples/outNope.xml"), UTF_8); - outErr = FileUtils.readFileToString(new File("examples/outErr.txt"), UTF_8); - } - - LinkedBlockingQueue warns; - FFprobeJAXB ffprobeJAXB; - - @BeforeEach - void init() throws IOException { - warns = new LinkedBlockingQueue<>(); - ffprobeJAXB = new FFprobeJAXB(out0, warns::add); - } - - @AfterEach - void close() { - assertTrue(warns.isEmpty()); - } - - @Test - void testBadXml() throws IOException { - ffprobeJAXB = new FFprobeJAXB(outNope, warns::add); - assertThrows(NumberFormatException.class, () -> new FFprobeJAXB(out1, warns::add)); - assertThrows(UncheckedIOException.class, () -> new FFprobeJAXB(outErr, warns::add)); - } - - @Test - void testGetXmlContent() { - assertEquals(out0, ffprobeJAXB.getXmlContent()); - } - - @Test - void testGetChapters() { - assertTrue(ffprobeJAXB.getChapters().isEmpty()); - } - - @Test - void testGetStreams() { - assertEquals(3, ffprobeJAXB.getStreams().size()); - assertEquals("video", ffprobeJAXB.getStreams().get(0).getCodecType()); - assertEquals("audio", ffprobeJAXB.getStreams().get(1).getCodecType()); - assertEquals("data", ffprobeJAXB.getStreams().get(2).getCodecType()); - } - - @Test - void testGetFormat() { - final var f = ffprobeJAXB.getFormat(); - assertNotNull(f); - assertEquals("QuickTime / MOV", f.getFormatLongName()); - } - - @Test - void testGetError() { - assertNull(ffprobeJAXB.getError()); - } - - @Test - void testGetProgramVersion() { - assertNull(ffprobeJAXB.getProgramVersion()); - } - - @Test - void testGetLibraryVersions() { - assertTrue(ffprobeJAXB.getLibraryVersions().isEmpty()); - } - - @Test - void testGetPixelFormats() { - assertTrue(ffprobeJAXB.getPixelFormats().isEmpty()); - } - - @Test - void testGetPackets() { - assertTrue(ffprobeJAXB.getPackets().isEmpty()); - } - - @Test - void testGetFrames() { - assertTrue(ffprobeJAXB.getFrames().isEmpty()); - } - @Test - void testGetPacketsAndFrames() { - assertTrue(ffprobeJAXB.getPacketsAndFrames().isEmpty()); + void testFoolishXML() { + assertThrows(UncheckedIOException.class, + () -> FFprobeJAXB.load(">not an XML<")); } @Test - void testGetPrograms() { - assertTrue(ffprobeJAXB.getPrograms().isEmpty()); + void testBuggyFFprobeXML() { + assertThrows(IllegalArgumentException.class, + () -> FFprobeJAXB.load( + """ + + + + + """)); } - - @Test - void testGetVideoStreams() { - final var streams = ffprobeJAXB.getVideoStreams() - .collect(toUnmodifiableList()); - assertEquals(1, streams.size()); - assertEquals("video", streams.get(0).getCodecType()); - } - - @Test - void testGetAudiosStreams() { - final var streams = ffprobeJAXB.getAudiosStreams() - .collect(toUnmodifiableList()); - assertEquals(1, streams.size()); - assertEquals("audio", streams.get(0).getCodecType()); - } - - @Test - void testGetMediaSummary() { - assertEquals(OUT0_SUMMARY, ffprobeJAXB.getMediaSummary().toString()); - } - - @Test - void testToString() { - assertEquals(OUT0_SUMMARY, ffprobeJAXB.toString()); - } - } diff --git a/ffprobejaxb/src/test/java/tv/hd3g/ffprobejaxb/FFprobeReferenceTest.java b/ffprobejaxb/src/test/java/tv/hd3g/ffprobejaxb/FFprobeReferenceTest.java new file mode 100644 index 00000000..e976de9a --- /dev/null +++ b/ffprobejaxb/src/test/java/tv/hd3g/ffprobejaxb/FFprobeReferenceTest.java @@ -0,0 +1,309 @@ +/* + * This file is part of ffprobejaxb. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2024 + * + */ +package tv.hd3g.ffprobejaxb; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.atLeast; +import static org.mockito.Mockito.atMost; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.when; + +import java.util.List; +import java.util.Optional; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import net.datafaker.Faker; +import tv.hd3g.ffprobejaxb.data.FFProbeChapter; +import tv.hd3g.ffprobejaxb.data.FFProbeError; +import tv.hd3g.ffprobejaxb.data.FFProbeFormat; +import tv.hd3g.ffprobejaxb.data.FFProbeKeyValue; +import tv.hd3g.ffprobejaxb.data.FFProbeLibraryVersion; +import tv.hd3g.ffprobejaxb.data.FFProbePixelFormat; +import tv.hd3g.ffprobejaxb.data.FFProbeProgram; +import tv.hd3g.ffprobejaxb.data.FFProbeProgramVersion; +import tv.hd3g.ffprobejaxb.data.FFProbeStream; +import tv.hd3g.ffprobejaxb.data.FFProbeStreamDisposition; + +class FFprobeReferenceTest { + static Faker faker = net.datafaker.Faker.instance(); + + @Mock + FFProbeFormat format; + @Mock + FFProbeStream stream; + @Mock + FFProbeStream defaultStream; + @Mock + FFProbeStreamDisposition disposition; + @Mock + FFProbeStreamDisposition defaultDisposition; + + class FFprobeReferenceImpl implements FFprobeReference { + + @Override + public Optional getFormat() { + return Optional.ofNullable(format); + } + + @Override + public List getStreams() { + return List.of(stream); + } + + @Override + public String getXmlContent() { + throw new UnsupportedOperationException(); + } + + @Override + public String getXSDVersionReference() { + throw new UnsupportedOperationException(); + } + + @Override + public List getLibraryVersions() { + throw new UnsupportedOperationException(); + } + + @Override + public Optional getError() { + throw new UnsupportedOperationException(); + } + + @Override + public List getPrograms() { + throw new UnsupportedOperationException(); + } + + @Override + public Optional getProgramVersion() { + throw new UnsupportedOperationException(); + } + + @Override + public List getChapters() { + throw new UnsupportedOperationException(); + } + + @Override + public List getPixelFormats() { + throw new UnsupportedOperationException(); + } + + } + + FFprobeReferenceImpl r; + + @BeforeEach + void init() throws Exception { + MockitoAnnotations.openMocks(this).close(); + r = new FFprobeReferenceImpl(); + } + + @AfterEach + void ends() { + verifyNoMoreInteractions(format, stream, disposition, defaultStream, defaultDisposition); + } + + @Test + void testGetVideoStreams_empty() { + when(stream.codecType()).thenReturn(faker.numerify("type###")); + assertThat(r.getVideoStreams()).isEmpty(); + verify(stream, times(1)).codecType(); + } + + @Test + void testGetVideoStreams() { + when(stream.codecType()).thenReturn("video"); + final var streams = r.getVideoStreams().toList(); + assertThat(streams).isEqualTo(List.of(stream)); + verify(stream, times(1)).codecType(); + } + + @Test + void testGetAudioStreams_empty() { + when(stream.codecType()).thenReturn(faker.numerify("type###")); + assertThat(r.getAudioStreams()).isEmpty(); + verify(stream, times(1)).codecType(); + } + + @Test + void testGetAudioStreams() { + when(stream.codecType()).thenReturn("audio"); + final var streams = r.getAudioStreams().toList(); + assertThat(streams).isEqualTo(List.of(stream)); + verify(stream, times(1)).codecType(); + } + + @Test + void testGetFirstVideoStream_empty() { + when(stream.codecType()).thenReturn(faker.numerify("type###")); + assertThat(r.getFirstVideoStream()).isEmpty(); + verify(stream, times(1)).codecType(); + } + + @Nested + class GetFirstVideoStream { + + @BeforeEach + void init() { + when(stream.codecType()).thenReturn("video"); + when(stream.disposition()).thenReturn(disposition); + } + + @AfterEach + void ends() { + verify(stream, atLeast(1)).codecType(); + verify(stream, atMost(4)).disposition(); + verify(disposition, atMost(1)).attachedPic(); + verify(disposition, atMost(1)).timedThumbnails(); + verify(disposition, atMost(1)).stillImage(); + } + + @Test + void testGetFirstVideoStream_ok() { + assertThat(r.getFirstVideoStream()) + .isNotEmpty() + .contains(stream); + } + + @Test + void testGetFirstVideoStream_attached() { + when(disposition.attachedPic()).thenReturn(true); + assertThat(r.getFirstVideoStream()).isEmpty(); + } + + @Test + void testGetFirstVideoStream_timedThumbnails() { + when(disposition.timedThumbnails()).thenReturn(true); + assertThat(r.getFirstVideoStream()).isEmpty(); + } + + @Test + void testGetFirstVideoStream_stillImage() { + when(disposition.stillImage()).thenReturn(true); + assertThat(r.getFirstVideoStream()).isEmpty(); + } + + class FFprobeReferenceImplMultiStreams extends FFprobeReferenceImpl { + + @Override + public List getStreams() { + return List.of(defaultStream, stream); + } + } + + @Test + void testGetFirstVideoStream_sorted() { + r = new FFprobeReferenceImplMultiStreams(); + when(defaultStream.codecType()).thenReturn("video"); + when(defaultStream.disposition()).thenReturn(defaultDisposition); + when(defaultDisposition.asDefault()).thenReturn(true); + + assertThat(r.getFirstVideoStream()) + .isNotEmpty() + .contains(defaultStream); + + verify(disposition, atMost(1)).asDefault(); + + verify(defaultStream, atLeast(1)).codecType(); + verify(defaultStream, atLeast(1)).disposition(); + verify(defaultDisposition, atMost(1)).attachedPic(); + verify(defaultDisposition, atMost(1)).timedThumbnails(); + verify(defaultDisposition, atMost(1)).stillImage(); + verify(defaultDisposition, atMost(1)).asDefault(); + } + } + + final FFProbeKeyValue tc0 = new FFProbeKeyValue("timecode", "00:00:00:00"); + final FFProbeKeyValue tc1 = new FFProbeKeyValue("timecode", faker.numerify("##:##:##:##")); + + @Test + void testGetTimecode_empty() { + assertThat(r.getTimecode(false)).isEmpty(); + + verify(format, atLeast(1)).tags(); + verify(stream, atLeast(1)).tags(); + } + + @Test + void testGetTimecode_format() { + when(format.tags()).thenReturn(List.of(tc0)); + assertThat(r.getTimecode(false)) + .isNotEmpty() + .contains(tc0.value()); + + verify(format, atLeast(1)).tags(); + } + + @Test + void testGetTimecode_stream() { + when(stream.tags()).thenReturn(List.of(tc0)); + assertThat(r.getTimecode(false)) + .isNotEmpty() + .contains(tc0.value()); + + verify(format, atLeast(1)).tags(); + verify(stream, atLeast(1)).tags(); + } + + @Test + void testGetTimecode_format_empty() { + when(format.tags()).thenReturn(List.of(tc0)); + assertThat(r.getTimecode(true)).isEmpty(); + + verify(format, atLeast(1)).tags(); + } + + @Test + void testGetTimecode_stream_empty() { + when(stream.tags()).thenReturn(List.of(tc0)); + assertThat(r.getTimecode(true)).isEmpty(); + + verify(format, atLeast(1)).tags(); + verify(stream, atLeast(1)).tags(); + } + + @Test + void testGetTimecode_format_value() { + when(format.tags()).thenReturn(List.of(tc1)); + assertThat(r.getTimecode(false)) + .isNotEmpty() + .contains(tc1.value()); + + verify(format, atLeast(1)).tags(); + } + + @Test + void testGetTimecode_stream_value() { + when(stream.tags()).thenReturn(List.of(tc1)); + assertThat(r.getTimecode(false)) + .isNotEmpty() + .contains(tc1.value()); + + verify(format, atLeast(1)).tags(); + verify(stream, atLeast(1)).tags(); + } +} diff --git a/ffprobejaxb/src/test/java/tv/hd3g/ffprobejaxb/MediaSummaryTest.java b/ffprobejaxb/src/test/java/tv/hd3g/ffprobejaxb/MediaSummaryTest.java index 532d661b..593d2e5d 100644 --- a/ffprobejaxb/src/test/java/tv/hd3g/ffprobejaxb/MediaSummaryTest.java +++ b/ffprobejaxb/src/test/java/tv/hd3g/ffprobejaxb/MediaSummaryTest.java @@ -16,25 +16,13 @@ */ package tv.hd3g.ffprobejaxb; -import static java.nio.charset.StandardCharsets.UTF_8; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static tv.hd3g.ffprobejaxb.MediaSummary.resumeDispositions; -import java.io.File; import java.io.IOException; -import java.util.ArrayList; import java.util.List; import java.util.Optional; -import java.util.stream.IntStream; - -import org.apache.commons.io.FileUtils; -import org.ffmpeg.ffprobe.ChapterType; -import org.ffmpeg.ffprobe.ChaptersType; -import org.ffmpeg.ffprobe.FormatType; -import org.ffmpeg.ffprobe.StreamDispositionType; -import org.ffmpeg.ffprobe.StreamType; + import org.junit.jupiter.api.Test; import net.datafaker.Faker; @@ -46,30 +34,63 @@ class MediaSummaryTest { @Test void testCreate() throws IOException { - final var out0 = FileUtils.readFileToString(new File("examples/out0.xml"), UTF_8); - final var source = new FFprobeJAXB(out0, s -> { - }); + final var source = FFprobeJAXB.load( + """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + """); ms = MediaSummary.create(source); assertNotNull(ms); - assertEquals("QuickTime / MOV, 00:00:50, 465 MB", ms.format()); + assertEquals("QuickTime / MOV, 00:00:50, TCIN: 10:00:00:00, 465 MB", ms.format()); assertEquals(List.of( - "video: prores 720×576 Standard @ 50 fps [76 Mbps] yuv422p10le/colRange:TV/colSpace:SMPTE170M/colTransfer:BT709/colPrimaries:BT470BG (2500 frms) default stream", - "audio: pcm_s16le stereo @ 48000 Hz [1536 kbps] default stream", - "data: tmcd (Time Code Media Handler) 00:00:00:00"), + "video: prores 720×576 Standard @ 50 fps [76 Mbps] yuv422p10le/colRange:TV/colSpace:SMPTE170M/colTransfer:BT709/colPrimaries:BT470BG default", + "audio: pcm_s16le stereo @ 48000 Hz [1536 kbps] default", + "data: tmcd (Time Code Media Handler)"), ms.streams()); } @Test void testCreate_smallFile() throws IOException { - final var source = new FFprobeJAXB(""" - - - - - """, - s -> { - }); + final var source = FFprobeJAXB.load( + """ + + + + + """); ms = MediaSummary.create(source); assertNotNull(ms); @@ -78,13 +99,12 @@ void testCreate_smallFile() throws IOException { @Test void testCreate_bigFile() throws IOException { - final var source = new FFprobeJAXB(""" + final var source = FFprobeJAXB.load(""" - """, s -> { - }); + """); ms = MediaSummary.create(source); assertNotNull(ms); @@ -93,29 +113,25 @@ void testCreate_bigFile() throws IOException { @Test void testCreate_programs_chapters() throws IOException { - final var source = new FFprobeJAXB(""" - - - """, s -> { - }); - final var programs = faker.random().nextInt(2, 1000); - final var format = new FormatType(); - format.setNbPrograms(programs); - format.setDuration(1f); - format.setSize(1l); - source.probeResult.setFormat(format); - - final var chapters = new ChaptersType(); - final var chapCount = faker.random().nextInt(1, 1000); - IntStream.range(0, chapCount) - .forEach(i -> chapters.getChapter().add(new ChapterType())); - source.probeResult.setChapters(chapters); - + final var source = FFprobeJAXB.load( + """ + + + + + + + + + + + + + """); ms = MediaSummary.create(source); assertNotNull(ms); - assertEquals("null, 00:00:01, 1 bytes, " + programs + " program(s), " + chapCount + " chapter(s)", - ms.format()); + assertEquals("null, 00:00:05, 2 bytes, 9 programs, 1 chapter, 2 kbps", ms.format()); assertEquals(List.of(), ms.streams()); } @@ -127,137 +143,276 @@ void testGetValue() { assertEquals(Optional.ofNullable(value), MediaSummary.getValue(value)); } - @Test - void testAddDisposition_null() { - final var entries = new ArrayList(); - resumeDispositions(null).forEach(entries::add); - assertTrue(entries.isEmpty()); - } - - @Test - void testAddDisposition_default_noPic() { - final var s = new StreamDispositionType(); - s.setDefault(1); - s.setAttachedPic(0); - final var entries = new ArrayList(); - resumeDispositions(s).forEach(entries::add); - assertEquals(List.of("default stream"), entries); - } - - @Test - void testAddDisposition_NoDefault_isPic() { - final var s = new StreamDispositionType(); - s.setDefault(0); - final var entries = new ArrayList(); - resumeDispositions(s).forEach(entries::add); - assertEquals(List.of(), entries); - - entries.clear(); - s.setAttachedPic(1); - resumeDispositions(s).forEach(entries::add); - assertEquals(List.of("attached picture"), entries); - } - @Test void testGetAudioSummary() { - final var s = new StreamType(); - s.setCodecType("type"); - s.setCodecName("name"); - s.setProfile("profile"); - s.setSampleFmt("sample"); - s.setChannels(8); - s.setChannelLayout("layout"); - s.setSampleRate(48000); - s.setBitRate(1_000_000); + var s = FFprobeJAXB.load( + """ + + + + + + + """) + .getStreams().stream().findFirst().orElseThrow(); + assertEquals("type: name profile sample layout (8 channels) @ 48000 Hz [1000 kbps]", MediaSummary.getAudioSummary(s)); - s.setSampleFmt(null); + s = FFprobeJAXB.load( + """ + + + + + + + """) + .getStreams().stream().findFirst().orElseThrow(); + assertEquals("type: name profile layout (8 channels) @ 48000 Hz [1000 kbps]", MediaSummary.getAudioSummary(s)); - s.setSampleFmt("fltp"); + s = FFprobeJAXB.load( + """ + + + + + + + """) + .getStreams().stream().findFirst().orElseThrow(); + assertEquals("type: name profile layout (8 channels) @ 48000 Hz [1000 kbps]", MediaSummary.getAudioSummary(s)); - s.setChannelLayout(null); + s = FFprobeJAXB.load( + """ + + + + + + + """) + .getStreams().stream().findFirst().orElseThrow(); + assertEquals("type: name profile 8 channels @ 48000 Hz [1000 kbps]", MediaSummary.getAudioSummary(s)); - s.setChannels(2); - s.setChannelLayout("layout"); + s = FFprobeJAXB.load( + """ + + + + + + + """) + .getStreams().stream().findFirst().orElseThrow(); + assertEquals("type: name profile layout @ 48000 Hz [1000 kbps]", MediaSummary.getAudioSummary(s)); - s.setChannelLayout(null); + s = FFprobeJAXB.load( + """ + + + + + + + """) + .getStreams().stream().findFirst().orElseThrow(); + assertEquals("type: name profile 2 channels @ 48000 Hz [1000 kbps]", MediaSummary.getAudioSummary(s)); - s.setChannels(1); + s = FFprobeJAXB.load( + """ + + + + + + + """) + .getStreams().stream().findFirst().orElseThrow(); + assertEquals("type: name profile mono @ 48000 Hz [1000 kbps]", MediaSummary.getAudioSummary(s)); } @Test void testGetVideoSummary() { - final var s = new StreamType(); - s.setCodecType("type"); - s.setCodecName("name"); - s.setWidth(2); - s.setHeight(3); - s.setHasBFrames(1); - s.setProfile("profile"); - s.setLevel(10); - s.setAvgFrameRate("25"); - s.setNbFrames(100); - - s.setBitRate(1_000_000); + var s = FFprobeJAXB.load( + """ + + + + + + + """) + .getStreams().stream().findFirst().orElseThrow(); + assertEquals("type: name 2×3 profile/L10 with B frames @ 25 fps [1000 kbps] (100 frms)", MediaSummary.getVideoSummary(s)); - s.setProfile(null); - s.setLevel(0); + s = FFprobeJAXB.load( + """ + + + + + + + """) + .getStreams().stream().findFirst().orElseThrow(); + assertEquals("type: name 2×3 with B frames @ 25 fps [1000 kbps] (100 frms)", MediaSummary.getVideoSummary(s)); - s.setLevel(10); + s = FFprobeJAXB.load( + """ + + + + + + + """) + .getStreams().stream().findFirst().orElseThrow(); + assertEquals("type: name 2×3 L10 with B frames @ 25 fps [1000 kbps] (100 frms)", MediaSummary.getVideoSummary(s)); - s.setProfile("0"); + s = FFprobeJAXB.load( + """ + + + + + + + """) + .getStreams().stream().findFirst().orElseThrow(); + assertEquals("type: name 2×3 L10 with B frames @ 25 fps [1000 kbps] (100 frms)", MediaSummary.getVideoSummary(s)); - s.setProfile("0"); - s.setLevel(0); + s = FFprobeJAXB.load( + """ + + + + + + + """) + .getStreams().stream().findFirst().orElseThrow(); + assertEquals("type: name 2×3 with B frames @ 25 fps [1000 kbps] (100 frms)", MediaSummary.getVideoSummary(s)); } @Test void testComputePixelsFormat() { - final var s = new StreamType(); - s.setPixFmt("pix"); - s.setColorRange("range"); - s.setColorSpace("space"); - s.setColorTransfer("transfert"); - s.setColorPrimaries("primaries"); + var s = FFprobeJAXB.load( + """ + + + + + + + """) + .getStreams().stream().findFirst().orElseThrow(); + assertEquals("pix/colRange:RANGE/colSpace:SPACE/colTransfer:TRANSFERT/colPrimaries:PRIMARIES", MediaSummary.computePixelsFormat(s)); - s.setColorPrimaries(null); + s = FFprobeJAXB.load( + """ + + + + + + + """) + .getStreams().stream().findFirst().orElseThrow(); + assertEquals("pix/colRange:RANGE/colSpace:SPACE/colTransfer:TRANSFERT", MediaSummary.computePixelsFormat(s)); - s.setColorTransfer(null); + + s = FFprobeJAXB.load( + """ + + + + + + + """) + .getStreams().stream().findFirst().orElseThrow(); + assertEquals("pix/colRange:RANGE/colSpace:SPACE", MediaSummary.computePixelsFormat(s)); - s.setColorSpace(null); + + s = FFprobeJAXB.load( + """ + + + + + + + """) + .getStreams().stream().findFirst().orElseThrow(); + assertEquals("pix/colRange:RANGE", MediaSummary.computePixelsFormat(s)); - s.setColorRange(null); + + s = FFprobeJAXB.load( + """ + + + + + + + """) + .getStreams().stream().findFirst().orElseThrow(); + assertEquals("pix", MediaSummary.computePixelsFormat(s)); - s.setPixFmt(null); + + s = FFprobeJAXB.load( + """ + + + + + + + """) + .getStreams().stream().findFirst().orElseThrow(); + assertEquals("", MediaSummary.computePixelsFormat(s)); } @@ -288,21 +443,59 @@ void testAddZeros() { @Test void testComputeDuration() { - final var format = new FormatType(); + var format = FFprobeJAXB.load( + """ + + + + + """) + .getFormat().orElseThrow(); - format.setDuration(1f); assertEquals("00:00:01", MediaSummary.computeDuration(format)); - format.setDuration(60f); + format = FFprobeJAXB.load( + """ + + + + + """) + .getFormat().orElseThrow(); + assertEquals("00:01:00", MediaSummary.computeDuration(format)); - format.setDuration(3600f); + format = FFprobeJAXB.load( + """ + + + + + """) + .getFormat().orElseThrow(); + assertEquals("01:00:00", MediaSummary.computeDuration(format)); - format.setDuration(36061f); + format = FFprobeJAXB.load( + """ + + + + + """) + .getFormat().orElseThrow(); + assertEquals("10:01:01", MediaSummary.computeDuration(format)); - format.setDuration(0.5f); + format = FFprobeJAXB.load( + """ + + + + + """) + .getFormat().orElseThrow(); + assertEquals("00:00:00", MediaSummary.computeDuration(format)); } @@ -334,19 +527,57 @@ void testToString_Sort() { @Test void testNoBitRate() throws IOException { - final var out0 = FileUtils.readFileToString(new File("examples/out2-nobitrate.xml"), UTF_8); - final var source = new FFprobeJAXB(out0, s -> { - }); + final var source = FFprobeJAXB.load( + """ + + + + + + + + + + + + + + + + """); ms = MediaSummary.create(source); assertNotNull(ms); assertEquals("Matroska / WebM, 00:01:00, 2 MB, 415 kbps", ms.format()); assertEquals(List.of( - "video: vp9 480×480 Profile 0 @ 29.97 fps yuv420p/colRange:TV/BT709 default stream", - "audio: opus mono @ 48000 Hz default stream"), + "video: vp9 480×480 Profile 0 @ 29.97 fps yuv420p/colRange:TV/BT709 default", + "audio: opus mono @ 48000 Hz default"), ms.streams()); } + @Test + void testEmptyTC() throws IOException { + final var source = FFprobeJAXB.load( + """ + + + + + + + + + + + + """); + ms = MediaSummary.create(source); + assertNotNull(ms); + + assertEquals("QuickTime / MOV, 00:00:50, 465 MB, 78 Mbps", ms.format()); + assertEquals(List.of("data: tmcd"), ms.streams()); + } + @Test void testGetLevelTag() { final var level = faker.random().nextInt(1000, 100000); @@ -361,5 +592,4 @@ void testGetLevelTag() { assertEquals("3.1", MediaSummary.getLevelTag("hevc", 93)); assertEquals("6.1", MediaSummary.getLevelTag("av1", 61)); } - } diff --git a/ffprobejaxb/src/test/java/tv/hd3g/ffprobejaxb/data/FFProbeStreamDispositionTest.java b/ffprobejaxb/src/test/java/tv/hd3g/ffprobejaxb/data/FFProbeStreamDispositionTest.java new file mode 100644 index 00000000..37ee71c2 --- /dev/null +++ b/ffprobejaxb/src/test/java/tv/hd3g/ffprobejaxb/data/FFProbeStreamDispositionTest.java @@ -0,0 +1,74 @@ +/* + * This file is part of ffprobejaxb. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * Copyright (C) hdsdi3g for hd3g.tv 2024 + * + */ +package tv.hd3g.ffprobejaxb.data; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; + +import org.junit.jupiter.api.Test; + +class FFProbeStreamDispositionTest { + + FFProbeStreamDisposition d; + + @Test + void test() { + d = FFProbeStreamDisposition.getByNames("default"); + assertNotNull(d); + assertTrue(d.asDefault()); + assertFalse(d.forced()); + assertThat(d.resumeDispositions().toList()).hasSameElementsAs(List.of("default")); + + d = FFProbeStreamDisposition.getByNames("asdefault"); + assertNotNull(d); + assertTrue(d.asDefault()); + assertThat(d.resumeDispositions().toList()).hasSameElementsAs(List.of("default")); + + d = FFProbeStreamDisposition.getByNames("asDefault"); + assertNotNull(d); + assertTrue(d.asDefault()); + assertThat(d.resumeDispositions().toList()).hasSameElementsAs(List.of("default")); + + d = FFProbeStreamDisposition.getByNames("default", "forced"); + assertNotNull(d); + assertTrue(d.asDefault()); + assertTrue(d.forced()); + assertThat(d.resumeDispositions().toList()).hasSameElementsAs(List.of("default", "forced")); + + d = FFProbeStreamDisposition.getByNames("hearingImpaired"); + assertNotNull(d); + assertFalse(d.asDefault()); + assertTrue(d.hearingImpaired()); + assertThat(d.resumeDispositions().toList()).hasSameElementsAs(List.of("hearing impaired")); + + d = FFProbeStreamDisposition.getByNames("hearingimpaired"); + assertNotNull(d); + assertFalse(d.asDefault()); + assertTrue(d.hearingImpaired()); + assertThat(d.resumeDispositions().toList()).hasSameElementsAs(List.of("hearing impaired")); + + d = FFProbeStreamDisposition.getByNames("hearing_impaired"); + assertNotNull(d); + assertFalse(d.asDefault()); + assertTrue(d.hearingImpaired()); + assertThat(d.resumeDispositions().toList()).hasSameElementsAs(List.of("hearing impaired")); + } +} diff --git a/ffprobejaxb/src/test/resources/logback-test.xml b/ffprobejaxb/src/test/resources/logback-test.xml new file mode 100644 index 00000000..9fb45739 --- /dev/null +++ b/ffprobejaxb/src/test/resources/logback-test.xml @@ -0,0 +1,40 @@ + + + + + System.out + + + %-5level %msg%n + + + + WARN + DENY + + + ERROR + DENY + + + + System.err + + + %-5level %msg%n + + + + WARN + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-ffv1.mov-2.8.22.xml b/ffprobejaxb/src/test/resources/test-ffv1.mov-2.8.22.xml new file mode 100644 index 00000000..4447d0c1 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-ffv1.mov-2.8.22.xml @@ -0,0 +1,1318 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-ffv1.mov-3.4.13.xml b/ffprobejaxb/src/test/resources/test-ffv1.mov-3.4.13.xml new file mode 100644 index 00000000..ebda6af7 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-ffv1.mov-3.4.13.xml @@ -0,0 +1,1468 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-ffv1.mov-4.1.11.xml b/ffprobejaxb/src/test/resources/test-ffv1.mov-4.1.11.xml new file mode 100644 index 00000000..ec00a91e --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-ffv1.mov-4.1.11.xml @@ -0,0 +1,1468 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-ffv1.mov-4.2.9.xml b/ffprobejaxb/src/test/resources/test-ffv1.mov-4.2.9.xml new file mode 100644 index 00000000..470e5ac0 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-ffv1.mov-4.2.9.xml @@ -0,0 +1,1520 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-ffv1.mov-4.3.6.xml b/ffprobejaxb/src/test/resources/test-ffv1.mov-4.3.6.xml new file mode 100644 index 00000000..14a07012 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-ffv1.mov-4.3.6.xml @@ -0,0 +1,1539 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-ffv1.mov-4.4.4.xml b/ffprobejaxb/src/test/resources/test-ffv1.mov-4.4.4.xml new file mode 100644 index 00000000..a0e1bcd9 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-ffv1.mov-4.4.4.xml @@ -0,0 +1,1557 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-ffv1.mov-5.0.3.xml b/ffprobejaxb/src/test/resources/test-ffv1.mov-5.0.3.xml new file mode 100644 index 00000000..b7e2f208 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-ffv1.mov-5.0.3.xml @@ -0,0 +1,1631 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-ffv1.mov-5.1.3.xml b/ffprobejaxb/src/test/resources/test-ffv1.mov-5.1.3.xml new file mode 100644 index 00000000..afc92d59 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-ffv1.mov-5.1.3.xml @@ -0,0 +1,1631 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-ffv1.mov-5.1.4.xml b/ffprobejaxb/src/test/resources/test-ffv1.mov-5.1.4.xml new file mode 100644 index 00000000..afeef942 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-ffv1.mov-5.1.4.xml @@ -0,0 +1,1631 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-ffv1.mov-6.0.xml b/ffprobejaxb/src/test/resources/test-ffv1.mov-6.0.xml new file mode 100644 index 00000000..e5a17754 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-ffv1.mov-6.0.xml @@ -0,0 +1,1764 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-ffv1.mov-6.1-dev.xml b/ffprobejaxb/src/test/resources/test-ffv1.mov-6.1-dev.xml new file mode 100644 index 00000000..4174524d --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-ffv1.mov-6.1-dev.xml @@ -0,0 +1,1764 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-ffv1.mov-6.1.1.xml b/ffprobejaxb/src/test/resources/test-ffv1.mov-6.1.1.xml new file mode 100644 index 00000000..24835f32 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-ffv1.mov-6.1.1.xml @@ -0,0 +1,1820 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-ffv1.mov-6.1.xml b/ffprobejaxb/src/test/resources/test-ffv1.mov-6.1.xml new file mode 100644 index 00000000..24835f32 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-ffv1.mov-6.1.xml @@ -0,0 +1,1820 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-ffv1.mov-6.2-dev.xml b/ffprobejaxb/src/test/resources/test-ffv1.mov-6.2-dev.xml new file mode 100644 index 00000000..480e902a --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-ffv1.mov-6.2-dev.xml @@ -0,0 +1,1820 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-mpeg2.ts-2.8.22.xml b/ffprobejaxb/src/test/resources/test-mpeg2.ts-2.8.22.xml new file mode 100644 index 00000000..45b8ea68 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-mpeg2.ts-2.8.22.xml @@ -0,0 +1,1322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-mpeg2.ts-3.4.13.xml b/ffprobejaxb/src/test/resources/test-mpeg2.ts-3.4.13.xml new file mode 100644 index 00000000..161bebd8 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-mpeg2.ts-3.4.13.xml @@ -0,0 +1,1472 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-mpeg2.ts-4.1.11.xml b/ffprobejaxb/src/test/resources/test-mpeg2.ts-4.1.11.xml new file mode 100644 index 00000000..31a45131 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-mpeg2.ts-4.1.11.xml @@ -0,0 +1,1472 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-mpeg2.ts-4.2.9.xml b/ffprobejaxb/src/test/resources/test-mpeg2.ts-4.2.9.xml new file mode 100644 index 00000000..fbfdc5bd --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-mpeg2.ts-4.2.9.xml @@ -0,0 +1,1524 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-mpeg2.ts-4.3.6.xml b/ffprobejaxb/src/test/resources/test-mpeg2.ts-4.3.6.xml new file mode 100644 index 00000000..e68d5638 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-mpeg2.ts-4.3.6.xml @@ -0,0 +1,1549 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-mpeg2.ts-4.4.4.xml b/ffprobejaxb/src/test/resources/test-mpeg2.ts-4.4.4.xml new file mode 100644 index 00000000..30493895 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-mpeg2.ts-4.4.4.xml @@ -0,0 +1,1565 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-mpeg2.ts-5.0.3.xml b/ffprobejaxb/src/test/resources/test-mpeg2.ts-5.0.3.xml new file mode 100644 index 00000000..93c645d7 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-mpeg2.ts-5.0.3.xml @@ -0,0 +1,1639 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-mpeg2.ts-5.1.3.xml b/ffprobejaxb/src/test/resources/test-mpeg2.ts-5.1.3.xml new file mode 100644 index 00000000..cc01a717 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-mpeg2.ts-5.1.3.xml @@ -0,0 +1,1639 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-mpeg2.ts-5.1.4.xml b/ffprobejaxb/src/test/resources/test-mpeg2.ts-5.1.4.xml new file mode 100644 index 00000000..619ea218 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-mpeg2.ts-5.1.4.xml @@ -0,0 +1,1639 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-mpeg2.ts-6.0.xml b/ffprobejaxb/src/test/resources/test-mpeg2.ts-6.0.xml new file mode 100644 index 00000000..b58721e3 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-mpeg2.ts-6.0.xml @@ -0,0 +1,1772 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-mpeg2.ts-6.1-dev.xml b/ffprobejaxb/src/test/resources/test-mpeg2.ts-6.1-dev.xml new file mode 100644 index 00000000..e53e8792 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-mpeg2.ts-6.1-dev.xml @@ -0,0 +1,1772 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-mpeg2.ts-6.1.1.xml b/ffprobejaxb/src/test/resources/test-mpeg2.ts-6.1.1.xml new file mode 100644 index 00000000..d0d87958 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-mpeg2.ts-6.1.1.xml @@ -0,0 +1,1838 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-mpeg2.ts-6.1.xml b/ffprobejaxb/src/test/resources/test-mpeg2.ts-6.1.xml new file mode 100644 index 00000000..d0d87958 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-mpeg2.ts-6.1.xml @@ -0,0 +1,1838 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-mpeg2.ts-6.2-dev.xml b/ffprobejaxb/src/test/resources/test-mpeg2.ts-6.2-dev.xml new file mode 100644 index 00000000..d23ce744 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-mpeg2.ts-6.2-dev.xml @@ -0,0 +1,1838 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-vp8.mkv-2.8.22.xml b/ffprobejaxb/src/test/resources/test-vp8.mkv-2.8.22.xml new file mode 100644 index 00000000..5a67032a --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-vp8.mkv-2.8.22.xml @@ -0,0 +1,1321 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-vp8.mkv-3.4.13.xml b/ffprobejaxb/src/test/resources/test-vp8.mkv-3.4.13.xml new file mode 100644 index 00000000..7f5c062e --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-vp8.mkv-3.4.13.xml @@ -0,0 +1,1471 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-vp8.mkv-4.1.11.xml b/ffprobejaxb/src/test/resources/test-vp8.mkv-4.1.11.xml new file mode 100644 index 00000000..9154c446 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-vp8.mkv-4.1.11.xml @@ -0,0 +1,1471 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-vp8.mkv-4.2.9.xml b/ffprobejaxb/src/test/resources/test-vp8.mkv-4.2.9.xml new file mode 100644 index 00000000..a029aa02 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-vp8.mkv-4.2.9.xml @@ -0,0 +1,1523 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-vp8.mkv-4.3.6.xml b/ffprobejaxb/src/test/resources/test-vp8.mkv-4.3.6.xml new file mode 100644 index 00000000..cd69395a --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-vp8.mkv-4.3.6.xml @@ -0,0 +1,1542 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-vp8.mkv-4.4.4.xml b/ffprobejaxb/src/test/resources/test-vp8.mkv-4.4.4.xml new file mode 100644 index 00000000..9423355a --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-vp8.mkv-4.4.4.xml @@ -0,0 +1,1558 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-vp8.mkv-5.0.3.xml b/ffprobejaxb/src/test/resources/test-vp8.mkv-5.0.3.xml new file mode 100644 index 00000000..a03f4690 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-vp8.mkv-5.0.3.xml @@ -0,0 +1,1632 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-vp8.mkv-5.1.3.xml b/ffprobejaxb/src/test/resources/test-vp8.mkv-5.1.3.xml new file mode 100644 index 00000000..320f73d0 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-vp8.mkv-5.1.3.xml @@ -0,0 +1,1632 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-vp8.mkv-5.1.4.xml b/ffprobejaxb/src/test/resources/test-vp8.mkv-5.1.4.xml new file mode 100644 index 00000000..0fdba6bf --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-vp8.mkv-5.1.4.xml @@ -0,0 +1,1632 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-vp8.mkv-6.0.xml b/ffprobejaxb/src/test/resources/test-vp8.mkv-6.0.xml new file mode 100644 index 00000000..f6e0ca2b --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-vp8.mkv-6.0.xml @@ -0,0 +1,1765 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-vp8.mkv-6.1-dev.xml b/ffprobejaxb/src/test/resources/test-vp8.mkv-6.1-dev.xml new file mode 100644 index 00000000..7bd575c8 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-vp8.mkv-6.1-dev.xml @@ -0,0 +1,1765 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-vp8.mkv-6.1.1.xml b/ffprobejaxb/src/test/resources/test-vp8.mkv-6.1.1.xml new file mode 100644 index 00000000..2f9b9038 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-vp8.mkv-6.1.1.xml @@ -0,0 +1,1823 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-vp8.mkv-6.1.xml b/ffprobejaxb/src/test/resources/test-vp8.mkv-6.1.xml new file mode 100644 index 00000000..2f9b9038 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-vp8.mkv-6.1.xml @@ -0,0 +1,1823 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ffprobejaxb/src/test/resources/test-vp8.mkv-6.2-dev.xml b/ffprobejaxb/src/test/resources/test-vp8.mkv-6.2-dev.xml new file mode 100644 index 00000000..e34dbef9 --- /dev/null +++ b/ffprobejaxb/src/test/resources/test-vp8.mkv-6.2-dev.xml @@ -0,0 +1,1823 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pom.xml b/pom.xml index cef07b8a..e01538e3 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,6 @@ - + 4.0.0 starter-medialib @@ -14,7 +15,7 @@ tv.hd3g.commons starter 19.0.0 - + @@ -36,6 +37,11 @@ lombok provided + + org.assertj + assertj-core + test +