Opened 8 years ago

Closed 8 years ago

#1090 closed defect (fixed)

Encoder crashes when using fixed rate and fixed slice length

Reported by: jfmcarreira Owned by:
Priority: major Milestone: HM-11.0
Component: HM Version: HM-10.0
Keywords: Cc: fbossen, ksuehring, davidf, jct-vc@…

Description

The variable LCUIdx assumes wrong values when enconding with fixed bitrate and fixed slice length.

The solution is the decrease by one the value LCUIdx when a LCU is encoded but not included in the current slice, because it exceeds the maximum size requested (fixed slice length).

This is the error:
TAppEncoderStatic_HM-10.1-dev_2013_05_09: /home/joaoc/IT/PhD/HEVC/srcHEVC-mirror/build/linux/lib/TLibEncoder/../../../../source/Lib/TLibEncoder/TEncRateCtrl.h:147: TRCParameter TEncRCSeq::getLCUPara(Int, Int): Assertion `LCUIdx < m_numberOfLCU' failed.

Attachments (4)

report_book_arrival_c6_encoder_1M200bps_1024BpS (2.2 KB) - added by jfmcarreira 8 years ago.
encoder report
encoder_cfg.cfg (8.5 KB) - added by jfmcarreira 8 years ago.
encoder config
Ticket1090.patch (3.2 KB) - added by libin 8 years ago.
patch for ticket #1090
Ticket1090_1.patch (726 bytes) - added by libin 8 years ago.

Download all attachments as: .zip

Change History (12)

comment:1 Changed 8 years ago by DefaultCC Plugin

  • Cc fbossen ksuehring davidf jct-vc@… added

Changed 8 years ago by jfmcarreira

encoder report

Changed 8 years ago by jfmcarreira

encoder config

Changed 8 years ago by libin

patch for ticket #1090

comment:2 follow-up: Changed 8 years ago by libin

I think when using fixed length slice, one LCU may be encoded more than once. Thus, the rate control parameters may be updated more than once. Would you please check the following patch fix the issue?

comment:3 in reply to: ↑ 2 Changed 8 years ago by jfmcarreira

The encoder is working now. I came up with a different idea to solve this problem.

Why do not just decrease the number of encoded LCU (LCUIdx) when a given LCU is encoded and not include in the current slice (which means that it will be encoded more than once).

It just requires a new function in the TEncRCPic class which is used once when a given LCU is not include in the slice.

Void setLCUCoded( Int LCUCoded )
{

m_LCULeft = m_numberOfLCU - LCUCoded;

}

comment:4 Changed 8 years ago by jfmcarreira

Ticket #1089 has been marked as a duplicate of this ticket.

comment:5 Changed 8 years ago by fbossen

  • Milestone changed from HM-10.1 to HM-11.0
  • Resolution set to fixed
  • Status changed from new to closed

Fixed in r3495 based on provided patch

comment:6 Changed 8 years ago by libin

As r3493 was committed after providing the initial patch for #1090, I think the following patch should also be applied on r3495.

Changed 8 years ago by libin

comment:7 Changed 8 years ago by ksuehring

  • Resolution fixed deleted
  • Status changed from closed to reopened

comment:8 Changed 8 years ago by ksuehring

  • Resolution set to fixed
  • Status changed from reopened to closed

The patch has been applied in r3503

Note: See TracTickets for help on using tickets.

This list contains all users that will be notified about changes made to this ticket.

These roles will be notified: Reporter, Owner, Subscriber, Participant

  • Bin Li(Participant)
  • David Flynn(Subscriber)
  • Frank Bossen(Subscriber, Participant)
  • jct-vc@…(Subscriber)
  • Joao Carreira(Reporter, Participant)
  • karl.sharman@…(Always)
  • Karsten Suehring(Subscriber, Participant, Always)