001package net.bramp.ffmpeg.adapter;
002
003import com.google.gson.JsonDeserializationContext;
004import com.google.gson.JsonDeserializer;
005import com.google.gson.JsonElement;
006import com.google.gson.JsonObject;
007import com.google.gson.JsonParseException;
008import java.lang.reflect.Type;
009import net.bramp.ffmpeg.probe.FFmpegFrame;
010import net.bramp.ffmpeg.probe.FFmpegFrameOrPacket;
011import net.bramp.ffmpeg.probe.FFmpegPacket;
012
013/** Gson type adapter that deserializes FFmpeg packets and frames from JSON. */
014public class FFmpegPacketsAndFramesAdapter implements JsonDeserializer<FFmpegFrameOrPacket> {
015  @Override
016  public FFmpegFrameOrPacket deserialize(
017      JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext)
018      throws JsonParseException {
019    if (jsonElement instanceof JsonObject) {
020      final String objectType = ((JsonObject) jsonElement).get("type").getAsString();
021
022      if (objectType.equals("packet")) {
023        return jsonDeserializationContext.deserialize(jsonElement, FFmpegPacket.class);
024      } else {
025        return jsonDeserializationContext.deserialize(jsonElement, FFmpegFrame.class);
026      }
027    }
028
029    return null;
030  }
031}