Robert
Older cheaper webcams really behavior quite poorly. For instance 1. They support formats which only can be transformed to RGB24 (and nothing else) in DirectShow filters so then with good webcams you have to filter out and only use the formats that are known to transform to RGB24. (When it all should just work with YUV so there is no need to convert in PTLIB)
2. a couple I have seen supply undersize (or corrupt) image buffer when starting up hence why the directshow output device automatically throws the first few frames away.
3. They fall over when trying to set a video frame size within the camera limits but not exactly as they support. So you are limited to exact sizes. ie like 4CIF. Some webcam may support sizes above 4CIF but not 4CIF exactly (quite common). Some webcams you can adjust the output pin to get the size others the video will just simply fail without any warning. This is why the PVideoInputDevice::GetDeviceCapabilities was introduced so with the plugin you could choose a video size/rate the webcam did support thereby avoiding having to scale/crop etc.
Thankfully the latest generation of webcams perform much better like the Microsoft LifeCam Cinema which gives reliable 720p@30 or the new Logitech C910 which provides 1080p@30 (with USB3) with the current DirectShow driver in PTLIB. But still we need to support these older webcams without hardcoding or maintaining a bad list.
Simon
-----Original Message----- From: Robert Jongbloed [mailto:robertj@voxlucida.com.au] Sent: 23 February 2011 14:33 To: 'Simon Horne'; 'Jan Willamowius'; opalvoip-devel@lists.sourceforge.net Cc: h323plus@lists.packetizer.com Subject: RE: [Opalvoip-devel] error H.263
Found it. The helper app has bit rate in kbps and OPAL does it in bps. A /1000 fixes the problem.
Another question: What are peoples experiences with camera grabber frame rates?
My el cheapo USB camera isn't apparently very good. When asked to do 10 fps, actually does 6.4 fps. When asked to do 25 fps, I get about 18 fps.
Robert Jongbloed OPAL/OpenH323/PTLib Architect and Co-founder.
-----Original Message----- From: Simon Horne [mailto:s.horne@packetizer.com] Sent: Wednesday, 23 February 2011 1:18 PM To: 'Robert Jongbloed'; 'Jan Willamowius'; opalvoip- devel@lists.sourceforge.net Cc: h323plus@lists.packetizer.com Subject: RE: [Opalvoip-devel] error H.263
Robert
You can also use the PTLIB_TRACE_CODECS environmental variable. Found it enormously helpful debugging the X264 encoder.
Simon
-----Original Message----- From: Robert Jongbloed [mailto:robertj@voxlucida.com.au] Sent: 23 February 2011 11:55 To: 'Simon Horne'; 'Jan Willamowius'; opalvoip-devel@lists.sourceforge.net Cc: h323plus@lists.packetizer.com Subject: RE: [Opalvoip-devel] error H.263
The OPAL infrastructure is fine and all this works perfectly with the IPP codecs (and another private H.264 implementation) for both SIP and H.323 operation.
I just wanted confirmation that the bit rate control was working in the helper app, as a breakpoint at the right place showed the bit rate and
frame
rate where correctly negotiated and passed to helper app via the SET_FRAME_RATE/SET_TARGET_BITRATE commands.
Gotta dig deeper ...
Robert Jongbloed OPAL/OpenH323/PTLib Architect and Co-founder.
-----Original Message----- From: Simon Horne [mailto:s.horne@packetizer.com] Sent: Tuesday, 22 February 2011 8:38 PM To: 'Jan Willamowius'; opalvoip-devel@lists.sourceforge.net Cc: h323plus@lists.packetizer.com Subject: Re: [Opalvoip-devel] error H.263
Jan
You are correct . To match to a bandwidth the encoder must know frame size and rate. The plugin support is very much h323plus specific. You can calculate the frame size/rate by using the internal table or can use a supplied list of supported frame sizes/rates. These can be manually coded from largest to smallest or retrieved from the video
input
device.
DirectShow for instance supports retrieving the list of supported sizes
and
rates via calling PVideoInputDevice:: GetDeviceCapabilities().
These can be passed to the codec via calling PLUGINCODEC_CONTROL_SET_FORMAT_OPTIONS. In h323plus the function to do
this
is H323VideoCodec::SetSupportedFormats. The function returns the default frame size and rate for the given bitrate that is supported by the input device. Then you can set the input device with the returned frame size
/rate
in the MyH323Endpoint::OpenVideoChannel. See Applications/SimplePlus for example of how that is done.
The bandwidth (and level\MBPS etc) values for the X264 Encoder is set by PLUGINCODEC_CONTROL_SET_CODEC_OPTIONS which is called after the local and remote capabilities have been merged in h323plus.
Then there is flowControl which does basically the same thing. You pass to the plugin a bitrate value via PLUGINCODEC_CONTROL_FLOW_OPTIONS it then returns a supported frame size/rate (internal or supplied earlier) then
you
pass these value to the input device via calling PVideoInputDevice:: FlowControl().
The architecture of Opal has deviated a lot from its h323plus roots and I think there is a lot more things to consider to getting this to work with it.
Simon
-----Original Message----- From: Jan Willamowius [mailto:jan@willamowius.de] Sent: 22 February 2011 18:46 To: opalvoip-devel@lists.sourceforge.net Subject: Re: [Opalvoip-devel] error H.263
When I debugged a similar bandwidth issue on H323Plus a few months ago, I found that the bit rate setting was passed to the encoder correctly, but
to
correctly meet this target the encoder needs to know the correct values of influencing parameters, like the frame rate. In my case the frame rate wasn't passed in correctly, so the encoder kept producing video at the wrong rate.
I haven't fixed the issue back then, but worked around it. I'm not sure if anybody else has (or if the same applies to the OPAL version of the
codec).
Regards, Jan
Robert Jongbloed wrote:
Quick question on this helper app, do you know if the bit rate control works with it?
As far as I can tell, I am setting it to 256kbps and it is still sending at 4Mbps. So, before I go digging deeper, I was hoping for a bit of a sanity check.
Thank you very much!
Robert Jongbloed
OPAL/OpenH323/PTLib Architect and Co-founder.
From: Simon Horne [mailto:s.horne@packetizer.com] Sent: Monday, 7 February 2011 10:01 PM To: 'Robert Jongbloed'; 'ZAHRA dehghanianfard' Cc: 'opal'; 'opal'; h323plus@lists.packetizer.com Subject: RE: error H.263
I think both the opal and h323plus community can benefit.
http://www.h323plus.org/source/download/ffmpeg_x264.zip
Place all files in your application directory.
The FFMPEG (with w32threads) and X264 is built with mingw/msys. x264plugin_helper.exe is built with vs2008 and requires vs2008
runtime.
Simon
From: Robert Jongbloed [mailto:robertj@voxlucida.com.au] Sent: 07 February 2011 15:48 To: ZAHRA dehghanianfard Cc: opal; opal Subject: Re: [Opalvoip-devel] error H.263
The answer to your questions are:
Yes, but you need to compile it.
The result of compiling it is a DLL
You will have to figure out why it doesn't compile under windows.
I have to admit to not being able to get the H.263 (or x264) codecs to compile and work under Windows, though I have only tried somewhat
briefly.
Unfortunately the authors of all the libraries mainly use Linux, though it is my understanding that it can be compiled using
MinGW/Cygwin.
I am sure the OPAL community would be incredibly grateful to anyone that can provide a pre-built binary for the H.263 (and x264!)
codec.
Robert Jongbloed
Vox Lucida Pty. Ltd.
On 03/02/2011, at 5:33 PM, ZAHRA dehghanianfard wrote:
Hi robert.
Many thanks for your last support; I need to use OpenPhone3.8.2 by H.263 codec run.
Is OpenPhone 3.8.2 with Opal 3.8.2 & Ptlib2.8.2 support H.263
codec
inside?
If the above response is YES, Are you suggesting any H.263 DLL
file?
I find a source that name is "H.263-1998" then I download that
and
compiles it but I find below Error inside:
1>------ Build started: Project: H.263-1998 (FFMPEG) Video Codec, Configuration: Debug Win32 ------ 1>Compiling... 1>h263pframe.cxx 1>c:\opal\plugins\video\h.263-1998../common/ffmpeg.h(155) : fatal 1>error C1083: Cannot open include file: 'libavcodec\avcodec.h': No such file or directory 1>h263-1998.cxx 1>c:\opal\plugins\video\h.263-1998../common/ffmpeg.h(155) : fatal 1>error C1083: Cannot open include file: 'libavcodec\avcodec.h': No such file or directory 1>Generating Code... 1>Build log was saved at "file://c:\opal\plugins\Debug\H263-1998\BuildLog.htm file:///c:\opal\plugins\Debug\H263-1998\BuildLog.htm " 1>H.263-1998 (FFMPEG) Video Codec - 2 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
I try to solve this problem by download a "libavcodec" that use some header & DLL file that I copy in "C:\opal\plugin\video\common" but I take below error:
1>------ Build started: Project: H.263-1998 (FFMPEG) Video Codec, Configuration: Debug Win32 ------ 1>Compiling... 1>h263pframe.cxx 1>c:\opal\plugins\video\h.263-1998../common/ffmpeg.h(185) : fatal 1>error C1189: #error : Libavcodec LIBAVCODEC_VERSION_INT too old. 1>h263-1998.cxx 1>c:\opal\plugins\video\h.263-1998../common/ffmpeg.h(185) : fatal 1>error C1189: #error : Libavcodec LIBAVCODEC_VERSION_INT too old. 1>Generating Code... 1>Build log was saved at "file://c:\opal\plugins\Debug\H263-1998\BuildLog.htm file:///c:\opal\plugins\Debug\H263-1998\BuildLog.htm " 1>H.263-1998 (FFMPEG) Video Codec - 2 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Please guide me to i can have H.263 codec with DLL & source over OpenPhone 3.8.2 here.
I am in wait for your response.
Best Regards.
Zahra.
-- Jan Willamowius, jan@willamowius.de, http://www.gnugk.org/
----------------------------------------------------------------------------
-- Index, Search & Analyze Logs and other IT data in Real-Time with Splunk Collect, index and harness all the fast moving IT data generated by your applications, servers and devices whether physical, virtual or in the
cloud.
Deliver compliance at lower cost and gain new business insights. Free Software Download: http://p.sf.net/sfu/splunk-dev2dev _______________________________________________ Opalvoip-devel mailing list Opalvoip-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opalvoip-devel
----------------------------------------------------------------------------
Index, Search & Analyze Logs and other IT data in Real-Time with Splunk Collect, index and harness all the fast moving IT data generated by your applications, servers and devices whether physical, virtual or in the
cloud.
Deliver compliance at lower cost and gain new business insights. Free Software Download: http://p.sf.net/sfu/splunk-dev2dev _______________________________________________ Opalvoip-devel mailing list Opalvoip-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opalvoip-devel