View Issue Details

IDProjectCategoryView StatusLast Update
0000090JVT JM H.264/AVC reference softwareencoderpublic2008-01-22 14:26
ReporterDaniel Pinçon Assigned ToKarsten Suehring  
PrioritynormalSeverityblockReproducibilityalways
Status resolvedResolutionfixed 
Product VersionJM 13.2 
Fixed in VersionJM-14.0 
Summary0000090: 4:2:2 Intra Coding
DescriptionI get the message:
>Use RcUpdateMode = 1 for all intra or all B-slice coding<

I would like to perform a 4:2:2 INTRA coding, the RcUpdateMode value is 1.

Why is this message always blocking the process???

Thanx for help.
TagsNo tags attached.

Activities

Daniel Pinçon

2008-01-14 15:45

reporter   ~0000138

Heap Corruption DETECTED: after normal block (#14827) at 0x013967cb.
CRT detected that the application wrote to memory after end to heap buffer.

Daniel Pinçon

2008-01-14 16:04

reporter   ~0000139

Can not read 921600 bytes from input file, unexpected EOP?

Karsten Suehring

2008-01-15 12:51

administrator   ~0000142

Can you please provide your encoder config file?
What are the values of "FrameSkip" and "NumberBFrames" ?

2008-01-15 15:16

 

encoder.cfg (34,297 bytes)

Daniel Pinçon

2008-01-15 15:40

reporter   ~0000144

config file is uploaded.
FrameSkip value is "0", aligned to the number of B-frames, because in my case I only make use of INTRA coding.
If I take a picture of 720p50 I get a debug error message:
>Heap Corruption DETECTED: after normal block (12298) at 0x01365810.
CRT detected that the application wrote to memory after end to heap buffer.<
When using a resolution of 1920*1080i25, changing the image format to 1920x1080, Freq. for encoded bitstream to 25, and the LevelIDC to 5.1 with the same configurations I get a warning message: too many slices per picture, increase MAXSLICEPERPICTURE in global.h.

Karsten Suehring

2008-01-15 16:14

administrator   ~0000145

When you encode full HD you have 1920x1080/256 = 8100 macroblocks. With 50 macroblocks/slice you have 162 slices. Per default the decoder is restricted to 100 slices to save memory. You can change that (as noted in the error message) by increasing the #define MAXSLICEPERPICTURE

I have not tested yet with your config file. But this might be a memory allocation problem. If you are not encoding with more than 8bpp you can change in defines.h (both encoder and decoder)

#define IMGTYPE 1

to

#define IMGTYPE 0

Which will reduce the amount of allocated memory.

Daniel Pinçon

2008-01-15 16:51

reporter   ~0000146

I have changed the IMGTYPE 1 to 0, and then created a new lencod.exe file, but I get the same warning message.
I´m using a AMD 64 Processor 3500+ 2,2GHz with 1 GB RAM. This should be enough.
I think I have probably an incorrect setting in the config file. Can you please check it?!

Karsten Suehring

2008-01-15 17:11

administrator   ~0000147

Did you change MAXSLICEPERPICTURE as well?

Karsten Suehring

2008-01-15 17:17

administrator   ~0000148

Could you please also try disabling "RDPictureDecision" in the config file?

Daniel Pinçon

2008-01-16 13:31

reporter   ~0000149

Last edited: 2008-01-16 13:55

Yesterday I changed everything even the "RDPictureDecision", but I get the same debug error message.
Today, I changed following parameters and now it works fine.
Intraprofile=0, IntraPeriod=0, IDRPeriod=0, NumberReferenceFrames=1.
The RDPictureDecision setting only provides an economy of time, because the encoder don´t select the best encoding, but only take one.

I changed the MAXSLICEPERPICTURE to 200 and know it works fine for 1920*1080i25.

Daniel Pinçon

2008-01-16 16:07

reporter   ~0000150

The encoder is working fine, but when I look at the result I was very surprised.
The compressed image has a lot of stripes in it. Look uploaded picture as reference (test_rec.yuv). Something is not working exactly, when calculating the lines.
Do you have a solution?

2008-01-16 16:07

 

test_rec.yuv (1,843,200 bytes)

2008-01-18 14:51

 

jm-13.2-dev-suehring-a1.zip (1,408,852 bytes)

Karsten Suehring

2008-01-18 14:57

administrator   ~0000151

Can you please try the attached jm-13.2-dev-suehring-a1.zip? I have fixed some memory allocation issues and enabled the deblocking filter via the decoder.cfg file (intra only has a conformance point before deblocking, therefore the decoder did not deblock, except when specified by command line)

I believe the missing deblocking has pretty strong effect when the source material is not in the proper raw format.

The attached version worked for me with you config file. I only changed the resolution to 1920x1080.

Daniel Pinçon

2008-01-21 11:00

reporter   ~0000153

The source is a *.YUV16 and the resolution is 1280*720p50. So why did you change the resolution to *19201080 ?
It doesn´t work with your new file the result is the same than before. Stripes in the test_rec picture.

Karsten Suehring

2008-01-21 11:30

administrator   ~0000154

With 8 bit per pel setting in the config file the encoder reads also 8bpp from the file. So this might be indeed a raw file reading issue.

Daniel Pinçon

2008-01-21 13:46

reporter   ~0000156

Last edited: 2008-01-21 13:48

1. A very helpful advice.. Can you please give me a real advice to solve the problem?!

2. Please describe where I can change the setting in config-file for the 8 bpp?
--> I don´t know where I can change this setting! I can´t find it!

3. What did you change since the version JM12.2?
--> With this version the encoding is working fine. No stripes in the test_rec picture.

Karsten Suehring

2008-01-21 15:43

administrator   ~0000157

1) If your source material is 16 bit, you need to scale it down to the proper bit depth. With more that 8 bit per sample the JM encoder uses the lower n bits of a 16 bit word (in Intel Byte order), with 8 bits the file consists of byte-size samples.

2) The simplest way for down conversion would be right-shifting of the samples. But for many materials there are more suitable color conversion methods, which are out of the scope of the JM software. So you are required to convert the file outside with another application.

3) simple answer: see CHANGES.txt

Well, I think I'm now finally seeing the same "stripes" that you are describing. I believe this looks like a bug in the forward transform.

Karsten Suehring

2008-01-22 14:14

administrator   ~0000158

I found the problem: in dct_chroma() the call to forward4x4 used a wrong index order:

change:
      forward4x4(curr_res, curr_res, n1, n2);

to:
      forward4x4(curr_res, curr_res, n2, n1);

Karsten Suehring

2008-01-22 14:26

administrator   ~0000160

fixed 4:2:2 forward transform and memory allocations for num_ref_frames=0

Issue History

Date Modified Username Field Change
2008-01-14 15:28 Daniel Pinçon New Issue
2008-01-14 15:45 Daniel Pinçon Note Added: 0000138
2008-01-14 16:04 Daniel Pinçon Note Added: 0000139
2008-01-15 12:51 Karsten Suehring Note Added: 0000142
2008-01-15 12:51 Karsten Suehring Status new => feedback
2008-01-15 15:16 Daniel Pinçon File Added: encoder.cfg
2008-01-15 15:40 Daniel Pinçon Note Added: 0000144
2008-01-15 16:14 Karsten Suehring Note Added: 0000145
2008-01-15 16:51 Daniel Pinçon Note Added: 0000146
2008-01-15 17:11 Karsten Suehring Note Added: 0000147
2008-01-15 17:17 Karsten Suehring Note Added: 0000148
2008-01-16 13:31 Daniel Pinçon Note Added: 0000149
2008-01-16 13:32 Daniel Pinçon Note Edited: 0000149
2008-01-16 13:55 Daniel Pinçon Note Edited: 0000149
2008-01-16 16:07 Daniel Pinçon Note Added: 0000150
2008-01-16 16:07 Daniel Pinçon File Added: test_rec.yuv
2008-01-18 14:48 Karsten Suehring File Added: jm-13.2-dev-suehring-a1.zip
2008-01-18 14:49 Karsten Suehring File Deleted: jm-13.2-dev-suehring-a1.zip
2008-01-18 14:51 Karsten Suehring File Added: jm-13.2-dev-suehring-a1.zip
2008-01-18 14:57 Karsten Suehring Note Added: 0000151
2008-01-21 11:00 Daniel Pinçon Note Added: 0000153
2008-01-21 11:30 Karsten Suehring Note Added: 0000154
2008-01-21 13:46 Daniel Pinçon Note Added: 0000156
2008-01-21 13:48 Daniel Pinçon Note Edited: 0000156
2008-01-21 15:43 Karsten Suehring Note Added: 0000157
2008-01-22 14:14 Karsten Suehring Note Added: 0000158
2008-01-22 14:26 Karsten Suehring Status feedback => resolved
2008-01-22 14:26 Karsten Suehring Fixed in Version => JM-13.2-dev
2008-01-22 14:26 Karsten Suehring Resolution open => fixed
2008-01-22 14:26 Karsten Suehring Assigned To => Karsten Suehring
2008-01-22 14:26 Karsten Suehring Note Added: 0000160