[x264-devel] x264 compatibility issues with Polycom and Tandberg

Alexander Sbitnev alexander.sbitnev at gmail.com
Tue Sep 21 16:32:32 CEST 2010


  I am currently playing with opal library and trying to bring HD
resolutions onto it. Thanx to Jason one problem on the way to history.
Now I want to ask for directions to bite compatibility issues. For a time
now I am being able to connect opal library with x264 on board with another
opal instance 
or with Polycom and Tandberg codecs. There is no problem when two opals are
working together. AVCodec decode each frame flawlessly.
Being on call with Polycom or Tandberg codec most of the time is also quite
good. But on the scenes with heavy motion (like waving hand right before the
camera) problems begin to appear.
Picture becomes crippled, like there is a lost frame. None lost frames
detected at the same time by receiving party.

Polycom report error like that:
WARNING avc: ti[4]: H26xDecoder[0]: [Codec-Log] Decoding error in
Reconstruct One Macroblock

Tandberg report error like that:
H.264 decode error no.   167, requesting fast update
H.264 decode error no.   152, requesting fast update

Not much clue there. Below is a part of debug log from encoder (25fps 720p):

D1 H264 x264    frame= 502 QP=27.18 NAL=2 Slice:P Poc:986 I:124  P:1422
SKIP:2054 size=5391 bytes
D1 H264 x264    frame= 503 QP=27.23 NAL=2 Slice:P Poc:988 I:122  P:1373
SKIP:2105 size=5417 bytes
D1 H264 x264    frame= 504 QP=27.33 NAL=2 Slice:P Poc:990 I:133  P:1358
SKIP:2109 size=6108 bytes
D1 H264 x264    frame= 505 QP=27.42 NAL=2 Slice:P Poc:992 I:106  P:1357
SKIP:2137 size=5450 bytes
D1 H264 x264    frame= 506 QP=27.41 NAL=2 Slice:P Poc:994 I:130  P:1360
SKIP:2110 size=5713 bytes
D1 H264 x264    frame= 507 QP=27.63 NAL=2 Slice:P Poc:996 I:257  P:1600
SKIP:1743 size=7597 bytes
D1 H264 x264    frame= 508 QP=27.96 NAL=2 Slice:P Poc:998 I:1755 P:944
SKIP:901  size=15278 bytes
D1 H264 x264    scene cut at 509 Icost:764248 Pcost:694570 ratio:0.0912
bias:0.1000 gop:500 (imb:2856 pmb:498)
D1 H264 x264    frame= 509 QP=38.79 NAL=3 Slice:I Poc:0   I:3600 P:0
SKIP:0    size=8984 bytes
D1 H264 x264    frame= 510 QP=39.85 NAL=2 Slice:P Poc:2   I:1415 P:583
SKIP:1602 size=7813 bytes
D1 H264 x264    frame= 511 QP=37.67 NAL=2 Slice:P Poc:4   I:461  P:598
SKIP:2541 size=3225 bytes
D1 H264 x264    frame= 512 QP=36.23 NAL=2 Slice:P Poc:6   I:1464 P:412
SKIP:1724 size=4310 bytes
D1 H264 x264    scene cut at 513 Icost:445407 Pcost:435575 ratio:0.0221
bias:0.0250 gop:4 (imb:3216 pmb:138)
D1 H264 x264    frame= 513 QP=37.22 NAL=2 Slice:I Poc:8   I:3600 P:0
SKIP:0    size=5229 bytes
D1 H264 x264    frame= 514 QP=36.22 NAL=2 Slice:P Poc:10  I:2648 P:216
SKIP:736  size=5131 bytes
D1 H264 x264    scene cut at 515 Icost:635838 Pcost:623551 ratio:0.0193
bias:0.0250 gop:6 (imb:3249 pmb:105)
D1 H264 x264    frame= 515 QP=37.72 NAL=2 Slice:I Poc:12  I:3600 P:0
SKIP:0    size=7759 bytes
D1 H264 x264    frame= 516 QP=42.89 NAL=2 Slice:P Poc:14  I:1934 P:281
SKIP:1385 size=6033 bytes
D1 H264 x264    frame= 517 QP=45.93 NAL=2 Slice:P Poc:16  I:3312 P:221
SKIP:67   size=7319 bytes
D1 H264 x264    frame= 518 QP=46.30 NAL=2 Slice:P Poc:18  I:2407 P:193
SKIP:1000 size=4253 bytes
D1 forceIFrame
D1 H264 x264    frame= 519 QP=40.16 NAL=3 Slice:I Poc:0   I:3600 P:0
SKIP:0    size=5013 bytes
D1 H264 x264    frame= 520 QP=49.01 NAL=2 Slice:P Poc:2   I:3144 P:339
SKIP:117  size=6989 bytes

forceIFrame is a flag for Fast Update PDU. So it means that problem appears
somewhere in between 507's and 518's frames.
I've tried to disable scenecut, but it appers that IFrames have nothing to
do with this issue.
With moderate motion on the scene there is no problem for hours.
Currently encoder working with Baseline profile, level 3.1. Mode is
X264_RC_ABR.
Analyse settings setup from code (it can be not reasonable because I've
tried to change many of options in attempt to find solution for the issue):
  _context.analyse.intra   = 1;
  _context.analyse.inter   = 0;
  _context.analyse.b_transform_8x8 = 0;
  _context.analyse.i_weighted_pred  = 0;
  _context.analyse.i_me_method      = 0;
  _context.analyse.i_me_range       = 16;
  _context.analyse.i_subpel_refine  = 1;
  _context.analyse.i_trellis        = 0;
  _context.analyse.b_psnr           = 0;
  _context.analyse.b_fast_pskip     = 1;
  _context.analyse.b_dct_decimate   = 1;
  _context.analyse.i_noise_reduction= 0;
  _context.analyse.b_ssim           = 0;
 
Some other options:
  _context.i_slice_max_size     =  // Around 1200 bytes
  _context.b_repeat_headers     = 1;     // repeat SPS/PPS before each key
frame
  _context.b_annexb             = 1;             // place start codes (4
bytes) before NAL units

VBV active and preventing frames from getting bigger than 65K because such
frames dropped by Polycom codec either (this time with correct stats).
Is there anything for me to tweak to find a solution?



More information about the x264-devel mailing list