First remark: there is an issue (regression) on the H.264 video stream
sent from iDoubs on OS X caused by FFmpeg/x264 revision mismatch. You
should have bad video quality. More info:
http://code.google.com/p/idoubs/issues/detail?id=110
This said, the video frames are sent by this function:
http://code.google.com/p/idoubs/source/browse/branches/2.0/osx-ngn-stack/OSXProxyVideoProducer.mm#258
Supported formats: YUV420, YUV422, RGB24 and RGB32
The easiest solution is to store your image as YUV420 binary data in a
file.
When a video session starts we send blank packets to open a NAT
pinhole using a timer. This timer will be stopped when the camera
starts or we sent 3 (BLANK_PACKETS_TO_SEND) blank packets.
In your case as there is no camera, then we'll always send 3 blank
packets at the start of the session. The packets are named blank
because they contain zeros stored in 'kBlankPacketBuffer'.
The solution to your problem is as simple as filling
'kBlankPacketBuffer' buffer with your 'No Webcam' image.
If 'No webcam' image size is different than the SIP negotiated
(mWidth, mHeight) one, then you have to tell it to doubango media
stack like this:
const_cast<ProxyVideoProducer*>(_mProducer)-
>setActualCameraOutputSize('No webcam'.width, 'No webcam'.height);
To tell doubango media stack that your buffer chroma s YUV420, you can
do it like this:
tmedia_producer_t* producer =
(tmedia_producer_t*)tsk_object_ref((void*)_mProducer-
>getWrappedPlugin());
producer->video.chroma = tmedia_chroma_yuv420p;
On Jul 19, 9:59 am, Maxim Tartachnik <
maxim.tartach...@gmail.com>
wrote: