Release Notes¶
v0.2.6 (2024-07-08) ¶
New Features
- FFdecoder:
- Introduced a new optional
-disable_ffmpeg_window
boolean parameter.- 💬 Prevents the FFmpeg command line window from appearing by applying the
DETACHED_PROCESS
flag to the subprocess FFmpeg pipeline when building.exe
files on Windows in silent (verbose=False
) mode.
- 💬 Prevents the FFmpeg command line window from appearing by applying the
- Introduced a new optional
- Sourcer:
- Added new parameters to metadata to accurately display video orientation.
- Added
source_video_orientation
parameter (default0.0
). - Added
output_orientation
parameter (default0.0
).
- Added
- Added new parameters to metadata to accurately display video orientation.
- FFHelper:
- Added support for SRTP/RTSPS in
is_valid_url
function.- Enhanced
is_valid_url
method to support both RTP/RTSP and SRTP/RTSPS protocols. - 💬 SRTP/RTSPS extends RTSP/RTP to encrypt video/audio data using ciphers like AES with a 128-bit key.
- Enhanced
- Added support for SRTP/RTSPS in
- Core:
- Added official support for Python
3.11.x
legacies.- Added Python-3.11 support across CI/CD configurations.
- Added Python-3.11 to setup.py metadata.
- Added official support for Python
- Docs:
- Added context and detailed instructions for Input and Output Seeking methods.
- Introduced
Input Seeking
andOutput Seeking
sections with pros, cons, and usage examples. - Added warning about using output seeking with filters for accuracy.
- Introduced
- Added new
tables
markdown extension for improved table formatting. - Added documentation for the new optional
-disable_ffmpeg_window
boolean parameter. - Added
unrecognized_links: ignore
tomkdocs.yml
to minimize logging during validation. - Added new features to
mkdocs.yml
related tonavigation
,content
, andtoc
.
- Added context and detailed instructions for Input and Output Seeking methods.
Updates/Improvements
- FFdecoder:
- Changed process termination from
kill()
toterminate()
if the process is still running, to ensure graceful shutdown.- 💬 The
terminate()
method sends theSIGTERM
signal to a process, which typically allows for a graceful shutdown. On Unix, this uses theSIGTERM
signal, while on Windows, it usesTerminateProcess()
.
- 💬 The
- Changed process termination from
- FFhelper:
- Improved regex pattern in
get_supported_demuxers
method.- Simplified regex search for demuxers and handled multi-line output correctly.
- Improved output extraction logic to handle commas within demuxer names.
- Improved regex pattern in
- Sourcer:
- Updated
extract_resolution_framerate
method to also return video orientation.- Added new regex pattern and filter for accurate video orientation extraction.
- Updated
- Setup:
- Updated patch for
long_description
. - Bumped version to
0.2.6
.
- Updated patch for
- Maintenance:
- Refactored logging messages and code comments for better readability and maintainability.
- Simplified conditional check using short-circuiting.
- Docs:
- Updated
mkdocs.yml
to improve overall documents structure and readability- Set the default version of the documentation to 'latest'.
- Set
edit_uri
for GitHub edit links to facilitate easier contributions. - Replaced deprecated
materialx
with supportedextensions
emoji generator. - Enhanced the active tab fonts with
font-weight: bold
incustom.css
. - Updated LinkedIn URL.
- Removed Twitter section from help and site metadata.
- Migrated to Google Analytics 4.
- Enabled
line_spans: __span
andpygments_lang_class: true
parameters inpymdownx.highlight
markdown extension. - Enabled
normalize_issue_symbols: true
inpymdownx.magiclink
markdown extension.
- Updated the Zenodo badges and the BibTeX entry to reflect recent changes.
- Included GitHub sponsors in
FUNDING.yml
. - Removed deprecated Gitter community chat sidecard.
- Updated
- CI:
- Updated paths to ignore additional files and types in CI/CD Pipelines and Codecov:
- Included
*.html
,*.js
,*.css
,mkdocs.yml
,README.md
to ignore list.
- Included
- Changed runner from
ubuntu-latest
toubuntu-20.04
in GitHub Actions. - Updated dependencies in
docs_deployer.yml
for better readability. - Modified Mike deploy commands to use
--alias-type=copy
instead of deprecated--no-redirect
. - Removed unsupported darwin platform from
test_FFdecoder_params
test.
- Updated paths to ignore additional files and types in CI/CD Pipelines and Codecov:
Breaking Updates/Changes
- Core:
- Ended support for Python
3.7.x
legacies.- Increased
python_requires
to3.8
and above in setup.py. - Removed Python
3.7
from setup.py metadata. - Removed Python
3.7
support from CI/CD pipelines.
- Increased
- Ended support for Python
Bug-fixes
- FFdecoder API:
- Fixed regex expression bugs in
get_supported_demuxers
method.
- Fixed regex expression bugs in
- CI:
- Fixed Assertion error with WriteGear API.
v0.2.5 (2023-01-11) ¶
New Features
- FFdecoder:
- Added OpenCV compatibility patch for YUV pixel-formats.
- Implemented new patch for handling YUV pixel-formats(such as
YUV420p
,yuv444p
,NV12
,NV21
etc.) for exclusive compatibility with OpenCV APIs.- Note: Only YUV pixel-formats starting with
YUV
andNV
are currently supported.
- Note: Only YUV pixel-formats starting with
- Added new
-enforce_cv_patch
boolean attribute for enabling OpenCV compatibility patch.
- Implemented new patch for handling YUV pixel-formats(such as
- Added OpenCV compatibility patch for YUV pixel-formats.
- Sourcer:
- Added Looping Video support.
- Now raw-frame numbers revert to null(
None
) whenever any looping is defined through filter(such as-filter_complex "loop=loop=3:size=75:start=25"
) or prefix("-ffprefixes":["-stream_loop", "3"]
).
- Now raw-frame numbers revert to null(
- Added Looping Video support.
- Docs:
- Added YUV frames example code for
Capturing and Previewing BGR frames from a video file
recipe. - Added YUV frames example code for `Transcoding video using OpenCV VideoWriter API recipe.
- Added YUV frames example code for `Transcoding lossless video using WriteGear API recipe.
- Added new CUVID-accelerated Hardware-based Video Decoding and Previewing recipe.
- Added new CUDA-accelerated Hardware-based Video Decoding and Previewing recipe.
- Added new CUDA-accelerated Video Transcoding with OpenCV`s VideoWriter API recipe.
- Added new CUDA-NVENC-accelerated Video Transcoding with WriteGear API recipe both for consuming BGR and NV12 frames.
- Added new CUDA-NVENC-accelerated End-to-end Lossless Video Transcoding with WriteGear API recipe which is still WIP(💬confirmed with a GIF from tenor).
- Added new Capturing and Previewing frames from a Looping Video recipe using
-stream_loop
option andloop
filter. - Added docs for
-enforce_cv_patch
boolean attribute inffparam
dictionary parameter. - Added new python dependency block for recipes.
- Reflected new OpenCV compatibility patch for YUV pixel-formats in code.
- Added new
content.code.copy
andcontent.code.link
features.
- Added YUV frames example code for
Updates/Improvements
- FFhelper:
- Replaced depreciating
Retry
API fromrequests.packages
withrequests.adapters
.
- Replaced depreciating
- Maintenance:
- Replaced
raw.github.com
links with GitLab and GH links. - Removed unused code.
- Updated log message.
- Replaced
- CI:
- Updated
test_FFdecoder_params
unittest to includewith
statement access method. - Updated
test_frame_format
test to include-enforce_cv_patch
boolean attribute. - Updated
test_source
to test looping video support.
- Updated
- Setup:
- Removed unused imports and patches.
- Bumped version to
0.2.5
.
- Docs:
- Updated Limitation: Bottleneck in Hardware-Accelerated Video Transcoding performance with Real-time Frame processing passage.
- Updated and corrected docs hyperlinks in index.md and ReadMe.md
- Update Zenodo Badge and BibTex entry.
- Updated
Readme.md
banner image URLs. - Updated md-typeset text font size to
.75rem
. - Updated text and admonitions.
- Updated recipe assumptions.
- Updated
Readme.md
GIF URLs. - Updated abstract text in recipes.
- Updated
changelog.md
. - Updated recipe code.
- Removed old recipes.
Bug-fixes
- FFdecoder API:
- Fixed Zero division bug while calculating
raw_bit_per_component
.
- Fixed Zero division bug while calculating
- FFhelper:
- Fixed response.headers returning
content-length
as Nonetype since it may not necessarily have the Content-Length header set.- Reason: The response from gitlab.com contains a Transfer-Encoding field as
'Transfer-Encoding': 'chunked'
, which means data is sent in a series of chunks, so the Content-Length header is emitted. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Transfer-Encoding#Directives
- Reason: The response from gitlab.com contains a Transfer-Encoding field as
- Fixed response.headers returning
- Docs:
- Fixed https://github.com/badges/shields/issues/8671 badge issue in README.md
- Removed depreciated text.
- Fixed several typos in docs.
- CI:
- Added fix for codecov upload bug (https://github.com/codecov/codecov-action/issues/598).
- Updated
codecov-action
workflow to `v3. - Added new
CODECOV_TOKEN
GitHub secret.
- Updated
- Added fix for codecov upload bug (https://github.com/codecov/codecov-action/issues/598).
Pull Requests
- PR #37
v0.2.4 (2022-10-07)¶
New Features
- FFdecoder API:
- Implemented new comprehensive support for both discarding key default FFmpeg parameters from Decoding pipeline simply by assigning them
null
string values, and concurrently using values extracted from Output Stream metadata properties (available only when FFmpeg filters are defined) for formulating pipelines.- Added
null
string value support to-framerate
and-custom_resolution
attributes, as well asframe_format
parameter for easily discarding them. - Re-Implemented calculation of rawframe pixel-format.
- Reconfigured default rawframe pixel-format, Now rawframe pixel-format will always default to
source_video_pixfmt
withframe_format="null"
. - Now with
frame_format
parameter value either "null" or invalid or undefined, rawframe pixel-format value is taken fromoutput_frames_pixfmt
metadata property extracted from Output Stream (available only when filters are defined). If validoutput_video_resolution
metadata property is found then it defaults to default pixel-format(calculated variably). - With
frame_format="null"
,-pix_fmt
FFmpeg parameter will not be added to Decoding pipeline.
- Reconfigured default rawframe pixel-format, Now rawframe pixel-format will always default to
- Re-Implemented calculation of rawframe resolution value.
- Now with
-custom_resolution
dictionary attribute value either "null" or invalid or undefined, rawframe resolution value is first taken fromoutput_video_resolution
metadata property extracted from Output Stream (available only when filters are defined), next fromsource_video_resolution
metadata property(extracted from Input Source Stream). If neitheroutput_video_resolution
norsource_video_resolution
valid metadata properties are found thenRuntimeError
is raised. - With
-custom_resolution
dictionary attribute value "null",-s/-size
FFmpeg parameter will not be added to Decoding pipeline.
- Now with
- Re-Implemented calculation of output framerate value.
- Now with
-framerate
dictionary attribute either null or invalid or undefined, output framerate value is first taken fromoutput_video_framerate
metadata property extracted from Output Stream (available only when filters are defined), next fromsource_video_framerate
metadata property(extracted from Input Source Stream). If neitheroutput_video_resolution
norsource_video_framerate
valid metadata properties are found thenRuntimeError
is raised. - With
-framerate
dictionary attribute value "null",-r/-framerate
FFmpeg parameter will not be added to Decoding pipeline.
- Now with
- Added
- Implemented passing of simple
-vf
filters, complex-filter_complex
filters, and pre-headers(via-ffprefixes
) directly to Sourcer API'ssourcer_params
parameter for probing Output Stream metadata and filter values.
- Implemented new comprehensive support for both discarding key default FFmpeg parameters from Decoding pipeline simply by assigning them
- Sourcer API:
- Implemented new comprehensive approach to handle
source_demuxer
parameter w.r.t differentsource
parameter values.- The
source_demuxer
parameter now accepts "auto" as its value for enabling Index based Camera Device Capture feature in Sourcer API. - Sourcer API auto-enforces
source_demuxer="auto"
by default, whenever a valid device index (usesvalidate_device_index
method for validation) is provided as itssource
parameter value.- ⚠️ Sourcer API will throw
Assertion
error ifsource_demuxer="auto"
is provided explicitly without a valid device index at itssource
parameter.
- ⚠️ Sourcer API will throw
- Source API now accepts all +ve and -ve device indexes (e.g.
-1,0,1,2
etc.) to itssource
parameter, both as in integer and string of integer types as source in Index based Camera Device Capture feature.- Sourcer API imports and utilizes
extract_device_n_demuxer()
method for discovering and extracting all Video-Capture device(s) name/path/index present on system.- ⚠️ Sourcer API will throw
RuntimeError
on failure to identify any device.
- ⚠️ Sourcer API will throw
- Sourcer API auto verifies that the specified source device index is in range of the devices discovered.
- ⚠️ Sourcer API will raise
ValueError
if value goes out of valid range.
- ⚠️ Sourcer API will raise
- Sourcer API also automatically handle -ve indexes if specified within the valid range.
- Implemented patch to auto-add
video=
suffix to selected device name before using it as video source on Windows OSes. - Added patch for handling dictionary of devices paths(with devices names as values) and log messages on Linux Oses.
- Added
copy
import for shallow copying various class parameters.
- Sourcer API imports and utilizes
- Implemented new Support for additional FFmpeg parameters and Output metadata.
- Added three new metadata properties:
output_video_resolution
,output_video_framerate
,output_frames_pixfmt
for handling extracted Output Stream values, whenever additional FFmpeg parameters(such as FFmpeg filters) are defined. - Added support for auto-handling additional FFmpeg parameters defined by
sourcer_params
dictionary parameters. - Implement new separate pipeline for parsing Output Stream metadata by decoding video source using
null
muxer for few microseconds whenever additional FFmpeg parameters(such as-vf
filters) are defined by the user. - Included new
metadata_output
internal parameter for holding Output Stream metadata splitted from original Sourcer Metadata extracted from new pipeline. - Included new
output_video_resolution
,output_video_framerate
,output_frames_pixfmt
internal parameters for metadata properties, whenever Output Stream Metadata available. - Added new
extract_output
boolean parameter toextract_video_pixfmt
andextract_resolution_framerate
internal methods for extracting outputpixel-format
,framerate
andresolution
using Output Stream metadata instead of Sourcer Metadata, whenever available.
- Added three new metadata properties:
- Added
tuple
datatype tosourcer_params
exception. - Added
dict2Args
import.
- The
- Added
enumerate_devices
property object to enumerate all probed Camera Devices connected to a system names along with their respective "device indexes" or "camera indexes" as python dictionary. - Added new
force_retrieve_missing
parameter toretrieve_metadata()
method for returning metadata missing in current Pipeline as(metadata, metadata_missing)
tuple value instead of justmetadata
, whenforce_retrieve_missing=True
. - Added various output stream metadata properties that are only available when additional FFmpeg parameters(such as filters) are defined manually, by assigning them counterpart source stream metadata property values
- Implemented new comprehensive approach to handle
- FFhelper:
- Implemented new
extract_device_n_demuxer()
method for discovering and extracting all Video-Capture device(s) name/path/index present on system and supported by valid OS specific FFmpeg demuxer.- Added support for three OS specific FFmpeg demuxers: namely
dshow
for Windows,v4l2
for Linux, andavfoundation
for Darwin/Mac OSes. - Implemented separate code for parsing outputs of python
subprocess
module outputs provided with different commands for discovering all Video-Capture devices present on system.- Processed
dshow
(on Windows) andavfoundation
(on Darwin) demuxers in FFmpeg commands with-list_devices true
parameters usingsubprocess
module and applied various brute-force pattern matching on its output for discovering and extracting all devices names/indexes. - Used
v4l2-ctl
submodule command on Linux machines for listing all Video-Capture devices usingsubprocess
module and applied various brute-force pattern matching on its output for discovering and extracting all devices names and true system/dev/video
paths.- Added patch for a single device with multiple
/dev/video
paths (each for metadata, video, controls), where it iterates on each path to find the exact path that contains valid video stream. - Added elaborated checks for catching all possible system errors that can occur while running
v4l2-ctl
submodule command. - The method will return discovered devices as list of dictionaries with device paths(
/dev/video
) as keys and respective device name as the values, instead of default list of device names. - Added patch for handling Linux specific log messages.
- Added patch for a single device with multiple
- Processed
- Added various logging messages to notify users about all discover devices names/paths w.r.t indexes.
- ⚠️ The
extract_device_n_demuxer
method will raiseRuntimeError
if it fails to identify any device. - Added various checks to assert invalid input parameters and unsupported OSes.
- Added
machine_OS
parameter to specify OS running on the system, must be value ofplatform.system()
module. If invalid the method will raise ValueError.
- Added support for three OS specific FFmpeg demuxers: namely
- Implemented new
- Utilities:
- Added new
new validate_device_index()
method to verify if given device index is valid or not?- Only Integers or String of integers are valid indexes.
- Returns a boolean value, confirming whether valid(If
true
), or not(IfFalse
).
- Added checks to support all +ve and -ve integers, both as integer and string types.
- Added new
- Docs:
- Added
new validate_device_index()
method and its parameters description. - Added
new extract_device_n_demuxer()
method and its parameters description. - Added Decoding Camera Devices using Indexes support docs.
- Added
decode-camera-devices.md
doc for Decoding Camera Devices using Indexes.- Added
Enumerating all Camera Devices with Indexes
example doc with code. - Added
Capturing and Previewing frames from a Camera using Indexes
example doc with code.
- Added
- Added Camera Device Index support docs to FFdecoder and Sourcer API params.
- Added
- Added
- CI:
- Added check exception for
mandelbrot
virtual source in Sourcer API'stest_probe_stream_n_retrieve_metadata
unittest. - Added new
test_discard_n_filter_params
unittest for test recently added supported for both discarded parameters and filter values.
- Added check exception for
Updates/Improvements
- FFdecoder API:
- Extended range of supported output frame pixel-formats.
- Added new pixel-formats to supported group by extending raw bits-per-component range.
- Simplified raw frame dtype calculation based on selected pixel-format.
output_frames_pixfmt
metadata property(if available) will be overridden torgb24
.
- Replaced
continue
withbreak
ingenerateFrame()
method. - Improved handling of
frame_format
parameter.
- Extended range of supported output frame pixel-formats.
- Sourcer API:
- Simplified JSON formatting and returning values logic.
- Updated logging messages text and position.
- Removed redundant variable definitions.
- Changed related internal variable names w.r.t metadata property names.
- Replaced
os_windows
internal parameter withmachine_OS
, and changed its input fromos.name
to more flexibleplatform.system()
. - Removed
source_extension
internal parameter and assigned values directly.
- FFhelper:
- Implemented more robust pattern matching for Linux machines.
- Updated logs in
check_sp_output()
method for improving error output message. - Implemented "Cannot open device" v4l2-ctl command Error logs.
- Maintenance:
- Bumped version to
0.2.4
. - Updated code comments.
- Bumped version to
- CI:
- Updated FFdecoder API's
test_camera_capture
unittest to test new Index based Camera Device Capturing on different platforms.- Added various parametrize
source
andsource_demuxer
parameter data to attain maximum coverage. - Added
result
field tofail
andxfail
unittest according to parametrize data provided on different platforms. - Removed
pytest.mark.skipif
to support all platforms.
- Added various parametrize
- Added and updated various parametrize test data to attain maximum coverage.
- Limited range of extracted frames, for finishing tests faster.
- Updated unittests to reflect recent name changes.
- Disabled capturing of stdout/stderr with
-s
flag in pytest.
- Updated FFdecoder API's
- Setup:
- Updated description metadata.
- Bash Script:
- Created undeleteable
undelete.txt
file for testing on Linux envs. - Updated
undelete.txt
file path. - Made FFmpeg output less verbose.
- Created undeleteable
- Docs:
- Updated FFdecoder API params docs w.r.t recent changes and supported for both discarded parameters and filter values.
- Added new admonitions to explain handling of "null" and (special-case), undefined, or invalid type values in various parameters/attributes.
- Added new footer reference explaining the handling of Default pixel-format for
frame_format
parameter. - Added missing docs for
-default_stream_indexes
ffparams attribute.
- Added docs for recently added additional FFmpeg parameter in Sourcer API's
sourcer_params
parameter.- Removed unsupported
-custom_resolution
sourcer_params attributes fromsourcer_params
parameter docs. - Removed redundant
-vcodec
and-framerate
attributes fromsourcer_params
parameter docs.
- Removed unsupported
- Updated both basic and advanced project Index hyperlinks.
- Moved
decoding-live-feed-devices.md
doc from basic to advanced directory. - Updated page navigation in
mkdocs.yml
. - Update announcement bar to feature Index based Camera Device Capture support.
- Updated Project description and Key features of DeFFcode.
- Updated README.md with latest information.
- Updated
source
andsource_demuxer
param doc. - Updated Hardware-Acceleration docs.
- Updated Hardware-Accelerated Video Decoding and Transcoding docs to inform users about DeFFcode generated YUV frames not yet supported by OpenCV and its APIs.
- Updated recipes docs to reflect recent changes in APIs.
- Updated parameter docs to reflect recent name changes.
- Updated parameters/attributes introductory descriptions.
- Updated various parametrize data to attain maximum coverage.
- Updated Zenodo badge and the BibTeX entry.
- Updated method description texts and logging messages.
- Update title headings, icons and admonition messages.
- Updated code comments.
- Updated
changelog.md
.
- Updated FFdecoder API params docs w.r.t recent changes and supported for both discarded parameters and filter values.
Breaking Updates/Changes
- API:
- Implemented new Index based Camera Device Capture feature (Similar to OpenCV), where the user just have to assign device index as integer (
-n
ton-1
) in source parameter of DeFFcode APIs to directly access the given input device in few seconds.
- Implemented new Index based Camera Device Capture feature (Similar to OpenCV), where the user just have to assign device index as integer (
- FFdecoder API
- Unsupported dtype pixel-format always defaults to
rgb24
.
- Unsupported dtype pixel-format always defaults to
- Sourcer API:
- Renamed
output_video_resolution
metadata property tooutput_frames_resolution
. - Renamed
output_video_framerate
metadata property tooutput_framerate
.
- Renamed
Bug-fixes
- FFdecoder API:
- Removed redundant dummy value for
output_frames_pixfmt
metadata property. - Fixed critical KeyError bug arises due to missing output metadata properties.
- Enforced
force_retrieve_missing
parameter in Sourcer API'sretrieve_metadata()
method for returning metadata missing in current Pipeline as(metadata, metadata_missing)
tuple value instead of justmetadata
. - Added new
missing_prop
internal class variable for handling metadata properties missing, received from Sourcer API. - Moved
ffdecoder_operational_mode
to missing metadata properties that cannot be updated but are read only. - Added missing metadata properties to metadata class property object for easy printing along with other metadata information.
- Implemented missing metadata properties updation via. overridden metadata class property object.
- Added
counterpart_prop
dict to handle all counterpart source properties for each missing output properties. - Implemented missing output properties auto-updation w.r.t counterpart source property.
- Added separate case for handling only missing metadata properties and notifying user about counterpart source properties.
- Added
- Enforced
- Fixed source metadata properties update bug causing non-existential missing metadata properties to be added to source metadata properties dictionary along with source metadata property.
- Replaced
update()
calling onvalue
dict directly with explicitly assigning values to source metadata properties dictionary. - Simplified
missing_prop
validation. - Removed unwanted
continue
in middle of loop.
- Replaced
- Remove unusable exclusive
yuv
frames patch. - Fixed
KeyError
bug arises due to wrong variable placement. - Fixed
approx_video_nframes
metadata property check. - Fixed
av_interleaved_write_frame(): broken pipe
warning bug by switchingprocess.terminate()
withprocess.kill()
. - Fixed
AttributeError
bug caused due to typo in logger.
- Removed redundant dummy value for
- FFhelper:
- Fixed
check_sp_output()
method returning Standard Error (stderr) even when Nonetype. - Fixed logger requiring
utf-8
decoding. - Fixed missing
force_retrieve_stderr
argument tocheck_sp_output
inextract_device_n_demuxer
method on Linux platforms. - Fixed logger message bug.
- Fixed
- Utils:
- Fixed logger name typo.
- Maintenance:
- Fixed hyperlinks to new GitHub's form schemas.
- Fixed typos in logs messages.
- Removed redundant code.
- Updated code comments.
- Setup:
- Rearranged
long_description
patches to address unused patch bug.
- Rearranged
- Bash Script:
- Fixed
chattr: No such file or directory
bug.
- Fixed
- CI:
- Fixed missing
lavfi
demuxer formandelbrot
virtual source in Sourcer API'stest_probe_stream_n_retrieve_metadata
unittest. - Fixed missing
ffparams
parameter bug intest_discard_n_filter_params()
unittest. - Fixed
test_camera_capture
test. - Removed redundant similar
ValueError
checks. - Fixed typo in pytest arguments.
- Fixed missing arguments.
- Fixed missing
- Docs:
- Fixed invalid hyperlinks in ReadMe.md
- Fixed bad formatting and context.
- Fixed typos in code comments.
- Fixed several typos in docs.
v0.2.3 (2022-08-11)¶
New Features
- Docs:
- Added Zenodo Bibtex entry and badge in docs for easy citation.
- Added new
<div>
tag bounding-box style to the Static FFmpeg binary download links in FFmpeg Installation Doc for better accessibility.
- Maintenance:
- Switched to new Issue GitHub's form schema using YAML:
- Added new
bug_report.yaml
Issue GitHub's form schema for Bug Reports. - Added new
idea.yaml
Issue GitHub's form schema for new Ideas. - Added new
question.yaml
Issue GitHub's form schema for Questions. - Deleted old depreciated markdown(
.md
) files. - Polished forms.
- Added new
- Switched to new Issue GitHub's form schema using YAML:
Updates/Improvements
- Maintenance:
- Added new patterns to
.gitignore
to ignore vim files.
- Added new patterns to
- CI:
- Updated
test_FFdecoder_params
unittest to includewith
statement access method.
- Updated
- Setup:
- Added new patches for using README.md text as
long_description
metadata.- Implemented new patch to remove GitHub README UI specific text.
- Simplified multiple
str.replace
to chainedstr.replace
of better readability. - Bumped version to
0.2.3
.
- Added new patches for using README.md text as
- Docs:
- Updated recipes to include
with
statement access method.- Updated existing recipes to include
with
statement access method in FFdecoder APIs. - Included new example code of accessing RGB frames using
with
statement access method. - Updated Recipe title to "Accessing RGB frames from a video file" across docs.
- Updated existing recipes to include
- Included warning admonition for advising users to always use
trim
withreverse
filter. - Updated docs text font to
Libre Franklin
. - Updated method description texts and logging messages.
- Update icons and admonition messages.
- Updated code comments.
- Updated
changelog.md
.
- Updated recipes to include
Bug-fixes
- FFdecoder API:
- Fixed Context Manager methods.
- Fixed
__enter__
method returning class instance instead of formulating pipeline. - Fixed
__exit__
method calling wrong non-existent method.
- Fixed
- Fixed Context Manager methods.
- Setup:
- Fixed missing
comma(,)
in keywords metadata. - Fixed bug in patch string.
- Fixed missing
- Docs:
- Fixed typos in code comments.
- Fixed several typos in docs.
Pull Requests
- PR #26
v0.2.2 (2022-08-09)¶
New Features
- Sourcer API:
- Added support for
-ffprefixes
attribute through Sourcer API'ssourcer_param
dictionary parameter (similar to FFdecoder API).
- Added support for
- FFdecoder API:
- Added new
output_frames_pixfmt
metadata property to preview and handle output frames pixel-format.
- Added new
- Docs:
- Added separate "Basic" and "Advanced" Recipes markdowns files with self-explanatory text, related usage code, asset (such as images, diagrams, GIFs, etc.), and UI upgrades for bringing standard quality to visual design.
- Added separate
index.md
for Basic and Advanced Recipes with introductory text and curated hyperlinks for quick references to various recipes (separated with sub-categories "Decoding", "Transcoding", and "Extracting Video Metadata"). - Added related admonitions to specify python dependencies as well as other requirements and relevant information required for each of these recipes.
- Added new Basic Decoding Recipes:
- Added Decoding Video files with various pixel formats recipes.
- Added Decoding Live Feed Devices recipes with
source_demuxer
FFdecoder API parameter. - Added Decoding Image sequences recipes supporting Sequential, Glob pattern , Single (looping) image.
- Added Decoding Network Streams recipes.
- Added new Basic Transcoding Recipes:
- Added Transcoding Live frames recipes with OpenCV and WriteGear.
- Added Transcoding Live Simple Filtergraphs recipes with OpenCV.
- Added Saving Key-frames as Image recipes with different image processing libraries.
- Added new Basic Extracting Video Metadata Recipes:
- Added Extracting Video Metadata recipes with FFdecoder and Sourcer APIs.
- Added new Advanced Decoding Recipes:
- Added Hardware-Accelerated Video Decoding recipe using NVIDIA's H.264 CUVID Video-decoder(
h264_cuvid
). - Added Decoding Live Virtual Sources recipes with many test patterns using
lavfi
input virtual device.
- Added Hardware-Accelerated Video Decoding recipe using NVIDIA's H.264 CUVID Video-decoder(
- Added new Advanced Decoding Recipes:
- Added lossless Hardware-Accelerated Video Transcoding recipe with WriteGear API.
- Added Transcoding Live Complex Filtergraphs recipes with WriteGear API.
- Added Transcoding Video Art with Filtergraphs recipes with WriteGear API for creating real-time artistic generative video art using simple and complex filtergraphs.
- Added new Advanced Updating Video Metadata Recipes:
- Added Updating Video Metadata recipes with user-defined as well as source metadata in FFdecoder API.
- Added new dark and light theme logo support.
- Added new recipes GIF assets to
gifs
folder. - Added new dark logo
deffcode-dark.png
asset toimages
folder. - Added new
ffdecoder.png
andsourcer.png
Image assets toimages
folder. - Added new
navigation.tabs
feature. - Added Material Announcement-Bar notifying recent changes.
Updates/Improvements
- Sourcer API:
- Implemented new validation checks to ensure given
source
has usable video stream available by checking availability of eithervideo bitrate
or bothframe-size
andframerate
_ properties in the source metadata. - Improved
extract_resolution_framerate
method for making framerate extraction more robust by falling back to extractingTBR
value when no framerate value available in the source metadata.
- Implemented new validation checks to ensure given
- FFdecoder API:
- Updated
metadata
property object to validate and override source metadata properties directly by overloading same property object before formulating Frames Decoder Pipeline:- Implemented validation checks to verify each validate manually assigned source metadata property against specific datatype before overriding.
- Updated logging to notify invalid datatype values when assigned through
metadata
property object. - Added support for overriding
source_video_resolution
source metadata property to control frame-size directly through metadata. - Added support for overriding
output_frames_pixfmt
metadata attribute to be used as default pixel-format, whenframe_format
parameter value is None-type. - Improved handling of source metadata keys in metadata property object.
- Updated
metadata
property object to handle and assign User-defined metadata directly by overloading the same property object:- Added new internal
user_metadata
class variable to handle all User-defined metadata information separately. - FFdecoder API's
metadata
property object now returns User-defined metadata information merged with Source Video metadata. - Added
tuple
value warning log to notify usersjson
module converts Pythontuples
to JSONlists
.
- Added new internal
- Improved logic to test validity of
-custom_resolution
attribute value throughffparams
dictionary parameter. - Improved handling of FFmpeg pipeline framerate with both user-defined and metadata defined values.
- Added
tuple
to exception in datatype check forffparams
dictionary parameter. - Added datatype validation check for
frame_format
parameter. - Improved handling of
-framerate
parameter.
- Updated
- Maintenance:
- Reformatted all Core class and methods text descriptions:
- Rewritten introductory each API class description.
- Moved reference block from
index.md
to class description. - Fixed missing class and methods parameter description.
- Fixed typos and context in texts.
- Reformatted code comments.
- Simplified
for
loop withif
condition checking in metadata property object. - Updated logging comments.
- Reformatted all Core class and methods text descriptions:
- Setup:
- Updated project description in metadata.
- Bumped version to
0.2.2
.
- Docs:
- Updated Introduction doc:
- Added new text sections such as "Getting Started", "Installation Notes", "Recipes a.k.a Examples" and "API in a nutshell".
- Rewritten Introduction(
index.md
) with recent Information, redefined context, UI changes, updated recipe codes, curated hyperlinks to various recipes(separated with categories), and relatable GIFs. - Updated spacing in
index.md
usingspacer
class within<div>
tag and
. - Reformatted and centered DeFFcode Introductory description.
- Reformatted FFmpeg Installation doc and Issue & PR guidelines.
- Updated static FFmpeg binaries download URLs in FFmpeg Installation doc.
- Refashioned text contexts, icons, and recipes codes.
- Updated Key Features section with reflecting new features.
- Updated README.md:
- Updated README.md w.r.t recent changes in Introduction(
index.md
) doc. - Simplified and Reformatted text sections similar to Introduction doc.
- Imported new "Contributions" and "Donations" sections from VidGear docs.
- Added collapsible text and output section using
<summary>
and<detail>
tags. - Added experimental note GitHub blockquote to simulate admonition in README.md.
- Removed tag-line from README.md and related image asset.
- Simplified and Grouped README URL hyperlinks.
- Removed Roadmap section.
- Updated README.md w.r.t recent changes in Introduction(
- Updated Recipes docs:
- Revamped DeFFcode Introduction
index.md
with new Information, Context and UI changes, Updated example codes and hyperlinks. - Updated Announcement Bar to fix
announcement_link
variable and text. - Updated footer note to notify users regarding
tuple
value warning in FFdecoder API. - Rewritten recipes w.r.t breaking changes in APIs.
- Revamped DeFFcode Introduction
- Updated Reference docs:
- Completely revamped API's parameter reference docs.
- Added new Functional Block Diagrams to FFdecoder and Sourcer API References.
- Rewritten and Reformatted FFdecoder and Sourcer API's parameter reference docs with new information w.r.t recent changes.
- Implemented new admonitions explaining new changes, related warnings/errors, usage examples etc.
- Removed redundant
advanced.md
andbasic.md
docs. - Added new abstracts to FFhelper and Utils docs.
- Updated docs site navigation and titles:
- Reformatted
index.md
andinstallation/index.md
. - Renamed
help/index.md
tohelp/help.md
. - Moved basic and advanced recipes from
example
torecipes
folder. - Imported "Donations" sections from VidGear docs to
help.md
. - Added updated page-title and navigation hyperlinks in
mkdocs.yml
to new markdown files incorporated recently. - Updated internal navigation hyperlinks in docs and removed old redundant file links.
- Reformatted
- Updated docs UI:
- Added custom
spacer
class in CSS for custom vertical spacing. - Imported new "New", "Advance", "Alert", "Danger" and "Bug" admonitions custom CSS UI patches from vidgear.
- Updated all admonitions icons with new custom icon SVG+XML URLs.
- Reformatted
custom.css
and added missing comments. - Updated docs fonts:
- Updated text font to
Heebo
. - Updated code font to
JetBrains Mono
.
- Updated text font to
- Updated primary and accent colors:
- Updated primary light color to
light green
. - Updated primary dark color to
amber
. - Updated accent light color to
green
. - Updated accent dark color to
lime
.
- Updated primary light color to
- Replaced admonitions with appropriate ones.
- Changed Color palette toggle icons.
- Updated icons in title headings.
- Added custom
- Updated admonitions messages.
- Updated
changelog.md
.
- Updated Introduction doc:
- CI:
- Pinned
jinja2
version to<3.1.0
, sincejinja2>=3.1.0
breaks mkdocs (mkdocs/mkdocs#2799). - Updated unittests w.r.t recent changes in APIs:
- Updated
test_frame_format
unittest to include manually assign output pixel-format viametadata
property object. - Updated
test_metadata
unittest to include newchecks
parameter to decide whether to perform Assertion test on assignedmetadata
properties in FFdecoder API. - Added new parametrize attributes in
test_metadata
andtest_seek_n_save
unittests to cover every use-cases. - Replaced
IOError
withValueError
in Sourcer API unittests.
- Updated
- Updated
test_metadata
unittest to verifytuple
value warning. - Updated unittests to increase code coverage significantly.
- Pinned
Breaking Updates/Changes
- Sourcer API:
- Sourcer API's
retrieve_metadata()
method now returns parsed metadata either as JSON string or dictionary type.- Added new
pretty_json
boolean parameter toretrieve_metadata()
, that is whenTrue
, returns metadata formatted as JSON string instead of default python dictionary.
- Added new
- Changed
IOError
toValueError
in Sourcer API, raised when source with no decodable audio or video stream is provided.
- Sourcer API's
- FFdecoder API:
- Rename
extraparams
dictionary parameter toffparams
in FFdecoder API. - The
source
metadata value cannot be altered throughmetadata
property object in FFdecoder API. - Removed
-ffpostfixes
attribute support fromffparams
dictionary parameter in FFdecoder API, since totally redundant in favor of similar-ffprefixes
and-clones
attributes.
- Rename
Bug-fixes
- FFdecoder API:
- Fixed
metadata
property object unable to process user-defined keys when any source metadata keys are defined. - Fixed
TypeError
bug with string type-framerate
parameter values.
- Fixed
- Sourcer API:
- Fixed Sourcer API throws
IOError
for videos containing streams without both source bitrate and framerate defined (such as fromlavfi
input virtual device). - Fixed
AttributeError
bug due to typo in variable name.
- Fixed Sourcer API throws
- CI:
- Fixed support for newer mkdocstring version in DeFFcode Docs Deployer workflow.
- Added new
mkdocstrings-python-legacy
dependency. - Replaced
rendering
variable withoptions
. - Removed pinned
mkdocstrings==0.17.0
version. - Removed redundant variables.
- Added new
- Updated
test_metadata
unittest to fixAssertionError
Bug.
- Fixed support for newer mkdocstring version in DeFFcode Docs Deployer workflow.
- Docs:
- Fixed some admonitions icons not showing bug using
!important
rule in CSS. - Fixed
404.html
static page not showing up. - Fixed invalid internal navigation hyperlinks and asset paths.
- Removed
quote/cite/summary
admonition custom UI patches. - Removed redundant information texts.
- Fixed typos in code comments.
- Fixed typos in example code.
- Fixed some admonitions icons not showing bug using
Pull Requests
- PR #23
v0.2.1 (2022-07-14)¶
New Features
- Sourcer API:
- Implemented support for extracting metadata from live input devices/sources.
- Added new
source_demuxer
andforced_validate
parameters tovalidate_source
internal method. - Implemented logic to validate
source_demuxer
value against FFmpeg supported demuxers. - Rearranged metadata dict.
- Updated Code comments.
- FFdecoder API:
- Implemented functionality to supported live devices by allowing device path and respective demuxer into pipeline.
- Included
-f
FFmpeg parameter into pipeline to specify source device demuxer. - Added special case for discarding
-framerate
value with Nonetype.
- CI:
- Added new unittest
test_camera_capture()
to test support for live Virtual Camera devices. - Added new
v4l2loopback-dkms
,v4l2loopback-utils
and kernel related APT dependencies.
- Added new unittest
- Bash Script:
- Added new FFmpeg command to extract image datasets from given video on Linux envs.
- Created live Virtual Camera devices through
v4l2loopback
library on Github Actions Linux envs.- Added
v4l2loopback
modprobe command to setup Virtual Camera namedVCamera
dynamically at/dev/video2
. - Added
v4l2-ctl --list-devices
command for debugging. - Implemented FFmpeg command through
nohup
(no hangup) to feed video loop input to Virtual Camera in the background.
- Added
Updates/Improvements
- Sourcer API:
- Only either
source_demuxer
orsource_extension
attribute can be present in metadata. - Enforced
forced_validate
for live input devices/sources invalidate_source
internal method.
- Only either
- FFdecoder API:
- Rearranged FFmpeg parameters in pipeline.
- Removed redundant code.
- Updated Code comments.
- FFhelper API:
- Logged error message on metadata extraction failure.
- CI:
- Restricted
test_camera_capture()
unittest to Linux envs only. - Removed
return_generated_frames_path()
method support for Linux envs. - Pinned jinja2
3.1.0
or above breaking mkdocs.jinja2>=3.1.0
breaks mkdocs (mkdocs/mkdocs#2799), therefore pinned jinja2 version to<3.1.0
.
- Restricted
- Bash Script:
- Updated to latest FFmpeg Static Binaries links.
- Updated download links to abhiTronix/ffmpeg-static-builds * hosting latest available versions.
- Updated date/version tag to
12-07-2022
. - Removed depreciated binaries download links and code.
- Updated to latest FFmpeg Static Binaries links.
- Setup:
- Bumped version to
0.2.1
.
- Bumped version to
- Docs:
- Updated
changelog.md
.
- Updated
Breaking Updates/Changes
- Implement support for live input devices/sources.
source
parameter now accepts device name or path.- Added
source_demuxer
parameter to specify demuxer for live input devices/sources. - Implemented Automated inserting of
-f
FFmpeg parameter wheneversource_demuxer
is specified by the user.
Bug-fixes
- Sourcer API:
- Fixed Nonetype value bug in
source_demuxer
assertion logic. - Fixed typos in parameter names.
- Added missing import.
- Fixed Nonetype value bug in
- FFhelper API:
- Logged error message on metadata extraction failure.
- Fixed bug with
get_supported_demuxers
not detecting name patterns with commas. - Removed redundant logging.
- CI:
- Fixed critical permission bug causing
v4l2loopback
to fail on Github Actions Linux envs.- Elevated privileges to
root
by addingsudo
to all commands(including bash scripts and python commands). - Updated vidgear dependency to pip install from its git
testing
branch with recent bug fixes. - Replaced relative paths with absolute paths in unit tests.
- Elevated privileges to
- Fixed WriteGear API unable to write frames due to permission errors.
- Fixed
test_source_playback()
test failing on Darwin envs with OLD FFmpeg binaries.- Removed
custom_ffmpeg
value for Darwin envs.
- Removed
- Fixed various naming typos.
- Fixed missing APT dependencies.
- Fixed critical permission bug causing
Pull Requests
- PR #17
v0.2.0 (2022-03-21)¶
New Features
- Sourcer API:
- Added a new
source_audio_samplerate
metadata parameter:- Re-implemented
__extract_audio_bitrate
internal function from scratch as__extract_audio_bitrate_nd_samplerate
.- Implemented new algorithm to extract both extract both audio bitrate and samplerate from given source.
- Updated regex patterns according to changes.
- Updated
__contains_video
and__contains_audio
logic to support new changes.
- Re-implemented
- Added metadata extraction support:
- Added
retrieve_metadata
class method to Sourcer API for extracting source metadata as python dictionary.- Populated private source member values in dictionary with distinct keys.
- Added
- Added new
-force_validate_source
attribute to Sourcer API'ssourcer_params
dict parameter for special cases. - Implemented check whether
probe_stream()
called or not in Sourcer API.
- Added a new
- FFdecoder API:
- Added metadata extraction and updation support:
- Added
metadata
property object function to FFdecoder API for retrieving source metadata form Sourcer API as dict and return it as JSON dump for pretty printing.- Added Operational Mode as read-only property in metadata.
- Added
metadata
property object withsetter()
method for updating source metadata with user-defined dictionary.- Implemented way to manually alter metadata keys and values for custom results.
- Added
- Added metadata extraction and updation support:
- Docs:
- Added new comprehensive documentation with Mkdocs:
- Added new image assets:
- Added new Deffcode banner image, logo and tagline
- Added new icon ICO file with each layer of the favicon holds a different size of the image.
- Added new png images for best compatibility with different web browsers.
- Added new docs files:
- Added new index.md with introduction to project.
- Added new changelog.md.
- Added license.md
- Added new index.md with instructions for contributing in DeFFcode.
- Added
issue.md
with Issue Contribution Guidelines. - Added
PR.md
with PR Contribution Guidelines.
- Added
- Added new
custom.js
to add gitter sidecard support. - Added new
custom.css
that brings standard and quality visual design experience to DeFFcode docs.- Added new admonitions
new
andalert
.
- Added new admonitions
- Added separate LICENSE(under CC creative commons) and REAME.md for assets.
- Added new
main.html
extendingbase.html
for defining custom site metadata. - Added deFFcode banner image to metadata.
- Added twitter card and metadata.
- Added version warning for displaying a warning when the user visits any other version.
- Added footer sponsorship block.
- Added gitter card official JS script dist.
- Added new custom
404.html
to handle HTTP status code404
Not Found.- Implemented custom theming with new CSS style.
- Added custom 404 image asset.
- Added new
index.md
with DeFFcode Installation notes.- Added info about Supported Systems, Supported Python legacies, Prerequisites, Installation instructions.
- Added Pip and Source Installation instructions.
- Added new
ffmpeg_install.md
with machine-specific instructions for FFmpeg installation. - Added new
index.md
with different ways to help DeFFcode, other users, and the author.- Added info about Starring and Watching DeFFcode on GitHub, Helping with open issues etc.
- Added Tweeter intent used for tweeting
#deffode
hastags easily. - Added Kofi Donation link button.
- Added author contact links and left align avatar image.
- Added new
get_help.md
to get help with DeFFcode.- Added DeFFcode gitter community link.
- Added other helpful links.
- Added new assets folders.
- Added Basic Recipes with basic.md
- Added Advanced Recipes with advanced.md
- Added all API References.
- Added
mkdocstrings
automatic documentation from sources. - Added new
index.md
for FFdecoder API with its description and explaining its API. - Added new
index.md
for Sourcer API with its description and explaining its API. - Added ffhelper methods API references.
- Added utils methods API references.
- Added
- Added all API Parameters.
- Added new
params.md
for FFdecoder API explaining all its parameters. - Added new
params.md
for Sourcer API explaining all its parameters. - Added Mkdocs support with mkdocs.yml
- Added new
- Implemented new
mkdocs.yml
with relevant parameters.- Added extended material theme with overridden parts.
- Added site metadata with site_name, site_url, site_author, site_description, repo_name, repo_url, edit_uri, copyright etc.
- Added navigation under sections for easily accessing each document.
- Implemented Page tree for DeFFcode docs.
- Added features like navigation.tracking, navigation.indexes, navigation.top, search.suggest, search.highlight, search.share, content.code.annotate.
- Added separate palette [default]light(with primary:green accent: dark green) and [slate]dark(with primary:teal accent: light green) mode.
- Added Color palette toggle switch with icon
material/home-lightning-bolt
. - Added support for all pymarkdown-extensions.
- Added google fonts for text:
Quicksand
and code:Fira Code
. - Added custom logo and icon for DeFFcode.
- Added support for plugins like search, git-revision-date-localized, minify.
- Added support for
mkdocstrings
plugin for auto-built API references.- Added python handler for parsing python source-code to
mkdocstrings
. - Improved source-code docs for compatibility with
mkdocstrings
.
- Added python handler for parsing python source-code to
- Added support for extensions like
admonition
,attr_list
,codehilite
,def_list
,footnotes
,meta
, andtoc
. - Added social icons and links.
- Added custom
extra_css
andextra_javascript
. - Added support for
en
(English) language.
- Added new badges to README.md for displaying current status of CI jobs and coverage.
- Added Roadmap to README.md
- Added new image assets:
- Added new comprehensive documentation with Mkdocs:
- CI:
- Automated CI support for different environments:
- Implemented auto-handling of dependencies installation, unit testing, and coverage report uploading.
- Added GitHub Action workflow for Linux envs:
- Added and configured
CIlinux.yml
to enable GitHub Action workflow for Linux-based Testing Envs. - Added
3.7+
python-versions to build matrix. - Added code coverage through
codecov/codecov-action@v2
workflow for measuring unit-tests effectiveness.- Implemented behavior to about coverage upload on timeout(error code
124
) in pytests.
- Implemented behavior to about coverage upload on timeout(error code
- Added and configured
- Added Appveyor workflow for Windows envs:
- Add and configured
appveyor.yml
to enable Appveyor workflow for Windows-based Testing Envs. - Added
3.7+
64-bit python-versions to build matrix. - Enabled
fast_finish
to exit immediately on error.
- Add and configured
- Added Azure-Pipelines workflow for MacOS envs:
- Add and configured
azure-pipelines.yml
to enable Azure-Pipelines workflow for MacOS-based Testing Envs. - Added code coverage through
codecov
workflow for measuring unit-tests effectiveness.- Added online auto validation of
codecov
bash script usingSH256SUM
andsig
files as recommended.
- Added online auto validation of
- Implemented behavior to about coverage upload on timeout(error code
124
) in pytests. - Added
3.7+
python-versions to build matrix.
- Add and configured
- Added automated flake8 testing to discover any anomalies in code.
- Added
master
branches for triggering CI.
- Implement new automated Docs Building and Deployment on
gh-pages
through GitHub Actions workflow:- Added new workflow yaml
docs_deployer.yml
for automated docs deployment. - Added different jobs with ubuntu-latest environement to build matrix.
- Added
actions/checkout@v2
for repo checkout andactions/setup-python@v2
for python environment. - Pinned python version to
3.8
for python environment in docs building. - Added
GIT_TOKEN
,GIT_NAME
,GIT_EMAIL
environment variables through secrets. - Added Mkdocs Material theme related python dependencies and environments.
- Added push on
master
anddev
branchrelease
withpublished
as triggers. - Pinned
mkdocstrings==0.17.0
.
- Added new workflow yaml
- Added new Automated Docs Versioning:
- Implemented Docs versioning through
mike
. - Separate new workflow steps to handle different versions.
- Added step to auto-create
RELEASE_NAME
environment variable from DeFFcode version file. - Update docs deploy workflow to support
latest
,release
anddev
builds. - Added automatic release version extraction from GitHub events.
- Implemented Docs versioning through
- Added Skip Duplicate Actions Workflow to DeFFcode Docs Deployer:
- Added Skip Duplicate Actions(
fkirc/skip-duplicate-actions@master
) Workflow to DeFFcode Docs Deployer to prevent redundant duplicate workflow-runs.
- Added Skip Duplicate Actions(
- Automated CI support for different environments:
- Maintenance:
- New DeFFcode project issue and PR templates:
- Added PR template:
- Added a pull request template(
PULL_REQUEST_TEMPLATE.md
) for project contributors to automatically see the template's contents in the pull request body. - Added Brief Description, Requirements / Checklist, Related Issue, Context, Types of changes blocks.
- Added a pull request template(
- Added Proposal, Bug-Report and Question templates:
- Created an
ISSUE_TEMPLATE
subdirectory to contain multiple issue templates. - Add manually-created Proposal(
proposal.md
) and Question(question.md
) issue template for project contributors to automatically see the template's contents in the issue body.- Added Brief Description, Acknowledgment, Context, Current Environment, Any Other Information like blocks.
- Add an manually-created Bug Report(
bug_report.md
) issue template toISSUE_TEMPLATE
subdirectory for project contributors to automatically see the template's contents in the issue body.- Added Brief Description, Acknowledgment, Context, Current Environment, Expected Behavior, Actual Behavior, Possible Fix, Steps to reproduce, Miscellaneous like blocks.
- Added YAML frontmatter to each issue template to pre-fill the issue title, automatically add labels and assignees, and give the template a name and description.
- Added a
config.yml
file to the.github/ISSUE_TEMPLATE
folder to customize the issue template chooser that people see when creating a new issue. - Set
blank_issues_enabled
parameter tofalse
to encourage contributors to use issue templates. - Added
contact_links
parameter with gitter community link to receive regular issues outside of GitHub.
- Created an
- Added new
FUNDING.yml
with ko-fi donation link. - Added
.gitattributes
for DeFFcode, that set the default behavior, in case people don't havecore.autocrlf
set. - Imported Codecov config(
codecov.yml
) from vidgear to modify coverage parameters.
- Added PR template:
- New DeFFcode project issue and PR templates:
- Tests:
- Added DeFFcode unit tests with
pytest
:- Added
essential.py
for defining all essential functions necessary for DeFFcode unit tests. - Added
return_static_ffmpeg
,remove_file_safe
,return_testvideo_path
, return_generated_frames_path,actual_frame_count_n_frame_size
essential functions. - Added
is_windows
global variable. - Added related imports and logging.
- Added
__init__.py
. - Moved all files to
test
folder. - Added DeFFcode's utils unit tests with pytest.
- Added new
test_loggerhandler
andtest_dict2Args
tests.
- Added new
- Added DeFFcode's ffhelper unit tests with pytest.
- Added new
test_ffmpeg_binaries_download
,test_validate_ffmpeg
,test_get_valid_ffmpeg_path
,test_check_sp_output
,test_is_valid_url
,test_is_valid_image_seq
, andtest_validate_imgseqdir
parametrize tests.
- Added new
- Added DeFFcode's Sourcer API unit tests with pytest.
- Added new
test_source
andtest_probe_stream_n_retrieve_metadata
parametrize tests.
- Added new
- Added DeFFcode's FFdecoder API unit tests with pytest.
- Added new
test_source_playback
,test_frame_format
,test_metadata
,test_seek_n_save
, andtest_FFdecoder_params
parametrize unit tests.
- Added new
- Added related imports and logging.
- Added unit test for
delete_file_safe
utils function.
- Added
- Added DeFFcode unit tests with
- Bash:
- 🔧 Imported prepare_dataset.sh from vidgear for downloading pytest datasets to
temp
dir.
- 🔧 Imported prepare_dataset.sh from vidgear for downloading pytest datasets to
Updates/Improvements
- FFdecoder API:
- Removed redundant forcing
-r
FFmpeg parameter for image sequences as source. - Removed redundant checks on
-vf
FFmpeg parameter. - FFmpeg parameter
-s
will be discarded in favor of-custom_resolution
attribute. - Replaced
-constant_framerate
with FFmpeg-framerate
attribute. - Replaced
-custom_source_params
with correct-custom_sourcer_params
attribute. - Renamed
operational_mode
metadata parameter toffdecoder_operational_mode
.
- Removed redundant forcing
- Sourcer API:
- Converted all Sourcer APIs public available variables into private ones for stability.
- All Sourcer's publicly accessed variable metadata values in FFdecoder, therefore replaced with dictionary counterparts.
- Moved FFmpeg path validation and handling to Sourcer from FFdecoder API.
- Moved
-ffmpeg_download_path
dictionary attribute to Sourcer API'ssourcer_params
parameter. - Moved dependencies and related functions.
- CI:
- Excluded
dev
branch from triggering workflow on any environment.- Updated yaml files to exclude beta
dev
branch from triggering workflow on any environment. - Restricted codecov to use only
master
branch.
- Updated yaml files to exclude beta
- Re-implemented
fkirc/skip-duplicate-actions@master
to Skip individual deploy steps instead of Skip entire jobs
- Excluded
- Docs:
- Updated PR.md
- Added instructions to download
prepare_dataset.sh
using curl. - Updated dependencies for
pytest
.
- Added instructions to download
- Updated advanced.md
- Updated generating Video from Image sequence to save video using OpenCV writer instead of WriteGear API.
- Added
frame_format="bgr24"
and additional instructions regarding OpenCV writer. - Updated example codes with new changes.
- Rearranged examples placement.
- Updates to custom.css
- Added donation sponsor link in page footer with heart animation.
- Added bouncing heart animation through pure CSS.
- Added Bold property to currently highlighted link in Navigation Bar.
- Updated Navigation Bar title font size.
- Updated version list text to uppercase and bold.
- Updated icon for task list unchecked.
- Added more top-padding to docs heading.
- Updated Block quote symbol and theming.
- Updated Custom Button theming to match docs.
- Added new custom classes to create shadow effect in dark mode for better visibility.
- Updated dark mode theme "slate" hue to 285.
- Updated admonitions colors.
- Updated gitter sidecard UI colors and properties.
- Reflected recent changes in Sourcer and FFdecoder API's metadata.
- Updated sample code formatting from
sh
tojson
. - Added missing docs for
delete_file_safe
utils function. - Updated Download Test Datasets instructions.
- Updated contribution guidelines and installation docs with related changes.
- Updated License Notice.
- Updated code comments.
- Updated logging messages.
- Updated Deffcode Logo and Tagline to be dark-mode friendly.
- Adjusted asset alignment.
- Updated example code.
- Updated Installation instructions, Requirements and Roadmap.
- Corrected links to documents.
- Updated project description.
- Updated LICENSE.
- Updated indentation and code comments
- Re-aligned text and images in README.md
- Adjusted image classes and width.
- Updated PR.md
- Maintenance:
- Updated LICENSE notice to add vidgear notice.
- Bumped version to
0.2.0
- Added useful comments for convenience.
Breaking Updates/Changes
- Sourcer API will now raises Assertion error if
probe_stream()
not called before callingretrieve_metadata()
. - Only
-framerate
values greater than0.0
are now valid. - Renamed
decode_stream
toprobe_stream
in Sourcer API. - Any of video bitrate or video framerate are sufficient to validate if source contains valid video stream(s).
- Any of audio bitrate or audio samplerate are sufficient to validate if source contains valid audio stream(s).
Bug-fixes
- APIs:
- Added missing
delete_file_safe
function in utils.- Imported
delete_file_safe
from vidgear to safely deletes files at given path.
- Imported
- Fixed forward slash bugs in regex patterns.
- Fixed IndexError when no bitrate was discovered in given source.
- Fixed FFmpeg subprocess pipeline not terminating gracefully in FFdecoder API.
- Fixed
__version__
not defined in DeFFcode's__init__.py
that throwsAttributeError: module 'deffcode' has no attribute '__version__'
on query.- Added necessary import in
__init__.py
.
- Added necessary import in
- Added missing
- Docs:
- Fixed missing
"-vcodec": "h264_cuvid"
value in example code. - Fixed typos in filenames in utils.py
- Fixed internal missing or invalid hyperlinks.
- Fixed improper docs context and typos.
- Fixed "year" in license notice.
- Fixed content spacing.
- Fixed Gitter Community Link in Mkdocs.
- Fixed typos in README.md.
- Fixed typos in license notices.
- Fixed typos in code comments.
- Fixed typos in example code.
- Fixed missing
- CI:
- Fixed missing FFmpeg dependency bug in GitHub Actions.
- Fixes typo in Docs Deployer yaml.
- Fixed if condition skipping when need is skipping
- Maintenance:
- Added missing imports.
- Fixed redundant conditional logics.
- Removed or Replaced redundant conditions and definitions.
- Fixed minor typos in templates.
v0.1.0 (2022-03-07)¶
New Features
- Open-Sourced DeFFcode under the Apache 2.0 License.
- Added new Classes(APIs):
- FFdecoder: Performant Real-time Video frames Generator for generating blazingly fast video frames(RGB ndarray by default).
- Sourcer: Extracts source video metadata (bitrate, resolution, framerate, nframes etc.) using its subprocess FFmpeg output.
- Added new Helper functions:
- ffhelper: Backend FFmpeg Wrapper that handles all subprocess transactions and gather data.
- utils: Handles all additional Utilizes required for functioning of DeFFcode.
- First PyPi Release:
- Released DeFFcode to Python Package Index (PyPI)
- Added
setup.py
and related metadata. - Added
version.py
- Docs:
- Added abstract and related information in README.md
- Added installation instructions.
- Added preliminary usage examples.
- Maintenance:
- Added LICENSE.
- Added
.gitignore
Updates/Improvements
- Maintenance:
- Bumped version to
0.1.0
- Updated LICENSE notice to add vidgear code usage notice.
- Bumped version to
Breaking Updates/Changes
- Fixed support for Python-3.7 and above legacies only.
Bug-fixes
- Docs:
- Fixed hyperlinks in README.
- Fixed indentation and spacing.
- Fixed typos and updated context.
- Removed dead code.