<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Adaptive bitrate for MX6Q VPU H264 encoder? in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/Adaptive-bitrate-for-MX6Q-VPU-H264-encoder/m-p/592388#M89220</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am working on MX6Q/Linux and have to transfer H.264 encoded video though 4G LTE channel.&lt;/P&gt;&lt;P&gt;Currently, the vpu encoder is configured as CBR (constant bitrate).&lt;/P&gt;&lt;P&gt;However, as 4G channel is very dynamic,&lt;/P&gt;&lt;P&gt;so I would like to have vpu encoder output encoded video bitrate adaptively,&lt;/P&gt;&lt;P&gt;i.e, when the 4G network performance is good, increase the VPU encoder's output bitrate,&lt;/P&gt;&lt;P&gt;and decrease it when 4G network performance degrades.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By the way, I'm using Gstreamer framework to implement both the video encoder/sender and video receiver/decoder.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Basically, the sender pipeline is as follows (except some IP addresses are different):&lt;/P&gt;&lt;P&gt;gst-launch -v gstrtpbin name=rtpbin \&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;tvsrc device=/dev/video1 input=2 ! 'video/x-raw-yuv,format=(fourcc)UYVY,width=720,height=576,framerate=25/1' ! mfw_ipucsc ! 'video/x-raw-yuv,format=(fourcc)I420, width=720,height=576,framerate=25/1'! vpuenc codec=avc bitrate=600000 ! video/x-h264,width=720,height=576 ! rtph264pay mtu=512 ! rtpbin.send_rtp_sink_0 \&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;rtpbin.send_rtp_src_0 ! udpsink host=192.168.0.86 port=20000&amp;nbsp; \&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;rtpbin.send_rtcp_src_0 ! udpsink host=192.168.0.86 port=20001 sync=false async=false \&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;udpsrc port=20002 ! rtpbin.recv_rtcp_sink_0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And&amp;nbsp; the video receiver pipeline is basically as follows:&lt;/P&gt;&lt;P&gt;gst-launch -v gstrtpbin name=rtpbin \&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;udpsrc port=20000 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z0JAHqaAtBJkAA\\=\\=\\,aM4wpIAA\", ssrc=(uint)1525174040, payload=(int)96, clock-base=(uint)3621853829, seqnum-base=(uint)62250' ! rtpbin.recv_rtp_sink_0 \&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;rtpbin. ! rtph264depay ! decodebin ! xvimagesink sync=false async=false \&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;udpsrc port=20001 ! rtpbin.recv_rtcp_sink_0 \&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;rtpbin.send_rtcp_src_0 ! udpsink port=5007 sync=false async=false&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can 'gstrtpbin' provide any helpful information to adjust vpuenc's 'bitrate' property dynamically on the sender side?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Robbie&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 06 Sep 2016 03:33:28 GMT</pubDate>
    <dc:creator>RobbieJiang</dc:creator>
    <dc:date>2016-09-06T03:33:28Z</dc:date>
    <item>
      <title>Adaptive bitrate for MX6Q VPU H264 encoder?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Adaptive-bitrate-for-MX6Q-VPU-H264-encoder/m-p/592388#M89220</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am working on MX6Q/Linux and have to transfer H.264 encoded video though 4G LTE channel.&lt;/P&gt;&lt;P&gt;Currently, the vpu encoder is configured as CBR (constant bitrate).&lt;/P&gt;&lt;P&gt;However, as 4G channel is very dynamic,&lt;/P&gt;&lt;P&gt;so I would like to have vpu encoder output encoded video bitrate adaptively,&lt;/P&gt;&lt;P&gt;i.e, when the 4G network performance is good, increase the VPU encoder's output bitrate,&lt;/P&gt;&lt;P&gt;and decrease it when 4G network performance degrades.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By the way, I'm using Gstreamer framework to implement both the video encoder/sender and video receiver/decoder.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Basically, the sender pipeline is as follows (except some IP addresses are different):&lt;/P&gt;&lt;P&gt;gst-launch -v gstrtpbin name=rtpbin \&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;tvsrc device=/dev/video1 input=2 ! 'video/x-raw-yuv,format=(fourcc)UYVY,width=720,height=576,framerate=25/1' ! mfw_ipucsc ! 'video/x-raw-yuv,format=(fourcc)I420, width=720,height=576,framerate=25/1'! vpuenc codec=avc bitrate=600000 ! video/x-h264,width=720,height=576 ! rtph264pay mtu=512 ! rtpbin.send_rtp_sink_0 \&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;rtpbin.send_rtp_src_0 ! udpsink host=192.168.0.86 port=20000&amp;nbsp; \&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;rtpbin.send_rtcp_src_0 ! udpsink host=192.168.0.86 port=20001 sync=false async=false \&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;udpsrc port=20002 ! rtpbin.recv_rtcp_sink_0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And&amp;nbsp; the video receiver pipeline is basically as follows:&lt;/P&gt;&lt;P&gt;gst-launch -v gstrtpbin name=rtpbin \&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;udpsrc port=20000 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z0JAHqaAtBJkAA\\=\\=\\,aM4wpIAA\", ssrc=(uint)1525174040, payload=(int)96, clock-base=(uint)3621853829, seqnum-base=(uint)62250' ! rtpbin.recv_rtp_sink_0 \&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;rtpbin. ! rtph264depay ! decodebin ! xvimagesink sync=false async=false \&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;udpsrc port=20001 ! rtpbin.recv_rtcp_sink_0 \&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;rtpbin.send_rtcp_src_0 ! udpsink port=5007 sync=false async=false&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can 'gstrtpbin' provide any helpful information to adjust vpuenc's 'bitrate' property dynamically on the sender side?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Robbie&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 06 Sep 2016 03:33:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Adaptive-bitrate-for-MX6Q-VPU-H264-encoder/m-p/592388#M89220</guid>
      <dc:creator>RobbieJiang</dc:creator>
      <dc:date>2016-09-06T03:33:28Z</dc:date>
    </item>
    <item>
      <title>Re: Adaptive bitrate for MX6Q VPU H264 encoder?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Adaptive-bitrate-for-MX6Q-VPU-H264-encoder/m-p/592389#M89221</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;UL&gt;&lt;LI&gt;one can set bitrate on the fly, like:&lt;/LI&gt;&lt;LI style="margin: 0in 0in 0.0001pt;"&gt;&lt;H6&gt;&lt;SPAN style="color: #000000;"&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/SPAN&gt;&lt;/H6&gt;&lt;H6&gt;&lt;SPAN style="color: #000000;"&gt; +&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int bitrate = 1000; &lt;/SPAN&gt;&lt;/H6&gt;&lt;H6&gt;&lt;SPAN style="color: #000000;"&gt; +&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (frame_id==100) &lt;/SPAN&gt;&lt;/H6&gt;&lt;H6&gt;&lt;SPAN style="color: #000000;"&gt; +&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vpu_EncGiveCommand(handle, ENC_SET_BITRATE, &amp;amp;bitrate); &lt;/SPAN&gt;&lt;/H6&gt;&lt;H6&gt;&lt;SPAN style="color: #000000;"&gt; +&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/SPAN&gt;&lt;/H6&gt;&lt;H6&gt;&lt;SPAN style="color: #000000;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ret = vpu_EncStartOneFrame(handle, &amp;amp;enc_param);&lt;/SPAN&gt;&lt;/H6&gt;&lt;/LI&gt;&lt;LI style="margin: 0in 0in 0.0001pt;"&gt;&lt;H6&gt;&lt;/H6&gt;&lt;/LI&gt;&lt;LI style="margin: 0in 0in 0.0001pt;"&gt;&lt;H6&gt;&lt;SPAN style="color: #000000;"&gt;refer to the vpu api, the parameter bitrate &lt;SPAN style="font-size: 10pt;"&gt;is the target bit rate in kbps. If 0, there is no rate control and pictures are encoded with a quantization parameter &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #1f497d;"&gt;&lt;SPAN style="font-size: 10pt; color: #000000;"&gt;equal to quantParam in EncParam&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/H6&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P style="margin: 0in; margin-bottom: .0001pt;"&gt;&lt;SPAN style="color: #1f497d;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 16 Nov 2016 09:01:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Adaptive-bitrate-for-MX6Q-VPU-H264-encoder/m-p/592389#M89221</guid>
      <dc:creator>joanxie</dc:creator>
      <dc:date>2016-11-16T09:01:42Z</dc:date>
    </item>
  </channel>
</rss>

