in common/src/main/scala/com/theguardian/multimedia/archivehunter/common/cmn_models/MediaMetadataMapConverters.scala [36:94]
protected def mappingToStreamDisposition(value:Map[String,Boolean]) =
StreamDisposition(value.getOrElse("comment", false),value.getOrElse("forced", false),value.getOrElse("lyrics", false),
value.getOrElse("default", false),value.getOrElse("dub", false),value.getOrElse("original", false),
value.getOrElse("karaoke", false),value.getOrElse("clean_effects", false),value.getOrElse("attached_pic", false),
value.getOrElse("visual_impaired", false),value.getOrElse("hearing_impaired", false))
protected def mappingToStreamSeq(value:Seq[Map[String,AnyVal]]) =
value.map(entry=>
MediaStream(
safeMap[String](entry.get("profile")),
safeMap[String](entry.get("codec_type")),
safeMap[Int](entry.get("coded_width")),
safeMap[Int](entry.get("coded_height")),
safeMap[Double](entry.get("bit_rate")),
safeMap[String](entry.get("codec_name")),
safeMap[Double](entry.get("duration")),
safeMap[String](entry.get("codec_time_base")),
entry("index").asInstanceOf[Int],
safeMap[Int](entry.get("width")),
safeMap[String](entry.get("pix_fmt")),
safeMap[Map[String,String]](entry.get("tags")),
safeMap[String](entry.get("r_frame_rate")),
safeMap[Double](entry.get("start_time")),
safeMap[String](entry.get("time_base")),
safeMap[String](entry.get("codec_tag_string")),
None, //this field is causing ClassCastException(null) errors
safeMap[String](entry.get("codec_long_name")),
safeMap[String](entry.get("display_aspect_ratio")),
safeMap[Int](entry.get("height")),
safeMap[String](entry.get("avg_frame_rate")),
safeMap[Int](entry.get("level")),
safeMap[Int](entry.get("bits_per_raw_sample")),
entry.get("disposition").map(value=>mappingToStreamDisposition(value.asInstanceOf[Map[String,Boolean]])),
safeMap[String](entry.get("sample_fmt")),
safeMap[Int](entry.get("channels")),
safeMap[String](entry.get("channel_layout")),
safeMap[Int](entry.get("sample_rate"))
)
)
protected def mappingToMediaFormat(value:Map[String,AnyVal]) =
MediaFormat(
value("tags").asInstanceOf[Map[String,String]],
value("nb_streams").asInstanceOf[Int],
safeMap[Double](value.get("start_time")),
value("format_long_name").asInstanceOf[String],
value("format_name").asInstanceOf[String],
value("bit_rate").asInstanceOf[Double],
value("nb_programs").asInstanceOf[Int],
value("duration").asInstanceOf[Double],
intLongMap(value("size")),
)
protected def mappingToMediaMetadata(value:Map[String,AnyVal]) = {
MediaMetadata(
mappingToMediaFormat(value("format").asInstanceOf[Map[String, AnyVal]]),
mappingToStreamSeq(value("streams").asInstanceOf[Seq[Map[String, AnyVal]]])
)
}