New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

deffcode

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

deffcode - pypi Package Compare versions

Comparing version
0.2.4
to
0.2.5
+142
-141
deffcode.egg-info/PKG-INFO
Metadata-Version: 2.1
Name: deffcode
Version: 0.2.4
Version: 0.2.5
Summary: A cross-platform High-performance & Flexible Real-time Video Frames Decoder in Python.

@@ -35,3 +35,3 @@ Home-page: https://abhitronix.github.io/deffcode

<!--
===============================================
DeFFcode library source-code is deployed under the Apache 2.0 License:

@@ -45,3 +45,3 @@

http://www.apache.org/licenses/LICENSE-2.0
http://www.apache.org/licenses/LICENSE-2.0

@@ -57,5 +57,5 @@ Unless required by applicable law or agreed to in writing, software

<div align="center">
![DeFFcode](https://user-images.githubusercontent.com/34266896/211494454-a16fe5b1-e7d2-44dd-84ba-67b0578611cb.png)
![DeFFcode](https://abhitronix.github.io/deffcode/latest/assets/images/deffcode.png)

@@ -66,14 +66,13 @@ </div>

[![Build Status][github-cli]][github-flow] [![Codecov branch][codecov]][code] [![Azure DevOps builds (branch)][azure-badge]][azure-pipeline]
[![Build Status][github-cli]][github-flow] [![Codecov branch][codecov]][code] [![Azure DevOps builds (branch)][azure-badge]][azure-pipeline]
[![Glitter chat][gitter-bagde]][gitter] [![Build Status][appveyor]][app] [![PyPi version][pypi-badge]][pypi]
[![Glitter chat][gitter-bagde]][gitter] [![Build Status][appveyor]][app] [![PyPi version][pypi-badge]][pypi]
[![Code Style][black-badge]][black]
---
----
[Releases][release]&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Recipes][recipes]&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Documentation][docs]&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Installation][installation-notes]&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[License](https://github.com/abhiTronix/deffcode#copyright)
----
---

@@ -113,3 +112,3 @@ </div>

- Out-of-the-box support for all prominent Computer Vision libraries.
- Cross-platform, runs on Python 3.7+, and easy to install.
- Cross-platform, runs on Python 3.7+, and easy to install.

@@ -150,3 +149,3 @@ <!--

<div align="center">
<a href="https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video"><img src="https://abhitronix.github.io/deffcode/latest/assets/gifs/bigbuckbunny_reversed.gif" alt="Big Buck Bunny Reversed" title="Click to view source code" width="70%" /> </a>
<a href="https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video"><img src="https://user-images.githubusercontent.com/34266896/211499038-46cc246d-843b-4c89-8e9a-5536395da9e7.gif" title="Click to view source code" width="70%" /> </a>
<br>

@@ -163,3 +162,4 @@ <sub><i>Big Buck Bunny Reversed using Live Simple Filtergraph</i></sub>

- [Capturing and Previewing BGR frames from a video file][capturing-and-previewing-bgr-frames-from-a-video-file] _(OpenCV Support)_
- [Playing with any other FFmpeg pixel formats][capturing-and-previewing-bgr-frames-from-a-video-file]
- [Playing with any other FFmpeg pixel formats][playing-with-any-other-ffmpeg-pixel-formats]
- [Capturing and Previewing frames from a Looping Video][capturing-and-previewing-frames-from-a-looping-video]
- [Enumerating all Camera Devices with Indexes][enumerating-all-camera-devices-with-indexes]

@@ -182,3 +182,3 @@ - [Capturing and Previewing frames from a Camera using Indexes][capturing-and-previewing-frames-from-a-camera-using-indexes]

- [Transcoding Rotated video (with `rotate` filter)][transcoding-rotated-video-with-rotate-filter]
- [Transcoding Rotated video (with `transpose` filter)][transcoding-rotated-video-with-transpose-filter]
- [Transcoding Rotated video (with `transpose` filter)][transcoding-rotated-video-with-transpose-filter]
- [Transcoding Horizontally flipped and Scaled video][transcoding-horizontally-flipped-and-scaled-video]

@@ -199,3 +199,2 @@ - [Extracting Key-frames as PNG image][extracting-key-frames-as-png-image]

### B. [**Advanced Recipes 🥐**][advanced-recipes]: _Recipes to take your skills to the next level._

@@ -205,3 +204,3 @@

<p align="center">
<a href="https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms"><img src="https://abhitronix.github.io/deffcode/latest/assets/gifs/mandelbrot_vectorscope_waveforms.gif" alt="mandelbrot test pattern" title="Click to view source code" width="70%" /></a>
<a href="https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms"><img src="https://user-images.githubusercontent.com/34266896/211498819-13fe0487-e843-4315-b4f3-c881de6c8c4a.gif" alt="mandelbrot test pattern" title="Click to view source code" width="70%" /></a>
<br>

@@ -223,3 +222,4 @@ <sub><i>Live Mandelbrot pattern with a Vectorscope & two Waveforms</i></sub>

- [Capturing and Previewing frames from your Desktop][capturing-and-previewing-frames-from-your-desktop] _(Screen Recording)_
- [GPU-accelerated Hardware-based Video Decoding][gpu-accelerated-hardware-based-video-decoding]
- [CUVID-accelerated Hardware-based Video Decoding and Previewing][cuvid-accelerated-hardware-based-video-decoding-and-previewing]
- [CUDA-accelerated Hardware-based Video Decoding and Previewing][cuda-accelerated-hardware-based-video-decoding-and-previewing]

@@ -234,6 +234,8 @@ </details>

- [Transcoding video art with YUV Bitplane Visualization][transcoding-video-art-with-yuv-bitplane-visualization]
- [Transcoding video art with Jetcolor effect][transcoding-video-art-with-jetcolor-effect]
- [Transcoding video art with Jetcolor effect][transcoding-video-art-with-jetcolor-effect]
- [Transcoding video art with Ghosting effect][transcoding-video-art-with-ghosting-effect]
- [Transcoding video art with Pixelation effect][transcoding-video-art-with-pixelation-effect]
- [GPU-accelerated Hardware-based Video Transcoding with WriteGear API][gpu-accelerated-hardware-based-video-transcoding-with-writegear-api]
- [CUDA-accelerated Video Transcoding with OpenCV's VideoWriter API][cuda-accelerated-video-transcoding-with-opencvs-videowriter-api]
- [CUDA-NVENC-accelerated Video Transcoding with WriteGear API][cuda-nvenc-accelerated-video-transcoding-with-writegear-api]
- [CUDA-NVENC-accelerated End-to-end Lossless Video Transcoding with WriteGear API][cuda-nvenc-accelerated-end-to-end-lossless-video-transcoding-with-writegear-api]

@@ -258,3 +260,3 @@ </details>

### A. FFdecoder API
### A. FFdecoder API

@@ -274,3 +276,3 @@ The primary function of [**FFdecoder API**][ffdecoder-api] is to **decode 24-bit RGB video frames** from the given source:

for frame in decoder.generateFrame():
# lets print its shape

@@ -283,3 +285,3 @@ print(frame.shape) # (1080, 1920, 3)

### B. Sourcer API
### B. Sourcer API

@@ -302,27 +304,24 @@ The primary function of [**Sourcer API**][sourcer-api] is to **gather metadata information from all multimedia streams available** in the given source:

```json
{
"ffmpeg_binary_path": "C:\\Users\\foo\\AppData\\Local\\Temp\\ffmpeg-static-win64-gpl/bin/ffmpeg.exe",
"source": "https://abhitronix.github.io/html/Big_Buck_Bunny_1080_10s_1MB.mp4",
"source_extension": ".mp4",
"source_video_resolution": [
1920,
1080
],
"source_video_framerate": 60.0,
"source_video_pixfmt": "yuv420p",
"source_video_decoder": "h264",
"source_duration_sec": 10.0,
"approx_video_nframes": 600,
"source_video_bitrate": "832k",
"source_audio_bitrate": "",
"source_audio_samplerate": "",
"source_has_video": true,
"source_has_audio": false,
"source_has_image_sequence": false
}
```
```json
{
"ffmpeg_binary_path": "C:\\Users\\foo\\AppData\\Local\\Temp\\ffmpeg-static-win64-gpl/bin/ffmpeg.exe",
"source": "https://abhitronix.github.io/html/Big_Buck_Bunny_1080_10s_1MB.mp4",
"source_extension": ".mp4",
"source_video_resolution": [1920, 1080],
"source_video_framerate": 60.0,
"source_video_pixfmt": "yuv420p",
"source_video_decoder": "h264",
"source_duration_sec": 10.0,
"approx_video_nframes": 600,
"source_video_bitrate": "832k",
"source_audio_bitrate": "",
"source_audio_samplerate": "",
"source_has_video": true,
"source_has_audio": false,
"source_has_image_sequence": false
}
```
</details>
&nbsp;

@@ -332,6 +331,5 @@

# Contributions
> We're happy to meet new contributors💗
> We're happy to meet new contributors💗

@@ -357,3 +355,2 @@ We welcome your contributions to help us improve and extend this project. If you want to get involved with VidGear development, checkout the **[Contribution Guidelines ▶️][contribute]**

&nbsp;

@@ -363,4 +360,2 @@

# Citation

@@ -370,14 +365,14 @@

[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6984364.svg)](https://doi.org/10.5281/zenodo.6984364)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.7155399.svg)](https://doi.org/10.5281/zenodo.7155399)
```BibTeX
@software{deffcode,
author = {Abhishek Thakur},
title = {abhiTronix/deffcode: v0.2.3},
month = aug,
author = {Abhishek Singh Thakur},
title = {abhiTronix/deffcode: v0.2.4},
month = oct,
year = 2022,
publisher = {Zenodo},
version = {v0.2.3},
doi = {10.5281/zenodo.6984364},
url = {https://doi.org/10.5281/zenodo.6984364}
version = {v0.2.4},
doi = {10.5281/zenodo.7155399},
url = {https://doi.org/10.5281/zenodo.7155399}
}

@@ -396,63 +391,65 @@ ```

<!--
CI Badges
-->
[appveyor]:https://img.shields.io/appveyor/ci/abhitronix/deffcode.svg?style=for-the-badge&logo=appveyor
[codecov]:https://img.shields.io/codecov/c/gh/abhiTronix/deffcode?logo=codecov&style=for-the-badge&token=zrES4mwVKe
[github-cli]:https://img.shields.io/github/workflow/status/abhiTronix/deffcode/GitHub%20Action%20workflow%20for%20Linux?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMWE5IDkgMCAwMTkgOSA5IDkgMCAwMS05IDkgOSA5IDAgMDEtOS05IDkgOSAwIDAxOS05ek0yMyAxOWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyek0yMyAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MSAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1zZWNvbmRhcnksICM3OUI4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0yNS4wMzcgMjMuNjA3bC0zLjA3IDMuMDY1LTEuNDktMS40ODUiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDEgMTlhNiA2IDAgMTEwIDEyIDYgNiAwIDAxMC0xMnoiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggZD0iTTQzLjAzNiAyMy42MDdsLTMuMDY5IDMuMDY1LTEuNDktMS40ODVNNyA2LjgxMmExIDEgMCAwMTEuNTMzLS44NDZsNS4xMTMgMy4yMmExIDEgMCAwMS0uMDA2IDEuNjk3bC01LjExMyAzLjE3QTEgMSAwIDAxNyAxMy4yMDNWNi44MTN6TTkgMTl2MTVjMCAzLjg2NiAzLjE3NyA3IDcgN2gxIiBzdHJva2U9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0xNi45NDkgMjZhMSAxIDAgMTAwLTJ2MnpNOCAxOS4wMzVBNi45NjUgNi45NjUgMCAwMDE0Ljk2NSAyNnYtMkE0Ljk2NSA0Ljk2NSAwIDAxMTAgMTkuMDM1SDh6TTE0Ljk2NSAyNmgxLjk4NHYtMmgtMS45ODR2MnoiIGZpbGw9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIi8+PHBhdGggZD0iTTI5LjA1NSAyNWg1Ljk0NCIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIxIDQwYTEgMSAwIDExLS4wMDEgMi4wMDFBMSAxIDAgMDEyMSA0MHpNMjUgNDBhMSAxIDAgMTEtLjAwMSAyLjAwMUExIDEgMCAwMTI1IDQweiIgZmlsbD0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIvPjxwYXRoIGQ9Ik0zNC4wMDUgNDEuMDA3bC0xLjAxMy4wMzMiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=
[prs-badge]:https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABC0lEQVRYhdWVPQoCMRCFX6HY2ghaiZUXsLW0EDyBrbWtN/EUHsHTWFnYyCL4gxibVZZlZzKTnWz0QZpk5r0vIdkF/kBPAMOKeddE+CQPKoc5Yt5cTjBMdQSwDQToWgBJAn3jmhqgltapAV6E6b5U17MGGAUaUj07TficMfIBZDV6vxowBm1BP9WbSQE4o5h9IjPJmy73TEPDDxVmoZdQrQ5jRhly9Q8tgMUXkIIWn0oG4GYQfAXQzz1PGoCiQndM7b4RgJay/h7zBLT3hASgoKjamQJMreKf0gfuAGyYtXEIAKcL/Dss15iq6ohXghozLYiAMxPuACwtIT4yeQUxAaLrZwAoqGRKGk7qDSYTfYQ8LuYnAAAAAElFTkSuQmCC
[azure-badge]:https://img.shields.io/azure-devops/build/abhiuna12/942b3b13-d745-49e9-8d7d-b3918ff43ac2/3/master?logo=azure-pipelines&style=for-the-badge
[pypi-badge]:https://img.shields.io/pypi/v/deffcode.svg?style=for-the-badge&logo=pypi
[gitter-bagde]:https://img.shields.io/badge/Chat-Gitter-blueviolet.svg?style=for-the-badge&logo=gitter
[Coffee-badge]:https://abhitronix.github.io/img/deffcode/orange_img.png
[kofi-badge]:https://www.ko-fi.com/img/githubbutton_sm.svg
[black-badge]:https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge&logo=github
[appveyor]: https://img.shields.io/appveyor/ci/abhitronix/deffcode.svg?style=for-the-badge&logo=appveyor
[codecov]: https://img.shields.io/codecov/c/gh/abhiTronix/deffcode?logo=codecov&style=for-the-badge&token=zrES4mwVKe
[github-cli]: https://img.shields.io/github/actions/workflow/status/abhiTronix/deffcode/.github/workflows/CIlinux.yml?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMWE5IDkgMCAwMTkgOSA5IDkgMCAwMS05IDkgOSA5IDAgMDEtOS05IDkgOSAwIDAxOS05ek0yMyAxOWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyek0yMyAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MSAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1zZWNvbmRhcnksICM3OUI4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0yNS4wMzcgMjMuNjA3bC0zLjA3IDMuMDY1LTEuNDktMS40ODUiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDEgMTlhNiA2IDAgMTEwIDEyIDYgNiAwIDAxMC0xMnoiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggZD0iTTQzLjAzNiAyMy42MDdsLTMuMDY5IDMuMDY1LTEuNDktMS40ODVNNyA2LjgxMmExIDEgMCAwMTEuNTMzLS44NDZsNS4xMTMgMy4yMmExIDEgMCAwMS0uMDA2IDEuNjk3bC01LjExMyAzLjE3QTEgMSAwIDAxNyAxMy4yMDNWNi44MTN6TTkgMTl2MTVjMCAzLjg2NiAzLjE3NyA3IDcgN2gxIiBzdHJva2U9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0xNi45NDkgMjZhMSAxIDAgMTAwLTJ2MnpNOCAxOS4wMzVBNi45NjUgNi45NjUgMCAwMDE0Ljk2NSAyNnYtMkE0Ljk2NSA0Ljk2NSAwIDAxMTAgMTkuMDM1SDh6TTE0Ljk2NSAyNmgxLjk4NHYtMmgtMS45ODR2MnoiIGZpbGw9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIi8+PHBhdGggZD0iTTI5LjA1NSAyNWg1Ljk0NCIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIxIDQwYTEgMSAwIDExLS4wMDEgMi4wMDFBMSAxIDAgMDEyMSA0MHpNMjUgNDBhMSAxIDAgMTEtLjAwMSAyLjAwMUExIDEgMCAwMTI1IDQweiIgZmlsbD0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIvPjxwYXRoIGQ9Ik0zNC4wMDUgNDEuMDA3bC0xLjAxMy4wMzMiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=
[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABC0lEQVRYhdWVPQoCMRCFX6HY2ghaiZUXsLW0EDyBrbWtN/EUHsHTWFnYyCL4gxibVZZlZzKTnWz0QZpk5r0vIdkF/kBPAMOKeddE+CQPKoc5Yt5cTjBMdQSwDQToWgBJAn3jmhqgltapAV6E6b5U17MGGAUaUj07TficMfIBZDV6vxowBm1BP9WbSQE4o5h9IjPJmy73TEPDDxVmoZdQrQ5jRhly9Q8tgMUXkIIWn0oG4GYQfAXQzz1PGoCiQndM7b4RgJay/h7zBLT3hASgoKjamQJMreKf0gfuAGyYtXEIAKcL/Dss15iq6ohXghozLYiAMxPuACwtIT4yeQUxAaLrZwAoqGRKGk7qDSYTfYQ8LuYnAAAAAElFTkSuQmCC
[azure-badge]: https://img.shields.io/azure-devops/build/abhiuna12/942b3b13-d745-49e9-8d7d-b3918ff43ac2/3/master?logo=azure-pipelines&style=for-the-badge
[pypi-badge]: https://img.shields.io/pypi/v/deffcode.svg?style=for-the-badge&logo=pypi
[gitter-bagde]: https://img.shields.io/badge/Chat-Gitter-blueviolet.svg?style=for-the-badge&logo=gitter
[coffee-badge]: https://abhitronix.github.io/img/deffcode/orange_img.png
[kofi-badge]: https://www.ko-fi.com/img/githubbutton_sm.svg
[black-badge]: https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge&logo=github
<!--
Internal URLs
-->
[docs]:https://abhitronix.github.io/deffcode/latest/
[release]:https://github.com/abhiTronix/deffcode/releases/latest
[recipes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/
[license]:https://github.com/abhiTronix/deffcode/blob/master/LICENSE
[help]:https://abhitronix.github.io/deffcode/latest/help/get_help
[installation-notes]:https://abhitronix.github.io/deffcode/latest/installation/#installation-notes
[ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/reference/ffdecoder/#ffdecoder-api
[sourcer-api]:https://abhitronix.github.io/deffcode/latest/reference/sourcer/#sourcer-api
[contribute]:https://abhitronix.github.io/deffcode/latest/contribution/
[docs]: https://abhitronix.github.io/deffcode/latest/
[release]: https://github.com/abhiTronix/deffcode/releases/latest
[recipes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/
[license]: https://github.com/abhiTronix/deffcode/blob/master/LICENSE
[help]: https://abhitronix.github.io/deffcode/latest/help/get_help
[installation-notes]: https://abhitronix.github.io/deffcode/latest/installation/#installation-notes
[ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/reference/ffdecoder/#ffdecoder-api
[sourcer-api]: https://abhitronix.github.io/deffcode/latest/reference/sourcer/#sourcer-api
[contribute]: https://abhitronix.github.io/deffcode/latest/contribution/
<!--
Basic Recipes
-->
[basic-recipes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/
[decoding-video-files]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#decoding-video-files
[decoding-camera-devices-using-indexes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#decoding-camera-devices-using-indexes
[decoding-network-streams]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#decoding-network-streams
[decoding-image-sequences]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#decoding-image-sequences
[transcode-live-frames]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/
[transcoding-live-simple-filtergraphs]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-live-simple-filtergraphs
[saving-key-frames-as-image]:https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#saving-key-frames-as-image
[extracting-video-metadata]:https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata
[accessing-rgb-frames-from-a-video-file]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#accessing-rgb-frames-from-a-video-file
[capturing-and-previewing-bgr-frames-from-a-video-file]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-bgr-frames-from-a-video-file
[capturing-and-previewing-bgr-frames-from-a-video-file]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-bgr-frames-from-a-video-file
[enumerating-all-camera-devices-with-indexes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#enumerating-all-camera-devices-with-indexes
[capturing-and-previewing-frames-from-a-camera-using-indexes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#capturing-and-previewing-frames-from-a-camera-using-indexes
[capturing-and-previewing-frames-from-a-https-stream]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-https-stream
[capturing-and-previewing-frames-from-a-rtsprtp-stream]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-rtsprtp-stream
[capturing-and-previewing-frames-from-sequence-of-images]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-sequence-of-images
[capturing-and-previewing-frames-from-single-looping-image]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-single-looping-image
[transcoding-video-using-opencv-videowriter-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-video-using-opencv-videowriter-api
[transcoding-lossless-video-using-writegear-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-lossless-video-using-writegear-api
[transcoding-trimmed-and-reversed-video]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video
[transcoding-cropped-video]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-cropped-video
[transcoding-rotated-video-with-rotate-filter]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-rotate-filter
[transcoding-rotated-video-with-transpose-filter]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-transpose-filter
[transcoding-horizontally-flipped-and-scaled-video]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-horizontally-flipped-and-scaled-video
[extracting-key-frames-as-png-image]:https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#extracting-key-frames-as-png-image
[generating-thumbnail-with-a-fancy-filter]:https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#generating-thumbnail-with-a-fancy-filter
[extracting-video-metadata-using-sourcer-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-sourcer-api
[extracting-video-metadata-using-ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-ffdecoder-api
[basic-recipes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/
[decoding-video-files]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#decoding-video-files
[decoding-camera-devices-using-indexes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#decoding-camera-devices-using-indexes
[decoding-network-streams]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#decoding-network-streams
[decoding-image-sequences]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#decoding-image-sequences
[transcode-live-frames]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/
[transcoding-live-simple-filtergraphs]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-live-simple-filtergraphs
[saving-key-frames-as-image]: https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#saving-key-frames-as-image
[extracting-video-metadata]: https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata
[accessing-rgb-frames-from-a-video-file]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#accessing-rgb-frames-from-a-video-file
[capturing-and-previewing-bgr-frames-from-a-video-file]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-bgr-frames-from-a-video-file
[playing-with-any-other-ffmpeg-pixel-formats]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#playing-with-any-other-ffmpeg-pixel-formats
[capturing-and-previewing-frames-from-a-looping-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-frames-from-a-looping-video
[enumerating-all-camera-devices-with-indexes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#enumerating-all-camera-devices-with-indexes
[capturing-and-previewing-frames-from-a-camera-using-indexes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#capturing-and-previewing-frames-from-a-camera-using-indexes
[capturing-and-previewing-frames-from-a-https-stream]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-https-stream
[capturing-and-previewing-frames-from-a-rtsprtp-stream]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-rtsprtp-stream
[capturing-and-previewing-frames-from-sequence-of-images]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-sequence-of-images
[capturing-and-previewing-frames-from-single-looping-image]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-single-looping-image
[transcoding-video-using-opencv-videowriter-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-video-using-opencv-videowriter-api
[transcoding-lossless-video-using-writegear-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-lossless-video-using-writegear-api
[transcoding-trimmed-and-reversed-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video
[transcoding-cropped-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-cropped-video
[transcoding-rotated-video-with-rotate-filter]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-rotate-filter
[transcoding-rotated-video-with-transpose-filter]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-transpose-filter
[transcoding-horizontally-flipped-and-scaled-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-horizontally-flipped-and-scaled-video
[extracting-key-frames-as-png-image]: https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#extracting-key-frames-as-png-image
[generating-thumbnail-with-a-fancy-filter]: https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#generating-thumbnail-with-a-fancy-filter
[extracting-video-metadata-using-sourcer-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-sourcer-api
[extracting-video-metadata-using-ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-ffdecoder-api

@@ -462,37 +459,40 @@ <!--

-->
[advanced-recipes]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/
[decoding-live-virtual-sources]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#decoding-live-virtual-sources
[decoding-live-feed-devices]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#decoding-live-feed-devices
[hardware-accelerated-video-decoding]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#hardware-accelerated-video-decoding
[transcoding-live-complex-filtergraphs]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-live-complex-filtergraphs
[transcoding-video-art-with-filtergraphs]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-filtergraphs
[hardware-accelerated-video-transcoding]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#hardware-accelerated-video-transcoding
[updating-video-metadata]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#updating-video-metadata
[advanced-recipes]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/
[decoding-live-virtual-sources]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#decoding-live-virtual-sources
[decoding-live-feed-devices]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#decoding-live-feed-devices
[hardware-accelerated-video-decoding]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#hardware-accelerated-video-decoding
[transcoding-live-complex-filtergraphs]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-live-complex-filtergraphs
[transcoding-video-art-with-filtergraphs]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-filtergraphs
[hardware-accelerated-video-transcoding]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#hardware-accelerated-video-transcoding
[updating-video-metadata]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#updating-video-metadata
[generate-and-decode-frames-from-sierpinski-pattern]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-sierpinski-pattern
[generate-and-decode-frames-from-test-source-pattern]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-test-source-pattern
[generate-and-decode-frames-from-gradients-with-custom-text-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-gradients-with-custom-text-effect
[generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms
[generate-and-decode-frames-from-game-of-life-visualization]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-game-of-life-visualization
[cuvid-accelerated-hardware-based-video-decoding-and-previewing]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#cuvid-accelerated-hardware-based-video-decoding-and-previewing
[cuda-accelerated-hardware-based-video-decoding-and-previewing]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#cuda-accelerated-hardware-based-video-decoding-and-previewing
[transcoding-video-with-live-custom-watermark-image-overlay]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-with-live-custom-watermark-image-overlay
[transcoding-video-from-sequence-of-images-with-additional-filtering]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-from-sequence-of-images-with-additional-filtering
[transcoding-video-art-with-jetcolor-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-jetcolor-effect
[transcoding-video-art-with-yuv-bitplane-visualization]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-yuv-bitplane-visualization
[transcoding-video-art-with-ghosting-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-ghosting-effect
[transcoding-video-art-with-pixelation-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-pixelation-effect
[capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer
[capturing-and-previewing-frames-from-your-desktop]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-your-desktop
[cuda-accelerated-video-transcoding-with-opencvs-videowriter-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#cuda-accelerated-video-transcoding-with-opencvs-videowriter-api
[cuda-nvenc-accelerated-video-transcoding-with-writegear-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#cuda-nvenc-accelerated-video-transcoding-with-writegear-api
[cuda-nvenc-accelerated-end-to-end-lossless-video-transcoding-with-writegear-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#cuda-nvenc-accelerated-end-to-end-lossless-video-transcoding-with-writegear-api
[added-new-attributes-to-metadata-in-ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#added-new-attributes-to-metadata-in-ffdecoder-api
[overriding-source-video-metadata-in-ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#overriding-source-video-metadata-in-ffdecoder-api
[generate-and-decode-frames-from-sierpinski-pattern]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-sierpinski-pattern
[generate-and-decode-frames-from-test-source-pattern]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-test-source-pattern
[generate-and-decode-frames-from-gradients-with-custom-text-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-gradients-with-custom-text-effect
[generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms
[generate-and-decode-frames-from-game-of-life-visualization]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-game-of-life-visualization
[gpu-accelerated-hardware-based-video-decoding]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#gpu-accelerated-hardware-based-video-decoding
[transcoding-video-with-live-custom-watermark-image-overlay]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-with-live-custom-watermark-image-overlay
[transcoding-video-from-sequence-of-images-with-additional-filtering]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-from-sequence-of-images-with-additional-filtering
[transcoding-video-art-with-jetcolor-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-jetcolor-effect
[transcoding-video-art-with-yuv-bitplane-visualization]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-yuv-bitplane-visualization
[transcoding-video-art-with-ghosting-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-ghosting-effect
[transcoding-video-art-with-pixelation-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-pixelation-effect
[capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer
[capturing-and-previewing-frames-from-your-desktop]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-your-desktop
[gpu-accelerated-hardware-based-video-transcoding-with-writegear-api]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#gpu-accelerated-hardware-based-video-transcoding-with-writegear-api
[added-new-attributes-to-metadata-in-ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#added-new-attributes-to-metadata-in-ffdecoder-api
[overriding-source-video-metadata-in-ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#overriding-source-video-metadata-in-ffdecoder-api
<!--
CI Apps URLs
-->
[github-flow]:https://github.com/abhiTronix/deffcode/actions/workflows/CIlinux.yml
[azure-pipeline]:https://dev.azure.com/abhiuna12/public/_build?definitionId=3
[app]:https://ci.appveyor.com/project/abhiTronix/deffcode
[code]:https://codecov.io/gh/abhiTronix/deffcode
[github-flow]: https://github.com/abhiTronix/deffcode/actions/workflows/CIlinux.yml
[azure-pipeline]: https://dev.azure.com/abhiuna12/public/_build?definitionId=3
[app]: https://ci.appveyor.com/project/abhiTronix/deffcode
[code]: https://codecov.io/gh/abhiTronix/deffcode
[black]: https://github.com/psf/black

@@ -503,7 +503,8 @@

-->
[opencv-py]:https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html
[ffmpeg]:https://www.ffmpeg.org/
[pypi]:https://pypi.org/project/deffcode/
[gitter]:https://gitter.im/deffcode-python/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge
[coffee]:https://www.buymeacoffee.com/2twOXFvlA
[opencv-py]: https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html
[ffmpeg]: https://www.ffmpeg.org/
[pypi]: https://pypi.org/project/deffcode/
[gitter]: https://gitter.im/deffcode-python/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge
[coffee]: https://www.buymeacoffee.com/2twOXFvlA
[kofi]: https://ko-fi.com/W7W8WTYO

@@ -202,2 +202,11 @@ """

# handle YUV pixel formats(such as `yuv420p`, `yuv444p`, `nv12`, `nv21` etc.)
# patch for compatibility with OpenCV APIs.
self.__cv_patch = self.__extra_params.pop("-enforce_cv_patch", False)
if not (isinstance(self.__cv_patch, bool)):
self.__cv_patch = False
self.__verbose_logs and logger.critical(
"Enforcing OpenCV compatibility patch for YUV/NV frames."
)
# handle pass-through audio mode works in conjunction with WriteGear [TODO]

@@ -432,3 +441,5 @@ self.__passthrough_mode = self.__extra_params.pop("-passthrough_audio", False)

][0]
raw_bit_per_component = rawframesbpp // self.__raw_frame_depth
raw_bit_per_component = (
rawframesbpp // self.__raw_frame_depth if self.__raw_frame_depth else 0
)
if 4 <= raw_bit_per_component <= 8:

@@ -603,3 +614,3 @@ self.__raw_frame_dtype = np.dtype("u1")

self.__verbose_logs and logger.info(
"Live/Network Stream detected! Number of frames in given source are not known."
"Number of frames in given source are unknown. Live/Network/Looping stream detected!"
)

@@ -632,7 +643,11 @@

# formulated raw frame size
# formulated raw frame size and apply YUV pixel formats patch(if applicable)
raw_frame_size = (
self.__raw_frame_depth
* self.__raw_frame_resolution[0]
* self.__raw_frame_resolution[1]
(self.__raw_frame_resolution[0] * (self.__raw_frame_resolution[1] * 3 // 2))
if self.__raw_frame_pixfmt.startswith(("yuv", "nv")) and self.__cv_patch
else (
self.__raw_frame_depth
* self.__raw_frame_resolution[0]
* self.__raw_frame_resolution[1]
)
)

@@ -675,2 +690,8 @@ # next dataframe as numpy ndarray

)[:, :, 0]
elif self.__raw_frame_pixfmt.startswith(("yuv", "nv")) and self.__cv_patch:
# reconstruct exclusive YUV formats frames for OpenCV APIs
frame = frame.reshape(
self.__raw_frame_resolution[1] * 3 // 2,
self.__raw_frame_resolution[0],
)
else:

@@ -677,0 +698,0 @@ # reconstruct default frames

@@ -30,4 +30,3 @@ """

from pathlib import Path
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
from requests.adapters import HTTPAdapter, Retry

@@ -52,3 +51,3 @@ # import utils packages

def __init__(self, *args, **kwargs):
def __init__(self, *args, **kwargs):
self.timeout = DEFAULT_TIMEOUT

@@ -220,3 +219,7 @@ if "timeout" in kwargs:

response.raise_for_status()
total_length = response.headers.get("content-length")
total_length = (
response.headers.get("content-length")
if "content-length" in response.headers
else len(response.content)
)
assert not (

@@ -223,0 +226,0 @@ total_length is None

@@ -365,2 +365,8 @@ """

if self.__approx_video_nframes
and not any(
"loop" in x for x in self.__ffmpeg_prefixes
) # check if any loops in prefix
and not any(
"loop" in x for x in dict2Args(self.__sourcer_params)
) # check if any loops in filters
else None

@@ -367,0 +373,0 @@ ),

@@ -1,1 +0,1 @@

__version__ = "0.2.4"
__version__ = "0.2.5"
+142
-141
Metadata-Version: 2.1
Name: deffcode
Version: 0.2.4
Version: 0.2.5
Summary: A cross-platform High-performance & Flexible Real-time Video Frames Decoder in Python.

@@ -35,3 +35,3 @@ Home-page: https://abhitronix.github.io/deffcode

<!--
===============================================
DeFFcode library source-code is deployed under the Apache 2.0 License:

@@ -45,3 +45,3 @@

http://www.apache.org/licenses/LICENSE-2.0
http://www.apache.org/licenses/LICENSE-2.0

@@ -57,5 +57,5 @@ Unless required by applicable law or agreed to in writing, software

<div align="center">
![DeFFcode](https://user-images.githubusercontent.com/34266896/211494454-a16fe5b1-e7d2-44dd-84ba-67b0578611cb.png)
![DeFFcode](https://abhitronix.github.io/deffcode/latest/assets/images/deffcode.png)

@@ -66,14 +66,13 @@ </div>

[![Build Status][github-cli]][github-flow] [![Codecov branch][codecov]][code] [![Azure DevOps builds (branch)][azure-badge]][azure-pipeline]
[![Build Status][github-cli]][github-flow] [![Codecov branch][codecov]][code] [![Azure DevOps builds (branch)][azure-badge]][azure-pipeline]
[![Glitter chat][gitter-bagde]][gitter] [![Build Status][appveyor]][app] [![PyPi version][pypi-badge]][pypi]
[![Glitter chat][gitter-bagde]][gitter] [![Build Status][appveyor]][app] [![PyPi version][pypi-badge]][pypi]
[![Code Style][black-badge]][black]
---
----
[Releases][release]&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Recipes][recipes]&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Documentation][docs]&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Installation][installation-notes]&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[License](https://github.com/abhiTronix/deffcode#copyright)
----
---

@@ -113,3 +112,3 @@ </div>

- Out-of-the-box support for all prominent Computer Vision libraries.
- Cross-platform, runs on Python 3.7+, and easy to install.
- Cross-platform, runs on Python 3.7+, and easy to install.

@@ -150,3 +149,3 @@ <!--

<div align="center">
<a href="https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video"><img src="https://abhitronix.github.io/deffcode/latest/assets/gifs/bigbuckbunny_reversed.gif" alt="Big Buck Bunny Reversed" title="Click to view source code" width="70%" /> </a>
<a href="https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video"><img src="https://user-images.githubusercontent.com/34266896/211499038-46cc246d-843b-4c89-8e9a-5536395da9e7.gif" title="Click to view source code" width="70%" /> </a>
<br>

@@ -163,3 +162,4 @@ <sub><i>Big Buck Bunny Reversed using Live Simple Filtergraph</i></sub>

- [Capturing and Previewing BGR frames from a video file][capturing-and-previewing-bgr-frames-from-a-video-file] _(OpenCV Support)_
- [Playing with any other FFmpeg pixel formats][capturing-and-previewing-bgr-frames-from-a-video-file]
- [Playing with any other FFmpeg pixel formats][playing-with-any-other-ffmpeg-pixel-formats]
- [Capturing and Previewing frames from a Looping Video][capturing-and-previewing-frames-from-a-looping-video]
- [Enumerating all Camera Devices with Indexes][enumerating-all-camera-devices-with-indexes]

@@ -182,3 +182,3 @@ - [Capturing and Previewing frames from a Camera using Indexes][capturing-and-previewing-frames-from-a-camera-using-indexes]

- [Transcoding Rotated video (with `rotate` filter)][transcoding-rotated-video-with-rotate-filter]
- [Transcoding Rotated video (with `transpose` filter)][transcoding-rotated-video-with-transpose-filter]
- [Transcoding Rotated video (with `transpose` filter)][transcoding-rotated-video-with-transpose-filter]
- [Transcoding Horizontally flipped and Scaled video][transcoding-horizontally-flipped-and-scaled-video]

@@ -199,3 +199,2 @@ - [Extracting Key-frames as PNG image][extracting-key-frames-as-png-image]

### B. [**Advanced Recipes 🥐**][advanced-recipes]: _Recipes to take your skills to the next level._

@@ -205,3 +204,3 @@

<p align="center">
<a href="https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms"><img src="https://abhitronix.github.io/deffcode/latest/assets/gifs/mandelbrot_vectorscope_waveforms.gif" alt="mandelbrot test pattern" title="Click to view source code" width="70%" /></a>
<a href="https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms"><img src="https://user-images.githubusercontent.com/34266896/211498819-13fe0487-e843-4315-b4f3-c881de6c8c4a.gif" alt="mandelbrot test pattern" title="Click to view source code" width="70%" /></a>
<br>

@@ -223,3 +222,4 @@ <sub><i>Live Mandelbrot pattern with a Vectorscope & two Waveforms</i></sub>

- [Capturing and Previewing frames from your Desktop][capturing-and-previewing-frames-from-your-desktop] _(Screen Recording)_
- [GPU-accelerated Hardware-based Video Decoding][gpu-accelerated-hardware-based-video-decoding]
- [CUVID-accelerated Hardware-based Video Decoding and Previewing][cuvid-accelerated-hardware-based-video-decoding-and-previewing]
- [CUDA-accelerated Hardware-based Video Decoding and Previewing][cuda-accelerated-hardware-based-video-decoding-and-previewing]

@@ -234,6 +234,8 @@ </details>

- [Transcoding video art with YUV Bitplane Visualization][transcoding-video-art-with-yuv-bitplane-visualization]
- [Transcoding video art with Jetcolor effect][transcoding-video-art-with-jetcolor-effect]
- [Transcoding video art with Jetcolor effect][transcoding-video-art-with-jetcolor-effect]
- [Transcoding video art with Ghosting effect][transcoding-video-art-with-ghosting-effect]
- [Transcoding video art with Pixelation effect][transcoding-video-art-with-pixelation-effect]
- [GPU-accelerated Hardware-based Video Transcoding with WriteGear API][gpu-accelerated-hardware-based-video-transcoding-with-writegear-api]
- [CUDA-accelerated Video Transcoding with OpenCV's VideoWriter API][cuda-accelerated-video-transcoding-with-opencvs-videowriter-api]
- [CUDA-NVENC-accelerated Video Transcoding with WriteGear API][cuda-nvenc-accelerated-video-transcoding-with-writegear-api]
- [CUDA-NVENC-accelerated End-to-end Lossless Video Transcoding with WriteGear API][cuda-nvenc-accelerated-end-to-end-lossless-video-transcoding-with-writegear-api]

@@ -258,3 +260,3 @@ </details>

### A. FFdecoder API
### A. FFdecoder API

@@ -274,3 +276,3 @@ The primary function of [**FFdecoder API**][ffdecoder-api] is to **decode 24-bit RGB video frames** from the given source:

for frame in decoder.generateFrame():
# lets print its shape

@@ -283,3 +285,3 @@ print(frame.shape) # (1080, 1920, 3)

### B. Sourcer API
### B. Sourcer API

@@ -302,27 +304,24 @@ The primary function of [**Sourcer API**][sourcer-api] is to **gather metadata information from all multimedia streams available** in the given source:

```json
{
"ffmpeg_binary_path": "C:\\Users\\foo\\AppData\\Local\\Temp\\ffmpeg-static-win64-gpl/bin/ffmpeg.exe",
"source": "https://abhitronix.github.io/html/Big_Buck_Bunny_1080_10s_1MB.mp4",
"source_extension": ".mp4",
"source_video_resolution": [
1920,
1080
],
"source_video_framerate": 60.0,
"source_video_pixfmt": "yuv420p",
"source_video_decoder": "h264",
"source_duration_sec": 10.0,
"approx_video_nframes": 600,
"source_video_bitrate": "832k",
"source_audio_bitrate": "",
"source_audio_samplerate": "",
"source_has_video": true,
"source_has_audio": false,
"source_has_image_sequence": false
}
```
```json
{
"ffmpeg_binary_path": "C:\\Users\\foo\\AppData\\Local\\Temp\\ffmpeg-static-win64-gpl/bin/ffmpeg.exe",
"source": "https://abhitronix.github.io/html/Big_Buck_Bunny_1080_10s_1MB.mp4",
"source_extension": ".mp4",
"source_video_resolution": [1920, 1080],
"source_video_framerate": 60.0,
"source_video_pixfmt": "yuv420p",
"source_video_decoder": "h264",
"source_duration_sec": 10.0,
"approx_video_nframes": 600,
"source_video_bitrate": "832k",
"source_audio_bitrate": "",
"source_audio_samplerate": "",
"source_has_video": true,
"source_has_audio": false,
"source_has_image_sequence": false
}
```
</details>
&nbsp;

@@ -332,6 +331,5 @@

# Contributions
> We're happy to meet new contributors💗
> We're happy to meet new contributors💗

@@ -357,3 +355,2 @@ We welcome your contributions to help us improve and extend this project. If you want to get involved with VidGear development, checkout the **[Contribution Guidelines ▶️][contribute]**

&nbsp;

@@ -363,4 +360,2 @@

# Citation

@@ -370,14 +365,14 @@

[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6984364.svg)](https://doi.org/10.5281/zenodo.6984364)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.7155399.svg)](https://doi.org/10.5281/zenodo.7155399)
```BibTeX
@software{deffcode,
author = {Abhishek Thakur},
title = {abhiTronix/deffcode: v0.2.3},
month = aug,
author = {Abhishek Singh Thakur},
title = {abhiTronix/deffcode: v0.2.4},
month = oct,
year = 2022,
publisher = {Zenodo},
version = {v0.2.3},
doi = {10.5281/zenodo.6984364},
url = {https://doi.org/10.5281/zenodo.6984364}
version = {v0.2.4},
doi = {10.5281/zenodo.7155399},
url = {https://doi.org/10.5281/zenodo.7155399}
}

@@ -396,63 +391,65 @@ ```

<!--
CI Badges
-->
[appveyor]:https://img.shields.io/appveyor/ci/abhitronix/deffcode.svg?style=for-the-badge&logo=appveyor
[codecov]:https://img.shields.io/codecov/c/gh/abhiTronix/deffcode?logo=codecov&style=for-the-badge&token=zrES4mwVKe
[github-cli]:https://img.shields.io/github/workflow/status/abhiTronix/deffcode/GitHub%20Action%20workflow%20for%20Linux?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMWE5IDkgMCAwMTkgOSA5IDkgMCAwMS05IDkgOSA5IDAgMDEtOS05IDkgOSAwIDAxOS05ek0yMyAxOWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyek0yMyAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MSAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1zZWNvbmRhcnksICM3OUI4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0yNS4wMzcgMjMuNjA3bC0zLjA3IDMuMDY1LTEuNDktMS40ODUiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDEgMTlhNiA2IDAgMTEwIDEyIDYgNiAwIDAxMC0xMnoiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggZD0iTTQzLjAzNiAyMy42MDdsLTMuMDY5IDMuMDY1LTEuNDktMS40ODVNNyA2LjgxMmExIDEgMCAwMTEuNTMzLS44NDZsNS4xMTMgMy4yMmExIDEgMCAwMS0uMDA2IDEuNjk3bC01LjExMyAzLjE3QTEgMSAwIDAxNyAxMy4yMDNWNi44MTN6TTkgMTl2MTVjMCAzLjg2NiAzLjE3NyA3IDcgN2gxIiBzdHJva2U9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0xNi45NDkgMjZhMSAxIDAgMTAwLTJ2MnpNOCAxOS4wMzVBNi45NjUgNi45NjUgMCAwMDE0Ljk2NSAyNnYtMkE0Ljk2NSA0Ljk2NSAwIDAxMTAgMTkuMDM1SDh6TTE0Ljk2NSAyNmgxLjk4NHYtMmgtMS45ODR2MnoiIGZpbGw9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIi8+PHBhdGggZD0iTTI5LjA1NSAyNWg1Ljk0NCIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIxIDQwYTEgMSAwIDExLS4wMDEgMi4wMDFBMSAxIDAgMDEyMSA0MHpNMjUgNDBhMSAxIDAgMTEtLjAwMSAyLjAwMUExIDEgMCAwMTI1IDQweiIgZmlsbD0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIvPjxwYXRoIGQ9Ik0zNC4wMDUgNDEuMDA3bC0xLjAxMy4wMzMiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=
[prs-badge]:https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABC0lEQVRYhdWVPQoCMRCFX6HY2ghaiZUXsLW0EDyBrbWtN/EUHsHTWFnYyCL4gxibVZZlZzKTnWz0QZpk5r0vIdkF/kBPAMOKeddE+CQPKoc5Yt5cTjBMdQSwDQToWgBJAn3jmhqgltapAV6E6b5U17MGGAUaUj07TficMfIBZDV6vxowBm1BP9WbSQE4o5h9IjPJmy73TEPDDxVmoZdQrQ5jRhly9Q8tgMUXkIIWn0oG4GYQfAXQzz1PGoCiQndM7b4RgJay/h7zBLT3hASgoKjamQJMreKf0gfuAGyYtXEIAKcL/Dss15iq6ohXghozLYiAMxPuACwtIT4yeQUxAaLrZwAoqGRKGk7qDSYTfYQ8LuYnAAAAAElFTkSuQmCC
[azure-badge]:https://img.shields.io/azure-devops/build/abhiuna12/942b3b13-d745-49e9-8d7d-b3918ff43ac2/3/master?logo=azure-pipelines&style=for-the-badge
[pypi-badge]:https://img.shields.io/pypi/v/deffcode.svg?style=for-the-badge&logo=pypi
[gitter-bagde]:https://img.shields.io/badge/Chat-Gitter-blueviolet.svg?style=for-the-badge&logo=gitter
[Coffee-badge]:https://abhitronix.github.io/img/deffcode/orange_img.png
[kofi-badge]:https://www.ko-fi.com/img/githubbutton_sm.svg
[black-badge]:https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge&logo=github
[appveyor]: https://img.shields.io/appveyor/ci/abhitronix/deffcode.svg?style=for-the-badge&logo=appveyor
[codecov]: https://img.shields.io/codecov/c/gh/abhiTronix/deffcode?logo=codecov&style=for-the-badge&token=zrES4mwVKe
[github-cli]: https://img.shields.io/github/actions/workflow/status/abhiTronix/deffcode/.github/workflows/CIlinux.yml?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMWE5IDkgMCAwMTkgOSA5IDkgMCAwMS05IDkgOSA5IDAgMDEtOS05IDkgOSAwIDAxOS05ek0yMyAxOWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyek0yMyAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MSAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1zZWNvbmRhcnksICM3OUI4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0yNS4wMzcgMjMuNjA3bC0zLjA3IDMuMDY1LTEuNDktMS40ODUiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDEgMTlhNiA2IDAgMTEwIDEyIDYgNiAwIDAxMC0xMnoiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggZD0iTTQzLjAzNiAyMy42MDdsLTMuMDY5IDMuMDY1LTEuNDktMS40ODVNNyA2LjgxMmExIDEgMCAwMTEuNTMzLS44NDZsNS4xMTMgMy4yMmExIDEgMCAwMS0uMDA2IDEuNjk3bC01LjExMyAzLjE3QTEgMSAwIDAxNyAxMy4yMDNWNi44MTN6TTkgMTl2MTVjMCAzLjg2NiAzLjE3NyA3IDcgN2gxIiBzdHJva2U9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0xNi45NDkgMjZhMSAxIDAgMTAwLTJ2MnpNOCAxOS4wMzVBNi45NjUgNi45NjUgMCAwMDE0Ljk2NSAyNnYtMkE0Ljk2NSA0Ljk2NSAwIDAxMTAgMTkuMDM1SDh6TTE0Ljk2NSAyNmgxLjk4NHYtMmgtMS45ODR2MnoiIGZpbGw9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIi8+PHBhdGggZD0iTTI5LjA1NSAyNWg1Ljk0NCIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIxIDQwYTEgMSAwIDExLS4wMDEgMi4wMDFBMSAxIDAgMDEyMSA0MHpNMjUgNDBhMSAxIDAgMTEtLjAwMSAyLjAwMUExIDEgMCAwMTI1IDQweiIgZmlsbD0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIvPjxwYXRoIGQ9Ik0zNC4wMDUgNDEuMDA3bC0xLjAxMy4wMzMiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=
[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABC0lEQVRYhdWVPQoCMRCFX6HY2ghaiZUXsLW0EDyBrbWtN/EUHsHTWFnYyCL4gxibVZZlZzKTnWz0QZpk5r0vIdkF/kBPAMOKeddE+CQPKoc5Yt5cTjBMdQSwDQToWgBJAn3jmhqgltapAV6E6b5U17MGGAUaUj07TficMfIBZDV6vxowBm1BP9WbSQE4o5h9IjPJmy73TEPDDxVmoZdQrQ5jRhly9Q8tgMUXkIIWn0oG4GYQfAXQzz1PGoCiQndM7b4RgJay/h7zBLT3hASgoKjamQJMreKf0gfuAGyYtXEIAKcL/Dss15iq6ohXghozLYiAMxPuACwtIT4yeQUxAaLrZwAoqGRKGk7qDSYTfYQ8LuYnAAAAAElFTkSuQmCC
[azure-badge]: https://img.shields.io/azure-devops/build/abhiuna12/942b3b13-d745-49e9-8d7d-b3918ff43ac2/3/master?logo=azure-pipelines&style=for-the-badge
[pypi-badge]: https://img.shields.io/pypi/v/deffcode.svg?style=for-the-badge&logo=pypi
[gitter-bagde]: https://img.shields.io/badge/Chat-Gitter-blueviolet.svg?style=for-the-badge&logo=gitter
[coffee-badge]: https://abhitronix.github.io/img/deffcode/orange_img.png
[kofi-badge]: https://www.ko-fi.com/img/githubbutton_sm.svg
[black-badge]: https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge&logo=github
<!--
Internal URLs
-->
[docs]:https://abhitronix.github.io/deffcode/latest/
[release]:https://github.com/abhiTronix/deffcode/releases/latest
[recipes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/
[license]:https://github.com/abhiTronix/deffcode/blob/master/LICENSE
[help]:https://abhitronix.github.io/deffcode/latest/help/get_help
[installation-notes]:https://abhitronix.github.io/deffcode/latest/installation/#installation-notes
[ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/reference/ffdecoder/#ffdecoder-api
[sourcer-api]:https://abhitronix.github.io/deffcode/latest/reference/sourcer/#sourcer-api
[contribute]:https://abhitronix.github.io/deffcode/latest/contribution/
[docs]: https://abhitronix.github.io/deffcode/latest/
[release]: https://github.com/abhiTronix/deffcode/releases/latest
[recipes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/
[license]: https://github.com/abhiTronix/deffcode/blob/master/LICENSE
[help]: https://abhitronix.github.io/deffcode/latest/help/get_help
[installation-notes]: https://abhitronix.github.io/deffcode/latest/installation/#installation-notes
[ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/reference/ffdecoder/#ffdecoder-api
[sourcer-api]: https://abhitronix.github.io/deffcode/latest/reference/sourcer/#sourcer-api
[contribute]: https://abhitronix.github.io/deffcode/latest/contribution/
<!--
Basic Recipes
-->
[basic-recipes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/
[decoding-video-files]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#decoding-video-files
[decoding-camera-devices-using-indexes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#decoding-camera-devices-using-indexes
[decoding-network-streams]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#decoding-network-streams
[decoding-image-sequences]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#decoding-image-sequences
[transcode-live-frames]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/
[transcoding-live-simple-filtergraphs]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-live-simple-filtergraphs
[saving-key-frames-as-image]:https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#saving-key-frames-as-image
[extracting-video-metadata]:https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata
[accessing-rgb-frames-from-a-video-file]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#accessing-rgb-frames-from-a-video-file
[capturing-and-previewing-bgr-frames-from-a-video-file]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-bgr-frames-from-a-video-file
[capturing-and-previewing-bgr-frames-from-a-video-file]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-bgr-frames-from-a-video-file
[enumerating-all-camera-devices-with-indexes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#enumerating-all-camera-devices-with-indexes
[capturing-and-previewing-frames-from-a-camera-using-indexes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#capturing-and-previewing-frames-from-a-camera-using-indexes
[capturing-and-previewing-frames-from-a-https-stream]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-https-stream
[capturing-and-previewing-frames-from-a-rtsprtp-stream]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-rtsprtp-stream
[capturing-and-previewing-frames-from-sequence-of-images]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-sequence-of-images
[capturing-and-previewing-frames-from-single-looping-image]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-single-looping-image
[transcoding-video-using-opencv-videowriter-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-video-using-opencv-videowriter-api
[transcoding-lossless-video-using-writegear-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-lossless-video-using-writegear-api
[transcoding-trimmed-and-reversed-video]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video
[transcoding-cropped-video]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-cropped-video
[transcoding-rotated-video-with-rotate-filter]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-rotate-filter
[transcoding-rotated-video-with-transpose-filter]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-transpose-filter
[transcoding-horizontally-flipped-and-scaled-video]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-horizontally-flipped-and-scaled-video
[extracting-key-frames-as-png-image]:https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#extracting-key-frames-as-png-image
[generating-thumbnail-with-a-fancy-filter]:https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#generating-thumbnail-with-a-fancy-filter
[extracting-video-metadata-using-sourcer-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-sourcer-api
[extracting-video-metadata-using-ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-ffdecoder-api
[basic-recipes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/
[decoding-video-files]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#decoding-video-files
[decoding-camera-devices-using-indexes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#decoding-camera-devices-using-indexes
[decoding-network-streams]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#decoding-network-streams
[decoding-image-sequences]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#decoding-image-sequences
[transcode-live-frames]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/
[transcoding-live-simple-filtergraphs]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-live-simple-filtergraphs
[saving-key-frames-as-image]: https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#saving-key-frames-as-image
[extracting-video-metadata]: https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata
[accessing-rgb-frames-from-a-video-file]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#accessing-rgb-frames-from-a-video-file
[capturing-and-previewing-bgr-frames-from-a-video-file]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-bgr-frames-from-a-video-file
[playing-with-any-other-ffmpeg-pixel-formats]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#playing-with-any-other-ffmpeg-pixel-formats
[capturing-and-previewing-frames-from-a-looping-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-frames-from-a-looping-video
[enumerating-all-camera-devices-with-indexes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#enumerating-all-camera-devices-with-indexes
[capturing-and-previewing-frames-from-a-camera-using-indexes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#capturing-and-previewing-frames-from-a-camera-using-indexes
[capturing-and-previewing-frames-from-a-https-stream]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-https-stream
[capturing-and-previewing-frames-from-a-rtsprtp-stream]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-rtsprtp-stream
[capturing-and-previewing-frames-from-sequence-of-images]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-sequence-of-images
[capturing-and-previewing-frames-from-single-looping-image]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-single-looping-image
[transcoding-video-using-opencv-videowriter-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-video-using-opencv-videowriter-api
[transcoding-lossless-video-using-writegear-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-lossless-video-using-writegear-api
[transcoding-trimmed-and-reversed-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video
[transcoding-cropped-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-cropped-video
[transcoding-rotated-video-with-rotate-filter]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-rotate-filter
[transcoding-rotated-video-with-transpose-filter]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-transpose-filter
[transcoding-horizontally-flipped-and-scaled-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-horizontally-flipped-and-scaled-video
[extracting-key-frames-as-png-image]: https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#extracting-key-frames-as-png-image
[generating-thumbnail-with-a-fancy-filter]: https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#generating-thumbnail-with-a-fancy-filter
[extracting-video-metadata-using-sourcer-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-sourcer-api
[extracting-video-metadata-using-ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-ffdecoder-api

@@ -462,37 +459,40 @@ <!--

-->
[advanced-recipes]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/
[decoding-live-virtual-sources]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#decoding-live-virtual-sources
[decoding-live-feed-devices]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#decoding-live-feed-devices
[hardware-accelerated-video-decoding]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#hardware-accelerated-video-decoding
[transcoding-live-complex-filtergraphs]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-live-complex-filtergraphs
[transcoding-video-art-with-filtergraphs]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-filtergraphs
[hardware-accelerated-video-transcoding]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#hardware-accelerated-video-transcoding
[updating-video-metadata]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#updating-video-metadata
[advanced-recipes]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/
[decoding-live-virtual-sources]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#decoding-live-virtual-sources
[decoding-live-feed-devices]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#decoding-live-feed-devices
[hardware-accelerated-video-decoding]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#hardware-accelerated-video-decoding
[transcoding-live-complex-filtergraphs]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-live-complex-filtergraphs
[transcoding-video-art-with-filtergraphs]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-filtergraphs
[hardware-accelerated-video-transcoding]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#hardware-accelerated-video-transcoding
[updating-video-metadata]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#updating-video-metadata
[generate-and-decode-frames-from-sierpinski-pattern]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-sierpinski-pattern
[generate-and-decode-frames-from-test-source-pattern]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-test-source-pattern
[generate-and-decode-frames-from-gradients-with-custom-text-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-gradients-with-custom-text-effect
[generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms
[generate-and-decode-frames-from-game-of-life-visualization]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-game-of-life-visualization
[cuvid-accelerated-hardware-based-video-decoding-and-previewing]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#cuvid-accelerated-hardware-based-video-decoding-and-previewing
[cuda-accelerated-hardware-based-video-decoding-and-previewing]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#cuda-accelerated-hardware-based-video-decoding-and-previewing
[transcoding-video-with-live-custom-watermark-image-overlay]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-with-live-custom-watermark-image-overlay
[transcoding-video-from-sequence-of-images-with-additional-filtering]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-from-sequence-of-images-with-additional-filtering
[transcoding-video-art-with-jetcolor-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-jetcolor-effect
[transcoding-video-art-with-yuv-bitplane-visualization]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-yuv-bitplane-visualization
[transcoding-video-art-with-ghosting-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-ghosting-effect
[transcoding-video-art-with-pixelation-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-pixelation-effect
[capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer
[capturing-and-previewing-frames-from-your-desktop]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-your-desktop
[cuda-accelerated-video-transcoding-with-opencvs-videowriter-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#cuda-accelerated-video-transcoding-with-opencvs-videowriter-api
[cuda-nvenc-accelerated-video-transcoding-with-writegear-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#cuda-nvenc-accelerated-video-transcoding-with-writegear-api
[cuda-nvenc-accelerated-end-to-end-lossless-video-transcoding-with-writegear-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#cuda-nvenc-accelerated-end-to-end-lossless-video-transcoding-with-writegear-api
[added-new-attributes-to-metadata-in-ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#added-new-attributes-to-metadata-in-ffdecoder-api
[overriding-source-video-metadata-in-ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#overriding-source-video-metadata-in-ffdecoder-api
[generate-and-decode-frames-from-sierpinski-pattern]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-sierpinski-pattern
[generate-and-decode-frames-from-test-source-pattern]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-test-source-pattern
[generate-and-decode-frames-from-gradients-with-custom-text-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-gradients-with-custom-text-effect
[generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms
[generate-and-decode-frames-from-game-of-life-visualization]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-game-of-life-visualization
[gpu-accelerated-hardware-based-video-decoding]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#gpu-accelerated-hardware-based-video-decoding
[transcoding-video-with-live-custom-watermark-image-overlay]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-with-live-custom-watermark-image-overlay
[transcoding-video-from-sequence-of-images-with-additional-filtering]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-from-sequence-of-images-with-additional-filtering
[transcoding-video-art-with-jetcolor-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-jetcolor-effect
[transcoding-video-art-with-yuv-bitplane-visualization]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-yuv-bitplane-visualization
[transcoding-video-art-with-ghosting-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-ghosting-effect
[transcoding-video-art-with-pixelation-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-pixelation-effect
[capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer
[capturing-and-previewing-frames-from-your-desktop]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-your-desktop
[gpu-accelerated-hardware-based-video-transcoding-with-writegear-api]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#gpu-accelerated-hardware-based-video-transcoding-with-writegear-api
[added-new-attributes-to-metadata-in-ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#added-new-attributes-to-metadata-in-ffdecoder-api
[overriding-source-video-metadata-in-ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#overriding-source-video-metadata-in-ffdecoder-api
<!--
CI Apps URLs
-->
[github-flow]:https://github.com/abhiTronix/deffcode/actions/workflows/CIlinux.yml
[azure-pipeline]:https://dev.azure.com/abhiuna12/public/_build?definitionId=3
[app]:https://ci.appveyor.com/project/abhiTronix/deffcode
[code]:https://codecov.io/gh/abhiTronix/deffcode
[github-flow]: https://github.com/abhiTronix/deffcode/actions/workflows/CIlinux.yml
[azure-pipeline]: https://dev.azure.com/abhiuna12/public/_build?definitionId=3
[app]: https://ci.appveyor.com/project/abhiTronix/deffcode
[code]: https://codecov.io/gh/abhiTronix/deffcode
[black]: https://github.com/psf/black

@@ -503,7 +503,8 @@

-->
[opencv-py]:https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html
[ffmpeg]:https://www.ffmpeg.org/
[pypi]:https://pypi.org/project/deffcode/
[gitter]:https://gitter.im/deffcode-python/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge
[coffee]:https://www.buymeacoffee.com/2twOXFvlA
[opencv-py]: https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html
[ffmpeg]: https://www.ffmpeg.org/
[pypi]: https://pypi.org/project/deffcode/
[gitter]: https://gitter.im/deffcode-python/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge
[coffee]: https://www.buymeacoffee.com/2twOXFvlA
[kofi]: https://ko-fi.com/W7W8WTYO
+143
-142
<!--
===============================================
DeFFcode library source-code is deployed under the Apache 2.0 License:

@@ -11,3 +11,3 @@

http://www.apache.org/licenses/LICENSE-2.0
http://www.apache.org/licenses/LICENSE-2.0

@@ -23,6 +23,6 @@ Unless required by applicable law or agreed to in writing, software

<div align="center">
![DeFFcode](docs/overrides/assets/images/deffcode.png#gh-light-mode-only)
![DeFFcode](docs/overrides/assets/images/deffcode-dark.png#gh-dark-mode-only)
![DeFFcode](https://user-images.githubusercontent.com/34266896/211494454-a16fe5b1-e7d2-44dd-84ba-67b0578611cb.png#gh-light-mode-only)
![DeFFcode](https://user-images.githubusercontent.com/34266896/211494463-a63a03d2-72a6-46bb-b40a-ab485a63674b.png#gh-dark-mode-only)
</div>

@@ -32,14 +32,13 @@

[![Build Status][github-cli]][github-flow] [![Codecov branch][codecov]][code] [![Azure DevOps builds (branch)][azure-badge]][azure-pipeline]
[![Build Status][github-cli]][github-flow] [![Codecov branch][codecov]][code] [![Azure DevOps builds (branch)][azure-badge]][azure-pipeline]
[![Glitter chat][gitter-bagde]][gitter] [![Build Status][appveyor]][app] [![PyPi version][pypi-badge]][pypi]
[![Glitter chat][gitter-bagde]][gitter] [![Build Status][appveyor]][app] [![PyPi version][pypi-badge]][pypi]
[![Code Style][black-badge]][black]
---
----
[Releases][release]&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Recipes][recipes]&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Documentation][docs]&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[Installation][installation-notes]&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[License](#copyright)
----
---

@@ -79,3 +78,3 @@ </div>

- Out-of-the-box support for all prominent Computer Vision libraries.
- Cross-platform, runs on Python 3.7+, and easy to install.
- Cross-platform, runs on Python 3.7+, and easy to install.

@@ -116,3 +115,3 @@ <!--

<div align="center">
<a href="https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video"><img src="docs/overrides/assets/gifs/bigbuckbunny_reversed.gif" alt="Big Buck Bunny Reversed" title="Click to view source code" width="70%" /> </a>
<a href="https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video"><img src="https://user-images.githubusercontent.com/34266896/211499038-46cc246d-843b-4c89-8e9a-5536395da9e7.gif" title="Click to view source code" width="70%" /> </a>
<br>

@@ -129,3 +128,4 @@ <sub><i>Big Buck Bunny Reversed using Live Simple Filtergraph</i></sub>

- [Capturing and Previewing BGR frames from a video file][capturing-and-previewing-bgr-frames-from-a-video-file] _(OpenCV Support)_
- [Playing with any other FFmpeg pixel formats][capturing-and-previewing-bgr-frames-from-a-video-file]
- [Playing with any other FFmpeg pixel formats][playing-with-any-other-ffmpeg-pixel-formats]
- [Capturing and Previewing frames from a Looping Video][capturing-and-previewing-frames-from-a-looping-video]
- [Enumerating all Camera Devices with Indexes][enumerating-all-camera-devices-with-indexes]

@@ -148,3 +148,3 @@ - [Capturing and Previewing frames from a Camera using Indexes][capturing-and-previewing-frames-from-a-camera-using-indexes]

- [Transcoding Rotated video (with `rotate` filter)][transcoding-rotated-video-with-rotate-filter]
- [Transcoding Rotated video (with `transpose` filter)][transcoding-rotated-video-with-transpose-filter]
- [Transcoding Rotated video (with `transpose` filter)][transcoding-rotated-video-with-transpose-filter]
- [Transcoding Horizontally flipped and Scaled video][transcoding-horizontally-flipped-and-scaled-video]

@@ -165,3 +165,2 @@ - [Extracting Key-frames as PNG image][extracting-key-frames-as-png-image]

### B. [**Advanced Recipes 🥐**][advanced-recipes]: _Recipes to take your skills to the next level._

@@ -171,3 +170,3 @@

<p align="center">
<a href="https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms"><img src="docs/overrides/assets/gifs/mandelbrot_vectorscope_waveforms.gif" alt="mandelbrot test pattern" title="Click to view source code" width="70%" /></a>
<a href="https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms"><img src="https://user-images.githubusercontent.com/34266896/211498819-13fe0487-e843-4315-b4f3-c881de6c8c4a.gif" alt="mandelbrot test pattern" title="Click to view source code" width="70%" /></a>
<br>

@@ -189,3 +188,4 @@ <sub><i>Live Mandelbrot pattern with a Vectorscope & two Waveforms</i></sub>

- [Capturing and Previewing frames from your Desktop][capturing-and-previewing-frames-from-your-desktop] _(Screen Recording)_
- [GPU-accelerated Hardware-based Video Decoding][gpu-accelerated-hardware-based-video-decoding]
- [CUVID-accelerated Hardware-based Video Decoding and Previewing][cuvid-accelerated-hardware-based-video-decoding-and-previewing]
- [CUDA-accelerated Hardware-based Video Decoding and Previewing][cuda-accelerated-hardware-based-video-decoding-and-previewing]

@@ -200,6 +200,8 @@ </details>

- [Transcoding video art with YUV Bitplane Visualization][transcoding-video-art-with-yuv-bitplane-visualization]
- [Transcoding video art with Jetcolor effect][transcoding-video-art-with-jetcolor-effect]
- [Transcoding video art with Jetcolor effect][transcoding-video-art-with-jetcolor-effect]
- [Transcoding video art with Ghosting effect][transcoding-video-art-with-ghosting-effect]
- [Transcoding video art with Pixelation effect][transcoding-video-art-with-pixelation-effect]
- [GPU-accelerated Hardware-based Video Transcoding with WriteGear API][gpu-accelerated-hardware-based-video-transcoding-with-writegear-api]
- [CUDA-accelerated Video Transcoding with OpenCV's VideoWriter API][cuda-accelerated-video-transcoding-with-opencvs-videowriter-api]
- [CUDA-NVENC-accelerated Video Transcoding with WriteGear API][cuda-nvenc-accelerated-video-transcoding-with-writegear-api]
- [CUDA-NVENC-accelerated End-to-end Lossless Video Transcoding with WriteGear API][cuda-nvenc-accelerated-end-to-end-lossless-video-transcoding-with-writegear-api]

@@ -224,3 +226,3 @@ </details>

### A. FFdecoder API
### A. FFdecoder API

@@ -240,3 +242,3 @@ The primary function of [**FFdecoder API**][ffdecoder-api] is to **decode 24-bit RGB video frames** from the given source:

for frame in decoder.generateFrame():
# lets print its shape

@@ -249,3 +251,3 @@ print(frame.shape) # (1080, 1920, 3)

### B. Sourcer API
### B. Sourcer API

@@ -268,27 +270,24 @@ The primary function of [**Sourcer API**][sourcer-api] is to **gather metadata information from all multimedia streams available** in the given source:

```json
{
"ffmpeg_binary_path": "C:\\Users\\foo\\AppData\\Local\\Temp\\ffmpeg-static-win64-gpl/bin/ffmpeg.exe",
"source": "https://abhitronix.github.io/html/Big_Buck_Bunny_1080_10s_1MB.mp4",
"source_extension": ".mp4",
"source_video_resolution": [
1920,
1080
],
"source_video_framerate": 60.0,
"source_video_pixfmt": "yuv420p",
"source_video_decoder": "h264",
"source_duration_sec": 10.0,
"approx_video_nframes": 600,
"source_video_bitrate": "832k",
"source_audio_bitrate": "",
"source_audio_samplerate": "",
"source_has_video": true,
"source_has_audio": false,
"source_has_image_sequence": false
}
```
```json
{
"ffmpeg_binary_path": "C:\\Users\\foo\\AppData\\Local\\Temp\\ffmpeg-static-win64-gpl/bin/ffmpeg.exe",
"source": "https://abhitronix.github.io/html/Big_Buck_Bunny_1080_10s_1MB.mp4",
"source_extension": ".mp4",
"source_video_resolution": [1920, 1080],
"source_video_framerate": 60.0,
"source_video_pixfmt": "yuv420p",
"source_video_decoder": "h264",
"source_duration_sec": 10.0,
"approx_video_nframes": 600,
"source_video_bitrate": "832k",
"source_audio_bitrate": "",
"source_audio_samplerate": "",
"source_has_video": true,
"source_has_audio": false,
"source_has_image_sequence": false
}
```
</details>
&nbsp;

@@ -298,6 +297,5 @@

# Contributions
> We're happy to meet new contributors💗
> We're happy to meet new contributors💗

@@ -315,3 +313,3 @@ We welcome your contributions to help us improve and extend this project. If you want to get involved with VidGear development, checkout the **[Contribution Guidelines ▶️][contribute]**

<div align="center">
<img src="docs/overrides/assets/images/help_us.png" alt="Donation" width="50%" />
<img src="https://abhitronix.github.io/deffcode/latest/assets/images/help_us.png" alt="Donation" width="50%" />
<p><i>DeFFcode is free and open source and will always remain so. ❤️</i></p>

@@ -324,3 +322,2 @@ </div>

&nbsp;

@@ -330,4 +327,2 @@

# Citation

@@ -337,14 +332,14 @@

[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6984364.svg)](https://doi.org/10.5281/zenodo.6984364)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.7155399.svg)](https://doi.org/10.5281/zenodo.7155399)
```BibTeX
@software{deffcode,
author = {Abhishek Thakur},
title = {abhiTronix/deffcode: v0.2.3},
month = aug,
author = {Abhishek Singh Thakur},
title = {abhiTronix/deffcode: v0.2.4},
month = oct,
year = 2022,
publisher = {Zenodo},
version = {v0.2.3},
doi = {10.5281/zenodo.6984364},
url = {https://doi.org/10.5281/zenodo.6984364}
version = {v0.2.4},
doi = {10.5281/zenodo.7155399},
url = {https://doi.org/10.5281/zenodo.7155399}
}

@@ -363,63 +358,65 @@ ```

<!--
CI Badges
-->
[appveyor]:https://img.shields.io/appveyor/ci/abhitronix/deffcode.svg?style=for-the-badge&logo=appveyor
[codecov]:https://img.shields.io/codecov/c/gh/abhiTronix/deffcode?logo=codecov&style=for-the-badge&token=zrES4mwVKe
[github-cli]:https://img.shields.io/github/workflow/status/abhiTronix/deffcode/GitHub%20Action%20workflow%20for%20Linux?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMWE5IDkgMCAwMTkgOSA5IDkgMCAwMS05IDkgOSA5IDAgMDEtOS05IDkgOSAwIDAxOS05ek0yMyAxOWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyek0yMyAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MSAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1zZWNvbmRhcnksICM3OUI4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0yNS4wMzcgMjMuNjA3bC0zLjA3IDMuMDY1LTEuNDktMS40ODUiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDEgMTlhNiA2IDAgMTEwIDEyIDYgNiAwIDAxMC0xMnoiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggZD0iTTQzLjAzNiAyMy42MDdsLTMuMDY5IDMuMDY1LTEuNDktMS40ODVNNyA2LjgxMmExIDEgMCAwMTEuNTMzLS44NDZsNS4xMTMgMy4yMmExIDEgMCAwMS0uMDA2IDEuNjk3bC01LjExMyAzLjE3QTEgMSAwIDAxNyAxMy4yMDNWNi44MTN6TTkgMTl2MTVjMCAzLjg2NiAzLjE3NyA3IDcgN2gxIiBzdHJva2U9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0xNi45NDkgMjZhMSAxIDAgMTAwLTJ2MnpNOCAxOS4wMzVBNi45NjUgNi45NjUgMCAwMDE0Ljk2NSAyNnYtMkE0Ljk2NSA0Ljk2NSAwIDAxMTAgMTkuMDM1SDh6TTE0Ljk2NSAyNmgxLjk4NHYtMmgtMS45ODR2MnoiIGZpbGw9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIi8+PHBhdGggZD0iTTI5LjA1NSAyNWg1Ljk0NCIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIxIDQwYTEgMSAwIDExLS4wMDEgMi4wMDFBMSAxIDAgMDEyMSA0MHpNMjUgNDBhMSAxIDAgMTEtLjAwMSAyLjAwMUExIDEgMCAwMTI1IDQweiIgZmlsbD0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIvPjxwYXRoIGQ9Ik0zNC4wMDUgNDEuMDA3bC0xLjAxMy4wMzMiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=
[prs-badge]:https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABC0lEQVRYhdWVPQoCMRCFX6HY2ghaiZUXsLW0EDyBrbWtN/EUHsHTWFnYyCL4gxibVZZlZzKTnWz0QZpk5r0vIdkF/kBPAMOKeddE+CQPKoc5Yt5cTjBMdQSwDQToWgBJAn3jmhqgltapAV6E6b5U17MGGAUaUj07TficMfIBZDV6vxowBm1BP9WbSQE4o5h9IjPJmy73TEPDDxVmoZdQrQ5jRhly9Q8tgMUXkIIWn0oG4GYQfAXQzz1PGoCiQndM7b4RgJay/h7zBLT3hASgoKjamQJMreKf0gfuAGyYtXEIAKcL/Dss15iq6ohXghozLYiAMxPuACwtIT4yeQUxAaLrZwAoqGRKGk7qDSYTfYQ8LuYnAAAAAElFTkSuQmCC
[azure-badge]:https://img.shields.io/azure-devops/build/abhiuna12/942b3b13-d745-49e9-8d7d-b3918ff43ac2/3/master?logo=azure-pipelines&style=for-the-badge
[pypi-badge]:https://img.shields.io/pypi/v/deffcode.svg?style=for-the-badge&logo=pypi
[gitter-bagde]:https://img.shields.io/badge/Chat-Gitter-blueviolet.svg?style=for-the-badge&logo=gitter
[Coffee-badge]:https://abhitronix.github.io/img/deffcode/orange_img.png
[kofi-badge]:https://www.ko-fi.com/img/githubbutton_sm.svg
[black-badge]:https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge&logo=github
[appveyor]: https://img.shields.io/appveyor/ci/abhitronix/deffcode.svg?style=for-the-badge&logo=appveyor
[codecov]: https://img.shields.io/codecov/c/gh/abhiTronix/deffcode?logo=codecov&style=for-the-badge&token=zrES4mwVKe
[github-cli]: https://img.shields.io/github/actions/workflow/status/abhiTronix/deffcode/.github/workflows/CIlinux.yml?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMWE5IDkgMCAwMTkgOSA5IDkgMCAwMS05IDkgOSA5IDAgMDEtOS05IDkgOSAwIDAxOS05ek0yMyAxOWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyek0yMyAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MSAzNWE2IDYgMCAxMTAgMTIgNiA2IDAgMDEwLTEyeiIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1zZWNvbmRhcnksICM3OUI4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0yNS4wMzcgMjMuNjA3bC0zLjA3IDMuMDY1LTEuNDktMS40ODUiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDEgMTlhNiA2IDAgMTEwIDEyIDYgNiAwIDAxMC0xMnoiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tcHJpbWFyeSwgIzIwODhGRikiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggZD0iTTQzLjAzNiAyMy42MDdsLTMuMDY5IDMuMDY1LTEuNDktMS40ODVNNyA2LjgxMmExIDEgMCAwMTEuNTMzLS44NDZsNS4xMTMgMy4yMmExIDEgMCAwMS0uMDA2IDEuNjk3bC01LjExMyAzLjE3QTEgMSAwIDAxNyAxMy4yMDNWNi44MTN6TTkgMTl2MTVjMCAzLjg2NiAzLjE3NyA3IDcgN2gxIiBzdHJva2U9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0xNi45NDkgMjZhMSAxIDAgMTAwLTJ2MnpNOCAxOS4wMzVBNi45NjUgNi45NjUgMCAwMDE0Ljk2NSAyNnYtMkE0Ljk2NSA0Ljk2NSAwIDAxMTAgMTkuMDM1SDh6TTE0Ljk2NSAyNmgxLjk4NHYtMmgtMS45ODR2MnoiIGZpbGw9InZhcigtLWNvbG9yLW1hcmtldGluZy1pY29uLXByaW1hcnksICMyMDg4RkYpIi8+PHBhdGggZD0iTTI5LjA1NSAyNWg1Ljk0NCIgc3Ryb2tlPSJ2YXIoLS1jb2xvci1tYXJrZXRpbmctaWNvbi1wcmltYXJ5LCAjMjA4OEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIxIDQwYTEgMSAwIDExLS4wMDEgMi4wMDFBMSAxIDAgMDEyMSA0MHpNMjUgNDBhMSAxIDAgMTEtLjAwMSAyLjAwMUExIDEgMCAwMTI1IDQweiIgZmlsbD0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIvPjxwYXRoIGQ9Ik0zNC4wMDUgNDEuMDA3bC0xLjAxMy4wMzMiIHN0cm9rZT0idmFyKC0tY29sb3ItbWFya2V0aW5nLWljb24tc2Vjb25kYXJ5LCAjNzlCOEZGKSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4=
[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABC0lEQVRYhdWVPQoCMRCFX6HY2ghaiZUXsLW0EDyBrbWtN/EUHsHTWFnYyCL4gxibVZZlZzKTnWz0QZpk5r0vIdkF/kBPAMOKeddE+CQPKoc5Yt5cTjBMdQSwDQToWgBJAn3jmhqgltapAV6E6b5U17MGGAUaUj07TficMfIBZDV6vxowBm1BP9WbSQE4o5h9IjPJmy73TEPDDxVmoZdQrQ5jRhly9Q8tgMUXkIIWn0oG4GYQfAXQzz1PGoCiQndM7b4RgJay/h7zBLT3hASgoKjamQJMreKf0gfuAGyYtXEIAKcL/Dss15iq6ohXghozLYiAMxPuACwtIT4yeQUxAaLrZwAoqGRKGk7qDSYTfYQ8LuYnAAAAAElFTkSuQmCC
[azure-badge]: https://img.shields.io/azure-devops/build/abhiuna12/942b3b13-d745-49e9-8d7d-b3918ff43ac2/3/master?logo=azure-pipelines&style=for-the-badge
[pypi-badge]: https://img.shields.io/pypi/v/deffcode.svg?style=for-the-badge&logo=pypi
[gitter-bagde]: https://img.shields.io/badge/Chat-Gitter-blueviolet.svg?style=for-the-badge&logo=gitter
[coffee-badge]: https://abhitronix.github.io/img/deffcode/orange_img.png
[kofi-badge]: https://www.ko-fi.com/img/githubbutton_sm.svg
[black-badge]: https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge&logo=github
<!--
Internal URLs
-->
[docs]:https://abhitronix.github.io/deffcode/latest/
[release]:https://github.com/abhiTronix/deffcode/releases/latest
[recipes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/
[license]:https://github.com/abhiTronix/deffcode/blob/master/LICENSE
[help]:https://abhitronix.github.io/deffcode/latest/help/get_help
[installation-notes]:https://abhitronix.github.io/deffcode/latest/installation/#installation-notes
[ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/reference/ffdecoder/#ffdecoder-api
[sourcer-api]:https://abhitronix.github.io/deffcode/latest/reference/sourcer/#sourcer-api
[contribute]:https://abhitronix.github.io/deffcode/latest/contribution/
[docs]: https://abhitronix.github.io/deffcode/latest/
[release]: https://github.com/abhiTronix/deffcode/releases/latest
[recipes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/
[license]: https://github.com/abhiTronix/deffcode/blob/master/LICENSE
[help]: https://abhitronix.github.io/deffcode/latest/help/get_help
[installation-notes]: https://abhitronix.github.io/deffcode/latest/installation/#installation-notes
[ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/reference/ffdecoder/#ffdecoder-api
[sourcer-api]: https://abhitronix.github.io/deffcode/latest/reference/sourcer/#sourcer-api
[contribute]: https://abhitronix.github.io/deffcode/latest/contribution/
<!--
Basic Recipes
-->
[basic-recipes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/
[decoding-video-files]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#decoding-video-files
[decoding-camera-devices-using-indexes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#decoding-camera-devices-using-indexes
[decoding-network-streams]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#decoding-network-streams
[decoding-image-sequences]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#decoding-image-sequences
[transcode-live-frames]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/
[transcoding-live-simple-filtergraphs]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-live-simple-filtergraphs
[saving-key-frames-as-image]:https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#saving-key-frames-as-image
[extracting-video-metadata]:https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata
[accessing-rgb-frames-from-a-video-file]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#accessing-rgb-frames-from-a-video-file
[capturing-and-previewing-bgr-frames-from-a-video-file]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-bgr-frames-from-a-video-file
[capturing-and-previewing-bgr-frames-from-a-video-file]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-bgr-frames-from-a-video-file
[enumerating-all-camera-devices-with-indexes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#enumerating-all-camera-devices-with-indexes
[capturing-and-previewing-frames-from-a-camera-using-indexes]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#capturing-and-previewing-frames-from-a-camera-using-indexes
[capturing-and-previewing-frames-from-a-https-stream]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-https-stream
[capturing-and-previewing-frames-from-a-rtsprtp-stream]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-rtsprtp-stream
[capturing-and-previewing-frames-from-sequence-of-images]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-sequence-of-images
[capturing-and-previewing-frames-from-single-looping-image]:https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-single-looping-image
[transcoding-video-using-opencv-videowriter-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-video-using-opencv-videowriter-api
[transcoding-lossless-video-using-writegear-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-lossless-video-using-writegear-api
[transcoding-trimmed-and-reversed-video]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video
[transcoding-cropped-video]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-cropped-video
[transcoding-rotated-video-with-rotate-filter]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-rotate-filter
[transcoding-rotated-video-with-transpose-filter]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-transpose-filter
[transcoding-horizontally-flipped-and-scaled-video]:https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-horizontally-flipped-and-scaled-video
[extracting-key-frames-as-png-image]:https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#extracting-key-frames-as-png-image
[generating-thumbnail-with-a-fancy-filter]:https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#generating-thumbnail-with-a-fancy-filter
[extracting-video-metadata-using-sourcer-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-sourcer-api
[extracting-video-metadata-using-ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-ffdecoder-api
[basic-recipes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/
[decoding-video-files]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#decoding-video-files
[decoding-camera-devices-using-indexes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#decoding-camera-devices-using-indexes
[decoding-network-streams]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#decoding-network-streams
[decoding-image-sequences]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#decoding-image-sequences
[transcode-live-frames]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/
[transcoding-live-simple-filtergraphs]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-live-simple-filtergraphs
[saving-key-frames-as-image]: https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#saving-key-frames-as-image
[extracting-video-metadata]: https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata
[accessing-rgb-frames-from-a-video-file]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#accessing-rgb-frames-from-a-video-file
[capturing-and-previewing-bgr-frames-from-a-video-file]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-bgr-frames-from-a-video-file
[playing-with-any-other-ffmpeg-pixel-formats]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#playing-with-any-other-ffmpeg-pixel-formats
[capturing-and-previewing-frames-from-a-looping-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-video-files/#capturing-and-previewing-frames-from-a-looping-video
[enumerating-all-camera-devices-with-indexes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#enumerating-all-camera-devices-with-indexes
[capturing-and-previewing-frames-from-a-camera-using-indexes]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-camera-devices/#capturing-and-previewing-frames-from-a-camera-using-indexes
[capturing-and-previewing-frames-from-a-https-stream]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-https-stream
[capturing-and-previewing-frames-from-a-rtsprtp-stream]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-network-streams/#capturing-and-previewing-frames-from-a-rtsprtp-stream
[capturing-and-previewing-frames-from-sequence-of-images]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-sequence-of-images
[capturing-and-previewing-frames-from-single-looping-image]: https://abhitronix.github.io/deffcode/latest/recipes/basic/decode-image-sequences/#capturing-and-previewing-frames-from-single-looping-image
[transcoding-video-using-opencv-videowriter-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-video-using-opencv-videowriter-api
[transcoding-lossless-video-using-writegear-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames/#transcoding-lossless-video-using-writegear-api
[transcoding-trimmed-and-reversed-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-trimmed-and-reversed-video
[transcoding-cropped-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-cropped-video
[transcoding-rotated-video-with-rotate-filter]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-rotate-filter
[transcoding-rotated-video-with-transpose-filter]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-rotated-video-with-transpose-filter
[transcoding-horizontally-flipped-and-scaled-video]: https://abhitronix.github.io/deffcode/latest/recipes/basic/transcode-live-frames-simplegraphs/#transcoding-horizontally-flipped-and-scaled-video
[extracting-key-frames-as-png-image]: https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#extracting-key-frames-as-png-image
[generating-thumbnail-with-a-fancy-filter]: https://abhitronix.github.io/deffcode/latest/recipes/basic/save-keyframe-image/#generating-thumbnail-with-a-fancy-filter
[extracting-video-metadata-using-sourcer-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-sourcer-api
[extracting-video-metadata-using-ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/recipes/basic/extract-video-metadata/#extracting-video-metadata-using-ffdecoder-api

@@ -429,37 +426,40 @@ <!--

-->
[advanced-recipes]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/
[decoding-live-virtual-sources]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#decoding-live-virtual-sources
[decoding-live-feed-devices]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#decoding-live-feed-devices
[hardware-accelerated-video-decoding]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#hardware-accelerated-video-decoding
[transcoding-live-complex-filtergraphs]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-live-complex-filtergraphs
[transcoding-video-art-with-filtergraphs]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-filtergraphs
[hardware-accelerated-video-transcoding]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#hardware-accelerated-video-transcoding
[updating-video-metadata]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#updating-video-metadata
[advanced-recipes]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/
[decoding-live-virtual-sources]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#decoding-live-virtual-sources
[decoding-live-feed-devices]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#decoding-live-feed-devices
[hardware-accelerated-video-decoding]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#hardware-accelerated-video-decoding
[transcoding-live-complex-filtergraphs]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-live-complex-filtergraphs
[transcoding-video-art-with-filtergraphs]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-filtergraphs
[hardware-accelerated-video-transcoding]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#hardware-accelerated-video-transcoding
[updating-video-metadata]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#updating-video-metadata
[generate-and-decode-frames-from-sierpinski-pattern]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-sierpinski-pattern
[generate-and-decode-frames-from-test-source-pattern]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-test-source-pattern
[generate-and-decode-frames-from-gradients-with-custom-text-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-gradients-with-custom-text-effect
[generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms
[generate-and-decode-frames-from-game-of-life-visualization]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-game-of-life-visualization
[cuvid-accelerated-hardware-based-video-decoding-and-previewing]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#cuvid-accelerated-hardware-based-video-decoding-and-previewing
[cuda-accelerated-hardware-based-video-decoding-and-previewing]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#cuda-accelerated-hardware-based-video-decoding-and-previewing
[transcoding-video-with-live-custom-watermark-image-overlay]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-with-live-custom-watermark-image-overlay
[transcoding-video-from-sequence-of-images-with-additional-filtering]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-from-sequence-of-images-with-additional-filtering
[transcoding-video-art-with-jetcolor-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-jetcolor-effect
[transcoding-video-art-with-yuv-bitplane-visualization]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-yuv-bitplane-visualization
[transcoding-video-art-with-ghosting-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-ghosting-effect
[transcoding-video-art-with-pixelation-effect]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-pixelation-effect
[capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer
[capturing-and-previewing-frames-from-your-desktop]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-your-desktop
[cuda-accelerated-video-transcoding-with-opencvs-videowriter-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#cuda-accelerated-video-transcoding-with-opencvs-videowriter-api
[cuda-nvenc-accelerated-video-transcoding-with-writegear-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#cuda-nvenc-accelerated-video-transcoding-with-writegear-api
[cuda-nvenc-accelerated-end-to-end-lossless-video-transcoding-with-writegear-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#cuda-nvenc-accelerated-end-to-end-lossless-video-transcoding-with-writegear-api
[added-new-attributes-to-metadata-in-ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#added-new-attributes-to-metadata-in-ffdecoder-api
[overriding-source-video-metadata-in-ffdecoder-api]: https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#overriding-source-video-metadata-in-ffdecoder-api
[generate-and-decode-frames-from-sierpinski-pattern]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-sierpinski-pattern
[generate-and-decode-frames-from-test-source-pattern]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-test-source-pattern
[generate-and-decode-frames-from-gradients-with-custom-text-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-gradients-with-custom-text-effect
[generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-mandelbrot-test-pattern-with-vectorscope-waveforms
[generate-and-decode-frames-from-game-of-life-visualization]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-virtual-sources/#generate-and-decode-frames-from-game-of-life-visualization
[gpu-accelerated-hardware-based-video-decoding]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-hw-acceleration/#gpu-accelerated-hardware-based-video-decoding
[transcoding-video-with-live-custom-watermark-image-overlay]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-with-live-custom-watermark-image-overlay
[transcoding-video-from-sequence-of-images-with-additional-filtering]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-live-frames-complexgraphs/#transcoding-video-from-sequence-of-images-with-additional-filtering
[transcoding-video-art-with-jetcolor-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-jetcolor-effect
[transcoding-video-art-with-yuv-bitplane-visualization]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-yuv-bitplane-visualization
[transcoding-video-art-with-ghosting-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-ghosting-effect
[transcoding-video-art-with-pixelation-effect]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-art-filtergraphs/#transcoding-video-art-with-pixelation-effect
[capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-a-webcam-using-custom-demuxer
[capturing-and-previewing-frames-from-your-desktop]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/decode-live-feed-devices/#capturing-and-previewing-frames-from-your-desktop
[gpu-accelerated-hardware-based-video-transcoding-with-writegear-api]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/transcode-hw-acceleration/#gpu-accelerated-hardware-based-video-transcoding-with-writegear-api
[added-new-attributes-to-metadata-in-ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#added-new-attributes-to-metadata-in-ffdecoder-api
[overriding-source-video-metadata-in-ffdecoder-api]:https://abhitronix.github.io/deffcode/latest/recipes/advanced/update-metadata/#overriding-source-video-metadata-in-ffdecoder-api
<!--
CI Apps URLs
-->
[github-flow]:https://github.com/abhiTronix/deffcode/actions/workflows/CIlinux.yml
[azure-pipeline]:https://dev.azure.com/abhiuna12/public/_build?definitionId=3
[app]:https://ci.appveyor.com/project/abhiTronix/deffcode
[code]:https://codecov.io/gh/abhiTronix/deffcode
[github-flow]: https://github.com/abhiTronix/deffcode/actions/workflows/CIlinux.yml
[azure-pipeline]: https://dev.azure.com/abhiuna12/public/_build?definitionId=3
[app]: https://ci.appveyor.com/project/abhiTronix/deffcode
[code]: https://codecov.io/gh/abhiTronix/deffcode
[black]: https://github.com/psf/black

@@ -470,7 +470,8 @@

-->
[opencv-py]:https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html
[ffmpeg]:https://www.ffmpeg.org/
[pypi]:https://pypi.org/project/deffcode/
[gitter]:https://gitter.im/deffcode-python/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge
[coffee]:https://www.buymeacoffee.com/2twOXFvlA
[opencv-py]: https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html
[ffmpeg]: https://www.ffmpeg.org/
[pypi]: https://pypi.org/project/deffcode/
[gitter]: https://gitter.im/deffcode-python/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge
[coffee]: https://www.buymeacoffee.com/2twOXFvlA
[kofi]: https://ko-fi.com/W7W8WTYO

@@ -22,3 +22,2 @@ """

# import the necessary packages
import setuptools
from setuptools import setup

@@ -40,3 +39,3 @@ from distutils.util import convert_path

long_description.replace(
"![DeFFcode](docs/overrides/assets/images/deffcode-dark.png#gh-dark-mode-only)",
"![DeFFcode](https://user-images.githubusercontent.com/34266896/211494463-a63a03d2-72a6-46bb-b40a-ab485a63674b.png#gh-dark-mode-only)",
"",

@@ -54,5 +53,2 @@ )

)
long_description = long_description.replace(
"docs/overrides/", "https://abhitronix.github.io/deffcode/latest/"
)

@@ -59,0 +55,0 @@