# Video APIs

Source: [https://docs.qualcomm.com/doc/80-70022-50/topic/video-apis.html](https://docs.qualcomm.com/doc/80-70022-50/topic/video-apis.html)

Use the video APIs to configure the video buffers and video converter.

## GstImageBufferPool APIs

- Configure it to add [GstVideoMeta](https://gstreamer.freedesktop.org/documentation/video/gstvideometa.html#GstVideoMeta) to the buffers.
- Configure video-specific requirements:
    - Stride alignments or pixel padding
    - Type of memory management (GBM/ION).

Figure :  GstImageBufferPool workflow
                    
                    <?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="1020" height="594.000000000000909" viewbox="0 0 1020 594.000000000000909">
  <g>
    <rect x=".499908447250959" y=".499884773712438" width="1019.000000000000227" height="593.00048828125" rx="7.5" ry="7.5" style="fill: #fafafa;"></rect>
    <path d="M1012.000030517563573,1.000006844024938c3.85986328125,0,7,3.14013671875,7,7v578c0,3.85986328125-3.14013671875,7-7,7H8.000030517563573c-3.85986328125,0-7-3.14013671875-7-7V8.000006844024938c0-3.85986328125,3.14013671875-7,7-7h1004M1012.000030517563573.000006844024938H8.000030517563573C3.581756591782323.000006844024938.000030517563573,3.581732918243688.000030517563573,8.000006844024938v578c0,4.41827392578125,3.58172607421875,8,8,8h1004c4.41827392578125,0,8-3.58172607421875,8-8V8.000006844024938C1020.000030517563573,3.581732918243688,1016.418304443344823.000006844024938,1012.000030517563573.000006844024938h0Z" style="fill: #d2d7e1;"></path>
  </g>
  <g>
    <rect x="14.484154593857056" y="15" width="284.567017009580013" height="200.000000000001819" rx="4" ry="4" style="fill: #d2d7e1;"></rect>
    <text transform="translate(91.402278900131932 39.630164314728063)" style="font-family: Roboto-Medium, Roboto; font-size: 16px; font-weight: 500;"><tspan x="0" y="0">GstImageBufferPool</tspan></text>
    <text transform="translate(29.484191894516698 83.641333748321813)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0" xml:space="preserve">-  </tspan><tspan x="12.3359375" y="0" style="letter-spacing: -.010009765625em;">parent: GstBufferPool</tspan><tspan x="0" y="19.2001953125" xml:space="preserve">-  </tspan><tspan x="12.3359375" y="19.2001953125" style="letter-spacing: -.010009765625em;">priv: GstImageBufferPoolPrivate *</tspan></text>
    <line x1="14.484154593857056" y1="54.954473437825072" x2="299.051171603437069" y2="54.954473437825072" style="fill: none; stroke: #b3b7bf; stroke-miterlimit: 10;"></line>
    <rect x="347.737359347563142" y="15" width="324.567017009580923" height="200.000000000001819" rx="4" ry="4" style="fill: #d2d7e1;"></rect>
    <text transform="translate(467.022674560532323 39.630164314728063)" style="font-family: Roboto-Medium, Roboto; font-size: 16px; font-weight: 500;"><tspan x="0" y="0">GstBufferPool</tspan></text>
    <text transform="translate(362.737365722641698 83.641333748321813)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0" xml:space="preserve">-  object: GstObject</tspan><tspan x="0" y="19.2001953125" xml:space="preserve">-  flushing: gint</tspan><tspan x="0" y="38.39990234375" xml:space="preserve">-  priv: GstBufferPoolPrivate *</tspan><tspan x="0" y="57.60009765625" xml:space="preserve">-  started: gboolean</tspan><tspan x="0" y="76.7998046875" xml:space="preserve">-  _gst_reserved: gpointer[GST_PADDING]</tspan></text>
    <line x1="347.737359347563142" y1="54.954473437825072" x2="672.304376357144065" y2="54.954473437825072" style="fill: none; stroke: #b3b7bf; stroke-miterlimit: 10;"></line>
    <rect x="720.948828396562021" y="15" width="284.567017009580013" height="200.000000000001819" rx="4" ry="4" style="fill: #d2d7e1;"></rect>
    <text transform="translate(836.456756591782323 39.630164314728063)" style="font-family: Roboto-Medium, Roboto; font-size: 16px; font-weight: 500;"><tspan x="0" y="0">GstBuffer</tspan></text>
    <text transform="translate(735.948791503891698 83.641333748321813)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0" xml:space="preserve">-  mini_object: GstMiniObject</tspan><tspan x="0" y="19.2001953125" xml:space="preserve">-  pool: GstBufferPool *</tspan><tspan x="0" y="38.39990234375" xml:space="preserve">-  pts: GstClockTime</tspan><tspan x="0" y="57.60009765625" xml:space="preserve">-  dts: GstClockTime</tspan><tspan x="0" y="76.7998046875" xml:space="preserve">-  duration: GstClockTime</tspan><tspan x="0" y="96" xml:space="preserve">-  offset: guint64</tspan><tspan x="0" y="115.2001953125" xml:space="preserve">-  offset_end: guint64</tspan></text>
    <line x1="720.948828396562021" y1="54.954473437825072" x2="1005.515845406142034" y2="54.954473437825072" style="fill: none; stroke: #b3b7bf; stroke-miterlimit: 10;"></line>
    <rect x="14.484154593857056" y="263.686187744126983" width="284.567017009580013" height="315.313812255873927" rx="4" ry="4" style="fill: #d2d7e1;"></rect>
    <text transform="translate(66.199035644516698 288.316291023712438)" style="font-family: Roboto-Medium, Roboto; font-size: 16px; font-weight: 500;"><tspan x="0" y="0">GstImageBufferPoolPrivate</tspan></text>
    <text transform="translate(29.484191894516698 332.327460457306188)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0" xml:space="preserve">-  info: GstVideoInfo</tspan><tspan x="0" y="19.2001953125" xml:space="preserve">-  addmeta: gboolean</tspan><tspan x="0" y="38.39990234375" xml:space="preserve">-  isubwc: gboolean</tspan><tspan x="0" y="57.60009765625" xml:space="preserve">-  keepmapped: gboolean</tspan><tspan x="0" y="76.7998046875" xml:space="preserve">-  memtype: GQuark</tspan><tspan x="0" y="96" xml:space="preserve">-  allocator: GstAllocator</tspan><tspan x="0" y="115.2001953125" xml:space="preserve">-  params: GstAllocationParams</tspan><tspan x="0" y="134.39990234375" xml:space="preserve">-  devid: gint</tspan><tspan x="0" y="153.60009765625" xml:space="preserve">-  gbmhandle: gpointer</tspan><tspan x="0" y="172.7998046875" xml:space="preserve">-  gbmdevice: struct gbm_device</tspan><tspan x="0" y="192" xml:space="preserve">-  datamap: GHash Table</tspan><tspan x="0" y="211.2001953125" xml:space="preserve">-  lock: GMutex</tspan></text>
    <line x1="14.484154593857056" y1="303.640661181952055" x2="299.051171603437069" y2="303.640661181952055" style="fill: none; stroke: #b3b7bf; stroke-miterlimit: 10;"></line>
    <rect x="347.737359347563142" y="263.686187744126983" width="324.567017009580923" height="315.313812255873927" rx="4" ry="4" style="fill: #d2d7e1;"></rect>
    <text transform="translate(441.819549560532323 288.316291023712438)" style="font-family: Roboto-Medium, Roboto; font-size: 16px; font-weight: 500;"><tspan x="0" y="0">GstBufferPoolPrivate</tspan></text>
    <text transform="translate(362.737243652329198 332.327460457306188)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0" xml:space="preserve">-  queue: GstAtomicQueue</tspan><tspan x="0" y="19.2001953125" xml:space="preserve">-  poll: GstPoll *</tspan><tspan x="0" y="38.39990234375" xml:space="preserve">-  rec_lock: GRecMutex</tspan><tspan x="0" y="57.60009765625" xml:space="preserve">-  maxsize: gsize</tspan><tspan x="0" y="76.7998046875" xml:space="preserve">-  started: gboolean</tspan><tspan x="0" y="96" xml:space="preserve">-  active: gboolean</tspan><tspan x="0" y="115.2001953125" xml:space="preserve">-  outstanding: gint</tspan><tspan x="0" y="134.39990234375" xml:space="preserve">-  configured: gboolean</tspan><tspan x="0" y="153.60009765625" xml:space="preserve">-  min_buffers: guint</tspan><tspan x="0" y="172.7998046875" xml:space="preserve">-  max_buffers: guint</tspan><tspan x="0" y="192" xml:space="preserve">-  cur_buffers: guint</tspan><tspan x="0" y="211.2001953125" xml:space="preserve">-  allocator: GstAllocator *</tspan><tspan x="0" y="230.39990234375" xml:space="preserve">-  params: GstAllocationParams</tspan></text>
    <line x1="347.737359347563142" y1="303.640661181952055" x2="672.304376357144065" y2="303.640661181952055" style="fill: none; stroke: #b3b7bf; stroke-miterlimit: 10;"></line>
    <rect x="720.948828396562021" y="263.686187744126983" width="284.567017009580013" height="315.313812255873927" rx="4" ry="4" style="fill: #d2d7e1;"></rect>
    <text transform="translate(829.183319091782323 288.316291023712438)" style="font-family: Roboto-Medium, Roboto; font-size: 16px; font-weight: 500;"><tspan x="0" y="0">GstMemory</tspan></text>
    <text transform="translate(735.948791503891698 332.327460457306188)" style="font-family: Roboto-Regular, Roboto; font-size: 16px;"><tspan x="0" y="0" xml:space="preserve">-  mini_object: GstMiniObject</tspan><tspan x="0" y="19.2001953125" xml:space="preserve">-  allocator: GstAllocator *</tspan><tspan x="0" y="38.39990234375" xml:space="preserve">-  parent: GstMemory *</tspan><tspan x="0" y="57.60009765625" xml:space="preserve">-  maxsize: gsize</tspan><tspan x="0" y="76.7998046875" xml:space="preserve">-  align: gsize</tspan><tspan x="0" y="96" xml:space="preserve">-  offset: gsize</tspan><tspan x="0" y="115.2001953125" xml:space="preserve">-  size: gsize</tspan></text>
    <line x1="720.948828396562021" y1="303.640661181952055" x2="1005.515845406142034" y2="303.640661181952055" style="fill: none; stroke: #b3b7bf; stroke-miterlimit: 10;"></line>
    <g>
      <line x1="164.484146118149511" y1="215.000006844024938" x2="164.484161376938573" y2="255.564276863556188" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="160.495094299301854 254.397101570587438 164.484161376938573 261.305274178009313 168.473224639878026 254.397101570587438 160.495094299301854 254.397101570587438"></polygon>
    </g>
    <g>
      <line x1="517.737365722641698" y1="215.000006844024938" x2="517.737365722641698" y2="255.564276863556188" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="513.748291015610448 254.397101570587438 517.737365722641698 261.305274178009313 521.726440429672948 254.397101570587438 513.748291015610448 254.397101570587438"></polygon>
    </g>
    <g>
      <line x1="345.356445312485448" y1="114.999991585235875" x2="304.792152404770604" y2="115.000006844024938" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="305.959342956528417 111.01094739578275 299.051170349106542 115.000022102814 305.959350585922948 118.989081551056188 305.959342956528417 111.01094739578275"></polygon>
    </g>
    <g>
      <line x1="719.779235839829198" y1="114.999991585235875" x2="679.214965820297948" y2="115.000006844024938" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
      <polygon points="680.382141113266698 111.01094739578275 673.473968505844823 115.000022102814 680.382141113266698 118.989081551056188 680.382141113266698 111.01094739578275"></polygon>
    </g>
  </g>
</svg>
The following list provides the GstImageBufferPool API description:
- **Prototype**
    Creates a buffer pool that can assign the video frame
                            buffers to
                        memory.

        GstBufferPool * 
        gst_image_buffer_pool_new (const gchar * type)Copy to clipboard
- **Parameters**

| [in] | `type` | The memory that the pool uses to assign<br>                                            buffers. |
    | :--- | :--- | :--- |
- **Returns**
    - A new [GstBufferPool](https://gstreamer.freedesktop.org/documentation/gstreamer/gstbufferpool.html?gi-language=c) that
                                allocates the video frames.
    - Free with [gst_object_unref](https://gstreamer.freedesktop.org/documentation/gstreamer/gstobject.html#gst_object_unref).
- **Arguments**

The following table lists the arguments that can be passed to
                                    gst\_image\_buffer\_pool\_new() to configure the
                                buffer memories:    | Argument | Description | Usage |
    | --- | --- | --- |
    | GST\_IMAGE\_BUFFER\_POOL\_TYPE\_ION | Assigns buffers through the ION memory<br>                                            manager. | #define GST_IMAGE_BUFFER_POOL_TYPE_ION "GstBufferPoolTypeIonMemory"Copy to clipboard |
    | GST\_IMAGE\_BUFFER\_POOL\_TYPE\_GBM | Assigns buffers through the generic buffer management<br>                                            (GBM). | #define GST_IMAGE_BUFFER_POOL_TYPE_GBM "GstBufferPoolTypeGbmMemory"Copy to clipboard |
    | GST\_IMAGE\_BUFFER\_POOL\_OPTION\_UBWC\_MODE | Indicates that the allocated buffer must be in<br>                                                Qualcomm^®^ Universal Bandwidth Compression<br>                                            mode. | #define GST_IMAGE_BUFFER_POOL_OPTION_UBWC_MODE "GstBufferPoolOptionUBWCMode"Copy to clipboard |
    | GST\_IMAGE\_BUFFER\_POOL\_OPTION\_KEEP\_MAPPED | Indicates if the mapped buffer memory is mapped until<br>                                            the memory is destroyed. | #define GST_IMAGE_BUFFER_POOL_OPTION_KEEP_MAPPED "GstBufferPoolOptionKeepMapped"Copy to clipboard |

## GstGlesVideoConverter APIs

Figure : Hardware-accelerated image manipulation, transformation, and color conversion 
                
                <?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="792.098483085632324" height="1295.816125869756434" viewbox="0 0 792.098483085632324 1295.816125869756434">
  <text transform="translate(176.940234184265137 96.875764846801758)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">gst_gles_converter_new</tspan></text>
  <g>
    <path d="M4.014925956726099.499963760375977h784.06884765625c1.940056768228715,0,3.51513671875,1.575079950521344,3.51513671875,3.51513671875002v1287.78564453125c0,1.940326257986726-1.575298742013274,3.515625-3.515625,3.515625H4.015414237976074c-1.940326257986719,0-3.515625-1.575298742013274-3.515625-3.515625V4.015100479126001C.499789237976074,2.075043710897323,2.074869188497421.499963760375977,4.014925956726099.499963760375977Z" style="fill: #fafafa;"></path>
    <path d="M788.083163261413574,1c1.66265869140625,0,3.01531982421875,1.352666854858398,3.01531982421875,3.01533317565918v1287.785655975341797c0,1.6624755859375-1.3526611328125,3.01513671875-3.01531982421875,3.01513671875H4.015166759490967c-1.662499904632568,0-3.015166759490967-1.3526611328125-3.015166759490967-3.01513671875V4.01533317565918c0-1.662666320800781,1.352666854858398-3.01533317565918,3.015166759490967-3.01533317565918h784.067996501922607M788.083163261413574,0H4.015166759490967C1.797666549682617,0,0,1.797666549682617,0,4.01533317565918v1287.785655975341797c0,2.217529296875,1.797666549682617,4.01513671875,4.015166759490967,4.01513671875h784.067996501922607c2.2176513671875,0,4.01531982421875-1.797607421875,4.01531982421875-4.01513671875V4.01533317565918c0-2.217666625976562-1.79766845703125-4.01533317565918-4.01531982421875-4.01533317565918h0Z" style="fill: #d2d7e1;"></path>
  </g>
  <text transform="translate(441.228610038757324 136.455926895141602)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">dlopen libIB2C.so</tspan></text>
  <text transform="translate(188.484225273132324 320.741235733032227)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">GstGlesConverter *</tspan></text>
  <text transform="translate(143.247408866882324 359.644159317016602)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">gst_gles_converter_set_input_ops</tspan></text>
  <text transform="translate(143.247408866882324 432.683526992797852)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">gst_gles_converter_set_input_ops</tspan></text>
  <text transform="translate(219.006686210632324 395.796136856079102)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">gboolean</tspan></text>
  <rect x="35.099927601232594" y="20.000045140583097" width="140.000000000000909" height="48" rx="4" ry="4" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></rect>
  <rect x="325.139924312218682" y="20.000045140583097" width="140.000000000002728" height="48" rx="4" ry="4" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></rect>
  <rect x="615.179924312218645" y="20.000045140583097" width="140" height="48" rx="4" ry="4" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></rect>
  <line x1="395.139924312219591" y1="68.000040687575165" x2="395.139924312219591" y2="1293.808630297635318" style="fill: none; stroke: #000; stroke-dasharray: 6 3; stroke-miterlimit: 10;"></line>
  <line x1="105.099927601232594" y1="68.000040687575165" x2="105.099927601232594" y2="1293.808630297635318" style="fill: none; stroke: #000; stroke-dasharray: 6 3; stroke-miterlimit: 10;"></line>
  <text transform="translate(85.638011932373047 48.675827026367188)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Plugin</tspan></text>
  <text transform="translate(355.973299980163574 48.675827026367188)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">GLES engine</tspan></text>
  <text transform="translate(670.431796073913574 48.675827026367188)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">IB2C</tspan></text>
  <text transform="translate(35.963545799255371 527.762933731079102)" style="font-family: Roboto-Bold, Roboto; font-size: 16px; font-weight: 700;"><tspan x="0" y="0">Opt</tspan></text>
  <rect x="19.999925956725747" y="509.314984944690877" width="752.140000000000327" height="487.010003052675529" style="fill: none; stroke: #7c8aa3; stroke-miterlimit: 10; stroke-width: 1.5px;"></rect>
  <polyline points="82.999925956725747 509.314984944690877 82.999925956725747 524.196332600940877 72.999925956725747 534.196332600940877 19.999925956725747 534.196332600940877" style="fill: none; stroke: #7c8aa3; stroke-miterlimit: 10; stroke-width: 1.5px;"></polyline>
  <g>
    <line x1="108.09992504119873" y1="104.732706069946289" x2="388.885561943054199" y2="104.732706069946289" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="387.718356132507324 108.721765518189386 394.626528739929199 104.732706069946289 387.718356132507324 100.74363899230957 387.718356132507324 108.721765518189386"></polygon>
  </g>
  <text transform="translate(141.577929496765137 560.779443740844727)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">gst_gles_converter_submit_request</tspan></text>
  <g>
    <line x1="108.09992504119873" y1="568.636377334594727" x2="385.716738700866699" y2="568.636377334594727" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="384.549563407897949 572.625452041625977 391.457736015319824 568.636377334594727 384.549563407897949 564.647302627563477 384.549563407897949 572.625452041625977"></polygon>
  </g>
  <g>
    <line x1="113.840907096862793" y1="326.489679336547852" x2="116.340907096862793" y2="326.489679336547852" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <line x1="121.355196952819824" y1="326.489679336547852" x2="389.619387626647949" y2="326.489679336547852" style="fill: none; stroke: #000; stroke-dasharray: 5.014284133911133 5.014284133911133; stroke-miterlimit: 10;"></line>
    <line x1="392.126528739929199" y1="326.489679336547852" x2="394.626528739929199" y2="326.489679336547852" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="115.008105278015137 330.478754043579102 108.09992504119873 326.489679336547852 115.008105278015137 322.500635147094727 115.008105278015137 330.478754043579102"></polygon>
  </g>
  <text transform="translate(496.999423027038574 289.496179580688477)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">::ib2c::IEngine</tspan></text>
  <g>
    <line x1="403.880923271179199" y1="296.706323623657227" x2="684.509432792663574" y2="296.706323623657227" style="fill: none; stroke: #000; stroke-dasharray: 6 3; stroke-miterlimit: 10;"></line>
    <polygon points="405.048098564147949 300.695398330689386 398.139925956726074 296.706323623657227 405.048098564147949 292.717248916625977 405.048098564147949 300.695398330689386"></polygon>
  </g>
  <text transform="translate(509.072360038757324 783.303369522094727)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">surface_id</tspan></text>
  <g>
    <line x1="403.880923271179199" y1="790.513533701465349" x2="684.509432792663574" y2="790.513533701465349" style="fill: none; stroke: #000; stroke-dasharray: 6 3; stroke-miterlimit: 10;"></line>
    <polygon points="405.048098564147949 794.502608408496599 398.139925956726074 790.513533701465349 405.048098564147949 786.524458994434099 405.048098564147949 794.502608408496599"></polygon>
  </g>
  <text transform="translate(509.000582695007324 860.196741104125977)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">request_id</tspan></text>
  <g>
    <line x1="403.880923271179199" y1="867.406885147094727" x2="684.509432792663574" y2="867.406885147094727" style="fill: none; stroke: #000; stroke-dasharray: 6 3; stroke-miterlimit: 10;"></line>
    <polygon points="405.048098564147949 871.395959854125977 398.139925956726074 867.406885147094727 405.048098564147949 863.417810440063477 405.048098564147949 871.395959854125977"></polygon>
  </g>
  <text transform="translate(221.409319877624512 882.896448135375977)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">request ID</tspan></text>
  <g>
    <line x1="113.840914726257324" y1="890.106653213500977" x2="395.139925956726074" y2="890.106653213500977" style="fill: none; stroke: #000; stroke-dasharray: 6 3; stroke-miterlimit: 10;"></line>
    <polygon points="115.008105278015137 894.095727920532227 108.09992504119873 890.106653213500977 115.008105278015137 886.117578506469727 115.008105278015137 894.095727920532227"></polygon>
  </g>
  <text transform="translate(449.182040214538574 708.331689834594727)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">::ib2c::IEngine::CreateSurface</tspan></text>
  <g>
    <line x1="398.139925956726074" y1="715.541833877563477" x2="676.438937187194824" y2="715.541833877563477" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="675.271761894226074 719.530908584594727 682.179903984069824 715.541833877563477 675.271761894226074 711.552759170532227 675.271761894226074 719.530908584594727"></polygon>
  </g>
  <text transform="translate(463.687899589538574 823.724939346313477)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">::ib2c::IEngine::Compose</tspan></text>
  <g>
    <line x1="398.139925956726074" y1="830.935083389282227" x2="676.438937187194824" y2="830.935083389282227" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="675.271761894226074 834.924158096313477 682.179903984069824 830.935083389282227 675.271761894226074 826.946008682250977 675.271761894226074 834.924158096313477"></polygon>
  </g>
  <text transform="translate(475.015048027038574 926.690881729125977)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">::ib2c::IEngine::Finish</tspan></text>
  <g>
    <line x1="398.139925956726074" y1="933.901002148404586" x2="676.438937187194824" y2="933.901002148404586" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="675.271761894226074 937.890076855435836 682.179903984069824 933.901002148404586 675.271761894226074 929.911927441373336 675.271761894226074 937.890076855435836"></polygon>
  </g>
  <g>
    <line x1="398.139925956726074" y1="261.004693984985352" x2="675.558138847351074" y2="261.004693984985352" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="674.390963554382324 264.993768692016602 681.299166679382324 261.004693984985352 674.390963554382324 257.015619277954102 674.390963554382324 264.993768692016602"></polygon>
  </g>
  <g>
    <line x1="404.077029228210449" y1="146.823373794555664" x2="407.077029228210449" y2="146.823373794555664" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <line x1="409.602908134460449" y1="146.823373794555664" x2="431.073092460632324" y2="146.823373794555664" style="fill: none; stroke: #000; stroke-dasharray: 5.051803112030029 2.525901556015015; stroke-miterlimit: 10;"></line>
    <polyline points="432.336031913757324 146.823373794555664 435.336031913757324 146.823373794555664 435.336031913757324 143.823373794555664" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
    <line x1="435.336031913757324" y1="141.238992691040039" x2="435.336031913757324" y2="127.024896621704102" style="fill: none; stroke: #000; stroke-dasharray: 5.168760776519775 2.584380388259888; stroke-miterlimit: 10;"></line>
    <polyline points="435.336031913757324 125.732706069946289 435.336031913757324 122.732706069946289 432.336031913757324 122.732706069946289" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
    <line x1="429.236025810241699" y1="122.732706069946289" x2="402.886050224304199" y2="122.732706069946289" style="fill: none; stroke: #000; stroke-dasharray: 6.199999332427979 3.099999666213989; stroke-miterlimit: 10;"></line>
    <line x1="401.336031913757324" y1="122.732706069946289" x2="398.336031913757324" y2="122.732706069946289" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="405.244204521179199 150.812433242797852 398.336031913757324 146.823373794555664 405.244204521179199 142.834299087524414 405.244204521179199 150.812433242797852"></polygon>
  </g>
  <text transform="translate(441.228610038757324 654.344568252563477)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Fetch surface associated with frame</tspan></text>
  <g>
    <line x1="404.077029228210449" y1="660.712014743634427" x2="407.077029228210449" y2="660.712014743634427" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <line x1="409.602908134460449" y1="660.712014743634427" x2="431.073092460632324" y2="660.712014743634427" style="fill: none; stroke: #000; stroke-dasharray: 5.051803112030029 2.525901556015015; stroke-miterlimit: 10;"></line>
    <polyline points="432.336031913757324 660.712014743634427 435.336031913757324 660.712014743634427 435.336031913757324 657.712014743634427" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
    <line x1="435.336031913757324" y1="655.127633640118802" x2="435.336031913757324" y2="640.913537570782864" style="fill: none; stroke: #000; stroke-dasharray: 5.168760776519775 2.584380388259888; stroke-miterlimit: 10;"></line>
    <polyline points="435.336031913757324 639.621347019025052 435.336031913757324 636.621347019025052 432.336031913757324 636.621347019025052" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
    <line x1="429.236025810241699" y1="636.621347019025052" x2="402.886050224304199" y2="636.621347019025052" style="fill: none; stroke: #000; stroke-dasharray: 6.199999332427979 3.099999666213989; stroke-miterlimit: 10;"></line>
    <line x1="401.336031913757324" y1="636.621347019025052" x2="398.336031913757324" y2="636.621347019025052" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="405.244204521179199 664.701074191876614 398.336031913757324 660.712014743634427 405.244204521179199 656.722940036603177 405.244204521179199 664.701074191876614"></polygon>
  </g>
  <text transform="translate(441.228610038757324 387.617517471313477)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Cash input ops in GstStructure </tspan></text>
  <g>
    <line x1="404.077029228210449" y1="395.143243210613946" x2="407.077029228210449" y2="395.143243210613946" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <line x1="409.602908134460449" y1="395.143243210613946" x2="431.073092460632324" y2="395.143243210613946" style="fill: none; stroke: #000; stroke-dasharray: 5.051803112030029 2.525901556015015; stroke-miterlimit: 10;"></line>
    <polyline points="432.336031913757324 395.143243210613946 435.336031913757324 395.143243210613946 435.336031913757324 392.143243210613946" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
    <line x1="435.336031913757324" y1="389.558862107098321" x2="435.336031913757324" y2="375.344766037762383" style="fill: none; stroke: #000; stroke-dasharray: 5.168760776519775 2.584380388259888; stroke-miterlimit: 10;"></line>
    <polyline points="435.336031913757324 374.052575486004571 435.336031913757324 371.052575486004571 432.336031913757324 371.052575486004571" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
    <line x1="429.236025810241699" y1="371.052575486004571" x2="402.886050224304199" y2="371.052575486004571" style="fill: none; stroke: #000; stroke-dasharray: 6.199999332427979 3.099999666213989; stroke-miterlimit: 10;"></line>
    <line x1="401.336031913757324" y1="371.052575486004571" x2="398.336031913757324" y2="371.052575486004571" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="405.244204521179199 399.132302658856133 398.336031913757324 395.143243210613946 405.244204521179199 391.154168503582696 405.244204521179199 399.132302658856133"></polygon>
  </g>
  <text transform="translate(441.228610038757324 458.952753067016602)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Cash output ops in GstStructure </tspan></text>
  <g>
    <line x1="404.077029228210449" y1="466.478485877105413" x2="407.077029228210449" y2="466.478485877105413" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <line x1="409.602908134460449" y1="466.478485877105413" x2="431.073092460632324" y2="466.478485877105413" style="fill: none; stroke: #000; stroke-dasharray: 5.051803112030029 2.525901556015015; stroke-miterlimit: 10;"></line>
    <polyline points="432.336031913757324 466.478485877105413 435.336031913757324 466.478485877105413 435.336031913757324 463.478485877105413" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
    <line x1="435.336031913757324" y1="460.894104773588879" x2="435.336031913757324" y2="446.680008704252941" style="fill: none; stroke: #000; stroke-dasharray: 5.168760776519775 2.584380388259888; stroke-miterlimit: 10;"></line>
    <polyline points="435.336031913757324 445.387818152495129 435.336031913757324 442.387818152495129 432.336031913757324 442.387818152495129" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
    <line x1="429.236025810241699" y1="442.387818152495129" x2="402.886050224304199" y2="442.387818152495129" style="fill: none; stroke: #000; stroke-dasharray: 6.199999332427979 3.099999666213989; stroke-miterlimit: 10;"></line>
    <line x1="401.336031913757324" y1="442.387818152495129" x2="398.336031913757324" y2="442.387818152495129" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="405.244204521179199 470.467545325346691 398.336031913757324 466.478485877105413 405.244204521179199 462.489411170073254 405.244204521179199 470.467545325346691"></polygon>
  </g>
  <text transform="translate(441.228610038757324 1206.355066299438477)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">delete ::ib2c::IEngine</tspan></text>
  <g>
    <line x1="404.077029228210449" y1="1213.880752378805482" x2="407.077029228210449" y2="1213.880752378805482" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <line x1="409.602908134460449" y1="1213.880752378805482" x2="431.073092460632324" y2="1213.880752378805482" style="fill: none; stroke: #000; stroke-dasharray: 5.051803112030029 2.525901556015015; stroke-miterlimit: 10;"></line>
    <polyline points="432.336031913757324 1213.880752378805482 435.336031913757324 1213.880752378805482 435.336031913757324 1210.880752378805482" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
    <line x1="435.336031913757324" y1="1208.296371275286219" x2="435.336031913757324" y2="1194.082275205955739" style="fill: none; stroke: #000; stroke-dasharray: 5.168760776519775 2.584380388259888; stroke-miterlimit: 10;"></line>
    <polyline points="435.336031913757324 1192.790084654196107 435.336031913757324 1189.790084654196107 432.336031913757324 1189.790084654196107" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
    <line x1="429.236025810241699" y1="1189.790084654196107" x2="402.886050224304199" y2="1189.790084654196107" style="fill: none; stroke: #000; stroke-dasharray: 6.199999332427979 3.099999666213989; stroke-miterlimit: 10;"></line>
    <line x1="401.336031913757324" y1="1189.790084654196107" x2="398.336031913757324" y2="1189.790084654196107" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="405.244204521179199 1217.869811827045851 398.336031913757324 1213.880752378805482 405.244204521179199 1209.891677671776051 405.244204521179199 1217.869811827045851"></polygon>
  </g>
  <text transform="translate(441.228610038757324 1243.835779190063477)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">dlclose libIB2C.so</tspan></text>
  <g>
    <line x1="404.077029228210449" y1="1251.361431820425423" x2="407.077029228210449" y2="1251.361431820425423" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <line x1="409.602908134460449" y1="1251.361431820425423" x2="431.073092460632324" y2="1251.361431820425423" style="fill: none; stroke: #000; stroke-dasharray: 5.051803112030029 2.525901556015015; stroke-miterlimit: 10;"></line>
    <polyline points="432.336031913757324 1251.361431820425423 435.336031913757324 1251.361431820425423 435.336031913757324 1248.361431820425423" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
    <line x1="435.336031913757324" y1="1245.777050716915255" x2="435.336031913757324" y2="1231.56295464757568" style="fill: none; stroke: #000; stroke-dasharray: 5.168760776519775 2.584380388259888; stroke-miterlimit: 10;"></line>
    <polyline points="435.336031913757324 1230.270764095825143 435.336031913757324 1227.270764095825143 432.336031913757324 1227.270764095825143" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
    <line x1="429.236025810241699" y1="1227.270764095825143" x2="402.886050224304199" y2="1227.270764095825143" style="fill: none; stroke: #000; stroke-dasharray: 6.199999332427979 3.099999666213989; stroke-miterlimit: 10;"></line>
    <line x1="401.336031913757324" y1="1227.270764095825143" x2="398.336031913757324" y2="1227.270764095825143" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="405.244204521179199 1255.350491268676706 398.336031913757324 1251.361431820425423 405.244204521179199 1247.372357113395992 405.244204521179199 1255.350491268676706"></polygon>
  </g>
  <text transform="translate(441.228610038757324 182.720422744750977)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">dlsym libIB2C.so NewEngine symbol</tspan></text>
  <g>
    <line x1="404.077029228210449" y1="188.914026260375977" x2="407.077029228210449" y2="188.914026260375977" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <line x1="409.602908134460449" y1="188.914026260375977" x2="431.073092460632324" y2="188.914026260375977" style="fill: none; stroke: #000; stroke-dasharray: 5.051803112030029 2.525901556015015; stroke-miterlimit: 10;"></line>
    <polyline points="432.336031913757324 188.914026260375977 435.336031913757324 188.914026260375977 435.336031913757324 185.914026260375977" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
    <line x1="435.336031913757324" y1="183.329645156860352" x2="435.336031913757324" y2="169.115564346314386" style="fill: none; stroke: #000; stroke-dasharray: 5.168760776519775 2.584380388259888; stroke-miterlimit: 10;"></line>
    <polyline points="435.336031913757324 167.823373794555664 435.336031913757324 164.823373794555664 432.336031913757324 164.823373794555664" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
    <line x1="429.236025810241699" y1="164.823373794555664" x2="402.886050224304199" y2="164.823373794555664" style="fill: none; stroke: #000; stroke-dasharray: 6.199999332427979 3.099999666213989; stroke-miterlimit: 10;"></line>
    <line x1="401.336031913757324" y1="164.823373794555664" x2="398.336031913757324" y2="164.823373794555664" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="405.244204521179199 192.903100967407227 398.336031913757324 188.914026260375977 405.244204521179199 184.924966812133789 405.244204521179199 192.903100967407227"></polygon>
  </g>
  <text transform="translate(441.228610038757324 223.310388565063477)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">Initialize interval variables</tspan></text>
  <text transform="translate(504.946047782897949 256.213571548461914)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">NewEngine</tspan></text>
  <g>
    <line x1="404.077029228210449" y1="231.004693984985352" x2="407.077029228210449" y2="231.004693984985352" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <line x1="409.602908134460449" y1="231.004693984985352" x2="431.073092460632324" y2="231.004693984985352" style="fill: none; stroke: #000; stroke-dasharray: 5.051803112030029 2.525901556015015; stroke-miterlimit: 10;"></line>
    <polyline points="432.336031913757324 231.004693984985352 435.336031913757324 231.004693984985352 435.336031913757324 228.004693984985352" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
    <line x1="435.336031913757324" y1="225.420312881469727" x2="435.336031913757324" y2="211.206216812133789" style="fill: none; stroke: #000; stroke-dasharray: 5.168760776519775 2.584380388259888; stroke-miterlimit: 10;"></line>
    <polyline points="435.336031913757324 209.914026260375977 435.336031913757324 206.914026260375977 432.336031913757324 206.914026260375977" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></polyline>
    <line x1="429.236025810241699" y1="206.914026260375977" x2="402.886050224304199" y2="206.914026260375977" style="fill: none; stroke: #000; stroke-dasharray: 6.199999332427979 3.099999666213989; stroke-miterlimit: 10;"></line>
    <line x1="401.336031913757324" y1="206.914026260375977" x2="398.336031913757324" y2="206.914026260375977" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="405.244204521179199 234.993753433227539 398.336031913757324 231.004693984985352 405.244204521179199 227.015634536743164 405.244204521179199 234.993753433227539"></polygon>
  </g>
  <text transform="translate(108.099716186523438 527.762933731079102)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">[For each incoming buffer or group of buffers]</tspan></text>
  <text transform="translate(445.750399589538574 1108.981897354125977)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">::ib2c::IEngine::DestroySurface</tspan></text>
  <g>
    <line x1="398.139925956726074" y1="1116.191998985686951" x2="676.438937187194824" y2="1116.191998985686951" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="675.271761894226074 1120.181073692716382 682.179903984069824 1116.191998985686951 675.271761894226074 1112.202924278655701 675.271761894226074 1120.181073692716382"></polygon>
  </g>
  <g>
    <line x1="112.084216117858887" y1="401.990716934204102" x2="392.712740898132324" y2="401.990716934204102" style="fill: none; stroke: #000; stroke-dasharray: 6 3; stroke-miterlimit: 10;"></line>
    <polygon points="113.251406669616699 405.979791641235352 106.343226432800293 401.990716934204102 113.251406669616699 398.001672744750977 113.251406669616699 405.979791641235352"></polygon>
  </g>
  <g>
    <line x1="106.343226432800293" y1="364.221460342407227" x2="386.971743583679199" y2="364.221460342407227" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="385.804568290710449 368.210504531860352 392.712740898132324 364.221460342407227 385.804568290710449 360.232385635375977 385.804568290710449 368.210504531860352"></polygon>
  </g>
  <text transform="translate(219.230074882507324 466.478601455688477)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">gboolean</tspan></text>
  <g>
    <line x1="112.0842282473659" y1="473.688755671183571" x2="392.712737768850275" y2="473.688755671183571" style="fill: none; stroke: #000; stroke-dasharray: 6 3; stroke-miterlimit: 10;"></line>
    <polygon points="113.25140354033465 477.677830378214821 106.343230932912775 473.688755671183571 113.25140354033465 469.699680964152321 113.25140354033465 477.677830378214821"></polygon>
  </g>
  <line x1="221.125130779117171" y1="677.287699423077356" x2="682.179924541100263" y2="677.287699423077356" style="fill: none; stroke: #000; stroke-dasharray: 6 3; stroke-miterlimit: 10;"></line>
  <g>
    <line x1="106.343230932912775" y1="437.987126032511696" x2="383.761443823537775" y2="437.987126032511696" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="382.594268530569025 441.976200739542946 389.502471655569025 437.987126032511696 382.594268530569025 433.998051325481356 382.594268530569025 441.976200739542946"></polygon>
  </g>
  <text transform="translate(146.600436210632324 927.383630752563477)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">gst_gles_converter_wait_request</tspan></text>
  <text transform="translate(219.230074882507324 962.770837783813477)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">gboolean</tspan></text>
  <g>
    <line x1="112.084216117858887" y1="969.981042861938477" x2="392.712740898132324" y2="969.981042861938477" style="fill: none; stroke: #000; stroke-dasharray: 6 3; stroke-miterlimit: 10;"></line>
    <polygon points="113.251406669616699 973.970056533813477 106.343226432800293 969.981042861938477 113.251406669616699 965.991968154907227 113.251406669616699 973.970056533813477"></polygon>
  </g>
  <g>
    <line x1="402.275759696960449" y1="969.981042861938477" x2="682.904269218444824" y2="969.981042861938477" style="fill: none; stroke: #000; stroke-dasharray: 6 3; stroke-miterlimit: 10;"></line>
    <polygon points="403.442965507507324 973.970056533813477 396.534792900085449 969.981042861938477 403.442965507507324 965.991968154907227 403.442965507507324 973.970056533813477"></polygon>
  </g>
  <g>
    <line x1="406.403994560241699" y1="1150.822107315065296" x2="682.904269218444824" y2="1150.822107315065296" style="fill: none; stroke: #000; stroke-dasharray: 6 3; stroke-miterlimit: 10;"></line>
    <polygon points="407.571200370788574 1154.811243057256434 400.663027763366699 1150.822107315065296 407.571200370788574 1146.833093643186658 407.571200370788574 1154.811243057256434"></polygon>
  </g>
  <g>
    <line x1="106.343226432800293" y1="932.687219619750977" x2="383.761477470397949" y2="932.687219619750977" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="382.594271659851074 936.676294326782227 389.502444267272949 932.687219619750977 382.594271659851074 928.698144912719727 382.594271659851074 936.676294326782227"></polygon>
  </g>
  <text transform="translate(177.555468559265137 1028.085901260375977)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">gst_gles_converter_free</tspan></text>
  <g>
    <line x1="108.09992504119873" y1="1035.942828579436537" x2="385.716738700866699" y2="1035.942828579436537" style="fill: none; stroke: #000; stroke-miterlimit: 10;"></line>
    <polygon points="384.549563407897949 1039.931903286465968 391.457736015319824 1035.942828579436537 384.549563407897949 1031.953753872405287 384.549563407897949 1039.931903286465968"></polygon>
  </g>
  <text transform="translate(196.534775733947754 595.156061172485352) scale(.878890037536621 1)" style="font-family: Roboto-Bold, Roboto; font-size: 14px; font-weight: 700;"><tspan x="0" y="0">loop</tspan></text>
  <rect x="189.191744804382324" y="580.065303750297971" width="563.695481526814547" height="181.395086549093321" style="fill: none; stroke: #7c8aa3; stroke-miterlimit: 10; stroke-width: 1.5px;"></rect>
  <polyline points="235.113275611714926 580.065303750297971 234.268559313215519 592.991462105475875 222.763896731195928 602.680030202867783 189.191744804382324 602.680030202867783" style="fill: none; stroke: #7c8aa3; stroke-miterlimit: 10; stroke-width: 1.5px;"></polyline>
  <text transform="translate(242.498085975646973 597.02739143371582)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">[for each frame]</tspan></text>
  <text transform="translate(231.263630867004395 623.318082809448242) scale(.878890037536621 1)" style="font-family: Roboto-Bold, Roboto; font-size: 14px; font-weight: 700;"><tspan x="0" y="0">alt</tspan></text>
  <rect x="218.876654411695199" y="608.22732572253517" width="522.684654919532477" height="141.944628409364668" style="fill: none; stroke: #7c8aa3; stroke-miterlimit: 10; stroke-width: 1.5px;"></rect>
  <polyline points="264.7981852190278 608.22732572253517 263.953468920528394 621.153484077713074 252.448806338508803 630.842052175104982 218.876654411695199 630.842052175104982" style="fill: none; stroke: #7c8aa3; stroke-miterlimit: 10; stroke-width: 1.5px;"></polyline>
  <text transform="translate(305.200564384460449 702.645509719848633)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">[else]</tspan></text>
  <text transform="translate(226.219685554504395 1076.754205703735352) scale(.878890037536621 1)" style="font-family: Roboto-Bold, Roboto; font-size: 14px; font-weight: 700;"><tspan x="0" y="0">loop</tspan></text>
  <rect x="218.876654411695199" y="1061.663462560016342" width="522.684654919532477" height="116.356347861848917" style="fill: none; stroke: #7c8aa3; stroke-miterlimit: 10; stroke-width: 1.5px;"></rect>
  <polyline points="264.7981852190278 1061.663462560016342 263.953468920528394 1074.589620915196065 252.448806338508803 1084.278189012586154 218.876654411695199 1084.278189012586154" style="fill: none; stroke: #7c8aa3; stroke-miterlimit: 10; stroke-width: 1.5px;"></polyline>
  <line x1="685.179924312218645" y1="68.000040687575165" x2="685.179924312218645" y2="1293.808630297635318" style="fill: none; stroke: #000; stroke-dasharray: 6 3; stroke-miterlimit: 10;"></line>
  <rect x="392.139924541101209" y="106.139281443677646" width="5.999999542236765" height="218.4726614833653" style="fill: #d2d7e1;"></rect>
  <rect x="682.179924541100263" y="261.00469415077805" width="5.999999542236765" height="35" style="fill: #d2d7e1;"></rect>
  <rect x="682.179924541100263" y="715.171954131899838" width="5.999999542236765" height="35" style="fill: #d2d7e1;"></rect>
  <rect x="682.179924541100263" y="1115.82211924002695" width="5.999999542236765" height="35" style="fill: #d2d7e1;"></rect>
  <rect x="682.179924541100263" y="830.935069601504438" width="5.999999542236765" height="35" style="fill: #d2d7e1;"></rect>
  <rect x="682.179924541100263" y="934.981018297499759" width="5.999999542236765" height="35" style="fill: #d2d7e1;"></rect>
  <rect x="392.139924541101209" y="365.597905006898145" width="5.999999542236765" height="35" style="fill: #d2d7e1;"></rect>
  <rect x="392.139924541101209" y="437.987126198304395" width="5.999999542236765" height="35" style="fill: #d2d7e1;"></rect>
  <rect x="102.099927830114211" y="365.597905006898145" width="5.999999542236765" height="35" style="fill: #d2d7e1;"></rect>
  <rect x="102.099927830114211" y="437.987126198304395" width="5.999999542236765" height="35" style="fill: #d2d7e1;"></rect>
  <rect x="392.139926185607692" y="933.536263200583562" width="5.999999542236765" height="35" style="fill: #d2d7e1;"></rect>
  <rect x="102.099927830114211" y="932.687228381391833" width="5.999999542236765" height="35" style="fill: #d2d7e1;"></rect>
  <rect x="102.099924541101245" y="106.139281443677646" width="5.999999542236765" height="218.4726614833653" style="fill: #d2d7e1;"></rect>
  <rect x="102.099929109847835" y="568.636369891444701" width="5.999999542237674" height="319.533959496013267" style="fill: #d2d7e1;"></rect>
  <rect x="393.069926185606164" y="568.636369891444701" width="5.999999542236765" height="319.533959496013267" style="fill: #d2d7e1;"></rect>
  <rect x="102.099929109847835" y="1040.688109737855484" width="5.999999542237674" height="221.108662467710019" style="fill: #d2d7e1;"></rect>
  <rect x="392.139924541101209" y="1040.688109737855484" width="5.999999542236765" height="224.357027364019814" style="fill: #d2d7e1;"></rect>
  <rect x="386.02108083819985" y="1064.833140736496716" width="19.91074239819136" height="15.258699781788891" style="fill: #fafafa;"></rect>
  <text transform="translate(270.04633617401123 1076.754449844360352)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">[for each chased surface]</tspan></text>
  <rect x="386.02108083819985" y="611.397003899015544" width="19.91074239819136" height="15.258699781792529" style="fill: #fafafa;"></rect>
  <text transform="translate(269.68061351776123 623.318323135375977)" style="font-family: Roboto-Regular, Roboto; font-size: 14px;"><tspan x="0" y="0">[surface create for frame]</tspan></text>
  <g>
    <line x1="112.084216117858887" y1="1265.045129776006434" x2="392.712740898132324" y2="1265.045129776006434" style="fill: none; stroke: #000; stroke-dasharray: 6 3; stroke-miterlimit: 10;"></line>
    <polygon points="113.251406669616699 1269.034143447875977 106.343226432800293 1265.045129776006434 113.251406669616699 1261.056116104125977 113.251406669616699 1269.034143447875977"></polygon>
  </g>
</svg>

The following list provides information on each of the GstGlesVideoConverter
                APIs:

- **gst\_gles\_video\_converter\_new**
    Creates a GstGlesVideoConverter.

                    **Prototype**

        GstGlesVideoConverter * 
        gst_gles_video_converter_new (void)Copy to clipboard

    **Returns**

    A new
                        GstGlesVideoConverter, free with
                            gst\_gles\_video\_converter\_free().
- gst\_gles\_video\_converter\_free: Releases all resources held by the converter and
                    frees the memory associated with
                            it.
    **Prototype**

        void 
        gst_gles_video_converter_free (GstGlesVideoConverter * convert)Copy to clipboard

**Parameters**

| [in] | `convert` | A GstGlesVideoConverter |
    | :--- | :--- | :--- |

    **Returns**

    None
- **gst\_gles\_video\_converter\_submit\_request**
    Submits a number of video
                        compositions that are executed
                            together.

    **Prototype**

        gpointer 
                 gst_gles_video_converter_submit_request (GstGlesVideoConverter *convert, GstGlesComposition * compositions, guint n_compositions)Copy to clipboard

    **Parameters**

| [in] | `convert` | A GstGlesVideoConverter |
    | :--- | :--- | :--- |
    | [in] | `compositions` | An array of composition frames |
    | [in] | `n_compositions` | Number of compositions |

**Returns**
    A unique pointer request ID if the operation was
                        successful.
- **gst\_gles\_video\_converter\_wait\_request**
    Waits for the requests that have
                        been submitted to GPU compositions to
                        finish.

**Prototype**

        gboolean 
        gst_gles_video_converter_wait_request (GstGlesVideoConverter *convert, gpointer request_id)Copy to clipboard

    **Parameters**

| [in] | `convert` | A GstGlesVideoConverter |
    | :--- | :--- | :--- |
    | [in] | `request_id` | Specifies the request ID |

    **Returns**

    TRUE if the operation was successful.
- **gst\_gles\_video\_converter\_flush**
    Waits for the compositions that have
                        been submitted to GPU to finish and flush the
                        data.

    **Prototype**

        void 
        gst_gles_video_converter_flush (GstGlesVideoConverter *convert)Copy to clipboard

    **Parameters**

| [in] | `convert` | A GstGlesVideoConverter |
    | :--- | :--- | :--- |

    **Returns**

    None

**Parent Topic:** [GSt APIs](https://docs.qualcomm.com/doc/80-70022-50/topic/gst-apis.html)

Last Published: Feb 20, 2026

[Previous Topic
GSt APIs](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/gst-apis.md) [Next Topic
Machine learning APIs](https://docs.qualcomm.com/bundle/publicresource/80-70022-50/topics/machine-learning-apis.md)