€cdocutils.nodes document q)�q}q(U nametypesq}q(Xgstreamer-plugins-limitationsqˆX7loading-firmware-during-initial-boot-without-using-udevqˆXopen-source-gstreamer-overviewqˆX#dsp-c66x-gstreamer-plugin-internalsq ˆXmodifying-the-existing-pluginq ˆXrunning-a-gstreamer-pipelineq ˆXdecode-pipelineq ˆX build-ipumm-1q ˆX&file-to-file-4k-h264-encoding-pipelineqˆX multimediaqNXencode-pipelineqˆXipumm-build-toolsqˆX&capabilities-of-iva-hd-vpe-dsp-and-armqˆXnetwork-loopbackqˆX4software-stack-of-accelerated-codec-encodingdecodingqˆXrebuild-ipumm-firmwareqˆX overview-of-existing-source-codeqˆX build-ipummqˆXsetup-environmentqˆX$rebuilding-and-installing-the-pluginqˆX-list-of-features-not-supported-with-gstreamerqˆXipumm-git-repoqˆXti-provided-gstreamer-pluginsqˆX,unloading-and-loading-remotecores-at-runtimeqˆXadding-custom-dsp-kernelsqˆX)changing-the-remotecore-binary-at-runtimeqˆX)introduction-linux-accelerated-multimediaq ˆXfirmware-loading-and-unloadingq!ˆXfull-hd-at-60fps-encodingq"ˆXmulti-channel-encodingq#ˆX4visual-representation-of-typical-gstreamer-pipelinesq$ˆX"gstreamer-pipelines-for-multimediaq%ˆX%multimedia-demos-available-via-matrixq&ˆuUsubstitution_defsq'}q(Uparse_messagesq)]q*(cdocutils.nodes system_message q+)�q,}q-(U rawsourceq.UUparentq/cdocutils.nodes section q0)�q1}q2(h.Uh/hUsourceq3Xh/home/gtbldadm/nightlybuilds/processor-sdk-doc/source/linux/Foundational_Components_Multimedia_IVAHD.rstq4Utagnameq5Usectionq6U attributesq7}q8(Udupnamesq9]Uclassesq:]Ubackrefsq;]Uidsq<]q=U multimediaq>aUnamesq?]q@hauUlineqAKUdocumentqBhUchildrenqC]qD(cdocutils.nodes title qE)�qF}qG(h.X MultimediaqHh/h1h3h4h5UtitleqIh7}qJ(h9]h:]h;]h<]h?]uhAKhBhhC]qKcdocutils.nodes Text qLX MultimediaqM…�qN}qO(h.hHh/hFubaubcdocutils.nodes comment qP)�qQ}qR(h.XFhttp://processors.wiki.ti.com/index.php/Processor_Training:_Multimediah/h1h3h4h5UcommentqSh7}qT(U xml:spaceqUUpreserveqVh<]h;]h9]h:]h?]uhAKhBhhC]qWhLXFhttp://processors.wiki.ti.com/index.php/Processor_Training:_MultimediaqX…�qY}qZ(h.Uh/hQubaubcdocutils.nodes rubric q[)�q\}q](h.X Introductionq^h/h1h3h4h5Urubricq_h7}q`(h<]qaU)introduction-linux-accelerated-multimediaqbah;]h9]h:]h?]qch auhANhBhhC]qdhLX Introductionqe…�qf}qg(h.h^h/h\ubaubcdocutils.nodes paragraph qh)�qi}qj(h.XMTI's embedded processors such as AM57xx have following hardware accelerators.qkh/h1h3h4h5U paragraphqlh7}qm(h9]h:]h;]h<]h?]uhAK hBhhC]qnhLXMTI's embedded processors such as AM57xx have following hardware accelerators.qo…�qp}qq(h.hkh/hiubaubcdocutils.nodes bullet_list qr)�qs}qt(h.Uh/h1h3h4h5U bullet_listquh7}qv(UbulletqwX-h<]h;]h9]h:]h?]uhAK hBhhC]qx(cdocutils.nodes list_item qy)�qz}q{(h.XPIVA (Image and Video Accelerator) for accelerating multimedia encode and decode.h/hsh3h4h5U list_itemq|h7}q}(h9]h:]h;]h<]h?]uhANhBhhC]q~hh)�q}q€(h.XPIVA (Image and Video Accelerator) for accelerating multimedia encode and decode.q�h/hzh3h4h5hlh7}q‚(h9]h:]h;]h<]h?]uhAK hC]qƒhLXPIVA (Image and Video Accelerator) for accelerating multimedia encode and decode.q„…�q…}q†(h.h�h/hubaubaubhy)�q‡}qˆ(h.XTVPE (Video Processing Engine) for Scaling, Color Space Conversion and Deinterlacing.h/hsh3h4h5h|h7}q‰(h9]h:]h;]h<]h?]uhANhBhhC]qŠhh)�q‹}qŒ(h.XTVPE (Video Processing Engine) for Scaling, Color Space Conversion and Deinterlacing.q�h/h‡h3h4h5hlh7}qŽ(h9]h:]h;]h<]h?]uhAKhC]q�hLXTVPE (Video Processing Engine) for Scaling, Color Space Conversion and Deinterlacing.q�…�q‘}q’(h.h�h/h‹ubaubaubhy)�q“}q”(h.XQC66x DSP cores for offloading certain image/video and/or voice/audio processing. h/hsh3h4h5h|h7}q•(h9]h:]h;]h<]h?]uhANhBhhC]q–hh)�q—}q˜(h.XPC66x DSP cores for offloading certain image/video and/or voice/audio processing.q™h/h“h3h4h5hlh7}qš(h9]h:]h;]h<]h?]uhAKhC]q›hLXPC66x DSP cores for offloading certain image/video and/or voice/audio processing.qœ…�q�}qž(h.h™h/h—ubaubaubeubhh)�qŸ}q (h.XIn order to make it easy for customers to write applications, and to leverage open source elements that provide functionality such as AVI stream demuxing, audio encode/decode, etc, TI's PROCESSOR-SDK supplies ARM based GStreamer plugins that abstracts the hardware accelerator offload.q¡h/h1h3h4h5hlh7}q¢(h9]h:]h;]h<]h?]uhAKhBhhC]q£hLXIn order to make it easy for customers to write applications, and to leverage open source elements that provide functionality such as AVI stream demuxing, audio encode/decode, etc, TI's PROCESSOR-SDK supplies ARM based GStreamer plugins that abstracts the hardware accelerator offload.q¤…�q¥}q¦(h.h¡h/hŸubaubhh)�q§}q¨(h.X>This multimedia training page will cover the following topics.q©h/h1h3h4h5hlh7}qª(h9]h:]h;]h<]h?]uhAKhBhhC]q«hLX>This multimedia training page will cover the following topics.q¬…�q­}q®(h.h©h/h§ubaubhr)�q¯}q°(h.Uh/h1h3h4h5huh7}q±(hwX-h<]h;]h9]h:]h?]uhAKhBhhC]q²(hy)�q³}q´(h.X)Capabilities of IVA-HD, VPE, DSP, and ARMqµh/h¯h3h4h5h|h7}q¶(h9]h:]h;]h<]h?]uhANhBhhC]q·hh)�q¸}q¹(h.hµh/h³h3h4h5hlh7}qº(h9]h:]h;]h<]h?]uhAKhC]q»hLX)Capabilities of IVA-HD, VPE, DSP, and ARMq¼…�q½}q¾(h.hµh/h¸ubaubaubhy)�q¿}qÀ(h.X,Out of Box Multimedia Demos in PROCESSOR-SDKqÁh/h¯h3h4h5h|h7}qÂ(h9]h:]h;]h<]h?]uhANhBhhC]qÃhh)�qÄ}qÅ(h.hÁh/h¿h3h4h5hlh7}qÆ(h9]h:]h;]h<]h?]uhAKhC]qÇhLX,Out of Box Multimedia Demos in PROCESSOR-SDKqÈ…�qÉ}qÊ(h.hÁh/hÄubaubaubhy)�qË}qÌ(h.X5Software Stack of Accerelated Codec Encoding/DecodingqÍh/h¯h3h4h5h|h7}qÎ(h9]h:]h;]h<]h?]uhANhBhhC]qÏhh)�qÐ}qÑ(h.hÍh/hËh3h4h5hlh7}qÒ(h9]h:]h;]h<]h?]uhAKhC]qÓhLX5Software Stack of Accerelated Codec Encoding/DecodingqÔ…�qÕ}qÖ(h.hÍh/hÐubaubaubhy)�q×}qØ(h.X/Gstreamer Pipelines for Multimedia ApplicationsqÙh/h¯h3h4h5h|h7}qÚ(h9]h:]h;]h<]h?]uhANhBhhC]qÛhh)�qÜ}qÝ(h.hÙh/h×h3h4h5hlh7}qÞ(h9]h:]h;]h<]h?]uhAKhC]qßhLX/Gstreamer Pipelines for Multimedia Applicationsqà…�qá}qâ(h.hÙh/hÜubaubaubhy)�qã}qä(h.XGstreamer Plugins Limitationsqåh/h¯h3h4h5h|h7}qæ(h9]h:]h;]h<]h?]uhANhBhhC]qçhh)�qè}qé(h.håh/hãh3h4h5hlh7}qê(h9]h:]h;]h<]h?]uhAK hC]qëhLXGstreamer Plugins Limitationsqì…�qí}qî(h.håh/hèubaubaubhy)�qï}qð(h.X-List of Features not Supported with Gstreamerqñh/h¯h3h4h5h|h7}qò(h9]h:]h;]h<]h?]uhANhBhhC]qóhh)�qô}qõ(h.hñh/hïh3h4h5hlh7}qö(h9]h:]h;]h<]h?]uhAK!hC]q÷hLX-List of Features not Supported with Gstreamerqø…�qù}qú(h.hñh/hôubaubaubhy)�qû}qü(h.X#DSP C66x Gstreamer Plugin Internalsqýh/h¯h3h4h5h|h7}qþ(h9]h:]h;]h<]h?]uhANhBhhC]qÿhh)�r}r(h.hýh/hûh3h4h5hlh7}r(h9]h:]h;]h<]h?]uhAK"hC]rhLX#DSP C66x Gstreamer Plugin Internalsr…�r}r(h.hýh/jubaubaubhy)�r}r(h.XRebuild IPUMM Firmwarer h/h¯h3h4h5h|h7}r (h9]h:]h;]h<]h?]uhANhBhhC]r hh)�r }r (h.j h/jh3h4h5hlh7}r(h9]h:]h;]h<]h?]uhAK#hC]rhLXRebuild IPUMM Firmwarer…�r}r(h.j h/j ubaubaubhy)�r}r(h.XLoad and Unload Firmware h/h¯h3h4h5h|h7}r(h9]h:]h;]h<]h?]uhANhBhhC]rhh)�r}r(h.XLoad and Unload Firmwarerh/jh3h4h5hlh7}r(h9]h:]h;]h<]h?]uhAK$hC]rhLXLoad and Unload Firmwarer…�r}r(h.jh/jubaubaubeubcdocutils.nodes line_block r)�r }r!(h.Uh/h1h3h4h5U line_blockr"h7}r#(h9]h:]h;]h<]h?]uhAK&hBhhC]r$cdocutils.nodes line r%)�r&}r'(h.UUindentr(Kh/j h3h4h5hAh7}r)(h9]h:]h;]h<]h?]uhAKhBhhC]ubaubh[)�r*}r+(h.X)Capabilities of IVA-HD, VPE, DSP, and ARMr,h/h1h3h4h5h_h7}r-(h<]r.U&capabilities-of-iva-hd-vpe-dsp-and-armr/ah;]h9]h:]h?]r0hauhANhBhhC]r1hLX)Capabilities of IVA-HD, VPE, DSP, and ARMr2…�r3}r4(h.j,h/j*ubaubhh)�r5}r6(h.XuIn PROCESSOR-SDK, IVA-HD, and hence the multimedia encoding and decoding applications, supports the following codecs.r7h/h1h3h4h5hlh7}r8(h9]h:]h;]h<]h?]uhAK+hBhhC]r9hLXuIn PROCESSOR-SDK, IVA-HD, and hence the multimedia encoding and decoding applications, supports the following codecs.r:…�r;}r<(h.j7h/j5ubaubhr)�r=}r>(h.Uh/h1h3h4h5huh7}r?(hwX-h<]h;]h9]h:]h?]uhAK.hBhhC]r@(hy)�rA}rB(h.X)Video Decode: H264, MPEG4, MPEG2, and VC1rCh/j=h3h4h5h|h7}rD(h9]h:]h;]h<]h?]uhANhBhhC]rEhh)�rF}rG(h.jCh/jAh3h4h5hlh7}rH(h9]h:]h;]h<]h?]uhAK.hC]rIhLX)Video Decode: H264, MPEG4, MPEG2, and VC1rJ…�rK}rL(h.jCh/jFubaubaubhy)�rM}rN(h.XVideo Encode: H264, and MPEG4rOh/j=h3h4h5h|h7}rP(h9]h:]h;]h<]h?]uhANhBhhC]rQhh)�rR}rS(h.jOh/jMh3h4h5hlh7}rT(h9]h:]h;]h<]h?]uhAK/hC]rUhLXVideo Encode: H264, and MPEG4rV…�rW}rX(h.jOh/jRubaubaubhy)�rY}rZ(h.XImage Decode: MJPEG h/j=h3h4h5h|h7}r[(h9]h:]h;]h<]h?]uhANhBhhC]r\hh)�r]}r^(h.XImage Decode: MJPEGr_h/jYh3h4h5hlh7}r`(h9]h:]h;]h<]h?]uhAK0hC]rahLXImage Decode: MJPEGrb…�rc}rd(h.j_h/j]ubaubaubeubhh)�re}rf(h.X–Codec datasheet can be downloaded from git repository here - https://git.ti.com/ivimm/ipumm/trees/master/extrel/ti/ivahd_codecs/packages/ti/sdo/codecsh/h1h3h4h5hlh7}rg(h9]h:]h;]h<]h?]uhAK2hBhhC]rh(hLX=Codec datasheet can be downloaded from git repository here - ri…�rj}rk(h.X=Codec datasheet can be downloaded from git repository here - h/jeubcdocutils.nodes reference rl)�rm}rn(h.XYhttps://git.ti.com/ivimm/ipumm/trees/master/extrel/ti/ivahd_codecs/packages/ti/sdo/codecsroh7}rp(Urefurijoh<]h;]h9]h:]h?]uh/jehC]rqhLXYhttps://git.ti.com/ivimm/ipumm/trees/master/extrel/ti/ivahd_codecs/packages/ti/sdo/codecsrr…�rs}rt(h.Uh/jmubah5U referenceruubeubhh)�rv}rw(h.XZVPE supports video operations such as scaling, color space conversion, and de-interlacing.rxh/h1h3h4h5hlh7}ry(h9]h:]h;]h<]h?]uhAK5hBhhC]rzhLXZVPE supports video operations such as scaling, color space conversion, and de-interlacing.r{…�r|}r}(h.jxh/jvubaubhr)�r~}r(h.Uh/h1h3h4h5huh7}r€(hwX-h<]h;]h9]h:]h?]uhAK8hBhhC]r�(hy)�r‚}rƒ(h.X)Supported Input formats: NV12, YUYV, UYVYr„h/j~h3h4h5h|h7}r…(h9]h:]h;]h<]h?]uhANhBhhC]r†hh)�r‡}rˆ(h.j„h/j‚h3h4h5hlh7}r‰(h9]h:]h;]h<]h?]uhAK8hC]rŠhLX)Supported Input formats: NV12, YUYV, UYVYr‹…�rŒ}r�(h.j„h/j‡ubaubaubhy)�rŽ}r�(h.XISupported Output formats: NV12, YUYV, UYVY, RGB24, BGR24, ARGB24, ABGR24 h/j~h3h4h5h|h7}r�(h9]h:]h;]h<]h?]uhANhBhhC]r‘hh)�r’}r“(h.XHSupported Output formats: NV12, YUYV, UYVY, RGB24, BGR24, ARGB24, ABGR24r”h/jŽh3h4h5hlh7}r•(h9]h:]h;]h<]h?]uhAK9hC]r–hLXHSupported Output formats: NV12, YUYV, UYVY, RGB24, BGR24, ARGB24, ABGR24r—…�r˜}r™(h.j”h/j’ubaubaubeubhh)�rš}r›(h.X^DSP is a general purpose programmable core available for offloading signal processing kernels.rœh/h1h3h4h5hlh7}r�(h9]h:]h;]h<]h?]uhAKhLXIVAHD H264 Decoder?…�r@}rA(h.j<h/j:ubaubah5j ubj )�rB}rC(h.Uh7}rD(h9]h:]h;]h<]h?]uh/j2hC]rEhh)�rF}rG(h.X—This demo runs a gstreamer playbin pipeline to decode H264 using IVAHD. The demo plays back audio as well and you can listen if speakers are connected.rHh/jBh3h4h5hlh7}rI(h9]h:]h;]h<]h?]uhAKUhC]rJhLX—This demo runs a gstreamer playbin pipeline to decode H264 using IVAHD. The demo plays back audio as well and you can listen if speakers are connected.rK…�rL}rM(h.jHh/jFubaubah5j ubeh5j1ubj)�rN}rO(h.Uh7}rP(h9]h:]h;]h<]h?]uh/jhC]rQ(j )�rR}rS(h.Uh7}rT(h9]h:]h;]h<]h?]uh/jNhC]rUhh)�rV}rW(h.XIVAHD H264 EncoderXh/jRh3h4h5hlh7}rY(h9]h:]h;]h<]h?]uhAKWhC]rZhLXIVAHD H264 Encoder[…�r\}r](h.jXh/jVubaubah5j ubj )�r^}r_(h.Uh7}r`(h9]h:]h;]h<]h?]uh/jNhC]rahh)�rb}rc(h.X�This demo runs a gstreamer pipeline to do H264 encoding on IVAHD. The input clip is in NV12 format. The output is saved to /home/root directoryrdh/j^h3h4h5hlh7}re(h9]h:]h;]h<]h?]uhAKWhC]rfhLX�This demo runs a gstreamer pipeline to do H264 encoding on IVAHD. The input clip is in NV12 format. The output is saved to /home/root directoryrg…�rh}ri(h.jdh/jbubaubah5j ubeh5j1ubj)�rj}rk(h.Uh7}rl(h9]h:]h;]h<]h?]uh/jhC]rm(j )�rn}ro(h.Uh7}rp(h9]h:]h;]h<]h?]uh/jjhC]rqhh)�rr}rs(h.X AAC Decoderth/jnh3h4h5hlh7}ru(h9]h:]h;]h<]h?]uhAKYhC]rvhLX AAC Decoderw…�rx}ry(h.jth/jrubaubah5j ubj )�rz}r{(h.Uh7}r|(h9]h:]h;]h<]h?]uh/jjhC]r}hh)�r~}r(h.XOThis demo runs a gstreamer playbin pipeline for ARM audio decoding and playout.r€h/jzh3h4h5hlh7}r�(h9]h:]h;]h<]h?]uhAKYhC]r‚hLXOThis demo runs a gstreamer playbin pipeline for ARM audio decoding and playout.rƒ…�r„}r…(h.j€h/j~ubaubah5j ubeh5j1ubj)�r†}r‡(h.Uh7}rˆ(h9]h:]h;]h<]h?]uh/jhC]r‰(j )�rŠ}r‹(h.Uh7}rŒ(h9]h:]h;]h<]h?]uh/j†hC]r�hh)�rŽ}r�(h.XH.265 (HEVC) Decoder�h/jŠh3h4h5hlh7}r‘(h9]h:]h;]h<]h?]uhAK[hC]r’hLXH.265 (HEVC) Decoder“…�r”}r•(h.j�h/jŽubaubah5j ubj )�r–}r—(h.Uh7}r˜(h9]h:]h;]h<]h?]uh/j†hC]r™hh)�rš}r›(h.XbThis demonstrates HEVC decoding on ARM. The gstreamer pipeline decodes and display an H265 stream.rœh/j–h3h4h5hlh7}r�(h9]h:]h;]h<]h?]uhAK[hC]ržhLXbThis demonstrates HEVC decoding on ARM. The gstreamer pipeline decodes and display an H265 stream.rŸ…�r }r¡(h.jœh/jšubaubah5j ubeh5j1ubj)�r¢}r£(h.Uh7}r¤(h9]h:]h;]h<]h?]uh/jhC]r¥(j )�r¦}r§(h.Uh7}r¨(h9]h:]h;]h<]h?]uh/j¢hC]r©hh)�rª}r«(h.X%VIP VPE IVAHD MPEG4 Encode and Decoder¬h/j¦h3h4h5hlh7}r­(h9]h:]h;]h<]h?]uhAK]hC]r®hLX%VIP VPE IVAHD MPEG4 Encode and Decoder¯…�r°}r±(h.j¬h/jªubaubah5j ubj )�r²}r³(h.Uh7}r´(h9]h:]h;]h<]h?]uh/j¢hC]rµhh)�r¶}r·(h.X¹This demonstrates video capture via Video Input Port (VIP), color space conversion and scaling with Video Processing Engine (VPE), IVAHD MPEG4 encoding, IVAHD MPEG4 decoding and displayr¸h/j²h3h4h5hlh7}r¹(h9]h:]h;]h<]h?]uhAK]hC]rºhLX¹This demonstrates video capture via Video Input Port (VIP), color space conversion and scaling with Video Processing Engine (VPE), IVAHD MPEG4 encoding, IVAHD MPEG4 decoding and displayr»…�r¼}r½(h.j¸h/j¶ubaubah5j ubeh5j1ubj)�r¾}r¿(h.Uh7}rÀ(h9]h:]h;]h<]h?]uh/jhC]rÁ(j )�rÂ}rÃ(h.Uh7}rÄ(h9]h:]h;]h<]h?]uh/j¾hC]rÅhh)�rÆ}rÇ(h.XDSP C66 Image ProcessingrÈh/jÂh3h4h5hlh7}rÉ(h9]h:]h;]h<]h?]uhAK_hC]rÊhLXDSP C66 Image ProcessingrË…�rÌ}rÍ(h.jÈh/jÆubaubah5j ubj )�rÎ}rÏ(h.Uh7}rÐ(h9]h:]h;]h<]h?]uh/j¾hC]rÑhh)�rÒ}rÓ(h.XmThis demonstrates the use of DSP C66x plugin (dsp66videokernel) for offloading image processing tasks to DSP.rÔh/jÎh3h4h5hlh7}rÕ(h9]h:]h;]h<]h?]uhAK_hC]rÖhLXmThis demonstrates the use of DSP C66x plugin (dsp66videokernel) for offloading image processing tasks to DSP.r×…�rØ}rÙ(h.jÔh/jÒubaubah5j ubeh5j1ubeh5UtbodyrÚubeh5UtgrouprÛubaubj)�rÜ}rÝ(h.Uh/h1h3h4h5j"h7}rÞ(h9]h:]h;]h<]h?]uhAKbhBhhC]rßj%)�rà}rá(h.Uj(Kh/jÜh3h4h5hAh7}râ(h9]h:]h;]h<]h?]uhAKhBhhC]ubaubh[)�rã}rä(h.X5Software Stack of Accelerated Codec Encoding/Decodingråh/h1h3h4h5h_h7}ræ(h<]rçU4software-stack-of-accelerated-codec-encodingdecodingrèah;]h9]h:]h?]réhauhANhBhhC]rêhLX5Software Stack of Accelerated Codec Encoding/Decodingrë…�rì}rí(h.jåh/jãubaubhh)�rî}rï(h.XAs shown in the figure below, the software stack of the accelerated codec encoding/decoding runs on two subsystems: MPU subsystem on ARM-A15, and IPU subsystem on ARM-M4. The two subsystems communicate with each other through RPMSG. At the highest level in MPU subsystem on ARM-A15, there is Linux user space application which is based on Gstreamer. GStreamer is an open source framework that simplifies the development of multimedia applications. The GStreamer library loads and interfaces with the TI GStreamer plugin (GST-Ducati plugin), which handles all the details specific to use of the hardware accelerator. Specifically, TI GStreamer plugin interfaces libdce in user space. On one hand, libdec interacts with libdrm in user space for displaying video in Wayland window system. On the other hand, libdce interfaces with RPMSG in Linux kernel to communicate with the IPU subsystem on ARM-M4. The IPU subsystem builds on SYS/BIOS RTOS and runs IVAHD video/image codecs, utilizing framework components and codec engine.rðh/h1h3h4h5hlh7}rñ(h9]h:]h;]h<]h?]uhAKghBhhC]ròhLXAs shown in the figure below, the software stack of the accelerated codec encoding/decoding runs on two subsystems: MPU subsystem on ARM-A15, and IPU subsystem on ARM-M4. The two subsystems communicate with each other through RPMSG. At the highest level in MPU subsystem on ARM-A15, there is Linux user space application which is based on Gstreamer. GStreamer is an open source framework that simplifies the development of multimedia applications. The GStreamer library loads and interfaces with the TI GStreamer plugin (GST-Ducati plugin), which handles all the details specific to use of the hardware accelerator. Specifically, TI GStreamer plugin interfaces libdce in user space. On one hand, libdec interacts with libdrm in user space for displaying video in Wayland window system. On the other hand, libdce interfaces with RPMSG in Linux kernel to communicate with the IPU subsystem on ARM-M4. The IPU subsystem builds on SYS/BIOS RTOS and runs IVAHD video/image codecs, utilizing framework components and codec engine.ró…�rô}rõ(h.jðh/jîubaubcdocutils.nodes raw rö)�r÷}rø(h.X
h/h1h3h4h5Urawrùh7}rú(UformatXhtmlhUhVh<]h;]h9]h:]h?]uhAKwhBhhC]rûhLX
rü…�rý}rþ(h.Uh/j÷ubaubjö)�rÿ}r(h.X
h/h1h3h4h5jùh7}r(UformatXhtmlhUhVh<]h;]h9]h:]h?]uhAK{hBhhC]rhLX
r…�r}r(h.Uh/jÿubaubcdocutils.nodes image r)�r}r(h.X1.. Image:: ../images/Mm_software_overview_v3.png h/h1h3h4h5Uimager h7}r (UuriX+linux/../images/Mm_software_overview_v3.pngr h<]h;]h9]h:]U candidatesr }r U*j sh?]uhAK€hBhhC]ubjö)�r}r(h.X
h/h1h3h4h5jùh7}r(UformatXhtmlhUhVh<]h;]h9]h:]h?]uhAK�hBhhC]rhLX
r…�r}r(h.Uh/jubaubjö)�r}r(h.X
h/h1h3h4h5jùh7}r(UformatXhtmlhUhVh<]h;]h9]h:]h?]uhAK…hBhhC]rhLX
r…�r}r(h.Uh/jubaubhh)�r}r(h.X-**Overview of the Multimedia Software Stack**rh/h1h3h4h5hlh7}r(h9]h:]h;]h<]h?]uhAK‰hBhhC]r j)�r!}r"(h.jh7}r#(h9]h:]h;]h<]h?]uh/jhC]r$hLX)Overview of the Multimedia Software Stackr%…�r&}r'(h.Uh/j!ubah5jubaubhh)�r(}r)(h.XKThe Multimedia software contains many software components. Some are developed by Texas Instruments and some are developed in and by the open source community(White). TI contributes, and sometimes even maintains, some of these open source community projects, but the support model is different from a project developed solely by TI.r*h/h1h3h4h5hlh7}r+(h9]h:]h;]h<]h?]uhAK‹hBhhC]r,hLXKThe Multimedia software contains many software components. Some are developed by Texas Instruments and some are developed in and by the open source community(White). TI contributes, and sometimes even maintains, some of these open source community projects, but the support model is different from a project developed solely by TI.r-…�r.}r/(h.j*h/j(ubaubh[)�r0}r1(h.X"Gstreamer Pipelines for Multimediar2h/h1h3h4h5h_h7}r3(h<]r4U"gstreamer-pipelines-for-multimediar5ah;]h9]h:]h?]r6h%auhANhBhhC]r7hLX"Gstreamer Pipelines for Multimediar8…�r9}r:(h.j2h/j0ubaubh[)�r;}r<(h.XOpen Source GStreamer Overviewr=h/h1h3h4h5h_h7}r>(h<]r?Uopen-source-gstreamer-overviewr@ah;]h9]h:]h?]rAhauhANhBhhC]rBhLXOpen Source GStreamer OverviewrC…�rD}rE(h.j=h/j;ubaubhh)�rF}rG(h.XZGStreamer is an open source framework that simplifies the development of multimedia applications, such as media players and capture encoders. It encapsulates existing multimedia software components, such as codecs, filters, and platform-specific I/O operations, by using a standard interface and providing a uniform framework across applications.rHh/h1h3h4h5hlh7}rI(h9]h:]h;]h<]h?]uhAK—hBhhC]rJhLXZGStreamer is an open source framework that simplifies the development of multimedia applications, such as media players and capture encoders. It encapsulates existing multimedia software components, such as codecs, filters, and platform-specific I/O operations, by using a standard interface and providing a uniform framework across applications.rK…�rL}rM(h.jHh/jFubaubhh)�rN}rO(h.XÕThe modular nature of GStreamer facilitates the addition of new functionality, transparent inclusion of component advancements and allows for flexibility in application development and testing. Processing nodes are implemented via Gstreamer plugins with several sink and/or source pads. Many plugins are running as ARM software implementation, but for more complex SoCs certain functions are better executed on hardware accelerated IPs like IVAHD (video codecs) or VPE.rPh/h1h3h4h5hlh7}rQ(h9]h:]h;]h<]h?]uhAK�hBhhC]rRhLXÕThe modular nature of GStreamer facilitates the addition of new functionality, transparent inclusion of component advancements and allows for flexibility in application development and testing. Processing nodes are implemented via Gstreamer plugins with several sink and/or source pads. Many plugins are running as ARM software implementation, but for more complex SoCs certain functions are better executed on hardware accelerated IPs like IVAHD (video codecs) or VPE.rS…�rT}rU(h.jPh/jNubaubhh)�rV}rW(h.XäGstreamer is multimedia framework based on data flow paradigm. It allows easy plugin registration just by deploying new shared objects to /usr/lib/gstreamer-1.0 folder. The shared libraries in this folder are scanned for reserved data structures identifying capabilities of individual plugins. Individual processing nodes can be interconnected as a pipeline in run-time creating complex topologies. Node interfacing compatibility is verified at that time - before pipeline is started.rXh/h1h3h4h5hlh7}rY(h9]h:]h;]h<]h?]uhAK¥hBhhC]rZhLXäGstreamer is multimedia framework based on data flow paradigm. It allows easy plugin registration just by deploying new shared objects to /usr/lib/gstreamer-1.0 folder. The shared libraries in this folder are scanned for reserved data structures identifying capabilities of individual plugins. Individual processing nodes can be interconnected as a pipeline in run-time creating complex topologies. Node interfacing compatibility is verified at that time - before pipeline is started.r[…�r\}r](h.jXh/jVubaubhh)�r^}r_(h.XûGStreamer brings a lot of value-added features to Processor SDK, including audio encoding and decoding, audio and video synchronization, interaction with a wide variety of open source plugins (muxers, demuxers, codecs, and filters). New GStreamer features are continuously being added, and the core libraries are actively supported by participants in the GStreamer community. Additional information about the GStreamer framework is available on the GStreamer project site: http://gstreamer.freedesktop.org/.h/h1h3h4h5hlh7}r`(h9]h:]h;]h<]h?]uhAK­hBhhC]ra(hLXÙGStreamer brings a lot of value-added features to Processor SDK, including audio encoding and decoding, audio and video synchronization, interaction with a wide variety of open source plugins (muxers, demuxers, codecs, and filters). New GStreamer features are continuously being added, and the core libraries are actively supported by participants in the GStreamer community. Additional information about the GStreamer framework is available on the GStreamer project site: rb…�rc}rd(h.XÙGStreamer brings a lot of value-added features to Processor SDK, including audio encoding and decoding, audio and video synchronization, interaction with a wide variety of open source plugins (muxers, demuxers, codecs, and filters). New GStreamer features are continuously being added, and the core libraries are actively supported by participants in the GStreamer community. Additional information about the GStreamer framework is available on the GStreamer project site: h/j^ubjl)�re}rf(h.X!http://gstreamer.freedesktop.org/rgh7}rh(Urefurijgh<]h;]h9]h:]h?]uh/j^hC]rihLX!http://gstreamer.freedesktop.org/rj…�rk}rl(h.Uh/jeubah5juubhLX.…�rm}rn(h.X.h/j^ubeubh[)�ro}rp(h.XTI Provided Gstreamer Pluginsrqh/h1h3h4h5h_h7}rr(h<]rsUti-provided-gstreamer-pluginsrtah;]h9]h:]h?]ruhauhANhBhhC]rvhLXTI Provided Gstreamer Pluginsrw…�rx}ry(h.jqh/joubaubhh)�rz}r{(h.X6One benefit of using GStreamer as a multimedia framework is that the core libraries already build and run on ARM Linux. Only a GStreamer plugin is required to enable additional hardware features on TI's embedded processors with both ARM and hardware accelerators for multimedia. The TI GStreamer plugins provide elements for GStreamer pipelines that enable the use of plug-and-play IVAHD codecs, certain hardware-accelerated operations such as video frame resizing, de-interlacing, and color space conversion, image processing offloaded to DSP, and ARM based HEVC decoding. The TI GStreamer plugins provide baseline support for eXpressDSPTM Digital Media (xDM1) plug-and-play codecs. Multiple xDM versions are supported, making it easy to migrate between codecs that conform to different versions of the xDM specification.r|h/h1h3h4h5hlh7}r}(h9]h:]h;]h<]h?]uhAK¹hBhhC]r~hLX6One benefit of using GStreamer as a multimedia framework is that the core libraries already build and run on ARM Linux. Only a GStreamer plugin is required to enable additional hardware features on TI's embedded processors with both ARM and hardware accelerators for multimedia. The TI GStreamer plugins provide elements for GStreamer pipelines that enable the use of plug-and-play IVAHD codecs, certain hardware-accelerated operations such as video frame resizing, de-interlacing, and color space conversion, image processing offloaded to DSP, and ARM based HEVC decoding. The TI GStreamer plugins provide baseline support for eXpressDSPTM Digital Media (xDM1) plug-and-play codecs. Multiple xDM versions are supported, making it easy to migrate between codecs that conform to different versions of the xDM specification.r…�r€}r�(h.j|h/jzubaubhh)�r‚}rƒ(h.XBBelow is a list of TI GStreamer plugins provided in Processor SDK.r„h/h1h3h4h5hlh7}r…(h9]h:]h;]h<]h?]uhAKÇhBhhC]r†hLXBBelow is a list of TI GStreamer plugins provided in Processor SDK.r‡…�rˆ}r‰(h.j„h/j‚ubaubhr)�rŠ}r‹(h.Uh/h1h3h4h5huh7}rŒ(hwX-h<]h;]h9]h:]h?]uhAKÉhBhhC]r�hy)�rŽ}r�(h.XDucati Decoding and Encoding h/jŠh3h4h5h|h7}r�(h9]h:]h;]h<]h?]uhANhBhhC]r‘hh)�r’}r“(h.XDucati Decoding and Encodingr”h/jŽh3h4h5hlh7}r•(h9]h:]h;]h<]h?]uhAKÉhC]r–hLXDucati Decoding and Encodingr—…�r˜}r™(h.j”h/j’ubaubaubaubcdocutils.nodes enumerated_list rš)�r›}rœ(h.Uh/h1h3h4h5Uenumerated_listr�h7}rž(UsuffixrŸU.h<]h;]h9]Uprefixr Uh:]h?]Uenumtyper¡Uarabicr¢uhAKËhBhhC]r£(hy)�r¤}r¥(h.X ducatih264decr¦h/j›h3h4h5h|h7}r§(h9]h:]h;]h<]h?]uhANhBhhC]r¨hh)�r©}rª(h.j¦h/j¤h3h4h5hlh7}r«(h9]h:]h;]h<]h?]uhAKËhC]r¬hLX ducatih264decr­…�r®}r¯(h.j¦h/j©ubaubaubhy)�r°}r±(h.Xducatimpeg4decr²h/j›h3h4h5h|h7}r³(h9]h:]h;]h<]h?]uhANhBhhC]r´hh)�rµ}r¶(h.j²h/j°h3h4h5hlh7}r·(h9]h:]h;]h<]h?]uhAKÌhC]r¸hLXducatimpeg4decr¹…�rº}r»(h.j²h/jµubaubaubhy)�r¼}r½(h.Xducatimpeg2decr¾h/j›h3h4h5h|h7}r¿(h9]h:]h;]h<]h?]uhANhBhhC]rÀhh)�rÁ}rÂ(h.j¾h/j¼h3h4h5hlh7}rÃ(h9]h:]h;]h<]h?]uhAKÍhC]rÄhLXducatimpeg2decrÅ…�rÆ}rÇ(h.j¾h/jÁubaubaubhy)�rÈ}rÉ(h.X ducativc1decrÊh/j›h3h4h5h|h7}rË(h9]h:]h;]h<]h?]uhANhBhhC]rÌhh)�rÍ}rÎ(h.jÊh/jÈh3h4h5hlh7}rÏ(h9]h:]h;]h<]h?]uhAKÎhC]rÐhLX ducativc1decrÑ…�rÒ}rÓ(h.jÊh/jÍubaubaubhy)�rÔ}rÕ(h.X ducatijpegdecrÖh/j›h3h4h5h|h7}r×(h9]h:]h;]h<]h?]uhANhBhhC]rØhh)�rÙ}rÚ(h.jÖh/jÔh3h4h5hlh7}rÛ(h9]h:]h;]h<]h?]uhAKÏhC]rÜhLX ducatijpegdecrÝ…�rÞ}rß(h.jÖh/jÙubaubaubhy)�rà}rá(h.X ducatih264encrâh/j›h3h4h5h|h7}rã(h9]h:]h;]h<]h?]uhANhBhhC]rähh)�rå}ræ(h.jâh/jàh3h4h5hlh7}rç(h9]h:]h;]h<]h?]uhAKÐhC]rèhLX ducatih264encré…�rê}rë(h.jâh/jåubaubaubhy)�rì}rí(h.Xducatimpeg4enc h/j›h3h4h5h|h7}rî(h9]h:]h;]h<]h?]uhANhBhhC]rïhh)�rð}rñ(h.Xducatimpeg4encròh/jìh3h4h5hlh7}ró(h9]h:]h;]h<]h?]uhAKÑhC]rôhLXducatimpeg4encrõ…�rö}r÷(h.jòh/jðubaubaubeubhr)�rø}rù(h.Uh/h1h3h4h5huh7}rú(hwX-h<]h;]h9]h:]h?]uhAKÓhBhhC]rûhy)�rü}rý(h.X Ducati VPE h/jøh3h4h5h|h7}rþ(h9]h:]h;]h<]h?]uhANhBhhC]rÿhh)�r}r(h.X Ducati VPErh/jüh3h4h5hlh7}r(h9]h:]h;]h<]h?]uhAKÓhC]rhLX Ducati VPEr…�r}r(h.jh/jubaubaubaubjš)�r}r (h.Uh/h1h3h4h5j�h7}r (jŸU.h<]h;]h9]j Uh:]h?]j¡j¢uhAKÕhBhhC]r (hy)�r }r (h.Xvperh/jh3h4h5h|h7}r(h9]h:]h;]h<]h?]uhANhBhhC]rhh)�r}r(h.jh/j h3h4h5hlh7}r(h9]h:]h;]h<]h?]uhAKÕhC]rhLXvper…�r}r(h.jh/jubaubaubhy)�r}r(h.Xducatih264decvperh/jh3h4h5h|h7}r(h9]h:]h;]h<]h?]uhANhBhhC]rhh)�r}r(h.jh/jh3h4h5hlh7}r(h9]h:]h;]h<]h?]uhAKÖhC]r hLXducatih264decvper!…�r"}r#(h.jh/jubaubaubhy)�r$}r%(h.Xducatimpeg2decvper&h/jh3h4h5h|h7}r'(h9]h:]h;]h<]h?]uhANhBhhC]r(hh)�r)}r*(h.j&h/j$h3h4h5hlh7}r+(h9]h:]h;]h<]h?]uhAK×hC]r,hLXducatimpeg2decvper-…�r.}r/(h.j&h/j)ubaubaubhy)�r0}r1(h.Xducatimpeg4decvper2h/jh3h4h5h|h7}r3(h9]h:]h;]h<]h?]uhANhBhhC]r4hh)�r5}r6(h.j2h/j0h3h4h5hlh7}r7(h9]h:]h;]h<]h?]uhAKØhC]r8hLXducatimpeg4decvper9…�r:}r;(h.j2h/j5ubaubaubhy)�r<}r=(h.Xducatijpegdecvper>h/jh3h4h5h|h7}r?(h9]h:]h;]h<]h?]uhANhBhhC]r@hh)�rA}rB(h.j>h/j<h3h4h5hlh7}rC(h9]h:]h;]h<]h?]uhAKÙhC]rDhLXducatijpegdecvperE…�rF}rG(h.j>h/jAubaubaubhy)�rH}rI(h.Xducativc1decvpe h/jh3h4h5h|h7}rJ(h9]h:]h;]h<]h?]uhANhBhhC]rKhh)�rL}rM(h.Xducativc1decvperNh/jHh3h4h5hlh7}rO(h9]h:]h;]h<]h?]uhAKÚhC]rPhLXducativc1decvperQ…�rR}rS(h.jNh/jLubaubaubeubhr)�rT}rU(h.Uh/h1h3h4h5huh7}rV(hwX-h<]h;]h9]h:]h?]uhAKÜhBhhC]rWhy)�rX}rY(h.XDSP Image Processing h/jTh3h4h5h|h7}rZ(h9]h:]h;]h<]h?]uhANhBhhC]r[hh)�r\}r](h.XDSP Image Processingr^h/jXh3h4h5hlh7}r_(h9]h:]h;]h<]h?]uhAKÜhC]r`hLXDSP Image Processingra…�rb}rc(h.j^h/j\ubaubaubaubjš)�rd}re(h.Uh/h1h3h4h5j�h7}rf(jŸU.h<]h;]h9]j Uh:]h?]j¡j¢uhAKÞhBhhC]rghy)�rh}ri(h.Xdsp66videokernel h/jdh3h4h5h|h7}rj(h9]h:]h;]h<]h?]uhANhBhhC]rkhh)�rl}rm(h.Xdsp66videokernelrnh/jhh3h4h5hlh7}ro(h9]h:]h;]h<]h?]uhAKÞhC]rphLXdsp66videokernelrq…�rr}rs(h.jnh/jlubaubaubaubhr)�rt}ru(h.Uh/h1h3h4h5huh7}rv(hwX-h<]h;]h9]h:]h?]uhAKàhBhhC]rwhy)�rx}ry(h.XARM HEVC Decoding h/jth3h4h5h|h7}rz(h9]h:]h;]h<]h?]uhANhBhhC]r{hh)�r|}r}(h.XARM HEVC Decodingr~h/jxh3h4h5hlh7}r(h9]h:]h;]h<]h?]uhAKàhC]r€hLXARM HEVC Decodingr�…�r‚}rƒ(h.j~h/j|ubaubaubaubjš)�r„}r…(h.Uh/h1h3h4h5j�h7}r†(jŸU.h<]h;]h9]j Uh:]h?]j¡j¢uhAKâhBhhC]r‡hy)�rˆ}r‰(h.Xh265dec h/j„h3h4h5h|h7}rŠ(h9]h:]h;]h<]h?]uhANhBhhC]r‹hh)�rŒ}r�(h.Xh265decrŽh/jˆh3h4h5hlh7}r�(h9]h:]h;]h<]h?]uhAKâhC]r�hLXh265decr‘…�r’}r“(h.jŽh/jŒubaubaubaubh[)�r”}r•(h.X4Visual Representation of Typical GStreamer Pipelinesr–h/h1h3h4h5h_h7}r—(h<]r˜U4visual-representation-of-typical-gstreamer-pipelinesr™ah;]h9]h:]h?]ršh$auhANhBhhC]r›hLX4Visual Representation of Typical GStreamer Pipelinesrœ…�r�}rž(h.j–h/j”ubaubhh)�rŸ}r (h.X<A typical GStreamer pipeline starts with one or more source elements, uses zero or more filter elements, and ends in a sink or multiple sinks. This section provides visual representation of two typical gstreamer pipelines: 1) multimedia decoding and playout, and 2) video capture, encoding, and network transmission.r¡h/h1h3h4h5hlh7}r¢(h9]h:]h;]h<]h?]uhAKçhBhhC]r£hLX<A typical GStreamer pipeline starts with one or more source elements, uses zero or more filter elements, and ends in a sink or multiple sinks. This section provides visual representation of two typical gstreamer pipelines: 1) multimedia decoding and playout, and 2) video capture, encoding, and network transmission.r¤…�r¥}r¦(h.j¡h/jŸubaubh[)�r§}r¨(h.XDecode Pipeliner©h/h1h3h4h5h_h7}rª(h<]r«Udecode-pipeliner¬ah;]h9]h:]h?]r­h auhANhBhhC]r®hLXDecode Pipeliner¯…�r°}r±(h.j©h/j§ubaubhh)�r²}r³(h.XjThe example pipeline shown in the figure below demonstrates the demuxing and playback of a transport stream. The input is first read using the source element, and then processed by gstreamer playbin2. Inside playbin2, demuxer first demuxes the stream into its audio and video stream components. The video stream is then queued and sent to TI ducati gstreamer plugin for decoding. Finally, it is sent to a video sink to display the decoded video on the screen. The audio stream is queued and then decoded by ARM audio gstreamer plugin, and then reaches its destination at the alsasink element to play the decoded audio.r´h/h1h3h4h5hlh7}rµ(h9]h:]h;]h<]h?]uhAKðhBhhC]r¶hLXjThe example pipeline shown in the figure below demonstrates the demuxing and playback of a transport stream. The input is first read using the source element, and then processed by gstreamer playbin2. Inside playbin2, demuxer first demuxes the stream into its audio and video stream components. The video stream is then queued and sent to TI ducati gstreamer plugin for decoding. Finally, it is sent to a video sink to display the decoded video on the screen. The audio stream is queued and then decoded by ARM audio gstreamer plugin, and then reaches its destination at the alsasink element to play the decoded audio.r·…�r¸}r¹(h.j´h/j²ubaubjö)�rº}r»(h.X
h/h1h3h4h5jùh7}r¼(UformatXhtmlhUhVh<]h;]h9]h:]h?]uhAKúhBhhC]r½hLX
r¾…�r¿}rÀ(h.Uh/jºubaubjö)�rÁ}rÂ(h.X
h/h1h3h4h5jùh7}rÃ(UformatXhtmlhUhVh<]h;]h9]h:]h?]uhAKþhBhhC]rÄhLX
rÅ…�rÆ}rÇ(h.Uh/jÁubaubj)�rÈ}rÉ(h.X/.. Image:: ../images/Gst_decode_playout_v2.png h/h1h3h4h5j h7}rÊ(UuriX)linux/../images/Gst_decode_playout_v2.pngrËh<]h;]h9]h:]j }rÌU*jËsh?]uhAMhBhhC]ubjö)�rÍ}rÎ(h.X
h/h1h3h4h5jùh7}rÏ(UformatXhtmlhUhVh<]h;]h9]h:]h?]uhAMhBhhC]rÐhLX
rÑ…�rÒ}rÓ(h.Uh/jÍubaubjö)�rÔ}rÕ(h.X
h/h1h3h4h5jùh7}rÖ(UformatXhtmlhUhVh<]h;]h9]h:]h?]uhAMhBhhC]r×hLX
rØ…�rÙ}rÚ(h.Uh/jÔubaubj)�rÛ}rÜ(h.Uh/h1h3h4h5j"h7}rÝ(h9]h:]h;]h<]h?]uhAM hBhhC]rÞj%)�rß}rà(h.Uj(Kh/jÛh3h4h5hAh7}rá(h9]h:]h;]h<]h?]uhAKhBhhC]ubaubh[)�râ}rã(h.XEncode Pipelineräh/h1h3h4h5h_h7}rå(h<]ræUencode-pipelinerçah;]h9]h:]h?]rèhauhANhBhhC]réhLXEncode Pipelinerê…�rë}rì(h.jäh/jâubaubhh)�rí}rî(h.X7The example pipeline shown in the figure below demonstrates video capture, encode, muxing, and network transmission. The camera capture is processed by VPE, and then queued for video encoding. After that, it is queued for video parsing, muxing. Finally, it is sent to network through RTP payloader and udp sink.rïh/h1h3h4h5hlh7}rð(h9]h:]h;]h<]h?]uhAMhBhhC]rñhLX7The example pipeline shown in the figure below demonstrates video capture, encode, muxing, and network transmission. The camera capture is processed by VPE, and then queued for video encoding. After that, it is queued for video parsing, muxing. Finally, it is sent to network through RTP payloader and udp sink.rò…�ró}rô(h.jïh/jíubaubjö)�rõ}rö(h.X
h/h1h3h4h5jùh7}r÷(UformatXhtmlhUhVh<]h;]h9]h:]h?]uhAMhBhhC]røhLX
rù…�rú}rû(h.Uh/jõubaubjö)�rü}rý(h.X
h/h1h3h4h5jùh7}rþ(UformatXhtmlhUhVh<]h;]h9]h:]h?]uhAMhBhhC]rÿhLX
r…�r}r(h.Uh/jüubaubj)�r}r(h.X4.. Image:: ../images/Gst_capture_encode_network.png h/h1h3h4h5j h7}r(UuriX.linux/../images/Gst_capture_encode_network.pngrh<]h;]h9]h:]j }rU*jsh?]uhAM hBhhC]ubjö)�r}r (h.X
h/h1h3h4h5jùh7}r (UformatXhtmlhUhVh<]h;]h9]h:]h?]uhAM!hBhhC]r hLX
r …�r }r(h.Uh/jubaubjö)�r}r(h.X
h/h1h3h4h5jùh7}r(UformatXhtmlhUhVh<]h;]h9]h:]h?]uhAM%hBhhC]rhLX
r…�r}r(h.Uh/jubaubhh)�r}r(h.XGstreamer test pipeline:rh/h1h3h4h5hlh7}r(h9]h:]h;]h<]h?]uhAM)hBhhC]rhLXGstreamer test pipeline:r…�r}r(h.jh/jubaubhh)�r}r(h.XG--need someone to add this code to make it work. only showing a figure.r h/h1h3h4h5hlh7}r!(h9]h:]h;]h<]h?]uhAM+hBhhC]r"hLXG--need someone to add this code to make it work. only showing a figure.r#…�r$}r%(h.j h/jubaubh[)�r&}r'(h.XRunning a gstreamer pipeliner(h/h1h3h4h5h_h7}r)(h<]r*Urunning-a-gstreamer-pipeliner+ah;]h9]h:]h?]r,h auhANhBhhC]r-hLXRunning a gstreamer pipeliner.…�r/}r0(h.j(h/j&ubaubhh)�r1}r2(h.XhGstreamer pipelines can also run from command line. In order to do so, exit Weston by pressing Ctrl-Alt-Backspace from the keyboard which connects to the EVM. Then, if the LCD screen stays in "Please wait...", press Ctrl-Alt-F1 to go to the command line on LCD console. After that, the command line can be used from serial console, SSH console, or LCD console.r3h/h1h3h4h5hlh7}r4(h9]h:]h;]h<]h?]uhAM0hBhhC]r5hLXhGstreamer pipelines can also run from command line. In order to do so, exit Weston by pressing Ctrl-Alt-Backspace from the keyboard which connects to the EVM. Then, if the LCD screen stays in "Please wait...", press Ctrl-Alt-F1 to go to the command line on LCD console. After that, the command line can be used from serial console, SSH console, or LCD console.r6…�r7}r8(h.j3h/j1ubaubhh)�r9}r:(h.XžOne can run an audio video file using the gstreamer playbin from the console. Currently, the supported Audio/video sink is kmssink, waylandsink and alsassink.r;h/h1h3h4h5hlh7}r<(h9]h:]h;]h<]h?]uhAM7hBhhC]r=hLXžOne can run an audio video file using the gstreamer playbin from the console. Currently, the supported Audio/video sink is kmssink, waylandsink and alsassink.r>…�r?}r@(h.j;h/j9ubaubcdocutils.nodes literal_block rA)�rB}rC(h.Xmkmssink: target # gst-launch-1.0 playbin uri=file:/// video-sink=kmssink audio-sink=alsasinkh/h1h3h4h5U literal_blockrDh7}rE(hUhVh<]h;]h9]h:]h?]uhAM=hBhhC]rFhLXmkmssink: target # gst-launch-1.0 playbin uri=file:/// video-sink=kmssink audio-sink=alsasinkrG…�rH}rI(h.Uh/jBubaubjA)�rJ}rK(h.X¦waylandsink: 1. refer Wayland/Weston to start the weston 2. target # gst-launch-1.0 playbin uri=file:/// video-sink=waylandsink audio-sink=alsasinkh/h1h3h4h5jDh7}rL(hUhVh<]h;]h9]h:]h?]uhAMBhBhhC]rMhLX¦waylandsink: 1. refer Wayland/Weston to start the weston 2. target # gst-launch-1.0 playbin uri=file:/// video-sink=waylandsink audio-sink=alsasinkrN…�rO}rP(h.Uh/jJubaubhh)�rQ}rR(h.XSThe following pipelines show how to use vpe for scaling and color space conversion.rSh/h1h3h4h5hlh7}rT(h9]h:]h;]h<]h?]uhAMFhBhhC]rUhLXSThe following pipelines show how to use vpe for scaling and color space conversion.rV…�rW}rX(h.jSh/jQubaubjA)�rY}rZ(h.Xà 1. Decode-> Scale->Display target # gst-launch-1.0 -v filesrc location=example_h264.mp4 ! qtdemux ! h264parse ! \ ducatih264dec ! vpe ! 'video/x-raw, format=(string)NV12, width=(int)720, height=(int)480' ! kmssinkh/h1h3h4h5jDh7}r[(hUhVh<]h;]h9]h:]h?]uhAMKhBhhC]r\hLXà 1. Decode-> Scale->Display target # gst-launch-1.0 -v filesrc location=example_h264.mp4 ! qtdemux ! h264parse ! \ ducatih264dec ! vpe ! 'video/x-raw, format=(string)NV12, width=(int)720, height=(int)480' ! kmssinkr]…�r^}r_(h.Uh/jYubaubjA)�r`}ra(h.Xì 2. Color space conversion: target # gst-launch-1.0 -v videotestsrc ! 'video/x-raw, format=(string)YUY2, width= \ (int)1280, height=(int)720' ! vpe ! 'video/x-raw, format=(string)NV12, width=(int)720, height=(int)480' \ ! kmssinkh/h1h3h4h5jDh7}rb(hUhVh<]h;]h9]h:]h?]uhAMQhBhhC]rchLXì 2. Color space conversion: target # gst-launch-1.0 -v videotestsrc ! 'video/x-raw, format=(string)YUY2, width= \ (int)1280, height=(int)720' ! vpe ! 'video/x-raw, format=(string)NV12, width=(int)720, height=(int)480' \ ! kmssinkrd…�re}rf(h.Uh/j`ubaubcdocutils.nodes note rg)�rh}ri(h.X\1. While using playbin for playing the stream, vpe plugin is automatically picked up. However vpe cannot be used with playbin for scaling. For utilizing scaling capabilities of vpe, using manual pipeline given above is recommended. 2. Waylandsink and Kmssink uses the cropping metadata set on buffers and does not require vpe plugin for croppingh/h1h3Nh5Unoterjh7}rk(h9]h:]h;]h<]h?]uhANhBhhC]rljš)�rm}rn(h.Uh7}ro(jŸU.h<]h;]h9]j Uh:]h?]j¡j¢uh/jhhC]rp(hy)�rq}rr(h.XäWhile using playbin for playing the stream, vpe plugin is automatically picked up. However vpe cannot be used with playbin for scaling. For utilizing scaling capabilities of vpe, using manual pipeline given above is recommended.h7}rs(h9]h:]h;]h<]h?]uh/jmhC]rthh)�ru}rv(h.XäWhile using playbin for playing the stream, vpe plugin is automatically picked up. However vpe cannot be used with playbin for scaling. For utilizing scaling capabilities of vpe, using manual pipeline given above is recommended.rwh/jqh3h4h5hlh7}rx(h9]h:]h;]h<]h?]uhAMWhC]ryhLXäWhile using playbin for playing the stream, vpe plugin is automatically picked up. However vpe cannot be used with playbin for scaling. For utilizing scaling capabilities of vpe, using manual pipeline given above is recommended.rz…�r{}r|(h.jwh/juubaubah5h|ubhy)�r}}r~(h.XnWaylandsink and Kmssink uses the cropping metadata set on buffers and does not require vpe plugin for croppingrh7}r€(h9]h:]h;]h<]h?]uh/jmhC]r�hh)�r‚}rƒ(h.jh/j}h3h4h5hlh7}r„(h9]h:]h;]h<]h?]uhAMYhC]r…hLXnWaylandsink and Kmssink uses the cropping metadata set on buffers and does not require vpe plugin for croppingr†…�r‡}rˆ(h.jh/j‚ubaubah5h|ubeh5j�ubaubhh)�r‰}rŠ(h.X�The following pipelines show how to use v4l2src and ducatimpeg4enc elements to capture video from VIP and encode captured video respectively.r‹h/h1h3h4h5hlh7}rŒ(h9]h:]h;]h<]h?]uhAM[hBhhC]r�hLX�The following pipelines show how to use v4l2src and ducatimpeg4enc elements to capture video from VIP and encode captured video respectively.rŽ…�r�}r�(h.j‹h/j‰ubaubjA)�r‘}r’(h.XèCapture and Display Fullscreen target # gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=1000 io-mode=4 ! 'video/x-raw, \ format=(string)YUY2, width=(int)1280, height=(int)720' ! vpe num-input-buffers=8 ! queue ! kmssinkh/h1h3h4h5jDh7}r“(hUhVh<]h;]h9]h:]h?]uhAMahBhhC]r”hLXèCapture and Display Fullscreen target # gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=1000 io-mode=4 ! 'video/x-raw, \ format=(string)YUY2, width=(int)1280, height=(int)720' ! vpe num-input-buffers=8 ! queue ! kmssinkr•…�r–}r—(h.Uh/j‘ubaubjA)�r˜}r™(h.XúNote: The following pipelines can also be used for NV12 capture-display usecase. Dmabuf is allocated by v4l2src if io-mode=4 and by kmssink and imported by v4l2src if io-mode=5 target # gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=1000 io-mode=4 ! 'video/x-raw, \ format=(string)NV12, width=(int)1280, height=(int)720' ! kmssink target # gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=1000 io-mode=5 ! 'video/x-raw, \ format=(string)NV12, width=(int)1280, height=(int)720' ! kmssinkh/h1h3h4h5jDh7}rš(hUhVh<]h;]h9]h:]h?]uhAMghBhhC]r›hLXúNote: The following pipelines can also be used for NV12 capture-display usecase. Dmabuf is allocated by v4l2src if io-mode=4 and by kmssink and imported by v4l2src if io-mode=5 target # gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=1000 io-mode=4 ! 'video/x-raw, \ format=(string)NV12, width=(int)1280, height=(int)720' ! kmssink target # gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=1000 io-mode=5 ! 'video/x-raw, \ format=(string)NV12, width=(int)1280, height=(int)720' ! kmssinkrœ…�r�}rž(h.Uh/j˜ubaubj)�rŸ}r (h.Uh/h1h3h4h5j"h7}r¡(h9]h:]h;]h<]h?]uhAMohBhhC]r¢j%)�r£}r¤(h.Uj(Kh/jŸh3h4h5hAh7}r¥(h9]h:]h;]h<]h?]uhAKhBhhC]ubaubjA)�r¦}r§(h.X)Capture and Display to a window in wayland 1. refer Wayland/Weston to start the weston 2. target # gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=1000 io-mode=4 ! 'video/x-raw, \ format=(string)YUY2, width=(int)1280, height=(int)720' ! vpe num-input-buffers=8 ! queue ! waylandsinkh/h1h3h4h5jDh7}r¨(hUhVh<]h;]h9]h:]h?]uhAMshBhhC]r©hLX)Capture and Display to a window in wayland 1. refer Wayland/Weston to start the weston 2. target # gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=1000 io-mode=4 ! 'video/x-raw, \ format=(string)YUY2, width=(int)1280, height=(int)720' ! vpe num-input-buffers=8 ! queue ! waylandsinkrª…�r«}r¬(h.Uh/j¦ubaubjA)�r­}r®(h.XâNote: The following pipelines can also be used for NV12 capture-display usecase. Dmabuf is allocated by v4l2src if io-mode=4 and by waylandsink and imported by v4l2src if io-mode=5. Waylandsink supports both shm and drm. A new property use-drm is added to specify drm allocator based bufferpool to be used. When using ducati or vpe plugins, use-drm is set in caps as true. target # gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=1000 io-mode=4 ! 'video/x-raw, \ format=(string)NV12, width=(int)1280, height=(int)720' ! waylandsink use-drm=true target # gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=1000 io-mode=5 ! 'video/x-raw, \ format=(string)NV12, width=(int)1280, height=(int)720' ! waylandsink use-drm=trueh/h1h3h4h5jDh7}r¯(hUhVh<]h;]h9]h:]h?]uhAMzhBhhC]r°hLXâNote: The following pipelines can also be used for NV12 capture-display usecase. Dmabuf is allocated by v4l2src if io-mode=4 and by waylandsink and imported by v4l2src if io-mode=5. Waylandsink supports both shm and drm. A new property use-drm is added to specify drm allocator based bufferpool to be used. When using ducati or vpe plugins, use-drm is set in caps as true. target # gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=1000 io-mode=4 ! 'video/x-raw, \ format=(string)NV12, width=(int)1280, height=(int)720' ! waylandsink use-drm=true target # gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=1000 io-mode=5 ! 'video/x-raw, \ format=(string)NV12, width=(int)1280, height=(int)720' ! waylandsink use-drm=truer±…�r²}r³(h.Uh/j­ubaubj)�r´}rµ(h.Uh/h1h3h4h5j"h7}r¶(h9]h:]h;]h<]h?]uhAM„hBhhC]r·j%)�r¸}r¹(h.Uj(Kh/j´h3h4h5hAh7}rº(h9]h:]h;]h<]h?]uhAKhBhhC]ubaubjA)�r»}r¼(h.X`Capture and Encode into a MP4 file. target # gst-launch-1.0 -e v4l2src device=/dev/video1 num-buffers=1000 io-mode=4 ! 'video/x-raw, \ format=(string)YUY2, width=(int)1280, height=(int)720, framerate=(fraction)30/1' ! vpe num-input-buffers=8 ! \ queue ! ducatimpeg4enc bitrate=4000 ! queue ! mpeg4videoparse ! qtmux ! filesink location=x.mp4h/h1h3h4h5jDh7}r½(hUhVh<]h;]h9]h:]h?]uhAMˆhBhhC]r¾hLX`Capture and Encode into a MP4 file. target # gst-launch-1.0 -e v4l2src device=/dev/video1 num-buffers=1000 io-mode=4 ! 'video/x-raw, \ format=(string)YUY2, width=(int)1280, height=(int)720, framerate=(fraction)30/1' ! vpe num-input-buffers=8 ! \ queue ! ducatimpeg4enc bitrate=4000 ! queue ! mpeg4videoparse ! qtmux ! filesink location=x.mp4r¿…�rÀ}rÁ(h.Uh/j»ubaubjA)�rÂ}rÃ(h.XtNote: The following pipeline can be used in usecases where vpe processing is not required. target # gst-launch-1.0 -e v4l2src device=/dev/video1 num-buffers=1000 io-mode=5 ! 'video/x-raw, \ format=(string)NV12, width=(int)1280, height=(int)720, framerate=(fraction)30/1' ! ducatimpeg4enc bitrate=4000 ! \ queue ! mpeg4videoparse ! qtmux ! filesink location=x.mp4h/h1h3h4h5jDh7}rÄ(hUhVh<]h;]h9]h:]h?]uhAM�hBhhC]rÅhLXtNote: The following pipeline can be used in usecases where vpe processing is not required. target # gst-launch-1.0 -e v4l2src device=/dev/video1 num-buffers=1000 io-mode=5 ! 'video/x-raw, \ format=(string)NV12, width=(int)1280, height=(int)720, framerate=(fraction)30/1' ! ducatimpeg4enc bitrate=4000 ! \ queue ! mpeg4videoparse ! qtmux ! filesink location=x.mp4rÆ…�rÇ}rÈ(h.Uh/jÂubaubjA)�rÉ}rÊ(h.X�Capture and Encode and Display in parallel. target # gst-launch-1.0 -e v4l2src device=/dev/video1 num-buffers=1000 io-mode=4 ! 'video/x-raw, \ format=(string)YUY2, width=(int)1280, height=(int)720, framerate=(fraction)30/1' ! vpe num-input-buffers=8 ! tee name=t  ! \ queue ! ducatimpeg4enc bitrate=4000 ! queue ! mpeg4videoparse ! qtmux ! filesink location=x.mp4 t. ! queue ! kmssinkh/h1h3h4h5jDh7}rË(hUhVh<]h;]h9]h:]h?]uhAM—hBhhC]rÌhLX�Capture and Encode and Display in parallel. target # gst-launch-1.0 -e v4l2src device=/dev/video1 num-buffers=1000 io-mode=4 ! 'video/x-raw, \ format=(string)YUY2, width=(int)1280, height=(int)720, framerate=(fraction)30/1' ! vpe num-input-buffers=8 ! tee name=t  ! \ queue ! ducatimpeg4enc bitrate=4000 ! queue ! mpeg4videoparse ! qtmux ! filesink location=x.mp4 t. ! queue ! kmssinkrÍ…�rÎ}rÏ(h.Uh/jÉubaubhh)�rÐ}rÑ(h.X0Below provides more gstreamer pipeline examples.rÒh/h1h3h4h5hlh7}rÓ(h9]h:]h;]h<]h?]uhAMœhBhhC]rÔhLX0Below provides more gstreamer pipeline examples.rÕ…�rÖ}r×(h.jÒh/jÐubaubh[)�rØ}rÙ(h.X%File to file video encoding pipeline:rÚh/h1h3h4h5h_h7}rÛ(h9]h:]h;]h<]h?]uhAMŸhBhhC]rÜhLX%File to file video encoding pipeline:rÝ…�rÞ}rß(h.jÚh/jØubaubjA)�rà}rá(h.Xçtarget # gst-launch-1.0 filesrc location=waterfall-352-288-nv12-inp.yuv ! videoparse width=352 height=288 format=nv12 ! video/x-raw, width=352, height=288 ! ducatih264enc ! filesink location=waterfall-352-288-nv12-inp_gst.h264h/h1h3h4h5jDh7}râ(hUhVh<]h;]h9]h:]h?]uhAM¢hBhhC]rãhLXçtarget # gst-launch-1.0 filesrc location=waterfall-352-288-nv12-inp.yuv ! videoparse width=352 height=288 format=nv12 ! video/x-raw, width=352, height=288 ! ducatih264enc ! filesink location=waterfall-352-288-nv12-inp_gst.h264rä…�rå}ræ(h.Uh/jàubaubhh)�rç}rè(h.XßThe cap filter of "video/x-raw, width=352, height=288" is needed in this pipeline to specify the width and height. Otherwise, variable width and height are configured for the encoder and the encoded output can be corrupted.réh/h1h3h4h5hlh7}rê(h9]h:]h;]h<]h?]uhAM¤hBhhC]rëhLXßThe cap filter of "video/x-raw, width=352, height=288" is needed in this pipeline to specify the width and height. Otherwise, variable width and height are configured for the encoder and the encoded output can be corrupted.rì…�rí}rî(h.jéh/jçubaubh[)�rï}rð(h.X&File to file 4K H264 encoding pipelinerñh/h1h3h4h5h_h7}rò(h<]róU&file-to-file-4k-h264-encoding-pipelinerôah;]h9]h:]h?]rõhauhANhBhhC]röhLX&File to file 4K H264 encoding pipeliner÷…�rø}rù(h.jñh/jïubaubjA)�rú}rû(h.Xëtarget # gst-launch-1.0 filesrc location= 4k.nv12 ! videoparse width=3840 height=2160 format=nv12 framerate=12/1 ! video/x-raw, width=3840, height=2160 ! ducatih264enc level=51 profile=100 bitrate=16000 ! filesink location=4k.h264h/h1h3h4h5jDh7}rü(hUhVh<]h;]h9]h:]h?]uhAM®hBhhC]rýhLXëtarget # gst-launch-1.0 filesrc location= 4k.nv12 ! videoparse width=3840 height=2160 format=nv12 framerate=12/1 ! video/x-raw, width=3840, height=2160 ! ducatih264enc level=51 profile=100 bitrate=16000 ! filesink location=4k.h264rþ…�rÿ}r(h.Uh/júubaubh[)�r}r(h.XFull HD at 60fps Encodingrh/h1h3h4h5h_h7}r(h<]rUfull-hd-at-60fps-encodingrah;]h9]h:]h?]rh"auhANhBhhC]rhLXFull HD at 60fps Encodingr …�r }r (h.jh/jubaubjA)�r }r (h.Xðtarget # gst-launch-1.0 videotestsrc num-buffers=1000 ! 'video/x-raw,format=(string)NV12,width=1920,height=1080,framerate=(fraction)60/1' ! ducatih264enc level=level-51 profile=high ! queue ! h264parse ! mp4mux ! filesink location=test.mp4h/h1h3h4h5jDh7}r(hUhVh<]h;]h9]h:]h?]uhAMµhBhhC]rhLXðtarget # gst-launch-1.0 videotestsrc num-buffers=1000 ! 'video/x-raw,format=(string)NV12,width=1920,height=1080,framerate=(fraction)60/1' ! ducatih264enc level=level-51 profile=high ! queue ! h264parse ! mp4mux ! filesink location=test.mp4r…�r}r(h.Uh/j ubaubh[)�r}r(h.XMulti-channel Encodingrh/h1h3h4h5h_h7}r(h<]rUmulti-channel-encodingrah;]h9]h:]h?]rh#auhANhBhhC]rhLXMulti-channel Encodingr…�r}r(h.jh/jubaubjA)�r}r(h.XÞtarget # gst-launch-1.0 -e v4l2src device=/dev/video1 num-buffers=1000 io-mode=4 ! 'video/x-raw, format=(string)YUY2, width=(int)1280, height=(int)720, framerate=(fraction)30/1' ! tee name=t ! vpe num-input-buffers=8 ! queue ! ducatih264enc ! queue ! h264parse ! qtmux ! filesink location=test.mov t. ! vpe num-input-buffers=8 ! 'video/x-raw, format=(string)NV12, width=(int)640, height=(int)480' ! queue ! ducatih264enc ! queue ! h264parse ! qtmux ! filesink location=test1.movh/h1h3h4h5jDh7}r (hUhVh<]h;]h9]h:]h?]uhAM½hBhhC]r!hLXÞtarget # gst-launch-1.0 -e v4l2src device=/dev/video1 num-buffers=1000 io-mode=4 ! 'video/x-raw, format=(string)YUY2, width=(int)1280, height=(int)720, framerate=(fraction)30/1' ! tee name=t ! vpe num-input-buffers=8 ! queue ! ducatih264enc ! queue ! h264parse ! qtmux ! filesink location=test.mov t. ! vpe num-input-buffers=8 ! 'video/x-raw, format=(string)NV12, width=(int)640, height=(int)480' ! queue ! ducatih264enc ! queue ! h264parse ! qtmux ! filesink location=test1.movr"…�r#}r$(h.Uh/jubaubh[)�r%}r&(h.XNetwork Loopbackr'h/h1h3h4h5h_h7}r((h<]r)Unetwork-loopbackr*ah;]h9]h:]h?]r+hauhANhBhhC]r,hLXNetwork Loopbackr-…�r.}r/(h.j'h/j%ubaubjA)�r0}r1(h.X$Sender: target # gst-launch-1.0 -e v4l2src device=/dev/video1 io-mode=4 ! 'video/x-raw,format=(string)YUY2,width=1280,height=720,framerate=(fraction)30/1' ! vpe num-input-buffers=8 ! queue ! ducatih264enc intra-interval=1 ! h264parse ! rtph264pay mtu=200 ! udpsink host=127.0.0.1 port=5000 &h/h1h3h4h5jDh7}r2(hUhVh<]h;]h9]h:]h?]uhAMÅhBhhC]r3hLX$Sender: target # gst-launch-1.0 -e v4l2src device=/dev/video1 io-mode=4 ! 'video/x-raw,format=(string)YUY2,width=1280,height=720,framerate=(fraction)30/1' ! vpe num-input-buffers=8 ! queue ! ducatih264enc intra-interval=1 ! h264parse ! rtph264pay mtu=200 ! udpsink host=127.0.0.1 port=5000 &r4…�r5}r6(h.Uh/j0ubaubjA)�r7}r8(h.X Receiver: target # gst-launch-1.0 -v udpsrc port=5000 ! 'application/x-rtp,media=(string)video, clock-rate=(int)90000, payload=(int)96' ! rtph264depay ! h264parse ! ducatih264dec ! vpe ! 'video/x-raw,format=(string)NV12, width=320,height=240' ! waylandsink sync=falseh/h1h3h4h5jDh7}r9(hUhVh<]h;]h9]h:]h?]uhAMËhBhhC]r:hLX Receiver: target # gst-launch-1.0 -v udpsrc port=5000 ! 'application/x-rtp,media=(string)video, clock-rate=(int)90000, payload=(int)96' ! rtph264depay ! h264parse ! ducatih264dec ! vpe ! 'video/x-raw,format=(string)NV12, width=320,height=240' ! waylandsink sync=falser;…�r<}r=(h.Uh/j7ubaubjA)�r>}r?(h.X7Note: Both pipelines must be executed on target board.h/h1h3h4h5jDh7}r@(hUhVh<]h;]h9]h:]h?]uhAMÑhBhhC]rAhLX7Note: Both pipelines must be executed on target board.rB…�rC}rD(h.Uh/j>ubaubjA)�rE}rF(h.X-.. rubric:: ARM H265 (HEVC) decoding pipelinerGh/h1h3h4h5jDh7}rH(hUhVh<]h;]h9]h:]h?]uhAM×hBhhC]rIhLX-.. rubric:: ARM H265 (HEVC) decoding pipelinerJ…�rK}rL(h.Uh/jEubaubjA)�rM}rN(h.X¿target # gst-launch-1.0 filesrc location=.265 ! 'video/x-raw, format=(string)NV12, framerate=(fraction)24/1, width=(int)1280, height=(int)720'  ! h265dec threads=2 ! vpe ! kmssinkh/h1h3h4h5jDh7}rO(hUhVh<]h;]h9]h:]h?]uhAMÛhBhhC]rPhLX¿target # gst-launch-1.0 filesrc location=.265 ! 'video/x-raw, format=(string)NV12, framerate=(fraction)24/1, width=(int)1280, height=(int)720'  ! h265dec threads=2 ! vpe ! kmssinkrQ…�rR}rS(h.Uh/jMubaubh[)�rT}rU(h.X'DSP offloaded image processing pipelinerVh/h1h3h4h5h_h7}rW(h9]h:]h;]h<]h?]uhAMÞhBhhC]rXhLX'DSP offloaded image processing pipelinerY…�rZ}r[(h.jVh/jTubaubjA)�r\}r](h.X^target # gst-launch-1.0 filesrc location=.265 ! 'video/x-raw, format=(string)NV12, framerate=(fraction)24/1, width=(int)1280, height=(int)720'  ! h265dec threads=1 ! videoconvert ! dsp66videokernel kerneltype=1 filtersize=9 lum-only=1 ! videoconvert ! vpe ! 'video/x-raw, format=(string)NV12, width=(int)640, height=(int)480' ! kmssinkh/h1h3h4h5jDh7}r^(hUhVh<]h;]h9]h:]h?]uhAMáhBhhC]r_hLX^target # gst-launch-1.0 filesrc location=.265 ! 'video/x-raw, format=(string)NV12, framerate=(fraction)24/1, width=(int)1280, height=(int)720'  ! h265dec threads=1 ! videoconvert ! dsp66videokernel kerneltype=1 filtersize=9 lum-only=1 ! videoconvert ! vpe ! 'video/x-raw, format=(string)NV12, width=(int)640, height=(int)480' ! kmssinkr`…�ra}rb(h.Uh/j\ubaubhh)�rc}rd(h.X£This pipeline decodes an H265 clip on ARM A15, offloads the image processing task (Sobel 3x3 kernel) to DSP, and the processed clip is then re-sized and displayed.reh/h1h3h4h5hlh7}rf(h9]h:]h;]h<]h?]uhAMãhBhhC]rghLX£This pipeline decodes an H265 clip on ARM A15, offloads the image processing task (Sobel 3x3 kernel) to DSP, and the processed clip is then re-sized and displayed.rh…�ri}rj(h.jeh/jcubaubhh)�rk}rl(h.X›Processor SDK provides reference implementation of multiple image processing kernels, for which the pipeline can be configured as shown in the table below.rmh/h1h3h4h5hlh7}rn(h9]h:]h;]h<]h?]uhAMçhBhhC]rohLX›Processor SDK provides reference implementation of multiple image processing kernels, for which the pipeline can be configured as shown in the table below.rp…�rq}rr(h.jmh/jkubaubjð)�rs}rt(h.Uh/h1h3h4h5jóh7}ru(h9]h:]h;]h<]h?]uhANhBhhC]rvjö)�rw}rx(h.Uh7}ry(h<]h;]h9]h:]h?]UcolsKuh/jshC]rz(jû)�r{}r|(h.Uh7}r}(h<]h;]h9]h:]h?]UcolwidthK8uh/jwhC]h5jÿubjû)�r~}r(h.Uh7}r€(h<]h;]h9]h:]h?]UcolwidthKLuh/jwhC]h5jÿubj)�r�}r‚(h.Uh7}rƒ(h9]h:]h;]h<]h?]uh/jwhC]r„(j)�r…}r†(h.Uh7}r‡(h9]h:]h;]h<]h?]uh/j�hC]rˆ(j )�r‰}rŠ(h.Uh7}r‹(h9]h:]h;]h<]h?]uh/j…hC]rŒhh)�r�}rŽ(h.X**Kernel Type**r�h/j‰h3h4h5hlh7}r�(h9]h:]h;]h<]h?]uhAMìhC]r‘j)�r’}r“(h.j�h7}r”(h9]h:]h;]h<]h?]uh/j�hC]r•hLX Kernel Typer–…�r—}r˜(h.Uh/j’ubah5jubaubah5j ubj )�r™}rš(h.Uh7}r›(h9]h:]h;]h<]h?]uh/j…hC]rœhh)�r�}rž(h.X**Definition in GST Pipeline**rŸh/j™h3h4h5hlh7}r (h9]h:]h;]h<]h?]uhAMìhC]r¡j)�r¢}r£(h.jŸh7}r¤(h9]h:]h;]h<]h?]uh/j�hC]r¥hLXDefinition in GST Pipeliner¦…�r§}r¨(h.Uh/j¢ubah5jubaubah5j ubeh5j1ubj)�r©}rª(h.Uh7}r«(h9]h:]h;]h<]h?]uh/j�hC]r¬(j )�r­}r®(h.Uh7}r¯(h9]h:]h;]h<]h?]uh/j©hC]r°hh)�r±}r²(h.X Median2x2r³h/j­h3h4h5hlh7}r´(h9]h:]h;]h<]h?]uhAMîhC]rµhLX Median2x2r¶…�r·}r¸(h.j³h/j±ubaubah5j ubj )�r¹}rº(h.Uh7}r»(h9]h:]h;]h<]h?]uh/j©hC]r¼hh)�r½}r¾(h.X5dsp66videokernel kerneltype=0 filtersize=5 lum-only=0r¿h/j¹h3h4h5hlh7}rÀ(h9]h:]h;]h<]h?]uhAMîhC]rÁhLX5dsp66videokernel kerneltype=0 filtersize=5 lum-only=0rÂ…�rÃ}rÄ(h.j¿h/j½ubaubah5j ubeh5j1ubj)�rÅ}rÆ(h.Uh7}rÇ(h9]h:]h;]h<]h?]uh/j�hC]rÈ(j )�rÉ}rÊ(h.Uh7}rË(h9]h:]h;]h<]h?]uh/jÅhC]rÌhh)�rÍ}rÎ(h.XMedian3x3 with luminance onlyrÏh/jÉh3h4h5hlh7}rÐ(h9]h:]h;]h<]h?]uhAMðhC]rÑhLXMedian3x3 with luminance onlyrÒ…�rÓ}rÔ(h.jÏh/jÍubaubah5j ubj )�rÕ}rÖ(h.Uh7}r×(h9]h:]h;]h<]h?]uh/jÅhC]rØhh)�rÙ}rÚ(h.X5dsp66videokernel kerneltype=0 filtersize=9 lum-only=1rÛh/jÕh3h4h5hlh7}rÜ(h9]h:]h;]h<]h?]uhAMðhC]rÝhLX5dsp66videokernel kerneltype=0 filtersize=9 lum-only=1rÞ…�rß}rà(h.jÛh/jÙubaubah5j ubeh5j1ubj)�rá}râ(h.Uh7}rã(h9]h:]h;]h<]h?]uh/j�hC]rä(j )�rå}ræ(h.Uh7}rç(h9]h:]h;]h<]h?]uh/jáhC]rèhh)�ré}rê(h.XSobel3x3 with luminance onlyrëh/jåh3h4h5hlh7}rì(h9]h:]h;]h<]h?]uhAMòhC]ríhLXSobel3x3 with luminance onlyrî…�rï}rð(h.jëh/jéubaubah5j ubj )�rñ}rò(h.Uh7}ró(h9]h:]h;]h<]h?]uh/jáhC]rôhh)�rõ}rö(h.X5dsp66videokernel kerneltype=1 filtersize=9 lum-only=1r÷h/jñh3h4h5hlh7}rø(h9]h:]h;]h<]h?]uhAMòhC]rùhLX5dsp66videokernel kerneltype=1 filtersize=9 lum-only=1rú…�rû}rü(h.j÷h/jõubaubah5j ubeh5j1ubj)�rý}rþ(h.Uh7}rÿ(h9]h:]h;]h<]h?]uh/j�hC]r(j )�r}r(h.Uh7}r(h9]h:]h;]h<]h?]uh/jýhC]rhh)�r}r(h.XConv5x5rh/jh3h4h5hlh7}r(h9]h:]h;]h<]h?]uhAMôhC]r hLXConv5x5r …�r }r (h.jh/jubaubah5j ubj )�r }r(h.Uh7}r(h9]h:]h;]h<]h?]uh/jýhC]rhh)�r}r(h.X6dsp66videokernel kerneltype=2 filtersize=25 lum-only=0rh/j h3h4h5hlh7}r(h9]h:]h;]h<]h?]uhAMôhC]rhLX6dsp66videokernel kerneltype=2 filtersize=25 lum-only=0r…�r}r(h.jh/jubaubah5j ubeh5j1ubj)�r}r(h.Uh7}r(h9]h:]h;]h<]h?]uh/j�hC]r(j )�r}r(h.Uh7}r(h9]h:]h;]h<]h?]uh/jhC]r hh)�r!}r"(h.X4User defined kernel with Sobel3x3 and luminance onlyr#h/jh3h4h5hlh7}r$(h9]h:]h;]h<]h?]uhAMöhC]r%hLX4User defined kernel with Sobel3x3 and luminance onlyr&…�r'}r((h.j#h/j!ubaubah5j ubj )�r)}r*(h.Uh7}r+(h9]h:]h;]h<]h?]uh/jhC]r,hh)�r-}r.(h.XHdsp66videokernel kerneltype=4 arbkernel=Sobel3x3 filtersize=9 lum-only=1r/h/j)h3h4h5hlh7}r0(h9]h:]h;]h<]h?]uhAMöhC]r1hLXHdsp66videokernel kerneltype=4 arbkernel=Sobel3x3 filtersize=9 lum-only=1r2…�r3}r4(h.j/h/j-ubaubah5j ubeh5j1ubeh5jÚubeh5jÛubaubjš)�r5}r6(h.Uh/h1h3h4h5j�h7}r7(jŸU.Ustartr8Kh<]h;]h9]j Uh:]h?]j¡j¢uhAMùhBhhC]r9hy)�r:}r;(h.X,Audio/Video decoding with http input source h/j5h3h4h5h|h7}r<(h9]h:]h;]h<]h?]uhANhBhhC]r=hh)�r>}r?(h.X+Audio/Video decoding with http input sourcer@h/j:h3h4h5hlh7}rA(h9]h:]h;]h<]h?]uhAMùhC]rBhLX+Audio/Video decoding with http input sourcerC…�rD}rE(h.j@h/j>ubaubaubaubjA)�rF}rG(h.Xatarget # gst-launch-1.0 playbin uri=http:// video-sink=kmssink audio-sink=alsasinkh/h1h3h4h5jDh7}rH(hUhVh<]h;]h9]h:]h?]uhAMýhBhhC]rIhLXatarget # gst-launch-1.0 playbin uri=http:// video-sink=kmssink audio-sink=alsasinkrJ…�rK}rL(h.Uh/jFubaubjš)�rM}rN(h.Uh/h1h3h4h5j�h7}rO(jŸU.j8Kh<]h;]h9]j Uh:]h?]j¡j¢uhAMÿhBhhC]rPhy)�rQ}rR(h.XxAudio/Video decoding with rtsp input source First, set up and run RTSP server on host. Then, run the following command: h/jMh3h4h5h|h7}rS(h9]h:]h;]h<]h?]uhANhBhhC]rThh)�rU}rV(h.XwAudio/Video decoding with rtsp input source First, set up and run RTSP server on host. Then, run the following command:rWh/jQh3h4h5hlh7}rX(h9]h:]h;]h<]h?]uhAMÿhC]rYhLXwAudio/Video decoding with rtsp input source First, set up and run RTSP server on host. Then, run the following command:rZ…�r[}r\(h.jWh/jUubaubaubaubjA)�r]}r^(h.Xatarget # gst-launch-1.0 playbin uri=rtsp:// video-sink=kmssink audio-sink=alsasinkh/h1h3h4h5jDh7}r_(hUhVh<]h;]h9]h:]h?]uhAMhBhhC]r`hLXatarget # gst-launch-1.0 playbin uri=rtsp:// video-sink=kmssink audio-sink=alsasinkra…�rb}rc(h.Uh/j]ubaubjš)�rd}re(h.Uh/h1h3h4h5j�h7}rf(jŸU.j8Kh<]h;]h9]j Uh:]h?]j¡j¢uhAMhBhhC]rghy)�rh}ri(h.X'Record real-time FPS of video decoding h/jdh3h4h5h|h7}rj(h9]h:]h;]h<]h?]uhANhBhhC]rkhh)�rl}rm(h.X&Record real-time FPS of video decodingrnh/jhh3h4h5hlh7}ro(h9]h:]h;]h<]h?]uhAMhC]rphLX&Record real-time FPS of video decodingrq…�rr}rs(h.jnh/jlubaubaubaubjA)�rt}ru(h.Xztarget # gst-launch-1.0 -v playbin uri=file:/// video-sink=fpsdisplaysink audio-sink=alsasink > fps_log.txth/h1h3h4h5jDh7}rv(hUhVh<]h;]h9]h:]h?]uhAM hBhhC]rwhLXztarget # gst-launch-1.0 -v playbin uri=file:/// video-sink=fpsdisplaysink audio-sink=alsasink > fps_log.txtrx…�ry}rz(h.Uh/jtubaubhh)�r{}r|(h.X\Note: please view fps\_log.txt to find out the FPS information after the pipeline completes.h/h1h3h4h5hlh7}r}(h9]h:]h;]h<]h?]uhAM hBhhC]r~hLX[Note: please view fps_log.txt to find out the FPS information after the pipeline completes.r…�r€}r�(h.X\Note: please view fps\_log.txt to find out the FPS information after the pipeline completes.h/j{ubaubj)�r‚}rƒ(h.Uh/h1h3h4h5j"h7}r„(h9]h:]h;]h<]h?]uhAMhBhhC]r…j%)�r†}r‡(h.Uj(Kh/j‚h3h4h5hAh7}rˆ(h9]h:]h;]h<]h?]uhAKhBhhC]ubaubcdocutils.nodes block_quote r‰)�rŠ}r‹(h.Uh/h1h3Nh5U block_quoterŒh7}r�(h9]h:]h;]h<]h?]uhANhBhhC]rŽh[)�r�}r�(h.XGstreamer Plugins Limitationsr‘h/jŠh3h4h5h_h7}r’(h<]r“Ugstreamer-plugins-limitationsr”ah;]h9]h:]h?]r•hauhAKhC]r–hLXGstreamer Plugins Limitationsr—…�r˜}r™(h.j‘h/j�ubaubaubhr)�rš}r›(h.Uh/h1h3h4h5huh7}rœ(hwX*h<]h;]h9]h:]h?]uhAMhBhhC]r�(hy)�rž}rŸ(h.XIGstreamer VPE plugin supports only YUY2, NV12, YUYV input/output formats.r h/jšh3h4h5h|h7}r¡(h9]h:]h;]h<]h?]uhANhBhhC]r¢hh)�r£}r¤(h.j h/jžh3h4h5hlh7}r¥(h9]h:]h;]h<]h?]uhAMhC]r¦hLXIGstreamer VPE plugin supports only YUY2, NV12, YUYV input/output formats.r§…�r¨}r©(h.j h/j£ubaubaubhy)�rª}r«(h.XMNot all encoder's parameters are exposed as gstreamer encoder's properties. h/jšh3h4h5h|h7}r¬(h9]h:]h;]h<]h?]uhANhBhhC]r­hh)�r®}r¯(h.XKNot all encoder's parameters are exposed as gstreamer encoder's properties.r°h/jªh3h4h5hlh7}r±(h9]h:]h;]h<]h?]uhAMhC]r²hLXKNot all encoder's parameters are exposed as gstreamer encoder's properties.r³…�r´}rµ(h.j°h/j®ubaubaubeubj‰)�r¶}r·(h.Uh/h1h3Nh5jŒh7}r¸(h9]h:]h;]h<]h?]uhANhBhhC]r¹h[)�rº}r»(h.X-List of Features not Supported with Gstreamerr¼h/j¶h3h4h5h_h7}r½(h<]r¾U-list-of-features-not-supported-with-gstreamerr¿ah;]h9]h:]h?]rÀhauhAKhC]rÁhLX-List of Features not Supported with GstreamerrÂ…�rÃ}rÄ(h.j¼h/jºubaubaubhr)�rÅ}rÆ(h.Uh/h1h3h4h5huh7}rÇ(hwX*h<]h;]h9]h:]h?]uhAMhBhhC]rÈ(hy)�rÉ}rÊ(h.X'DSS WB is not supported with gstreamer.rËh/jÅh3h4h5h|h7}rÌ(h9]h:]h;]h<]h?]uhANhBhhC]rÍhh)�rÎ}rÏ(h.jËh/jÉh3h4h5hlh7}rÐ(h9]h:]h;]h<]h?]uhAMhC]rÑhLX'DSS WB is not supported with gstreamer.rÒ…�rÓ}rÔ(h.jËh/jÎubaubaubhy)�rÕ}rÖ(h.X,Ivi-shell is not supported with gstreamer. h/jÅh3h4h5h|h7}r×(h9]h:]h;]h<]h?]uhANhBhhC]rØhh)�rÙ}rÚ(h.X*Ivi-shell is not supported with gstreamer.rÛh/jÕh3h4h5hlh7}rÜ(h9]h:]h;]h<]h?]uhAMhC]rÝhLX*Ivi-shell is not supported with gstreamer.rÞ…�rß}rà(h.jÛh/jÙubaubaubeubj)�rá}râ(h.Uh/h1h3h4h5j"h7}rã(h9]h:]h;]h<]h?]uhAM hBhhC]räj%)�rå}ræ(h.Uj(Kh/jáh3h4h5hAh7}rç(h9]h:]h;]h<]h?]uhAKhBhhC]ubaubh[)�rè}ré(h.X#DSP C66x Gstreamer Plugin Internalsrêh/h1h3h4h5h_h7}rë(h<]rìU#dsp-c66x-gstreamer-plugin-internalsríah;]h9]h:]h?]rîh auhANhBhhC]rïhLX#DSP C66x Gstreamer Plugin Internalsrð…�rñ}rò(h.jêh/jèubaubhh)�ró}rô(h.X¨TI's Processor SDK Linux supplies ARM based GStreamer plugin that abstracts C66x DSP offload. The primary goal of this DSP GStreamer plugin is to demonstrate how C66x can be used in GStreamer framework, in combination with other GStreamer plugins. The plugin, under the hood, uses OpenCL to dispatch to the C66x cores. This plugin provides sample DSP kernels and can be used as a reference to develop user's own DSP kernels.rõh/h1h3h4h5hlh7}rö(h9]h:]h;]h<]h?]uhAM%hBhhC]r÷hLX¨TI's Processor SDK Linux supplies ARM based GStreamer plugin that abstracts C66x DSP offload. The primary goal of this DSP GStreamer plugin is to demonstrate how C66x can be used in GStreamer framework, in combination with other GStreamer plugins. The plugin, under the hood, uses OpenCL to dispatch to the C66x cores. This plugin provides sample DSP kernels and can be used as a reference to develop user's own DSP kernels.rø…�rù}rú(h.jõh/jóubaubh[)�rû}rü(h.X Overview of Existing Source Coderýh/h1h3h4h5h_h7}rþ(h<]rÿU overview-of-existing-source-coderah;]h9]h:]h?]rhauhANhBhhC]rhLX Overview of Existing Source Coder…�r}r(h.jýh/jûubaubhh)�r}r(h.XaSource code of the DSP plugin can be found from http://git.ti.com/processor-sdk/gst-plugin-dsp66.h/h1h3h4h5hlh7}r(h9]h:]h;]h<]h?]uhAM0hBhhC]r (hLX0Source code of the DSP plugin can be found from r …�r }r (h.X0Source code of the DSP plugin can be found from h/jubjl)�r }r(h.X0http://git.ti.com/processor-sdk/gst-plugin-dsp66rh7}r(Urefurijh<]h;]h9]h:]h?]uh/jhC]rhLX0http://git.ti.com/processor-sdk/gst-plugin-dsp66r…�r}r(h.Uh/j ubah5juubhLX.…�r}r(h.X.h/jubeubhh)�r}r(h.XAs shown in the figure below, the GST plugin code (gstdsp66\*.c and gstdsp66\*.h files) is directly under the ./src folder. It is implemented in C following GST framework requirements, and therefore it is compatible with the gstreamer version used in Processor-SDK-Linux.h/h1h3h4h5hlh7}r(h9]h:]h;]h<]h?]uhAM3hBhhC]rhLX As shown in the figure below, the GST plugin code (gstdsp66*.c and gstdsp66*.h files) is directly under the ./src folder. It is implemented in C following GST framework requirements, and therefore it is compatible with the gstreamer version used in Processor-SDK-Linux.r…�r}r(h.XAs shown in the figure below, the GST plugin code (gstdsp66\*.c and gstdsp66\*.h files) is directly under the ./src folder. It is implemented in C following GST framework requirements, and therefore it is compatible with the gstreamer version used in Processor-SDK-Linux.h/jubaubhh)�r}r(h.X5Dispatch of work load to DSP is done via call to functions in independent shared objects, which are implemented in OpenCL code organized under the kernels folder. The kernels folder currently has a sub-folder of oclconv, which provides sample DSP kernels for image processing. As long as the APIs between the GST plugin code (in ./src folder) and OpenCL code (in ./src/kernels/oclconv folder) are the same, this shared object can be compiled and installed separately. This approach allows easier modification, implementation and maintenance once the APIs are fixed.r h/h1h3h4h5hlh7}r!(h9]h:]h;]h<]h?]uhAM8hBhhC]r"hLX5Dispatch of work load to DSP is done via call to functions in independent shared objects, which are implemented in OpenCL code organized under the kernels folder. The kernels folder currently has a sub-folder of oclconv, which provides sample DSP kernels for image processing. As long as the APIs between the GST plugin code (in ./src folder) and OpenCL code (in ./src/kernels/oclconv folder) are the same, this shared object can be compiled and installed separately. This approach allows easier modification, implementation and maintenance once the APIs are fixed.r#…�r$}r%(h.j h/jubaubj)�r&}r'(h.X'.. Image:: ../images/GST-dsp66-src.png h/h1h3h4h5j h7}r((UuriX!linux/../images/GST-dsp66-src.pngr)h<]h;]h9]h:]j }r*U*j)sh?]uhAMChBhhC]ubhh)�r+}r,(h.X“The image processing functions in oclconv are implemented via calls to DSP optimized imglib and vlib library functions, or implemented in OpenCL C.r-h/h1h3h4h5hlh7}r.(h9]h:]h;]h<]h?]uhAMDhBhhC]r/hLX“The image processing functions in oclconv are implemented via calls to DSP optimized imglib and vlib library functions, or implemented in OpenCL C.r0…�r1}r2(h.j-h/j+ubaubhr)�r3}r4(h.Uh/h1h3h4h5huh7}r5(hwX-h<]h;]h9]h:]h?]uhAMHhBhhC]r6(hy)�r7}r8(h.X,Kernels implemented with OpenCL C: Median2x2r9h/j3h3h4h5h|h7}r:(h9]h:]h;]h<]h?]uhANhBhhC]r;hh)�r<}r=(h.j9h/j7h3h4h5hlh7}r>(h9]h:]h;]h<]h?]uhAMHhC]r?hLX,Kernels implemented with OpenCL C: Median2x2r@…�rA}rB(h.j9h/j<ubaubaubhy)�rC}rD(h.XZKernels implemented with imglib function calls from OpenCL C: Median3x3, Sobel3x3, Conv5x5h/j3h3h4h5h|h7}rE(h9]h:]h;]h<]h?]uhANhBhhC]rFhh)�rG}rH(h.XZKernels implemented with imglib function calls from OpenCL C: Median3x3, Sobel3x3, Conv5x5rIh/jCh3h4h5hlh7}rJ(h9]h:]h;]h<]h?]uhAMIhC]rKhLXZKernels implemented with imglib function calls from OpenCL C: Median3x3, Sobel3x3, Conv5x5rL…�rM}rN(h.jIh/jGubaubaubhy)�rO}rP(h.XBKernels implemented with vlib function calls from OpenCL C: Canny h/j3h3h4h5h|h7}rQ(h9]h:]h;]h<]h?]uhANhBhhC]rRhh)�rS}rT(h.XAKernels implemented with vlib function calls from OpenCL C: CannyrUh/jOh3h4h5hlh7}rV(h9]h:]h;]h<]h?]uhAMKhC]rWhLXAKernels implemented with vlib function calls from OpenCL C: CannyrX…�rY}rZ(h.jUh/jSubaubaubeubh[)�r[}r\(h.XAdding Custom DSP Kernelsr]h/h1h3h4h5h_h7}r^(h<]r_Uadding-custom-dsp-kernelsr`ah;]h9]h:]h?]rahauhANhBhhC]rbhLXAdding Custom DSP Kernelsrc…�rd}re(h.j]h/j[ubaubhh)�rf}rg(h.X?Using the existing oclconv as the template, more folders can be added under ./src/kernels folder to create shared libraries with additional wrappers (for functions invoked from GST plugin context) and OCL (host side and DSP) kernels. Makefile in ./src/kernels folder will attempt make in all sub-folders. Each sub-folder will provide independent shared library object that can be invoked from gstdsp66 context (e.g., function calls in ./src/gstdsp66videokernel.c file). Individual shared object libraries can be independently recompiled and updated in the target file system.rhh/h1h3h4h5hlh7}ri(h9]h:]h;]h<]h?]uhAMPhBhhC]rjhLX?Using the existing oclconv as the template, more folders can be added under ./src/kernels folder to create shared libraries with additional wrappers (for functions invoked from GST plugin context) and OCL (host side and DSP) kernels. Makefile in ./src/kernels folder will attempt make in all sub-folders. Each sub-folder will provide independent shared library object that can be invoked from gstdsp66 context (e.g., function calls in ./src/gstdsp66videokernel.c file). Individual shared object libraries can be independently recompiled and updated in the target file system.rk…�rl}rm(h.jhh/jfubaubh[)�rn}ro(h.XModifying the Existing Pluginrph/h1h3h4h5h_h7}rq(h<]rrUmodifying-the-existing-pluginrsah;]h9]h:]h?]rth auhANhBhhC]ruhLXModifying the Existing Pluginrv…�rw}rx(h.jph/jnubaubhh)�ry}rz(h.XYThe DSP plugin also allows easy modifications and additions, and below are some examples.r{h/h1h3h4h5hlh7}r|(h9]h:]h;]h<]h?]uhAM]hBhhC]r}hLXYThe DSP plugin also allows easy modifications and additions, and below are some examples.r~…�r}r€(h.j{h/jyubaubhh)�r�}r‚(h.XÞCurrently the DSP plugin provides five sample image process operations: 1) Median2x2; 2) Median3x3; 3) Sobel3x3; 4) Conv5x5; and 5) Canny. Users can modify the source code to add more image processing operations as needed.rƒh/h1h3h4h5hlh7}r„(h9]h:]h;]h<]h?]uhAM`hBhhC]r…hLXÞCurrently the DSP plugin provides five sample image process operations: 1) Median2x2; 2) Median3x3; 3) Sobel3x3; 4) Conv5x5; and 5) Canny. Users can modify the source code to add more image processing operations as needed.r†…�r‡}rˆ(h.jƒh/j�ubaubhh)�r‰}rŠ(h.X�Currently the DSP plugin provides properties as below. More properties can be added so that they can be passed from gst-launcher.r‹h/h1h3h4h5hlh7}rŒ(h9]h:]h;]h<]h?]uhAMehBhhC]r�hLX�Currently the DSP plugin provides properties as below. More properties can be added so that they can be passed from gst-launcher.rŽ…�r�}r�(h.j‹h/j‰ubaubhr)�r‘}r’(h.Uh/h1h3h4h5huh7}r“(hwX-h<]h;]h9]h:]h?]uhAMhhBhhC]r”(hy)�r•}r–(h.X"kerneltype: select the kernel typer—h/j‘h3h4h5h|h7}r˜(h9]h:]h;]h<]h?]uhANhBhhC]r™hh)�rš}r›(h.j—h/j•h3h4h5hlh7}rœ(h9]h:]h;]h<]h?]uhAMhhC]r�hLX"kerneltype: select the kernel typerž…�rŸ}r (h.j—h/jšubaubaubhy)�r¡}r¢(h.X8filtersize: the size of the filter, choose from (5,9,25)r£h/j‘h3h4h5h|h7}r¤(h9]h:]h;]h<]h?]uhANhBhhC]r¥hh)�r¦}r§(h.j£h/j¡h3h4h5hlh7}r¨(h9]h:]h;]h<]h?]uhAMihC]r©hLX8filtersize: the size of the filter, choose from (5,9,25)rª…�r«}r¬(h.j£h/j¦ubaubaubhy)�r­}r®(h.Xalum-only: true for applying the filter on luminance only, false for applying on all three planes.h/j‘h3h4h5h|h7}r¯(h9]h:]h;]h<]h?]uhANhBhhC]r°hh)�r±}r²(h.Xalum-only: true for applying the filter on luminance only, false for applying on all three planes.r³h/j­h3h4h5hlh7}r´(h9]h:]h;]h<]h?]uhAMjhC]rµhLXalum-only: true for applying the filter on luminance only, false for applying on all three planes.r¶…�r·}r¸(h.j³h/j±ubaubaubhy)�r¹}rº(h.XOarbkernel: provide a way to specify the name of the kernel invoked via OpenCL. h/j‘h3h4h5h|h7}r»(h9]h:]h;]h<]h?]uhANhBhhC]r¼hh)�r½}r¾(h.XNarbkernel: provide a way to specify the name of the kernel invoked via OpenCL.r¿h/j¹h3h4h5hlh7}rÀ(h9]h:]h;]h<]h?]uhAMlhC]rÁhLXNarbkernel: provide a way to specify the name of the kernel invoked via OpenCL.rÂ…�rÃ}rÄ(h.j¿h/j½ubaubaubeubhh)�rÅ}rÆ(h.X¼Details of a specific image processing kernel can also be modified, e.g., the coefficients for Conv5x5 kernel, which are defined in kernels/oclconv/conv.cl::kernel void Conv5x5() function.rÇh/h1h3h4h5hlh7}rÈ(h9]h:]h;]h<]h?]uhAMohBhhC]rÉhLX¼Details of a specific image processing kernel can also be modified, e.g., the coefficients for Conv5x5 kernel, which are defined in kernels/oclconv/conv.cl::kernel void Conv5x5() function.rÊ…�rË}rÌ(h.jÇh/jÅubaubh[)�rÍ}rÎ(h.X$Rebuilding and Installing the PluginrÏh/h1h3h4h5h_h7}rÐ(h<]rÑU$rebuilding-and-installing-the-pluginrÒah;]h9]h:]h?]rÓhauhANhBhhC]rÔhLX$Rebuilding and Installing the PluginrÕ…�rÖ}r×(h.jÏh/jÍubaubhh)�rØ}rÙ(h.X‘After modifications/additions are made for the DSP plugin source code, the plugin needs to be rebuilt, and this can be done from the Yocto build.rÚh/h1h3h4h5hlh7}rÛ(h9]h:]h;]h<]h?]uhAMvhBhhC]rÜhLX‘After modifications/additions are made for the DSP plugin source code, the plugin needs to be rebuilt, and this can be done from the Yocto build.rÝ…�rÞ}rß(h.jÚh/jØubaubhh)�rà}rá(h.XèFirst, please refer to `Processor SDK Building The SDK `__ to set up the build environment and bitbake the original recipe for gstreamer1.0-plugins-dsp66, i.e.,h/h1h3h4h5hlh7}râ(h9]h:]h;]h<]h?]uhAMzhBhhC]rã(hLXFirst, please refer to rä…�rå}ræ(h.XFirst, please refer to h/jàubjl)�rç}rè(h.Xk`Processor SDK Building The SDK `__h7}ré(UnameXProcessor SDK Building The SDKUrefurirêXFhttp://processors.wiki.ti.com/index.php/Processor_SDK_Building_The_SDKh<]h;]h9]h:]h?]uh/jàhC]rëhLXProcessor SDK Building The SDKrì…�rí}rî(h.Uh/jçubah5juubhLXf to set up the build environment and bitbake the original recipe for gstreamer1.0-plugins-dsp66, i.e.,rï…�rð}rñ(h.Xf to set up the build environment and bitbake the original recipe for gstreamer1.0-plugins-dsp66, i.e.,h/jàubeubhh)�rò}ró(h.X9``MACHINE=am57xx-evm bitbake gstreamer1.0-plugins-dsp66``rôh/h1h3h4h5hlh7}rõ(h9]h:]h;]h<]h?]uhAMhBhhC]röcdocutils.nodes literal r÷)�rø}rù(h.jôh7}rú(h9]h:]h;]h<]h?]uh/jòhC]rûhLX5MACHINE=am57xx-evm bitbake gstreamer1.0-plugins-dsp66rü…�rý}rþ(h.Uh/jøubah5Uliteralrÿubaubhh)�r }r (h.XÉAfter the bitbake command above is successfully done, ./build/arago-tmp-external-arm-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0-plugins-dsp66/git-r<\*> will be created with the original source code under the git sub-folder. Copy the modified and/or the newly added files to the git sub-folder, and rebuild the plugin referring to `Rebuild Recipe `__.h/h1h3h4h5hlh7}r (h9]h:]h;]h<]h?]uhAM�hBhhC]r (hLXVAfter the bitbake command above is successfully done, ./build/arago-tmp-external-arm-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0-plugins-dsp66/git-r<*> will be created with the original source code under the git sub-folder. Copy the modified and/or the newly added files to the git sub-folder, and rebuild the plugin referring to r …�r }r (h.XWAfter the bitbake command above is successfully done, ./build/arago-tmp-external-arm-toolchain/work/armv7ahf-neon-linux-gnueabi/gstreamer1.0-plugins-dsp66/git-r<\*> will be created with the original source code under the git sub-folder. Copy the modified and/or the newly added files to the git sub-folder, and rebuild the plugin referring to h/j ubjl)�r }r (h.Xq`Rebuild Recipe `__h7}r (UnameXRebuild RecipejêX\http://processors.wiki.ti.com/index.php/Processor_SDK_Building_The_SDK#Forced_Re-compilationh<]h;]h9]h:]h?]uh/j hC]r hLXRebuild Reciper …�r }r (h.Uh/j ubah5juubhLX.…�r }r (h.X.h/j ubeubhh)�r }r (h.XQLast, install the rebuilt plugin on target filesystem referring to `Install Package `__. After the installation, the following files will be updated and/or added. Gstreamer framework includes seamless detection and registration of the new plugin.h/h1h3h4h5hlh7}r (h9]h:]h;]h<]h?]uhAMˆhBhhC]r (hLXCLast, install the rebuilt plugin on target filesystem referring to r …�r }r (h.XCLast, install the rebuilt plugin on target filesystem referring to h/j ubjl)�r }r (h.Xo`Install Package `__h7}r (UnameXInstall PackagejêXYhttp://processors.wiki.ti.com/index.php/Processor_SDK_Building_The_SDK#Installing_Packageh<]h;]h9]h:]h?]uh/j hC]r hLXInstall Packager …�r }r (h.Uh/j ubah5juubhLXŸ. After the installation, the following files will be updated and/or added. Gstreamer framework includes seamless detection and registration of the new plugin.r …�r }r (h.XŸ. After the installation, the following files will be updated and/or added. Gstreamer framework includes seamless detection and registration of the new plugin.h/j ubeubhr)�r! }r" (h.Uh/h1h3h4h5huh7}r# (hwX-h<]h;]h9]h:]h?]uhAM�hBhhC]r$ (hy)�r% }r& (h.X%/usr/lib/gstreamer-1.0/libgstdsp66.sor' h/j! h3h4h5h|h7}r( (h9]h:]h;]h<]h?]uhANhBhhC]r) hh)�r* }r+ (h.j' h/j% h3h4h5hlh7}r, (h9]h:]h;]h<]h?]uhAM�hC]r- hLX%/usr/lib/gstreamer-1.0/libgstdsp66.sor. …�r/ }r0 (h.j' h/j* ubaubaubhy)�r1 }r2 (h.X/usr/lib/liboclconv.sor3 h/j! h3h4h5h|h7}r4 (h9]h:]h;]h<]h?]uhANhBhhC]r5 hh)�r6 }r7 (h.j3 h/j1 h3h4h5hlh7}r8 (h9]h:]h;]h<]h?]uhAM�hC]r9 hLX/usr/lib/liboclconv.sor: …�r; }r< (h.j3 h/j6 ubaubaubhy)�r= }r> (h.Xj[optional] any additional shared library (as described in previous section), should be placed in /usr/lib h/j! h3h4h5h|h7}r? (h9]h:]h;]h<]h?]uhANhBhhC]r@ hh)�rA }rB (h.Xi[optional] any additional shared library (as described in previous section), should be placed in /usr/librC h/j= h3h4h5hlh7}rD (h9]h:]h;]h<]h?]uhAM‘hC]rE hLXi[optional] any additional shared library (as described in previous section), should be placed in /usr/librF …�rG }rH (h.jC h/jA ubaubaubeubj)�rI }rJ (h.Uh/h1h3h4h5j"h7}rK (h9]h:]h;]h<]h?]uhAM”hBhhC]rL j%)�rM }rN (h.Uj(Kh/jI h3h4h5hAh7}rO (h9]h:]h;]h<]h?]uhAKhBhhC]ubaubh[)�rP }rQ (h.XRebuild IPUMM FirmwarerR h/h1h3h4h5h_h7}rS (h<]rT Urebuild-ipumm-firmwarerU ah;]h9]h:]h?]rV hauhANhBhhC]rW hLXRebuild IPUMM FirmwarerX …�rY }rZ (h.jR h/jP ubaubhh)�r[ }r\ (h.XPre-built IPUMM firmware images can be located on target file system at /lib/firmware/dra7-ipu2-fw.xem4. In case there is a need to rebuild the IPUMM firmware, the instructions below are provided for rebuilding IPUMM firmware. It assumes that everything is done on a Ubuntu machine.r] h/h1h3h4h5hlh7}r^ (h9]h:]h;]h<]h?]uhAM™hBhhC]r_ hLXPre-built IPUMM firmware images can be located on target file system at /lib/firmware/dra7-ipu2-fw.xem4. In case there is a need to rebuild the IPUMM firmware, the instructions below are provided for rebuilding IPUMM firmware. It assumes that everything is done on a Ubuntu machine.r` …�ra }rb (h.j] h/j[ ubaubh[)�rc }rd (h.XIPUMM GIT Repore h/h1h3h4h5h_h7}rf (h<]rg Uipumm-git-reporh ah;]h9]h:]h?]ri hauhANhBhhC]rj hLXIPUMM GIT Repork …�rl }rm (h.je h/jc ubaubhh)�rn }ro (h.X|IPUMM is publically available at https://git.ti.com/ivimm/ipumm. To clone the git repository, execute the following command.h/h1h3h4h5hlh7}rp (h9]h:]h;]h<]h?]uhAM¢hBhhC]rq (hLX!IPUMM is publically available at rr …�rs }rt (h.X!IPUMM is publically available at h/jn ubjl)�ru }rv (h.Xhttps://git.ti.com/ivimm/ipummrw h7}rx (Urefurijw h<]h;]h9]h:]h?]uh/jn hC]ry hLXhttps://git.ti.com/ivimm/ipummrz …�r{ }r| (h.Uh/ju ubah5juubhLX=. To clone the git repository, execute the following command.r} …�r~ }r (h.X=. To clone the git repository, execute the following command.h/jn ubeubjA)�r€ }r� (h.X*git clone git://git.ti.com/ivimm/ipumm.gith/h1h3h4h5jDh7}r‚ (hUhVh<]h;]h9]h:]h?]uhAM§hBhhC]rƒ hLX*git clone git://git.ti.com/ivimm/ipumm.gitr„ …�r… }r† (h.Uh/j€ ubaubhh)�r‡ }rˆ (h.XJTo checkout a particular tag, e.g., 3.00.09.01, run the following command:r‰ h/h1h3h4h5hlh7}rŠ (h9]h:]h;]h<]h?]uhAM©hBhhC]r‹ hLXJTo checkout a particular tag, e.g., 3.00.09.01, run the following command:rŒ …�r� }rŽ (h.j‰ h/j‡ ubaubjA)�r� }r� (h.X-cd ipumm git checkout [tag, e.g., 3.00.09.01]h/h1h3h4h5jDh7}r‘ (hUhVh<]h;]h9]h:]h?]uhAM®hBhhC]r’ hLX-cd ipumm git checkout [tag, e.g., 3.00.09.01]r“ …�r” }r• (h.Uh/j� ubaubh[)�r– }r— (h.XIPUMM Build Toolsr˜ h/h1h3h4h5h_h7}r™ (h<]rš Uipumm-build-toolsr› ah;]h9]h:]h?]rœ hauhANhBhhC]r� hLXIPUMM Build Toolsrž …�rŸ }r  (h.j˜ h/j– ubaubhh)�r¡ }r¢ (h.X,Making IPUMM depends on the following tools.r£ h/h1h3h4h5hlh7}r¤ (h9]h:]h;]h<]h?]uhAM´hBhhC]r¥ hLX,Making IPUMM depends on the following tools.r¦ …�r§ }r¨ (h.j£ h/j¡ ubaubhr)�r© }rª (h.Uh/h1h3h4h5huh7}r« (hwX-h<]h;]h9]h:]h?]uhAM¶hBhhC]r¬ (hy)�r­ }r® (h.X|**Codec Engine**: `Codec Engine Product Releases `__h/j© h3h4h5h|h7}r¯ (h9]h:]h;]h<]h?]uhANhBhhC]r° hh)�r± }r² (h.X|**Codec Engine**: `Codec Engine Product Releases `__h/j­ h3h4h5hlh7}r³ (h9]h:]h;]h<]h?]uhAM¶hC]r´ (j)�rµ }r¶ (h.X**Codec Engine**h7}r· (h9]h:]h;]h<]h?]uh/j± hC]r¸ hLX Codec Enginer¹ …�rº }r» (h.Uh/jµ ubah5jubhLX: r¼ …�r½ }r¾ (h.X: h/j± ubjl)�r¿ }rÀ (h.Xj`Codec Engine Product Releases `__h7}rÁ (UnameXCodec Engine Product ReleasesjêXFhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ce/h<]h;]h9]h:]h?]uh/j± hC]r hLXCodec Engine Product Releasesrà …�rÄ }rÅ (h.Uh/j¿ ubah5juubeubaubhy)�rÆ }rÇ (h.X‹**Framework Components**: `Framework Components Product Releases `__h/j© h3h4h5h|h7}rÈ (h9]h:]h;]h<]h?]uhANhBhhC]rÉ hh)�rÊ }rË (h.X‹**Framework Components**: `Framework Components Product Releases `__h/jÆ h3h4h5hlh7}rÌ (h9]h:]h;]h<]h?]uhAM¸hC]rÍ (j)�rÎ }rÏ (h.X**Framework Components**h7}rÐ (h9]h:]h;]h<]h?]uh/jÊ hC]rÑ hLXFramework ComponentsrÒ …�rÓ }rÔ (h.Uh/jÎ ubah5jubhLX: rÕ …�rÖ }r× (h.X: h/jÊ ubjl)�rØ }rÙ (h.Xq`Framework Components Product Releases `__h7}rÚ (UnameX%Framework Components Product ReleasesjêXEhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/fch<]h;]h9]h:]h?]uh/jÊ hC]rÛ hLX%Framework Components Product ReleasesrÜ …�rÝ }rÞ (h.Uh/jØ ubah5juubeubaubhy)�rß }rà (h.Xj**IPC**: `IPC Product Releases `__h/j© h3h4h5h|h7}rá (h9]h:]h;]h<]h?]uhANhBhhC]râ hh)�rã }rä (h.Xj**IPC**: `IPC Product Releases `__h/jß h3h4h5hlh7}rå (h9]h:]h;]h<]h?]uhAMºhC]ræ (j)�rç }rè (h.X**IPC**h7}ré (h9]h:]h;]h<]h?]uh/jã hC]rê hLXIPCrë …�rì }rí (h.Uh/jç ubah5jubhLX: rî …�rï }rð (h.X: h/jã ubjl)�rñ }rò (h.Xa`IPC Product Releases `__h7}ró (UnameXIPC Product ReleasesjêXFhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipch<]h;]h9]h:]h?]uh/jã hC]rô hLXIPC Product Releasesrõ …�rö }r÷ (h.Uh/jñ ubah5juubeubaubhy)�rø }rù (h.X{**XDAIS**: `XDAIS Product Releases `__h/j© h3h4h5h|h7}rú (h9]h:]h;]h<]h?]uhANhBhhC]rû hh)�rü }rý (h.X{**XDAIS**: `XDAIS Product Releases `__h/jø h3h4h5hlh7}rþ (h9]h:]h;]h<]h?]uhAM¼hC]rÿ (j)�r }r (h.X **XDAIS**h7}r (h9]h:]h;]h<]h?]uh/jü hC]r hLXXDAISr …�r }r (h.Uh/j ubah5jubhLX: r …�r }r (h.X: h/jü ubjl)�r }r (h.Xp`XDAIS Product Releases `__h7}r (UnameXXDAIS Product ReleasesjêXShttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/xdais/index.htmlh<]h;]h9]h:]h?]uh/jü hC]r hLXXDAIS Product Releasesr …�r }r (h.Uh/j ubah5juubeubaubhy)�r }r (h.Xy**BIOS**: `SYS/BIOS Product Releases `__h/j© h3h4h5h|h7}r (h9]h:]h;]h<]h?]uhANhBhhC]r hh)�r }r (h.Xy**BIOS**: `SYS/BIOS Product Releases `__h/j h3h4h5hlh7}r (h9]h:]h;]h<]h?]uhAM¾hC]r (j)�r }r (h.X**BIOS**h7}r (h9]h:]h;]h<]h?]uh/j hC]r hLXBIOSr …�r }r (h.Uh/j ubah5jubhLX: r …�r! }r" (h.X: h/j ubjl)�r# }r$ (h.Xo`SYS/BIOS Product Releases `__h7}r% (UnameXSYS/BIOS Product ReleasesjêXOhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/bios/sysbiosh<]h;]h9]h:]h?]uh/j hC]r& hLXSYS/BIOS Product Releasesr' …�r( }r) (h.Uh/j# ubah5juubeubaubhy)�r* }r+ (h.Xv**XDC Tools**: `XDCTools Product Releases `__h/j© h3h4h5h|h7}r, (h9]h:]h;]h<]h?]uhANhBhhC]r- hh)�r. }r/ (h.Xv**XDC Tools**: `XDCTools Product Releases `__h/j* h3h4h5hlh7}r0 (h9]h:]h;]h<]h?]uhAMÀhC]r1 (j)�r2 }r3 (h.X **XDC Tools**h7}r4 (h9]h:]h;]h<]h?]uh/j. hC]r5 hLX XDC Toolsr6 …�r7 }r8 (h.Uh/j2 ubah5jubhLX: r9 …�r: }r; (h.X: h/j. ubjl)�r< }r= (h.Xg`XDCTools Product Releases `__h7}r> (UnameXXDCTools Product ReleasesjêXGhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/rtsch<]h;]h9]h:]h?]uh/j. hC]r? hLXXDCTools Product Releasesr@ …�rA }rB (h.Uh/j< ubah5juubeubaubhy)�rC }rD (h.X¸**TMS470 CGT ARM**: The compiler tools are provided as part of CCS.\ `CCSv6 Download `__ h/j© h3h4h5h|h7}rE (h9]h:]h;]h<]h?]uhANhBhhC]rF hh)�rG }rH (h.X·**TMS470 CGT ARM**: The compiler tools are provided as part of CCS.\ `CCSv6 Download `__h/jC h3h4h5hlh7}rI (h9]h:]h;]h<]h?]uhAMÂhC]rJ (j)�rK }rL (h.X**TMS470 CGT ARM**h7}rM (h9]h:]h;]h<]h?]uh/jG hC]rN hLXTMS470 CGT ARMrO …�rP }rQ (h.Uh/jK ubah5jubhLX1: The compiler tools are provided as part of CCS.rR …�rS }rT (h.X3: The compiler tools are provided as part of CCS.\ h/jG ubjl)�rU }rV (h.Xr`CCSv6 Download `__h7}rW (UnameXCCSv6 DownloadjêX]http://processors.wiki.ti.com/index.php/Download_CCS#Code_Composer_Studio_Version_6_Downloadsh<]h;]h9]h:]h?]uh/jG hC]rX hLXCCSv6 DownloadrY …�rZ }r[ (h.Uh/jU ubah5juubeubaubeubhh)�r\ }r] (h.XöEach release of IPUMM is verified with particular versions of the tools above. Check top level Makefile of ipumm to identify the versions to be downloaded and installed. For example, the tool versions used in IPUMM 3.00.09.01 are listed as below:r^ h/h1h3h4h5hlh7}r_ (h9]h:]h;]h<]h?]uhAMÆhBhhC]r` hLXöEach release of IPUMM is verified with particular versions of the tools above. Check top level Makefile of ipumm to identify the versions to be downloaded and installed. For example, the tool versions used in IPUMM 3.00.09.01 are listed as below:ra …�rb }rc (h.j^ h/j\ ubaubjA)�rd }re (h.XbXDCVERSION  ?= xdctools_3_31_02_38_core BIOSVERSION  ?= bios_6_42_02_29 IPCVERSION  ?= ipc_3_40_01_08 CEVERSION  ?= codec_engine_3_24_00_08 FCVERSION  ?= framework_components_3_40_01_04 XDAISVERSION  ?= xdais_7_24_00_04 # TI Compiler Settings export TMS470CGTOOLPATH ?= $(BIOSTOOLSROOT)/ccsv6/tools/compiler/ti-cgt-arm_5.2.5h/h1h3h4h5jDh7}rf (hUhVh<]h;]h9]h:]h?]uhAMÍhBhhC]rg hLXbXDCVERSION  ?= xdctools_3_31_02_38_core BIOSVERSION  ?= bios_6_42_02_29 IPCVERSION  ?= ipc_3_40_01_08 CEVERSION  ?= codec_engine_3_24_00_08 FCVERSION  ?= framework_components_3_40_01_04 XDAISVERSION  ?= xdais_7_24_00_04 # TI Compiler Settings export TMS470CGTOOLPATH ?= $(BIOSTOOLSROOT)/ccsv6/tools/compiler/ti-cgt-arm_5.2.5rh …�ri }rj (h.Uh/jd ubaubhh)�rk }rl (h.XÅBelow are direct download links and install instructions for IPUMM 3.00.09.01 build tools. When installing the tools, it is preferable to install all the tools to the same directory, e.g., /opt/ti.rm h/h1h3h4h5hlh7}rn (h9]h:]h;]h<]h?]uhAMÖhBhhC]ro hLXÅBelow are direct download links and install instructions for IPUMM 3.00.09.01 build tools. When installing the tools, it is preferable to install all the tools to the same directory, e.g., /opt/ti.rp …�rq }rr (h.jm h/jk ubaubhr)�rs }rt (h.Uh/h1h3h4h5huh7}ru (hwX-h<]h;]h9]h:]h?]uhAMÚhBhhC]rv (hy)�rw }rx (h.X¾Download and untar `codec\_engine\_3\_24\_00\_08,lite.tar.gz `__h/js h3h4h5h|h7}ry (h9]h:]h;]h<]h?]uhANhBhhC]rz hh)�r{ }r| (h.X¾Download and untar `codec\_engine\_3\_24\_00\_08,lite.tar.gz `__h/jw h3h4h5hlh7}r} (h9]h:]h;]h<]h?]uhAMÚhC]r~ (hLXDownload and untar r …�r€ }r� (h.XDownload and untar h/j{ ubjl)�r‚ }rƒ (h.X«`codec\_engine\_3\_24\_00\_08,lite.tar.gz `__h7}r„ (UnameX#codec_engine_3_24_00_08,lite.tar.gzjêX|http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ce/3_24_00_08/exports/codec_engine_3_24_00_08,lite.tar.gzh<]h;]h9]h:]h?]uh/j{ hC]r… hLX#codec_engine_3_24_00_08,lite.tar.gzr† …�r‡ }rˆ (h.Uh/j‚ ubah5juubeubaubhy)�r‰ }rŠ (h.XÎDownload and untar `framework\_components\_3\_40\_01\_04,lite.tar.gz `__h/js h3h4h5h|h7}r‹ (h9]h:]h;]h<]h?]uhANhBhhC]rŒ hh)�r� }rŽ (h.XÎDownload and untar `framework\_components\_3\_40\_01\_04,lite.tar.gz `__h/j‰ h3h4h5hlh7}r� (h9]h:]h;]h<]h?]uhAMÜhC]r� (hLXDownload and untar r‘ …�r’ }r“ (h.XDownload and untar h/j� ubjl)�r” }r• (h.X»`framework\_components\_3\_40\_01\_04,lite.tar.gz `__h7}r– (UnameX+framework_components_3_40_01_04,lite.tar.gzjêX„http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/fc/3_40_01_04/exports/framework_components_3_40_01_04,lite.tar.gzh<]h;]h9]h:]h?]uh/j� hC]r— hLX+framework_components_3_40_01_04,lite.tar.gzr˜ …�r™ }rš (h.Uh/j” ubah5juubeubaubhy)�r› }rœ (h.XœDownload and unzip `ipc\_3\_40\_01\_08.zip `__h/js h3h4h5h|h7}r� (h9]h:]h;]h<]h?]uhANhBhhC]rž hh)�rŸ }r  (h.XœDownload and unzip `ipc\_3\_40\_01\_08.zip `__h/j› h3h4h5hlh7}r¡ (h9]h:]h;]h<]h?]uhAMÞhC]r¢ (hLXDownload and unzip r£ …�r¤ }r¥ (h.XDownload and unzip h/jŸ ubjl)�r¦ }r§ (h.X‰`ipc\_3\_40\_01\_08.zip `__h7}r¨ (UnameXipc_3_40_01_08.zipjêXlhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/3_40_01_08/exports/ipc_3_40_01_08.ziph<]h;]h9]h:]h?]uh/jŸ hC]r© hLXipc_3_40_01_08.ziprª …�r« }r¬ (h.Uh/j¦ ubah5juubeubaubhy)�r­ }r® (h.X¨Download and untar `xdais\_7\_24\_00\_04.tar.gz `__h/js h3h4h5h|h7}r¯ (h9]h:]h;]h<]h?]uhANhBhhC]r° hh)�r± }r² (h.X¨Download and untar `xdais\_7\_24\_00\_04.tar.gz `__h/j­ h3h4h5hlh7}r³ (h9]h:]h;]h<]h?]uhAMàhC]r´ (hLXDownload and untar rµ …�r¶ }r· (h.XDownload and untar h/j± ubjl)�r¸ }r¹ (h.X•`xdais\_7\_24\_00\_04.tar.gz `__h7}rº (UnameXxdais_7_24_00_04.tar.gzjêXshttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/xdais/7_24_00_04/exports/xdais_7_24_00_04.tar.gzh<]h;]h9]h:]h?]uh/j± hC]r» hLXxdais_7_24_00_04.tar.gzr¼ …�r½ }r¾ (h.Uh/j¸ ubah5juubeubaubhy)�r¿ }rÀ (h.XÀDownload and install `bios\_setuplinux\_6\_42\_02\_29.bin `__h/js h3h4h5h|h7}rÁ (h9]h:]h;]h<]h?]uhANhBhhC]r hh)�rà }rÄ (h.XÀDownload and install `bios\_setuplinux\_6\_42\_02\_29.bin `__h/j¿ h3h4h5hlh7}rÅ (h9]h:]h;]h<]h?]uhAMâhC]rÆ (hLXDownload and install rÇ …�rÈ }rÉ (h.XDownload and install h/jà ubjl)�rÊ }rË (h.X«`bios\_setuplinux\_6\_42\_02\_29.bin `__h7}rÌ (UnameXbios_setuplinux_6_42_02_29.binjêX�http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/bios/sysbios/6_42_02_29/exports/bios_setuplinux_6_42_02_29.binh<]h;]h9]h:]h?]uh/jà hC]rÍ hLXbios_setuplinux_6_42_02_29.binrÎ …�rÏ }rÐ (h.Uh/jÊ ubah5juubeubaubhy)�rÑ }rÒ (h.XÇDownload and untar `xdctools\_3\_31\_02\_38\_core\_linux.zip `__h/js h3h4h5h|h7}rÓ (h9]h:]h;]h<]h?]uhANhBhhC]rÔ hh)�rÕ }rÖ (h.XÇDownload and untar `xdctools\_3\_31\_02\_38\_core\_linux.zip `__h/jÑ h3h4h5hlh7}r× (h9]h:]h;]h<]h?]uhAMähC]rØ (hLXDownload and untar rÙ …�rÚ }rÛ (h.XDownload and untar h/jÕ ubjl)�rÜ }rÝ (h.X´`xdctools\_3\_31\_02\_38\_core\_linux.zip `__h7}rÞ (UnameX"xdctools_3_31_02_38_core_linux.zipjêX…http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/rtsc/3_31_02_38/exports/xdccore/xdctools_3_31_02_38_core_linux.ziph<]h;]h9]h:]h?]uh/jÕ hC]rß hLX"xdctools_3_31_02_38_core_linux.ziprà …�rá }râ (h.Uh/jÜ ubah5juubeubaubhy)�rã }rä (h.X[Download and install `CCSv6 Build#6.1.1.00022 `__. Ensure that "TI ARM Compiler" is selected during the installation. After the installation, the compiler tools (version 5.2.5) are located at [ccs\_install\_dir]/ccsv6/tools/compiler/ti-cgt-arm\_5.2.5. h/js h3h4h5h|h7}rå (h9]h:]h;]h<]h?]uhANhBhhC]ræ hh)�rç }rè (h.XZDownload and install `CCSv6 Build#6.1.1.00022 `__. Ensure that "TI ARM Compiler" is selected during the installation. After the installation, the compiler tools (version 5.2.5) are located at [ccs\_install\_dir]/ccsv6/tools/compiler/ti-cgt-arm\_5.2.5.h/jã h3h4h5hlh7}ré (h9]h:]h;]h<]h?]uhAMæhC]rê (hLXDownload and install rë …�rì }rí (h.XDownload and install h/jç ubjl)�rî }rï (h.X{`CCSv6 Build#6.1.1.00022 `__h7}rð (UnameXCCSv6 Build#6.1.1.00022jêX]http://processors.wiki.ti.com/index.php/Download_CCS#Code_Composer_Studio_Version_6_Downloadsh<]h;]h9]h:]h?]uh/jç hC]rñ hLXCCSv6 Build#6.1.1.00022rò …�ró }rô (h.Uh/jî ubah5juubhLXÇ. Ensure that "TI ARM Compiler" is selected during the installation. After the installation, the compiler tools (version 5.2.5) are located at [ccs_install_dir]/ccsv6/tools/compiler/ti-cgt-arm_5.2.5.rõ …�rö }r÷ (h.XÊ. Ensure that "TI ARM Compiler" is selected during the installation. After the installation, the compiler tools (version 5.2.5) are located at [ccs\_install\_dir]/ccsv6/tools/compiler/ti-cgt-arm\_5.2.5.h/jç ubeubaubeubh[)�rø }rù (h.X Build IPUMMrú h/h1h3h4h5h_h7}rû (h<]rü U build-ipummrý ah;]h9]h:]h?]rþ hauhANhBhhC]rÿ hLX Build IPUMMr …�r }r (h.jú h/jø ubaubh[)�r }r (h.XSetup Environmentr h/h1h3h4h5h_h7}r (h<]r Usetup-environmentr ah;]h9]h:]h?]r hauhANhBhhC]r hLXSetup Environmentr …�r }r (h.j h/j ubaubhh)�r }r (h.X+Export the following environment variables:r h/h1h3h4h5hlh7}r (h9]h:]h;]h<]h?]uhAMóhBhhC]r hLX+Export the following environment variables:r …�r }r (h.j h/j ubaubjA)�r }r (h.X¥export BIOSTOOLSROOT= export IPCSRC= export TMS470CGTOOLPATH=h/h1h3h4h5jDh7}r (hUhVh<]h;]h9]h:]h?]uhAM÷hBhhC]r hLX¥export BIOSTOOLSROOT= export IPCSRC= export TMS470CGTOOLPATH=r …�r }r (h.Uh/j ubaubhh)�r }r (h.XWExample for IPUMM 3.00.09.01 assuming all the tools are installed to /opt/ti directory:r h/h1h3h4h5hlh7}r (h9]h:]h;]h<]h?]uhAMûhBhhC]r! hLXWExample for IPUMM 3.00.09.01 assuming all the tools are installed to /opt/ti directory:r" …�r# }r$ (h.j h/j ubaubjA)�r% }r& (h.X‡export BIOSTOOLSROOT=/opt/ti export IPCSRC=/opt/ti/ipc_3_40_01_08 export TMS470CGTOOLPATH=/opt/ti/ccsv6/tools/compiler/ti-cgt-arm_5.2.5h/h1h3h4h5jDh7}r' (hUhVh<]h;]h9]h:]h?]uhAMhBhhC]r( hLX‡export BIOSTOOLSROOT=/opt/ti export IPCSRC=/opt/ti/ipc_3_40_01_08 export TMS470CGTOOLPATH=/opt/ti/ccsv6/tools/compiler/ti-cgt-arm_5.2.5r) …�r* }r+ (h.Uh/j% ubaubh[)�r, }r- (h.X Build IPUMMr. h/h1h3h4h5h_h7}r/ (h<]r0 U build-ipumm-1r1 ah;]h9]h:]h?]r2 h auhANhBhhC]r3 hLX Build IPUMMr4 …�r5 }r6 (h.j. h/j, ubaubhh)�r7 }r8 (h.X/Follow the steps below to build IPUMM firmware.r9 h/h1h3h4h5hlh7}r: (h9]h:]h;]h<]h?]uhAMhBhhC]r; hLX/Follow the steps below to build IPUMM firmware.r< …�r= }r> (h.j9 h/j7 ubaubjA)�r? }r@ (h.X[export HWVERSION=ES10 cd ipumm make unconfig make vayu_smp_config make clean make ducatibinh/h1h3h4h5jDh7}rA (hUhVh<]h;]h9]h:]h?]uhAM hBhhC]rB hLX[export HWVERSION=ES10 cd ipumm make unconfig make vayu_smp_config make clean make ducatibinrC …�rD }rE (h.Uh/j? ubaubhh)�rF }rG (h.XmAfter the build is completed, two different images will get created. Select the correct one for your devices.rH h/h1h3h4h5hlh7}rI (h9]h:]h;]h<]h?]uhAMhBhhC]rJ hLXmAfter the build is completed, two different images will get created. Select the correct one for your devices.rK …�rL }rM (h.jH h/jF ubaubjA)�rN }rO (h.X * dra7-ipu2-fw.xem4: This firmware will be used for Linux or Android. The firmware is built with the resource table defined in platform/ti/dce/baseimage/custom_rsc_table_vayu_ipu.h The corresponding map file is: platform/ti/dce/baseimage/package/cfg/out/ipu/release/ipu.xem4.maph/h1h3h4h5jDh7}rP (hUhVh<]h;]h9]h:]h?]uhAMhBhhC]rQ hLX * dra7-ipu2-fw.xem4: This firmware will be used for Linux or Android. The firmware is built with the resource table defined in platform/ti/dce/baseimage/custom_rsc_table_vayu_ipu.h The corresponding map file is: platform/ti/dce/baseimage/package/cfg/out/ipu/release/ipu.xem4.maprR …�rS }rT (h.Uh/jN ubaubjA)�rU }rV (h.X * dra7xx-m4-ipu2.xem4: This firmware will be used for QNX. The firmware is built with the resource table defined in platform/ti/dce/baseimage/qnx_custom_rsc_table_vayu_ipu.h The corresponding map file is: platform/ti/dce/baseimage/package/cfg/out/ipu/release/qnx_ipu.xem4.maph/h1h3h4h5jDh7}rW (hUhVh<]h;]h9]h:]h?]uhAMhBhhC]rX hLX * dra7xx-m4-ipu2.xem4: This firmware will be used for QNX. The firmware is built with the resource table defined in platform/ti/dce/baseimage/qnx_custom_rsc_table_vayu_ipu.h The corresponding map file is: platform/ti/dce/baseimage/package/cfg/out/ipu/release/qnx_ipu.xem4.maprY …�rZ }r[ (h.Uh/jU ubaubj)�r\ }r] (h.Uh/h1h3h4h5j"h7}r^ (h9]h:]h;]h<]h?]uhAM!hBhhC]r_ j%)�r` }ra (h.Uj(Kh/j\ h3h4h5hAh7}rb (h9]h:]h;]h<]h?]uhAKhBhhC]ubaubh[)�rc }rd (h.XFirmware Loading and Unloadingre h/h1h3h4h5h_h7}rf (h<]rg Ufirmware-loading-and-unloadingrh ah;]h9]h:]h?]ri h!auhANhBhhC]rj hLXFirmware Loading and Unloadingrk …�rl }rm (h.je h/jc ubaubhh)�rn }ro (h.X!The table below shows the remote cores and their corresponding definitions in the kernel dtsi files (``[ti-processor-sdk-linux-am57xx-evm-[ver]]/board-support/linux-[ver]/arch/arm/boot/dts/dra7.dtsi, and dra74x.dtsi``), as well as the argument to be used in the loading/unloading commands.h/h1h3h4h5hlh7}rp (h9]h:]h;]h<]h?]uhAM&hBhhC]rq (hLXeThe table below shows the remote cores and their corresponding definitions in the kernel dtsi files (rr …�rs }rt (h.XeThe table below shows the remote cores and their corresponding definitions in the kernel dtsi files (h/jn ubj÷)�ru }rv (h.Xt``[ti-processor-sdk-linux-am57xx-evm-[ver]]/board-support/linux-[ver]/arch/arm/boot/dts/dra7.dtsi, and dra74x.dtsi``h7}rw (h9]h:]h;]h<]h?]uh/jn hC]rx hLXp[ti-processor-sdk-linux-am57xx-evm-[ver]]/board-support/linux-[ver]/arch/arm/boot/dts/dra7.dtsi, and dra74x.dtsiry …�rz }r{ (h.Uh/ju ubah5jÿubhLXH), as well as the argument to be used in the loading/unloading commands.r| …�r} }r~ (h.XH), as well as the argument to be used in the loading/unloading commands.h/jn ubeubjð)�r }r€ (h.Uh/h1h3h4h5jóh7}r� (h9]h:]h;]h<]h?]uhANhBhhC]r‚ jö)�rƒ }r„ (h.Uh7}r… (h<]h;]h9]h:]h?]UcolsKuh/j hC]r† (jû)�r‡ }rˆ (h.Uh7}r‰ (h<]h;]h9]h:]h?]UcolwidthKuh/jƒ hC]h5jÿubjû)�rŠ }r‹ (h.Uh7}rŒ (h<]h;]h9]h:]h?]UcolwidthKuh/jƒ hC]h5jÿubjû)�r� }rŽ (h.Uh7}r� (h<]h;]h9]h:]h?]UcolwidthK%uh/jƒ hC]h5jÿubj)�r� }r‘ (h.Uh7}r’ (h9]h:]h;]h<]h?]uh/jƒ hC]r“ (j)�r” }r• (h.Uh7}r– (h9]h:]h;]h<]h?]uh/j� hC]r— (j )�r˜ }r™ (h.Uh7}rš (h9]h:]h;]h<]h?]uh/j” hC]r› hh)�rœ }r� (h.X**Remote Core**rž h/j˜ h3h4h5hlh7}rŸ (h9]h:]h;]h<]h?]uhAM,hC]r  j)�r¡ }r¢ (h.jž h7}r£ (h9]h:]h;]h<]h?]uh/jœ hC]r¤ hLX Remote Corer¥ …�r¦ }r§ (h.Uh/j¡ ubah5jubaubah5j ubj )�r¨ }r© (h.Uh7}rª (h9]h:]h;]h<]h?]uh/j” hC]r« hh)�r¬ }r­ (h.X**Definition in dtsi file**r® h/j¨ h3h4h5hlh7}r¯ (h9]h:]h;]h<]h?]uhAM,hC]r° j)�r± }r² (h.j® h7}r³ (h9]h:]h;]h<]h?]uh/j¬ hC]r´ hLXDefinition in dtsi filerµ …�r¶ }r· (h.Uh/j± ubah5jubaubah5j ubj )�r¸ }r¹ (h.Uh7}rº (h9]h:]h;]h<]h?]uh/j” hC]r» hh)�r¼ }r½ (h.X!**Argument in loading/unloading**r¾ h/j¸ h3h4h5hlh7}r¿ (h9]h:]h;]h<]h?]uhAM,hC]rÀ j)�rÁ }r (h.j¾ h7}rà (h9]h:]h;]h<]h?]uh/j¼ hC]rÄ hLXArgument in loading/unloadingrÅ …�rÆ }rÇ (h.Uh/jÁ ubah5jubaubah5j ubeh5j1ubj)�rÈ }rÉ (h.Uh7}rÊ (h9]h:]h;]h<]h?]uh/j� hC]rË (j )�rÌ }rÍ (h.Uh7}rÎ (h9]h:]h;]h<]h?]uh/jÈ hC]rÏ hh)�rÐ }rÑ (h.XIPU1rÒ h/jÌ h3h4h5hlh7}rÓ (h9]h:]h;]h<]h?]uhAM.hC]rÔ hLXIPU1rÕ …�rÖ }r× (h.jÒ h/jÐ ubaubah5j ubj )�rØ }rÙ (h.Uh7}rÚ (h9]h:]h;]h<]h?]uh/jÈ hC]rÛ hh)�rÜ }rÝ (h.X ipu@58820000rÞ h/jØ h3h4h5hlh7}rß (h9]h:]h;]h<]h?]uhAM.hC]rà jl)�rá }râ (h.jÞ h7}rã (UrefuriXmailto:ipu@58820000h<]h;]h9]h:]h?]uh/jÜ hC]rä hLX ipu@58820000rå …�ræ }rç (h.Uh/já ubah5juubaubah5j ubj )�rè }ré (h.Uh7}rê (h9]h:]h;]h<]h?]uh/jÈ hC]rë hh)�rì }rí (h.X 58820000.ipurî h/jè h3h4h5hlh7}rï (h9]h:]h;]h<]h?]uhAM.hC]rð hLX 58820000.ipurñ …�rò }ró (h.jî h/jì ubaubah5j ubeh5j1ubj)�rô }rõ (h.Uh7}rö (h9]h:]h;]h<]h?]uh/j� hC]r÷ (j )�rø }rù (h.Uh7}rú (h9]h:]h;]h<]h?]uh/jô hC]rû hh)�rü }rý (h.XIPU2rþ h/jø h3h4h5hlh7}rÿ (h9]h:]h;]h<]h?]uhAM0hC]r hLXIPU2r …�r }r (h.jþ h/jü ubaubah5j ubj )�r }r (h.Uh7}r (h9]h:]h;]h<]h?]uh/jô hC]r hh)�r }r (h.X ipu@55020000r h/j h3h4h5hlh7}r (h9]h:]h;]h<]h?]uhAM0hC]r jl)�r }r (h.j h7}r (UrefuriXmailto:ipu@55020000h<]h;]h9]h:]h?]uh/j hC]r hLX ipu@55020000r …�r }r (h.Uh/j ubah5juubaubah5j ubj )�r }r (h.Uh7}r (h9]h:]h;]h<]h?]uh/jô hC]r hh)�r }r (h.X 55020000.ipur h/j h3h4h5hlh7}r (h9]h:]h;]h<]h?]uhAM0hC]r hLX 55020000.ipur …�r }r (h.j h/j ubaubah5j ubeh5j1ubj)�r }r! (h.Uh7}r" (h9]h:]h;]h<]h?]uh/j� hC]r# (j )�r$ }r% (h.Uh7}r& (h9]h:]h;]h<]h?]uh/j hC]r' hh)�r( }r) (h.XDSP1r* h/j$ h3h4h5hlh7}r+ (h9]h:]h;]h<]h?]uhAM2hC]r, hLXDSP1r- …�r. }r/ (h.j* h/j( ubaubah5j ubj )�r0 }r1 (h.Uh7}r2 (h9]h:]h;]h<]h?]uh/j hC]r3 hh)�r4 }r5 (h.X dsp@40800000r6 h/j0 h3h4h5hlh7}r7 (h9]h:]h;]h<]h?]uhAM2hC]r8 jl)�r9 }r: (h.j6 h7}r; (UrefuriXmailto:dsp@40800000h<]h;]h9]h:]h?]uh/j4 hC]r< hLX dsp@40800000r= …�r> }r? (h.Uh/j9 ubah5juubaubah5j ubj )�r@ }rA (h.Uh7}rB (h9]h:]h;]h<]h?]uh/j hC]rC hh)�rD }rE (h.X 40800000.dsprF h/j@ h3h4h5hlh7}rG (h9]h:]h;]h<]h?]uhAM2hC]rH hLX 40800000.dsprI …�rJ }rK (h.jF h/jD ubaubah5j ubeh5j1ubj)�rL }rM (h.Uh7}rN (h9]h:]h;]h<]h?]uh/j� hC]rO (j )�rP }rQ (h.Uh7}rR (h9]h:]h;]h<]h?]uh/jL hC]rS hh)�rT }rU (h.XDSP2rV h/jP h3h4h5hlh7}rW (h9]h:]h;]h<]h?]uhAM4hC]rX hLXDSP2rY …�rZ }r[ (h.jV h/jT ubaubah5j ubj )�r\ }r] (h.Uh7}r^ (h9]h:]h;]h<]h?]uh/jL hC]r_ hh)�r` }ra (h.X dsp@41000000rb h/j\ h3h4h5hlh7}rc (h9]h:]h;]h<]h?]uhAM4hC]rd jl)�re }rf (h.jb h7}rg (UrefuriXmailto:dsp@41000000h<]h;]h9]h:]h?]uh/j` hC]rh hLX dsp@41000000ri …�rj }rk (h.Uh/je ubah5juubaubah5j ubj )�rl }rm (h.Uh7}rn (h9]h:]h;]h<]h?]uh/jL hC]ro hh)�rp }rq (h.X 41000000.dsprr h/jl h3h4h5hlh7}rs (h9]h:]h;]h<]h?]uhAM4hC]rt hLX 41000000.dspru …�rv }rw (h.jr h/jp ubaubah5j ubeh5j1ubeh5jÚubeh5jÛubaubhh)�rx }ry (h.XdFor example, the argument of ``55020000.ipu`` corresponds to IPU2 as can be seen from ``dra7.dtsi``.h/h1h3h4h5hlh7}rz (h9]h:]h;]h<]h?]uhAM7hBhhC]r{ (hLXFor example, the argument of r| …�r} }r~ (h.XFor example, the argument of h/jx ubj÷)�r }r€ (h.X``55020000.ipu``h7}r� (h9]h:]h;]h<]h?]uh/jx hC]r‚ hLX 55020000.ipurƒ …�r„ }r… (h.Uh/j ubah5jÿubhLX) corresponds to IPU2 as can be seen from r† …�r‡ }rˆ (h.X) corresponds to IPU2 as can be seen from h/jx ubj÷)�r‰ }rŠ (h.X ``dra7.dtsi``h7}r‹ (h9]h:]h;]h<]h?]uh/jx hC]rŒ hLX dra7.dtsir� …�rŽ }r� (h.Uh/j‰ ubah5jÿubhLX.…�r� }r‘ (h.X.h/jx ubeubjA)�r’ }r“ (h.X;ipu2: ipu@55020000 { compatible = "ti,dra7-rproc-ipu";h/h1h3h4h5jDh7}r” (hUhVh<]h;]h9]h:]h?]uhAM<hBhhC]r• hLX;ipu2: ipu@55020000 { compatible = "ti,dra7-rproc-ipu";r– …�r— }r˜ (h.Uh/j’ ubaubhh)�r™ }rš (h.X›In the sections below, ``55020000.ipu`` will be used as the example. For a specific use case, please select the corresponding argument which is applicable.h/h1h3h4h5hlh7}r› (h9]h:]h;]h<]h?]uhAM?hBhhC]rœ (hLXIn the sections below, r� …�rž }rŸ (h.XIn the sections below, h/j™ ubj÷)�r  }r¡ (h.X``55020000.ipu``h7}r¢ (h9]h:]h;]h<]h?]uh/j™ hC]r£ hLX 55020000.ipur¤ …�r¥ }r¦ (h.Uh/j  ubah5jÿubhLXt will be used as the example. For a specific use case, please select the corresponding argument which is applicable.r§ …�r¨ }r© (h.Xt will be used as the example. For a specific use case, please select the corresponding argument which is applicable.h/j™ ubeubh[)�rª }r« (h.X,Unloading and loading remotecores at runtimer¬ h/h1h3h4h5h_h7}r­ (h<]r® U,unloading-and-loading-remotecores-at-runtimer¯ ah;]h9]h:]h?]r° hauhANhBhhC]r± hLX,Unloading and loading remotecores at runtimer² …�r³ }r´ (h.j¬ h/jª ubaubhh)�rµ }r¶ (h.XeIt is possible to unload and reload a remotecore at runtime from Linux using the ``sysfs`` interface.h/h1h3h4h5hlh7}r· (h9]h:]h;]h<]h?]uhAMFhBhhC]r¸ (hLXQIt is possible to unload and reload a remotecore at runtime from Linux using the r¹ …�rº }r» (h.XQIt is possible to unload and reload a remotecore at runtime from Linux using the h/jµ ubj÷)�r¼ }r½ (h.X ``sysfs``h7}r¾ (h9]h:]h;]h<]h?]uh/jµ hC]r¿ hLXsysfsrÀ …�rÁ }r (h.Uh/j¼ ubah5jÿubhLX interface.rà …�rÄ }rÅ (h.X interface.h/jµ ubeubjA)�rÆ }rÇ (h.Xwtarget $ cd /sys/bus/platform/drivers/omap-rproc/ target $ echo 55020000.ipu > unbind target $ echo 55020000.ipu > bindh/h1h3h4h5jDh7}rÈ (hUhVh<]h;]h9]h:]h?]uhAMKhBhhC]rÉ hLXwtarget $ cd /sys/bus/platform/drivers/omap-rproc/ target $ echo 55020000.ipu > unbind target $ echo 55020000.ipu > bindrÊ …�rË }rÌ (h.Uh/jÆ ubaubhh)�rÍ }rÎ (h.X÷The ``echo 55020000.ipu > unbind`` command tears down the communication channels between the A15 and the remotecore and unloads the remotecore. Any application level shutdown that needs to be performed needs to be handled by the system integrator.h/h1h3h4h5hlh7}rÏ (h9]h:]h;]h<]h?]uhAMOhBhhC]rÐ (hLXThe rÑ …�rÒ }rÓ (h.XThe h/jÍ ubj÷)�rÔ }rÕ (h.X``echo 55020000.ipu > unbind``h7}rÖ (h9]h:]h;]h<]h?]uh/jÍ hC]r× hLXecho 55020000.ipu > unbindrØ …�rÙ }rÚ (h.Uh/jÔ ubah5jÿubhLXÕ command tears down the communication channels between the A15 and the remotecore and unloads the remotecore. Any application level shutdown that needs to be performed needs to be handled by the system integrator.rÛ …�rÜ }rÝ (h.XÕ command tears down the communication channels between the A15 and the remotecore and unloads the remotecore. Any application level shutdown that needs to be performed needs to be handled by the system integrator.h/jÍ ubeubhh)�rÞ }rß (h.X[The ``echo 55020000.ipu > bind`` loads the appropriate firmware binary onto the remotecore.h/h1h3h4h5hlh7}rà (h9]h:]h;]h<]h?]uhAMThBhhC]rá (hLXThe râ …�rã }rä (h.XThe h/jÞ ubj÷)�rå }ræ (h.X``echo 55020000.ipu > bind``h7}rç (h9]h:]h;]h<]h?]uh/jÞ hC]rè hLXecho 55020000.ipu > bindré …�rê }rë (h.Uh/jå ubah5jÿubhLX; loads the appropriate firmware binary onto the remotecore.rì …�rí }rî (h.X; loads the appropriate firmware binary onto the remotecore.h/jÞ ubeubh[)�rï }rð (h.X)Changing the remotecore binary at runtimerñ h/h1h3h4h5h_h7}rò (h<]ró U)changing-the-remotecore-binary-at-runtimerô ah;]h9]h:]h?]rõ hauhANhBhhC]rö hLX)Changing the remotecore binary at runtimer÷ …�rø }rù (h.jñ h/jï ubaubhh)�rú }rû (h.X*To change the remotecore binary at runtimerü h/h1h3h4h5hlh7}rý (h9]h:]h;]h<]h?]uhAMZhBhhC]rþ hLX*To change the remotecore binary at runtimerÿ …�r }r (h.jü h/jú ubaubjš)�r }r (h.Uh/h1h3h4h5j�h7}r (jŸU.h<]h;]h9]j Uh:]h?]j¡j¢uhAM\hBhhC]r (hy)�r }r (h.X'Unload the remotecore using ``unbind``.r h/j h3h4h5h|h7}r (h9]h:]h;]h<]h?]uhANhBhhC]r hh)�r }r (h.j h/j h3h4h5hlh7}r (h9]h:]h;]h<]h?]uhAM\hC]r (hLXUnload the remotecore using r …�r }r (h.XUnload the remotecore using h/j ubj÷)�r }r (h.X ``unbind``h7}r (h9]h:]h;]h<]h?]uh/j hC]r hLXunbindr …�r }r (h.Uh/j ubah5jÿubhLX.…�r }r (h.X.h/j ubeubaubhy)�r }r (h.XtChange the remotecore binary in the firmware folder. Default location is ``/lib/firmware`` on the target filesystem.h/j h3h4h5h|h7}r (h9]h:]h;]h<]h?]uhANhBhhC]r hh)�r }r (h.XtChange the remotecore binary in the firmware folder. Default location is ``/lib/firmware`` on the target filesystem.h/j h3h4h5hlh7}r! (h9]h:]h;]h<]h?]uhAM]hC]r" (hLXIChange the remotecore binary in the firmware folder. Default location is r# …�r$ }r% (h.XIChange the remotecore binary in the firmware folder. Default location is h/j ubj÷)�r& }r' (h.X``/lib/firmware``h7}r( (h9]h:]h;]h<]h?]uh/j hC]r) hLX /lib/firmwarer* …�r+ }r, (h.Uh/j& ubah5jÿubhLX on the target filesystem.r- …�r. }r/ (h.X on the target filesystem.h/j ubeubaubhy)�r0 }r1 (h.X$Load the remotecore using ``bind``. h/j h3h4h5h|h7}r2 (h9]h:]h;]h<]h?]uhANhBhhC]r3 hh)�r4 }r5 (h.X#Load the remotecore using ``bind``.r6 h/j0 h3h4h5hlh7}r7 (h9]h:]h;]h<]h?]uhAM_hC]r8 (hLXLoad the remotecore using r9 …�r: }r; (h.XLoad the remotecore using h/j4 ubj÷)�r< }r= (h.X``bind``h7}r> (h9]h:]h;]h<]h?]uh/j4 hC]r? hLXbindr@ …�rA }rB (h.Uh/j< ubah5jÿubhLX.…�rC }rD (h.X.h/j4 ubeubaubeubjA)�rE }rF (h.X¾target $ cd /sys/bus/platform/drivers/omap-rproc/ target $ echo 55020000.ipu > unbind target $ cp /home/root/new-binary.xem4 /lib/firmware/dra7-ipu2-fw.xem4 target $ echo 55020000.ipu > bindh/h1h3h4h5jDh7}rG (hUhVh<]h;]h9]h:]h?]uhAMchBhhC]rH hLX¾target $ cd /sys/bus/platform/drivers/omap-rproc/ target $ echo 55020000.ipu > unbind target $ cp /home/root/new-binary.xem4 /lib/firmware/dra7-ipu2-fw.xem4 target $ echo 55020000.ipu > bindrI …�rJ }rK (h.Uh/jE ubaubhh)�rL }rM (h.XIf it is desirable to avoid overwriting the existing remote binaries, the method of symbolic links can be used instead of direct copy. For example, Processor SDK provides two types of DSP remotecore binaries: one for DSPDCE (dra7-dsp1-fw.xe66.dspdce-fw) and another one for OpenCL (dra7-dsp1-fw.xe66.opencl-monitor). dra7-dsp1-fw.xe66 is created as a symbolic link by default pointing to the OpenCL binary. When it is needed to switch to DSPDCE, the symbolic link of dra7-dsp1-fw.xe66 can be updated pointing to dra7-dsp1-fw.xe66.dspdce-fw.rN h/h1h3h4h5hlh7}rO (h9]h:]h;]h<]h?]uhAMhhBhhC]rP hLXIf it is desirable to avoid overwriting the existing remote binaries, the method of symbolic links can be used instead of direct copy. For example, Processor SDK provides two types of DSP remotecore binaries: one for DSPDCE (dra7-dsp1-fw.xe66.dspdce-fw) and another one for OpenCL (dra7-dsp1-fw.xe66.opencl-monitor). dra7-dsp1-fw.xe66 is created as a symbolic link by default pointing to the OpenCL binary. When it is needed to switch to DSPDCE, the symbolic link of dra7-dsp1-fw.xe66 can be updated pointing to dra7-dsp1-fw.xe66.dspdce-fw.rQ …�rR }rS (h.jN h/jL ubaubjA)�rT }rU (h.Xütarget $ cd /sys/bus/platform/drivers/omap-rproc/ target $ echo 40800000.dsp > unbind target $ rm /lib/firmware/dra7-dsp1-fw.xe66 target $ ln -s /lib/firmware/dra7-dsp1-fw.xe66.dspdce-fw /lib/firmware/dra7-dsp1-fw.xe66 target $ echo 40800000.dsp > bindh/h1h3h4h5jDh7}rV (hUhVh<]h;]h9]h:]h?]uhAMshBhhC]rW hLXütarget $ cd /sys/bus/platform/drivers/omap-rproc/ target $ echo 40800000.dsp > unbind target $ rm /lib/firmware/dra7-dsp1-fw.xe66 target $ ln -s /lib/firmware/dra7-dsp1-fw.xe66.dspdce-fw /lib/firmware/dra7-dsp1-fw.xe66 target $ echo 40800000.dsp > bindrX …�rY }rZ (h.Uh/jT ubaubhh)�r[ }r\ (h.XòAfter the switch, copycodectest application can be run to verify that DSPDCE firmware is loaded. This application fills the input buffer with a number entered as the argument and after process the output buffer is tested for the same pattern.r] h/h1h3h4h5hlh7}r^ (h9]h:]h;]h<]h?]uhAMyhBhhC]r_ hLXòAfter the switch, copycodectest application can be run to verify that DSPDCE firmware is loaded. This application fills the input buffer with a number entered as the argument and after process the output buffer is tested for the same pattern.r` …�ra }rb (h.j] h/j[ ubaubhh)�rc }rd (h.Xusage: copycodectest pattern.re h/h1h3h4h5hlh7}rf (h9]h:]h;]h<]h?]uhAM~hBhhC]rg hLXusage: copycodectest pattern.rh …�ri }rj (h.je h/jc ubaubhh)�rk }rl (h.XExample:rm h/h1h3h4h5hlh7}rn (h9]h:]h;]h<]h?]uhAM€hBhhC]ro hLXExample:rp …�rq }rr (h.jm h/jk ubaubjA)�rs }rt (h.Xtarget # copycodectest 123h/h1h3h4h5jDh7}ru (hUhVh<]h;]h9]h:]h?]uhAM„hBhhC]rv hLXtarget # copycodectest 123rw …�rx }ry (h.Uh/js ubaubhh)�rz }r{ (h.XSample console output:r| h/h1h3h4h5hlh7}r} (h9]h:]h;]h<]h?]uhAM†hBhhC]r~ hLXSample console output:r …�r€ }r� (h.j| h/jz ubaubjA)�r‚ }rƒ (h.XÄroot@am57xx-evm:~# copycodectest 123 0x22070: Opening Engine.. Created dsp_universalCopy Fill input buffer with pattern 123 Verifing the UniversalCopy algorithm copycodectest executed successfullyh/h1h3h4h5jDh7}r„ (hUhVh<]h;]h9]h:]h?]uhAMŠhBhhC]r… hLXÄroot@am57xx-evm:~# copycodectest 123 0x22070: Opening Engine.. Created dsp_universalCopy Fill input buffer with pattern 123 Verifing the UniversalCopy algorithm copycodectest executed successfullyr† …�r‡ }rˆ (h.Uh/j‚ ubaubh[)�r‰ }rŠ (h.X7Loading firmware during initial boot without using udevr‹ h/h1h3h4h5h_h7}rŒ (h<]r� U7loading-firmware-during-initial-boot-without-using-udevrŽ ah;]h9]h:]h?]r� hauhANhBhhC]r� hLX7Loading firmware during initial boot without using udevr‘ …�r’ }r“ (h.j‹ h/j‰ ubaubhh)�r” }r• (h.XkDuring the default boot, firmware is supplied to the kernel by ``udev``. Starting the ``udev`` service on boot causes a few seconds increase in boot time. In cases where a quick boot is required, the user may not start the ``udev`` service in boot. In such cases, firmware can be supplied to the kernel using the sysfs interface. An example script is shown below.h/h1h3h4h5hlh7}r– (h9]h:]h;]h<]h?]uhAM”hBhhC]r— (hLX?During the default boot, firmware is supplied to the kernel by r˜ …�r™ }rš (h.X?During the default boot, firmware is supplied to the kernel by h/j” ubj÷)�r› }rœ (h.X``udev``h7}r� (h9]h:]h;]h<]h?]uh/j” hC]rž hLXudevrŸ …�r  }r¡ (h.Uh/j› ubah5jÿubhLX. Starting the r¢ …�r£ }r¤ (h.X. Starting the h/j” ubj÷)�r¥ }r¦ (h.X``udev``h7}r§ (h9]h:]h;]h<]h?]uh/j” hC]r¨ hLXudevr© …�rª }r« (h.Uh/j¥ ubah5jÿubhLX� service on boot causes a few seconds increase in boot time. In cases where a quick boot is required, the user may not start the r¬ …�r­ }r® (h.X� service on boot causes a few seconds increase in boot time. In cases where a quick boot is required, the user may not start the h/j” ubj÷)�r¯ }r° (h.X``udev``h7}r± (h9]h:]h;]h<]h?]uh/j” hC]r² hLXudevr³ …�r´ }rµ (h.Uh/j¯ ubah5jÿubhLX„ service in boot. In such cases, firmware can be supplied to the kernel using the sysfs interface. An example script is shown below.r¶ …�r· }r¸ (h.X„ service in boot. In such cases, firmware can be supplied to the kernel using the sysfs interface. An example script is shown below.h/j” ubeubjA)�r¹ }rº (h.XFW_NAMES="dra7-dsp1-fw.xe66 dra7-dsp2-fw.xe66 dra7-ipu1-fw.xem4 dra7-ipu2-fw.xem4" for FW in $FW_NAMES ; do echo 1 > /sys/class/firmware/$FW/loading cat /lib/firmware/$FW > /sys/class/firmware/$FW/data echo 0 > /sys/class/firmware/$FW/loading doneh/h1h3h4h5jDh7}r» (hUhVh<]h;]h9]h:]h?]uhAM�hBhhC]r¼ hLXFW_NAMES="dra7-dsp1-fw.xe66 dra7-dsp2-fw.xe66 dra7-ipu1-fw.xem4 dra7-ipu2-fw.xem4" for FW in $FW_NAMES ; do echo 1 > /sys/class/firmware/$FW/loading cat /lib/firmware/$FW > /sys/class/firmware/$FW/data echo 0 > /sys/class/firmware/$FW/loading doner½ …�r¾ }r¿ (h.Uh/j¹ ubaubeubh3h4h5Usystem_messagerÀ h7}rÁ (h9]UlevelKh<]h;]Usourceh4h:]h?]UlineKUtypeUINFOr uhAMùhBhhC]rà hh)�rÄ }rÅ (h.X:Enumerated list start value not ordinal-1: "4" (ordinal 4)h7}rÆ (h9]h:]h;]h<]h?]uh/h,hC]rÇ hLX:Enumerated list start value not ordinal-1: "4" (ordinal 4)rÈ …�rÉ }rÊ (h.Uh/jÄ ubah5hlubaubh+)�rË }rÌ (h.Uh/h1h3h4h5jÀ h7}rÍ (h9]UlevelKh<]h;]Usourceh4h:]h?]UlineKUtypej uhAMÿhBhhC]rÎ hh)�rÏ }rÐ (h.X:Enumerated list start value not ordinal-1: "5" (ordinal 5)h7}rÑ (h9]h:]h;]h<]h?]uh/jË hC]rÒ hLX:Enumerated list start value not ordinal-1: "5" (ordinal 5)rÓ …�rÔ }rÕ (h.Uh/jÏ ubah5hlubaubh+)�rÖ }r× (h.Uh/h1h3h4h5jÀ h7}rØ (h9]UlevelKh<]h;]Usourceh4h:]h?]UlineKUtypej uhAMhBhhC]rÙ hh)�rÚ }rÛ (h.X:Enumerated list start value not ordinal-1: "6" (ordinal 6)h7}rÜ (h9]h:]h;]h<]h?]uh/jÖ hC]rÝ hLX:Enumerated list start value not ordinal-1: "6" (ordinal 6)rÞ …�rß }rà (h.Uh/jÚ ubah5hlubaubeUcurrent_sourcerá NU decorationrâ NUautofootnote_startrã KUnameidsrä }rå (hj”hjŽ hj@h jíh jsh j+h j¬h j1 hjôhh>hjçhj› hj/hj*hjèhjU hjhjý hj hjÒhj¿hjh hjthj¯ hj`hjô h hbh!jh h"jh#jh$j™h%j5h&jâuhC]ræ h1ah.UU transformerrç NU footnote_refsrè }ré Urefnamesrê }rë Usymbol_footnotesrì ]rí Uautofootnote_refsrî ]rï Usymbol_footnote_refsrð ]rñ U citationsrò ]ró hBhU current_linerô NUtransform_messagesrõ ]rö Ureporterr÷ NUid_startrø KU autofootnotesrù ]rú U citation_refsrû }rü Uindirect_targetsrý ]rþ Usettingsrÿ (cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttps://tools.ietf.org/html/rU tracebackrˆUpep_referencesrNUstrip_commentsr NU toc_backlinksr j U language_coder Uenr U datestampr NU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNhINUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetr‰Uoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorr NUcloak_email_addressesr!ˆUtrim_footnote_reference_spacer"‰Uenvr#NUdump_pseudo_xmlr$NUexpose_internalsr%NUsectsubtitle_xformr&‰U source_linkr'NUrfc_referencesr(NUoutput_encodingr)Uutf-8r*U source_urlr+NUinput_encodingr,U utf-8-sigr-U_disable_configr.NU id_prefixr/UU tab_widthr0KUerror_encodingr1UUTF-8r2U_sourcer3h4Ugettext_compactr4ˆU generatorr5NUdump_internalsr6NU smart_quotesr7‰U pep_base_urlr8U https://www.python.org/dev/peps/r9Usyntax_highlightr:Ulongr;Uinput_encoding_error_handlerr<jUauto_id_prefixr=Uidr>Udoctitle_xformr?‰Ustrip_elements_with_classesr@NU _config_filesrA]Ufile_insertion_enabledrBˆU raw_enabledrCKU dump_settingsrDNubUsymbol_footnote_startrEKUidsrF}rG(j”j�jŽ j‰ j@j;jíjèjsjnj+j&j¬j§j1 j, jôjïh>h1jçjâj› j– j/j*j*j%jèjãjU jP jjûjý jø j j jÒjÍj¿jºjh jc jtjoj¯ jª j`j[jô jï hbh\jh jc jjjjj™j”j5j0jâjÝuUsubstitution_namesrH}rIh5hBh7}rJ(h9]h<]h;]Usourceh4h:]h?]uU footnotesrK]rLUrefidsrM}rNub.