View Issue Details

IDProjectCategoryView StatusLast Update
0000173JVT JM H.264/AVC reference softwareencoder and decoderpublic2009-04-25 18:19
ReporterLitBird Assigned To 
PrioritynormalSeverityminorReproducibilityhave not tried
Status newResolutionopen 
Product VersionJM 15.1 
Summary0000173: CABAC error at en/de luma run
DescriptionI actived the TRACE function to record some encode/decode information.

I found some mismatch at luma run data.

For example, when akiyo_qcif.yuv is tested, the lumn data of MB 1 of frame 0 are:

@372 Luma8x8 sng( 0) level = -1 run = 2 ( -1)
@372 Luma8x8 sng( 1) level = 1 run = 1 ( 1)
@372 Luma8x8 sng( 2) level = 1 run = 3 ( 1)
@372 Luma8x8 sng( 3) level = -1 run = 0 ( -1)
@372 Luma8x8 sng( 4) level = 1 run = 0 ( 1)
@372 Luma8x8 sng( 5) level = 1 run = 9 ( 1)
@372 Luma8x8 sng( 6) level = 0 run = 0 ( 0)
@405 Luma8x8 sng( 0) level = -1 run = 0 ( -1)
@405 Luma8x8 sng( 1) level = -1 run = 1 ( -1)
@405 Luma8x8 sng( 2) level = -1 run = 6 ( -1)
@405 Luma8x8 sng( 3) level = 0 run = 0 ( 0)
@420 Luma8x8 sng( 0) level = 4 run = 0 ( 4)
@420 Luma8x8 sng( 1) level = -3 run = 0 ( -3)
@420 Luma8x8 sng( 2) level = -2 run = 0 ( -2)
@420 Luma8x8 sng( 3) level = 1 run = 0 ( 1)
@420 Luma8x8 sng( 4) level = 2 run = 0 ( 2)
@420 Luma8x8 sng( 5) level = 1 run = 0 ( 1)
@420 Luma8x8 sng( 6) level = -1 run = 1 ( -1)
@420 Luma8x8 sng( 7) level = -1 run = 0 ( -1)
@420 Luma8x8 sng( 8) level = 0 run = 0 ( 0)
@454 Luma8x8 sng( 0) level = -1 run = 2 ( -1)
@454 Luma8x8 sng( 1) level = 1 run = 0 ( 1)
@454 Luma8x8 sng( 2) level = 1 run = 5 ( 1)
@454 Luma8x8 sng( 3) level = 0 run = 6 ( 0)

However, these information at decoder are:

@71 Luma8x8 DC sng -1 2
@72 Luma8x8 sng 1 1
@73 Luma8x8 sng 1 3
@74 Luma8x8 sng -1 0
@75 Luma8x8 sng 1 0
@76 Luma8x8 sng 1 9
@77 Luma8x8 sng 0 0
@78 Luma8x8 DC sng -1 0
@79 Luma8x8 sng -1 1
@80 Luma8x8 sng -1 6
@81 Luma8x8 sng 0 0
@82 Luma8x8 DC sng 4 0
@83 Luma8x8 sng -3 0
@84 Luma8x8 sng -2 0
@85 Luma8x8 sng 1 0
@86 Luma8x8 sng 2 0
@87 Luma8x8 sng 1 0
@88 Luma8x8 sng -1 1
@89 Luma8x8 sng -1 0
@90 Luma8x8 sng 0 0
@91 Luma8x8 DC sng -1 2
@92 Luma8x8 sng 1 0
@93 Luma8x8 sng 1 5
@94 Luma8x8 sng 0 0


As listed above, the final luma run at encoder is 6, but it is 0 at decoder.

Do I use the program wrong??

Thank you

TagsNo tags attached.

Activities

2009-04-14 17:58

 

up.cfg (8,081 bytes)   
# New Input File Format is as follows
# <ParameterName> = <ParameterValue> # Comment
#
# See configfile.h for a list of supported ParameterNames
#
# For bug reporting and known issues see:
# https://ipbt.hhi.de

##########################################################################################
# Files
##########################################################################################

InputFile             = "s:\akiyo_qcif.yuv"
TraceFile             = "s:\akiyo_qcif_enc.txt"
OutputFile            = "s:\akiyo_qcif.264"

#FramesToBeEncoded     = 300      # Number of frames to be coded
FramesToBeEncoded     = 3      # Number of frames to be coded
FrameRate             = 30.0   # Frame Rate per second (0.1-100.0)
SourceWidth           = 176    # Frame width
SourceHeight          = 144    # Frame height



##########################################################################################
# Encoder Control
##########################################################################################

ProfileIDC            = 100 # Profile IDC (66=baseline, 77=main, 88=extended; FREXT Profiles: 100=High, 110=High 10, 122=High 4:2:2, 244=High 4:4:4, 44=CAVLC 4:4:4 Intra)	#addbear
#IntraProfile          = 0   # Activate Intra Profile for FRExt (0: false, 1: true)
                            # (e.g. ProfileIDC=110, IntraProfile=1  =>  High 10 Intra Profile)
#LevelIDC              = 40  # Level IDC   (e.g. 20 = level 2.0)
NumberReferenceFrames = 5   # Number of previous frames used for inter motion search (0-16, default:1)
IntraPeriod           = 15   # Period of I-pictures   (0=only first)
FrameSkip             = 0   # Number of frames to be skipped in input (e.g 2 will code every third frame) # addbear �]�w I/P frame ���ҭn�ٲ��� frame ��,�����i�� B frame


##########################################################################################
# B Slices
##########################################################################################

NumberBFrames          = 0  # Number of B coded frames inserted (0=not used)
#DirectModeType         = 1  # Direct Mode Type (0:Temporalf/default, 1:Spatial)

##########################################################################################
# SP Frames
##########################################################################################

SP_output_name        = "low_quality.dat"  # Filename for SP output coefficients
SP2_input_name1       = "high_quality.dat" # Filename for the first swithed bitstream coefficients
SP2_input_name2       = "low_quality.dat"  # Filename for the second switched bitstream coefficients

##########################################################################################
# Output Control, NALs
##########################################################################################

SymbolMode             =  1  # Symbol mode (Entropy coding method: 0=UVLC, 1=CABAC)

##########################################################################################
# CABAC context initialization
##########################################################################################


##########################################################################################
# Interlace Handling
#########################################################################################


##########################################################################################
# Weighted Prediction
#########################################################################################


##########################################################################################
# Picture based Multi-pass encoding
#########################################################################################


##########################################################################################
# Loop filter parameters
##########################################################################################


##########################################################################################
# Error Resilience / Slices
##########################################################################################


##########################################################################################
# Search Range Restriction / RD Optimization
##########################################################################################

RestrictSearchRange    =  2  # restriction for (0: blocks and ref, 1: ref, 2: no restrictions)
RDOptimization         =  1  # rd-optimized mode decision
                             # 0: RD-off (Low complexity mode)
                             # 1: RD-on (High complexity mode)
                             # 2: RD-on (Fast high complexity mode - not work in FREX Profiles)
                             # 3: with losses

##########################################################################################
# Additional Stuff
#########################################################################################

LeakyBucketRateFile      =  "leakybucketrate.cfg"  # File from which encoder derives rate values
LeakyBucketParamFile     =  "leakybucketparam.cfg" # File where encoder stores leakybucketparams

########################################################################################
#Rate control
########################################################################################

########################################################################################
#Fast Mode Decision
########################################################################################

########################################################################################
#FREXT stuff
########################################################################################

YUVFormat               = 1     # YUV format (0=4:0:0, 1=4:2:0, 2=4:2:2, 3=4:4:4)	# addbear
RGBInput                = 0     # 1=RGB input, 0=GBR or YUV input	# addbear
SeparateColourPlane     = 0     # 4:4:4 coding: 0=Common mode, 1=Independent mode
Transform8x8Mode        = 1     # (0: only 4x4 transform, 1: allow using 8x8 transform additionally, 2: only 8x8 transform)

########################################################################################
#Q-Matrix (FREXT)
########################################################################################
QmatrixFile              = "q_matrix.cfg"


########################################################################################
#Rounding Offset control
########################################################################################

QOffsetMatrixFile        = "q_offset.cfg" # Explicit Quantization Matrices file


########################################################################################
#Lossless Coding (FREXT)
########################################################################################



########################################################################################
#Fast Motion Estimation Control Parameters
########################################################################################
SearchMode               = 0    # Use fast motion estimation (0=disable/default, 1=UMHexagonS,
                                # 2=Simplified UMHexagonS, 3=EPZS patterns)


########################################################################################
# SEI Parameters
########################################################################################

ToneMappingFile           = "ToneMapping.cfg"

SEIMessageText           = "H.264/AVC Encoder"  # Text SEI Message

################################################################
# VUI Parameters
################################################################
# the variables below do not affect encoding and decoding
# (many are dummy variables but others can be useful 
# when supported by the decoder)

up.cfg (8,081 bytes)   

LitBird

2009-04-25 18:19

reporter   ~0000307

This bug happens at the EOBs. At the decoder, JM uses (level,run)=(0,0) to indicate a EOB. At the encoding side, however, only the code "ACLevel[scan_pos] = 0;" is used to mark a EOB. A code, like "ACRun[scan_pos]=0;" can be added.

Issue History

Date Modified Username Field Change
2009-04-14 17:58 LitBird New Issue
2009-04-14 17:58 LitBird File Added: up.cfg
2009-04-25 18:19 LitBird Note Added: 0000307