From: "Jan Willamowius" jan@willamowius.de Date: Monday 10 January 2011 16:47
Simon took out the whole call to PreIncEncodeSetup() and not just the zeroing of sbit_. I have restored that and added the initialization of sbit_ in the H261Encode c'tor. Unfortuantely it doesn't help - if sbit_ isn't reset to 0, the plugin crashes in InEncodeAndGetPacket(), so I just commented the suggested removal for now.
Alessandro, could you please provide a "diff -u" of your code against the latest CVS ?
The only modifications are the commenting out of sbit_ = 0; (Simon delete the line instead, but not the whole function) and the added the initialization of sbit_(0).
Here is the diff:
Index: opal/plugins/video/H.261-vic/vic/encoder-h261.cxx =================================================================== --- opal/plugins/video/H.261-vic/vic/encoder-h261.cxx (revision 24864) +++ opal/plugins/video/H.261-vic/vic/encoder-h261.cxx (working copy) @@ -127,6 +127,7 @@ H261Encoder::H261Encoder(Transmitter *T) : Encoder(T), bs_(0), bc_(0), ngob_(12), gDone(true) // must initialize to true + , sbit_(0) { for (int q = 0; q < 32; ++q) { llm_[q] = 0; @@ -798,7 +799,7 @@ bc_ = gData; //where to put encoded bits gStep = cif_ ? 1 : 2; //Macro Block step size gGobMax = cif_ ? 12 : 5; //how many GOB per frame - sbit_ = 0; + // sbit_ = 0; gSendGOBhdr = true; //must send GOB hdr before sending MB gGOBhdrNxt = true; //will start out with GOB header //because gGOBhdrNxt == true, no need to initialize the following 2 header variables: