View Issue Details

IDProjectCategoryView StatusLast Update
0000186JVT JM H.264/AVC reference softwaredecoderpublic2011-04-14 15:33
ReporterYves Dhondt Assigned ToKarsten Suehring  
PrioritynormalSeverityfeatureReproducibilityalways
Status assignedResolutionopen 
Product VersionJM 16.0 
Summary0000186: Error concealment is not working for non-reference frames
Description1)The reference decoder crashes when error concealment of type 1 (frame copy) is enabled. Even with valid bitstreams, the decoder can crash.

The issue is caused by a number of things.

- The variable last_output_poc in the dpb is not updated when non reference pictures are send directly to the output. As a result, the decoder sometimes thinks there are missing frames while they have been processed correctly. It then tries to read concealed pictures but
can not find any, resulting in a crash.

- The function conceal_non_ref_pics does not detect all missing non reference pictures. As a result, it sometimes does not conceal a missing picture after which write_lost_non_ref_pic tries to retrieve a non-existing picture and makes the decoder crash.

- The function write_lost_non_ref_pic only writes out one picture at a time. As a result, if consecutive non reference frames are concealed,

only the first one is written when needed, and the second one is written much later at an incorrect position. So when decoding is finished, there can actually be several concealed pictures still be in the buffer.

- The function free_global_buffers is called before the dpb is flushed at the end of the decoding loop. There still might be missing non reference pictures which are not yet concealed. As a result, the error concealment tools have no longer access to the 'global buffers'.

2)Reporting in case of error concealment is missing, incomplete of printed in the wrong place.

- Only if the PSNR is calculated, a report is printed on concealed reference pictures.

- No report is printed on concealed non-reference pictures.

- The final Report is printed before the dpb is flushed at the end of the decoding loop. There still might be missing non reference pictures which are not yet concealed. As a result, stats on those pictures might be displayed after the final report.
Additional InformationThe attached source files contain fixes for the above issues.

ldecod.c:
  moved calls to "free_slice", "free_global_buffers", and "Report" to after "flush_dpb" in main.

mbuffer.c:
  changed calls to error concealment functions, updated last_output_poc in case of direct output

image.c:
  commented out reporting code for concealed frames

erc_do_p.c:
  rewrote most of the missing non reference picture detection and concealment code, added reporting functions
Tagserror concealment

Relationships

related to 0000004 confirmed Copy error concealment fails with multiple non-reference frames 

Activities

2009-08-28 12:03

 

upload.zip (184,210 bytes)

2009-09-11 16:24

 

upload_JM_16_1.zip (186,918 bytes)

Yves Dhondt

2009-09-11 16:25

reporter   ~0000330

upload.zip contains the fix for JM 16.0
upload_JM_16_1.zip contains the fix for JM 16.1

Karsten Suehring

2011-04-14 15:33

administrator   ~0000448

Should be merged in JM 18.1

Issue History

Date Modified Username Field Change
2009-08-28 12:03 Yves Dhondt New Issue
2009-08-28 12:03 Yves Dhondt File Added: upload.zip
2009-09-11 16:24 Yves Dhondt File Added: upload_JM_16_1.zip
2009-09-11 16:25 Yves Dhondt Note Added: 0000330
2011-04-06 16:04 Karsten Suehring Relationship added related to 0000004
2011-04-13 16:55 Karsten Suehring Relationship added has duplicate 0000189
2011-04-13 17:47 Karsten Suehring Relationship deleted has duplicate 0000189
2011-04-14 15:32 Karsten Suehring Tag Attached: error concealment
2011-04-14 15:33 Karsten Suehring Assigned To => Karsten Suehring
2011-04-14 15:33 Karsten Suehring Status new => assigned
2011-04-14 15:33 Karsten Suehring Note Added: 0000448