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}