Adds some extra abstraction to streams

This commit is contained in:
Kristian Knarvik 2020-05-11 17:51:49 +02:00
parent 58dcb7fd35
commit 2404d85468
5 changed files with 34 additions and 33 deletions

View File

@ -0,0 +1,25 @@
package net.knarcraft.ffmpegconverter.streams;
/**
* An object representation of a stream in a media file
*/
public abstract class AbstractStream implements StreamObject {
int absoluteIndex;
int relativeIndex;
String codecName;
@Override
public String getCodecName() {
return this.codecName;
}
@Override
public int getAbsoluteIndex() {
return this.absoluteIndex;
}
@Override
public int getRelativeIndex() {
return this.relativeIndex;
}
}

View File

@ -3,7 +3,7 @@ package net.knarcraft.ffmpegconverter.streams;
/** /**
* This class represents an ffmpeg audio stream * This class represents an ffmpeg audio stream
*/ */
public class AudioStream extends StreamObject { public class AudioStream extends AbstractStream implements StreamObject {
private final String language; private final String language;
private final int channels; private final int channels;
private final String title; private final String title;
@ -19,7 +19,6 @@ public class AudioStream extends StreamObject {
* @param channels <p>The number of channels for the audio stream.</p> * @param channels <p>The number of channels for the audio stream.</p>
*/ */
public AudioStream(String codecName, int absoluteIndex, int relativeIndex, String language, String title, int channels) { public AudioStream(String codecName, int absoluteIndex, int relativeIndex, String language, String title, int channels) {
this.codecType = "audio";
this.codecName = codecName; this.codecName = codecName;
this.absoluteIndex = absoluteIndex; this.absoluteIndex = absoluteIndex;
this.language = language; this.language = language;

View File

@ -1,47 +1,26 @@
package net.knarcraft.ffmpegconverter.streams; package net.knarcraft.ffmpegconverter.streams;
/** public interface StreamObject {
* An object representation of a stream in a media file
*/
public abstract class StreamObject {
int absoluteIndex;
int relativeIndex;
String codecName;
String codecType;
/**
* Gets the type of the stream codec (video/audio/subtitle)
*
* @return <p>Codec type.</p>
*/
public String getCodecType() {
return this.codecType;
}
/** /**
* Gets the name of the stream codec * Gets the name of the stream codec
* *
* @return <p>Codec name.</p> * @return <p>Codec name.</p>
*/ */
String getCodecName() { String getCodecName();
return this.codecName;
}
/** /**
* Gets the absolute index of a stream object * Gets the absolute index of a stream object
* *
* @return <p>Absolute index.</p> * @return <p>Absolute index.</p>
*/ */
public int getAbsoluteIndex() { int getAbsoluteIndex();
return this.absoluteIndex;
}
/** /**
* Gets the relative index of a stream object (kth element of codec type) * Gets the relative index of a stream object (kth element of codec type)
* *
* @return <p>Relative index.</p> * @return <p>Relative index.</p>
*/ */
public int getRelativeIndex() { int getRelativeIndex();
return this.relativeIndex;
} }
}

View File

@ -3,7 +3,7 @@ package net.knarcraft.ffmpegconverter.streams;
/** /**
* An object representation of a subtitle stream in a media file * An object representation of a subtitle stream in a media file
*/ */
public class SubtitleStream extends StreamObject { public class SubtitleStream extends AbstractStream implements StreamObject {
final private String language; final private String language;
final private String title; final private String title;
final private String file; final private String file;
@ -22,7 +22,6 @@ public class SubtitleStream extends StreamObject {
*/ */
public SubtitleStream(String codecName, int absoluteIndex, int relativeIndex, String language, String title, public SubtitleStream(String codecName, int absoluteIndex, int relativeIndex, String language, String title,
String file) { String file) {
this.codecType = "subtitle";
this.codecName = codecName; this.codecName = codecName;
this.absoluteIndex = absoluteIndex; this.absoluteIndex = absoluteIndex;
this.language = language; this.language = language;

View File

@ -3,7 +3,7 @@ package net.knarcraft.ffmpegconverter.streams;
/** /**
* An object representation of a video stream in a media file * An object representation of a video stream in a media file
*/ */
public class VideoStream extends StreamObject { public class VideoStream extends AbstractStream implements StreamObject {
private final int width; private final int width;
private final int height; private final int height;
@ -17,7 +17,6 @@ public class VideoStream extends StreamObject {
* @param height <p>The height of the video stream.</p> * @param height <p>The height of the video stream.</p>
*/ */
public VideoStream(String codec, int absoluteIndex, int relativeIndex, int width, int height) { public VideoStream(String codec, int absoluteIndex, int relativeIndex, int width, int height) {
this.codecType = "video";
this.codecName = codec; this.codecName = codec;
this.absoluteIndex = absoluteIndex; this.absoluteIndex = absoluteIndex;
this.relativeIndex = relativeIndex; this.relativeIndex = relativeIndex;