X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-itu%2Fsrc%2Fcodecs%2Fh264%2Fdecoder_st.rs;h=13fe1bd82f33abac4b1f29f8ac005616ce0a41b2;hb=e6aaad5c5273cd814b5748b7faf3751835a37217;hp=63815f8683a490cad8cbe89940016dcf3c19e925;hpb=93839abd64a4c725e0194a790ffd743dd8c19916;p=nihav.git diff --git a/nihav-itu/src/codecs/h264/decoder_st.rs b/nihav-itu/src/codecs/h264/decoder_st.rs index 63815f8..13fe1bd 100644 --- a/nihav-itu/src/codecs/h264/decoder_st.rs +++ b/nihav-itu/src/codecs/h264/decoder_st.rs @@ -203,10 +203,13 @@ println!("PAFF?"); self.cur_pic = Some(PictureInfo { id: slice_hdr.frame_num, full_id, + user_id: full_id, + time: NATimeInfo::new(None, None, None, 0, 0), pic_type: slice_hdr.slice_type.to_frame_type(), buf, cur_mb: 0, is_ref: nal_ref_idc != 0, + is_idr, long_term: get_long_term_id(is_idr, &slice_hdr), mv_info: NABufferRef::new(FrameMV::new(sps.pic_width_in_mbs, sps.pic_height_in_mbs)), }); @@ -219,7 +222,7 @@ println!("PAFF?"); self.has_pic = self.decode_slice_cavlc(&mut br, &slice_hdr, full_size)?; } else { br.align(); - let start = (br.tell() / 8) as usize; + let start = br.tell() / 8; let csrc = &src[start..]; validate!(csrc.len() >= 2); let mut cabac = CABAC::new(csrc, slice_hdr.slice_type, slice_hdr.slice_qp, slice_hdr.cabac_init_idc as usize)?; @@ -479,7 +482,7 @@ _ => {}, 17, 18, 20, 24, 19, 21, 26, 28, 23, 27, 29, 30, 22, 25, 38, 41 ]; - let mut mb_idx = slice_hdr.first_mb_in_slice as usize; + let mut mb_idx = slice_hdr.first_mb_in_slice; let mut mb_info = CurrentMBInfo { qp_y: slice_hdr.slice_qp, ..Default::default() }; let skip_type = if slice_hdr.slice_type.is_p() { MBType::PSkip } else { MBType::BSkip }; while br.tell() < full_size && mb_idx < self.num_mbs { @@ -573,7 +576,7 @@ _ => {}, Ok(mb_idx == self.num_mbs) } fn decode_slice_cabac(&mut self, cabac: &mut CABAC, slice_hdr: &SliceHeader) -> DecoderResult { - let mut mb_idx = slice_hdr.first_mb_in_slice as usize; + let mut mb_idx = slice_hdr.first_mb_in_slice; let mut prev_mb_skipped = false; let skip_type = if slice_hdr.slice_type.is_p() { MBType::PSkip } else { MBType::BSkip }; let mut last_qp_diff = false; @@ -760,7 +763,7 @@ impl NADecoder for H264Decoder { } let num_bufs = if !self.sps.is_empty() { - self.sps[0].num_ref_frames as usize + 1 + self.sps[0].num_ref_frames + 1 } else { 3 }.max(16 + 1);