protected def mappingToStreamDisposition()

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]]])
    )
  }