View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000059 | JVT JM H.264/AVC reference software | decoder | public | 2007-06-12 11:14 | 2007-08-16 16:16 |
Reporter | Dimitris Agrafiotis | Assigned To | Karsten Suehring | ||
Priority | normal | Severity | crash | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Product Version | JM 12.2 | ||||
Fixed in Version | JM 13.0 | ||||
Summary | 0000059: Problem with the JM 12.2 decoder and missing data partitions | ||||
Description | A problem is encountered with the JM 12.2 Decoder and the use of data partitioning. More specifically the decoder will crash when specific partitions of a slice are missing (deleted) for example due to channel erasures. I have attached a zip file (problem.zip) with a number of test streams each representing specific scenarios regarding deleted partitions. The encoder and decoder configuration files are also attached. In summary, decoding problems are encountered in the following cases: 1. Data partition B or C or both of one slice are missing with data partition A of the same slice being present. In this case the decoder will try to decode transform coefficient values which do not exist and will crash with the message : “error: failed to find NumCoeff/TrailingOnes“. 2. Data partition A is present but the following data partition B or C do not belong to the same slice (i.e. consecutive B and/or C and A partitions have been deleted after receiving a correct partition A) The tests sequences included and the results of decoding them are given below: Test05.264 - Data Partitioning Enabled Original Test06.264 - Delete only 1 DP-C with B present - CRASHES (error: failed to find NumCoeff/TrailingOnes ChromaDC) Test07.264 - Delete only 1 DP-B - CRASHES (error: failed to find NumCoeff/TrailingOnes ) Test08.264 - Delete only 1 DP-A - WORKS Test09.264 - Delete DP-B and DP-C from same slice - CRASHES (error: failed to find NumCoeff/TrailingOnes ChromaDC) Test10.264 - Delete full slice (A-B-C) - WORKS Test11.264 - Delete DP-A and DP-B - WORKS Test12.264 - Delete DP-A and DP-C - WORKS | ||||
Additional Information | The above problems have been fixed (or at least I think they have). The modified files are included in the fix.zip file and the changes introduced to them can be found by searching for string “Agrafiotis”. Note that I don’t know what happens when redundant slices and data partitioning are both used. | ||||
Tags | No tags attached. | ||||
related to | 0000069 | resolved | Karsten Suehring | New fix for issue 59 previously considered solved - missing data partitions |
2007-06-12 11:14
|
|
|
I will take care about this after the 4:4:4 professional profile merge. |
|
I merged the suggested solution into my development tree. Seems to work fine for the submitted cases. I will run some additional test for verification. |
|
I have since encountered some more problems regarding the JM 12.2 decoder and missing data partitions. I have fixed those too and the decoder now seems to be able to handle missing data partitions very well. I will upload a new fix_v2.zip file with all the necessary changes marked again with the string “Agrafiotis”. Apologies for the inconvenience. |
|
Thanks for the update. I'm looking forward to your file upload. I think we will also need some additional code for I_PCM decoding. I_PCM data has been moved to DP_B - I think in JM 12.3. I_PCM in DP_A is now considered to be a bug in the spec. Our intention was to have it in DP_B. This will be a corrigendum item. |
|
I think we can get easily into trouble when combining wrong data partitions, e.g. when we have a stream that contains one slice per picture as follows 1 frame n DP_A 2 frame n DP_B 3 frame n+1 DP_A 4 frame n+1 DP_B and we loose packets 2 and 3, the decoder tries to combine 1 and 4 and fails reading the proper coefficients. I think the proper way to handle this situation would be to detect the loss at a higher layer (e.g. RTP) and throw away any DP_B or DP_C NALUs that directly follow a suspected DP_A loss. In Annex B we could only check every read value and try to discard a partition if the values don't make sense. But we might even fail to detect the situation. I also think that I don't want to implement this into the reference code. |
|
resolved in my devel branch |
Date Modified | Username | Field | Change |
---|---|---|---|
2007-06-12 11:14 | Dimitris Agrafiotis | New Issue | |
2007-06-12 11:14 | Dimitris Agrafiotis | File Added: Problem_And_Fix.zip | |
2007-08-08 14:20 | Karsten Suehring | Status | new => assigned |
2007-08-08 14:20 | Karsten Suehring | Assigned To | => Karsten Suehring |
2007-08-08 14:21 | Karsten Suehring | Note Added: 0000092 | |
2007-08-14 17:03 | Karsten Suehring | Status | assigned => resolved |
2007-08-14 17:03 | Karsten Suehring | Fixed in Version | => JM 12.4-devel |
2007-08-14 17:03 | Karsten Suehring | Resolution | open => fixed |
2007-08-14 17:03 | Karsten Suehring | Note Added: 0000094 | |
2007-08-14 17:32 | Dimitris Agrafiotis | Status | resolved => feedback |
2007-08-14 17:32 | Dimitris Agrafiotis | Resolution | fixed => reopened |
2007-08-14 17:32 | Dimitris Agrafiotis | Note Added: 0000095 | |
2007-08-14 17:56 | Karsten Suehring | Note Added: 0000096 | |
2007-08-15 15:09 | Karsten Suehring | Note Added: 0000097 | |
2007-08-15 19:04 | Karsten Suehring | Relationship added | related to 0000069 |
2007-08-16 16:16 | Karsten Suehring | Status | feedback => resolved |
2007-08-16 16:16 | Karsten Suehring | Resolution | reopened => fixed |
2007-08-16 16:16 | Karsten Suehring | Note Added: 0000101 |