Ok, I have tried replacing all input to the transcoder:
The input is now a hand built MediaSocket:
VideoStreamInfo* simpleVsi = primo::avblocks::Library::createVideoStreamInfo();
simpleVsi->setStreamType(StreamType::Enum::H264);
simpleVsi->setFrameHeight(360);
simpleVsi->setFrameWidth(480);
MediaPin* pin = Library::createMediaPin();
pin->setConnection(PinConnection::Auto);
pin->setStreamInfo(simpleVsi);
inputSocket = Library::createMediaSocket();
inputSocket->setStreamType(StreamType::Enum::H264);
inputSocket->pins()->add(pin);
And the output is a pretty much unmodified version of your YUVFile, the only change is that the framerate is not set (but setting it doesn't change the error.)
Nothing else has been added to the transcoder before the assertion error happens:
_transcoder = Library::createTranscoder();
_transcoder->inputs()->add(inputSocket);
YUVFile* output = new YUVFile( L"d:\\test.yuv", ColorFormat::Enum::YUV420, 480, 360 );
_transcoder->outputs()->add(output->socket);
And this is the call that causes the error:
bool_t res = _transcoder->open();
Do you have any ideas on how to debug this? I am reading up to see if the Java interface might change any memory or memory management, but I haven't found anything sofar. Furthermore, with this simplification of inputs, I don't think the java VM has any chance to influence it as everything is done in one function call.
Greetings,
Sander
Op woensdag 31 juli 2013 10:37:47 UTC+2 schreef sander.borsboom het volgende: