Release Notes¶
v0.2.6 (2024-07-08) ¶
New Features
- FFdecoder:
- Introduced a new optional
-disable_ffmpeg_windowboolean parameter.- 💬 Prevents the FFmpeg command line window from appearing by applying the
DETACHED_PROCESSflag to the subprocess FFmpeg pipeline when building.exefiles 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_orientationparameter (default0.0). - Added
output_orientationparameter (default0.0).
- Added
- Added new parameters to metadata to accurately display video orientation.
- FFHelper:
- Added support for SRTP/RTSPS in
is_valid_urlfunction.- Enhanced
is_valid_urlmethod 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.xlegacies.- 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 SeekingandOutput Seekingsections with pros, cons, and usage examples. - Added warning about using output seeking with filters for accuracy.
- Introduced
- Added new
tablesmarkdown extension for improved table formatting. - Added documentation for the new optional
-disable_ffmpeg_windowboolean parameter. - Added
unrecognized_links: ignoretomkdocs.ymlto minimize logging during validation. - Added new features to
mkdocs.ymlrelated 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 theSIGTERMsignal to a process, which typically allows for a graceful shutdown. On Unix, this uses theSIGTERMsignal, while on Windows, it usesTerminateProcess().
- 💬 The
- Changed process termination from
- FFhelper:
- Improved regex pattern in
get_supported_demuxersmethod.- 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_frameratemethod 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.ymlto improve overall documents structure and readability- Set the default version of the documentation to 'latest'.
- Set
edit_urifor GitHub edit links to facilitate easier contributions. - Replaced deprecated
materialxwith supportedextensionsemoji generator. - Enhanced the active tab fonts with
font-weight: boldincustom.css. - Updated LinkedIn URL.
- Removed Twitter section from help and site metadata.
- Migrated to Google Analytics 4.
- Enabled
line_spans: __spanandpygments_lang_class: trueparameters inpymdownx.highlightmarkdown extension. - Enabled
normalize_issue_symbols: trueinpymdownx.magiclinkmarkdown 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.mdto ignore list.
- Included
- Changed runner from
ubuntu-latesttoubuntu-20.04in GitHub Actions. - Updated dependencies in
docs_deployer.ymlfor better readability. - Modified Mike deploy commands to use
--alias-type=copyinstead of deprecated--no-redirect. - Removed unsupported darwin platform from
test_FFdecoder_paramstest.
- Updated paths to ignore additional files and types in CI/CD Pipelines and Codecov:
Breaking Updates/Changes
- Core:
-
Ended support for Python
3.7.xlegacies.- Increased
python_requiresto3.8and above in setup.py. - Removed Python
3.7from setup.py metadata. - Removed Python
3.7support from CI/CD pipelines.
- Increased
-
Bug-fixes
- FFdecoder API:
- Fixed regex expression bugs in
get_supported_demuxersmethod.
- 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,NV21etc.) for exclusive compatibility with OpenCV APIs.- Note: Only YUV pixel-formats starting with
YUVandNVare currently supported.
- Note: Only YUV pixel-formats starting with
- Added new
-enforce_cv_patchboolean 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 filerecipe. - 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_loopoption andloopfilter. - Added docs for
-enforce_cv_patchboolean attribute inffparamdictionary parameter. - Added new python dependency block for recipes.
- Reflected new OpenCV compatibility patch for YUV pixel-formats in code.
- Added new
content.code.copyandcontent.code.linkfeatures.
- Added YUV frames example code for
Updates/Improvements
- FFhelper:
- Replaced depreciating
RetryAPI fromrequests.packageswithrequests.adapters.
- Replaced depreciating
- Maintenance:
- Replaced
raw.github.comlinks with GitLab and GH links. - Removed unused code.
- Updated log message.
- Replaced
- CI:
- Updated
test_FFdecoder_paramsunittest to includewithstatement access method. - Updated
test_frame_formattest to include-enforce_cv_patchboolean attribute. - Updated
test_sourceto 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.mdbanner image URLs. - Updated md-typeset text font size to
.75rem. - Updated text and admonitions.
- Updated recipe assumptions.
- Updated
Readme.mdGIF 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-lengthas 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-actionworkflow to `v3. - Added new
CODECOV_TOKENGitHub 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
nullstring values, and concurrently using values extracted from Output Stream metadata properties (available only when FFmpeg filters are defined) for formulating pipelines.- Added
nullstring value support to-framerateand-custom_resolutionattributes, as well asframe_formatparameter 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_pixfmtwithframe_format="null". - Now with
frame_formatparameter value either "null" or invalid or undefined, rawframe pixel-format value is taken fromoutput_frames_pixfmtmetadata property extracted from Output Stream (available only when filters are defined). If validoutput_video_resolutionmetadata property is found then it defaults to default pixel-format(calculated variably). - With
frame_format="null",-pix_fmtFFmpeg 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_resolutiondictionary attribute value either "null" or invalid or undefined, rawframe resolution value is first taken fromoutput_video_resolutionmetadata property extracted from Output Stream (available only when filters are defined), next fromsource_video_resolutionmetadata property(extracted from Input Source Stream). If neitheroutput_video_resolutionnorsource_video_resolutionvalid metadata properties are found thenRuntimeErroris raised. - With
-custom_resolutiondictionary attribute value "null",-s/-sizeFFmpeg parameter will not be added to Decoding pipeline.
- Now with
- Re-Implemented calculation of output framerate value.
- Now with
-frameratedictionary attribute either null or invalid or undefined, output framerate value is first taken fromoutput_video_frameratemetadata property extracted from Output Stream (available only when filters are defined), next fromsource_video_frameratemetadata property(extracted from Input Source Stream). If neitheroutput_video_resolutionnorsource_video_frameratevalid metadata properties are found thenRuntimeErroris raised. - With
-frameratedictionary attribute value "null",-r/-framerateFFmpeg parameter will not be added to Decoding pipeline.
- Now with
- Added
- Implemented passing of simple
-vffilters, complex-filter_complexfilters, and pre-headers(via-ffprefixes) directly to Sourcer API'ssourcer_paramsparameter 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_demuxerparameter w.r.t differentsourceparameter values.- The
source_demuxerparameter 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_indexmethod for validation) is provided as itssourceparameter value.- ⚠️ Sourcer API will throw
Assertionerror ifsource_demuxer="auto"is provided explicitly without a valid device index at itssourceparameter.
- ⚠️ Sourcer API will throw
- Source API now accepts all +ve and -ve device indexes (e.g.
-1,0,1,2etc.) to itssourceparameter, 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
RuntimeErroron 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
ValueErrorif 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
copyimport 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_pixfmtfor 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_paramsdictionary parameters. - Implement new separate pipeline for parsing Output Stream metadata by decoding video source using
nullmuxer for few microseconds whenever additional FFmpeg parameters(such as-vffilters) are defined by the user. - Included new
metadata_outputinternal 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_pixfmtinternal parameters for metadata properties, whenever Output Stream Metadata available. - Added new
extract_outputboolean parameter toextract_video_pixfmtandextract_resolution_framerateinternal methods for extracting outputpixel-format,framerateandresolutionusing Output Stream metadata instead of Sourcer Metadata, whenever available.
- Added three new metadata properties:
- Added
tupledatatype tosourcer_paramsexception. - Added
dict2Argsimport.
- The
- Added
enumerate_devicesproperty 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_missingparameter 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
dshowfor Windows,v4l2for Linux, andavfoundationfor Darwin/Mac OSes. - Implemented separate code for parsing outputs of python
subprocessmodule 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 trueparameters usingsubprocessmodule and applied various brute-force pattern matching on its output for discovering and extracting all devices names/indexes. - Used
v4l2-ctlsubmodule command on Linux machines for listing all Video-Capture devices usingsubprocessmodule and applied various brute-force pattern matching on its output for discovering and extracting all devices names and true system/dev/videopaths.- Added patch for a single device with multiple
/dev/videopaths (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-ctlsubmodule 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_demuxermethod will raiseRuntimeErrorif it fails to identify any device. - Added various checks to assert invalid input parameters and unsupported OSes.
- Added
machine_OSparameter 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.mddoc for Decoding Camera Devices using Indexes.- Added
Enumerating all Camera Devices with Indexesexample doc with code. - Added
Capturing and Previewing frames from a Camera using Indexesexample doc with code.
- Added
- Added Camera Device Index support docs to FFdecoder and Sourcer API params.
- Added
- Added
- CI:
- Added check exception for
mandelbrotvirtual source in Sourcer API'stest_probe_stream_n_retrieve_metadataunittest. - Added new
test_discard_n_filter_paramsunittest 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_pixfmtmetadata property(if available) will be overridden torgb24.
- Replaced
continuewithbreakingenerateFrame()method. - Improved handling of
frame_formatparameter.
- 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_windowsinternal parameter withmachine_OS, and changed its input fromos.nameto more flexibleplatform.system(). - Removed
source_extensioninternal 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_captureunittest to test new Index based Camera Device Capturing on different platforms.- Added various parametrize
sourceandsource_demuxerparameter data to attain maximum coverage. - Added
resultfield tofailandxfailunittest according to parametrize data provided on different platforms. - Removed
pytest.mark.skipifto 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
-sflag in pytest.
- Updated FFdecoder API's
- Setup:
- Updated description metadata.
- Bash Script:
- Created undeleteable
undelete.txtfile for testing on Linux envs. - Updated
undelete.txtfile 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_formatparameter. - Added missing docs for
-default_stream_indexesffparams attribute.
- Added docs for recently added additional FFmpeg parameter in Sourcer API's
sourcer_paramsparameter.- Removed unsupported
-custom_resolutionsourcer_params attributes fromsourcer_paramsparameter docs. - Removed redundant
-vcodecand-framerateattributes fromsourcer_paramsparameter docs.
- Removed unsupported
- Updated both basic and advanced project Index hyperlinks.
- Moved
decoding-live-feed-devices.mddoc 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
sourceandsource_demuxerparam 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 (
-nton-1) in source parameter of DeFFcode APIs to directly access the given input device in few seconds.
-
- FFdecoder API
-
Unsupported dtype pixel-format always defaults to
rgb24.
-
- Sourcer API:
-
Renamed
output_video_resolutionmetadata property tooutput_frames_resolution. -
Renamed
output_video_frameratemetadata property tooutput_framerate.
-
Bug-fixes
- FFdecoder API:
- Removed redundant dummy value for
output_frames_pixfmtmetadata property. - Fixed critical KeyError bug arises due to missing output metadata properties.
- Enforced
force_retrieve_missingparameter 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_propinternal class variable for handling metadata properties missing, received from Sourcer API. - Moved
ffdecoder_operational_modeto 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_propdict 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 onvaluedict directly with explicitly assigning values to source metadata properties dictionary. - Simplified
missing_propvalidation. - Removed unwanted
continuein middle of loop.
- Replaced
- Remove unusable exclusive
yuvframes patch. - Fixed
KeyErrorbug arises due to wrong variable placement. - Fixed
approx_video_nframesmetadata property check. - Fixed
av_interleaved_write_frame(): broken pipewarning bug by switchingprocess.terminate()withprocess.kill(). - Fixed
AttributeErrorbug 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-8decoding. - Fixed missing
force_retrieve_stderrargument tocheck_sp_outputinextract_device_n_demuxermethod 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_descriptionpatches to address unused patch bug.
- Rearranged
- Bash Script:
- Fixed
chattr: No such file or directorybug.
- Fixed
- CI:
- Fixed missing
lavfidemuxer formandelbrotvirtual source in Sourcer API'stest_probe_stream_n_retrieve_metadataunittest. - Fixed missing
ffparamsparameter bug intest_discard_n_filter_params()unittest. - Fixed
test_camera_capturetest. - Removed redundant similar
ValueErrorchecks. - 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.yamlIssue GitHub's form schema for Bug Reports. - Added new
idea.yamlIssue GitHub's form schema for new Ideas. - Added new
question.yamlIssue 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
.gitignoreto ignore vim files.
- Added new patterns to
- CI:
- Updated
test_FFdecoder_paramsunittest to includewithstatement access method.
- Updated
- Setup:
- Added new patches for using README.md text as
long_descriptionmetadata.- Implemented new patch to remove GitHub README UI specific text.
- Simplified multiple
str.replaceto chainedstr.replaceof better readability. - Bumped version to
0.2.3.
- Added new patches for using README.md text as
- Docs:
- Updated recipes to include
withstatement access method.- Updated existing recipes to include
withstatement access method in FFdecoder APIs. - Included new example code of accessing RGB frames using
withstatement 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
trimwithreversefilter. - 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
-ffprefixesattribute through Sourcer API'ssourcer_paramdictionary parameter (similar to FFdecoder API).
- Added support for
- FFdecoder API:
- Added new
output_frames_pixfmtmetadata 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.mdfor 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_demuxerFFdecoder 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
lavfiinput 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
gifsfolder. - Added new dark logo
deffcode-dark.pngasset toimagesfolder. - Added new
ffdecoder.pngandsourcer.pngImage assets toimagesfolder. - Added new
navigation.tabsfeature. - Added Material Announcement-Bar notifying recent changes.
Updates/Improvements
- Sourcer API:
- Implemented new validation checks to ensure given
sourcehas usable video stream available by checking availability of eithervideo bitrateor bothframe-sizeandframerate_ properties in the source metadata. - Improved
extract_resolution_frameratemethod for making framerate extraction more robust by falling back to extractingTBRvalue when no framerate value available in the source metadata.
- Implemented new validation checks to ensure given
- FFdecoder API:
- Updated
metadataproperty 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
metadataproperty object. - Added support for overriding
source_video_resolutionsource metadata property to control frame-size directly through metadata. - Added support for overriding
output_frames_pixfmtmetadata attribute to be used as default pixel-format, whenframe_formatparameter value is None-type. - Improved handling of source metadata keys in metadata property object.
- Updated
metadataproperty object to handle and assign User-defined metadata directly by overloading the same property object:- Added new internal
user_metadataclass variable to handle all User-defined metadata information separately. - FFdecoder API's
metadataproperty object now returns User-defined metadata information merged with Source Video metadata. - Added
tuplevalue warning log to notify usersjsonmodule converts Pythontuplesto JSONlists.
- Added new internal
- Improved logic to test validity of
-custom_resolutionattribute value throughffparamsdictionary parameter. - Improved handling of FFmpeg pipeline framerate with both user-defined and metadata defined values.
- Added
tupleto exception in datatype check forffparamsdictionary parameter. - Added datatype validation check for
frame_formatparameter. - Improved handling of
-framerateparameter.
- Updated
- Maintenance:
- Reformatted all Core class and methods text descriptions:
- Rewritten introductory each API class description.
- Moved reference block from
index.mdto class description. - Fixed missing class and methods parameter description.
- Fixed typos and context in texts.
- Reformatted code comments.
- Simplified
forloop withifcondition 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.mdusingspacerclass 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.mdwith new Information, Context and UI changes, Updated example codes and hyperlinks. - Updated Announcement Bar to fix
announcement_linkvariable and text. - Updated footer note to notify users regarding
tuplevalue 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.mdandbasic.mddocs. - Added new abstracts to FFhelper and Utils docs.
- Updated docs site navigation and titles:
- Reformatted
index.mdandinstallation/index.md. - Renamed
help/index.mdtohelp/help.md. - Moved basic and advanced recipes from
exampletorecipesfolder. - Imported "Donations" sections from VidGear docs to
help.md. - Added updated page-title and navigation hyperlinks in
mkdocs.ymlto new markdown files incorporated recently. - Updated internal navigation hyperlinks in docs and removed old redundant file links.
- Reformatted
- Updated docs UI:
- Added custom
spacerclass 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.cssand 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
jinja2version to<3.1.0, sincejinja2>=3.1.0breaks mkdocs (mkdocs/mkdocs#2799). - Updated unittests w.r.t recent changes in APIs:
- Updated
test_frame_formatunittest to include manually assign output pixel-format viametadataproperty object. - Updated
test_metadataunittest to include newchecksparameter to decide whether to perform Assertion test on assignedmetadataproperties in FFdecoder API. - Added new parametrize attributes in
test_metadataandtest_seek_n_saveunittests to cover every use-cases. - Replaced
IOErrorwithValueErrorin Sourcer API unittests.
- Updated
- Updated
test_metadataunittest to verifytuplevalue 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_jsonboolean parameter toretrieve_metadata(), that is whenTrue, returns metadata formatted as JSON string instead of default python dictionary.
- Added new
-
Changed
IOErrortoValueErrorin Sourcer API, raised when source with no decodable audio or video stream is provided.
-
- FFdecoder API:
-
Rename
extraparamsdictionary parameter toffparamsin FFdecoder API. -
The
sourcemetadata value cannot be altered throughmetadataproperty object in FFdecoder API. -
Removed
-ffpostfixesattribute support fromffparamsdictionary parameter in FFdecoder API, since totally redundant in favor of similar-ffprefixesand-clonesattributes.
-
Bug-fixes
- FFdecoder API:
- Fixed
metadataproperty object unable to process user-defined keys when any source metadata keys are defined. - Fixed
TypeErrorbug with string type-framerateparameter values.
- Fixed
- Sourcer API:
- Fixed Sourcer API throws
IOErrorfor videos containing streams without both source bitrate and framerate defined (such as fromlavfiinput virtual device). - Fixed
AttributeErrorbug 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-legacydependency. - Replaced
renderingvariable withoptions. - Removed pinned
mkdocstrings==0.17.0version. - Removed redundant variables.
- Added new
- Updated
test_metadataunittest to fixAssertionErrorBug.
- Fixed support for newer mkdocstring version in DeFFcode Docs Deployer workflow.
- Docs:
- Fixed some admonitions icons not showing bug using
!importantrule in CSS. - Fixed
404.htmlstatic page not showing up. - Fixed invalid internal navigation hyperlinks and asset paths.
- Removed
quote/cite/summaryadmonition 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_demuxerandforced_validateparameters tovalidate_sourceinternal method. - Implemented logic to validate
source_demuxervalue 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
-fFFmpeg parameter into pipeline to specify source device demuxer. - Added special case for discarding
-frameratevalue with Nonetype.
- CI:
- Added new unittest
test_camera_capture()to test support for live Virtual Camera devices. - Added new
v4l2loopback-dkms,v4l2loopback-utilsand 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
v4l2loopbacklibrary on Github Actions Linux envs.- Added
v4l2loopbackmodprobe command to setup Virtual Camera namedVCameradynamically at/dev/video2. - Added
v4l2-ctl --list-devicescommand 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_demuxerorsource_extensionattribute can be present in metadata. - Enforced
forced_validatefor live input devices/sources invalidate_sourceinternal 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.0or above breaking mkdocs.jinja2>=3.1.0breaks 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.
sourceparameter now accepts device name or path.- Added
source_demuxerparameter to specify demuxer for live input devices/sources. - Implemented Automated inserting of
-fFFmpeg parameter wheneversource_demuxeris specified by the user.
Bug-fixes
- Sourcer API:
- Fixed Nonetype value bug in
source_demuxerassertion 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_demuxersnot detecting name patterns with commas. - Removed redundant logging.
- CI:
- Fixed critical permission bug causing
v4l2loopbackto fail on Github Actions Linux envs.- Elevated privileges to
rootby addingsudoto all commands(including bash scripts and python commands). - Updated vidgear dependency to pip install from its git
testingbranch 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_ffmpegvalue 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_sampleratemetadata parameter:- Re-implemented
__extract_audio_bitrateinternal 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_videoand__contains_audiologic to support new changes.
- Re-implemented
- Added metadata extraction support:
- Added
retrieve_metadataclass 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_sourceattribute to Sourcer API'ssourcer_paramsdict 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
metadataproperty 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
metadataproperty 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.mdwith Issue Contribution Guidelines. - Added
PR.mdwith PR Contribution Guidelines.
- Added
- Added new
custom.jsto add gitter sidecard support. - Added new
custom.cssthat brings standard and quality visual design experience to DeFFcode docs.- Added new admonitions
newandalert.
- Added new admonitions
- Added separate LICENSE(under CC creative commons) and REAME.md for assets.
- Added new
main.htmlextendingbase.htmlfor 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.htmlto handle HTTP status code404Not Found.- Implemented custom theming with new CSS style.
- Added custom 404 image asset.
- Added new
index.mdwith DeFFcode Installation notes.- Added info about Supported Systems, Supported Python legacies, Prerequisites, Installation instructions.
- Added Pip and Source Installation instructions.
- Added new
ffmpeg_install.mdwith machine-specific instructions for FFmpeg installation. - Added new
index.mdwith 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
#deffodehastags easily. - Added Kofi Donation link button.
- Added author contact links and left align avatar image.
- Added new
get_help.mdto 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
mkdocstringsautomatic documentation from sources. - Added new
index.mdfor FFdecoder API with its description and explaining its API. - Added new
index.mdfor 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.mdfor FFdecoder API explaining all its parameters. - Added new
params.mdfor Sourcer API explaining all its parameters. - Added Mkdocs support with mkdocs.yml
- Added new
- Implemented new
mkdocs.ymlwith 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:
Quicksandand code:Fira Code. - Added custom logo and icon for DeFFcode.
- Added support for plugins like search, git-revision-date-localized, minify.
- Added support for
mkdocstringsplugin 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_cssandextra_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.ymlto enable GitHub Action workflow for Linux-based Testing Envs. - Added
3.7+python-versions to build matrix. - Added code coverage through
codecov/codecov-action@v2workflow 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.ymlto enable Appveyor workflow for Windows-based Testing Envs. - Added
3.7+64-bit python-versions to build matrix. - Enabled
fast_finishto exit immediately on error.
- Add and configured
- Added Azure-Pipelines workflow for MacOS envs:
- Add and configured
azure-pipelines.ymlto enable Azure-Pipelines workflow for MacOS-based Testing Envs. - Added code coverage through
codecovworkflow for measuring unit-tests effectiveness.- Added online auto validation of
codecovbash script usingSH256SUMandsigfiles 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
masterbranches for triggering CI.
- Implement new automated Docs Building and Deployment on
gh-pagesthrough GitHub Actions workflow:- Added new workflow yaml
docs_deployer.ymlfor automated docs deployment. - Added different jobs with ubuntu-latest environement to build matrix.
- Added
actions/checkout@v2for repo checkout andactions/setup-python@v2for python environment. - Pinned python version to
3.8for python environment in docs building. - Added
GIT_TOKEN,GIT_NAME,GIT_EMAILenvironment variables through secrets. - Added Mkdocs Material theme related python dependencies and environments.
- Added push on
masteranddevbranchreleasewithpublishedas 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_NAMEenvironment variable from DeFFcode version file. - Update docs deploy workflow to support
latest,releaseanddevbuilds. - 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_TEMPLATEsubdirectory 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_TEMPLATEsubdirectory 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.ymlfile to the.github/ISSUE_TEMPLATEfolder to customize the issue template chooser that people see when creating a new issue. - Set
blank_issues_enabledparameter tofalseto encourage contributors to use issue templates. - Added
contact_linksparameter with gitter community link to receive regular issues outside of GitHub.
- Created an
- Added new
FUNDING.ymlwith ko-fi donation link. - Added
.gitattributesfor DeFFcode, that set the default behavior, in case people don't havecore.autocrlfset. - 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.pyfor 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_sizeessential functions. - Added
is_windowsglobal variable. - Added related imports and logging.
- Added
__init__.py. - Moved all files to
testfolder. - Added DeFFcode's utils unit tests with pytest.
- Added new
test_loggerhandlerandtest_dict2Argstests.
- 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_imgseqdirparametrize tests.
- Added new
- Added DeFFcode's Sourcer API unit tests with pytest.
- Added new
test_sourceandtest_probe_stream_n_retrieve_metadataparametrize 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_paramsparametrize unit tests.
- Added new
- Added related imports and logging.
- Added unit test for
delete_file_safeutils function.
- Added
- Added DeFFcode unit tests with
- Bash:
- 🔧 Imported prepare_dataset.sh from vidgear for downloading pytest datasets to
tempdir.
- 🔧 Imported prepare_dataset.sh from vidgear for downloading pytest datasets to
Updates/Improvements
- FFdecoder API:
- Removed redundant forcing
-rFFmpeg parameter for image sequences as source. - Removed redundant checks on
-vfFFmpeg parameter. - FFmpeg parameter
-swill be discarded in favor of-custom_resolutionattribute. - Replaced
-constant_frameratewith FFmpeg-framerateattribute. - Replaced
-custom_source_paramswith correct-custom_sourcer_paramsattribute. - Renamed
operational_modemetadata 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_pathdictionary attribute to Sourcer API'ssourcer_paramsparameter. - Moved dependencies and related functions.
- CI:
- Excluded
devbranch from triggering workflow on any environment.- Updated yaml files to exclude beta
devbranch from triggering workflow on any environment. - Restricted codecov to use only
masterbranch.
- Updated yaml files to exclude beta
- Re-implemented
fkirc/skip-duplicate-actions@masterto Skip individual deploy steps instead of Skip entire jobs
- Excluded
- Docs:
- Updated PR.md
- Added instructions to download
prepare_dataset.shusing 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
shtojson. - Added missing docs for
delete_file_safeutils 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
-frameratevalues greater than0.0are now valid. -
Renamed
decode_streamtoprobe_streamin 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_safefunction in utils.- Imported
delete_file_safefrom 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__.pythat 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.pyand 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.