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