- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I am using the H.263(1996) encoder/decoder for our video conferencing application.
Currently we have a requirement of dynamic bitrate/flow control support in h.263 encoder.
The scenario is :
H.263 encoder is initialized and pumping the encoded data at 512kbps with encoder settings as 176 X 144 , 512kbps, 15 fps.
Now the remote clientsendsFCC (FlowControlCommandof h.245) toencode H.263 data at lower bitrate 128kbps.
Is there any way in intel's IPP to reconfigure bitrate for H.263 encoder.
TIA
Manoj
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello Manoj,
In the current implementation the rate control initialization is done within theencoder Init() function, which means that to change the bitrate one should close and re-initialize the encoder:
enc->Close();
params->info.bitrate = new_bitrate;
enc->Init(params);
Thanks,
Timofei
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks Timofei,
In our video conferencing solution the remote party is sending FCC (FlowControlCommand ref. ITU-T h.245) multiple times during the call, requesting to encode H.263 data at different bit-rates based upon available (network) bandwidth.
We needto avoid multipleClose and Initas it is not feasableafter eastablishment of the call (or during theconversation).
Please suggest something else as we already tried this but not gain.
TIA
Manoj
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
manoj,
I took some snippet of code from the Init function to reinitialize the bit rate when the frame rate dynamically changes. maybe Timofei can correct me if somethings wrong.
the below function is part of the ippVideoEncoderMPEG4 class. You can create a similar thing for H263 and call the function. Do you get FCC only to change the bitrate or to change the frame rate too.
Not sure whether it is totally necessary to Close and init the encoder . Maybe Timofei can answer that.
Ram
void ippVideoEncoderMPEG4::SetRateControlParam(Ipp32u FrameRate)
{
if (mRateControl) {
//mBitsDesiredFrame = (Ipp32s)((Ipp64s)mBitRate * par->TimeIncrement / par->TimeResolution);
mBitsDesiredFrame = (Ipp32s)((Ipp64s)mBitRate / FrameRate);
//mBitsDesiredTotal = 0;
mQuantIVOP = mQuantPVOP = (mSourceWidth * mSourceHeight / mBitsDesiredFrame >> 1) + 1;
mp4_Clip(mQuantIVOP, VOL.short_video_header ? 3 : 2, 31);
mp4_Clip(mQuantPVOP, VOL.short_video_header ? 3 : 2, 31);
mQuantBVOP = (mQuantPVOP * 5 >> 2) + 1;
mp4_Clip(mQuantBVOP, 2, 31);
mRCqh = -1; mRCqs = 0; mRCbf = 0;
if (mRateControl == 2)
mMEflags &= ~ME_4MV;
mRCfa = mBitsDesiredFrame;
mRCfap = 10; //par->TimeResolution / par->TimeIncrement;
mRCqap = 100;
mRCbap = 100;
mRCq = mQuantIVOP;
mRCqa = 1. / (Ipp64f)mRCq;
}
}
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page